From sandeen@redhat.com Wed Jun 1 00:22:28 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.4.0-r929098 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 p515MRlI095506 for ; Wed, 1 Jun 2011 00:22:28 -0500 X-ASG-Debug-ID: 1306905746-6c0b03990000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A53B6492B1E for ; Tue, 31 May 2011 22:22:26 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id kVRRCPemrI4HV4Jr for ; Tue, 31 May 2011 22:22:26 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p515MPpH000579 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 1 Jun 2011 01:22:25 -0400 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id p515MMYw021209 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO); Wed, 1 Jun 2011 01:22:24 -0400 Message-ID: <4DE5CC8E.1090208@redhat.com> Date: Wed, 01 Jun 2011 00:22:22 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Amir Goldstein CC: XFS , Sergey Ivanov , Ext4 Developers List , linux-fsdevel X-ASG-Orig-Subj: Re: [PATCH] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH] xfstests: add support for ext4dev FSTYP References: <4DE5C1FE.8080006@redhat.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1306905747 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 5/31/11 11:56 PM, Amir Goldstein wrote: > On Wed, Jun 1, 2011 at 7:37 AM, Eric Sandeen wrote: >> On 5/31/11 10:13 PM, Amir Goldstein wrote: >>> From: Amir Goldstein >>> >>> blkid knows to identify the ext4dev FSTYP of a partition that was >>> formatted with mkfs.ext4dev. >>> quota tools and various util-linux utils are also aware of ext4dev, >>> so ext4dev shares the same capabilities as ext4. >>> >>> While testing on Fedora 15, we encoutered a buggy fsck utility, which >>> invokes fsck.ext4, even though it was called with -t ext4dev argument. >>> In our setup fsck.ext4dev knows about new fs features that fsck.ext4 >>> doesn't know, so the generic_fs_check fails. >>> Since we have no real use of the extra capabilities provided by fsck util, >>> we decided to invoke fsck.$FSTYP directly to avoid this issue. >> >> Adding ext4dev to every case seems harmless enough. TBH I thought I had >> it there already but I guess not. >> >> I'm less certain of the change from fsck -t $FSTYP to fsck.$FSTYP >> >> What issue are you avoiding? wouldn't fsck -t ext4dev invoke fsck.ext4dev anyway? >> >> It seems like it should be harmless, but I don't understand how it helps you. >> > > As I wrote in the patch description, the fsck utility in Fedora 15 invokes > fsck.ext4 for some reason when calling fsck -t ext4dev. Oh, right. > this fails because fsck.ext4 doesn't know the snapshot feature. > I didn't debug fsck utility for that. it seemed pointless. Did you file a bug with Fedora? I'd rather fix the root cause than work around it... Feel free to cc: me on the bug. -Eric From sandeen@redhat.com Wed Jun 1 00:34:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.4.0-r929098 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 p515YfhC095848 for ; Wed, 1 Jun 2011 00:34:41 -0500 X-ASG-Debug-ID: 1306906480-661200030000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E9C82492CE5 for ; Tue, 31 May 2011 22:34:40 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id hlfGBFnMyDccEOdE for ; Tue, 31 May 2011 22:34:40 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p515Yc9Q002416 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 1 Jun 2011 01:34:38 -0400 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p515YaFb004230 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Wed, 1 Jun 2011 01:34:37 -0400 Message-ID: <4DE5CF6C.4080707@redhat.com> Date: Wed, 01 Jun 2011 00:34:36 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Amir Goldstein CC: XFS , Sergey Ivanov , Ext4 Developers List , linux-fsdevel X-ASG-Orig-Subj: Re: [PATCH] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH] xfstests: add support for ext4dev FSTYP References: <4DE5C1FE.8080006@redhat.com> <4DE5CC8E.1090208@redhat.com> In-Reply-To: <4DE5CC8E.1090208@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1306906480 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 6/1/11 12:22 AM, Eric Sandeen wrote: > On 5/31/11 11:56 PM, Amir Goldstein wrote: >> On Wed, Jun 1, 2011 at 7:37 AM, Eric Sandeen wrote: >>> On 5/31/11 10:13 PM, Amir Goldstein wrote: >>>> From: Amir Goldstein >>>> >>>> blkid knows to identify the ext4dev FSTYP of a partition that was >>>> formatted with mkfs.ext4dev. >>>> quota tools and various util-linux utils are also aware of ext4dev, >>>> so ext4dev shares the same capabilities as ext4. >>>> >>>> While testing on Fedora 15, we encoutered a buggy fsck utility, which >>>> invokes fsck.ext4, even though it was called with -t ext4dev argument. >>>> In our setup fsck.ext4dev knows about new fs features that fsck.ext4 >>>> doesn't know, so the generic_fs_check fails. >>>> Since we have no real use of the extra capabilities provided by fsck util, >>>> we decided to invoke fsck.$FSTYP directly to avoid this issue. >>> >>> Adding ext4dev to every case seems harmless enough. TBH I thought I had >>> it there already but I guess not. >>> >>> I'm less certain of the change from fsck -t $FSTYP to fsck.$FSTYP >>> >>> What issue are you avoiding? wouldn't fsck -t ext4dev invoke fsck.ext4dev anyway? >>> >>> It seems like it should be harmless, but I don't understand how it helps you. >>> >> >> As I wrote in the patch description, the fsck utility in Fedora 15 invokes >> fsck.ext4 for some reason when calling fsck -t ext4dev. > > Oh, right. > >> this fails because fsck.ext4 doesn't know the snapshot feature. >> I didn't debug fsck utility for that. it seemed pointless. > > Did you file a bug with Fedora? I'd rather fix the root cause than work around it... > Feel free to cc: me on the bug. RHEL6 does the same; mkfs.ext4dev then fsck -t ext4dev invokes fsck.ext4; but this is because blkid identifies it as ext4, not ext4dev, despite the test_fs flag being set. ISTR this is due to some tortured logic about when ext4dev isn't ext4dev, but I don't remember the details... I don't know if this is the same situation you're seeing; just to double check - does blkid correctly identify it as ext4dev on F15? -Eric > -Eric > -- > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html From amir73il@gmail.com Wed Jun 1 01:37:18 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,FREEMAIL_FROM, J_CHICKENPOX_33,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p516bH6N097845 for ; Wed, 1 Jun 2011 01:37:18 -0500 X-ASG-Debug-ID: 1306910236-119700370000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-wy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0CBD54930F1 for ; Tue, 31 May 2011 23:37:16 -0700 (PDT) Received: from mail-wy0-f181.google.com (mail-wy0-f181.google.com [74.125.82.181]) by cuda.sgi.com with ESMTP id JcN9xn1U1NuGhMu9 for ; Tue, 31 May 2011 23:37:16 -0700 (PDT) Received: by wyi11 with SMTP id 11so4477071wyi.26 for ; Tue, 31 May 2011 23:37:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=liIKI9y6bp0gkrZgiIdQUUdviTZ6fxJEnLry8BtjEsA=; b=sg69Lo3GS1B+6LZWaubqN23rNI07PVKGjw21O30H3gfa3KqFeGDbG5LAfGNBhHnck/ 0+Zz34OwMYRo13hNu5Q3tX/76nNqvccTNpCldkfRuYsBwQucEBZMcwgd+fz03iVjzKqO pR/JiELMhJ4uT80vtMW97XDWkchYThD8aJKx0= 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=BkT3pMjffCx9Fizy8T37399TJ0dMPTJEIHTXxRpRnscUNDqS0KZX/4dYMn/WPZw95F WgY1xoEDa+h6paTBJ3eq+dkOJXzjDbus4cXLpfNffonD/gK+cOhsbZu6rz08VLAYtahV 9CEQuWLiQYNr4JyzuWLyjyP3PxriUV8SBZkv4= MIME-Version: 1.0 Received: by 10.216.230.76 with SMTP id i54mr6471263weq.108.1306910235951; Tue, 31 May 2011 23:37:15 -0700 (PDT) Received: by 10.216.221.135 with HTTP; Tue, 31 May 2011 23:37:15 -0700 (PDT) In-Reply-To: <4DE5CF6C.4080707@redhat.com> References: <4DE5C1FE.8080006@redhat.com> <4DE5CC8E.1090208@redhat.com> <4DE5CF6C.4080707@redhat.com> Date: Wed, 1 Jun 2011 09:37:15 +0300 Message-ID: X-ASG-Orig-Subj: Re: [PATCH] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH] xfstests: add support for ext4dev FSTYP From: Amir Goldstein To: Eric Sandeen Cc: XFS , Sergey Ivanov , Ext4 Developers List , linux-fsdevel Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-wy0-f181.google.com[74.125.82.181] X-Barracuda-Start-Time: 1306910237 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65269 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jun 1, 2011 at 8:34 AM, Eric Sandeen wrote: > On 6/1/11 12:22 AM, Eric Sandeen wrote: >> On 5/31/11 11:56 PM, Amir Goldstein wrote: >>> On Wed, Jun 1, 2011 at 7:37 AM, Eric Sandeen wrote= : >>>> On 5/31/11 10:13 PM, Amir Goldstein wrote: >>>>> From: Amir Goldstein >>>>> >>>>> blkid knows to identify the ext4dev FSTYP of a partition that was >>>>> formatted with mkfs.ext4dev. >>>>> quota tools and various util-linux utils are also aware of ext4dev, >>>>> so ext4dev shares the same capabilities as ext4. >>>>> >>>>> While testing on Fedora 15, we encoutered a buggy fsck utility, which >>>>> invokes fsck.ext4, even though it was called with -t ext4dev argument= . >>>>> In our setup fsck.ext4dev knows about new fs features that fsck.ext4 >>>>> doesn't know, so the generic_fs_check fails. >>>>> Since we have no real use of the extra capabilities provided by fsck = util, >>>>> we decided to invoke fsck.$FSTYP directly to avoid this issue. >>>> >>>> Adding ext4dev to every case seems harmless enough. =A0TBH I thought I= had >>>> it there already but I guess not. >>>> >>>> I'm less certain of the change from fsck -t $FSTYP to fsck.$FSTYP >>>> >>>> What issue are you avoiding? =A0wouldn't fsck -t ext4dev invoke fsck.e= xt4dev anyway? >>>> >>>> It seems like it should be harmless, but I don't understand how it hel= ps you. >>>> >>> >>> As I wrote in the patch description, the fsck utility in Fedora 15 invo= kes >>> fsck.ext4 for some reason when calling fsck -t ext4dev. >> >> Oh, right. >> >>> this fails because fsck.ext4 doesn't know the snapshot feature. >>> I didn't debug fsck utility for that. it seemed pointless. >> >> Did you file a bug with Fedora? =A0I'd rather fix the root cause than wo= rk around it... >> Feel free to cc: me on the bug. No, I didn't file a bug. In any case, it was Sergey, who tested and reported the problem on F15. Would you agree to fix the problem in xfstests now, so that F15 users can test ext4dev and fix the bug in fsck regardless? > > RHEL6 does the same; mkfs.ext4dev then fsck -t ext4dev invokes fsck.ext4;= but this > is because blkid identifies it as ext4, not ext4dev, despite the test_fs = flag being set. > > ISTR this is due to some tortured logic about when ext4dev isn't ext4dev,= but > I don't remember the details... I don't know if this is the same situatio= n > you're seeing; just to double check - does blkid correctly identify it as= ext4dev > on F15? For me (on Ubuntu) blkid identifies ext4dev, but maybe the tortured logic finds unknown features a justification for declaring ext4dev? Segrey, can you answer the question for F15? Did you set FSTYP to ext4dev manually or did blkid identified it for you? > > -Eric > >> -Eric >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at =A0http://vger.kernel.org/majordomo-info.html > > From ajeet.yadav.77@gmail.com Wed Jun 1 01:41:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=ham version=3.4.0-r929098 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 p516fXie098586 for ; Wed, 1 Jun 2011 01:41:33 -0500 X-ASG-Debug-ID: 1306910492-68f802d90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-vx0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C5C1249311A for ; Tue, 31 May 2011 23:41:32 -0700 (PDT) Received: from mail-vx0-f181.google.com (mail-vx0-f181.google.com [209.85.220.181]) by cuda.sgi.com with ESMTP id heoIZLVqLEulUpvX for ; Tue, 31 May 2011 23:41:32 -0700 (PDT) Received: by vxb39 with SMTP id 39so4495056vxb.26 for ; Tue, 31 May 2011 23:41:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to :content-type; bh=Fn9MunqSat+F/QKSBoTgkb4vNmO7Z7h6WwLW5hRHcUc=; b=FW9YA7B52JDyt1hSTTxZJ76q2YYEyrcUOtcVyNKpoUxLxaN48dGj3kGDgHRKGn8ehU IQwKMfsrTEgCl6UaiJcN5pLmFzfCq3sVI4MSQzuW6xpuaq+FI5GcFH40niBotk5uZ53m hgfdlPKusheHNRXxWhLizfGX7uSQtQWc3kRCM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=ee6lxNSzJIaJwdO1WBHKXleLhPdYA9kpS/J5PR7svMZY5T3mm51GrKM2xuwkvsW8B/ KcNwjo1wgpzg2XZ/apYAd4+6koWzMZsmHUAwmWk+5ugvXSOudIh4/nJo11blGGipkN3z sTa0RB77IZf2Yb6A5Fzf3fqD5SQjh5MzO+xEA= MIME-Version: 1.0 Received: by 10.220.201.1 with SMTP id ey1mr2680734vcb.123.1306910491976; Tue, 31 May 2011 23:41:31 -0700 (PDT) Received: by 10.220.75.207 with HTTP; Tue, 31 May 2011 23:41:31 -0700 (PDT) Date: Wed, 1 Jun 2011 12:11:31 +0530 Message-ID: X-ASG-Orig-Subj: What is xfs_prepair64 ? Subject: What is xfs_prepair64 ? From: Ajeet Yadav To: xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-vx0-f181.google.com[209.85.220.181] X-Barracuda-Start-Time: 1306910492 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4037 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=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65269 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean xfstests FS QA Test No. 148 needs "xfs_prepair64" to run ? I did not find this in xfsprogs-3.1.5, please guide from where to find this ? With Regards, Ajeet Yadav From s.priebe@profihost.ag Wed Jun 1 05:54:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p51Asw3U115917 for ; Wed, 1 Jun 2011 05:54:58 -0500 X-ASG-Debug-ID: 1306925695-37c602d20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from server655-han.de-nserver.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6D4E0165CB9E for ; Wed, 1 Jun 2011 03:54:56 -0700 (PDT) Received: from server655-han.de-nserver.de (server655-han.de-nserver.de [85.158.177.45]) by cuda.sgi.com with ESMTP id w0Dd89BVCqKZ2lNr for ; Wed, 01 Jun 2011 03:54:56 -0700 (PDT) Received: (qmail 26636 invoked from network); 1 Jun 2011 12:54:55 +0200 Received: from fw-office.allied-internet.ag (HELO s.priebe-desktop) (85.158.179.66) (smtp-auth username hostmaster@profihost.com, mechanism plain) by server655-han.de-nserver.de (qpsmtpd/0.82) with ESMTPA; Wed, 01 Jun 2011 12:54:55 +0200 Message-ID: <4DE61A7F.40800@profihost.ag> Date: Wed, 01 Jun 2011 12:54:55 +0200 From: Stefan Priebe - Profihost AG User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110424 Thunderbird/3.1.10 MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: XFS crashes with shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr Subject: XFS crashes with shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-User-Auth: Auth by hostmaster@profihost.com through 85.158.179.66 X-Barracuda-Connect: server655-han.de-nserver.de[85.158.177.45] X-Barracuda-Start-Time: 1306925697 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0195 1.0000 -1.8943 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.89 X-Barracuda-Spam-Status: No, SCORE=-1.89 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65286 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 guys, we're seeing a really bad behaviour on one of our machines running vanilla 2.6.32.40 kernel. It freezes from time to time or processes starts to hang. At the same time the following message appears in the kernel log: shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr=-274207938304 shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr=-549059303168 shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr=-549500554116 shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr=-549360922112 shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr=-549407219078 shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr=-549480231300 Any ideas? An xfs_repair says everything is fine. -- Regards, Stefan Priebe From s.priebe@profihost.ag Wed Jun 1 06:05:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p51B5m0t116251 for ; Wed, 1 Jun 2011 06:05:48 -0500 X-ASG-Debug-ID: 1306926346-310b03990000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from server655-han.de-nserver.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D2B181ED09DB for ; Wed, 1 Jun 2011 04:05:47 -0700 (PDT) Received: from server655-han.de-nserver.de (server655-han.de-nserver.de [85.158.177.45]) by cuda.sgi.com with ESMTP id g0oq7aTPM3FxcGKy for ; Wed, 01 Jun 2011 04:05:47 -0700 (PDT) Received: (qmail 29500 invoked from network); 1 Jun 2011 13:05:45 +0200 Received: from fw-office.allied-internet.ag (HELO s.priebe-desktop) (85.158.179.66) (smtp-auth username hostmaster@profihost.com, mechanism plain) by server655-han.de-nserver.de (qpsmtpd/0.82) with ESMTPA; Wed, 01 Jun 2011 13:05:45 +0200 Message-ID: <4DE61D09.8010507@profihost.ag> Date: Wed, 01 Jun 2011 13:05:45 +0200 From: Stefan Priebe - Profihost AG User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110424 Thunderbird/3.1.10 MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: XFS crashes with shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr Subject: XFS crashes with shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-User-Auth: Auth by hostmaster@profihost.com through 85.158.179.66 X-Barracuda-Connect: server655-han.de-nserver.de[85.158.177.45] X-Barracuda-Start-Time: 1306926347 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0050 1.0000 -1.9886 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.2.65287 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 guys, we're seeing a really bad behaviour on one of our machines running vanilla 2.6.32.40 kernel. It freezes from time to time or processes starts to hang. At the same time the following message appears in the kernel log: shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr=-274207938304 shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr=-549059303168 shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr=-549500554116 shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr=-549360922112 shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr=-549407219078 shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr=-549480231300 Any ideas? An xfs_repair says everything is fine. -- Regards, Stefan Priebe From anonymous@lxplesk223.fm.netbenefit.co.uk Wed Jun 1 06:22:10 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.1 required=5.0 tests=BAYES_50,DATE_IN_PAST_24_48 autolearn=no version=3.4.0-r929098 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 p51BMARw116757 for ; Wed, 1 Jun 2011 06:22:10 -0500 X-ASG-Debug-ID: 1306927327-07ff03330000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lxplesk223.fm.netbenefit.co.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 40D36493B47 for ; Wed, 1 Jun 2011 04:22:07 -0700 (PDT) Received: from lxplesk223.fm.netbenefit.co.uk (www.aestheticandimplantdentistry.co.uk [62.128.152.171]) by cuda.sgi.com with ESMTP id HqrdGj3alGoS0VIf for ; Wed, 01 Jun 2011 04:22:07 -0700 (PDT) Received: (qmail 25346 invoked by uid 48); 31 May 2011 10:00:07 +0100 Date: 31 May 2011 10:00:07 +0100 Message-ID: <20110531090007.25343.qmail@lxplesk223.fm.netbenefit.co.uk> To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Randolf recommends this site Subject: Randolf recommends this site MIME-Version: 1.0 From: "laura.murphy@fmc.co.uk" Reply-To: "bizopps.v73@gmail.com" Content-type: text/plain; charset=iso-8859-1 X-Barracuda-Connect: www.aestheticandimplantdentistry.co.uk[62.128.152.171] X-Barracuda-Start-Time: 1306927328 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4783 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.49 X-Barracuda-Spam-Status: No, SCORE=0.49 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DATE_IN_PAST_24_48, DATE_IN_PAST_24_48_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65288 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 DATE_IN_PAST_24_48 Date: is 24 to 48 hours before Received: date 0.48 DATE_IN_PAST_24_48_2 DATE_IN_PAST_24_48_2 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Your friend Randolf (bizopps.v73@gmail.com ) has recommended this site to you, and sends you the following message: Hi, Are you ready? The biggest trick all these push button scam artists use is. Passing off their vendor account as an affiliate account. And they usually use a Clickbank account vendor account in all those impressive but fake screen shots you see on their websites. Why do they need to do this? Well, because these scam artists are not affiliate marketers, they can’t make it work. They don’t want to make it work, they just want to cheat you out of your money. They don’t make their money from affiliate marketing …they make it by passing off crap software as something it is not!... And hope that as many people as possible buy the crap before word gets around what they are doing, then they just take down the website. Well this guy has had enough of all their crap and exposed their whole facade in this short video... http://simplebis.co.cc/nmo2.php?e=linux-xfs@oss.sgi.com Watch it now, before he takes it down. Kind regards, Randolf To unsubscribe please click the link below: http://simplebis.co.cc/un.php?e=linux-xfs@oss.sgi.com http://www.independentseminars.co.uk/store/proddetail.php?prod=001YDH From support@marketingbiz.com Wed Jun 1 06:22:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=ham version=3.4.0-r929098 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 p51BMwqd116913 for ; Wed, 1 Jun 2011 06:22:58 -0500 X-ASG-Debug-ID: 1306927376-07fe03520000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from omr5.networksolutionsemail.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8EF73493B4F for ; Wed, 1 Jun 2011 04:22:56 -0700 (PDT) Received: from omr5.networksolutionsemail.com (omr5.networksolutionsemail.com [205.178.146.55]) by cuda.sgi.com with ESMTP id VqWBqn8L9mK7pXmc for ; Wed, 01 Jun 2011 04:22:56 -0700 (PDT) Received: from cm-omr6 (mail.networksolutionsemail.com [205.178.146.50]) by omr5.networksolutionsemail.com (8.13.6/8.13.6) with ESMTP id p51BMucG005694 for ; Wed, 1 Jun 2011 07:22:56 -0400 Authentication-Results: cm-omr6 smtp.user=support@marketingbiz.com; auth=pass (LOGIN) X-Authenticated-UID: support@marketingbiz.com Received: from [112.201.240.140] ([112.201.240.140:23358] helo=192.168.1.101) by cm-omr6 (envelope-from ) (ecelerity 2.2.2.41 r(31179/31189)) with ESMTPA id C6/54-03149-F0126ED4; Wed, 01 Jun 2011 07:22:56 -0400 Date: Wed, 1 Jun 2011 11:22:43 +0000 To: linux-xfs@oss.sgi.com From: Wealth Builder Reply-To: Wealth Builder X-ASG-Orig-Subj: Have You Blown A Chance at Wealth? Subject: Have You Blown A Chance at Wealth? Message-ID: <20fe40750a805b328caf55bcdcd6bce7@192.168.1.101> X-Priority: 3 X-Mailer: PHPMailer [version 1.72] MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="iso-8859-1" X-Barracuda-Connect: omr5.networksolutionsemail.com[205.178.146.55] X-Barracuda-Start-Time: 1306927376 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5014 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.2.65288 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 Fellow Marketers, What a stir Mark Hardy has made with his astounding, traffic-driving software. He’s proved he knows whereof he speaks. He’s walked the affiliate marketing walk and now he, and a few select others, reap the benefits of huge commissions, derived from an advanced algorithm that taps into a traffic torrent called the Black River. Have you been by yet? http://iwealth004.co.cc/affmcmx.php?e=linux-xfs@oss.sgi.com Because Mark doesn’t need the small amount he’s charging for his amazing software. And he doesn’t need to be checking on a website for sales. But he does want to help out affiliate marketers who are bold enough to seek help and ready to change their lives for the better. I haven’t been by Mark’s site today, so it may be gone already. If that’s so, and you never made it by, all I can say is: too bad. Opportunities like Mark’s software are rare. Check this out quickly: http://iwealth004.co.cc/affmcmx.php?e=linux-xfs@oss.sgi.com You could’ve been a member of the affiliate marketing elite, pulling in six and seven figures. Instead, you’ll go on being cautious. There may still be time. Six clicks is all it takes to set-up, align and activate this revolutionary software. Six clicks to success. You deserve it. You can handle it. Don’t let yourself and your family down by failing to act. http://iwealth004.co.cc/affmcmx.php?e=linux-xfs@oss.sgi.com Good Luck Wealth Builder Team Removal link: http://iwealth004.co.cc/un.php?e=linux-xfs@oss.sgi.com From sergey57@gmail.com Wed Jun 1 06:48:18 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.1 required=5.0 tests=BAYES_20,FREEMAIL_FROM, HTML_MESSAGE,J_CHICKENPOX_33,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p51BmHpl117635 for ; Wed, 1 Jun 2011 06:48:18 -0500 X-ASG-Debug-ID: 1306928896-6bf900650000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-iw0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AFA181ED0B92 for ; Wed, 1 Jun 2011 04:48:16 -0700 (PDT) Received: from mail-iw0-f181.google.com (mail-iw0-f181.google.com [209.85.214.181]) by cuda.sgi.com with ESMTP id UOSpeZ05OKWuAhx9 for ; Wed, 01 Jun 2011 04:48:16 -0700 (PDT) Received: by iwn38 with SMTP id 38so4987454iwn.26 for ; Wed, 01 Jun 2011 04:48:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=ijRwgHlJhhArE/bTmrpPYh8Du64e7J5xOPUFDyiJqo0=; b=c016XsXkTGSbJ4Q4Pfs25Pvfou067FBKcMhBxDgehWleD0uYqgz0mebrk2Y35qTogV jmVXECrB7AaVjAIAU1/NHtDdEsKZhtH1qegDtLqBOxE36IMQ9YjudJahxrvcbLDYMvfc kyAmfel7fggxSEuUnE+Hiotz4BhYS+wanzLLY= 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=FBlSTTU0NK5jV2uHsgnnl9JgLYf/668NlbGb2lXbo/Tv1jT/v/P61kPeTQ9GoU8xKj /k2u7Y+CdkcDGCdDFLJmZ7c0Y153s0NqvQ3drgOuYklpsgpv9S3I60yn2zuM4xK9B3ZS ERT7IJtYbgkwpaZn7cgmIV3vkQT8zO2AWxmus= MIME-Version: 1.0 Received: by 10.42.142.7 with SMTP id q7mr14756568icu.231.1306928896133; Wed, 01 Jun 2011 04:48:16 -0700 (PDT) Received: by 10.231.32.202 with HTTP; Wed, 1 Jun 2011 04:48:16 -0700 (PDT) In-Reply-To: References: <4DE5C1FE.8080006@redhat.com> <4DE5CC8E.1090208@redhat.com> <4DE5CF6C.4080707@redhat.com> Date: Wed, 1 Jun 2011 07:48:16 -0400 Message-ID: X-ASG-Orig-Subj: Re: [PATCH] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH] xfstests: add support for ext4dev FSTYP From: sergey ivanov To: Amir Goldstein Cc: Eric Sandeen , XFS , Ext4 Developers List , linux-fsdevel Content-Type: multipart/alternative; boundary=90e6ba6e822a99cba104a4a51871 X-Barracuda-Connect: mail-iw0-f181.google.com[209.85.214.181] X-Barracuda-Start-Time: 1306928896 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65288 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 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 --90e6ba6e822a99cba104a4a51871 Content-Type: text/plain; charset=UTF-8 On Wed, Jun 1, 2011 at 2:37 AM, Amir Goldstein wrote: > On Wed, Jun 1, 2011 at 8:34 AM, Eric Sandeen wrote: > > On 6/1/11 12:22 AM, Eric Sandeen wrote: > >> On 5/31/11 11:56 PM, Amir Goldstein wrote: > >>> On Wed, Jun 1, 2011 at 7:37 AM, Eric Sandeen > wrote: > >>>> On 5/31/11 10:13 PM, Amir Goldstein wrote: > >>>>> From: Amir Goldstein > >>>>> > >>>>> blkid knows to identify the ext4dev FSTYP of a partition that was > >>>>> formatted with mkfs.ext4dev. > >>>>> quota tools and various util-linux utils are also aware of ext4dev, > >>>>> so ext4dev shares the same capabilities as ext4. > >>>>> > >>>>> While testing on Fedora 15, we encoutered a buggy fsck utility, which > >>>>> invokes fsck.ext4, even though it was called with -t ext4dev > argument. > >>>>> In our setup fsck.ext4dev knows about new fs features that fsck.ext4 > >>>>> doesn't know, so the generic_fs_check fails. > >>>>> Since we have no real use of the extra capabilities provided by fsck > util, > >>>>> we decided to invoke fsck.$FSTYP directly to avoid this issue. > >>>> > >>>> Adding ext4dev to every case seems harmless enough. TBH I thought I > had > >>>> it there already but I guess not. > >>>> > >>>> I'm less certain of the change from fsck -t $FSTYP to fsck.$FSTYP > >>>> > >>>> What issue are you avoiding? wouldn't fsck -t ext4dev invoke > fsck.ext4dev anyway? > >>>> > >>>> It seems like it should be harmless, but I don't understand how it > helps you. > >>>> > >>> > >>> As I wrote in the patch description, the fsck utility in Fedora 15 > invokes > >>> fsck.ext4 for some reason when calling fsck -t ext4dev. > >> > >> Oh, right. > >> > >>> this fails because fsck.ext4 doesn't know the snapshot feature. > >>> I didn't debug fsck utility for that. it seemed pointless. > >> > >> Did you file a bug with Fedora? I'd rather fix the root cause than work > around it... > >> Feel free to cc: me on the bug. > > No, I didn't file a bug. > In any case, it was Sergey, who tested and reported the problem on F15. > > Would you agree to fix the problem in xfstests now, so that F15 users can > test ext4dev and fix the bug in fsck regardless? > > > > > RHEL6 does the same; mkfs.ext4dev then fsck -t ext4dev invokes fsck.ext4; > but this > > is because blkid identifies it as ext4, not ext4dev, despite the test_fs > flag being set. > > > > ISTR this is due to some tortured logic about when ext4dev isn't ext4dev, > but > > I don't remember the details... I don't know if this is the same > situation > > you're seeing; just to double check - does blkid correctly identify it as > ext4dev > > on F15? > > > For me (on Ubuntu) blkid identifies ext4dev, but maybe the tortured logic > finds unknown features a justification for declaring ext4dev? > Segrey, can you answer the question for F15? > Did you set FSTYP to ext4dev manually or did blkid identified it for you? > Amir, Fedora's fsck behaves differently on ext4dev and next4. When I made next4 partition on Fedora-15 by {{{ mkfs -t next4 /dev/sdd9 }}} it requires "export FSTYP=next4" to be defined and exported in local.conf. It mounts partition with {{{ mount -t next4 /dev/sdd9 /mnt/sdd9 }}} But on attempt to fsck it calls wrong fsck, as you reported: {{{ [seriv@pimbra xfstests]$ sudo fsck -t next4 /dev/sdd9 fsck from util-linux 2.19.1 e2fsck 1.41.14 (22-Dec-2010) /dev/sdd9 has unsupported feature(s): FEATURE_C7 FEATURE_C8 FEATURE_R7 e2fsck: Get a newer version of e2fsck! }}} And the problem can be easily traced to this wrong call: {{{ [seriv@pimbra xfstests]$ sudo strace -o /var/log/fsck.strace fsck -t next4 /dev/sdd9 fsck from util-linux 2.19.1 e2fsck 1.41.14 (22-Dec-2010) /dev/sdd9 has unsupported feature(s): FEATURE_C7 FEATURE_C8 FEATURE_R7 e2fsck: Get a newer version of e2fsck! [seriv@pimbra xfstests]$ grep sbin /var/log/fsck.strace execve("/sbin/fsck", ["fsck", "-t", "next4", "/dev/sdd9"], [/* 17 vars */]) = 0 stat("/sbin/fsck.ext4", {st_mode=S_IFREG|0755, st_size=194280, ...}) = 0 }}} But it's not the case for ext4dev, with it I even don't need "-t ext4dev", it is recognized by blkid: {{{ [seriv@pimbra xfstests]$ sudo mkfs -t ext4dev /dev/sdd9 mke2fs 1.41.14-next3-1.0.13-7 (24-May-2011) [skip] This filesystem will be automatically checked every 27 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [seriv@pimbra xfstests]$ sudo mount /dev/sdd9 /mnt/sdd9 [seriv@pimbra xfstests]$ mount | grep sdd9 /dev/sdd9 on /mnt/sdd9 type ext4dev (rw) [seriv@pimbra xfstests]$ sudo umount /dev/sdd9 [seriv@pimbra xfstests]$ sudo fsck /dev/sdd9 fsck from util-linux 2.19.1 e2fsck 1.41.14-next3-1.0.13-7 (24-May-2011) The test_fs flag is set (and ext4 is available). Clear? }}} and at this point in another session {{{ [seriv@pimbra xfstests]$ pgrep -f -l fsck 4365 sudo fsck /dev/sdd9 4366 fsck /dev/sdd9 4367 fsck.ext4dev /dev/sdd9 }}} So I'd like this patch to be applied to xfstests to be able to use it on the different filesystems, - if not, then why have this FSTYP and not rely upon blkid -- Regards, Sergey Ivanov. --90e6ba6e822a99cba104a4a51871 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Wed, Jun 1, 2011 at 2:37 AM, Amir Goldstein <amir73il@gmail.com> wrote:
On Wed, Jun 1, 2011 at 8:34 AM, Eric Sand= een <sandeen@redhat.com> wr= ote:
> On 6/1/11 12:22 AM, Eric Sandeen wrote:
>> On 5/31/11 11:56 PM, Amir Goldstein wrote:
>>> On Wed, Jun 1, 2011 at 7:37 AM, Eric Sandeen <sandeen@redhat.com> wrote:
>>>> On 5/31/11 10:13 PM, Amir Goldstein wrote:
>>>>> From: Amir Goldstein <amir73il@users.sf.net>
>>>>>
>>>>> blkid knows to identify the ext4dev FSTYP of a partiti= on that was
>>>>> formatted with mkfs.ext4dev.
>>>>> quota tools and various util-linux utils are also awar= e of ext4dev,
>>>>> so ext4dev shares the same capabilities as ext4.
>>>>>
>>>>> While testing on Fedora 15, we encoutered a buggy fsck= utility, which
>>>>> invokes fsck.ext4, even though it was called with -t e= xt4dev argument.
>>>>> In our setup fsck.ext4dev knows about new fs features = that fsck.ext4
>>>>> doesn't know, so the generic_fs_check fails.
>>>>> Since we have no real use of the extra capabilities pr= ovided by fsck util,
>>>>> we decided to invoke fsck.$FSTYP directly to avoid thi= s issue.
>>>>
>>>> Adding ext4dev to every case seems harmless enough. =C2=A0= TBH I thought I had
>>>> it there already but I guess not.
>>>>
>>>> I'm less certain of the change from fsck -t $FSTYP to = fsck.$FSTYP
>>>>
>>>> What issue are you avoiding? =C2=A0wouldn't fsck -t ex= t4dev invoke fsck.ext4dev anyway?
>>>>
>>>> It seems like it should be harmless, but I don't under= stand how it helps you.
>>>>
>>>
>>> As I wrote in the patch description, the fsck utility in Fedor= a 15 invokes
>>> fsck.ext4 for some reason when calling fsck -t ext4dev.
>>
>> Oh, right.
>>
>>> this fails because fsck.ext4 doesn't know the snapshot fea= ture.
>>> I didn't debug fsck utility for that. it seemed pointless.=
>>
>> Did you file a bug with Fedora? =C2=A0I'd rather fix the root = cause than work around it...
>> Feel free to cc: me on the bug.

No, I didn't file a bug.
In any case, it was Sergey, who tested and reported the problem on F15.

Would you agree to fix the problem in xfstests now, so that F15 users can test ext4dev and fix the bug in fsck regardless?

>
> RHEL6 does the same; mkfs.ext4dev then fsck -t ext4dev invokes fsck.ex= t4; but this
> is because blkid identifies it as ext4, not ext4dev, despite the test_= fs flag being set.
>
> ISTR this is due to some tortured logic about when ext4dev isn't e= xt4dev, but
> I don't remember the details... I don't know if this is the sa= me situation
> you're seeing; just to double check - does blkid correctly identif= y it as ext4dev
> on F15?


For me (on Ubuntu) blkid identifies ext4dev, but maybe the tortured l= ogic
finds unknown features a justification for declaring ext4dev?
Segrey, can you answer the question for F15?
Did you set FSTYP to ext4dev manually or did blkid identified it for you?

Amir, Fedora's fsck behaves differen= tly on ext4dev and next4. When I made next4 partition on Fedora-15 by=C2=A0=
{{{
mkfs =C2=A0-t next4 /dev/sdd9
}}}
it= requires "export FSTYP=3Dnext4" to be defined and exported in lo= cal.conf. It mounts partition with
{{{
mount -t next4 /= dev/sdd9 /mnt/sdd9
}}}
But on attempt to fsck it calls wrong fsck, as you repor= ted:
{{{
[seriv@pimbra xfstests]$ sudo fsck -t nex= t4 /dev/sdd9
fsck from util-linux 2.19.1
e2fsck 1.41.14= (22-Dec-2010)
/dev/sdd9 has unsupported feature(s): FEATURE_C7 FEATURE_C8 FEATURE_R7=
e2fsck: Get a newer version of e2fsck!
}}}
=

And the problem can be easily traced to this wrong call= :
{{{
[seriv@pimbra xfstests]$ sudo strace -o /var/log/fs= ck.strace fsck -t next4 /dev/sdd9 =C2=A0
fsck from util-linux 2.1= 9.1
e2fsck 1.41.14 (22-Dec-2010)
/dev/sdd9 has unsuppor= ted feature(s): FEATURE_C7 FEATURE_C8 FEATURE_R7
e2fsck: Get a newer version of e2fsck!
[seriv@pimbra xfstest= s]$ grep sbin /var/log/fsck.strace=C2=A0
execve("/sbin/fsck&= quot;, ["fsck", "-t", "next4", "/dev/sdd= 9"], [/* 17 vars */]) =3D 0
stat("/sbin/fsck.ext4", {st_mode=3DS_IFREG|0755, st_size=3D1= 94280, ...}) =3D 0
}}}

But it'= s not the case for ext4dev, with it I even don't need "-t ext4dev&= quot;, it is recognized by blkid:
{{{
[seriv@pimbra xfstests]$ sudo mkfs -t ext4dev /dev/= sdd9
mke2fs 1.41.14-next3-1.0.13-7 (24-May-2011)
[skip]=
This filesystem will be automatically checked every 27 mounts or=
180 days, whichever comes first. =C2=A0Use tune2fs -c or -i to overrid= e.
[seriv@pimbra xfstests]$ sudo mount /dev/sdd9 /mnt/sdd9
<= div>[seriv@pimbra xfstests]$ mount | grep sdd9
/dev/sdd9 on /mnt/= sdd9 type ext4dev (rw)
[seriv@pimbra xfstests]$ sudo umount /dev/sdd9
[seriv@pimbra= xfstests]$ sudo fsck /dev/sdd9
fsck from util-linux 2.19.1
=
e2fsck 1.41.14-next3-1.0.13-7 (24-May-2011)
The test_fs flag= is set (and ext4 is available). =C2=A0Clear<y>?=C2=A0
}}}
and at this point in another session
{{{=
[seriv@pimbra xfstests]$ pgrep -f -l fsck
4365 su= do fsck /dev/sdd9
4366 fsck /dev/sdd9
4367 fsck.ext4dev= /dev/sdd9
}}}

So I'd like this patch to be ap= plied to xfstests to be able to use it on the different filesystems, - if n= ot, then why have this FSTYP and not rely upon blkid
--=C2=A0
=C2=A0 Regards,
=C2=A0 =C2=A0Sergey Ivanov.

--90e6ba6e822a99cba104a4a51871-- From amir73il@gmail.com Wed Jun 1 07:37:30 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,FREEMAIL_FROM, J_CHICKENPOX_33,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p51CbUpL119171 for ; Wed, 1 Jun 2011 07:37:30 -0500 X-ASG-Debug-ID: 1306931848-457202140000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ww0-f51.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5F559165CEF8 for ; Wed, 1 Jun 2011 05:37:28 -0700 (PDT) Received: from mail-ww0-f51.google.com (mail-ww0-f51.google.com [74.125.82.51]) by cuda.sgi.com with ESMTP id iqrr4EQi4dyka99s for ; Wed, 01 Jun 2011 05:37:28 -0700 (PDT) Received: by wwf26 with SMTP id 26so4723937wwf.32 for ; Wed, 01 Jun 2011 05:37:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=QGBR4461jxECNyYrGrrJBirAF96e6rR2Vbj0+OS+ecU=; b=K6+fSztB2yZ6zrPf2ik3tKz3MgQO6O/+lcOHHG0zIBp7LqY/3Oaeap3OQNz8L4DR7m 9dUkCrA+tLLHBKRYmdrGu9UX/7h/NBb/S2+cYLN2PAQzgSEMIRtmTfKNeIujUh4zKvrO D5X2XisGNrK0OV8zV7yTuWLDotndjDljVKDjU= 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=BoNCc/qIbc1eDSwMUE6pz9bvTsihykYZnHx/LQeKu/+lJMUftJkNG9sGUZtUBZeHry PZUyJVulcZie3elmnWjs75YeoArl9fMh0cAhCBfGllhEgilILURwjPaJbs1uUrWVc5gF 7vLbJTP0g0+LmPvjzxgklCWo+XK8ZPGm1DS/8= MIME-Version: 1.0 Received: by 10.216.235.129 with SMTP id u1mr4670167weq.108.1306931847754; Wed, 01 Jun 2011 05:37:27 -0700 (PDT) Received: by 10.216.221.135 with HTTP; Wed, 1 Jun 2011 05:37:27 -0700 (PDT) In-Reply-To: References: <4DE5C1FE.8080006@redhat.com> <4DE5CC8E.1090208@redhat.com> <4DE5CF6C.4080707@redhat.com> Date: Wed, 1 Jun 2011 15:37:27 +0300 Message-ID: X-ASG-Orig-Subj: Re: [PATCH] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH] xfstests: add support for ext4dev FSTYP From: Amir Goldstein To: sergey ivanov Cc: Eric Sandeen , XFS , Ext4 Developers List , linux-fsdevel Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-ww0-f51.google.com[74.125.82.51] X-Barracuda-Start-Time: 1306931849 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, DKIM_SIGNED, DKIM_VERIFIED, MAILTO_TO_SPAM_ADDR X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65294 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 MAILTO_TO_SPAM_ADDR URI: Includes a link to a likely spammer email 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 On Wed, Jun 1, 2011 at 2:48 PM, sergey ivanov wrote: > On Wed, Jun 1, 2011 at 2:37 AM, Amir Goldstein wrote= : >> >> On Wed, Jun 1, 2011 at 8:34 AM, Eric Sandeen wrote: >> > On 6/1/11 12:22 AM, Eric Sandeen wrote: >> >> On 5/31/11 11:56 PM, Amir Goldstein wrote: >> >>> On Wed, Jun 1, 2011 at 7:37 AM, Eric Sandeen >> >>> wrote: >> >>>> On 5/31/11 10:13 PM, Amir Goldstein wrote: >> >>>>> From: Amir Goldstein >> >>>>> >> >>>>> blkid knows to identify the ext4dev FSTYP of a partition that was >> >>>>> formatted with mkfs.ext4dev. >> >>>>> quota tools and various util-linux utils are also aware of ext4dev= , >> >>>>> so ext4dev shares the same capabilities as ext4. >> >>>>> >> >>>>> While testing on Fedora 15, we encoutered a buggy fsck utility, >> >>>>> which >> >>>>> invokes fsck.ext4, even though it was called with -t ext4dev >> >>>>> argument. >> >>>>> In our setup fsck.ext4dev knows about new fs features that fsck.ex= t4 >> >>>>> doesn't know, so the generic_fs_check fails. >> >>>>> Since we have no real use of the extra capabilities provided by fs= ck >> >>>>> util, >> >>>>> we decided to invoke fsck.$FSTYP directly to avoid this issue. >> >>>> >> >>>> Adding ext4dev to every case seems harmless enough. =A0TBH I though= t I >> >>>> had >> >>>> it there already but I guess not. >> >>>> >> >>>> I'm less certain of the change from fsck -t $FSTYP to fsck.$FSTYP >> >>>> >> >>>> What issue are you avoiding? =A0wouldn't fsck -t ext4dev invoke >> >>>> fsck.ext4dev anyway? >> >>>> >> >>>> It seems like it should be harmless, but I don't understand how it >> >>>> helps you. >> >>>> >> >>> >> >>> As I wrote in the patch description, the fsck utility in Fedora 15 >> >>> invokes >> >>> fsck.ext4 for some reason when calling fsck -t ext4dev. >> >> >> >> Oh, right. >> >> >> >>> this fails because fsck.ext4 doesn't know the snapshot feature. >> >>> I didn't debug fsck utility for that. it seemed pointless. >> >> >> >> Did you file a bug with Fedora? =A0I'd rather fix the root cause than >> >> work around it... >> >> Feel free to cc: me on the bug. >> >> No, I didn't file a bug. >> In any case, it was Sergey, who tested and reported the problem on F15. >> >> Would you agree to fix the problem in xfstests now, so that F15 users ca= n >> test ext4dev and fix the bug in fsck regardless? >> >> > >> > RHEL6 does the same; mkfs.ext4dev then fsck -t ext4dev invokes >> > fsck.ext4; but this >> > is because blkid identifies it as ext4, not ext4dev, despite the test_= fs >> > flag being set. >> > >> > ISTR this is due to some tortured logic about when ext4dev isn't >> > ext4dev, but >> > I don't remember the details... I don't know if this is the same >> > situation >> > you're seeing; just to double check - does blkid correctly identify it >> > as ext4dev >> > on F15? >> >> >> For me (on Ubuntu) blkid identifies ext4dev, but maybe the tortured logi= c >> finds unknown features a justification for declaring ext4dev? >> Segrey, can you answer the question for F15? >> Did you set FSTYP to ext4dev manually or did blkid identified it for you= ? > > Amir, Fedora's fsck behaves differently on ext4dev and next4. When I made > next4 partition on Fedora-15 by > {{{ > mkfs =A0-t next4 /dev/sdd9 > }}} > it requires "export FSTYP=3Dnext4" to be defined and exported in local.co= nf. > It mounts partition with > {{{ > mount -t next4 /dev/sdd9 /mnt/sdd9 > }}} > But on attempt to fsck it calls wrong fsck, as you reported: > {{{ > [seriv@pimbra xfstests]$ sudo fsck -t next4 /dev/sdd9 > fsck from util-linux 2.19.1 > e2fsck 1.41.14 (22-Dec-2010) > /dev/sdd9 has unsupported feature(s): FEATURE_C7 FEATURE_C8 FEATURE_R7 > e2fsck: Get a newer version of e2fsck! > }}} > And the problem can be easily traced to this wrong call: > {{{ > [seriv@pimbra xfstests]$ sudo strace -o /var/log/fsck.strace fsck -t next= 4 > /dev/sdd9 > fsck from util-linux 2.19.1 > e2fsck 1.41.14 (22-Dec-2010) > /dev/sdd9 has unsupported feature(s): FEATURE_C7 FEATURE_C8 FEATURE_R7 > e2fsck: Get a newer version of e2fsck! > [seriv@pimbra xfstests]$ grep sbin /var/log/fsck.strace > execve("/sbin/fsck", ["fsck", "-t", "next4", "/dev/sdd9"], [/* 17 vars */= ]) > =3D 0 > stat("/sbin/fsck.ext4", {st_mode=3DS_IFREG|0755, st_size=3D194280, ...}) = =3D 0 > }}} > But it's not the case for ext4dev, with it I even don't need "-t ext4dev"= , > it is recognized by blkid: > {{{ > [seriv@pimbra xfstests]$ sudo mkfs -t ext4dev /dev/sdd9 > mke2fs 1.41.14-next3-1.0.13-7 (24-May-2011) > [skip] > This filesystem will be automatically checked every 27 mounts or > 180 days, whichever comes first. =A0Use tune2fs -c or -i to override. > [seriv@pimbra xfstests]$ sudo mount /dev/sdd9 /mnt/sdd9 > [seriv@pimbra xfstests]$ mount | grep sdd9 > /dev/sdd9 on /mnt/sdd9 type ext4dev (rw) > [seriv@pimbra xfstests]$ sudo umount /dev/sdd9 > [seriv@pimbra xfstests]$ sudo fsck /dev/sdd9 > fsck from util-linux 2.19.1 > e2fsck 1.41.14-next3-1.0.13-7 (24-May-2011) > The test_fs flag is set (and ext4 is available). =A0Clear? > }}} > and at this point in another session > {{{ > [seriv@pimbra xfstests]$ pgrep -f -l fsck > 4365 sudo fsck /dev/sdd9 > 4366 fsck /dev/sdd9 > 4367 fsck.ext4dev /dev/sdd9 > }}} > So I'd like this patch to be applied to xfstests to be able to use it on = the > different filesystems, - if not, then why have this FSTYP and not rely up= on > blkid > -- To make a long story a bit shorter, there was no intention to set FSTYP manually, that was only a temporary hack to make next4 clone work, but since ext4dev = is identified by blkid and respected by fsck/mkfs/mount, we are going to work with it and not with next4. So I understood the problem incorrectly and the patch to xfstests doesn't n= eed to change fsck -t $FSTYP to fsck.$FSTYP. I will resend the patch without this change. Amir. From amir73il@gmail.com Wed Jun 1 07:57:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_62,J_CHICKENPOX_65,J_CHICKENPOX_66,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p51CvOjW119862 for ; Wed, 1 Jun 2011 07:57:24 -0500 X-ASG-Debug-ID: 1306933043-023b02690000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ww0-f51.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 23FA24941BC for ; Wed, 1 Jun 2011 05:57:23 -0700 (PDT) Received: from mail-ww0-f51.google.com (mail-ww0-f51.google.com [74.125.82.51]) by cuda.sgi.com with ESMTP id zHgwu7lIBIkGILua for ; Wed, 01 Jun 2011 05:57:23 -0700 (PDT) Received: by wwf26 with SMTP id 26so4738908wwf.32 for ; Wed, 01 Jun 2011 05:57:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:sender:from:to:cc:subject:date:message-id :x-mailer; bh=ELjjdNN3VFeOEBVQJlanuzFqbXmJvu3XZXR1OtdNPHE=; b=ZT0ephmGUXI6ELc3ncSBwciY8FD3rCA/M+1oE/WHvyAT8nnf5UG7m+E+LmN03K4hyp QczDCTLZ6diylPd1JpdGPqcyW1TfZ65ctg83t0WOWvO6dzq0iJpanRaq6GVlToVLcuvj 5ivq9R2LRXYEueFulOU0Yc7NLIfmSgwdy1ct4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer; b=JAtbjen8FJrO6mVvmngOipdHrOfEZvn1LDmWxdj46swWDrWJjZ5JsbM7RHf2VE8ICf 9F8mgplFUAFq9eUf0pHuX7HqEzHejDDCx/+2cY6e3ZpYnrJTLxmZap59EaA66G8NkTbN VyHU39jVMvbZ+HZB9NihSRC9wUMnX2Af6eIH8= Received: by 10.216.82.6 with SMTP id n6mr4988044wee.27.1306933042892; Wed, 01 Jun 2011 05:57:22 -0700 (PDT) Received: from localhost.localdomain (bzq-218-153-66.cablep.bezeqint.net [81.218.153.66]) by mx.google.com with ESMTPS id w58sm620002weq.1.2011.06.01.05.57.19 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 01 Jun 2011 05:57:22 -0700 (PDT) Sender: Amir Goldstein From: amir73il@users.sourceforge.net To: xfs@oss.sgi.com Cc: sandeen@redhat.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Amir Goldstein X-ASG-Orig-Subj: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: [PATCH v2] xfstests: add support for ext4dev FSTYP Date: Wed, 1 Jun 2011 15:56:52 +0300 Message-Id: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> X-Mailer: git-send-email 1.7.4.1 X-Barracuda-Connect: mail-ww0-f51.google.com[74.125.82.51] X-Barracuda-Start-Time: 1306933044 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, MAILTO_TO_SPAM_ADDR, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65295 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 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 From: Amir Goldstein From: Amir Goldstein blkid knows to identify the ext4dev FSTYP of a partition that was formatted with mkfs.ext4dev. quota tools and various util-linux utils are also aware of ext4dev, so ext4dev shares the same capabilities as ext4. Signed-off-by: Amir Goldstein Tested-by: Sergey Ivanov --- ext4dev is used to test experimental ext4 code in mutual existance with production ext4 code on the same system. Specifically, ext4 snapshots code is available for testing as a stand-alone ext4dev module for Fedora 15 and Ubuntu 11.4 (see http://next3.sf.net). v1 -> v2: - undo change of fsck -t $FSTYP to fsck.$FSTYP common.defrag | 2 +- common.quota | 4 ++-- common.rc | 10 +++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/common.defrag b/common.defrag index 1bcf01d..4850803 100644 --- a/common.defrag +++ b/common.defrag @@ -26,7 +26,7 @@ _require_defrag() xfs) DEFRAG_PROG=/usr/sbin/xfs_fsr ;; - ext4) + ext4|ext4dev) DEFRAG_PROG=/usr/bin/e4defrag ;; *) diff --git a/common.quota b/common.quota index 3c87ce1..b6d5f16 100644 --- a/common.quota +++ b/common.quota @@ -29,7 +29,7 @@ _require_quota() [ -n $QUOTA_PROG ] || _notrun "Quota user tools not installed" case $FSTYP in - ext2|ext3|ext4|reiserfs) + ext2|ext3|ext4|ext4dev|reiserfs) if [ ! -d /proc/sys/fs/quota ]; then _notrun "Installed kernel does not support quotas" fi @@ -237,7 +237,7 @@ _check_quota_usage() # Sync to get delalloc to disk sync VFS_QUOTA=0 - if [ $FSTYP = "ext2" -o $FSTYP = "ext3" -o $FSTYP = "ext4" -o $FSTYP = "reiserfs" ]; then + if [ $FSTYP = "ext2" -o $FSTYP = "ext3" -o $FSTYP = "ext4" -o $FSTYP = "ext4dev" -o $FSTYP = "reiserfs" ]; then VFS_QUOTA=1 quotaon -f -u -g $SCRATCH_MNT 2>/dev/null fi diff --git a/common.rc b/common.rc index e634fbb..c510c66 100644 --- a/common.rc +++ b/common.rc @@ -65,7 +65,7 @@ _mount_opts() nfs) export MOUNT_OPTIONS=$NFS_MOUNT_OPTIONS ;; - ext2|ext3|ext4) + ext2|ext3|ext4|ext4dev) # acls & xattrs aren't turned on by default on ext$FOO export MOUNT_OPTIONS="-o acl,user_xattr $EXT_MOUNT_OPTIONS" ;; @@ -110,7 +110,7 @@ _mkfs_opts() _fsck_opts() { case $FSTYP in - ext2|ext3|ext4) + ext2|ext3|ext4|ext4dev) export FSCK_OPTIONS="-nf" ;; reiserfs) @@ -326,10 +326,10 @@ _scratch_mkfs_sized() xfs) _scratch_mkfs_xfs -d size=$fssize -b size=$blocksize ;; - ext2|ext3|ext4) + ext2|ext3|ext4|ext4dev) /sbin/mkfs.$FSTYP $MKFS_OPTIONS -b $blocksize $SCRATCH_DEV $blocks ;; - btrfs) + btrfs) /sbin/mkfs.$FSTYP $MKFS_OPTIONS $SCRATCH_DEV -b $fssize ;; *) @@ -354,7 +354,7 @@ _scratch_mkfs_geom() xfs) MKFS_OPTIONS+=" -b size=$blocksize, -d su=$sunit_bytes,sw=$swidth_mult" ;; - ext4) + ext4|ext4dev) MKFS_OPTIONS+=" -b $blocksize -E stride=$sunit_blocks,stripe_width=$swidth_blocks" ;; *) -- 1.7.4.1 From sandeen@redhat.com Wed Jun 1 10:28:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.4.0-r929098 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 p51FS1W8126806 for ; Wed, 1 Jun 2011 10:28:01 -0500 X-ASG-Debug-ID: 1306942080-2c9b01280000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2C1511ED18B3 for ; Wed, 1 Jun 2011 08:28:00 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id mAlVGc6JuRQKwgU2 for ; Wed, 01 Jun 2011 08:28:00 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p51FRw5m027840 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 1 Jun 2011 11:27:58 -0400 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id p51FRumb023564 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO); Wed, 1 Jun 2011 11:27:57 -0400 Message-ID: <4DE65A7C.7070908@redhat.com> Date: Wed, 01 Jun 2011 10:27:56 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Amir Goldstein CC: sergey ivanov , XFS , Ext4 Developers List , linux-fsdevel X-ASG-Orig-Subj: Re: [PATCH] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH] xfstests: add support for ext4dev FSTYP References: <4DE5C1FE.8080006@redhat.com> <4DE5CC8E.1090208@redhat.com> <4DE5CF6C.4080707@redhat.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1306942081 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 6/1/11 7:37 AM, Amir Goldstein wrote: > On Wed, Jun 1, 2011 at 2:48 PM, sergey ivanov wrote: >> On Wed, Jun 1, 2011 at 2:37 AM, Amir Goldstein wrote: >>> >>> On Wed, Jun 1, 2011 at 8:34 AM, Eric Sandeen wrote: >>>> On 6/1/11 12:22 AM, Eric Sandeen wrote: >>>>> On 5/31/11 11:56 PM, Amir Goldstein wrote: >>>>>> On Wed, Jun 1, 2011 at 7:37 AM, Eric Sandeen >>>>>> wrote: >>>>>>> On 5/31/11 10:13 PM, Amir Goldstein wrote: >>>>>>>> From: Amir Goldstein >>>>>>>> >>>>>>>> blkid knows to identify the ext4dev FSTYP of a partition that was >>>>>>>> formatted with mkfs.ext4dev. >>>>>>>> quota tools and various util-linux utils are also aware of ext4dev, >>>>>>>> so ext4dev shares the same capabilities as ext4. >>>>>>>> >>>>>>>> While testing on Fedora 15, we encoutered a buggy fsck utility, >>>>>>>> which >>>>>>>> invokes fsck.ext4, even though it was called with -t ext4dev >>>>>>>> argument. >>>>>>>> In our setup fsck.ext4dev knows about new fs features that fsck.ext4 >>>>>>>> doesn't know, so the generic_fs_check fails. >>>>>>>> Since we have no real use of the extra capabilities provided by fsck >>>>>>>> util, >>>>>>>> we decided to invoke fsck.$FSTYP directly to avoid this issue. >>>>>>> >>>>>>> Adding ext4dev to every case seems harmless enough. TBH I thought I >>>>>>> had >>>>>>> it there already but I guess not. >>>>>>> >>>>>>> I'm less certain of the change from fsck -t $FSTYP to fsck.$FSTYP >>>>>>> >>>>>>> What issue are you avoiding? wouldn't fsck -t ext4dev invoke >>>>>>> fsck.ext4dev anyway? >>>>>>> >>>>>>> It seems like it should be harmless, but I don't understand how it >>>>>>> helps you. >>>>>>> >>>>>> >>>>>> As I wrote in the patch description, the fsck utility in Fedora 15 >>>>>> invokes >>>>>> fsck.ext4 for some reason when calling fsck -t ext4dev. >>>>> >>>>> Oh, right. >>>>> >>>>>> this fails because fsck.ext4 doesn't know the snapshot feature. >>>>>> I didn't debug fsck utility for that. it seemed pointless. >>>>> >>>>> Did you file a bug with Fedora? I'd rather fix the root cause than >>>>> work around it... >>>>> Feel free to cc: me on the bug. >>> >>> No, I didn't file a bug. >>> In any case, it was Sergey, who tested and reported the problem on F15. >>> >>> Would you agree to fix the problem in xfstests now, so that F15 users can >>> test ext4dev and fix the bug in fsck regardless? >>> >>>> >>>> RHEL6 does the same; mkfs.ext4dev then fsck -t ext4dev invokes >>>> fsck.ext4; but this >>>> is because blkid identifies it as ext4, not ext4dev, despite the test_fs >>>> flag being set. >>>> >>>> ISTR this is due to some tortured logic about when ext4dev isn't >>>> ext4dev, but >>>> I don't remember the details... I don't know if this is the same >>>> situation >>>> you're seeing; just to double check - does blkid correctly identify it >>>> as ext4dev >>>> on F15? >>> >>> >>> For me (on Ubuntu) blkid identifies ext4dev, but maybe the tortured logic >>> finds unknown features a justification for declaring ext4dev? >>> Segrey, can you answer the question for F15? >>> Did you set FSTYP to ext4dev manually or did blkid identified it for you? >> >> Amir, Fedora's fsck behaves differently on ext4dev and next4. When I made >> next4 partition on Fedora-15 by >> {{{ >> mkfs -t next4 /dev/sdd9 >> }}} >> it requires "export FSTYP=next4" to be defined and exported in local.conf. >> It mounts partition with >> {{{ >> mount -t next4 /dev/sdd9 /mnt/sdd9 >> }}} >> But on attempt to fsck it calls wrong fsck, as you reported: >> {{{ >> [seriv@pimbra xfstests]$ sudo fsck -t next4 /dev/sdd9 >> fsck from util-linux 2.19.1 >> e2fsck 1.41.14 (22-Dec-2010) >> /dev/sdd9 has unsupported feature(s): FEATURE_C7 FEATURE_C8 FEATURE_R7 >> e2fsck: Get a newer version of e2fsck! >> }}} >> And the problem can be easily traced to this wrong call: >> {{{ >> [seriv@pimbra xfstests]$ sudo strace -o /var/log/fsck.strace fsck -t next4 >> /dev/sdd9 >> fsck from util-linux 2.19.1 >> e2fsck 1.41.14 (22-Dec-2010) >> /dev/sdd9 has unsupported feature(s): FEATURE_C7 FEATURE_C8 FEATURE_R7 >> e2fsck: Get a newer version of e2fsck! >> [seriv@pimbra xfstests]$ grep sbin /var/log/fsck.strace >> execve("/sbin/fsck", ["fsck", "-t", "next4", "/dev/sdd9"], [/* 17 vars */]) >> = 0 >> stat("/sbin/fsck.ext4", {st_mode=S_IFREG|0755, st_size=194280, ...}) = 0 >> }}} >> But it's not the case for ext4dev, with it I even don't need "-t ext4dev", >> it is recognized by blkid: >> {{{ >> [seriv@pimbra xfstests]$ sudo mkfs -t ext4dev /dev/sdd9 >> mke2fs 1.41.14-next3-1.0.13-7 (24-May-2011) >> [skip] >> This filesystem will be automatically checked every 27 mounts or >> 180 days, whichever comes first. Use tune2fs -c or -i to override. >> [seriv@pimbra xfstests]$ sudo mount /dev/sdd9 /mnt/sdd9 >> [seriv@pimbra xfstests]$ mount | grep sdd9 >> /dev/sdd9 on /mnt/sdd9 type ext4dev (rw) >> [seriv@pimbra xfstests]$ sudo umount /dev/sdd9 >> [seriv@pimbra xfstests]$ sudo fsck /dev/sdd9 >> fsck from util-linux 2.19.1 >> e2fsck 1.41.14-next3-1.0.13-7 (24-May-2011) >> The test_fs flag is set (and ext4 is available). Clear? >> }}} >> and at this point in another session >> {{{ >> [seriv@pimbra xfstests]$ pgrep -f -l fsck >> 4365 sudo fsck /dev/sdd9 >> 4366 fsck /dev/sdd9 >> 4367 fsck.ext4dev /dev/sdd9 >> }}} >> So I'd like this patch to be applied to xfstests to be able to use it on the >> different filesystems, - if not, then why have this FSTYP and not rely upon >> blkid >> -- > > To make a long story a bit shorter, there was no intention to set > FSTYP manually, > that was only a temporary hack to make next4 clone work, but since ext4dev is > identified by blkid and respected by fsck/mkfs/mount, we are going to > work with it > and not with next4. > > So I understood the problem incorrectly and the patch to xfstests doesn't need > to change fsck -t $FSTYP to fsck.$FSTYP. > I will resend the patch without this change. Thanks, that makes sense to me. Just wanted to make sure we weren't masking some other problem by working around it in xfstests ... -Eric > Amir. From achender@linux.vnet.ibm.com Wed Jun 1 15:51:00 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p51KoxdQ146012 for ; Wed, 1 Jun 2011 15:51:00 -0500 X-ASG-Debug-ID: 1306961458-5bf9031f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e9.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1786C1ED2D7B for ; Wed, 1 Jun 2011 13:50:58 -0700 (PDT) Received: from e9.ny.us.ibm.com (e9.ny.us.ibm.com [32.97.182.139]) by cuda.sgi.com with ESMTP id xgbvrNczFa6FguFY for ; Wed, 01 Jun 2011 13:50:58 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay04.pok.ibm.com (d01relay04.pok.ibm.com [9.56.227.236]) by e9.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p51KKobW007453 for ; Wed, 1 Jun 2011 16:20:50 -0400 Received: from d01av01.pok.ibm.com (d01av01.pok.ibm.com [9.56.224.215]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p51KotAW063100 for ; Wed, 1 Jun 2011 16:50:55 -0400 Received: from d01av01.pok.ibm.com (loopback [127.0.0.1]) by d01av01.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p51KosQv009814 for ; Wed, 1 Jun 2011 16:50:55 -0400 Received: from [9.48.102.246] (sig-9-48-102-246.mts.ibm.com [9.48.102.246]) by d01av01.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p51KooDo009584; Wed, 1 Jun 2011 16:50:51 -0400 Message-ID: <4DE6A621.7040206@linux.vnet.ibm.com> Date: Wed, 01 Jun 2011 13:50:41 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Yongqiang Yang CC: Ext4 Developers List , xfs-oss , Dave Chinner , "Ted Ts'o" X-ASG-Orig-Subj: Re: xfsprogs: Fix for xfstest 252 hang on ext4 Subject: Re: xfsprogs: Fix for xfstest 252 hang on ext4 References: <4DDAC4EF.1050702@linux.vnet.ibm.com> <4DDB1A0C.5030502@linux.vnet.ibm.com> <4DE50881.90401@linux.vnet.ibm.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Barracuda-Connect: e9.ny.us.ibm.com[32.97.182.139] X-Barracuda-Start-Time: 1306961459 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 5/31/2011 6:58 PM, Yongqiang Yang wrote: > On Tue, May 31, 2011 at 11:25 PM, Allison Henderson > wrote: >> On 5/23/2011 7:38 PM, Allison Henderson wrote: >>> >>> On 5/23/2011 6:16 PM, Yongqiang Yang wrote: >>>> >>>> On Tue, May 24, 2011 at 4:34 AM, Allison Henderson >>>> wrote: >>>>> >>>>> Hi all, >>>>> >>>>> While trying to add more punch hole tests to xfstest, I found that >>>>> test 252 hangs on ext4 due to a loop in xfsprogs that does not exit. >>>>> XFS gets out of this loop because there is logic in the loop that >>>>> looks for the last extent flag and breaks out. But it looks like ext4 >>>>> does not return a last extent when the file has a hole at the end. I >>>>> am not sure if this is the correct behavior or not, so I will copy >>>>> the ext4 folks on this too. Below is a copy of the fix for xfsprogs: >>>> >>>> Hi there, >>>> >>>> What's blocksize of the tested ext4? For now, ext4 returns >>>> LAST_EXTENT if the logical offset covered by the extent is greater >>>> than file size, so if there is a hole at the end, no last extent is >>>> returned. Thx! >>>> >>>> Yongqiang. >>> >>> Hi there, >>> >>> The block size I've been using is 4096. As long as that behavior is >>> expected, I think the test will be ok with just the xfsprogs fix, >>> though. Thx! >>> >>> Allison Henderson >>> >>>> >>>>> >>>>> diff --git a/io/fiemap.c b/io/fiemap.c >>>>> index fa990cc..81fc92c 100644 >>>>> --- a/io/fiemap.c >>>>> +++ b/io/fiemap.c >>>>> @@ -246,7 +246,7 @@ fiemap_f( >>>>> flg_w, _("FLAGS")); >>>>> } >>>>> >>>>> - while (!last&& ((cur_extent + 1) != max_extents)) { >>>>> + while (!last&& (cur_extent<= max_extents)) { >>>>> if (max_extents) >>>>> num_extents = min(num_extents, >>>>> max_extents - (cur_extent + 1)); >>>>> >>>>> >>>>> It looks like the loop enters with last=0, cur_extents=0, and >>>>> max_extents = 0, and on the first iteration cur_extents get set to 2, >>>>> so we dont see ((cur_extent + 1) == max_extents for a very long time. >>>>> I doubt the logic was meant to work that way, so this patch should >>>>> fix it, but I wanted to make sure that the fiemap for ext4 is working >>>>> as intended too. Feed back appreciated! Thx all! >>>>> >>>>> Allison Henderson >>>>> -- >>>>> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in >>>>> the body of a message to majordomo@vger.kernel.org >>>>> More majordomo info at http://vger.kernel.org/majordomo-info.html >>>>> >>>> >>>> >>>> >>> >> >> >>>> Hi all, >>>> >>>> I haven't heard much back on this patch, so Im just poking this >>>> thread to make sure it doesn't get forgotten. I have some patches >>>> out there for punch hole, and I'm currently looking at fixing up >>>> some older punch hole tests in the dmapi code, but they wont do much >>>> good for ext4 with out this fix. If I could get a quick peek from >>>> some one on the xfs list for this patch, that would be much >>>> appreciated. Thx all! >>> >>> If ext4 is not setting the last extent flag on the last extent then >>> that's an ext4 bug that the test has detected, right? And so you >>> should be fixing ext4 rather than modifying the test to hide the >>> different behaviour? >>> >>> Cheer >>> >>> -- Dave Chinner david@fromorbit.com >> >> Hi All, >> >> Sorry, I should have poked the thread with Yongqiang's response, so I will >> move the dialog into this thread. At the moment, it sounds like the fiemap >> for ext4 is working as intended. Yongqiang, do you agree that the fiemap >> for ext4 should be changed? I think you are more familiar with this part of > Yes, I agree. ext4 should return LAST extent. I am thinking if we > can find a new solution collecting extents. > > Maybe we can insert delayed extents into extent tree. This way fiemap > will be simpler and much more efficient. > > I would like to throw out the proposal inserting delayed-extents into > extent tree. What will it bring? AFAIK it will bring: > 1. We need to down i_data_sem in delayed write-path to insert > delayed-extents into the tree without journaling it. > > 2. When we come to block allocation, we can convert delayed-extents to > normal extents. > > There is a problem that the solution can be only used in ordered mode. > So what are your opinions? > > Yongqiang. Hi All, Well, I am not yet familiar with how the code for ordered mode works, so I may not be much help here, but I do think that if we could get it to work, it would help simplify a lot of things including fiemap and punch hole. I know that the earlier versions of punch hole were a little complicated because of the different mechanisms needed to identify mapped extents, delayed extents and holes. Eventually what we did was to flush out the data in the region to be punched out in order to avoid race conditions, and also to simplify the logic. This has introduced some problems in some of the existing xfstests punch hole tests, because the tests want to see a hole in unwritten extents instead of written extents. I was working on some optimization patches to avoid this, but if this proposal is put in place, I think I could optimize that fix a lot. And I know the fiemap routines would get simpler sense they would only have to deal with the extent tree. If we decide to do what you propose, I will wait on doing any punch hole or fiemap patches to take advantage of that. I'll poke around with the modes too to see if there's any thing we can do to get around that problem. Thx! Allison Henderson > >> the code than I am, and I just want to make sure we find a solution that >> everyone is happy with. Thx! >> >> Allison Henderson >> >> >> >> >> >>> _______________________________________________ >>> xfs mailing list >>> xfs@oss.sgi.com >>> http://oss.sgi.com/mailman/listinfo/xfs >> >> > > > From achender@linux.vnet.ibm.com Wed Jun 1 18:01:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_64,J_CHICKENPOX_66,J_CHICKENPOX_92 autolearn=no version=3.4.0-r929098 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 p51N1VS5153963 for ; Wed, 1 Jun 2011 18:01:32 -0500 X-ASG-Debug-ID: 1306969290-09e401a00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e2.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1D1B8D6CC77 for ; Wed, 1 Jun 2011 16:01:30 -0700 (PDT) Received: from e2.ny.us.ibm.com (e2.ny.us.ibm.com [32.97.182.142]) by cuda.sgi.com with ESMTP id BojHjC2MrIrffuhY for ; Wed, 01 Jun 2011 16:01:30 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay06.pok.ibm.com (d01relay06.pok.ibm.com [9.56.227.116]) by e2.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p51MfJ8M005305 for ; Wed, 1 Jun 2011 18:41:19 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay06.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p51N1T161413218 for ; Wed, 1 Jun 2011 19:01:29 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p51N1TFN004151 for ; Wed, 1 Jun 2011 19:01:29 -0400 Received: from [9.48.102.246] (sig-9-48-102-246.mts.ibm.com [9.48.102.246]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p51N1S0f004044; Wed, 1 Jun 2011 19:01:28 -0400 Message-ID: <4DE6C4BE.5030805@linux.vnet.ibm.com> Date: Wed, 01 Jun 2011 16:01:18 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: xfs-oss CC: Dave Chinner X-ASG-Orig-Subj: Re: [XFSTEST Add Fallocate Punch Hole Tests 1/3 v4] Add Punch Hole to FSX Subject: Re: [XFSTEST Add Fallocate Punch Hole Tests 1/3 v4] Add Punch Hole to FSX References: <4DDDBC34.7050809@linux.vnet.ibm.com> In-Reply-To: <4DDDBC34.7050809@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e2.ny.us.ibm.com[32.97.182.142] X-Barracuda-Start-Time: 1306969291 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 5/25/2011 7:34 PM, Allison Henderson wrote: > This patch adds punch hole tests to the fsx stress test. > > Signed-off-by: Allison Henderson > > v1 -> v2: > Corrections to the Makefile have been backed out. > Those corrections have been addressed in the > "xfstests: clean up fallocate configuration tests" > patch > > The punch hole tests can be disabled with the > -H flag, and will also be disabled if it is > detected that the filesystem does not support > punch hole > > v2 -> v4 > Punch hole tests and functionality tests have been moved > into their own functions. Existing dofallocate routine > has been renamed to do_preallocate. > --- > :100644 100755 fe072d3... a55b6f7... M ltp/fsx.c > ltp/fsx.c | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------- > 1 files changed, 122 insertions(+), 18 deletions(-) > > diff --git a/ltp/fsx.c b/ltp/fsx.c > old mode 100644 > new mode 100755 > index fe072d3..a55b6f7 > --- a/ltp/fsx.c > +++ b/ltp/fsx.c > @@ -69,6 +69,7 @@ int logcount = 0; /* total ops */ > #define OP_MAPWRITE 6 > #define OP_SKIPPED 7 > #define OP_FALLOCATE 8 > +#define OP_PUNCH_HOLE 9 > > #undef PAGE_SIZE > #define PAGE_SIZE getpagesize() > @@ -110,6 +111,7 @@ int randomoplen = 1; /* -O flag disables it */ > int seed = 1; /* -S flag */ > int mapped_writes = 1; /* -W flag disables */ > int fallocate_calls = 1; /* -F flag disables */ > +int punch_hole_calls = 1; /* -H flag disables */ > int mapped_reads = 1; /* -R flag disables it */ > int fsxgoodfd = 0; > int o_direct; /* -Z */ > @@ -279,6 +281,14 @@ logdump(void) > badoff< lp->args[0] + lp->args[1]) > prt("\t******FFFF"); > break; > + case OP_PUNCH_HOLE: > + prt("PUNCH HOLE\t0x%x thru 0x%x\t(0x%x bytes)", > + lp->args[0], lp->args[0] + lp->args[1] - 1, > + lp->args[1]); > + if (badoff>= lp->args[0]&& badoff< > + lp->args[0] + lp->args[1]) > + prt("\t******PPPP"); > + break; > case OP_SKIPPED: > prt("SKIPPED (no operation)"); > break; > @@ -784,10 +794,67 @@ dotruncate(unsigned size) > } > } > > +#ifdef FALLOC_FL_PUNCH_HOLE > +void > +do_punch_hole(unsigned offset, unsigned length) > +{ > + unsigned end_offset; > + int max_offset = 0; > + int max_len = 0; > + int mode = FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE; > + > + if (length == 0) { > + if (!quiet&& testcalls> simulatedopcount) > + prt("skipping zero length punch hole\n"); > + log4(OP_SKIPPED, OP_PUNCH_HOLE, offset, length); > + return; > + } > + > + if (file_size<= (loff_t)offset) { > + if (!quiet&& testcalls> simulatedopcount) > + prt("skipping hole punch off the end of the file\n"); > + log4(OP_SKIPPED, OP_PUNCH_HOLE, offset, length); > + return; > + } > + > + end_offset = offset + length; > + > + log4(OP_PUNCH_HOLE, offset, length, 0); > + > + if (testcalls<= simulatedopcount) > + return; > + > + if ((progressinterval&& testcalls % progressinterval == 0) || > + (debug&& (monitorstart == -1 || monitorend == -1 || > + end_offset<= monitorend))) { > + prt("%lu punch\tfrom 0x%x to 0x%x, (0x%x bytes)\n", testcalls, > + offset, offset+length, length); > + } > + if (fallocate(fd, mode, (loff_t)offset, (loff_t)length) == -1) { > + prt("%punch hole: %x to %x\n", offset, length); > + prterr("do_punch_hole: fallocate"); > + report_failure(161); > + } > + > + > + max_offset = offset< file_size ? offset : file_size; > + max_len = max_offset + length<= file_size ? length : > + file_size - max_offset; > + memset(good_buf + max_offset, '\0', max_len); > +} > + > +#else > +void > +do_punch_hole(unsigned offset, unsigned length) > +{ > + return; > +} > +#endif > + > #ifdef FALLOCATE > /* fallocate is basically a no-op unless extending, then a lot like a truncate */ > void > -dofallocate(unsigned offset, unsigned length) > +do_preallocate(unsigned offset, unsigned length) > { > unsigned end_offset; > int keep_size; > @@ -831,13 +898,13 @@ dofallocate(unsigned offset, unsigned length) > 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"); > + prterr("do_preallocate: fallocate"); > report_failure(161); > } > } > #else > void > -dofallocate(unsigned offset, unsigned length) > +do_preallocate(unsigned offset, unsigned length) > { > return; > } > @@ -895,8 +962,7 @@ test(void) > unsigned long offset; > unsigned long size = maxoplen; > unsigned long rv = random(); > - unsigned long op = rv % (3 + !lite + mapped_writes + fallocate_calls); > - > + unsigned long op = rv % (3 + !lite + mapped_writes + fallocate_calls + punch_hole_calls); > /* turn off the map read if necessary */ > > if (op == 2&& !mapped_reads) > @@ -924,6 +990,7 @@ test(void) > * TRUNCATE: op = - 3 > * MAPWRITE: op = 3 4 > * FALLOCATE: op = - 5 > + * PUNCH HOLE: op = - 6 > */ > if (lite ? 0 : op == 3&& (style& 1) == 0) /* vanilla truncate? */ > dotruncate(random() % maxfilelen); > @@ -941,7 +1008,12 @@ test(void) > offset %= maxfilelen; > if (offset + size> maxfilelen) > size = maxfilelen - offset; > - dofallocate(offset, size); > + do_preallocate(offset, size); > + } else if (op == 6) { > + offset %= maxfilelen; > + if (offset + size> maxfilelen) > + size = maxfilelen - offset; > + do_punch_hole(offset, size); > } else if (op == 1 || op == (lite ? 3 : 4)) { > /* write / mapwrite */ > offset %= maxfilelen; > @@ -1013,6 +1085,9 @@ usage(void) > #ifdef FALLOCATE > " -F: Do not use fallocate (preallocation) calls\n" > #endif > +#ifdef FALLOC_FL_PUNCH_HOLE > +" -H: Do not use punch hole 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\ > @@ -1161,6 +1236,41 @@ int aio_rw(int rw, int fd, char *buf, unsigned len, unsigned offset) > > #endif > > +void > +test_fallocate() > +{ > +#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); > + } > + } > +#else /* ! FALLOCATE */ > + fallocate_calls = 0; > +#endif > +} > + > +void > +test_punch_hole() > +{ > +#ifdef FALLOC_FL_PUNCH_HOLE > + if (!lite&& punch_hole_calls) { > + if (fallocate(fd, 0, 0, > + FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)&& > + errno == EOPNOTSUPP) { > + > + warn("main: filesystem does not support fallocate punch hole, disabling"); > + punch_hole_calls = 0; > + } > + } > +#else /* ! PUNCH HOLE */ > + punch_hole_calls = 0; > +#endif > +} > + > int > main(int argc, char **argv) > { > @@ -1179,7 +1289,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:FLN:OP:RS:WZ")) > + while ((ch = getopt(argc, argv, "b:c:dfl:m:no:p:qr:s:t:w:xyAD:FHLN:OP:RS:WZ")) > != EOF) > switch (ch) { > case 'b': > @@ -1276,6 +1386,9 @@ main(int argc, char **argv) > case 'F': > fallocate_calls = 0; > break; > + case 'H': > + punch_hole_calls = 0; > + break; > case 'L': > lite = 1; > break; > @@ -1421,17 +1534,8 @@ 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); > - } > -#else /* ! FALLOCATE */ > - fallocate_calls = 0; > -#endif > + test_fallocate(); > + test_punch_hole(); > > while (numops == -1 || numops--) > test(); Hi all, I just wanted to poke this patch set before too much time gets away. Most of the changes that happened between v3 and v4 were discussed in the previous threads. I updated my xfstest recently and noticed that some activity in this code has caused the patch not to apply, so I may need to send out an update, but if anyone has any more comments please let me know so I can add them in. Thx! Allison Henderson From achender@linux.vnet.ibm.com Wed Jun 1 18:01:54 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p51N1sNK153994 for ; Wed, 1 Jun 2011 18:01:54 -0500 X-ASG-Debug-ID: 1306969313-7b7d021d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e9.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5A5111ED3430 for ; Wed, 1 Jun 2011 16:01:53 -0700 (PDT) Received: from e9.ny.us.ibm.com (e9.ny.us.ibm.com [32.97.182.139]) by cuda.sgi.com with ESMTP id 8cxwErIPug7enW9K for ; Wed, 01 Jun 2011 16:01:53 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay05.pok.ibm.com (d01relay05.pok.ibm.com [9.56.227.237]) by e9.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p51MVlpG024507 for ; Wed, 1 Jun 2011 18:31:47 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay05.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p51N1raG118424 for ; Wed, 1 Jun 2011 19:01:53 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p51N1qvA005731 for ; Wed, 1 Jun 2011 19:01:53 -0400 Received: from [9.48.102.246] (sig-9-48-102-246.mts.ibm.com [9.48.102.246]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p51N1pwP005695; Wed, 1 Jun 2011 19:01:52 -0400 Message-ID: <4DE6C4D6.9080305@linux.vnet.ibm.com> Date: Wed, 01 Jun 2011 16:01:42 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: xfs-oss CC: Dave Chinner X-ASG-Orig-Subj: Re: [XFSTEST Add Fallocate Punch Hole Tests 2/3 v4] Expand 252 punch hole test to cover additional corner cases Subject: Re: [XFSTEST Add Fallocate Punch Hole Tests 2/3 v4] Expand 252 punch hole test to cover additional corner cases References: <4DDDBC3F.9080704@linux.vnet.ibm.com> In-Reply-To: <4DDDBC3F.9080704@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e9.ny.us.ibm.com[32.97.182.139] X-Barracuda-Start-Time: 1306969314 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 5/25/2011 7:34 PM, Allison Henderson wrote: > This patch adds additional punch hole tests to 252 > that were used to test ext4 punch hole. The _test_generic_punch > routine has been modified to accept two new flags: > > -k To keep the test file between tests. > This will test the handling of existing holes > > -d To not sync the file between tests. > This will test the handling of delayed extents > > Four new corner cases have also been added to the routine: > 14. data -> hole @ EOF > 15. data -> hole @ 0 > 16. data -> cache cold ->hole > 17. data -> hole in single block file > > > Signed-off-by: Allison Henderson > > --- > :100755 100755 dfdf3f8... 5efa243... M 252 > :100644 100644 cd8e4b4... 930c924... M 252.out > :100644 100644 e2da5d8... ddf63b0... M common.punch > 252 | 10 +++ > 252.out | 192 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > common.punch | 150 ++++++++++++++++++++++++++++++++++++++------- > 3 files changed, 330 insertions(+), 22 deletions(-) > > diff --git a/252 b/252 > index dfdf3f8..5efa243 100755 > --- a/252 > +++ b/252 > @@ -52,6 +52,16 @@ _require_xfs_io_fiemap > > testfile=$TEST_DIR/252.$$ > > +# Standard punch hole tests > _test_generic_punch falloc fpunch fpunch fiemap _filter_fiemap $testfile -F > > +# Delayed allocation punch hole tests > +_test_generic_punch -d falloc fpunch fpunch fiemap _filter_fiemap $testfile -F > + > +# Multi hole punch tests > +_test_generic_punch -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F > + > +# Delayed allocation multi punch hole tests > +_test_generic_punch -d -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F > + > status=0 ; exit > diff --git a/252.out b/252.out > index cd8e4b4..930c924 100644 > --- a/252.out > +++ b/252.out > @@ -45,3 +45,195 @@ QA output created by 252 > 0: [0..7]: data > 1: [8..31]: hole > 2: [32..39]: data > + 14. data -> hole @ EOF > +0: [0..23]: data > +1: [24..39]: hole > + 15. data -> hole @ 0 > +0: [0..15]: hole > +1: [16..39]: data > + 16. data -> cache cold ->hole > +0: [0..15]: hole > +1: [16..39]: data > + 17. data -> hole in single block file > +0: [0..7]: data > + 1. into a hole > + 2. into allocated space > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 3. into unwritten space > +0: [0..7]: unwritten > +1: [8..23]: hole > +2: [24..39]: unwritten > + 4. hole -> data > +0: [0..23]: hole > +1: [24..31]: data > +2: [32..39]: hole > + 5. hole -> unwritten > +0: [0..23]: hole > +1: [24..31]: unwritten > +2: [32..39]: hole > + 6. data -> hole > +0: [0..7]: data > +1: [8..39]: hole > + 7. data -> unwritten > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..31]: unwritten > +3: [32..39]: hole > + 8. unwritten -> hole > +0: [0..7]: unwritten > +1: [8..39]: hole > + 9. unwritten -> data > +0: [0..7]: unwritten > +1: [8..23]: hole > +2: [24..31]: data > +3: [32..39]: hole > + 10. hole -> data -> hole > + 11. data -> hole -> data > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 12. unwritten -> data -> unwritten > +0: [0..7]: unwritten > +1: [8..31]: hole > +2: [32..39]: unwritten > + 13. data -> unwritten -> data > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 14. data -> hole @ EOF > +0: [0..23]: data > +1: [24..39]: hole > + 15. data -> hole @ 0 > +0: [0..15]: hole > +1: [16..39]: data > + 16. data -> cache cold ->hole > +0: [0..15]: hole > +1: [16..39]: data > + 17. data -> hole in single block file > +0: [0..7]: data > + 1. into a hole > +0: [0..7]: data > +1: [8..39]: hole > + 2. into allocated space > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 3. into unwritten space > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 4. hole -> data > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 5. hole -> unwritten > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 6. data -> hole > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 7. data -> unwritten > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 8. unwritten -> hole > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 9. unwritten -> data > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 10. hole -> data -> hole > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 11. data -> hole -> data > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 12. unwritten -> data -> unwritten > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 13. data -> unwritten -> data > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 14. data -> hole @ EOF > +0: [0..23]: data > +1: [24..39]: hole > + 15. data -> hole @ 0 > +0: [0..15]: hole > +1: [16..39]: data > + 16. data -> cache cold ->hole > +0: [0..15]: hole > +1: [16..39]: data > + 17. data -> hole in single block file > +0: [0..7]: data > + 1. into a hole > +0: [0..7]: data > +1: [8..39]: hole > + 2. into allocated space > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 3. into unwritten space > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 4. hole -> data > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 5. hole -> unwritten > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 6. data -> hole > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 7. data -> unwritten > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 8. unwritten -> hole > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 9. unwritten -> data > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 10. hole -> data -> hole > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 11. data -> hole -> data > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 12. unwritten -> data -> unwritten > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 13. data -> unwritten -> data > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 14. data -> hole @ EOF > +0: [0..23]: data > +1: [24..39]: hole > + 15. data -> hole @ 0 > +0: [0..15]: hole > +1: [16..39]: data > + 16. data -> cache cold ->hole > +0: [0..15]: hole > +1: [16..39]: data > + 17. data -> hole in single block file > +0: [0..7]: data > diff --git a/common.punch b/common.punch > index e2da5d8..ddf63b0 100644 > --- a/common.punch > +++ b/common.punch > @@ -256,8 +256,39 @@ die_now() > # 11. data -> hole -> data > # 12. unwritten -> data -> unwritten > # 13. data -> unwritten -> data > +# 14. data -> hole @ EOF > +# 15. data -> hole @ 0 > +# 16. data -> cache cold ->hole > +# 17. data -> hole in single block file > +# > +# Test file is removed, created and sync'd between tests. > +# > +# Use -k flag to keep the file between tests. This will > +# test the handling of pre-existing holes. > +# > +# Use the -d flag to not sync the file between tests. > +# This will test the handling of delayed extents > +# > _test_generic_punch() > { > + > + remove_testfile=1 > + sync_cmd="-c fsync" > + OPTIND=1 > + while getopts 'dk' OPTION > + do > + case $OPTION in > + k) remove_testfile= > + ;; > + d) sync_cmd= > + ;; > + ?) echo Invalid flag > + exit 1 > + ;; > + esac > + done > + shift $(($OPTIND - 1)) > + > alloc_cmd=$1 > punch_cmd=$2 > zero_cmd=$3 #if not testing zero just set to punch > @@ -267,22 +298,28 @@ _test_generic_punch() > xfs_io_opt=$7 #needs to be -F if not testing xfs > > echo " 1. into a hole" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > -c "$zero_cmd 4k 8k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > > echo " 2. into allocated space" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > - -c "pwrite 0 20k" -c "fsync" \ > + -c "pwrite 0 20k" $sync_cmd \ > -c "$zero_cmd 4k 8k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > > echo " 3. into unwritten space" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > -c "$alloc_cmd 0 20k" \ > -c "$zero_cmd 4k 8k" \ > @@ -290,15 +327,19 @@ _test_generic_punch() > [ $? -ne 0 ]&& die_now > > echo " 4. hole -> data" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > - -c "pwrite 8k 8k" -c "fsync" \ > + -c "pwrite 8k 8k" $sync_cmd \ > -c "$zero_cmd 4k 8k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > > echo " 5. hole -> unwritten" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > -c "$alloc_cmd 8k 8k" \ > -c "$zero_cmd 4k 8k" \ > @@ -306,24 +347,30 @@ _test_generic_punch() > [ $? -ne 0 ]&& die_now > > echo " 6. data -> hole" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > - -c "pwrite 0 8k" -c "fsync" \ > + -c "pwrite 0 8k" $sync_cmd \ > -c "$zero_cmd 4k 8k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > > echo " 7. data -> unwritten" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > - -c "pwrite 0 8k" -c "fsync" \ > + -c "pwrite 0 8k" $sync_cmd \ > -c "$alloc_cmd 8k 8k" \ > -c "$zero_cmd 4k 8k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > > echo " 8. unwritten -> hole" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > -c "$alloc_cmd 0 8k" \ > -c "$zero_cmd 4k 8k" \ > @@ -331,49 +378,108 @@ _test_generic_punch() > [ $? -ne 0 ]&& die_now > > echo " 9. unwritten -> data" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > -c "$alloc_cmd 0 8k" \ > - -c "pwrite 8k 8k" -c "fsync" \ > + -c "pwrite 8k 8k" $sync_cmd \ > -c "$zero_cmd 4k 8k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > > echo " 10. hole -> data -> hole" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > - -c "pwrite 8k 4k" -c "fsync" \ > + -c "pwrite 8k 4k" $sync_cmd \ > -c "$zero_cmd 4k 12k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > > echo " 11. data -> hole -> data" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > -c "$alloc_cmd 0 20k" \ > -c "pwrite 0 8k" \ > - -c "pwrite 12k 8k" -c "fsync" \ > + -c "pwrite 12k 8k" $sync_cmd \ > -c "$punch_cmd 8k 4k" \ > -c "$zero_cmd 4k 12k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > > echo " 12. unwritten -> data -> unwritten" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > -c "$alloc_cmd 0 20k" \ > - -c "pwrite 8k 4k" -c "fsync" \ > + -c "pwrite 8k 4k" $sync_cmd \ > -c "$zero_cmd 4k 12k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now Hi all, I had some questions about test 12. The output for this test is: 12. unwritten -> data -> unwritten 0: [0..7]: unwritten 1: [8..31]: hole 2: [32..39]: unwritten But ext4 gets data extents here instead of unwritten extents (on the first test with the fsync flag on). I did some investigating and it looks like the fsync command causes the extents to be written out before the punch hole operation even starts. So it makes sense to me that it should end up with data extents. Can someone explain why the golden output has unwritten extents here? Thx! Allison Henderson > > echo " 13. data -> unwritten -> data" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > -c "$alloc_cmd 0 20k" \ > - -c "pwrite 0k 8k" -c "fsync" \ > + -c "pwrite 0k 8k" $sync_cmd \ > -c "pwrite 12k 8k" -c "fsync" \ > -c "$zero_cmd 4k 12k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > + > + echo " 14. data -> hole @ EOF" > + rm -f $testfile > + $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > + -c "pwrite 0 20k" $sync_cmd \ > + -c "$zero_cmd 12k 8k" \ > + -c "$map_cmd -v" $testfile | $filter_cmd > + [ $? -ne 0 ]&& die_now > + > + echo " 15. data -> hole @ 0" > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > + $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > + -c "pwrite 0 20k" $sync_cmd \ > + -c "$zero_cmd 0k 8k" \ > + -c "$map_cmd -v" $testfile | $filter_cmd > + [ $? -ne 0 ]&& die_now > + > + echo " 16. data -> cache cold ->hole" > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + rm -f $testfile.2 > + else > + cp $testfile $testfile.2 > + fi > + $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > + -c "pwrite 8k 12k" -c "fsync" $testfile.2 \ > + > /dev/null > + $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > + -c "pwrite 0 20k" $sync_cmd \ > + -c "$zero_cmd 0k 8k" \ > + -c "fadvise -d" \ > + -c "$map_cmd -v" $testfile | $filter_cmd > + diff $testfile $testfile.2 > + [ $? -ne 0 ]&& die_now > + rm -f $testfile.2 > + > + echo " 17. data -> hole in single block file" > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > + block_size=`stat -f $TEST_DEV | grep "Block size" | cut -d " " -f3` > + $XFS_IO_PROG $xfs_io_opt -f -c "truncate $block_size" \ > + -c "pwrite 0 $block_size" $sync_cmd \ > + -c "$zero_cmd 128 128" \ > + -c "$map_cmd -v" $testfile | $filter_cmd > + [ $? -ne 0 ]&& die_now > + > } From achender@linux.vnet.ibm.com Wed Jun 1 18:02:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p51N2NfE154027 for ; Wed, 1 Jun 2011 18:02:24 -0500 X-ASG-Debug-ID: 1306969342-3d4c018d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e9.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8F6384958C4 for ; Wed, 1 Jun 2011 16:02:22 -0700 (PDT) Received: from e9.ny.us.ibm.com (e9.ny.us.ibm.com [32.97.182.139]) by cuda.sgi.com with ESMTP id yVhqZpEsz6P60dQr for ; Wed, 01 Jun 2011 16:02:22 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay04.pok.ibm.com (d01relay04.pok.ibm.com [9.56.227.236]) by e9.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p51MWGqG024587 for ; Wed, 1 Jun 2011 18:32:16 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p51N2Mov100512 for ; Wed, 1 Jun 2011 19:02:22 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p51N2LdE007518 for ; Wed, 1 Jun 2011 19:02:21 -0400 Received: from [9.48.102.246] (sig-9-48-102-246.mts.ibm.com [9.48.102.246]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p51N2JN6007462; Wed, 1 Jun 2011 19:02:19 -0400 Message-ID: <4DE6C4F2.7040706@linux.vnet.ibm.com> Date: Wed, 01 Jun 2011 16:02:10 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: xfs-oss , Dave Chinner X-ASG-Orig-Subj: Re: [XFSTEST Add Fallocate Punch Hole Tests 3/3 v4] Add ENOSPC Hole Punch Test Subject: Re: [XFSTEST Add Fallocate Punch Hole Tests 3/3 v4] Add ENOSPC Hole Punch Test References: <4DDDBC44.2070100@linux.vnet.ibm.com> In-Reply-To: <4DDDBC44.2070100@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e9.ny.us.ibm.com[32.97.182.139] X-Barracuda-Start-Time: 1306969343 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 5/25/2011 7:34 PM, Allison Henderson wrote: > This patch adds a test to 252 that tests that a hole can be punched even when the > disk is full. Reserved blocks should be used to allow a punch hole to proceed even > when there is not enough blocks to further fragment the file. To test this, the > file system is fragmented by punching holes in regular intervals and filling > the file system between punches. This will eventually force the file system to use > reserved blocks to proceed with the punch hole operation. > > Signed-off-by: Allison Henderson > --- > :100755 100755 5efa243... b5204fe... M 252 > :100644 100644 ddf63b0... fc6123c... M common.punch > 252 | 12 +++++++ > common.punch | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 107 insertions(+), 0 deletions(-) > > diff --git a/252 b/252 > index 5efa243..b5204fe 100755 > --- a/252 > +++ b/252 > @@ -49,6 +49,7 @@ _supported_os Linux > > _require_xfs_io_falloc_punch > _require_xfs_io_fiemap > +_require_scratch > > testfile=$TEST_DIR/252.$$ > > @@ -64,4 +65,15 @@ _test_generic_punch -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F > # Delayed allocation multi punch hole tests > _test_generic_punch -d -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F > > +# Test full filesystem hole punching. > +# Make a small file system to fill > +umount $SCRATCH_DEV&> /dev/null > +_scratch_mkfs_sized $(( 1024 * 1024 * 1024 ))&> /dev/null > +_scratch_mount > +# Test must be able to write files with non-root permissions > +chmod 777 $SCRATCH_MNT > + > +block_size=`stat -f $SCRATCH_DEV | grep "Block size" | cut -d " " -f3` > +_test_full_fs_punch $(( $block_size * 2 )) $block_size 500 $SCRATCH_MNT/252.$$ > + > status=0 ; exit > diff --git a/common.punch b/common.punch > index ddf63b0..fc6123c 100644 > --- a/common.punch > +++ b/common.punch > @@ -481,5 +481,100 @@ _test_generic_punch() > -c "$zero_cmd 128 128" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > +} > + > +# _fill_fs() > +# > +# Fills a file system by repeatedly creating files in the given folder > +# starting with the given file size. Files are reduced in size when > +# they can no longer fit untill no more files can be created. > +# > +# This routine is used by _test_full_fs_punch to test that a hole may > +# still be punched when the disk is full by borrowing reserved blocks. > +# All files are created as a non root user to prevent reserved blocks > +# from being consumed. > +# > +_fill_fs() { > + local file_size=$1 > + local dir=$2 > + local file_count=1 > + > + if [ $# -ne 2 ] > + then > + echo "USAGE: $0 filesize dir" > + exit 1 > + fi > + > + mkdir -p $dir&> /dev/null > + if [[ $? != 0 ]] ; then > + return 0 > + fi > + chmod 777 $dir > + > + rc=0 > + while [ $file_size -gt 0 -a $rc == 0 ] > + do > + # This part must not be done as root or > + # reserved blocks will be consumed > + sudo -u nobody $XFS_IO_PROG -F -f -c "pwrite 0 $file_size" $dir/$file_count.bin&> /dev/null Hi all, This is the ENOSPC test that we used on the ext4 punch hole, but modified to use the xfsprogs facilities. I notice the test takes a lot longer to run after doing this. If I replace the above command with the original code: sudo -u nobody dd if=/dev/zero of=$dir/$file_count.bin bs=$file_size count=1 &> /dev/null it runs a lot faster (takes off almost 15 minutes). Is there anything we can do to improve the xfsprogs command? Thx! Allison Henderson > + rc=$? > + > + # If there was no room to make the file, > + # and the file size can still be made smaller, > + # then divide it in half, and keep going > + if [ $file_size -gt 1 -a $rc != 0 ] > + then > + file_size=$(( $file_size / 2 )) > + rc=0 > + fi > + file_count=$(( $file_count + 1 )) > + > + done > +} > > +# _test_full_fs_punch() > +# > +# This function will test that a hole may be punched > +# even when the file system is full. Reserved blocks > +# should be used to allow a punch hole to proceed even > +# when there is not enough blocks to further fragment the > +# file. To test this, this function will fragment the file > +# system by punching holes in regular intervals and filling > +# the file system between punches. > +# > +_test_full_fs_punch() > +{ > + hole_len=$1 # The length of the holes to punch > + hole_interval=$2 # The interval between the holes > + iterations=$3 # The number of holes to punch > + file_name=$4 # File to punch holes in > + file_len=$(( $(( $hole_len + $hole_interval )) * $iterations )) > + path=`dirname $file_name` > + hole_offset=0 > + > + rm -f $file_name&> /dev/null > + > + $XFS_IO_PROG -F -f -c "pwrite 0 $file_len" \ > + -c "fsync" $file_name&> /dev/null > + chmod 666 $file_name > + > + _fill_fs $(( 1024 * 1024 * 1024 )) $path/fill > + > + for (( i=0; i<$iterations; i++ )) > + do > + # This part must not be done as root in order to > + # test that reserved blocks are used when needed > + sudo -u nobody $XFS_IO_PROG -F -f -c "fpunch $hole_offset $hole_len" $file_name > + rc=$? > + if [[ $? != 0 ]] ; then > + echo Punch hole failed > + break > + fi > + > + hole_offset=$(( $hole_offset + $hole_len + $hole_interval )) > + > + _fill_fs $hole_len $path/fill.$i > + > + done > } > + From david@fromorbit.com Wed Jun 1 18:28:10 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_62,J_CHICKENPOX_65,J_CHICKENPOX_66 autolearn=no version=3.4.0-r929098 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 p51NSAZG154970 for ; Wed, 1 Jun 2011 18:28:10 -0500 X-ASG-Debug-ID: 1306970887-3d4b02c40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 65C07495A2E for ; Wed, 1 Jun 2011 16:28:08 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id ZFl4AYWiyRuY7tDs for ; Wed, 01 Jun 2011 16:28:08 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuoEADXK5k15LCoegWdsb2JhbABFDpgajhcVAQEWJiXHUg6DCQSDBQSZRoZO Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail04.adl6.internode.on.net with ESMTP; 02 Jun 2011 08:58:06 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QRupY-0006l8-Lk; Thu, 02 Jun 2011 09:28:04 +1000 Date: Thu, 2 Jun 2011 09:28:04 +1000 From: Dave Chinner To: amir73il@users.sourceforge.net Cc: xfs@oss.sgi.com, sandeen@redhat.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Amir Goldstein X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Message-ID: <20110601232804.GL32466@dastard> References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1306970889 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 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.2.65337 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 On Wed, Jun 01, 2011 at 03:56:52PM +0300, amir73il@users.sourceforge.net wrote: > From: Amir Goldstein > > From: Amir Goldstein > > blkid knows to identify the ext4dev FSTYP of a partition that was > formatted with mkfs.ext4dev. > quota tools and various util-linux utils are also aware of ext4dev, > so ext4dev shares the same capabilities as ext4. > > Signed-off-by: Amir Goldstein > Tested-by: Sergey Ivanov > --- > ext4dev is used to test experimental ext4 code in mutual existance > with production ext4 code on the same system. > > Specifically, ext4 snapshots code is available for testing as a > stand-alone ext4dev module for Fedora 15 and Ubuntu 11.4 > (see http://next3.sf.net). > > v1 -> v2: > - undo change of fsck -t $FSTYP to fsck.$FSTYP > > common.defrag | 2 +- > common.quota | 4 ++-- > common.rc | 10 +++++----- > 3 files changed, 8 insertions(+), 8 deletions(-) > > diff --git a/common.defrag b/common.defrag > index 1bcf01d..4850803 100644 > --- a/common.defrag > +++ b/common.defrag > @@ -26,7 +26,7 @@ _require_defrag() > xfs) > DEFRAG_PROG=/usr/sbin/xfs_fsr > ;; > - ext4) > + ext4|ext4dev) > DEFRAG_PROG=/usr/bin/e4defrag > ;; > *) > diff --git a/common.quota b/common.quota > index 3c87ce1..b6d5f16 100644 > --- a/common.quota > +++ b/common.quota > @@ -29,7 +29,7 @@ _require_quota() > [ -n $QUOTA_PROG ] || _notrun "Quota user tools not installed" > > case $FSTYP in > - ext2|ext3|ext4|reiserfs) > + ext2|ext3|ext4|ext4dev|reiserfs) > if [ ! -d /proc/sys/fs/quota ]; then > _notrun "Installed kernel does not support quotas" > fi > @@ -237,7 +237,7 @@ _check_quota_usage() > # Sync to get delalloc to disk > sync > VFS_QUOTA=0 > - if [ $FSTYP = "ext2" -o $FSTYP = "ext3" -o $FSTYP = "ext4" -o $FSTYP = "reiserfs" ]; then > + if [ $FSTYP = "ext2" -o $FSTYP = "ext3" -o $FSTYP = "ext4" -o $FSTYP = "ext4dev" -o $FSTYP = "reiserfs" ]; then > VFS_QUOTA=1 > quotaon -f -u -g $SCRATCH_MNT 2>/dev/null > fi Perhaps this should be changes to a case statement? Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Jun 1 18:37:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p51Nb65v155287 for ; Wed, 1 Jun 2011 18:37:06 -0500 X-ASG-Debug-ID: 1306971424-221b02180000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D63C015DA73D for ; Wed, 1 Jun 2011 16:37:04 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id TD04AxuFan6eYecZ for ; Wed, 01 Jun 2011 16:37:04 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlwDADXK5k15LCoegWdsb2JhbABTpjEVAQEWJiXHUg6GEgSgFA Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail04.adl6.internode.on.net with ESMTP; 02 Jun 2011 09:07:03 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QRuyE-0006mK-6q; Thu, 02 Jun 2011 09:37:02 +1000 Date: Thu, 2 Jun 2011 09:37:02 +1000 From: Dave Chinner To: Michael Weissenbacher Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfssyncd and disk spin down Subject: Re: xfssyncd and disk spin down Message-ID: <20110601233702.GJ561@dastard> References: <20101227140750.GB24828@dastard> <20101227171939.GA7759@pandora.simplex.ro> <20101231001323.GD15179@dastard> <20110120100143.GA2007@peter.simplex.ro> <20110120234310.GV16267@dastard> <20110210204254.GA10451@peter.simplex.ro> <20110210221851.GG2559@dastard> <4DE5064D.1010203@dermichi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DE5064D.1010203@dermichi.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1306971425 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65338 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 31, 2011 at 05:16:29PM +0200, Michael Weissenbacher wrote: > Brian wrote: > > > > Can anyone please comment if this bug was ever fixed? > > > > I have searched and see no further talk about this. > > > > echo 720000 > /proc/sys/fs/xfs/xfssyncd_centisecs allows a drive to sleep more > > often, but still is impacted by this. > > > > Thanks! > > > AFAICT nothing has changed in this regard. I sill see the same behavior > with kernel 2.6.39. Thanks to this thread i found out about the problems > related to accumulating head unloads which i was able to mitigate by > setting xfssyncd_centisecs to a higher value. commit fd074841cfe01b006465fb9388091012585e8dfb Author: Dave Chinner Date: Fri Apr 8 12:45:07 2011 +1000 xfs: push the AIL from memory reclaim and periodic sync When we are short on memory, we want to expedite the cleaning of dirty objects. Hence when we run short on memory, we need to kick the AIL flushing into action to clean as many dirty objects as quickly as possible. To implement this, sample the lsn of the log item at the head of the AIL and use that as the push target for the AIL flush. Further, we keep items in the AIL that are dirty that are not tracked any other way, so we can get objects sitting in the AIL that don't get written back until the AIL is pushed. Hence to get the filesystem to the idle state, we might need to push the AIL to flush out any remaining dirty objects sitting in the AIL. This requires the same push mechanism as the reclaim push. This patch also renames xfs_trans_ail_tail() to xfs_ail_min_lsn() to match the new xfs_ail_max_lsn() function introduced in this patch. Similarly for xfs_trans_ail_push -> xfs_ail_push. Signed-off-by: Dave Chinner Reviewed-by: Alex Elder Cheers, Dave. -- Dave Chinner david@fromorbit.com From support@bizoppers-invites.com Wed Jun 1 18:40:28 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.9 required=5.0 tests=BAYES_50,HTML_IMAGE_ONLY_16, HTML_MESSAGE autolearn=no version=3.4.0-r929098 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 p51NeNlI155407 for ; Wed, 1 Jun 2011 18:40:28 -0500 X-ASG-Debug-ID: 1306971620-09e503490000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from swom-invites.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 73D2415DA1FE for ; Wed, 1 Jun 2011 16:40:21 -0700 (PDT) Received: from swom-invites.com (swom-invites.com [78.46.57.228]) by cuda.sgi.com with ESMTP id kNqDJkXROdsqHMjB for ; Wed, 01 Jun 2011 16:40:21 -0700 (PDT) Received: from bizoppers-invites.com (app1.bizoppers.com [46.4.80.185]) (Authenticated sender: support@bizoppers-invites.com) by swom-invites.com (Postfix) with ESMTPSA id 09A2229F8FD for ; Thu, 2 Jun 2011 00:40:20 +0100 (BST) Date: Wed, 01 Jun 2011 23:40:20 +0000 From: Jaypee Verdera To: linux-xfs@oss.sgi.com Message-ID: <4de6cde4adf_22d010c513872802585@app1.bizoppers.com.mail> X-ASG-Orig-Subj: Can you join my network on BizOppers? Subject: Can you join my network on BizOppers? Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="--==_mimepart_4de6cde3f0e9f_22d010c5138728022c0"; charset=UTF-8 Content-Transfer-Encoding: 7bit host: bizoppers.com X-BIZOPPERS-UUID: 6277962-4f4e6 X-Barracuda-Connect: swom-invites.com[78.46.57.228] X-Barracuda-Start-Time: 1306971621 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0196 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.39 X-Barracuda-Spam-Status: No, SCORE=-1.39 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_IMAGE_ONLY_16, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65338 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.63 HTML_IMAGE_ONLY_16 BODY: HTML: images with 1200-1600 bytes of words 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 ----==_mimepart_4de6cde3f0e9f_22d010c5138728022c0 Date: Wed, 01 Jun 2011 23:40:19 +0000 Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-ID: <4de6cde3f3d7f_22d010c5138728023fa@app1.bizoppers.com.mail> Jaypee Verdera has joined BizOppers and says they know you: Hey, I'd like to add you to my wealth network on BizOppers. Like Facebook but pays :) - jaypee p.s. Here's the link: http://bizoppers.com/r/328308?utm_campaign=imported_contact_invitation&utm_content=et_1_text_1&utm_medium=email&utm_source=user_mailer If you don't know Jaypee Verdera you can report this member and unsubscribe: http://bizoppers.com/unsubscribe/6277962/4f4e6?utm_campaign=imported_contact_invitation&utm_content=et_1_text_2&utm_medium=email&utm_source=user_mailer ----==_mimepart_4de6cde3f0e9f_22d010c5138728022c0 Date: Wed, 01 Jun 2011 23:40:20 +0000 Mime-Version: 1.0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-ID: <4de6cde3f3d7f_22d010c5138728024e7@app1.bizoppers.com.mail>

BizOppers

Jaypee Verdera

Jaypee Verdera has joined BizOppers and says they know you:

 

Hey,

I'd like to add you to my wealth network on BizOppers. Like Facebook but pays :)

  • jaypee

View invitation from Jaypee Verdera

 

If you don't know Jaypee Verdera you can report this member.

 

© 2011 BizOppers

----==_mimepart_4de6cde3f0e9f_22d010c5138728022c0-- From support@bizoppers-invites.com Wed Jun 1 18:40:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_50,HTML_MESSAGE autolearn=no version=3.4.0-r929098 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 p51NeSMG155414 for ; Wed, 1 Jun 2011 18:40:33 -0500 X-ASG-Debug-ID: 1306971624-3d4b035d0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from swom-invites.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DB1C8495ACC for ; Wed, 1 Jun 2011 16:40:24 -0700 (PDT) Received: from swom-invites.com (swom-invites.com [78.46.57.228]) by cuda.sgi.com with ESMTP id W0d85eUxGUtWam4D for ; Wed, 01 Jun 2011 16:40:24 -0700 (PDT) Received: from bizoppers-invites.com (app1.bizoppers.com [46.4.80.185]) (Authenticated sender: support@bizoppers-invites.com) by swom-invites.com (Postfix) with ESMTPSA id 443BB29F91B for ; Thu, 2 Jun 2011 00:40:23 +0100 (BST) Date: Wed, 01 Jun 2011 23:40:23 +0000 From: Arjay Verdera To: linux-xfs@oss.sgi.com Message-ID: <4de6cde7394f2_22c510c513872571115@app1.bizoppers.com.mail> X-ASG-Orig-Subj: Can you join my network on BizOppers? Subject: Can you join my network on BizOppers? Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="--==_mimepart_4de6cde7317f3_22c510c5138725708a2"; charset=UTF-8 Content-Transfer-Encoding: 7bit host: bizoppers.com X-BIZOPPERS-UUID: 6277997-4f4e6 X-Barracuda-Connect: swom-invites.com[78.46.57.228] X-Barracuda-Start-Time: 1306971624 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0013 1.0000 -2.0122 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65337 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 ----==_mimepart_4de6cde7317f3_22c510c5138725708a2 Date: Wed, 01 Jun 2011 23:40:23 +0000 Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-ID: <4de6cde7346d2_22c510c51387257091e@app1.bizoppers.com.mail> Arjay Verdera has joined BizOppers and says they know you: Hey, I'd like to add you to my wealth network on BizOppers. Like Facebook but pays :) - arjay p.s. Here's the link: http://bizoppers.com/r/328793?utm_campaign=imported_contact_invitation&utm_content=et_1_text_1&utm_medium=email&utm_source=user_mailer If you don't know Arjay Verdera you can report this member and unsubscribe: http://bizoppers.com/unsubscribe/6277997/4f4e6?utm_campaign=imported_contact_invitation&utm_content=et_1_text_2&utm_medium=email&utm_source=user_mailer ----==_mimepart_4de6cde7317f3_22c510c5138725708a2 Date: Wed, 01 Jun 2011 23:40:23 +0000 Mime-Version: 1.0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-ID: <4de6cde735672_22c510c513872571094@app1.bizoppers.com.mail>

BizOppers

Arjay Verdera has joined BizOppers and says they know you:

 

Hey,

I'd like to add you to my wealth network on BizOppers. Like Facebook but pays :)

  • arjay

View invitation from Arjay Verdera

 

If you don't know Arjay Verdera you can report this member.

 

© 2011 BizOppers

----==_mimepart_4de6cde7317f3_22c510c5138725708a2-- From david@fromorbit.com Wed Jun 1 18:41:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p51NfHsg155480 for ; Wed, 1 Jun 2011 18:41:17 -0500 X-ASG-Debug-ID: 1306971675-09e503510000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0057815DA77F for ; Wed, 1 Jun 2011 16:41:16 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id 904Cya4yGtQK0sy6 for ; Wed, 01 Jun 2011 16:41:16 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlwDALbN5k15LCoegWdsb2JhbABTpjEVAQEWJiXHYQ6GEgSYHod2 Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail04.adl6.internode.on.net with ESMTP; 02 Jun 2011 09:11:15 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QRv2I-0006mq-Bs; Thu, 02 Jun 2011 09:41:14 +1000 Date: Thu, 2 Jun 2011 09:41:14 +1000 From: Dave Chinner To: Ajeet Yadav Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: What is xfs_prepair64 ? Subject: Re: What is xfs_prepair64 ? Message-ID: <20110601234114.GK561@dastard> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1306971677 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0555 1.0000 -1.6652 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.67 X-Barracuda-Spam-Status: No, SCORE=-1.67 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65338 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, Jun 01, 2011 at 12:11:31PM +0530, Ajeet Yadav wrote: > xfstests FS QA Test No. 148 needs "xfs_prepair64" to run ? > I did not find this in xfsprogs-3.1.5, please guide from where to find this ? You'll never find it. It was an Irix-only, one-off parallelised xfs_repair prototype that was thrown away when the OSS xfs_repair code was parallelised much more effectively. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Jun 1 18:51:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p51NpsKH155965 for ; Wed, 1 Jun 2011 18:51:55 -0500 X-ASG-Debug-ID: 1306972312-09cc038a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0C9D3D6CA39 for ; Wed, 1 Jun 2011 16:51:53 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id oEPioWcFES5uOxXH for ; Wed, 01 Jun 2011 16:51:53 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlwDALbN5k15LCoegWdsb2JhbABTpjEVAQEWJiWIcb5wDoMcgnYEmB6Hdg Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail04.adl6.internode.on.net with ESMTP; 02 Jun 2011 09:21:52 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QRvCY-0006nX-NE; Thu, 02 Jun 2011 09:51:50 +1000 Date: Thu, 2 Jun 2011 09:51:50 +1000 From: Dave Chinner To: Stefan Priebe - Profihost AG Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS crashes with shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr Subject: Re: XFS crashes with shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr Message-ID: <20110601235150.GL561@dastard> References: <4DE61A7F.40800@profihost.ag> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DE61A7F.40800@profihost.ag> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1306972314 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65338 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, Jun 01, 2011 at 12:54:55PM +0200, Stefan Priebe - Profihost AG wrote: > Hi guys, > > we're seeing a really bad behaviour on one of our machines running > vanilla 2.6.32.40 kernel. > > It freezes from time to time or processes starts to hang. At the > same time the following message appears in the kernel log: Perhaps 2.6.32.40 needs this patch: commit 081003fff467ea0e727f66d5d435b4f473a789b3 Author: Johannes Weiner Date: Fri Oct 1 07:43:54 2010 +0000 xfs: properly account for reclaimed inodes When marking an inode reclaimable, a per-AG counter is increased, the inode is tagged reclaimable in its per-AG tree, and, when this is the first reclaimable inode in the AG, the AG entry in the per-mount tree is also tagged. When an inode is finally reclaimed, however, it is only deleted from the per-AG tree. Neither the counter is decreased, nor is the parent tree's AG entry untagged properly. Since the tags in the per-mount tree are not cleared, the inode shrinker iterates over all AGs that have had reclaimable inodes at one point in time. The counters on the other hand signal an increasing amount of slab objects to reclaim. Since "70e60ce xfs: convert inode shrinker to per-filesystem context" this is not a real issue anymore because the shrinker bails out after one iteration. But the problem was observable on a machine running v2.6.34, where the reclaimable work increased and each process going into direct reclaim eventually got stuck on the xfs inode shrinking path, trying to scan several million objects. Fix this by properly unwinding the reclaimable-state tracking of an inode when it is reclaimed. Signed-off-by: Johannes Weiner Cc: stable@kernel.org Reviewed-by: Dave Chinner Signed-off-by: Alex Elder > > shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to > delete nr=-274207938304 That's an error messge that was introduced in 2.6.34, and the above patch was introduced in 2.6.36. Obvious a bug has been backported to 2.6.32, but was the fix? It was clearly marked for stable kernels, but I have no I have no idea if the stable kernel folks pushed it back to .32. I really don't have the time to track what fixes were or were not backported to what kernels because there are too many "long term stable" kernels in existance now. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Jun 1 19:16:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p520GTqe156953 for ; Wed, 1 Jun 2011 19:16:29 -0500 X-ASG-Debug-ID: 1306973786-2ee1021f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7DAE5167AFBD for ; Wed, 1 Jun 2011 17:16:27 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id iV9MFHv6TkEEm3ma for ; Wed, 01 Jun 2011 17:16:27 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlwDALHU5k15LCoegWdsb2JhbABTpjEVAQEWJiXHdA6GEgSgFA Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail04.adl6.internode.on.net with ESMTP; 02 Jun 2011 09:46:26 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QRvaK-0006qM-UT; Thu, 02 Jun 2011 10:16:24 +1000 Date: Thu, 2 Jun 2011 10:16:24 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] xfs: clear inode per-lifetime state when recycling it Subject: Re: [PATCH 1/2] xfs: clear inode per-lifetime state when recycling it Message-ID: <20110602001624.GM561@dastard> References: <1306815659-23346-1-git-send-email-david@fromorbit.com> <1306815659-23346-2-git-send-email-david@fromorbit.com> <20110531200950.GA31713@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110531200950.GA31713@infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1306973788 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65339 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 31, 2011 at 04:09:50PM -0400, Christoph Hellwig wrote: > Looks good. > > > Reviewed-by: Christoph Hellwig > > > + * XXX(dgc): should the XFS_ISTALE flag only be cleared here? > > I think so. Right now any iget on a stale inode will clear it, which > is very wrong. Care to send a separate patch for that? However, the di_mode has already been set to zero before it is marked stale, so any lookup on it without the XFS_IGET_CREATE flag set will fail. And only inode allocation sets that flag, in which case we want the XFS_ISTALE flag cleared. We can't have a race with the XFS_ISTALE flag being set (both inode freeing and allocation requires the AGI lock), so once it is stale it is protected by the mode/flag check. So it seems safe where it is, but it's not exactly obvious why. Hmmmm. The inode_init_always() failure case does not clear the XFS_IRECLAIM flag - that seems like a bug as it will prevent the inode from ever being reclaimed. Indeed, the error handling looks completely broken - it's like it is assuming the inode has already been removed from the reclaim list and marked XFS_INEW. Oh, it used to do exactly that before this commmit: commit f1f724e4b523d444c5a598d74505aefa3d6844d2 Author: Christoph Hellwig Date: Mon Mar 1 11:30:31 2010 +0000 xfs: fix locking for inode cache radix tree tag updates The radix-tree code requires it's users to serialize tag updates against other updates to the tree. While XFS protects tag updates against each other it does not serialize them against updates of the tree contents, which can lead to tag corruption. Fix the inode cache to always take pag_ici_lock in exclusive mode when updating radix tree tags. Signed-off-by: Christoph Hellwig Reported-by: Patrick Schreurs Tested-by: Patrick Schreurs Signed-off-by: Alex Elder So yes, it needs fixing. Cheers, Dave. -- Dave Chinner david@fromorbit.com From amir73il@gmail.com Wed Jun 1 21:16:08 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_62,J_CHICKENPOX_65,J_CHICKENPOX_66,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p522G8rG160650 for ; Wed, 1 Jun 2011 21:16:08 -0500 X-ASG-Debug-ID: 1306980966-139901220000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-wy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4917F167B688 for ; Wed, 1 Jun 2011 19:16:06 -0700 (PDT) Received: from mail-wy0-f181.google.com (mail-wy0-f181.google.com [74.125.82.181]) by cuda.sgi.com with ESMTP id oYXekCYqVeUPrGGf for ; Wed, 01 Jun 2011 19:16:06 -0700 (PDT) Received: by wyi11 with SMTP id 11so313077wyi.26 for ; Wed, 01 Jun 2011 19:16:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=Q+xFObwO/tJ02xz/23Iwu/TP+DWXoo5K2ij9jcJCfnQ=; b=vtiNcWC/8csp2J4w2Fo4d7OGkqehf3I8/VeBrf7reV7KZa1Yknib1W/J87BM2cPf3A 9usMFQ3/znD+hmHAQF30qQzLyqB+165xN/8VptFs203S6IIVh7ahMFxTBVWGvGUQ1RBe NgSctHBkECjMt2wuR85jt9s9doZCCcwhwubOY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=ZmfMi4/051/8AWKXzSZI3UlWS91wvTlwcGgVXenjCScWpIDNMKTnnO9RZpfDLlKxTc yGPmDE4jD6lKsRqQ4iHYqHkgmYV3U8u52553XVR7rzYnT0noCwMaa/WgX1NFJPRirNQY 619QISVeF/03xUzFMVdjVpLUGA5/0UdGm0VQo= MIME-Version: 1.0 Received: by 10.216.235.129 with SMTP id u1mr5349782weq.108.1306980965524; Wed, 01 Jun 2011 19:16:05 -0700 (PDT) Sender: amir73il@gmail.com Received: by 10.216.221.135 with HTTP; Wed, 1 Jun 2011 19:16:05 -0700 (PDT) In-Reply-To: <20110601232804.GL32466@dastard> References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> <20110601232804.GL32466@dastard> Date: Thu, 2 Jun 2011 05:16:05 +0300 X-Google-Sender-Auth: ZXGbHN98mx7fLC4GMwXlUsmm8os Message-ID: X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP From: "Amir G." To: Dave Chinner Cc: xfs@oss.sgi.com, sandeen@redhat.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Amir Goldstein Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-wy0-f181.google.com[74.125.82.181] X-Barracuda-Start-Time: 1306980967 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, MAILTO_TO_SPAM_ADDR X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65347 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 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 On Thu, Jun 2, 2011 at 2:28 AM, Dave Chinner wrote: > On Wed, Jun 01, 2011 at 03:56:52PM +0300, amir73il@users.sourceforge.net = wrote: >> From: Amir Goldstein >> >> From: Amir Goldstein >> >> blkid knows to identify the ext4dev FSTYP of a partition that was >> formatted with mkfs.ext4dev. >> quota tools and various util-linux utils are also aware of ext4dev, >> so ext4dev shares the same capabilities as ext4. >> >> Signed-off-by: Amir Goldstein >> Tested-by: Sergey Ivanov >> --- >> ext4dev is used to test experimental ext4 code in mutual existance >> with production ext4 code on the same system. >> >> Specifically, ext4 snapshots code is available for testing as a >> stand-alone ext4dev module for Fedora 15 and Ubuntu 11.4 >> (see http://next3.sf.net). >> >> v1 -> v2: >> - undo change of fsck -t $FSTYP to fsck.$FSTYP >> >> =A0common.defrag | =A0 =A02 +- >> =A0common.quota =A0| =A0 =A04 ++-- >> =A0common.rc =A0 =A0 | =A0 10 +++++----- >> =A03 files changed, 8 insertions(+), 8 deletions(-) >> >> diff --git a/common.defrag b/common.defrag >> index 1bcf01d..4850803 100644 >> --- a/common.defrag >> +++ b/common.defrag >> @@ -26,7 +26,7 @@ _require_defrag() >> =A0 =A0 =A0xfs) >> =A0 =A0 =A0 =A0 =A0DEFRAG_PROG=3D/usr/sbin/xfs_fsr >> =A0 =A0 =A0 ;; >> - =A0 =A0ext4) >> + =A0 =A0ext4|ext4dev) >> =A0 =A0 =A0 =A0 =A0DEFRAG_PROG=3D/usr/bin/e4defrag >> =A0 =A0 =A0 ;; >> =A0 =A0 =A0*) >> diff --git a/common.quota b/common.quota >> index 3c87ce1..b6d5f16 100644 >> --- a/common.quota >> +++ b/common.quota >> @@ -29,7 +29,7 @@ _require_quota() >> =A0 =A0 =A0[ -n $QUOTA_PROG ] || _notrun "Quota user tools not installed= " >> >> =A0 =A0 =A0case $FSTYP in >> - =A0 =A0ext2|ext3|ext4|reiserfs) >> + =A0 =A0ext2|ext3|ext4|ext4dev|reiserfs) >> =A0 =A0 =A0 if [ ! -d /proc/sys/fs/quota ]; then >> =A0 =A0 =A0 =A0 =A0 _notrun "Installed kernel does not support quotas" >> =A0 =A0 =A0 fi >> @@ -237,7 +237,7 @@ _check_quota_usage() >> =A0 =A0 =A0 # Sync to get delalloc to disk >> =A0 =A0 =A0 sync >> =A0 =A0 =A0 VFS_QUOTA=3D0 >> - =A0 =A0 if [ $FSTYP =3D "ext2" -o $FSTYP =3D "ext3" -o $FSTYP =3D "ext= 4" -o $FSTYP =3D "reiserfs" ]; then >> + =A0 =A0 if [ $FSTYP =3D "ext2" -o $FSTYP =3D "ext3" -o $FSTYP =3D "ext= 4" -o $FSTYP =3D "ext4dev" -o $FSTYP =3D "reiserfs" ]; then >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 VFS_QUOTA=3D1 >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 quotaon -f -u -g $SCRATCH_MNT 2>/dev/null >> =A0 =A0 =A0 fi > > Perhaps this should be changes to a case statement? > you're making me go to v3 in such a trivial patch, but ok, I'll do it ;-) > Cheers, > > Dave. > > -- > Dave Chinner > david@fromorbit.com > -- > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at =A0http://vger.kernel.org/majordomo-info.html > From amir73il@gmail.com Wed Jun 1 21:33:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_62,J_CHICKENPOX_65,J_CHICKENPOX_66,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p522XbdX161702 for ; Wed, 1 Jun 2011 21:33:37 -0500 X-ASG-Debug-ID: 1306982015-497101ca0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-wy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6B1F0495D1F for ; Wed, 1 Jun 2011 19:33:35 -0700 (PDT) Received: from mail-wy0-f181.google.com (mail-wy0-f181.google.com [74.125.82.181]) by cuda.sgi.com with ESMTP id lo89879vSeJ6h491 for ; Wed, 01 Jun 2011 19:33:35 -0700 (PDT) Received: by wyi11 with SMTP id 11so320282wyi.26 for ; Wed, 01 Jun 2011 19:33:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=cxpeHbpUAVOd8mjIEEZ8KisO1sngxGJFXHtgqT1DLSE=; b=oZ3vtzk0pDbPzgXD8MtdiBRWhtYJ8WVkvig4dO8SGx1lacLXKOTky82f4rEziquGOp GsZBTSa8XTbIMlEKlbArn5B8YOlvyj3C4wfYZlwwZY+dVFJ8qDU4ANE7uUaNyVM+OmAb MdO3gKVOW92f24qJOjQ06wkIeAwrqxgkw9F6g= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=X9NDH5tfOtikavIbtVu+YczYBo9xM2fNsBzN+guyeAzfYi1aCCthPk75UDXHvolGEp CCU6vtXP2ijupsdsoqlo9wJmCkfUNIRWQlzESH4bn+akUZ/MDUhRR5LlVgXE3wQHg6OY SD0cVLIaACjR9BQzni4VJbtS8GQROQbjBiytE= MIME-Version: 1.0 Received: by 10.216.235.129 with SMTP id u1mr5359102weq.108.1306982014781; Wed, 01 Jun 2011 19:33:34 -0700 (PDT) Sender: amir73il@gmail.com Received: by 10.216.221.135 with HTTP; Wed, 1 Jun 2011 19:33:34 -0700 (PDT) In-Reply-To: References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> <20110601232804.GL32466@dastard> Date: Thu, 2 Jun 2011 05:33:34 +0300 X-Google-Sender-Auth: fv4Ps33AyL0RpezjwSQA0KL9lpE Message-ID: X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP From: "Amir G." To: Dave Chinner Cc: xfs@oss.sgi.com, sandeen@redhat.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Amir Goldstein Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-wy0-f181.google.com[74.125.82.181] X-Barracuda-Start-Time: 1306982016 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, MAILTO_TO_SPAM_ADDR X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65349 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 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 On Thu, Jun 2, 2011 at 5:16 AM, Amir G. wr= ote: > On Thu, Jun 2, 2011 at 2:28 AM, Dave Chinner wrote: >> On Wed, Jun 01, 2011 at 03:56:52PM +0300, amir73il@users.sourceforge.net= wrote: >>> From: Amir Goldstein >>> >>> From: Amir Goldstein >>> >>> blkid knows to identify the ext4dev FSTYP of a partition that was >>> formatted with mkfs.ext4dev. >>> quota tools and various util-linux utils are also aware of ext4dev, >>> so ext4dev shares the same capabilities as ext4. >>> >>> Signed-off-by: Amir Goldstein >>> Tested-by: Sergey Ivanov >>> --- >>> ext4dev is used to test experimental ext4 code in mutual existance >>> with production ext4 code on the same system. >>> >>> Specifically, ext4 snapshots code is available for testing as a >>> stand-alone ext4dev module for Fedora 15 and Ubuntu 11.4 >>> (see http://next3.sf.net). >>> >>> v1 -> v2: >>> - undo change of fsck -t $FSTYP to fsck.$FSTYP >>> >>> =A0common.defrag | =A0 =A02 +- >>> =A0common.quota =A0| =A0 =A04 ++-- >>> =A0common.rc =A0 =A0 | =A0 10 +++++----- >>> =A03 files changed, 8 insertions(+), 8 deletions(-) >>> >>> diff --git a/common.defrag b/common.defrag >>> index 1bcf01d..4850803 100644 >>> --- a/common.defrag >>> +++ b/common.defrag >>> @@ -26,7 +26,7 @@ _require_defrag() >>> =A0 =A0 =A0xfs) >>> =A0 =A0 =A0 =A0 =A0DEFRAG_PROG=3D/usr/sbin/xfs_fsr >>> =A0 =A0 =A0 ;; >>> - =A0 =A0ext4) >>> + =A0 =A0ext4|ext4dev) >>> =A0 =A0 =A0 =A0 =A0DEFRAG_PROG=3D/usr/bin/e4defrag >>> =A0 =A0 =A0 ;; >>> =A0 =A0 =A0*) >>> diff --git a/common.quota b/common.quota >>> index 3c87ce1..b6d5f16 100644 >>> --- a/common.quota >>> +++ b/common.quota >>> @@ -29,7 +29,7 @@ _require_quota() >>> =A0 =A0 =A0[ -n $QUOTA_PROG ] || _notrun "Quota user tools not installe= d" >>> >>> =A0 =A0 =A0case $FSTYP in >>> - =A0 =A0ext2|ext3|ext4|reiserfs) >>> + =A0 =A0ext2|ext3|ext4|ext4dev|reiserfs) >>> =A0 =A0 =A0 if [ ! -d /proc/sys/fs/quota ]; then >>> =A0 =A0 =A0 =A0 =A0 _notrun "Installed kernel does not support quotas" >>> =A0 =A0 =A0 fi >>> @@ -237,7 +237,7 @@ _check_quota_usage() >>> =A0 =A0 =A0 # Sync to get delalloc to disk >>> =A0 =A0 =A0 sync >>> =A0 =A0 =A0 VFS_QUOTA=3D0 >>> - =A0 =A0 if [ $FSTYP =3D "ext2" -o $FSTYP =3D "ext3" -o $FSTYP =3D "ex= t4" -o $FSTYP =3D "reiserfs" ]; then >>> + =A0 =A0 if [ $FSTYP =3D "ext2" -o $FSTYP =3D "ext3" -o $FSTYP =3D "ex= t4" -o $FSTYP =3D "ext4dev" -o $FSTYP =3D "reiserfs" ]; then >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 VFS_QUOTA=3D1 >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 quotaon -f -u -g $SCRATCH_MNT 2>/dev/null >>> =A0 =A0 =A0 fi >> >> Perhaps this should be changes to a case statement? >> > > you're making me go to v3 in such a trivial patch, but ok, I'll do it ;-) > I rechecked the fsck -t ext4dev vs. fsck.ext4dev. fsck -t ext4dev doesn't work for me :-( Sergey has a newer version of util-linux-ng see: amir@qalab:~/xfstests$ sudo fsck -t ext4dev -nf /dev/sda5 fsck from util-linux-ng 2.17.2 e2fsck 1.41.14 (22-Dec-2010) /dev/sda5 has unsupported feature(s): FEATURE_C7 FEATURE_C8 FEATURE_R7 e2fsck: Get a newer version of e2fsck! amir@qalab:~/xfstests$ sudo fsck.ext4dev -nf /dev/sda5 e2fsck 1.41.14-next3-1.0.13-7 (24-May-2011) Checking snapshots: 1,done Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/sda5: 6596/6561792 files (3.6% non-contiguous), 1242522/26216064 block= s amir@qalab:~/xfstests$ What do you thing, Dave? Should xfstests rely on a non-buggy generic fsck util, or just implement it's own non-buggy generic fsck (invoke fsck.$FSTYP directly) I am running a recent system (Ubuntu 11.4) and I don't thing that upgrading util-linux should be a requirement for xfstests to work. >> Cheers, >> >> Dave. >> >> -- >> Dave Chinner >> david@fromorbit.com >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at =A0http://vger.kernel.org/majordomo-info.html >> > From david@fromorbit.com Wed Jun 1 22:08:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_43,J_CHICKENPOX_62,J_CHICKENPOX_65,J_CHICKENPOX_66 autolearn=no version=3.4.0-r929098 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 p5238B9g166483 for ; Wed, 1 Jun 2011 22:08:11 -0500 X-ASG-Debug-ID: 1306984088-543302b50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1CCBE495E0A for ; Wed, 1 Jun 2011 20:08:08 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id G7kMjHuG2EQ491IU for ; Wed, 01 Jun 2011 20:08:08 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Al0DAGb75k15LCoegWdsb2JhbABFDqYxFQEBFiYliHG+TA6DCQSDBQSZRoZO Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail04.adl6.internode.on.net with ESMTP; 02 Jun 2011 12:38:04 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QRyGQ-0007G6-Hr; Thu, 02 Jun 2011 13:08:02 +1000 Date: Thu, 2 Jun 2011 13:08:02 +1000 From: Dave Chinner To: "Amir G." Cc: xfs@oss.sgi.com, sandeen@redhat.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Amir Goldstein X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Message-ID: <20110602030802.GR561@dastard> References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> <20110601232804.GL32466@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1306984090 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 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.2.65350 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 On Thu, Jun 02, 2011 at 05:33:34AM +0300, Amir G. wrote: > On Thu, Jun 2, 2011 at 5:16 AM, Amir G. wrote: > > On Thu, Jun 2, 2011 at 2:28 AM, Dave Chinner wrote: > >> On Wed, Jun 01, 2011 at 03:56:52PM +0300, amir73il@users.sourceforge.net wrote: > >>> From: Amir Goldstein > >>> > >>> From: Amir Goldstein > >>> > >>> blkid knows to identify the ext4dev FSTYP of a partition that was > >>> formatted with mkfs.ext4dev. > >>> quota tools and various util-linux utils are also aware of ext4dev, > >>> so ext4dev shares the same capabilities as ext4. > >>> > >>> Signed-off-by: Amir Goldstein > >>> Tested-by: Sergey Ivanov > >>> --- > >>> ext4dev is used to test experimental ext4 code in mutual existance > >>> with production ext4 code on the same system. > >>> > >>> Specifically, ext4 snapshots code is available for testing as a > >>> stand-alone ext4dev module for Fedora 15 and Ubuntu 11.4 > >>> (see http://next3.sf.net). > >>> > >>> v1 -> v2: > >>> - undo change of fsck -t $FSTYP to fsck.$FSTYP > >>> > >>>  common.defrag |    2 +- > >>>  common.quota  |    4 ++-- > >>>  common.rc     |   10 +++++----- > >>>  3 files changed, 8 insertions(+), 8 deletions(-) > >>> > >>> diff --git a/common.defrag b/common.defrag > >>> index 1bcf01d..4850803 100644 > >>> --- a/common.defrag > >>> +++ b/common.defrag > >>> @@ -26,7 +26,7 @@ _require_defrag() > >>>      xfs) > >>>          DEFRAG_PROG=/usr/sbin/xfs_fsr > >>>       ;; > >>> -    ext4) > >>> +    ext4|ext4dev) > >>>          DEFRAG_PROG=/usr/bin/e4defrag > >>>       ;; > >>>      *) > >>> diff --git a/common.quota b/common.quota > >>> index 3c87ce1..b6d5f16 100644 > >>> --- a/common.quota > >>> +++ b/common.quota > >>> @@ -29,7 +29,7 @@ _require_quota() > >>>      [ -n $QUOTA_PROG ] || _notrun "Quota user tools not installed" > >>> > >>>      case $FSTYP in > >>> -    ext2|ext3|ext4|reiserfs) > >>> +    ext2|ext3|ext4|ext4dev|reiserfs) > >>>       if [ ! -d /proc/sys/fs/quota ]; then > >>>           _notrun "Installed kernel does not support quotas" > >>>       fi > >>> @@ -237,7 +237,7 @@ _check_quota_usage() > >>>       # Sync to get delalloc to disk > >>>       sync > >>>       VFS_QUOTA=0 > >>> -     if [ $FSTYP = "ext2" -o $FSTYP = "ext3" -o $FSTYP = "ext4" -o $FSTYP = "reiserfs" ]; then > >>> +     if [ $FSTYP = "ext2" -o $FSTYP = "ext3" -o $FSTYP = "ext4" -o $FSTYP = "ext4dev" -o $FSTYP = "reiserfs" ]; then > >>>               VFS_QUOTA=1 > >>>               quotaon -f -u -g $SCRATCH_MNT 2>/dev/null > >>>       fi > >> > >> Perhaps this should be changes to a case statement? > >> > > > > you're making me go to v3 in such a trivial patch, but ok, I'll do it ;-) > > > > I rechecked the fsck -t ext4dev vs. fsck.ext4dev. > fsck -t ext4dev doesn't work for me :-( > Sergey has a newer version of util-linux-ng > see: > > amir@qalab:~/xfstests$ sudo fsck -t ext4dev -nf /dev/sda5 > fsck from util-linux-ng 2.17.2 > e2fsck 1.41.14 (22-Dec-2010) > /dev/sda5 has unsupported feature(s): FEATURE_C7 FEATURE_C8 FEATURE_R7 > e2fsck: Get a newer version of e2fsck! > amir@qalab:~/xfstests$ sudo fsck.ext4dev -nf /dev/sda5 > e2fsck 1.41.14-next3-1.0.13-7 (24-May-2011) > Checking snapshots: 1,done > Pass 1: Checking inodes, blocks, and sizes > Pass 2: Checking directory structure > Pass 3: Checking directory connectivity > Pass 4: Checking reference counts > Pass 5: Checking group summary information > /dev/sda5: 6596/6561792 files (3.6% non-contiguous), 1242522/26216064 blocks > amir@qalab:~/xfstests$ > > What do you thing, Dave? > Should xfstests rely on a non-buggy generic fsck util, For filessytems that use the generic fsck multiplexor, yes. > or just > implement it's own > non-buggy generic fsck (invoke fsck.$FSTYP directly) In general, no. XFS is a special case in that fsck.xfs is a no-op - it does no checking at all and only returns values needed for init scripts to work correctly. xfs_repair/xfs_check are for checking the filesystem... > I am running a recent system (Ubuntu 11.4) and I don't thing that upgrading > util-linux should be a requirement for xfstests to work. We do not try to support every buggy piece of crap out there - if a newer version of util-linux has already fixed the problem, then use that and we don't need to do anything special with xfstests at all. If you've got bleeding edge filesystem code that requires using a ext4dev fstyp and a new ext4 userspace, then I think that requiring you to use a non-buggy util-linux is not a big deal.... --- Personally I think that ext4dev shouldn't be supported at all. A special fstyp iwhile ext4 was being developed was, IMO, a stupid thing to do in the first place, and I was happy when it died. It should not be resurrected and propagated. xfstests assumes that you are using a userspace that is current with the version of the filesystem the kernel supports. If you are running a development/special branch of ext4, then you need to be running a userspace that understands it completely. If all you are doing with the ext4dev fstyp is trying to vector to a different fsck program that supports a new set of feature bits, then IMO you are doing it all wrong. Fundamentally, the filesystem is either ext4 or it isn't. If the features are never going to make it into mainline ext4, then you need a completely different fstype and full userspace support for that fstype. Once you have that, you can add the fstype support to xfstests. However, just using a different fstyp just to set a certain set of feature flags is, again IMO, a pretty stupid way of going about this. Cheers, Dave. -- Dave Chinner david@fromorbit.com From amir73il@gmail.com Wed Jun 1 22:49:27 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_43,J_CHICKENPOX_62,J_CHICKENPOX_65,J_CHICKENPOX_66, T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p523nQOI167962 for ; Wed, 1 Jun 2011 22:49:26 -0500 X-ASG-Debug-ID: 1306986564-766100630000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-wy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B3E77D6D572 for ; Wed, 1 Jun 2011 20:49:24 -0700 (PDT) Received: from mail-wy0-f181.google.com (mail-wy0-f181.google.com [74.125.82.181]) by cuda.sgi.com with ESMTP id B6OInfSYv2gxDccv for ; Wed, 01 Jun 2011 20:49:24 -0700 (PDT) Received: by wyi11 with SMTP id 11so347242wyi.26 for ; Wed, 01 Jun 2011 20:49:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=CQFfjgVkVVi0dKVCO8UFiDoVa+8E8C9YRYtQmME7f70=; b=gszMZhxeXPzgZvoptXW7HFAv3gkrvhEy9zw750vL6gp4FfmMJzMtEeumN6hThcgmC2 /bO3+zHi9tG7UkUiTwCw8ffOr3y47RqKwerNnGo0r/3YSg4o++EhYLurSbnPb/3Q3QJw C7XAPdhzEagIeX831uZ6lXtr7KURSewwV5JFA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=oY/jfeDcY4ZseypF8zsYiqAMu8DSmqs/MVgawxNNm5UbcJTmPrkXpa1VGYTuFrHPcg ms06Jx7YqDGdM8atu0sFPMw54NllWGlnHUKEwPmxKtp/PnRGPFh+i/F7VXh/nvHYyrwT wa/lnWdecyyqtmKM8kAhFNH/K77QFs9pi4WJQ= MIME-Version: 1.0 Received: by 10.216.81.69 with SMTP id l47mr5427555wee.78.1306986560478; Wed, 01 Jun 2011 20:49:20 -0700 (PDT) Sender: amir73il@gmail.com Received: by 10.216.221.135 with HTTP; Wed, 1 Jun 2011 20:49:20 -0700 (PDT) In-Reply-To: <20110602030802.GR561@dastard> References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> <20110601232804.GL32466@dastard> <20110602030802.GR561@dastard> Date: Thu, 2 Jun 2011 06:49:20 +0300 X-Google-Sender-Auth: VmcM15HFCcB3MsbC5kq9DIjsjoo Message-ID: X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP From: "Amir G." To: Dave Chinner Cc: xfs@oss.sgi.com, sandeen@redhat.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Amir Goldstein Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-wy0-f181.google.com[74.125.82.181] X-Barracuda-Start-Time: 1306986565 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, MAILTO_TO_SPAM_ADDR X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65353 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 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 On Thu, Jun 2, 2011 at 6:08 AM, Dave Chinner wrote: > On Thu, Jun 02, 2011 at 05:33:34AM +0300, Amir G. wrote: >> On Thu, Jun 2, 2011 at 5:16 AM, Amir G. = wrote: >> > On Thu, Jun 2, 2011 at 2:28 AM, Dave Chinner wro= te: >> >> On Wed, Jun 01, 2011 at 03:56:52PM +0300, amir73il@users.sourceforge.= net wrote: >> >>> From: Amir Goldstein >> >>> >> >>> From: Amir Goldstein >> >>> >> >>> blkid knows to identify the ext4dev FSTYP of a partition that was >> >>> formatted with mkfs.ext4dev. >> >>> quota tools and various util-linux utils are also aware of ext4dev, >> >>> so ext4dev shares the same capabilities as ext4. >> >>> >> >>> Signed-off-by: Amir Goldstein >> >>> Tested-by: Sergey Ivanov >> >>> --- >> >>> ext4dev is used to test experimental ext4 code in mutual existance >> >>> with production ext4 code on the same system. >> >>> >> >>> Specifically, ext4 snapshots code is available for testing as a >> >>> stand-alone ext4dev module for Fedora 15 and Ubuntu 11.4 >> >>> (see http://next3.sf.net). >> >>> >> >>> v1 -> v2: >> >>> - undo change of fsck -t $FSTYP to fsck.$FSTYP >> >>> >> >>> =A0common.defrag | =A0 =A02 +- >> >>> =A0common.quota =A0| =A0 =A04 ++-- >> >>> =A0common.rc =A0 =A0 | =A0 10 +++++----- >> >>> =A03 files changed, 8 insertions(+), 8 deletions(-) >> >>> >> >>> diff --git a/common.defrag b/common.defrag >> >>> index 1bcf01d..4850803 100644 >> >>> --- a/common.defrag >> >>> +++ b/common.defrag >> >>> @@ -26,7 +26,7 @@ _require_defrag() >> >>> =A0 =A0 =A0xfs) >> >>> =A0 =A0 =A0 =A0 =A0DEFRAG_PROG=3D/usr/sbin/xfs_fsr >> >>> =A0 =A0 =A0 ;; >> >>> - =A0 =A0ext4) >> >>> + =A0 =A0ext4|ext4dev) >> >>> =A0 =A0 =A0 =A0 =A0DEFRAG_PROG=3D/usr/bin/e4defrag >> >>> =A0 =A0 =A0 ;; >> >>> =A0 =A0 =A0*) >> >>> diff --git a/common.quota b/common.quota >> >>> index 3c87ce1..b6d5f16 100644 >> >>> --- a/common.quota >> >>> +++ b/common.quota >> >>> @@ -29,7 +29,7 @@ _require_quota() >> >>> =A0 =A0 =A0[ -n $QUOTA_PROG ] || _notrun "Quota user tools not insta= lled" >> >>> >> >>> =A0 =A0 =A0case $FSTYP in >> >>> - =A0 =A0ext2|ext3|ext4|reiserfs) >> >>> + =A0 =A0ext2|ext3|ext4|ext4dev|reiserfs) >> >>> =A0 =A0 =A0 if [ ! -d /proc/sys/fs/quota ]; then >> >>> =A0 =A0 =A0 =A0 =A0 _notrun "Installed kernel does not support quota= s" >> >>> =A0 =A0 =A0 fi >> >>> @@ -237,7 +237,7 @@ _check_quota_usage() >> >>> =A0 =A0 =A0 # Sync to get delalloc to disk >> >>> =A0 =A0 =A0 sync >> >>> =A0 =A0 =A0 VFS_QUOTA=3D0 >> >>> - =A0 =A0 if [ $FSTYP =3D "ext2" -o $FSTYP =3D "ext3" -o $FSTYP =3D = "ext4" -o $FSTYP =3D "reiserfs" ]; then >> >>> + =A0 =A0 if [ $FSTYP =3D "ext2" -o $FSTYP =3D "ext3" -o $FSTYP =3D = "ext4" -o $FSTYP =3D "ext4dev" -o $FSTYP =3D "reiserfs" ]; then >> >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 VFS_QUOTA=3D1 >> >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 quotaon -f -u -g $SCRATCH_MNT 2>/dev/nul= l >> >>> =A0 =A0 =A0 fi >> >> >> >> Perhaps this should be changes to a case statement? >> >> >> > >> > you're making me go to v3 in such a trivial patch, but ok, I'll do it = ;-) >> > >> >> I rechecked the fsck -t ext4dev vs. fsck.ext4dev. >> fsck -t ext4dev doesn't work for me :-( >> Sergey has a newer version of =A0util-linux-ng >> see: >> >> amir@qalab:~/xfstests$ sudo fsck -t ext4dev -nf /dev/sda5 >> fsck from util-linux-ng 2.17.2 >> e2fsck 1.41.14 (22-Dec-2010) >> /dev/sda5 has unsupported feature(s): FEATURE_C7 FEATURE_C8 FEATURE_R7 >> e2fsck: Get a newer version of e2fsck! >> amir@qalab:~/xfstests$ sudo fsck.ext4dev -nf /dev/sda5 >> e2fsck 1.41.14-next3-1.0.13-7 (24-May-2011) >> Checking snapshots: 1,done >> Pass 1: Checking inodes, blocks, and sizes >> Pass 2: Checking directory structure >> Pass 3: Checking directory connectivity >> Pass 4: Checking reference counts >> Pass 5: Checking group summary information >> /dev/sda5: 6596/6561792 files (3.6% non-contiguous), 1242522/26216064 bl= ocks >> amir@qalab:~/xfstests$ >> >> What do you thing, Dave? >> Should xfstests rely on a non-buggy generic fsck util, > > For filessytems that use the generic fsck multiplexor, yes. > >> or just >> implement it's own >> non-buggy generic fsck (invoke fsck.$FSTYP directly) > > In general, no. XFS is a special case in that fsck.xfs is a no-op - > it does no checking at all and only returns values needed for init > scripts to work correctly. xfs_repair/xfs_check are for checking the > filesystem... > >> I am running a recent system (Ubuntu 11.4) and I don't thing that upgrad= ing >> util-linux should be a requirement for xfstests to work. > > We do not try to support every buggy piece of crap out there - if a > newer version of util-linux has already fixed the problem, then use > that and we don't need to do anything special with xfstests at all. > If you've got bleeding edge filesystem code that requires using a > ext4dev fstyp and a new ext4 userspace, then I think that requiring > you to use a non-buggy util-linux is not a big deal.... > no. not a big deal at all. > --- > > Personally I think that ext4dev shouldn't be supported at all. A > special fstyp iwhile ext4 was being developed was, IMO, a stupid > thing to do in the first place, and I was happy when it died. It > should not be resurrected and propagated. > > xfstests assumes that you are using a userspace that is current with > the version of the filesystem the kernel supports. If you are > running a development/special branch of ext4, then you need to be > running a userspace that understands it completely. If all you are > doing with the ext4dev fstyp is trying to vector to a different fsck > program that supports a new set of feature bits, then IMO you are > doing it all wrong. > > Fundamentally, the filesystem is either ext4 or it isn't. If the > features are never going to make it into mainline ext4, then you > need a completely different fstype and full userspace support for > that fstype. Once you have that, you can add the fstype support to > xfstests. However, just using a different fstyp just to set a > certain set of feature flags is, again IMO, a pretty stupid way of > going about this. > The features are going into mainline, but are not there yet. I did not invent the ext4dev standard, which is pretty well supported by all relevant tools, but I find it very convenient for the testing. Especially, when I expect my testers to be running a stable distro release (i.e. F15 or Ubuntu 11.4) and be able to install my experimental ext4dev module and utils, without it affecting their (most likely) root ext4/ext3 fs. > Cheers, > > Dave. > > -- > Dave Chinner > david@fromorbit.com > From tytso@thunk.org Wed Jun 1 23:01:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5241BIq168441 for ; Wed, 1 Jun 2011 23:01:12 -0500 X-ASG-Debug-ID: 1306987270-0e5f01b60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from test.thunk.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 091D1495EB5 for ; Wed, 1 Jun 2011 21:01:10 -0700 (PDT) Received: from test.thunk.org (li9-11.members.linode.com [67.18.176.11]) by cuda.sgi.com with ESMTP id maNjylzvYsQONeGL for ; Wed, 01 Jun 2011 21:01:10 -0700 (PDT) Received: from root (helo=tytso-glaptop) by test.thunk.org with local-esmtp (Exim 4.69) (envelope-from ) id 1QRz5o-0004WJ-MN; Thu, 02 Jun 2011 04:01:08 +0000 Received: from tytso by tytso-glaptop with local (Exim 4.71) (envelope-from ) id 1QRx0E-0004e0-JR; Wed, 01 Jun 2011 21:47:14 -0400 Date: Wed, 1 Jun 2011 21:47:04 -0400 From: "Ted Ts'o" To: Eric Sandeen Cc: Amir Goldstein , XFS , Sergey Ivanov , Ext4 Developers List , linux-fsdevel X-ASG-Orig-Subj: Re: [PATCH] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH] xfstests: add support for ext4dev FSTYP Message-ID: <20110602014704.GA16306@thunk.org> References: <4DE5C1FE.8080006@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DE5C1FE.8080006@redhat.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tytso@thunk.org X-SA-Exim-Scanned: No (on test.thunk.org); SAEximRunCond expanded to false X-Barracuda-Connect: li9-11.members.linode.com[67.18.176.11] X-Barracuda-Start-Time: 1306987271 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65354 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 31, 2011 at 11:37:18PM -0500, Eric Sandeen wrote: > > I'm less certain of the change from fsck -t $FSTYP to fsck.$FSTYP > > What issue are you avoiding? wouldn't fsck -t ext4dev invoke > fsck.ext4dev anyway? This is a change I make locally when I've been debugging my bigalloc code as well. There reason for that is because I want to override the fsck.ext4 that would get used by using path hacking. The problem was that fsck -t ext4 will look for /sbin/fsck.ext4, where as I wanted it to use the fsck.ext4 that was first in the PATH. So I changed "/sbin/fsck -t $FSTYP" to "fsck.$FSTYP" and made sure /sbin was tacked onto the path. It might be that the right answer is that fsck should have an environment variable or some other way of controlling the search path it uses to find the fsck.XXX binary. - Ted From amir73il@gmail.com Wed Jun 1 23:17:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_62,J_CHICKENPOX_65,J_CHICKENPOX_66,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p524HMPq168930 for ; Wed, 1 Jun 2011 23:17:22 -0500 X-ASG-Debug-ID: 1306988240-138803d40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ww0-f51.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 975B81E3B1AF for ; Wed, 1 Jun 2011 21:17:20 -0700 (PDT) Received: from mail-ww0-f51.google.com (mail-ww0-f51.google.com [74.125.82.51]) by cuda.sgi.com with ESMTP id lSOsKeIgYFxKI7Jr for ; Wed, 01 Jun 2011 21:17:20 -0700 (PDT) Received: by wwf26 with SMTP id 26so388746wwf.32 for ; Wed, 01 Jun 2011 21:17:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:sender:from:to:cc:subject:date:message-id :x-mailer; bh=DGi29fUZf0Fa93Dph6k24e7QBMVvlFLJcVEg2AGOMC4=; b=KyF7xMbIQnLxPUMqMpUdUY5FZapE5pHdkiGzkYdI0+pz2o0ptmUqD8Du7BR7MeEPI+ xaJwo9/kMH+okFZpZbqbtbO3da6UenJWergVhuqVSqYXw+FpWvRvui9qX/BW1zdIVlbT ioXEzPsjGE3un2ZSPuzRVly8u3MrpSEes0Es4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer; b=rfJU31kqD/I8bzAbCSg7obyIdDKwx3VA71IoPS/JH2SGKQj6oq3GqROVIFVVdkq1mr E6zOOV7T+OTp/ZtLrMW1lfxVlck2YnihXwqJ9RgLuLmZTpmzlVA3OB2VNvjCYqH3rrQ+ YjdVC3BjDhqr3X6LZwu4dNmR0nBV2Nb6RoRXk= Received: by 10.216.64.209 with SMTP id c59mr3709149wed.41.1306988239228; Wed, 01 Jun 2011 21:17:19 -0700 (PDT) Received: from localhost.localdomain (bzq-218-153-66.cablep.bezeqint.net [81.218.153.66]) by mx.google.com with ESMTPS id w58sm92641weq.1.2011.06.01.21.17.17 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 01 Jun 2011 21:17:18 -0700 (PDT) Sender: Amir Goldstein From: amir73il@users.sourceforge.net To: xfs@oss.sgi.com Cc: sandeen@redhat.com, sergey57@gmail.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, Amir Goldstein X-ASG-Orig-Subj: [PATCH v3] xfstests: add support for ext4dev FSTYP Subject: [PATCH v3] xfstests: add support for ext4dev FSTYP Date: Thu, 2 Jun 2011 07:17:01 +0300 Message-Id: <1306988221-3543-1-git-send-email-amir73il@users.sourceforge.net> X-Mailer: git-send-email 1.7.4.1 X-Barracuda-Connect: mail-ww0-f51.google.com[74.125.82.51] X-Barracuda-Start-Time: 1306988241 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, MAILTO_TO_SPAM_ADDR, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65354 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 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 From: Amir Goldstein blkid knows to identify the ext4dev FSTYP of a partition that was formatted with mkfs.ext4dev. quota tools and various util-linux utils are also aware of ext4dev, so ext4dev shares the same capabilities as ext4. Signed-off-by: Amir Goldstein Tested-by: Sergey Ivanov --- ext4dev is used to test experimental ext4 code in mutual existance with production ext4 code on the same system. Specifically, ext4 snapshots code is available for testing as a stand-alone ext4dev module for Fedora 15 and Ubuntu 11.4 (see http://next3.sf.net). v2 -> v3: - change if to case statement v1 -> v2: - undo change of fsck -t $FSTYP to fsck.$FSTYP common.defrag | 2 +- common.quota | 10 +++++++--- common.rc | 10 +++++----- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/common.defrag b/common.defrag index 1bcf01d..4850803 100644 --- a/common.defrag +++ b/common.defrag @@ -26,7 +26,7 @@ _require_defrag() xfs) DEFRAG_PROG=/usr/sbin/xfs_fsr ;; - ext4) + ext4|ext4dev) DEFRAG_PROG=/usr/bin/e4defrag ;; *) diff --git a/common.quota b/common.quota index 3c87ce1..9736306 100644 --- a/common.quota +++ b/common.quota @@ -29,7 +29,7 @@ _require_quota() [ -n $QUOTA_PROG ] || _notrun "Quota user tools not installed" case $FSTYP in - ext2|ext3|ext4|reiserfs) + ext2|ext3|ext4|ext4dev|reiserfs) if [ ! -d /proc/sys/fs/quota ]; then _notrun "Installed kernel does not support quotas" fi @@ -237,10 +237,14 @@ _check_quota_usage() # Sync to get delalloc to disk sync VFS_QUOTA=0 - if [ $FSTYP = "ext2" -o $FSTYP = "ext3" -o $FSTYP = "ext4" -o $FSTYP = "reiserfs" ]; then + case $FSTYP in + ext2|ext3|ext4|ext4dev|reiserfs) VFS_QUOTA=1 quotaon -f -u -g $SCRATCH_MNT 2>/dev/null - fi + ;; + *) + ;; + esac repquota -u -n $SCRATCH_MNT | grep -v "^#0" | _filter_scratch | sort >$tmp.user.orig repquota -g -n $SCRATCH_MNT | grep -v "^#0" | _filter_scratch | diff --git a/common.rc b/common.rc index e634fbb..c510c66 100644 --- a/common.rc +++ b/common.rc @@ -65,7 +65,7 @@ _mount_opts() nfs) export MOUNT_OPTIONS=$NFS_MOUNT_OPTIONS ;; - ext2|ext3|ext4) + ext2|ext3|ext4|ext4dev) # acls & xattrs aren't turned on by default on ext$FOO export MOUNT_OPTIONS="-o acl,user_xattr $EXT_MOUNT_OPTIONS" ;; @@ -110,7 +110,7 @@ _mkfs_opts() _fsck_opts() { case $FSTYP in - ext2|ext3|ext4) + ext2|ext3|ext4|ext4dev) export FSCK_OPTIONS="-nf" ;; reiserfs) @@ -326,10 +326,10 @@ _scratch_mkfs_sized() xfs) _scratch_mkfs_xfs -d size=$fssize -b size=$blocksize ;; - ext2|ext3|ext4) + ext2|ext3|ext4|ext4dev) /sbin/mkfs.$FSTYP $MKFS_OPTIONS -b $blocksize $SCRATCH_DEV $blocks ;; - btrfs) + btrfs) /sbin/mkfs.$FSTYP $MKFS_OPTIONS $SCRATCH_DEV -b $fssize ;; *) @@ -354,7 +354,7 @@ _scratch_mkfs_geom() xfs) MKFS_OPTIONS+=" -b size=$blocksize, -d su=$sunit_bytes,sw=$swidth_mult" ;; - ext4) + ext4|ext4dev) MKFS_OPTIONS+=" -b $blocksize -E stride=$sunit_blocks,stripe_width=$swidth_blocks" ;; *) -- 1.7.4.1 From david@fromorbit.com Thu Jun 2 01:40:47 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.4.0-r929098 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 p526elGN176921 for ; Thu, 2 Jun 2011 01:40:47 -0500 X-ASG-Debug-ID: 1306996844-75bd00340000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 53EFC15DAC27 for ; Wed, 1 Jun 2011 23:40:45 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 1SIewnZTWFEhtcCA for ; Wed, 01 Jun 2011 23:40:45 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArUDALAu5015LCoegWdsb2JhbABTpjAVAQEWJiWIcb5BDoYTBKAp Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl2.internode.on.net with ESMTP; 02 Jun 2011 16:10:42 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QS1aC-0007YM-8u; Thu, 02 Jun 2011 16:40:40 +1000 Date: Thu, 2 Jun 2011 16:40:40 +1000 From: Dave Chinner To: "Amir G." Cc: xfs@oss.sgi.com, sandeen@redhat.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Amir Goldstein X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Message-ID: <20110602064040.GS561@dastard> References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> <20110601232804.GL32466@dastard> <20110602030802.GR561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1306996846 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65365 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, Jun 02, 2011 at 06:49:20AM +0300, Amir G. wrote: > On Thu, Jun 2, 2011 at 6:08 AM, Dave Chinner wrote: > > On Thu, Jun 02, 2011 at 05:33:34AM +0300, Amir G. wrote: > >> On Thu, Jun 2, 2011 at 5:16 AM, Amir G. wrote: > >> > On Thu, Jun 2, 2011 at 2:28 AM, Dave Chinner wrote: > > Personally I think that ext4dev shouldn't be supported at all. A > > special fstyp iwhile ext4 was being developed was, IMO, a stupid > > thing to do in the first place, and I was happy when it died. It > > should not be resurrected and propagated. > > > > xfstests assumes that you are using a userspace that is current with > > the version of the filesystem the kernel supports. If you are > > running a development/special branch of ext4, then you need to be > > running a userspace that understands it completely. If all you are > > doing with the ext4dev fstyp is trying to vector to a different fsck > > program that supports a new set of feature bits, then IMO you are > > doing it all wrong. > > > > Fundamentally, the filesystem is either ext4 or it isn't. If the > > features are never going to make it into mainline ext4, then you > > need a completely different fstype and full userspace support for > > that fstype. Once you have that, you can add the fstype support to > > xfstests. However, just using a different fstyp just to set a > > certain set of feature flags is, again IMO, a pretty stupid way of > > going about this. > > > > The features are going into mainline, but are not there yet. So using feature bits as they were intended is the right thing to do, isn't it? > I did not invent the ext4dev standard, which is pretty well supported > by all relevant tools, but I find it very convenient for the testing. As I understand it, ext4dev is deprecated and should not be used for any new filesystems. When did that status change? Or did you just start using it because it's convenient for your purposes? What happens when someone else decides to use ext4dev for testing incompatible development features because it is convenient for them? > Especially, when I expect my testers to be running a stable > distro release (i.e. F15 or Ubuntu 11.4) and be able to install > my experimental ext4dev module and utils, without it affecting > their (most likely) root ext4/ext3 fs. So get them to use an ext3, XFS, reiser or JFS root filesystem if that's your major concern. That's long been a best practice for configuring a filesystem test box - don't use the same filesystem for your root/stable filesystems as the filesytsem you are testing. e.g. If you pick ext3 for the root filesystem, then you can test ext4, btrfs, xfs, etc changes without having to worry about whether the development module being tested is going to affect your root filesystem.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From dave@fromorbit.com Thu Jun 2 02:01:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 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 p5271Lxe180466 for ; Thu, 2 Jun 2011 02:01:21 -0500 X-ASG-Debug-ID: 1306998079-75bf01060000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7478915DACF1 for ; Thu, 2 Jun 2011 00:01:19 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id snjbPSq9aVnNR9Qy for ; Thu, 02 Jun 2011 00:01:19 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArUDAAky5015LCoegWdsb2JhbABTpjAVAQEWJiXHUIYhBKAp Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl2.internode.on.net with ESMTP; 02 Jun 2011 16:31:18 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1QS1u9-0007aU-9z; Thu, 02 Jun 2011 17:01:17 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1QS1u2-0007Cv-Dx; Thu, 02 Jun 2011 17:01:10 +1000 From: Dave Chinner To: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 02/12] vmscan: shrinker->nr updates race and go wrong Subject: [PATCH 02/12] vmscan: shrinker->nr updates race and go wrong Date: Thu, 2 Jun 2011 17:00:57 +1000 Message-Id: <1306998067-27659-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1306998067-27659-1-git-send-email-david@fromorbit.com> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1306998080 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65365 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 From: Dave Chinner shrink_slab() allows shrinkers to be called in parallel so the struct shrinker can be updated concurrently. It does not provide any exclusio for such updates, so we can get the shrinker->nr value increasing or decreasing incorrectly. As a result, when a shrinker repeatedly returns a value of -1 (e.g. a VFS shrinker called w/ GFP_NOFS), the shrinker->nr goes haywire, sometimes updating with the scan count that wasn't used, sometimes losing it altogether. Worse is when a shrinker does work and that update is lost due to racy updates, which means the shrinker will do the work again! Fix this by making the total_scan calculations independent of shrinker->nr, and making the shrinker->nr updates atomic w.r.t. to other updates via cmpxchg loops. Signed-off-by: Dave Chinner --- include/trace/events/vmscan.h | 26 ++++++++++++++---------- mm/vmscan.c | 43 ++++++++++++++++++++++++++++++---------- 2 files changed, 47 insertions(+), 22 deletions(-) diff --git a/include/trace/events/vmscan.h b/include/trace/events/vmscan.h index c798cd7..6147b4e 100644 --- a/include/trace/events/vmscan.h +++ b/include/trace/events/vmscan.h @@ -311,12 +311,13 @@ TRACE_EVENT(mm_vmscan_lru_shrink_inactive, ); TRACE_EVENT(mm_shrink_slab_start, - TP_PROTO(struct shrinker *shr, struct shrink_control *sc, + TP_PROTO(struct shrinker *shr, struct shrink_control *sc, long shr_nr, unsigned long pgs_scanned, unsigned long lru_pgs, unsigned long cache_items, unsigned long long delta, unsigned long total_scan), - TP_ARGS(shr, sc, pgs_scanned, lru_pgs, cache_items, delta, total_scan), + TP_ARGS(shr, sc, shr_nr, pgs_scanned, lru_pgs, + cache_items, delta, total_scan), TP_STRUCT__entry( __field(struct shrinker *, shr) @@ -331,7 +332,7 @@ TRACE_EVENT(mm_shrink_slab_start, TP_fast_assign( __entry->shr = shr; - __entry->shr_nr = shr->nr; + __entry->shr_nr = shr_nr; __entry->gfp_flags = sc->gfp_mask; __entry->pgs_scanned = pgs_scanned; __entry->lru_pgs = lru_pgs; @@ -353,27 +354,30 @@ TRACE_EVENT(mm_shrink_slab_start, TRACE_EVENT(mm_shrink_slab_end, TP_PROTO(struct shrinker *shr, int shrinker_ret, - unsigned long total_scan), + long old_nr, long new_nr), - TP_ARGS(shr, shrinker_ret, total_scan), + TP_ARGS(shr, shrinker_ret, old_nr, new_nr), TP_STRUCT__entry( __field(struct shrinker *, shr) - __field(long, shr_nr) + __field(long, old_nr) + __field(long, new_nr) __field(int, shrinker_ret) - __field(unsigned long, total_scan) + __field(long, total_scan) ), TP_fast_assign( __entry->shr = shr; - __entry->shr_nr = shr->nr; + __entry->old_nr = old_nr; + __entry->new_nr = new_nr; __entry->shrinker_ret = shrinker_ret; - __entry->total_scan = total_scan; + __entry->total_scan = new_nr - old_nr; ), - TP_printk("shrinker %p: nr %ld total_scan %ld return val %d", + TP_printk("shrinker %p: old_nr %ld new_nr %ld total_scan %ld return val %d", __entry->shr, - __entry->shr_nr, + __entry->old_nr, + __entry->new_nr, __entry->total_scan, __entry->shrinker_ret) ); diff --git a/mm/vmscan.c b/mm/vmscan.c index 48e3fbd..dce2767 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -251,17 +251,29 @@ unsigned long shrink_slab(struct shrink_control *shrink, unsigned long total_scan; unsigned long max_pass; int shrink_ret = 0; + long nr; + long new_nr; + /* + * copy the current shrinker scan count into a local variable + * and zero it so that other concurrent shrinker invocations + * don't also do this scanning work. + */ + do { + nr = shrinker->nr; + } while (cmpxchg(&shrinker->nr, nr, 0) != nr); + + total_scan = nr; max_pass = do_shrinker_shrink(shrinker, shrink, 0); delta = (4 * nr_pages_scanned) / shrinker->seeks; delta *= max_pass; do_div(delta, lru_pages + 1); - shrinker->nr += delta; - if (shrinker->nr < 0) { + total_scan += delta; + if (total_scan < 0) { printk(KERN_ERR "shrink_slab: %pF negative objects to " "delete nr=%ld\n", - shrinker->shrink, shrinker->nr); - shrinker->nr = max_pass; + shrinker->shrink, total_scan); + total_scan = max_pass; } /* @@ -269,13 +281,11 @@ unsigned long shrink_slab(struct shrink_control *shrink, * never try to free more than twice the estimate number of * freeable entries. */ - if (shrinker->nr > max_pass * 2) - shrinker->nr = max_pass * 2; + if (total_scan > max_pass * 2) + total_scan = max_pass * 2; - total_scan = shrinker->nr; - shrinker->nr = 0; - trace_mm_shrink_slab_start(shrinker, shrink, nr_pages_scanned, + trace_mm_shrink_slab_start(shrinker, shrink, nr, nr_pages_scanned, lru_pages, max_pass, delta, total_scan); while (total_scan >= SHRINK_BATCH) { @@ -295,8 +305,19 @@ unsigned long shrink_slab(struct shrink_control *shrink, cond_resched(); } - shrinker->nr += total_scan; - trace_mm_shrink_slab_end(shrinker, shrink_ret, total_scan); + /* + * move the unused scan count back into the shrinker in a + * manner that handles concurrent updates. If we exhausted the + * scan, there is no need to do an update. + */ + do { + nr = shrinker->nr; + new_nr = total_scan + nr; + if (total_scan <= 0) + break; + } while (cmpxchg(&shrinker->nr, nr, new_nr) != nr); + + trace_mm_shrink_slab_end(shrinker, shrink_ret, nr, new_nr); } up_read(&shrinker_rwsem); out: -- 1.7.5.1 From dave@fromorbit.com Thu Jun 2 02:01:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 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 p5271MV6180476 for ; Thu, 2 Jun 2011 02:01:23 -0500 X-ASG-Debug-ID: 1306998079-75bf01060001-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E52E915DACF1 for ; Thu, 2 Jun 2011 00:01:20 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id iu526RXOhQdHAVGd for ; Thu, 02 Jun 2011 00:01:20 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArUDAAky5015LCoegWdsb2JhbABTpjAVAQEWJiXHUIYhBKAp Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl2.internode.on.net with ESMTP; 02 Jun 2011 16:31:18 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1QS1u9-0007af-JP; Thu, 02 Jun 2011 17:01:17 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1QS1u2-0007D6-Lk; Thu, 02 Jun 2011 17:01:10 +1000 From: Dave Chinner To: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 06/12] inode: Make unused inode LRU per superblock Subject: [PATCH 06/12] inode: Make unused inode LRU per superblock Date: Thu, 2 Jun 2011 17:01:01 +1000 Message-Id: <1306998067-27659-7-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1306998067-27659-1-git-send-email-david@fromorbit.com> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1306998081 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65365 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 From: Dave Chinner The inode unused list is currently a global LRU. This does not match the other global filesystem cache - the dentry cache - which uses per-superblock LRU lists. Hence we have related filesystem object types using different LRU reclaimation schemes. To enable a per-superblock filesystem cache shrinker, both of these caches need to have per-sb unused object LRU lists. Hence this patch converts the global inode LRU to per-sb LRUs. The patch only does rudimentary per-sb propotioning in the shrinker infrastructure, as this gets removed when the per-sb shrinker callouts are introduced later on. Signed-off-by: Dave Chinner --- fs/inode.c | 91 +++++++++++++++++++++++++++++++++++++++++++++------ fs/super.c | 1 + include/linux/fs.h | 4 ++ 3 files changed, 85 insertions(+), 11 deletions(-) diff --git a/fs/inode.c b/fs/inode.c index 17fea5b..e039115 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -34,7 +34,7 @@ * inode->i_lock protects: * inode->i_state, inode->i_hash, __iget() * inode_lru_lock protects: - * inode_lru, inode->i_lru + * inode->i_sb->s_inode_lru, inode->i_lru * inode_sb_list_lock protects: * sb->s_inodes, inode->i_sb_list * inode_wb_list_lock protects: @@ -64,7 +64,6 @@ static unsigned int i_hash_shift __read_mostly; static struct hlist_head *inode_hashtable __read_mostly; static __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_hash_lock); -static LIST_HEAD(inode_lru); static DEFINE_SPINLOCK(inode_lru_lock); __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_sb_list_lock); @@ -345,7 +344,8 @@ static void inode_lru_list_add(struct inode *inode) { spin_lock(&inode_lru_lock); if (list_empty(&inode->i_lru)) { - list_add(&inode->i_lru, &inode_lru); + list_add(&inode->i_lru, &inode->i_sb->s_inode_lru); + inode->i_sb->s_nr_inodes_unused++; this_cpu_inc(nr_unused); } spin_unlock(&inode_lru_lock); @@ -356,6 +356,7 @@ static void inode_lru_list_del(struct inode *inode) spin_lock(&inode_lru_lock); if (!list_empty(&inode->i_lru)) { list_del_init(&inode->i_lru); + inode->i_sb->s_nr_inodes_unused--; this_cpu_dec(nr_unused); } spin_unlock(&inode_lru_lock); @@ -621,21 +622,20 @@ static int can_unuse(struct inode *inode) * LRU does not have strict ordering. Hence we don't want to reclaim inodes * with this flag set because they are the inodes that are out of order. */ -static void prune_icache(int nr_to_scan) +static void shrink_icache_sb(struct super_block *sb, int *nr_to_scan) { LIST_HEAD(freeable); int nr_scanned; unsigned long reap = 0; - down_read(&iprune_sem); spin_lock(&inode_lru_lock); - for (nr_scanned = 0; nr_scanned < nr_to_scan; nr_scanned++) { + for (nr_scanned = *nr_to_scan; nr_scanned >= 0; nr_scanned--) { struct inode *inode; - if (list_empty(&inode_lru)) + if (list_empty(&sb->s_inode_lru)) break; - inode = list_entry(inode_lru.prev, struct inode, i_lru); + inode = list_entry(sb->s_inode_lru.prev, struct inode, i_lru); /* * we are inverting the inode_lru_lock/inode->i_lock here, @@ -643,7 +643,7 @@ static void prune_icache(int nr_to_scan) * inode to the back of the list so we don't spin on it. */ if (!spin_trylock(&inode->i_lock)) { - list_move(&inode->i_lru, &inode_lru); + list_move(&inode->i_lru, &sb->s_inode_lru); continue; } @@ -655,6 +655,7 @@ static void prune_icache(int nr_to_scan) (inode->i_state & ~I_REFERENCED)) { list_del_init(&inode->i_lru); spin_unlock(&inode->i_lock); + sb->s_nr_inodes_unused--; this_cpu_dec(nr_unused); continue; } @@ -662,7 +663,7 @@ static void prune_icache(int nr_to_scan) /* recently referenced inodes get one more pass */ if (inode->i_state & I_REFERENCED) { inode->i_state &= ~I_REFERENCED; - list_move(&inode->i_lru, &inode_lru); + list_move(&inode->i_lru, &sb->s_inode_lru); spin_unlock(&inode->i_lock); continue; } @@ -676,7 +677,7 @@ static void prune_icache(int nr_to_scan) iput(inode); spin_lock(&inode_lru_lock); - if (inode != list_entry(inode_lru.next, + if (inode != list_entry(sb->s_inode_lru.next, struct inode, i_lru)) continue; /* wrong inode or list_empty */ /* avoid lock inversions with trylock */ @@ -692,6 +693,7 @@ static void prune_icache(int nr_to_scan) spin_unlock(&inode->i_lock); list_move(&inode->i_lru, &freeable); + sb->s_nr_inodes_unused--; this_cpu_dec(nr_unused); } if (current_is_kswapd()) @@ -699,8 +701,75 @@ static void prune_icache(int nr_to_scan) else __count_vm_events(PGINODESTEAL, reap); spin_unlock(&inode_lru_lock); + *nr_to_scan = nr_scanned; dispose_list(&freeable); +} + +static void prune_icache(int count) +{ + struct super_block *sb, *p = NULL; + int w_count; + int unused = inodes_stat.nr_unused; + int prune_ratio; + int pruned; + + if (unused == 0 || count == 0) + return; + down_read(&iprune_sem); + if (count >= unused) + prune_ratio = 1; + else + prune_ratio = unused / count; + spin_lock(&sb_lock); + list_for_each_entry(sb, &super_blocks, s_list) { + if (list_empty(&sb->s_instances)) + continue; + if (sb->s_nr_inodes_unused == 0) + continue; + sb->s_count++; + /* Now, we reclaim unused dentrins with fairness. + * We reclaim them same percentage from each superblock. + * We calculate number of dentries to scan on this sb + * as follows, but the implementation is arranged to avoid + * overflows: + * number of dentries to scan on this sb = + * count * (number of dentries on this sb / + * number of dentries in the machine) + */ + spin_unlock(&sb_lock); + if (prune_ratio != 1) + w_count = (sb->s_nr_inodes_unused / prune_ratio) + 1; + else + w_count = sb->s_nr_inodes_unused; + pruned = w_count; + /* + * We need to be sure this filesystem isn't being unmounted, + * otherwise we could race with generic_shutdown_super(), and + * end up holding a reference to an inode while the filesystem + * is unmounted. So we try to get s_umount, and make sure + * s_root isn't NULL. + */ + if (down_read_trylock(&sb->s_umount)) { + if ((sb->s_root != NULL) && + (!list_empty(&sb->s_dentry_lru))) { + shrink_icache_sb(sb, &w_count); + pruned -= w_count; + } + up_read(&sb->s_umount); + } + spin_lock(&sb_lock); + if (p) + __put_super(p); + count -= pruned; + p = sb; + /* more work left to do? */ + if (count <= 0) + break; + } + if (p) + __put_super(p); + spin_unlock(&sb_lock); up_read(&iprune_sem); } diff --git a/fs/super.c b/fs/super.c index c755939..ef7caf7 100644 --- a/fs/super.c +++ b/fs/super.c @@ -77,6 +77,7 @@ static struct super_block *alloc_super(struct file_system_type *type) INIT_HLIST_BL_HEAD(&s->s_anon); INIT_LIST_HEAD(&s->s_inodes); INIT_LIST_HEAD(&s->s_dentry_lru); + INIT_LIST_HEAD(&s->s_inode_lru); init_rwsem(&s->s_umount); mutex_init(&s->s_lock); lockdep_set_class(&s->s_umount, &type->s_umount_key); diff --git a/include/linux/fs.h b/include/linux/fs.h index c55d6b7..a96071d 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1393,6 +1393,10 @@ struct super_block { struct list_head s_dentry_lru; /* unused dentry lru */ int s_nr_dentry_unused; /* # of dentry on lru */ + /* inode_lru_lock protects s_inode_lru and s_nr_inodes_unused */ + struct list_head s_inode_lru; /* unused inode lru */ + int s_nr_inodes_unused; /* # of inodes on lru */ + struct block_device *s_bdev; struct backing_dev_info *s_bdi; struct mtd_info *s_mtd; -- 1.7.5.1 From dave@fromorbit.com Thu Jun 2 02:01:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5271Oc2180485 for ; Thu, 2 Jun 2011 02:01:24 -0500 X-ASG-Debug-ID: 1306998081-08f101710000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 125274963B5 for ; Thu, 2 Jun 2011 00:01:21 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id g5jfBVQm8sHAbx1e for ; Thu, 02 Jun 2011 00:01:21 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArYDAAky5015LCoegWdsb2JhbABTG4QuoWcVAQEWJiW2bpBigSuDbIEKBKAp Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl2.internode.on.net with ESMTP; 02 Jun 2011 16:31:18 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1QS1u9-0007aS-7v; Thu, 02 Jun 2011 17:01:17 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1QS1u2-0007Cr-A1; Thu, 02 Jun 2011 17:01:10 +1000 From: Dave Chinner To: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/12] Per superblock cache reclaim Subject: [PATCH 0/12] Per superblock cache reclaim Date: Thu, 2 Jun 2011 17:00:55 +1000 Message-Id: <1306998067-27659-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1306998083 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65366 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 series converts the VFS cache shrinkers to a per-superblock shrinker, and provides a callout from the superblock shrinker to allow the filesystem to shrink internal caches proportionally to the amount of reclaim done to the VFS caches. The motivation for this work is that the VFS caches are dependent caches - dentries pin inodes, and inodes often pin other filesystem specific structures. The caches can grow quite large and it is easy for them to get unbalanced when they are shrunk independently. Reclaim is also focussed on sharing reclaim batches across all superblocks rather than within a superblock, so often reclaim calls only remove a few objects from each superblock at a time. This means that we touch lots of superblocks and LRUs one every shrinker call, and we have to traverse the superblock list all the time. This leads to life-cycle issues - we have to ensure that the superblock we are trying to work on is active and won't go away, and also ensure that the unmount process synchronises correctly with active shrinkers. This is complex and the locks involved cause issues with lockdep refularly reporting false positive lock inversions. Firstly, however, there are several longstanding bugs in the VM shrinker infrastructure that need to be fixed. Firstly, we need to add tracepoints so we can observe the behaviour of the shrinker calculations. Secondly, the shrinker scan calculations are not SMP safe and that is causing shrinkers to either miss work they should be doing, or doing a lot more work than they should. With these fixes in place, I found the reason that I was not able to balance system behaviour on my first attempt at per-sb shrinkers. When a shrinker repeatedly returns "-1" to avoid deadlocks, like will happen when a filesystem is doing GFP_NOFS memory allocations during transactions (and that happens *a lot* during filesystem intensive workloads), then the work is delayed by adding it to shrinker->nr for the next shrinker call to do. This causes the shrinker->nr to increase until it is 2x the number of objects in the cache, and so when the shrinker is finally able to do work, it is effectively told to shrink the entire cache to zero. Twice over. You'll never guess how I found it - the tracepoints I added, perhaps? This problem is fixed by only allowing the shrinker->nr to wind up to half the size of the cache when there are lots of little additions caused by deadlock avoidance. This is sufficient to maintain current levels of performance whilst avoiding the cache trashing problem. So, back to the VFS cache shrinkers. To avoid all the above problems, we can use the per-shrinker context infrastructure that was introduced recently for XFS. By adding a shrinker context to each superblock and registering the shrinker after the superblock is created and unregistering it early in the unmount process we avoid the need for specific unmount synchronisation between the shrinker and the unmount process. Goodbye iprune_sem. Further, by having per-superblock shrinker callouts, we no longer need to walk the superblock list on every shrinker call for both the dentry and inode caches, nor do we need to proportion reclaim between superblocks. That simplifies the cache shrinking implementation significantly. However, to take advantage of this, the first thing we need to do is convert the inode cache LRU to a per-superblock LRU. This is trivial to do - it's just a copy of the dentry cache infrastructure. The inode cache LRU can also be trivially converted to a lock per superblock as well, so that is done at the same time. [ Note that it looks like the same change can be made to the dentry cache LRU, but the simple conversion from the global dcache_lru_lock to per-sb locks results in occasional, strange ENOENT errors during path lookups. So that patch is on hold. ] With a single shrinker - prune_super() - that can address both the per-sb dentry and inode LRUs, it is a simple matter of proportioning the reclaim batch between them. This is done simply by the ratio of objects in the two caches, and the dentry cache is pruned first so that it unpins inodes before the inode cache is pruned. Now that we have prune_super(), reclaiming hundreds of thousands or millions of dentries and inodes in batches of 128 objects does not make much sense. The VM shrinker infrastructure uses a batch size of 128 so that it can regularly reschedule if necessary. The dentry cache pruner already has reschedule checks, and it is trivial to add them to the VFS and XFS inode cache pruners. With that done, there is no reason why we can't use a much larger reclaim batch size and remove more objects from each cache on each visit to them. To do this, add a per-shrinker batch size configuration field, and configure prune_super() to use a larger batch size of 1024 objects. This reduces the number of times we need to make calculations, traffic locks and structures, and means we spend more time in cache specific loops than we would with a smaller batch size. This reduces the overhead of cache shrinking. Overall, the changes result in steady state cache ratios on XFS, ext4 and btrfs of 1 dentry : 3 inodes. The state ratio is 1 inused inode : 2 free inodes (the in-use inode is pinned by the dentry). The following chart demonstrateÑ• ext4 (left) and btrfs (right) cache ratios under steady state 8-way file creation conditions. http://userweb.kernel.org/~dgc/shrinker/ext4-btrfs-cache-ratio.png For XFS, however, the situation is slightly more complex. XFS maintains it's own inode cache (the VFS inode cache is a subset of the XFS cache), and so needs to be able to keep that synchronised with the VFS caches. Hence a filesystem specific callout is added to the superblock pruning method that is proportioned with the VFS dentry and inode caches. Implementing these methods is optional, and this is done for XFS in the last patch in the series. XFS behaviour at different stages of the patch series can be seen in the following chart: http://userweb.kernel.org/~dgc/shrinker/per-sb-shrinker-comparison.png The left-most traces are from a kernel with just the VM shrink_slab() fixes. The middle trace is the same 8-way create workload, but with the inode cache LRU changes and the per-sb superblock shrinker addressing just the VFS dentry and inode caches. The right-most (partial) workload trace is the full series with the XFS inode cache shrinker being called from prune_super(). You can see from the top chart that the cache behaviour has much less variance in the middle trace with the per-sb shrinkers compared to the left-most trace. Also, you can see that the XFS inode cache size follows the VFS inode cache residency much more closely in the right-most trace as a result of using the prune_super() filesystem callout. Yes, these XFS traces are much more variable that the ext4 and btrfs charts, but XFS is putting significantly more pressure on the caches and most allocations are GFP_NOFS, hence triggering the wind-up problems described above. It is, however, much better behaved than the existing shrinker behaviour (worse than the left-most trace with the VM fixes) and much better than the previous (aborted) per-sb shrinker attempts: http://userweb.kernel.org/~dgc/shrinker-2.6.36/fs_mark-2.6.35-rc4-per-sb-basic-16x500-xfs.png http://userweb.kernel.org/~dgc/shrinker-2.6.36/fs_mark-2.6.35-rc4-per-sb-balance-16x500-xfs.png http://userweb.kernel.org/~dgc/shrinker-2.6.36/fs_mark-2.6.35-rc4-per-sb-proportional-16x500-xfs.png --- The following changes since commit c7427d23f7ed695ac226dbe3a84d7f19091d34ce: autofs4: bogus dentry_unhash() added in ->unlink() (2011-05-30 01:50:53 -0400) are available in the git repository at: git://git.kernel.org/pub/scm/linux/people/dgc/xfsdev.git per-sb-shrinker Dave Chinner (12): vmscan: add shrink_slab tracepoints vmscan: shrinker->nr updates race and go wrong vmscan: reduce wind up shrinker->nr when shrinker can't do work vmscan: add customisable shrinker batch size inode: convert inode_stat.nr_unused to per-cpu counters inode: Make unused inode LRU per superblock inode: move to per-sb LRU locks superblock: introduce per-sb cache shrinker infrastructure inode: remove iprune_sem superblock: add filesystem shrinker operations vfs: increase shrinker batch size xfs: make use of new shrinker callout for the inode cache Documentation/filesystems/vfs.txt | 21 ++++++ fs/dcache.c | 121 ++++-------------------------------- fs/inode.c | 124 ++++++++++++------------------------- fs/super.c | 79 +++++++++++++++++++++++- fs/xfs/linux-2.6/xfs_super.c | 26 +++++--- fs/xfs/linux-2.6/xfs_sync.c | 71 ++++++++------------- fs/xfs/linux-2.6/xfs_sync.h | 5 +- include/linux/fs.h | 14 ++++ include/linux/mm.h | 1 + include/trace/events/vmscan.h | 71 +++++++++++++++++++++ mm/vmscan.c | 70 ++++++++++++++++----- 11 files changed, 337 insertions(+), 266 deletions(-) From dave@fromorbit.com Thu Jun 2 02:01:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5271gaY180519 for ; Thu, 2 Jun 2011 02:01:42 -0500 X-ASG-Debug-ID: 1306998100-6c1b03390000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A69D44963BE for ; Thu, 2 Jun 2011 00:01:40 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id skQyoF9FLaF1r6Cn for ; Thu, 02 Jun 2011 00:01:40 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArYDAAky5015LCoegWdsb2JhbABThEmhZxUBARYmJbZukGKBK4NsgQoEmDKHdw Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl2.internode.on.net with ESMTP; 02 Jun 2011 16:31:39 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1QS1u9-0007aT-8K; Thu, 02 Jun 2011 17:01:17 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1QS1u2-0007Ct-C7; Thu, 02 Jun 2011 17:01:10 +1000 From: Dave Chinner To: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 01/12] vmscan: add shrink_slab tracepoints Subject: [PATCH 01/12] vmscan: add shrink_slab tracepoints Date: Thu, 2 Jun 2011 17:00:56 +1000 Message-Id: <1306998067-27659-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1306998067-27659-1-git-send-email-david@fromorbit.com> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1306998101 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65366 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 From: Dave Chinner Іt is impossible to understand what the shrinkers are actually doing without instrumenting the code, so add a some tracepoints to allow insight to be gained. Signed-off-by: Dave Chinner --- include/trace/events/vmscan.h | 67 +++++++++++++++++++++++++++++++++++++++++ mm/vmscan.c | 6 +++- 2 files changed, 72 insertions(+), 1 deletions(-) diff --git a/include/trace/events/vmscan.h b/include/trace/events/vmscan.h index ea422aa..c798cd7 100644 --- a/include/trace/events/vmscan.h +++ b/include/trace/events/vmscan.h @@ -310,6 +310,73 @@ TRACE_EVENT(mm_vmscan_lru_shrink_inactive, show_reclaim_flags(__entry->reclaim_flags)) ); +TRACE_EVENT(mm_shrink_slab_start, + TP_PROTO(struct shrinker *shr, struct shrink_control *sc, + unsigned long pgs_scanned, unsigned long lru_pgs, + unsigned long cache_items, unsigned long long delta, + unsigned long total_scan), + + TP_ARGS(shr, sc, pgs_scanned, lru_pgs, cache_items, delta, total_scan), + + TP_STRUCT__entry( + __field(struct shrinker *, shr) + __field(long, shr_nr) + __field(gfp_t, gfp_flags) + __field(unsigned long, pgs_scanned) + __field(unsigned long, lru_pgs) + __field(unsigned long, cache_items) + __field(unsigned long long, delta) + __field(unsigned long, total_scan) + ), + + TP_fast_assign( + __entry->shr = shr; + __entry->shr_nr = shr->nr; + __entry->gfp_flags = sc->gfp_mask; + __entry->pgs_scanned = pgs_scanned; + __entry->lru_pgs = lru_pgs; + __entry->cache_items = cache_items; + __entry->delta = delta; + __entry->total_scan = total_scan; + ), + + TP_printk("shrinker %p: nr %ld gfp_flags %s pgs_scanned %ld lru_pgs %ld cache items %ld delta %lld total_scan %ld", + __entry->shr, + __entry->shr_nr, + show_gfp_flags(__entry->gfp_flags), + __entry->pgs_scanned, + __entry->lru_pgs, + __entry->cache_items, + __entry->delta, + __entry->total_scan) +); + +TRACE_EVENT(mm_shrink_slab_end, + TP_PROTO(struct shrinker *shr, int shrinker_ret, + unsigned long total_scan), + + TP_ARGS(shr, shrinker_ret, total_scan), + + TP_STRUCT__entry( + __field(struct shrinker *, shr) + __field(long, shr_nr) + __field(int, shrinker_ret) + __field(unsigned long, total_scan) + ), + + TP_fast_assign( + __entry->shr = shr; + __entry->shr_nr = shr->nr; + __entry->shrinker_ret = shrinker_ret; + __entry->total_scan = total_scan; + ), + + TP_printk("shrinker %p: nr %ld total_scan %ld return val %d", + __entry->shr, + __entry->shr_nr, + __entry->total_scan, + __entry->shrinker_ret) +); #endif /* _TRACE_VMSCAN_H */ diff --git a/mm/vmscan.c b/mm/vmscan.c index faa0a08..48e3fbd 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -250,6 +250,7 @@ unsigned long shrink_slab(struct shrink_control *shrink, unsigned long long delta; unsigned long total_scan; unsigned long max_pass; + int shrink_ret = 0; max_pass = do_shrinker_shrink(shrinker, shrink, 0); delta = (4 * nr_pages_scanned) / shrinker->seeks; @@ -274,9 +275,11 @@ unsigned long shrink_slab(struct shrink_control *shrink, total_scan = shrinker->nr; shrinker->nr = 0; + trace_mm_shrink_slab_start(shrinker, shrink, nr_pages_scanned, + lru_pages, max_pass, delta, total_scan); + while (total_scan >= SHRINK_BATCH) { long this_scan = SHRINK_BATCH; - int shrink_ret; int nr_before; nr_before = do_shrinker_shrink(shrinker, shrink, 0); @@ -293,6 +296,7 @@ unsigned long shrink_slab(struct shrink_control *shrink, } shrinker->nr += total_scan; + trace_mm_shrink_slab_end(shrinker, shrink_ret, total_scan); } up_read(&shrinker_rwsem); out: -- 1.7.5.1 From dave@fromorbit.com Thu Jun 2 02:01:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5271hSc180529 for ; Thu, 2 Jun 2011 02:01:43 -0500 X-ASG-Debug-ID: 1306998100-6c1b03390001-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B59B44963C0 for ; Thu, 2 Jun 2011 00:01:41 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 5WeyqZcvQR1BSsoY for ; Thu, 02 Jun 2011 00:01:41 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlcFAAky5015LCoegWdsb2JhbABTmBiOGBUBARYmJcdQhiEEmDKHdw Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl2.internode.on.net with ESMTP; 02 Jun 2011 16:31:39 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1QS1uJ-0007an-Fh; Thu, 02 Jun 2011 17:01:27 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1QS1u2-0007D3-K1; Thu, 02 Jun 2011 17:01:10 +1000 From: Dave Chinner To: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 05/12] inode: convert inode_stat.nr_unused to per-cpu counters Subject: [PATCH 05/12] inode: convert inode_stat.nr_unused to per-cpu counters Date: Thu, 2 Jun 2011 17:01:00 +1000 Message-Id: <1306998067-27659-6-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1306998067-27659-1-git-send-email-david@fromorbit.com> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1306998102 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65366 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 From: Dave Chinner Before we split up the inode_lru_lock, the unused inode counter needs to be made independent of the global inode_lru_lock. Convert it to per-cpu counters to do this. Signed-off-by: Dave Chinner --- fs/inode.c | 16 +++++++++++----- 1 files changed, 11 insertions(+), 5 deletions(-) diff --git a/fs/inode.c b/fs/inode.c index 0f7e88a..17fea5b 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -95,6 +95,7 @@ EXPORT_SYMBOL(empty_aops); struct inodes_stat_t inodes_stat; static DEFINE_PER_CPU(unsigned int, nr_inodes); +static DEFINE_PER_CPU(unsigned int, nr_unused); static struct kmem_cache *inode_cachep __read_mostly; @@ -109,7 +110,11 @@ static int get_nr_inodes(void) static inline int get_nr_inodes_unused(void) { - return inodes_stat.nr_unused; + int i; + int sum = 0; + for_each_possible_cpu(i) + sum += per_cpu(nr_unused, i); + return sum < 0 ? 0 : sum; } int get_nr_dirty_inodes(void) @@ -127,6 +132,7 @@ int proc_nr_inodes(ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { inodes_stat.nr_inodes = get_nr_inodes(); + inodes_stat.nr_unused = get_nr_inodes_unused(); return proc_dointvec(table, write, buffer, lenp, ppos); } #endif @@ -340,7 +346,7 @@ static void inode_lru_list_add(struct inode *inode) spin_lock(&inode_lru_lock); if (list_empty(&inode->i_lru)) { list_add(&inode->i_lru, &inode_lru); - inodes_stat.nr_unused++; + this_cpu_inc(nr_unused); } spin_unlock(&inode_lru_lock); } @@ -350,7 +356,7 @@ static void inode_lru_list_del(struct inode *inode) spin_lock(&inode_lru_lock); if (!list_empty(&inode->i_lru)) { list_del_init(&inode->i_lru); - inodes_stat.nr_unused--; + this_cpu_dec(nr_unused); } spin_unlock(&inode_lru_lock); } @@ -649,7 +655,7 @@ static void prune_icache(int nr_to_scan) (inode->i_state & ~I_REFERENCED)) { list_del_init(&inode->i_lru); spin_unlock(&inode->i_lock); - inodes_stat.nr_unused--; + this_cpu_dec(nr_unused); continue; } @@ -686,7 +692,7 @@ static void prune_icache(int nr_to_scan) spin_unlock(&inode->i_lock); list_move(&inode->i_lru, &freeable); - inodes_stat.nr_unused--; + this_cpu_dec(nr_unused); } if (current_is_kswapd()) __count_vm_events(KSWAPD_INODESTEAL, reap); -- 1.7.5.1 From dave@fromorbit.com Thu Jun 2 02:01:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5271iBM180537 for ; Thu, 2 Jun 2011 02:01:44 -0500 X-ASG-Debug-ID: 1306998102-76f902870000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 808A11ED18EE for ; Thu, 2 Jun 2011 00:01:42 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id BVnfx74hwhde5ET5 for ; Thu, 02 Jun 2011 00:01:42 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArYDAAky5015LCoegWdsb2JhbABThEmhZxUBARYmJbZukGKBK4NsgQoEoCk Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl2.internode.on.net with ESMTP; 02 Jun 2011 16:31:39 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1QS1uJ-0007al-Da; Thu, 02 Jun 2011 17:01:27 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1QS1u2-0007Cx-Fi; Thu, 02 Jun 2011 17:01:10 +1000 From: Dave Chinner To: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 03/12] vmscan: reduce wind up shrinker->nr when shrinker can't do work Subject: [PATCH 03/12] vmscan: reduce wind up shrinker->nr when shrinker can't do work Date: Thu, 2 Jun 2011 17:00:58 +1000 Message-Id: <1306998067-27659-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1306998067-27659-1-git-send-email-david@fromorbit.com> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1306998103 X-Barracuda-Bayes: INNOCENT GLOBAL 0.3076 1.0000 -0.3163 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.32 X-Barracuda-Spam-Status: No, SCORE=-0.32 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65366 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 From: Dave Chinner When a shrinker returns -1 to shrink_slab() to indicate it cannot do any work given the current memory reclaim requirements, it adds the entire total_scan count to shrinker->nr. The idea ehind this is that whenteh shrinker is next called and can do work, it will do the work of the previously aborted shrinker call as well. However, if a filesystem is doing lots of allocation with GFP_NOFS set, then we get many, many more aborts from the shrinkers than we do successful calls. The result is that shrinker->nr winds up to it's maximum permissible value (twice the current cache size) and then when the next shrinker call that can do work is issued, it has enough scan count built up to free the entire cache twice over. This manifests itself in the cache going from full to empty in a matter of seconds, even when only a small part of the cache is needed to be emptied to free sufficient memory. Under metadata intensive workloads on ext4 and XFS, I'm seeing the VFS caches increase memory consumption up to 75% of memory (no page cache pressure) over a period of 30-60s, and then the shrinker empties them down to zero in the space of 2-3s. This cycle repeats over and over again, with the shrinker completely trashing the Ñ–node and dentry caches every minute or so the workload continues. This behaviour was made obvious by the shrink_slab tracepoints added earlier in the series, and made worse by the patch that corrected the concurrent accounting of shrinker->nr. To avoid this problem, stop repeated small increments of the total scan value from winding shrinker->nr up to a value that can cause the entire cache to be freed. We still need to allow it to wind up, so use the delta as the "large scan" threshold check - if the delta is more than a quarter of the entire cache size, then it is a large scan and allowed to cause lots of windup because we are clearly needing to free lots of memory. If it isn't a large scan then limit the total scan to half the size of the cache so that windup never increases to consume the whole cache. Reducing the total scan limit further does not allow enough wind-up to maintain the current levels of performance, whilst a higher threshold does not prevent the windup from freeing the entire cache under sustained workloads. Signed-off-by: Dave Chinner --- mm/vmscan.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index dce2767..3688f47 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -277,6 +277,20 @@ unsigned long shrink_slab(struct shrink_control *shrink, } /* + * Avoid excessive windup on fielsystem shrinkers due to large + * numbers of GFP_NOFS allocations causing the shrinkers to + * return -1 all the time. This results in a large nr being + * built up so when a shrink that can do some work comes along + * it empties the entire cache due to nr >>> max_pass. This is + * bad for sustaining a working set in memory. + * + * Hence only allow nr to go large when a large delta is + * calculated. + */ + if (delta < max_pass / 4) + total_scan = min(total_scan, max_pass / 2); + + /* * Avoid risking looping forever due to too large nr value: * never try to free more than twice the estimate number of * freeable entries. -- 1.7.5.1 From dave@fromorbit.com Thu Jun 2 02:01:47 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5271lQn180561 for ; Thu, 2 Jun 2011 02:01:47 -0500 X-ASG-Debug-ID: 1306998102-76f902870001-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A59F01ED1906 for ; Thu, 2 Jun 2011 00:01:45 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id GfV4XkKcn2mHXBRp for ; Thu, 02 Jun 2011 00:01:45 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlcFAAky5015LCoegWdsb2JhbABTmBiOGBUBARYmJcdQhiEEoCk Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl2.internode.on.net with ESMTP; 02 Jun 2011 16:31:39 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1QS1uJ-0007b1-Rk; Thu, 02 Jun 2011 17:01:27 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1QS1uC-0007DM-Vc; Thu, 02 Jun 2011 17:01:20 +1000 From: Dave Chinner To: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 11/12] vfs: increase shrinker batch size Subject: [PATCH 11/12] vfs: increase shrinker batch size Date: Thu, 2 Jun 2011 17:01:06 +1000 Message-Id: <1306998067-27659-12-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1306998067-27659-1-git-send-email-david@fromorbit.com> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1306998106 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65366 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 From: Dave Chinner Now that the per-sb shrinker is responsible for shrinking 2 or more caches, increase the batch size to keep econmies of scale for shrinking each cache. Increase the shrinker batch size to 1024 objects. To allow for a large increase in batch size, add a conditional reschedule to prune_icache_sb() so that we don't hold the LRU spin lock for too long. This mirrors the behaviour of the __shrink_dcache_sb(), and allows us to increase the batch size without needing to worry about problems caused by long lock hold times. To ensure that filesystems using the per-sb shrinker callouts don't cause problems, document that the object freeing method must reschedule appropriately inside loops. Signed-off-by: Dave Chinner --- Documentation/filesystems/vfs.txt | 5 +++++ fs/super.c | 1 + 2 files changed, 6 insertions(+), 0 deletions(-) diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index dc732d2..2e26973 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt @@ -317,6 +317,11 @@ or bottom half). the VM is trying to reclaim under GFP_NOFS conditions, hence this method does not need to handle that situation itself. + Implementations must include conditional reschedule calls inside any + scanning loop that is done. This allows the VFS to determine + appropriate scan batch sizes without having to worry about whether + implementations will cause holdoff problems due ot large batch sizes. + Whoever sets up the inode is responsible for filling in the "i_op" field. This is a pointer to a "struct inode_operations" which describes the methods that can be performed on individual inodes. diff --git a/fs/super.c b/fs/super.c index b55f968..323a63e 100644 --- a/fs/super.c +++ b/fs/super.c @@ -184,6 +184,7 @@ static struct super_block *alloc_super(struct file_system_type *type) s->s_shrink.seeks = DEFAULT_SEEKS; s->s_shrink.shrink = prune_super; + s->s_shrink.batch = 1024; } out: return s; -- 1.7.5.1 From dave@fromorbit.com Thu Jun 2 02:01:47 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5271kqv180558 for ; Thu, 2 Jun 2011 02:01:46 -0500 X-ASG-Debug-ID: 1306998100-6c1b03390002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3AB014963D3 for ; Thu, 2 Jun 2011 00:01:43 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 5qMrbIUQZt5VvZmV for ; Thu, 02 Jun 2011 00:01:43 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlcFAAky5015LCoegWdsb2JhbABTmBiOGBUBARYmJcdQhiEEoCk Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl2.internode.on.net with ESMTP; 02 Jun 2011 16:31:39 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1QS1uJ-0007am-FY; Thu, 02 Jun 2011 17:01:27 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1QS1u2-0007D0-IB; Thu, 02 Jun 2011 17:01:10 +1000 From: Dave Chinner To: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 04/12] vmscan: add customisable shrinker batch size Subject: [PATCH 04/12] vmscan: add customisable shrinker batch size Date: Thu, 2 Jun 2011 17:00:59 +1000 Message-Id: <1306998067-27659-5-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1306998067-27659-1-git-send-email-david@fromorbit.com> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1306998106 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65366 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 From: Dave Chinner For shrinkers that have their own cond_resched* calls, having shrink_slab break the work down into small batches is not paticularly efficient. Add a custom batchsize field to the struct shrinker so that shrinkers can use a larger batch size if they desire. A value of zero (uninitialised) means "use the default", so behaviour is unchanged by this patch. Signed-off-by: Dave Chinner --- include/linux/mm.h | 1 + mm/vmscan.c | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 9670f71..9b9777a 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1150,6 +1150,7 @@ struct shrink_control { struct shrinker { int (*shrink)(struct shrinker *, struct shrink_control *sc); int seeks; /* seeks to recreate an obj */ + long batch; /* reclaim batch size, 0 = default */ /* These are for internal use */ struct list_head list; diff --git a/mm/vmscan.c b/mm/vmscan.c index 3688f47..a17909f 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -253,6 +253,8 @@ unsigned long shrink_slab(struct shrink_control *shrink, int shrink_ret = 0; long nr; long new_nr; + long batch_size = shrinker->batch ? shrinker->batch + : SHRINK_BATCH; /* * copy the current shrinker scan count into a local variable @@ -302,19 +304,18 @@ unsigned long shrink_slab(struct shrink_control *shrink, trace_mm_shrink_slab_start(shrinker, shrink, nr, nr_pages_scanned, lru_pages, max_pass, delta, total_scan); - while (total_scan >= SHRINK_BATCH) { - long this_scan = SHRINK_BATCH; + while (total_scan >= batch_size) { int nr_before; nr_before = do_shrinker_shrink(shrinker, shrink, 0); shrink_ret = do_shrinker_shrink(shrinker, shrink, - this_scan); + batch_size); if (shrink_ret == -1) break; if (shrink_ret < nr_before) ret += nr_before - shrink_ret; - count_vm_events(SLABS_SCANNED, this_scan); - total_scan -= this_scan; + count_vm_events(SLABS_SCANNED, batch_size); + total_scan -= batch_size; cond_resched(); } -- 1.7.5.1 From dave@fromorbit.com Thu Jun 2 02:01:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5271l5J180579 for ; Thu, 2 Jun 2011 02:01:48 -0500 X-ASG-Debug-ID: 1306998103-1bb100de0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D3FFD1ED1909 for ; Thu, 2 Jun 2011 00:01:45 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id UaWFcLua5hmuLZsL for ; Thu, 02 Jun 2011 00:01:45 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArUDAAky5015LCoegWdsb2JhbABTpjAVAQEWJiXHUIYhBKAp Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl2.internode.on.net with ESMTP; 02 Jun 2011 16:31:39 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1QS1uJ-0007ap-Ka; Thu, 02 Jun 2011 17:01:27 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1QS1u2-0007D8-O2; Thu, 02 Jun 2011 17:01:10 +1000 From: Dave Chinner To: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 07/12] inode: move to per-sb LRU locks Subject: [PATCH 07/12] inode: move to per-sb LRU locks Date: Thu, 2 Jun 2011 17:01:02 +1000 Message-Id: <1306998067-27659-8-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1306998067-27659-1-git-send-email-david@fromorbit.com> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1306998106 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65366 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 From: Dave Chinner With the inode LRUs moving to per-sb structures, there is no longer a need for a global inode_lru_lock. The locking can be made more fine-grained by moving to a per-sb LRU lock, isolating the LRU operations of different filesytsems completely from each other. Signed-off-by: Dave Chinner --- fs/inode.c | 27 +++++++++++++-------------- fs/super.c | 1 + include/linux/fs.h | 3 ++- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/fs/inode.c b/fs/inode.c index e039115..667a29c 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -33,7 +33,7 @@ * * inode->i_lock protects: * inode->i_state, inode->i_hash, __iget() - * inode_lru_lock protects: + * inode->i_sb->s_inode_lru_lock protects: * inode->i_sb->s_inode_lru, inode->i_lru * inode_sb_list_lock protects: * sb->s_inodes, inode->i_sb_list @@ -46,7 +46,7 @@ * * inode_sb_list_lock * inode->i_lock - * inode_lru_lock + * inode->i_sb->s_inode_lru_lock * * inode_wb_list_lock * inode->i_lock @@ -64,8 +64,6 @@ static unsigned int i_hash_shift __read_mostly; static struct hlist_head *inode_hashtable __read_mostly; static __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_hash_lock); -static DEFINE_SPINLOCK(inode_lru_lock); - __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_sb_list_lock); __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_wb_list_lock); @@ -342,24 +340,24 @@ EXPORT_SYMBOL(ihold); static void inode_lru_list_add(struct inode *inode) { - spin_lock(&inode_lru_lock); + spin_lock(&inode->i_sb->s_inode_lru_lock); if (list_empty(&inode->i_lru)) { list_add(&inode->i_lru, &inode->i_sb->s_inode_lru); inode->i_sb->s_nr_inodes_unused++; this_cpu_inc(nr_unused); } - spin_unlock(&inode_lru_lock); + spin_unlock(&inode->i_sb->s_inode_lru_lock); } static void inode_lru_list_del(struct inode *inode) { - spin_lock(&inode_lru_lock); + spin_lock(&inode->i_sb->s_inode_lru_lock); if (!list_empty(&inode->i_lru)) { list_del_init(&inode->i_lru); inode->i_sb->s_nr_inodes_unused--; this_cpu_dec(nr_unused); } - spin_unlock(&inode_lru_lock); + spin_unlock(&inode->i_sb->s_inode_lru_lock); } /** @@ -608,7 +606,8 @@ static int can_unuse(struct inode *inode) /* * Scan `goal' inodes on the unused list for freeable ones. They are moved to a - * temporary list and then are freed outside inode_lru_lock by dispose_list(). + * temporary list and then are freed outside sb->s_inode_lru_lock by + * dispose_list(). * * Any inodes which are pinned purely because of attached pagecache have their * pagecache removed. If the inode has metadata buffers attached to @@ -628,7 +627,7 @@ static void shrink_icache_sb(struct super_block *sb, int *nr_to_scan) int nr_scanned; unsigned long reap = 0; - spin_lock(&inode_lru_lock); + spin_lock(&sb->s_inode_lru_lock); for (nr_scanned = *nr_to_scan; nr_scanned >= 0; nr_scanned--) { struct inode *inode; @@ -638,7 +637,7 @@ static void shrink_icache_sb(struct super_block *sb, int *nr_to_scan) inode = list_entry(sb->s_inode_lru.prev, struct inode, i_lru); /* - * we are inverting the inode_lru_lock/inode->i_lock here, + * we are inverting the sb->s_inode_lru_lock/inode->i_lock here, * so use a trylock. If we fail to get the lock, just move the * inode to the back of the list so we don't spin on it. */ @@ -670,12 +669,12 @@ static void shrink_icache_sb(struct super_block *sb, int *nr_to_scan) if (inode_has_buffers(inode) || inode->i_data.nrpages) { __iget(inode); spin_unlock(&inode->i_lock); - spin_unlock(&inode_lru_lock); + spin_unlock(&sb->s_inode_lru_lock); if (remove_inode_buffers(inode)) reap += invalidate_mapping_pages(&inode->i_data, 0, -1); iput(inode); - spin_lock(&inode_lru_lock); + spin_lock(&sb->s_inode_lru_lock); if (inode != list_entry(sb->s_inode_lru.next, struct inode, i_lru)) @@ -700,7 +699,7 @@ static void shrink_icache_sb(struct super_block *sb, int *nr_to_scan) __count_vm_events(KSWAPD_INODESTEAL, reap); else __count_vm_events(PGINODESTEAL, reap); - spin_unlock(&inode_lru_lock); + spin_unlock(&sb->s_inode_lru_lock); *nr_to_scan = nr_scanned; dispose_list(&freeable); diff --git a/fs/super.c b/fs/super.c index ef7caf7..9c3fa1f 100644 --- a/fs/super.c +++ b/fs/super.c @@ -78,6 +78,7 @@ static struct super_block *alloc_super(struct file_system_type *type) INIT_LIST_HEAD(&s->s_inodes); INIT_LIST_HEAD(&s->s_dentry_lru); INIT_LIST_HEAD(&s->s_inode_lru); + spin_lock_init(&s->s_inode_lru_lock); init_rwsem(&s->s_umount); mutex_init(&s->s_lock); lockdep_set_class(&s->s_umount, &type->s_umount_key); diff --git a/include/linux/fs.h b/include/linux/fs.h index a96071d..bbd478e 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1393,7 +1393,8 @@ struct super_block { struct list_head s_dentry_lru; /* unused dentry lru */ int s_nr_dentry_unused; /* # of dentry on lru */ - /* inode_lru_lock protects s_inode_lru and s_nr_inodes_unused */ + /* s_inode_lru_lock protects s_inode_lru and s_nr_inodes_unused */ + spinlock_t s_inode_lru_lock ____cacheline_aligned_in_smp; struct list_head s_inode_lru; /* unused inode lru */ int s_nr_inodes_unused; /* # of inodes on lru */ -- 1.7.5.1 From dave@fromorbit.com Thu Jun 2 02:01:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 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 p5271nqA180604 for ; Thu, 2 Jun 2011 02:01:49 -0500 X-ASG-Debug-ID: 1306998102-76f902870002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 682ED1ED190D for ; Thu, 2 Jun 2011 00:01:46 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id tk2FGOLHYEq8HN7u for ; Thu, 02 Jun 2011 00:01:46 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArYDAAky5015LCoegWdsb2JhbABThEmhZxUBARYmJbZukGKBK4NsgQoEoCk Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl2.internode.on.net with ESMTP; 02 Jun 2011 16:31:39 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1QS1uJ-0007as-Lz; Thu, 02 Jun 2011 17:01:27 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1QS1u2-0007DA-Qc; Thu, 02 Jun 2011 17:01:10 +1000 From: Dave Chinner To: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: =?UTF-8?q?=5BPATCH=2008/12=5D=20superblock=3A=20introduce=20per-sb=20cache=20shrinker=20infrastructure?= Subject: =?UTF-8?q?=5BPATCH=2008/12=5D=20superblock=3A=20introduce=20per-sb=20cache=20shrinker=20infrastructure?= Date: Thu, 2 Jun 2011 17:01:03 +1000 Message-Id: <1306998067-27659-9-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1306998067-27659-1-git-send-email-david@fromorbit.com> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1306998108 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65366 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 From: Dave Chinner With context based shrinkers, we can implement a per-superblock shrinker that shrinks the caches attached to the superblock. We currently have global shrinkers for the inode and dentry caches that split up into per-superblock operations via a coarse proportioning method that does not batch very well. The global shrinkers also have a dependency - dentries pin inodes - so we have to be very careful about how we register the global shrinkers so that the implicit call order is always correct. With a per-sb shrinker callout, we can encode this dependency directly into the per-sb shrinker, hence avoiding the need for strictly ordering shrinker registrations. We also have no need for any proportioning code for the shrinker subsystem already provides this functionality across all shrinkers. Allowing the shrinker to operate on a single superblock at a time means that we do less superblock list traversals and locking and reclaim should batch more effectively. This should result in less CPU overhead for reclaim and potentially faster reclaim of items from each filesystem. Signed-off-by: Dave Chinner --- fs/dcache.c | 121 +++++---------------------------------------------- fs/inode.c | 117 ++++---------------------------------------------- fs/super.c | 55 +++++++++++++++++++++++- include/linux/fs.h | 7 +++ 4 files changed, 82 insertions(+), 218 deletions(-) diff --git a/fs/dcache.c b/fs/dcache.c index 37f72ee..f73ef23 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -720,13 +720,11 @@ static void shrink_dentry_list(struct list_head *list) * * If flags contains DCACHE_REFERENCED reference dentries will not be pruned. */ -static void __shrink_dcache_sb(struct super_block *sb, int *count, int flags) +static void __shrink_dcache_sb(struct super_block *sb, int count, int flags) { - /* called from prune_dcache() and shrink_dcache_parent() */ struct dentry *dentry; LIST_HEAD(referenced); LIST_HEAD(tmp); - int cnt = *count; relock: spin_lock(&dcache_lru_lock); @@ -754,7 +752,7 @@ relock: } else { list_move_tail(&dentry->d_lru, &tmp); spin_unlock(&dentry->d_lock); - if (!--cnt) + if (!--count) break; } cond_resched_lock(&dcache_lru_lock); @@ -764,83 +762,22 @@ relock: spin_unlock(&dcache_lru_lock); shrink_dentry_list(&tmp); - - *count = cnt; } /** - * prune_dcache - shrink the dcache - * @count: number of entries to try to free + * prune_dcache_sb - shrink the dcache + * @nr_to_scan: number of entries to try to free * - * Shrink the dcache. This is done when we need more memory, or simply when we - * need to unmount something (at which point we need to unuse all dentries). + * Attempt to shrink the superblock dcache LRU by @nr_to_scan entries. This is + * done when we need more memory an called from the superblock shrinker + * function. * - * This function may fail to free any resources if all the dentries are in use. + * This function may fail to free any resources if all the dentries are in + * use. */ -static void prune_dcache(int count) +void prune_dcache_sb(struct super_block *sb, int nr_to_scan) { - struct super_block *sb, *p = NULL; - int w_count; - int unused = dentry_stat.nr_unused; - int prune_ratio; - int pruned; - - if (unused == 0 || count == 0) - return; - if (count >= unused) - prune_ratio = 1; - else - prune_ratio = unused / count; - spin_lock(&sb_lock); - list_for_each_entry(sb, &super_blocks, s_list) { - if (list_empty(&sb->s_instances)) - continue; - if (sb->s_nr_dentry_unused == 0) - continue; - sb->s_count++; - /* Now, we reclaim unused dentrins with fairness. - * We reclaim them same percentage from each superblock. - * We calculate number of dentries to scan on this sb - * as follows, but the implementation is arranged to avoid - * overflows: - * number of dentries to scan on this sb = - * count * (number of dentries on this sb / - * number of dentries in the machine) - */ - spin_unlock(&sb_lock); - if (prune_ratio != 1) - w_count = (sb->s_nr_dentry_unused / prune_ratio) + 1; - else - w_count = sb->s_nr_dentry_unused; - pruned = w_count; - /* - * We need to be sure this filesystem isn't being unmounted, - * otherwise we could race with generic_shutdown_super(), and - * end up holding a reference to an inode while the filesystem - * is unmounted. So we try to get s_umount, and make sure - * s_root isn't NULL. - */ - if (down_read_trylock(&sb->s_umount)) { - if ((sb->s_root != NULL) && - (!list_empty(&sb->s_dentry_lru))) { - __shrink_dcache_sb(sb, &w_count, - DCACHE_REFERENCED); - pruned -= w_count; - } - up_read(&sb->s_umount); - } - spin_lock(&sb_lock); - if (p) - __put_super(p); - count -= pruned; - p = sb; - /* more work left to do? */ - if (count <= 0) - break; - } - if (p) - __put_super(p); - spin_unlock(&sb_lock); + __shrink_dcache_sb(sb, nr_to_scan, DCACHE_REFERENCED); } /** @@ -1215,42 +1152,10 @@ void shrink_dcache_parent(struct dentry * parent) int found; while ((found = select_parent(parent)) != 0) - __shrink_dcache_sb(sb, &found, 0); + __shrink_dcache_sb(sb, found, 0); } EXPORT_SYMBOL(shrink_dcache_parent); -/* - * Scan `sc->nr_slab_to_reclaim' dentries and return the number which remain. - * - * We need to avoid reentering the filesystem if the caller is performing a - * GFP_NOFS allocation attempt. One example deadlock is: - * - * ext2_new_block->getblk->GFP->shrink_dcache_memory->prune_dcache-> - * prune_one_dentry->dput->dentry_iput->iput->inode->i_sb->s_op->put_inode-> - * ext2_discard_prealloc->ext2_free_blocks->lock_super->DEADLOCK. - * - * In this case we return -1 to tell the caller that we baled. - */ -static int shrink_dcache_memory(struct shrinker *shrink, - struct shrink_control *sc) -{ - int nr = sc->nr_to_scan; - gfp_t gfp_mask = sc->gfp_mask; - - if (nr) { - if (!(gfp_mask & __GFP_FS)) - return -1; - prune_dcache(nr); - } - - return (dentry_stat.nr_unused / 100) * sysctl_vfs_cache_pressure; -} - -static struct shrinker dcache_shrinker = { - .shrink = shrink_dcache_memory, - .seeks = DEFAULT_SEEKS, -}; - /** * d_alloc - allocate a dcache entry * @parent: parent of entry to allocate @@ -3030,8 +2935,6 @@ static void __init dcache_init(void) */ dentry_cache = KMEM_CACHE(dentry, SLAB_RECLAIM_ACCOUNT|SLAB_PANIC|SLAB_MEM_SPREAD); - - register_shrinker(&dcache_shrinker); /* Hash may have been set up in dcache_init_early */ if (!hashdist) diff --git a/fs/inode.c b/fs/inode.c index 667a29c..890d95e 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -73,7 +73,7 @@ __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_wb_list_lock); * * We don't actually need it to protect anything in the umount path, * but only need to cycle through it to make sure any inode that - * prune_icache took off the LRU list has been fully torn down by the + * prune_icache_sb took off the LRU list has been fully torn down by the * time we are past evict_inodes. */ static DECLARE_RWSEM(iprune_sem); @@ -537,7 +537,7 @@ void evict_inodes(struct super_block *sb) dispose_list(&dispose); /* - * Cycle through iprune_sem to make sure any inode that prune_icache + * Cycle through iprune_sem to make sure any inode that prune_icache_sb * moved off the list before we took the lock has been fully torn * down. */ @@ -605,9 +605,10 @@ static int can_unuse(struct inode *inode) } /* - * Scan `goal' inodes on the unused list for freeable ones. They are moved to a - * temporary list and then are freed outside sb->s_inode_lru_lock by - * dispose_list(). + * Walk the superblock inode LRU for freeable inodes and attempt to free them. + * This is called from the superblock shrinker function with a number of inodes + * to trim from the LRU. Inodes to be freed are moved to a temporary list and + * then are freed outside inode_lock by dispose_list(). * * Any inodes which are pinned purely because of attached pagecache have their * pagecache removed. If the inode has metadata buffers attached to @@ -621,14 +622,15 @@ static int can_unuse(struct inode *inode) * LRU does not have strict ordering. Hence we don't want to reclaim inodes * with this flag set because they are the inodes that are out of order. */ -static void shrink_icache_sb(struct super_block *sb, int *nr_to_scan) +void prune_icache_sb(struct super_block *sb, int nr_to_scan) { LIST_HEAD(freeable); int nr_scanned; unsigned long reap = 0; + down_read(&iprune_sem); spin_lock(&sb->s_inode_lru_lock); - for (nr_scanned = *nr_to_scan; nr_scanned >= 0; nr_scanned--) { + for (nr_scanned = nr_to_scan; nr_scanned >= 0; nr_scanned--) { struct inode *inode; if (list_empty(&sb->s_inode_lru)) @@ -700,111 +702,11 @@ static void shrink_icache_sb(struct super_block *sb, int *nr_to_scan) else __count_vm_events(PGINODESTEAL, reap); spin_unlock(&sb->s_inode_lru_lock); - *nr_to_scan = nr_scanned; dispose_list(&freeable); -} - -static void prune_icache(int count) -{ - struct super_block *sb, *p = NULL; - int w_count; - int unused = inodes_stat.nr_unused; - int prune_ratio; - int pruned; - - if (unused == 0 || count == 0) - return; - down_read(&iprune_sem); - if (count >= unused) - prune_ratio = 1; - else - prune_ratio = unused / count; - spin_lock(&sb_lock); - list_for_each_entry(sb, &super_blocks, s_list) { - if (list_empty(&sb->s_instances)) - continue; - if (sb->s_nr_inodes_unused == 0) - continue; - sb->s_count++; - /* Now, we reclaim unused dentrins with fairness. - * We reclaim them same percentage from each superblock. - * We calculate number of dentries to scan on this sb - * as follows, but the implementation is arranged to avoid - * overflows: - * number of dentries to scan on this sb = - * count * (number of dentries on this sb / - * number of dentries in the machine) - */ - spin_unlock(&sb_lock); - if (prune_ratio != 1) - w_count = (sb->s_nr_inodes_unused / prune_ratio) + 1; - else - w_count = sb->s_nr_inodes_unused; - pruned = w_count; - /* - * We need to be sure this filesystem isn't being unmounted, - * otherwise we could race with generic_shutdown_super(), and - * end up holding a reference to an inode while the filesystem - * is unmounted. So we try to get s_umount, and make sure - * s_root isn't NULL. - */ - if (down_read_trylock(&sb->s_umount)) { - if ((sb->s_root != NULL) && - (!list_empty(&sb->s_dentry_lru))) { - shrink_icache_sb(sb, &w_count); - pruned -= w_count; - } - up_read(&sb->s_umount); - } - spin_lock(&sb_lock); - if (p) - __put_super(p); - count -= pruned; - p = sb; - /* more work left to do? */ - if (count <= 0) - break; - } - if (p) - __put_super(p); - spin_unlock(&sb_lock); up_read(&iprune_sem); } -/* - * shrink_icache_memory() will attempt to reclaim some unused inodes. Here, - * "unused" means that no dentries are referring to the inodes: the files are - * not open and the dcache references to those inodes have already been - * reclaimed. - * - * This function is passed the number of inodes to scan, and it returns the - * total number of remaining possibly-reclaimable inodes. - */ -static int shrink_icache_memory(struct shrinker *shrink, - struct shrink_control *sc) -{ - int nr = sc->nr_to_scan; - gfp_t gfp_mask = sc->gfp_mask; - - if (nr) { - /* - * Nasty deadlock avoidance. We may hold various FS locks, - * and we don't want to recurse into the FS that called us - * in clear_inode() and friends.. - */ - if (!(gfp_mask & __GFP_FS)) - return -1; - prune_icache(nr); - } - return (get_nr_inodes_unused() / 100) * sysctl_vfs_cache_pressure; -} - -static struct shrinker icache_shrinker = { - .shrink = shrink_icache_memory, - .seeks = DEFAULT_SEEKS, -}; - static void __wait_on_freeing_inode(struct inode *inode); /* * Called with the inode lock held. @@ -1684,7 +1586,6 @@ void __init inode_init(void) (SLAB_RECLAIM_ACCOUNT|SLAB_PANIC| SLAB_MEM_SPREAD), init_once); - register_shrinker(&icache_shrinker); /* Hash may have been set up in inode_init_early */ if (!hashdist) diff --git a/fs/super.c b/fs/super.c index 9c3fa1f..f4630d9 100644 --- a/fs/super.c +++ b/fs/super.c @@ -38,6 +38,50 @@ LIST_HEAD(super_blocks); DEFINE_SPINLOCK(sb_lock); +static int prune_super(struct shrinker *shrink, struct shrink_control *sc) +{ + struct super_block *sb; + int count; + + sb = container_of(shrink, struct super_block, s_shrink); + + /* + * Deadlock avoidance. We may hold various FS locks, and we don't want + * to recurse into the FS that called us in clear_inode() and friends.. + */ + if (sc->nr_to_scan && !(sc->gfp_mask & __GFP_FS)) + return -1; + + /* + * if we can't get the umount lock, then there's no point having the + * shrinker try again because the sb is being torn down. + */ + if (!down_read_trylock(&sb->s_umount)) + return -1; + + if (!sb->s_root) { + up_read(&sb->s_umount); + return -1; + } + + if (sc->nr_to_scan) { + /* proportion the scan between the two cacheÑ• */ + int total; + + total = sb->s_nr_dentry_unused + sb->s_nr_inodes_unused + 1; + count = (sc->nr_to_scan * sb->s_nr_dentry_unused) / total; + + /* prune dcache first as icache is pinned by it */ + prune_dcache_sb(sb, count); + prune_icache_sb(sb, sc->nr_to_scan - count); + } + + count = ((sb->s_nr_dentry_unused + sb->s_nr_inodes_unused) / 100) + * sysctl_vfs_cache_pressure; + up_read(&sb->s_umount); + return count; +} + /** * alloc_super - create new superblock * @type: filesystem type superblock should belong to @@ -116,6 +160,9 @@ static struct super_block *alloc_super(struct file_system_type *type) s->s_op = &default_op; s->s_time_gran = 1000000000; s->cleancache_poolid = -1; + + s->s_shrink.seeks = DEFAULT_SEEKS; + s->s_shrink.shrink = prune_super; } out: return s; @@ -278,7 +325,12 @@ void generic_shutdown_super(struct super_block *sb) { const struct super_operations *sop = sb->s_op; - + /* + * shut down the shrinker first so we know that there are no possible + * races when shrinking the dcache or icache. Removes the need for + * external locking to prevent such races. + */ + unregister_shrinker(&sb->s_shrink); if (sb->s_root) { shrink_dcache_for_umount(sb); sync_filesystem(sb); @@ -366,6 +418,7 @@ retry: list_add(&s->s_instances, &type->fs_supers); spin_unlock(&sb_lock); get_filesystem(type); + register_shrinker(&s->s_shrink); return s; } diff --git a/include/linux/fs.h b/include/linux/fs.h index bbd478e..c3b3462 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -391,6 +391,7 @@ struct inodes_stat_t { #include #include #include +#include #include #include @@ -1440,8 +1441,14 @@ struct super_block { * Saved pool identifier for cleancache (-1 means none) */ int cleancache_poolid; + + struct shrinker s_shrink; /* per-sb shrinker handle */ }; +/* superblock cache pruning functions */ +extern void prune_icache_sb(struct super_block *sb, int nr_to_scan); +extern void prune_dcache_sb(struct super_block *sb, int nr_to_scan); + extern struct timespec current_fs_time(struct super_block *sb); /* -- 1.7.5.1 From dave@fromorbit.com Thu Jun 2 02:01:49 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5271mdx180591 for ; Thu, 2 Jun 2011 02:01:48 -0500 X-ASG-Debug-ID: 1306998103-1bb100de0001-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 265D51ED1909 for ; Thu, 2 Jun 2011 00:01:47 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id vHd2hKWMEjbvgMP6 for ; Thu, 02 Jun 2011 00:01:47 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlcFAAky5015LCoegWdsb2JhbABTmBiOGBUBARYmJcdQhiEEmDKHdw Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl2.internode.on.net with ESMTP; 02 Jun 2011 16:31:46 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1QS1u9-0007ag-Oq; Thu, 02 Jun 2011 17:01:17 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1QS1u2-0007DC-T1; Thu, 02 Jun 2011 17:01:10 +1000 From: Dave Chinner To: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 09/12] inode: remove iprune_sem Subject: [PATCH 09/12] inode: remove iprune_sem Date: Thu, 2 Jun 2011 17:01:04 +1000 Message-Id: <1306998067-27659-10-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1306998067-27659-1-git-send-email-david@fromorbit.com> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1306998108 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65366 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 From: Dave Chinner Now that we have per-sb shrinkers and they are unregistered before evict_inode() is called, there is not longer any race condition for the iprune_sem to protect against. Hence we can remove it. Signed-off-by: Dave Chinner --- fs/inode.c | 21 --------------------- 1 files changed, 0 insertions(+), 21 deletions(-) diff --git a/fs/inode.c b/fs/inode.c index 890d95e..167adfd 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -68,17 +68,6 @@ __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_sb_list_lock); __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_wb_list_lock); /* - * iprune_sem provides exclusion between the icache shrinking and the - * umount path. - * - * We don't actually need it to protect anything in the umount path, - * but only need to cycle through it to make sure any inode that - * prune_icache_sb took off the LRU list has been fully torn down by the - * time we are past evict_inodes. - */ -static DECLARE_RWSEM(iprune_sem); - -/* * Empty aops. Can be used for the cases where the user does not * define any of the address_space operations. */ @@ -535,14 +524,6 @@ void evict_inodes(struct super_block *sb) spin_unlock(&inode_sb_list_lock); dispose_list(&dispose); - - /* - * Cycle through iprune_sem to make sure any inode that prune_icache_sb - * moved off the list before we took the lock has been fully torn - * down. - */ - down_write(&iprune_sem); - up_write(&iprune_sem); } /** @@ -628,7 +609,6 @@ void prune_icache_sb(struct super_block *sb, int nr_to_scan) int nr_scanned; unsigned long reap = 0; - down_read(&iprune_sem); spin_lock(&sb->s_inode_lru_lock); for (nr_scanned = nr_to_scan; nr_scanned >= 0; nr_scanned--) { struct inode *inode; @@ -704,7 +684,6 @@ void prune_icache_sb(struct super_block *sb, int nr_to_scan) spin_unlock(&sb->s_inode_lru_lock); dispose_list(&freeable); - up_read(&iprune_sem); } static void __wait_on_freeing_inode(struct inode *inode); -- 1.7.5.1 From dave@fromorbit.com Thu Jun 2 02:01:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5271mrE180582 for ; Thu, 2 Jun 2011 02:01:48 -0500 X-ASG-Debug-ID: 1306998100-6c1b03390003-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A7C664963DE for ; Thu, 2 Jun 2011 00:01:46 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id ElZRxZHXDuoAcRng for ; Thu, 02 Jun 2011 00:01:46 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArYDAAky5015LCoegWdsb2JhbABThEmhZxUBARYmJbZukGKBK4FwgXyBCgSgKQ Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl2.internode.on.net with ESMTP; 02 Jun 2011 16:31:39 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1QS1uJ-0007az-QG; Thu, 02 Jun 2011 17:01:27 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1QS1uC-0007DF-Tk; Thu, 02 Jun 2011 17:01:20 +1000 From: Dave Chinner To: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: =?UTF-8?q?=5BPATCH=2010/12=5D=20superblock=3A=20add=20filesystem=20shrinker=20operations?= Subject: =?UTF-8?q?=5BPATCH=2010/12=5D=20superblock=3A=20add=20filesystem=20shrinker=20operations?= Date: Thu, 2 Jun 2011 17:01:05 +1000 Message-Id: <1306998067-27659-11-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1306998067-27659-1-git-send-email-david@fromorbit.com> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1306998107 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65366 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 From: Dave Chinner Now we have a per-superblock shrinker implementation, we can add a filesystem specific callout to it to allow filesystem internal caches to be shrunk by the superblock shrinker. Rather than perpetuate the multipurpose shrinker callback API (i.e. nr_to_scan == 0 meaning "tell me how many objects freeable in the cache), two operations will be added. The first will return the number of objects that are freeable, the second is the actual shrinker call. Signed-off-by: Dave Chinner --- Documentation/filesystems/vfs.txt | 16 +++++++++++++ fs/super.c | 43 +++++++++++++++++++++++++++--------- include/linux/fs.h | 2 + 3 files changed, 50 insertions(+), 11 deletions(-) diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index 88b9f55..dc732d2 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt @@ -229,6 +229,8 @@ struct super_operations { ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t); ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t); + int (*nr_cached_objects)(struct super_block *); + void (*free_cached_objects)(struct super_block *, int); }; All methods are called without any locks being held, unless otherwise @@ -301,6 +303,20 @@ or bottom half). quota_write: called by the VFS to write to filesystem quota file. + nr_cached_objects: called by the sb cache shrinking function for the + filesystem to return the number of freeable cached objects it contains. + Optional. + + free_cache_objects: called by the sb cache shrinking function for the + filesystem to scan the number of objects indicated to try to free them. + Optional, but any filesystem implementing this method needs to also + implement ->nr_cached_objects for it to be called correctly. + + We can't do anything with any errors that the filesystem might + encountered, hence the void return type. This will never be called if + the VM is trying to reclaim under GFP_NOFS conditions, hence this + method does not need to handle that situation itself. + Whoever sets up the inode is responsible for filling in the "i_op" field. This is a pointer to a "struct inode_operations" which describes the methods that can be performed on individual inodes. diff --git a/fs/super.c b/fs/super.c index f4630d9..b55f968 100644 --- a/fs/super.c +++ b/fs/super.c @@ -41,7 +41,8 @@ DEFINE_SPINLOCK(sb_lock); static int prune_super(struct shrinker *shrink, struct shrink_control *sc) { struct super_block *sb; - int count; + int fs_objects = 0; + int total_objects; sb = container_of(shrink, struct super_block, s_shrink); @@ -64,22 +65,42 @@ static int prune_super(struct shrinker *shrink, struct shrink_control *sc) return -1; } - if (sc->nr_to_scan) { - /* proportion the scan between the two cacheÑ• */ - int total; + if (sb->s_op && sb->s_op->nr_cached_objects) + fs_objects = sb->s_op->nr_cached_objects(sb); + + total_objects = sb->s_nr_dentry_unused + + sb->s_nr_inodes_unused + fs_objects + 1; - total = sb->s_nr_dentry_unused + sb->s_nr_inodes_unused + 1; - count = (sc->nr_to_scan * sb->s_nr_dentry_unused) / total; + if (sc->nr_to_scan) { + int dentries; + int inodes; + + /* proportion the scan between the cacheÑ• */ + dentries = (sc->nr_to_scan * sb->s_nr_dentry_unused) / + total_objects; + inodes = (sc->nr_to_scan * sb->s_nr_inodes_unused) / + total_objects; + if (fs_objects) + fs_objects = (sc->nr_to_scan * fs_objects) / + total_objects; + /* + * prune the dcache first as the icache is pinned by it, then + * prune the icache, followed by the filesystem specific caches + */ + prune_dcache_sb(sb, dentries); + prune_icache_sb(sb, inodes); - /* prune dcache first as icache is pinned by it */ - prune_dcache_sb(sb, count); - prune_icache_sb(sb, sc->nr_to_scan - count); + if (fs_objects && sb->s_op->free_cached_objects) { + sb->s_op->free_cached_objects(sb, fs_objects); + fs_objects = sb->s_op->nr_cached_objects(sb); + } + total_objects = sb->s_nr_dentry_unused + + sb->s_nr_inodes_unused + fs_objects; } - count = ((sb->s_nr_dentry_unused + sb->s_nr_inodes_unused) / 100) - * sysctl_vfs_cache_pressure; + total_objects = (total_objects / 100) * sysctl_vfs_cache_pressure; up_read(&sb->s_umount); - return count; + return total_objects; } /** diff --git a/include/linux/fs.h b/include/linux/fs.h index c3b3462..4f0ed0a 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1654,6 +1654,8 @@ struct super_operations { ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t); #endif int (*bdev_try_to_free_page)(struct super_block*, struct page*, gfp_t); + int (*nr_cached_objects)(struct super_block *); + void (*free_cached_objects)(struct super_block *, int); }; /* -- 1.7.5.1 From dave@fromorbit.com Thu Jun 2 02:01:51 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5271pes180621 for ; Thu, 2 Jun 2011 02:01:51 -0500 X-ASG-Debug-ID: 1306998102-76f902870003-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6DC021ED190E for ; Thu, 2 Jun 2011 00:01:49 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id vP1kHukR05NyRpFF for ; Thu, 02 Jun 2011 00:01:49 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArUDAAky5015LCoegWdsb2JhbABTpjAVAQEWJiXHUIYhBKAp Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl2.internode.on.net with ESMTP; 02 Jun 2011 16:31:48 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1QS1uZ-0007bX-15; Thu, 02 Jun 2011 17:01:43 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1QS1uD-0007DP-17; Thu, 02 Jun 2011 17:01:21 +1000 From: Dave Chinner To: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 12/12] xfs: make use of new shrinker callout for the inode cache Subject: [PATCH 12/12] xfs: make use of new shrinker callout for the inode cache Date: Thu, 2 Jun 2011 17:01:07 +1000 Message-Id: <1306998067-27659-13-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1306998067-27659-1-git-send-email-david@fromorbit.com> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1306998110 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65366 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 From: Dave Chinner Convert the inode reclaim shrinker to use the new per-sb shrinker operations. This allows much bigger reclaim batches to be used, and allows the XFS inode cache to be shrunk in proportion with the VFS dentry and inode caches. This avoids the problem of the VFS caches being shrunk significantly before the XFS inode cache is shrunk resulting in imbalances in the caches during reclaim. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_super.c | 26 ++++++++++----- fs/xfs/linux-2.6/xfs_sync.c | 71 ++++++++++++++++-------------------------- fs/xfs/linux-2.6/xfs_sync.h | 5 +-- 3 files changed, 46 insertions(+), 56 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 1e3a7ce..b133b69 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c @@ -1087,11 +1087,6 @@ xfs_fs_put_super( { struct xfs_mount *mp = XFS_M(sb); - /* - * Unregister the memory shrinker before we tear down the mount - * structure so we don't have memory reclaim racing with us here. - */ - xfs_inode_shrinker_unregister(mp); xfs_syncd_stop(mp); /* @@ -1491,8 +1486,6 @@ xfs_fs_fill_super( if (error) goto out_filestream_unmount; - xfs_inode_shrinker_register(mp); - error = xfs_mountfs(mp); if (error) goto out_syncd_stop; @@ -1515,7 +1508,6 @@ xfs_fs_fill_super( return 0; out_syncd_stop: - xfs_inode_shrinker_unregister(mp); xfs_syncd_stop(mp); out_filestream_unmount: xfs_filestream_unmount(mp); @@ -1540,7 +1532,6 @@ xfs_fs_fill_super( } fail_unmount: - xfs_inode_shrinker_unregister(mp); xfs_syncd_stop(mp); /* @@ -1566,6 +1557,21 @@ xfs_fs_mount( return mount_bdev(fs_type, flags, dev_name, data, xfs_fs_fill_super); } +static int +xfs_fs_nr_cached_objects( + struct super_block *sb) +{ + return xfs_reclaim_inodes_count(XFS_M(sb)); +} + +static void +xfs_fs_free_cached_objects( + struct super_block *sb, + int nr_to_scan) +{ + xfs_reclaim_inodes_nr(XFS_M(sb), nr_to_scan); +} + static const struct super_operations xfs_super_operations = { .alloc_inode = xfs_fs_alloc_inode, .destroy_inode = xfs_fs_destroy_inode, @@ -1579,6 +1585,8 @@ static const struct super_operations xfs_super_operations = { .statfs = xfs_fs_statfs, .remount_fs = xfs_fs_remount, .show_options = xfs_fs_show_options, + .nr_cached_objects = xfs_fs_nr_cached_objects, + .free_cached_objects = xfs_fs_free_cached_objects, }; static struct file_system_type xfs_fs_type = { diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index 8ecad5f..9bd7e89 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c @@ -179,6 +179,8 @@ restart: if (error == EFSCORRUPTED) break; + cond_resched(); + } while (nr_found && !done); if (skipped) { @@ -986,6 +988,8 @@ restart: *nr_to_scan -= XFS_LOOKUP_BATCH; + cond_resched(); + } while (nr_found && !done && *nr_to_scan > 0); if (trylock && !done) @@ -1003,7 +1007,7 @@ restart: * ensure that when we get more reclaimers than AGs we block rather * than spin trying to execute reclaim. */ - if (trylock && skipped && *nr_to_scan > 0) { + if (skipped && (flags & SYNC_WAIT) && *nr_to_scan > 0) { trylock = 0; goto restart; } @@ -1021,44 +1025,38 @@ xfs_reclaim_inodes( } /* - * Inode cache shrinker. + * Scan a certain number of inodes for reclaim. * * When called we make sure that there is a background (fast) inode reclaim in - * progress, while we will throttle the speed of reclaim via doiing synchronous + * progress, while we will throttle the speed of reclaim via doing synchronous * reclaim of inodes. That means if we come across dirty inodes, we wait for * them to be cleaned, which we hope will not be very long due to the * background walker having already kicked the IO off on those dirty inodes. */ -static int -xfs_reclaim_inode_shrink( - struct shrinker *shrink, - struct shrink_control *sc) +void +xfs_reclaim_inodes_nr( + struct xfs_mount *mp, + int nr_to_scan) { - struct xfs_mount *mp; - struct xfs_perag *pag; - xfs_agnumber_t ag; - int reclaimable; - int nr_to_scan = sc->nr_to_scan; - gfp_t gfp_mask = sc->gfp_mask; - - mp = container_of(shrink, struct xfs_mount, m_inode_shrink); - if (nr_to_scan) { - /* kick background reclaimer and push the AIL */ - xfs_syncd_queue_reclaim(mp); - xfs_ail_push_all(mp->m_ail); + /* kick background reclaimer and push the AIL */ + xfs_syncd_queue_reclaim(mp); + xfs_ail_push_all(mp->m_ail); - if (!(gfp_mask & __GFP_FS)) - return -1; + xfs_reclaim_inodes_ag(mp, SYNC_TRYLOCK | SYNC_WAIT, &nr_to_scan); +} - xfs_reclaim_inodes_ag(mp, SYNC_TRYLOCK | SYNC_WAIT, - &nr_to_scan); - /* terminate if we don't exhaust the scan */ - if (nr_to_scan > 0) - return -1; - } +/* + * Return the number of reclaimable inodes in the filesystem for + * the shrinker to determine how much to reclaim. + */ +int +xfs_reclaim_inodes_count( + struct xfs_mount *mp) +{ + struct xfs_perag *pag; + xfs_agnumber_t ag = 0; + int reclaimable = 0; - reclaimable = 0; - ag = 0; while ((pag = xfs_perag_get_tag(mp, ag, XFS_ICI_RECLAIM_TAG))) { ag = pag->pag_agno + 1; reclaimable += pag->pag_ici_reclaimable; @@ -1067,18 +1065,3 @@ xfs_reclaim_inode_shrink( return reclaimable; } -void -xfs_inode_shrinker_register( - struct xfs_mount *mp) -{ - mp->m_inode_shrink.shrink = xfs_reclaim_inode_shrink; - mp->m_inode_shrink.seeks = DEFAULT_SEEKS; - register_shrinker(&mp->m_inode_shrink); -} - -void -xfs_inode_shrinker_unregister( - struct xfs_mount *mp) -{ - unregister_shrinker(&mp->m_inode_shrink); -} diff --git a/fs/xfs/linux-2.6/xfs_sync.h b/fs/xfs/linux-2.6/xfs_sync.h index e3a6ad2..2e15685 100644 --- a/fs/xfs/linux-2.6/xfs_sync.h +++ b/fs/xfs/linux-2.6/xfs_sync.h @@ -43,6 +43,8 @@ void xfs_quiesce_attr(struct xfs_mount *mp); void xfs_flush_inodes(struct xfs_inode *ip); int xfs_reclaim_inodes(struct xfs_mount *mp, int mode); +int xfs_reclaim_inodes_count(struct xfs_mount *mp); +void xfs_reclaim_inodes_nr(struct xfs_mount *mp, int nr_to_scan); void xfs_inode_set_reclaim_tag(struct xfs_inode *ip); void __xfs_inode_set_reclaim_tag(struct xfs_perag *pag, struct xfs_inode *ip); @@ -54,7 +56,4 @@ int xfs_inode_ag_iterator(struct xfs_mount *mp, int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), int flags); -void xfs_inode_shrinker_register(struct xfs_mount *mp); -void xfs_inode_shrinker_unregister(struct xfs_mount *mp); - #endif -- 1.7.5.1 From amir73il@gmail.com Thu Jun 2 02:11:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p527BjII181056 for ; Thu, 2 Jun 2011 02:11:45 -0500 X-ASG-Debug-ID: 1306998703-76f702c10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ww0-f51.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AC7F31ED1ED6 for ; Thu, 2 Jun 2011 00:11:43 -0700 (PDT) Received: from mail-ww0-f51.google.com (mail-ww0-f51.google.com [74.125.82.51]) by cuda.sgi.com with ESMTP id NISbf3XJK6qPVBSB for ; Thu, 02 Jun 2011 00:11:43 -0700 (PDT) Received: by wwf26 with SMTP id 26so455579wwf.32 for ; Thu, 02 Jun 2011 00:11:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=dL8QxmGZ6VCG4aUhYiToq7L3nTMbjdXvPBvEUtWBGT4=; b=pOBXHOLTd5Z+G6j4bFBa+PLU9AaDzbYRut7uoQ8rNK9YB+2wjELEnPh+cJVuxcDHzl /xmm/OE5C7P5JW/MIskoYBLa2wNMP5tZuKJsTZ14Pn5GIU/8AkZYJzr2oYtezfZ0btNI 9V/kceNks7/Y7A3UUtSUnaDM7kPdWQ+ZJmIGQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=gb3VzPKiiSDgGd4YnyCuTj6zljZDiKAeJ4WiwoTZ4yECpYcYBqcjoaOSuuNDMk3jXM XycXsZDCI4t6lWStKFqn5w0ZKKJTnwu2P74Y5IvwKgWMV2CPwtO0clzsN0FGzcBGgfAE OXemI86dexZQvXDhmJuBbtNf7LenYQ6wjxMio= MIME-Version: 1.0 Received: by 10.216.58.207 with SMTP id q57mr341351wec.63.1306998703278; Thu, 02 Jun 2011 00:11:43 -0700 (PDT) Sender: amir73il@gmail.com Received: by 10.216.221.135 with HTTP; Thu, 2 Jun 2011 00:11:43 -0700 (PDT) In-Reply-To: <20110602064040.GS561@dastard> References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> <20110601232804.GL32466@dastard> <20110602030802.GR561@dastard> <20110602064040.GS561@dastard> Date: Thu, 2 Jun 2011 10:11:43 +0300 X-Google-Sender-Auth: rIoKrke668ApguAmniO_Roldo-E Message-ID: X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP From: "Amir G." To: Dave Chinner Cc: xfs@oss.sgi.com, sandeen@redhat.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Amir Goldstein Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-ww0-f51.google.com[74.125.82.51] X-Barracuda-Start-Time: 1306998704 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65366 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jun 2, 2011 at 9:40 AM, Dave Chinner wrote: > On Thu, Jun 02, 2011 at 06:49:20AM +0300, Amir G. wrote: >> On Thu, Jun 2, 2011 at 6:08 AM, Dave Chinner wrote= : >> > On Thu, Jun 02, 2011 at 05:33:34AM +0300, Amir G. wrote: >> >> On Thu, Jun 2, 2011 at 5:16 AM, Amir G. wrote: >> >> > On Thu, Jun 2, 2011 at 2:28 AM, Dave Chinner = wrote: >> > Personally I think that ext4dev shouldn't be supported at all. A >> > special fstyp iwhile ext4 was being developed was, IMO, a stupid >> > thing to do in the first place, and I was happy when it died. It >> > should not be resurrected and propagated. >> > >> > xfstests assumes that you are using a userspace that is current with >> > the version of the filesystem the kernel supports. If you are >> > running a development/special branch of ext4, then you need to be >> > running a userspace that understands it completely. If all you are >> > doing with the ext4dev fstyp is trying to vector to a different fsck >> > program that supports a new set of feature bits, then IMO you are >> > doing it all wrong. >> > >> > Fundamentally, the filesystem is either ext4 or it isn't. If the >> > features are never going to make it into mainline ext4, then you >> > need a completely different fstype and full userspace support for >> > that fstype. Once you have that, you can add the fstype support to >> > xfstests. However, just using a different fstyp just to set a >> > certain set of feature flags is, again IMO, a pretty stupid way of >> > going about this. >> > >> >> The features are going into mainline, but are not there yet. > > So using feature bits as they were intended is the right thing to > do, isn't it? I am not sure what you mean by that. The fact that to this day fsck.ext2/3/4 have always been the same file (hence support the same feature set) does not mean that they have to be that way by design. on my test system fsck.ext4dev must be used to test ext4dev, which has newer features than ext4. I fail to see the problem with that. > >> I did not invent the ext4dev standard, which is pretty well supported >> by all relevant tools, but I find it very convenient for the testing. > > As I understand it, ext4dev is deprecated and should not be used for > any new filesystems. When did that status change? > > Or did you just start using it because it's convenient for your > purposes? =A0What happens when someone else decides to use ext4dev for > testing incompatible development features because it is convenient > for them? > The way I see it, ext4dev is a tool for ext4 developers (and testers). Anyone can use it for their own needs and it would be convenient for everyo= ne. I never suggested that Fedora push my ext4dev utils as a standard package. But me and my group can use it to test the snapshots feature and Ted and his group can use it to test the allocation clusters feature. >> Especially, when I expect my testers to be running a stable >> distro release (i.e. F15 or Ubuntu 11.4) and be able to install >> my experimental ext4dev module and utils, without it affecting >> their (most likely) root ext4/ext3 fs. > > So get them to use an ext3, XFS, reiser or JFS root filesystem if > that's your major concern. That's long been a best practice for > configuring a filesystem test box - don't use the same filesystem > for your root/stable filesystems as the filesytsem you are testing. > > e.g. If you pick ext3 for the root filesystem, then you can test > ext4, btrfs, xfs, etc changes without having to worry about whether > the development module being tested is going to affect your root > filesystem.... You make it sound as if I have a flock of testers out there waiting for me to feed them with use cases to test and who abide to my setup instructions. Wake up call! this is not the case for me and for most developers. If I'm lucky, I can get a e few testers who will say: OK, if all I have to do is download this package and run 'make test' I can spare an hour to play with it. So, yes, it's true. There are other ways to accomplish what I am doing, but I am going out of my way to try to make the life of developers and test= ers easier and you are doing the exact opposite by raising objections to a rath= er trivial and harmless patch. Let me ask you this: which FSTYP will be useful to more developers ext4dev or reiserfs? > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > From amir73il@gmail.com Thu Jun 2 02:16:51 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_62,J_CHICKENPOX_65,J_CHICKENPOX_66,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p527GoZe181299 for ; Thu, 2 Jun 2011 02:16:51 -0500 X-ASG-Debug-ID: 1306999008-615a026a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ww0-f51.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F229F15DAB52 for ; Thu, 2 Jun 2011 00:16:48 -0700 (PDT) Received: from mail-ww0-f51.google.com (mail-ww0-f51.google.com [74.125.82.51]) by cuda.sgi.com with ESMTP id cOEGgbVnwF9MMFbi for ; Thu, 02 Jun 2011 00:16:48 -0700 (PDT) Received: by wwf26 with SMTP id 26so458122wwf.32 for ; Thu, 02 Jun 2011 00:16:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=ndzUcD+J+Y063EdSku+q83J+cxevrK/zWStWkiBeVN4=; b=AtKRnm5+OWkaRxtyaq5McOLZEyt6MI8DemVE3zdss/kyIcpsRL6un1ft73F7LJOgQk Hm6D4jXTRIntXDOif5Dk+GlleJkVl9Q3fxcpIL5hHL/KdiS7Qx7Ry6+ngB8d4leYA3IJ +Pgk21atNhIX2aMqzC4m9yQcx+vKlINZ20WF4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=QbcZpeNebxKX4sc7dfbkrrx/Zi1B7veiANmjj+yN8WtsbLFlfVviSUvkIcG4BK29hy Vrke6tVNlTDuZRpdInsN9ymCLoC4YjXmc8AvxnNg4FcNs1U0O/IJYgUacd2DRRLylQ1a /3H8dAEXbJaF8LY/yGAPUzCmIpc+L4WHglCJI= MIME-Version: 1.0 Received: by 10.216.232.146 with SMTP id n18mr340977weq.93.1306999008167; Thu, 02 Jun 2011 00:16:48 -0700 (PDT) Sender: amir73il@gmail.com Received: by 10.216.221.135 with HTTP; Thu, 2 Jun 2011 00:16:48 -0700 (PDT) In-Reply-To: References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> <20110601232804.GL32466@dastard> Date: Thu, 2 Jun 2011 10:16:48 +0300 X-Google-Sender-Auth: o3t7vBnIRy7BlEMrQH41g73Dv6k Message-ID: X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP From: "Amir G." To: Dave Chinner Cc: xfs@oss.sgi.com, sandeen@redhat.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Amir Goldstein Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-ww0-f51.google.com[74.125.82.51] X-Barracuda-Start-Time: 1306999009 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, MAILTO_TO_SPAM_ADDR X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65367 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 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 On Thu, Jun 2, 2011 at 5:33 AM, Amir G. wr= ote: > On Thu, Jun 2, 2011 at 5:16 AM, Amir G. = wrote: >> On Thu, Jun 2, 2011 at 2:28 AM, Dave Chinner wrote= : >>> On Wed, Jun 01, 2011 at 03:56:52PM +0300, amir73il@users.sourceforge.ne= t wrote: >>>> From: Amir Goldstein >>>> >>>> From: Amir Goldstein >>>> >>>> blkid knows to identify the ext4dev FSTYP of a partition that was >>>> formatted with mkfs.ext4dev. >>>> quota tools and various util-linux utils are also aware of ext4dev, >>>> so ext4dev shares the same capabilities as ext4. >>>> >>>> Signed-off-by: Amir Goldstein >>>> Tested-by: Sergey Ivanov >>>> --- >>>> ext4dev is used to test experimental ext4 code in mutual existance >>>> with production ext4 code on the same system. >>>> >>>> Specifically, ext4 snapshots code is available for testing as a >>>> stand-alone ext4dev module for Fedora 15 and Ubuntu 11.4 >>>> (see http://next3.sf.net). >>>> >>>> v1 -> v2: >>>> - undo change of fsck -t $FSTYP to fsck.$FSTYP >>>> >>>> =A0common.defrag | =A0 =A02 +- >>>> =A0common.quota =A0| =A0 =A04 ++-- >>>> =A0common.rc =A0 =A0 | =A0 10 +++++----- >>>> =A03 files changed, 8 insertions(+), 8 deletions(-) >>>> >>>> diff --git a/common.defrag b/common.defrag >>>> index 1bcf01d..4850803 100644 >>>> --- a/common.defrag >>>> +++ b/common.defrag >>>> @@ -26,7 +26,7 @@ _require_defrag() >>>> =A0 =A0 =A0xfs) >>>> =A0 =A0 =A0 =A0 =A0DEFRAG_PROG=3D/usr/sbin/xfs_fsr >>>> =A0 =A0 =A0 ;; >>>> - =A0 =A0ext4) >>>> + =A0 =A0ext4|ext4dev) >>>> =A0 =A0 =A0 =A0 =A0DEFRAG_PROG=3D/usr/bin/e4defrag >>>> =A0 =A0 =A0 ;; >>>> =A0 =A0 =A0*) >>>> diff --git a/common.quota b/common.quota >>>> index 3c87ce1..b6d5f16 100644 >>>> --- a/common.quota >>>> +++ b/common.quota >>>> @@ -29,7 +29,7 @@ _require_quota() >>>> =A0 =A0 =A0[ -n $QUOTA_PROG ] || _notrun "Quota user tools not install= ed" >>>> >>>> =A0 =A0 =A0case $FSTYP in >>>> - =A0 =A0ext2|ext3|ext4|reiserfs) >>>> + =A0 =A0ext2|ext3|ext4|ext4dev|reiserfs) >>>> =A0 =A0 =A0 if [ ! -d /proc/sys/fs/quota ]; then >>>> =A0 =A0 =A0 =A0 =A0 _notrun "Installed kernel does not support quotas" >>>> =A0 =A0 =A0 fi >>>> @@ -237,7 +237,7 @@ _check_quota_usage() >>>> =A0 =A0 =A0 # Sync to get delalloc to disk >>>> =A0 =A0 =A0 sync >>>> =A0 =A0 =A0 VFS_QUOTA=3D0 >>>> - =A0 =A0 if [ $FSTYP =3D "ext2" -o $FSTYP =3D "ext3" -o $FSTYP =3D "e= xt4" -o $FSTYP =3D "reiserfs" ]; then >>>> + =A0 =A0 if [ $FSTYP =3D "ext2" -o $FSTYP =3D "ext3" -o $FSTYP =3D "e= xt4" -o $FSTYP =3D "ext4dev" -o $FSTYP =3D "reiserfs" ]; then >>>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 VFS_QUOTA=3D1 >>>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 quotaon -f -u -g $SCRATCH_MNT 2>/dev/null >>>> =A0 =A0 =A0 fi >>> >>> Perhaps this should be changes to a case statement? >>> >> >> you're making me go to v3 in such a trivial patch, but ok, I'll do it ;-= ) >> > > I rechecked the fsck -t ext4dev vs. fsck.ext4dev. > fsck -t ext4dev doesn't work for me :-( > Sergey has a newer version of =A0util-linux-ng > see: > > amir@qalab:~/xfstests$ sudo fsck -t ext4dev -nf /dev/sda5 > fsck from util-linux-ng 2.17.2 > e2fsck 1.41.14 (22-Dec-2010) > /dev/sda5 has unsupported feature(s): FEATURE_C7 FEATURE_C8 FEATURE_R7 > e2fsck: Get a newer version of e2fsck! OK, after upgrading to newer util-linux and building it from git, which also didn't help, I finally found who to blame - me. I had an old (noauto) entry in /etc/fstab which claimed that /dev/sda5 is e= xt4. fsck was picking up that entry and insisting that /dev/sda5 is ext4 (regardless of what it really is) blkid isn't doing that silly thing. Amir From ahatch@psdschools.org Thu Jun 2 03:47:47 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.1 required=5.0 tests=BAYES_50,HTML_MESSAGE, MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 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 p528lkuk185114 for ; Thu, 2 Jun 2011 03:47:47 -0500 X-ASG-Debug-ID: 1307004464-1bb203700000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from psdschools.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A7A38167B3CF for ; Thu, 2 Jun 2011 01:47:45 -0700 (PDT) Received: from psdschools.org (mailcluster.psdschools.org [164.104.65.30]) by cuda.sgi.com with ESMTP id 0gsD1pu2qneHcjt5 for ; Thu, 02 Jun 2011 01:47:45 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from oss.sgi.com ([164.104.196.45]) by sw01.psdschools.org for ; Thu, 02 Jun 2011 02:47:45 -0600 Received: from ([164.104.196.58]) by im01.psdschools.org with ESMTP with TLS id 9ST19K1.53795755; Thu, 02 Jun 2011 02:45:23 -0600 Received: from EXCH2.psdschools.org (164.104.196.52) by EDGE1.psdschools.org (164.104.196.58) with Microsoft SMTP Server (TLS) id 8.3.137.0; Thu, 2 Jun 2011 02:45:09 -0600 Received: from EXCHSTAFF.psdschools.org ([fe80::dd62:5dac:7107:f0d2]) by EXCH2.psdschools.org ([2002:a468:c434::a468:c434]) with mapi; Thu, 2 Jun 2011 02:45:22 -0600 From: "Hatch, Amy - FCH" To: "info@webmail.org" Date: Thu, 2 Jun 2011 02:45:21 -0600 X-ASG-Orig-Subj: =?windows-1256?Q?Keeping_track_of_your_usage=FE?= Subject: =?windows-1256?Q?Keeping_track_of_your_usage=FE?= Thread-Topic: =?windows-1256?Q?Keeping_track_of_your_usage=FE?= Thread-Index: AQHMIQFoqNJ25t0qlUiYRfOPktyiFQ== Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: multipart/alternative; boundary="_000_F7C87F511A5C4541A4A981058ECF1F02019DF7B3EEC9EXCHSTAFFps_" MIME-Version: 1.0 X-Barracuda-Connect: mailcluster.psdschools.org[164.104.65.30] X-Barracuda-Start-Time: 1307004465 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 --_000_F7C87F511A5C4541A4A981058ECF1F02019DF7B3EEC9EXCHSTAFFps_ Content-Type: text/plain; charset="windows-1256" Content-Transfer-Encoding: quoted-printable A Computer Database Maintenance is currently going on our Web mail Message Center. Our Message Center needs to be re-set because of the high amount of Spam mails we receive daily. A Quarantine Maintenance will help us prevent this everyday dilemma. To re-validate your mailbox Please: Click Here Failure to re-validate your mailbox will render your e-mail in-active from our database. Thanks System Administrator --_000_F7C87F511A5C4541A4A981058ECF1F02019DF7B3EEC9EXCHSTAFFps_ Content-Type: text/html; charset="windows-1256" Content-Transfer-Encoding: quoted-printable
A Computer Database Maintenance is currently going on our Web= mail Message
Center. Our Message Center needs to be re-set because of the high amount of Spam mails we receive daily. A Quarantine Maintenance will help us
prevent this everyday dilemma.
To re-validate your mailbox Please:

Click Here

Failure to re-validate your mailbox will render your e-mail in-active from<= br> our database.
Thanks
System Administrator
--_000_F7C87F511A5C4541A4A981058ECF1F02019DF7B3EEC9EXCHSTAFFps_-- From nikai@nikai.net Thu Jun 2 04:31:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p529VCqf186667 for ; Thu, 2 Jun 2011 04:31:12 -0500 X-ASG-Debug-ID: 1307007070-4a1c032b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from webhosting01.bon.m2soft.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DD7D44964E4 for ; Thu, 2 Jun 2011 02:31:10 -0700 (PDT) Received: from webhosting01.bon.m2soft.com (webhosting01.bon.m2soft.com [195.38.20.32]) by cuda.sgi.com with ESMTP id 2Jv6X7A2eVBNO4i6 for ; Thu, 02 Jun 2011 02:31:10 -0700 (PDT) Received: from absol.kitzblitz (85-127-38-186.dynamic.xdsl-line.inode.at [85.127.38.186]) (authenticated bits=0) by webhosting01.bon.m2soft.com (8.13.8/8.13.8) with ESMTP id p529MmQ8002561; Thu, 2 Jun 2011 11:22:49 +0200 Date: Thu, 2 Jun 2011 11:30:26 +0200 From: Nicolas Kaiser To: Dave Chinner Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 11/12] vfs: increase shrinker batch size Subject: Re: [PATCH 11/12] vfs: increase shrinker batch size Message-ID: <20110602113026.7291b1a7@absol.kitzblitz> In-Reply-To: <1306998067-27659-12-git-send-email-david@fromorbit.com> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> <1306998067-27659-12-git-send-email-david@fromorbit.com> Organization: - Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAAAXNSR0IArs4c6QAAAAZQTFRF AJnV/f/88sgWwwAAAKNJREFUGNM10LENwyAQheFHKCgZgTVSRHI2gy5reROTDSiREvnyHhdXnwXS+ T+ACJgBYTiGSmDDOTdR7XDeTi9ksxEcoKFcTOCJLO7kC5SWFjPZCR69nI9+x5u6OJM1RN5UYUiNKa ZRpHHUoqh1v8hKEZ1FSGCrYOvgVmxd9DIXcSJwLTycm7bj0e4wkJGB48w/FckAwUKl/OGDZAcqItk BU+wHXLqKsjYyPeMAAAAASUVORK5CYII= X-Mailer: Claws Mail (Linux) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Barracuda-Connect: webhosting01.bon.m2soft.com[195.38.20.32] X-Barracuda-Start-Time: 1307007070 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65376 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 noticed below two typos. * Dave Chinner : > From: Dave Chinner > > Now that the per-sb shrinker is responsible for shrinking 2 or more > caches, increase the batch size to keep econmies of scale for economies (..) > Documentation/filesystems/vfs.txt | 5 +++++ > fs/super.c | 1 + > 2 files changed, 6 insertions(+), 0 deletions(-) > > diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt > index dc732d2..2e26973 100644 > --- a/Documentation/filesystems/vfs.txt > +++ b/Documentation/filesystems/vfs.txt > @@ -317,6 +317,11 @@ or bottom half). > the VM is trying to reclaim under GFP_NOFS conditions, hence this > method does not need to handle that situation itself. > > + Implementations must include conditional reschedule calls inside any > + scanning loop that is done. This allows the VFS to determine > + appropriate scan batch sizes without having to worry about whether > + implementations will cause holdoff problems due ot large batch sizes. due to Best regards, Nicolas Kaiser From lczerner@redhat.com Thu Jun 2 07:10:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.4.0-r929098 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 p52CANtC197044 for ; Thu, 2 Jun 2011 07:10:24 -0500 X-ASG-Debug-ID: 1307016622-0483030f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 708BC167E5AE for ; Thu, 2 Jun 2011 05:10:22 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id hIFU3Jp2kR3kwKgT for ; Thu, 02 Jun 2011 05:10:22 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p52CAFZ2026454 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 2 Jun 2011 08:10:15 -0400 Received: from dhcp-1-233.brq.redhat.com (dhcp-1-233.brq.redhat.com [10.34.1.233]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id p52CABTM004550 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 2 Jun 2011 08:10:12 -0400 Date: Thu, 2 Jun 2011 14:10:11 +0200 (CEST) From: Lukas Czerner X-X-Sender: lukas@dhcp-27-109.brq.redhat.com To: "Amir G." cc: Dave Chinner , xfs@oss.sgi.com, sandeen@redhat.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Amir Goldstein X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP In-Reply-To: Message-ID: References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> <20110601232804.GL32466@dastard> <20110602030802.GR561@dastard> <20110602064040.GS561@dastard> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-854799617-1307016615=:3931" X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1307016623 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 message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-854799617-1307016615=:3931 Content-Type: TEXT/PLAIN; charset=ISO-8859-1 Content-Transfer-Encoding: 8BIT On Thu, 2 Jun 2011, Amir G. wrote: > On Thu, Jun 2, 2011 at 9:40 AM, Dave Chinner wrote: > > On Thu, Jun 02, 2011 at 06:49:20AM +0300, Amir G. wrote: > >> On Thu, Jun 2, 2011 at 6:08 AM, Dave Chinner wrote: > >> > On Thu, Jun 02, 2011 at 05:33:34AM +0300, Amir G. wrote: > >> >> On Thu, Jun 2, 2011 at 5:16 AM, Amir G. wrote: > >> >> > On Thu, Jun 2, 2011 at 2:28 AM, Dave Chinner wrote: > >> > Personally I think that ext4dev shouldn't be supported at all. A > >> > special fstyp iwhile ext4 was being developed was, IMO, a stupid > >> > thing to do in the first place, and I was happy when it died. It > >> > should not be resurrected and propagated. > >> > > >> > xfstests assumes that you are using a userspace that is current with > >> > the version of the filesystem the kernel supports. If you are > >> > running a development/special branch of ext4, then you need to be > >> > running a userspace that understands it completely. If all you are > >> > doing with the ext4dev fstyp is trying to vector to a different fsck > >> > program that supports a new set of feature bits, then IMO you are > >> > doing it all wrong. > >> > > >> > Fundamentally, the filesystem is either ext4 or it isn't. If the > >> > features are never going to make it into mainline ext4, then you > >> > need a completely different fstype and full userspace support for > >> > that fstype. Once you have that, you can add the fstype support to > >> > xfstests. However, just using a different fstyp just to set a > >> > certain set of feature flags is, again IMO, a pretty stupid way of > >> > going about this. > >> > > >> > >> The features are going into mainline, but are not there yet. > > > > So using feature bits as they were intended is the right thing to > > do, isn't it? > > I am not sure what you mean by that. > The fact that to this day fsck.ext2/3/4 have always been the same > file (hence support the same feature set) does not mean that they have > to be that way by design. > > on my test system fsck.ext4dev must be used to test ext4dev, which has > newer features than ext4. And that's perfectly fine, you can use whatever you want on you system. > I fail to see the problem with that. > > > > >> I did not invent the ext4dev standard, which is pretty well supported > >> by all relevant tools, but I find it very convenient for the testing. > > > > As I understand it, ext4dev is deprecated and should not be used for > > any new filesystems. When did that status change? > > > > Or did you just start using it because it's convenient for your > > purposes?  What happens when someone else decides to use ext4dev for > > testing incompatible development features because it is convenient > > for them? > > > > The way I see it, ext4dev is a tool for ext4 developers (and testers). > Anyone can use it for their own needs and it would be convenient for everyone. > I never suggested that Fedora push my ext4dev utils as a standard package. > But me and my group can use it to test the snapshots feature and Ted > and his group can use it to test the allocation clusters feature. ext4dev is not a tool for ext4 developers. It has been deprecated and does not exist anymore, looking at kernel config there is nothing like that. If you do not want to have different filesystem for your system to be able to test ext4 without breaking your system ,than it is perfectly fine to write yourself such helpers. But I do not see any reason for pushing this stuff to other tools. In fact it should have been removed from everywhere, since it does not exist anymore ... or has something changed ? Are we resurrecting ext4dev ? Then we should start somewhere else do not you think ? > > > >> Especially, when I expect my testers to be running a stable > >> distro release (i.e. F15 or Ubuntu 11.4) and be able to install > >> my experimental ext4dev module and utils, without it affecting > >> their (most likely) root ext4/ext3 fs. > > > > So get them to use an ext3, XFS, reiser or JFS root filesystem if > > that's your major concern. That's long been a best practice for > > configuring a filesystem test box - don't use the same filesystem > > for your root/stable filesystems as the filesytsem you are testing. > > > > e.g. If you pick ext3 for the root filesystem, then you can test > > ext4, btrfs, xfs, etc changes without having to worry about whether > > the development module being tested is going to affect your root > > filesystem.... > > You make it sound as if I have a flock of testers out there waiting for > me to feed them with use cases to test and who abide to my setup > instructions. > > Wake up call! this is not the case for me and for most developers. > If I'm lucky, I can get a e few testers who will say: > OK, if all I have to do is download this package and run 'make test' > I can spare an hour to play with it. > > So, yes, it's true. There are other ways to accomplish what I am doing, > but I am going out of my way to try to make the life of developers and testers > easier and you are doing the exact opposite by raising objections to a rather > trivial and harmless patch. What is easier for testers and developers ? I fail to see the reason for including non-existing FSTYP into xfstests while it should be forgotten by now. Just provide sources with whatever fs name you choose (or just patches for ext4 preferably), provide patches to e2fsprogs and patches to xfstests if you want people to test with it. And it should be easy for every tester, or developer to use it, shouldn't it ? Is that a problem ? -Lukas > > Let me ask you this: which FSTYP will be useful to more developers > ext4dev or reiserfs? > > > > > Cheers, > > > > Dave. > > -- > > Dave Chinner > > david@fromorbit.com > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > --8323328-854799617-1307016615=:3931-- From zohar@linux.vnet.ibm.com Thu Jun 2 07:25:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p52CPlrA197690 for ; Thu, 2 Jun 2011 07:25:48 -0500 X-ASG-Debug-ID: 1307017546-017200840000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e4.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6A20B1660240 for ; Thu, 2 Jun 2011 05:25:46 -0700 (PDT) Received: from e4.ny.us.ibm.com (e4.ny.us.ibm.com [32.97.182.144]) by cuda.sgi.com with ESMTP id oYwJEJwGCfkECbMZ for ; Thu, 02 Jun 2011 05:25:46 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay03.pok.ibm.com (d01relay03.pok.ibm.com [9.56.227.235]) by e4.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p52C4RlA006003 for ; Thu, 2 Jun 2011 08:04:27 -0400 Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay03.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p52CPePN092752 for ; Thu, 2 Jun 2011 08:25:40 -0400 Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p528PRhH019067 for ; Thu, 2 Jun 2011 05:25:28 -0300 Received: from localhost.localdomain.com (sig-9-65-99-133.mts.ibm.com [9.65.99.133]) by d01av03.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p528NwCP011471; Thu, 2 Jun 2011 05:25:27 -0300 From: Mimi Zohar To: linux-security-module@vger.kernel.org Cc: Mimi Zohar , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, James Morris , David Safford , Andrew Morton , Greg KH , Dmitry Kasatkin , Alex Elder , xfs@oss.sgi.com, Mimi Zohar X-ASG-Orig-Subj: [PATCH v6 15/20] evm: add evm_inode_post_init call in xfs Subject: [PATCH v6 15/20] evm: add evm_inode_post_init call in xfs Date: Thu, 2 Jun 2011 08:23:38 -0400 Message-Id: <1307017423-15093-16-git-send-email-zohar@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.3.4 In-Reply-To: <1307017423-15093-1-git-send-email-zohar@linux.vnet.ibm.com> References: <1307017423-15093-1-git-send-email-zohar@linux.vnet.ibm.com> X-Barracuda-Connect: e4.ny.us.ibm.com[32.97.182.144] X-Barracuda-Start-Time: 1307017547 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 After creating the initial LSM security extended attribute, call evm_inode_post_init_security() to create the 'security.evm' extended attribute. Signed-off-by: Mimi Zohar --- fs/xfs/linux-2.6/xfs_iops.c | 27 +++++++++++++++++++-------- 1 files changed, 19 insertions(+), 8 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_iops.c b/fs/xfs/linux-2.6/xfs_iops.c index dd21784..01b354d 100644 --- a/fs/xfs/linux-2.6/xfs_iops.c +++ b/fs/xfs/linux-2.6/xfs_iops.c @@ -46,6 +46,7 @@ #include #include #include +#include #include #include @@ -106,23 +107,33 @@ xfs_init_security( const struct qstr *qstr) { struct xfs_inode *ip = XFS_I(inode); - size_t length; - void *value; - unsigned char *name; + struct xattr lsm_xattr; + struct xattr evm_xattr; int error; - error = security_inode_init_security(inode, dir, qstr, (char **)&name, - &value, &length); + error = security_inode_init_security(inode, dir, qstr, &lsm_xattr.name, + &lsm_xattr.value, + &lsm_xattr.value_len); if (error) { if (error == -EOPNOTSUPP) return 0; return -error; } - error = xfs_attr_set(ip, name, value, length, ATTR_SECURE); + error = xfs_attr_set(ip, lsm_xattr.name, lsm_xattr.value, + lsm_xattr.value_len, ATTR_SECURE); + if (error) + goto out; - kfree(name); - kfree(value); + error = evm_inode_post_init_security(inode, &lsm_xattr, &evm_xattr); + if (error) + goto out; + error = xfs_attr_set(ip, evm_xattr.name, evm_xattr.value, + evm_xattr.value_len, ATTR_SECURE); + kfree(evm_xattr.value); +out: + kfree(lsm_xattr.name); + kfree(lsm_xattr.value); return error; } -- 1.7.3.4 From amir73il@gmail.com Thu Jun 2 08:17:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_62,J_CHICKENPOX_65,J_CHICKENPOX_66,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p52DHwim199626 for ; Thu, 2 Jun 2011 08:17:58 -0500 X-ASG-Debug-ID: 1307020675-5aff025c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-wy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E0E731ED3E78 for ; Thu, 2 Jun 2011 06:17:55 -0700 (PDT) Received: from mail-wy0-f181.google.com (mail-wy0-f181.google.com [74.125.82.181]) by cuda.sgi.com with ESMTP id 1vYYncIXngl0xz4N for ; Thu, 02 Jun 2011 06:17:55 -0700 (PDT) Received: by wyi11 with SMTP id 11so655273wyi.26 for ; Thu, 02 Jun 2011 06:17:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=+6BZLm3XTZ1ffNi/M5xiJs7rNzlblniqBaJv8in/rFA=; b=kJzPkS3WcWczjKpWKkwzhEF0AVrsCbACA1eFkf9vDbkT6Lms4J4eNI/MXdwaAIW55/ aXdzooZtcJJX8hztZ//xTJkMnfr3J7xBTc2n05QWIgTAn78JZsLLpDPCTspvKRgyYZww yB4vcnbQlpVEZ3kAqii5JscrY3Jco+hsrjqdc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=lDib5Z4afWY44S7T4PngKr8gkNev2qxUlaHUqHh57kNSKOxTpqo80WN9Sa+tuA3FfC LhijPB4nwSpx7xPBYDQNnyMIuNltOY/4rf55NUgVfuARL1xc3zfHeF5qIUURQquW2knA kJjTE9oD1OF8x0jEu4b6bWyiKZhaTEY6PTk2M= MIME-Version: 1.0 Received: by 10.216.232.146 with SMTP id n18mr694333weq.93.1307020674383; Thu, 02 Jun 2011 06:17:54 -0700 (PDT) Sender: amir73il@gmail.com Received: by 10.216.221.135 with HTTP; Thu, 2 Jun 2011 06:17:54 -0700 (PDT) In-Reply-To: References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> <20110601232804.GL32466@dastard> <20110602030802.GR561@dastard> <20110602064040.GS561@dastard> Date: Thu, 2 Jun 2011 16:17:54 +0300 X-Google-Sender-Auth: C_lfWCKcQhwzAxetBOANqTEJO3g Message-ID: X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP From: "Amir G." To: Lukas Czerner Cc: Dave Chinner , xfs@oss.sgi.com, sandeen@redhat.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Theodore Tso Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-wy0-f181.google.com[74.125.82.181] X-Barracuda-Start-Time: 1307020676 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=DKIM_SIGNED, DKIM_VERIFIED, MAILTO_TO_SPAM_ADDR X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65390 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 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 On Thu, Jun 2, 2011 at 3:10 PM, Lukas Czerner wrote: > On Thu, 2 Jun 2011, Amir G. wrote: > >> On Thu, Jun 2, 2011 at 9:40 AM, Dave Chinner wrote= : >> > On Thu, Jun 02, 2011 at 06:49:20AM +0300, Amir G. wrote: >> >> On Thu, Jun 2, 2011 at 6:08 AM, Dave Chinner wr= ote: >> >> > On Thu, Jun 02, 2011 at 05:33:34AM +0300, Amir G. wrote: >> >> >> On Thu, Jun 2, 2011 at 5:16 AM, Amir G. wrote: >> >> >> > On Thu, Jun 2, 2011 at 2:28 AM, Dave Chinner wrote: >> >> > Personally I think that ext4dev shouldn't be supported at all. A >> >> > special fstyp iwhile ext4 was being developed was, IMO, a stupid >> >> > thing to do in the first place, and I was happy when it died. It >> >> > should not be resurrected and propagated. >> >> > >> >> > xfstests assumes that you are using a userspace that is current wit= h >> >> > the version of the filesystem the kernel supports. If you are >> >> > running a development/special branch of ext4, then you need to be >> >> > running a userspace that understands it completely. If all you are >> >> > doing with the ext4dev fstyp is trying to vector to a different fsc= k >> >> > program that supports a new set of feature bits, then IMO you are >> >> > doing it all wrong. >> >> > >> >> > Fundamentally, the filesystem is either ext4 or it isn't. If the >> >> > features are never going to make it into mainline ext4, then you >> >> > need a completely different fstype and full userspace support for >> >> > that fstype. Once you have that, you can add the fstype support to >> >> > xfstests. However, just using a different fstyp just to set a >> >> > certain set of feature flags is, again IMO, a pretty stupid way of >> >> > going about this. >> >> > >> >> >> >> The features are going into mainline, but are not there yet. >> > >> > So using feature bits as they were intended is the right thing to >> > do, isn't it? >> >> I am not sure what you mean by that. >> The fact that to this day fsck.ext2/3/4 have always been the same >> file (hence support the same feature set) does not mean that they have >> to be that way by design. >> >> on my test system fsck.ext4dev must be used to test ext4dev, which has >> newer features than ext4. > > And that's perfectly fine, you can use whatever you want on you system. > >> I fail to see the problem with that. >> >> > >> >> I did not invent the ext4dev standard, which is pretty well supported >> >> by all relevant tools, but I find it very convenient for the testing. >> > >> > As I understand it, ext4dev is deprecated and should not be used for >> > any new filesystems. When did that status change? >> > >> > Or did you just start using it because it's convenient for your >> > purposes? =A0What happens when someone else decides to use ext4dev for >> > testing incompatible development features because it is convenient >> > for them? >> > >> >> The way I see it, ext4dev is a tool for ext4 developers (and testers). >> Anyone can use it for their own needs and it would be convenient for eve= ryone. >> I never suggested that Fedora push my ext4dev utils as a standard packag= e. >> But me and my group can use it to test the snapshots feature and Ted >> and his group can use it to test the allocation clusters feature. > > ext4dev is not a tool for ext4 developers. It has been deprecated and > does not exist anymore, looking at kernel config there is nothing like > that. If you do not want to have different filesystem for your system > to be able to test ext4 without breaking your system ,than it is perfectl= y > fine to write yourself such helpers. But I do not see any reason for > pushing this stuff to other tools. In fact it should have been removed > from everywhere, since it does not exist anymore ... or has something > changed ? Are we resurrecting ext4dev ? Then we should start somewhere > else do not you think ? > Ted actually brought this up in our ext4 developers meeting on LSF. He said we could register an ext4 module with the ext4dev external symbols and it would be useful for testing, since we already have all those tools t= hat are aware of ext4dev. I am still using a more low-tech method of cloning ext4 (sed) to build a standalone ext4dev module for testing, but it's the same principle. >> >> >> >> Especially, when I expect my testers to be running a stable >> >> distro release (i.e. F15 or Ubuntu 11.4) and be able to install >> >> my experimental ext4dev module and utils, without it affecting >> >> their (most likely) root ext4/ext3 fs. >> > >> > So get them to use an ext3, XFS, reiser or JFS root filesystem if >> > that's your major concern. That's long been a best practice for >> > configuring a filesystem test box - don't use the same filesystem >> > for your root/stable filesystems as the filesytsem you are testing. >> > >> > e.g. If you pick ext3 for the root filesystem, then you can test >> > ext4, btrfs, xfs, etc changes without having to worry about whether >> > the development module being tested is going to affect your root >> > filesystem.... >> >> You make it sound as if I have a flock of testers out there waiting for >> me to feed them with use cases to test and who abide to my setup >> instructions. >> >> Wake up call! this is not the case for me and for most developers. >> If I'm lucky, I can get a e few testers who will say: >> OK, if all I have to do is download this package and run 'make test' >> I can spare an hour to play with it. >> >> So, yes, it's true. There are other ways to accomplish what I am doing, >> but I am going out of my way to try to make the life of developers and t= esters >> easier and you are doing the exact opposite by raising objections to a r= ather >> trivial and harmless patch. > > What is easier for testers and developers ? I fail to see the reason for > including non-existing FSTYP into xfstests while it should be forgotten > by now. Just provide sources with whatever fs name you choose (or just > patches for ext4 preferably), provide patches to e2fsprogs and patches to > xfstests if you want people to test with it. And it should be easy for ev= ery > tester, or developer to use it, shouldn't it ? Is that a problem ? Yes, it is a problem. You are thinking in terms of a developer who builds new kernels on a daily basis. Back in the time, when I developed next3, I asked some friend and people in the community if they could test it. It turned out that they don't even know how to build a kernel and they don't want to invest the time in doing that. This is when I realized that to get to a wider audience of testers, I need to make the testing process E A S Y ! And by E A S Y, I mean: 1. Take a Fedora 15 system 2. download http://next3.sourceforge.net/files/1.0.13/ext4dev_snapshots-1.0= .13-x86_64.tar.gz 3. tar xfz ext4dev_snapshots-1.0.13-x86_64.tar.gz && cd ext4dev_snapshots-1= .0.13 4. make && sudo make install && sudo make test That's it! it takes no more than 5 minutes and your system remains unaffect= ed by installed tools. Now, if the patch in question is accepted to xfstests, testing the experimental fs would be as E A S Y as: 5. sudo mkfs.ext4dev -O has_snapshot /dev/sda5 6. sudo mount /dev/sda5 /mnt/test 7. cd ~/xfstests && sudo ./check (assuming those are your TEST_DEV/TEST_DIR above) Seriously, guys! This thread is becoming ridiculous. xfstests is not a tools for an obscure target market - it's for us. It should be used by developers to test their patches. Why make it so difficult if I state very clearly that it helps me??? Can I get at least one Yay here? Ted? Eric? Anyone? And look at the patch for heaven's sake (which was left behind in the heat of the discussion) , it's miserably harmless. Amir. >From da25ccc0910847b0aaddac1b01f223890244f223 Mon Sep 17 00:00:00 2001 From: Amir Goldstein Date: Tue, 31 May 2011 18:43:17 +0300 Subject: [PATCH v3] xfstests: add support for ext4dev FSTYP blkid knows to identify the ext4dev FSTYP of a partition that was formatted with mkfs.ext4dev. quota tools and various util-linux utils are also aware of ext4dev, so ext4dev shares the same capabilities as ext4. Signed-off-by: Amir Goldstein Tested-by: Sergey Ivanov --- ext4dev is used to test experimental ext4 code in mutual existance with production ext4 code on the same system. Specifically, ext4 snapshots code is available for testing as a stand-alone ext4dev module for Fedora 15 and Ubuntu 11.4 (see http://next3.sf.net). v2 -> v3: - change if to case statement v1 -> v2: - undo change of fsck -t $FSTYP to fsck.$FSTYP common.defrag | 2 +- common.quota | 10 +++++++--- common.rc | 10 +++++----- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/common.defrag b/common.defrag index 1bcf01d..4850803 100644 --- a/common.defrag +++ b/common.defrag @@ -26,7 +26,7 @@ _require_defrag() xfs) DEFRAG_PROG=3D/usr/sbin/xfs_fsr ;; - ext4) + ext4|ext4dev) DEFRAG_PROG=3D/usr/bin/e4defrag ;; *) diff --git a/common.quota b/common.quota index 3c87ce1..9736306 100644 --- a/common.quota +++ b/common.quota @@ -29,7 +29,7 @@ _require_quota() [ -n $QUOTA_PROG ] || _notrun "Quota user tools not installed" case $FSTYP in - ext2|ext3|ext4|reiserfs) + ext2|ext3|ext4|ext4dev|reiserfs) if [ ! -d /proc/sys/fs/quota ]; then _notrun "Installed kernel does not support quotas" fi @@ -237,10 +237,14 @@ _check_quota_usage() # Sync to get delalloc to disk sync VFS_QUOTA=3D0 - if [ $FSTYP =3D "ext2" -o $FSTYP =3D "ext3" -o $FSTYP =3D "ext4" -o $FSTY= P =3D "reiserfs" ]; then + case $FSTYP in + ext2|ext3|ext4|ext4dev|reiserfs) VFS_QUOTA=3D1 quotaon -f -u -g $SCRATCH_MNT 2>/dev/null - fi + ;; + *) + ;; + esac repquota -u -n $SCRATCH_MNT | grep -v "^#0" | _filter_scratch | sort >$tmp.user.orig repquota -g -n $SCRATCH_MNT | grep -v "^#0" | _filter_scratch | diff --git a/common.rc b/common.rc index e634fbb..c510c66 100644 --- a/common.rc +++ b/common.rc @@ -65,7 +65,7 @@ _mount_opts() nfs) export MOUNT_OPTIONS=3D$NFS_MOUNT_OPTIONS ;; - ext2|ext3|ext4) + ext2|ext3|ext4|ext4dev) # acls & xattrs aren't turned on by default on ext$FOO export MOUNT_OPTIONS=3D"-o acl,user_xattr $EXT_MOUNT_OPTIONS" ;; @@ -110,7 +110,7 @@ _mkfs_opts() _fsck_opts() { case $FSTYP in - ext2|ext3|ext4) + ext2|ext3|ext4|ext4dev) export FSCK_OPTIONS=3D"-nf" ;; reiserfs) @@ -326,10 +326,10 @@ _scratch_mkfs_sized() xfs) _scratch_mkfs_xfs -d size=3D$fssize -b size=3D$blocksize ;; - ext2|ext3|ext4) + ext2|ext3|ext4|ext4dev) /sbin/mkfs.$FSTYP $MKFS_OPTIONS -b $blocksize $SCRATCH_DEV $blocks ;; - btrfs) + btrfs) /sbin/mkfs.$FSTYP $MKFS_OPTIONS $SCRATCH_DEV -b $fssize ;; *) @@ -354,7 +354,7 @@ _scratch_mkfs_geom() xfs) MKFS_OPTIONS+=3D" -b size=3D$blocksize, -d su=3D$sunit_bytes,sw=3D$swidth= _mult" ;; - ext4) + ext4|ext4dev) MKFS_OPTIONS+=3D" -b $blocksize -E stride=3D$sunit_blocks,stripe_width=3D$swidth_blocks" ;; *) --=20 1.7.4.1 From powool@gmail.com Thu Jun 2 09:42:49 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p52EgnqL203753 for ; Thu, 2 Jun 2011 09:42:49 -0500 X-ASG-Debug-ID: 1307025767-6f39036e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ww0-f51.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 190E51235F25 for ; Thu, 2 Jun 2011 07:42:47 -0700 (PDT) Received: from mail-ww0-f51.google.com (mail-ww0-f51.google.com [74.125.82.51]) by cuda.sgi.com with ESMTP id KLUJyOFvnw4DBXlG for ; Thu, 02 Jun 2011 07:42:47 -0700 (PDT) Received: by wwf26 with SMTP id 26so752669wwf.32 for ; Thu, 02 Jun 2011 07:42:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:date:x-google-sender-auth :message-id:subject:from:to:content-type; bh=IiWYSqeNGWX3Dm9KiozEWGeTW6UB3k7LLjyKxGFmvZ4=; b=KO85SfFakkf2o6FG7douPnP3KMSmbPqCTJfOJmpVKXdsjIKVyg2ceEBs21/+O0CVt0 dGmZRBcN++kc/GEZmkSIIlfTq6SEPm9MmCwtALp40OUUge8YMZzZLr/OviZzq7Ut/OYX tqd4e7AFIub0wklvcQf0p+BllkvpopgVv55Eo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:content-type; b=piHqOFZjyI9MuKoWoC5VNlLxBmew2Y2QiE6ONoO9IuBKebufmHsj7AcUCqyLLtyFnW roiDJm2mc+pfk/cEDbFrt7+87nLgMkal2KTLaCy3YxhinsF6KSpLHQdXzJ4kQBmAq1SM uDEWA5lyGRIGB9Qud4zr8N8CsCf8ZH1ahHkXs= MIME-Version: 1.0 Received: by 10.216.230.138 with SMTP id j10mr6250143weq.46.1307025766839; Thu, 02 Jun 2011 07:42:46 -0700 (PDT) Sender: powool@gmail.com Received: by 10.216.137.202 with HTTP; Thu, 2 Jun 2011 07:42:46 -0700 (PDT) Date: Thu, 2 Jun 2011 10:42:46 -0400 X-Google-Sender-Auth: zpXwmt-RpRG-04lFUuJMKztk6Es Message-ID: X-ASG-Orig-Subj: I/O hang, possibly XFS, possibly general Subject: I/O hang, possibly XFS, possibly general From: Paul Anderson To: xfs-oss Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: mail-ww0-f51.google.com[74.125.82.51] X-Barracuda-Start-Time: 1307025768 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65397 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This morning, I had a symptom of a I/O throughput problem in which dirty pages appeared to be taking a long time to write to disk. The system is a large x64 192GiB dell 810 server running 2.6.38.5 from kernel.org - the basic workload was data intensive - concurrent large NFS (with high metadata/low filesize), rsync/lftp (with low metadata/high file size) all working in a 200TiB XFS volume on a software MD raid0 on top of 7 software MD raid6, each w/18 drives. I had mounted the filesystem with inode64,largeio,logbufs=8,noatime. The specific symptom was that 'sync' hung, a dpkg command hung (presumably trying to issue fsync), and experimenting with "killall -STOP" or "kill -STOP" of the workload jobs didn't let the system drain I/O enough to finish the sync. I probably did not wait long enough, however. So here's what I did to diagnose: when all workloads were stopped, there was still low rate I/O from kflush->md array jobs. No CPU starvation, but the I/O rate was low - 5-30MiB/second (the array can readily do >1000MiB/second for big I/O). Mind you, one "md5sum --check" job was able to run at >200MiB/second without trouble - turn it off or on and the aggregate I/O load shoots right up or down along with it, so I'm fairly confident in the underlying physical arrays as well as XFS large data I/O. I did "echo 3 > /proc/sys/vm/drop_caches" repeatedly and noticed that according to top, the total amount of cached data would drop down rapidly (first time had the big drop), but still be stuck at around 8-10Gigabytes. While continuing to do this, I noticed finally that the cached data value was in fact dropping slowly (at the rate of 5-30MiB/second), and in fact finally dropped down to approximately 60Megabytes at which point the stuck dpkg command finished, and I was again able to issue sync commands that finished instantly. My guess is that I've done something to fill the buffer pool with slow to flush metadata - and prior to rebooting the machine a few minutes ago, I removed the largeio option in /etc/fstab. I can't say this is an XFS bug specifically, but more likely how I am using it - are there other tools I can use to better diagnose what is going on? I do know it will happen again, since we will have 5 of these machines running at very high rates soon. Also, any suggestions for better metadata or log management are very welcome. This particular machine is probably our worst, since it has the widest variation in offered file I/O load (tens of millions of small files, thousands of >1GB files). If this workload is pushing XFS too hard, I can deploy new hardware to split the workload across different filesystems. Thanks very much for any thoughts or suggestions, Paul Anderson From lczerner@redhat.com Thu Jun 2 09:44:18 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.4.0-r929098 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 p52EiI65203834 for ; Thu, 2 Jun 2011 09:44:18 -0500 X-ASG-Debug-ID: 1307025857-5b0d03370000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C4E15497B93 for ; Thu, 2 Jun 2011 07:44:17 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id UbvHc636rMoD8xoJ for ; Thu, 02 Jun 2011 07:44:17 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p52EiBOY012676 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 2 Jun 2011 10:44:11 -0400 Received: from dhcp-1-233.brq.redhat.com (dhcp-1-233.brq.redhat.com [10.34.1.233]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id p52Ei78w008340 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 2 Jun 2011 10:44:09 -0400 Date: Thu, 2 Jun 2011 16:44:07 +0200 (CEST) From: Lukas Czerner X-X-Sender: lukas@dhcp-27-109.brq.redhat.com To: "Amir G." cc: Lukas Czerner , Dave Chinner , xfs@oss.sgi.com, sandeen@redhat.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Theodore Tso X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP In-Reply-To: Message-ID: References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> <20110601232804.GL32466@dastard> <20110602030802.GR561@dastard> <20110602064040.GS561@dastard> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1307025857 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, 2 Jun 2011, Amir G. wrote: --snip-- > > Ted actually brought this up in our ext4 developers meeting on LSF. > He said we could register an ext4 module with the ext4dev external symbols > and it would be useful for testing, since we already have all those tools that > are aware of ext4dev. I know, but my point is still valid. why to introduce non-existing FSTYP into other tools, this is not proper course of action. If the goal is really resurrect ext4dev we should do this first. > > I am still using a more low-tech method of cloning ext4 (sed) to build > a standalone ext4dev module for testing, but it's the same principle. > > >> > >> --snip-- > >> > >> So, yes, it's true. There are other ways to accomplish what I am doing, > >> but I am going out of my way to try to make the life of developers and testers > >> easier and you are doing the exact opposite by raising objections to a rather > >> trivial and harmless patch. > > > > What is easier for testers and developers ? I fail to see the reason for > > including non-existing FSTYP into xfstests while it should be forgotten > > by now. Just provide sources with whatever fs name you choose (or just > > patches for ext4 preferably), provide patches to e2fsprogs and patches to > > xfstests if you want people to test with it. And it should be easy for every > > tester, or developer to use it, shouldn't it ? Is that a problem ? > > Yes, it is a problem. You are thinking in terms of a developer who builds > new kernels on a daily basis. > Back in the time, when I developed next3, I asked some friend and > people in the community > if they could test it. > It turned out that they don't even know how to build a kernel and they > don't want > to invest the time in doing that. > This is when I realized that to get to a wider audience of testers, I > need to make the testing > process E A S Y ! > > And by E A S Y, I mean: > 1. Take a Fedora 15 system > 2. download http://next3.sourceforge.net/files/1.0.13/ext4dev_snapshots-1.0.13-x86_64.tar.gz > 3. tar xfz ext4dev_snapshots-1.0.13-x86_64.tar.gz && cd ext4dev_snapshots-1.0.13 > 4. make && sudo make install && sudo make test So you're saying that you can not patch xfstests (and other) sources in the make time ?? Thanks! -Lukas From sandeen@redhat.com Thu Jun 2 09:59:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.4.0-r929098 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 p52ExhVg207219 for ; Thu, 2 Jun 2011 09:59:43 -0500 X-ASG-Debug-ID: 1307026782-5b1303e30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7C69B497847 for ; Thu, 2 Jun 2011 07:59:42 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id Cwh5zeQII5auWMHa for ; Thu, 02 Jun 2011 07:59:42 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p52ExbcQ018312 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 2 Jun 2011 10:59:37 -0400 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p52ExZ9C031358 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Thu, 2 Jun 2011 10:59:36 -0400 Message-ID: <4DE7A557.9040608@redhat.com> Date: Thu, 02 Jun 2011 09:59:35 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: "Amir G." CC: Dave Chinner , xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Amir Goldstein X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> <20110601232804.GL32466@dastard> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1307026783 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 6/2/11 2:16 AM, Amir G. wrote: > OK, after upgrading to newer util-linux and building it from git, > which also didn't help, I finally found who to blame - me. > I had an old (noauto) entry in /etc/fstab which claimed that /dev/sda5 is ext4. > fsck was picking up that entry and insisting that /dev/sda5 is ext4 > (regardless of what it really is) > blkid isn't doing that silly thing. > > Amir So where are we at with all this? I don't really mind adding ext4dev to FSTYP case statements, it -is- something which blkid could, in theory, still return, and making xfstests cope with that and try to invoke fsck -t ext4dev doesn't bother me too much. It is sadly an fs type embedded into a few tools. But other than that, I don't think we should be making changes to upstream projects based on your current development hacks (I don't mean hack in a bad way, just that running sed across ext4 to create your custom filesystem for testing should not require upstream projects to change...) So I'm ok with sprinkling "ext4|ext4dev" around if necessary. Anyone else disagree? -Eric From stan@hardwarefreak.com Thu Jun 2 11:17:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p52GHKoe210139 for ; Thu, 2 Jun 2011 11:17:22 -0500 X-ASG-Debug-ID: 1307031439-434c033e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from greer.hardwarefreak.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 44E0F14E26B5 for ; Thu, 2 Jun 2011 09:17:19 -0700 (PDT) Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id Fx1R9bcrdeU0lxkb for ; Thu, 02 Jun 2011 09:17:19 -0700 (PDT) Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 778216C14A; Thu, 2 Jun 2011 11:17:18 -0500 (CDT) Message-ID: <4DE7B78C.4040608@hardwarefreak.com> Date: Thu, 02 Jun 2011 11:17:16 -0500 From: Stan Hoeppner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Paul Anderson CC: xfs-oss X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1307031440 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0017 1.0000 -2.0101 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=COMMA_SUBJECT, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65403 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' 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 On 6/2/2011 9:42 AM, Paul Anderson wrote: > had mounted the filesystem with inode64,largeio,logbufs=8,noatime. I don't see 'delaylog' in your mount options nor an external log device specified. Delayed logging will dramatically decrease IOPs to the log device via cleverly discarding duplicate metadata write operations and other tricks. Enabling it may solve your problem given your high metadata workload. Delayed logging design document: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/filesystems/xfs-delayed-logging-design.txt Delaylog was an optional mount option from 2.6.35 to 2.6.38. In 2.6.39 and up it is the default. Give it a go. -- Stan From adilger@dilger.ca Thu Jun 2 12:22:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.4.0-r929098 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 p52HMvjY212325 for ; Thu, 2 Jun 2011 12:22:57 -0500 X-ASG-Debug-ID: 1307035374-7e6500520000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from idcmail-mo2no.shaw.ca (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9D4B3165845F for ; Thu, 2 Jun 2011 10:22:54 -0700 (PDT) Received: from idcmail-mo2no.shaw.ca (idcmail-mo2no.shaw.ca [64.59.134.9]) by cuda.sgi.com with ESMTP id v68ynxYl8grEVN2U for ; Thu, 02 Jun 2011 10:22:54 -0700 (PDT) Received: from pd5ml2no-ssvc.prod.shaw.ca ([10.0.153.164]) by pd7mo1no-svcs.prod.shaw.ca with ESMTP; 02 Jun 2011 11:22:54 -0600 X-Cloudmark-SP-Filtered: true X-Cloudmark-SP-Result: v=1.1 cv=dyVpuHYQJROgCHwBBw1H+I+7e1rgZIKdHwrI0HSbuo4= c=1 sm=1 a=ZVZlOJdrMLoA:10 a=BLceEmwcHowA:10 a=kj9zAlcOel0A:10 a=xqWC_Br6kY4A:10 a=c23vf5CSMVc0QQz9B4a6RA==:17 a=969kFmqUfCub7NDVhSwA:9 a=CjuIK1q_8ugA:10 a=HpAAvcLHHh0Zw7uRqdWCyQ==:117 Received: from unknown (HELO [IPv6:::1]) ([68.147.195.121]) by pd5ml2no-dmz.prod.shaw.ca with ESMTP; 02 Jun 2011 11:22:54 -0600 X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Mime-Version: 1.0 (Apple Message framework v1082) Content-Type: text/plain; charset=us-ascii From: Andreas Dilger In-Reply-To: <4DE7A557.9040608@redhat.com> Date: Thu, 2 Jun 2011 11:22:53 -0600 Cc: "Amir G." , Dave Chinner , xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Amir Goldstein Content-Transfer-Encoding: quoted-printable Message-Id: <7D3F86FA-5AA9-49B0-9AFE-F597E83C07B4@dilger.ca> References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> <20110601232804.GL32466@dastard> <4DE7A557.9040608@redhat.com> To: Eric Sandeen X-Mailer: Apple Mail (2.1082) X-Barracuda-Connect: idcmail-mo2no.shaw.ca[64.59.134.9] X-Barracuda-Start-Time: 1307035375 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65408 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 2011-06-02, at 8:59 AM, Eric Sandeen wrote: > On 6/2/11 2:16 AM, Amir G. wrote: >> OK, after upgrading to newer util-linux and building it from git, >> which also didn't help, I finally found who to blame - me. >> I had an old (noauto) entry in /etc/fstab which claimed that = /dev/sda5 is ext4. >> fsck was picking up that entry and insisting that /dev/sda5 is ext4 >> (regardless of what it really is) >> blkid isn't doing that silly thing. >=20 > So where are we at with all this? >=20 > I don't really mind adding ext4dev to FSTYP case statements, it -is- = something which blkid could, in theory, still return, and making = xfstests cope with that and try to invoke fsck -t ext4dev doesn't bother = me too much. It is sadly an fs type embedded into a few tools. I'm perfectly OK with using ext4dev as a filesystem type that allows = testing changes to ext4 on a system that is already running ext4 as the root fs. > But other than that, I don't think we should be making changes to = upstream projects based on your current development hacks (I don't mean = hack in a bad way, just that running sed across ext4 to create your = custom filesystem for testing should not require upstream projects to = change...) No, but it's not like this is affecting a lot of tools, just one that is used by filesystem developers. > So I'm ok with sprinkling "ext4|ext4dev" around if necessary. Anyone = else disagree? The other alternative is to change all of the "ext2|ext3|ext4|ext4dev" = case statements to be "ext[2-9]*", or "ext[3-9]*", or "ext[4-9]*" for checks = that are only valid for newer codes and be done with it. It's a lot easier = to read, and we don't have to change it again should we ever get ext5 or = whatever (hopefully btrfs will be ready before that, but who knows). Cheers, Andreas From pg_mh@sabi.co.UK Thu Jun 2 14:06:36 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p52J6YPM218903 for ; Thu, 2 Jun 2011 14:06:36 -0500 X-ASG-Debug-ID: 1307041591-36ca03110000-ps1ADW X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from woodbine.london.02.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A10201660B44 for ; Thu, 2 Jun 2011 12:06:32 -0700 (PDT) Received: from woodbine.london.02.net (woodbine.london.02.net [87.194.255.145]) by cuda.sgi.com with ESMTP id z7TBCSbPD5fS0ndU for ; Thu, 02 Jun 2011 12:06:32 -0700 (PDT) Received: from ty.sabi.co.UK (87.194.99.40) by woodbine.london.02.net (8.5.133) id 4D8CD8C901C52D3C for xfs@OSS.SGI.com; Thu, 2 Jun 2011 20:06:31 +0100 Received: from from [127.0.0.1] (helo=tree.ty.sabi.co.UK) by ty.sabi.co.UK with esmtp(Exim 4.71 #1) id 1QSD45-0007SG-VT for ; Thu, 02 Jun 2011 19:56:18 +0100 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <19943.56524.969126.59978@tree.ty.sabi.co.UK> Date: Thu, 2 Jun 2011 19:56:12 +0100 X-Face: SMJE]JPYVBO-9UR%/8d'mG.F!@.,l@c[f'[%S8'BZIcbQc3/">GrXDwb#;fTRGNmHr^JFb SAptvwWc,0+z+~p~"Gdr4H$(|N(yF(wwCM2bW0~U?HPEE^fkPGx^u[*[yV.gyB!hDOli}EF[\cW*S H&spRGFL}{`bj1TaD^l/"[ msn( /TH#THs{Hpj>)]f> X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general In-Reply-To: References: X-Mailer: VM 8.0.13 under 23.1.1 (x86_64-pc-linux-gnu) From: pg_xf2@xf2.for.sabi.co.UK (Peter Grandi) X-Disclaimer: This message contains only personal opinions X-Barracuda-Connect: woodbine.london.02.net[87.194.255.145] X-Barracuda-Start-Time: 1307041592 X-Barracuda-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.2.65415 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 > This morning, I had a symptom of a I/O throughput problem in which > dirty pages appeared to be taking a long time to write to disk. That can happen because of a lot of reasons, like elevator issues (CFQ has serious problems) and even CPU scheduler issues, RAID HA firmware problems (if you are using one, and you seem to be using MD, but then you may be using several in JBOD mode to handle all the disks), or problems with the Linux page cache (read ahead, the abominable plugger) or the flusher (the defaults are not so hot). Sometimes there are odd resonances between the page cache and multiple layers od MD or LVM too. Lots of people have been burned even with much simpler setups than the one you describe below: > The system is a large x64 192GiB dell 810 server running > 2.6.38.5 from kernel.org - the basic workload was data > intensive - concurrent large NFS (with high metadata/low > filesize), Very imaginative. :-) > rsync/lftp (with low metadata/high file size) More suitable, but insignificant compared to this: > all working in a 200TiB XFS volume on a software MD raid0 on > top of 7 software MD raid6, each w/18 drives. That's rather more than imaginative :-). But this is a family oriented mailing list so I can't use appropriate euphemisms, because they no longer look like euphemisms. > [ ... ] (the array can readily do >1000MiB/second for big > I/O). [ ... ] In a very specific narrow case, and you can get that with a lot less disks. You have 126 drives that can each do 130MB/s (outer tracks), so you should be getting 10GB/s :-). Also, your 1000MiB/s set probably is not full yet, so that's outer tracks only, and when it fills up, data gets into the inner tracks, and get a bit churned, then the real performances will "shine" through. > I did "echo 3 > /proc/sys/vm/drop_caches" repeatedly and > noticed that according to top, the total amount of cached data > would drop down rapidly (first time had the big drop), but > still be stuck at around 8-10Gigabytes. You have to watch '/proc/meminfo' to check the dirty pages in the cache. But you seem to have 8-10GiB of dirty pages in your 192GiB system. Extraordinarily imaginative. > While continuing to do this, I noticed finally that the cached > data value was in fact dropping slowly (at the rate of > 5-30MiB/second), and in fact finally dropped down to > approximately 60Megabytes at which point the stuck dpkg > command finished, and I was again able to issue sync commands > that finished instantly. Fantastic stuff, is that cached data or cached and dirty data? Guessing that it is cached and dirty (also because of the "Subject" line), do you really want to have several GiB of cached dirty pages? Do you want these to be zillions of little metadata transactions scattered at random all over the place? How "good" (I hesitate to use the very word in the context) is this more than imaginative RAID60 set at writing widely scattered small transactions? > [ ... ] since we will have 5 of these machines running at > very high rates soon. Look forward to that :-). > Also, any suggestions for better metadata Use some kind of low overhead database if you need a database, else pray :-) > or log management are very welcome. Separate drives/flash SSD/RAM SSD. As previously revealed by a question I asked, Linux MD does full-width stripe updates with RAID6. The wider, the better of course :-). > This particular machine is probably our worst, since it has > the widest variation in offered file I/O load (tens of > millions of small files, thousands of >1GB files). Wide variation is not the problem, and neither is the machine, it is the approach. > If this workload is pushing XFS too hard, XFS is a very good design within a fairly well defined envelope, and often the problems are more with Linux or application issues, but you may be a bit outside that envelope (euphemism alert), and you need to work on the grain of the storage system (understatement of the week). > I can deploy new hardware to split the workload across > different filesystems. My usual recommendation is to default (unless you have extraordinarily good arguments otherwise, and almost nobody does) to use RAID10 sets of at most 10 pairs (of "enterprise" drives of no more than 1TB each), with XFS or JFS depending on workload, as many servers as needed (if at all possible located topologically near to their users to avoid some potentially nasty network syndromes like incast), and forget about having a single large storage pool. Other details as to the flusher (every 1-2 seconds), elevator (deadline or noop), ... can matter a great deal. If you do need a single large storage pool almost the only reasonable way currently (even if I have great hopes for GlusterFS) is Lustre or one of its forks (or much simpler imitators like DPM), and that has its own downsides (it takes a lot of work), but a single large storage pool is almost never needed, at most a single large namespace, and that can be instantiated with an automounter (and Lustre/DPM/.... is in effect a more sophisticated automounter). If you know better go ahead and build 200TB XFS filesystems on top of a 7x(16+2) drive RAID60 and put lots of small files in them (or whatever) and don't even think about 'fsck' because you "know" it will never happen. And what about backing up one of those storage sets to another one? That can happen in the "background" of course, with no extra load :-). Just realized another imaginative detail: a 126 drive RAID60 set delivering 200TB, looks like that you are using 2TB drives. Why am I not surprised? It would be just picture-perfect if they were low cost "eco" drives, and only a bit less so if they were ordinary drives without ERC. Indeed cost conscious budget heroes can only suggest using 2TB drives in a 126-drive RAID60 set even for a small-file metadata intensive workload, because IOPS and concurrent RW are obsolete concepts in many parts of the world. Disclaimer: some smart people I know built knowingly a similar and fortunately much smaller collection of RAID6 sets because that was the least worst option for them, and since they know that it will not fill up before they can replace it, they are effectively short-stroking all those 2TB drives (I still would have bought ERC ones if possible) so it's cooler than it looks. > Thanks very much for any thoughts or suggestions, * Don't expect to slap together a lot of stuff at random and it working just like that. But then if you didn't expect that you wouldn't have done any of the above. * "My usual recommendation" above is freely given yet often worth more than months/years of very expensive consultants. * This mailing list is continuing proof that the "let's bang it together, it will just work" club is large. From powool@gmail.com Thu Jun 2 16:24:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p52LOiq1223195 for ; Thu, 2 Jun 2011 16:24:44 -0500 X-ASG-Debug-ID: 1307049879-3c3f02be0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ew0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id ED588499227 for ; Thu, 2 Jun 2011 14:24:39 -0700 (PDT) Received: from mail-ew0-f53.google.com (mail-ew0-f53.google.com [209.85.215.53]) by cuda.sgi.com with ESMTP id qC58SSEOu2E3SR3v for ; Thu, 02 Jun 2011 14:24:39 -0700 (PDT) Received: by ewy8 with SMTP id 8so548989ewy.26 for ; Thu, 02 Jun 2011 14:24:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=IBwTU/8ah4dk+8rnTsxin1Fetmtmy6sGyu8oh9Anjxg=; b=ZTKE3PTvKf0Ejbwy0jICjGLCE77npvjCrX54XFbfFgMwhSGCMmWbrOvXBZt29FlE/F T9XzgUN1+DVC5GCO6UcpUCmysFZPLE5usBN4x0KzjqUNR5jHam+lcKlrAarYL26ObAlh 3ZN6Tg8QkGTOJhoDSiL1feb4jE0xcwRwREWWo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=ZIa6aw4VWcv8vAT/Q46abLh8KHDVprmIEJTZzNLlE2CVVEMTWHrKypA8NSMoeTpYu7 Jr+eWN2tvi1Dy1/VgkLWWKGiRIvKYItWVhopgwIiWHlUz//dNgsfYrokNRWMatIqx72c s0vW4acmrznUw9OWu/WNt/rt/3olA0SEVfk0s= MIME-Version: 1.0 Received: by 10.216.230.138 with SMTP id j10mr6565073weq.46.1307049879156; Thu, 02 Jun 2011 14:24:39 -0700 (PDT) Sender: powool@gmail.com Received: by 10.216.137.202 with HTTP; Thu, 2 Jun 2011 14:24:39 -0700 (PDT) In-Reply-To: <19943.56524.969126.59978@tree.ty.sabi.co.UK> References: <19943.56524.969126.59978@tree.ty.sabi.co.UK> Date: Thu, 2 Jun 2011 17:24:39 -0400 X-Google-Sender-Auth: IHd4EG53mK3vfZKKfDNJaq24rss Message-ID: X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general From: Paul Anderson To: Peter Grandi Cc: Linux fs XFS Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-ew0-f53.google.com[209.85.215.53] X-Barracuda-Start-Time: 1307049882 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0086 1.0000 -1.9646 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.36 X-Barracuda-Spam-Status: No, SCORE=-1.36 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=COMMA_SUBJECT, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65424 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Peter - I appreciate the feedback! The background for this is that we live in an extreme corner case of the world - our use case is dealing with 1GiB to 100GiB files at present, and in the future probably to 500GiB files (aggregated data from multiple deep sequencing runs). The data itself has very odd lifecycle behavior, as well - since it is research, the different stages are still being sorted out, but some stages are essentially write once, read once, maybe keep, maybe discard, depending on the research scenario. Parenthetically, I will note there are numerous other issues and problems that impose constraints beyond what is noted here - conventional work flow, research problems, budgets, rack space, rack power, time and more. On Thu, Jun 2, 2011 at 2:56 PM, Peter Grandi wr= ote: >> This morning, I had a symptom of a I/O throughput problem in which >> dirty pages appeared to be taking a long time to write to disk. > > That can happen because of a lot of reasons, like elevator > issues (CFQ has serious problems) and even CPU scheduler issues, > RAID HA firmware problems (if you are using one, and you seem to > be using MD, but then you may be using several in JBOD mode to > handle all the disks), or problems with the Linux page cache > (read ahead, the abominable plugger) or the flusher (the > defaults are not so hot). Sometimes there are odd resonances > between the page cache and multiple layers od MD or LVM too. All JBOD chassis (SuperMicro SC 847's)... been experimenting with the flusher, will look at the others. > > Lots of people have been burned even with much simpler setups > than the one you describe below: No doubt. > >> The system is a large x64 192GiB dell 810 server running >> 2.6.38.5 from kernel.org - the basic workload was data >> intensive - concurrent large NFS (with high metadata/low >> filesize), > > Very imaginative. :-) > >> rsync/lftp (with low metadata/high file size) > > More suitable, but insignificant compared to this: The rsync job currently appear to be causing the issue - it was rsyncing around 250,000 files. If the copy had already been done, the rsync is fast (i.e. stat is fast, despite the numbers), but when it starts moving data, the IOPS pegs and seems to be the limiting factor. > >> all working in a 200TiB XFS volume on a software MD raid0 on >> top of 7 software MD raid6, each w/18 drives. > > That's rather more than imaginative :-). But this is a family > oriented mailing list so I can't use appropriate euphemisms, > because they no longer look like euphemisms. We most likely live in different worlds - this is a pure research group with "different" constraints than those you're probably used to. Not my choice, but 4-10X the cost per unit of storage is currently not an option. >> [ ... ] (the array can readily do >1000MiB/second for big >> I/O). [ ... ] > > In a very specific narrow case, and you can get that with a lot > less disks. You have 126 drives that can each do 130MB/s (outer > tracks), so you should be getting 10GB/s :-). The raw hardware will do about 5GiB/sec - near as I can tell, this is saturating the pci-e bus (maybe main memory). With XFS freshly installed, it was doing around 1400MiB/sec write, and around 1900MiB/sec read - 10 parallel high throughput processes read or writing as fast as possible (which actually is our use case). > Also, your 1000MiB/s set probably is not full yet, so that's > outer tracks only, and when it fills up, data gets into the > inner tracks, and get a bit churned, then the real performances > will "shine" through. Yeah - overall, I expect it to drop - perhaps 50%? I dunno. The particular filesystem being discussed is 80% full at the moment. >> I did "echo 3 > /proc/sys/vm/drop_caches" repeatedly and >> noticed that according to top, the total amount of cached data >> would drop down rapidly (first time had the big drop), but >> still be stuck at around 8-10Gigabytes. > > You have to watch '/proc/meminfo' to check the dirty pages in > the cache. But you seem to have 8-10GiB of dirty pages in your > 192GiB system. Extraordinarily imaginative. Will watch that - yes, too many dirty pages in RAM - defaults are far from optimal here. > >> While continuing to do this, I noticed finally that the cached >> data value was in fact dropping slowly (at the rate of >> 5-30MiB/second), and in fact finally dropped down to >> approximately 60Megabytes at which point the stuck dpkg >> command finished, and I was again able to issue sync commands >> that finished instantly. > > Fantastic stuff, is that cached data or cached and dirty data? > Guessing that it is cached and dirty (also because of the > "Subject" line), do you really want to have several GiB of > cached dirty pages? After watching it reach steady state at around 60M, it appears not to be dirty, as a sync command returned immediately and had no effect on that value. No, I do not want lots of dirty pages, however, I'm also aware that if those are just data pages, it represents a few seconds of system operation. > Do you want these to be zillions of little metadata transactions > scattered at random all over the place? =A0How "good" (I hesitate > to use the very word in the context) is this more than imaginative > RAID60 set at writing widely scattered small transactions? >> [ ... ] =A0since we will have 5 of these machines running at >> very high rates soon. > > Look forward to that :-). We are, actually, it is a tremendous improvement over what we've been using= . > >> Also, any suggestions for better metadata > > Use some kind of low overhead database if you need a database, > else pray :-) No database will work that I'm aware of, at least for the end data storage. > >> or log management are very welcome. > > Separate drives/flash SSD/RAM SSD. As previously revealed by a > question I asked, Linux MD does full-width stripe updates with > RAID6. The wider, the better of course :-). > >> This particular machine is probably our worst, since it has >> the widest variation in offered file I/O load (tens of >> millions of small files, thousands of >1GB files). > > Wide variation is not the problem, and neither is the machine, > it is the approach. All other approaches I am aware of cost more. I favor Lustre, but the infrastructure costs alone for a 2-5PB system will tend to be exceptional. Not that we may have much choice - the system we have is well beyond the limits of what we should really be doing - however, the constraints are also exceptional. >> If this workload is pushing XFS too hard, > > XFS is a very good design within a fairly well defined envelope, > and often the problems are more with Linux or application > issues, but you may be a bit outside that envelope (euphemism > alert), and you need to work on the grain of the storage system > (understatement of the week). > >> I can deploy new hardware to split the workload across >> different filesystems. > > My usual recommendation is to default (unless you have > extraordinarily good arguments otherwise, and almost nobody > does) to use RAID10 sets of at most 10 pairs (of "enterprise" > drives of no more than 1TB each), with XFS or JFS depending on > workload, as many servers as needed (if at all possible located > topologically near to their users to avoid some potentially > nasty network syndromes like incast), and forget about having a > single large storage pool. Other details as to the flusher > (every 1-2 seconds), elevator (deadline or noop), ... can matter > a great deal. re RAID10 specifically, I'd love to do something better - however the process is currently severely cost and space constrained. > If you do need a single large storage pool almost the only > reasonable way currently (even if I have great hopes for > GlusterFS) is Lustre or one of its forks (or much simpler > imitators like DPM), and that has its own downsides (it takes a > lot of work), but a single large storage pool is almost never > needed, at most a single large namespace, and that can be > instantiated with an automounter (and Lustre/DPM/.... is in > effect a more sophisticated automounter). "It takes a lot of work" is another reason we aren't readily able to go to other architectures, despite their many advantages. > > If you know better go ahead and build 200TB XFS filesystems on > top of a 7x(16+2) drive RAID60 and put lots of small files in > them (or whatever) and don't even think about 'fsck' because you > "know" it will never happen. And what about backing up one of > those storage sets to another one? That can happen in the > "background" of course, with no extra load :-). fsck happens in less than a day, likewise rebuilding all RAIDs... backups are interesting - it is impossible in the old scenario (our prior generation storage) - possible now due to higher disk and network bandwidth. Keep in mind our ultimate backup is tissue samples. > Just realized another imaginative detail: a 126 drive RAID60 set > delivering 200TB, looks like that you are using 2TB drives. Why > am I not surprised? It would be just picture-perfect if they > were low cost "eco" drives, and only a bit less so if they were > ordinary drives without ERC. Indeed cost conscious budget heroes > can only suggest using 2TB drives in a 126-drive RAID60 set even > for a small-file metadata intensive workload, because IOPS and > concurrent RW are obsolete concepts in many parts of the world. We fortunately are were able to afford reasonably good enterprise drives. 2TB drives are mandatory - there simply isn't enough available space in the data center otherwise. The bulk of the work is not small-file - almost all is large files. > Disclaimer: some smart people I know built knowingly a similar > and fortunately much smaller collection of RAID6 sets because > that was the least worst option for them, and since they know > that it will not fill up before they can replace it, they are > effectively short-stroking all those 2TB drives (I still would > have bought ERC ones if possible) so it's cooler than it looks. That is precisely the situation here - it is the "least worst" option. > >> Thanks very much for any thoughts or suggestions, > > * Don't expect to slap together a lot of stuff at random and it > =A0working just like that. But then if you didn't expect that you > =A0wouldn't have done any of the above. > > * "My usual recommendation" above is freely given yet often > =A0worth more than months/years of very expensive consultants. > > * This mailing list is continuing proof that the "let's bang it > =A0together, it will just work" club is large. Research is research - not my choice of how it is done, either. Paul > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From karn@philkarn.net Thu Jun 2 18:59:31 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p52NxUvm231770 for ; Thu, 2 Jun 2011 18:59:31 -0500 X-ASG-Debug-ID: 1307059169-3ecd01b30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-pw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3CD4614E28BD for ; Thu, 2 Jun 2011 16:59:29 -0700 (PDT) Received: from mail-pw0-f53.google.com (mail-pw0-f53.google.com [209.85.160.53]) by cuda.sgi.com with ESMTP id EILo2olvbVNcrBa5 for ; Thu, 02 Jun 2011 16:59:29 -0700 (PDT) Received: by pwj5 with SMTP id 5so792418pwj.26 for ; Thu, 02 Jun 2011 16:59:29 -0700 (PDT) Received: by 10.142.210.5 with SMTP id i5mr217811wfg.8.1307059169195; Thu, 02 Jun 2011 16:59:29 -0700 (PDT) Received: from maggie.qualcomm.com (129-46-76-227.qualcomm.com [129.46.76.227]) by mx.google.com with ESMTPS id o16sm684587wff.1.2011.06.02.16.59.27 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 02 Jun 2011 16:59:28 -0700 (PDT) Message-ID: <4DE823DD.7060600@philkarn.net> Date: Thu, 02 Jun 2011 16:59:25 -0700 From: Phil Karn User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Paul Anderson CC: Peter Grandi , Linux fs XFS X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general References: <19943.56524.969126.59978@tree.ty.sabi.co.UK> In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail-pw0-f53.google.com[209.85.160.53] X-Barracuda-Start-Time: 1307059170 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0134 1.0000 -1.9339 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.33 X-Barracuda-Spam-Status: No, SCORE=-1.33 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.2.65433 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 On 6/2/11 2:24 PM, Paul Anderson wrote: > The data itself has very odd lifecycle behavior, as well - since it is > research, the different stages are still being sorted out, but some > stages are essentially write once, read once, maybe keep, maybe > discard, depending on the research scenario. ... > The bulk of the work is not small-file - almost all is large files. Out of curiosity, do your writers use the fallocate() call? If not, how fragmented do your filesystems get? Even if most of your data isn't read very often, it seems like a good idea to minimize its fragmentation because that also reduces fragmentation of the free list, which makes it easier to keep contiguous other files that *are* heavily read. Also, fewer extents per file means less metadata per file, ergo less metadata and log I/O, etc. When a writer knows in advance how big a file will be, I can't see any downside to having it call fallocate() to let the file system know. Soon after I switched to XFS six months ago I've been running locally patched versions of rsync/tar/cp and so on, and they really do minimize fragmentation with very little effort. From karn@philkarn.net Thu Jun 2 19:06:09 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p53069Fk232003 for ; Thu, 2 Jun 2011 19:06:09 -0500 X-ASG-Debug-ID: 1307059568-155801570000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-px0-f174.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F1FEB49968E for ; Thu, 2 Jun 2011 17:06:08 -0700 (PDT) Received: from mail-px0-f174.google.com (mail-px0-f174.google.com [209.85.212.174]) by cuda.sgi.com with ESMTP id 36Cgm6jJf8ypFULg for ; Thu, 02 Jun 2011 17:06:08 -0700 (PDT) Received: by pxi15 with SMTP id 15so911270pxi.5 for ; Thu, 02 Jun 2011 17:06:08 -0700 (PDT) Received: by 10.142.240.9 with SMTP id n9mr216053wfh.104.1307059568105; Thu, 02 Jun 2011 17:06:08 -0700 (PDT) Received: from maggie.qualcomm.com (129-46-76-227.qualcomm.com [129.46.76.227]) by mx.google.com with ESMTPS id l15sm682057wfe.20.2011.06.02.17.06.06 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 02 Jun 2011 17:06:06 -0700 (PDT) Message-ID: <4DE8256C.10706@philkarn.net> Date: Thu, 02 Jun 2011 17:06:04 -0700 From: Phil Karn User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Peter Grandi CC: Linux fs XFS X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general References: <19943.56524.969126.59978@tree.ty.sabi.co.UK> In-Reply-To: <19943.56524.969126.59978@tree.ty.sabi.co.UK> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail-px0-f174.google.com[209.85.212.174] X-Barracuda-Start-Time: 1307059568 X-Barracuda-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.2.65434 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 On 6/2/11 11:56 AM, Peter Grandi wrote: > Disclaimer: some smart people I know built knowingly a similar > and fortunately much smaller collection of RAID6 sets because > that was the least worst option for them, and since they know > that it will not fill up before they can replace it, they are > effectively short-stroking all those 2TB drives (I still would > have bought ERC ones if possible) so it's cooler than it looks. What do you mean by "short stroking"? That the data (and head motions) stay in one part of the disk? I haven't been using XFS that long and I'm no expert on it, but I've noticed that it seems to distribute files pretty evenly across an entire disk. Even without the inode64 option, only the inodes are kept at the beginning; the data can be anywhere. The only way I can think of to confine the activity on a lightly-loaded XFS file system to one part of a disk (e.g., to reduce average seek times and to stay in the faster outer area of the drive) is to create partitions that initially span only part of the disk, then grow them later as needed. Is that what you mean? From tytso@thunk.org Thu Jun 2 19:36:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_62 autolearn=no version=3.4.0-r929098 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 p530aNjl232935 for ; Thu, 2 Jun 2011 19:36:23 -0500 X-ASG-Debug-ID: 1307061382-156201d20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from test.thunk.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 675C849498E for ; Thu, 2 Jun 2011 17:36:22 -0700 (PDT) Received: from test.thunk.org (li9-11.members.linode.com [67.18.176.11]) by cuda.sgi.com with ESMTP id pcKAI1VnjsNCFSZw for ; Thu, 02 Jun 2011 17:36:22 -0700 (PDT) Received: from root (helo=tytso-glaptop) by test.thunk.org with local-esmtp (Exim 4.69) (envelope-from ) id 1QSIN1-0006R1-FN; Fri, 03 Jun 2011 00:36:11 +0000 Received: from tytso by tytso-glaptop with local (Exim 4.71) (envelope-from ) id 1QSIN0-0002cr-EL; Thu, 02 Jun 2011 20:36:10 -0400 Date: Thu, 2 Jun 2011 20:36:10 -0400 From: "Ted Ts'o" To: Andreas Dilger Cc: Eric Sandeen , "Amir G." , Dave Chinner , xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Amir Goldstein X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Message-ID: <20110603003610.GD16306@thunk.org> References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> <20110601232804.GL32466@dastard> <4DE7A557.9040608@redhat.com> <7D3F86FA-5AA9-49B0-9AFE-F597E83C07B4@dilger.ca> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <7D3F86FA-5AA9-49B0-9AFE-F597E83C07B4@dilger.ca> User-Agent: Mutt/1.5.20 (2009-06-14) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tytso@thunk.org X-SA-Exim-Scanned: No (on test.thunk.org); SAEximRunCond expanded to false X-Barracuda-Connect: li9-11.members.linode.com[67.18.176.11] X-Barracuda-Start-Time: 1307061382 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65436 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, Jun 02, 2011 at 11:22:53AM -0600, Andreas Dilger wrote: > On 2011-06-02, at 8:59 AM, Eric Sandeen wrote: > > I don't really mind adding ext4dev to FSTYP case statements, it > > -is- something which blkid could, in theory, still return, and > > making xfstests cope with that and try to invoke fsck -t ext4dev > > doesn't bother me too much. It is sadly an fs type embedded into > > a few tools. > > I'm perfectly OK with using ext4dev as a filesystem type that allows testing > changes to ext4 on a system that is already running ext4 as the root fs. My take on this is that way too much time has been spent this subject. Being able to use ext4dev is useful, and given that we have all of this support in our existing system tools, why not use it to make ext4 development more efficient/easy? As a bonus you can build the ext4dev as a module, and that means you the compile/edit/debug cycle can be much faster since you can avoid doing a reboot, for those circumstances where using KVM is not possible/convenient. Personally, I normally use KVM these days, but I can imagine situations where using ext4dev would be a better way to go. For example, I'd probably use KVM on my laptop, but for testing on production servers in a data center, I'd probably use ext4dev, for a variety of local deployment considerations that's not worth going into here. That being said, whether or not we modify xfstests seems to be a moot point. In order for me to do my bigalloc development, I've been patching common.rc so that "/sbin/mkfs.$FSTYP" --> "mkfs.$FSTYP" and "/sbin/fsck -t $FSTYP" --> "fsck.$FSTYP". It's a 3 line change. Not a big deal. I've been making this change using /bin/ed after installing xfstests. So if the XFS folks want to veto this change --- who cares? It's not hard to make the change locally in order to make xfstests. On the other hand, given that xfstests is using "mkfs.$FSTYP", I don't see why it's so important that it clings to "fsck -t $FSTYP" instead of using "fsck.$FSTYP". There's no real benefit to calling the fsck driver; it's just an extra fork and exec, and xfstests is being inconsistent by insisting on the use of the fsck driver, but not using the mkfs driver. But that being said, hacking xfstests is not hard, and if Dave and/or Eric feels strongly about resisting this change, it's not worth a lot of time, one way or another.... - Ted From david@fromorbit.com Thu Jun 2 19:39:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p530dC7X233021 for ; Thu, 2 Jun 2011 19:39:12 -0500 X-ASG-Debug-ID: 1307061550-155d01c80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D24C7499A59 for ; Thu, 2 Jun 2011 17:39:10 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id PVvxWMUAgxC8KQkN for ; Thu, 02 Jun 2011 17:39:10 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuIDAMwp6E15LCoegWdsb2JhbABTpjkVAQEWJiWIccB4DoYTBKAw Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail04.adl6.internode.on.net with ESMTP; 03 Jun 2011 10:09:08 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QSIPr-0000sL-7Y; Fri, 03 Jun 2011 10:39:07 +1000 Date: Fri, 3 Jun 2011 10:39:07 +1000 From: Dave Chinner To: Phil Karn Cc: Paul Anderson , Linux fs XFS X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general Message-ID: <20110603003907.GW561@dastard> References: <19943.56524.969126.59978@tree.ty.sabi.co.UK> <4DE823DD.7060600@philkarn.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DE823DD.7060600@philkarn.net> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1307061551 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0020 1.0000 -2.0077 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.41 X-Barracuda-Spam-Status: No, SCORE=-1.41 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.2.65436 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 On Thu, Jun 02, 2011 at 04:59:25PM -0700, Phil Karn wrote: > On 6/2/11 2:24 PM, Paul Anderson wrote: > > > The data itself has very odd lifecycle behavior, as well - since it is > > research, the different stages are still being sorted out, but some > > stages are essentially write once, read once, maybe keep, maybe > > discard, depending on the research scenario. > ... > > The bulk of the work is not small-file - almost all is large files. > > Out of curiosity, do your writers use the fallocate() call? If not, how > fragmented do your filesystems get? > > Even if most of your data isn't read very often, it seems like a good > idea to minimize its fragmentation because that also reduces > fragmentation of the free list, which makes it easier to keep contiguous > other files that *are* heavily read. Also, fewer extents per file means > less metadata per file, ergo less metadata and log I/O, etc. > > When a writer knows in advance how big a file will be, I can't see any > downside to having it call fallocate() to let the file system know. You're ignoring the fact that delayed allocation effectively does this for you without needing to physically allocate the blocks. So when you have files that are short lived, you don't actually do any allocation at all, Further delayed allocation results in allocation order according to writeback order rather than write() order, so I/O patterns are much nicer when using delayed allocation. Basicaly you are removing one of the major IO optimisation capabilities of XFS by preallocating everything like this. > Soon > after I switched to XFS six months ago I've been running locally patched > versions of rsync/tar/cp and so on, and they really do minimize > fragmentation with very little effort. So you don't have any idea of how well XFS minimises fragmentation without needing to use preallocation? Sounds like you have a classic case of premature optimisation. ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+e5b82cb630e58a74e26a+2840+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 2 19:42:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p530gnkp233132 for ; Thu, 2 Jun 2011 19:42:50 -0500 X-ASG-Debug-ID: 1307061768-156c01c80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DA79B499A88 for ; Thu, 2 Jun 2011 17:42:48 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id lYEGr65fNLAM69IE for ; Thu, 02 Jun 2011 17:42:48 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QSITP-0002RF-LI; Fri, 03 Jun 2011 00:42:47 +0000 Date: Thu, 2 Jun 2011 20:42:47 -0400 From: Christoph Hellwig To: Paul Anderson Cc: xfs-oss X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general Message-ID: <20110603004247.GA28043@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.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1307061768 X-Barracuda-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.32 X-Barracuda-Spam-Status: No, SCORE=-1.32 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=COMMA_SUBJECT, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65436 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' 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 On Thu, Jun 02, 2011 at 10:42:46AM -0400, Paul Anderson wrote: > This morning, I had a symptom of a I/O throughput problem in which > dirty pages appeared to be taking a long time to write to disk. > > The system is a large x64 192GiB dell 810 server running 2.6.38.5 from > kernel.org - the basic workload was data intensive - concurrent large > NFS (with high metadata/low filesize), rsync/lftp (with low > metadata/high file size) all working in a 200TiB XFS volume on a > software MD raid0 on top of 7 software MD raid6, each w/18 drives. I > had mounted the filesystem with inode64,largeio,logbufs=8,noatime. A few comments on the setup before trying to analze what's going on in detail. I'd absolutely recommend an external log device for this setup, that is buy another two fast but small disks, or take two existing ones and use a RAID 1 for the external log device. This will speed up anything log intensive, which both NFS, and resync workloads are lot. Second thing if you can split the workloads into multiple volumes if you have two such different workloads, so thay they don't interfear with each other. Second a RAID0 on top of RAID6 volumes sounds like a pretty worst case for almost any type of I/O. You end up doing even relatively small I/O to all of the disks in the worst case. I think you'd be much better off with a simple linear concatenation of the RAID6 devices, even if you can split them into multiple filesystems > The specific symptom was that 'sync' hung, a dpkg command hung > (presumably trying to issue fsync), and experimenting with "killall > -STOP" or "kill -STOP" of the workload jobs didn't let the system > drain I/O enough to finish the sync. I probably did not wait long > enough, however. It really sounds like you're simply killloing the MD setup with a log of log I/O that does to all the devices. From david@fromorbit.com Thu Jun 2 20:39:54 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p531dr1F235346 for ; Thu, 2 Jun 2011 20:39:54 -0500 X-ASG-Debug-ID: 1307065191-145d027f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3D8C6D6E2D9 for ; Thu, 2 Jun 2011 18:39:51 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id phGOGRDfYheeYoAx for ; Thu, 02 Jun 2011 18:39:51 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuIDAMc36E15LCoegWdsb2JhbABTpjkVAQEWJiXJXQ6GEwSgMA Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail04.adl6.internode.on.net with ESMTP; 03 Jun 2011 11:09:50 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QSJMa-0000yf-AF; Fri, 03 Jun 2011 11:39:48 +1000 Date: Fri, 3 Jun 2011 11:39:48 +1000 From: Dave Chinner To: Christoph Hellwig Cc: Paul Anderson , xfs-oss X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general Message-ID: <20110603013948.GX561@dastard> References: <20110603004247.GA28043@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110603004247.GA28043@infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1307065192 X-Barracuda-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.2.65441 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 On Thu, Jun 02, 2011 at 08:42:47PM -0400, Christoph Hellwig wrote: > On Thu, Jun 02, 2011 at 10:42:46AM -0400, Paul Anderson wrote: > > This morning, I had a symptom of a I/O throughput problem in which > > dirty pages appeared to be taking a long time to write to disk. > > > > The system is a large x64 192GiB dell 810 server running 2.6.38.5 from > > kernel.org - the basic workload was data intensive - concurrent large > > NFS (with high metadata/low filesize), rsync/lftp (with low > > metadata/high file size) all working in a 200TiB XFS volume on a > > software MD raid0 on top of 7 software MD raid6, each w/18 drives. I > > had mounted the filesystem with inode64,largeio,logbufs=8,noatime. > > A few comments on the setup before trying to analze what's going on in > detail. I'd absolutely recommend an external log device for this setup, > that is buy another two fast but small disks, or take two existing ones > and use a RAID 1 for the external log device. This will speed up > anything log intensive, which both NFS, and resync workloads are lot. > > Second thing if you can split the workloads into multiple volumes if you > have two such different workloads, so thay they don't interfear with > each other. > > Second a RAID0 on top of RAID6 volumes sounds like a pretty worst case > for almost any type of I/O. You end up doing even relatively small I/O > to all of the disks in the worst case. I think you'd be much better > off with a simple linear concatenation of the RAID6 devices, even if you > can split them into multiple filesystems > > > The specific symptom was that 'sync' hung, a dpkg command hung > > (presumably trying to issue fsync), and experimenting with "killall > > -STOP" or "kill -STOP" of the workload jobs didn't let the system > > drain I/O enough to finish the sync. I probably did not wait long > > enough, however. > > It really sounds like you're simply killloing the MD setup with a > log of log I/O that does to all the devices. And this is one of the reasons why I originally suggested that storage at this scale really should be using hardware RAID with large amounts of BBWC to isolate the backend from such problematic IO patterns. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Jun 2 21:01:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.4.0-r929098 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 p5321WcJ236669 for ; Thu, 2 Jun 2011 21:01:32 -0500 X-ASG-Debug-ID: 1307066489-145e02b20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9FE9C1239851 for ; Thu, 2 Jun 2011 19:01:30 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id 73AGp0iCnYD18DOT for ; Thu, 02 Jun 2011 19:01:30 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuMDAOY+6E15LCoegWdsb2JhbABThEmhcBUBARYmJbkSkF8OgR2DbIEKBKAw Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail04.adl6.internode.on.net with ESMTP; 03 Jun 2011 11:31:29 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QSJhX-00010y-U0; Fri, 03 Jun 2011 12:01:27 +1000 Date: Fri, 3 Jun 2011 12:01:27 +1000 From: Dave Chinner To: Eric Sandeen Cc: "Amir G." , xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Amir Goldstein X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Message-ID: <20110603020127.GY561@dastard> References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> <20110601232804.GL32466@dastard> <4DE7A557.9040608@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <4DE7A557.9040608@redhat.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1307066491 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65441 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, Jun 02, 2011 at 09:59:35AM -0500, Eric Sandeen wrote: > On 6/2/11 2:16 AM, Amir G. wrote: > > > OK, after upgrading to newer util-linux and building it from > > git, which also didn't help, I finally found who to blame - me. > > I had an old (noauto) entry in /etc/fstab which claimed that > > /dev/sda5 is ext4. fsck was picking up that entry and insisting > > that /dev/sda5 is ext4 (regardless of what it really is) blkid > > isn't doing that silly thing. > > > > Amir > > So where are we at with all this? > > I don't really mind adding ext4dev to FSTYP case statements, it > -is- something which blkid could, in theory, still return, and > making xfstests cope with that and try to invoke fsck -t ext4dev > doesn't bother me too much. It is sadly an fs type embedded into > a few tools. > > But other than that, I don't think we should be making changes to > upstream projects based on your current development hacks (I don't > mean hack in a bad way, just that running sed across ext4 to > create your custom filesystem for testing should not require > upstream projects to change...) > > So I'm ok with sprinkling "ext4|ext4dev" around if necessary. > Anyone else disagree? Іf it is ext4 community decides that ext4dev is not deprecated then I don't have any objection. It won't cause me any PEBKAC problems. ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From karn@philkarn.net Thu Jun 2 21:11:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_00,HTML_MESSAGE autolearn=no version=3.4.0-r929098 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 p532BbJE237156 for ; Thu, 2 Jun 2011 21:11:38 -0500 X-ASG-Debug-ID: 1307067095-5667008c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-vw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1CB9CD21084 for ; Thu, 2 Jun 2011 19:11:35 -0700 (PDT) Received: from mail-vw0-f53.google.com (mail-vw0-f53.google.com [209.85.212.53]) by cuda.sgi.com with ESMTP id hW7XvZBKaOQqHnVJ for ; Thu, 02 Jun 2011 19:11:35 -0700 (PDT) Received: by vws13 with SMTP id 13so1210687vws.26 for ; Thu, 02 Jun 2011 19:11:35 -0700 (PDT) Received: by 10.52.174.176 with SMTP id bt16mr1938897vdc.282.1307067095084; Thu, 02 Jun 2011 19:11:35 -0700 (PDT) MIME-Version: 1.0 Received: by 10.52.183.105 with HTTP; Thu, 2 Jun 2011 19:11:15 -0700 (PDT) Reply-To: karn@ka9q.net In-Reply-To: <20110603003907.GW561@dastard> References: <19943.56524.969126.59978@tree.ty.sabi.co.UK> <4DE823DD.7060600@philkarn.net> <20110603003907.GW561@dastard> From: Phil Karn Date: Thu, 2 Jun 2011 19:11:15 -0700 Message-ID: X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general To: Dave Chinner Cc: Paul Anderson , Linux fs XFS Content-Type: multipart/alternative; boundary=bcaec51ba1f5e66e2004a4c545ff X-Barracuda-Connect: mail-vw0-f53.google.com[209.85.212.53] X-Barracuda-Start-Time: 1307067096 X-Barracuda-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, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65443 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a 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 --bcaec51ba1f5e66e2004a4c545ff Content-Type: text/plain; charset=UTF-8 On Thu, Jun 2, 2011 at 5:39 PM, Dave Chinner wrote: > > You're ignoring the fact that delayed allocation effectively does > this for you without needing to physically allocate the blocks. > So when you have files that are short lived, you don't actually do > any allocation at all, Further delayed allocation results in > allocation order according to writeback order rather than write() > order, so I/O patterns are much nicer when using delayed allocation. > Oh, I'm well aware of delayed allocation. I've just noticed that, in my experience, it doesn't seem to work nearly as well as fallocate(). And why should it? If you know in advance how big a file you're writing, how can it hurt to inform your file system? I suppose the FS implementer could always ignore that information if he felt he could somehow do a better job, but it's hard to see how. Isn't it always better to know than to guess? I'm talking here about the genuine fallocate() system call, not the POSIX hack that falls back to first conventionally writing zeroes over the file. The true fallocate() call seems very fast, and if your file system doesn't support it then it will simply fail without harm. I still can't see any reason not to use it. I did know that xfs can avoid the disk allocation and writes entirely when the files are short-lived, but Paul was talking about writing large, long-lived files so that's what I had in mind. And when I use fallocate(), my files are not likely to be short-lived either. Like most people I write the vast majority of my short-lived files to /tmp, which is tmpfs, not xfs. But you do raise an interesting point -- is there any serious performance degradation from using fallocate() on a short-lived file? The written data still lives in the buffer cache for a while, so if you delete the file before it gets flushed the disk writes will still be avoided. The file system may have a little extra work to undo the unnecessary allocation but that doesn't seem to be a big deal. Basicaly you are removing one of the major IO optimisation > capabilities of XFS by preallocating everything like this. > "Remove" it? How is giving it the correct answer worse than letting it guess -- even if it usually guesses correctly? I still rely on preallocation to keep log files and mailboxes from getting too badly fragmented. >So you don't have any idea of how well XFS minimises fragmentation > without needing to use preallocation? Sounds like you have a classic > case of premature optimisation. ;) > > As I said, I've tried it both ways. I found that the simple act of adding fallocate() to rsync (which I use for practically all copying) vastly reduces xfs fragmentation. Just as I expected it would. Maybe I'm a little more sensitive to fragmentation than most because I've been experimenting with storing SHA1 hashes of all my files in external attributes. This grew out of a data deduplication tool; at first I simply cached the hashes so I wouldn't have to recompute them on another run, but then I just added them to every file. This lets me get a warm and fuzzy feeling by periodically verifying that my files haven't been corrupted, especially when I began to use SSDs with trim tools. XFS stores both attributes and extent lists directly in the inode when there's room, and it turns out that a default-sized xfs inode can store my hashes provided that the extent list is small. So I now when I walk through my file system statting everything I can read the hashes too at absolutely no extra cost. This makes deduplication really fast. I haven't experimented to see how many extents a file can have before the attributes get pushed out of the inode, but by keeping most everything contiguous I simply avoid the problem. --bcaec51ba1f5e66e2004a4c545ff Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Thu, Jun 2, 2011 at 5:39 PM, Dave Chinner <david@fromorbit.com> wrote:

You're ignoring the fact that delayed allocation effectively does=
this for you without needing to physically allocate the blocks.
So when you have files that are short lived, you don't actually do
any allocation at all, Further delayed allocation results in
allocation order according to writeback order rather than write()
order, so I/O patterns are much nicer when using delayed allocation.

Oh, I'm well aware of delayed allocation. I've j= ust noticed that, in my experience, it doesn't seem to work nearly as w= ell as fallocate(). And why should it? If you know in advance how big a fil= e you're writing, how can it hurt to inform your file system? I suppose= the FS implementer could always ignore that information if he felt he coul= d somehow do a better job, but it's hard to see how. Isn't it alway= s better to know than to guess?

I'm talking here about the genuine fallocate() system call, not the= POSIX hack that falls back to first conventionally writing zeroes over the= file. The true fallocate() call seems very fast, and if your file system d= oesn't support it then it will simply fail without harm. I still can= 9;t see any reason not to use it.

I did know that xfs can avoid the disk allocation and writes entirely w= hen the files are short-lived, but Paul was talking about writing large, lo= ng-lived files so that's what I had in mind. And when I use fallocate()= , my files are not likely to be short-lived either. Like most people I writ= e the vast majority of my short-lived files to /tmp, which is tmpfs, not xf= s.

But you do raise an interesting point -- is there any serious performan= ce degradation from using fallocate() on a short-lived file? The written da= ta still lives in the buffer cache for a while, so if you delete the file b= efore it gets flushed the disk writes will still be avoided. The file syste= m may have a little extra work to undo the unnecessary allocation but that = doesn't seem to be a big deal.

Basicaly you are removing one of the major IO optimisation
capabilities of XFS by preallocating everything like this.
=

"Remove" it? How is giving it the correct answer worse t= han letting it guess -- even if it usually guesses correctly?

I stil= l rely on preallocation to keep log files and mailboxes from getting too ba= dly fragmented.

>So you don't have any idea of how well XFS minimises fragmentat= ion
without needing to use preallocation? Sounds like you have a classic
case of premature optimisation. ;)


As I said, = I've tried it both ways. I found that the simple act of adding fallocat= e() to rsync (which I use for practically all copying) vastly reduces xfs f= ragmentation. Just as I expected it would.

Maybe I'm a little more sensitive to fragmentation than most becaus= e I've been experimenting with storing SHA1 hashes of all my files in e= xternal attributes. This grew out of a data deduplication tool; at first I = simply cached the hashes so I wouldn't have to recompute them on anothe= r run, but then I just added them to every file. This lets me get a warm an= d fuzzy feeling by periodically verifying that my files haven't been co= rrupted, especially when I began to use SSDs with trim tools.

XFS stores both attributes and extent lists directly in the inode when = there's room, and it turns out that a default-sized xfs inode can store= my hashes provided that the extent list is small. So I now when I walk thr= ough my file system statting everything I can read the hashes too at absolu= tely no extra cost. This makes deduplication really fast.

I haven't experimented to see how many extents a file can have befo= re the attributes get pushed out of the inode, but by keeping most everythi= ng contiguous I simply avoid the problem.



--bcaec51ba1f5e66e2004a4c545ff-- From david@fromorbit.com Thu Jun 2 21:55:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p532tMxZ242157 for ; Thu, 2 Jun 2011 21:55:23 -0500 X-ASG-Debug-ID: 1307069719-35fc02610000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0E8221D70514 for ; Thu, 2 Jun 2011 19:55:19 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id jXD1mPyzlW9i3NRw for ; Thu, 02 Jun 2011 19:55:19 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuIDANxM6E15LCoegWdsb2JhbABTpjkVAQEWJiWIccEBDoYTBKAw Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail04.adl6.internode.on.net with ESMTP; 03 Jun 2011 12:25:01 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QSKXM-00016P-0H; Fri, 03 Jun 2011 12:55:00 +1000 Date: Fri, 3 Jun 2011 12:54:59 +1000 From: Dave Chinner To: karn@ka9q.net Cc: Paul Anderson , Linux fs XFS X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general Message-ID: <20110603025459.GB561@dastard> References: <19943.56524.969126.59978@tree.ty.sabi.co.UK> <4DE823DD.7060600@philkarn.net> <20110603003907.GW561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1307069721 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0207 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.2.65446 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 On Thu, Jun 02, 2011 at 07:11:15PM -0700, Phil Karn wrote: > On Thu, Jun 2, 2011 at 5:39 PM, Dave Chinner wrote: > > > > > You're ignoring the fact that delayed allocation effectively does > > this for you without needing to physically allocate the blocks. > > So when you have files that are short lived, you don't actually do > > any allocation at all, Further delayed allocation results in > > allocation order according to writeback order rather than write() > > order, so I/O patterns are much nicer when using delayed allocation. > > > > Oh, I'm well aware of delayed allocation. I've just noticed that, in my > experience, it doesn't seem to work nearly as well as fallocate(). And why > should it? If you know in advance how big a file you're writing, how can it > hurt to inform your file system? I suppose the FS implementer could always > ignore that information if he felt he could somehow do a better job, but > it's hard to see how. Isn't it always better to know than to guess? There are definitely cases where it helps for preventing fragmenting, but as a sweeping generalisation it is very, very wrong. > I'm talking here about the genuine fallocate() system call, not the POSIX > hack that falls back to first conventionally writing zeroes over the file. > The true fallocate() call seems very fast, and if your file system doesn't > support it then it will simply fail without harm. I still can't see any > reason not to use it. > > I did know that xfs can avoid the disk allocation and writes entirely when > the files are short-lived, but Paul was talking about writing large, > long-lived files so that's what I had in mind. And when I use fallocate(), > my files are not likely to be short-lived either. Like most people I write > the vast majority of my short-lived files to /tmp, which is tmpfs, not xfs. Do you do that for temporary object files when you build from source? > But you do raise an interesting point -- is there any serious performance > degradation from using fallocate() on a short-lived file? Allocation and freeing has CPU overhead, transaction overhead, log space overhead, can cause free space fragmentation when you have a mix of short- and long-lived files being preallocated at the same time, IO for long lived data does not get packed together closely so requires more seeks to issue which leads to significantly worse IO performance on RAID5/6 storage sub-systems, etc. I could go one for quite some time, but the overal effect of such behaviour is that it speeds up filesystem aging degradation significantly. You might not notice that for 6 months or a year, but when you do.... > The written data > still lives in the buffer cache for a while, so if you delete the file > before it gets flushed the disk writes will still be avoided. The file > system may have a little extra work to undo the unnecessary allocation but > that doesn't seem to be a big deal. > > Basicaly you are removing one of the major IO optimisation > > capabilities of XFS by preallocating everything like this. > > > > "Remove" it? How is giving it the correct answer worse than letting it guess > -- even if it usually guesses correctly? See above. > I still rely on preallocation to keep log files and mailboxes from getting > too badly fragmented. > > >So you don't have any idea of how well XFS minimises fragmentation > > > without needing to use preallocation? Sounds like you have a classic > > case of premature optimisation. ;) > > > > > As I said, I've tried it both ways. I found that the simple act of adding > fallocate() to rsync (which I use for practically all copying) vastly > reduces xfs fragmentation. Just as I expected it would. > > Maybe I'm a little more sensitive to fragmentation than most because I've > been experimenting with storing SHA1 hashes of all my files in external > attributes. This grew out of a data deduplication tool; at first I simply > cached the hashes so I wouldn't have to recompute them on another run, but > then I just added them to every file. This lets me get a warm and fuzzy > feeling by periodically verifying that my files haven't been corrupted, > especially when I began to use SSDs with trim tools. > > XFS stores both attributes and extent lists directly in the inode when > there's room, and it turns out that a default-sized xfs inode can store my > hashes provided that the extent list is small. So I now when I walk through > my file system statting everything I can read the hashes too at absolutely > no extra cost. This makes deduplication really fast. /me slaps his forehead. You do realise that your "attr out of line" problem would have gone away by simply increasing the XFS inode size at mkfs time? And that there is almost no performance penalty for doing this? Instead, it seems you found a hammer named fallocate() and proceeded to treat every tool you have like a nail. :) Changing a single mkfs parameter is far less work than maintaining your own forks of multiple tools.... > I haven't experimented to see how many extents a file can have > before the attributes get pushed out of the inode, but by keeping > most everything contiguous I simply avoid the problem. Until aging has degraded your filesystem til free space is sufficiently fragmented that you can't allocate large extents any more. Then you are completely screwed. :/ Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@redhat.com Thu Jun 2 22:26:19 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,J_CHICKENPOX_21, J_CHICKENPOX_33,J_CHICKENPOX_62 autolearn=no version=3.4.0-r929098 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 p533QJ5t248761 for ; Thu, 2 Jun 2011 22:26:19 -0500 X-ASG-Debug-ID: 1307071577-768b003d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C3022499B9F for ; Thu, 2 Jun 2011 20:26:17 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id HSKyTbVzGoRxwTtC for ; Thu, 02 Jun 2011 20:26:17 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p533QA5V032757 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 2 Jun 2011 23:26:10 -0400 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id p533Q5Ex031468 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO); Thu, 2 Jun 2011 23:26:07 -0400 Message-ID: <4DE8544D.30800@redhat.com> Date: Thu, 02 Jun 2011 22:26:05 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: "Ted Ts'o" CC: Andreas Dilger , "Amir G." , Dave Chinner , xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Amir Goldstein X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> <20110601232804.GL32466@dastard> <4DE7A557.9040608@redhat.com> <7D3F86FA-5AA9-49B0-9AFE-F597E83C07B4@dilger.ca> <20110603003610.GD16306@thunk.org> In-Reply-To: <20110603003610.GD16306@thunk.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1307071578 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 6/2/11 7:36 PM, Ted Ts'o wrote: > On Thu, Jun 02, 2011 at 11:22:53AM -0600, Andreas Dilger wrote: >> On 2011-06-02, at 8:59 AM, Eric Sandeen wrote: >>> I don't really mind adding ext4dev to FSTYP case statements, it >>> -is- something which blkid could, in theory, still return, and >>> making xfstests cope with that and try to invoke fsck -t ext4dev >>> doesn't bother me too much. It is sadly an fs type embedded into >>> a few tools. >> >> I'm perfectly OK with using ext4dev as a filesystem type that allows testing >> changes to ext4 on a system that is already running ext4 as the root fs. > > My take on this is that way too much time has been spent this subject. > Being able to use ext4dev is useful, and given that we have all of > this support in our existing system tools, why not use it to make ext4 > development more efficient/easy? As a bonus you can build the ext4dev > as a module, and that means you the compile/edit/debug cycle can be > much faster since you can avoid doing a reboot, for those > circumstances where using KVM is not possible/convenient. Personally, > I normally use KVM these days, but I can imagine situations where > using ext4dev would be a better way to go. For example, I'd probably > use KVM on my laptop, but for testing on production servers in a data > center, I'd probably use ext4dev, for a variety of local deployment > considerations that's not worth going into here. > > That being said, whether or not we modify xfstests seems to be a moot > point. In order for me to do my bigalloc development, I've been > patching common.rc so that "/sbin/mkfs.$FSTYP" --> "mkfs.$FSTYP" and > "/sbin/fsck -t $FSTYP" --> "fsck.$FSTYP". It's a 3 line change. Not > a big deal. I've been making this change using /bin/ed after > installing xfstests. So if the XFS folks want to veto this change --- > who cares? It's not hard to make the change locally in order to make > xfstests. > > On the other hand, given that xfstests is using "mkfs.$FSTYP", I don't > see why it's so important that it clings to "fsck -t $FSTYP" instead > of using "fsck.$FSTYP". There's no real benefit to calling the fsck > driver; it's just an extra fork and exec, and xfstests is being > inconsistent by insisting on the use of the fsck driver, but not using > the mkfs driver. > > But that being said, hacking xfstests is not hard, and if Dave and/or > Eric feels strongly about resisting this change, it's not worth a lot > of time, one way or another.... I think we just want to make sure we understand the reasons for a change. Every change has risks, and xfstests is used on a lot of different systems. If I don't fully understand the motivation for a change, I ask questions. All part of a careful review. And I apologize for the mkfs vs. fsck inconsistency, that was probably my fault, originally ;) -Eric > - Ted From sandeen@redhat.com Thu Jun 2 22:33:09 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_62,J_CHICKENPOX_65,J_CHICKENPOX_66 autolearn=no version=3.4.0-r929098 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 p533X90b249388 for ; Thu, 2 Jun 2011 22:33:09 -0500 X-ASG-Debug-ID: 1307071988-565e02500000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A1D4C12CFDD6 for ; Thu, 2 Jun 2011 20:33:08 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id BEcbxx0Nd0XG5Xk6 for ; Thu, 02 Jun 2011 20:33:08 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p533X7xQ018747 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 2 Jun 2011 23:33:07 -0400 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p533Wxtl004274 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Thu, 2 Jun 2011 23:33:05 -0400 Message-ID: <4DE855EB.6020207@redhat.com> Date: Thu, 02 Jun 2011 22:32:59 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: amir73il@users.sourceforge.net CC: xfs@oss.sgi.com, sergey57@gmail.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, Amir Goldstein X-ASG-Orig-Subj: Re: [PATCH v3] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v3] xfstests: add support for ext4dev FSTYP References: <1306988221-3543-1-git-send-email-amir73il@users.sourceforge.net> In-Reply-To: <1306988221-3543-1-git-send-email-amir73il@users.sourceforge.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1307071988 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 6/1/11 11:17 PM, amir73il@users.sourceforge.net wrote: > From: Amir Goldstein > > blkid knows to identify the ext4dev FSTYP of a partition that was > formatted with mkfs.ext4dev. > quota tools and various util-linux utils are also aware of ext4dev, > so ext4dev shares the same capabilities as ext4. > > Signed-off-by: Amir Goldstein > Tested-by: Sergey Ivanov > --- > ext4dev is used to test experimental ext4 code in mutual existance > with production ext4 code on the same system. > > Specifically, ext4 snapshots code is available for testing as a > stand-alone ext4dev module for Fedora 15 and Ubuntu 11.4 > (see http://next3.sf.net). > > v2 -> v3: > - change if to case statement > > v1 -> v2: > - undo change of fsck -t $FSTYP to fsck.$FSTYP looks good to me, and thanks for fixing up the case statement :) I'll merge this tonight to the xfstests-dev tree. -Eric > common.defrag | 2 +- > common.quota | 10 +++++++--- > common.rc | 10 +++++----- > 3 files changed, 13 insertions(+), 9 deletions(-) > > diff --git a/common.defrag b/common.defrag > index 1bcf01d..4850803 100644 > --- a/common.defrag > +++ b/common.defrag > @@ -26,7 +26,7 @@ _require_defrag() > xfs) > DEFRAG_PROG=/usr/sbin/xfs_fsr > ;; > - ext4) > + ext4|ext4dev) > DEFRAG_PROG=/usr/bin/e4defrag > ;; > *) > diff --git a/common.quota b/common.quota > index 3c87ce1..9736306 100644 > --- a/common.quota > +++ b/common.quota > @@ -29,7 +29,7 @@ _require_quota() > [ -n $QUOTA_PROG ] || _notrun "Quota user tools not installed" > > case $FSTYP in > - ext2|ext3|ext4|reiserfs) > + ext2|ext3|ext4|ext4dev|reiserfs) > if [ ! -d /proc/sys/fs/quota ]; then > _notrun "Installed kernel does not support quotas" > fi > @@ -237,10 +237,14 @@ _check_quota_usage() > # Sync to get delalloc to disk > sync > VFS_QUOTA=0 > - if [ $FSTYP = "ext2" -o $FSTYP = "ext3" -o $FSTYP = "ext4" -o $FSTYP = "reiserfs" ]; then > + case $FSTYP in > + ext2|ext3|ext4|ext4dev|reiserfs) > VFS_QUOTA=1 > quotaon -f -u -g $SCRATCH_MNT 2>/dev/null > - fi > + ;; > + *) > + ;; > + esac > repquota -u -n $SCRATCH_MNT | grep -v "^#0" | _filter_scratch | > sort >$tmp.user.orig > repquota -g -n $SCRATCH_MNT | grep -v "^#0" | _filter_scratch | > diff --git a/common.rc b/common.rc > index e634fbb..c510c66 100644 > --- a/common.rc > +++ b/common.rc > @@ -65,7 +65,7 @@ _mount_opts() > nfs) > export MOUNT_OPTIONS=$NFS_MOUNT_OPTIONS > ;; > - ext2|ext3|ext4) > + ext2|ext3|ext4|ext4dev) > # acls & xattrs aren't turned on by default on ext$FOO > export MOUNT_OPTIONS="-o acl,user_xattr $EXT_MOUNT_OPTIONS" > ;; > @@ -110,7 +110,7 @@ _mkfs_opts() > _fsck_opts() > { > case $FSTYP in > - ext2|ext3|ext4) > + ext2|ext3|ext4|ext4dev) > export FSCK_OPTIONS="-nf" > ;; > reiserfs) > @@ -326,10 +326,10 @@ _scratch_mkfs_sized() > xfs) > _scratch_mkfs_xfs -d size=$fssize -b size=$blocksize > ;; > - ext2|ext3|ext4) > + ext2|ext3|ext4|ext4dev) > /sbin/mkfs.$FSTYP $MKFS_OPTIONS -b $blocksize $SCRATCH_DEV $blocks > ;; > - btrfs) > + btrfs) > /sbin/mkfs.$FSTYP $MKFS_OPTIONS $SCRATCH_DEV -b $fssize > ;; > *) > @@ -354,7 +354,7 @@ _scratch_mkfs_geom() > xfs) > MKFS_OPTIONS+=" -b size=$blocksize, -d su=$sunit_bytes,sw=$swidth_mult" > ;; > - ext4) > + ext4|ext4dev) > MKFS_OPTIONS+=" -b $blocksize -E stride=$sunit_blocks,stripe_width=$swidth_blocks" > ;; > *) From amir73il@gmail.com Thu Jun 2 23:59:27 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,J_CHICKENPOX_21, J_CHICKENPOX_33,J_CHICKENPOX_62,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p534xRc6255063 for ; Thu, 2 Jun 2011 23:59:27 -0500 X-ASG-Debug-ID: 1307077166-7287032d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ww0-f41.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1BE3E496A1B for ; Thu, 2 Jun 2011 21:59:26 -0700 (PDT) Received: from mail-ww0-f41.google.com (mail-ww0-f41.google.com [74.125.82.41]) by cuda.sgi.com with ESMTP id AppcyPOZqVjGtTex for ; Thu, 02 Jun 2011 21:59:26 -0700 (PDT) Received: by wwi18 with SMTP id 18so4686973wwi.2 for ; Thu, 02 Jun 2011 21:59:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=gv+CqV3RBhjXE1IvjJoOzkXtuB5nm/oSiLht6wIasJ4=; b=MWUKwcq7h1kY36Eh6gmYUnJkdTbTcv5uHO2+P2jSRCCYvIQUMnQR89emkMVbUl2EyG Bln5C9lbYP2LWNltggxphdnaOZyK92HIDah0hdO8eg5CmwCWGmebEzEJVx8fF9/TJZ0Y EzRYKNe7f2As4zrJUeQ/bd/iytAKN+VW44DoE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=Q7FQahQUdDa+6SnVl/ANLdh1wJmdPCJJx2EYdP+DYB0PPUkMURz+BZTV8RhWIVIS4u VgpC6IETVp8QQBIWT02u/Gsj1oA3TyJ9TDVH0l3XkHLrSXSQeLGhz4YP1s0qfRxvKMMg mbsbF35/TFtqb7ckp7yxliyxZfoHnEIpaCr6Y= MIME-Version: 1.0 Received: by 10.216.221.29 with SMTP id q29mr6843857wep.6.1307077165901; Thu, 02 Jun 2011 21:59:25 -0700 (PDT) Sender: amir73il@gmail.com Received: by 10.216.21.209 with HTTP; Thu, 2 Jun 2011 21:59:25 -0700 (PDT) In-Reply-To: <20110603003610.GD16306@thunk.org> References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> <20110601232804.GL32466@dastard> <4DE7A557.9040608@redhat.com> <7D3F86FA-5AA9-49B0-9AFE-F597E83C07B4@dilger.ca> <20110603003610.GD16306@thunk.org> Date: Fri, 3 Jun 2011 07:59:25 +0300 X-Google-Sender-Auth: OuToYFEjOMwk-3skbiFVl2b9fCM Message-ID: X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP From: "Amir G." To: "Ted Ts'o" Cc: Andreas Dilger , Eric Sandeen , Dave Chinner , xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Amir Goldstein Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-ww0-f41.google.com[74.125.82.41] X-Barracuda-Start-Time: 1307077167 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65450 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jun 3, 2011 at 3:36 AM, Ted Ts'o wrote: > On Thu, Jun 02, 2011 at 11:22:53AM -0600, Andreas Dilger wrote: >> On 2011-06-02, at 8:59 AM, Eric Sandeen wrote: >> > I don't really mind adding ext4dev to FSTYP case statements, it >> > -is- something which blkid could, in theory, still return, and >> > making xfstests cope with that and try to invoke fsck -t ext4dev >> > doesn't bother me too much. =A0It is sadly an fs type embedded into >> > a few tools. >> >> I'm perfectly OK with using ext4dev as a filesystem type that allows tes= ting >> changes to ext4 on a system that is already running ext4 as the root fs. > > My take on this is that way too much time has been spent this subject. No doubt. > Being able to use ext4dev is useful, and given that we have all of > this support in our existing system tools, why not use it to make ext4 > development more efficient/easy? =A0As a bonus you can build the ext4dev > as a module, and that means you the compile/edit/debug cycle can be > much faster since you can avoid doing a reboot, for those > circumstances where using KVM is not possible/convenient. =A0Personally, > I normally use KVM these days, but I can imagine situations where > using ext4dev would be a better way to go. =A0For example, I'd probably > use KVM on my laptop, but for testing on production servers in a data > center, I'd probably use ext4dev, for a variety of local deployment > considerations that's not worth going into here. > > That being said, whether or not we modify xfstests seems to be a moot > point. =A0In order for me to do my bigalloc development, I've been > patching common.rc so that "/sbin/mkfs.$FSTYP" --> "mkfs.$FSTYP" and > "/sbin/fsck -t $FSTYP" --> "fsck.$FSTYP". =A0It's a 3 line change. =A0Not > a big deal. =A0I've been making this change using /bin/ed after > installing xfstests. =A0So if the XFS folks want to veto this change --- > who cares? =A0It's not hard to make the change locally in order to make > xfstests. > > On the other hand, given that xfstests is using "mkfs.$FSTYP", I don't > see why it's so important that it clings to "fsck -t $FSTYP" instead > of using "fsck.$FSTYP". =A0There's no real benefit to calling the fsck > driver; it's just an extra fork and exec, and xfstests is being > inconsistent by insisting on the use of the fsck driver, but not using > the mkfs driver. > > But that being said, hacking xfstests is not hard, and if Dave and/or > Eric feels strongly about resisting this change, it's not worth a lot > of time, one way or another.... > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0- Ted > I blame only myself for not presenting the case correctly. I made it sound like I am trying to push my own private hack upstream. Actually, all 10 people involved in snapshot development clone my xfstests tree from github, so we have no real need for the upstream change. The reason I was pushing upstream is because I found this feature so useful, I thought other developers may enjoy it as well. Anyone on on this thread not having used ext4dev by next LSF can come to me to claim his beer ;-) Amir. From sandeen@redhat.com Fri Jun 3 00:06:21 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,J_CHICKENPOX_21, J_CHICKENPOX_33,J_CHICKENPOX_62 autolearn=no version=3.4.0-r929098 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 p5356LAk257744 for ; Fri, 3 Jun 2011 00:06:21 -0500 X-ASG-Debug-ID: 1307077580-566c00ff0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B648112CFF70 for ; Thu, 2 Jun 2011 22:06:20 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id kEEsAM2sPpD7TsX5 for ; Thu, 02 Jun 2011 22:06:20 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5356B8E024555 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 3 Jun 2011 01:06:11 -0400 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p53569Dj014180 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Fri, 3 Jun 2011 01:06:10 -0400 Message-ID: <4DE86BC1.4080008@redhat.com> Date: Fri, 03 Jun 2011 00:06:09 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: "Amir G." CC: "Ted Ts'o" , Andreas Dilger , Dave Chinner , xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Amir Goldstein X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> <20110601232804.GL32466@dastard> <4DE7A557.9040608@redhat.com> <7D3F86FA-5AA9-49B0-9AFE-F597E83C07B4@dilger.ca> <20110603003610.GD16306@thunk.org> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1307077580 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 6/2/11 11:59 PM, Amir G. wrote: > On Fri, Jun 3, 2011 at 3:36 AM, Ted Ts'o wrote: >> On Thu, Jun 02, 2011 at 11:22:53AM -0600, Andreas Dilger wrote: >>> On 2011-06-02, at 8:59 AM, Eric Sandeen wrote: >>>> I don't really mind adding ext4dev to FSTYP case statements, it >>>> -is- something which blkid could, in theory, still return, and >>>> making xfstests cope with that and try to invoke fsck -t ext4dev >>>> doesn't bother me too much. It is sadly an fs type embedded into >>>> a few tools. >>> >>> I'm perfectly OK with using ext4dev as a filesystem type that allows testing >>> changes to ext4 on a system that is already running ext4 as the root fs. >> >> My take on this is that way too much time has been spent this subject. > > No doubt. > >> Being able to use ext4dev is useful, and given that we have all of >> this support in our existing system tools, why not use it to make ext4 >> development more efficient/easy? As a bonus you can build the ext4dev >> as a module, and that means you the compile/edit/debug cycle can be >> much faster since you can avoid doing a reboot, for those >> circumstances where using KVM is not possible/convenient. Personally, >> I normally use KVM these days, but I can imagine situations where >> using ext4dev would be a better way to go. For example, I'd probably >> use KVM on my laptop, but for testing on production servers in a data >> center, I'd probably use ext4dev, for a variety of local deployment >> considerations that's not worth going into here. >> >> That being said, whether or not we modify xfstests seems to be a moot >> point. In order for me to do my bigalloc development, I've been >> patching common.rc so that "/sbin/mkfs.$FSTYP" --> "mkfs.$FSTYP" and >> "/sbin/fsck -t $FSTYP" --> "fsck.$FSTYP". It's a 3 line change. Not >> a big deal. I've been making this change using /bin/ed after >> installing xfstests. So if the XFS folks want to veto this change --- >> who cares? It's not hard to make the change locally in order to make >> xfstests. >> >> On the other hand, given that xfstests is using "mkfs.$FSTYP", I don't >> see why it's so important that it clings to "fsck -t $FSTYP" instead >> of using "fsck.$FSTYP". There's no real benefit to calling the fsck >> driver; it's just an extra fork and exec, and xfstests is being >> inconsistent by insisting on the use of the fsck driver, but not using >> the mkfs driver. >> >> But that being said, hacking xfstests is not hard, and if Dave and/or >> Eric feels strongly about resisting this change, it's not worth a lot >> of time, one way or another.... >> >> - Ted >> > > I blame only myself for not presenting the case correctly. > I made it sound like I am trying to push my own private hack upstream. > Actually, all 10 people involved in snapshot development clone my xfstests > tree from github, so we have no real need for the upstream change. > The reason I was pushing upstream is because I found this feature > so useful, I thought other developers may enjoy it as well. > > Anyone on on this thread not having used ext4dev by next LSF > can come to me to claim his beer ;-) mmm I like beer, I'll see you then! ;) -Eric (tucking this email away for future reference... ;) > Amir. From jack@suse.cz Fri Jun 3 06:28:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p53BSHAQ010324 for ; Fri, 3 Jun 2011 06:28:17 -0500 X-ASG-Debug-ID: 1307100495-7a0a02900000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A52FB1E3C018 for ; Fri, 3 Jun 2011 04:28:15 -0700 (PDT) Received: from mx1.suse.de (cantor.suse.de [195.135.220.2]) by cuda.sgi.com with ESMTP id A2fHjszgY8dozmnc for ; Fri, 03 Jun 2011 04:28:15 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.suse.de (Postfix) with ESMTP id AF73093987; Fri, 3 Jun 2011 13:28:14 +0200 (CEST) Received: by quack.suse.cz (Postfix, from userid 1000) id 6D91B20550; Fri, 3 Jun 2011 13:27:56 +0200 (CEST) Date: Fri, 3 Jun 2011 13:27:56 +0200 From: Jan Kara To: xfs@oss.sgi.com Cc: Dave Chinner , Jan Kara X-ASG-Orig-Subj: Re: [PATCH] xfstests: Improve test 219 to work with different filesystems Subject: Re: [PATCH] xfstests: Improve test 219 to work with different filesystems Message-ID: <20110603112756.GA4789@quack.suse.cz> References: <1305805675-13753-1-git-send-email-jack@suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1305805675-13753-1-git-send-email-jack@suse.cz> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: cantor.suse.de[195.135.220.2] X-Barracuda-Start-Time: 1307100496 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 19-05-11 13:47:55, Jan Kara wrote: > Different filesystems account different amount of metadata in quota. Thus it is > impractical to check for a particular amount of space occupied by a file > because there is no right value. Change the test to verify whether the amount > of space is between the expected amount of space and the expected amount +5%. > The number of files is checked exactly as previously. > > Signed-off-by: Jan Kara > --- > 219 | 25 +++++++++++++++++++++++-- > 1 files changed, 23 insertions(+), 2 deletions(-) > > Dave, does this look better? Any reaction on this? Honza > > diff --git a/219 b/219 > index 836d703..ad4e64d 100755 > --- a/219 > +++ b/219 > @@ -58,6 +58,23 @@ test_files() > done > } > > +check_usage() > +{ > + wroteblocks=$1 > + wrotefiles=$2 > + read id exceed blocks bsoft bhard inodes isoft ihard > + if [ "$blocks" -lt "$wroteblocks" ]; then > + echo "Too few blocks used (type=$type)" > + # Save 5% for overhead of metadata or different block size > + elif [ "$blocks" -gt $((wroteblocks+wroteblocks/20)) ]; then > + echo "Too many blocks used (type=$type)" > + elif [ "$inodes" != "$wrotefiles" ]; then > + echo "Bad number of inodes used (type=$type)" > + else > + echo "Usage OK (type=$type)" > + fi > +} > + > test_accounting() > { > echo "### some controlled buffered, direct and mmapd IO (type=$type)" > @@ -77,8 +94,12 @@ test_accounting() > $here/src/lstat64 $file | head -3 | _filter_scratch > done > > - repquota -$type -n $SCRATCH_MNT | grep -v "^#0" | _filter_scratch | > - awk '/^#/ { if (seen[$1]) next; seen[$1]++; } { print; }' > + if [ $type == 'u' ]; then > + id=$uid > + else > + id=$gid > + fi > + repquota -$type -n $SCRATCH_MNT | grep "^#$id" | check_usage 144 3 > } > > # real QA test starts here > -- > 1.7.1 > -- Jan Kara SUSE Labs, CR From dsterba@suse.cz Fri Jun 3 08:52:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p53DqxET015077 for ; Fri, 3 Jun 2011 08:52:59 -0500 X-ASG-Debug-ID: 1307109176-602103be0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2EDA41688658 for ; Fri, 3 Jun 2011 06:52:56 -0700 (PDT) Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id rrI93nEh0fDLXMxE for ; Fri, 03 Jun 2011 06:52:56 -0700 (PDT) Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.221.2]) by mx2.suse.de (Postfix) with ESMTP id 355385FC9F; Fri, 3 Jun 2011 15:52:55 +0200 (CEST) Received: by ds.suse.cz (Postfix, from userid 10065) id F0309747E1; Fri, 3 Jun 2011 15:52:54 +0200 (CEST) From: David Sterba To: xfs@oss.sgi.com Cc: linux-fsdevel@vger.kernel.org, josef@redhat.com, David Sterba X-ASG-Orig-Subj: [PATCH] xfstests: fix hardcoded path in output of 254 Subject: [PATCH] xfstests: fix hardcoded path in output of 254 Date: Fri, 3 Jun 2011 15:52:42 +0200 Message-Id: <1307109162-21811-1-git-send-email-dsterba@suse.cz> X-Mailer: git-send-email 1.7.5.2.353.g5df3e X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1307109178 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65473 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 Add filters after btrfs commands, else the test would incorrectly appear failed. Signed-off-by: David Sterba --- 254 | 13 +++++++------ 254.out | 6 +++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/254 b/254 index 3c1a5a1..6320291 100755 --- a/254 +++ b/254 @@ -40,6 +40,7 @@ trap "_cleanup ; exit \$status" 0 1 2 3 15 # get standard environment, filters and checks . ./common.rc +. ./common.filter # real QA test starts here _supported_fs btrfs @@ -55,7 +56,7 @@ dd if=/dev/zero of=$SCRATCH_MNT/foo bs=1M count=1 &> /dev/null echo "List root dir" ls $SCRATCH_MNT echo "Creating snapshot of root dir" -btrfs subvolume snapshot $SCRATCH_MNT $SCRATCH_MNT/snap +btrfs subvolume snapshot $SCRATCH_MNT $SCRATCH_MNT/snap | _filter_scratch echo "List root dir after snapshot" ls $SCRATCH_MNT echo "List snapshot dir" @@ -67,7 +68,7 @@ echo "List snapshot dir" ls $SCRATCH_MNT/snap # Test creating a normal subvolme -btrfs subvolume create $SCRATCH_MNT/subvol +btrfs subvolume create $SCRATCH_MNT/subvol | _filter_scratch echo "Listing root dir" ls $SCRATCH_MNT echo "Listing subvol" @@ -77,7 +78,7 @@ ls $SCRATCH_MNT/subvol echo "Creating file bar in subvol" dd if=/dev/zero of=$SCRATCH_MNT/subvol/bar bs=1M count=1 &> /dev/null echo "Setting subvol to the default" -btrfs subvolume set-default $SCRATCH_MNT/subvol $SCRATCH_MNT/subvol +btrfs subvolume set-default $SCRATCH_MNT/subvol $SCRATCH_MNT/subvol | _filter_scratch _scratch_remount echo "List root dir which is now subvol" ls $SCRATCH_MNT @@ -87,17 +88,17 @@ _scratch_mount "-o subvolid=0" echo "List root dir" ls $SCRATCH_MNT echo "Setting the root dir as the default again" -btrfs subvolume set-default $SCRATCH_MNT $SCRATCH_MNT +btrfs subvolume set-default $SCRATCH_MNT $SCRATCH_MNT | _filter_scratch _scratch_remount echo "List root dir" ls $SCRATCH_MNT # Test listing the subvolumes echo "Listing subvolumes" -btrfs subvolume list $SCRATCH_MNT +btrfs subvolume list $SCRATCH_MNT | _filter_scratch # Delete the snapshot -btrfs subvolume delete $SCRATCH_MNT/snap +btrfs subvolume delete $SCRATCH_MNT/snap | _filter_scratch echo "List root dir" ls $SCRATCH_MNT _scratch_remount diff --git a/254.out b/254.out index e1c19ee..582357a 100644 --- a/254.out +++ b/254.out @@ -3,7 +3,7 @@ Creating file foo in root dir List root dir foo Creating snapshot of root dir -Create a snapshot of '/mnt/scratch' in '/mnt/scratch/snap' +Create a snapshot of 'SCRATCH_MNT' in 'SCRATCH_MNT/snap' List root dir after snapshot foo snap @@ -13,7 +13,7 @@ List root dir after rm of foo snap List snapshot dir foo -Create subvolume '/mnt/scratch/subvol' +Create subvolume 'SCRATCH_MNT/subvol' Listing root dir snap subvol @@ -33,7 +33,7 @@ subvol Listing subvolumes ID 256 top level 5 path snap ID 257 top level 5 path subvol -Delete subvolume '/mnt/scratch/snap' +Delete subvolume 'SCRATCH_MNT/snap' List root dir subvol List root dir -- 1.7.5.2.353.g5df3e From josef@redhat.com Fri Jun 3 09:08:19 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p53E8J4S015578 for ; Fri, 3 Jun 2011 09:08:19 -0500 X-ASG-Debug-ID: 1307110098-2b4e03500000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8AD061661844 for ; Fri, 3 Jun 2011 07:08:18 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id RnHuLdrsPCOlURTF for ; Fri, 03 Jun 2011 07:08:18 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p53E8Hqp030358 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 3 Jun 2011 10:08:17 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p53E8H8b000572; Fri, 3 Jun 2011 10:08:17 -0400 Received: from localhost.localdomain (vpn-9-113.rdu.redhat.com [10.11.9.113]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id p53E8GSZ020951; Fri, 3 Jun 2011 10:08:16 -0400 Message-ID: <4DE8EAD0.8010600@redhat.com> Date: Fri, 03 Jun 2011 10:08:16 -0400 From: Josef Bacik User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc15 Lightning/1.0b2 Thunderbird/3.1.10 MIME-Version: 1.0 To: David Sterba CC: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org X-ASG-Orig-Subj: Re: [PATCH] xfstests: fix hardcoded path in output of 254 Subject: Re: [PATCH] xfstests: fix hardcoded path in output of 254 References: <1307109162-21811-1-git-send-email-dsterba@suse.cz> In-Reply-To: <1307109162-21811-1-git-send-email-dsterba@suse.cz> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1307110098 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 06/03/2011 09:52 AM, David Sterba wrote: > Add filters after btrfs commands, else the test would incorrectly appear > failed. > > Signed-off-by: David Sterba Argh thank you for that, Reviewed-by: Josef Bacik From aelder@sgi.com Fri Jun 3 10:25:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p53FPigo018182 for ; Fri, 3 Jun 2011 10:25:44 -0500 Received: from cas.corp.sgi.com (pv-excas1-dc21-nlb.corp.sgi.com [137.38.102.126]) by relay2.corp.sgi.com (Postfix) with ESMTP id E09D3304039; Fri, 3 Jun 2011 08:25:40 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Fri, 3 Jun 2011 10:25:40 -0500 Subject: Re: [PATCH] xfstests: Improve test 219 to work with different filesystems From: Alex Elder Reply-To: To: Jan Kara CC: In-Reply-To: <1305805675-13753-1-git-send-email-jack@suse.cz> References: <1305805675-13753-1-git-send-email-jack@suse.cz> Content-Type: text/plain; charset="UTF-8" Date: Fri, 3 Jun 2011 10:25:40 -0500 Message-ID: <1307114740.2886.26.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, 2011-05-19 at 13:47 +0200, Jan Kara wrote: > Different filesystems account different amount of metadata in quota. Thus it is > impractical to check for a particular amount of space occupied by a file > because there is no right value. Change the test to verify whether the amount > of space is between the expected amount of space and the expected amount +5%. > The number of files is checked exactly as previously. > > Signed-off-by: Jan Kara I don't know enough about the differences between filesystem quota reporting. Perhaps that's something whose definition should be better formalized across filesystem types. In any case I don't outright object to allowing the 5% variability. I do have questions/comments about your change, however. > --- > 219 | 25 +++++++++++++++++++++++-- > 1 files changed, 23 insertions(+), 2 deletions(-) > > Dave, does this look better? > > diff --git a/219 b/219 > index 836d703..ad4e64d 100755 > --- a/219 > +++ b/219 > @@ -58,6 +58,23 @@ test_files() > done > } > > +check_usage() > +{ > + wroteblocks=$1 > + wrotefiles=$2 > + read id exceed blocks bsoft bhard inodes isoft ihard > + if [ "$blocks" -lt "$wroteblocks" ]; then > + echo "Too few blocks used (type=$type)" > + # Save 5% for overhead of metadata or different block size > + elif [ "$blocks" -gt $((wroteblocks+wroteblocks/20)) ]; then > + echo "Too many blocks used (type=$type)" > + elif [ "$inodes" != "$wrotefiles" ]; then > + echo "Bad number of inodes used (type=$type)" > + else > + echo "Usage OK (type=$type)" > + fi > +} > + > test_accounting() > { > echo "### some controlled buffered, direct and mmapd IO (type=$type)" > @@ -77,8 +94,12 @@ test_accounting() > $here/src/lstat64 $file | head -3 | _filter_scratch > done > > - repquota -$type -n $SCRATCH_MNT | grep -v "^#0" | _filter_scratch | > - awk '/^#/ { if (seen[$1]) next; seen[$1]++; } { print; }' Why did you delete this awk line? > + if [ $type == 'u' ]; then > + id=$uid > + else > + id=$gid > + fi This (above) seems to be doing a better job of selecting what we're interested in seeing rather than filtering out anything owned by root. Is that what you're doing here? Does doing this also eliminate duplicate entries (which I think can occur when multiple user names share the same UID, for example)? Regardless, this hunk has nothing to do with the 5% slop that's the stated purpose of this patch. It really ought to have been done as separate (earlier) patch. Maybe this isn't a big deal for xfstests but in XFS we try to be more disciplined about that. > + repquota -$type -n $SCRATCH_MNT | grep "^#$id" | check_usage 144 3 > } > > # real QA test starts here From aelder@sgi.com Fri Jun 3 10:27:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p53FRdjY018255 for ; Fri, 3 Jun 2011 10:27:40 -0500 Received: from cas.corp.sgi.com (pv-excas1-dc21-nlb.corp.sgi.com [137.38.102.126]) by relay1.corp.sgi.com (Postfix) with ESMTP id 9828D8F8096; Fri, 3 Jun 2011 08:27:36 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Fri, 3 Jun 2011 10:27:36 -0500 Subject: Re: [PATCH] xfstests: fix hardcoded path in output of 254 From: Alex Elder Reply-To: To: David Sterba CC: , , In-Reply-To: <1307109162-21811-1-git-send-email-dsterba@suse.cz> References: <1307109162-21811-1-git-send-email-dsterba@suse.cz> Content-Type: text/plain; charset="UTF-8" Date: Fri, 3 Jun 2011 10:27:36 -0500 Message-ID: <1307114856.2886.27.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, 2011-06-03 at 15:52 +0200, David Sterba wrote: > Add filters after btrfs commands, else the test would incorrectly appear > failed. > > Signed-off-by: David Sterba Looks good. I will commit this for you. Signed-off-by: Alex Elder From powool@gmail.com Fri Jun 3 10:59:05 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p53Fx52l019326 for ; Fri, 3 Jun 2011 10:59:05 -0500 X-ASG-Debug-ID: 1307116743-6a1f004d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-wy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 71B091346013 for ; Fri, 3 Jun 2011 08:59:03 -0700 (PDT) Received: from mail-wy0-f181.google.com (mail-wy0-f181.google.com [74.125.82.181]) by cuda.sgi.com with ESMTP id 7sltxyrojau1eQWM for ; Fri, 03 Jun 2011 08:59:03 -0700 (PDT) Received: by wyi11 with SMTP id 11so1648482wyi.26 for ; Fri, 03 Jun 2011 08:59:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=AgIxMfsRzt6mabN/Ukqlz4UMO0v2NPMSCabd5dvPSSQ=; b=nno/4cF+SffxKkUSQy71ldtyKMN7AgYEM0P9M5p5H0tvZo9/iRmtFhizNC0vFmOp5K z4WDGHruLPgza6qqFv0FaLgTrFmzliD1qEGfZVck0akHXrR7AN3GKTSFGvnPvbSpIlRn fkdwezULGQrMP333Z8dTmRAMbNrHB8yhYgcb8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=v1H+GIxDlbM3paJX5Uhw1WqjrxrqeKcz72Ev/CeUN4vBgga1xY+xK1W/7F+1WGzppp jp/dGfjmXG4ZTlKSyFHOzqijsHl93TYUlqEw4sj4zYDtHxYI7H9nb17zu3AJ+BzRvM/3 zgJyKZkBdxeoaJWHWyXhwhKZg9kcnA4M5uaXA= MIME-Version: 1.0 Received: by 10.216.135.76 with SMTP id t54mr7491126wei.31.1307116742640; Fri, 03 Jun 2011 08:59:02 -0700 (PDT) Sender: powool@gmail.com Received: by 10.216.137.202 with HTTP; Fri, 3 Jun 2011 08:59:02 -0700 (PDT) In-Reply-To: <20110603013948.GX561@dastard> References: <20110603004247.GA28043@infradead.org> <20110603013948.GX561@dastard> Date: Fri, 3 Jun 2011 11:59:02 -0400 X-Google-Sender-Auth: RsTeQ5_tiUDnxAuZJYi-Gtwu8_o Message-ID: X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general From: Paul Anderson To: Dave Chinner Cc: Christoph Hellwig , xfs-oss Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-wy0-f181.google.com[74.125.82.181] X-Barracuda-Start-Time: 1307116744 X-Barracuda-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, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65477 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jun 2, 2011 at 9:39 PM, Dave Chinner wrote: > On Thu, Jun 02, 2011 at 08:42:47PM -0400, Christoph Hellwig wrote: >> On Thu, Jun 02, 2011 at 10:42:46AM -0400, Paul Anderson wrote: >> > This morning, I had a symptom of a I/O throughput problem in which >> > dirty pages appeared to be taking a long time to write to disk. >> > >> > The system is a large x64 192GiB dell 810 server running 2.6.38.5 from >> > kernel.org - the basic workload was data intensive - concurrent large >> > NFS (with high metadata/low filesize), rsync/lftp (with low >> > metadata/high file size) all working in a 200TiB XFS volume on a >> > software MD raid0 on top of 7 software MD raid6, each w/18 drives. =A0= I >> > had mounted the filesystem with inode64,largeio,logbufs=3D8,noatime. >> >> A few comments on the setup before trying to analze what's going on in >> detail. =A0I'd absolutely recommend an external log device for this setu= p, >> that is buy another two fast but small disks, or take two existing ones >> and use a RAID 1 for the external log device. =A0This will speed up >> anything log intensive, which both NFS, and resync workloads are lot. >> >> Second thing if you can split the workloads into multiple volumes if you >> have two such different workloads, so thay they don't interfear with >> each other. >> >> Second a RAID0 on top of RAID6 volumes sounds like a pretty worst case >> for almost any type of I/O. =A0You end up doing even relatively small I/= O >> to all of the disks in the worst case. =A0I think you'd be much better >> off with a simple linear concatenation of the RAID6 devices, even if you >> can split them into multiple filesystems >> >> > The specific symptom was that 'sync' hung, a dpkg command hung >> > (presumably trying to issue fsync), and experimenting with "killall >> > -STOP" or "kill -STOP" of the workload jobs didn't let the system >> > drain I/O enough to finish the sync. =A0I probably did not wait long >> > enough, however. >> >> It really sounds like you're simply killloing the MD setup with a >> log of log I/O that does to all the devices. > > And this is one of the reasons why I originally suggested that > storage at this scale really should be using hardware RAID with > large amounts of BBWC to isolate the backend from such problematic > IO patterns. > Dave Chinner > david@fromorbit.com > Good HW RAID cards are on order - seems to be backordered at least a few weeks now at CDW. Got the batteries immediately. That will give more options for test and deployment. Not sure what I can do about the log - man page says xfs_growfs doesn't implement log moving. I can rebuild the filesystems, but for the one mentioned in this theread, this will take a long time. I'm guessing we'll need to split out the workload - aside from the differences in file size and use patterns, they also have fundamentally different values (the high metadata dataset happens to be high value relative to the low metadata/large file dataset). Paul From sgi-linux-xfs@lo.gmane.org Fri Jun 3 11:15:08 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p53GF7xe019828 for ; Fri, 3 Jun 2011 11:15:08 -0500 X-ASG-Debug-ID: 1307117705-142702ea0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lo.gmane.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 76E4349BF90 for ; Fri, 3 Jun 2011 09:15:05 -0700 (PDT) Received: from lo.gmane.org (lo.gmane.org [80.91.229.12]) by cuda.sgi.com with ESMTP id ftOxDmUpp45lliOT for ; Fri, 03 Jun 2011 09:15:05 -0700 (PDT) Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1QSX1c-0004ln-KW for linux-xfs@oss.sgi.com; Fri, 03 Jun 2011 18:15:04 +0200 Received: from s0106000acd1d509c.du.shawcable.net ([70.67.174.161]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 03 Jun 2011 18:15:04 +0200 Received: from prad by s0106000acd1d509c.du.shawcable.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 03 Jun 2011 18:15:04 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: linux-xfs@oss.sgi.com From: prad X-ASG-Orig-Subj: altering defaults Subject: altering defaults Date: Fri, 03 Jun 2011 08:33:06 -0700 Lines: 21 Message-ID: <8762onaq19.fsf@psinom.home> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: s0106000acd1d509c.du.shawcable.net User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) Cancel-Lock: sha1:CdouzyRl1sYYiDMRbiJtwex3kIE= X-Barracuda-Connect: lo.gmane.org[80.91.229.12] X-Barracuda-Start-Time: 1307117706 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65477 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 new to xfs (courtesy of most helpful and encouraging commentary by stan hoeppner!) and i've seen some advice which says to make the block size -> 512 directory size -> 4096 on the other hand, i've also come across webpages which say don't mess around! keep the defaults as they are unless you are absolutely sure that changing it suits your purpose and know why. my question is for the data storage area on a web/email server. we're mainly going to have small files there and the email part will have only temporary files for the most part since people will download (ie pop). it makes sense to make the block size = 512, but i wonder if it really matters noticeably. the server is not a heavily visited one and only on very rare occasions will we get around 50000 hits/day - most of the time we're looking at under 10000 and that is with all the domains combined. -- in friendship, prad From amir73il@gmail.com Fri Jun 3 12:21:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,J_CHICKENPOX_21, J_CHICKENPOX_33,J_CHICKENPOX_62,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p53HLCx8022154 for ; Fri, 3 Jun 2011 12:21:12 -0500 X-ASG-Debug-ID: 1307121669-7fc802970000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-wy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 67E96D71D6B for ; Fri, 3 Jun 2011 10:21:10 -0700 (PDT) Received: from mail-wy0-f181.google.com (mail-wy0-f181.google.com [74.125.82.181]) by cuda.sgi.com with ESMTP id JlErhcXNO7fFhFVA for ; Fri, 03 Jun 2011 10:21:10 -0700 (PDT) Received: by wyi11 with SMTP id 11so1706479wyi.26 for ; Fri, 03 Jun 2011 10:21:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=RIm7+Mmim/YnGawHSkRPsrgLfSnoeWodaWUZcCFSLTg=; b=BJwoBKNko3sHwJch86k4TgCNWyrwjldCad2BcXC5qlqrRFIOVduzhnjZRTshVQoHFC EPgNWSVjdEgTo5yNbRLmeiDZrSOeUCXaItjScjsenZpxDvq2rHYBjh/foebM9nl71fyk igdeDne2ja62leJewKbtMyz2ieLm6iGZhBn9k= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=rfBPTnZBNAbuVO1X/St6/vaw/qlIqOcs4HVUKlHn+Vz6/efbdjEIIMB7A+rfluTT8b sTerifnkOoVQPHCJ2xW3V5hHbZn2FSdKUcS4KjlFnIkR9akwTggVI8retj/6aosrqG25 ZayR0PMdZ/50lLeMTJYVEBsvJQZzW9G0zgz4Q= MIME-Version: 1.0 Received: by 10.216.254.82 with SMTP id g60mr3429671wes.36.1307121669096; Fri, 03 Jun 2011 10:21:09 -0700 (PDT) Sender: amir73il@gmail.com Received: by 10.216.21.209 with HTTP; Fri, 3 Jun 2011 10:21:09 -0700 (PDT) In-Reply-To: <4DE86BC1.4080008@redhat.com> References: <1306933012-8666-1-git-send-email-amir73il@users.sourceforge.net> <20110601232804.GL32466@dastard> <4DE7A557.9040608@redhat.com> <7D3F86FA-5AA9-49B0-9AFE-F597E83C07B4@dilger.ca> <20110603003610.GD16306@thunk.org> <4DE86BC1.4080008@redhat.com> Date: Fri, 3 Jun 2011 20:21:09 +0300 X-Google-Sender-Auth: -JGDWwbPYsaGP39kOnwh6FtMaU4 Message-ID: X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP From: "Amir G." To: Eric Sandeen Cc: "Ted Ts'o" , Andreas Dilger , Dave Chinner , xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, sergey57@gmail.com, Amir Goldstein Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-wy0-f181.google.com[74.125.82.181] X-Barracuda-Start-Time: 1307121671 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65481 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jun 3, 2011 at 8:06 AM, Eric Sandeen wrote: > On 6/2/11 11:59 PM, Amir G. wrote: >> On Fri, Jun 3, 2011 at 3:36 AM, Ted Ts'o wrote: >>> On Thu, Jun 02, 2011 at 11:22:53AM -0600, Andreas Dilger wrote: >>>> On 2011-06-02, at 8:59 AM, Eric Sandeen wrote: >>>>> I don't really mind adding ext4dev to FSTYP case statements, it >>>>> -is- something which blkid could, in theory, still return, and >>>>> making xfstests cope with that and try to invoke fsck -t ext4dev >>>>> doesn't bother me too much. =A0It is sadly an fs type embedded into >>>>> a few tools. >>>> >>>> I'm perfectly OK with using ext4dev as a filesystem type that allows t= esting >>>> changes to ext4 on a system that is already running ext4 as the root f= s. >>> >>> My take on this is that way too much time has been spent this subject. >> >> No doubt. >> >>> Being able to use ext4dev is useful, and given that we have all of >>> this support in our existing system tools, why not use it to make ext4 >>> development more efficient/easy? =A0As a bonus you can build the ext4de= v >>> as a module, and that means you the compile/edit/debug cycle can be >>> much faster since you can avoid doing a reboot, for those >>> circumstances where using KVM is not possible/convenient. =A0Personally= , >>> I normally use KVM these days, but I can imagine situations where >>> using ext4dev would be a better way to go. =A0For example, I'd probably >>> use KVM on my laptop, but for testing on production servers in a data >>> center, I'd probably use ext4dev, for a variety of local deployment >>> considerations that's not worth going into here. >>> >>> That being said, whether or not we modify xfstests seems to be a moot >>> point. =A0In order for me to do my bigalloc development, I've been >>> patching common.rc so that "/sbin/mkfs.$FSTYP" --> "mkfs.$FSTYP" and >>> "/sbin/fsck -t $FSTYP" --> "fsck.$FSTYP". =A0It's a 3 line change. =A0N= ot >>> a big deal. =A0I've been making this change using /bin/ed after >>> installing xfstests. =A0So if the XFS folks want to veto this change --= - >>> who cares? =A0It's not hard to make the change locally in order to make >>> xfstests. >>> >>> On the other hand, given that xfstests is using "mkfs.$FSTYP", I don't >>> see why it's so important that it clings to "fsck -t $FSTYP" instead >>> of using "fsck.$FSTYP". =A0There's no real benefit to calling the fsck >>> driver; it's just an extra fork and exec, and xfstests is being >>> inconsistent by insisting on the use of the fsck driver, but not using >>> the mkfs driver. >>> >>> But that being said, hacking xfstests is not hard, and if Dave and/or >>> Eric feels strongly about resisting this change, it's not worth a lot >>> of time, one way or another.... >>> >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0= =A0 =A0 =A0 =A0 =A0 =A0- Ted >>> >> >> I blame only myself for not presenting the case correctly. >> I made it sound like I am trying to push my own private hack upstream. >> Actually, all 10 people involved in snapshot development clone my xfstes= ts >> tree from github, so we have no real need for the upstream change. >> The reason I was pushing upstream is because I found this feature >> so useful, I thought other developers may enjoy it as well. >> >> Anyone on on this thread not having used ext4dev by next LSF >> can come to me to claim his beer ;-) > > mmm I like beer, I'll see you then! =A0;) > > -Eric (tucking this email away for future reference... ;) > Well, if anyone doesn't like beer, here are my low-tech ext4dev clone scripts ;-) ext4: scripts to clone and build ext4dev fs with default config options diff --git a/clone_ext4dev.sh b/clone_ext4dev.sh new file mode 100755 index 0000000..b5ae2c4 --- /dev/null +++ b/clone_ext4dev.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +rm -rf fs/ext4dev +mkdir -p fs/ext4dev +cp -a fs/ext4/*.h fs/ext4dev +cp -a fs/ext4/*.c fs/ext4dev +cp -a fs/ext4/Kconfig fs/ext4dev +cp -a fs/ext4/Makefile fs/ext4dev +cp -a include/trace/events/ext4.h fs/ext4dev/ext4dev_events.h +cd fs/ext4dev +rm *.mod.c 2>/dev/null +mv ext4_extents.h ext4dev_extents.h +mv ext4_jbd2.h ext4dev_jbd2.h +mv ext4_jbd2.c ext4dev_jbd2.c +mv ext4.h ext4dev.h +sed -f ../../ext4dev.sed -i * +cd .. +tar cfz ../ext4dev_module.tar.gz ext4dev/ diff --git a/ext4dev.sed b/ext4dev.sed new file mode 100644 index 0000000..2ec2761 --- /dev/null +++ b/ext4dev.sed @@ -0,0 +1,3 @@ +s/ext4/ext4dev/g +s/Ext4/Ext4dev/g +s/EXT4/EXT4DEV/g diff --git a/make_ext4dev.sh b/make_ext4dev.sh new file mode 100755 index 0000000..495929f --- /dev/null +++ b/make_ext4dev.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +KERNEL=3D$(uname -r) +KDIR=3D/lib/modules/${KERNEL}/build + +sudo cp fs/ext4dev/ext4dev_events.h ${KDIR}/include/trace/events/ext4dev.h +make -C ${KDIR} M=3D${PWD}/fs/ext4dev modules +sudo make -C ${KDIR} M=3D${PWD}/fs/ext4dev modules_install +sudo rmmod ext4dev +sudo modprobe ext4dev + diff --git a/fs/ext4/Makefile b/fs/ext4/Makefile index c947e36..9981306 100644 --- a/fs/ext4/Makefile +++ b/fs/ext4/Makefile @@ -2,6 +2,13 @@ # Makefile for the linux ext4-filesystem routines. # +ifndef CONFIG_EXT4_FS +CONFIG_EXT4_FS?=3Dm +CONFIG_EXT4_FS_XATTR?=3Dy +CONFIG_EXT4_FS_POSIX_ACL?=3D$(CONFIG_FS_POSIX_ACL) +CONFIG_EXT4_FS_SECURITY?=3Dy +endif + obj-$(CONFIG_EXT4_FS) +=3D ext4.o ext4-y :=3D balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o page-i= o.o \ diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index 3aa0b72..657d437 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -33,6 +33,18 @@ #include #endif +#ifndef EXT4_SUPER_MAGIC +#define EXT4_SUPER_MAGIC EXT3_SUPER_MAGIC +/* configuration options for standalone module */ +#define CONFIG_EXT4_DEFAULTS_TO_ORDERED +#define CONFIG_EXT4_FS_XATTR +#ifdef CONFIG_FS_POSIX_ACL +#define CONFIG_EXT4_FS_POSIX_ACL +#endif +#define CONFIG_EXT4_FS_SECURITY +#define CONFIG_EXT4_DEBUG +#endif + /* * The fourth extended filesystem constants/structures */ --- From jack@suse.cz Fri Jun 3 12:34:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p53HYsHJ022662 for ; Fri, 3 Jun 2011 12:34:55 -0500 X-ASG-Debug-ID: 1307122493-7afd013a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3FE1249C0DB for ; Fri, 3 Jun 2011 10:34:53 -0700 (PDT) Received: from mx1.suse.de (cantor.suse.de [195.135.220.2]) by cuda.sgi.com with ESMTP id eYNNCC4fAyfvBTTK for ; Fri, 03 Jun 2011 10:34:53 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.suse.de (Postfix) with ESMTP id 8DDBE90975; Fri, 3 Jun 2011 19:34:52 +0200 (CEST) Received: by quack.suse.cz (Postfix, from userid 1000) id E2EBC20550; Fri, 3 Jun 2011 19:34:51 +0200 (CEST) Date: Fri, 3 Jun 2011 19:34:51 +0200 From: Jan Kara To: Alex Elder Cc: Jan Kara , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests: Improve test 219 to work with different filesystems Subject: Re: [PATCH] xfstests: Improve test 219 to work with different filesystems Message-ID: <20110603173451.GA9018@quack.suse.cz> References: <1305805675-13753-1-git-send-email-jack@suse.cz> <1307114740.2886.26.camel@doink> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1307114740.2886.26.camel@doink> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: cantor.suse.de[195.135.220.2] X-Barracuda-Start-Time: 1307122494 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 03-06-11 10:25:40, Alex Elder wrote: > On Thu, 2011-05-19 at 13:47 +0200, Jan Kara wrote: > > Different filesystems account different amount of metadata in quota. Thus it is > > impractical to check for a particular amount of space occupied by a file > > because there is no right value. Change the test to verify whether the amount > > of space is between the expected amount of space and the expected amount +5%. > > The number of files is checked exactly as previously. > > > > Signed-off-by: Jan Kara > > I don't know enough about the differences > between filesystem quota reporting. Perhaps > that's something whose definition should be > better formalized across filesystem types. Yes, the definition is different for different filesystems and it's kind of hard to change it now... > In any case I don't outright object to > allowing the 5% variability. > > I do have questions/comments about your change, > however. > > > --- > > 219 | 25 +++++++++++++++++++++++-- > > 1 files changed, 23 insertions(+), 2 deletions(-) > > > > Dave, does this look better? > > > > diff --git a/219 b/219 > > index 836d703..ad4e64d 100755 > > --- a/219 > > +++ b/219 > > @@ -58,6 +58,23 @@ test_files() > > done > > } > > > > +check_usage() > > +{ > > + wroteblocks=$1 > > + wrotefiles=$2 > > + read id exceed blocks bsoft bhard inodes isoft ihard > > + if [ "$blocks" -lt "$wroteblocks" ]; then > > + echo "Too few blocks used (type=$type)" > > + # Save 5% for overhead of metadata or different block size > > + elif [ "$blocks" -gt $((wroteblocks+wroteblocks/20)) ]; then > > + echo "Too many blocks used (type=$type)" > > + elif [ "$inodes" != "$wrotefiles" ]; then > > + echo "Bad number of inodes used (type=$type)" > > + else > > + echo "Usage OK (type=$type)" > > + fi > > +} > > + > > test_accounting() > > { > > echo "### some controlled buffered, direct and mmapd IO (type=$type)" > > @@ -77,8 +94,12 @@ test_accounting() > > $here/src/lstat64 $file | head -3 | _filter_scratch > > done > > > > - repquota -$type -n $SCRATCH_MNT | grep -v "^#0" | _filter_scratch | > > - awk '/^#/ { if (seen[$1]) next; seen[$1]++; } { print; }' > > Why did you delete this awk line? > > > + if [ $type == 'u' ]; then > > + id=$uid > > + else > > + id=$gid > > + fi > > This (above) seems to be doing a better job of selecting what > we're interested in seeing rather than filtering out anything > owned by root. Is that what you're doing here? Does doing > this also eliminate duplicate entries (which I think can occur > when multiple user names share the same UID, for example)? > > Regardless, this hunk has nothing to do with the 5% slop > that's the stated purpose of this patch. It really ought > to have been done as separate (earlier) patch. Maybe this > isn't a big deal for xfstests but in XFS we try to be more > disciplined about that. I've droppped the awk like because we check things differently now. Previously we just reported all users (except root whose usage was changing depending on other things stored in the filesystem so it had to be excluded) and compared this against expected output. After my change we check only usage of a particular user used for testing and check_usage() uses just the first line of output so there's no need to remove possible duplicate entries. So I didn't feel the particular need to separate out the change because I just viewed it as one logical change of how we check stuff... > > + repquota -$type -n $SCRATCH_MNT | grep "^#$id" | check_usage 144 3 > > } > > > > # real QA test starts here Honza -- Jan Kara SUSE Labs, CR From achender@linux.vnet.ibm.com Fri Jun 3 14:14:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-3.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_64,J_CHICKENPOX_66,J_CHICKENPOX_92,LOCAL_GNU_PATCH, SUBJ_FORWARDED autolearn=ham version=3.4.0-r929098 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 p53JEBIV029617 for ; Fri, 3 Jun 2011 14:14:12 -0500 X-ASG-Debug-ID: 1307128451-42dc014b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e33.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 988EB49C70D for ; Fri, 3 Jun 2011 12:14:11 -0700 (PDT) Received: from e33.co.us.ibm.com (e33.co.us.ibm.com [32.97.110.151]) by cuda.sgi.com with ESMTP id xx8tZviOK6qMBw3Q for ; Fri, 03 Jun 2011 12:14:11 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay05.boulder.ibm.com (d03relay05.boulder.ibm.com [9.17.195.107]) by e33.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p53J6oFw004355 for ; Fri, 3 Jun 2011 13:06:50 -0600 Received: from d03av04.boulder.ibm.com (d03av04.boulder.ibm.com [9.17.195.170]) by d03relay05.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p53JDjXk164868 for ; Fri, 3 Jun 2011 13:13:50 -0600 Received: from d03av04.boulder.ibm.com (loopback [127.0.0.1]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p53DDiw4025790 for ; Fri, 3 Jun 2011 07:13:45 -0600 Received: from [9.11.169.110] (IBM-3CEFE379E05-009011169110.tucson.ibm.com [9.11.169.110]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p53DDiLS025739; Fri, 3 Jun 2011 07:13:44 -0600 Message-ID: <4DE93268.90007@linux.vnet.ibm.com> Date: Fri, 03 Jun 2011 12:13:44 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Fwd: [XFSTEST Add Fallocate Punch Hole Tests 1/3 v4] Add Punch Hole to FSX Subject: Fwd: [XFSTEST Add Fallocate Punch Hole Tests 1/3 v4] Add Punch Hole to FSX Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e33.co.us.ibm.com[32.97.110.151] X-Barracuda-Start-Time: 1307128451 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 Hi All, I realized today that this patch needed to go out on some more mailing lists, so I'm going to forward them along. This is the patch set I've been working on to add more punch hole tests to xfstests. I'll keep the xfs mailing list on the forward too, to help keep the discussions in one thread. Thx! Allison Henderson -------- Original Message -------- Subject: [XFSTEST Add Fallocate Punch Hole Tests 1/3 v4] Add Punch Hole to FSX Date: Wed, 25 May 2011 19:34:28 -0700 From: Allison Henderson To: xfs-oss This patch adds punch hole tests to the fsx stress test. Signed-off-by: Allison Henderson v1 -> v2: Corrections to the Makefile have been backed out. Those corrections have been addressed in the "xfstests: clean up fallocate configuration tests" patch The punch hole tests can be disabled with the -H flag, and will also be disabled if it is detected that the filesystem does not support punch hole v2 -> v4 Punch hole tests and functionality tests have been moved into their own functions. Existing dofallocate routine has been renamed to do_preallocate. --- :100644 100755 fe072d3... a55b6f7... M ltp/fsx.c ltp/fsx.c | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 122 insertions(+), 18 deletions(-) diff --git a/ltp/fsx.c b/ltp/fsx.c old mode 100644 new mode 100755 index fe072d3..a55b6f7 --- a/ltp/fsx.c +++ b/ltp/fsx.c @@ -69,6 +69,7 @@ int logcount = 0; /* total ops */ #define OP_MAPWRITE 6 #define OP_SKIPPED 7 #define OP_FALLOCATE 8 +#define OP_PUNCH_HOLE 9 #undef PAGE_SIZE #define PAGE_SIZE getpagesize() @@ -110,6 +111,7 @@ int randomoplen = 1; /* -O flag disables it */ int seed = 1; /* -S flag */ int mapped_writes = 1; /* -W flag disables */ int fallocate_calls = 1; /* -F flag disables */ +int punch_hole_calls = 1; /* -H flag disables */ int mapped_reads = 1; /* -R flag disables it */ int fsxgoodfd = 0; int o_direct; /* -Z */ @@ -279,6 +281,14 @@ logdump(void) badoff < lp->args[0] + lp->args[1]) prt("\t******FFFF"); break; + case OP_PUNCH_HOLE: + prt("PUNCH HOLE\t0x%x thru 0x%x\t(0x%x bytes)", + lp->args[0], lp->args[0] + lp->args[1] - 1, + lp->args[1]); + if (badoff >= lp->args[0] && badoff < + lp->args[0] + lp->args[1]) + prt("\t******PPPP"); + break; case OP_SKIPPED: prt("SKIPPED (no operation)"); break; @@ -784,10 +794,67 @@ dotruncate(unsigned size) } } +#ifdef FALLOC_FL_PUNCH_HOLE +void +do_punch_hole(unsigned offset, unsigned length) +{ + unsigned end_offset; + int max_offset = 0; + int max_len = 0; + int mode = FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE; + + if (length == 0) { + if (!quiet && testcalls > simulatedopcount) + prt("skipping zero length punch hole\n"); + log4(OP_SKIPPED, OP_PUNCH_HOLE, offset, length); + return; + } + + if (file_size <= (loff_t)offset) { + if (!quiet && testcalls > simulatedopcount) + prt("skipping hole punch off the end of the file\n"); + log4(OP_SKIPPED, OP_PUNCH_HOLE, offset, length); + return; + } + + end_offset = offset + length; + + log4(OP_PUNCH_HOLE, offset, length, 0); + + if (testcalls <= simulatedopcount) + return; + + if ((progressinterval && testcalls % progressinterval == 0) || + (debug && (monitorstart == -1 || monitorend == -1 || + end_offset <= monitorend))) { + prt("%lu punch\tfrom 0x%x to 0x%x, (0x%x bytes)\n", testcalls, + offset, offset+length, length); + } + if (fallocate(fd, mode, (loff_t)offset, (loff_t)length) == -1) { + prt("%punch hole: %x to %x\n", offset, length); + prterr("do_punch_hole: fallocate"); + report_failure(161); + } + + + max_offset = offset < file_size ? offset : file_size; + max_len = max_offset + length <= file_size ? length : + file_size - max_offset; + memset(good_buf + max_offset, '\0', max_len); +} + +#else +void +do_punch_hole(unsigned offset, unsigned length) +{ + return; +} +#endif + #ifdef FALLOCATE /* fallocate is basically a no-op unless extending, then a lot like a truncate */ void -dofallocate(unsigned offset, unsigned length) +do_preallocate(unsigned offset, unsigned length) { unsigned end_offset; int keep_size; @@ -831,13 +898,13 @@ dofallocate(unsigned offset, unsigned length) 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"); + prterr("do_preallocate: fallocate"); report_failure(161); } } #else void -dofallocate(unsigned offset, unsigned length) +do_preallocate(unsigned offset, unsigned length) { return; } @@ -895,8 +962,7 @@ test(void) unsigned long offset; unsigned long size = maxoplen; unsigned long rv = random(); - unsigned long op = rv % (3 + !lite + mapped_writes + fallocate_calls); - + unsigned long op = rv % (3 + !lite + mapped_writes + fallocate_calls + punch_hole_calls); /* turn off the map read if necessary */ if (op == 2 && !mapped_reads) @@ -924,6 +990,7 @@ test(void) * TRUNCATE: op = - 3 * MAPWRITE: op = 3 4 * FALLOCATE: op = - 5 + * PUNCH HOLE: op = - 6 */ if (lite ? 0 : op == 3 && (style & 1) == 0) /* vanilla truncate? */ dotruncate(random() % maxfilelen); @@ -941,7 +1008,12 @@ test(void) offset %= maxfilelen; if (offset + size > maxfilelen) size = maxfilelen - offset; - dofallocate(offset, size); + do_preallocate(offset, size); + } else if (op == 6) { + offset %= maxfilelen; + if (offset + size > maxfilelen) + size = maxfilelen - offset; + do_punch_hole(offset, size); } else if (op == 1 || op == (lite ? 3 : 4)) { /* write / mapwrite */ offset %= maxfilelen; @@ -1013,6 +1085,9 @@ usage(void) #ifdef FALLOCATE " -F: Do not use fallocate (preallocation) calls\n" #endif +#ifdef FALLOC_FL_PUNCH_HOLE +" -H: Do not use punch hole 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\ @@ -1161,6 +1236,41 @@ int aio_rw(int rw, int fd, char *buf, unsigned len, unsigned offset) #endif +void +test_fallocate() +{ +#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); + } + } +#else /* ! FALLOCATE */ + fallocate_calls = 0; +#endif +} + +void +test_punch_hole() +{ +#ifdef FALLOC_FL_PUNCH_HOLE + if (!lite && punch_hole_calls) { + if (fallocate(fd, 0, 0, + FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE) && + errno == EOPNOTSUPP) { + + warn("main: filesystem does not support fallocate punch hole, disabling"); + punch_hole_calls = 0; + } + } +#else /* ! PUNCH HOLE */ + punch_hole_calls = 0; +#endif +} + int main(int argc, char **argv) { @@ -1179,7 +1289,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:FLN:OP:RS:WZ")) + while ((ch = getopt(argc, argv, "b:c:dfl:m:no:p:qr:s:t:w:xyAD:FHLN:OP:RS:WZ")) != EOF) switch (ch) { case 'b': @@ -1276,6 +1386,9 @@ main(int argc, char **argv) case 'F': fallocate_calls = 0; break; + case 'H': + punch_hole_calls = 0; + break; case 'L': lite = 1; break; @@ -1421,17 +1534,8 @@ 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); - } -#else /* ! FALLOCATE */ - fallocate_calls = 0; -#endif + test_fallocate(); + test_punch_hole(); while (numops == -1 || numops--) test(); -- 1.7.1 _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs From achender@linux.vnet.ibm.com Fri Jun 3 14:14:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65, SUBJ_FORWARDED autolearn=no version=3.4.0-r929098 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 p53JEfd9029635 for ; Fri, 3 Jun 2011 14:14:41 -0500 X-ASG-Debug-ID: 1307128480-24f702790000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e32.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A9D5649C718 for ; Fri, 3 Jun 2011 12:14:40 -0700 (PDT) Received: from e32.co.us.ibm.com (e32.co.us.ibm.com [32.97.110.150]) by cuda.sgi.com with ESMTP id C1t3TjyPTmYvGs2t for ; Fri, 03 Jun 2011 12:14:40 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay01.boulder.ibm.com (d03relay01.boulder.ibm.com [9.17.195.226]) by e32.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p53J31Re009471 for ; Fri, 3 Jun 2011 13:03:01 -0600 Received: from d03av04.boulder.ibm.com (d03av04.boulder.ibm.com [9.17.195.170]) by d03relay01.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p53JEP9g070552 for ; Fri, 3 Jun 2011 13:14:27 -0600 Received: from d03av04.boulder.ibm.com (loopback [127.0.0.1]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p53DEPip028029 for ; Fri, 3 Jun 2011 07:14:25 -0600 Received: from [9.11.169.110] (IBM-3CEFE379E05-009011169110.tucson.ibm.com [9.11.169.110]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p53DEO4O028003; Fri, 3 Jun 2011 07:14:24 -0600 Message-ID: <4DE93290.70709@linux.vnet.ibm.com> Date: Fri, 03 Jun 2011 12:14:24 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Fwd: [XFSTEST Add Fallocate Punch Hole Tests 2/3 v4] Expand 252 punch hole test to cover additional corner cases Subject: Fwd: [XFSTEST Add Fallocate Punch Hole Tests 2/3 v4] Expand 252 punch hole test to cover additional corner cases Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e32.co.us.ibm.com[32.97.110.150] X-Barracuda-Start-Time: 1307128480 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 -------- Original Message -------- Subject: [XFSTEST Add Fallocate Punch Hole Tests 2/3 v4] Expand 252 punch hole test to cover additional corner cases Date: Wed, 25 May 2011 19:34:39 -0700 From: Allison Henderson To: xfs-oss This patch adds additional punch hole tests to 252 that were used to test ext4 punch hole. The _test_generic_punch routine has been modified to accept two new flags: -k To keep the test file between tests. This will test the handling of existing holes -d To not sync the file between tests. This will test the handling of delayed extents Four new corner cases have also been added to the routine: 14. data -> hole @ EOF 15. data -> hole @ 0 16. data -> cache cold ->hole 17. data -> hole in single block file Signed-off-by: Allison Henderson --- :100755 100755 dfdf3f8... 5efa243... M 252 :100644 100644 cd8e4b4... 930c924... M 252.out :100644 100644 e2da5d8... ddf63b0... M common.punch 252 | 10 +++ 252.out | 192 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ common.punch | 150 ++++++++++++++++++++++++++++++++++++++------- 3 files changed, 330 insertions(+), 22 deletions(-) diff --git a/252 b/252 index dfdf3f8..5efa243 100755 --- a/252 +++ b/252 @@ -52,6 +52,16 @@ _require_xfs_io_fiemap testfile=$TEST_DIR/252.$$ +# Standard punch hole tests _test_generic_punch falloc fpunch fpunch fiemap _filter_fiemap $testfile -F +# Delayed allocation punch hole tests +_test_generic_punch -d falloc fpunch fpunch fiemap _filter_fiemap $testfile -F + +# Multi hole punch tests +_test_generic_punch -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F + +# Delayed allocation multi punch hole tests +_test_generic_punch -d -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F + status=0 ; exit diff --git a/252.out b/252.out index cd8e4b4..930c924 100644 --- a/252.out +++ b/252.out @@ -45,3 +45,195 @@ QA output created by 252 0: [0..7]: data 1: [8..31]: hole 2: [32..39]: data + 14. data -> hole @ EOF +0: [0..23]: data +1: [24..39]: hole + 15. data -> hole @ 0 +0: [0..15]: hole +1: [16..39]: data + 16. data -> cache cold ->hole +0: [0..15]: hole +1: [16..39]: data + 17. data -> hole in single block file +0: [0..7]: data + 1. into a hole + 2. into allocated space +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 3. into unwritten space +0: [0..7]: unwritten +1: [8..23]: hole +2: [24..39]: unwritten + 4. hole -> data +0: [0..23]: hole +1: [24..31]: data +2: [32..39]: hole + 5. hole -> unwritten +0: [0..23]: hole +1: [24..31]: unwritten +2: [32..39]: hole + 6. data -> hole +0: [0..7]: data +1: [8..39]: hole + 7. data -> unwritten +0: [0..7]: data +1: [8..23]: hole +2: [24..31]: unwritten +3: [32..39]: hole + 8. unwritten -> hole +0: [0..7]: unwritten +1: [8..39]: hole + 9. unwritten -> data +0: [0..7]: unwritten +1: [8..23]: hole +2: [24..31]: data +3: [32..39]: hole + 10. hole -> data -> hole + 11. data -> hole -> data +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 12. unwritten -> data -> unwritten +0: [0..7]: unwritten +1: [8..31]: hole +2: [32..39]: unwritten + 13. data -> unwritten -> data +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 14. data -> hole @ EOF +0: [0..23]: data +1: [24..39]: hole + 15. data -> hole @ 0 +0: [0..15]: hole +1: [16..39]: data + 16. data -> cache cold ->hole +0: [0..15]: hole +1: [16..39]: data + 17. data -> hole in single block file +0: [0..7]: data + 1. into a hole +0: [0..7]: data +1: [8..39]: hole + 2. into allocated space +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 3. into unwritten space +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 4. hole -> data +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 5. hole -> unwritten +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 6. data -> hole +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 7. data -> unwritten +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 8. unwritten -> hole +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 9. unwritten -> data +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 10. hole -> data -> hole +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 11. data -> hole -> data +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 12. unwritten -> data -> unwritten +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 13. data -> unwritten -> data +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 14. data -> hole @ EOF +0: [0..23]: data +1: [24..39]: hole + 15. data -> hole @ 0 +0: [0..15]: hole +1: [16..39]: data + 16. data -> cache cold ->hole +0: [0..15]: hole +1: [16..39]: data + 17. data -> hole in single block file +0: [0..7]: data + 1. into a hole +0: [0..7]: data +1: [8..39]: hole + 2. into allocated space +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 3. into unwritten space +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 4. hole -> data +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 5. hole -> unwritten +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 6. data -> hole +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 7. data -> unwritten +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 8. unwritten -> hole +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 9. unwritten -> data +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 10. hole -> data -> hole +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 11. data -> hole -> data +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 12. unwritten -> data -> unwritten +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 13. data -> unwritten -> data +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 14. data -> hole @ EOF +0: [0..23]: data +1: [24..39]: hole + 15. data -> hole @ 0 +0: [0..15]: hole +1: [16..39]: data + 16. data -> cache cold ->hole +0: [0..15]: hole +1: [16..39]: data + 17. data -> hole in single block file +0: [0..7]: data diff --git a/common.punch b/common.punch index e2da5d8..ddf63b0 100644 --- a/common.punch +++ b/common.punch @@ -256,8 +256,39 @@ die_now() # 11. data -> hole -> data # 12. unwritten -> data -> unwritten # 13. data -> unwritten -> data +# 14. data -> hole @ EOF +# 15. data -> hole @ 0 +# 16. data -> cache cold ->hole +# 17. data -> hole in single block file +# +# Test file is removed, created and sync'd between tests. +# +# Use -k flag to keep the file between tests. This will +# test the handling of pre-existing holes. +# +# Use the -d flag to not sync the file between tests. +# This will test the handling of delayed extents +# _test_generic_punch() { + + remove_testfile=1 + sync_cmd="-c fsync" + OPTIND=1 + while getopts 'dk' OPTION + do + case $OPTION in + k) remove_testfile= + ;; + d) sync_cmd= + ;; + ?) echo Invalid flag + exit 1 + ;; + esac + done + shift $(($OPTIND - 1)) + alloc_cmd=$1 punch_cmd=$2 zero_cmd=$3 #if not testing zero just set to punch @@ -267,22 +298,28 @@ _test_generic_punch() xfs_io_opt=$7 #needs to be -F if not testing xfs echo " 1. into a hole" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now echo " 2. into allocated space" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ - -c "pwrite 0 20k" -c "fsync" \ + -c "pwrite 0 20k" $sync_cmd \ -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now echo " 3. into unwritten space" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$alloc_cmd 0 20k" \ -c "$zero_cmd 4k 8k" \ @@ -290,15 +327,19 @@ _test_generic_punch() [ $? -ne 0 ] && die_now echo " 4. hole -> data" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ - -c "pwrite 8k 8k" -c "fsync" \ + -c "pwrite 8k 8k" $sync_cmd \ -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now echo " 5. hole -> unwritten" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$alloc_cmd 8k 8k" \ -c "$zero_cmd 4k 8k" \ @@ -306,24 +347,30 @@ _test_generic_punch() [ $? -ne 0 ] && die_now echo " 6. data -> hole" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ - -c "pwrite 0 8k" -c "fsync" \ + -c "pwrite 0 8k" $sync_cmd \ -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now echo " 7. data -> unwritten" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ - -c "pwrite 0 8k" -c "fsync" \ + -c "pwrite 0 8k" $sync_cmd \ -c "$alloc_cmd 8k 8k" \ -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now echo " 8. unwritten -> hole" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$alloc_cmd 0 8k" \ -c "$zero_cmd 4k 8k" \ @@ -331,49 +378,108 @@ _test_generic_punch() [ $? -ne 0 ] && die_now echo " 9. unwritten -> data" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$alloc_cmd 0 8k" \ - -c "pwrite 8k 8k" -c "fsync" \ + -c "pwrite 8k 8k" $sync_cmd \ -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now echo " 10. hole -> data -> hole" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ - -c "pwrite 8k 4k" -c "fsync" \ + -c "pwrite 8k 4k" $sync_cmd \ -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now echo " 11. data -> hole -> data" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$alloc_cmd 0 20k" \ -c "pwrite 0 8k" \ - -c "pwrite 12k 8k" -c "fsync" \ + -c "pwrite 12k 8k" $sync_cmd \ -c "$punch_cmd 8k 4k" \ -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now echo " 12. unwritten -> data -> unwritten" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$alloc_cmd 0 20k" \ - -c "pwrite 8k 4k" -c "fsync" \ + -c "pwrite 8k 4k" $sync_cmd \ -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now echo " 13. data -> unwritten -> data" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$alloc_cmd 0 20k" \ - -c "pwrite 0k 8k" -c "fsync" \ + -c "pwrite 0k 8k" $sync_cmd \ -c "pwrite 12k 8k" -c "fsync" \ -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + + echo " 14. data -> hole @ EOF" + rm -f $testfile + $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ + -c "pwrite 0 20k" $sync_cmd \ + -c "$zero_cmd 12k 8k" \ + -c "$map_cmd -v" $testfile | $filter_cmd + [ $? -ne 0 ] && die_now + + echo " 15. data -> hole @ 0" + if [ "$remove_testfile" ]; then + rm -f $testfile + fi + $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ + -c "pwrite 0 20k" $sync_cmd \ + -c "$zero_cmd 0k 8k" \ + -c "$map_cmd -v" $testfile | $filter_cmd + [ $? -ne 0 ] && die_now + + echo " 16. data -> cache cold ->hole" + if [ "$remove_testfile" ]; then + rm -f $testfile + rm -f $testfile.2 + else + cp $testfile $testfile.2 + fi + $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ + -c "pwrite 8k 12k" -c "fsync" $testfile.2 \ + > /dev/null + $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ + -c "pwrite 0 20k" $sync_cmd \ + -c "$zero_cmd 0k 8k" \ + -c "fadvise -d" \ + -c "$map_cmd -v" $testfile | $filter_cmd + diff $testfile $testfile.2 + [ $? -ne 0 ] && die_now + rm -f $testfile.2 + + echo " 17. data -> hole in single block file" + if [ "$remove_testfile" ]; then + rm -f $testfile + fi + block_size=`stat -f $TEST_DEV | grep "Block size" | cut -d " " -f3` + $XFS_IO_PROG $xfs_io_opt -f -c "truncate $block_size" \ + -c "pwrite 0 $block_size" $sync_cmd \ + -c "$zero_cmd 128 128" \ + -c "$map_cmd -v" $testfile | $filter_cmd + [ $? -ne 0 ] && die_now + } -- 1.7.1 _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs From achender@linux.vnet.ibm.com Fri Jun 3 14:14:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65, SUBJ_FORWARDED autolearn=no version=3.4.0-r929098 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 p53JExXW029655 for ; Fri, 3 Jun 2011 14:14:59 -0500 X-ASG-Debug-ID: 1307128498-4cab02800000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e31.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EB9DE13470D5 for ; Fri, 3 Jun 2011 12:14:58 -0700 (PDT) Received: from e31.co.us.ibm.com (e31.co.us.ibm.com [32.97.110.149]) by cuda.sgi.com with ESMTP id 51ZgablKLlZBkYdl for ; Fri, 03 Jun 2011 12:14:58 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by e31.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p53IwGZ1001995 for ; Fri, 3 Jun 2011 12:58:16 -0600 Received: from d03av04.boulder.ibm.com (d03av04.boulder.ibm.com [9.17.195.170]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p53JEoEZ056772 for ; Fri, 3 Jun 2011 13:14:51 -0600 Received: from d03av04.boulder.ibm.com (loopback [127.0.0.1]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p53DEnmv029532 for ; Fri, 3 Jun 2011 07:14:49 -0600 Received: from [9.11.169.110] (IBM-3CEFE379E05-009011169110.tucson.ibm.com [9.11.169.110]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p53DEmDK029479; Fri, 3 Jun 2011 07:14:49 -0600 Message-ID: <4DE932A9.7040007@linux.vnet.ibm.com> Date: Fri, 03 Jun 2011 12:14:49 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Fwd: [XFSTEST Add Fallocate Punch Hole Tests 3/3 v4] Add ENOSPC Hole Punch Test Subject: Fwd: [XFSTEST Add Fallocate Punch Hole Tests 3/3 v4] Add ENOSPC Hole Punch Test Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e31.co.us.ibm.com[32.97.110.149] X-Barracuda-Start-Time: 1307128498 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 -------- Original Message -------- Subject: [XFSTEST Add Fallocate Punch Hole Tests 3/3 v4] Add ENOSPC Hole Punch Test Date: Wed, 25 May 2011 19:34:44 -0700 From: Allison Henderson To: xfs-oss This patch adds a test to 252 that tests that a hole can be punched even when the disk is full. Reserved blocks should be used to allow a punch hole to proceed even when there is not enough blocks to further fragment the file. To test this, the file system is fragmented by punching holes in regular intervals and filling the file system between punches. This will eventually force the file system to use reserved blocks to proceed with the punch hole operation. Signed-off-by: Allison Henderson --- :100755 100755 5efa243... b5204fe... M 252 :100644 100644 ddf63b0... fc6123c... M common.punch 252 | 12 +++++++ common.punch | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+), 0 deletions(-) diff --git a/252 b/252 index 5efa243..b5204fe 100755 --- a/252 +++ b/252 @@ -49,6 +49,7 @@ _supported_os Linux _require_xfs_io_falloc_punch _require_xfs_io_fiemap +_require_scratch testfile=$TEST_DIR/252.$$ @@ -64,4 +65,15 @@ _test_generic_punch -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F # Delayed allocation multi punch hole tests _test_generic_punch -d -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F +# Test full filesystem hole punching. +# Make a small file system to fill +umount $SCRATCH_DEV &> /dev/null +_scratch_mkfs_sized $(( 1024 * 1024 * 1024 )) &> /dev/null +_scratch_mount +# Test must be able to write files with non-root permissions +chmod 777 $SCRATCH_MNT + +block_size=`stat -f $SCRATCH_DEV | grep "Block size" | cut -d " " -f3` +_test_full_fs_punch $(( $block_size * 2 )) $block_size 500 $SCRATCH_MNT/252.$$ + status=0 ; exit diff --git a/common.punch b/common.punch index ddf63b0..fc6123c 100644 --- a/common.punch +++ b/common.punch @@ -481,5 +481,100 @@ _test_generic_punch() -c "$zero_cmd 128 128" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now +} + +# _fill_fs() +# +# Fills a file system by repeatedly creating files in the given folder +# starting with the given file size. Files are reduced in size when +# they can no longer fit untill no more files can be created. +# +# This routine is used by _test_full_fs_punch to test that a hole may +# still be punched when the disk is full by borrowing reserved blocks. +# All files are created as a non root user to prevent reserved blocks +# from being consumed. +# +_fill_fs() { + local file_size=$1 + local dir=$2 + local file_count=1 + + if [ $# -ne 2 ] + then + echo "USAGE: $0 filesize dir" + exit 1 + fi + + mkdir -p $dir &> /dev/null + if [[ $? != 0 ]] ; then + return 0 + fi + chmod 777 $dir + + rc=0 + while [ $file_size -gt 0 -a $rc == 0 ] + do + # This part must not be done as root or + # reserved blocks will be consumed + sudo -u nobody $XFS_IO_PROG -F -f -c "pwrite 0 $file_size" $dir/$file_count.bin &> /dev/null + rc=$? + + # If there was no room to make the file, + # and the file size can still be made smaller, + # then divide it in half, and keep going + if [ $file_size -gt 1 -a $rc != 0 ] + then + file_size=$(( $file_size / 2 )) + rc=0 + fi + file_count=$(( $file_count + 1 )) + + done +} +# _test_full_fs_punch() +# +# This function will test that a hole may be punched +# even when the file system is full. Reserved blocks +# should be used to allow a punch hole to proceed even +# when there is not enough blocks to further fragment the +# file. To test this, this function will fragment the file +# system by punching holes in regular intervals and filling +# the file system between punches. +# +_test_full_fs_punch() +{ + hole_len=$1 # The length of the holes to punch + hole_interval=$2 # The interval between the holes + iterations=$3 # The number of holes to punch + file_name=$4 # File to punch holes in + file_len=$(( $(( $hole_len + $hole_interval )) * $iterations )) + path=`dirname $file_name` + hole_offset=0 + + rm -f $file_name &> /dev/null + + $XFS_IO_PROG -F -f -c "pwrite 0 $file_len" \ + -c "fsync" $file_name &> /dev/null + chmod 666 $file_name + + _fill_fs $(( 1024 * 1024 * 1024 )) $path/fill + + for (( i=0; i<$iterations; i++ )) + do + # This part must not be done as root in order to + # test that reserved blocks are used when needed + sudo -u nobody $XFS_IO_PROG -F -f -c "fpunch $hole_offset $hole_len" $file_name + rc=$? + if [[ $? != 0 ]] ; then + echo Punch hole failed + break + fi + + hole_offset=$(( $hole_offset + $hole_len + $hole_interval )) + + _fill_fs $hole_len $path/fill.$i + + done } + -- 1.7.1 _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs From achender@linux.vnet.ibm.com Fri Jun 3 14:15:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00,SUBJ_FORWARDED autolearn=no version=3.4.0-r929098 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 p53JFghc029701 for ; Fri, 3 Jun 2011 14:15:42 -0500 X-ASG-Debug-ID: 1307128541-4b1f02ab0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e1.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 143E06FDF2B for ; Fri, 3 Jun 2011 12:15:41 -0700 (PDT) Received: from e1.ny.us.ibm.com (e1.ny.us.ibm.com [32.97.182.141]) by cuda.sgi.com with ESMTP id v2REVW8mTINIZFzU for ; Fri, 03 Jun 2011 12:15:41 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay03.pok.ibm.com (d01relay03.pok.ibm.com [9.56.227.235]) by e1.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p53J48Qs011478 for ; Fri, 3 Jun 2011 15:04:08 -0400 Received: from d03av04.boulder.ibm.com (d03av04.boulder.ibm.com [9.17.195.170]) by d01relay03.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p53JFd8s075356 for ; Fri, 3 Jun 2011 15:15:39 -0400 Received: from d03av04.boulder.ibm.com (loopback [127.0.0.1]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p53DFSWj000521 for ; Fri, 3 Jun 2011 07:15:28 -0600 Received: from [9.11.169.110] (IBM-3CEFE379E05-009011169110.tucson.ibm.com [9.11.169.110]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p53DFRGN032587; Fri, 3 Jun 2011 07:15:27 -0600 Message-ID: <4DE932D0.9040808@linux.vnet.ibm.com> Date: Fri, 03 Jun 2011 12:15:28 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Fwd: XFS TESTS: Add Fallocate Punch Hole Test v4 Changes Subject: Fwd: XFS TESTS: Add Fallocate Punch Hole Test v4 Changes Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e1.ny.us.ibm.com[32.97.182.141] X-Barracuda-Start-Time: 1307128542 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 -------- Original Message -------- Subject: XFS TESTS: Add Fallocate Punch Hole Test v4 Changes Date: Wed, 25 May 2011 19:40:20 -0700 From: Allison Henderson To: xfs-oss Hi All, Here is v4 of the punch hole tests. I've merged in the non over-lapping tests from v3 into 252, and I've separated the code paths for punch hole and fallocate in the fsx patch. I've also included the ENOSPC test that we used in the ext4 punch hole tests. Feedback appreciated! Thx All! Allison Henderson _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs From achender@linux.vnet.ibm.com Fri Jun 3 14:16:49 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_64,J_CHICKENPOX_66,J_CHICKENPOX_92,SUBJ_FORWARDED autolearn=no version=3.4.0-r929098 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 p53JGnxV029728 for ; Fri, 3 Jun 2011 14:16:49 -0500 X-ASG-Debug-ID: 1307128608-149e03bf0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e3.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DA20649AFC9 for ; Fri, 3 Jun 2011 12:16:48 -0700 (PDT) Received: from e3.ny.us.ibm.com (e3.ny.us.ibm.com [32.97.182.143]) by cuda.sgi.com with ESMTP id jNZOLYisS0ZQRw5b for ; Fri, 03 Jun 2011 12:16:48 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay05.pok.ibm.com (d01relay05.pok.ibm.com [9.56.227.237]) by e3.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p53IsVDW023825 for ; Fri, 3 Jun 2011 14:54:31 -0400 Received: from d03av04.boulder.ibm.com (d03av04.boulder.ibm.com [9.17.195.170]) by d01relay05.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p53JGlLP092674 for ; Fri, 3 Jun 2011 15:16:47 -0400 Received: from d03av04.boulder.ibm.com (loopback [127.0.0.1]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p53DGd5Z006027 for ; Fri, 3 Jun 2011 07:16:40 -0600 Received: from [9.11.169.110] (IBM-3CEFE379E05-009011169110.tucson.ibm.com [9.11.169.110]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p53DGcva005944; Fri, 3 Jun 2011 07:16:38 -0600 Message-ID: <4DE93316.3080208@linux.vnet.ibm.com> Date: Fri, 03 Jun 2011 12:16:38 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Fwd: Re: [XFSTEST Add Fallocate Punch Hole Tests 1/3 v4] Add Punch Hole to FSX Subject: Fwd: Re: [XFSTEST Add Fallocate Punch Hole Tests 1/3 v4] Add Punch Hole to FSX Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e3.ny.us.ibm.com[32.97.182.143] X-Barracuda-Start-Time: 1307128608 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 -------- Original Message -------- Subject: Re: [XFSTEST Add Fallocate Punch Hole Tests 1/3 v4] Add Punch Hole to FSX Date: Wed, 01 Jun 2011 16:01:18 -0700 From: Allison Henderson To: xfs-oss On 5/25/2011 7:34 PM, Allison Henderson wrote: > This patch adds punch hole tests to the fsx stress test. > > Signed-off-by: Allison Henderson > > v1 -> v2: > Corrections to the Makefile have been backed out. > Those corrections have been addressed in the > "xfstests: clean up fallocate configuration tests" > patch > > The punch hole tests can be disabled with the > -H flag, and will also be disabled if it is > detected that the filesystem does not support > punch hole > > v2 -> v4 > Punch hole tests and functionality tests have been moved > into their own functions. Existing dofallocate routine > has been renamed to do_preallocate. > --- > :100644 100755 fe072d3... a55b6f7... M ltp/fsx.c > ltp/fsx.c | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------- > 1 files changed, 122 insertions(+), 18 deletions(-) > > diff --git a/ltp/fsx.c b/ltp/fsx.c > old mode 100644 > new mode 100755 > index fe072d3..a55b6f7 > --- a/ltp/fsx.c > +++ b/ltp/fsx.c > @@ -69,6 +69,7 @@ int logcount = 0; /* total ops */ > #define OP_MAPWRITE 6 > #define OP_SKIPPED 7 > #define OP_FALLOCATE 8 > +#define OP_PUNCH_HOLE 9 > > #undef PAGE_SIZE > #define PAGE_SIZE getpagesize() > @@ -110,6 +111,7 @@ int randomoplen = 1; /* -O flag disables it */ > int seed = 1; /* -S flag */ > int mapped_writes = 1; /* -W flag disables */ > int fallocate_calls = 1; /* -F flag disables */ > +int punch_hole_calls = 1; /* -H flag disables */ > int mapped_reads = 1; /* -R flag disables it */ > int fsxgoodfd = 0; > int o_direct; /* -Z */ > @@ -279,6 +281,14 @@ logdump(void) > badoff< lp->args[0] + lp->args[1]) > prt("\t******FFFF"); > break; > + case OP_PUNCH_HOLE: > + prt("PUNCH HOLE\t0x%x thru 0x%x\t(0x%x bytes)", > + lp->args[0], lp->args[0] + lp->args[1] - 1, > + lp->args[1]); > + if (badoff>= lp->args[0]&& badoff< > + lp->args[0] + lp->args[1]) > + prt("\t******PPPP"); > + break; > case OP_SKIPPED: > prt("SKIPPED (no operation)"); > break; > @@ -784,10 +794,67 @@ dotruncate(unsigned size) > } > } > > +#ifdef FALLOC_FL_PUNCH_HOLE > +void > +do_punch_hole(unsigned offset, unsigned length) > +{ > + unsigned end_offset; > + int max_offset = 0; > + int max_len = 0; > + int mode = FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE; > + > + if (length == 0) { > + if (!quiet&& testcalls> simulatedopcount) > + prt("skipping zero length punch hole\n"); > + log4(OP_SKIPPED, OP_PUNCH_HOLE, offset, length); > + return; > + } > + > + if (file_size<= (loff_t)offset) { > + if (!quiet&& testcalls> simulatedopcount) > + prt("skipping hole punch off the end of the file\n"); > + log4(OP_SKIPPED, OP_PUNCH_HOLE, offset, length); > + return; > + } > + > + end_offset = offset + length; > + > + log4(OP_PUNCH_HOLE, offset, length, 0); > + > + if (testcalls<= simulatedopcount) > + return; > + > + if ((progressinterval&& testcalls % progressinterval == 0) || > + (debug&& (monitorstart == -1 || monitorend == -1 || > + end_offset<= monitorend))) { > + prt("%lu punch\tfrom 0x%x to 0x%x, (0x%x bytes)\n", testcalls, > + offset, offset+length, length); > + } > + if (fallocate(fd, mode, (loff_t)offset, (loff_t)length) == -1) { > + prt("%punch hole: %x to %x\n", offset, length); > + prterr("do_punch_hole: fallocate"); > + report_failure(161); > + } > + > + > + max_offset = offset< file_size ? offset : file_size; > + max_len = max_offset + length<= file_size ? length : > + file_size - max_offset; > + memset(good_buf + max_offset, '\0', max_len); > +} > + > +#else > +void > +do_punch_hole(unsigned offset, unsigned length) > +{ > + return; > +} > +#endif > + > #ifdef FALLOCATE > /* fallocate is basically a no-op unless extending, then a lot like a truncate */ > void > -dofallocate(unsigned offset, unsigned length) > +do_preallocate(unsigned offset, unsigned length) > { > unsigned end_offset; > int keep_size; > @@ -831,13 +898,13 @@ dofallocate(unsigned offset, unsigned length) > 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"); > + prterr("do_preallocate: fallocate"); > report_failure(161); > } > } > #else > void > -dofallocate(unsigned offset, unsigned length) > +do_preallocate(unsigned offset, unsigned length) > { > return; > } > @@ -895,8 +962,7 @@ test(void) > unsigned long offset; > unsigned long size = maxoplen; > unsigned long rv = random(); > - unsigned long op = rv % (3 + !lite + mapped_writes + fallocate_calls); > - > + unsigned long op = rv % (3 + !lite + mapped_writes + fallocate_calls + punch_hole_calls); > /* turn off the map read if necessary */ > > if (op == 2&& !mapped_reads) > @@ -924,6 +990,7 @@ test(void) > * TRUNCATE: op = - 3 > * MAPWRITE: op = 3 4 > * FALLOCATE: op = - 5 > + * PUNCH HOLE: op = - 6 > */ > if (lite ? 0 : op == 3&& (style& 1) == 0) /* vanilla truncate? */ > dotruncate(random() % maxfilelen); > @@ -941,7 +1008,12 @@ test(void) > offset %= maxfilelen; > if (offset + size> maxfilelen) > size = maxfilelen - offset; > - dofallocate(offset, size); > + do_preallocate(offset, size); > + } else if (op == 6) { > + offset %= maxfilelen; > + if (offset + size> maxfilelen) > + size = maxfilelen - offset; > + do_punch_hole(offset, size); > } else if (op == 1 || op == (lite ? 3 : 4)) { > /* write / mapwrite */ > offset %= maxfilelen; > @@ -1013,6 +1085,9 @@ usage(void) > #ifdef FALLOCATE > " -F: Do not use fallocate (preallocation) calls\n" > #endif > +#ifdef FALLOC_FL_PUNCH_HOLE > +" -H: Do not use punch hole 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\ > @@ -1161,6 +1236,41 @@ int aio_rw(int rw, int fd, char *buf, unsigned len, unsigned offset) > > #endif > > +void > +test_fallocate() > +{ > +#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); > + } > + } > +#else /* ! FALLOCATE */ > + fallocate_calls = 0; > +#endif > +} > + > +void > +test_punch_hole() > +{ > +#ifdef FALLOC_FL_PUNCH_HOLE > + if (!lite&& punch_hole_calls) { > + if (fallocate(fd, 0, 0, > + FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)&& > + errno == EOPNOTSUPP) { > + > + warn("main: filesystem does not support fallocate punch hole, disabling"); > + punch_hole_calls = 0; > + } > + } > +#else /* ! PUNCH HOLE */ > + punch_hole_calls = 0; > +#endif > +} > + > int > main(int argc, char **argv) > { > @@ -1179,7 +1289,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:FLN:OP:RS:WZ")) > + while ((ch = getopt(argc, argv, "b:c:dfl:m:no:p:qr:s:t:w:xyAD:FHLN:OP:RS:WZ")) > != EOF) > switch (ch) { > case 'b': > @@ -1276,6 +1386,9 @@ main(int argc, char **argv) > case 'F': > fallocate_calls = 0; > break; > + case 'H': > + punch_hole_calls = 0; > + break; > case 'L': > lite = 1; > break; > @@ -1421,17 +1534,8 @@ 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); > - } > -#else /* ! FALLOCATE */ > - fallocate_calls = 0; > -#endif > + test_fallocate(); > + test_punch_hole(); > > while (numops == -1 || numops--) > test(); Hi all, I just wanted to poke this patch set before too much time gets away. Most of the changes that happened between v3 and v4 were discussed in the previous threads. I updated my xfstest recently and noticed that some activity in this code has caused the patch not to apply, so I may need to send out an update, but if anyone has any more comments please let me know so I can add them in. Thx! Allison Henderson _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs From achender@linux.vnet.ibm.com Fri Jun 3 14:17:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65, SUBJ_FORWARDED autolearn=no version=3.4.0-r929098 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 p53JHWgw029758 for ; Fri, 3 Jun 2011 14:17:32 -0500 X-ASG-Debug-ID: 1307128651-44ea033b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e32.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F23CB72FAF3 for ; Fri, 3 Jun 2011 12:17:31 -0700 (PDT) Received: from e32.co.us.ibm.com (e32.co.us.ibm.com [32.97.110.150]) by cuda.sgi.com with ESMTP id gkBJc7gFxtfPCFoC for ; Fri, 03 Jun 2011 12:17:31 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay02.boulder.ibm.com (d03relay02.boulder.ibm.com [9.17.195.227]) by e32.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p53J5qNL012568 for ; Fri, 3 Jun 2011 13:05:52 -0600 Received: from d03av04.boulder.ibm.com (d03av04.boulder.ibm.com [9.17.195.170]) by d03relay02.boulder.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id p53JHKVO078976 for ; Fri, 3 Jun 2011 13:17:22 -0600 Received: from d03av04.boulder.ibm.com (loopback [127.0.0.1]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p53DHJOE008886 for ; Fri, 3 Jun 2011 07:17:19 -0600 Received: from [9.11.169.110] (IBM-3CEFE379E05-009011169110.tucson.ibm.com [9.11.169.110]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p53DHJTV008862; Fri, 3 Jun 2011 07:17:19 -0600 Message-ID: <4DE9333F.2020901@linux.vnet.ibm.com> Date: Fri, 03 Jun 2011 12:17:19 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Fwd: Re: [XFSTEST Add Fallocate Punch Hole Tests 2/3 v4] Expand 252 punch hole test to cover additional corner cases Subject: Fwd: Re: [XFSTEST Add Fallocate Punch Hole Tests 2/3 v4] Expand 252 punch hole test to cover additional corner cases Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e32.co.us.ibm.com[32.97.110.150] X-Barracuda-Start-Time: 1307128651 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 -------- Original Message -------- Subject: Re: [XFSTEST Add Fallocate Punch Hole Tests 2/3 v4] Expand 252 punch hole test to cover additional corner cases Date: Wed, 01 Jun 2011 16:01:42 -0700 From: Allison Henderson To: xfs-oss On 5/25/2011 7:34 PM, Allison Henderson wrote: > This patch adds additional punch hole tests to 252 > that were used to test ext4 punch hole. The _test_generic_punch > routine has been modified to accept two new flags: > > -k To keep the test file between tests. > This will test the handling of existing holes > > -d To not sync the file between tests. > This will test the handling of delayed extents > > Four new corner cases have also been added to the routine: > 14. data -> hole @ EOF > 15. data -> hole @ 0 > 16. data -> cache cold ->hole > 17. data -> hole in single block file > > > Signed-off-by: Allison Henderson > > --- > :100755 100755 dfdf3f8... 5efa243... M 252 > :100644 100644 cd8e4b4... 930c924... M 252.out > :100644 100644 e2da5d8... ddf63b0... M common.punch > 252 | 10 +++ > 252.out | 192 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > common.punch | 150 ++++++++++++++++++++++++++++++++++++++------- > 3 files changed, 330 insertions(+), 22 deletions(-) > > diff --git a/252 b/252 > index dfdf3f8..5efa243 100755 > --- a/252 > +++ b/252 > @@ -52,6 +52,16 @@ _require_xfs_io_fiemap > > testfile=$TEST_DIR/252.$$ > > +# Standard punch hole tests > _test_generic_punch falloc fpunch fpunch fiemap _filter_fiemap $testfile -F > > +# Delayed allocation punch hole tests > +_test_generic_punch -d falloc fpunch fpunch fiemap _filter_fiemap $testfile -F > + > +# Multi hole punch tests > +_test_generic_punch -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F > + > +# Delayed allocation multi punch hole tests > +_test_generic_punch -d -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F > + > status=0 ; exit > diff --git a/252.out b/252.out > index cd8e4b4..930c924 100644 > --- a/252.out > +++ b/252.out > @@ -45,3 +45,195 @@ QA output created by 252 > 0: [0..7]: data > 1: [8..31]: hole > 2: [32..39]: data > + 14. data -> hole @ EOF > +0: [0..23]: data > +1: [24..39]: hole > + 15. data -> hole @ 0 > +0: [0..15]: hole > +1: [16..39]: data > + 16. data -> cache cold ->hole > +0: [0..15]: hole > +1: [16..39]: data > + 17. data -> hole in single block file > +0: [0..7]: data > + 1. into a hole > + 2. into allocated space > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 3. into unwritten space > +0: [0..7]: unwritten > +1: [8..23]: hole > +2: [24..39]: unwritten > + 4. hole -> data > +0: [0..23]: hole > +1: [24..31]: data > +2: [32..39]: hole > + 5. hole -> unwritten > +0: [0..23]: hole > +1: [24..31]: unwritten > +2: [32..39]: hole > + 6. data -> hole > +0: [0..7]: data > +1: [8..39]: hole > + 7. data -> unwritten > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..31]: unwritten > +3: [32..39]: hole > + 8. unwritten -> hole > +0: [0..7]: unwritten > +1: [8..39]: hole > + 9. unwritten -> data > +0: [0..7]: unwritten > +1: [8..23]: hole > +2: [24..31]: data > +3: [32..39]: hole > + 10. hole -> data -> hole > + 11. data -> hole -> data > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 12. unwritten -> data -> unwritten > +0: [0..7]: unwritten > +1: [8..31]: hole > +2: [32..39]: unwritten > + 13. data -> unwritten -> data > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 14. data -> hole @ EOF > +0: [0..23]: data > +1: [24..39]: hole > + 15. data -> hole @ 0 > +0: [0..15]: hole > +1: [16..39]: data > + 16. data -> cache cold ->hole > +0: [0..15]: hole > +1: [16..39]: data > + 17. data -> hole in single block file > +0: [0..7]: data > + 1. into a hole > +0: [0..7]: data > +1: [8..39]: hole > + 2. into allocated space > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 3. into unwritten space > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 4. hole -> data > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 5. hole -> unwritten > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 6. data -> hole > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 7. data -> unwritten > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 8. unwritten -> hole > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 9. unwritten -> data > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 10. hole -> data -> hole > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 11. data -> hole -> data > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 12. unwritten -> data -> unwritten > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 13. data -> unwritten -> data > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 14. data -> hole @ EOF > +0: [0..23]: data > +1: [24..39]: hole > + 15. data -> hole @ 0 > +0: [0..15]: hole > +1: [16..39]: data > + 16. data -> cache cold ->hole > +0: [0..15]: hole > +1: [16..39]: data > + 17. data -> hole in single block file > +0: [0..7]: data > + 1. into a hole > +0: [0..7]: data > +1: [8..39]: hole > + 2. into allocated space > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 3. into unwritten space > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 4. hole -> data > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 5. hole -> unwritten > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 6. data -> hole > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 7. data -> unwritten > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 8. unwritten -> hole > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 9. unwritten -> data > +0: [0..7]: data > +1: [8..23]: hole > +2: [24..39]: data > + 10. hole -> data -> hole > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 11. data -> hole -> data > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 12. unwritten -> data -> unwritten > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 13. data -> unwritten -> data > +0: [0..7]: data > +1: [8..31]: hole > +2: [32..39]: data > + 14. data -> hole @ EOF > +0: [0..23]: data > +1: [24..39]: hole > + 15. data -> hole @ 0 > +0: [0..15]: hole > +1: [16..39]: data > + 16. data -> cache cold ->hole > +0: [0..15]: hole > +1: [16..39]: data > + 17. data -> hole in single block file > +0: [0..7]: data > diff --git a/common.punch b/common.punch > index e2da5d8..ddf63b0 100644 > --- a/common.punch > +++ b/common.punch > @@ -256,8 +256,39 @@ die_now() > # 11. data -> hole -> data > # 12. unwritten -> data -> unwritten > # 13. data -> unwritten -> data > +# 14. data -> hole @ EOF > +# 15. data -> hole @ 0 > +# 16. data -> cache cold ->hole > +# 17. data -> hole in single block file > +# > +# Test file is removed, created and sync'd between tests. > +# > +# Use -k flag to keep the file between tests. This will > +# test the handling of pre-existing holes. > +# > +# Use the -d flag to not sync the file between tests. > +# This will test the handling of delayed extents > +# > _test_generic_punch() > { > + > + remove_testfile=1 > + sync_cmd="-c fsync" > + OPTIND=1 > + while getopts 'dk' OPTION > + do > + case $OPTION in > + k) remove_testfile= > + ;; > + d) sync_cmd= > + ;; > + ?) echo Invalid flag > + exit 1 > + ;; > + esac > + done > + shift $(($OPTIND - 1)) > + > alloc_cmd=$1 > punch_cmd=$2 > zero_cmd=$3 #if not testing zero just set to punch > @@ -267,22 +298,28 @@ _test_generic_punch() > xfs_io_opt=$7 #needs to be -F if not testing xfs > > echo " 1. into a hole" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > -c "$zero_cmd 4k 8k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > > echo " 2. into allocated space" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > - -c "pwrite 0 20k" -c "fsync" \ > + -c "pwrite 0 20k" $sync_cmd \ > -c "$zero_cmd 4k 8k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > > echo " 3. into unwritten space" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > -c "$alloc_cmd 0 20k" \ > -c "$zero_cmd 4k 8k" \ > @@ -290,15 +327,19 @@ _test_generic_punch() > [ $? -ne 0 ]&& die_now > > echo " 4. hole -> data" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > - -c "pwrite 8k 8k" -c "fsync" \ > + -c "pwrite 8k 8k" $sync_cmd \ > -c "$zero_cmd 4k 8k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > > echo " 5. hole -> unwritten" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > -c "$alloc_cmd 8k 8k" \ > -c "$zero_cmd 4k 8k" \ > @@ -306,24 +347,30 @@ _test_generic_punch() > [ $? -ne 0 ]&& die_now > > echo " 6. data -> hole" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > - -c "pwrite 0 8k" -c "fsync" \ > + -c "pwrite 0 8k" $sync_cmd \ > -c "$zero_cmd 4k 8k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > > echo " 7. data -> unwritten" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > - -c "pwrite 0 8k" -c "fsync" \ > + -c "pwrite 0 8k" $sync_cmd \ > -c "$alloc_cmd 8k 8k" \ > -c "$zero_cmd 4k 8k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > > echo " 8. unwritten -> hole" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > -c "$alloc_cmd 0 8k" \ > -c "$zero_cmd 4k 8k" \ > @@ -331,49 +378,108 @@ _test_generic_punch() > [ $? -ne 0 ]&& die_now > > echo " 9. unwritten -> data" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > -c "$alloc_cmd 0 8k" \ > - -c "pwrite 8k 8k" -c "fsync" \ > + -c "pwrite 8k 8k" $sync_cmd \ > -c "$zero_cmd 4k 8k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > > echo " 10. hole -> data -> hole" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > - -c "pwrite 8k 4k" -c "fsync" \ > + -c "pwrite 8k 4k" $sync_cmd \ > -c "$zero_cmd 4k 12k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > > echo " 11. data -> hole -> data" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > -c "$alloc_cmd 0 20k" \ > -c "pwrite 0 8k" \ > - -c "pwrite 12k 8k" -c "fsync" \ > + -c "pwrite 12k 8k" $sync_cmd \ > -c "$punch_cmd 8k 4k" \ > -c "$zero_cmd 4k 12k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > > echo " 12. unwritten -> data -> unwritten" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > -c "$alloc_cmd 0 20k" \ > - -c "pwrite 8k 4k" -c "fsync" \ > + -c "pwrite 8k 4k" $sync_cmd \ > -c "$zero_cmd 4k 12k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now Hi all, I had some questions about test 12. The output for this test is: 12. unwritten -> data -> unwritten 0: [0..7]: unwritten 1: [8..31]: hole 2: [32..39]: unwritten But ext4 gets data extents here instead of unwritten extents (on the first test with the fsync flag on). I did some investigating and it looks like the fsync command causes the extents to be written out before the punch hole operation even starts. So it makes sense to me that it should end up with data extents. Can someone explain why the golden output has unwritten extents here? Thx! Allison Henderson > > echo " 13. data -> unwritten -> data" > - rm -f $testfile > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > -c "$alloc_cmd 0 20k" \ > - -c "pwrite 0k 8k" -c "fsync" \ > + -c "pwrite 0k 8k" $sync_cmd \ > -c "pwrite 12k 8k" -c "fsync" \ > -c "$zero_cmd 4k 12k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > + > + echo " 14. data -> hole @ EOF" > + rm -f $testfile > + $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > + -c "pwrite 0 20k" $sync_cmd \ > + -c "$zero_cmd 12k 8k" \ > + -c "$map_cmd -v" $testfile | $filter_cmd > + [ $? -ne 0 ]&& die_now > + > + echo " 15. data -> hole @ 0" > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > + $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > + -c "pwrite 0 20k" $sync_cmd \ > + -c "$zero_cmd 0k 8k" \ > + -c "$map_cmd -v" $testfile | $filter_cmd > + [ $? -ne 0 ]&& die_now > + > + echo " 16. data -> cache cold ->hole" > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + rm -f $testfile.2 > + else > + cp $testfile $testfile.2 > + fi > + $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > + -c "pwrite 8k 12k" -c "fsync" $testfile.2 \ > + > /dev/null > + $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > + -c "pwrite 0 20k" $sync_cmd \ > + -c "$zero_cmd 0k 8k" \ > + -c "fadvise -d" \ > + -c "$map_cmd -v" $testfile | $filter_cmd > + diff $testfile $testfile.2 > + [ $? -ne 0 ]&& die_now > + rm -f $testfile.2 > + > + echo " 17. data -> hole in single block file" > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + fi > + block_size=`stat -f $TEST_DEV | grep "Block size" | cut -d " " -f3` > + $XFS_IO_PROG $xfs_io_opt -f -c "truncate $block_size" \ > + -c "pwrite 0 $block_size" $sync_cmd \ > + -c "$zero_cmd 128 128" \ > + -c "$map_cmd -v" $testfile | $filter_cmd > + [ $? -ne 0 ]&& die_now > + > } _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs From achender@linux.vnet.ibm.com Fri Jun 3 14:18:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65, SUBJ_FORWARDED autolearn=no version=3.4.0-r929098 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 p53JIOiQ029786 for ; Fri, 3 Jun 2011 14:18:24 -0500 X-ASG-Debug-ID: 1307128703-42dd01940000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e38.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5B53249A616 for ; Fri, 3 Jun 2011 12:18:24 -0700 (PDT) Received: from e38.co.us.ibm.com (e38.co.us.ibm.com [32.97.110.159]) by cuda.sgi.com with ESMTP id rWSDn6zysANoon75 for ; Fri, 03 Jun 2011 12:18:24 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by e38.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p53JA63v027091 for ; Fri, 3 Jun 2011 13:10:06 -0600 Received: from d03av04.boulder.ibm.com (d03av04.boulder.ibm.com [9.17.195.170]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p53JIJ3V157952 for ; Fri, 3 Jun 2011 13:18:19 -0600 Received: from d03av04.boulder.ibm.com (loopback [127.0.0.1]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p53DIIRL012216 for ; Fri, 3 Jun 2011 07:18:18 -0600 Received: from [9.11.169.110] (IBM-3CEFE379E05-009011169110.tucson.ibm.com [9.11.169.110]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p53DIHg4012174; Fri, 3 Jun 2011 07:18:17 -0600 Message-ID: <4DE9337A.5010409@linux.vnet.ibm.com> Date: Fri, 03 Jun 2011 12:18:18 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Fwd: Re: [XFSTEST Add Fallocate Punch Hole Tests 3/3 v4] Add ENOSPC Hole Punch Test Subject: Fwd: Re: [XFSTEST Add Fallocate Punch Hole Tests 3/3 v4] Add ENOSPC Hole Punch Test Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e38.co.us.ibm.com[32.97.110.159] X-Barracuda-Start-Time: 1307128704 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 -------- Original Message -------- Subject: Re: [XFSTEST Add Fallocate Punch Hole Tests 3/3 v4] Add ENOSPC Hole Punch Test Date: Wed, 01 Jun 2011 16:02:10 -0700 From: Allison Henderson To: xfs-oss , Dave Chinner On 5/25/2011 7:34 PM, Allison Henderson wrote: > This patch adds a test to 252 that tests that a hole can be punched even when the > disk is full. Reserved blocks should be used to allow a punch hole to proceed even > when there is not enough blocks to further fragment the file. To test this, the > file system is fragmented by punching holes in regular intervals and filling > the file system between punches. This will eventually force the file system to use > reserved blocks to proceed with the punch hole operation. > > Signed-off-by: Allison Henderson > --- > :100755 100755 5efa243... b5204fe... M 252 > :100644 100644 ddf63b0... fc6123c... M common.punch > 252 | 12 +++++++ > common.punch | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 107 insertions(+), 0 deletions(-) > > diff --git a/252 b/252 > index 5efa243..b5204fe 100755 > --- a/252 > +++ b/252 > @@ -49,6 +49,7 @@ _supported_os Linux > > _require_xfs_io_falloc_punch > _require_xfs_io_fiemap > +_require_scratch > > testfile=$TEST_DIR/252.$$ > > @@ -64,4 +65,15 @@ _test_generic_punch -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F > # Delayed allocation multi punch hole tests > _test_generic_punch -d -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F > > +# Test full filesystem hole punching. > +# Make a small file system to fill > +umount $SCRATCH_DEV&> /dev/null > +_scratch_mkfs_sized $(( 1024 * 1024 * 1024 ))&> /dev/null > +_scratch_mount > +# Test must be able to write files with non-root permissions > +chmod 777 $SCRATCH_MNT > + > +block_size=`stat -f $SCRATCH_DEV | grep "Block size" | cut -d " " -f3` > +_test_full_fs_punch $(( $block_size * 2 )) $block_size 500 $SCRATCH_MNT/252.$$ > + > status=0 ; exit > diff --git a/common.punch b/common.punch > index ddf63b0..fc6123c 100644 > --- a/common.punch > +++ b/common.punch > @@ -481,5 +481,100 @@ _test_generic_punch() > -c "$zero_cmd 128 128" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now > +} > + > +# _fill_fs() > +# > +# Fills a file system by repeatedly creating files in the given folder > +# starting with the given file size. Files are reduced in size when > +# they can no longer fit untill no more files can be created. > +# > +# This routine is used by _test_full_fs_punch to test that a hole may > +# still be punched when the disk is full by borrowing reserved blocks. > +# All files are created as a non root user to prevent reserved blocks > +# from being consumed. > +# > +_fill_fs() { > + local file_size=$1 > + local dir=$2 > + local file_count=1 > + > + if [ $# -ne 2 ] > + then > + echo "USAGE: $0 filesize dir" > + exit 1 > + fi > + > + mkdir -p $dir&> /dev/null > + if [[ $? != 0 ]] ; then > + return 0 > + fi > + chmod 777 $dir > + > + rc=0 > + while [ $file_size -gt 0 -a $rc == 0 ] > + do > + # This part must not be done as root or > + # reserved blocks will be consumed > + sudo -u nobody $XFS_IO_PROG -F -f -c "pwrite 0 $file_size" $dir/$file_count.bin&> /dev/null Hi all, This is the ENOSPC test that we used on the ext4 punch hole, but modified to use the xfsprogs facilities. I notice the test takes a lot longer to run after doing this. If I replace the above command with the original code: sudo -u nobody dd if=/dev/zero of=$dir/$file_count.bin bs=$file_size count=1 &> /dev/null it runs a lot faster (takes off almost 15 minutes). Is there anything we can do to improve the xfsprogs command? Thx! Allison Henderson > + rc=$? > + > + # If there was no room to make the file, > + # and the file size can still be made smaller, > + # then divide it in half, and keep going > + if [ $file_size -gt 1 -a $rc != 0 ] > + then > + file_size=$(( $file_size / 2 )) > + rc=0 > + fi > + file_count=$(( $file_count + 1 )) > + > + done > +} > > +# _test_full_fs_punch() > +# > +# This function will test that a hole may be punched > +# even when the file system is full. Reserved blocks > +# should be used to allow a punch hole to proceed even > +# when there is not enough blocks to further fragment the > +# file. To test this, this function will fragment the file > +# system by punching holes in regular intervals and filling > +# the file system between punches. > +# > +_test_full_fs_punch() > +{ > + hole_len=$1 # The length of the holes to punch > + hole_interval=$2 # The interval between the holes > + iterations=$3 # The number of holes to punch > + file_name=$4 # File to punch holes in > + file_len=$(( $(( $hole_len + $hole_interval )) * $iterations )) > + path=`dirname $file_name` > + hole_offset=0 > + > + rm -f $file_name&> /dev/null > + > + $XFS_IO_PROG -F -f -c "pwrite 0 $file_len" \ > + -c "fsync" $file_name&> /dev/null > + chmod 666 $file_name > + > + _fill_fs $(( 1024 * 1024 * 1024 )) $path/fill > + > + for (( i=0; i<$iterations; i++ )) > + do > + # This part must not be done as root in order to > + # test that reserved blocks are used when needed > + sudo -u nobody $XFS_IO_PROG -F -f -c "fpunch $hole_offset $hole_len" $file_name > + rc=$? > + if [[ $? != 0 ]] ; then > + echo Punch hole failed > + break > + fi > + > + hole_offset=$(( $hole_offset + $hole_len + $hole_interval )) > + > + _fill_fs $hole_len $path/fill.$i > + > + done > } > + From pg_mh@sabi.co.UK Fri Jun 3 17:19:52 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p53MJq5Z035635 for ; Fri, 3 Jun 2011 17:19:52 -0500 X-ASG-Debug-ID: 1307139589-0d5001a30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from honeysuckle.london.02.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4BD051ED4244 for ; Fri, 3 Jun 2011 15:19:49 -0700 (PDT) Received: from honeysuckle.london.02.net (honeysuckle.london.02.net [87.194.255.144]) by cuda.sgi.com with ESMTP id sLADAHR7A5HMx7uk for ; Fri, 03 Jun 2011 15:19:49 -0700 (PDT) Received: from ty.sabi.co.UK (87.194.99.40) by honeysuckle.london.02.net (8.5.133) id 4DA2FC0B013130E8 for xfs@oss.sgi.com; Fri, 3 Jun 2011 23:19:48 +0100 Received: from from [127.0.0.1] (helo=tree.ty.sabi.co.UK) by ty.sabi.co.UK with esmtp(Exim 4.71 #1) id 1QSciD-0004Tt-9j for ; Fri, 03 Jun 2011 23:19:25 +0100 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <19945.24042.711472.158523@tree.ty.sabi.co.UK> Date: Fri, 3 Jun 2011 23:19:22 +0100 X-Face: SMJE]JPYVBO-9UR%/8d'mG.F!@.,l@c[f'[%S8'BZIcbQc3/">GrXDwb#;fTRGNmHr^JFb SAptvwWc,0+z+~p~"Gdr4H$(|N(yF(wwCM2bW0~U?HPEE^fkPGx^u[*[yV.gyB!hDOli}EF[\cW*S H&spRGFL}{`bj1TaD^l/"[ msn( /TH#THs{Hpj>)]f> X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general In-Reply-To: References: <19943.56524.969126.59978@tree.ty.sabi.co.UK> X-Mailer: VM 8.0.13 under 23.1.1 (x86_64-pc-linux-gnu) From: pg_xf2@xf2.for.sabi.co.UK (Peter Grandi) X-Disclaimer: This message contains only personal opinions X-Barracuda-Connect: honeysuckle.london.02.net[87.194.255.144] X-Barracuda-Start-Time: 1307139590 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0089 1.0000 -1.9630 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.36 X-Barracuda-Spam-Status: No, SCORE=-1.36 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.2.65489 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 > All JBOD chassis (SuperMicro SC 847's)... been experimenting > with the flusher, will look at the others. I think that from the symptoms you describe the hang happens in the first instance because the number of dirty pages has hit 'dirty_background_ratio', after which all writes become synchronous and this really works badly, especially with XFS. To prevent that, and in general to prevent the accumulation of lots of dirty pages, and sudden latency killing large bursts of IO, it is quite important to tell the flusher to sync pretty often and constantly. For the Linux kernel by default permits the buildup of a mass of dirty pages proportional to memory, which is a very bad idea, as it should be proportional to write speed, with the idea that one should not buffer more than 1 second or perhaps less of dirty pages. In your case that's probably a few hundred MBs, and even that is pretty bad in case of crashes. The sw solution is to set the 'vm/dirty_*' tunables accordingly. vm/dirty_ratio=2 vm/dirty_bytes=400000000 vm/dirty_background_ratio=60 vm/dirty_background_bytes=0 vm/dirty_expire_centisecs=200 vm/dirty_writeback_centisecs=400 The hw solution is to do that *and* use SAS/SATA host adapters with (large) battery-backed buffers/cache (but still keeping very few dirty pages in the Linux page cache). I would not use them in hw RAID mode, also because so many hw RAID cards have abominably buggy firmware, and I trust Linxu MD rather more. Unfortunately it is difficult to recommend any specific host adapter. > The rsync job currently appear to be causing the issue - it > was rsyncing around 250,000 files. If the copy had already > been done, the rsync is fast (i.e. stat is fast, despite the > numbers), but when it starts moving data, the IOPS pegs and > seems to be the limiting factor. That's probably also some effect related to writing to the intent log, and a RAID60 makes that very painful. [ ... ] > We most likely live in different worlds - this is a pure > research group with "different" constraints than those you're > probably used to. Not my choice, but 4-10X the cost per unit > of storage is currently not an option. Then lots lots more smaller RAID5 sets, or even RAID6 if you are sufficiently desparate. Joined together at the namespace level, not with a RAID0. Do you really need a single free space pool? I doubt it: you probably are reading/generating data and storing it, so you instead of having a single 200TB storage pool, you could have 20x10TB ones and fill one after the other. Also ideally much smaller RAID sets: 18 wide with double parity beckons a world of read-modify-write pain, especially if the metadata intent log is on the same logical block device. The MD maintainer thinks that for his much smaller needs putting the metadata intent logs on a speedy small RAID1 is good enough, but I think that scales a fair bit. After all the maximum log size for XFS is not that large (fortunately) and smaller is better. Having multiple smaller filesystems also help with having multiple smaller metadata intent logs. > With XFS freshly installed, it was doing around 1400MiB/sec > write, and around 1900MiB/sec read - 10 parallel high > throughput processes read or writing as fast as possible > (which actually is our use case). >> Also, your 1000MiB/s set probably is not full yet, so that's >> outer tracks only, and when it fills up, data gets into the >> inner tracks, and get a bit churned, then the real >> performances will "shine" through. > Yeah - overall, I expect it to drop - perhaps 50%? I dunno. > The particular filesystem being discussed is 80% full at the > moment. That's then fairly realistic, as it is getting well into the inner tracks. Getting avobe 90% will cause trouble. [ ... ] >> But you seem to have 8-10GiB of dirty pages in your 192GiB >> system. Extraordinarily imaginative. > No, I do not want lots of dirty pages, however, I'm also aware > that if those are just data pages, it represents a few seconds > of system operation. Only if written entirely sequentially. IOPS in random and sequential are quite different. > All other approaches I am aware of cost more. I favor Lustre, > but the infrastructure costs alone for a 2-5PB system will > tend to be exceptional. Why? Lustre can run on your existing hw, and you need the network anyhow (unless you compute several TB on one host and store them on that host's disks, in which case you are lucky). >> [ ... ] is Lustre or one of its forks (or much simpler >> imitators like DPM), and that has its own downsides (it takes >> a lot of work), but a single large storage pool is almost >> never needed, at most a single large namespace, and that can >> be instantiated with an automounter (and Lustre/DPM/.... is >> in effect a more sophisticated automounter). > "It takes a lot of work" is another reason we aren't readily > able to go to other architectures, despite their many > advantages. But creating a 200TB volume and formatting it as XFS seems a quick thing to do now, but soon you will need to cope with the consequences. Setting up Lustre takes more at the beginning, but will handle your workload a lot better, and it handles much better having a lot of smaller independently fsck-able pools and highly parallel network operation. It handles small files not so well, so some kind of NFS server with XFS or better JFS for that would be nice. There is a high throughput genomic data system at thre Sanger Institute in Cambridge UK based on Lustre and it might inspire you. This is a relatively old post, it has been in production for a long time: http://threebit.net/mail-archive/bioclusters/msg00188.html http://www.slideshare.net/gcoates Alternatively a number of smaller XFS filesystems as suggested above, but you lose the extra integration/parallelism Lustre gives. [ ... ] > fsck happens in less than a day, It takes less than a day *if there is essentially no damage*, otherwise it might take weeks. > likewise rebuilding all RAIDs... But the impact on performance will be terrifying, and if you reduce resync speed, it will take much longer, and while it rebuilds further failures will be far more likely, and that will be a very long day. Also consider that you have a 7-wide RAID0 of RAID6 sets; if one of the RAID6 sets becomes much slower because of rebuild, odds are this will impact *all* IO because of the RAID0. If you are unlucky, you could end up with one of the RAID6 members of the RAID0 set being in rebuild quite a good percentage of the time. > backups are interesting - it is impossible in the old scenario > (our prior generation storage) - possible now due to higher > disk and network bandwidth. But many people forget that a backup is often the most stressful operation that can happen. > Keep in mind our ultimate backup is tissue samples. If you can regenerate the data even if expensively then avoid RAID6. Two 8+1 RAID5 sets are better than a 16+2 RAID6 set, and losing a bit more spare, three 5+1 RAID5 sets (10TB each) are better still. The reason are much smaller RMW stripe width, the ability to do non-full-width RMW updates, much nicer rebuilds (1/2 or 1/3 of the drives would be slowed down). > 2TB drives are mandatory - there simply isn't enough available > space in the data center otherwise. Ah that's a pretty hard constraint then. > The bulk of the work is not small-file - almost all is large > files. Then perhaps put the large file on XFS or Lustre and the small file on JFS. From karn@philkarn.net Fri Jun 3 17:29:00 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p53MT0Nt036219 for ; Fri, 3 Jun 2011 17:29:00 -0500 X-ASG-Debug-ID: 1307140138-3526039f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-px0-f174.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 50BE449D119 for ; Fri, 3 Jun 2011 15:28:58 -0700 (PDT) Received: from mail-px0-f174.google.com (mail-px0-f174.google.com [209.85.212.174]) by cuda.sgi.com with ESMTP id POzfNVokgJdH2nW8 for ; Fri, 03 Jun 2011 15:28:58 -0700 (PDT) Received: by pxi15 with SMTP id 15so1562977pxi.5 for ; Fri, 03 Jun 2011 15:28:58 -0700 (PDT) Received: by 10.143.58.15 with SMTP id l15mr446413wfk.418.1307140138232; Fri, 03 Jun 2011 15:28:58 -0700 (PDT) Received: from maggie.local (router.ka9q.net [75.60.237.91]) by mx.google.com with ESMTPS id o16sm1288288wff.1.2011.06.03.15.28.55 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 03 Jun 2011 15:28:56 -0700 (PDT) Message-ID: <4DE96026.2030802@philkarn.net> Date: Fri, 03 Jun 2011 15:28:54 -0700 From: Phil Karn User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Dave Chinner CC: Paul Anderson , Linux fs XFS X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general References: <19943.56524.969126.59978@tree.ty.sabi.co.UK> <4DE823DD.7060600@philkarn.net> <20110603003907.GW561@dastard> <20110603025459.GB561@dastard> In-Reply-To: <20110603025459.GB561@dastard> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail-px0-f174.google.com[209.85.212.174] X-Barracuda-Start-Time: 1307140139 X-Barracuda-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.2.65489 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 On 6/2/11 7:54 PM, Dave Chinner wrote: > There are definitely cases where it helps for preventing > fragmenting, but as a sweeping generalisation it is very, very > wrong. Well, if I ever see that in practice I'll change my procedures. > Do you do that for temporary object files when you build > from source? No, that would involve patching gcc to use fallocate(). I could be wrong -- I don't know much about gcc internals -- but I think most temp files go on /tmp, which is not xfs. As I clearly said, I patched only a few file copy programs like rsync that I use to create long-lived files. I can't see why the upstream maintainers of those programs shouldn't accept patches to incorporate fallocate() as long as care is taken to avoid calling the POSIX version and no other harm is done on file systems or OSes that don't support it. > Allocation and freeing has CPU overhead, transaction overhead, log > space overhead, can cause free space fragmentation when you have a > mix of short- and long-lived files being preallocated at the same > time, IO for long lived data does not get packed together closely so > requires more seeks to issue which leads to significantly worse IO > performance on RAID5/6 storage sub-systems, etc. I'll believe that when I see it. Like a lot of people I am moving away from RAID 5/6. It is hard to see how keeping files contiguous can lead to free space fragmentation. Seems to me that when a file is severely fragmented, so is the free space around it. Keeping a file contiguous also keeps free space in fewer, larger pieces. > You do realise that your "attr out of line" problem would have gone > away by simply increasing the XFS inode size at mkfs time? And that > there is almost no performance penalty for doing this? Instead, it > seems you found a hammer named fallocate() and proceeded to treat > every tool you have like a nail. :) You do realize that I started experimenting with attributes well *after* I had built XFS on a 6 GB (net) RAID5 that took over a week of solid copying to load to 50%? I had noticed the inode size parameter to mkfs.xfs but I wasn't about to buy four more disks, mkfs a whole new file system with bigger inodes and copy all my data (again) just to waste more space on largely empty inodes and, more importantly, require many more disk seeks and reads to walk through them all. The default xfs inode is 256 bytes. That means a single 4KiB block read fetches 16 inodes at once. Making each inode 512 bytes means reading only 8 inodes in each 4KiB block. That's arithmetic. And I'd still have no guarantee of keeping my attributes in the inodes without some limit on the size of the extent list. > Changing a single mkfs parameter is far less work than maintaining > your own forks of multiple tools.... See above. I've since built a new RAID1 array with bigger and faster drives and am abandoning RAID5, but I still see no reason to waste disk space and seeks on larger data structures that are mostly empty space. A long extent table contains overhead information that is useless -- noise -- to me, the user. Defragmenting a file discards that information and allows more of the disk's storage and I/O capacity to be used for user data. The only drawback I can see to keeping a file system defragmented is that I give up an opportunity for steganography, i.e., hiding information in the locations and sizes of those seemingly random sequences of extent allocations. I know this has been done. > Until aging has degraded your filesystem til free space is > sufficiently fragmented that you can't allocate large extents any > more. Then you are completely screwed. :/ Once again, it is very difficult to see how keeping my long-lived files contiguous causes free space to become more fragmented, not less. Help me out here; it's highly counter intuitive, and more importantly I haven't seen that problem, at least not yet. I have a few extremely large files (many GB) that cannot be allocated a contiguous area. That's probably because of xfs's strategy of scattering files around disk to allow room for growth, which fragments the free space. But that's not a big problem since I don't have very many such files. Each extent is still pretty big, so sequential I/O is still quite fast, and if their attributes are squeezed out of their inodes it's not a big performance hit either. You seem to take personal offense to my use of fallocate(), which is hardly my intention. Did you perhaps write the xfs preallocation code that I'm bypassing? As I said, I still rely on it for log files, mailboxes and temporary files, and it is much appreciated. --Phil From viro@ftp.linux.org.uk Fri Jun 3 19:26:02 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p540Q1dA043815 for ; Fri, 3 Jun 2011 19:26:01 -0500 X-ASG-Debug-ID: 1307147158-2f4f01e70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ZenIV.linux.org.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 52C2F49D0D3 for ; Fri, 3 Jun 2011 17:25:59 -0700 (PDT) Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id vZJpclwCSxtcvqJu for ; Fri, 03 Jun 2011 17:25:59 -0700 (PDT) Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1QSega-0003MI-PO; Sat, 04 Jun 2011 00:25:52 +0000 Date: Sat, 4 Jun 2011 01:25:52 +0100 From: Al Viro To: Dave Chinner Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 06/12] inode: Make unused inode LRU per superblock Subject: Re: [PATCH 06/12] inode: Make unused inode LRU per superblock Message-ID: <20110604002552.GU11521@ZenIV.linux.org.uk> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> <1306998067-27659-7-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1306998067-27659-7-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1307147159 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65491 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, Jun 02, 2011 at 05:01:01PM +1000, Dave Chinner wrote: > From: Dave Chinner > > The inode unused list is currently a global LRU. This does not match > the other global filesystem cache - the dentry cache - which uses > per-superblock LRU lists. Hence we have related filesystem object > types using different LRU reclaimation schemes. > > To enable a per-superblock filesystem cache shrinker, both of these > caches need to have per-sb unused object LRU lists. Hence this patch > converts the global inode LRU to per-sb LRUs. > > The patch only does rudimentary per-sb propotioning in the shrinker > infrastructure, as this gets removed when the per-sb shrinker > callouts are introduced later on. What protects s_nr_inodes_unused? From viro@ftp.linux.org.uk Fri Jun 3 19:42:36 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p540gavB044221 for ; Fri, 3 Jun 2011 19:42:36 -0500 X-ASG-Debug-ID: 1307148154-06da03e00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ZenIV.linux.org.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CF88ED72CF1 for ; Fri, 3 Jun 2011 17:42:34 -0700 (PDT) Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id PMqkD9VttxANJnEv for ; Fri, 03 Jun 2011 17:42:34 -0700 (PDT) Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1QSewi-0003X9-2K; Sat, 04 Jun 2011 00:42:32 +0000 Date: Sat, 4 Jun 2011 01:42:31 +0100 From: Al Viro To: Dave Chinner Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 08/12] superblock: introduce per-sb cache shrinker infrastructure Subject: Re: [PATCH 08/12] superblock: introduce per-sb cache shrinker infrastructure Message-ID: <20110604004231.GV11521@ZenIV.linux.org.uk> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> <1306998067-27659-9-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1306998067-27659-9-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1307148155 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65491 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 > @@ -278,7 +325,12 @@ void generic_shutdown_super(struct super_block *sb) > { > const struct super_operations *sop = sb->s_op; > > - > + /* > + * shut down the shrinker first so we know that there are no possible > + * races when shrinking the dcache or icache. Removes the need for > + * external locking to prevent such races. > + */ > + unregister_shrinker(&sb->s_shrink); > if (sb->s_root) { > shrink_dcache_for_umount(sb); > sync_filesystem(sb); What it means is that shrinker_rwsem now nests inside ->s_umount... IOW, if any ->shrink() gets stuck, so does every generic_shutdown_super(). I'm still not convinced it's a good idea - especially since _this_ superblock will be skipped anyway. Is there any good reason to evict shrinker that early? Note that doing that after ->s_umount is dropped should be reasonably safe - your shrinker will see that superblock is doomed if it's called anywhere in that window... From david@fromorbit.com Fri Jun 3 20:40:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p541eSrd046000 for ; Fri, 3 Jun 2011 20:40:29 -0500 X-ASG-Debug-ID: 1307151626-7fb403440000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 887E0B4B43E for ; Fri, 3 Jun 2011 18:40:26 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id wrvs5l6AEuJGowxi for ; Fri, 03 Jun 2011 18:40:26 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlAEAAKM6U15LCoegWdsb2JhbABTpkYVAQEWJiXLAQ6GEwSgPw Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl6.internode.on.net with ESMTP; 04 Jun 2011 11:10:24 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QSfqX-0003Fg-E1; Sat, 04 Jun 2011 11:40:13 +1000 Date: Sat, 4 Jun 2011 11:40:13 +1000 From: Dave Chinner To: Al Viro Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 06/12] inode: Make unused inode LRU per superblock Subject: Re: [PATCH 06/12] inode: Make unused inode LRU per superblock Message-ID: <20110604014013.GC561@dastard> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> <1306998067-27659-7-git-send-email-david@fromorbit.com> <20110604002552.GU11521@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110604002552.GU11521@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1307151627 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65493 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, Jun 04, 2011 at 01:25:52AM +0100, Al Viro wrote: > On Thu, Jun 02, 2011 at 05:01:01PM +1000, Dave Chinner wrote: > > From: Dave Chinner > > > > The inode unused list is currently a global LRU. This does not match > > the other global filesystem cache - the dentry cache - which uses > > per-superblock LRU lists. Hence we have related filesystem object > > types using different LRU reclaimation schemes. > > > > To enable a per-superblock filesystem cache shrinker, both of these > > caches need to have per-sb unused object LRU lists. Hence this patch > > converts the global inode LRU to per-sb LRUs. > > > > The patch only does rudimentary per-sb propotioning in the shrinker > > infrastructure, as this gets removed when the per-sb shrinker > > callouts are introduced later on. > > What protects s_nr_inodes_unused? For this patch, the modifications are protected by the inode_lru_lock, but the reads are unprotected. That's the same protection as the inode_stat.nr_unused field, and the same as the existing dentry cache per-sb LRU accounting. In the next patch modifcations are moved under the sb->s_inode_lru_lock, but reads still remain unprotected. I can see how the multiple reads in shrink_icache_sb() could each return a different value during the proportioning, but I don't think that is a big problem. That proportioning code goes away in the next patch and is replaced by different code in prune_super(), so if you want the reads protected by locks or a single snapshot used for the proportioning calculations I'll do it in the new code in prune_super(). Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Fri Jun 3 20:52:16 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p541qGTB046372 for ; Fri, 3 Jun 2011 20:52:16 -0500 X-ASG-Debug-ID: 1307152334-510003150000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B6EA049D514 for ; Fri, 3 Jun 2011 18:52:14 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id 7XGurlq7Z4vW6WAX for ; Fri, 03 Jun 2011 18:52:14 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlAEAAKM6U15LCoegWdsb2JhbABTpkYVAQEWJiWIccIQDoYTBKA/ Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl6.internode.on.net with ESMTP; 04 Jun 2011 11:22:13 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QSg28-0003Gm-8m; Sat, 04 Jun 2011 11:52:12 +1000 Date: Sat, 4 Jun 2011 11:52:12 +1000 From: Dave Chinner To: Al Viro Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 08/12] superblock: introduce per-sb cache shrinker infrastructure Subject: Re: [PATCH 08/12] superblock: introduce per-sb cache shrinker infrastructure Message-ID: <20110604015212.GD561@dastard> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> <1306998067-27659-9-git-send-email-david@fromorbit.com> <20110604004231.GV11521@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110604004231.GV11521@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1307152335 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65493 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, Jun 04, 2011 at 01:42:31AM +0100, Al Viro wrote: > > @@ -278,7 +325,12 @@ void generic_shutdown_super(struct super_block *sb) > > { > > const struct super_operations *sop = sb->s_op; > > > > - > > + /* > > + * shut down the shrinker first so we know that there are no possible > > + * races when shrinking the dcache or icache. Removes the need for > > + * external locking to prevent such races. > > + */ > > + unregister_shrinker(&sb->s_shrink); > > if (sb->s_root) { > > shrink_dcache_for_umount(sb); > > sync_filesystem(sb); > > What it means is that shrinker_rwsem now nests inside ->s_umount... IOW, > if any ->shrink() gets stuck, so does every generic_shutdown_super(). > I'm still not convinced it's a good idea - especially since _this_ > superblock will be skipped anyway. True, that's not nice. > Is there any good reason to evict > shrinker that early? I wanted to put it early on in the unmount path so that the shrinker was guaranteed to be gone before evict_inodes() was called. That would mean that it is obviously safe to remove the iprune_sem serialisation in that function. The code in the umount path is quite different between 2.6.35 (the original version of the patchset) and 3.0-rc1, so I'm not surprised that I haven't put the unregister call in the right place. > Note that doing that after ->s_umount is dropped > should be reasonably safe - your shrinker will see that superblock is > doomed if it's called anywhere in that window... Agreed. In trying to find the best "early" place to unregister the shrinker, I've completely missed the obvious "late is safe" solution. I'll respin it with these changes. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Fri Jun 3 22:12:47 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p543ClGP052541 for ; Fri, 3 Jun 2011 22:12:47 -0500 X-ASG-Debug-ID: 1307157163-183200640000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 838231BEF219 for ; Fri, 3 Jun 2011 20:12:43 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id M75XoqaXVX32HCq4 for ; Fri, 03 Jun 2011 20:12:43 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlIEAGmh6U15LCoegWdsb2JhbABTG4QvoXwVAQEWJiWIcbEIkFcOgR2DbIEKBKA/ Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl6.internode.on.net with ESMTP; 04 Jun 2011 12:42:42 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QShI0-0003Mz-F9; Sat, 04 Jun 2011 13:12:40 +1000 Date: Sat, 4 Jun 2011 13:12:40 +1000 From: Dave Chinner To: Phil Karn Cc: Paul Anderson , Linux fs XFS X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general Message-ID: <20110604031240.GE561@dastard> References: <19943.56524.969126.59978@tree.ty.sabi.co.UK> <4DE823DD.7060600@philkarn.net> <20110603003907.GW561@dastard> <20110603025459.GB561@dastard> <4DE96026.2030802@philkarn.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <4DE96026.2030802@philkarn.net> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1307157165 X-Barracuda-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.2.65495 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 On Fri, Jun 03, 2011 at 03:28:54PM -0700, Phil Karn wrote: > On 6/2/11 7:54 PM, Dave Chinner wrote: > > > There are definitely cases where it helps for preventing > > fragmenting, but as a sweeping generalisation it is very, very > > wrong. > > Well, if I ever see that in practice I'll change my procedures. > > > Do you do that for temporary object files when you build > > from source? > > No, that would involve patching gcc to use fallocate(). I could be wrong > -- I don't know much about gcc internals -- but I think most temp files > go on /tmp, which is not xfs. As I clearly said, I patched only a few > file copy programs like rsync that I use to create long-lived files. I > can't see why the upstream maintainers of those programs shouldn't > accept patches to incorporate fallocate() as long as care is taken to > avoid calling the POSIX version and no other harm is done on file > systems or OSes that don't support it. They are trying, but, well, the file corruption problems seen on 2.6.38/.39 kernels that are the result of them using fiemap/fallocate don't inspire me with confidence.... > > away by simply increasing the XFS inode size at mkfs time? And that > > there is almost no performance penalty for doing this? Instead, it > > seems you found a hammer named fallocate() and proceeded to treat > > every tool you have like a nail. :) > > You do realize that I started experimenting with attributes well *after* > I had built XFS on a 6 GB (net) RAID5 that took over a week of solid > copying to load to 50%? I had noticed the inode size parameter to > mkfs.xfs but I wasn't about to buy four more disks, mkfs a whole new > file system with bigger inodes and copy all my data (again) just to > waste more space on largely empty inodes and, more importantly, require > many more disk seeks and reads to walk through them all. > > The default xfs inode is 256 bytes. That means a single 4KiB block read > fetches 16 inodes at once. Making each inode 512 bytes means reading > only 8 inodes in each 4KiB block. That's arithmetic. XFS does not do inode IO like that, so your logic is flawed. Firstly, inodes are read and written in clusters of 8k, and contiguous inode clusters are merged during IO by the elevator. Metadata blocks are heavily sorted before being issued by for writeback, so we get excellent large IO patterns even for metadata IO. Under heavy file create workloads, I'm seeing XFS consistently write metadata to disk in 320k IOs - the maximum IO size my storage subsystem will allow. e.g. a couple of instructive graphs from Chris Mason for a parallel file create workload: http://oss.oracle.com/~mason/seekwatcher/fs_mark/xfs.png http://oss.oracle.com/~mason/seekwatcher/fs_mark/xfs.ogg The fact that ~5000 IOPS is being sustained with only 30-100 seeks/s indicates that the elevator merging is merging roughly 50-100 individual IOs together into each physical IO. This will happen regardless of inode size, so inode/metadata writeback under these workloads tends to be limited by bandwidth, not IOPS.... Reads might be a bit more random, but due to inodes being allocated in larger chunks (64 inodes at a time) and temporal locality effects due to sequential allocation by apps like rsync, then typically reads occur to localised areas as well and hit track caches or RAID controller readahead windows. > And I'd still have no guarantee of keeping my attributes in the inodes > without some limit on the size of the extent list. going from 256 -> 512 byte inodes gives you 256 bytes more space for attributes and extents, which in your case woul dbe entirely for data extents. In hat space you can fit another 16 extent records, which is more than enough for 99.9% of normal files. > > Changing a single mkfs parameter is far less work than maintaining > > your own forks of multiple tools.... > > See above. I've since built a new RAID1 array with bigger and faster > drives and am abandoning RAID5, but I still see no reason to waste disk > space and seeks on larger data structures that are mostly empty space. Well, if you think that inodes are taking too much space, then I guess you'd be really concerned about the amount of space that directories consume and how badly they get fragmented ;) > > Until aging has degraded your filesystem til free space is > > sufficiently fragmented that you can't allocate large extents any > > more. Then you are completely screwed. :/ > > Once again, it is very difficult to see how keeping my long-lived files > contiguous causes free space to become more fragmented, not less. Help > me out here; it's highly counter intuitive, and more importantly I > haven't seen that problem, at least not yet. Initial allocations are done via the "allocate near" algorithm. It starts by finding the largest freespace extent that will hold the allocation via a -size- match i.e. it will look for a match on the size you are asking for. If there isn't a free space extent large enough, it will fall back to searching for a large enough extent near to where you are asking with an increasing search radius. Once a free space extent is found, it then trims it for alignment to stripe unit/stripe width. This generally leaves small, isolated chunks of free space behind, as allocations are typically not stripe unit/width length. Hence you end up with lots of little holes around. Subsequent sequential allocations use an exact block allocation target to try to extend the contiguous allocation each file does. For large files, this tends to keep the files contiguous, or at least with multiple large extents rather than lots of small extents. Then things like unrelated metadata allocations will tend to fill those little holes, be it inodes, btree blocks, directory blocks or attributes. If there aren't little holes (or you aren't using alignment), they will simply sit between data extents. When you then free the allocated data space, you've still got that unrelated metadata lying around, and the free space is now somewhat fragmented. This pattern gets worse as the filesystem ages. Delayed allocation reduces the impact of this problem because it reduces the amount of on-disk metadata modifications that occur during normal operations. It also allows things like directory and inode extent allocation during creates (e.g. untaring) to avoid interleaving with data allocations, so directory and inode extents tend to cluster and be more contiguous and not fill holes between data extents. This means that you are less likely to get sparse metadata blocks fragmenting free space, metadata read and write IO is more likely to be clustered effectively (better IO performance), and so on. IOWs, there are many reasons why delayed allocation reduces the effects of filesystem aging compared to up-front preallocation.... > I have a few extremely large files (many GB) that cannot be allocated a > contiguous area. That's probably because of xfs's strategy of scattering > files around disk to allow room for growth, which fragments the free > space. I doubt it. An extent canbe at most 8GB on a 4kB filesystem, so that's why you see multiple extents for large files. i.e. they require multiple allocations.... > You seem to take personal offense to my use of fallocate(), which is > hardly my intention. Nothing personal at all. > Did you perhaps write the xfs preallocation code > that I'm bypassing? No. People much smarter than me designed and wrote all this stuff. What I'm commenting on is your implication (sweeping generalisation) that preallocation should be used everywhere because it seems to work for you. I don't like to let such statements stand unchallenged, especially when there are very good reaÑ•ons why it is likely to be wrong. I don't do this for my benefit - and I don't really care if you benefit from it or not - but there's a lot of XFS users on this list that might have be wondering "why isn't that done by default?". Those people learn a lot from someone trying to explain why what one person says is beneficial for their use cases might be considered harmful to everyone else... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Fri Jun 3 22:15:47 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p543Fl2s052657 for ; Fri, 3 Jun 2011 22:15:47 -0500 X-ASG-Debug-ID: 1307157339-54c101920000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CFC19134754B for ; Fri, 3 Jun 2011 20:15:39 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id N3moHGbkNGgymGrT for ; Fri, 03 Jun 2011 20:15:39 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlAEAGmh6U15LCoegWdsb2JhbABTEKY2FQEBFiYlylAOhhMEn3hH Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl6.internode.on.net with ESMTP; 04 Jun 2011 12:45:38 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QShKr-0003NE-Ot; Sat, 04 Jun 2011 13:15:37 +1000 Date: Sat, 4 Jun 2011 13:15:37 +1000 From: Dave Chinner To: Paul Anderson Cc: Christoph Hellwig , xfs-oss X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general Message-ID: <20110604031537.GF561@dastard> References: <20110603004247.GA28043@infradead.org> <20110603013948.GX561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1307157340 X-Barracuda-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.2.65495 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 On Fri, Jun 03, 2011 at 11:59:02AM -0400, Paul Anderson wrote: > On Thu, Jun 2, 2011 at 9:39 PM, Dave Chinner wrote: > > On Thu, Jun 02, 2011 at 08:42:47PM -0400, Christoph Hellwig wrote: > >> On Thu, Jun 02, 2011 at 10:42:46AM -0400, Paul Anderson wrote: > >> > This morning, I had a symptom of a I/O throughput problem in which > >> > dirty pages appeared to be taking a long time to write to disk. > >> > > >> > The system is a large x64 192GiB dell 810 server running 2.6.38.5 from > >> > kernel.org - the basic workload was data intensive - concurrent large > >> > NFS (with high metadata/low filesize), rsync/lftp (with low > >> > metadata/high file size) all working in a 200TiB XFS volume on a > >> > software MD raid0 on top of 7 software MD raid6, each w/18 drives.  I > >> > had mounted the filesystem with inode64,largeio,logbufs=8,noatime. > >> > >> A few comments on the setup before trying to analze what's going on in > >> detail.  I'd absolutely recommend an external log device for this setup, > >> that is buy another two fast but small disks, or take two existing ones > >> and use a RAID 1 for the external log device.  This will speed up > >> anything log intensive, which both NFS, and resync workloads are lot. > >> > >> Second thing if you can split the workloads into multiple volumes if you > >> have two such different workloads, so thay they don't interfear with > >> each other. > >> > >> Second a RAID0 on top of RAID6 volumes sounds like a pretty worst case > >> for almost any type of I/O.  You end up doing even relatively small I/O > >> to all of the disks in the worst case.  I think you'd be much better > >> off with a simple linear concatenation of the RAID6 devices, even if you > >> can split them into multiple filesystems > >> > >> > The specific symptom was that 'sync' hung, a dpkg command hung > >> > (presumably trying to issue fsync), and experimenting with "killall > >> > -STOP" or "kill -STOP" of the workload jobs didn't let the system > >> > drain I/O enough to finish the sync.  I probably did not wait long > >> > enough, however. > >> > >> It really sounds like you're simply killloing the MD setup with a > >> log of log I/O that does to all the devices. > > > > And this is one of the reasons why I originally suggested that > > storage at this scale really should be using hardware RAID with > > large amounts of BBWC to isolate the backend from such problematic > > IO patterns. > > > Dave Chinner > > david@fromorbit.com > > > > Good HW RAID cards are on order - seems to be backordered at least a > few weeks now at CDW. Got the batteries immediately. > > That will give more options for test and deployment. > > Not sure what I can do about the log - man page says xfs_growfs > doesn't implement log moving. I can rebuild the filesystems, but for > the one mentioned in this theread, this will take a long time. Once you have BBWC, the log IO gets aggregated into stripe width writes to the back end (because it is always sequential IO), so it's generally not a significant problem for HW RAID subsystems. Cheers, Dave. -- Dave Chinner david@fromorbit.com From stan@hardwarefreak.com Sat Jun 4 03:14:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p548ExaE067343 for ; Sat, 4 Jun 2011 03:14:59 -0500 X-ASG-Debug-ID: 1307175297-6249007a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from greer.hardwarefreak.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EB4421E3D0B9 for ; Sat, 4 Jun 2011 01:14:57 -0700 (PDT) Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id kUHMf3VDyhQ6fMEf for ; Sat, 04 Jun 2011 01:14:57 -0700 (PDT) Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 888796C127; Sat, 4 Jun 2011 03:14:56 -0500 (CDT) Message-ID: <4DE9E97D.30500@hardwarefreak.com> Date: Sat, 04 Jun 2011 03:14:53 -0500 From: Stan Hoeppner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Paul Anderson CC: Dave Chinner , Christoph Hellwig , xfs-oss X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general References: <20110603004247.GA28043@infradead.org> <20110603013948.GX561@dastard> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1307175297 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0751 1.0000 -1.5438 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.84 X-Barracuda-Spam-Status: No, SCORE=-0.84 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=COMMA_SUBJECT, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65501 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' 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 On 6/3/2011 10:59 AM, Paul Anderson wrote: Hi Paul, When I first replied to this thread I didn't recognize your name, thus forgot our off-list conversation. Sorry bout that. > Good HW RAID cards are on order - seems to be backordered at least a > few weeks now at CDW. Got the batteries immediately. As I mentioned, the 9285-8E is very new product, but I didn't realize it was *that* new. Sorry you're having to wait for them. > That will give more options for test and deployment. Others have made valid points WRT the down sides of wide stripe parity arrays. I've mentioned many times I loathe parity RAID due to those reasons, and others, but it's mandatory in your case due to the reasons you previously stated. If such arguments are sufficiently convincing, and you can afford to lose the capacity of 2 more disks per chassis to parity, and increase complexity a bit, you may want to consider 3 x 7 drive RAID5 arrays per backplane, 6 drive stripe width, 18 total arrays concatenated, 216 AGs, 6 AGs per array, 216TB raw storage per server, if my math is correct. That instead of the concatenated 6 x 21 drive RAID6 arrays I previously mentioned. You'd have 3 arrays per backplane/cable and thus retain some isolation advantages for troubleshooting, with the same spares arrangement. Your overall resiliency, mathematical/theoretical anyway, to drive failure should actually increase slightly as you would have 3 drives per backplane worth of parity instead of 2, and array rebuild time would be ~1/3rd that of the 21 drive array, somewhat negating the dual parity advantage of RAID6 as the odds of drive failure during a rebuild tend to increase with the duration of the rebuild. > Not sure what I can do about the log - man page says xfs_growfs > doesn't implement log moving. I can rebuild the filesystems, but for > the one mentioned in this theread, this will take a long time. See the logdev mount option. Using two mirrored drives was recommended, I'd go a step further and use two quality "consumer grade", i.e. MLC based, SSDs, such as: http://www.cdw.com/shop/products/Corsair-Force-Series-F40-solid-state-drive-40-GB-SATA-300/2181114.aspx Rated at 50K 4K write IOPS, about 150 times greater than a 15K SAS drive. > I'm guessing we'll need to split out the workload - aside from the > differences in file size and use patterns, they also have > fundamentally different values (the high metadata dataset happens to > be high value relative to the low metadata/large file dataset). LSI is touting significantly better parity performance for the 9265/9285 vs LSI's previous generation cards for which they claim peaks of ~2700 MB/s sequential read and ~1800 MB/s write. The new cards have double the cache of the previous, so I would think write performance would increase more than read. I'm really interested in seeing your test results with your workloads Paul. -- Stan From david@fromorbit.com Sat Jun 4 05:32:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p54AWt55072941 for ; Sat, 4 Jun 2011 05:32:56 -0500 X-ASG-Debug-ID: 1307183572-491d036e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CEF9E49DFD3 for ; Sat, 4 Jun 2011 03:32:52 -0700 (PDT) Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id Z3qlS79xf6plW8lZ for ; Sat, 04 Jun 2011 03:32:52 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvADAB8I6k15LCoegWdsb2JhbABSpkUVAQEWJiXKCg6GEwSgRQ Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail05.adl6.internode.on.net with ESMTP; 04 Jun 2011 20:02:50 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QSo9v-0003vf-HY; Sat, 04 Jun 2011 20:32:47 +1000 Date: Sat, 4 Jun 2011 20:32:47 +1000 From: Dave Chinner To: Stan Hoeppner Cc: Paul Anderson , Christoph Hellwig , xfs-oss X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general Message-ID: <20110604103247.GG561@dastard> References: <20110603004247.GA28043@infradead.org> <20110603013948.GX561@dastard> <4DE9E97D.30500@hardwarefreak.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DE9E97D.30500@hardwarefreak.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1307183573 X-Barracuda-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.2.65504 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 On Sat, Jun 04, 2011 at 03:14:53AM -0500, Stan Hoeppner wrote: > On 6/3/2011 10:59 AM, Paul Anderson wrote: > > Not sure what I can do about the log - man page says xfs_growfs > > doesn't implement log moving. I can rebuild the filesystems, but for > > the one mentioned in this theread, this will take a long time. > > See the logdev mount option. Using two mirrored drives was recommended, > I'd go a step further and use two quality "consumer grade", i.e. MLC > based, SSDs, such as: > > http://www.cdw.com/shop/products/Corsair-Force-Series-F40-solid-state-drive-40-GB-SATA-300/2181114.aspx > > Rated at 50K 4K write IOPS, about 150 times greater than a 15K SAS drive. If you are using delayed logging, then a pair of mirrored 7200rpm SAS or SATA drives would be sufficient for most workloads as the log bandwidth rarely gets above 50MB/s in normal operation. If you have fsync heavy workloads, or are not using delayed logging, then you really need to use the RAID5/6 device behind a BBWC because the log is -seriously- bandwidth intensive. I can drive >500MB/s of log throughput on metadata intensive workloads on 2.6.39 when not using delayed logging or I'm regularly forcing the log via fsync. You sure as hell don't want to be running a sustained long term write load like that on consumer grade SSDs..... Cheers, Dave. -- Dave Chinner david@fromorbit.com From theoliveira@eep.br Sat Jun 4 06:59:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.1 required=5.0 tests=BAYES_99,J_CHICKENPOX_73, T_LOTS_OF_MONEY autolearn=no version=3.4.0-r929098 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 p54BxB0M079336 for ; Sat, 4 Jun 2011 06:59:11 -0500 X-ASG-Debug-ID: 1307188749-01b1009d0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pinga.eep.br (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2C27F49A616 for ; Sat, 4 Jun 2011 04:59:09 -0700 (PDT) Received: from pinga.eep.br (pinga.eep.br [201.72.166.52]) by cuda.sgi.com with ESMTP id Q9rnyw5lVjGZWreG for ; Sat, 04 Jun 2011 04:59:09 -0700 (PDT) Received: by pinga.eep.br (Postfix, from userid 65534) id B95FE16EA084; Sat, 4 Jun 2011 08:54:26 -0300 (BRT) Received: from pinga.eep.br (localhost.localdomain [127.0.0.1]) by pinga.eep.br (Postfix) with ESMTP id 1B1CE16E9E02; Sat, 4 Jun 2011 08:54:26 -0300 (BRT) From: "thelma oliveira" Reply-To: datsongalleon@bigstring.com X-ASG-Orig-Subj: ATTN Subject: ATTN Date: Sat, 4 Jun 2011 09:54:26 -0200 Message-Id: <20110604115357.M5163@eep.br> X-Mailer: OpenWebMail 2.52 20060502 X-OriginatingIP: 41.73.225.143 (taaolive) MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 To: undisclosed-recipients:; X-Barracuda-Connect: pinga.eep.br[201.72.166.52] X-Barracuda-Start-Time: 1307188750 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4312 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.2.65504 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 Your email address has made you a winner of 11,000,000 USD, contact,our agent immediately From stan@hardwarefreak.com Sat Jun 4 07:11:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_48 autolearn=no version=3.4.0-r929098 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 p54CBupP079814 for ; Sat, 4 Jun 2011 07:11:56 -0500 X-ASG-Debug-ID: 1307189513-510e007f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from greer.hardwarefreak.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 54ED91347C8F for ; Sat, 4 Jun 2011 05:11:53 -0700 (PDT) Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id 4S6hC1u2mNVvNMvF for ; Sat, 04 Jun 2011 05:11:53 -0700 (PDT) Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 518A26C170; Sat, 4 Jun 2011 07:11:53 -0500 (CDT) Message-ID: <4DEA2106.5000900@hardwarefreak.com> Date: Sat, 04 Jun 2011 07:11:50 -0500 From: Stan Hoeppner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Dave Chinner CC: Paul Anderson , Christoph Hellwig , xfs-oss X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general References: <20110603004247.GA28043@infradead.org> <20110603013948.GX561@dastard> <4DE9E97D.30500@hardwarefreak.com> <20110604103247.GG561@dastard> In-Reply-To: <20110604103247.GG561@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1307189515 X-Barracuda-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.32 X-Barracuda-Spam-Status: No, SCORE=-1.32 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=COMMA_SUBJECT, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65505 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' 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 On 6/4/2011 5:32 AM, Dave Chinner wrote: > On Sat, Jun 04, 2011 at 03:14:53AM -0500, Stan Hoeppner wrote: >> On 6/3/2011 10:59 AM, Paul Anderson wrote: >>> Not sure what I can do about the log - man page says xfs_growfs >>> doesn't implement log moving. I can rebuild the filesystems, but for >>> the one mentioned in this theread, this will take a long time. >> >> See the logdev mount option. Using two mirrored drives was recommended, >> I'd go a step further and use two quality "consumer grade", i.e. MLC >> based, SSDs, such as: >> >> http://www.cdw.com/shop/products/Corsair-Force-Series-F40-solid-state-drive-40-GB-SATA-300/2181114.aspx >> >> Rated at 50K 4K write IOPS, about 150 times greater than a 15K SAS drive. > > If you are using delayed logging, then a pair of mirrored 7200rpm > SAS or SATA drives would be sufficient for most workloads as the log > bandwidth rarely gets above 50MB/s in normal operation. Hi Dave. I made the first reply to Paul's post, recommending he enable delayed logging as a possible solution to his I/O hang problem. I recommended this due to his mention of super heavy metadata operations at the time on his all md raid60 on plain HBA setup. Paul did not list delaylog when he submitted his 2.6.38.5 mount options: inode64,largeio,logbufs=8,noatime Being the author of the delayed logging code, I had expected you to comment on this, either expounding on my recommendation, or shooting it down, and giving the reasons why. So, would delayed logging have possibly prevented his hang problem or no? I always read your replies at least twice, and I don't recall you touching on delayed logging in this thread. If you did and I missed it, my apologies. Paul will have 3 of LSI's newest RAID cards with a combined 3GB BBWC to test with, hopefully soon. With that much cache is an external log device still needed? With and/or without delayed logging enabled? > If you have fsync heavy workloads, or are not using delayed logging, > then you really need to use the RAID5/6 device behind a BBWC because > the log is -seriously- bandwidth intensive. I can drive >500MB/s of > log throughput on metadata intensive workloads on 2.6.39 when not > using delayed logging or I'm regularly forcing the log via fsync. > You sure as hell don't want to be running a sustained long term > write load like that on consumer grade SSDs..... Given that the max log size is 2GB, IIRC, and that most recommendations I've seen here are against using a log that big, I figure such MLC drives would be fine. AIUI, modern wear leveling will spread writes throughout the entire flash array before going back and over writing the first sector. Published MTBF on most MLC drives rates are roughly equivalent to enterprise SRDs, 1+ million hours. Do you believe MLC based SSDs are simply never appropriate for anything but consumer use, and that only SLC devices should be used for real storage applications? AIUI SLC flash cells do have about a 10:1 greater lifetime than MLC cells. However, there have been a number of articles/posts demonstrating math which shows a current generation SandForce based MLC SSD, under a constant 100MB/s write stream, will run for 20+ years, IIRC, before sufficient live+reserved spare cells burn out to cause hard write errors, thus necessitating drive replacement. Under your 500MB/s load, assuming that's constant, the drives would theoretically last 4+ years. If that 500MB/s load was only for 12 hours each day, the drives would last 8+ years. I wish I had one of those articles bookmarked... -- Stan From BATV+fd2b68da796e04450210+2841+infradead.org+hch@bombadil.srs.infradead.org Sat Jun 4 09:09:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p54E8xgj084161 for ; Sat, 4 Jun 2011 09:09:01 -0500 X-ASG-Debug-ID: 1307196536-7f3e01150000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2A370D76435 for ; Sat, 4 Jun 2011 07:08:56 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 7lxQCNFvstscwyG3 for ; Sat, 04 Jun 2011 07:08:56 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QSrWy-00061G-Rw; Sat, 04 Jun 2011 14:08:48 +0000 Date: Sat, 4 Jun 2011 10:08:48 -0400 From: Christoph Hellwig To: Dave Chinner Cc: Al Viro , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 08/12] superblock: introduce per-sb cache shrinker infrastructure Subject: Re: [PATCH 08/12] superblock: introduce per-sb cache shrinker infrastructure Message-ID: <20110604140848.GA20404@infradead.org> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> <1306998067-27659-9-git-send-email-david@fromorbit.com> <20110604004231.GV11521@ZenIV.linux.org.uk> <20110604015212.GD561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110604015212.GD561@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1307196537 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65507 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Sat, Jun 04, 2011 at 11:52:12AM +1000, Dave Chinner wrote: > I wanted to put it early on in the unmount path so that the shrinker > was guaranteed to be gone before evict_inodes() was called. That > would mean that it is obviously safe to remove the iprune_sem > serialisation in that function. The iprune_sem removal is fine as soon as you have a per-sb shrinker for the inodes which keeps an active reference on the superblock until all the inodes are evicted. From viro@ftp.linux.org.uk Sat Jun 4 09:19:51 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p54EJonp084573 for ; Sat, 4 Jun 2011 09:19:51 -0500 X-ASG-Debug-ID: 1307197188-459702990000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ZenIV.linux.org.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0800349E3EE for ; Sat, 4 Jun 2011 07:19:48 -0700 (PDT) Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id EMO7wjsWixEWUzwH for ; Sat, 04 Jun 2011 07:19:48 -0700 (PDT) Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1QSrhU-0002j9-LY; Sat, 04 Jun 2011 14:19:40 +0000 Date: Sat, 4 Jun 2011 15:19:40 +0100 From: Al Viro To: Christoph Hellwig Cc: Dave Chinner , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 08/12] superblock: introduce per-sb cache shrinker infrastructure Subject: Re: [PATCH 08/12] superblock: introduce per-sb cache shrinker infrastructure Message-ID: <20110604141940.GW11521@ZenIV.linux.org.uk> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> <1306998067-27659-9-git-send-email-david@fromorbit.com> <20110604004231.GV11521@ZenIV.linux.org.uk> <20110604015212.GD561@dastard> <20110604140848.GA20404@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110604140848.GA20404@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1307197189 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65507 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, Jun 04, 2011 at 10:08:48AM -0400, Christoph Hellwig wrote: > On Sat, Jun 04, 2011 at 11:52:12AM +1000, Dave Chinner wrote: > > I wanted to put it early on in the unmount path so that the shrinker > > was guaranteed to be gone before evict_inodes() was called. That > > would mean that it is obviously safe to remove the iprune_sem > > serialisation in that function. > > The iprune_sem removal is fine as soon as you have a per-sb shrinker > for the inodes which keeps an active reference on the superblock until > all the inodes are evicted. I really don't like that. Stuff keeping active refs, worse yet doing that asynchronously... Shrinkers should *not* do that. Just grab a passive ref (i.e. bump s_count), try grab s_umount (shared) and if that thing still has ->s_root while we hold s_umount, go ahead. Unregister either at the end of generic_shutdown_super() or from deactivate_locked_super(), between the calls of ->kill_sb() and put_filesystem(). From viro@ftp.linux.org.uk Sat Jun 4 09:24:52 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p54EOqLL085013 for ; Sat, 4 Jun 2011 09:24:52 -0500 X-ASG-Debug-ID: 1307197491-35dd03370000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ZenIV.linux.org.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 08B371E3D745 for ; Sat, 4 Jun 2011 07:24:51 -0700 (PDT) Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id tj0b6wZkpDSy0I6M for ; Sat, 04 Jun 2011 07:24:51 -0700 (PDT) Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1QSrmS-0002n0-VT; Sat, 04 Jun 2011 14:24:48 +0000 Date: Sat, 4 Jun 2011 15:24:48 +0100 From: Al Viro To: Christoph Hellwig Cc: Dave Chinner , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 08/12] superblock: introduce per-sb cache shrinker infrastructure Subject: Re: [PATCH 08/12] superblock: introduce per-sb cache shrinker infrastructure Message-ID: <20110604142448.GX11521@ZenIV.linux.org.uk> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> <1306998067-27659-9-git-send-email-david@fromorbit.com> <20110604004231.GV11521@ZenIV.linux.org.uk> <20110604015212.GD561@dastard> <20110604140848.GA20404@infradead.org> <20110604141940.GW11521@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110604141940.GW11521@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1307197492 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65507 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, Jun 04, 2011 at 03:19:40PM +0100, Al Viro wrote: > > The iprune_sem removal is fine as soon as you have a per-sb shrinker > > for the inodes which keeps an active reference on the superblock until > > all the inodes are evicted. > > I really don't like that. Stuff keeping active refs, worse yet doing that > asynchronously... Shrinkers should *not* do that. Just grab a passive > ref (i.e. bump s_count), try grab s_umount (shared) and if that thing still > has ->s_root while we hold s_umount, go ahead. Unregister either at the > end of generic_shutdown_super() or from deactivate_locked_super(), between > the calls of ->kill_sb() and put_filesystem(). PS: shrinkers should not acquire active refs; more specifically, they should not _drop_ active refs, lest they end up dropping the last active one and trigger unregistering a shrinker for superblock in question. From inside of ->shrink(), with shrinker_rwsem held by caller. Deadlock... From root@lxplesk223.fm.netbenefit.co.uk Sat Jun 4 17:39:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,T_LOTS_OF_MONEY autolearn=ham version=3.4.0-r929098 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 p54Md06Z109586 for ; Sat, 4 Jun 2011 17:39:01 -0500 X-ASG-Debug-ID: 1307227139-2a6c03e30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lxplesk223.fm.netbenefit.co.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 300011E3DAB9 for ; Sat, 4 Jun 2011 15:38:59 -0700 (PDT) Received: from lxplesk223.fm.netbenefit.co.uk (www.aestheticandimplantdentistry.co.uk [62.128.152.171]) by cuda.sgi.com with ESMTP id CMMeHxqT1XzyUzYy for ; Sat, 04 Jun 2011 15:38:59 -0700 (PDT) Received: (qmail 8421 invoked by uid 48); 3 Jun 2011 00:27:59 +0100 Date: 3 Jun 2011 00:27:58 +0100 Message-ID: <20110602232758.8410.qmail@lxplesk223.fm.netbenefit.co.uk> To: xfs@oss.sgi.com X-ASG-Orig-Subj: Randolf recommends this site Subject: Randolf recommends this site MIME-Version: 1.0 From: "laura.murphy@fmc.co.uk" Reply-To: "bizopps.v73@gmail.com" Content-type: text/plain; charset=iso-8859-1 X-Barracuda-Connect: www.aestheticandimplantdentistry.co.uk[62.128.152.171] X-Barracuda-Start-Time: 1307227140 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5350 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.2.65521 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 Your friend Randolf (bizopps.v73@gmail.com ) has recommended this site to you, and sends you the following message: Hi, What if I told you there was a secret combination of keys which you could press and something amazing would happen? Well, what if I told you there exists a combination of keys that if you press in a certain way will generate you at least $23,654 per day? Sceptical? I was too until I saw this! http://simplebis.co.cc/nmo2.php?e=xfs@oss.sgi.com Thank me later, Randolf To unsubscribe please click the link below: http://simplebis.co.cc/un.php?e=xfs@oss.sgi.com http://www.independentseminars.co.uk/store/proddetail.php?prod=001YDH From david@fromorbit.com Sat Jun 4 18:10:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_48 autolearn=no version=3.4.0-r929098 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 p54NAdkf112611 for ; Sat, 4 Jun 2011 18:10:40 -0500 X-ASG-Debug-ID: 1307229035-3a1500cb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id ACCAF49E782 for ; Sat, 4 Jun 2011 16:10:36 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id btxb2eJUtUuyD1r2 for ; Sat, 04 Jun 2011 16:10:36 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvUDAFG46k15LCoegWdsb2JhbABThEqhexUBARYmJYhxrUGPYw6BHYNsgQoEoEU Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail07.adl2.internode.on.net with ESMTP; 05 Jun 2011 08:40:34 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QSzzE-00051d-7f; Sun, 05 Jun 2011 09:10:32 +1000 Date: Sun, 5 Jun 2011 09:10:32 +1000 From: Dave Chinner To: Stan Hoeppner Cc: Paul Anderson , Christoph Hellwig , xfs-oss X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general Message-ID: <20110604231032.GM32466@dastard> References: <20110603004247.GA28043@infradead.org> <20110603013948.GX561@dastard> <4DE9E97D.30500@hardwarefreak.com> <20110604103247.GG561@dastard> <4DEA2106.5000900@hardwarefreak.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <4DEA2106.5000900@hardwarefreak.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1307229037 X-Barracuda-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.2.65523 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 On Sat, Jun 04, 2011 at 07:11:50AM -0500, Stan Hoeppner wrote: > On 6/4/2011 5:32 AM, Dave Chinner wrote: > > On Sat, Jun 04, 2011 at 03:14:53AM -0500, Stan Hoeppner wrote: > >> On 6/3/2011 10:59 AM, Paul Anderson wrote: > >>> Not sure what I can do about the log - man page says xfs_growfs > >>> doesn't implement log moving. I can rebuild the filesystems, but for > >>> the one mentioned in this theread, this will take a long time. > >> > >> See the logdev mount option. Using two mirrored drives was recommended, > >> I'd go a step further and use two quality "consumer grade", i.e. MLC > >> based, SSDs, such as: > >> > >> http://www.cdw.com/shop/products/Corsair-Force-Series-F40-solid-state-drive-40-GB-SATA-300/2181114.aspx > >> > >> Rated at 50K 4K write IOPS, about 150 times greater than a 15K SAS drive. > > > > If you are using delayed logging, then a pair of mirrored 7200rpm > > SAS or SATA drives would be sufficient for most workloads as the log > > bandwidth rarely gets above 50MB/s in normal operation. > > Hi Dave. I made the first reply to Paul's post, recommending he enable > delayed logging as a possible solution to his I/O hang problem. I > recommended this due to his mention of super heavy metadata operations > at the time on his all md raid60 on plain HBA setup. Paul did not list > delaylog when he submitted his 2.6.38.5 mount options: > > inode64,largeio,logbufs=8,noatime > > Being the author of the delayed logging code, I had expected you to > comment on this, either expounding on my recommendation, or shooting it > down, and giving the reasons why. > > So, would delayed logging have possibly prevented his hang problem or > no? I always read your replies at least twice, and I don't recall you > touching on delayed logging in this thread. If you did and I missed it, > my apologies. It might, but I delayed logging iÑ› not he solution to every problem, and NFS servers are notoriously heavy on log forces due to COMMIT operations during writes. So it's a good bet that delyed logging won't fix the problem entirely. > > If you have fsync heavy workloads, or are not using delayed logging, > > then you really need to use the RAID5/6 device behind a BBWC because > > the log is -seriously- bandwidth intensive. I can drive >500MB/s of > > log throughput on metadata intensive workloads on 2.6.39 when not > > using delayed logging or I'm regularly forcing the log via fsync. > > You sure as hell don't want to be running a sustained long term > > write load like that on consumer grade SSDs..... > > Given that the max log size is 2GB, IIRC, and that most recommendations > I've seen here are against using a log that big, I figure such MLC > drives would be fine. AIUI, modern wear leveling will spread writes > throughout the entire flash array before going back and over writing the > first sector. Published MTBF on most MLC drives rates are roughly > equivalent to enterprise SRDs, 1+ million hours. > > Do you believe MLC based SSDs are simply never appropriate for anything > but consumer use, and that only SLC devices should be used for real > storage applications? AIUI SLC flash cells do have about a 10:1 greater > lifetime than MLC cells. However, there have been a number of > articles/posts demonstrating math which shows a current generation > SandForce based MLC SSD, under a constant 100MB/s write stream, will run > for 20+ years, IIRC, before sufficient live+reserved spare cells burn > out to cause hard write errors, thus necessitating drive replacement. > Under your 500MB/s load, assuming that's constant, the drives would > theoretically last 4+ years. If that 500MB/s load was only for 12 hours > each day, the drives would last 8+ years. I wish I had one of those > articles bookmarked... That's the theory, anyway. Let's call it an expected 4 year life cycle under this workload (which is highly optimistic, IMO). Now you have two drives in RAID1, that means one will fail in 2 years, or if you need more drives to sustain that performance the log needs (*) you might be looking at 4 or more drives, and that brings the expet failure rate down under one drive per year. Multiply that across 5-10 servers, and that's a drive failure every month just on the log devices. That failure rate would make me extremely nervous - losing the log is a -major- filesystem corruption event - and make me want to spend more money or change the config to reduce the risk of a double failure causing the log device to be lost. Especially if there are hundreds of terabytes of data at risk. Cheers, Dave. (*) You have to consider that sustained workloads mean that the drives don't get idle time to trigger background garbage collection, which is one of the key features that current consumer level drives rely on for maintaining performance and even wear levelling. The "spare" area in the drives is kept small because it is assumed that there won't be long term sustained IO so that the garbage collection can clean up before spare area is exhausted. Enterprise drives have a much larger relative percentage of flash in the drive reserved as spare to avoid severe degradation in such sustained (common enterprise) workloads. Hence performance on consumer MLC drives tails off much more quickly than SLC drives. Hence performance on consumer MLC drives may not be sustainable, and wear leveling may not be optimal, resulting in flash failure earlier than you expect. To maintain performance, you'll need more MLC drives to maintain baseline performance. And with more drives, the chance of failure goes up... -- Dave Chinner david@fromorbit.com From stan@hardwarefreak.com Sat Jun 4 20:31:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_48 autolearn=no version=3.4.0-r929098 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 p551Vnql123097 for ; Sat, 4 Jun 2011 20:31:50 -0500 X-ASG-Debug-ID: 1307237508-6a9d02780000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from greer.hardwarefreak.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1B9E649EAF2 for ; Sat, 4 Jun 2011 18:31:48 -0700 (PDT) Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id MBMEBeB3xNKcwo71 for ; Sat, 04 Jun 2011 18:31:48 -0700 (PDT) Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id CC73E6C189; Sat, 4 Jun 2011 20:31:47 -0500 (CDT) Message-ID: <4DEADC80.8000200@hardwarefreak.com> Date: Sat, 04 Jun 2011 20:31:44 -0500 From: Stan Hoeppner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Dave Chinner CC: Paul Anderson , Christoph Hellwig , xfs-oss X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general References: <20110603004247.GA28043@infradead.org> <20110603013948.GX561@dastard> <4DE9E97D.30500@hardwarefreak.com> <20110604103247.GG561@dastard> <4DEA2106.5000900@hardwarefreak.com> <20110604231032.GM32466@dastard> In-Reply-To: <20110604231032.GM32466@dastard> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1307237509 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0262 1.0000 -1.8511 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.15 X-Barracuda-Spam-Status: No, SCORE=-1.15 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=COMMA_SUBJECT, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65527 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' 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 On 6/4/2011 6:10 PM, Dave Chinner wrote: > On Sat, Jun 04, 2011 at 07:11:50AM -0500, Stan Hoeppner wrote: >> So, would delayed logging have possibly prevented his hang problem or >> no? I always read your replies at least twice, and I don't recall you >> touching on delayed logging in this thread. If you did and I missed it, >> my apologies. > > It might, but I delayed logging iÑ› not he solution to every problem, > and NFS servers are notoriously heavy on log forces due to COMMIT > operations during writes. So it's a good bet that delyed logging > won't fix the problem entirely. So the solution in this case will likely require a multi pronged approach, including XFS optimization, and RAID card and/or RAID level reconfiguration that has been mentioned. >> Do you believe MLC based SSDs are simply never appropriate for anything >> but consumer use, and that only SLC devices should be used for real >> storage applications? AIUI SLC flash cells do have about a 10:1 greater >> lifetime than MLC cells. However, there have been a number of >> articles/posts demonstrating math which shows a current generation >> SandForce based MLC SSD, under a constant 100MB/s write stream, will run >> for 20+ years, IIRC, before sufficient live+reserved spare cells burn >> out to cause hard write errors, thus necessitating drive replacement. >> Under your 500MB/s load, assuming that's constant, the drives would >> theoretically last 4+ years. If that 500MB/s load was only for 12 hours >> each day, the drives would last 8+ years. I wish I had one of those >> articles bookmarked... > > That's the theory, anyway. Let's call it an expected 4 year life > cycle under this workload (which is highly optimistic, IMO). Now you > have two drives in RAID1, that means one will fail in 2 years, or if > you need more drives to sustain that performance the log needs (*) > you might be looking at 4 or more drives, and that brings the expet > failure rate down under one drive per year. Multiply that across > 5-10 servers, and that's a drive failure every month just on the log > devices. Very good point. I was looking at single system probabilities instead of farm scale (shame on me for that newbish oversight). > That failure rate would make me extremely nervous - losing the log > is a -major- filesystem corruption event - and make me want to spend > more money or change the config to reduce the risk of a double > failure causing the log device to be lost. Especially if there are > hundreds of terabytes of data at risk. > Cheers, > > Dave. > > (*) You have to consider that sustained workloads mean that the > drives don't get idle time to trigger background garbage collection, > which is one of the key features that current consumer level drives > rely on for maintaining performance and even wear levelling. The > "spare" area in the drives is kept small because it is assumed that > there won't be long term sustained IO so that the garbage collection > can clean up before spare area is exhausted. > > Enterprise drives have a much larger relative percentage of flash in > the drive reserved as spare to avoid severe degradation in such > sustained (common enterprise) workloads. Hence performance on > consumer MLC drives tails off much more quickly than SLC drives. Ahh, I didn't realize the SLC drives have much larger reserved areas. Shame on me again. A hardwarefreak should know such things. :( > Hence performance on consumer MLC drives may not be sustainable, and > wear leveling may not be optimal, resulting in flash failure earlier > than you expect. To maintain performance, you'll need more MLC > drives to maintain baseline performance. And with more drives, the > chance of failure goes up... Are the enterprise SLC drives able to perform garbage collection etc while under such constant load? If not, is it always better to use SRDs for the log, either internal on a BBWC array, or an external mirrored pair? I previously mentioned I always read your posts twice. You are a deep well of authoritative information and experience. Keep up the great work and contribution to the knowledge base of this list. -- Stan From viro@ftp.linux.org.uk Sun Jun 5 06:12:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p55BCesS154356 for ; Sun, 5 Jun 2011 06:12:40 -0500 X-ASG-Debug-ID: 1307272353-556400250000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ZenIV.linux.org.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DEFA716625D2 for ; Sun, 5 Jun 2011 04:12:33 -0700 (PDT) Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id bR7DwinobNrc768f for ; Sun, 05 Jun 2011 04:12:33 -0700 (PDT) Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1QTBFv-0003tm-UZ; Sun, 05 Jun 2011 11:12:31 +0000 Date: Sun, 5 Jun 2011 12:12:31 +0100 From: Al Viro To: xfs@oss.sgi.com Cc: linux-kernel@vger.kernel.org X-ASG-Orig-Subj: [PATCH] fix ->mknod() return value on xfs_get_acl() failure Subject: [PATCH] fix ->mknod() return value on xfs_get_acl() failure Message-ID: <20110605111231.GD11521@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1307272354 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65543 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 ->mknod() should return negative on errors and PTR_ERR() gives already negative value... Signed-off-by: Al Viro --- diff --git a/fs/xfs/linux-2.6/xfs_iops.c b/fs/xfs/linux-2.6/xfs_iops.c index dd21784..d44d92c 100644 --- a/fs/xfs/linux-2.6/xfs_iops.c +++ b/fs/xfs/linux-2.6/xfs_iops.c @@ -182,7 +182,7 @@ xfs_vn_mknod( if (IS_POSIXACL(dir)) { default_acl = xfs_get_acl(dir, ACL_TYPE_DEFAULT); if (IS_ERR(default_acl)) - return -PTR_ERR(default_acl); + return PTR_ERR(default_acl); if (!default_acl) mode &= ~current_umask(); From mw@dermichi.com Sun Jun 5 11:24:08 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p55GO8Kw167864 for ; Sun, 5 Jun 2011 11:24:08 -0500 X-ASG-Debug-ID: 1307291046-0234023e0000-w1Z2WR 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 82C595186D5 for ; Sun, 5 Jun 2011 09:24:06 -0700 (PDT) Received: from firestarter.dermichi.com (firestarter.dermichi.com [78.41.115.230]) by cuda.sgi.com with ESMTP id OkOzJVyV71lP0AEM for ; Sun, 05 Jun 2011 09:24:06 -0700 (PDT) Received: from 80-123-16-100.adsl.highway.telekom.at ([80.123.16.100] helo=[192.168.16.15]) by firestarter.dermichi.com with esmtpsa (TLSv1:CAMELLIA256-SHA:256) (Exim 4.76) (envelope-from ) id 1QTG7O-0001w2-CB; Sun, 05 Jun 2011 18:24:02 +0200 Message-ID: <4DEBAD9F.5020009@dermichi.com> Date: Sun, 05 Jun 2011 18:23:59 +0200 From: Michael Weissenbacher User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110424 Thunderbird/3.1.10 MIME-Version: 1.0 To: prad CC: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: altering defaults Subject: Re: altering defaults References: <8762onaq19.fsf@psinom.home> In-Reply-To: <8762onaq19.fsf@psinom.home> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: firestarter.dermichi.com[78.41.115.230] X-Barracuda-Start-Time: 1307291047 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0555 1.0000 -1.6653 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.67 X-Barracuda-Spam-Status: No, SCORE=-1.67 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65564 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 Prad! > on the other hand, i've also come across webpages which say don't mess > around! keep the defaults as they are unless you are absolutely sure > that changing it suits your purpose and know why. > I would do it exactly that way. XFS works reasonably well for all ordinary things with the defaults (under the assumption that you are using a reasonably up-to-date version of xfsprogs i.e. mkfs.xfs) and you shouldn't fiddle with them unless you have very good reasons doing so. Considering your current load on the server it shouldn't matter at all and staying with the defaults is also a good way to ensure people will be able to reproduce problems and help you in case you run into problems. Just my 2cents cheers, Michael From biztaya11@gmail.com Sun Jun 5 20:36:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.5 required=5.0 tests=BAYES_50,FREEMAIL_FROM, T_LOTS_OF_MONEY,URIBL_BLACK autolearn=no version=3.4.0-r929098 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 p561aoSK192222 for ; Sun, 5 Jun 2011 20:36:50 -0500 X-ASG-Debug-ID: 1307324208-06a0008c0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp-10.star.net.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id A2CFC518DE2 for ; Sun, 5 Jun 2011 18:36:49 -0700 (PDT) Received: from smtp-10.star.net.uk (smtp-10.star.net.uk [212.125.75.79]) by cuda.sgi.com with SMTP id TNKceJIQf7yfmG2X for ; Sun, 05 Jun 2011 18:36:49 -0700 (PDT) Received: (qmail 10201 invoked from network); 6 Jun 2011 01:36:47 -0000 Received: from unknown (HELO grub2.servers.bitc.org.uk) (62.231.129.182) by smtp-10.star.net.uk with SMTP; 6 Jun 2011 01:36:47 -0000 Received: from localhost ([127.0.0.1] helo=grub3.servers.bitc.org.uk) by grub2.servers.bitc.org.uk with esmtp (Exim 4.63) (envelope-from ) id 1QTOkI-0001hW-HJ for linux-xfs@oss.sgi.com; Mon, 06 Jun 2011 02:36:46 +0100 Date: Mon, 6 Jun 2011 02:36:46 +0100 (BST) From: Randolf To: Friend Message-ID: <14745663.44255671307324206529.JavaMail.cfusion@127.0.0.1> X-ASG-Orig-Subj: BITC Diversity webpage recommendation Subject: BITC Diversity webpage recommendation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Mailer: ColdFusion 8 Application Server X-Barracuda-Connect: smtp-10.star.net.uk[212.125.75.79] X-Barracuda-Start-Time: 1307324209 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4389 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.2.65600 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, What if I told you there was a secret combination of keys which you could press and something amazing would happen? Well, what if I told you there exists a combination of keys that if you press in a certain way will generate you at least $23,654 per day? Sceptical? I was too until I saw this! http://netonlinebiz.co.cc/nmo2.php?e=linux-xfs@oss.sgi.com Thank me later, Randolf To unsubscribe please click the link below: http://netonlinebiz.co.cc/un.php?e=linux-xfs@oss.sgi.com http://www.bitcdiversity.org.uk/go.rm?id=2333 From support@marketingbiz.com Sun Jun 5 20:58:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_20 autolearn=ham version=3.4.0-r929098 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 p561wPZk192871 for ; Sun, 5 Jun 2011 20:58:25 -0500 X-ASG-Debug-ID: 1307325187-0c7c00c40000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from omr11.networksolutionsemail.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3E8CC518D4B for ; Sun, 5 Jun 2011 18:53:07 -0700 (PDT) Received: from omr11.networksolutionsemail.com (omr11.networksolutionsemail.com [205.178.146.61]) by cuda.sgi.com with ESMTP id Ape2ADZqN9J32F5e for ; Sun, 05 Jun 2011 18:53:07 -0700 (PDT) Received: from cm-omr8 (mail.networksolutionsemail.com [205.178.146.50]) by omr11.networksolutionsemail.com (8.13.6/8.13.6) with ESMTP id p561r7Dm004217 for ; Sun, 5 Jun 2011 21:53:07 -0400 Authentication-Results: cm-omr8 smtp.user=support@marketingbiz.com; auth=pass (LOGIN) X-Authenticated-UID: support@marketingbiz.com Received: from [112.201.240.140] ([112.201.240.140:10461] helo=192.168.1.101) by cm-omr8 (envelope-from ) (ecelerity 2.2.2.41 r(31179/31189)) with ESMTPA id 70/9E-24574-1033CED4; Sun, 05 Jun 2011 21:53:06 -0400 Date: Mon, 6 Jun 2011 01:52:59 +0000 To: linux-xfs@oss.sgi.com From: Wealth Builder Reply-To: Wealth Builder X-ASG-Orig-Subj: It's gone tomorrow... Subject: It's gone tomorrow... Message-ID: X-Priority: 3 X-Mailer: PHPMailer [version 1.72] MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="iso-8859-1" X-Barracuda-Connect: omr11.networksolutionsemail.com[205.178.146.61] X-Barracuda-Start-Time: 1307325188 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5172 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.2.65602 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 Got some good news, and bad news for you today, Good news: I can still sneak you in! This is your ultimate escape... http://iwealth005.co.cc/affmcmx.php?e=linux-xfs@oss.sgi.com ...the last 4 days alone this system freed 237 people like you from their boring 9-18:00 Day-Job and they are already cashing in BIG bucks! Now it's your turn to rake in some serious cash from this: http://iwealth005.co.cc/affmcmx.php?e=linux-xfs@oss.sgi.com Bad news: just got off the phone with the guy behind this craziness, and he told me it's almost OVER! They have 13 more spots open. Don't miss out on the best opportunity of 2011: http://iwealth005.co.cc/affmcmx.php?e=linux-xfs@oss.sgi.com Sincerely, Wealth Builder Removal link: http://iwealth005.co.cc/un.php?e=linux-xfs@oss.sgi.com From sandeen@sandeen.net Sun Jun 5 22:47:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p563lmGA200129 for ; Sun, 5 Jun 2011 22:47:48 -0500 X-ASG-Debug-ID: 1307332065-02b900090000-w1Z2WR 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 5FF041662030 for ; Sun, 5 Jun 2011 20:47:45 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id ZSVzicCGTgALii07 for ; Sun, 05 Jun 2011 20:47:45 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 4882A4964601; Sun, 5 Jun 2011 22:47:45 -0500 (CDT) Message-ID: <4DEC4DE0.5090503@sandeen.net> Date: Sun, 05 Jun 2011 22:47:44 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: prad CC: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: altering defaults Subject: Re: altering defaults References: <8762onaq19.fsf@psinom.home> In-Reply-To: <8762onaq19.fsf@psinom.home> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1307332066 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0207 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA085 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65609 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 BSF_SC0_SA085 Custom Rule SA085 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 6/3/11 10:33 AM, prad wrote: > i'm new to xfs (courtesy of most helpful and encouraging commentary by > stan hoeppner!) and i've seen some advice which says to make the > block size -> 512 > directory size -> 4096 > > on the other hand, i've also come across webpages which say don't mess > around! keep the defaults as they are unless you are absolutely sure > that changing it suits your purpose and know why. Yup. See "Q: I want to tune my XFS filesystems for " http://xfs.org/index.php/XFS_FAQ#Q:_I_want_to_tune_my_XFS_filesystems_for_.3Csomething.3E > my question is for the data storage area on a web/email server. we're > mainly going to have small files there and the email part will have only > temporary files for the most part since people will download (ie pop). > > it makes sense to make the block size = 512, but i wonder if it really > matters noticeably. the server is not a heavily visited one and only on > very rare occasions will we get around 50000 hits/day - most of the time > we're looking at under 10000 and that is with all the domains combined. If space efficiency is a consideration then smaller blocksizes might be useful. Not so much for hits per day, but for how many files you expect to store at any one time; you'll waste ((blocksize / 2) * nr files) on average. -Eric From michael.monnerie@is.it-management.at Mon Jun 6 02:29:13 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p567TDZj212734 for ; Mon, 6 Jun 2011 02:29:13 -0500 X-ASG-Debug-ID: 1307345350-7fd802ad0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv14.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4A12D16A3DF6 for ; Mon, 6 Jun 2011 00:29:10 -0700 (PDT) Received: from mailsrv14.zmi.at (mailsrv1.zmi.at [212.69.164.54]) by cuda.sgi.com with ESMTP id a6nmBnQSK8vvJfqB for ; Mon, 06 Jun 2011 00:29:10 -0700 (PDT) Received: from mailsrv.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 mailsrv14.zmi.at (Postfix) with ESMTPSA id 2ED5217C; Mon, 6 Jun 2011 09:29:09 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.72.27.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv.i.zmi.at (Postfix) with ESMTPSA id 5CDD4401C33; Mon, 6 Jun 2011 09:29:07 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general Date: Mon, 6 Jun 2011 09:29:01 +0200 User-Agent: KMail/1.13.6 (Linux/2.6.38.6-zmi; KDE/4.6.0; x86_64; ; ) Cc: Peter Grandi References: <19945.24042.711472.158523@tree.ty.sabi.co.UK> In-Reply-To: <19945.24042.711472.158523@tree.ty.sabi.co.UK> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart3157995.l45fAgWuT4"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <201106060929.06814@zmi.at> X-Barracuda-Connect: mailsrv1.zmi.at[212.69.164.54] X-Barracuda-Start-Time: 1307345351 X-Barracuda-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.2.65624 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 --nextPart3157995.l45fAgWuT4 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable On Samstag, 4. Juni 2011 Peter Grandi wrote: > vm/dirty_ratio=3D2 > vm/dirty_bytes=3D400000000 >=20 > vm/dirty_background_ratio=3D60 > vm/dirty_background_bytes=3D0 >=20 > vm/dirty_expire_centisecs=3D200 > vm/dirty_writeback_centisecs=3D400 Why dirty_background_ratio=3D60? This would mean you start to write dirty=20 pages only after it reaches 60% of total system memory... Setting it to=20 =3D1 would be the thing you want I guess. Also, setting both dirty_background_(ratio|bytes) is not supported. The=20 latter wins, according to sysctl/vm.txt Similarly, dirty_ratio and dirty_bytes belong together and exclude each=20 other. Maybe you specified both to fit older and newer kernels in one=20 example? dirty_expire_centisecs to 200 means a sync every 2s, which might be good=20 in this specific setup mentioned here, but not for a generic server.=20 That would defeat XFS's in-memory grouping of blocks before writeout,=20 and in case of many parallel (slow|ftp) uploads could lead to much more=20 data fragmentation, or no? =2D-=20 mit freundlichen Gr=FCssen, Michael Monnerie, Ing. BSc it-management Internet Services: Prot=E9ger http://proteger.at [gesprochen: Prot-e-schee] Tel: +43 660 / 415 6531 // Haus zu verkaufen: http://zmi.at/langegg/ --nextPart3157995.l45fAgWuT4 Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) iEYEABECAAYFAk3sgcIACgkQzhSR9xwSCbSFlgCdE7uBglNfxsBIxydx51KrPz7/ 0+8AoLF1FS4tQ+Syo6fVB78x6DVmS1TF =EbKb -----END PGP SIGNATURE----- --nextPart3157995.l45fAgWuT4-- From BATV+9ec50ba433169279d00a+2843+infradead.org+hch@bombadil.srs.infradead.org Mon Jun 6 10:01:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p56F1Wq9236547 for ; Mon, 6 Jun 2011 10:01:32 -0500 X-ASG-Debug-ID: 1307372486-65ac00810000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DAEB04A1CE0 for ; Mon, 6 Jun 2011 08:01:26 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id rhhIObdySeHLuQgO for ; Mon, 06 Jun 2011 08:01:26 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QTbIz-0005n8-Kx; Mon, 06 Jun 2011 15:01:25 +0000 Date: Mon, 6 Jun 2011 11:01:25 -0400 From: Christoph Hellwig To: Al Viro Cc: xfs@oss.sgi.com, linux-kernel@vger.kernel.org X-ASG-Orig-Subj: Re: [PATCH] fix ->mknod() return value on xfs_get_acl() failure Subject: Re: [PATCH] fix ->mknod() return value on xfs_get_acl() failure Message-ID: <20110606150125.GA22236@infradead.org> References: <20110605111231.GD11521@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110605111231.GD11521@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1307372486 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65654 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Sun, Jun 05, 2011 at 12:12:31PM +0100, Al Viro wrote: > ->mknod() should return negative on errors and PTR_ERR() gives > already negative value... Indeed. Thanks for the patch. From BATV+9ec50ba433169279d00a+2843+infradead.org+hch@bombadil.srs.infradead.org Mon Jun 6 10:03:28 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p56F3SjT236611 for ; Mon, 6 Jun 2011 10:03:28 -0500 X-ASG-Debug-ID: 1307372607-6d9200000000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B17B24A1E09 for ; Mon, 6 Jun 2011 08:03:27 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id NrkWqXBdIbHTKQXG for ; Mon, 06 Jun 2011 08:03:27 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QTbKt-0005qY-4Y; Mon, 06 Jun 2011 15:03:23 +0000 Date: Mon, 6 Jun 2011 11:03:23 -0400 From: Christoph Hellwig To: Allison Henderson Cc: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Re: Fwd: [XFSTEST Add Fallocate Punch Hole Tests 1/3 v4] Add Punch Hole to FSX Subject: Re: Fwd: [XFSTEST Add Fallocate Punch Hole Tests 1/3 v4] Add Punch Hole to FSX Message-ID: <20110606150323.GB22236@infradead.org> References: <4DE93268.90007@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DE93268.90007@linux.vnet.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1307372607 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65654 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 Btw, you mails are basically unreadable to me. There doesn't seem to be any threading context, and they all have your reply on top with a full quote. Please try again with a submission from a saner mailer, and all important context information included in the [PATCH 0/n] mail. From sgi-linux-xfs@lo.gmane.org Mon Jun 6 11:30:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p56GU9xw239264 for ; Mon, 6 Jun 2011 11:30:12 -0500 X-ASG-Debug-ID: 1307377806-5d8903610000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lo.gmane.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D96971E3F447 for ; Mon, 6 Jun 2011 09:30:06 -0700 (PDT) Received: from lo.gmane.org (lo.gmane.org [80.91.229.12]) by cuda.sgi.com with ESMTP id 60bc7fBZzaLmKIXm for ; Mon, 06 Jun 2011 09:30:06 -0700 (PDT) Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1QTcgn-0007kJ-Ac for linux-xfs@oss.sgi.com; Mon, 06 Jun 2011 18:30:05 +0200 Received: from s0106000acd1d509c.du.shawcable.net ([70.67.174.161]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 06 Jun 2011 18:30:05 +0200 Received: from prad by s0106000acd1d509c.du.shawcable.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 06 Jun 2011 18:30:05 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: linux-xfs@oss.sgi.com From: prad X-ASG-Orig-Subj: Re: altering defaults Subject: Re: altering defaults Date: Mon, 06 Jun 2011 09:26:27 -0700 Lines: 17 Message-ID: <871uz7lydo.fsf@psinom.home> References: <8762onaq19.fsf@psinom.home> <4DEC4DE0.5090503@sandeen.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: s0106000acd1d509c.du.shawcable.net User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) Cancel-Lock: sha1:/voFZdApuY6Jgba7QDWrxraSpGI= X-Barracuda-Connect: lo.gmane.org[80.91.229.12] X-Barracuda-Start-Time: 1307377806 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65660 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 writes: > If space efficiency is a consideration then smaller blocksizes might > be useful. Not so much for hits per day, but for how many files you > expect to store at any one time; you'll waste ((blocksize / 2) * nr > files) on average. > space is not likely an issue at all. if there is no efficiency issue the usage of 4096 bytes hardly seems significant. so thx eric and michael for your input on this! we'll leave things alone. :D -- in friendship, prad From achender@vnet.ibm.com Mon Jun 6 12:41:52 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p56Hfqq3241457 for ; Mon, 6 Jun 2011 12:41:52 -0500 X-ASG-Debug-ID: 1307382111-6eba03150000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e2.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C3A561E3FDE3 for ; Mon, 6 Jun 2011 10:41:51 -0700 (PDT) Received: from e2.ny.us.ibm.com (e2.ny.us.ibm.com [32.97.182.142]) by cuda.sgi.com with ESMTP id bsahIFHLiYH1GNxr for ; Mon, 06 Jun 2011 10:41:51 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay07.pok.ibm.com (d01relay07.pok.ibm.com [9.56.227.147]) by e2.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p56HLTRA009057 for ; Mon, 6 Jun 2011 13:21:29 -0400 Received: from d01av01.pok.ibm.com (d01av01.pok.ibm.com [9.56.224.215]) by d01relay07.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p56Hfi5B446596 for ; Mon, 6 Jun 2011 13:41:45 -0400 Received: from d01av01.pok.ibm.com (loopback [127.0.0.1]) by d01av01.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p56HfimR002765 for ; Mon, 6 Jun 2011 13:41:44 -0400 Received: from lc4eb0185863151.ibm.com ([9.65.20.255]) by d01av01.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p56HffUf002635; Mon, 6 Jun 2011 13:41:42 -0400 Message-ID: <4DED1155.4060503@vnet.ibm.com> Date: Mon, 06 Jun 2011 10:41:41 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Christoph Hellwig CC: Allison Henderson , linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Re: Fwd: [XFSTEST Add Fallocate Punch Hole Tests 1/3 v4] Add Punch Hole to FSX Subject: Re: Fwd: [XFSTEST Add Fallocate Punch Hole Tests 1/3 v4] Add Punch Hole to FSX References: <4DE93268.90007@linux.vnet.ibm.com> <20110606150323.GB22236@infradead.org> In-Reply-To: <20110606150323.GB22236@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e2.ny.us.ibm.com[32.97.182.142] X-Barracuda-Start-Time: 1307382111 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 06/06/2011 08:03 AM, Christoph Hellwig wrote: > Btw, you mails are basically unreadable to me. There doesn't seem to be > any threading context, and they all have your reply on top with a full > quote. Please try again with a submission from a saner mailer, and all > important context information included in the [PATCH 0/n] mail. Sorry about that, does this reply look better? I realized that I needed to send the patch to more lists than just xfs, so I forwarded the set and the discussions. I think the forwarding might have been what broke the threading, and I can turn off the full quote. If this reply looks ok, I can resend the set and just collapse down the questions into a [PATCH 0/n] email. Thx! From BATV+9ec50ba433169279d00a+2843+infradead.org+hch@bombadil.srs.infradead.org Mon Jun 6 14:35:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p56JYxWR248527 for ; Mon, 6 Jun 2011 14:35:02 -0500 X-ASG-Debug-ID: 1307388891-0cf901420000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0BA6615DE2EE for ; Mon, 6 Jun 2011 12:34:51 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id CXwx9cBvc1p7bsoN for ; Mon, 06 Jun 2011 12:34:51 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QTfZb-0002l3-4m; Mon, 06 Jun 2011 19:34:51 +0000 Date: Mon, 6 Jun 2011 15:34:51 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org X-ASG-Orig-Subj: XFS status update for May 2011 Subject: XFS status update for May 2011 Message-ID: <20110606193451.GA9800@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1307388896 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65670 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 May finally saw the release of Linux 2.6.39, which was a little more calm than usual for XFS, and only contains about half the amount of the changes we are used to see: 58 files changed, 1660 insertions(+), 1912 deletions(-) The most visible change is an overhaul of the XFS-internal interfaces to print kernel messages, which makes all messages from XFS look slightly different from before by always providing information about which device these messages relate to. In addition to that support for the RT subvolume, which had been broken for a while has been resurrect, the XFS buffer cache switched away from using the Linux pagecache to improve performance on metadata intensive workloads, and all but one of the XFS kernel threads have been switched to the new concurrent managed workqueue infrastructure that is present in more recent Linux 2.6 releases. In the meantime development for the release now known as Linux 3.0 went ahead full steam up to the merge of the XFS tree into Linux 3.0-rc1. News in that release contain support for vastly improved busy extent tracking, support for online discard (aka TRIM) and the usual amount of bug fixes. On the user space side the xfsprogs saw a fix for a corner case in xfs_repair, and xfstests saw a few bug fixes as well as a new test case to test btrfs-specific functionality. From achender@vnet.ibm.com Mon Jun 6 18:32:31 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p56NWV1B256214 for ; Mon, 6 Jun 2011 18:32:31 -0500 X-ASG-Debug-ID: 1307403149-3bd802570000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e5.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C8FD116B17AA for ; Mon, 6 Jun 2011 16:32:30 -0700 (PDT) Received: from e5.ny.us.ibm.com (e5.ny.us.ibm.com [32.97.182.145]) by cuda.sgi.com with ESMTP id LkoDDJO60IO5I4hD for ; Mon, 06 Jun 2011 16:32:30 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay07.pok.ibm.com (d01relay07.pok.ibm.com [9.56.227.147]) by e5.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p56N4sLQ014632 for ; Mon, 6 Jun 2011 19:04:54 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay07.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p56NWToM1052858 for ; Mon, 6 Jun 2011 19:32:29 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p56NWS3v003901 for ; Mon, 6 Jun 2011 19:32:28 -0400 Received: from lc4eb0185863151.ibm.com (sig-9-65-175-246.mts.ibm.com [9.65.175.246]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p56NWRlx003865; Mon, 6 Jun 2011 19:32:28 -0400 Message-ID: <4DED638B.3080806@vnet.ibm.com> Date: Mon, 06 Jun 2011 16:32:27 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: [PATCH 0/3 v5] XFS TESTS: Add Fallocate Punch Hole Tests Subject: [PATCH 0/3 v5] XFS TESTS: Add Fallocate Punch Hole Tests Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e5.ny.us.ibm.com[32.97.182.145] X-Barracuda-Start-Time: 1307403150 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 Hi All, Here is v5 of the punch hole tests that I have been working with Dave on. In v4 I merged in the non over-lapping tests from v3 into 252, and I separated the code paths for punch hole and fallocate in the fsx patch. In v5, patch 1 was re based to the latest xfstests code due to activity that had caused the patch to not apply. I've also included the ENOSPC test that we used in the ext4 punch hole tests. Some things I need some feedback on: Ext4 is currently having a hard time passing xfstest 252, test number 12. The test is: $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$alloc_cmd 0 20k" \ -c "pwrite 8k 4k" -c "fsync" \ -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ]&& die_now and the output is: 12. unwritten -> data -> unwritten 0: [0..7]: unwritten 1: [8..31]: hole 2: [32..39]: unwritten Ext4 gets data extents here instead of unwritten extents. I did some investigating and it looks like the fsync command causes the extents to be written out before the punch hole operation even starts. I believe what happens is that when an unwritten extent gets written to, it doesnt always split the extent. If the extent is small enough, then it just zeros out the portions that are not written to, and the whole extent becomes a written extent. Im not sure if that is incorrect or if we need to change the test to not compare the extent types. Also, we had a test for ext4 punch hole that tests to see if a hole can still be punched when the disk is full. The test has been modified to use the xfsprogs facilities to fit the xfstests framework, but has become very slow. I found that if I replace the line: $XFS_IO_PROG -F -f -c "pwrite 0 $file_size" $dir/$file_count.bin&> /dev/null with the original code: dd if=/dev/zero of=$dir/$file_count.bin bs=$file_size count=1 &> /dev/null it becomes a lot faster (takes off almost 15 minutes). Is there anything we can do to improve the xfsprogs command? Thx! Allison Henderson From achender@vnet.ibm.com Mon Jun 6 18:33:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_64,J_CHICKENPOX_66,J_CHICKENPOX_92 autolearn=no version=3.4.0-r929098 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 p56NXeAF256234 for ; Mon, 6 Jun 2011 18:33:41 -0500 X-ASG-Debug-ID: 1307403219-398a025b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e8.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3B0D115DE67D for ; Mon, 6 Jun 2011 16:33:39 -0700 (PDT) Received: from e8.ny.us.ibm.com (e8.ny.us.ibm.com [32.97.182.138]) by cuda.sgi.com with ESMTP id TMcMMF2T2EvAUQ33 for ; Mon, 06 Jun 2011 16:33:39 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay06.pok.ibm.com (d01relay06.pok.ibm.com [9.56.227.116]) by e8.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p56NMZv9015252 for ; Mon, 6 Jun 2011 19:22:35 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay06.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p56NXcMs1253468 for ; Mon, 6 Jun 2011 19:33:38 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p56NXcqe007292 for ; Mon, 6 Jun 2011 19:33:38 -0400 Received: from lc4eb0185863151.ibm.com (sig-9-65-175-246.mts.ibm.com [9.65.175.246]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p56NXb7h007261; Mon, 6 Jun 2011 19:33:37 -0400 Message-ID: <4DED63D1.5010600@vnet.ibm.com> Date: Mon, 06 Jun 2011 16:33:37 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: [PATCH 1/3 v5] XFS TESTS: Add Punch Hole to FSX Subject: [PATCH 1/3 v5] XFS TESTS: Add Punch Hole to FSX Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e8.ny.us.ibm.com[32.97.182.138] X-Barracuda-Start-Time: 1307403220 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 patch adds punch hole tests to the fsx stress test. Signed-off-by: Allison Henderson v1 -> v2: Corrections to the Makefile have been backed out. This patch needs to be applied on top of the "xfstests: clean up fallocate configuration tests" patch The punch hole tests can be disabled with the -H flag, and will also be disabled if it is detected that the filesystem does not support punch hole v2 -> v4 Punch hole tests and functionality tests have been moved into their own functions. Existing dofallocate routine has been renamed to do_preallocate. v4 -> v5 The code to test fallocate functionality changed slightly, so the patch has been updated to apply with out err --- :100644 100644 0eebc70... 0683853... M ltp/fsx.c ltp/fsx.c | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 124 insertions(+), 19 deletions(-) diff --git a/ltp/fsx.c b/ltp/fsx.c index 0eebc70..0683853 100644 --- a/ltp/fsx.c +++ b/ltp/fsx.c @@ -69,6 +69,7 @@ int logcount = 0; /* total ops */ #define OP_MAPWRITE 6 #define OP_SKIPPED 7 #define OP_FALLOCATE 8 +#define OP_PUNCH_HOLE 9 #undef PAGE_SIZE #define PAGE_SIZE getpagesize() @@ -110,6 +111,7 @@ int randomoplen = 1; /* -O flag disables it */ int seed = 1; /* -S flag */ int mapped_writes = 1; /* -W flag disables */ int fallocate_calls = 1; /* -F flag disables */ +int punch_hole_calls = 1; /* -H flag disables */ int mapped_reads = 1; /* -R flag disables it */ int fsxgoodfd = 0; int o_direct; /* -Z */ @@ -279,6 +281,14 @@ logdump(void) badoff < lp->args[0] + lp->args[1]) prt("\t******FFFF"); break; + case OP_PUNCH_HOLE: + prt("PUNCH HOLE\t0x%x thru 0x%x\t(0x%x bytes)", + lp->args[0], lp->args[0] + lp->args[1] - 1, + lp->args[1]); + if (badoff >= lp->args[0] && badoff < + lp->args[0] + lp->args[1]) + prt("\t******PPPP"); + break; case OP_SKIPPED: prt("SKIPPED (no operation)"); break; @@ -784,10 +794,67 @@ dotruncate(unsigned size) } } +#ifdef FALLOC_FL_PUNCH_HOLE +void +do_punch_hole(unsigned offset, unsigned length) +{ + unsigned end_offset; + int max_offset = 0; + int max_len = 0; + int mode = FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE; + + if (length == 0) { + if (!quiet && testcalls > simulatedopcount) + prt("skipping zero length punch hole\n"); + log4(OP_SKIPPED, OP_PUNCH_HOLE, offset, length); + return; + } + + if (file_size <= (loff_t)offset) { + if (!quiet && testcalls > simulatedopcount) + prt("skipping hole punch off the end of the file\n"); + log4(OP_SKIPPED, OP_PUNCH_HOLE, offset, length); + return; + } + + end_offset = offset + length; + + log4(OP_PUNCH_HOLE, offset, length, 0); + + if (testcalls <= simulatedopcount) + return; + + if ((progressinterval && testcalls % progressinterval == 0) || + (debug && (monitorstart == -1 || monitorend == -1 || + end_offset <= monitorend))) { + prt("%lu punch\tfrom 0x%x to 0x%x, (0x%x bytes)\n", testcalls, + offset, offset+length, length); + } + if (fallocate(fd, mode, (loff_t)offset, (loff_t)length) == -1) { + prt("%punch hole: %x to %x\n", offset, length); + prterr("do_punch_hole: fallocate"); + report_failure(161); + } + + + max_offset = offset < file_size ? offset : file_size; + max_len = max_offset + length <= file_size ? length : + file_size - max_offset; + memset(good_buf + max_offset, '\0', max_len); +} + +#else +void +do_punch_hole(unsigned offset, unsigned length) +{ + return; +} +#endif + #ifdef FALLOCATE /* fallocate is basically a no-op unless extending, then a lot like a truncate */ void -dofallocate(unsigned offset, unsigned length) +do_preallocate(unsigned offset, unsigned length) { unsigned end_offset; int keep_size; @@ -831,13 +898,13 @@ dofallocate(unsigned offset, unsigned length) 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"); + prterr("do_preallocate: fallocate"); report_failure(161); } } #else void -dofallocate(unsigned offset, unsigned length) +do_preallocate(unsigned offset, unsigned length) { return; } @@ -895,8 +962,7 @@ test(void) unsigned long offset; unsigned long size = maxoplen; unsigned long rv = random(); - unsigned long op = rv % (3 + !lite + mapped_writes + fallocate_calls); - + unsigned long op = rv % (3 + !lite + mapped_writes + fallocate_calls + punch_hole_calls); /* turn off the map read if necessary */ if (op == 2 && !mapped_reads) @@ -924,6 +990,7 @@ test(void) * TRUNCATE: op = - 3 * MAPWRITE: op = 3 4 * FALLOCATE: op = - 5 + * PUNCH HOLE: op = - 6 */ if (lite ? 0 : op == 3 && (style & 1) == 0) /* vanilla truncate? */ dotruncate(random() % maxfilelen); @@ -941,7 +1008,12 @@ test(void) offset %= maxfilelen; if (offset + size > maxfilelen) size = maxfilelen - offset; - dofallocate(offset, size); + do_preallocate(offset, size); + } else if (op == 6) { + offset %= maxfilelen; + if (offset + size > maxfilelen) + size = maxfilelen - offset; + do_punch_hole(offset, size); } else if (op == 1 || op == (lite ? 3 : 4)) { /* write / mapwrite */ offset %= maxfilelen; @@ -1013,6 +1085,9 @@ usage(void) #ifdef FALLOCATE " -F: Do not use fallocate (preallocation) calls\n" #endif +#ifdef FALLOC_FL_PUNCH_HOLE +" -H: Do not use punch hole 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\ @@ -1161,6 +1236,43 @@ int aio_rw(int rw, int fd, char *buf, unsigned len, unsigned offset) #endif +void +test_fallocate() +{ +#ifdef FALLOCATE + if (!lite && fallocate_calls) { + if (fallocate(fd, 0, 0, 1) && errno == EOPNOTSUPP) { + if(!quiet) + prt("fsx: main: filesystem does not support fallocate, disabling\n"); + fallocate_calls = 0; + } else { + ftruncate(fd, 0); + } + } +#else /* ! FALLOCATE */ + fallocate_calls = 0; +#endif + +} + +void +test_punch_hole() +{ +#ifdef FALLOC_FL_PUNCH_HOLE + if (!lite && punch_hole_calls) { + if (fallocate(fd, 0, 0, + FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE) && + errno == EOPNOTSUPP) { + + warn("main: filesystem does not support fallocate punch hole, disabling"); + punch_hole_calls = 0; + } + } +#else /* ! PUNCH HOLE */ + punch_hole_calls = 0; +#endif +} + int main(int argc, char **argv) { @@ -1179,7 +1291,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:FLN:OP:RS:WZ")) + while ((ch = getopt(argc, argv, "b:c:dfl:m:no:p:qr:s:t:w:xyAD:FHLN:OP:RS:WZ")) != EOF) switch (ch) { case 'b': @@ -1276,6 +1388,9 @@ main(int argc, char **argv) case 'F': fallocate_calls = 0; break; + case 'H': + punch_hole_calls = 0; + break; case 'L': lite = 1; break; @@ -1421,18 +1536,8 @@ main(int argc, char **argv) } else check_trunc_hack(); -#ifdef FALLOCATE - if (!lite && fallocate_calls) { - if (fallocate(fd, 0, 0, 1) && errno == EOPNOTSUPP) { - if(!quiet) - prt("fsx: main: filesystem does not support fallocate, disabling\n"); - fallocate_calls = 0; - } else - ftruncate(fd, 0); - } -#else /* ! FALLOCATE */ - fallocate_calls = 0; -#endif + test_fallocate(); + test_punch_hole(); while (numops == -1 || numops--) test(); -- 1.7.1 From achender@vnet.ibm.com Mon Jun 6 18:33:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p56NXsHc256250 for ; Mon, 6 Jun 2011 18:33:54 -0500 X-ASG-Debug-ID: 1307403233-44c501800000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e9.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0F08415DE689 for ; Mon, 6 Jun 2011 16:33:53 -0700 (PDT) Received: from e9.ny.us.ibm.com (e9.ny.us.ibm.com [32.97.182.139]) by cuda.sgi.com with ESMTP id C4WiKNQTDpHyzeBd for ; Mon, 06 Jun 2011 16:33:53 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay06.pok.ibm.com (d01relay06.pok.ibm.com [9.56.227.116]) by e9.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p56N3Xj3007827 for ; Mon, 6 Jun 2011 19:03:33 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay06.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p56NXq7i1130542 for ; Mon, 6 Jun 2011 19:33:52 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p56NXq8N008129 for ; Mon, 6 Jun 2011 19:33:52 -0400 Received: from lc4eb0185863151.ibm.com (sig-9-65-175-246.mts.ibm.com [9.65.175.246]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p56NXoBZ008026; Mon, 6 Jun 2011 19:33:50 -0400 Message-ID: <4DED63DE.1070000@vnet.ibm.com> Date: Mon, 06 Jun 2011 16:33:50 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: [PATCH 2/3 v5] XFS TESTS: Expand 252 punch hole test Subject: [PATCH 2/3 v5] XFS TESTS: Expand 252 punch hole test Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e9.ny.us.ibm.com[32.97.182.139] X-Barracuda-Start-Time: 1307403234 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 patch adds additional punch hole tests to 252 that were used to test ext4 punch hole. The _test_generic_punch routine has been modified to accept two new flags: -k To keep the test file between tests. This will test the handling of existing holes -d To not sync the file between tests. This will test the handling of delayed extents Four new corner cases have also been added to the routine: 14. data -> hole @ EOF 15. data -> hole @ 0 16. data -> cache cold ->hole 17. data -> hole in single block file Signed-off-by: Allison Henderson --- :100755 100755 dfdf3f8... 5efa243... M 252 :100644 100644 cd8e4b4... 930c924... M 252.out :100644 100644 e2da5d8... ddf63b0... M common.punch 252 | 10 +++ 252.out | 192 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ common.punch | 150 ++++++++++++++++++++++++++++++++++++++------- 3 files changed, 330 insertions(+), 22 deletions(-) diff --git a/252 b/252 index dfdf3f8..5efa243 100755 --- a/252 +++ b/252 @@ -52,6 +52,16 @@ _require_xfs_io_fiemap testfile=$TEST_DIR/252.$$ +# Standard punch hole tests _test_generic_punch falloc fpunch fpunch fiemap _filter_fiemap $testfile -F +# Delayed allocation punch hole tests +_test_generic_punch -d falloc fpunch fpunch fiemap _filter_fiemap $testfile -F + +# Multi hole punch tests +_test_generic_punch -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F + +# Delayed allocation multi punch hole tests +_test_generic_punch -d -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F + status=0 ; exit diff --git a/252.out b/252.out index cd8e4b4..930c924 100644 --- a/252.out +++ b/252.out @@ -45,3 +45,195 @@ QA output created by 252 0: [0..7]: data 1: [8..31]: hole 2: [32..39]: data + 14. data -> hole @ EOF +0: [0..23]: data +1: [24..39]: hole + 15. data -> hole @ 0 +0: [0..15]: hole +1: [16..39]: data + 16. data -> cache cold ->hole +0: [0..15]: hole +1: [16..39]: data + 17. data -> hole in single block file +0: [0..7]: data + 1. into a hole + 2. into allocated space +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 3. into unwritten space +0: [0..7]: unwritten +1: [8..23]: hole +2: [24..39]: unwritten + 4. hole -> data +0: [0..23]: hole +1: [24..31]: data +2: [32..39]: hole + 5. hole -> unwritten +0: [0..23]: hole +1: [24..31]: unwritten +2: [32..39]: hole + 6. data -> hole +0: [0..7]: data +1: [8..39]: hole + 7. data -> unwritten +0: [0..7]: data +1: [8..23]: hole +2: [24..31]: unwritten +3: [32..39]: hole + 8. unwritten -> hole +0: [0..7]: unwritten +1: [8..39]: hole + 9. unwritten -> data +0: [0..7]: unwritten +1: [8..23]: hole +2: [24..31]: data +3: [32..39]: hole + 10. hole -> data -> hole + 11. data -> hole -> data +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 12. unwritten -> data -> unwritten +0: [0..7]: unwritten +1: [8..31]: hole +2: [32..39]: unwritten + 13. data -> unwritten -> data +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 14. data -> hole @ EOF +0: [0..23]: data +1: [24..39]: hole + 15. data -> hole @ 0 +0: [0..15]: hole +1: [16..39]: data + 16. data -> cache cold ->hole +0: [0..15]: hole +1: [16..39]: data + 17. data -> hole in single block file +0: [0..7]: data + 1. into a hole +0: [0..7]: data +1: [8..39]: hole + 2. into allocated space +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 3. into unwritten space +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 4. hole -> data +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 5. hole -> unwritten +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 6. data -> hole +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 7. data -> unwritten +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 8. unwritten -> hole +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 9. unwritten -> data +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 10. hole -> data -> hole +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 11. data -> hole -> data +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 12. unwritten -> data -> unwritten +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 13. data -> unwritten -> data +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 14. data -> hole @ EOF +0: [0..23]: data +1: [24..39]: hole + 15. data -> hole @ 0 +0: [0..15]: hole +1: [16..39]: data + 16. data -> cache cold ->hole +0: [0..15]: hole +1: [16..39]: data + 17. data -> hole in single block file +0: [0..7]: data + 1. into a hole +0: [0..7]: data +1: [8..39]: hole + 2. into allocated space +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 3. into unwritten space +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 4. hole -> data +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 5. hole -> unwritten +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 6. data -> hole +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 7. data -> unwritten +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 8. unwritten -> hole +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 9. unwritten -> data +0: [0..7]: data +1: [8..23]: hole +2: [24..39]: data + 10. hole -> data -> hole +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 11. data -> hole -> data +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 12. unwritten -> data -> unwritten +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 13. data -> unwritten -> data +0: [0..7]: data +1: [8..31]: hole +2: [32..39]: data + 14. data -> hole @ EOF +0: [0..23]: data +1: [24..39]: hole + 15. data -> hole @ 0 +0: [0..15]: hole +1: [16..39]: data + 16. data -> cache cold ->hole +0: [0..15]: hole +1: [16..39]: data + 17. data -> hole in single block file +0: [0..7]: data diff --git a/common.punch b/common.punch index e2da5d8..ddf63b0 100644 --- a/common.punch +++ b/common.punch @@ -256,8 +256,39 @@ die_now() # 11. data -> hole -> data # 12. unwritten -> data -> unwritten # 13. data -> unwritten -> data +# 14. data -> hole @ EOF +# 15. data -> hole @ 0 +# 16. data -> cache cold ->hole +# 17. data -> hole in single block file +# +# Test file is removed, created and sync'd between tests. +# +# Use -k flag to keep the file between tests. This will +# test the handling of pre-existing holes. +# +# Use the -d flag to not sync the file between tests. +# This will test the handling of delayed extents +# _test_generic_punch() { + + remove_testfile=1 + sync_cmd="-c fsync" + OPTIND=1 + while getopts 'dk' OPTION + do + case $OPTION in + k) remove_testfile= + ;; + d) sync_cmd= + ;; + ?) echo Invalid flag + exit 1 + ;; + esac + done + shift $(($OPTIND - 1)) + alloc_cmd=$1 punch_cmd=$2 zero_cmd=$3 #if not testing zero just set to punch @@ -267,22 +298,28 @@ _test_generic_punch() xfs_io_opt=$7 #needs to be -F if not testing xfs echo " 1. into a hole" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now echo " 2. into allocated space" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ - -c "pwrite 0 20k" -c "fsync" \ + -c "pwrite 0 20k" $sync_cmd \ -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now echo " 3. into unwritten space" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$alloc_cmd 0 20k" \ -c "$zero_cmd 4k 8k" \ @@ -290,15 +327,19 @@ _test_generic_punch() [ $? -ne 0 ] && die_now echo " 4. hole -> data" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ - -c "pwrite 8k 8k" -c "fsync" \ + -c "pwrite 8k 8k" $sync_cmd \ -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now echo " 5. hole -> unwritten" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$alloc_cmd 8k 8k" \ -c "$zero_cmd 4k 8k" \ @@ -306,24 +347,30 @@ _test_generic_punch() [ $? -ne 0 ] && die_now echo " 6. data -> hole" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ - -c "pwrite 0 8k" -c "fsync" \ + -c "pwrite 0 8k" $sync_cmd \ -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now echo " 7. data -> unwritten" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ - -c "pwrite 0 8k" -c "fsync" \ + -c "pwrite 0 8k" $sync_cmd \ -c "$alloc_cmd 8k 8k" \ -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now echo " 8. unwritten -> hole" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$alloc_cmd 0 8k" \ -c "$zero_cmd 4k 8k" \ @@ -331,49 +378,108 @@ _test_generic_punch() [ $? -ne 0 ] && die_now echo " 9. unwritten -> data" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$alloc_cmd 0 8k" \ - -c "pwrite 8k 8k" -c "fsync" \ + -c "pwrite 8k 8k" $sync_cmd \ -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now echo " 10. hole -> data -> hole" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ - -c "pwrite 8k 4k" -c "fsync" \ + -c "pwrite 8k 4k" $sync_cmd \ -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now echo " 11. data -> hole -> data" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$alloc_cmd 0 20k" \ -c "pwrite 0 8k" \ - -c "pwrite 12k 8k" -c "fsync" \ + -c "pwrite 12k 8k" $sync_cmd \ -c "$punch_cmd 8k 4k" \ -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now echo " 12. unwritten -> data -> unwritten" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$alloc_cmd 0 20k" \ - -c "pwrite 8k 4k" -c "fsync" \ + -c "pwrite 8k 4k" $sync_cmd \ -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now echo " 13. data -> unwritten -> data" - rm -f $testfile + if [ "$remove_testfile" ]; then + rm -f $testfile + fi $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$alloc_cmd 0 20k" \ - -c "pwrite 0k 8k" -c "fsync" \ + -c "pwrite 0k 8k" $sync_cmd \ -c "pwrite 12k 8k" -c "fsync" \ -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + + echo " 14. data -> hole @ EOF" + rm -f $testfile + $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ + -c "pwrite 0 20k" $sync_cmd \ + -c "$zero_cmd 12k 8k" \ + -c "$map_cmd -v" $testfile | $filter_cmd + [ $? -ne 0 ] && die_now + + echo " 15. data -> hole @ 0" + if [ "$remove_testfile" ]; then + rm -f $testfile + fi + $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ + -c "pwrite 0 20k" $sync_cmd \ + -c "$zero_cmd 0k 8k" \ + -c "$map_cmd -v" $testfile | $filter_cmd + [ $? -ne 0 ] && die_now + + echo " 16. data -> cache cold ->hole" + if [ "$remove_testfile" ]; then + rm -f $testfile + rm -f $testfile.2 + else + cp $testfile $testfile.2 + fi + $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ + -c "pwrite 8k 12k" -c "fsync" $testfile.2 \ + > /dev/null + $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ + -c "pwrite 0 20k" $sync_cmd \ + -c "$zero_cmd 0k 8k" \ + -c "fadvise -d" \ + -c "$map_cmd -v" $testfile | $filter_cmd + diff $testfile $testfile.2 + [ $? -ne 0 ] && die_now + rm -f $testfile.2 + + echo " 17. data -> hole in single block file" + if [ "$remove_testfile" ]; then + rm -f $testfile + fi + block_size=`stat -f $TEST_DEV | grep "Block size" | cut -d " " -f3` + $XFS_IO_PROG $xfs_io_opt -f -c "truncate $block_size" \ + -c "pwrite 0 $block_size" $sync_cmd \ + -c "$zero_cmd 128 128" \ + -c "$map_cmd -v" $testfile | $filter_cmd + [ $? -ne 0 ] && die_now + } -- 1.7.1 From achender@vnet.ibm.com Mon Jun 6 18:34:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p56NYWSt256273 for ; Mon, 6 Jun 2011 18:34:32 -0500 X-ASG-Debug-ID: 1307403271-730a03070000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e6.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 42D154A3E22 for ; Mon, 6 Jun 2011 16:34:31 -0700 (PDT) Received: from e6.ny.us.ibm.com (e6.ny.us.ibm.com [32.97.182.146]) by cuda.sgi.com with ESMTP id TJQImIphZRUES3CS for ; Mon, 06 Jun 2011 16:34:31 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay02.pok.ibm.com (d01relay02.pok.ibm.com [9.56.227.234]) by e6.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p56NAMXl017941 for ; Mon, 6 Jun 2011 19:10:22 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay02.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p56NYUbT434300 for ; Mon, 6 Jun 2011 19:34:30 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p56NYUdV009382 for ; Mon, 6 Jun 2011 19:34:30 -0400 Received: from lc4eb0185863151.ibm.com (sig-9-65-175-246.mts.ibm.com [9.65.175.246]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p56NYTlr009368; Mon, 6 Jun 2011 19:34:29 -0400 Message-ID: <4DED6405.7020104@vnet.ibm.com> Date: Mon, 06 Jun 2011 16:34:29 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: [PATCH 3/3 v5] XFS TESTS: Add ENOSPC Hole Punch Test Subject: [PATCH 3/3 v5] XFS TESTS: Add ENOSPC Hole Punch Test Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e6.ny.us.ibm.com[32.97.182.146] X-Barracuda-Start-Time: 1307403272 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 patch adds a test to 252 that tests that a hole can be punched even when the disk is full. Reserved blocks should be used to allow a punch hole to proceed even when there is not enough blocks to further fragment the file. To test this, the file system is fragmented by punching holes in regular intervals and filling the file system between punches. This will eventually force the file system to use reserved blocks to proceed with the punch hole operation. Signed-off-by: Allison Henderson --- :100755 100755 5efa243... b5204fe... M 252 :100644 100644 ddf63b0... fc6123c... M common.punch 252 | 12 +++++++ common.punch | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+), 0 deletions(-) diff --git a/252 b/252 index 5efa243..b5204fe 100755 --- a/252 +++ b/252 @@ -49,6 +49,7 @@ _supported_os Linux _require_xfs_io_falloc_punch _require_xfs_io_fiemap +_require_scratch testfile=$TEST_DIR/252.$$ @@ -64,4 +65,15 @@ _test_generic_punch -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F # Delayed allocation multi punch hole tests _test_generic_punch -d -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F +# Test full filesystem hole punching. +# Make a small file system to fill +umount $SCRATCH_DEV &> /dev/null +_scratch_mkfs_sized $(( 1024 * 1024 * 1024 )) &> /dev/null +_scratch_mount +# Test must be able to write files with non-root permissions +chmod 777 $SCRATCH_MNT + +block_size=`stat -f $SCRATCH_DEV | grep "Block size" | cut -d " " -f3` +_test_full_fs_punch $(( $block_size * 2 )) $block_size 500 $SCRATCH_MNT/252.$$ + status=0 ; exit diff --git a/common.punch b/common.punch index ddf63b0..fc6123c 100644 --- a/common.punch +++ b/common.punch @@ -481,5 +481,100 @@ _test_generic_punch() -c "$zero_cmd 128 128" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now +} + +# _fill_fs() +# +# Fills a file system by repeatedly creating files in the given folder +# starting with the given file size. Files are reduced in size when +# they can no longer fit untill no more files can be created. +# +# This routine is used by _test_full_fs_punch to test that a hole may +# still be punched when the disk is full by borrowing reserved blocks. +# All files are created as a non root user to prevent reserved blocks +# from being consumed. +# +_fill_fs() { + local file_size=$1 + local dir=$2 + local file_count=1 + + if [ $# -ne 2 ] + then + echo "USAGE: $0 filesize dir" + exit 1 + fi + + mkdir -p $dir &> /dev/null + if [[ $? != 0 ]] ; then + return 0 + fi + chmod 777 $dir + + rc=0 + while [ $file_size -gt 0 -a $rc == 0 ] + do + # This part must not be done as root or + # reserved blocks will be consumed + sudo -u nobody $XFS_IO_PROG -F -f -c "pwrite 0 $file_size" $dir/$file_count.bin &> /dev/null + rc=$? + + # If there was no room to make the file, + # and the file size can still be made smaller, + # then divide it in half, and keep going + if [ $file_size -gt 1 -a $rc != 0 ] + then + file_size=$(( $file_size / 2 )) + rc=0 + fi + file_count=$(( $file_count + 1 )) + + done +} +# _test_full_fs_punch() +# +# This function will test that a hole may be punched +# even when the file system is full. Reserved blocks +# should be used to allow a punch hole to proceed even +# when there is not enough blocks to further fragment the +# file. To test this, this function will fragment the file +# system by punching holes in regular intervals and filling +# the file system between punches. +# +_test_full_fs_punch() +{ + hole_len=$1 # The length of the holes to punch + hole_interval=$2 # The interval between the holes + iterations=$3 # The number of holes to punch + file_name=$4 # File to punch holes in + file_len=$(( $(( $hole_len + $hole_interval )) * $iterations )) + path=`dirname $file_name` + hole_offset=0 + + rm -f $file_name &> /dev/null + + $XFS_IO_PROG -F -f -c "pwrite 0 $file_len" \ + -c "fsync" $file_name &> /dev/null + chmod 666 $file_name + + _fill_fs $(( 1024 * 1024 * 1024 )) $path/fill + + for (( i=0; i<$iterations; i++ )) + do + # This part must not be done as root in order to + # test that reserved blocks are used when needed + sudo -u nobody $XFS_IO_PROG -F -f -c "fpunch $hole_offset $hole_len" $file_name + rc=$? + if [[ $? != 0 ]] ; then + echo Punch hole failed + break + fi + + hole_offset=$(( $hole_offset + $hole_len + $hole_interval )) + + _fill_fs $hole_len $path/fill.$i + + done } + -- 1.7.1 From tytso@thunk.org Mon Jun 6 19:44:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_66 autolearn=no version=3.4.0-r929098 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 p570iqEl257375 for ; Mon, 6 Jun 2011 19:44:53 -0500 X-ASG-Debug-ID: 1307407490-3a2303cf0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from test.thunk.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3C37615DE865 for ; Mon, 6 Jun 2011 17:44:51 -0700 (PDT) Received: from test.thunk.org (li9-11.members.linode.com [67.18.176.11]) by cuda.sgi.com with ESMTP id 9cvXpG6tdn4A2WiT for ; Mon, 06 Jun 2011 17:44:51 -0700 (PDT) Received: from root (helo=tytso-glaptop) by test.thunk.org with local-esmtp (Exim 4.69) (envelope-from ) id 1QTkPW-0003d8-UM; Tue, 07 Jun 2011 00:44:47 +0000 Received: from tytso by tytso-glaptop with local (Exim 4.71) (envelope-from ) id 1QTkPV-0004G3-SY; Mon, 06 Jun 2011 20:44:45 -0400 Date: Mon, 6 Jun 2011 20:44:45 -0400 From: "Ted Ts'o" To: Allison Henderson Cc: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Re: [PATCH 1/3 v5] XFS TESTS: Add Punch Hole to FSX Subject: Re: [PATCH 1/3 v5] XFS TESTS: Add Punch Hole to FSX Message-ID: <20110607004445.GG20818@thunk.org> References: <4DED63D1.5010600@vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DED63D1.5010600@vnet.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tytso@thunk.org X-SA-Exim-Scanned: No (on test.thunk.org); SAEximRunCond expanded to false X-Barracuda-Connect: li9-11.members.linode.com[67.18.176.11] X-Barracuda-Start-Time: 1307407491 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65692 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, Jun 06, 2011 at 04:33:37PM -0700, Allison Henderson wrote: > This patch adds punch hole tests to the fsx stress test. > > Signed-off-by: Allison Henderson > Hey Allison, there are two things you can do that will make life much easier for people to review and apply your patches. First of all, move the version information below to after the "---" line. If you want to keep this information in the git commit log, just move the "---" line after you run the "git format-patch" command. Secondly, run the command "git config format.thread true"; this is the default in newer versions of git, but apparently you're not using a new enough version of git. You can also use "git send-email --thread" if you don't want to set the git configuration variable. The other possibility is that your mailer is stripping the in-reply-to: and references: header, so the mail threading is disappearing. I never used vnet.ibm.com's mailer, so I don't know if it's responsible for stripping mail headers, but I tend not to trust VM or Lotus Notes' standard adherence... fortunately for IBM the CIO's who make the purchasing decisions tend not to know the first thing about Internet Mail Standers or RFC's. :-) - Ted > v1 -> v2: > Corrections to the Makefile have been backed out. > This patch needs to be applied on top of > the "xfstests: clean up fallocate configuration tests" > patch > > The punch hole tests can be disabled with the > -H flag, and will also be disabled if it is > detected that the filesystem does not support > punch hole > > v2 -> v4 > Punch hole tests and functionality tests have been moved > into their own functions. Existing dofallocate routine > has been renamed to do_preallocate. > > v4 -> v5 > The code to test fallocate functionality changed slightly, > so the patch has been updated to apply with out err > --- > :100644 100644 0eebc70... 0683853... M ltp/fsx.c > ltp/fsx.c | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------- > 1 files changed, 124 insertions(+), 19 deletions(-) > > diff --git a/ltp/fsx.c b/ltp/fsx.c > index 0eebc70..0683853 100644 ... From achender@vnet.ibm.com Mon Jun 6 20:41:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_21, J_CHICKENPOX_66 autolearn=no version=3.4.0-r929098 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 p571fSI4258205 for ; Mon, 6 Jun 2011 20:41:28 -0500 X-ASG-Debug-ID: 1307410888-729d02c50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e36.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5ECE24A00FF for ; Mon, 6 Jun 2011 18:41:28 -0700 (PDT) Received: from e36.co.us.ibm.com (e36.co.us.ibm.com [32.97.110.154]) by cuda.sgi.com with ESMTP id cnGSBygJaM4bi0LJ for ; Mon, 06 Jun 2011 18:41:28 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay05.boulder.ibm.com (d03relay05.boulder.ibm.com [9.17.195.107]) by e36.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p571ZWL1007802 for ; Mon, 6 Jun 2011 19:35:32 -0600 Received: from d03av06.boulder.ibm.com (d03av06.boulder.ibm.com [9.17.195.245]) by d03relay05.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p571fNpX361608 for ; Mon, 6 Jun 2011 19:41:24 -0600 Received: from d03av06.boulder.ibm.com (loopback [127.0.0.1]) by d03av06.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p571kcu7001787 for ; Mon, 6 Jun 2011 19:46:38 -0600 Received: from lc4eb0185863151.ibm.com (sig-9-65-175-246.mts.ibm.com [9.65.175.246]) by d03av06.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p571ka8M001774; Mon, 6 Jun 2011 19:46:37 -0600 Message-ID: <4DED81C1.6000204@vnet.ibm.com> Date: Mon, 06 Jun 2011 18:41:21 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: "Ted Ts'o" CC: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Re: [PATCH 1/3 v5] XFS TESTS: Add Punch Hole to FSX Subject: Re: [PATCH 1/3 v5] XFS TESTS: Add Punch Hole to FSX References: <4DED63D1.5010600@vnet.ibm.com> <20110607004445.GG20818@thunk.org> In-Reply-To: <20110607004445.GG20818@thunk.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e36.co.us.ibm.com[32.97.110.154] X-Barracuda-Start-Time: 1307410888 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 06/06/2011 05:44 PM, Ted Ts'o wrote: > Hey Allison, there are two things you can do that will make life much > easier for people to review and apply your patches. First of all, > move the version information below to after the "---" line. If you > want to keep this information in the git commit log, just move the > "---" line after you run the "git format-patch" command. > > Secondly, run the command "git config format.thread true"; this is the > default in newer versions of git, but apparently you're not using a > new enough version of git. You can also use "git send-email --thread" > if you don't want to set the git configuration variable. The other > possibility is that your mailer is stripping the in-reply-to: and > references: header, so the mail threading is disappearing. I never > used vnet.ibm.com's mailer, so I don't know if it's responsible for > stripping mail headers, but I tend not to trust VM or Lotus Notes' > standard adherence... fortunately for IBM the CIO's who make the > purchasing decisions tend not to know the first thing about Internet > Mail Standers or RFC's.:-) > > - Ted Thx Ted! I didn't realize the patches were hard for people to read. I will see if I can get those commands to work, and I will make sure the "---" comes before the version info. Initially I had tried the send-email, but not all of the patches seemed to make it to the lists, so I started using Thunderbird, but I will see if I can figure out what went wrong with send-email. Thx! Allison Henderson From kenneth.emerson@gmail.com Mon Jun 6 22:52:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, HTML_MESSAGE,T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.4.0-r929098 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 p573qqZW001949 for ; Mon, 6 Jun 2011 22:52:53 -0500 X-ASG-Debug-ID: 1307418769-0cd302630000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C428EF67ED5 for ; Mon, 6 Jun 2011 20:52:49 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id KskKiXHFSCVFIaqx for ; Mon, 06 Jun 2011 20:52:49 -0700 (PDT) Received: by bwg12 with SMTP id 12so4317713bwg.26 for ; Mon, 06 Jun 2011 20:52:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to :content-type; bh=hrjVfAudA1TPw8MxB5TIYXOxatafiJHwT5Pe2/tkqEA=; b=p5E3UxfAYuphEy3oz2ucrxWa3a9ctv9vWr3r7dmmZMQ/xrzFu7SSnDzF+cgVNHZeIf 0HeKyDfpdbHZncUWieL8+gi8PSiz4goHX3MPkkFB24xS2j83NbA5m1FIRk8j4dOXRn+v Js/Ml9LdE4tiuYO92TG92Ym7YcFecZt1uX+ew= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=JSmwS3s29cSf8MLDjfTC4sR3xYfuMvinVyTxsvuLh1mG9+0A7HQJX+lMsmTQ4wT7lM M4ujjSLcc2GZbQH9yPRLJ8qoVAdAq5Hh4Y8kTJZjF+T/kVbghudbFEwi98TmEMbIrKLQ ePcDKqrwclA4SeK9ZZkLcUhUbmaI9GERPI3Xw= MIME-Version: 1.0 Received: by 10.204.62.4 with SMTP id v4mr2661081bkh.169.1307418769022; Mon, 06 Jun 2011 20:52:49 -0700 (PDT) Received: by 10.204.60.196 with HTTP; Mon, 6 Jun 2011 20:52:48 -0700 (PDT) Date: Mon, 6 Jun 2011 22:52:48 -0500 Message-ID: X-ASG-Orig-Subj: Defragging XFS File Systems Subject: Defragging XFS File Systems From: Kenneth Emerson To: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=001636c599114ce14a04a5172759 X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1307418770 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0005 1.0000 -2.0181 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65705 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 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 --001636c599114ce14a04a5172759 Content-Type: text/plain; charset=ISO-8859-1 I hadn't given much thought to fragmentation of my TV recordings volume (XFS) until reading through some MythTV-users threads recently that mentioned how fragmented an XFS file system could become. After running xfs_db, I found out that my fs appeared to be quite bad: $ sudo xfs_db -c frag -r /dev/mapper/appl_vg-appl_lv actual 1138668, ideal 11023, fragmentation factor 99.03% I then ran xfs_fsr with all defaults (ran for two hours) and then re-ran xfs_db and got the following results: $ sudo xfs_db -c frag -r /dev/mapper/appl_vg-appl_lv invalid numrecs (27111) in bmapbtd block invalid numrecs (4716) in bmapbtd block invalid numrecs (58978) in bmapbtd block actual 1034793, ideal 11024, fragmentation factor 98.93% The fragmentation level was reduced, but I was concerned about the error messages. Before I go any further, am I corrupting my file system with the defragging or are these "invalid numrecs" messages unimportant? Google didn't offer much help. Regards, Ken E. --001636c599114ce14a04a5172759 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable I hadn't given much thought to fragmentation of my TV recordings volume= =20 (XFS) until reading through some MythTV-users threads recently that mention= ed=20 how fragmented an XFS file system could become. =A0After running xfs_db, I found out that my fs appeared to be quite bad:

$ sudo xfs_db -c frag -r /dev/mapper/appl_vg-appl_lv
=A0actual 1138668, ideal 11023, fragmentation factor 99.03%

I then ran xfs_fsr with all defaults (ran for two h= ours) and then re-ran xfs_db and got the following results:

$ sudo xfs_db -c frag -r /dev/mapper/appl_vg-appl_= lv
invalid numrecs (27111) in bmapbtd block
invalid num= recs (4716) in bmapbtd block
invalid numrecs (58978) in bmapbtd b= lock
actual 1034793, ideal 11024, fragmentation factor 98.93%

The fragmentation level was reduced, but I was concerned about the error=20 messages. =A0Before I go any further, am I corrupting my file system with= =20 the defragging or are these "invalid numrecs" messages unimportan= t?

Google didn't offer much help.

=
Regards,

Ken E.
--001636c599114ce14a04a5172759-- From gongfan193@gmail.com Tue Jun 7 00:20:46 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p575Kj9l005746 for ; Tue, 7 Jun 2011 00:20:45 -0500 X-ASG-Debug-ID: 1307424043-0cd503d40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-gw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8CB6516B5043; Mon, 6 Jun 2011 22:20:43 -0700 (PDT) Received: from mail-gw0-f53.google.com (mail-gw0-f53.google.com [74.125.83.53]) by cuda.sgi.com with ESMTP id 3c4gsLqBFGVZvwGz; Mon, 06 Jun 2011 22:20:43 -0700 (PDT) Received: by gwj20 with SMTP id 20so2228579gwj.26 for ; Mon, 06 Jun 2011 22:20:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:from:date:message-id:subject:to:cc :content-type; bh=M8oEQsTgWrddUG82QFW+sMMVdT0ghkToc6ReNIGDBoA=; b=av1xO2P2LNg38ruZNHoz6OTPjtzf4duK4eGnmiUYQ1RcwrOzZZ0GlS+39s07WdNonh gnllI/zWBSnndeCs37fKfRaEZ0WFE7F1+F+fsnmJMsO56cYQaVDG9kHAvqy4bS3HcoZb obzG9jo0E46RI7Gx11F3ekDafLV3X6xyMzusU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:from:date:message-id:subject:to:cc:content-type; b=C8pDYuu3jUXpkev5HIqGYCOZko7yl/+NjxGL883gTcH2kCpJ7D0aaTEA4USYgvmTLU XEVJzwpG/Z22BYSZev5Q9BvMaIykaE/YETz15LW3UVy9/kgbPxh4GyFv6HYnxoqhI9qp nY9dpfw7PzvZJi6rTcmaA82/VBYKuANdqX3vA= Received: by 10.100.24.27 with SMTP id 27mr4348413anx.39.1307424043220; Mon, 06 Jun 2011 22:20:43 -0700 (PDT) MIME-Version: 1.0 Received: by 10.100.198.3 with HTTP; Mon, 6 Jun 2011 22:20:23 -0700 (PDT) From: Drunkard Zhang Date: Tue, 7 Jun 2011 13:20:23 +0800 Message-ID: X-ASG-Orig-Subj: bug in xfs: can't recovery metadata log Subject: bug in xfs: can't recovery metadata log To: Alex Elder , xfs-masters@oss.sgi.com, xfs@oss.sgi.com Cc: linux-kernel@vger.kernel.org Content-Type: multipart/mixed; boundary=0016e64698baaac01704a518615e X-Barracuda-Connect: mail-gw0-f53.google.com[74.125.83.53] X-Barracuda-Start-Time: 1307424044 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.02 X-Barracuda-Spam-Status: No, SCORE=-1.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, BSF_RULE_7582B, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65711 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.50 BSF_RULE7568M Custom Rule 7568M 0.50 BSF_RULE_7582B Custom Rule 7582B X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --0016e64698baaac01704a518615e Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable The log recovery failure happened after a hard reboot, I did "mount /dev/lg/log /mnt/temp/" twice, but the similar dmesg error. The xfs lives on LVM, with 4x2TB SATA II disk. The first time: [ 1479.130446] XFS mounting filesystem dm-0 [ 1479.226525] Starting XFS recovery on filesystem: dm-0 (logdev: internal) [ 1506.217842] BUG: unable to handle kernel NULL pointer dereference at 00000000000000f8 [ 1506.218468] IP: [] xfs_cmn_err+0x6b/0x92 [ 1506.218680] PGD 2175c4067 PUD 22f4ff067 PMD 0 [ 1506.218887] Oops: 0000 [#1] PREEMPT SMP [ 1506.219138] last sysfs file: /sys/devices/virtual/block/dm-0/dev [ 1506.219345] CPU 1 [ 1506.219353] Modules linked in: [ 1506.219732] [ 1506.219923] Pid: 21233, comm: mount Not tainted 2.6.38.5 #2 System manufacturer S=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF/Z8NA-D6(C) [ 1506.220989] RIP: 0010:[] [] xfs_cmn_err+0x6b/0x92 [ 1506.221424] RSP: 0018:ffff88021752da08 EFLAGS: 00010246 [ 1506.221627] RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffffff816= be16c [ 1506.221837] RDX: ffff88021752da28 RSI: ffffffff816bdced RDI: 00000000000= 00008 [ 1506.222079] RBP: ffff88021752da88 R08: ffffffff816bdb79 R09: 00000000000= 005f6 [ 1506.222289] R10: ffff8802177c32c0 R11: 00000530e8002000 R12: 00000000000= 00000 [ 1506.222572] R13: ffffffff816be16c R14: ffff88021752db04 R15: 00000000000= 008e2 [ 1506.222830] FS: 00007fa0c93d2740(0000) GS:ffff8800bf440000(0000) knlGS:0000000000000000 [ 1506.223265] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 1506.223471] CR2: 00000000000000f8 CR3: 000000021754e000 CR4: 00000000000= 006e0 [ 1506.223728] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 00000000000= 00000 [ 1506.223938] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 00000000000= 00400 [ 1506.224190] Process mount (pid: 21233, threadinfo ffff88021752c000, task ffff88022e239440) [ 1506.224585] Stack: [ 1506.224776] 0000000000000020 ffff88021752da98 ffff88021752da38 ffff88021752da48 [ 1506.225216] ffffffff816be16c ffff88021752da08 2d0100008de51400 ffffffff8122922b [ 1506.225616] ffff880202000000 ffff8802176e8af0 ffffffff816bdb79 00000000000005f6 [ 1506.226058] Call Trace: [ 1506.226301] [] ? kmem_zone_zalloc+0x1f/0x30 [ 1506.226549] [] xfs_error_report+0x39/0x40 [ 1506.226805] [] ? xfs_free_extent+0x8e/0xae [ 1506.227056] [] xfs_free_ag_extent+0x3e7/0x70b [ 1506.227306] [] xfs_free_extent+0x8e/0xae [ 1506.227514] [] xlog_recover_process_efi+0x113/0x16c [ 1506.227724] [] ? xfs_trans_ail_cursor_set+0x15/0x1c [ 1506.227934] [] xlog_recover_process_efis+0x64/0xad [ 1506.228182] [] xlog_recover_finish+0x15/0xb6 [ 1506.228390] [] xfs_log_mount_finish+0x1b/0x1d [ 1506.228597] [] xfs_mountfs+0x4ec/0x615 [ 1506.228803] [] xfs_fs_fill_super+0x1e5/0x2e8 [ 1506.229055] [] mount_bdev+0x13b/0x19e [ 1506.229259] [] ? xfs_fs_fill_super+0x0/0x2e8 [ 1506.229467] [] xfs_fs_mount+0x10/0x12 [ 1506.229672] [] vfs_kern_mount+0xb8/0x1f3 [ 1506.229877] [] do_kern_mount+0x48/0xd8 [ 1506.230127] [] do_mount+0x729/0x791 [ 1506.230375] [] ? memdup_user+0x43/0x63 [ 1506.230629] [] ? strndup_user+0x39/0x4f [ 1506.230834] [] sys_mount+0x83/0xbe [ 1506.231080] [] system_call_fastpath+0x16/0x1b [ 1506.231285] Code: 31 e4 48 8d 45 80 48 8d 55 10 48 89 45 a8 48 89 55 88 31 c0 48 8d 55 b0 c7 45 80 20 00 00 00 48 89 55 90 4c 89 6d a0 48 8d 55 a0 <48> 8b b3 f8 00 00 00 48 c7 c7 78 14 6c 81 e8 1f ff 2b 00 45 85 [ 1506.232093] RIP [] xfs_cmn_err+0x6b/0x92 [ 1506.232300] RSP [ 1506.232498] CR2: 00000000000000f8 [ 1506.233086] ---[ end trace 6ff9d0214348600a ]--- The second time: [ 725.637712] BUG: unable to handle kernel NULL pointer dereference at 00000000000000f8 [ 725.638302] IP: [] xfs_cmn_err+0x6b/0x92 [ 725.638579] PGD 22b1d3067 PUD 22b21f067 PMD 0 [ 725.638787] Oops: 0000 [#1] PREEMPT SMP [ 725.638993] last sysfs file: /sys/devices/virtual/block/dm-0/dev [ 725.639202] CPU 0 [ 725.639210] Modules linked in: [ 725.639664] [ 725.639857] Pid: 2537, comm: mount Not tainted 2.6.38.5 #2 System manufacturer S=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF/Z8NA-D6(C) [ 725.640841] RIP: 0010:[] [] xfs_cmn_err+0x6b/0x92 [ 725.641241] RSP: 0018:ffff88022b28ba08 EFLAGS: 00010246 [ 725.641512] RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffffff816= be16c [ 725.641723] RDX: ffff88022b28ba28 RSI: ffffffff816bdced RDI: 00000000000= 00008 [ 725.641936] RBP: ffff88022b28ba88 R08: ffffffff816bdb79 R09: 00000000000= 005f6 [ 725.642148] R10: ffff8802217c9680 R11: 00000530e8002000 R12: 00000000000= 00000 [ 725.642428] R13: ffffffff816be16c R14: ffff88022b28bb04 R15: 00000000000= 008e2 [ 725.642641] FS: 00007f857cd34740(0000) GS:ffff8800bf400000(0000) knlGS:0000000000000000 [ 725.643041] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 725.643248] CR2: 00000000000000f8 CR3: 000000022b24a000 CR4: 00000000000= 006f0 [ 725.643565] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 00000000000= 00000 [ 725.643778] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 00000000000= 00400 [ 725.643990] Process mount (pid: 2537, threadinfo ffff88022b28a000, task ffff88022e4f2f40) [ 725.644478] Stack: [ 725.644671] 0000000000000020 ffff88022b28ba98 ffff88022b28ba38 ffff88022b28ba48 [ 725.645072] ffffffff816be16c ffff88022b28ba08 2d0100008de51400 ffffffff8122922b [ 725.645607] ffff880202000000 ffff88022b2d28c0 ffffffff816bdb79 00000000000005f6 [ 725.646010] Call Trace: [ 725.646211] [] ? kmem_zone_zalloc+0x1f/0x30 [ 725.646491] [] xfs_error_report+0x39/0x40 [ 725.646700] [] ? xfs_free_extent+0x8e/0xae [ 725.646909] [] xfs_free_ag_extent+0x3e7/0x70b [ 725.647119] [] xfs_free_extent+0x8e/0xae [ 725.647329] [] xlog_recover_process_efi+0x113/0x16c [ 725.647632] [] ? xfs_trans_ail_cursor_set+0x15/0x1c [ 725.647844] [] xlog_recover_process_efis+0x64/0xad [ 725.648056] [] xlog_recover_finish+0x15/0xb6 [ 725.648266] [] xfs_log_mount_finish+0x1b/0x1d [ 725.648539] [] xfs_mountfs+0x4ec/0x615 [ 725.648747] [] xfs_fs_fill_super+0x1e5/0x2e8 [ 725.648958] [] mount_bdev+0x13b/0x19e [ 725.649164] [] ? xfs_fs_fill_super+0x0/0x2e8 [ 725.649438] [] xfs_fs_mount+0x10/0x12 [ 725.649646] [] vfs_kern_mount+0xb8/0x1f3 [ 725.649854] [] do_kern_mount+0x48/0xd8 [ 725.650063] [] do_mount+0x729/0x791 [ 725.650271] [] ? memdup_user+0x43/0x63 [ 725.650545] [] ? strndup_user+0x39/0x4f [ 725.650753] [] sys_mount+0x83/0xbe [ 725.650961] [] system_call_fastpath+0x16/0x1b [ 725.651169] Code: 31 e4 48 8d 45 80 48 8d 55 10 48 89 45 a8 48 89 55 88 31 c0 48 8d 55 b0 c7 45 80 20 00 00 00 48 89 55 90 4c 89 6d a0 48 8d 55 a0 <48> 8b b3 f8 00 00 00 48 c7 c7 78 14 6c 81 e8 1f ff 2b 00 45 85 [ 725.652012] RIP [] xfs_cmn_err+0x6b/0x92 [ 725.652221] RSP [ 725.652484] CR2: 00000000000000f8 [ 725.653295] ---[ end trace 1dadc2ff14d7c60f ]--- --0016e64698baaac01704a518615e Content-Type: application/octet-stream; name="config-2.6.38.5" Content-Disposition: attachment; filename="config-2.6.38.5" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gomecptk0 IwojIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0CiMgTGlu dXgveDg2XzY0IDIuNi4zOC41IEtlcm5lbCBDb25maWd1cmF0aW9uCiMgVGh1IE1heSAgNSAxMzoz NTo0NSAyMDExCiMKQ09ORklHXzY0QklUPXkKIyBDT05GSUdfWDg2XzMyIGlzIG5vdCBzZXQKQ09O RklHX1g4Nl82ND15CkNPTkZJR19YODY9eQpDT05GSUdfSU5TVFJVQ1RJT05fREVDT0RFUj15CkNP TkZJR19PVVRQVVRfRk9STUFUPSJlbGY2NC14ODYtNjQiCkNPTkZJR19BUkNIX0RFRkNPTkZJRz0i YXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnIgpDT05GSUdfR0VORVJJQ19DTU9TX1VQ REFURT15CkNPTkZJR19DTE9DS1NPVVJDRV9XQVRDSERPRz15CkNPTkZJR19HRU5FUklDX0NMT0NL RVZFTlRTPXkKQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFNfQlJPQURDQVNUPXkKQ09ORklHX0xP Q0tERVBfU1VQUE9SVD15CkNPTkZJR19TVEFDS1RSQUNFX1NVUFBPUlQ9eQpDT05GSUdfSEFWRV9M QVRFTkNZVE9QX1NVUFBPUlQ9eQpDT05GSUdfTU1VPXkKQ09ORklHX1pPTkVfRE1BPXkKQ09ORklH X05FRURfRE1BX01BUF9TVEFURT15CkNPTkZJR19ORUVEX1NHX0RNQV9MRU5HVEg9eQpDT05GSUdf R0VORVJJQ19JU0FfRE1BPXkKQ09ORklHX0dFTkVSSUNfSU9NQVA9eQpDT05GSUdfR0VORVJJQ19C VUc9eQpDT05GSUdfR0VORVJJQ19CVUdfUkVMQVRJVkVfUE9JTlRFUlM9eQpDT05GSUdfR0VORVJJ Q19IV0VJR0hUPXkKQ09ORklHX0FSQ0hfTUFZX0hBVkVfUENfRkRDPXkKIyBDT05GSUdfUldTRU1f R0VORVJJQ19TUElOTE9DSyBpcyBub3Qgc2V0CkNPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRI TT15CkNPTkZJR19BUkNIX0hBU19DUFVfSURMRV9XQUlUPXkKQ09ORklHX0dFTkVSSUNfQ0FMSUJS QVRFX0RFTEFZPXkKQ09ORklHX0dFTkVSSUNfVElNRV9WU1lTQ0FMTD15CkNPTkZJR19BUkNIX0hB U19DUFVfUkVMQVg9eQpDT05GSUdfQVJDSF9IQVNfREVGQVVMVF9JRExFPXkKQ09ORklHX0FSQ0hf SEFTX0NBQ0hFX0xJTkVfU0laRT15CkNPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQT15CkNP TkZJR19ORUVEX1BFUl9DUFVfRU1CRURfRklSU1RfQ0hVTks9eQpDT05GSUdfTkVFRF9QRVJfQ1BV X1BBR0VfRklSU1RfQ0hVTks9eQpDT05GSUdfSEFWRV9DUFVNQVNLX09GX0NQVV9NQVA9eQpDT05G SUdfQVJDSF9ISUJFUk5BVElPTl9QT1NTSUJMRT15CkNPTkZJR19BUkNIX1NVU1BFTkRfUE9TU0lC TEU9eQpDT05GSUdfWk9ORV9ETUEzMj15CkNPTkZJR19BUkNIX1BPUFVMQVRFU19OT0RFX01BUD15 CkNPTkZJR19BVURJVF9BUkNIPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfT1BUSU1JWkVEX0lOTElO SU5HPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfREVCVUdfUEFHRUFMTE9DPXkKQ09ORklHX0hBVkVf SU5URUxfVFhUPXkKQ09ORklHX1g4Nl82NF9TTVA9eQpDT05GSUdfWDg2X0hUPXkKQ09ORklHX1g4 Nl9UUkFNUE9MSU5FPXkKQ09ORklHX0FSQ0hfSFdFSUdIVF9DRkxBR1M9Ii1mY2FsbC1zYXZlZC1y ZGkgLWZjYWxsLXNhdmVkLXJzaSAtZmNhbGwtc2F2ZWQtcmR4IC1mY2FsbC1zYXZlZC1yY3ggLWZj YWxsLXNhdmVkLXI4IC1mY2FsbC1zYXZlZC1yOSAtZmNhbGwtc2F2ZWQtcjEwIC1mY2FsbC1zYXZl ZC1yMTEiCiMgQ09ORklHX0tUSU1FX1NDQUxBUiBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX0NQVV9Q Uk9CRV9SRUxFQVNFPXkKQ09ORklHX0RFRkNPTkZJR19MSVNUPSIvbGliL21vZHVsZXMvJFVOQU1F X1JFTEVBU0UvLmNvbmZpZyIKQ09ORklHX0NPTlNUUlVDVE9SUz15CkNPTkZJR19IQVZFX0lSUV9X T1JLPXkKQ09ORklHX0lSUV9XT1JLPXkKCiMKIyBHZW5lcmFsIHNldHVwCiMKQ09ORklHX0VYUEVS SU1FTlRBTD15CkNPTkZJR19JTklUX0VOVl9BUkdfTElNSVQ9MzIKQ09ORklHX0NST1NTX0NPTVBJ TEU9IiIKQ09ORklHX0xPQ0FMVkVSU0lPTj0iIgojIENPTkZJR19MT0NBTFZFUlNJT05fQVVUTyBp cyBub3Qgc2V0CkNPTkZJR19IQVZFX0tFUk5FTF9HWklQPXkKQ09ORklHX0hBVkVfS0VSTkVMX0Ja SVAyPXkKQ09ORklHX0hBVkVfS0VSTkVMX0xaTUE9eQpDT05GSUdfSEFWRV9LRVJORUxfWFo9eQpD T05GSUdfSEFWRV9LRVJORUxfTFpPPXkKQ09ORklHX0tFUk5FTF9HWklQPXkKIyBDT05GSUdfS0VS TkVMX0JaSVAyIGlzIG5vdCBzZXQKIyBDT05GSUdfS0VSTkVMX0xaTUEgaXMgbm90IHNldAojIENP TkZJR19LRVJORUxfWFogaXMgbm90IHNldAojIENPTkZJR19LRVJORUxfTFpPIGlzIG5vdCBzZXQK Q09ORklHX1NXQVA9eQpDT05GSUdfU1lTVklQQz15CkNPTkZJR19TWVNWSVBDX1NZU0NUTD15CkNP TkZJR19QT1NJWF9NUVVFVUU9eQpDT05GSUdfUE9TSVhfTVFVRVVFX1NZU0NUTD15CkNPTkZJR19C U0RfUFJPQ0VTU19BQ0NUPXkKQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1RfVjM9eQpDT05GSUdfVEFT S1NUQVRTPXkKQ09ORklHX1RBU0tfREVMQVlfQUNDVD15CkNPTkZJR19UQVNLX1hBQ0NUPXkKQ09O RklHX1RBU0tfSU9fQUNDT1VOVElORz15CkNPTkZJR19BVURJVD15CkNPTkZJR19BVURJVFNZU0NB TEw9eQpDT05GSUdfQVVESVRfV0FUQ0g9eQpDT05GSUdfQVVESVRfVFJFRT15CkNPTkZJR19IQVZF X0dFTkVSSUNfSEFSRElSUVM9eQoKIwojIElSUSBzdWJzeXN0ZW0KIwpDT05GSUdfR0VORVJJQ19I QVJESVJRUz15CiMgQ09ORklHX0dFTkVSSUNfSEFSRElSUVNfTk9fREVQUkVDQVRFRCBpcyBub3Qg c2V0CkNPTkZJR19IQVZFX1NQQVJTRV9JUlE9eQpDT05GSUdfR0VORVJJQ19JUlFfUFJPQkU9eQpD T05GSUdfR0VORVJJQ19QRU5ESU5HX0lSUT15CiMgQ09ORklHX0FVVE9fSVJRX0FGRklOSVRZIGlz IG5vdCBzZXQKIyBDT05GSUdfSVJRX1BFUl9DUFUgaXMgbm90IHNldAojIENPTkZJR19IQVJESVJR U19TV19SRVNFTkQgaXMgbm90IHNldApDT05GSUdfU1BBUlNFX0lSUT15CgojCiMgUkNVIFN1YnN5 c3RlbQojCkNPTkZJR19UUkVFX1BSRUVNUFRfUkNVPXkKQ09ORklHX1BSRUVNUFRfUkNVPXkKIyBD T05GSUdfUkNVX1RSQUNFIGlzIG5vdCBzZXQKQ09ORklHX1JDVV9GQU5PVVQ9NjQKIyBDT05GSUdf UkNVX0ZBTk9VVF9FWEFDVCBpcyBub3Qgc2V0CiMgQ09ORklHX1RSRUVfUkNVX1RSQUNFIGlzIG5v dCBzZXQKQ09ORklHX0lLQ09ORklHPXkKQ09ORklHX0lLQ09ORklHX1BST0M9eQpDT05GSUdfTE9H X0JVRl9TSElGVD0xNwpDT05GSUdfSEFWRV9VTlNUQUJMRV9TQ0hFRF9DTE9DSz15CkNPTkZJR19D R1JPVVBTPXkKIyBDT05GSUdfQ0dST1VQX0RFQlVHIGlzIG5vdCBzZXQKQ09ORklHX0NHUk9VUF9O Uz15CkNPTkZJR19DR1JPVVBfRlJFRVpFUj15CkNPTkZJR19DR1JPVVBfREVWSUNFPXkKQ09ORklH X0NQVVNFVFM9eQpDT05GSUdfUFJPQ19QSURfQ1BVU0VUPXkKQ09ORklHX0NHUk9VUF9DUFVBQ0NU PXkKQ09ORklHX1JFU09VUkNFX0NPVU5URVJTPXkKQ09ORklHX0NHUk9VUF9NRU1fUkVTX0NUTFI9 eQpDT05GSUdfQ0dST1VQX01FTV9SRVNfQ1RMUl9TV0FQPXkKQ09ORklHX0NHUk9VUF9NRU1fUkVT X0NUTFJfU1dBUF9FTkFCTEVEPXkKQ09ORklHX0NHUk9VUF9TQ0hFRD15CkNPTkZJR19GQUlSX0dS T1VQX1NDSEVEPXkKQ09ORklHX1JUX0dST1VQX1NDSEVEPXkKQ09ORklHX0JMS19DR1JPVVA9eQoj IENPTkZJR19ERUJVR19CTEtfQ0dST1VQIGlzIG5vdCBzZXQKQ09ORklHX05BTUVTUEFDRVM9eQpD T05GSUdfVVRTX05TPXkKQ09ORklHX0lQQ19OUz15CkNPTkZJR19VU0VSX05TPXkKQ09ORklHX1BJ RF9OUz15CkNPTkZJR19ORVRfTlM9eQpDT05GSUdfU0NIRURfQVVUT0dST1VQPXkKQ09ORklHX01N X09XTkVSPXkKIyBDT05GSUdfU1lTRlNfREVQUkVDQVRFRCBpcyBub3Qgc2V0CkNPTkZJR19SRUxB WT15CiMgQ09ORklHX0JMS19ERVZfSU5JVFJEIGlzIG5vdCBzZXQKQ09ORklHX0NDX09QVElNSVpF X0ZPUl9TSVpFPXkKQ09ORklHX1NZU0NUTD15CkNPTkZJR19BTk9OX0lOT0RFUz15CiMgQ09ORklH X0VYUEVSVCBpcyBub3Qgc2V0CiMgQ09ORklHX0VNQkVEREVEIGlzIG5vdCBzZXQKQ09ORklHX1VJ RDE2PXkKQ09ORklHX1NZU0NUTF9TWVNDQUxMPXkKQ09ORklHX0tBTExTWU1TPXkKQ09ORklHX0tB TExTWU1TX0VYVFJBX1BBU1M9eQpDT05GSUdfSE9UUExVRz15CkNPTkZJR19QUklOVEs9eQpDT05G SUdfQlVHPXkKQ09ORklHX0VMRl9DT1JFPXkKQ09ORklHX1BDU1BLUl9QTEFURk9STT15CkNPTkZJ R19CQVNFX0ZVTEw9eQpDT05GSUdfRlVURVg9eQpDT05GSUdfRVBPTEw9eQpDT05GSUdfU0lHTkFM RkQ9eQpDT05GSUdfVElNRVJGRD15CkNPTkZJR19FVkVOVEZEPXkKQ09ORklHX1NITUVNPXkKQ09O RklHX0FJTz15CkNPTkZJR19IQVZFX1BFUkZfRVZFTlRTPXkKCiMKIyBLZXJuZWwgUGVyZm9ybWFu Y2UgRXZlbnRzIEFuZCBDb3VudGVycwojCkNPTkZJR19QRVJGX0VWRU5UUz15CiMgQ09ORklHX1BF UkZfQ09VTlRFUlMgaXMgbm90IHNldApDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlM9eQpDT05GSUdf UENJX1FVSVJLUz15CkNPTkZJR19TTFVCX0RFQlVHPXkKIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBu b3Qgc2V0CiMgQ09ORklHX1NMQUIgaXMgbm90IHNldApDT05GSUdfU0xVQj15CkNPTkZJR19QUk9G SUxJTkc9eQpDT05GSUdfVFJBQ0VQT0lOVFM9eQpDT05GSUdfT1BST0ZJTEU9bQojIENPTkZJR19P UFJPRklMRV9FVkVOVF9NVUxUSVBMRVggaXMgbm90IHNldApDT05GSUdfSEFWRV9PUFJPRklMRT15 CkNPTkZJR19LUFJPQkVTPXkKIyBDT05GSUdfSlVNUF9MQUJFTCBpcyBub3Qgc2V0CkNPTkZJR19I QVZFX0VGRklDSUVOVF9VTkFMSUdORURfQUNDRVNTPXkKQ09ORklHX0tSRVRQUk9CRVM9eQpDT05G SUdfSEFWRV9JT1JFTUFQX1BST1Q9eQpDT05GSUdfSEFWRV9LUFJPQkVTPXkKQ09ORklHX0hBVkVf S1JFVFBST0JFUz15CkNPTkZJR19IQVZFX09QVFBST0JFUz15CkNPTkZJR19IQVZFX0FSQ0hfVFJB Q0VIT09LPXkKQ09ORklHX0hBVkVfRE1BX0FUVFJTPXkKQ09ORklHX1VTRV9HRU5FUklDX1NNUF9I RUxQRVJTPXkKQ09ORklHX0hBVkVfUkVHU19BTkRfU1RBQ0tfQUNDRVNTX0FQST15CkNPTkZJR19I QVZFX0RNQV9BUElfREVCVUc9eQpDT05GSUdfSEFWRV9IV19CUkVBS1BPSU5UPXkKQ09ORklHX0hB VkVfTUlYRURfQlJFQUtQT0lOVFNfUkVHUz15CkNPTkZJR19IQVZFX1VTRVJfUkVUVVJOX05PVElG SUVSPXkKQ09ORklHX0hBVkVfUEVSRl9FVkVOVFNfTk1JPXkKQ09ORklHX0hBVkVfQVJDSF9KVU1Q X0xBQkVMPXkKCiMKIyBHQ09WLWJhc2VkIGtlcm5lbCBwcm9maWxpbmcKIwojIENPTkZJR19HQ09W X0tFUk5FTCBpcyBub3Qgc2V0CiMgQ09ORklHX0hBVkVfR0VORVJJQ19ETUFfQ09IRVJFTlQgaXMg bm90IHNldApDT05GSUdfU0xBQklORk89eQpDT05GSUdfUlRfTVVURVhFUz15CkNPTkZJR19CQVNF X1NNQUxMPTAKQ09ORklHX01PRFVMRVM9eQojIENPTkZJR19NT0RVTEVfRk9SQ0VfTE9BRCBpcyBu b3Qgc2V0CkNPTkZJR19NT0RVTEVfVU5MT0FEPXkKQ09ORklHX01PRFVMRV9GT1JDRV9VTkxPQUQ9 eQojIENPTkZJR19NT0RWRVJTSU9OUyBpcyBub3Qgc2V0CkNPTkZJR19NT0RVTEVfU1JDVkVSU0lP Tl9BTEw9eQpDT05GSUdfU1RPUF9NQUNISU5FPXkKQ09ORklHX0JMT0NLPXkKQ09ORklHX0JMS19E RVZfQlNHPXkKQ09ORklHX0JMS19ERVZfSU5URUdSSVRZPXkKQ09ORklHX0JMS19ERVZfVEhST1RU TElORz15CkNPTkZJR19CTE9DS19DT01QQVQ9eQoKIwojIElPIFNjaGVkdWxlcnMKIwpDT05GSUdf SU9TQ0hFRF9OT09QPXkKQ09ORklHX0lPU0NIRURfREVBRExJTkU9eQpDT05GSUdfSU9TQ0hFRF9D RlE9eQpDT05GSUdfQ0ZRX0dST1VQX0lPU0NIRUQ9eQpDT05GSUdfREVGQVVMVF9ERUFETElORT15 CiMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKIyBDT05GSUdfREVGQVVMVF9OT09QIGlz IG5vdCBzZXQKQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iZGVhZGxpbmUiCiMgQ09ORklHX0lOTElO RV9TUElOX1RSWUxPQ0sgaXMgbm90IHNldAojIENPTkZJR19JTkxJTkVfU1BJTl9UUllMT0NLX0JI IGlzIG5vdCBzZXQKIyBDT05GSUdfSU5MSU5FX1NQSU5fTE9DSyBpcyBub3Qgc2V0CiMgQ09ORklH X0lOTElORV9TUElOX0xPQ0tfQkggaXMgbm90IHNldAojIENPTkZJR19JTkxJTkVfU1BJTl9MT0NL X0lSUSBpcyBub3Qgc2V0CiMgQ09ORklHX0lOTElORV9TUElOX0xPQ0tfSVJRU0FWRSBpcyBub3Qg c2V0CiMgQ09ORklHX0lOTElORV9TUElOX1VOTE9DSyBpcyBub3Qgc2V0CiMgQ09ORklHX0lOTElO RV9TUElOX1VOTE9DS19CSCBpcyBub3Qgc2V0CiMgQ09ORklHX0lOTElORV9TUElOX1VOTE9DS19J UlEgaXMgbm90IHNldAojIENPTkZJR19JTkxJTkVfU1BJTl9VTkxPQ0tfSVJRUkVTVE9SRSBpcyBu b3Qgc2V0CiMgQ09ORklHX0lOTElORV9SRUFEX1RSWUxPQ0sgaXMgbm90IHNldAojIENPTkZJR19J TkxJTkVfUkVBRF9MT0NLIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5MSU5FX1JFQURfTE9DS19CSCBp cyBub3Qgc2V0CiMgQ09ORklHX0lOTElORV9SRUFEX0xPQ0tfSVJRIGlzIG5vdCBzZXQKIyBDT05G SUdfSU5MSU5FX1JFQURfTE9DS19JUlFTQVZFIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5MSU5FX1JF QURfVU5MT0NLIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5MSU5FX1JFQURfVU5MT0NLX0JIIGlzIG5v dCBzZXQKIyBDT05GSUdfSU5MSU5FX1JFQURfVU5MT0NLX0lSUSBpcyBub3Qgc2V0CiMgQ09ORklH X0lOTElORV9SRUFEX1VOTE9DS19JUlFSRVNUT1JFIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5MSU5F X1dSSVRFX1RSWUxPQ0sgaXMgbm90IHNldAojIENPTkZJR19JTkxJTkVfV1JJVEVfTE9DSyBpcyBu b3Qgc2V0CiMgQ09ORklHX0lOTElORV9XUklURV9MT0NLX0JIIGlzIG5vdCBzZXQKIyBDT05GSUdf SU5MSU5FX1dSSVRFX0xPQ0tfSVJRIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5MSU5FX1dSSVRFX0xP Q0tfSVJRU0FWRSBpcyBub3Qgc2V0CiMgQ09ORklHX0lOTElORV9XUklURV9VTkxPQ0sgaXMgbm90 IHNldAojIENPTkZJR19JTkxJTkVfV1JJVEVfVU5MT0NLX0JIIGlzIG5vdCBzZXQKIyBDT05GSUdf SU5MSU5FX1dSSVRFX1VOTE9DS19JUlEgaXMgbm90IHNldAojIENPTkZJR19JTkxJTkVfV1JJVEVf VU5MT0NLX0lSUVJFU1RPUkUgaXMgbm90IHNldApDT05GSUdfTVVURVhfU1BJTl9PTl9PV05FUj15 CkNPTkZJR19GUkVFWkVSPXkKCiMKIyBQcm9jZXNzb3IgdHlwZSBhbmQgZmVhdHVyZXMKIwpDT05G SUdfVElDS19PTkVTSE9UPXkKQ09ORklHX05PX0haPXkKQ09ORklHX0hJR0hfUkVTX1RJTUVSUz15 CkNPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTX0JVSUxEPXkKQ09ORklHX1NNUD15CkNPTkZJR19Y ODZfWDJBUElDPXkKIyBDT05GSUdfWDg2X01QUEFSU0UgaXMgbm90IHNldApDT05GSUdfWDg2X0VY VEVOREVEX1BMQVRGT1JNPXkKIyBDT05GSUdfWDg2X1ZTTVAgaXMgbm90IHNldAojIENPTkZJR19Y ODZfVVYgaXMgbm90IHNldApDT05GSUdfWDg2X1NVUFBPUlRTX01FTU9SWV9GQUlMVVJFPXkKQ09O RklHX1NDSEVEX09NSVRfRlJBTUVfUE9JTlRFUj15CiMgQ09ORklHX1BBUkFWSVJUX0dVRVNUIGlz IG5vdCBzZXQKQ09ORklHX05PX0JPT1RNRU09eQpDT05GSUdfTUVNVEVTVD15CiMgQ09ORklHX01L OCBpcyBub3Qgc2V0CiMgQ09ORklHX01QU0MgaXMgbm90IHNldApDT05GSUdfTUNPUkUyPXkKIyBD T05GSUdfTUFUT00gaXMgbm90IHNldAojIENPTkZJR19HRU5FUklDX0NQVSBpcyBub3Qgc2V0CkNP TkZJR19YODZfQ1BVPXkKQ09ORklHX1g4Nl9JTlRFUk5PREVfQ0FDSEVfU0hJRlQ9NwpDT05GSUdf WDg2X0NNUFhDSEc9eQpDT05GSUdfQ01QWENIR19MT0NBTD15CkNPTkZJR19YODZfTDFfQ0FDSEVf U0hJRlQ9NgpDT05GSUdfWDg2X1hBREQ9eQpDT05GSUdfWDg2X1dQX1dPUktTX09LPXkKQ09ORklH X1g4Nl9JTlRFTF9VU0VSQ09QWT15CkNPTkZJR19YODZfVVNFX1BQUk9fQ0hFQ0tTVU09eQpDT05G SUdfWDg2X1A2X05PUD15CkNPTkZJR19YODZfVFNDPXkKQ09ORklHX1g4Nl9DTVBYQ0hHNjQ9eQpD T05GSUdfWDg2X0NNT1Y9eQpDT05GSUdfWDg2X01JTklNVU1fQ1BVX0ZBTUlMWT02NApDT05GSUdf WDg2X0RFQlVHQ1RMTVNSPXkKQ09ORklHX0NQVV9TVVBfSU5URUw9eQpDT05GSUdfQ1BVX1NVUF9B TUQ9eQpDT05GSUdfQ1BVX1NVUF9DRU5UQVVSPXkKQ09ORklHX0hQRVRfVElNRVI9eQpDT05GSUdf SFBFVF9FTVVMQVRFX1JUQz15CkNPTkZJR19ETUk9eQpDT05GSUdfR0FSVF9JT01NVT15CiMgQ09O RklHX0NBTEdBUllfSU9NTVUgaXMgbm90IHNldAojIENPTkZJR19BTURfSU9NTVUgaXMgbm90IHNl dApDT05GSUdfU1dJT1RMQj15CkNPTkZJR19JT01NVV9IRUxQRVI9eQpDT05GSUdfSU9NTVVfQVBJ PXkKQ09ORklHX05SX0NQVVM9OApDT05GSUdfU0NIRURfU01UPXkKQ09ORklHX1NDSEVEX01DPXkK Q09ORklHX0lSUV9USU1FX0FDQ09VTlRJTkc9eQojIENPTkZJR19QUkVFTVBUX05PTkUgaXMgbm90 IHNldAojIENPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWSBpcyBub3Qgc2V0CkNPTkZJR19QUkVFTVBU PXkKQ09ORklHX1g4Nl9MT0NBTF9BUElDPXkKQ09ORklHX1g4Nl9JT19BUElDPXkKQ09ORklHX1g4 Nl9SRVJPVVRFX0ZPUl9CUk9LRU5fQk9PVF9JUlFTPXkKQ09ORklHX1g4Nl9NQ0U9eQpDT05GSUdf WDg2X01DRV9JTlRFTD15CiMgQ09ORklHX1g4Nl9NQ0VfQU1EIGlzIG5vdCBzZXQKQ09ORklHX1g4 Nl9NQ0VfVEhSRVNIT0xEPXkKIyBDT05GSUdfWDg2X01DRV9JTkpFQ1QgaXMgbm90IHNldApDT05G SUdfWDg2X1RIRVJNQUxfVkVDVE9SPXkKIyBDT05GSUdfSThLIGlzIG5vdCBzZXQKIyBDT05GSUdf TUlDUk9DT0RFIGlzIG5vdCBzZXQKQ09ORklHX1g4Nl9NU1I9eQpDT05GSUdfWDg2X0NQVUlEPXkK Q09ORklHX0FSQ0hfUEhZU19BRERSX1RfNjRCSVQ9eQpDT05GSUdfQVJDSF9ETUFfQUREUl9UXzY0 QklUPXkKQ09ORklHX0RJUkVDVF9HQlBBR0VTPXkKQ09ORklHX05VTUE9eQojIENPTkZJR19BTURf TlVNQSBpcyBub3Qgc2V0CkNPTkZJR19YODZfNjRfQUNQSV9OVU1BPXkKQ09ORklHX05PREVTX1NQ QU5fT1RIRVJfTk9ERVM9eQojIENPTkZJR19OVU1BX0VNVSBpcyBub3Qgc2V0CkNPTkZJR19OT0RF U19TSElGVD02CkNPTkZJR19BUkNIX1BST0NfS0NPUkVfVEVYVD15CkNPTkZJR19BUkNIX1NQQVJT RU1FTV9ERUZBVUxUPXkKQ09ORklHX0FSQ0hfU1BBUlNFTUVNX0VOQUJMRT15CkNPTkZJR19BUkNI X1NFTEVDVF9NRU1PUllfTU9ERUw9eQpDT05GSUdfQVJDSF9NRU1PUllfUFJPQkU9eQpDT05GSUdf SUxMRUdBTF9QT0lOVEVSX1ZBTFVFPTB4ZGVhZDAwMDAwMDAwMDAwMApDT05GSUdfU0VMRUNUX01F TU9SWV9NT0RFTD15CkNPTkZJR19TUEFSU0VNRU1fTUFOVUFMPXkKQ09ORklHX1NQQVJTRU1FTT15 CkNPTkZJR19ORUVEX01VTFRJUExFX05PREVTPXkKQ09ORklHX0hBVkVfTUVNT1JZX1BSRVNFTlQ9 eQpDT05GSUdfU1BBUlNFTUVNX0VYVFJFTUU9eQpDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBfRU5B QkxFPXkKQ09ORklHX1NQQVJTRU1FTV9BTExPQ19NRU1fTUFQX1RPR0VUSEVSPXkKQ09ORklHX1NQ QVJTRU1FTV9WTUVNTUFQPXkKQ09ORklHX0hBVkVfTUVNQkxPQ0s9eQpDT05GSUdfTUVNT1JZX0hP VFBMVUc9eQpDT05GSUdfTUVNT1JZX0hPVFBMVUdfU1BBUlNFPXkKQ09ORklHX01FTU9SWV9IT1RS RU1PVkU9eQpDT05GSUdfUEFHRUZMQUdTX0VYVEVOREVEPXkKQ09ORklHX1NQTElUX1BUTE9DS19D UFVTPTQKQ09ORklHX0NPTVBBQ1RJT049eQpDT05GSUdfTUlHUkFUSU9OPXkKQ09ORklHX1BIWVNf QUREUl9UXzY0QklUPXkKQ09ORklHX1pPTkVfRE1BX0ZMQUc9MQpDT05GSUdfQk9VTkNFPXkKQ09O RklHX1ZJUlRfVE9fQlVTPXkKQ09ORklHX0tTTT15CkNPTkZJR19ERUZBVUxUX01NQVBfTUlOX0FE RFI9NDA5NgpDT05GSUdfQVJDSF9TVVBQT1JUU19NRU1PUllfRkFJTFVSRT15CkNPTkZJR19NRU1P UllfRkFJTFVSRT15CkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRT15CkNPTkZJR19UUkFOU1BB UkVOVF9IVUdFUEFHRV9BTFdBWVM9eQojIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRV9NQURW SVNFIGlzIG5vdCBzZXQKQ09ORklHX1g4Nl9DSEVDS19CSU9TX0NPUlJVUFRJT049eQpDT05GSUdf WDg2X0JPT1RQQVJBTV9NRU1PUllfQ09SUlVQVElPTl9DSEVDSz15CkNPTkZJR19YODZfUkVTRVJW RV9MT1c9NjQKQ09ORklHX01UUlI9eQpDT05GSUdfTVRSUl9TQU5JVElaRVI9eQpDT05GSUdfTVRS Ul9TQU5JVElaRVJfRU5BQkxFX0RFRkFVTFQ9MApDT05GSUdfTVRSUl9TQU5JVElaRVJfU1BBUkVf UkVHX05SX0RFRkFVTFQ9MQpDT05GSUdfWDg2X1BBVD15CkNPTkZJR19BUkNIX1VTRVNfUEdfVU5D QUNIRUQ9eQpDT05GSUdfRUZJPXkKQ09ORklHX1NFQ0NPTVA9eQojIENPTkZJR19DQ19TVEFDS1BS T1RFQ1RPUiBpcyBub3Qgc2V0CiMgQ09ORklHX0haXzEwMCBpcyBub3Qgc2V0CiMgQ09ORklHX0ha XzI1MCBpcyBub3Qgc2V0CiMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CkNPTkZJR19IWl8xMDAw PXkKQ09ORklHX0haPTEwMDAKQ09ORklHX1NDSEVEX0hSVElDSz15CkNPTkZJR19LRVhFQz15CiMg Q09ORklHX0NSQVNIX0RVTVAgaXMgbm90IHNldApDT05GSUdfUEhZU0lDQUxfU1RBUlQ9MHgxMDAw MDAwCkNPTkZJR19SRUxPQ0FUQUJMRT15CkNPTkZJR19QSFlTSUNBTF9BTElHTj0weDEwMDAwMDAK Q09ORklHX0hPVFBMVUdfQ1BVPXkKIyBDT05GSUdfQ09NUEFUX1ZEU08gaXMgbm90IHNldAojIENP TkZJR19DTURMSU5FX0JPT0wgaXMgbm90IHNldApDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hP VFBMVUc9eQpDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFJFTU9WRT15CkNPTkZJR19IQVZF X0FSQ0hfRUFSTFlfUEZOX1RPX05JRD15CkNPTkZJR19VU0VfUEVSQ1BVX05VTUFfTk9ERV9JRD15 CgojCiMgUG93ZXIgbWFuYWdlbWVudCBhbmQgQUNQSSBvcHRpb25zCiMKQ09ORklHX1BNPXkKIyBD T05GSUdfUE1fREVCVUcgaXMgbm90IHNldApDT05GSUdfUE1fU0xFRVBfU01QPXkKQ09ORklHX1BN X1NMRUVQPXkKQ09ORklHX1NVU1BFTkQ9eQpDT05GSUdfU1VTUEVORF9GUkVFWkVSPXkKIyBDT05G SUdfSElCRVJOQVRJT04gaXMgbm90IHNldApDT05GSUdfUE1fUlVOVElNRT15CkNPTkZJR19QTV9P UFM9eQpDT05GSUdfQUNQST15CkNPTkZJR19BQ1BJX1NMRUVQPXkKIyBDT05GSUdfQUNQSV9QUk9D RlMgaXMgbm90IHNldAojIENPTkZJR19BQ1BJX1BST0NGU19QT1dFUiBpcyBub3Qgc2V0CiMgQ09O RklHX0FDUElfUE9XRVJfTUVURVIgaXMgbm90IHNldAojIENPTkZJR19BQ1BJX0VDX0RFQlVHRlMg aXMgbm90IHNldAojIENPTkZJR19BQ1BJX1BST0NfRVZFTlQgaXMgbm90IHNldAojIENPTkZJR19B Q1BJX0FDIGlzIG5vdCBzZXQKIyBDT05GSUdfQUNQSV9CQVRURVJZIGlzIG5vdCBzZXQKQ09ORklH X0FDUElfQlVUVE9OPXkKQ09ORklHX0FDUElfRkFOPXkKQ09ORklHX0FDUElfRE9DSz15CkNPTkZJ R19BQ1BJX1BST0NFU1NPUj15CkNPTkZJR19BQ1BJX0hPVFBMVUdfQ1BVPXkKIyBDT05GSUdfQUNQ SV9QUk9DRVNTT1JfQUdHUkVHQVRPUiBpcyBub3Qgc2V0CkNPTkZJR19BQ1BJX1RIRVJNQUw9eQpD T05GSUdfQUNQSV9OVU1BPXkKIyBDT05GSUdfQUNQSV9DVVNUT01fRFNEVCBpcyBub3Qgc2V0CkNP TkZJR19BQ1BJX0JMQUNLTElTVF9ZRUFSPTAKIyBDT05GSUdfQUNQSV9ERUJVRyBpcyBub3Qgc2V0 CkNPTkZJR19BQ1BJX1BDSV9TTE9UPXkKQ09ORklHX1g4Nl9QTV9USU1FUj15CkNPTkZJR19BQ1BJ X0NPTlRBSU5FUj15CiMgQ09ORklHX0FDUElfSE9UUExVR19NRU1PUlkgaXMgbm90IHNldAojIENP TkZJR19BQ1BJX1NCUyBpcyBub3Qgc2V0CkNPTkZJR19BQ1BJX0hFRD15CkNPTkZJR19BQ1BJX0FQ RUk9eQpDT05GSUdfQUNQSV9BUEVJX0dIRVM9eQojIENPTkZJR19BQ1BJX0FQRUlfRUlOSiBpcyBu b3Qgc2V0CiMgQ09ORklHX0FDUElfQVBFSV9FUlNUX0RFQlVHIGlzIG5vdCBzZXQKIyBDT05GSUdf U0ZJIGlzIG5vdCBzZXQKCiMKIyBDUFUgRnJlcXVlbmN5IHNjYWxpbmcKIwpDT05GSUdfQ1BVX0ZS RVE9eQpDT05GSUdfQ1BVX0ZSRVFfVEFCTEU9eQojIENPTkZJR19DUFVfRlJFUV9ERUJVRyBpcyBu b3Qgc2V0CkNPTkZJR19DUFVfRlJFUV9TVEFUPXkKIyBDT05GSUdfQ1BVX0ZSRVFfU1RBVF9ERVRB SUxTIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1BVX0ZSRVFfREVGQVVMVF9HT1ZfUEVSRk9STUFOQ0Ug aXMgbm90IHNldAojIENPTkZJR19DUFVfRlJFUV9ERUZBVUxUX0dPVl9VU0VSU1BBQ0UgaXMgbm90 IHNldApDT05GSUdfQ1BVX0ZSRVFfREVGQVVMVF9HT1ZfT05ERU1BTkQ9eQojIENPTkZJR19DUFVf RlJFUV9ERUZBVUxUX0dPVl9DT05TRVJWQVRJVkUgaXMgbm90IHNldApDT05GSUdfQ1BVX0ZSRVFf R09WX1BFUkZPUk1BTkNFPXkKQ09ORklHX0NQVV9GUkVRX0dPVl9QT1dFUlNBVkU9eQpDT05GSUdf Q1BVX0ZSRVFfR09WX1VTRVJTUEFDRT15CkNPTkZJR19DUFVfRlJFUV9HT1ZfT05ERU1BTkQ9eQoj IENPTkZJR19DUFVfRlJFUV9HT1ZfQ09OU0VSVkFUSVZFIGlzIG5vdCBzZXQKCiMKIyBDUFVGcmVx IHByb2Nlc3NvciBkcml2ZXJzCiMKQ09ORklHX1g4Nl9QQ0NfQ1BVRlJFUT15CkNPTkZJR19YODZf QUNQSV9DUFVGUkVRPXkKIyBDT05GSUdfWDg2X1BPV0VSTk9XX0s4IGlzIG5vdCBzZXQKIyBDT05G SUdfWDg2X1NQRUVEU1RFUF9DRU5UUklOTyBpcyBub3Qgc2V0CiMgQ09ORklHX1g4Nl9QNF9DTE9D S01PRCBpcyBub3Qgc2V0CgojCiMgc2hhcmVkIG9wdGlvbnMKIwojIENPTkZJR19YODZfU1BFRURT VEVQX0xJQiBpcyBub3Qgc2V0CkNPTkZJR19DUFVfSURMRT15CkNPTkZJR19DUFVfSURMRV9HT1Zf TEFEREVSPXkKQ09ORklHX0NQVV9JRExFX0dPVl9NRU5VPXkKIyBDT05GSUdfSU5URUxfSURMRSBp cyBub3Qgc2V0CgojCiMgTWVtb3J5IHBvd2VyIHNhdmluZ3MKIwpDT05GSUdfSTczMDBfSURMRV9J T0FUX0NIQU5ORUw9eQpDT05GSUdfSTczMDBfSURMRT15CgojCiMgQnVzIG9wdGlvbnMgKFBDSSBl dGMuKQojCkNPTkZJR19QQ0k9eQpDT05GSUdfUENJX0RJUkVDVD15CkNPTkZJR19QQ0lfTU1DT05G SUc9eQpDT05GSUdfUENJX0RPTUFJTlM9eQojIENPTkZJR19QQ0lfQ05CMjBMRV9RVUlSSyBpcyBu b3Qgc2V0CkNPTkZJR19ETUFSPXkKQ09ORklHX0RNQVJfREVGQVVMVF9PTj15CkNPTkZJR19ETUFS X0ZMT1BQWV9XQT15CkNPTkZJR19JTlRSX1JFTUFQPXkKQ09ORklHX1BDSUVQT1JUQlVTPXkKQ09O RklHX0hPVFBMVUdfUENJX1BDSUU9eQpDT05GSUdfUENJRUFFUj15CkNPTkZJR19QQ0lFX0VDUkM9 eQojIENPTkZJR19QQ0lFQUVSX0lOSkVDVCBpcyBub3Qgc2V0CkNPTkZJR19QQ0lFQVNQTT15CiMg Q09ORklHX1BDSUVBU1BNX0RFQlVHIGlzIG5vdCBzZXQKQ09ORklHX1BDSUVfUE1FPXkKQ09ORklH X0FSQ0hfU1VQUE9SVFNfTVNJPXkKQ09ORklHX1BDSV9NU0k9eQojIENPTkZJR19QQ0lfU1RVQiBp cyBub3Qgc2V0CkNPTkZJR19IVF9JUlE9eQojIENPTkZJR19QQ0lfSU9WIGlzIG5vdCBzZXQKQ09O RklHX1BDSV9JT0FQSUM9eQpDT05GSUdfSVNBX0RNQV9BUEk9eQpDT05GSUdfQU1EX05CPXkKIyBD T05GSUdfUENDQVJEIGlzIG5vdCBzZXQKQ09ORklHX0hPVFBMVUdfUENJPXkKIyBDT05GSUdfSE9U UExVR19QQ0lfRkFLRSBpcyBub3Qgc2V0CiMgQ09ORklHX0hPVFBMVUdfUENJX0FDUEkgaXMgbm90 IHNldAojIENPTkZJR19IT1RQTFVHX1BDSV9DUENJIGlzIG5vdCBzZXQKQ09ORklHX0hPVFBMVUdf UENJX1NIUEM9eQoKIwojIEV4ZWN1dGFibGUgZmlsZSBmb3JtYXRzIC8gRW11bGF0aW9ucwojCkNP TkZJR19CSU5GTVRfRUxGPXkKQ09ORklHX0NPTVBBVF9CSU5GTVRfRUxGPXkKIyBDT05GSUdfQ09S RV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldAojIENPTkZJR19IQVZFX0FPVVQg aXMgbm90IHNldApDT05GSUdfQklORk1UX01JU0M9eQpDT05GSUdfSUEzMl9FTVVMQVRJT049eQoj IENPTkZJR19JQTMyX0FPVVQgaXMgbm90IHNldApDT05GSUdfQ09NUEFUPXkKQ09ORklHX0NPTVBB VF9GT1JfVTY0X0FMSUdOTUVOVD15CkNPTkZJR19TWVNWSVBDX0NPTVBBVD15CkNPTkZJR19IQVZF X1RFWFRfUE9LRV9TTVA9eQpDT05GSUdfTkVUPXkKCiMKIyBOZXR3b3JraW5nIG9wdGlvbnMKIwpD T05GSUdfUEFDS0VUPXkKQ09ORklHX1VOSVg9eQpDT05GSUdfWEZSTT15CkNPTkZJR19YRlJNX1VT RVI9eQpDT05GSUdfWEZSTV9TVUJfUE9MSUNZPXkKQ09ORklHX1hGUk1fTUlHUkFURT15CkNPTkZJ R19YRlJNX1NUQVRJU1RJQ1M9eQpDT05GSUdfWEZSTV9JUENPTVA9eQpDT05GSUdfTkVUX0tFWT1t CkNPTkZJR19ORVRfS0VZX01JR1JBVEU9eQpDT05GSUdfSU5FVD15CkNPTkZJR19JUF9NVUxUSUNB U1Q9eQpDT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXkKQ09ORklHX0FTS19JUF9GSUJfSEFTSD15 CiMgQ09ORklHX0lQX0ZJQl9UUklFIGlzIG5vdCBzZXQKQ09ORklHX0lQX0ZJQl9IQVNIPXkKQ09O RklHX0lQX01VTFRJUExFX1RBQkxFUz15CkNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eQpDT05G SUdfSVBfUk9VVEVfVkVSQk9TRT15CiMgQ09ORklHX0lQX1BOUCBpcyBub3Qgc2V0CkNPTkZJR19O RVRfSVBJUD1tCiMgQ09ORklHX05FVF9JUEdSRV9ERU1VWCBpcyBub3Qgc2V0CkNPTkZJR19JUF9N Uk9VVEU9eQojIENPTkZJR19JUF9NUk9VVEVfTVVMVElQTEVfVEFCTEVTIGlzIG5vdCBzZXQKQ09O RklHX0lQX1BJTVNNX1YxPXkKQ09ORklHX0lQX1BJTVNNX1YyPXkKQ09ORklHX0FSUEQ9eQpDT05G SUdfU1lOX0NPT0tJRVM9eQpDT05GSUdfSU5FVF9BSD1tCkNPTkZJR19JTkVUX0VTUD1tCkNPTkZJ R19JTkVUX0lQQ09NUD1tCkNPTkZJR19JTkVUX1hGUk1fVFVOTkVMPW0KQ09ORklHX0lORVRfVFVO TkVMPXkKQ09ORklHX0lORVRfWEZSTV9NT0RFX1RSQU5TUE9SVD1tCkNPTkZJR19JTkVUX1hGUk1f TU9ERV9UVU5ORUw9bQpDT05GSUdfSU5FVF9YRlJNX01PREVfQkVFVD1tCkNPTkZJR19JTkVUX0xS Tz15CkNPTkZJR19JTkVUX0RJQUc9bQpDT05GSUdfSU5FVF9UQ1BfRElBRz1tCkNPTkZJR19UQ1Bf Q09OR19BRFZBTkNFRD15CiMgQ09ORklHX1RDUF9DT05HX0JJQyBpcyBub3Qgc2V0CkNPTkZJR19U Q1BfQ09OR19DVUJJQz15CiMgQ09ORklHX1RDUF9DT05HX1dFU1RXT09EIGlzIG5vdCBzZXQKIyBD T05GSUdfVENQX0NPTkdfSFRDUCBpcyBub3Qgc2V0CiMgQ09ORklHX1RDUF9DT05HX0hTVENQIGlz IG5vdCBzZXQKIyBDT05GSUdfVENQX0NPTkdfSFlCTEEgaXMgbm90IHNldAojIENPTkZJR19UQ1Bf Q09OR19WRUdBUyBpcyBub3Qgc2V0CiMgQ09ORklHX1RDUF9DT05HX1NDQUxBQkxFIGlzIG5vdCBz ZXQKIyBDT05GSUdfVENQX0NPTkdfTFAgaXMgbm90IHNldAojIENPTkZJR19UQ1BfQ09OR19WRU5P IGlzIG5vdCBzZXQKIyBDT05GSUdfVENQX0NPTkdfWUVBSCBpcyBub3Qgc2V0CiMgQ09ORklHX1RD UF9DT05HX0lMTElOT0lTIGlzIG5vdCBzZXQKQ09ORklHX0RFRkFVTFRfQ1VCSUM9eQojIENPTkZJ R19ERUZBVUxUX1JFTk8gaXMgbm90IHNldApDT05GSUdfREVGQVVMVF9UQ1BfQ09ORz0iY3ViaWMi CkNPTkZJR19UQ1BfTUQ1U0lHPXkKQ09ORklHX0lQVjY9eQpDT05GSUdfSVBWNl9QUklWQUNZPXkK Q09ORklHX0lQVjZfUk9VVEVSX1BSRUY9eQpDT05GSUdfSVBWNl9ST1VURV9JTkZPPXkKQ09ORklH X0lQVjZfT1BUSU1JU1RJQ19EQUQ9eQpDT05GSUdfSU5FVDZfQUg9eQpDT05GSUdfSU5FVDZfRVNQ PXkKQ09ORklHX0lORVQ2X0lQQ09NUD15CkNPTkZJR19JUFY2X01JUDY9eQpDT05GSUdfSU5FVDZf WEZSTV9UVU5ORUw9eQpDT05GSUdfSU5FVDZfVFVOTkVMPXkKQ09ORklHX0lORVQ2X1hGUk1fTU9E RV9UUkFOU1BPUlQ9eQpDT05GSUdfSU5FVDZfWEZSTV9NT0RFX1RVTk5FTD15CkNPTkZJR19JTkVU Nl9YRlJNX01PREVfQkVFVD15CkNPTkZJR19JTkVUNl9YRlJNX01PREVfUk9VVEVPUFRJTUlaQVRJ T049eQpDT05GSUdfSVBWNl9TSVQ9eQpDT05GSUdfSVBWNl9TSVRfNlJEPXkKQ09ORklHX0lQVjZf TkRJU0NfTk9ERVRZUEU9eQpDT05GSUdfSVBWNl9UVU5ORUw9eQpDT05GSUdfSVBWNl9NVUxUSVBM RV9UQUJMRVM9eQpDT05GSUdfSVBWNl9TVUJUUkVFUz15CkNPTkZJR19JUFY2X01ST1VURT15CiMg Q09ORklHX0lQVjZfTVJPVVRFX01VTFRJUExFX1RBQkxFUyBpcyBub3Qgc2V0CkNPTkZJR19JUFY2 X1BJTVNNX1YyPXkKIyBDT05GSUdfTkVUTEFCRUwgaXMgbm90IHNldApDT05GSUdfTkVUV09SS19T RUNNQVJLPXkKIyBDT05GSUdfTkVUV09SS19QSFlfVElNRVNUQU1QSU5HIGlzIG5vdCBzZXQKQ09O RklHX05FVEZJTFRFUj15CiMgQ09ORklHX05FVEZJTFRFUl9ERUJVRyBpcyBub3Qgc2V0CkNPTkZJ R19ORVRGSUxURVJfQURWQU5DRUQ9eQoKIwojIENvcmUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24K IwpDT05GSUdfTkVURklMVEVSX05FVExJTks9eQpDT05GSUdfTkVURklMVEVSX05FVExJTktfUVVF VUU9bQpDT05GSUdfTkVURklMVEVSX05FVExJTktfTE9HPXkKQ09ORklHX05GX0NPTk5UUkFDSz15 CkNPTkZJR19ORl9DT05OVFJBQ0tfTUFSSz15CkNPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSSz15 CkNPTkZJR19ORl9DT05OVFJBQ0tfWk9ORVM9eQpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15 CkNPTkZJR19ORl9DVF9QUk9UT19EQ0NQPW0KQ09ORklHX05GX0NUX1BST1RPX0dSRT1tCkNPTkZJ R19ORl9DVF9QUk9UT19TQ1RQPW0KQ09ORklHX05GX0NUX1BST1RPX1VEUExJVEU9bQpDT05GSUdf TkZfQ09OTlRSQUNLX0FNQU5EQT1tCkNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW0KQ09ORklHX05G X0NPTk5UUkFDS19IMzIzPW0KQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bQpDT05GSUdfTkZfQ09O TlRSQUNLX05FVEJJT1NfTlM9bQpDT05GSUdfTkZfQ09OTlRSQUNLX1BQVFA9bQpDT05GSUdfTkZf Q09OTlRSQUNLX1NBTkU9bQpDT05GSUdfTkZfQ09OTlRSQUNLX1NJUD1tCkNPTkZJR19ORl9DT05O VFJBQ0tfVEZUUD1tCkNPTkZJR19ORl9DVF9ORVRMSU5LPXkKQ09ORklHX05FVEZJTFRFUl9UUFJP WFk9bQpDT05GSUdfTkVURklMVEVSX1hUQUJMRVM9eQoKIwojIFh0YWJsZXMgY29tYmluZWQgbW9k dWxlcwojCkNPTkZJR19ORVRGSUxURVJfWFRfTUFSSz15CkNPTkZJR19ORVRGSUxURVJfWFRfQ09O Tk1BUks9eQoKIwojIFh0YWJsZXMgdGFyZ2V0cwojCkNPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VU X0NIRUNLU1VNPW0KQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfQ0xBU1NJRlk9bQpDT05GSUdf TkVURklMVEVSX1hUX1RBUkdFVF9DT05OTUFSSz15CkNPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VU X0NPTk5TRUNNQVJLPW0KQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfQ1Q9eQpDT05GSUdfTkVU RklMVEVSX1hUX1RBUkdFVF9EU0NQPXkKQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfSEw9eQpD T05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9JRExFVElNRVI9bQpDT05GSUdfTkVURklMVEVSX1hU X1RBUkdFVF9NQVJLPXkKQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTkZMT0c9bQpDT05GSUdf TkVURklMVEVSX1hUX1RBUkdFVF9ORlFVRVVFPXkKQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRf Tk9UUkFDSz15CkNPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1JBVEVFU1Q9bQpDT05GSUdfTkVU RklMVEVSX1hUX1RBUkdFVF9URUU9bQpDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UUFJPWFk9 bQpDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UUkFDRT1tCkNPTkZJR19ORVRGSUxURVJfWFRf VEFSR0VUX1NFQ01BUks9bQpDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BNU1M9bQpDT05G SUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BPUFRTVFJJUD1tCgojCiMgWHRhYmxlcyBtYXRjaGVz CiMKQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DTFVTVEVSPW0KQ09ORklHX05FVEZJTFRFUl9Y VF9NQVRDSF9DT01NRU5UPXkKQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OQllURVM9bQpD T05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVD15CkNPTkZJR19ORVRGSUxURVJfWFRf TUFUQ0hfQ09OTk1BUks9eQpDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTk5UUkFDSz15CkNP TkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ1BVPW0KQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9E Q0NQPW0KQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EU0NQPXkKQ09ORklHX05FVEZJTFRFUl9Y VF9NQVRDSF9FU1A9bQpDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0hBU0hMSU1JVD15CkNPTkZJ R19ORVRGSUxURVJfWFRfTUFUQ0hfSEVMUEVSPW0KQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9I TD15CkNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfSVBSQU5HRT15CkNPTkZJR19ORVRGSUxURVJf WFRfTUFUQ0hfTEVOR1RIPXkKQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MSU1JVD15CkNPTkZJ R19ORVRGSUxURVJfWFRfTUFUQ0hfTUFDPW0KQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9NQVJL PXkKQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9NVUxUSVBPUlQ9eQpDT05GSUdfTkVURklMVEVS X1hUX01BVENIX09TRj1tCkNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfT1dORVI9eQpDT05GSUdf TkVURklMVEVSX1hUX01BVENIX1BPTElDWT1tCkNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUEtU VFlQRT1tCkNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUVVPVEE9bQpDT05GSUdfTkVURklMVEVS X1hUX01BVENIX1JBVEVFU1Q9bQpDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1JFQUxNPW0KQ09O RklHX05FVEZJTFRFUl9YVF9NQVRDSF9SRUNFTlQ9eQpDT05GSUdfTkVURklMVEVSX1hUX01BVENI X1NDVFA9bQpDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NPQ0tFVD1tCkNPTkZJR19ORVRGSUxU RVJfWFRfTUFUQ0hfU1RBVEU9eQpDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUQVRJU1RJQz15 CkNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU1RSSU5HPXkKQ09ORklHX05FVEZJTFRFUl9YVF9N QVRDSF9UQ1BNU1M9bQpDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1RJTUU9bQpDT05GSUdfTkVU RklMVEVSX1hUX01BVENIX1UzMj1tCiMgQ09ORklHX0lQX1ZTIGlzIG5vdCBzZXQKCiMKIyBJUDog TmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KIwpDT05GSUdfTkZfREVGUkFHX0lQVjQ9eQpDT05GSUdf TkZfQ09OTlRSQUNLX0lQVjQ9eQpDT05GSUdfTkZfQ09OTlRSQUNLX1BST0NfQ09NUEFUPXkKQ09O RklHX0lQX05GX1FVRVVFPXkKQ09ORklHX0lQX05GX0lQVEFCTEVTPXkKQ09ORklHX0lQX05GX01B VENIX0FERFJUWVBFPXkKQ09ORklHX0lQX05GX01BVENIX0FIPW0KQ09ORklHX0lQX05GX01BVENI X0VDTj1tCkNPTkZJR19JUF9ORl9NQVRDSF9UVEw9bQpDT05GSUdfSVBfTkZfRklMVEVSPXkKQ09O RklHX0lQX05GX1RBUkdFVF9SRUpFQ1Q9eQpDT05GSUdfSVBfTkZfVEFSR0VUX0xPRz15CkNPTkZJ R19JUF9ORl9UQVJHRVRfVUxPRz1tCkNPTkZJR19ORl9OQVQ9eQpDT05GSUdfTkZfTkFUX05FRURF RD15CkNPTkZJR19JUF9ORl9UQVJHRVRfTUFTUVVFUkFERT15CkNPTkZJR19JUF9ORl9UQVJHRVRf TkVUTUFQPXkKQ09ORklHX0lQX05GX1RBUkdFVF9SRURJUkVDVD15CkNPTkZJR19ORl9OQVRfU05N UF9CQVNJQz1tCkNPTkZJR19ORl9OQVRfUFJPVE9fRENDUD1tCkNPTkZJR19ORl9OQVRfUFJPVE9f R1JFPW0KQ09ORklHX05GX05BVF9QUk9UT19VRFBMSVRFPW0KQ09ORklHX05GX05BVF9QUk9UT19T Q1RQPW0KQ09ORklHX05GX05BVF9GVFA9bQpDT05GSUdfTkZfTkFUX0lSQz1tCkNPTkZJR19ORl9O QVRfVEZUUD1tCkNPTkZJR19ORl9OQVRfQU1BTkRBPW0KQ09ORklHX05GX05BVF9QUFRQPW0KQ09O RklHX05GX05BVF9IMzIzPW0KQ09ORklHX05GX05BVF9TSVA9bQpDT05GSUdfSVBfTkZfTUFOR0xF PXkKQ09ORklHX0lQX05GX1RBUkdFVF9DTFVTVEVSSVA9bQpDT05GSUdfSVBfTkZfVEFSR0VUX0VD Tj1tCkNPTkZJR19JUF9ORl9UQVJHRVRfVFRMPW0KQ09ORklHX0lQX05GX1JBVz15CiMgQ09ORklH X0lQX05GX1NFQ1VSSVRZIGlzIG5vdCBzZXQKQ09ORklHX0lQX05GX0FSUFRBQkxFUz15CkNPTkZJ R19JUF9ORl9BUlBGSUxURVI9bQpDT05GSUdfSVBfTkZfQVJQX01BTkdMRT1tCgojCiMgSVB2Njog TmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KIwpDT05GSUdfTkZfREVGUkFHX0lQVjY9eQpDT05GSUdf TkZfQ09OTlRSQUNLX0lQVjY9eQpDT05GSUdfSVA2X05GX1FVRVVFPXkKQ09ORklHX0lQNl9ORl9J UFRBQkxFUz15CkNPTkZJR19JUDZfTkZfTUFUQ0hfQUg9bQpDT05GSUdfSVA2X05GX01BVENIX0VV STY0PW0KQ09ORklHX0lQNl9ORl9NQVRDSF9GUkFHPW0KQ09ORklHX0lQNl9ORl9NQVRDSF9PUFRT PW0KQ09ORklHX0lQNl9ORl9NQVRDSF9ITD1tCkNPTkZJR19JUDZfTkZfTUFUQ0hfSVBWNkhFQURF Uj1tCkNPTkZJR19JUDZfTkZfTUFUQ0hfTUg9bQpDT05GSUdfSVA2X05GX01BVENIX1JUPW0KQ09O RklHX0lQNl9ORl9UQVJHRVRfSEw9bQpDT05GSUdfSVA2X05GX1RBUkdFVF9MT0c9bQpDT05GSUdf SVA2X05GX0ZJTFRFUj15CkNPTkZJR19JUDZfTkZfVEFSR0VUX1JFSkVDVD15CkNPTkZJR19JUDZf TkZfTUFOR0xFPXkKQ09ORklHX0lQNl9ORl9SQVc9eQojIENPTkZJR19JUDZfTkZfU0VDVVJJVFkg aXMgbm90IHNldAojIENPTkZJR19JUF9EQ0NQIGlzIG5vdCBzZXQKIyBDT05GSUdfSVBfU0NUUCBp cyBub3Qgc2V0CiMgQ09ORklHX1JEUyBpcyBub3Qgc2V0CiMgQ09ORklHX1RJUEMgaXMgbm90IHNl dAojIENPTkZJR19BVE0gaXMgbm90IHNldAojIENPTkZJR19MMlRQIGlzIG5vdCBzZXQKQ09ORklH X1NUUD1tCkNPTkZJR19HQVJQPW0KIyBDT05GSUdfQlJJREdFIGlzIG5vdCBzZXQKIyBDT05GSUdf TkVUX0RTQSBpcyBub3Qgc2V0CkNPTkZJR19WTEFOXzgwMjFRPW0KQ09ORklHX1ZMQU5fODAyMVFf R1ZSUD15CiMgQ09ORklHX0RFQ05FVCBpcyBub3Qgc2V0CkNPTkZJR19MTEM9bQojIENPTkZJR19M TEMyIGlzIG5vdCBzZXQKIyBDT05GSUdfTEFQQiBpcyBub3Qgc2V0CiMgQ09ORklHX0VDT05FVCBp cyBub3Qgc2V0CiMgQ09ORklHX1dBTl9ST1VURVIgaXMgbm90IHNldAojIENPTkZJR19QSE9ORVQg aXMgbm90IHNldAojIENPTkZJR19JRUVFODAyMTU0IGlzIG5vdCBzZXQKQ09ORklHX05FVF9TQ0hF RD15CgojCiMgUXVldWVpbmcvU2NoZWR1bGluZwojCkNPTkZJR19ORVRfU0NIX0NCUT1tCkNPTkZJ R19ORVRfU0NIX0hUQj1tCkNPTkZJR19ORVRfU0NIX0hGU0M9bQpDT05GSUdfTkVUX1NDSF9QUklP PW0KQ09ORklHX05FVF9TQ0hfTVVMVElRPW0KQ09ORklHX05FVF9TQ0hfUkVEPW0KQ09ORklHX05F VF9TQ0hfU0ZRPW0KQ09ORklHX05FVF9TQ0hfVEVRTD1tCkNPTkZJR19ORVRfU0NIX1RCRj1tCkNP TkZJR19ORVRfU0NIX0dSRUQ9bQpDT05GSUdfTkVUX1NDSF9EU01BUks9bQpDT05GSUdfTkVUX1ND SF9ORVRFTT1tCkNPTkZJR19ORVRfU0NIX0RSUj1tCkNPTkZJR19ORVRfU0NIX0lOR1JFU1M9bQoK IwojIENsYXNzaWZpY2F0aW9uCiMKQ09ORklHX05FVF9DTFM9eQpDT05GSUdfTkVUX0NMU19CQVNJ Qz1tCkNPTkZJR19ORVRfQ0xTX1RDSU5ERVg9bQpDT05GSUdfTkVUX0NMU19ST1VURTQ9bQpDT05G SUdfTkVUX0NMU19ST1VURT15CkNPTkZJR19ORVRfQ0xTX0ZXPW0KQ09ORklHX05FVF9DTFNfVTMy PW0KQ09ORklHX0NMU19VMzJfUEVSRj15CkNPTkZJR19DTFNfVTMyX01BUks9eQpDT05GSUdfTkVU X0NMU19SU1ZQPW0KQ09ORklHX05FVF9DTFNfUlNWUDY9bQpDT05GSUdfTkVUX0NMU19GTE9XPW0K Q09ORklHX05FVF9DTFNfQ0dST1VQPW0KQ09ORklHX05FVF9FTUFUQ0g9eQpDT05GSUdfTkVUX0VN QVRDSF9TVEFDSz0zMgpDT05GSUdfTkVUX0VNQVRDSF9DTVA9bQpDT05GSUdfTkVUX0VNQVRDSF9O QllURT1tCkNPTkZJR19ORVRfRU1BVENIX1UzMj1tCkNPTkZJR19ORVRfRU1BVENIX01FVEE9bQpD T05GSUdfTkVUX0VNQVRDSF9URVhUPW0KQ09ORklHX05FVF9DTFNfQUNUPXkKQ09ORklHX05FVF9B Q1RfUE9MSUNFPW0KQ09ORklHX05FVF9BQ1RfR0FDVD1tCkNPTkZJR19HQUNUX1BST0I9eQpDT05G SUdfTkVUX0FDVF9NSVJSRUQ9bQpDT05GSUdfTkVUX0FDVF9JUFQ9bQpDT05GSUdfTkVUX0FDVF9O QVQ9bQpDT05GSUdfTkVUX0FDVF9QRURJVD1tCkNPTkZJR19ORVRfQUNUX1NJTVA9bQpDT05GSUdf TkVUX0FDVF9TS0JFRElUPW0KQ09ORklHX05FVF9BQ1RfQ1NVTT1tCkNPTkZJR19ORVRfQ0xTX0lO RD15CkNPTkZJR19ORVRfU0NIX0ZJRk89eQojIENPTkZJR19EQ0IgaXMgbm90IHNldAojIENPTkZJ R19ETlNfUkVTT0xWRVIgaXMgbm90IHNldAojIENPTkZJR19CQVRNQU5fQURWIGlzIG5vdCBzZXQK Q09ORklHX1JQUz15CkNPTkZJR19YUFM9eQoKIwojIE5ldHdvcmsgdGVzdGluZwojCkNPTkZJR19O RVRfUEtUR0VOPW0KQ09ORklHX05FVF9UQ1BQUk9CRT1tCiMgQ09ORklHX05FVF9EUk9QX01PTklU T1IgaXMgbm90IHNldAojIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CiMgQ09ORklHX0NBTiBp cyBub3Qgc2V0CiMgQ09ORklHX0lSREEgaXMgbm90IHNldAojIENPTkZJR19CVCBpcyBub3Qgc2V0 CiMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQ09ORklHX0ZJQl9SVUxFUz15CiMgQ09ORklH X1dJUkVMRVNTIGlzIG5vdCBzZXQKIyBDT05GSUdfV0lNQVggaXMgbm90IHNldAojIENPTkZJR19S RktJTEwgaXMgbm90IHNldAojIENPTkZJR19ORVRfOVAgaXMgbm90IHNldAojIENPTkZJR19DQUlG IGlzIG5vdCBzZXQKIyBDT05GSUdfQ0VQSF9MSUIgaXMgbm90IHNldAoKIwojIERldmljZSBEcml2 ZXJzCiMKCiMKIyBHZW5lcmljIERyaXZlciBPcHRpb25zCiMKQ09ORklHX1VFVkVOVF9IRUxQRVJf UEFUSD0iL3NiaW4vaG90cGx1ZyIKIyBDT05GSUdfREVWVE1QRlMgaXMgbm90IHNldApDT05GSUdf U1RBTkRBTE9ORT15CiMgQ09ORklHX1BSRVZFTlRfRklSTVdBUkVfQlVJTEQgaXMgbm90IHNldApD T05GSUdfRldfTE9BREVSPXkKQ09ORklHX0ZJUk1XQVJFX0lOX0tFUk5FTD15CkNPTkZJR19FWFRS QV9GSVJNV0FSRT0iIgojIENPTkZJR19TWVNfSFlQRVJWSVNPUiBpcyBub3Qgc2V0CiMgQ09ORklH X0NPTk5FQ1RPUiBpcyBub3Qgc2V0CiMgQ09ORklHX01URCBpcyBub3Qgc2V0CiMgQ09ORklHX1BB UlBPUlQgaXMgbm90IHNldApDT05GSUdfUE5QPXkKIyBDT05GSUdfUE5QX0RFQlVHX01FU1NBR0VT IGlzIG5vdCBzZXQKCiMKIyBQcm90b2NvbHMKIwpDT05GSUdfUE5QQUNQST15CkNPTkZJR19CTEtf REVWPXkKIyBDT05GSUdfQkxLX0RFVl9GRCBpcyBub3Qgc2V0CiMgQ09ORklHX0JMS19DUFFfREEg aXMgbm90IHNldAojIENPTkZJR19CTEtfQ1BRX0NJU1NfREEgaXMgbm90IHNldAojIENPTkZJR19C TEtfREVWX0RBQzk2MCBpcyBub3Qgc2V0CiMgQ09ORklHX0JMS19ERVZfVU1FTSBpcyBub3Qgc2V0 CiMgQ09ORklHX0JMS19ERVZfQ09XX0NPTU1PTiBpcyBub3Qgc2V0CkNPTkZJR19CTEtfREVWX0xP T1A9eQpDT05GSUdfQkxLX0RFVl9DUllQVE9MT09QPXkKCiMKIyBEUkJEIGRpc2FibGVkIGJlY2F1 c2UgUFJPQ19GUywgSU5FVCBvciBDT05ORUNUT1Igbm90IHNlbGVjdGVkCiMKIyBDT05GSUdfQkxL X0RFVl9OQkQgaXMgbm90IHNldAojIENPTkZJR19CTEtfREVWX1NYOCBpcyBub3Qgc2V0CiMgQ09O RklHX0JMS19ERVZfVUIgaXMgbm90IHNldApDT05GSUdfQkxLX0RFVl9SQU09eQpDT05GSUdfQkxL X0RFVl9SQU1fQ09VTlQ9NApDT05GSUdfQkxLX0RFVl9SQU1fU0laRT01MjQyODgwCiMgQ09ORklH X0JMS19ERVZfWElQIGlzIG5vdCBzZXQKIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0 CiMgQ09ORklHX0FUQV9PVkVSX0VUSCBpcyBub3Qgc2V0CiMgQ09ORklHX0JMS19ERVZfSEQgaXMg bm90IHNldAojIENPTkZJR19CTEtfREVWX1JCRCBpcyBub3Qgc2V0CiMgQ09ORklHX01JU0NfREVW SUNFUyBpcyBub3Qgc2V0CkNPTkZJR19IQVZFX0lERT15CiMgQ09ORklHX0lERSBpcyBub3Qgc2V0 CgojCiMgU0NTSSBkZXZpY2Ugc3VwcG9ydAojCkNPTkZJR19TQ1NJX01PRD15CkNPTkZJR19SQUlE X0FUVFJTPW0KQ09ORklHX1NDU0k9eQpDT05GSUdfU0NTSV9ETUE9eQojIENPTkZJR19TQ1NJX1RH VCBpcyBub3Qgc2V0CiMgQ09ORklHX1NDU0lfTkVUTElOSyBpcyBub3Qgc2V0CiMgQ09ORklHX1ND U0lfUFJPQ19GUyBpcyBub3Qgc2V0CgojCiMgU0NTSSBzdXBwb3J0IHR5cGUgKGRpc2ssIHRhcGUs IENELVJPTSkKIwpDT05GSUdfQkxLX0RFVl9TRD15CiMgQ09ORklHX0NIUl9ERVZfU1QgaXMgbm90 IHNldAojIENPTkZJR19DSFJfREVWX09TU1QgaXMgbm90IHNldApDT05GSUdfQkxLX0RFVl9TUj15 CkNPTkZJR19CTEtfREVWX1NSX1ZFTkRPUj15CkNPTkZJR19DSFJfREVWX1NHPXkKIyBDT05GSUdf Q0hSX0RFVl9TQ0ggaXMgbm90IHNldApDT05GSUdfU0NTSV9NVUxUSV9MVU49eQojIENPTkZJR19T Q1NJX0NPTlNUQU5UUyBpcyBub3Qgc2V0CkNPTkZJR19TQ1NJX0xPR0dJTkc9eQpDT05GSUdfU0NT SV9TQ0FOX0FTWU5DPXkKQ09ORklHX1NDU0lfV0FJVF9TQ0FOPW0KCiMKIyBTQ1NJIFRyYW5zcG9y dHMKIwojIENPTkZJR19TQ1NJX1NQSV9BVFRSUyBpcyBub3Qgc2V0CiMgQ09ORklHX1NDU0lfRkNf QVRUUlMgaXMgbm90IHNldAojIENPTkZJR19TQ1NJX0lTQ1NJX0FUVFJTIGlzIG5vdCBzZXQKQ09O RklHX1NDU0lfU0FTX0FUVFJTPXkKIyBDT05GSUdfU0NTSV9TQVNfTElCU0FTIGlzIG5vdCBzZXQK IyBDT05GSUdfU0NTSV9TUlBfQVRUUlMgaXMgbm90IHNldAojIENPTkZJR19TQ1NJX0xPV0xFVkVM IGlzIG5vdCBzZXQKIyBDT05GSUdfU0NTSV9ESCBpcyBub3Qgc2V0CiMgQ09ORklHX1NDU0lfT1NE X0lOSVRJQVRPUiBpcyBub3Qgc2V0CkNPTkZJR19BVEE9eQojIENPTkZJR19BVEFfTk9OU1RBTkRB UkQgaXMgbm90IHNldApDT05GSUdfQVRBX1ZFUkJPU0VfRVJST1I9eQpDT05GSUdfQVRBX0FDUEk9 eQpDT05GSUdfU0FUQV9QTVA9eQoKIwojIENvbnRyb2xsZXJzIHdpdGggbm9uLVNGRiBuYXRpdmUg aW50ZXJmYWNlCiMKQ09ORklHX1NBVEFfQUhDST15CiMgQ09ORklHX1NBVEFfQUhDSV9QTEFURk9S TSBpcyBub3Qgc2V0CiMgQ09ORklHX1NBVEFfSU5JQzE2MlggaXMgbm90IHNldAojIENPTkZJR19T QVRBX0FDQVJEX0FIQ0kgaXMgbm90IHNldAojIENPTkZJR19TQVRBX1NJTDI0IGlzIG5vdCBzZXQK Q09ORklHX0FUQV9TRkY9eQoKIwojIFNGRiBjb250cm9sbGVycyB3aXRoIGN1c3RvbSBETUEgaW50 ZXJmYWNlCiMKIyBDT05GSUdfUERDX0FETUEgaXMgbm90IHNldAojIENPTkZJR19TQVRBX1FTVE9S IGlzIG5vdCBzZXQKIyBDT05GSUdfU0FUQV9TWDQgaXMgbm90IHNldApDT05GSUdfQVRBX0JNRE1B PXkKCiMKIyBTQVRBIFNGRiBjb250cm9sbGVycyB3aXRoIEJNRE1BCiMKIyBDT05GSUdfQVRBX1BJ SVggaXMgbm90IHNldAojIENPTkZJR19TQVRBX01WIGlzIG5vdCBzZXQKIyBDT05GSUdfU0FUQV9O ViBpcyBub3Qgc2V0CiMgQ09ORklHX1NBVEFfUFJPTUlTRSBpcyBub3Qgc2V0CiMgQ09ORklHX1NB VEFfU0lMIGlzIG5vdCBzZXQKIyBDT05GSUdfU0FUQV9TSVMgaXMgbm90IHNldAojIENPTkZJR19T QVRBX1NWVyBpcyBub3Qgc2V0CiMgQ09ORklHX1NBVEFfVUxJIGlzIG5vdCBzZXQKIyBDT05GSUdf U0FUQV9WSUEgaXMgbm90IHNldAojIENPTkZJR19TQVRBX1ZJVEVTU0UgaXMgbm90IHNldAoKIwoj IFBBVEEgU0ZGIGNvbnRyb2xsZXJzIHdpdGggQk1ETUEKIwojIENPTkZJR19QQVRBX0FMSSBpcyBu b3Qgc2V0CiMgQ09ORklHX1BBVEFfQU1EIGlzIG5vdCBzZXQKIyBDT05GSUdfUEFUQV9BUlRPUCBp cyBub3Qgc2V0CiMgQ09ORklHX1BBVEFfQVRJSVhQIGlzIG5vdCBzZXQKIyBDT05GSUdfUEFUQV9B VFA4NjdYIGlzIG5vdCBzZXQKIyBDT05GSUdfUEFUQV9DTUQ2NFggaXMgbm90IHNldAojIENPTkZJ R19QQVRBX0NTNTUyMCBpcyBub3Qgc2V0CiMgQ09ORklHX1BBVEFfQ1M1NTMwIGlzIG5vdCBzZXQK IyBDT05GSUdfUEFUQV9DUzU1MzYgaXMgbm90IHNldAojIENPTkZJR19QQVRBX0NZUFJFU1MgaXMg bm90IHNldAojIENPTkZJR19QQVRBX0VGQVIgaXMgbm90IHNldAojIENPTkZJR19QQVRBX0hQVDM2 NiBpcyBub3Qgc2V0CiMgQ09ORklHX1BBVEFfSFBUMzdYIGlzIG5vdCBzZXQKIyBDT05GSUdfUEFU QV9IUFQzWDJOIGlzIG5vdCBzZXQKIyBDT05GSUdfUEFUQV9IUFQzWDMgaXMgbm90IHNldAojIENP TkZJR19QQVRBX0lUODIxMyBpcyBub3Qgc2V0CiMgQ09ORklHX1BBVEFfSVQ4MjFYIGlzIG5vdCBz ZXQKIyBDT05GSUdfUEFUQV9KTUlDUk9OIGlzIG5vdCBzZXQKIyBDT05GSUdfUEFUQV9NQVJWRUxM IGlzIG5vdCBzZXQKIyBDT05GSUdfUEFUQV9ORVRDRUxMIGlzIG5vdCBzZXQKIyBDT05GSUdfUEFU QV9OSU5KQTMyIGlzIG5vdCBzZXQKIyBDT05GSUdfUEFUQV9OUzg3NDE1IGlzIG5vdCBzZXQKIyBD T05GSUdfUEFUQV9PTERQSUlYIGlzIG5vdCBzZXQKIyBDT05GSUdfUEFUQV9PUFRJRE1BIGlzIG5v dCBzZXQKIyBDT05GSUdfUEFUQV9QREMyMDI3WCBpcyBub3Qgc2V0CiMgQ09ORklHX1BBVEFfUERD X09MRCBpcyBub3Qgc2V0CiMgQ09ORklHX1BBVEFfUkFESVNZUyBpcyBub3Qgc2V0CiMgQ09ORklH X1BBVEFfUkRDIGlzIG5vdCBzZXQKIyBDT05GSUdfUEFUQV9TQzEyMDAgaXMgbm90IHNldAojIENP TkZJR19QQVRBX1NDSCBpcyBub3Qgc2V0CiMgQ09ORklHX1BBVEFfU0VSVkVSV09SS1MgaXMgbm90 IHNldAojIENPTkZJR19QQVRBX1NJTDY4MCBpcyBub3Qgc2V0CiMgQ09ORklHX1BBVEFfU0lTIGlz IG5vdCBzZXQKIyBDT05GSUdfUEFUQV9UT1NISUJBIGlzIG5vdCBzZXQKIyBDT05GSUdfUEFUQV9U UklGTEVYIGlzIG5vdCBzZXQKIyBDT05GSUdfUEFUQV9WSUEgaXMgbm90IHNldAojIENPTkZJR19Q QVRBX1dJTkJPTkQgaXMgbm90IHNldAoKIwojIFBJTy1vbmx5IFNGRiBjb250cm9sbGVycwojCiMg Q09ORklHX1BBVEFfQ01ENjQwX1BDSSBpcyBub3Qgc2V0CiMgQ09ORklHX1BBVEFfTVBJSVggaXMg bm90IHNldAojIENPTkZJR19QQVRBX05TODc0MTAgaXMgbm90IHNldAojIENPTkZJR19QQVRBX09Q VEkgaXMgbm90IHNldAojIENPTkZJR19QQVRBX1JaMTAwMCBpcyBub3Qgc2V0CgojCiMgR2VuZXJp YyBmYWxsYmFjayAvIGxlZ2FjeSBkcml2ZXJzCiMKQ09ORklHX1BBVEFfQUNQST15CkNPTkZJR19B VEFfR0VORVJJQz15CiMgQ09ORklHX1BBVEFfTEVHQUNZIGlzIG5vdCBzZXQKQ09ORklHX01EPXkK Q09ORklHX0JMS19ERVZfTUQ9eQpDT05GSUdfTURfQVVUT0RFVEVDVD15CkNPTkZJR19NRF9MSU5F QVI9eQpDT05GSUdfTURfUkFJRDA9eQpDT05GSUdfTURfUkFJRDE9eQojIENPTkZJR19NRF9SQUlE MTAgaXMgbm90IHNldApDT05GSUdfTURfUkFJRDQ1Nj15CiMgQ09ORklHX01VTFRJQ09SRV9SQUlE NDU2IGlzIG5vdCBzZXQKIyBDT05GSUdfTURfTVVMVElQQVRIIGlzIG5vdCBzZXQKIyBDT05GSUdf TURfRkFVTFRZIGlzIG5vdCBzZXQKQ09ORklHX0JMS19ERVZfRE09eQojIENPTkZJR19ETV9ERUJV RyBpcyBub3Qgc2V0CkNPTkZJR19ETV9DUllQVD15CkNPTkZJR19ETV9TTkFQU0hPVD15CkNPTkZJ R19ETV9NSVJST1I9eQpDT05GSUdfRE1fUkFJRD15CiMgQ09ORklHX0RNX0xPR19VU0VSU1BBQ0Ug aXMgbm90IHNldApDT05GSUdfRE1fWkVSTz15CiMgQ09ORklHX0RNX01VTFRJUEFUSCBpcyBub3Qg c2V0CiMgQ09ORklHX0RNX0RFTEFZIGlzIG5vdCBzZXQKQ09ORklHX0RNX1VFVkVOVD15CiMgQ09O RklHX1RBUkdFVF9DT1JFIGlzIG5vdCBzZXQKQ09ORklHX0ZVU0lPTj15CiMgQ09ORklHX0ZVU0lP Tl9TUEkgaXMgbm90IHNldAojIENPTkZJR19GVVNJT05fRkMgaXMgbm90IHNldApDT05GSUdfRlVT SU9OX1NBUz15CkNPTkZJR19GVVNJT05fTUFYX1NHRT0xMjgKQ09ORklHX0ZVU0lPTl9DVEw9eQoj IENPTkZJR19GVVNJT05fTE9HR0lORyBpcyBub3Qgc2V0CgojCiMgSUVFRSAxMzk0IChGaXJlV2ly ZSkgc3VwcG9ydAojCiMgQ09ORklHX0ZJUkVXSVJFIGlzIG5vdCBzZXQKIyBDT05GSUdfRklSRVdJ UkVfTk9TWSBpcyBub3Qgc2V0CiMgQ09ORklHX0kyTyBpcyBub3Qgc2V0CiMgQ09ORklHX01BQ0lO VE9TSF9EUklWRVJTIGlzIG5vdCBzZXQKQ09ORklHX05FVERFVklDRVM9eQpDT05GSUdfSUZCPW0K Q09ORklHX0RVTU1ZPW0KQ09ORklHX0JPTkRJTkc9bQpDT05GSUdfTUFDVkxBTj1tCkNPTkZJR19N QUNWVEFQPW0KQ09ORklHX0VRVUFMSVpFUj1tCkNPTkZJR19UVU49bQpDT05GSUdfVkVUSD1tCiMg Q09ORklHX05FVF9TQjEwMDAgaXMgbm90IHNldAojIENPTkZJR19BUkNORVQgaXMgbm90IHNldAoj IENPTkZJR19NSUkgaXMgbm90IHNldAojIENPTkZJR19QSFlMSUIgaXMgbm90IHNldAojIENPTkZJ R19ORVRfRVRIRVJORVQgaXMgbm90IHNldApDT05GSUdfTkVUREVWXzEwMDA9eQojIENPTkZJR19B Q0VOSUMgaXMgbm90IHNldAojIENPTkZJR19ETDJLIGlzIG5vdCBzZXQKIyBDT05GSUdfRTEwMDAg aXMgbm90IHNldApDT05GSUdfRTEwMDBFPXkKIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKIyBD T05GSUdfSUdCIGlzIG5vdCBzZXQKIyBDT05GSUdfSUdCVkYgaXMgbm90IHNldAojIENPTkZJR19O UzgzODIwIGlzIG5vdCBzZXQKIyBDT05GSUdfSEFNQUNISSBpcyBub3Qgc2V0CiMgQ09ORklHX1lF TExPV0ZJTiBpcyBub3Qgc2V0CiMgQ09ORklHX1I4MTY5IGlzIG5vdCBzZXQKIyBDT05GSUdfU0lT MTkwIGlzIG5vdCBzZXQKIyBDT05GSUdfU0tHRSBpcyBub3Qgc2V0CiMgQ09ORklHX1NLWTIgaXMg bm90IHNldAojIENPTkZJR19WSUFfVkVMT0NJVFkgaXMgbm90IHNldAojIENPTkZJR19USUdPTjMg aXMgbm90IHNldAojIENPTkZJR19CTlgyIGlzIG5vdCBzZXQKIyBDT05GSUdfQ05JQyBpcyBub3Qg c2V0CiMgQ09ORklHX1FMQTNYWFggaXMgbm90IHNldAojIENPTkZJR19BVEwxIGlzIG5vdCBzZXQK IyBDT05GSUdfQVRMMUUgaXMgbm90IHNldAojIENPTkZJR19BVEwxQyBpcyBub3Qgc2V0CiMgQ09O RklHX0pNRSBpcyBub3Qgc2V0CiMgQ09ORklHX1NUTU1BQ19FVEggaXMgbm90IHNldAojIENPTkZJ R19QQ0hfR0JFIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUREVWXzEwMDAwIGlzIG5vdCBzZXQKIyBD T05GSUdfVFIgaXMgbm90IHNldAojIENPTkZJR19XTEFOIGlzIG5vdCBzZXQKCiMKIyBFbmFibGUg V2lNQVggKE5ldHdvcmtpbmcgb3B0aW9ucykgdG8gc2VlIHRoZSBXaU1BWCBkcml2ZXJzCiMKCiMK IyBVU0IgTmV0d29yayBBZGFwdGVycwojCiMgQ09ORklHX1VTQl9DQVRDIGlzIG5vdCBzZXQKIyBD T05GSUdfVVNCX0tBV0VUSCBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9QRUdBU1VTIGlzIG5vdCBz ZXQKIyBDT05GSUdfVVNCX1JUTDgxNTAgaXMgbm90IHNldAojIENPTkZJR19VU0JfVVNCTkVUIGlz IG5vdCBzZXQKIyBDT05GSUdfVVNCX0lQSEVUSCBpcyBub3Qgc2V0CiMgQ09ORklHX1dBTiBpcyBu b3Qgc2V0CgojCiMgQ0FJRiB0cmFuc3BvcnQgZHJpdmVycwojCiMgQ09ORklHX0ZEREkgaXMgbm90 IHNldAojIENPTkZJR19ISVBQSSBpcyBub3Qgc2V0CiMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiMg Q09ORklHX1NMSVAgaXMgbm90IHNldAojIENPTkZJR19ORVRfRkMgaXMgbm90IHNldAojIENPTkZJ R19ORVRDT05TT0xFIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUUE9MTCBpcyBub3Qgc2V0CiMgQ09O RklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldAojIENPTkZJR19WTVhORVQzIGlzIG5v dCBzZXQKIyBDT05GSUdfSVNETiBpcyBub3Qgc2V0CiMgQ09ORklHX1BIT05FIGlzIG5vdCBzZXQK CiMKIyBJbnB1dCBkZXZpY2Ugc3VwcG9ydAojCkNPTkZJR19JTlBVVD15CiMgQ09ORklHX0lOUFVU X0ZGX01FTUxFU1MgaXMgbm90IHNldAojIENPTkZJR19JTlBVVF9QT0xMREVWIGlzIG5vdCBzZXQK IyBDT05GSUdfSU5QVVRfU1BBUlNFS01BUCBpcyBub3Qgc2V0CgojCiMgVXNlcmxhbmQgaW50ZXJm YWNlcwojCkNPTkZJR19JTlBVVF9NT1VTRURFVj15CiMgQ09ORklHX0lOUFVUX01PVVNFREVWX1BT QVVYIGlzIG5vdCBzZXQKQ09ORklHX0lOUFVUX01PVVNFREVWX1NDUkVFTl9YPTEwMjQKQ09ORklH X0lOUFVUX01PVVNFREVWX1NDUkVFTl9ZPTc2OAojIENPTkZJR19JTlBVVF9KT1lERVYgaXMgbm90 IHNldApDT05GSUdfSU5QVVRfRVZERVY9eQojIENPTkZJR19JTlBVVF9FVkJVRyBpcyBub3Qgc2V0 CgojCiMgSW5wdXQgRGV2aWNlIERyaXZlcnMKIwpDT05GSUdfSU5QVVRfS0VZQk9BUkQ9eQojIENP TkZJR19LRVlCT0FSRF9BRFA1NTg4IGlzIG5vdCBzZXQKQ09ORklHX0tFWUJPQVJEX0FUS0JEPXkK IyBDT05GSUdfS0VZQk9BUkRfUVQyMTYwIGlzIG5vdCBzZXQKIyBDT05GSUdfS0VZQk9BUkRfTEtL QkQgaXMgbm90IHNldAojIENPTkZJR19LRVlCT0FSRF9UQ0E2NDE2IGlzIG5vdCBzZXQKIyBDT05G SUdfS0VZQk9BUkRfTUFYNzM1OSBpcyBub3Qgc2V0CiMgQ09ORklHX0tFWUJPQVJEX01DUyBpcyBu b3Qgc2V0CiMgQ09ORklHX0tFWUJPQVJEX05FV1RPTiBpcyBub3Qgc2V0CiMgQ09ORklHX0tFWUJP QVJEX09QRU5DT1JFUyBpcyBub3Qgc2V0CiMgQ09ORklHX0tFWUJPQVJEX1NUT1dBV0FZIGlzIG5v dCBzZXQKIyBDT05GSUdfS0VZQk9BUkRfU1VOS0JEIGlzIG5vdCBzZXQKIyBDT05GSUdfS0VZQk9B UkRfWFRLQkQgaXMgbm90IHNldAojIENPTkZJR19JTlBVVF9NT1VTRSBpcyBub3Qgc2V0CiMgQ09O RklHX0lOUFVUX0pPWVNUSUNLIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5QVVRfVEFCTEVUIGlzIG5v dCBzZXQKIyBDT05GSUdfSU5QVVRfVE9VQ0hTQ1JFRU4gaXMgbm90IHNldAojIENPTkZJR19JTlBV VF9NSVNDIGlzIG5vdCBzZXQKCiMKIyBIYXJkd2FyZSBJL08gcG9ydHMKIwpDT05GSUdfU0VSSU89 eQpDT05GSUdfU0VSSU9fSTgwNDI9eQojIENPTkZJR19TRVJJT19TRVJQT1JUIGlzIG5vdCBzZXQK IyBDT05GSUdfU0VSSU9fQ1Q4MkM3MTAgaXMgbm90IHNldAojIENPTkZJR19TRVJJT19QQ0lQUzIg aXMgbm90IHNldApDT05GSUdfU0VSSU9fTElCUFMyPXkKIyBDT05GSUdfU0VSSU9fUkFXIGlzIG5v dCBzZXQKIyBDT05GSUdfU0VSSU9fQUxURVJBX1BTMiBpcyBub3Qgc2V0CiMgQ09ORklHX1NFUklP X1BTMk1VTFQgaXMgbm90IHNldAojIENPTkZJR19HQU1FUE9SVCBpcyBub3Qgc2V0CgojCiMgQ2hh cmFjdGVyIGRldmljZXMKIwpDT05GSUdfVlQ9eQpDT05GSUdfQ09OU09MRV9UUkFOU0xBVElPTlM9 eQpDT05GSUdfVlRfQ09OU09MRT15CkNPTkZJR19IV19DT05TT0xFPXkKQ09ORklHX1ZUX0hXX0NP TlNPTEVfQklORElORz15CiMgQ09ORklHX0RFVktNRU0gaXMgbm90IHNldAojIENPTkZJR19TRVJJ QUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAojIENPTkZJR19OX0dTTSBpcyBub3Qgc2V0CiMgQ09O RklHX05PWk9NSSBpcyBub3Qgc2V0CgojCiMgU2VyaWFsIGRyaXZlcnMKIwojIENPTkZJR19TRVJJ QUxfODI1MCBpcyBub3Qgc2V0CkNPTkZJR19GSVhfRUFSTFlDT05fTUVNPXkKCiMKIyBOb24tODI1 MCBzZXJpYWwgcG9ydCBzdXBwb3J0CiMKIyBDT05GSUdfU0VSSUFMX01GRF9IU1UgaXMgbm90IHNl dAojIENPTkZJR19TRVJJQUxfSlNNIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VSSUFMX1RJTUJFUkRB TEUgaXMgbm90IHNldAojIENPTkZJR19TRVJJQUxfQUxURVJBX0pUQUdVQVJUIGlzIG5vdCBzZXQK IyBDT05GSUdfU0VSSUFMX0FMVEVSQV9VQVJUIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VSSUFMX1BD SF9VQVJUIGlzIG5vdCBzZXQKQ09ORklHX1VOSVg5OF9QVFlTPXkKIyBDT05GSUdfREVWUFRTX01V TFRJUExFX0lOU1RBTkNFUyBpcyBub3Qgc2V0CiMgQ09ORklHX0xFR0FDWV9QVFlTIGlzIG5vdCBz ZXQKIyBDT05GSUdfSVBNSV9IQU5ETEVSIGlzIG5vdCBzZXQKQ09ORklHX0hXX1JBTkRPTT15CiMg Q09ORklHX0hXX1JBTkRPTV9USU1FUklPTUVNIGlzIG5vdCBzZXQKQ09ORklHX0hXX1JBTkRPTV9J TlRFTD15CiMgQ09ORklHX0hXX1JBTkRPTV9BTUQgaXMgbm90IHNldAojIENPTkZJR19IV19SQU5E T01fVklBIGlzIG5vdCBzZXQKIyBDT05GSUdfTlZSQU0gaXMgbm90IHNldAojIENPTkZJR19SMzk2 NCBpcyBub3Qgc2V0CiMgQ09ORklHX0FQUExJQ09NIGlzIG5vdCBzZXQKIyBDT05GSUdfTVdBVkUg aXMgbm90IHNldAojIENPTkZJR19SQVdfRFJJVkVSIGlzIG5vdCBzZXQKQ09ORklHX0hQRVQ9eQpD T05GSUdfSFBFVF9NTUFQPXkKIyBDT05GSUdfSEFOR0NIRUNLX1RJTUVSIGlzIG5vdCBzZXQKIyBD T05GSUdfVENHX1RQTSBpcyBub3Qgc2V0CiMgQ09ORklHX1RFTENMT0NLIGlzIG5vdCBzZXQKQ09O RklHX0RFVlBPUlQ9eQojIENPTkZJR19SQU1PT1BTIGlzIG5vdCBzZXQKQ09ORklHX0kyQz15CkNP TkZJR19JMkNfQk9BUkRJTkZPPXkKQ09ORklHX0kyQ19DT01QQVQ9eQpDT05GSUdfSTJDX0NIQVJE RVY9eQojIENPTkZJR19JMkNfTVVYIGlzIG5vdCBzZXQKQ09ORklHX0kyQ19IRUxQRVJfQVVUTz15 CgojCiMgSTJDIEhhcmR3YXJlIEJ1cyBzdXBwb3J0CiMKCiMKIyBQQyBTTUJ1cyBob3N0IGNvbnRy b2xsZXIgZHJpdmVycwojCiMgQ09ORklHX0kyQ19BTEkxNTM1IGlzIG5vdCBzZXQKIyBDT05GSUdf STJDX0FMSTE1NjMgaXMgbm90IHNldAojIENPTkZJR19JMkNfQUxJMTVYMyBpcyBub3Qgc2V0CiMg Q09ORklHX0kyQ19BTUQ3NTYgaXMgbm90IHNldAojIENPTkZJR19JMkNfQU1EODExMSBpcyBub3Qg c2V0CkNPTkZJR19JMkNfSTgwMT15CkNPTkZJR19JMkNfSVNDSD1tCiMgQ09ORklHX0kyQ19QSUlY NCBpcyBub3Qgc2V0CiMgQ09ORklHX0kyQ19ORk9SQ0UyIGlzIG5vdCBzZXQKIyBDT05GSUdfSTJD X1NJUzU1OTUgaXMgbm90IHNldAojIENPTkZJR19JMkNfU0lTNjMwIGlzIG5vdCBzZXQKIyBDT05G SUdfSTJDX1NJUzk2WCBpcyBub3Qgc2V0CiMgQ09ORklHX0kyQ19WSUEgaXMgbm90IHNldAojIENP TkZJR19JMkNfVklBUFJPIGlzIG5vdCBzZXQKCiMKIyBBQ1BJIGRyaXZlcnMKIwojIENPTkZJR19J MkNfU0NNSSBpcyBub3Qgc2V0CgojCiMgSTJDIHN5c3RlbSBidXMgZHJpdmVycyAobW9zdGx5IGVt YmVkZGVkIC8gc3lzdGVtLW9uLWNoaXApCiMKIyBDT05GSUdfSTJDX0lOVEVMX01JRCBpcyBub3Qg c2V0CiMgQ09ORklHX0kyQ19PQ09SRVMgaXMgbm90IHNldAojIENPTkZJR19JMkNfUENBX1BMQVRG T1JNIGlzIG5vdCBzZXQKIyBDT05GSUdfSTJDX1NJTVRFQyBpcyBub3Qgc2V0CiMgQ09ORklHX0ky Q19YSUxJTlggaXMgbm90IHNldAojIENPTkZJR19JMkNfRUcyMFQgaXMgbm90IHNldAoKIwojIEV4 dGVybmFsIEkyQy9TTUJ1cyBhZGFwdGVyIGRyaXZlcnMKIwojIENPTkZJR19JMkNfUEFSUE9SVF9M SUdIVCBpcyBub3Qgc2V0CiMgQ09ORklHX0kyQ19UQU9TX0VWTSBpcyBub3Qgc2V0CiMgQ09ORklH X0kyQ19USU5ZX1VTQiBpcyBub3Qgc2V0CgojCiMgT3RoZXIgSTJDL1NNQnVzIGJ1cyBkcml2ZXJz CiMKIyBDT05GSUdfSTJDX1NUVUIgaXMgbm90IHNldAojIENPTkZJR19JMkNfREVCVUdfQ09SRSBp cyBub3Qgc2V0CiMgQ09ORklHX0kyQ19ERUJVR19BTEdPIGlzIG5vdCBzZXQKIyBDT05GSUdfSTJD X0RFQlVHX0JVUyBpcyBub3Qgc2V0CiMgQ09ORklHX1NQSSBpcyBub3Qgc2V0CgojCiMgUFBTIHN1 cHBvcnQKIwojIENPTkZJR19QUFMgaXMgbm90IHNldAoKIwojIFBQUyBnZW5lcmF0b3JzIHN1cHBv cnQKIwpDT05GSUdfQVJDSF9XQU5UX09QVElPTkFMX0dQSU9MSUI9eQojIENPTkZJR19HUElPTElC IGlzIG5vdCBzZXQKIyBDT05GSUdfVzEgaXMgbm90IHNldApDT05GSUdfUE9XRVJfU1VQUExZPXkK IyBDT05GSUdfUE9XRVJfU1VQUExZX0RFQlVHIGlzIG5vdCBzZXQKIyBDT05GSUdfUERBX1BPV0VS IGlzIG5vdCBzZXQKIyBDT05GSUdfVEVTVF9QT1dFUiBpcyBub3Qgc2V0CiMgQ09ORklHX0JBVFRF UllfRFMyNzgyIGlzIG5vdCBzZXQKIyBDT05GSUdfQkFUVEVSWV9CUTIwWjc1IGlzIG5vdCBzZXQK IyBDT05GSUdfQkFUVEVSWV9CUTI3eDAwIGlzIG5vdCBzZXQKIyBDT05GSUdfQkFUVEVSWV9NQVgx NzA0MCBpcyBub3Qgc2V0CiMgQ09ORklHX0JBVFRFUllfTUFYMTcwNDIgaXMgbm90IHNldApDT05G SUdfSFdNT049eQpDT05GSUdfSFdNT05fVklEPXkKIyBDT05GSUdfSFdNT05fREVCVUdfQ0hJUCBp cyBub3Qgc2V0CgojCiMgTmF0aXZlIGRyaXZlcnMKIwojIENPTkZJR19TRU5TT1JTX0FCSVRVR1VS VSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfQUJJVFVHVVJVMyBpcyBub3Qgc2V0CiMgQ09O RklHX1NFTlNPUlNfQUQ3NDE0IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19BRDc0MTggaXMg bm90IHNldAojIENPTkZJR19TRU5TT1JTX0FETTEwMjEgaXMgbm90IHNldAojIENPTkZJR19TRU5T T1JTX0FETTEwMjUgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FETTEwMjYgaXMgbm90IHNl dAojIENPTkZJR19TRU5TT1JTX0FETTEwMjkgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FE TTEwMzEgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FETTkyNDAgaXMgbm90IHNldAojIENP TkZJR19TRU5TT1JTX0FEVDc0MTEgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FEVDc0NjIg aXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FEVDc0NzAgaXMgbm90IHNldAojIENPTkZJR19T RU5TT1JTX0FEVDc0NzUgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FTQzc2MjEgaXMgbm90 IHNldAojIENPTkZJR19TRU5TT1JTX0s4VEVNUCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNf SzEwVEVNUCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfQVNCMTAwIGlzIG5vdCBzZXQKIyBD T05GSUdfU0VOU09SU19BVFhQMSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfRFM2MjAgaXMg bm90IHNldAojIENPTkZJR19TRU5TT1JTX0RTMTYyMSBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JT X0k1S19BTUI9eQojIENPTkZJR19TRU5TT1JTX0Y3MTgwNUYgaXMgbm90IHNldAojIENPTkZJR19T RU5TT1JTX0Y3MTg4MkZHIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19GNzUzNzVTIGlzIG5v dCBzZXQKIyBDT05GSUdfU0VOU09SU19GU0NITUQgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JT X0c3NjBBIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19HTDUxOFNNIGlzIG5vdCBzZXQKIyBD T05GSUdfU0VOU09SU19HTDUyMFNNIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfQ09SRVRFTVA9 eQojIENPTkZJR19TRU5TT1JTX1BLR1RFTVAgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0lU ODcgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0pDNDIgaXMgbm90IHNldAojIENPTkZJR19T RU5TT1JTX0xNNjMgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0xNNzMgaXMgbm90IHNldAoj IENPTkZJR19TRU5TT1JTX0xNNzUgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0xNNzcgaXMg bm90IHNldAojIENPTkZJR19TRU5TT1JTX0xNNzggaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JT X0xNODAgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0xNODMgaXMgbm90IHNldAojIENPTkZJ R19TRU5TT1JTX0xNODUgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0xNODcgaXMgbm90IHNl dAojIENPTkZJR19TRU5TT1JTX0xNOTAgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0xNOTIg aXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0xNOTMgaXMgbm90IHNldAojIENPTkZJR19TRU5T T1JTX0xUQzQyMTUgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0xUQzQyNDUgaXMgbm90IHNl dAojIENPTkZJR19TRU5TT1JTX0xUQzQyNjEgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0xN OTUyNDEgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX01BWDE2MTkgaXMgbm90IHNldAojIENP TkZJR19TRU5TT1JTX01BWDY2NTAgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1BDODczNjAg aXMgbm90IHNldApDT05GSUdfU0VOU09SU19QQzg3NDI3PW0KIyBDT05GSUdfU0VOU09SU19QQ0Y4 NTkxIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19TSFQyMSBpcyBub3Qgc2V0CiMgQ09ORklH X1NFTlNPUlNfU0lTNTU5NSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfU01NNjY1IGlzIG5v dCBzZXQKIyBDT05GSUdfU0VOU09SU19ETUUxNzM3IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09S U19FTUMxNDAzIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19FTUMyMTAzIGlzIG5vdCBzZXQK IyBDT05GSUdfU0VOU09SU19TTVNDNDdNMSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfU01T QzQ3TTE5MiBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfU01TQzQ3QjM5NyBpcyBub3Qgc2V0 CiMgQ09ORklHX1NFTlNPUlNfQURTNzgyOCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfQU1D NjgyMSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfVEhNQzUwIGlzIG5vdCBzZXQKIyBDT05G SUdfU0VOU09SU19UTVAxMDIgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1RNUDQwMSBpcyBu b3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfVE1QNDIxIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09S U19WSUFfQ1BVVEVNUCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfVklBNjg2QSBpcyBub3Qg c2V0CiMgQ09ORklHX1NFTlNPUlNfVlQxMjExIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19W VDgyMzEgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1c4Mzc4MUQgaXMgbm90IHNldAojIENP TkZJR19TRU5TT1JTX1c4Mzc5MUQgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1c4Mzc5MkQg aXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1c4Mzc5MyBpcyBub3Qgc2V0CkNPTkZJR19TRU5T T1JTX1c4Mzc5NT15CiMgQ09ORklHX1NFTlNPUlNfVzgzNzk1X0ZBTkNUUkwgaXMgbm90IHNldAoj IENPTkZJR19TRU5TT1JTX1c4M0w3ODVUUyBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfVzgz TDc4Nk5HIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19XODM2MjdIRiBpcyBub3Qgc2V0CkNP TkZJR19TRU5TT1JTX1c4MzYyN0VIRj15CiMgQ09ORklHX1NFTlNPUlNfTElTM19JMkMgaXMgbm90 IHNldAojIENPTkZJR19TRU5TT1JTX0FQUExFU01DIGlzIG5vdCBzZXQKCiMKIyBBQ1BJIGRyaXZl cnMKIwojIENPTkZJR19TRU5TT1JTX0FUSzAxMTAgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JT X0xJUzNMVjAyRCBpcyBub3Qgc2V0CkNPTkZJR19USEVSTUFMPXkKQ09ORklHX1RIRVJNQUxfSFdN T049eQpDT05GSUdfV0FUQ0hET0c9eQojIENPTkZJR19XQVRDSERPR19OT1dBWU9VVCBpcyBub3Qg c2V0CgojCiMgV2F0Y2hkb2cgRGV2aWNlIERyaXZlcnMKIwojIENPTkZJR19TT0ZUX1dBVENIRE9H IGlzIG5vdCBzZXQKIyBDT05GSUdfQUNRVUlSRV9XRFQgaXMgbm90IHNldAojIENPTkZJR19BRFZB TlRFQ0hfV0RUIGlzIG5vdCBzZXQKIyBDT05GSUdfQUxJTTE1MzVfV0RUIGlzIG5vdCBzZXQKIyBD T05GSUdfQUxJTTcxMDFfV0RUIGlzIG5vdCBzZXQKIyBDT05GSUdfRjcxODA4RV9XRFQgaXMgbm90 IHNldAojIENPTkZJR19TUDUxMDBfVENPIGlzIG5vdCBzZXQKIyBDT05GSUdfU0M1MjBfV0RUIGlz IG5vdCBzZXQKIyBDT05GSUdfU0JDX0ZJVFBDMl9XQVRDSERPRyBpcyBub3Qgc2V0CiMgQ09ORklH X0VVUk9URUNIX1dEVCBpcyBub3Qgc2V0CiMgQ09ORklHX0lCNzAwX1dEVCBpcyBub3Qgc2V0CiMg Q09ORklHX0lCTUFTUiBpcyBub3Qgc2V0CiMgQ09ORklHX1dBRkVSX1dEVCBpcyBub3Qgc2V0CiMg Q09ORklHX0k2MzAwRVNCX1dEVCBpcyBub3Qgc2V0CiMgQ09ORklHX0lUQ09fV0RUIGlzIG5vdCBz ZXQKIyBDT05GSUdfSVQ4NzEyRl9XRFQgaXMgbm90IHNldAojIENPTkZJR19JVDg3X1dEVCBpcyBu b3Qgc2V0CiMgQ09ORklHX0hQX1dBVENIRE9HIGlzIG5vdCBzZXQKIyBDT05GSUdfU0MxMjAwX1dE VCBpcyBub3Qgc2V0CiMgQ09ORklHX1BDODc0MTNfV0RUIGlzIG5vdCBzZXQKIyBDT05GSUdfTlZf VENPIGlzIG5vdCBzZXQKIyBDT05GSUdfNjBYWF9XRFQgaXMgbm90IHNldAojIENPTkZJR19TQkM4 MzYwX1dEVCBpcyBub3Qgc2V0CiMgQ09ORklHX0NQVTVfV0RUIGlzIG5vdCBzZXQKIyBDT05GSUdf U01TQ19TQ0gzMTFYX1dEVCBpcyBub3Qgc2V0CiMgQ09ORklHX1NNU0MzN0I3ODdfV0RUIGlzIG5v dCBzZXQKIyBDT05GSUdfVzgzNjI3SEZfV0RUIGlzIG5vdCBzZXQKIyBDT05GSUdfVzgzNjk3SEZf V0RUIGlzIG5vdCBzZXQKIyBDT05GSUdfVzgzNjk3VUdfV0RUIGlzIG5vdCBzZXQKIyBDT05GSUdf VzgzODc3Rl9XRFQgaXMgbm90IHNldAojIENPTkZJR19XODM5NzdGX1dEVCBpcyBub3Qgc2V0CiMg Q09ORklHX01BQ0haX1dEVCBpcyBub3Qgc2V0CiMgQ09ORklHX1NCQ19FUFhfQzNfV0FUQ0hET0cg aXMgbm90IHNldAoKIwojIFBDSS1iYXNlZCBXYXRjaGRvZyBDYXJkcwojCiMgQ09ORklHX1BDSVBD V0FUQ0hET0cgaXMgbm90IHNldAojIENPTkZJR19XRFRQQ0kgaXMgbm90IHNldAoKIwojIFVTQi1i YXNlZCBXYXRjaGRvZyBDYXJkcwojCiMgQ09ORklHX1VTQlBDV0FUQ0hET0cgaXMgbm90IHNldApD T05GSUdfU1NCX1BPU1NJQkxFPXkKCiMKIyBTb25pY3MgU2lsaWNvbiBCYWNrcGxhbmUKIwojIENP TkZJR19TU0IgaXMgbm90IHNldAojIENPTkZJR19NRkRfU1VQUE9SVCBpcyBub3Qgc2V0CkNPTkZJ R19NRkRfQ09SRT1tCkNPTkZJR19MUENfU0NIPW0KIyBDT05GSUdfUkVHVUxBVE9SIGlzIG5vdCBz ZXQKIyBDT05GSUdfTUVESUFfU1VQUE9SVCBpcyBub3Qgc2V0CgojCiMgR3JhcGhpY3Mgc3VwcG9y dAojCkNPTkZJR19BR1A9eQojIENPTkZJR19BR1BfQU1ENjQgaXMgbm90IHNldAojIENPTkZJR19B R1BfSU5URUwgaXMgbm90IHNldAojIENPTkZJR19BR1BfU0lTIGlzIG5vdCBzZXQKIyBDT05GSUdf QUdQX1ZJQSBpcyBub3Qgc2V0CkNPTkZJR19WR0FfQVJCPXkKQ09ORklHX1ZHQV9BUkJfTUFYX0dQ VVM9MTYKIyBDT05GSUdfVkdBX1NXSVRDSEVST08gaXMgbm90IHNldAojIENPTkZJR19EUk0gaXMg bm90IHNldAojIENPTkZJR19TVFVCX1BPVUxTQk8gaXMgbm90IHNldAojIENPTkZJR19WR0FTVEFU RSBpcyBub3Qgc2V0CiMgQ09ORklHX1ZJREVPX09VVFBVVF9DT05UUk9MIGlzIG5vdCBzZXQKIyBD T05GSUdfRkIgaXMgbm90IHNldAojIENPTkZJR19CQUNLTElHSFRfTENEX1NVUFBPUlQgaXMgbm90 IHNldAoKIwojIERpc3BsYXkgZGV2aWNlIHN1cHBvcnQKIwojIENPTkZJR19ESVNQTEFZX1NVUFBP UlQgaXMgbm90IHNldAoKIwojIENvbnNvbGUgZGlzcGxheSBkcml2ZXIgc3VwcG9ydAojCkNPTkZJ R19WR0FfQ09OU09MRT15CkNPTkZJR19WR0FDT05fU09GVF9TQ1JPTExCQUNLPXkKQ09ORklHX1ZH QUNPTl9TT0ZUX1NDUk9MTEJBQ0tfU0laRT01MTIKQ09ORklHX0RVTU1ZX0NPTlNPTEU9eQojIENP TkZJR19TT1VORCBpcyBub3Qgc2V0CkNPTkZJR19ISURfU1VQUE9SVD15CkNPTkZJR19ISUQ9eQoj IENPTkZJR19ISURSQVcgaXMgbm90IHNldAoKIwojIFVTQiBJbnB1dCBEZXZpY2VzCiMKQ09ORklH X1VTQl9ISUQ9eQojIENPTkZJR19ISURfUElEIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX0hJRERF ViBpcyBub3Qgc2V0CgojCiMgU3BlY2lhbCBISUQgZHJpdmVycwojCiMgQ09ORklHX0hJRF8zTV9Q Q1QgaXMgbm90IHNldApDT05GSUdfSElEX0E0VEVDSD15CiMgQ09ORklHX0hJRF9BQ1JVWCBpcyBu b3Qgc2V0CkNPTkZJR19ISURfQVBQTEU9eQpDT05GSUdfSElEX0JFTEtJTj15CiMgQ09ORklHX0hJ RF9DQU5ETyBpcyBub3Qgc2V0CkNPTkZJR19ISURfQ0hFUlJZPXkKQ09ORklHX0hJRF9DSElDT05Z PXkKQ09ORklHX0hJRF9DWVBSRVNTPXkKIyBDT05GSUdfSElEX0RSQUdPTlJJU0UgaXMgbm90IHNl dAojIENPTkZJR19ISURfRU1TX0ZGIGlzIG5vdCBzZXQKIyBDT05GSUdfSElEX0VHQUxBWCBpcyBu b3Qgc2V0CkNPTkZJR19ISURfRVpLRVk9eQpDT05GSUdfSElEX0tZRT15CiMgQ09ORklHX0hJRF9V Q0xPR0lDIGlzIG5vdCBzZXQKIyBDT05GSUdfSElEX1dBTFRPUCBpcyBub3Qgc2V0CiMgQ09ORklH X0hJRF9HWVJBVElPTiBpcyBub3Qgc2V0CiMgQ09ORklHX0hJRF9UV0lOSEFOIGlzIG5vdCBzZXQK Q09ORklHX0hJRF9LRU5TSU5HVE9OPXkKQ09ORklHX0hJRF9MT0dJVEVDSD15CiMgQ09ORklHX0xP R0lURUNIX0ZGIGlzIG5vdCBzZXQKIyBDT05GSUdfTE9HSVJVTUJMRVBBRDJfRkYgaXMgbm90IHNl dAojIENPTkZJR19MT0dJRzk0MF9GRiBpcyBub3Qgc2V0CiMgQ09ORklHX0xPR0lXSUlfRkYgaXMg bm90IHNldApDT05GSUdfSElEX01JQ1JPU09GVD15CiMgQ09ORklHX0hJRF9NT1NBUlQgaXMgbm90 IHNldApDT05GSUdfSElEX01PTlRFUkVZPXkKIyBDT05GSUdfSElEX01VTFRJVE9VQ0ggaXMgbm90 IHNldAojIENPTkZJR19ISURfTlRSSUcgaXMgbm90IHNldAojIENPTkZJR19ISURfT1JURUsgaXMg bm90IHNldAojIENPTkZJR19ISURfUEFOVEhFUkxPUkQgaXMgbm90IHNldAojIENPTkZJR19ISURf UEVUQUxZTlggaXMgbm90IHNldAojIENPTkZJR19ISURfUElDT0xDRCBpcyBub3Qgc2V0CiMgQ09O RklHX0hJRF9RVUFOVEEgaXMgbm90IHNldAojIENPTkZJR19ISURfUk9DQ0FUIGlzIG5vdCBzZXQK IyBDT05GSUdfSElEX1JPQ0NBVF9LT05FIGlzIG5vdCBzZXQKIyBDT05GSUdfSElEX1JPQ0NBVF9L T05FUExVUyBpcyBub3Qgc2V0CiMgQ09ORklHX0hJRF9ST0NDQVRfUFlSQSBpcyBub3Qgc2V0CiMg Q09ORklHX0hJRF9TQU1TVU5HIGlzIG5vdCBzZXQKIyBDT05GSUdfSElEX1NPTlkgaXMgbm90IHNl dAojIENPTkZJR19ISURfU1RBTlRVTSBpcyBub3Qgc2V0CiMgQ09ORklHX0hJRF9TVU5QTFVTIGlz IG5vdCBzZXQKIyBDT05GSUdfSElEX0dSRUVOQVNJQSBpcyBub3Qgc2V0CiMgQ09ORklHX0hJRF9T TUFSVEpPWVBMVVMgaXMgbm90IHNldAojIENPTkZJR19ISURfVE9QU0VFRCBpcyBub3Qgc2V0CiMg Q09ORklHX0hJRF9USFJVU1RNQVNURVIgaXMgbm90IHNldAojIENPTkZJR19ISURfWkVST1BMVVMg aXMgbm90IHNldAojIENPTkZJR19ISURfWllEQUNST04gaXMgbm90IHNldApDT05GSUdfVVNCX1NV UFBPUlQ9eQpDT05GSUdfVVNCX0FSQ0hfSEFTX0hDRD15CkNPTkZJR19VU0JfQVJDSF9IQVNfT0hD ST15CkNPTkZJR19VU0JfQVJDSF9IQVNfRUhDST15CkNPTkZJR19VU0I9eQojIENPTkZJR19VU0Jf REVCVUcgaXMgbm90IHNldApDT05GSUdfVVNCX0FOTk9VTkNFX05FV19ERVZJQ0VTPXkKCiMKIyBN aXNjZWxsYW5lb3VzIFVTQiBvcHRpb25zCiMKQ09ORklHX1VTQl9ERVZJQ0VGUz15CiMgQ09ORklH X1VTQl9ERVZJQ0VfQ0xBU1MgaXMgbm90IHNldAojIENPTkZJR19VU0JfRFlOQU1JQ19NSU5PUlMg aXMgbm90IHNldAojIENPTkZJR19VU0JfU1VTUEVORCBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9N T04gaXMgbm90IHNldAojIENPTkZJR19VU0JfV1VTQiBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9X VVNCX0NCQUYgaXMgbm90IHNldAoKIwojIFVTQiBIb3N0IENvbnRyb2xsZXIgRHJpdmVycwojCiMg Q09ORklHX1VTQl9DNjdYMDBfSENEIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX1hIQ0lfSENEIGlz IG5vdCBzZXQKQ09ORklHX1VTQl9FSENJX0hDRD15CkNPTkZJR19VU0JfRUhDSV9ST09UX0hVQl9U VD15CkNPTkZJR19VU0JfRUhDSV9UVF9ORVdTQ0hFRD15CiMgQ09ORklHX1VTQl9PWFUyMTBIUF9I Q0QgaXMgbm90IHNldAojIENPTkZJR19VU0JfSVNQMTE2WF9IQ0QgaXMgbm90IHNldAojIENPTkZJ R19VU0JfSVNQMTc2MF9IQ0QgaXMgbm90IHNldAojIENPTkZJR19VU0JfSVNQMTM2Ml9IQ0QgaXMg bm90IHNldApDT05GSUdfVVNCX09IQ0lfSENEPXkKIyBDT05GSUdfVVNCX09IQ0lfQklHX0VORElB Tl9ERVNDIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX09IQ0lfQklHX0VORElBTl9NTUlPIGlzIG5v dCBzZXQKQ09ORklHX1VTQl9PSENJX0xJVFRMRV9FTkRJQU49eQpDT05GSUdfVVNCX1VIQ0lfSENE PXkKIyBDT05GSUdfVVNCX1NMODExX0hDRCBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9SOEE2NjU5 N19IQ0QgaXMgbm90IHNldAojIENPTkZJR19VU0JfV0hDSV9IQ0QgaXMgbm90IHNldAojIENPTkZJ R19VU0JfSFdBX0hDRCBpcyBub3Qgc2V0CgojCiMgVVNCIERldmljZSBDbGFzcyBkcml2ZXJzCiMK IyBDT05GSUdfVVNCX0FDTSBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9QUklOVEVSIGlzIG5vdCBz ZXQKIyBDT05GSUdfVVNCX1dETSBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9UTUMgaXMgbm90IHNl dAoKIwojIE5PVEU6IFVTQl9TVE9SQUdFIGRlcGVuZHMgb24gU0NTSSBidXQgQkxLX0RFVl9TRCBt YXkKIwoKIwojIGFsc28gYmUgbmVlZGVkOyBzZWUgVVNCX1NUT1JBR0UgSGVscCBmb3IgbW9yZSBp bmZvCiMKQ09ORklHX1VTQl9TVE9SQUdFPXkKIyBDT05GSUdfVVNCX1NUT1JBR0VfREVCVUcgaXMg bm90IHNldAojIENPTkZJR19VU0JfU1RPUkFHRV9EQVRBRkFCIGlzIG5vdCBzZXQKIyBDT05GSUdf VVNCX1NUT1JBR0VfRlJFRUNPTSBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9TVE9SQUdFX0lTRDIw MCBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9TVE9SQUdFX1VTQkFUIGlzIG5vdCBzZXQKIyBDT05G SUdfVVNCX1NUT1JBR0VfU0REUjA5IGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX1NUT1JBR0VfU0RE UjU1IGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX1NUT1JBR0VfSlVNUFNIT1QgaXMgbm90IHNldAoj IENPTkZJR19VU0JfU1RPUkFHRV9BTEFVREEgaXMgbm90IHNldAojIENPTkZJR19VU0JfU1RPUkFH RV9PTkVUT1VDSCBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9TVE9SQUdFX0tBUk1BIGlzIG5vdCBz ZXQKIyBDT05GSUdfVVNCX1NUT1JBR0VfQ1lQUkVTU19BVEFDQiBpcyBub3Qgc2V0CiMgQ09ORklH X1VTQl9VQVMgaXMgbm90IHNldAojIENPTkZJR19VU0JfTElCVVNVQUwgaXMgbm90IHNldAoKIwoj IFVTQiBJbWFnaW5nIGRldmljZXMKIwojIENPTkZJR19VU0JfTURDODAwIGlzIG5vdCBzZXQKIyBD T05GSUdfVVNCX01JQ1JPVEVLIGlzIG5vdCBzZXQKCiMKIyBVU0IgcG9ydCBkcml2ZXJzCiMKIyBD T05GSUdfVVNCX1NFUklBTCBpcyBub3Qgc2V0CgojCiMgVVNCIE1pc2NlbGxhbmVvdXMgZHJpdmVy cwojCiMgQ09ORklHX1VTQl9FTUk2MiBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9FTUkyNiBpcyBu b3Qgc2V0CiMgQ09ORklHX1VTQl9BRFVUVVggaXMgbm90IHNldAojIENPTkZJR19VU0JfU0VWU0VH IGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX1JJTzUwMCBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9M RUdPVE9XRVIgaXMgbm90IHNldAojIENPTkZJR19VU0JfTENEIGlzIG5vdCBzZXQKIyBDT05GSUdf VVNCX0xFRCBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9DWVBSRVNTX0NZN0M2MyBpcyBub3Qgc2V0 CiMgQ09ORklHX1VTQl9DWVRIRVJNIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX0lETU9VU0UgaXMg bm90IHNldAojIENPTkZJR19VU0JfRlRESV9FTEFOIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX0FQ UExFRElTUExBWSBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9TSVNVU0JWR0EgaXMgbm90IHNldAoj IENPTkZJR19VU0JfTEQgaXMgbm90IHNldAojIENPTkZJR19VU0JfVFJBTkNFVklCUkFUT1IgaXMg bm90IHNldAojIENPTkZJR19VU0JfSU9XQVJSSU9SIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX1RF U1QgaXMgbm90IHNldAojIENPTkZJR19VU0JfSVNJR0hURlcgaXMgbm90IHNldAojIENPTkZJR19V U0JfWVVSRVggaXMgbm90IHNldAojIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKCiMKIyBP VEcgYW5kIHJlbGF0ZWQgaW5mcmFzdHJ1Y3R1cmUKIwojIENPTkZJR19OT1BfVVNCX1hDRUlWIGlz IG5vdCBzZXQKIyBDT05GSUdfVVdCIGlzIG5vdCBzZXQKIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQK IyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldAojIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0 CiMgQ09ORklHX05GQ19ERVZJQ0VTIGlzIG5vdCBzZXQKIyBDT05GSUdfQUNDRVNTSUJJTElUWSBp cyBub3Qgc2V0CiMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldApDT05GSUdfRURBQz15Cgoj CiMgUmVwb3J0aW5nIHN1YnN5c3RlbXMKIwojIENPTkZJR19FREFDX0RFQlVHIGlzIG5vdCBzZXQK Q09ORklHX0VEQUNfREVDT0RFX01DRT15CiMgQ09ORklHX0VEQUNfTUNFX0lOSiBpcyBub3Qgc2V0 CkNPTkZJR19FREFDX01NX0VEQUM9eQojIENPTkZJR19FREFDX0FNRDY0IGlzIG5vdCBzZXQKIyBD T05GSUdfRURBQ19FNzUyWCBpcyBub3Qgc2V0CiMgQ09ORklHX0VEQUNfSTgyOTc1WCBpcyBub3Qg c2V0CiMgQ09ORklHX0VEQUNfSTMwMDAgaXMgbm90IHNldAojIENPTkZJR19FREFDX0kzMjAwIGlz IG5vdCBzZXQKIyBDT05GSUdfRURBQ19YMzggaXMgbm90IHNldAojIENPTkZJR19FREFDX0k1NDAw IGlzIG5vdCBzZXQKIyBDT05GSUdfRURBQ19JN0NPUkUgaXMgbm90IHNldAojIENPTkZJR19FREFD X0k1MDAwIGlzIG5vdCBzZXQKIyBDT05GSUdfRURBQ19JNTEwMCBpcyBub3Qgc2V0CiMgQ09ORklH X0VEQUNfSTczMDAgaXMgbm90IHNldApDT05GSUdfUlRDX0xJQj15CkNPTkZJR19SVENfQ0xBU1M9 eQpDT05GSUdfUlRDX0hDVE9TWVM9eQpDT05GSUdfUlRDX0hDVE9TWVNfREVWSUNFPSJydGMwIgoj IENPTkZJR19SVENfREVCVUcgaXMgbm90IHNldAoKIwojIFJUQyBpbnRlcmZhY2VzCiMKQ09ORklH X1JUQ19JTlRGX1NZU0ZTPXkKQ09ORklHX1JUQ19JTlRGX1BST0M9eQpDT05GSUdfUlRDX0lOVEZf REVWPXkKIyBDT05GSUdfUlRDX0lOVEZfREVWX1VJRV9FTVVMIGlzIG5vdCBzZXQKIyBDT05GSUdf UlRDX0RSVl9URVNUIGlzIG5vdCBzZXQKCiMKIyBJMkMgUlRDIGRyaXZlcnMKIwojIENPTkZJR19S VENfRFJWX0RTMTMwNyBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfRFMxMzc0IGlzIG5vdCBz ZXQKIyBDT05GSUdfUlRDX0RSVl9EUzE2NzIgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX0RT MzIzMiBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfTUFYNjkwMCBpcyBub3Qgc2V0CiMgQ09O RklHX1JUQ19EUlZfUlM1QzM3MiBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfSVNMMTIwOCBp cyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfSVNMMTIwMjIgaXMgbm90IHNldAojIENPTkZJR19S VENfRFJWX1gxMjA1IGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTYzIGlzIG5vdCBz ZXQKIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTgzIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9N NDFUODAgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX0JRMzJLIGlzIG5vdCBzZXQKIyBDT05G SUdfUlRDX0RSVl9TMzUzOTBBIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9GTTMxMzAgaXMg bm90IHNldAojIENPTkZJR19SVENfRFJWX1JYODU4MSBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19E UlZfUlg4MDI1IGlzIG5vdCBzZXQKCiMKIyBTUEkgUlRDIGRyaXZlcnMKIwoKIwojIFBsYXRmb3Jt IFJUQyBkcml2ZXJzCiMKQ09ORklHX1JUQ19EUlZfQ01PUz15CiMgQ09ORklHX1JUQ19EUlZfRFMx Mjg2IGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9EUzE1MTEgaXMgbm90IHNldAojIENPTkZJ R19SVENfRFJWX0RTMTU1MyBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfRFMxNzQyIGlzIG5v dCBzZXQKIyBDT05GSUdfUlRDX0RSVl9TVEsxN1RBOCBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19E UlZfTTQ4VDg2IGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9NNDhUMzUgaXMgbm90IHNldAoj IENPTkZJR19SVENfRFJWX000OFQ1OSBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfTVNNNjI0 MiBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfQlE0ODAyIGlzIG5vdCBzZXQKIyBDT05GSUdf UlRDX0RSVl9SUDVDMDEgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX1YzMDIwIGlzIG5vdCBz ZXQKCiMKIyBvbi1DUFUgUlRDIGRyaXZlcnMKIwpDT05GSUdfRE1BREVWSUNFUz15CiMgQ09ORklH X0RNQURFVklDRVNfREVCVUcgaXMgbm90IHNldAoKIwojIERNQSBEZXZpY2VzCiMKIyBDT05GSUdf SU5URUxfTUlEX0RNQUMgaXMgbm90IHNldApDT05GSUdfSU5URUxfSU9BVERNQT15CiMgQ09ORklH X1RJTUJfRE1BIGlzIG5vdCBzZXQKIyBDT05GSUdfUENIX0RNQSBpcyBub3Qgc2V0CkNPTkZJR19E TUFfRU5HSU5FPXkKCiMKIyBETUEgQ2xpZW50cwojCkNPTkZJR19ORVRfRE1BPXkKQ09ORklHX0FT WU5DX1RYX0RNQT15CiMgQ09ORklHX0RNQVRFU1QgaXMgbm90IHNldApDT05GSUdfRENBPXkKIyBD T05GSUdfQVVYRElTUExBWSBpcyBub3Qgc2V0CiMgQ09ORklHX1VJTyBpcyBub3Qgc2V0CiMgQ09O RklHX1NUQUdJTkcgaXMgbm90IHNldAojIENPTkZJR19YODZfUExBVEZPUk1fREVWSUNFUyBpcyBu b3Qgc2V0CgojCiMgRmlybXdhcmUgRHJpdmVycwojCiMgQ09ORklHX0VERCBpcyBub3Qgc2V0CkNP TkZJR19GSVJNV0FSRV9NRU1NQVA9eQpDT05GSUdfRUZJX1ZBUlM9eQojIENPTkZJR19ERUxMX1JC VSBpcyBub3Qgc2V0CiMgQ09ORklHX0RDREJBUyBpcyBub3Qgc2V0CkNPTkZJR19ETUlJRD15CiMg Q09ORklHX0lTQ1NJX0lCRlRfRklORCBpcyBub3Qgc2V0CgojCiMgRmlsZSBzeXN0ZW1zCiMKQ09O RklHX0VYVDJfRlM9eQojIENPTkZJR19FWFQyX0ZTX1hBVFRSIGlzIG5vdCBzZXQKIyBDT05GSUdf RVhUMl9GU19YSVAgaXMgbm90IHNldApDT05GSUdfRVhUM19GUz15CiMgQ09ORklHX0VYVDNfREVG QVVMVFNfVE9fT1JERVJFRCBpcyBub3Qgc2V0CkNPTkZJR19FWFQzX0ZTX1hBVFRSPXkKIyBDT05G SUdfRVhUM19GU19QT1NJWF9BQ0wgaXMgbm90IHNldAojIENPTkZJR19FWFQzX0ZTX1NFQ1VSSVRZ IGlzIG5vdCBzZXQKQ09ORklHX0VYVDRfRlM9eQpDT05GSUdfRVhUNF9GU19YQVRUUj15CiMgQ09O RklHX0VYVDRfRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKIyBDT05GSUdfRVhUNF9GU19TRUNVUklU WSBpcyBub3Qgc2V0CiMgQ09ORklHX0VYVDRfREVCVUcgaXMgbm90IHNldApDT05GSUdfSkJEPXkK IyBDT05GSUdfSkJEX0RFQlVHIGlzIG5vdCBzZXQKQ09ORklHX0pCRDI9eQojIENPTkZJR19KQkQy X0RFQlVHIGlzIG5vdCBzZXQKQ09ORklHX0ZTX01CQ0FDSEU9eQpDT05GSUdfUkVJU0VSRlNfRlM9 bQojIENPTkZJR19SRUlTRVJGU19DSEVDSyBpcyBub3Qgc2V0CkNPTkZJR19SRUlTRVJGU19QUk9D X0lORk89eQpDT05GSUdfUkVJU0VSRlNfRlNfWEFUVFI9eQojIENPTkZJR19SRUlTRVJGU19GU19Q T1NJWF9BQ0wgaXMgbm90IHNldAojIENPTkZJR19SRUlTRVJGU19GU19TRUNVUklUWSBpcyBub3Qg c2V0CiMgQ09ORklHX0pGU19GUyBpcyBub3Qgc2V0CkNPTkZJR19YRlNfRlM9eQojIENPTkZJR19Y RlNfUVVPVEEgaXMgbm90IHNldAojIENPTkZJR19YRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKQ09O RklHX1hGU19SVD15CiMgQ09ORklHX1hGU19ERUJVRyBpcyBub3Qgc2V0CiMgQ09ORklHX0dGUzJf RlMgaXMgbm90IHNldAojIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0CkNPTkZJR19CVFJGU19G Uz1tCkNPTkZJR19CVFJGU19GU19QT1NJWF9BQ0w9eQojIENPTkZJR19OSUxGUzJfRlMgaXMgbm90 IHNldApDT05GSUdfRlNfUE9TSVhfQUNMPXkKQ09ORklHX0VYUE9SVEZTPXkKQ09ORklHX0ZJTEVf TE9DS0lORz15CkNPTkZJR19GU05PVElGWT15CiMgQ09ORklHX0ROT1RJRlkgaXMgbm90IHNldApD T05GSUdfSU5PVElGWV9VU0VSPXkKIyBDT05GSUdfRkFOT1RJRlkgaXMgbm90IHNldApDT05GSUdf UVVPVEE9eQojIENPTkZJR19RVU9UQV9ORVRMSU5LX0lOVEVSRkFDRSBpcyBub3Qgc2V0CkNPTkZJ R19QUklOVF9RVU9UQV9XQVJOSU5HPXkKIyBDT05GSUdfUVVPVEFfREVCVUcgaXMgbm90IHNldAoj IENPTkZJR19RRk1UX1YxIGlzIG5vdCBzZXQKIyBDT05GSUdfUUZNVF9WMiBpcyBub3Qgc2V0CkNP TkZJR19RVU9UQUNUTD15CkNPTkZJR19RVU9UQUNUTF9DT01QQVQ9eQojIENPTkZJR19BVVRPRlM0 X0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CkNPTkZJR19HRU5FUklD X0FDTD15CgojCiMgQ2FjaGVzCiMKQ09ORklHX0ZTQ0FDSEU9eQojIENPTkZJR19GU0NBQ0hFX1NU QVRTIGlzIG5vdCBzZXQKIyBDT05GSUdfRlNDQUNIRV9ISVNUT0dSQU0gaXMgbm90IHNldAojIENP TkZJR19GU0NBQ0hFX0RFQlVHIGlzIG5vdCBzZXQKIyBDT05GSUdfRlNDQUNIRV9PQkpFQ1RfTElT VCBpcyBub3Qgc2V0CkNPTkZJR19DQUNIRUZJTEVTPXkKIyBDT05GSUdfQ0FDSEVGSUxFU19ERUJV RyBpcyBub3Qgc2V0CiMgQ09ORklHX0NBQ0hFRklMRVNfSElTVE9HUkFNIGlzIG5vdCBzZXQKCiMK IyBDRC1ST00vRFZEIEZpbGVzeXN0ZW1zCiMKQ09ORklHX0lTTzk2NjBfRlM9eQpDT05GSUdfSk9M SUVUPXkKQ09ORklHX1pJU09GUz15CkNPTkZJR19VREZfRlM9eQpDT05GSUdfVURGX05MUz15Cgoj CiMgRE9TL0ZBVC9OVCBGaWxlc3lzdGVtcwojCkNPTkZJR19GQVRfRlM9eQojIENPTkZJR19NU0RP U19GUyBpcyBub3Qgc2V0CkNPTkZJR19WRkFUX0ZTPXkKQ09ORklHX0ZBVF9ERUZBVUxUX0NPREVQ QUdFPTQzNwpDT05GSUdfRkFUX0RFRkFVTFRfSU9DSEFSU0VUPSJ1dGY4IgojIENPTkZJR19OVEZT X0ZTIGlzIG5vdCBzZXQKCiMKIyBQc2V1ZG8gZmlsZXN5c3RlbXMKIwpDT05GSUdfUFJPQ19GUz15 CkNPTkZJR19QUk9DX0tDT1JFPXkKQ09ORklHX1BST0NfU1lTQ1RMPXkKQ09ORklHX1BST0NfUEFH RV9NT05JVE9SPXkKQ09ORklHX1NZU0ZTPXkKQ09ORklHX1RNUEZTPXkKQ09ORklHX1RNUEZTX1BP U0lYX0FDTD15CkNPTkZJR19IVUdFVExCRlM9eQpDT05GSUdfSFVHRVRMQl9QQUdFPXkKQ09ORklH X0NPTkZJR0ZTX0ZTPXkKQ09ORklHX01JU0NfRklMRVNZU1RFTVM9eQojIENPTkZJR19BRkZTX0ZT IGlzIG5vdCBzZXQKIyBDT05GSUdfRUNSWVBUX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfSEZTX0ZT IGlzIG5vdCBzZXQKIyBDT05GSUdfSEZTUExVU19GUyBpcyBub3Qgc2V0CiMgQ09ORklHX0JFRlNf RlMgaXMgbm90IHNldAojIENPTkZJR19CRlNfRlMgaXMgbm90IHNldAojIENPTkZJR19FRlNfRlMg aXMgbm90IHNldAojIENPTkZJR19MT0dGUyBpcyBub3Qgc2V0CiMgQ09ORklHX0NSQU1GUyBpcyBu b3Qgc2V0CiMgQ09ORklHX1NRVUFTSEZTIGlzIG5vdCBzZXQKIyBDT05GSUdfVlhGU19GUyBpcyBu b3Qgc2V0CiMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfT01GU19GUyBpcyBu b3Qgc2V0CiMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CiMgQ09ORklHX1JPTUZTX0ZTIGlz IG5vdCBzZXQKIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CiMgQ09ORklHX05FVFdPUktfRklM RVNZU1RFTVMgaXMgbm90IHNldAoKIwojIFBhcnRpdGlvbiBUeXBlcwojCkNPTkZJR19QQVJUSVRJ T05fQURWQU5DRUQ9eQpDT05GSUdfQUNPUk5fUEFSVElUSU9OPXkKQ09ORklHX0FDT1JOX1BBUlRJ VElPTl9DVU1BTkE9eQpDT05GSUdfQUNPUk5fUEFSVElUSU9OX0VFU09YPXkKQ09ORklHX0FDT1JO X1BBUlRJVElPTl9JQ1M9eQpDT05GSUdfQUNPUk5fUEFSVElUSU9OX0FERlM9eQpDT05GSUdfQUNP Uk5fUEFSVElUSU9OX1BPV0VSVEVDPXkKQ09ORklHX0FDT1JOX1BBUlRJVElPTl9SSVNDSVg9eQpD T05GSUdfT1NGX1BBUlRJVElPTj15CkNPTkZJR19BTUlHQV9QQVJUSVRJT049eQpDT05GSUdfQVRB UklfUEFSVElUSU9OPXkKQ09ORklHX01BQ19QQVJUSVRJT049eQpDT05GSUdfTVNET1NfUEFSVElU SU9OPXkKQ09ORklHX0JTRF9ESVNLTEFCRUw9eQpDT05GSUdfTUlOSVhfU1VCUEFSVElUSU9OPXkK Q09ORklHX1NPTEFSSVNfWDg2X1BBUlRJVElPTj15CkNPTkZJR19VTklYV0FSRV9ESVNLTEFCRUw9 eQojIENPTkZJR19MRE1fUEFSVElUSU9OIGlzIG5vdCBzZXQKQ09ORklHX1NHSV9QQVJUSVRJT049 eQpDT05GSUdfVUxUUklYX1BBUlRJVElPTj15CkNPTkZJR19TVU5fUEFSVElUSU9OPXkKQ09ORklH X0tBUk1BX1BBUlRJVElPTj15CkNPTkZJR19FRklfUEFSVElUSU9OPXkKQ09ORklHX1NZU1Y2OF9Q QVJUSVRJT049eQpDT05GSUdfTkxTPXkKQ09ORklHX05MU19ERUZBVUxUPSJ1dGY4IgpDT05GSUdf TkxTX0NPREVQQUdFXzQzNz15CkNPTkZJR19OTFNfQ09ERVBBR0VfNzM3PXkKQ09ORklHX05MU19D T0RFUEFHRV83NzU9eQpDT05GSUdfTkxTX0NPREVQQUdFXzg1MD15CkNPTkZJR19OTFNfQ09ERVBB R0VfODUyPXkKQ09ORklHX05MU19DT0RFUEFHRV84NTU9eQpDT05GSUdfTkxTX0NPREVQQUdFXzg1 Nz15CkNPTkZJR19OTFNfQ09ERVBBR0VfODYwPXkKQ09ORklHX05MU19DT0RFUEFHRV84NjE9eQpD T05GSUdfTkxTX0NPREVQQUdFXzg2Mj15CkNPTkZJR19OTFNfQ09ERVBBR0VfODYzPXkKQ09ORklH X05MU19DT0RFUEFHRV84NjQ9eQpDT05GSUdfTkxTX0NPREVQQUdFXzg2NT15CkNPTkZJR19OTFNf Q09ERVBBR0VfODY2PXkKQ09ORklHX05MU19DT0RFUEFHRV84Njk9eQpDT05GSUdfTkxTX0NPREVQ QUdFXzkzNj15CkNPTkZJR19OTFNfQ09ERVBBR0VfOTUwPXkKQ09ORklHX05MU19DT0RFUEFHRV85 MzI9eQpDT05GSUdfTkxTX0NPREVQQUdFXzk0OT15CkNPTkZJR19OTFNfQ09ERVBBR0VfODc0PXkK Q09ORklHX05MU19JU084ODU5Xzg9eQpDT05GSUdfTkxTX0NPREVQQUdFXzEyNTA9eQpDT05GSUdf TkxTX0NPREVQQUdFXzEyNTE9eQpDT05GSUdfTkxTX0FTQ0lJPXkKQ09ORklHX05MU19JU084ODU5 XzE9eQpDT05GSUdfTkxTX0lTTzg4NTlfMj15CkNPTkZJR19OTFNfSVNPODg1OV8zPXkKQ09ORklH X05MU19JU084ODU5XzQ9eQpDT05GSUdfTkxTX0lTTzg4NTlfNT15CkNPTkZJR19OTFNfSVNPODg1 OV82PXkKQ09ORklHX05MU19JU084ODU5Xzc9eQpDT05GSUdfTkxTX0lTTzg4NTlfOT15CkNPTkZJ R19OTFNfSVNPODg1OV8xMz15CkNPTkZJR19OTFNfSVNPODg1OV8xND15CkNPTkZJR19OTFNfSVNP ODg1OV8xNT15CkNPTkZJR19OTFNfS09JOF9SPXkKQ09ORklHX05MU19LT0k4X1U9eQpDT05GSUdf TkxTX1VURjg9eQojIENPTkZJR19ETE0gaXMgbm90IHNldAoKIwojIEtlcm5lbCBoYWNraW5nCiMK Q09ORklHX1RSQUNFX0lSUUZMQUdTX1NVUFBPUlQ9eQpDT05GSUdfUFJJTlRLX1RJTUU9eQojIENP TkZJR19FTkFCTEVfV0FSTl9ERVBSRUNBVEVEIGlzIG5vdCBzZXQKQ09ORklHX0VOQUJMRV9NVVNU X0NIRUNLPXkKQ09ORklHX0ZSQU1FX1dBUk49MjA0OApDT05GSUdfTUFHSUNfU1lTUlE9eQojIENP TkZJR19TVFJJUF9BU01fU1lNUyBpcyBub3Qgc2V0CiMgQ09ORklHX1VOVVNFRF9TWU1CT0xTIGlz IG5vdCBzZXQKQ09ORklHX0RFQlVHX0ZTPXkKQ09ORklHX0hFQURFUlNfQ0hFQ0s9eQojIENPTkZJ R19ERUJVR19LRVJORUwgaXMgbm90IHNldAojIENPTkZJR19IQVJETE9DS1VQX0RFVEVDVE9SIGlz IG5vdCBzZXQKIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CkNPTkZJR19TTFVCX1NU QVRTPXkKIyBDT05GSUdfQktMIGlzIG5vdCBzZXQKIyBDT05GSUdfU1BBUlNFX1JDVV9QT0lOVEVS IGlzIG5vdCBzZXQKQ09ORklHX1NUQUNLVFJBQ0U9eQpDT05GSUdfREVCVUdfQlVHVkVSQk9TRT15 CkNPTkZJR19ERUJVR19NRU1PUllfSU5JVD15CkNPTkZJR19BUkNIX1dBTlRfRlJBTUVfUE9JTlRF UlM9eQpDT05GSUdfRlJBTUVfUE9JTlRFUj15CkNPTkZJR19SQ1VfQ1BVX1NUQUxMX0RFVEVDVE9S PXkKQ09ORklHX1JDVV9DUFVfU1RBTExfVElNRU9VVD02MApDT05GSUdfUkNVX0NQVV9TVEFMTF9E RVRFQ1RPUl9SVU5OQUJMRT15CiMgQ09ORklHX1JDVV9DUFVfU1RBTExfVkVSQk9TRSBpcyBub3Qg c2V0CiMgQ09ORklHX0xLRFRNIGlzIG5vdCBzZXQKQ09ORklHX1NZU0NUTF9TWVNDQUxMX0NIRUNL PXkKQ09ORklHX1VTRVJfU1RBQ0tUUkFDRV9TVVBQT1JUPXkKQ09ORklHX05PUF9UUkFDRVI9eQpD T05GSUdfSEFWRV9GVU5DVElPTl9UUkFDRVI9eQpDT05GSUdfSEFWRV9GVU5DVElPTl9HUkFQSF9U UkFDRVI9eQpDT05GSUdfSEFWRV9GVU5DVElPTl9HUkFQSF9GUF9URVNUPXkKQ09ORklHX0hBVkVf RlVOQ1RJT05fVFJBQ0VfTUNPVU5UX1RFU1Q9eQpDT05GSUdfSEFWRV9EWU5BTUlDX0ZUUkFDRT15 CkNPTkZJR19IQVZFX0ZUUkFDRV9NQ09VTlRfUkVDT1JEPXkKQ09ORklHX0hBVkVfU1lTQ0FMTF9U UkFDRVBPSU5UUz15CkNPTkZJR19IQVZFX0NfUkVDT1JETUNPVU5UPXkKQ09ORklHX1JJTkdfQlVG RkVSPXkKQ09ORklHX0VWRU5UX1RSQUNJTkc9eQojIENPTkZJR19FVkVOVF9QT1dFUl9UUkFDSU5H X0RFUFJFQ0FURUQgaXMgbm90IHNldApDT05GSUdfQ09OVEVYVF9TV0lUQ0hfVFJBQ0VSPXkKQ09O RklHX1JJTkdfQlVGRkVSX0FMTE9XX1NXQVA9eQpDT05GSUdfVFJBQ0lORz15CkNPTkZJR19HRU5F UklDX1RSQUNFUj15CkNPTkZJR19UUkFDSU5HX1NVUFBPUlQ9eQpDT05GSUdfRlRSQUNFPXkKIyBD T05GSUdfRlVOQ1RJT05fVFJBQ0VSIGlzIG5vdCBzZXQKIyBDT05GSUdfSVJRU09GRl9UUkFDRVIg aXMgbm90IHNldAojIENPTkZJR19QUkVFTVBUX1RSQUNFUiBpcyBub3Qgc2V0CiMgQ09ORklHX1ND SEVEX1RSQUNFUiBpcyBub3Qgc2V0CiMgQ09ORklHX0ZUUkFDRV9TWVNDQUxMUyBpcyBub3Qgc2V0 CkNPTkZJR19CUkFOQ0hfUFJPRklMRV9OT05FPXkKIyBDT05GSUdfUFJPRklMRV9BTk5PVEFURURf QlJBTkNIRVMgaXMgbm90IHNldAojIENPTkZJR19QUk9GSUxFX0FMTF9CUkFOQ0hFUyBpcyBub3Qg c2V0CiMgQ09ORklHX1NUQUNLX1RSQUNFUiBpcyBub3Qgc2V0CkNPTkZJR19CTEtfREVWX0lPX1RS QUNFPXkKQ09ORklHX0tQUk9CRV9FVkVOVD15CiMgQ09ORklHX0ZUUkFDRV9TVEFSVFVQX1RFU1Qg aXMgbm90IHNldApDT05GSUdfTU1JT1RSQUNFPXkKIyBDT05GSUdfTU1JT1RSQUNFX1RFU1QgaXMg bm90IHNldAojIENPTkZJR19SSU5HX0JVRkZFUl9CRU5DSE1BUksgaXMgbm90IHNldAojIENPTkZJ R19QUk9WSURFX09IQ0kxMzk0X0RNQV9JTklUIGlzIG5vdCBzZXQKIyBDT05GSUdfQlVJTERfRE9D U1JDIGlzIG5vdCBzZXQKIyBDT05GSUdfRFlOQU1JQ19ERUJVRyBpcyBub3Qgc2V0CiMgQ09ORklH X0RNQV9BUElfREVCVUcgaXMgbm90IHNldAojIENPTkZJR19BVE9NSUM2NF9TRUxGVEVTVCBpcyBu b3Qgc2V0CiMgQ09ORklHX0FTWU5DX1JBSUQ2X1RFU1QgaXMgbm90IHNldAojIENPTkZJR19TQU1Q TEVTIGlzIG5vdCBzZXQKQ09ORklHX0hBVkVfQVJDSF9LR0RCPXkKQ09ORklHX0hBVkVfQVJDSF9L TUVNQ0hFQ0s9eQojIENPTkZJR19URVNUX0tTVFJUT1ggaXMgbm90IHNldApDT05GSUdfU1RSSUNU X0RFVk1FTT15CiMgQ09ORklHX1g4Nl9WRVJCT1NFX0JPT1RVUCBpcyBub3Qgc2V0CkNPTkZJR19F QVJMWV9QUklOVEs9eQojIENPTkZJR19FQVJMWV9QUklOVEtfREJHUCBpcyBub3Qgc2V0CiMgQ09O RklHX0RFQlVHX1NFVF9NT0RVTEVfUk9OWCBpcyBub3Qgc2V0CiMgQ09ORklHX0lPTU1VX1NUUkVT UyBpcyBub3Qgc2V0CkNPTkZJR19IQVZFX01NSU9UUkFDRV9TVVBQT1JUPXkKQ09ORklHX0lPX0RF TEFZX1RZUEVfMFg4MD0wCkNPTkZJR19JT19ERUxBWV9UWVBFXzBYRUQ9MQpDT05GSUdfSU9fREVM QVlfVFlQRV9VREVMQVk9MgpDT05GSUdfSU9fREVMQVlfVFlQRV9OT05FPTMKQ09ORklHX0lPX0RF TEFZXzBYODA9eQojIENPTkZJR19JT19ERUxBWV8wWEVEIGlzIG5vdCBzZXQKIyBDT05GSUdfSU9f REVMQVlfVURFTEFZIGlzIG5vdCBzZXQKIyBDT05GSUdfSU9fREVMQVlfTk9ORSBpcyBub3Qgc2V0 CkNPTkZJR19ERUZBVUxUX0lPX0RFTEFZX1RZUEU9MAojIENPTkZJR19PUFRJTUlaRV9JTkxJTklO RyBpcyBub3Qgc2V0CgojCiMgU2VjdXJpdHkgb3B0aW9ucwojCkNPTkZJR19LRVlTPXkKQ09ORklH X0tFWVNfREVCVUdfUFJPQ19LRVlTPXkKIyBDT05GSUdfU0VDVVJJVFlfRE1FU0dfUkVTVFJJQ1Qg aXMgbm90IHNldApDT05GSUdfU0VDVVJJVFk9eQojIENPTkZJR19TRUNVUklUWUZTIGlzIG5vdCBz ZXQKQ09ORklHX1NFQ1VSSVRZX05FVFdPUks9eQpDT05GSUdfU0VDVVJJVFlfTkVUV09SS19YRlJN PXkKIyBDT05GSUdfU0VDVVJJVFlfUEFUSCBpcyBub3Qgc2V0CiMgQ09ORklHX0lOVEVMX1RYVCBp cyBub3Qgc2V0CiMgQ09ORklHX1NFQ1VSSVRZX1NFTElOVVggaXMgbm90IHNldAojIENPTkZJR19T RUNVUklUWV9UT01PWU8gaXMgbm90IHNldAojIENPTkZJR19TRUNVUklUWV9BUFBBUk1PUiBpcyBu b3Qgc2V0CiMgQ09ORklHX0lNQSBpcyBub3Qgc2V0CkNPTkZJR19ERUZBVUxUX1NFQ1VSSVRZX0RB Qz15CkNPTkZJR19ERUZBVUxUX1NFQ1VSSVRZPSIiCkNPTkZJR19YT1JfQkxPQ0tTPXkKQ09ORklH X0FTWU5DX0NPUkU9eQpDT05GSUdfQVNZTkNfTUVNQ1BZPXkKQ09ORklHX0FTWU5DX1hPUj15CkNP TkZJR19BU1lOQ19QUT15CkNPTkZJR19BU1lOQ19SQUlENl9SRUNPVj15CkNPTkZJR19BU1lOQ19U WF9ESVNBQkxFX1BRX1ZBTF9ETUE9eQpDT05GSUdfQVNZTkNfVFhfRElTQUJMRV9YT1JfVkFMX0RN QT15CkNPTkZJR19DUllQVE89eQoKIwojIENyeXB0byBjb3JlIG9yIGhlbHBlcgojCkNPTkZJR19D UllQVE9fQUxHQVBJPXkKQ09ORklHX0NSWVBUT19BTEdBUEkyPXkKQ09ORklHX0NSWVBUT19BRUFE PXkKQ09ORklHX0NSWVBUT19BRUFEMj15CkNPTkZJR19DUllQVE9fQkxLQ0lQSEVSPXkKQ09ORklH X0NSWVBUT19CTEtDSVBIRVIyPXkKQ09ORklHX0NSWVBUT19IQVNIPXkKQ09ORklHX0NSWVBUT19I QVNIMj15CkNPTkZJR19DUllQVE9fUk5HPXkKQ09ORklHX0NSWVBUT19STkcyPXkKQ09ORklHX0NS WVBUT19QQ09NUD15CkNPTkZJR19DUllQVE9fUENPTVAyPXkKQ09ORklHX0NSWVBUT19NQU5BR0VS PXkKQ09ORklHX0NSWVBUT19NQU5BR0VSMj15CkNPTkZJR19DUllQVE9fTUFOQUdFUl9ESVNBQkxF X1RFU1RTPXkKQ09ORklHX0NSWVBUT19HRjEyOE1VTD15CkNPTkZJR19DUllQVE9fTlVMTD15CiMg Q09ORklHX0NSWVBUT19QQ1JZUFQgaXMgbm90IHNldApDT05GSUdfQ1JZUFRPX1dPUktRVUVVRT15 CkNPTkZJR19DUllQVE9fQ1JZUFREPXkKQ09ORklHX0NSWVBUT19BVVRIRU5DPXkKIyBDT05GSUdf Q1JZUFRPX1RFU1QgaXMgbm90IHNldAoKIwojIEF1dGhlbnRpY2F0ZWQgRW5jcnlwdGlvbiB3aXRo IEFzc29jaWF0ZWQgRGF0YQojCiMgQ09ORklHX0NSWVBUT19DQ00gaXMgbm90IHNldAojIENPTkZJ R19DUllQVE9fR0NNIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQK CiMKIyBCbG9jayBtb2RlcwojCkNPTkZJR19DUllQVE9fQ0JDPXkKIyBDT05GSUdfQ1JZUFRPX0NU UiBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19DVFMgaXMgbm90IHNldApDT05GSUdfQ1JZUFRP X0VDQj15CiMgQ09ORklHX0NSWVBUT19MUlcgaXMgbm90IHNldAojIENPTkZJR19DUllQVE9fUENC QyBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19YVFMgaXMgbm90IHNldAoKIwojIEhhc2ggbW9k ZXMKIwpDT05GSUdfQ1JZUFRPX0hNQUM9eQojIENPTkZJR19DUllQVE9fWENCQyBpcyBub3Qgc2V0 CiMgQ09ORklHX0NSWVBUT19WTUFDIGlzIG5vdCBzZXQKCiMKIyBEaWdlc3QKIwpDT05GSUdfQ1JZ UFRPX0NSQzMyQz15CiMgQ09ORklHX0NSWVBUT19DUkMzMkNfSU5URUwgaXMgbm90IHNldAojIENP TkZJR19DUllQVE9fR0hBU0ggaXMgbm90IHNldApDT05GSUdfQ1JZUFRPX01END15CkNPTkZJR19D UllQVE9fTUQ1PXkKQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQz15CiMgQ09ORklHX0NSWVBUT19S TUQxMjggaXMgbm90IHNldAojIENPTkZJR19DUllQVE9fUk1EMTYwIGlzIG5vdCBzZXQKIyBDT05G SUdfQ1JZUFRPX1JNRDI1NiBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19STUQzMjAgaXMgbm90 IHNldApDT05GSUdfQ1JZUFRPX1NIQTE9eQpDT05GSUdfQ1JZUFRPX1NIQTI1Nj15CkNPTkZJR19D UllQVE9fU0hBNTEyPXkKQ09ORklHX0NSWVBUT19UR1IxOTI9eQpDT05GSUdfQ1JZUFRPX1dQNTEy PXkKIyBDT05GSUdfQ1JZUFRPX0dIQVNIX0NMTVVMX05JX0lOVEVMIGlzIG5vdCBzZXQKCiMKIyBD aXBoZXJzCiMKQ09ORklHX0NSWVBUT19BRVM9eQpDT05GSUdfQ1JZUFRPX0FFU19YODZfNjQ9eQoj IENPTkZJR19DUllQVE9fQUVTX05JX0lOVEVMIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX0FO VUJJUyBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19BUkM0IGlzIG5vdCBzZXQKIyBDT05GSUdf Q1JZUFRPX0JMT1dGSVNIIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5v dCBzZXQKIyBDT05GSUdfQ1JZUFRPX0NBU1Q1IGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX0NB U1Q2IGlzIG5vdCBzZXQKQ09ORklHX0NSWVBUT19ERVM9eQojIENPTkZJR19DUllQVE9fRkNSWVBU IGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX0tIQVpBRCBpcyBub3Qgc2V0CiMgQ09ORklHX0NS WVBUT19TQUxTQTIwIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX1NBTFNBMjBfWDg2XzY0IGlz IG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90IHNldAojIENPTkZJR19DUllQVE9f U0VSUEVOVCBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19URUEgaXMgbm90IHNldApDT05GSUdf Q1JZUFRPX1RXT0ZJU0g9eQpDT05GSUdfQ1JZUFRPX1RXT0ZJU0hfQ09NTU9OPXkKQ09ORklHX0NS WVBUT19UV09GSVNIX1g4Nl82ND15CgojCiMgQ29tcHJlc3Npb24KIwpDT05GSUdfQ1JZUFRPX0RF RkxBVEU9eQpDT05GSUdfQ1JZUFRPX1pMSUI9eQpDT05GSUdfQ1JZUFRPX0xaTz15CgojCiMgUmFu ZG9tIE51bWJlciBHZW5lcmF0aW9uCiMKQ09ORklHX0NSWVBUT19BTlNJX0NQUk5HPXkKIyBDT05G SUdfQ1JZUFRPX1VTRVJfQVBJX0hBU0ggaXMgbm90IHNldAojIENPTkZJR19DUllQVE9fVVNFUl9B UElfU0tDSVBIRVIgaXMgbm90IHNldAojIENPTkZJR19DUllQVE9fSFcgaXMgbm90IHNldApDT05G SUdfSEFWRV9LVk09eQojIENPTkZJR19WSVJUVUFMSVpBVElPTiBpcyBub3Qgc2V0CkNPTkZJR19C SU5BUllfUFJJTlRGPXkKCiMKIyBMaWJyYXJ5IHJvdXRpbmVzCiMKQ09ORklHX1JBSUQ2X1BRPXkK Q09ORklHX0JJVFJFVkVSU0U9eQpDT05GSUdfR0VORVJJQ19GSU5EX0ZJUlNUX0JJVD15CkNPTkZJ R19HRU5FUklDX0ZJTkRfTkVYVF9CSVQ9eQpDT05GSUdfR0VORVJJQ19GSU5EX0xBU1RfQklUPXkK IyBDT05GSUdfQ1JDX0NDSVRUIGlzIG5vdCBzZXQKQ09ORklHX0NSQzE2PXkKQ09ORklHX0NSQ19U MTBESUY9eQpDT05GSUdfQ1JDX0lUVV9UPXkKQ09ORklHX0NSQzMyPXkKIyBDT05GSUdfQ1JDNyBp cyBub3Qgc2V0CkNPTkZJR19MSUJDUkMzMkM9eQpDT05GSUdfWkxJQl9JTkZMQVRFPXkKQ09ORklH X1pMSUJfREVGTEFURT15CkNPTkZJR19MWk9fQ09NUFJFU1M9eQpDT05GSUdfTFpPX0RFQ09NUFJF U1M9eQpDT05GSUdfWFpfREVDPXkKQ09ORklHX1haX0RFQ19YODY9eQpDT05GSUdfWFpfREVDX1BP V0VSUEM9eQpDT05GSUdfWFpfREVDX0lBNjQ9eQpDT05GSUdfWFpfREVDX0FSTT15CkNPTkZJR19Y Wl9ERUNfQVJNVEhVTUI9eQpDT05GSUdfWFpfREVDX1NQQVJDPXkKQ09ORklHX1haX0RFQ19CQ0o9 eQojIENPTkZJR19YWl9ERUNfVEVTVCBpcyBub3Qgc2V0CkNPTkZJR19URVhUU0VBUkNIPXkKQ09O RklHX1RFWFRTRUFSQ0hfS01QPXkKQ09ORklHX1RFWFRTRUFSQ0hfQk09eQpDT05GSUdfVEVYVFNF QVJDSF9GU009eQpDT05GSUdfSEFTX0lPTUVNPXkKQ09ORklHX0hBU19JT1BPUlQ9eQpDT05GSUdf SEFTX0RNQT15CkNPTkZJR19OTEFUVFI9eQo= --0016e64698baaac01704a518615e-- From stewart@flamingspork.com Tue Jun 7 00:48:09 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p575m8TA006241 for ; Tue, 7 Jun 2011 00:48:08 -0500 X-ASG-Debug-ID: 1307425686-467302230000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from kaylee.flamingspork.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 935AFD0F36E for ; Mon, 6 Jun 2011 22:48:06 -0700 (PDT) Received: from kaylee.flamingspork.com (kaylee.flamingspork.com [74.207.245.61]) by cuda.sgi.com with ESMTP id xa52eXSIa6VABzrY for ; Mon, 06 Jun 2011 22:48:06 -0700 (PDT) Received: from willster (localhost [127.0.0.1]) by kaylee.flamingspork.com (Postfix) with ESMTPS id 620F1609E; Tue, 7 Jun 2011 05:47:33 +0000 (UTC) Received: by willster (Postfix, from userid 1000) id 10D6430BBA9C; Tue, 7 Jun 2011 15:48:05 +1000 (EST) From: Stewart Smith To: Kenneth Emerson , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Defragging XFS File Systems Subject: Re: Defragging XFS File Systems In-Reply-To: References: User-Agent: Notmuch/0.5-215-g5143e5e (http://notmuchmail.org) Emacs/23.2.1 (x86_64-pc-linux-gnu) Date: Tue, 07 Jun 2011 15:48:05 +1000 Message-ID: <8739jmjip6.fsf@flamingspork.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: kaylee.flamingspork.com[74.207.245.61] X-Barracuda-Start-Time: 1307425687 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65712 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, 6 Jun 2011 22:52:48 -0500, Kenneth Emerson wrote: > I hadn't given much thought to fragmentation of my TV recordings volume > (XFS) until reading through some MythTV-users threads recently that > mentioned how fragmented an XFS file system could become. After running > xfs_db, I found out that my fs appeared to be quite bad: MythTV can end up with fragmentation on XFS due to an fsync() call that attempts to work raound limitations in ext3. Workarounds include: - allocsize mount parameter - patch mythtv source not to fsync (you could easily write a patch that only did fsync if not xfs... I've been meaning to do this for years... not enough hours in day). - run mythbackend with libeatmydata, thus disabling the fsync -- Stewart Smith From s.priebe@profihost.ag Tue Jun 7 01:00:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5760qq2006493 for ; Tue, 7 Jun 2011 01:00:53 -0500 X-ASG-Debug-ID: 1307426450-2c7e01bc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from server655-han.de-nserver.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 750E14A49CE for ; Mon, 6 Jun 2011 23:00:50 -0700 (PDT) Received: from server655-han.de-nserver.de (server655-han.de-nserver.de [85.158.177.45]) by cuda.sgi.com with ESMTP id JAQBTPvlCfpIegIE for ; Mon, 06 Jun 2011 23:00:50 -0700 (PDT) Received: (qmail 26955 invoked from network); 7 Jun 2011 08:00:49 +0200 Received: from fw-office.allied-internet.ag (HELO s.priebe-desktop) (85.158.179.66) (smtp-auth username hostmaster@profihost.com, mechanism plain) by server655-han.de-nserver.de (qpsmtpd/0.82) with ESMTPA; Tue, 07 Jun 2011 08:00:49 +0200 Message-ID: <4DEDBE91.1020000@profihost.ag> Date: Tue, 07 Jun 2011 08:00:49 +0200 From: Stefan Priebe - Profihost AG User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110424 Thunderbird/3.1.10 MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: XFS crashes with shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr Subject: XFS crashes with shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-User-Auth: Auth by hostmaster@profihost.com through 85.158.179.66 X-Barracuda-Connect: server655-han.de-nserver.de[85.158.177.45] X-Barracuda-Start-Time: 1307426451 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0007 1.0000 -2.0164 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65713 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, please HELP ME! We're seeing a really bad behaviour on one of our machines running vanilla 2.6.32.40 kernel. It freezes from time to time or processes starts to hang. At the same time the following message appears in the kernel log: shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr=-274207938304 shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr=-549059303168 shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr=-549500554116 shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr=-549360922112 shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr=-549407219078 shrink_slab: xfs_reclaim_inode_shrink+0x0/0x10d negative objects to delete nr=-549480231300 Any ideas? An xfs_repair says everything is fine. -- Regards, Stefan Priebe From gongfan193@gmail.com Tue Jun 7 01:36:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p576abmZ008292 for ; Tue, 7 Jun 2011 01:36:37 -0500 X-ASG-Debug-ID: 1307428595-27ed03e00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-gy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 636881D711BC; Mon, 6 Jun 2011 23:36:35 -0700 (PDT) Received: from mail-gy0-f181.google.com (mail-gy0-f181.google.com [209.85.160.181]) by cuda.sgi.com with ESMTP id dxEf2Sljkx9WOaUC; Mon, 06 Jun 2011 23:36:35 -0700 (PDT) Received: by gyh4 with SMTP id 4so2188982gyh.26 for ; Mon, 06 Jun 2011 23:36:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type:content-transfer-encoding; bh=ua66Uon978URchXvQEHCrtjHaWFsdLsr/5kPBOW20qA=; b=u347sVPq+ZFfq3SOAVpamYLyDZ+LAifiYxfsgA92WMa/5JJxCDdRRP0rzMGVOykhVY 7wgzX1VhQmIln7A3jPZ2g19gPAICZ20e/uGR7228AXGnaUX3GiQp5WU/dnYRgHWnJK8L x0o8GWMK+/V9Xo3GJhij1Azkfk3u+eshz633s= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:content-transfer-encoding; b=D7IassbHyx30qsRcv8/Q87P3wknXP5oWAhCy1PJDgzIGkDtMN3APys9x75O4QeTGGw 66Aj1aB9uik+PTXUpDdgFdhJ7FI7QqMuJC/G86wxRIdN3tPms6e3vm+VSJp/dvdFjqKk R1cg2w/0+fES6K66JNfArXDo+j+Go9CCBoabE= Received: by 10.101.9.3 with SMTP id m3mr4636804ani.17.1307428595157; Mon, 06 Jun 2011 23:36:35 -0700 (PDT) MIME-Version: 1.0 Received: by 10.100.198.3 with HTTP; Mon, 6 Jun 2011 23:36:15 -0700 (PDT) In-Reply-To: References: From: Drunkard Zhang Date: Tue, 7 Jun 2011 14:36:15 +0800 Message-ID: X-ASG-Orig-Subj: Re: bug in xfs: can't recovery metadata log Subject: Re: bug in xfs: can't recovery metadata log To: Alex Elder , xfs-masters@oss.sgi.com, 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: mail-gy0-f181.google.com[209.85.160.181] X-Barracuda-Start-Time: 1307428596 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.02 X-Barracuda-Spam-Status: No, SCORE=-1.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, BSF_RULE_7582B, DKIM_SIGNED, DKIM_VERIFIED, MAILTO_TO_SPAM_ADDR X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65715 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 MAILTO_TO_SPAM_ADDR URI: Includes a link to a likely spammer email 0.50 BSF_RULE7568M Custom Rule 7568M 0.50 BSF_RULE_7582B Custom Rule 7582B X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 2011/6/7 Drunkard Zhang : > The log recovery failure happened after a hard reboot, I did "mount > /dev/lg/log /mnt/temp/" twice, but the similar dmesg error. > > The xfs lives on LVM, with 4x2TB SATA II disk. > > The first time: > [ 1479.130446] XFS mounting filesystem dm-0 > [ 1479.226525] Starting XFS recovery on filesystem: dm-0 (logdev: interna= l) > [ 1506.217842] BUG: unable to handle kernel NULL pointer dereference > at 00000000000000f8 > [ 1506.218468] IP: [] xfs_cmn_err+0x6b/0x92 > [ 1506.218680] PGD 2175c4067 PUD 22f4ff067 PMD 0 > [ 1506.218887] Oops: 0000 [#1] PREEMPT SMP > [ 1506.219138] last sysfs file: /sys/devices/virtual/block/dm-0/dev > [ 1506.219345] CPU 1 > [ 1506.219353] Modules linked in: > [ 1506.219732] > [ 1506.219923] Pid: 21233, comm: mount Not tainted 2.6.38.5 #2 System > manufacturer S=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF/Z8NA-D6(C) > [ 1506.220989] RIP: 0010:[] =C2=A0[] > xfs_cmn_err+0x6b/0x92 > [ 1506.221424] RSP: 0018:ffff88021752da08 =C2=A0EFLAGS: 00010246 > [ 1506.221627] RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffffff8= 16be16c > [ 1506.221837] RDX: ffff88021752da28 RSI: ffffffff816bdced RDI: 000000000= 0000008 > [ 1506.222079] RBP: ffff88021752da88 R08: ffffffff816bdb79 R09: 000000000= 00005f6 > [ 1506.222289] R10: ffff8802177c32c0 R11: 00000530e8002000 R12: 000000000= 0000000 > [ 1506.222572] R13: ffffffff816be16c R14: ffff88021752db04 R15: 000000000= 00008e2 > [ 1506.222830] FS: =C2=A000007fa0c93d2740(0000) GS:ffff8800bf440000(0000) > knlGS:0000000000000000 > [ 1506.223265] CS: =C2=A00010 DS: 0000 ES: 0000 CR0: 000000008005003b > [ 1506.223471] CR2: 00000000000000f8 CR3: 000000021754e000 CR4: 000000000= 00006e0 > [ 1506.223728] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 000000000= 0000000 > [ 1506.223938] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 000000000= 0000400 > [ 1506.224190] Process mount (pid: 21233, threadinfo ffff88021752c000, > task ffff88022e239440) > [ 1506.224585] Stack: > [ 1506.224776] =C2=A00000000000000020 ffff88021752da98 ffff88021752da38 > ffff88021752da48 > [ 1506.225216] =C2=A0ffffffff816be16c ffff88021752da08 2d0100008de51400 > ffffffff8122922b > [ 1506.225616] =C2=A0ffff880202000000 ffff8802176e8af0 ffffffff816bdb79 > 00000000000005f6 > [ 1506.226058] Call Trace: > [ 1506.226301] =C2=A0[] ? kmem_zone_zalloc+0x1f/0x30 > [ 1506.226549] =C2=A0[] xfs_error_report+0x39/0x40 > [ 1506.226805] =C2=A0[] ? xfs_free_extent+0x8e/0xae > [ 1506.227056] =C2=A0[] xfs_free_ag_extent+0x3e7/0x70b > [ 1506.227306] =C2=A0[] xfs_free_extent+0x8e/0xae > [ 1506.227514] =C2=A0[] xlog_recover_process_efi+0x113/= 0x16c > [ 1506.227724] =C2=A0[] ? xfs_trans_ail_cursor_set+0x15= /0x1c > [ 1506.227934] =C2=A0[] xlog_recover_process_efis+0x64/= 0xad > [ 1506.228182] =C2=A0[] xlog_recover_finish+0x15/0xb6 > [ 1506.228390] =C2=A0[] xfs_log_mount_finish+0x1b/0x1d > [ 1506.228597] =C2=A0[] xfs_mountfs+0x4ec/0x615 > [ 1506.228803] =C2=A0[] xfs_fs_fill_super+0x1e5/0x2e8 > [ 1506.229055] =C2=A0[] mount_bdev+0x13b/0x19e > [ 1506.229259] =C2=A0[] ? xfs_fs_fill_super+0x0/0x2e8 > [ 1506.229467] =C2=A0[] xfs_fs_mount+0x10/0x12 > [ 1506.229672] =C2=A0[] vfs_kern_mount+0xb8/0x1f3 > [ 1506.229877] =C2=A0[] do_kern_mount+0x48/0xd8 > [ 1506.230127] =C2=A0[] do_mount+0x729/0x791 > [ 1506.230375] =C2=A0[] ? memdup_user+0x43/0x63 > [ 1506.230629] =C2=A0[] ? strndup_user+0x39/0x4f > [ 1506.230834] =C2=A0[] sys_mount+0x83/0xbe > [ 1506.231080] =C2=A0[] system_call_fastpath+0x16/0x1b > [ 1506.231285] Code: 31 e4 48 8d 45 80 48 8d 55 10 48 89 45 a8 48 89 > 55 88 31 c0 48 8d 55 b0 c7 45 80 20 00 00 00 48 89 55 90 4c 89 6d a0 > 48 8d 55 a0 <48> 8b b3 f8 00 00 00 48 c7 c7 78 14 6c 81 e8 1f ff 2b 00 > 45 85 > [ 1506.232093] RIP =C2=A0[] xfs_cmn_err+0x6b/0x92 > [ 1506.232300] =C2=A0RSP > [ 1506.232498] CR2: 00000000000000f8 > [ 1506.233086] ---[ end trace 6ff9d0214348600a ]--- > > The second time: > [ =C2=A0725.637712] BUG: unable to handle kernel NULL pointer dereference > at 00000000000000f8 > [ =C2=A0725.638302] IP: [] xfs_cmn_err+0x6b/0x92 > [ =C2=A0725.638579] PGD 22b1d3067 PUD 22b21f067 PMD 0 > [ =C2=A0725.638787] Oops: 0000 [#1] PREEMPT SMP > [ =C2=A0725.638993] last sysfs file: /sys/devices/virtual/block/dm-0/dev > [ =C2=A0725.639202] CPU 0 > [ =C2=A0725.639210] Modules linked in: > [ =C2=A0725.639664] > [ =C2=A0725.639857] Pid: 2537, comm: mount Not tainted 2.6.38.5 #2 System > manufacturer S=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3= =BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF=C3=BF= =C3=BF/Z8NA-D6(C) > [ =C2=A0725.640841] RIP: 0010:[] =C2=A0[] > xfs_cmn_err+0x6b/0x92 > [ =C2=A0725.641241] RSP: 0018:ffff88022b28ba08 =C2=A0EFLAGS: 00010246 > [ =C2=A0725.641512] RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffff= ffff816be16c > [ =C2=A0725.641723] RDX: ffff88022b28ba28 RSI: ffffffff816bdced RDI: 0000= 000000000008 > [ =C2=A0725.641936] RBP: ffff88022b28ba88 R08: ffffffff816bdb79 R09: 0000= 0000000005f6 > [ =C2=A0725.642148] R10: ffff8802217c9680 R11: 00000530e8002000 R12: 0000= 000000000000 > [ =C2=A0725.642428] R13: ffffffff816be16c R14: ffff88022b28bb04 R15: 0000= 0000000008e2 > [ =C2=A0725.642641] FS: =C2=A000007f857cd34740(0000) GS:ffff8800bf400000(= 0000) > knlGS:0000000000000000 > [ =C2=A0725.643041] CS: =C2=A00010 DS: 0000 ES: 0000 CR0: 000000008005003= b > [ =C2=A0725.643248] CR2: 00000000000000f8 CR3: 000000022b24a000 CR4: 0000= 0000000006f0 > [ =C2=A0725.643565] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000= 000000000000 > [ =C2=A0725.643778] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000= 000000000400 > [ =C2=A0725.643990] Process mount (pid: 2537, threadinfo ffff88022b28a000= , > task ffff88022e4f2f40) > [ =C2=A0725.644478] Stack: > [ =C2=A0725.644671] =C2=A00000000000000020 ffff88022b28ba98 ffff88022b28b= a38 > ffff88022b28ba48 > [ =C2=A0725.645072] =C2=A0ffffffff816be16c ffff88022b28ba08 2d0100008de51= 400 > ffffffff8122922b > [ =C2=A0725.645607] =C2=A0ffff880202000000 ffff88022b2d28c0 ffffffff816bd= b79 > 00000000000005f6 > [ =C2=A0725.646010] Call Trace: > [ =C2=A0725.646211] =C2=A0[] ? kmem_zone_zalloc+0x1f/0x= 30 > [ =C2=A0725.646491] =C2=A0[] xfs_error_report+0x39/0x40 > [ =C2=A0725.646700] =C2=A0[] ? xfs_free_extent+0x8e/0xa= e > [ =C2=A0725.646909] =C2=A0[] xfs_free_ag_extent+0x3e7/0= x70b > [ =C2=A0725.647119] =C2=A0[] xfs_free_extent+0x8e/0xae > [ =C2=A0725.647329] =C2=A0[] xlog_recover_process_efi+0= x113/0x16c > [ =C2=A0725.647632] =C2=A0[] ? xfs_trans_ail_cursor_set= +0x15/0x1c > [ =C2=A0725.647844] =C2=A0[] xlog_recover_process_efis+= 0x64/0xad > [ =C2=A0725.648056] =C2=A0[] xlog_recover_finish+0x15/0= xb6 > [ =C2=A0725.648266] =C2=A0[] xfs_log_mount_finish+0x1b/= 0x1d > [ =C2=A0725.648539] =C2=A0[] xfs_mountfs+0x4ec/0x615 > [ =C2=A0725.648747] =C2=A0[] xfs_fs_fill_super+0x1e5/0x= 2e8 > [ =C2=A0725.648958] =C2=A0[] mount_bdev+0x13b/0x19e > [ =C2=A0725.649164] =C2=A0[] ? xfs_fs_fill_super+0x0/0x= 2e8 > [ =C2=A0725.649438] =C2=A0[] xfs_fs_mount+0x10/0x12 > [ =C2=A0725.649646] =C2=A0[] vfs_kern_mount+0xb8/0x1f3 > [ =C2=A0725.649854] =C2=A0[] do_kern_mount+0x48/0xd8 > [ =C2=A0725.650063] =C2=A0[] do_mount+0x729/0x791 > [ =C2=A0725.650271] =C2=A0[] ? memdup_user+0x43/0x63 > [ =C2=A0725.650545] =C2=A0[] ? strndup_user+0x39/0x4f > [ =C2=A0725.650753] =C2=A0[] sys_mount+0x83/0xbe > [ =C2=A0725.650961] =C2=A0[] system_call_fastpath+0x16/= 0x1b > [ =C2=A0725.651169] Code: 31 e4 48 8d 45 80 48 8d 55 10 48 89 45 a8 48 89 > 55 88 31 c0 48 8d 55 b0 c7 45 80 20 00 00 00 48 89 55 90 4c 89 6d a0 > 48 8d 55 a0 <48> 8b b3 f8 00 00 00 48 c7 c7 78 14 6c 81 e8 1f ff 2b 00 > 45 85 > [ =C2=A0725.652012] RIP =C2=A0[] xfs_cmn_err+0x6b/0x92 > [ =C2=A0725.652221] =C2=A0RSP > [ =C2=A0725.652484] CR2: 00000000000000f8 > [ =C2=A0725.653295] ---[ end trace 1dadc2ff14d7c60f ]--- > With 2.6.39.1 too, output not the same thing. Here's console output: log1 ~ # mount /dev/lg/log /mnt/temp/ & [1] 3911 log1 ~ # mount: Structure needs cleaning [1]+ Exit 32 mount /dev/lg/log /mnt/temp/ Here's related dmesg: [ 123.634533] XFS (dm-0): Mounting Filesystem [ 123.640180] XFS (dm-0): Starting recovery (logdev: internal) [ 138.583463] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1540 of file fs/xfs/xfs_alloc.c. Caller 0xffffffff811eca7b [ 138.583465] [ 138.583470] Pid: 3911, comm: mount Not tainted 2.6.39.1 #1 [ 138.583472] Call Trace: [ 138.583484] [] xfs_error_report+0x38/0x3a [ 138.583489] [] ? xfs_free_extent+0xb8/0xdd [ 138.583493] [] ? xfs_alloc_lookup_eq+0x14/0x16 [ 138.583497] [] xfs_free_ag_extent+0x3dc/0x6b3 [ 138.583501] [] xfs_free_extent+0xb8/0xdd [ 138.583506] [] xlog_recover_process_efi+0x113/0x16c [ 138.583511] [] xlog_recover_process_efis+0x64/0xad [ 138.583516] [] xlog_recover_finish+0x15/0x8c [ 138.583520] [] xfs_log_mount_finish+0x1b/0x1d [ 138.583525] [] xfs_mountfs+0x487/0x5ab [ 138.583531] [] xfs_fs_fill_super+0x1b3/0x2b6 [ 138.583536] [] mount_bdev+0x138/0x19b [ 138.583540] [] ? xfs_mountfs_check_barriers+0x63/0x63 [ 138.583546] [] ? alloc_vfsmnt+0xa6/0x18c [ 138.583550] [] xfs_fs_mount+0x10/0x12 [ 138.583553] [] mount_fs+0x6b/0x14f [ 138.583558] [] ? __alloc_percpu+0xb/0xd [ 138.583563] [] vfs_kern_mount+0x60/0x98 [ 138.583567] [] do_kern_mount+0x48/0xd8 [ 138.583571] [] do_mount+0x6e1/0x744 [ 138.583575] [] ? memdup_user+0x43/0x63 [ 138.583578] [] ? strndup_user+0x39/0x4f [ 138.583582] [] sys_mount+0x83/0xbd [ 138.583589] [] system_call_fastpath+0x16/0x1b [ 138.583669] XFS (dm-0): Failed to recover EFIs [ 138.583672] XFS (dm-0): log mount finish failed From michael.monnerie@is.it-management.at Tue Jun 7 02:43:30 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p577hUim012518 for ; Tue, 7 Jun 2011 02:43:30 -0500 X-ASG-Debug-ID: 1307432603-5a4803140000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv14.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 15A9F14E4970; Tue, 7 Jun 2011 00:43:23 -0700 (PDT) Received: from mailsrv14.zmi.at (mailsrv1.zmi.at [212.69.164.54]) by cuda.sgi.com with ESMTP id ymMmECNDjYnFPMZy; Tue, 07 Jun 2011 00:43:23 -0700 (PDT) Received: from mailsrv.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 mailsrv14.zmi.at (Postfix) with ESMTPSA id 2E84617B; Tue, 7 Jun 2011 09:43:22 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.72.27.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv.i.zmi.at (Postfix) with ESMTPSA id 94CCF401C35; Tue, 7 Jun 2011 09:43:21 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: bug in xfs: can't recovery metadata log Subject: Re: bug in xfs: can't recovery metadata log Date: Tue, 7 Jun 2011 09:43:18 +0200 User-Agent: KMail/1.13.6 (Linux/2.6.38.6-zmi; KDE/4.6.0; x86_64; ; ) Cc: Drunkard Zhang , Alex Elder , xfs-masters@oss.sgi.com, linux-kernel@vger.kernel.org References: In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart1653724.kM9ukQj4WN"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <201106070943.21004@zmi.at> X-Barracuda-Connect: mailsrv1.zmi.at[212.69.164.54] X-Barracuda-Start-Time: 1307432606 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65720 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 --nextPart1653724.kM9ukQj4WN Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable On Dienstag, 7. Juni 2011 Drunkard Zhang wrote: > With 2.6.39.1 too, output not the same thing. I'm not a developer, but have you tries xfs_repair -n ? As you crashed,=20 probably the xfs log is damaged, needing a "xfs_repair -L", but wait for=20 a more competent answer before you do this. =2D-=20 mit freundlichen Gr=C3=BCssen, Michael Monnerie, Ing. BSc it-management Internet Services: Prot=C3=A9ger http://proteger.at [gesprochen: Prot-e-schee] Tel: +43 660 / 415 6531 // Haus zu verkaufen: http://zmi.at/langegg/ --nextPart1653724.kM9ukQj4WN Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) iEYEABECAAYFAk3t1pgACgkQzhSR9xwSCbR3LQCggGekCvYKvSgMEnA7QXCP5bm7 q1QAoOOrZUa70PS2oeE7ZRTxGG9z4LIu =Tkyj -----END PGP SIGNATURE----- --nextPart1653724.kM9ukQj4WN-- From gongfan193@gmail.com Tue Jun 7 02:56:52 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p577uqv6012832 for ; Tue, 7 Jun 2011 02:56:52 -0500 X-ASG-Debug-ID: 1307433410-642b03070000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-gx0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D229A1E40A85; Tue, 7 Jun 2011 00:56:50 -0700 (PDT) Received: from mail-gx0-f181.google.com (mail-gx0-f181.google.com [209.85.161.181]) by cuda.sgi.com with ESMTP id rZyNA6dH4OPc6qb1; Tue, 07 Jun 2011 00:56:50 -0700 (PDT) Received: by gxk9 with SMTP id 9so2390300gxk.26 for ; Tue, 07 Jun 2011 00:56:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=sef3jJBL6oWeat6gtOCDRDZNBgQysNSCd25zK53KJZo=; b=kunnLWUuFqOtWkPlefc6NojOUwnOl1UkZPH8+jKNX00pk3GqXDe6dsGOVXeBh00wXz qlb/tXovdiVyWw7/KdY9e/xnd/LlX+imcYOeyAgawEQn/GEpR5EaKpp+ZzJYKySWwbtE Vt1B6zdGoKnpqnGbnw9bec8p+OLdIJj6OuA5M= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; b=pqMcDYdTe1TVZZ+OwTeb4rVsYhuozMRaYiZsApgexFwkIcT5nrcDs+h7jD3l2QG2D9 5XB4jp/Qf4ked4cFNAwiuvUtSyDicG/0XB/Q2RMIKohSAZGH+/6CZELkac8Mb4TbdfQf vGmSwXisA2kmnM1DSjcMRFgiv+VSOTi6bcyuY= Received: by 10.101.185.34 with SMTP id m34mr4524511anp.83.1307433410331; Tue, 07 Jun 2011 00:56:50 -0700 (PDT) MIME-Version: 1.0 Received: by 10.100.198.3 with HTTP; Tue, 7 Jun 2011 00:56:30 -0700 (PDT) In-Reply-To: <201106070943.21004@zmi.at> References: <201106070943.21004@zmi.at> From: Drunkard Zhang Date: Tue, 7 Jun 2011 15:56:30 +0800 Message-ID: X-ASG-Orig-Subj: Re: bug in xfs: can't recovery metadata log Subject: Re: bug in xfs: can't recovery metadata log To: Michael Monnerie Cc: xfs@oss.sgi.com, Alex Elder , xfs-masters@oss.sgi.com, linux-kernel@vger.kernel.org Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-gx0-f181.google.com[209.85.161.181] X-Barracuda-Start-Time: 1307433411 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0195 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65721 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 2011/6/7 Michael Monnerie : > On Dienstag, 7. Juni 2011 Drunkard Zhang wrote: >> With 2.6.39.1 too, output not the same thing. > > I'm not a developer, but have you tries xfs_repair -n ? As you crashed, > probably the xfs log is damaged, needing a "xfs_repair -L", but wait for > a more competent answer before you do this. > Oops, I already did "xfs_repair -L", successed. It's in production environment, didn't have too much time to figure out why :-( From michael.monnerie@is.it-management.at Tue Jun 7 03:31:08 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p578V8xK013565 for ; Tue, 7 Jun 2011 03:31:08 -0500 X-ASG-Debug-ID: 1307435465-6d2803bd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv14.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5A1D94A4DDA; Tue, 7 Jun 2011 01:31:06 -0700 (PDT) Received: from mailsrv14.zmi.at (mailsrv1.zmi.at [212.69.164.54]) by cuda.sgi.com with ESMTP id ThDeeU9msjiWZ36z; Tue, 07 Jun 2011 01:31:06 -0700 (PDT) Received: from mailsrv.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 mailsrv14.zmi.at (Postfix) with ESMTPSA id 60CEA17B; Tue, 7 Jun 2011 10:31:05 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.72.27.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv.i.zmi.at (Postfix) with ESMTPSA id CA954401C35; Tue, 7 Jun 2011 10:31:03 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: Drunkard Zhang X-ASG-Orig-Subj: Re: bug in xfs: can't recovery metadata log Subject: Re: bug in xfs: can't recovery metadata log Date: Tue, 7 Jun 2011 10:30:59 +0200 User-Agent: KMail/1.13.6 (Linux/2.6.38.6-zmi; KDE/4.6.0; x86_64; ; ) Cc: xfs@oss.sgi.com, Alex Elder , xfs-masters@oss.sgi.com, linux-kernel@vger.kernel.org References: <201106070943.21004@zmi.at> In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart9287929.ziTybSKarZ"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <201106071031.02928@zmi.at> X-Barracuda-Connect: mailsrv1.zmi.at[212.69.164.54] X-Barracuda-Start-Time: 1307435467 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65723 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 --nextPart9287929.ziTybSKarZ Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable On Dienstag, 7. Juni 2011 Drunkard Zhang wrote: > Oops, I already did "xfs_repair -L", successed. It's in production > environment, didn't have too much time to figure out why :-( That was probably the only chance anyway. I'm wondering about the crash. Even if the log is full of shit because=20 of a crash, xfs should not drive to hell but better report the fact and=20 exit. But maybe such strict checking is not worth the effort, as every=20 competent admin does xfs_repair then anyway? =2D-=20 mit freundlichen Gr=C3=BCssen, Michael Monnerie, Ing. BSc it-management Internet Services: Prot=C3=A9ger http://proteger.at [gesprochen: Prot-e-schee] Tel: +43 660 / 415 6531 // Haus zu verkaufen: http://zmi.at/langegg/ --nextPart9287929.ziTybSKarZ Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) iEYEABECAAYFAk3t4cYACgkQzhSR9xwSCbSIygCffq+fnymmTsywcGoOx4vrrsdb E/0AoN/q5gfyXV5IhdJjdFGhMQRkVhdy =pbSI -----END PGP SIGNATURE----- --nextPart9287929.ziTybSKarZ-- From BATV+8efe31b41d7835736391+2844+infradead.org+hch@bombadil.srs.infradead.org Tue Jun 7 05:32:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p57AWwM6017622 for ; Tue, 7 Jun 2011 05:32:59 -0500 X-ASG-Debug-ID: 1307442775-2132009b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 84B801E40FA6; Tue, 7 Jun 2011 03:32:55 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id KDTYEFk46wCicg9F; Tue, 07 Jun 2011 03:32:55 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QTtae-0005gb-Ro; Tue, 07 Jun 2011 10:32:52 +0000 Date: Tue, 7 Jun 2011 06:32:52 -0400 From: Christoph Hellwig To: Drunkard Zhang Cc: Alex Elder , xfs-masters@oss.sgi.com, xfs@oss.sgi.com, linux-kernel@vger.kernel.org X-ASG-Orig-Subj: Re: bug in xfs: can't recovery metadata log Subject: Re: bug in xfs: can't recovery metadata log Message-ID: <20110607103252.GA15140@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.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1307442776 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65731 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Tue, Jun 07, 2011 at 01:20:23PM +0800, Drunkard Zhang wrote: > The log recovery failure happened after a hard reboot, I did "mount > /dev/lg/log /mnt/temp/" twice, but the similar dmesg error. > > The xfs lives on LVM, with 4x2TB SATA II disk. > > The first time: > [ 1479.130446] XFS mounting filesystem dm-0 > [ 1479.226525] Starting XFS recovery on filesystem: dm-0 (logdev: internal) > [ 1506.217842] BUG: unable to handle kernel NULL pointer dereference > at 00000000000000f8 [...] > [ 1506.220989] RIP: 0010:[] [] > xfs_cmn_err+0x6b/0x92 [...] > [ 1506.226301] [] ? kmem_zone_zalloc+0x1f/0x30 > [ 1506.226549] [] xfs_error_report+0x39/0x40 > [ 1506.226805] [] ? xfs_free_extent+0x8e/0xae > [ 1506.227056] [] xfs_free_ag_extent+0x3e7/0x70b > [ 1506.227306] [] xfs_free_extent+0x8e/0xae It looks like you hit one of the XFS_WANT_CORRUPTED_GOTO checks in xfs_error_report, and we hit something in there that isn't initialized that early during the mount process. My guess it's actually the mp->m_fsname dereference in xfs_fs_vcmn_err. It's fixed by the message rework in 2.6.39+, but that will only prevent the crash, you'll still get an error and the log recovery will be aborted. If you can get a more recent kernel on the box I'd be curious what the output form it is. Did you run older kernels on this machine before? Before 2.6.33 device mapper support for barriers (aka cache flushes) was incomplete and frequently led to free space corruption if people left the volatile write caches on. For MD underneath it event took a bit longer. If you just want to continue using the filesystem you can nuke the log using xfs_repair -L. From s.priebe@profihost.ag Tue Jun 7 06:42:35 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p57BgYrO023032 for ; Tue, 7 Jun 2011 06:42:35 -0500 X-ASG-Debug-ID: 1307446951-23bc03490000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from server655-han.de-nserver.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EBAAE1ED510B for ; Tue, 7 Jun 2011 04:42:31 -0700 (PDT) Received: from server655-han.de-nserver.de (server655-han.de-nserver.de [85.158.177.45]) by cuda.sgi.com with ESMTP id tkxQFvhLS4AARHbC for ; Tue, 07 Jun 2011 04:42:31 -0700 (PDT) Received: (qmail 13738 invoked from network); 7 Jun 2011 13:42:29 +0200 Received: from fw-office.allied-internet.ag (HELO s.priebe-desktop) (85.158.179.66) (smtp-auth username hostmaster@profihost.com, mechanism plain) by server655-han.de-nserver.de (qpsmtpd/0.82) with ESMTPA; Tue, 07 Jun 2011 13:42:29 +0200 Message-ID: <4DEE0EA4.9090002@profihost.ag> Date: Tue, 07 Jun 2011 13:42:28 +0200 From: Stefan Priebe - Profihost AG User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110424 Thunderbird/3.1.10 MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: XFS: accounting of reclaimable inodes is incorrect Subject: XFS: accounting of reclaimable inodes is incorrect Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-User-Auth: Auth by hostmaster@profihost.com through 85.158.179.66 X-Barracuda-Connect: server655-han.de-nserver.de[85.158.177.45] X-Barracuda-Start-Time: 1307446952 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0763 1.0000 -1.5363 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.54 X-Barracuda-Spam-Status: No, SCORE=-1.54 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65735 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, it seems that a bug was backported into the latest 2.6.32 longterm stable kernel. Now the patch "XFS: accounting of reclaimable inodes is incorrect" needs to get backported to 2.6.32. Who can help? Who is responsible? Please CC me i'm not on list. -- Greets, Stefan From BATV+8efe31b41d7835736391+2844+infradead.org+hch@bombadil.srs.infradead.org Tue Jun 7 06:54:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p57Bsiac023393 for ; Tue, 7 Jun 2011 06:54:45 -0500 X-ASG-Debug-ID: 1307447683-5fc402c60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0C93615DF3F1 for ; Tue, 7 Jun 2011 04:54:43 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id shxGZTmTHKusOXyE for ; Tue, 07 Jun 2011 04:54:43 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QTurq-0001DH-0p; Tue, 07 Jun 2011 11:54:42 +0000 Date: Tue, 7 Jun 2011 07:54:42 -0400 From: Christoph Hellwig To: Stefan Priebe - Profihost AG Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS: accounting of reclaimable inodes is incorrect Subject: Re: XFS: accounting of reclaimable inodes is incorrect Message-ID: <20110607115441.GA4653@infradead.org> References: <4DEE0EA4.9090002@profihost.ag> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DEE0EA4.9090002@profihost.ag> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1307447684 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65736 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Tue, Jun 07, 2011 at 01:42:28PM +0200, Stefan Priebe - Profihost AG wrote: > Hi, > > it seems that a bug was backported into the latest 2.6.32 longterm > stable kernel. Now the patch "XFS: accounting of reclaimable inodes > is incorrect" needs to get backported to 2.6.32. > > Who can help? Who is responsible? For -stable releases no one really is. If you want to help you can backport it and send it to the stable mailinglist. From stan@hardwarefreak.com Tue Jun 7 07:05:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p57C5t7l023690 for ; Tue, 7 Jun 2011 07:05:55 -0500 X-ASG-Debug-ID: 1307448353-09af002f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from greer.hardwarefreak.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9AF2B1ED523F for ; Tue, 7 Jun 2011 05:05:54 -0700 (PDT) Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id KEMlQswfAnXA91uj for ; Tue, 07 Jun 2011 05:05:54 -0700 (PDT) Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 4A5076C0A2; Tue, 7 Jun 2011 07:05:53 -0500 (CDT) Message-ID: <4DEE1422.7060902@hardwarefreak.com> Date: Tue, 07 Jun 2011 07:05:54 -0500 From: Stan Hoeppner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Kenneth Emerson CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Defragging XFS File Systems Subject: Re: Defragging XFS File Systems References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1307448354 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65737 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On 6/6/2011 10:52 PM, Kenneth Emerson wrote: > I hadn't given much thought to fragmentation of my TV recordings volume > (XFS) until reading through some MythTV-users threads recently that > mentioned how fragmented an XFS file system could become. After running > xfs_db, I found out that my fs appeared to be quite bad: > > $ sudo xfs_db -c frag -r /dev/mapper/appl_vg-appl_lv > actual 1138668, ideal 11023, fragmentation factor 99.03% > > I then ran xfs_fsr with all defaults (ran for two hours) and then re-ran >From man xfs_fsr: It runs for up to two hours after which it records the filesystem where it left off, so it can start there the next time. This information is stored in the file /var/tmp/.fsrlast_xfs. If the information found here is somehow inconsistent or out of date it is ignored and reorganization starts at the beginning of the first filesystem found in /etc/mtab. If xfs_fsr stopped at 2 hours, multiple additional runs will likely be required to get good defragmentation. > xfs_db and got the following results: > > $ sudo xfs_db -c frag -r /dev/mapper/appl_vg-appl_lv The -r above suggests you created a large realtime section for your MythTV storage. It may be helpful for you to provide xfs_info output for the heavily fragmented filesystem. > invalid numrecs (27111) in bmapbtd block > invalid numrecs (4716) in bmapbtd block > invalid numrecs (58978) in bmapbtd block I'll leave these errors for one of the devs to tackle. > actual 1034793, ideal 11024, fragmentation factor 98.93% > > The fragmentation level was reduced, It was likely reduced much more than this. Dropping caches or unmounting and remounting the filesystem is often necessary after running xfs_fsr in order to show the actual fragmentation level. Try: # echo 3 > /proc/sys/vm/drop_caches and then run xfs_db again. > but I was concerned about the error > messages. Before I go any further, am I corrupting my file system with the > defragging or are these "invalid numrecs" messages unimportant? Run 'xfs_check' or 'xfs_repair -n' and post the results. -- Stan From BATV+8efe31b41d7835736391+2844+infradead.org+hch@bombadil.srs.infradead.org Tue Jun 7 07:06:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p57C6SL2023728 for ; Tue, 7 Jun 2011 07:06:29 -0500 X-ASG-Debug-ID: 1307448387-5a0f039b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B471CD785F9 for ; Tue, 7 Jun 2011 05:06:27 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id Myo347V2BveFy9sc for ; Tue, 07 Jun 2011 05:06:27 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QTv38-0003UK-T2; Tue, 07 Jun 2011 12:06:22 +0000 Date: Tue, 7 Jun 2011 08:06:22 -0400 From: Christoph Hellwig To: Allison Henderson Cc: Christoph Hellwig , Allison Henderson , linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Re: Fwd: [XFSTEST Add Fallocate Punch Hole Tests 1/3 v4] Add Punch Hole to FSX Subject: Re: Fwd: [XFSTEST Add Fallocate Punch Hole Tests 1/3 v4] Add Punch Hole to FSX Message-ID: <20110607120622.GA13357@infradead.org> References: <4DE93268.90007@linux.vnet.ibm.com> <20110606150323.GB22236@infradead.org> <4DED1155.4060503@vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DED1155.4060503@vnet.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1307448387 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65738 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 and the new patchset look quite a bit better. I'll try to get some time to review the patches soon, thanks! From s.priebe@profihost.ag Tue Jun 7 07:58:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p57CwbFs025077 for ; Tue, 7 Jun 2011 07:58:38 -0500 X-ASG-Debug-ID: 1307451514-5a5000600000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from server655-han.de-nserver.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AA2551664109 for ; Tue, 7 Jun 2011 05:58:35 -0700 (PDT) Received: from server655-han.de-nserver.de (server655-han.de-nserver.de [85.158.177.45]) by cuda.sgi.com with ESMTP id U9jxHLv7WHOs9KBG for ; Tue, 07 Jun 2011 05:58:35 -0700 (PDT) Received: (qmail 9955 invoked from network); 7 Jun 2011 14:58:33 +0200 Received: from fw-office.allied-internet.ag (HELO s.priebe-desktop) (85.158.179.66) (smtp-auth username hostmaster@profihost.com, mechanism plain) by server655-han.de-nserver.de (qpsmtpd/0.82) with ESMTPA; Tue, 07 Jun 2011 14:58:33 +0200 Message-ID: <4DEE2078.3010102@profihost.ag> Date: Tue, 07 Jun 2011 14:58:32 +0200 From: Stefan Priebe - Profihost AG User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110424 Thunderbird/3.1.10 MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS: accounting of reclaimable inodes is incorrect Subject: Re: XFS: accounting of reclaimable inodes is incorrect References: <4DEE0EA4.9090002@profihost.ag> <20110607115441.GA4653@infradead.org> In-Reply-To: <20110607115441.GA4653@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-User-Auth: Auth by hostmaster@profihost.com through 85.158.179.66 X-Barracuda-Connect: server655-han.de-nserver.de[85.158.177.45] X-Barracuda-Start-Time: 1307451516 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0152 1.0000 -1.9222 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.2.65740 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 seems that a bug was backported into the latest 2.6.32 longterm >> stable kernel. Now the patch "XFS: accounting of reclaimable inodes >> is incorrect" needs to get backported to 2.6.32. >> >> Who can help? Who is responsible? > > For -stable releases no one really is. If you want to help you can > backport it and send it to the stable mailinglist. Sorry i can't. I'm not a kernel hacker. But i think a real bug / showstopper should be fixed in a longterm stable kernel. Redhat seems to have fixed it on it's own: https://bugzilla.redhat.com/show_bug.cgi?id=642680 Sadly they haven't provided a patch. Greets Stefan From BATV+8efe31b41d7835736391+2844+infradead.org+hch@bombadil.srs.infradead.org Tue Jun 7 08:34:31 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p57DYUTx026024 for ; Tue, 7 Jun 2011 08:34:31 -0500 X-ASG-Debug-ID: 1307453669-152f01be0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 411184A5B99 for ; Tue, 7 Jun 2011 06:34:29 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id NbueBSv4btKZy0Ns for ; Tue, 07 Jun 2011 06:34:29 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QTwQP-0002NF-7W; Tue, 07 Jun 2011 13:34:29 +0000 Date: Tue, 7 Jun 2011 09:34:29 -0400 From: Christoph Hellwig To: Stefan Priebe - Profihost AG Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS: accounting of reclaimable inodes is incorrect Subject: Re: XFS: accounting of reclaimable inodes is incorrect Message-ID: <20110607133429.GA9049@infradead.org> References: <4DEE0EA4.9090002@profihost.ag> <20110607115441.GA4653@infradead.org> <4DEE2078.3010102@profihost.ag> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DEE2078.3010102@profihost.ag> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1307453670 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65743 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Tue, Jun 07, 2011 at 02:58:32PM +0200, Stefan Priebe - Profihost AG wrote: > Sorry i can't. I'm not a kernel hacker. But i think a real bug / > showstopper should be fixed in a longterm stable kernel. Linux 2.6.32 isn't really something supported by us. It's not just a very old codebase, but also one where a lot of the XFS code was pretty much in flux. If you want supported old releases work use one of the commercially supported one like RedHat or SuSE. > Redhat seems to have fixed it on it's own: > https://bugzilla.redhat.com/show_bug.cgi?id=642680 I suspect the upstream commit you want is 081003fff467ea0e727f66d5d435b4f473a789b3, but I can't gurantee this actually applies to the 2.6.32 codebase. From s.priebe@profihost.ag Tue Jun 7 08:48:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p57DmgZY026373 for ; Tue, 7 Jun 2011 08:48:42 -0500 X-ASG-Debug-ID: 1307454520-3a3e029f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from server655-han.de-nserver.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A8B0E1ED5D66 for ; Tue, 7 Jun 2011 06:48:40 -0700 (PDT) Received: from server655-han.de-nserver.de (server655-han.de-nserver.de [85.158.177.45]) by cuda.sgi.com with ESMTP id 0LKuljsfZ8gWXh1F for ; Tue, 07 Jun 2011 06:48:40 -0700 (PDT) Received: (qmail 31223 invoked from network); 7 Jun 2011 15:48:39 +0200 Received: from fw-office.allied-internet.ag (HELO s.priebe-desktop) (85.158.179.66) (smtp-auth username hostmaster@profihost.com, mechanism plain) by server655-han.de-nserver.de (qpsmtpd/0.82) with ESMTPA; Tue, 07 Jun 2011 15:48:39 +0200 Message-ID: <4DEE2C36.8030008@profihost.ag> Date: Tue, 07 Jun 2011 15:48:38 +0200 From: Stefan Priebe - Profihost AG User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110424 Thunderbird/3.1.10 MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS: accounting of reclaimable inodes is incorrect Subject: Re: XFS: accounting of reclaimable inodes is incorrect References: <4DEE0EA4.9090002@profihost.ag> <20110607115441.GA4653@infradead.org> <4DEE2078.3010102@profihost.ag> <20110607133429.GA9049@infradead.org> In-Reply-To: <20110607133429.GA9049@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-User-Auth: Auth by hostmaster@profihost.com through 85.158.179.66 X-Barracuda-Connect: server655-han.de-nserver.de[85.158.177.45] X-Barracuda-Start-Time: 1307454521 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0058 1.0000 -1.9834 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.2.65743 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 07.06.2011 15:34, schrieb Christoph Hellwig: > On Tue, Jun 07, 2011 at 02:58:32PM +0200, Stefan Priebe - Profihost AG wrote: > Linux 2.6.32 isn't really something supported by us. It's not just a > very old codebase, but also one where a lot of the XFS code was pretty > much in flux. If you want supported old releases work use one of > the commercially supported one like RedHat or SuSE. OK so my thought was totally wrong. I thought the longterm stable releases will still get bugfixed by SGI or whoever wrote the stuff. Sorry for that then. But what is then the idea of a longterm stable? >> Redhat seems to have fixed it on it's own: >> https://bugzilla.redhat.com/show_bug.cgi?id=642680 > > I suspect the upstream commit you want is > 081003fff467ea0e727f66d5d435b4f473a789b3, but I can't gurantee this > actually applies to the 2.6.32 codebase. No it doesn't. I already tried to implement it into current 2.6.32.41 code. Greets Stefan From dhoworth@mrc-lmb.cam.ac.uk Tue Jun 7 09:00:15 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p57E0DPc026784 for ; Tue, 7 Jun 2011 09:00:14 -0500 X-ASG-Debug-ID: 1307455211-5a4d02920000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ppsw-51.csi.cam.ac.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4BB6412D1187 for ; Tue, 7 Jun 2011 07:00:11 -0700 (PDT) Received: from ppsw-51.csi.cam.ac.uk (ppsw-51.csi.cam.ac.uk [131.111.8.151]) by cuda.sgi.com with ESMTP id hmAvPILU7T00cpM5 for ; Tue, 07 Jun 2011 07:00:11 -0700 (PDT) X-Cam-AntiVirus: no malware found X-Cam-SpamDetails: not scanned X-Cam-ScannerInfo: http://www.cam.ac.uk/cs/email/scanner/ Received: from mail.mrc-lmb.cam.ac.uk ([131.111.85.9]:38173 helo=mail.lmb.internal) by ppsw-51.csi.cam.ac.uk (ppsw.cam.ac.uk [131.111.8.138]:25) with esmtp id 1QTwpG-0007yN-Z4 (Exim 4.72) for xfs@oss.sgi.com (return-path ); Tue, 07 Jun 2011 15:00:10 +0100 Received: from cpepc210-3.lmb.internal ([10.14.0.2]) by mail.lmb.internal with esmtp (Exim 4.63) (envelope-from ) id 1QTwpG-00054D-PE for xfs@oss.sgi.com; Tue, 07 Jun 2011 15:00:10 +0100 Message-ID: <4DEE2EEA.3080705@mrc-lmb.cam.ac.uk> Date: Tue, 07 Jun 2011 15:00:10 +0100 From: Dave Howorth Organization: MRC Centre for Protein Engineering User-Agent: Thunderbird 1.5.0.10 (X11/20060911) MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS: accounting of reclaimable inodes is incorrect Subject: Re: XFS: accounting of reclaimable inodes is incorrect References: <4DEE0EA4.9090002@profihost.ag> <20110607115441.GA4653@infradead.org> <4DEE2078.3010102@profihost.ag> <20110607133429.GA9049@infradead.org> In-Reply-To: <20110607133429.GA9049@infradead.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ppsw-51.csi.cam.ac.uk[131.111.8.151] X-Barracuda-Start-Time: 1307455212 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.2.65744 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: > Linux 2.6.32 isn't really something supported by us. It's not just a > very old codebase, but also one where a lot of the XFS code was pretty > much in flux. If you want supported old releases work use one of > the commercially supported one like RedHat or SuSE. 2.6.32 is also the kernel in Ubuntu 10.04 LTS From BATV+8efe31b41d7835736391+2844+infradead.org+hch@bombadil.srs.infradead.org Tue Jun 7 09:09:52 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p57E9q3G027057 for ; Tue, 7 Jun 2011 09:09:52 -0500 X-ASG-Debug-ID: 1307455791-23f902320000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0F3C94A6352 for ; Tue, 7 Jun 2011 07:09:51 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id hL6NvN4IKV8A3SIy for ; Tue, 07 Jun 2011 07:09:51 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QTwyb-0008Gl-Mq; Tue, 07 Jun 2011 14:09:49 +0000 Date: Tue, 7 Jun 2011 10:09:49 -0400 From: Christoph Hellwig To: Stefan Priebe - Profihost AG Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS: accounting of reclaimable inodes is incorrect Subject: Re: XFS: accounting of reclaimable inodes is incorrect Message-ID: <20110607140949.GA31769@infradead.org> References: <4DEE0EA4.9090002@profihost.ag> <20110607115441.GA4653@infradead.org> <4DEE2078.3010102@profihost.ag> <20110607133429.GA9049@infradead.org> <4DEE2C36.8030008@profihost.ag> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DEE2C36.8030008@profihost.ag> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1307455792 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65745 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Tue, Jun 07, 2011 at 03:48:38PM +0200, Stefan Priebe - Profihost AG wrote: > Am 07.06.2011 15:34, schrieb Christoph Hellwig: > >On Tue, Jun 07, 2011 at 02:58:32PM +0200, Stefan Priebe - Profihost AG wrote: > >Linux 2.6.32 isn't really something supported by us. It's not just a > >very old codebase, but also one where a lot of the XFS code was pretty > >much in flux. If you want supported old releases work use one of > >the commercially supported one like RedHat or SuSE. > OK so my thought was totally wrong. I thought the longterm stable > releases will still get bugfixed by SGI or whoever wrote the stuff. > Sorry for that then. But what is then the idea of a longterm stable? I have no idea what the idea is, but it's clearly not viable for normal kernel developers. Backporting code to age old releases and QAing it is a major effort, and people generally don't do it unless they are paid for it. From pg_mh@sabi.co.UK Tue Jun 7 09:11:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p57EBCmJ027107 for ; Tue, 7 Jun 2011 09:11:12 -0500 X-ASG-Debug-ID: 1307455869-3a1501160000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hermes1.dur.ac.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D73B94A636B for ; Tue, 7 Jun 2011 07:11:09 -0700 (PDT) Received: from hermes1.dur.ac.uk (hermes1.dur.ac.uk [129.234.248.1]) by cuda.sgi.com with ESMTP id YBKDZE0cqBMMZ4js for ; Tue, 07 Jun 2011 07:11:09 -0700 (PDT) Received: from smtphost3.dur.ac.uk (smtphost3.dur.ac.uk [129.234.252.3]) by hermes1.dur.ac.uk (8.13.8/8.13.7) with ESMTP id p57E9aF8019756; Tue, 7 Jun 2011 15:09:40 +0100 Received: from ty.sabi.co.UK (o1.phyip3.dur.ac.uk [129.234.186.1]) by smtphost3.dur.ac.uk (8.13.8/8.13.7) with ESMTP id p57E9Hng022076 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO); Tue, 7 Jun 2011 15:09:17 +0100 Received: from from [127.0.0.1] (helo=tree.ty.sabi.co.UK) by ty.sabi.co.UK with esmtp(Exim 4.71 #1) id 1QTwy0-0006Sf-0v; Tue, 07 Jun 2011 15:09:12 +0100 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <19950.12549.541440.285348@tree.ty.sabi.co.UK> Date: Tue, 7 Jun 2011 15:09:09 +0100 X-Face: SMJE]JPYVBO-9UR%/8d'mG.F!@.,l@c[f'[%S8'BZIcbQc3/">GrXDwb#;fTRGNmHr^JFb SAptvwWc,0+z+~p~"Gdr4H$(|N(yF(wwCM2bW0~U?HPEE^fkPGx^u[*[yV.gyB!hDOli}EF[\cW*S H&spRGFL}{`bj1TaD^l/"[ msn( /TH#THs{Hpj>)]f> Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general In-Reply-To: <201106060929.06814@zmi.at> References: <19945.24042.711472.158523@tree.ty.sabi.co.UK> <201106060929.06814@zmi.at> X-Mailer: VM 8.0.13 under 23.1.1 (x86_64-pc-linux-gnu) From: pg_mh@sabi.co.UK (Peter Grandi) X-Disclaimer: This message contains only personal opinions X-DurhamAcUk-MailScanner: Found to be clean, Found to be clean X-DurhamAcUk-MailScanner-ID: p57E9aF8019756 X-Barracuda-Connect: hermes1.dur.ac.uk[129.234.248.1] X-Barracuda-Start-Time: 1307455870 X-Barracuda-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.2.65745 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 [ ... ] >> vm/dirty_ratio=2 >> vm/dirty_bytes=400000000 >> >> vm/dirty_background_ratio=60 >> vm/dirty_background_bytes=0 > Why dirty_background_ratio=60? This would mean you start to > write dirty pages only after it reaches 60% of total system > memory... Oops, invert 'dirty_background_*' and 'dirty_*', I was writing from memory and got it the wrong way round. These are BTW my notes in my 'sysctl.conf', with pointer to a nice discussion: # http://www.westnet.com/~gsmith/content/linux-pdflush.htm # dirty_ratio # If more than this percentage of active memory is unflushed then # *all* processes that are writing start writing synchronously. # dirty_background_ratio # If more than this percentage of active memory is unflushed the # system starts flushing. # dirty_expire_centisecs # How long a page can be dirty before it gets flushed. # dirty_writeback_centisecs # How often the flusher runs. # In 'mm/pagewriteback.c' there is code that makes sure that in effect # the 'dirty_background_ratio' must be smaller (half if larger or equal) # than the 'dirty_ratio', and other code to put lower limits on # 'dirty_writeback_centisecs' and whatever. > [ ... '*_bytes' and '*_ratio' Maybe you specified both to fit > older and newer kernels in one example? Yes. I had written what I thought was a much simpler/neater change here: http://www.sabi.co.uk/blog/0707jul.html#070701 but I currently put in both versions and let the better one win :-). >> vm/dirty_expire_centisecs=200 >> vm/dirty_writeback_centisecs=400 > dirty_expire_centisecs to 200 means a sync every 2s, which > might be good in this specific setup mentioned here, Not quite, see above. There are times where I think the values should be the other way round (run the flusher every 2s and flush pages dirty for more than 4s). > but not for a generic server. Uhmmm, I am not so sure. Because I think that flushes should be related to IO speed, and even on a smaller system 2 seconds of IO are a lot of data. Quite a few traditional Linux (and Unix) tunables are set to defaults from a time where hardware was much slower. I started using UNIX when there was no 'update' daemon, and I got into the habit which I still have of typing 'sync' explicitly every now and then, and then when 'update' was introduced to do 'sync' every 30s there was not a lot of data one could lose in those 30s. > That would defeat XFS's in-memory grouping of blocks before > writeout, and in case of many parallel (slow|ftp) uploads > could lead to much more data fragmentation, or no? Well, it depends on what "fragmentation" means here. It is a long standing item of discussion. It is nice to see a 10GB file all in one extent, but is it *necessary*? As long as a file is composed of fairly large contiguous extents and they are not themselves widely scattered, things are going to be fine. What matter is the ratio of long seeks to data reads, and minimizing that is not the same as reducing seeks to zero. Now consider two common cases: * A file that is written out at speed, say 100-500MB/s. 2-4s means that there is an opportunity to allocate 200MB-2GB contiguous extents, and with any luck much larger ones. Conversely any larger intervals means potentially losing 200MB-2GB of data. Sure, if they did not want to lose the data the user process should be doing 'fdatasync()', but XFS in particular is sort of pretty good at doing a mild version of 'O_PONIES' where there is a balance between going as fast as possible (buffer a lot in memory) and offering *some* level of safety (as shown in the tests I did for a fair comparison with 'ext3'). * A file that is written slowly in small chunks. Well, *nothing* will help that except preallocate or space reservations. Personally I'd rather have a file system design with space reservations (on detecting an append-like access pattern) and truncate-on-close than delayed allocation like XFS; while delayed allocation seems to work well enough in many cases, it is not quit "the more the merrier". From nveber@pyre.virge.net Tue Jun 7 11:37:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 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 p57Gbj0p037071 for ; Tue, 7 Jun 2011 11:37:45 -0500 X-ASG-Debug-ID: 1307464663-549603080000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pyre.virge.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 27EA31E412E6 for ; Tue, 7 Jun 2011 09:37:43 -0700 (PDT) Received: from pyre.virge.net (24-246-28-70.cable.teksavvy.com [24.246.28.70]) by cuda.sgi.com with ESMTP id myEIUngmZmRv0Bmy for ; Tue, 07 Jun 2011 09:37:43 -0700 (PDT) Received: by pyre.virge.net (Postfix, from userid 1000) id 8A4FE10C135D; Tue, 7 Jun 2011 12:37:42 -0400 (EDT) Date: Tue, 7 Jun 2011 12:37:42 -0400 From: Norbert Veber To: xfs@oss.sgi.com X-ASG-Orig-Subj: Small files perform much faster on newly formatted fs? Subject: Small files perform much faster on newly formatted fs? Message-ID: <20110607163742.GH28625@pyre.virge.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: 24-246-28-70.cable.teksavvy.com[24.246.28.70] X-Barracuda-Start-Time: 1307464664 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65755 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 have some xfs filesystems on my computer running linux. These were created (formatted) about 2 years ago on debian 5.0 on software raid 5+lvm. I am getting pretty terible performance with small files, and decided to try to optimize that a bit with some mount options etc. I also created a new filesystem to try different mkfs options. This was done on the same computer which has since been upgraded to debian 6.0. I found a very suprising thing. The new filesystem performed an order of magnitude faster than the 2 year old filessytem which has made with an older kernel and older mkfs.xfs (from debian 5.0). For a simple test I tried to time the untar and rm -rf on the linux 2.6.32 source tree. Its not very scientific but I get pretty consistent results. Old 20gb filessystem: pyre:/shared# xfs_info /shared meta-data=/dev/mapper/vg0-shared isize=256 agcount=9, agsize=610304 blks = sectsz=512 attr=2 data = bsize=4096 blocks=5062656, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=4096 blocks=0, rtextents=0 Since sunit and swidth wasnt automatically set by the old debian 5 mkfs time, I use the mount options isntead: nveber@pyre[6788:~/files/doc]$ mount | grep shared /dev/mapper/vg0-newshared on /mnt/tmp type xfs (rw) /dev/mapper/vg0-shared on /shared type xfs (rw,sunit=128,swidth=256) Now for the "benchmark": pyre:/shared# sync;sleep 15s;time ionice -c1 tar -zxf linux-2.6_2.6.32.orig.tar.gz real 3m6.842s user 0m3.800s sys 0m2.692s New 30gb filesystem: pyre:/shared# xfs_info /mnt/tmp meta-data=/dev/mapper/vg0-newshared isize=256 agcount=16, agsize=491504 blks = sectsz=512 attr=2 data = bsize=4096 blocks=7864064, imaxpct=25 = sunit=16 swidth=32 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=3840, version=2 = sectsz=512 sunit=16 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 pyre:/mnt/tmp# sync;sleep 15s;time ionice -c1 tar -zxf linux-2.6_2.6.32.orig.tar.gz real 0m19.851s user 0m3.828s sys 0m2.184s 20 seconds vs 3+ minutes?! The only difference I can see is lazy-count=1 and a larger agcount. Sunit and swidth were also set automatically by mkfs this time. I tried the lazy-count option for the old fs: pyre:~# umount /shared pyre:~# xfs_admin -c1 /dev/vg0/shared Enabling lazy-counters pyre:~# mount /shared pyre:/shared# mv linux-2.6-2.6.32/ deleteme pyre:/shared# sync;sleep 15s;time ionice -c1 tar -zxf linux-2.6_2.6.32.orig.tar.gz real 2m37.634s user 0m3.800s sys 0m2.612s Its a little faster now, but still way slower than the new fs. Whats the difference, and how can I make the old one perform at this level short of reformatting? :) Thanks, Norbert From aelder@oss.sgi.com Tue Jun 7 14:38:14 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.4.0-r929098 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 p57JcE5i045748 for ; Tue, 7 Jun 2011 14:38:14 -0500 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id p57JcCdI045670; Tue, 7 Jun 2011 14:38:12 -0500 Date: Tue, 7 Jun 2011 14:38:12 -0500 Message-Id: <201106071938.p57JcCdI045670@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.38-18957-g59c5f46 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 233eebb9a96f956c541c0c9094fd321894bd93a7 X-Git-Newrev: 59c5f46fbe01a00eedf54a23789634438bb80603 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 aa38572 fs: pass exact type of data dirties to ->dirty_inode 8a0599d Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs 1495f23 vmscan: change shrinker API by passing shrink_control struct a77febb Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs 57d19e8 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 70f23fd treewide: fix a few typos in comments 7ac9565 xfs: fix race condition in AIL push trigger fe0da76 xfs: make AIL target updates and compares 32bit safe. 50e8668 xfs: always push the AIL to the target 9e7004e xfs: exit AIL push work correctly when AIL is empty 228d62d xfs: ensure reclaim cursor is reset correctly at end of AG from 233eebb9a96f956c541c0c9094fd321894bd93a7 (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 aa38572954ade525817fe88c54faebf85e5a61c0 Author: Christoph Hellwig Date: Fri May 27 06:53:02 2011 -0400 fs: pass exact type of data dirties to ->dirty_inode Tell the filesystem if we just updated timestamp (I_DIRTY_SYNC) or anything else, so that the filesystem can track internally if it needs to push out a transaction for fdatasync or not. This is just the prototype change with no user for it yet. I plan to push large XFS changes for the next merge window, and getting this trivial infrastructure in this window would help a lot to avoid tree interdependencies. Also remove incorrect comments that ->dirty_inode can't block. That has been changed a long time ago, and many implementations rely on it. Signed-off-by: Christoph Hellwig Signed-off-by: Al Viro commit 8a0599dd2471f2a2e409498c08a0ab339057ad06 Merge: 35806b4f7c5620b547f183e9d53f7cfaeabb582b 233eebb9a96f956c541c0c9094fd321894bd93a7 Author: Linus Torvalds Date: Thu May 26 10:49:11 2011 -0700 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs * 'for-linus' of git://oss.sgi.com/xfs/xfs: xfs: correctly decrement the extent buffer index in xfs_bmap_del_extent xfs: check for valid indices in xfs_iext_get_ext and xfs_iext_idx_to_irec xfs: fix up asserts in xfs_iflush_fork xfs: do not do pointer arithmetic on extent records xfs: do not use unchecked extent indices in xfs_bunmapi xfs: do not use unchecked extent indices in xfs_bmapi xfs: do not use unchecked extent indices in xfs_bmap_add_extent_* xfs: remove if_lastex xfs: remove the unused XFS_BMAPI_RSVBLOCKS flag xfs: do not discard alloc btree blocks xfs: add online discard support commit 1495f230fa7750479c79e3656286b9183d662077 Author: Ying Han Date: Tue May 24 17:12:27 2011 -0700 vmscan: change shrinker API by passing shrink_control struct Change each shrinker's API by consolidating the existing parameters into shrink_control struct. This will simplify any further features added w/o touching each file of shrinker. [akpm@linux-foundation.org: fix build] [akpm@linux-foundation.org: fix warning] [kosaki.motohiro@jp.fujitsu.com: fix up new shrinker API] [akpm@linux-foundation.org: fix xfs warning] [akpm@linux-foundation.org: update gfs2] Signed-off-by: Ying Han Cc: KOSAKI Motohiro Cc: Minchan Kim Acked-by: Pavel Emelyanov Cc: KAMEZAWA Hiroyuki Cc: Mel Gorman Acked-by: Rik van Riel Cc: Johannes Weiner Cc: Hugh Dickins Cc: Dave Hansen Cc: Steven Whitehouse Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit a77febbef105554c5a37241cf903f48ab7bc03c7 Merge: 42cd71bf1e3a081b3150018bbf448cb6c8a844a5 bf59170a66bc3eaf3ee513aa6ce9774aa2ab5188 Author: Linus Torvalds Date: Mon May 23 15:19:16 2011 -0700 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs * 'for-linus' of git://oss.sgi.com/xfs/xfs: xfs: obey minleft values during extent allocation correctly xfs: reset buffer pointers before freeing them xfs: avoid getting stuck during async inode flushes xfs: fix xfs_itruncate_start tracing xfs: fix duplicate workqueue initialisation xfs: kill off xfs_printk() xfs: fix race condition in AIL push trigger xfs: make AIL target updates and compares 32bit safe. xfs: always push the AIL to the target xfs: exit AIL push work correctly when AIL is empty xfs: ensure reclaim cursor is reset correctly at end of AG xfs: add an x86 compat handler for XFS_IOC_ZERO_RANGE xfs: fix compiler warning in xfs_trace.h xfs: cleanup duplicate initializations xfs: reduce the number of pagb_lock roundtrips in xfs_alloc_clear_busy xfs: exact busy extent tracking xfs: do not immediately reuse busy extent ranges xfs: optimize AGFL refills commit 57d19e80f459dd845fb3cfeba8e6df8471bac142 Merge: ee9ec4f82049c678373a611ce20ac67fe9ad836e e64851f5a0ad6ec991f74ebb3108c35aa0323d5f Author: Linus Torvalds Date: Mon May 23 09:12:26 2011 -0700 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits) b43: fix comment typo reqest -> request Haavard Skinnemoen has left Atmel cris: typo in mach-fs Makefile Kconfig: fix copy/paste-ism for dell-wmi-aio driver doc: timers-howto: fix a typo ("unsgined") perf: Only include annotate.h once in tools/perf/util/ui/browsers/annotate.c md, raid5: Fix spelling error in comment ('Ofcourse' --> 'Of course'). treewide: fix a few typos in comments regulator: change debug statement be consistent with the style of the rest Revert "arm: mach-u300/gpio: Fix mem_region resource size miscalculations" audit: acquire creds selectively to reduce atomic op overhead rtlwifi: don't touch with treewide double semicolon removal treewide: cleanup continuations and remove logging message whitespace ath9k_hw: don't touch with treewide double semicolon removal include/linux/leds-regulator.h: fix syntax in example code tty: fix typo in descripton of tty_termios_encode_baud_rate xtensa: remove obsolete BKL kernel option from defconfig m68k: fix comment typo 'occcured' arch:Kconfig.locks Remove unused config option. treewide: remove extra semicolons ... commit 70f23fd66bc821a0e99647f70a809e277cc93c4c Author: Justin P. Mattock Date: Tue May 10 10:16:21 2011 +0200 treewide: fix a few typos in comments - kenrel -> kernel - whetehr -> whether - ttt -> tt - sss -> ss Signed-off-by: Justin P. Mattock Signed-off-by: Jiri Kosina commit 7ac956576d0ce8f97450a39c2f304db8eea01647 Author: Dave Chinner Date: Fri May 6 02:54:08 2011 +0000 xfs: fix race condition in AIL push trigger The recent conversion of the xfsaild functionality to a work queue introduced a hard-to-hit log space grant hang. One is caused by a race condition in determining whether there is a psh in progress or not. The XFS_AIL_PUSHING_BIT is used to determine whether a push is currently in progress. When the AIL push work completes, it checked whether the target changed and cleared the PUSHING bit to allow a new push to be requeued. The race condition is as follows: Thread 1 push work smp_wmb() smp_rmb() check ailp->xa_target unchanged update ailp->xa_target test/set PUSHING bit does not queue clear PUSHING bit does not requeue Now that the push target is updated, new attempts to push the AIL will not trigger as the push target will be the same, and hence despite trying to push the AIL we won't ever wake it again. The fix is to ensure that the AIL push work clears the PUSHING bit before it checks if the target is unchanged. As a result, both push triggers operate on the same test/set bit criteria, so even if we race in the push work and miss the target update, the thread requesting the push will still set the PUSHING bit and queue the push work to occur. For safety sake, the same queue check is done if the push work detects the target change, though only one of the two will will queue new work due to the use of test_and_set_bit() checks. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Reviewed-by: Alex Elder (cherry picked from commit e4d3c4a43b595d5124ae824d300626e6489ae857) commit fe0da767311933d1c1907cb8d326beea7a3cbd9c Author: Dave Chinner Date: Fri May 6 02:54:07 2011 +0000 xfs: make AIL target updates and compares 32bit safe. The recent conversion of the xfsaild functionality to a work queue introduced a hard-to-hit log space grant hang. One of the problems noticed was that updates of the push target are not 32 bit safe as the target is a 64 bit value. We cannot copy a 64 bit LSN without the possibility of corrupting the result when racing with another updating thread. We have function to do this update safely without needing to care about 32/64 bit issues - xfs_trans_ail_copy_lsn() - so use that when updating the AIL push target. Also move the reading of the target in the push work inside the AIL lock, and use XFS_LSN_CMP() for the unlocked comparison during work termination to close read holes as well. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Reviewed-by: Alex Elder (cherry picked from commit fd5670f22fce247754243cf2ed41941e5762d990) commit 50e86686dfb287d720af8b0f977202d205c04215 Author: Dave Chinner Date: Fri May 6 02:54:06 2011 +0000 xfs: always push the AIL to the target The recent conversion of the xfsaild functionality to a work queue introduced a hard-to-hit log space grant hang. One of the problems discovered is a target mismatch between the item pushing loop and the target itself. The push trigger checks for the target increasing (i.e. new target > current) while the push loop only pushes items that have a LSN < current. As a result, we can get the situation where the push target is X, the items at the tail of the AIL have LSN X and they don't get pushed. The push work then completes thinking it is done, and cannot be restarted until the push target increases to >= X + 1. If the push target then never increases (because the tail is not moving), then we never run the push work again and we stall. Fix it by making sure log items with a LSN that matches the target exactly are pushed during the loop. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Reviewed-by: Alex Elder (cherry picked from commit cb64026b6e8af50db598ec7c3f59d504259b00bb) commit 9e7004e741de0b2daabbbadafbaf11ff1a94e00c Author: Dave Chinner Date: Fri May 6 02:54:05 2011 +0000 xfs: exit AIL push work correctly when AIL is empty The recent conversion of the xfsaild functionality to a work queue introduced a hard-to-hit log space grant hang. The main cause is a regression where a work exit path fails to clear the PUSHING state and recheck the target correctly. Make both exit paths do the same PUSHING bit clearing and target checking when the "no more work to be done" condition is hit. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Reviewed-by: Alex Elder (cherry picked from commit ea35a20021f8497390d05b93271b4d675516c654) commit 228d62dd3f74734b9801c789b5addc57fdfc208f Author: Dave Chinner Date: Fri May 6 02:54:04 2011 +0000 xfs: ensure reclaim cursor is reset correctly at end of AG On a 32 bit highmem PowerPC machine, the XFS inode cache was growing without bound and exhausting low memory causing the OOM killer to be triggered. After some effort, the problem was reproduced on a 32 bit x86 highmem machine. The problem is that the per-ag inode reclaim index cursor was not getting reset to the start of the AG if the radix tree tag lookup found no more reclaimable inodes. Hence every further reclaim attempt started at the same index beyond where any reclaimable inodes lay, and no further background reclaim ever occurred from the AG. Without background inode reclaim the VM driven cache shrinker simply cannot keep up with cache growth, and OOM is the result. While the change that exposed the problem was the conversion of the inode reclaim to use work queues for background reclaim, it was not the cause of the bug. The bug was introduced when the cursor code was added, just waiting for some weird configuration to strike.... Signed-off-by: Dave Chinner Tested-By: Christian Kujau Reviewed-by: Christoph Hellwig Reviewed-by: Alex Elder (cherry picked from commit b223221956675ce8a7b436d198ced974bb388571) ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_buf.c | 4 ++-- fs/xfs/linux-2.6/xfs_super.c | 3 ++- fs/xfs/linux-2.6/xfs_sync.c | 5 +++-- fs/xfs/quota/xfs_qm.c | 6 +++--- fs/xfs/xfs_inode.c | 2 +- 5 files changed, 11 insertions(+), 9 deletions(-) hooks/post-receive -- XFS development tree From david@fromorbit.com Wed Jun 8 00:18:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p585IlCh073924 for ; Wed, 8 Jun 2011 00:18:48 -0500 X-ASG-Debug-ID: 1307510325-0b3b03400000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AB44616C54CF for ; Tue, 7 Jun 2011 22:18:45 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id qf794Kjpw1KD4e74 for ; Tue, 07 Jun 2011 22:18:45 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApkEAG4F7015LCoegWdsb2JhbABTpikVAQEWJiXHIw6GFQSgeA Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail04.adl6.internode.on.net with ESMTP; 08 Jun 2011 14:48:44 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QUBAA-0004Bf-6V; Wed, 08 Jun 2011 15:18:42 +1000 Date: Wed, 8 Jun 2011 15:18:42 +1000 From: Dave Chinner To: Peter Grandi Cc: Michael Monnerie , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general Message-ID: <20110608051842.GO32466@dastard> References: <19945.24042.711472.158523@tree.ty.sabi.co.UK> <201106060929.06814@zmi.at> <19950.12549.541440.285348@tree.ty.sabi.co.UK> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <19950.12549.541440.285348@tree.ty.sabi.co.UK> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1307510326 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0205 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.2.65805 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 On Tue, Jun 07, 2011 at 03:09:09PM +0100, Peter Grandi wrote: > Personally I'd rather have a file system design with space > reservations (on detecting an append-like access pattern) and > truncate-on-close than delayed allocation like XFS; Welcome to the 1990s, Peter. XFS has been doing this for 15 years. It is an optimisation used by the delayed allocation mechanism, not a replacement for it. You might have heard the term "speculative preallocation" before - this is what it does. FYI, ext3 has a space reservation infrastructure to try to ensure contiguous allocation occurs without using delayed allocation. It doesn't work nearly as well as delayed allocation in ext4, btrfs or XFS... Cheers, Dave. -- Dave Chinner david@fromorbit.com From michael.monnerie@is.it-management.at Wed Jun 8 02:11:16 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p587BFI3078847 for ; Wed, 8 Jun 2011 02:11:16 -0500 X-ASG-Debug-ID: 1307517073-18cf007c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv14.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 054094A9AB4 for ; Wed, 8 Jun 2011 00:11:13 -0700 (PDT) Received: from mailsrv14.zmi.at (mailsrv1.zmi.at [212.69.164.54]) by cuda.sgi.com with ESMTP id 94EQsaWIPVnMoXR5 for ; Wed, 08 Jun 2011 00:11:13 -0700 (PDT) Received: from mailsrv.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 mailsrv14.zmi.at (Postfix) with ESMTPSA id 77E3217C; Wed, 8 Jun 2011 09:11:12 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.72.27.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv.i.zmi.at (Postfix) with ESMTPSA id 87302401C35; Wed, 8 Jun 2011 09:11:11 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Small files perform much faster on newly formatted fs? Subject: Re: Small files perform much faster on newly formatted fs? Date: Wed, 8 Jun 2011 09:11:10 +0200 User-Agent: KMail/1.13.6 (Linux/2.6.38.6-zmi; KDE/4.6.0; x86_64; ; ) Cc: Norbert Veber References: <20110607163742.GH28625@pyre.virge.net> In-Reply-To: <20110607163742.GH28625@pyre.virge.net> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart14545136.KOncusAfmJ"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <201106080911.11286@zmi.at> X-Barracuda-Connect: mailsrv1.zmi.at[212.69.164.54] X-Barracuda-Start-Time: 1307517074 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.2.65813 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 --nextPart14545136.KOncusAfmJ Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable On Dienstag, 7. Juni 2011 Norbert Veber wrote: > 20 seconds vs 3+ minutes?! The only difference I can see is > lazy-count=3D1 and a larger agcount. Sunit and swidth were also set > automatically by mkfs this time. Then retry mounting the old fs with sunit=3D and swidth=3D parameters. Are= =20 they on the same disks? What are your disks (number, kind)? =2D-=20 mit freundlichen Gr=FCssen, Michael Monnerie, Ing. BSc it-management Internet Services: Prot=E9ger http://proteger.at [gesprochen: Prot-e-schee] Tel: +43 660 / 415 6531 // Haus zu verkaufen: http://zmi.at/langegg/ --nextPart14545136.KOncusAfmJ Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) iEYEABECAAYFAk3vII8ACgkQzhSR9xwSCbSAxACgwUzQMUNSceJD5bCTNbaXUcUG DpkAoOMw2cH0QNVN8Wekd83Mb0c2/8gY =i5k5 -----END PGP SIGNATURE----- --nextPart14545136.KOncusAfmJ-- From michael.monnerie@is.it-management.at Wed Jun 8 03:33:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p588X7sq081287 for ; Wed, 8 Jun 2011 03:33:07 -0500 X-ASG-Debug-ID: 1307521985-455f026b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv14.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BDA261D7183F for ; Wed, 8 Jun 2011 01:33:05 -0700 (PDT) Received: from mailsrv14.zmi.at (mailsrv1.zmi.at [212.69.164.54]) by cuda.sgi.com with ESMTP id e3rA9S4dkwh6aW57 for ; Wed, 08 Jun 2011 01:33:05 -0700 (PDT) Received: from mailsrv.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 mailsrv14.zmi.at (Postfix) with ESMTPSA id D5AD117B; Wed, 8 Jun 2011 10:33:03 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.72.27.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv.i.zmi.at (Postfix) with ESMTPSA id 07562401C35; Wed, 8 Jun 2011 10:33:03 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: I/O hang, possibly XFS, possibly general Subject: Re: I/O hang, possibly XFS, possibly general Date: Wed, 8 Jun 2011 10:32:58 +0200 User-Agent: KMail/1.13.6 (Linux/2.6.38.6-zmi; KDE/4.6.0; x86_64; ; ) Cc: Peter Grandi References: <201106060929.06814@zmi.at> <19950.12549.541440.285348@tree.ty.sabi.co.UK> In-Reply-To: <19950.12549.541440.285348@tree.ty.sabi.co.UK> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart1948516.1BBM6IlfF9"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <201106081033.02900@zmi.at> X-Barracuda-Connect: mailsrv1.zmi.at[212.69.164.54] X-Barracuda-Start-Time: 1307521985 X-Barracuda-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.2.65819 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 --nextPart1948516.1BBM6IlfF9 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable On Dienstag, 7. Juni 2011 Peter Grandi wrote: > * A file that is written out at speed, say 100-500MB/s. 2-4s > means that there is an opportunity to allocate 200MB-2GB > contiguous extents, and with any luck much larger ones. > Conversely any larger intervals means potentially losing > 200MB-2GB of data. Sure, if they did not want to lose the > data the user process should be doing 'fdatasync()', but XFS > in particular is sort of pretty good at doing a mild version > of 'O_PONIES' where there is a balance between going as fast > as possible (buffer a lot in memory) and offering some > level of safety (as shown in the tests I did for a fair > comparison with 'ext3'). On a PC, that "loosing 2GB of data" is loosing a single file under=20 normal use. It's quite seldom that people are copying data around. And=20 even if, when the crash happens they usually know what they just did,=20 and restart the copy after a crash. If we speak about a server normally there should be a HW RAID card in it=20 with good cache, and then it's true you should limit Linux write cache=20 and flush early and often, as the card has BBWC and therefore data is=20 protected once in the RAID card. People tend to forget to set writeback=20 lower when using RAID controllers + BBWC, and it's almost nowhere=20 documented. Maybe good for a FAQ entry on XFS, even if it's not XFS=20 specific? I wonder if there is a good document for "best practise" on VMs? I've=20 never seen someone testing a VMware/XEN host with 20 Linux VMs, and what=20 the settings should be for vm.dirty* and net.ipv4.* values. I've seen=20 crashes on VM servers, where afterwards databases in VMs were broken=20 despite using a RAID card +BBWC... =20 > * A file that is written slowly in small chunks. Well, > nothing will help that except preallocate or space > reservations. Now for a common webserver we use, as a guideline there are about 8=20 uploads parallel all the time. Most of them are slow, as people are on=20 ADSL. If you sync quite often, you're lucky when using XFS to get=20 preallocation and all that. Otherwise, you'd have chunks of all files=20 scattered on disk. =2D-=20 mit freundlichen Gr=FCssen, Michael Monnerie, Ing. BSc it-management Internet Services: Prot=E9ger http://proteger.at [gesprochen: Prot-e-schee] Tel: +43 660 / 415 6531 // Haus zu verkaufen: http://zmi.at/langegg/ --nextPart1948516.1BBM6IlfF9 Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) iEYEABECAAYFAk3vM74ACgkQzhSR9xwSCbTeDQCfUehyWAWBegb+FsTXHAozMu2/ uwcAnjLetDaQzKxYK9UCFk3RUDzGZeng =xQSp -----END PGP SIGNATURE----- --nextPart1948516.1BBM6IlfF9-- From nveber@pyre.virge.net Wed Jun 8 07:26:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p58CQf4Z092997 for ; Wed, 8 Jun 2011 07:26:41 -0500 X-ASG-Debug-ID: 1307535999-5dee03800000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pyre.virge.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DBD8716C599F for ; Wed, 8 Jun 2011 05:26:39 -0700 (PDT) Received: from pyre.virge.net (24-246-28-70.cable.teksavvy.com [24.246.28.70]) by cuda.sgi.com with ESMTP id kT7mPHzNIMca4csM for ; Wed, 08 Jun 2011 05:26:39 -0700 (PDT) Received: by pyre.virge.net (Postfix, from userid 1000) id E9565109C827; Wed, 8 Jun 2011 08:26:38 -0400 (EDT) Date: Wed, 8 Jun 2011 08:26:38 -0400 From: Norbert Veber To: Michael Monnerie Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Small files perform much faster on newly formatted fs? Subject: Re: Small files perform much faster on newly formatted fs? Message-ID: <20110608122638.GQ28625@pyre.virge.net> References: <20110607163742.GH28625@pyre.virge.net> <201106080911.11286@zmi.at> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201106080911.11286@zmi.at> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: 24-246-28-70.cable.teksavvy.com[24.246.28.70] X-Barracuda-Start-Time: 1307535999 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0009 1.0000 -2.0149 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.91 X-Barracuda-Spam-Status: No, SCORE=-1.91 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65835 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Wed, Jun 08, 2011 at 09:11:10AM +0200, Michael Monnerie wrote: > On Dienstag, 7. Juni 2011 Norbert Veber wrote: > > 20 seconds vs 3+ minutes?! The only difference I can see is > > lazy-count=1 and a larger agcount. Sunit and swidth were also set > > automatically by mkfs this time. > > Then retry mounting the old fs with sunit= and swidth= parameters. Are > they on the same disks? What are your disks (number, kind)? Yes its already mounted this way as I mentioned in my original message: /dev/mapper/vg0-shared on /shared type xfs (rw,noatime,sunit=128,swidth=256) Both filesystems are on the same MD raid 5 which consists of 3 1 tb WD Black hard drive. Thanks, Norbert From michael.monnerie@is.it-management.at Wed Jun 8 08:47:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p58DlhKV095337 for ; Wed, 8 Jun 2011 08:47:44 -0500 X-ASG-Debug-ID: 1307540860-59c000790000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv14.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 77ADED8073A for ; Wed, 8 Jun 2011 06:47:40 -0700 (PDT) Received: from mailsrv14.zmi.at (mailsrv1.zmi.at [212.69.164.54]) by cuda.sgi.com with ESMTP id RN4ikaqqLPqdKmG9 for ; Wed, 08 Jun 2011 06:47:40 -0700 (PDT) Received: from mailsrv.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 mailsrv14.zmi.at (Postfix) with ESMTPSA id 623EF17C; Wed, 8 Jun 2011 15:47:39 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.72.27.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv.i.zmi.at (Postfix) with ESMTPSA id DF27F401C35; Wed, 8 Jun 2011 15:47:38 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Small files perform much faster on newly formatted fs? Subject: Re: Small files perform much faster on newly formatted fs? Date: Wed, 8 Jun 2011 15:47:33 +0200 User-Agent: KMail/1.13.6 (Linux/2.6.38.6-zmi; KDE/4.6.0; x86_64; ; ) Cc: Norbert Veber References: <20110607163742.GH28625@pyre.virge.net> <201106080911.11286@zmi.at> <20110608122638.GQ28625@pyre.virge.net> In-Reply-To: <20110608122638.GQ28625@pyre.virge.net> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart3036893.VkC3Ibz6SB"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <201106081547.38266@zmi.at> X-Barracuda-Connect: mailsrv1.zmi.at[212.69.164.54] X-Barracuda-Start-Time: 1307540861 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65840 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 --nextPart3036893.VkC3Ibz6SB Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable On Mittwoch, 8. Juni 2011 Norbert Veber wrote: > Yes its already mounted this way as I mentioned in my original > message: /dev/mapper/vg0-shared on /shared type xfs > (rw,noatime,sunit=3D128,swidth=3D256) Oh, I did only look at the xfs_info output. =20 > Both filesystems are on the same MD raid 5 which consists of 3 1 tb > WD Black hard drive. The difference could be that your filesystem is very much aged, and the=20 free space clustered around to new files get heavily fragmented. Did you=20 run xfs_defrag often? How full is your filesystem? Also the log has sunit=3D0 against 16, maybe there's the diff. Are you on a newer kernel that supports delaylog? Then try that. =2D-=20 mit freundlichen Gr=FCssen, Michael Monnerie, Ing. BSc it-management Internet Services: Prot=E9ger http://proteger.at [gesprochen: Prot-e-schee] Tel: +43 660 / 415 6531 // Haus zu verkaufen: http://zmi.at/langegg/ --nextPart3036893.VkC3Ibz6SB Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) iEYEABECAAYFAk3vfXoACgkQzhSR9xwSCbSSrgCgmVn84Lt14jJNjD9e+iRjVDZp d5sAoIhizYgCximf7thAHUsQ4JWp6oI7 =P0O9 -----END PGP SIGNATURE----- --nextPart3036893.VkC3Ibz6SB-- From eflorac@intellique.com Wed Jun 8 10:47:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p58FlNJ6103077 for ; Wed, 8 Jun 2011 10:47:23 -0500 X-ASG-Debug-ID: 1307548039-75b803ae0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp4-g21.free.fr (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 57B2A16B127C for ; Wed, 8 Jun 2011 08:47:20 -0700 (PDT) Received: from smtp4-g21.free.fr (smtp4-g21.free.fr [212.27.42.4]) by cuda.sgi.com with ESMTP id UNHjPTHp6odPFEoE for ; Wed, 08 Jun 2011 08:47:20 -0700 (PDT) Received: from harpe.intellique.com (unknown [82.225.196.72]) by smtp4-g21.free.fr (Postfix) with ESMTP id 7F18F4C8188 for ; Wed, 8 Jun 2011 17:47:16 +0200 (CEST) Date: Wed, 8 Jun 2011 17:47:24 +0200 From: Emmanuel Florac To: xfs@oss.sgi.com X-ASG-Orig-Subj: Status of XFS ACL limitations Subject: Status of XFS ACL limitations Message-ID: <20110608174724.23ea57f7@harpe.intellique.com> Organization: Intellique X-Mailer: Claws Mail 3.7.9 (GTK+ 2.16.6; i686-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Barracuda-Connect: smtp4-g21.free.fr[212.27.42.4] X-Barracuda-Start-Time: 1307548042 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65847 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 everyone, I was looking through list archive and found that: http://oss.sgi.com/archives/xfs/2009-03/msg00329.html 2 years later is there any progress? 25 ACLs entries still are not enough for many uses :) regards, -- ------------------------------------------------------------------------ Emmanuel Florac | Direction technique | Intellique | | +33 1 78 94 84 02 ------------------------------------------------------------------------ From achender@linux.vnet.ibm.com Wed Jun 8 13:49:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p58InOxd111534 for ; Wed, 8 Jun 2011 13:49:24 -0500 X-ASG-Debug-ID: 1307558963-7805028c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e37.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D0EA949FDC9 for ; Wed, 8 Jun 2011 11:49:23 -0700 (PDT) Received: from e37.co.us.ibm.com (e37.co.us.ibm.com [32.97.110.158]) by cuda.sgi.com with ESMTP id 2FkAUih8mgXp3eJj for ; Wed, 08 Jun 2011 11:49:23 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay05.boulder.ibm.com (d03relay05.boulder.ibm.com [9.17.195.107]) by e37.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p58IkNR7001888 for ; Wed, 8 Jun 2011 12:46:23 -0600 Received: from d03av03.boulder.ibm.com (d03av03.boulder.ibm.com [9.17.195.169]) by d03relay05.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p58In9wY348520 for ; Wed, 8 Jun 2011 12:49:16 -0600 Received: from d03av03.boulder.ibm.com (loopback [127.0.0.1]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p58CmxXs000764 for ; Wed, 8 Jun 2011 06:48:59 -0600 Received: from lc4eb0185863151.ibm.com (sig-9-65-162-142.mts.ibm.com [9.65.162.142]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p58Cmw2n000659; Wed, 8 Jun 2011 06:48:58 -0600 Message-ID: <4DEFC41A.9070701@linux.vnet.ibm.com> Date: Wed, 08 Jun 2011 11:48:58 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Ext4 Developers List , linux-fsdevel , xfs-oss X-ASG-Orig-Subj: Port xfstests 145, 161, 175, 176, 185? Subject: Port xfstests 145, 161, 175, 176, 185? Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e37.co.us.ibm.com[32.97.110.158] X-Barracuda-Start-Time: 1307558963 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 Hi all! During one of my reviews for the punch hole tests patch set it was mentioned that it would be helpful to take the xfstests 145, 161, 175, 176, 185 and modify them such that they can run with out requiring the dmapi. These tests contain some more interesting punch hole tests, but they dont normally run unless there is support for dmapi. I did take a peek at them and I was thinking that if we decide to do this, we would probably need to do something like introduce a new set of source code that is similar to what is seen under the dmapi folder, but modified to use a generic interface instead of the dmapi libraries. We could try to merge them into a single code path, but I think that may introduce more complexities than would be desirable. I just wanted to get a general consensus of how many people would be interested in this idea. Thx all! Allison Henderson From nveber@pyre.virge.net Wed Jun 8 13:58:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 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 p58IwnvR113363 for ; Wed, 8 Jun 2011 13:58:49 -0500 X-ASG-Debug-ID: 1307559525-0534003d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pyre.virge.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AF14812D5364 for ; Wed, 8 Jun 2011 11:58:46 -0700 (PDT) Received: from pyre.virge.net (24-246-28-70.cable.teksavvy.com [24.246.28.70]) by cuda.sgi.com with ESMTP id 0KHFbEnA3dtIlwck for ; Wed, 08 Jun 2011 11:58:46 -0700 (PDT) Received: by pyre.virge.net (Postfix, from userid 1000) id 17AFF109C827; Wed, 8 Jun 2011 14:58:45 -0400 (EDT) Date: Wed, 8 Jun 2011 14:58:44 -0400 From: Norbert Veber To: Michael Monnerie Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Small files perform much faster on newly formatted fs? Subject: Re: Small files perform much faster on newly formatted fs? Message-ID: <20110608185844.GB28625@pyre.virge.net> References: <20110607163742.GH28625@pyre.virge.net> <201106080911.11286@zmi.at> <20110608122638.GQ28625@pyre.virge.net> <201106081547.38266@zmi.at> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201106081547.38266@zmi.at> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: 24-246-28-70.cable.teksavvy.com[24.246.28.70] X-Barracuda-Start-Time: 1307559527 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65860 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Wed, Jun 08, 2011 at 03:47:33PM +0200, Michael Monnerie wrote: > The difference could be that your filesystem is very much aged, and the > free space clustered around to new files get heavily fragmented. Did you > run xfs_defrag often? How full is your filesystem? Doesn't seem to be the case: pyre:~# xfs_db -c frag -r /dev/vg0/shared actual 61132, ideal 60937, fragmentation factor 0.32% (thats the old/slow filesystem) I re-created the test filesystem to be the same size (20gb) as the original, and copied all the same files to it, so both are now 80% full. pyre:~# lvremove /dev/vg0/newshared Do you really want to remove active logical volume newshared? [y/n]: y Logical volume "newshared" successfully removed pyre:~# lvcreate -L 20G -n newshared vg0 Logical volume "newshared" created I also tried to replicate the same sunit/swidth options, but mkfs.xfs is too smart for its own good and ignored my settings: pyre:~# mkfs.xfs -f -d sunit=0,swidth=0 -l sunit=0 /dev/vg0/newshared meta-data=/dev/vg0/newshared isize=256 agcount=16, agsize=327664 blks = sectsz=512 attr=2, projid32bit=0 data = bsize=4096 blocks=5242624, imaxpct=25 = sunit=16 swidth=32 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=16 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 pyre:~# mount /dev/vg0/newshared /mnt/tmp pyre:~# cp -a /shared/* /mnt/tmp/ pyre:/# cd /mnt/tmp pyre:/mnt/tmp# sync;sleep 15s;time ionice -c1 tar -zxf linux-2.6_2.6.32.orig.tar.gz real 0m21.248s user 0m3.772s sys 0m2.204s > Also the log has sunit=0 against 16, maybe there's the diff. > Are you on a newer kernel that supports delaylog? Then try that. Yes, it could be that the mount options only set sunit/swidth for the data section and not the journal, so metadata operations are much slower. I am not able to test as mkfs.xfs ignores my command line options and sets the values even if I tell it they should be 0.. Thanks, Norbert From Jeannie_Burger@URMC.Rochester.edu Wed Jun 8 14:41:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_50,HTML_MESSAGE autolearn=no version=3.4.0-r929098 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 p58Jfwqf114813 for ; Wed, 8 Jun 2011 14:41:59 -0500 X-ASG-Debug-ID: 1307562116-080c01e80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from voltage1.urmc.rochester.edu (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8E1F812D558B for ; Wed, 8 Jun 2011 12:41:56 -0700 (PDT) Received: from voltage1.urmc.rochester.edu (voltage1.urmc.rochester.edu [128.151.10.32]) by cuda.sgi.com with ESMTP id YUwQ3XlCUF1teHO4 for ; Wed, 08 Jun 2011 12:41:56 -0700 (PDT) Received: from urmcht1.urmc.rochester.edu (urmcht2.urmc.rochester.edu [128.151.10.29]) by voltage1.urmc.rochester.edu (8.13.8/8.13.8) with ESMTP id p58JTUMV007873 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=FAIL); Wed, 8 Jun 2011 15:29:30 -0400 Received: from URMCMS5.urmc-sh.rochester.edu ([0000:0000:0000:0000:0000:0000:0.0.0.1]) by urmcht2.urmc-sh.rochester.edu ([128.151.10.29]) with mapi; Wed, 8 Jun 2011 15:29:30 -0400 From: "Burger, Jeannie" To: "admin@helpdesk.org" Date: Wed, 8 Jun 2011 15:29:30 -0400 X-ASG-Orig-Subj: Take Note Subject: Take Note Thread-Topic: Take Note Thread-Index: AQHMJhJja3d3SyIIwE2zQqYpKX5KRQ== Message-ID: <0FF1B8B136BC7043A8CC79279432A26004C5E3C3E1@URMCMS5.urmc-sh.rochester.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: multipart/alternative; boundary="_000_0FF1B8B136BC7043A8CC79279432A26004C5E3C3E1URMCMS5urmcsh_" MIME-Version: 1.0 X-Barracuda-Connect: voltage1.urmc.rochester.edu[128.151.10.32] X-Barracuda-Start-Time: 1307562117 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5095 1.0000 0.7500 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.48 X-Barracuda-Spam-Status: No, SCORE=1.48 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, HTML_MESSAGE, RCVD_ILLEGAL_IP X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65864 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.23 RCVD_ILLEGAL_IP Received: contains illegal IP address 0.00 HTML_MESSAGE BODY: HTML included in message 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 --_000_0FF1B8B136BC7043A8CC79279432A26004C5E3C3E1URMCMS5urmcsh_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable A Computer Database Maintenance is currently going on our webmail Message Center . Our Message Center needs to be re-set because of the attempt of a Trojan horse virus attack in our web mail data base. To protect your mailbox please Click on the link below: Click Here Failure to secure your mailbox will render your mailbox unsafe our database. System Administrator --_000_0FF1B8B136BC7043A8CC79279432A26004C5E3C3E1URMCMS5urmcsh_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
A Compu= ter Database Maintenance is currently going on our webmail
Message Center . Our Message Center needs to be re-set because of
the attempt of a Trojan horse virus attack in our web mail data base.

To protect your mailbox please Click on the link below:

Click= Here

Failure to secure your mailbox will render your mailbox un= safe


our database.
System Administrator
--_000_0FF1B8B136BC7043A8CC79279432A26004C5E3C3E1URMCMS5urmcsh_-- From sandeen@sandeen.net Wed Jun 8 15:52:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p58KqVSe117323 for ; Wed, 8 Jun 2011 15:52:32 -0500 X-ASG-Debug-ID: 1307566350-462802010000-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 154514AC833 for ; Wed, 8 Jun 2011 13:52:30 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id B0px8F7EHAVDdcRP for ; Wed, 08 Jun 2011 13:52:30 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id DFE8A4964600; Wed, 8 Jun 2011 15:52:29 -0500 (CDT) Message-ID: <4DEFE10E.1070509@sandeen.net> Date: Wed, 08 Jun 2011 15:52:30 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Norbert Veber CC: Michael Monnerie , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Small files perform much faster on newly formatted fs? Subject: Re: Small files perform much faster on newly formatted fs? References: <20110607163742.GH28625@pyre.virge.net> <201106080911.11286@zmi.at> <20110608122638.GQ28625@pyre.virge.net> In-Reply-To: <20110608122638.GQ28625@pyre.virge.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1307566351 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65869 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 6/8/11 7:26 AM, Norbert Veber wrote: > On Wed, Jun 08, 2011 at 09:11:10AM +0200, Michael Monnerie wrote: >> On Dienstag, 7. Juni 2011 Norbert Veber wrote: >>> 20 seconds vs 3+ minutes?! The only difference I can see is >>> lazy-count=1 and a larger agcount. Sunit and swidth were also set >>> automatically by mkfs this time. >> >> Then retry mounting the old fs with sunit= and swidth= parameters. Are >> they on the same disks? What are your disks (number, kind)? > > Yes its already mounted this way as I mentioned in my original message: > /dev/mapper/vg0-shared on /shared type xfs (rw,noatime,sunit=128,swidth=256) > > Both filesystems are on the same MD raid 5 which consists of 3 1 tb WD > Black hard drive. The 2 filesystems are at different locations on the disks, so that will make some difference. It's probably also possible that your old log is not stripe-aligned. Not sure what else it might be ... You did get the units right on your stripe specification at mount-time, good job! ;) -Eric > Thanks, > > Norbert > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From stan@hardwarefreak.com Wed Jun 8 16:00:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p58L0OgJ117622 for ; Wed, 8 Jun 2011 16:00:24 -0500 X-ASG-Debug-ID: 1307566822-2d0403d40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from greer.hardwarefreak.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3CEE51E41F68 for ; Wed, 8 Jun 2011 14:00:22 -0700 (PDT) Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id qVexKAechbdECvg4 for ; Wed, 08 Jun 2011 14:00:22 -0700 (PDT) Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 066456C129; Wed, 8 Jun 2011 16:00:21 -0500 (CDT) Message-ID: <4DEFE2E6.9010206@hardwarefreak.com> Date: Wed, 08 Jun 2011 16:00:22 -0500 From: Stan Hoeppner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Kenneth Emerson , xfs-oss X-ASG-Orig-Subj: Re: Defragging XFS File Systems Subject: Re: Defragging XFS File Systems References: <4DEE1422.7060902@hardwarefreak.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1307566823 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65869 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On 6/8/2011 2:55 PM, Kenneth Emerson wrote: > On Tue, Jun 7, 2011 at 7:05 AM, Stan Hoeppner wrote: > >> On 6/6/2011 10:52 PM, Kenneth Emerson wrote: >>> I hadn't given much thought to fragmentation of my TV recordings volume >>> (XFS) until reading through some MythTV-users threads recently that >>> mentioned how fragmented an XFS file system could become. After running >>> xfs_db, I found out that my fs appeared to be quite bad: >>> >>> $ sudo xfs_db -c frag -r /dev/mapper/appl_vg-appl_lv >>> actual 1138668, ideal 11023, fragmentation factor 99.03% >>> >>> I then ran xfs_fsr with all defaults (ran for two hours) and then re-ran >> >> From man xfs_fsr: >> >> It runs for up to two hours after which it records the >> filesystem where it left off, so it can start there the next >> time. This information is stored in the file >> /var/tmp/.fsrlast_xfs. If the information found here is somehow >> inconsistent or out of date it is ignored and reorganization >> starts at the beginning of the first filesystem found in >> /etc/mtab. >> >> If xfs_fsr stopped at 2 hours, multiple additional runs will likely be >> required to get good defragmentation. >> > > After some more research, I don't think I would ever be able to defrag this > volume. It is too badly fragmented and too full. Then you have a couple of options: 1. Delete files to free up space for xfs_fsr to work properly 2. Dump, delete, re-create, and restore the filesystem The first will likely leave you with fragmentation. The second will eliminate all fragmentation. >>> xfs_db and got the following results: >>> >>> $ sudo xfs_db -c frag -r /dev/mapper/appl_vg-appl_lv >> >> The -r above suggests you created a large realtime section for your >> MythTV storage. It may be helpful for you to provide xfs_info output >> for the heavily fragmented filesystem. > I thought the -r was just for read only so that I didn't have to un-mount > it before running the report. According to man xfs_db, '-r' immediately following the frag command: ... -r enables processing of realtime file data >>> invalid numrecs (27111) in bmapbtd block >>> invalid numrecs (4716) in bmapbtd block >>> invalid numrecs (58978) in bmapbtd block >>> >>> I'll leave these errors for one of the devs to tackle. > > These errors 'disappeared' when I ran xfs_db again later. Maybe a cache consistency issue. >>> actual 1034793, ideal 11024, fragmentation factor 98.93% >>> >>> The fragmentation level was reduced, >> >> It was likely reduced much more than this. Dropping caches or >> unmounting and remounting the filesystem is often necessary after >> running xfs_fsr in order to show the actual fragmentation level. Try: >> >> # echo 3 > /proc/sys/vm/drop_caches >> >> and then run xfs_db again. > I did this, but the numbers did not change much. Many of the files are > > 4GiB and have over a hundred extents. When I tried to defrag a single file, > it reported that it wan't possible. Looks like a dump/remake/restore is in your future. >>> but I was concerned about the error >>> messages. Before I go any further, am I corrupting my file system with >> the >>> defragging or are these "invalid numrecs" messages unimportant? >> >> Run 'xfs_check' or 'xfs_repair -n' and post the results. > Not necessary since the errors are now gone. I have ordered a 3TB disk > that I can connect via e-sata and copy the entire volume off of the RAID > set. I will then reformat and put the files back. After that, I will make > a cron job to run on a regular basis to keep the volume from getting so > fragmented again. Bang on that eSATA drive/interface/driver thoroughly before relying on it for your intended purpose. Look in dmesg regularly for errors while burning it in. Be mindful of partition alignment if he 3TB drive is an "Advanced Format" hybrid 512/4096 byte drive. > Thanks for your input. You're welcome. -- Stan From sandeen@sandeen.net Wed Jun 8 16:16:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p58LGXlw118194 for ; Wed, 8 Jun 2011 16:16:33 -0500 X-ASG-Debug-ID: 1307567792-3e48038a0000-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 1A92E4AC93F for ; Wed, 8 Jun 2011 14:16:32 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id REh4BMQzagPzBvmk for ; Wed, 08 Jun 2011 14:16:32 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 572BA4964600; Wed, 8 Jun 2011 16:16:32 -0500 (CDT) Message-ID: <4DEFE6B0.9050200@sandeen.net> Date: Wed, 08 Jun 2011 16:16:32 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Norbert Veber CC: Michael Monnerie , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Small files perform much faster on newly formatted fs? Subject: Re: Small files perform much faster on newly formatted fs? References: <20110607163742.GH28625@pyre.virge.net> <201106080911.11286@zmi.at> <20110608122638.GQ28625@pyre.virge.net> <4DEFE10E.1070509@sandeen.net> In-Reply-To: <4DEFE10E.1070509@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1307567793 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65869 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 6/8/11 3:52 PM, Eric Sandeen wrote: > On 6/8/11 7:26 AM, Norbert Veber wrote: >> On Wed, Jun 08, 2011 at 09:11:10AM +0200, Michael Monnerie wrote: >>> On Dienstag, 7. Juni 2011 Norbert Veber wrote: >>>> 20 seconds vs 3+ minutes?! The only difference I can see is >>>> lazy-count=1 and a larger agcount. Sunit and swidth were also set >>>> automatically by mkfs this time. >>> >>> Then retry mounting the old fs with sunit= and swidth= parameters. Are >>> they on the same disks? What are your disks (number, kind)? >> >> Yes its already mounted this way as I mentioned in my original message: >> /dev/mapper/vg0-shared on /shared type xfs (rw,noatime,sunit=128,swidth=256) >> >> Both filesystems are on the same MD raid 5 which consists of 3 1 tb WD >> Black hard drive. > > The 2 filesystems are at different locations on the disks, so that will make > some difference. > > It's probably also possible that your old log is not stripe-aligned. .... or that one or the other partition on your raid5 is not aligned? -Eric > Not sure what else it might be ... You did get the units right on your > stripe specification at mount-time, good job! ;) > > -Eric From david@fromorbit.com Wed Jun 8 20:29:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p591TBaD129589 for ; Wed, 8 Jun 2011 20:29:11 -0500 X-ASG-Debug-ID: 1307582949-53c501b50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9CEB114E9735 for ; Wed, 8 Jun 2011 18:29:09 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id uxRDgd56Y4KMJWc6 for ; Wed, 08 Jun 2011 18:29:09 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AowDANYf8E15LCoegWdsb2JhbABSpjQVAQEWJiXHbg6GFQSgfw Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl6.internode.on.net with ESMTP; 09 Jun 2011 10:59:08 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QUU3X-0006Dn-Gu; Thu, 09 Jun 2011 11:29:07 +1000 Date: Thu, 9 Jun 2011 11:29:07 +1000 From: Dave Chinner To: Norbert Veber Cc: Michael Monnerie , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Small files perform much faster on newly formatted fs? Subject: Re: Small files perform much faster on newly formatted fs? Message-ID: <20110609012907.GR32466@dastard> References: <20110607163742.GH28625@pyre.virge.net> <201106080911.11286@zmi.at> <20110608122638.GQ28625@pyre.virge.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110608122638.GQ28625@pyre.virge.net> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1307582950 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65886 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, Jun 08, 2011 at 08:26:38AM -0400, Norbert Veber wrote: > On Wed, Jun 08, 2011 at 09:11:10AM +0200, Michael Monnerie wrote: > > On Dienstag, 7. Juni 2011 Norbert Veber wrote: > > > 20 seconds vs 3+ minutes?! The only difference I can see is > > > lazy-count=1 and a larger agcount. Sunit and swidth were also set > > > automatically by mkfs this time. > > > > Then retry mounting the old fs with sunit= and swidth= parameters. Are > > they on the same disks? What are your disks (number, kind)? > > Yes its already mounted this way as I mentioned in my original message: > /dev/mapper/vg0-shared on /shared type xfs (rw,noatime,sunit=128,swidth=256) Those mount options are ignored if the filesystem doesn't have the superblock feature bit set for aligned allocations. A filesystem with 0/0 for sunit/swidth does not have the superblock bit set.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From michael.monnerie@is.it-management.at Thu Jun 9 00:44:27 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p595iQ0T151480 for ; Thu, 9 Jun 2011 00:44:27 -0500 X-ASG-Debug-ID: 1307598260-789503250000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv14.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9EBECD90A68 for ; Wed, 8 Jun 2011 22:44:20 -0700 (PDT) Received: from mailsrv14.zmi.at (mailsrv1.zmi.at [212.69.164.54]) by cuda.sgi.com with ESMTP id EA8K4dFfOTQfUE5z for ; Wed, 08 Jun 2011 22:44:20 -0700 (PDT) Received: from mailsrv.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 mailsrv14.zmi.at (Postfix) with ESMTPSA id 7A1E317F; Thu, 9 Jun 2011 07:44:19 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.72.27.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv.i.zmi.at (Postfix) with ESMTPSA id A615F401C35; Thu, 9 Jun 2011 07:44:18 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Small files perform much faster on newly formatted fs? Subject: Re: Small files perform much faster on newly formatted fs? Date: Thu, 9 Jun 2011 07:44:12 +0200 User-Agent: KMail/1.13.6 (Linux/2.6.38.6-zmi; KDE/4.6.0; x86_64; ; ) Cc: Norbert Veber References: <20110607163742.GH28625@pyre.virge.net> <201106081547.38266@zmi.at> <20110608185844.GB28625@pyre.virge.net> In-Reply-To: <20110608185844.GB28625@pyre.virge.net> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart1856266.RNKEPbcIMl"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <201106090744.18277@zmi.at> X-Barracuda-Connect: mailsrv1.zmi.at[212.69.164.54] X-Barracuda-Start-Time: 1307598263 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65904 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 --nextPart1856266.RNKEPbcIMl Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable On Mittwoch, 8. Juni 2011 Norbert Veber wrote: > I re-created the test filesystem to be the same size (20gb) as the > original, and copied all the same files to it, so both are now 80% > full. But copying data at once leads to "perfectly" aligned data, and cannot=20 be compared to a filesystem that has aged over the years. Maybe you can=20 compare it like this: 1) remount the old partition with "noikeep" 2) mv /old/* /new 3) cp /new/* /old/ Maybe that would help? I'm interested to find the difference. Also, as Eric said, both partitions are on different locations on the=20 disks, but I guess your old partition is more outside, thus in the=20 quicker region, than the new partition. Is that true? Could it be that the old filesystem gets mounted with different=20 logbufs/logbsize values? Would the mount options=20 "logbufs=3D8,logbsize=3D256k" maybe make a difference? Is the position of the log area fixed on disk? Maybe that is not stripe=20 aligned. Could you check with a newer kernel using "delaylog"? [Dave wrote] > Those mount options are ignored if the filesystem doesn't have the > superblock feature bit set for aligned allocations. A filesystem > with 0/0 for sunit/swidth does not have the superblock bit set.... And I guess it's not possible to set that bit now? =2D-=20 mit freundlichen Gr=FCssen, Michael Monnerie, Ing. BSc it-management Internet Services: Prot=E9ger http://proteger.at [gesprochen: Prot-e-schee] Tel: +43 660 / 415 6531 // Haus zu verkaufen: http://zmi.at/langegg/ --nextPart1856266.RNKEPbcIMl Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) iEYEABECAAYFAk3wXbIACgkQzhSR9xwSCbTSrQCg7SuTSwEnw+FoVZTWMDDM4dgE RK8AoLS1VdvYCTXTFCouzLx/Jb0IKDDW =xZh2 -----END PGP SIGNATURE----- --nextPart1856266.RNKEPbcIMl-- From michael.monnerie@is.it-management.at Thu Jun 9 00:49:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p595nola151643 for ; Thu, 9 Jun 2011 00:49:50 -0500 X-ASG-Debug-ID: 1307598579-30fc024e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv14.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 790B316CB394 for ; Wed, 8 Jun 2011 22:49:39 -0700 (PDT) Received: from mailsrv14.zmi.at (mailsrv1.zmi.at [212.69.164.54]) by cuda.sgi.com with ESMTP id 259Zl9RZxEUgwYDK for ; Wed, 08 Jun 2011 22:49:39 -0700 (PDT) Received: from mailsrv.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 mailsrv14.zmi.at (Postfix) with ESMTPSA id E646E144; Thu, 9 Jun 2011 07:49:38 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.72.27.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv.i.zmi.at (Postfix) with ESMTPSA id 202A7401C35; Thu, 9 Jun 2011 07:49:38 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Defragging XFS File Systems Subject: Re: Defragging XFS File Systems Date: Thu, 9 Jun 2011 07:49:36 +0200 User-Agent: KMail/1.13.6 (Linux/2.6.38.6-zmi; KDE/4.6.0; x86_64; ; ) Cc: Stan Hoeppner , Kenneth Emerson References: <4DEFE2E6.9010206@hardwarefreak.com> In-Reply-To: <4DEFE2E6.9010206@hardwarefreak.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart6522634.uoPHKelKRm"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <201106090749.37745@zmi.at> X-Barracuda-Connect: mailsrv1.zmi.at[212.69.164.54] X-Barracuda-Start-Time: 1307598580 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65905 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 --nextPart6522634.uoPHKelKRm Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable On Mittwoch, 8. Juni 2011 Kenneth wrote: > > After that, I will make > > a cron job to run on a regular basis to keep the volume from > > getting so fragmented again. How will you do that? Running xfs_fsr on a regular basis is *not*=20 recommended, as it will age your filesystem and defrag free space. In=20 the beginning, and as long as your filesystem is maybe 50% full it will=20 be fine, but there's a point where it starts to get worse - much worse.=20 Just run a recent kernel, it has all the naughty stuff to help keep the=20 performance high. =2D-=20 mit freundlichen Gr=FCssen, Michael Monnerie, Ing. BSc it-management Internet Services: Prot=E9ger http://proteger.at [gesprochen: Prot-e-schee] Tel: +43 660 / 415 6531 // Haus zu verkaufen: http://zmi.at/langegg/ --nextPart6522634.uoPHKelKRm Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) iEYEABECAAYFAk3wXvEACgkQzhSR9xwSCbRiAgCgwfIVBex3a+dVhzWrRsbE6bbC ghUAoIvCX1eZ0UsvsD3EhopnJ2Wx5KIW =z12n -----END PGP SIGNATURE----- --nextPart6522634.uoPHKelKRm-- From stan@hardwarefreak.com Thu Jun 9 03:13:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p598DX3t160248 for ; Thu, 9 Jun 2011 03:13:33 -0500 X-ASG-Debug-ID: 1307607211-67f0001b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from greer.hardwarefreak.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 848BC4AE33A for ; Thu, 9 Jun 2011 01:13:32 -0700 (PDT) Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id SNG7xumTbXIfrqYo for ; Thu, 09 Jun 2011 01:13:32 -0700 (PDT) Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id ACFE46C14A; Thu, 9 Jun 2011 03:13:31 -0500 (CDT) Message-ID: <4DF080AC.2090507@hardwarefreak.com> Date: Thu, 09 Jun 2011 03:13:32 -0500 From: Stan Hoeppner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Michael Monnerie CC: xfs@oss.sgi.com, Kenneth Emerson X-ASG-Orig-Subj: Re: Defragging XFS File Systems Subject: Re: Defragging XFS File Systems References: <4DEFE2E6.9010206@hardwarefreak.com> <201106090749.37745@zmi.at> In-Reply-To: <201106090749.37745@zmi.at> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1307607212 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0200 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65913 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On 6/9/2011 12:49 AM, Michael Monnerie wrote: > On Mittwoch, 8. Juni 2011 Kenneth wrote: >>> After that, I will make >>> a cron job to run on a regular basis to keep the volume from >>> getting so fragmented again. > > How will you do that? Running xfs_fsr on a regular basis is *not* > recommended, as it will age your filesystem and defrag free space. In > the beginning, and as long as your filesystem is maybe 50% full it will > be fine, but there's a point where it starts to get worse - much worse. > Just run a recent kernel, it has all the naughty stuff to help keep the > performance high. When *is* running xfs_fsr recommended? I scheduled it twice a week some time ago due to a filesystem containing active mbox files. I did so because they became so heavily fragmented in short order, especially those swallowing copious amounts of list mail. Before cron'ing xfs_fsr I was seeing mbox files with over 1000 fragmented extents, and increasing MUA latency as the files became more fragmented. The filesystem is currently 90% free. -- Stan From BATV+edd2d016b77afbaa670f+2846+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 9 03:22:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p598MaB6160504 for ; Thu, 9 Jun 2011 03:22:37 -0500 X-ASG-Debug-ID: 1307607752-414e01ca0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 583E216D43F2 for ; Thu, 9 Jun 2011 01:22:33 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id GqAJGjoqb8XPYtck for ; Thu, 09 Jun 2011 01:22:33 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QUaVN-0001s1-LM; Thu, 09 Jun 2011 08:22:17 +0000 Date: Thu, 9 Jun 2011 04:22:17 -0400 From: Christoph Hellwig To: Dave Chinner Cc: Norbert Veber , Michael Monnerie , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Small files perform much faster on newly formatted fs? Subject: Re: Small files perform much faster on newly formatted fs? Message-ID: <20110609082217.GA7129@infradead.org> References: <20110607163742.GH28625@pyre.virge.net> <201106080911.11286@zmi.at> <20110608122638.GQ28625@pyre.virge.net> <20110609012907.GR32466@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110609012907.GR32466@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1307607753 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65915 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Thu, Jun 09, 2011 at 11:29:07AM +1000, Dave Chinner wrote: > > > Then retry mounting the old fs with sunit= and swidth= parameters. Are > > > they on the same disks? What are your disks (number, kind)? > > > > Yes its already mounted this way as I mentioned in my original message: > > /dev/mapper/vg0-shared on /shared type xfs (rw,noatime,sunit=128,swidth=256) > > Those mount options are ignored if the filesystem doesn't have the > superblock feature bit set for aligned allocations. A filesystem > with 0/0 for sunit/swidth does not have the superblock bit set.... The other thing that sticks out is the lack of lazy-count for the old filesystem. That will give a lot of additional superblock updates on the old one. From michael.monnerie@is.it-management.at Thu Jun 9 05:12:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p59ACfgd164354 for ; Thu, 9 Jun 2011 05:12:41 -0500 X-ASG-Debug-ID: 1307614358-5efd031d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv14.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9808816D65C0 for ; Thu, 9 Jun 2011 03:12:38 -0700 (PDT) Received: from mailsrv14.zmi.at (mailsrv1.zmi.at [212.69.164.54]) by cuda.sgi.com with ESMTP id DczSY8jHLRfp2Mzx for ; Thu, 09 Jun 2011 03:12:38 -0700 (PDT) Received: from mailsrv.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 mailsrv14.zmi.at (Postfix) with ESMTPSA id 86111144; Thu, 9 Jun 2011 12:12:37 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.72.27.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv.i.zmi.at (Postfix) with ESMTPSA id 62540401C35; Thu, 9 Jun 2011 12:12:36 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Defragging XFS File Systems Subject: Re: Defragging XFS File Systems Date: Thu, 9 Jun 2011 12:12:35 +0200 User-Agent: KMail/1.13.6 (Linux/2.6.38.6-zmi; KDE/4.6.0; x86_64; ; ) Cc: Stan Hoeppner , Kenneth Emerson References: <201106090749.37745@zmi.at> <4DF080AC.2090507@hardwarefreak.com> In-Reply-To: <4DF080AC.2090507@hardwarefreak.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart42198277.cYIGmQy3Xf"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <201106091212.36227@zmi.at> X-Barracuda-Connect: mailsrv1.zmi.at[212.69.164.54] X-Barracuda-Start-Time: 1307614359 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65921 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 --nextPart42198277.cYIGmQy3Xf Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable On Donnerstag, 9. Juni 2011 Stan Hoeppner wrote: > When is running xfs_fsr recommended? Good question. One case that comes to my mind is a filesystem that was=20 used a long time when filled >85%, which has now either been expanded or=20 files removed so you have a lot of space again, and you want to defrag=20 all those files that have been badly fragmented. =20 > I scheduled it twice a week some time ago due to a filesystem > containing active mbox files. I did so because they became so > heavily fragmented in short order, especially those swallowing > copious amounts of list mail. Before cron'ing xfs_fsr I was seeing > mbox files with over 1000 fragmented extents, and increasing MUA > latency as the files became more fragmented. The filesystem is > currently 90% free. This is also an example where defrag may help. You have 10% usage, so=20 there's enough space. Maybe your usage fits the mount option=20 "allocsize", so that you keep room for file append. But newer kernels=20 changed behaviour of XFS, so I'm not sure up to which kernel version its=20 good. Maybe Dave Chinner can chime in here. BTW, maybe this behaviour=20 should be documented in the FAQ so we can reference it. =2D-=20 mit freundlichen Gr=FCssen, Michael Monnerie, Ing. BSc it-management Internet Services: Prot=E9ger http://proteger.at [gesprochen: Prot-e-schee] Tel: +43 660 / 415 6531 // Haus zu verkaufen: http://zmi.at/langegg/ --nextPart42198277.cYIGmQy3Xf Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) iEYEABECAAYFAk3wnJQACgkQzhSR9xwSCbTbTwCePKjbhwNORPr2xVzuRMkGgaBo vkEAnA86GGsja8JLKQGSgwlDyNpYH9et =R8hY -----END PGP SIGNATURE----- --nextPart42198277.cYIGmQy3Xf-- From markus@trippelsdorf.de Thu Jun 9 05:32:00 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p59AVxk6166366 for ; Thu, 9 Jun 2011 05:32:00 -0500 X-ASG-Debug-ID: 1307615518-5ef603dd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E2FAB1E42994 for ; Thu, 9 Jun 2011 03:31:58 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id vz8sGvo4YWgWoAP5 for ; Thu, 09 Jun 2011 03:31:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:subject:message-id:mime-version:content-type; q= dns/txt; s=beta; bh=DMpQDXLzO0zxPJRsbApG0MtEqOcBCOMA3dfXwa+VshA=; b= DNPKAhL+7+9FDTPBwD6dH/JfRoBf/G5oc4afO3KBD8aAC29nqa/DJO0lFndDS+N4 gNnUXjZelkfnlUTiLMScZ2Cn6W41q34Bx0Q+KDasQ8PnyEPq2OnBZiHvhWd/+XAq PFvCAKg1rD0zA23u693QPXy6Vv9qECVBJ4ASbA0Uk60= Received: (qmail 11634 invoked from network); 9 Jun 2011 12:31:53 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.66.182.48) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 9 Jun 2011 12:31:53 +0200 Date: Thu, 9 Jun 2011 12:31:53 +0200 From: Markus Trippelsdorf To: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Large Scale file systems with XFS - LinuxCon Japan Slides? Subject: Large Scale file systems with XFS - LinuxCon Japan Slides? Message-ID: <20110609103153.GA1714@x4.trippels.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1307615518 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0354 1.0000 -1.7921 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.79 X-Barracuda-Spam-Status: No, SCORE=-1.79 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65923 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph, could you be so kind to upload the slides of your LinuxCon Japan talk to the xfs.org WIKI? Thanks. -- Markus From BATV+edd2d016b77afbaa670f+2846+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 9 06:08:34 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p59B8XER172381 for ; Thu, 9 Jun 2011 06:08:34 -0500 X-ASG-Debug-ID: 1307617710-6ace031d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E586E10C061F for ; Thu, 9 Jun 2011 04:08:30 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id QqLExRBqsU9hj0W2 for ; Thu, 09 Jun 2011 04:08:30 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QUd6A-0003ux-Pf; Thu, 09 Jun 2011 11:08:26 +0000 Date: Thu, 9 Jun 2011 07:08:26 -0400 From: Christoph Hellwig To: Allison Henderson Cc: Ext4 Developers List , linux-fsdevel , xfs-oss X-ASG-Orig-Subj: Re: Port xfstests 145, 161, 175, 176, 185? Subject: Re: Port xfstests 145, 161, 175, 176, 185? Message-ID: <20110609110826.GA14899@infradead.org> References: <4DEFC41A.9070701@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DEFC41A.9070701@linux.vnet.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1307617712 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65926 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Wed, Jun 08, 2011 at 11:48:58AM -0700, Allison Henderson wrote: > During one of my reviews for the punch hole tests patch set it was > mentioned that it would be helpful to take the xfstests 145, 161, > 175, 176, 185 and modify them such that they can run with out > requiring the dmapi. These tests contain some more interesting > punch hole tests, but they dont normally run unless there is support > for dmapi. > > I did take a peek at them and I was thinking that if we decide to do > this, we would probably need to do something like introduce a new > set of source code that is similar to what is seen under the dmapi > folder, but modified to use a generic interface instead of the dmapi > libraries. We could try to merge them into a single code path, but > I think that may introduce more complexities than would be > desirable. Most of it should be doable using xfs_io. If it's nessecary to write new source files because of e.g. concurrency tests that we can't easily do from xfs_io please add new source files to the src/ directory. Also, please don't rewrite the actual existing dmapi test cases, but add new ones testing these patterns using the fallocate interface, as the coverage for the dmapi interface still is useful. From nveber@pyre.virge.net Thu Jun 9 08:48:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_61 autolearn=no version=3.4.0-r929098 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 p59DmG0Y177915 for ; Thu, 9 Jun 2011 08:48:17 -0500 X-ASG-Debug-ID: 1307627292-3410031b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pyre.virge.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A47554AF537 for ; Thu, 9 Jun 2011 06:48:13 -0700 (PDT) Received: from pyre.virge.net (24-246-28-70.cable.teksavvy.com [24.246.28.70]) by cuda.sgi.com with ESMTP id P5ORrIcltB14HgC5 for ; Thu, 09 Jun 2011 06:48:13 -0700 (PDT) Received: by pyre.virge.net (Postfix, from userid 1000) id A35221002283; Thu, 9 Jun 2011 09:48:11 -0400 (EDT) Date: Thu, 9 Jun 2011 09:48:11 -0400 From: Norbert Veber To: Dave Chinner Cc: Michael Monnerie , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Small files perform much faster on newly formatted fs? Subject: Re: Small files perform much faster on newly formatted fs? Message-ID: <20110609134811.GI28625@pyre.virge.net> References: <20110607163742.GH28625@pyre.virge.net> <201106080911.11286@zmi.at> <20110608122638.GQ28625@pyre.virge.net> <20110609012907.GR32466@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110609012907.GR32466@dastard> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: 24-246-28-70.cable.teksavvy.com[24.246.28.70] X-Barracuda-Start-Time: 1307627294 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.82 X-Barracuda-Spam-Status: No, SCORE=-1.82 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA085, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65935 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.10 BSF_SC0_SA085 Custom Rule SA085 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jun 09, 2011 at 11:29:07AM +1000, Dave Chinner wrote: > Those mount options are ignored if the filesystem doesn't have the > superblock feature bit set for aligned allocations. A filesystem > with 0/0 for sunit/swidth does not have the superblock bit set.... Oh man! I thought I saw some improvement with iometer benchmarks before and after the mount options, but I dont see any significant difference while timing the untar and rm -rf I've been doing. All the documentation I came across including the man page and XFS faq entry imply that the mount options can be used to perform alignment.. "XFS allows to optimize for a given RAID stripe unit (stripe size) and stripe width (number of data disks) via mount options." http://xfs.org/index.php/XFS_FAQ#Q:_How_to_calculate_the_correct_sunit.2Cswidth_values_for_optimal_performance "While the stripe unit and stripe width cannot be changed after an XFS file system has been created, they can be overridden at mount time with the sunit/swidth options, similar to ones used by mkfs.xfs." https://raid.wiki.kernel.org/index.php/RAID_setup#XFS In these kinds of cases maybe there should be an error logged instead of just silently ignoring them? Is there any way to change the superblock? Eg. soething like the ext* command: tune2fs -E stride=n,stripe-width=m /dev/xxx Thanks, Norbert From keepitsimpleengineer@gmail.com Thu Jun 9 10:56:28 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=ham version=3.4.0-r929098 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 p59FuSpM186643 for ; Thu, 9 Jun 2011 10:56:28 -0500 X-ASG-Debug-ID: 1307634984-48e1020e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 63B0BF4EA24 for ; Thu, 9 Jun 2011 08:56:24 -0700 (PDT) Received: from mail-fx0-f53.google.com (mail-fx0-f53.google.com [209.85.161.53]) by cuda.sgi.com with ESMTP id W83RdUqD8eJcLgK8 for ; Thu, 09 Jun 2011 08:56:24 -0700 (PDT) Received: by fxm8 with SMTP id 8so1177151fxm.26 for ; Thu, 09 Jun 2011 08:56:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to :content-type:content-transfer-encoding; bh=z2Pj9fZsAq6wi/06cWY6QzlV2POupSSkyQGmI6SxyRQ=; b=S35P27JutaqT4XitMmQ4gYJXY8oOd0tU1+V8Npw/hG9Udxkx9/xfTbHF0NunwUIJ/y d8gseuj1qpycpoatEWhNp+fwEowGxolSaU7XSFY820VCkRTeovSwXEqMJHu1x9Zy+6CS K7Ye0eodjING+AsUbvYzQSlJ1NFhhJfmWfsjo= 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=d5OXp/TpBjc/szcHuYsd6mkZ7cmGQ84xfdGVDfSPTAiFJg7EYezE0aRRa+yBbdcqjK 1CEsKnPsJL0ywIrdDUinp4f9YZvM9nYQPkGBUq5E+qqyZsZXq3LKY2m2UAP2TYGkl3rm bOPvrR4nBP9GPNGB0FSwdT/7ggB+uAiyIU8HQ= MIME-Version: 1.0 Received: by 10.223.86.130 with SMTP id s2mr956829fal.115.1307634984179; Thu, 09 Jun 2011 08:56:24 -0700 (PDT) Received: by 10.223.70.195 with HTTP; Thu, 9 Jun 2011 08:56:24 -0700 (PDT) Date: Thu, 9 Jun 2011 08:56:24 -0700 Message-ID: X-ASG-Orig-Subj: Problems with xfs_fsr stdout when run by cron. Subject: Problems with xfs_fsr stdout when run by cron. From: Larry Johnson To: xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-fx0-f53.google.com[209.85.161.53] X-Barracuda-Start-Time: 1307634985 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65945 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is on a ubuntu 10.10 64bit mythtv system. root@htpc:~# df -h -l -T --total -t xfs Filesystem Type Size Used Avail Use% Mounted on /dev/sda3 xfs 144G 118G 26G 82% /iso /dev/sdb1 xfs 1.9T 1.4T 433G 77% /pvr /dev/sdc1 xfs 1.9T 226G 1.6T 13% /pvs total - 3.8T 1.8T 2.1T 46% I had severe fragmentation on /dev/sdb1 which was resolved by running xfs_fsr about 10 times. Subsequently I have added /dev/sdc1. The problem occurs when I wrote a script to be run with cron, reorganize the xfs partitions and write a report in /var/log and write a line or two in syslog. The output of "xfs_fsr -v -t $time_for_run -f $left_off -m $used_mtab" when run as cron either goes to syslog instead of stdout or corrupts the log file. When run from a login terminal, it behaves as expected. A thread at unix.com forum have not resulted in explaining this behavior. http://www.unix.com/unix-advanced-expert-users/160979-different-= redirection-behavior-bash-linux-when-run-under-cron-vice-login.html#post302= 529475 Initially I thought it was some error on my part but I cannot rule out some problem with xfs_fsr. "xfs_db -r -c frag $device_file_path 2>&1" run both before and after xfs_fsr both behave as expected when run by cron or from a login session. Anybody have any suggestions? =E2=8B=AFlarry From michael.monnerie@is.it-management.at Thu Jun 9 11:30:35 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p59GUYos187882 for ; Thu, 9 Jun 2011 11:30:35 -0500 X-ASG-Debug-ID: 1307637031-37e000da0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv14.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 10E63D961C2 for ; Thu, 9 Jun 2011 09:30:32 -0700 (PDT) Received: from mailsrv14.zmi.at (mailsrv1.zmi.at [212.69.164.54]) by cuda.sgi.com with ESMTP id YRXGy65V4Fxwd7Gs for ; Thu, 09 Jun 2011 09:30:32 -0700 (PDT) Received: from mailsrv.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 mailsrv14.zmi.at (Postfix) with ESMTPSA id B6155144; Thu, 9 Jun 2011 18:30:30 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.72.27.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv.i.zmi.at (Postfix) with ESMTPSA id 222B7401C35; Thu, 9 Jun 2011 18:30:30 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Small files perform much faster on newly formatted fs? Subject: Re: Small files perform much faster on newly formatted fs? Date: Thu, 9 Jun 2011 18:30:28 +0200 User-Agent: KMail/1.13.6 (Linux/2.6.38.6-zmi; KDE/4.6.0; x86_64; ; ) Cc: Norbert Veber , Dave Chinner References: <20110607163742.GH28625@pyre.virge.net> <20110609012907.GR32466@dastard> <20110609134811.GI28625@pyre.virge.net> In-Reply-To: <20110609134811.GI28625@pyre.virge.net> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart27839233.5sKfQIQnPV"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <201106091830.29491@zmi.at> X-Barracuda-Connect: mailsrv1.zmi.at[212.69.164.54] X-Barracuda-Start-Time: 1307637033 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65946 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 --nextPart27839233.5sKfQIQnPV Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable On Donnerstag, 9. Juni 2011 Norbert Veber wrote: > In these kinds of cases maybe there should be an error logged instead > of just silently ignoring them? And also don't show them in the mount options when calling "mount" or=20 "cat /proc/mount". =2D-=20 mit freundlichen Gr=FCssen, Michael Monnerie, Ing. BSc it-management Internet Services: Prot=E9ger http://proteger.at [gesprochen: Prot-e-schee] Tel: +43 660 / 415 6531 // Haus zu verkaufen: http://zmi.at/langegg/ --nextPart27839233.5sKfQIQnPV Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) iEYEABECAAYFAk3w9SUACgkQzhSR9xwSCbRSLQCfX8QG/Ftp1KSpNsbkTMtrI5Aj pA4AnjEFNx53bj61dE6uC7VadYzVgu6o =MNDW -----END PGP SIGNATURE----- --nextPart27839233.5sKfQIQnPV-- From sekharan@us.ibm.com Thu Jun 9 11:48:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p59GmLXr188491 for ; Thu, 9 Jun 2011 11:48:22 -0500 X-ASG-Debug-ID: 1307638100-1f0402650000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e5.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 14BF5D95E45 for ; Thu, 9 Jun 2011 09:48:20 -0700 (PDT) Received: from e5.ny.us.ibm.com (e5.ny.us.ibm.com [32.97.182.145]) by cuda.sgi.com with ESMTP id PFRdUoNFiQ15HdOI for ; Thu, 09 Jun 2011 09:48:20 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay04.pok.ibm.com (d01relay04.pok.ibm.com [9.56.227.236]) by e5.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p59GKWhi022060 for ; Thu, 9 Jun 2011 12:20:32 -0400 Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p59GmCjL092484 for ; Thu, 9 Jun 2011 12:48:12 -0400 Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p59AlVPi025089 for ; Thu, 9 Jun 2011 04:47:31 -0600 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p59AlNfs024755; Thu, 9 Jun 2011 04:47:25 -0600 X-ASG-Orig-Subj: PATCH: remove varibale that serve no purpose in xfs_alloc_ag_vextent_exact() Subject: PATCH: remove varibale that serve no purpose in xfs_alloc_ag_vextent_exact() From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: xfs@oss.sgi.com Cc: Alex Elder Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Thu, 09 Jun 2011 09:47:49 -0700 Message-ID: <1307638069.7661.432.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e5.ny.us.ibm.com[32.97.182.145] X-Barracuda-Start-Time: 1307638101 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 Hi, As per Alex Elder suggestion, here is a patch to remove non-purpose variables in xfs_alloc_ag_vextent_exact() chandra -------------------- Remove the variables that serves no purpose. Signed-off-by: Chandra Seetharaman --- diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index 95862bb..7a53c8f 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -570,9 +570,7 @@ xfs_alloc_ag_vextent_exact( xfs_agblock_t tbno; /* start block of trimmed extent */ xfs_extlen_t tlen; /* length of trimmed extent */ xfs_agblock_t tend; /* end block of trimmed extent */ - xfs_agblock_t end; /* end of allocated extent */ int i; /* success/failure of operation */ - xfs_extlen_t rlen; /* length of returned extent */ ASSERT(args->alignment == 1); @@ -625,18 +623,16 @@ xfs_alloc_ag_vextent_exact( * * Fix the length according to mod and prod if given. */ - end = XFS_AGBLOCK_MIN(tend, args->agbno + args->maxlen); - args->len = end - args->agbno; + args->len = XFS_AGBLOCK_MIN(tend, args->agbno + args->maxlen) + - args->agbno; xfs_alloc_fix_len(args); if (!xfs_alloc_fix_minleft(args)) goto not_found; - rlen = args->len; - ASSERT(args->agbno + rlen <= tend); - end = args->agbno + rlen; + ASSERT(args->agbno + args->len <= tend); /* - * We are allocating agbno for rlen [agbno .. end] + * We are allocating agbno for args->len * Allocate/initialize a cursor for the by-size btree. */ cnt_cur = xfs_allocbt_init_cursor(args->mp, args->tp, args->agbp, --- From stan@hardwarefreak.com Thu Jun 9 13:24:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p59IOXaK191518 for ; Thu, 9 Jun 2011 13:24:33 -0500 X-ASG-Debug-ID: 1307643871-65e100bc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from greer.hardwarefreak.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6C5524B0619 for ; Thu, 9 Jun 2011 11:24:31 -0700 (PDT) Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id mZ94QC7HKvVYDV57 for ; Thu, 09 Jun 2011 11:24:31 -0700 (PDT) Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 044F86C0C4; Thu, 9 Jun 2011 13:24:31 -0500 (CDT) Message-ID: <4DF10FDF.1090508@hardwarefreak.com> Date: Thu, 09 Jun 2011 13:24:31 -0500 From: Stan Hoeppner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Michael Monnerie CC: xfs@oss.sgi.com, Kenneth Emerson X-ASG-Orig-Subj: Re: Defragging XFS File Systems Subject: Re: Defragging XFS File Systems References: <201106090749.37745@zmi.at> <4DF080AC.2090507@hardwarefreak.com> <201106091212.36227@zmi.at> In-Reply-To: <201106091212.36227@zmi.at> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1307643872 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65955 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On 6/9/2011 5:12 AM, Michael Monnerie wrote: > On Donnerstag, 9. Juni 2011 Stan Hoeppner wrote: >> When is running xfs_fsr recommended? > > Good question. One case that comes to my mind is a filesystem that was > used a long time when filled >85%, which has now either been expanded or > files removed so you have a lot of space again, and you want to defrag > all those files that have been badly fragmented. > >> I scheduled it twice a week some time ago due to a filesystem >> containing active mbox files. I did so because they became so >> heavily fragmented in short order, especially those swallowing >> copious amounts of list mail. Before cron'ing xfs_fsr I was seeing >> mbox files with over 1000 fragmented extents, and increasing MUA >> latency as the files became more fragmented. The filesystem is >> currently 90% free. > > This is also an example where defrag may help. You have 10% usage, so > there's enough space. Maybe your usage fits the mount option > "allocsize", I tried allocsize=1m but it didn't seem to help already existing files. I simply don't think there's much that can be done in filesystem logic to keep long lived constantly appended files from fragmenting, short of the log rotation method, which isn't really suitable for large mbox files. Maildir is obviously an option to combat fragmentation, but it has downsides as well, mainly much higher small file IOPS during normal operation. Using mbox I can 'hide the IO' by running xfs_fsr at night and/or on weekends. > so that you keep room for file append. But newer kernels > changed behaviour of XFS, so I'm not sure up to which kernel version its > good. Maybe Dave Chinner can chime in here. BTW, maybe this behaviour > should be documented in the FAQ so we can reference it. My current method seems to work well for now. This filesystem will likely not even be half full by the time this server is replaced in a few years, so I probably don't need to worry about xfs_fsr efficiency WRT free space. Due to the low cost of today's gargantuan platters, I'm guessing there are likely many admins in a similar position. Four 600GB SAS drives in RAID10 yields ~1.2TB of mail storage. That's a lot of space, and performance, for small/medium organization's mailboxes... -- Stan From achender@linux.vnet.ibm.com Thu Jun 9 14:18:05 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p59JI4Im196947 for ; Thu, 9 Jun 2011 14:18:05 -0500 X-ASG-Debug-ID: 1307647082-39c3026c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e3.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3D522D9725F for ; Thu, 9 Jun 2011 12:18:03 -0700 (PDT) Received: from e3.ny.us.ibm.com (e3.ny.us.ibm.com [32.97.182.143]) by cuda.sgi.com with ESMTP id IigJhRJe2J3HK1J4 for ; Thu, 09 Jun 2011 12:18:03 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay05.pok.ibm.com (d01relay05.pok.ibm.com [9.56.227.237]) by e3.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p59ItaKl003827 for ; Thu, 9 Jun 2011 14:55:36 -0400 Received: from d01av02.pok.ibm.com (d01av02.pok.ibm.com [9.56.224.216]) by d01relay05.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p59JI1wq116880 for ; Thu, 9 Jun 2011 15:18:01 -0400 Received: from d01av02.pok.ibm.com (loopback [127.0.0.1]) by d01av02.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p59JI1QJ027168 for ; Thu, 9 Jun 2011 16:18:01 -0300 Received: from lc4eb0185863151.ibm.com (sig-9-65-248-196.mts.ibm.com [9.65.248.196]) by d01av02.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p59JHxd6027032; Thu, 9 Jun 2011 16:18:00 -0300 Message-ID: <4DF11C67.8090702@linux.vnet.ibm.com> Date: Thu, 09 Jun 2011 12:17:59 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Christoph Hellwig CC: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Re: Port xfstests 145, 161, 175, 176, 185? Subject: Re: Port xfstests 145, 161, 175, 176, 185? References: <4DEFC41A.9070701@linux.vnet.ibm.com> <20110609110826.GA14899@infradead.org> In-Reply-To: <20110609110826.GA14899@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e3.ny.us.ibm.com[32.97.182.143] X-Barracuda-Start-Time: 1307647084 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 06/09/2011 04:08 AM, Christoph Hellwig wrote: > On Wed, Jun 08, 2011 at 11:48:58AM -0700, Allison Henderson wrote: >> During one of my reviews for the punch hole tests patch set it was >> mentioned that it would be helpful to take the xfstests 145, 161, >> 175, 176, 185 and modify them such that they can run with out >> requiring the dmapi. These tests contain some more interesting >> punch hole tests, but they dont normally run unless there is support >> for dmapi. >> >> I did take a peek at them and I was thinking that if we decide to do >> this, we would probably need to do something like introduce a new >> set of source code that is similar to what is seen under the dmapi >> folder, but modified to use a generic interface instead of the dmapi >> libraries. We could try to merge them into a single code path, but >> I think that may introduce more complexities than would be >> desirable. > > Most of it should be doable using xfs_io. If it's nessecary to write > new source files because of e.g. concurrency tests that we can't easily > do from xfs_io please add new source files to the src/ directory. > > Also, please don't rewrite the actual existing dmapi test cases, but > add new ones testing these patterns using the fallocate interface, as > the coverage for the dmapi interface still is useful. > Alrighty, thx Christoph. I will keep this work item on my todo list then. From nveber@pyre.virge.net Thu Jun 9 15:30:08 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p59KU8Vx199330 for ; Thu, 9 Jun 2011 15:30:08 -0500 X-ASG-Debug-ID: 1307651406-3af302410000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pyre.virge.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E83484B0BAE for ; Thu, 9 Jun 2011 13:30:06 -0700 (PDT) Received: from pyre.virge.net (24-246-28-70.cable.teksavvy.com [24.246.28.70]) by cuda.sgi.com with ESMTP id 0H5a7Vtt4aryN9N0 for ; Thu, 09 Jun 2011 13:30:06 -0700 (PDT) Received: by pyre.virge.net (Postfix, from userid 1000) id 945B1109C82B; Thu, 9 Jun 2011 16:30:02 -0400 (EDT) Date: Thu, 9 Jun 2011 16:30:01 -0400 From: Norbert Veber To: Michael Monnerie Cc: xfs@oss.sgi.com, Dave Chinner X-ASG-Orig-Subj: Re: Small files perform much faster on newly formatted fs? Subject: Re: Small files perform much faster on newly formatted fs? Message-ID: <20110609203000.GM28625@pyre.virge.net> References: <20110607163742.GH28625@pyre.virge.net> <20110609012907.GR32466@dastard> <20110609134811.GI28625@pyre.virge.net> <201106091830.29491@zmi.at> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201106091830.29491@zmi.at> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: 24-246-28-70.cable.teksavvy.com[24.246.28.70] X-Barracuda-Start-Time: 1307651406 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65959 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Thu, Jun 09, 2011 at 06:30:28PM +0200, Michael Monnerie wrote: > On Donnerstag, 9. Juni 2011 Norbert Veber wrote: > > In these kinds of cases maybe there should be an error logged instead > > of just silently ignoring them? > > And also don't show them in the mount options when calling "mount" or > "cat /proc/mount". Yes, thats even worse. I found I can just put random things in there when doing a mount -o remount, and it will just show up. pyre:~# mount -o remount,bobsyouruncle /shared pyre:~# mount | grep shared /dev/mapper/vg0-shared on /shared type xfs (rw,sunit=128,swidth=256,bobsyouruncle) Thats on 2.6.32. No error in dmesg output either. It doesnt accept random nonexistent options when mounting, only when remounting. moupyre:~# mount -o bobsyouruncle /shared mount: wrong fs type, bad option, bad superblock on /dev/mapper/vg0-shared, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so pyre:~# dmesg | tail -n1 [441854.007959] XFS: unknown mount option [bobsyouruncle]. From david@fromorbit.com Thu Jun 9 16:17:36 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p59LHZ0g201179 for ; Thu, 9 Jun 2011 16:17:36 -0500 X-ASG-Debug-ID: 1307654253-0a53027f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EC27C1665C50 for ; Thu, 9 Jun 2011 14:17:34 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id ulBJlZkdlUZBozNE for ; Thu, 09 Jun 2011 14:17:34 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ar0CAJY18U15LCoegWdsb2JhbABTpj8VAQEWJiWIcb9YDoYVBKEO Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl6.internode.on.net with ESMTP; 10 Jun 2011 06:47:33 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QUmbb-0008Gm-9C; Fri, 10 Jun 2011 07:17:31 +1000 Date: Fri, 10 Jun 2011 07:17:31 +1000 From: Dave Chinner To: Norbert Veber Cc: Michael Monnerie , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Small files perform much faster on newly formatted fs? Subject: Re: Small files perform much faster on newly formatted fs? Message-ID: <20110609211731.GT32466@dastard> References: <20110607163742.GH28625@pyre.virge.net> <201106080911.11286@zmi.at> <20110608122638.GQ28625@pyre.virge.net> <20110609012907.GR32466@dastard> <20110609134811.GI28625@pyre.virge.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110609134811.GI28625@pyre.virge.net> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1307654254 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65959 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, Jun 09, 2011 at 09:48:11AM -0400, Norbert Veber wrote: > On Thu, Jun 09, 2011 at 11:29:07AM +1000, Dave Chinner wrote: > > Those mount options are ignored if the filesystem doesn't have the > > superblock feature bit set for aligned allocations. A filesystem > > with 0/0 for sunit/swidth does not have the superblock bit set.... > > Oh man! I thought I saw some improvement with iometer benchmarks before > and after the mount options, but I dont see any significant difference > while timing the untar and rm -rf I've been doing. > > All the documentation I came across including the man page and XFS faq > entry imply that the mount options can be used to perform alignment.. The mount options are only there to cahnge the alignment that already exists, and there are significant limitations on those changes. You can't just apply alignment to a filesystem with no alignment becaue XFS makes certain assumptions about how aligned filesystems are laid out (e.g. AGs always start aligned to a sunit). If the filesystem is created without alignment, there is a pretty good chance that it is simply not possible to post-apply alignment to it. > In these kinds of cases maybe there should be an error logged instead of > just silently ignoring them? It does log errors if you already have alignment set and your change is invalid. If you don't have alignemnt, then they are no-ops and so are ignored. > Is there any way to change the superblock? Eg. soething like the ext* > command: You can do it with xfs_db, but see above for why it's a bad idea. Cheers, Dave. -- Dave Chinner david@fromorbit.com From nveber@pyre.virge.net Thu Jun 9 19:55:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5A0t1wZ212668 for ; Thu, 9 Jun 2011 19:55:01 -0500 X-ASG-Debug-ID: 1307667299-5d3f025e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pyre.virge.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0E60DD9C81C for ; Thu, 9 Jun 2011 17:54:59 -0700 (PDT) Received: from pyre.virge.net (24-246-28-70.cable.teksavvy.com [24.246.28.70]) by cuda.sgi.com with ESMTP id 1PdXsJpq7QWfTzhT for ; Thu, 09 Jun 2011 17:54:59 -0700 (PDT) Received: by pyre.virge.net (Postfix, from userid 1000) id 56F6110C215C; Thu, 9 Jun 2011 20:54:57 -0400 (EDT) Date: Thu, 9 Jun 2011 20:54:57 -0400 From: Norbert Veber To: Dave Chinner Cc: Michael Monnerie , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Small files perform much faster on newly formatted fs? Subject: Re: Small files perform much faster on newly formatted fs? Message-ID: <20110610005457.GN28625@pyre.virge.net> References: <20110607163742.GH28625@pyre.virge.net> <201106080911.11286@zmi.at> <20110608122638.GQ28625@pyre.virge.net> <20110609012907.GR32466@dastard> <20110609134811.GI28625@pyre.virge.net> <20110609211731.GT32466@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110609211731.GT32466@dastard> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: 24-246-28-70.cable.teksavvy.com[24.246.28.70] X-Barracuda-Start-Time: 1307667300 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65962 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Fri, Jun 10, 2011 at 07:17:31AM +1000, Dave Chinner wrote: > The mount options are only there to cahnge the alignment that > already exists, and there are significant limitations on those > changes. Oh I see. I will reformat and set sunit/swidth for my current 3 disk raid5 (2 data disks). What if I later add a 4th disk (3 data disks), would using the mount option to specify the new swidth have any performance hit? I assume old files might work slower but any new data that is written would be aligned across all the drives? Or should I just reformat again at that point? Thanks, Norbert From jean-marie.degryse@uclouvain.be Fri Jun 10 10:56:04 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.0 required=5.0 tests=BAYES_99,T_DKIM_INVALID, T_FILL_THIS_FORM_SHORT,T_LOTS_OF_MONEY autolearn=no version=3.4.0-r929098 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 p5AFu3Ke258224 for ; Fri, 10 Jun 2011 10:56:04 -0500 X-ASG-Debug-ID: 1307721359-72f302b60000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp5.sgsi.ucl.ac.be (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 800774B5F98; Fri, 10 Jun 2011 08:55:59 -0700 (PDT) Received: from smtp5.sgsi.ucl.ac.be (smtp.sgsi.ucl.ac.be [130.104.5.67]) by cuda.sgi.com with ESMTP id VTBxAXPfitH7i3i3; Fri, 10 Jun 2011 08:55:59 -0700 (PDT) Received: from mail.sgsi.ucl.ac.be (mmp-1-1.sipr-dc.ucl.ac.be [10.1.3.4]) by smtp5.sgsi.ucl.ac.be (Postfix) with ESMTP id 7D4A311E31F; Fri, 10 Jun 2011 17:55:51 +0200 (CEST) X-DKIM: Sendmail DKIM Filter v2.8.3 smtp5.sgsi.ucl.ac.be 7D4A311E31F DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=uclouvain.be; s=selucl; t=1307721352; bh=OTn4XcXOUdUDZDerzDBJEBO45N0xdvui7ZJJ/zvMqz0=; h=Message-ID:Date:Subject:From:MIME-Version:Content-Type: Content-Transfer-Encoding; b=fK5CesSWxOs7PKwXD6MmPtGweKSAY6SGmnx12G+UK2znoSTTe5N/CWUMhjy9d5SBQ 8RCclvKp5ClneWGkqVb/dl8Td40OpxMoyq8V6wPLwXJCvl33aKtmhptnivn3Xnj4ub OjzrTSEKcS9HUqlnKHU5t+UmgJ6tm2EDEIm9TVJQ= Received: from 120.140.70.105 (SquirrelMail authenticated user jdegryse) by mmp.sipr-dc.ucl.ac.be with HTTP; Fri, 10 Jun 2011 17:55:52 +0200 Message-ID: Date: Fri, 10 Jun 2011 17:55:52 +0200 X-ASG-Orig-Subj: Re.funds Subject: Re.funds From: "Jean-Marie Degryse" User-Agent: SquirrelMail/1.4.20 MIME-Version: 1.0 Content-Type: text/plain;charset=utf-8 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: clamav-milter 0.97-exp at smtp-5.sipr-dc.ucl.ac.be X-Virus-Status: Clean X-SGSI-MailScanner-ID: 7D4A311E31F.A330E X-SGSI-MailScanner: Found to be clean X-SGSI-SpamCheck: n'est pas un polluriel, SpamAssassin (not cached, score=-3.667, requis 5, autolearn=not spam, ALL_TRUSTED -2.00, BAYES_00 -1.60, DKIM_SIGNED 0.10, DKIM_VALID -0.10, DKIM_VALID_AU -0.10, DKIM_VERIFIED -1.00, LOTS_OF_MONEY 0.00, MISSING_HEADERS 1.02, T_FILL_THIS_FORM_SHORT 0.01) X-SGSI-From: jean-marie.degryse@uclouvain.be X-SGSI-Spam-Status: No X-Barracuda-Connect: smtp.sgsi.ucl.ac.be[130.104.5.67] X-Barracuda-Start-Time: 1307721362 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5095 1.0000 0.7500 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.96 X-Barracuda-Spam-Status: No, SCORE=1.96 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, MISSING_HEADERS, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65965 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 1.21 MISSING_HEADERS Missing To: header 0.00 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; My associate has helped me to send your first payment of $5000 USD to you as instructed by the Malaysian Government and Mr. David Cameron the United Kingdom prime minister after the last G20 meeting that was held in Malaysia, making you one of the beneficiaries. Here is the information below. Refrence Numbers: 86147516 Sender Name Is = Patrick Lee Chun I told him to keep sending you $5000 USD twice a week until the FULL payment of ($820000.00 United State Dollars) is completed. A certificate will be made to change the Receivers Name to your name as stated by the Malaysian Government,reconfirm your {1}Full Names {2}address {3}Mobile Number via Email to:money_gramlimited@mspil.edu.cn Allan Davis to proceed. Note: You cannot pickup the money until the certificate is obtained by you. Regards Mr. Allan Davis. Tel: +(60) 163544376. For more info: www.g20.org From david@fromorbit.com Fri Jun 10 12:57:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5AHv2CQ261869 for ; Fri, 10 Jun 2011 12:57:03 -0500 X-ASG-Debug-ID: 1307728618-74bd012a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1B129DA2CC6 for ; Fri, 10 Jun 2011 10:56:59 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id wiAE8Fwah1ZlEbXH for ; Fri, 10 Jun 2011 10:56:59 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlYDAGpZ8k15LCoegWdsb2JhbABSpksVAQEWJiXFHA6GFQShFA Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl6.internode.on.net with ESMTP; 11 Jun 2011 03:26:57 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QV5x2-0001zw-7x; Sat, 11 Jun 2011 03:56:56 +1000 Date: Sat, 11 Jun 2011 03:56:56 +1000 From: Dave Chinner To: Stan Hoeppner Cc: Michael Monnerie , Kenneth Emerson , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Defragging XFS File Systems Subject: Re: Defragging XFS File Systems Message-ID: <20110610175656.GW32466@dastard> References: <201106090749.37745@zmi.at> <4DF080AC.2090507@hardwarefreak.com> <201106091212.36227@zmi.at> <4DF10FDF.1090508@hardwarefreak.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DF10FDF.1090508@hardwarefreak.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1307728621 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0012 1.0000 -2.0132 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65967 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, Jun 09, 2011 at 01:24:31PM -0500, Stan Hoeppner wrote: > On 6/9/2011 5:12 AM, Michael Monnerie wrote: > > On Donnerstag, 9. Juni 2011 Stan Hoeppner wrote: > >> When is running xfs_fsr recommended? > > > > Good question. One case that comes to my mind is a filesystem that was > > used a long time when filled >85%, which has now either been expanded or > > files removed so you have a lot of space again, and you want to defrag > > all those files that have been badly fragmented. > > > >> I scheduled it twice a week some time ago due to a filesystem > >> containing active mbox files. I did so because they became so > >> heavily fragmented in short order, especially those swallowing > >> copious amounts of list mail. Before cron'ing xfs_fsr I was seeing > >> mbox files with over 1000 fragmented extents, and increasing MUA > >> latency as the files became more fragmented. The filesystem is > >> currently 90% free. > > > > This is also an example where defrag may help. You have 10% usage, so > > there's enough space. Maybe your usage fits the mount option > > "allocsize", > > I tried allocsize=1m but it didn't seem to help already existing files. > I simply don't think there's much that can be done in filesystem logic > to keep long lived constantly appended files from fragmenting, short of YOu can stop XFS from truncating speculative preallocation beyond EOF by either telling the inode it has preallocated space or or turning it into a an append-only file. e.g. $ xfs_io -f -c "resvsp 0 4k" or $ sudo chattr +a Either way, XFS won't truncate extents beyond EOF on file close for such a file and that should prevent most future fragmentation of the file. Cheers, Dave. -- Dave Chinner david@fromorbit.com From sekharan@us.ibm.com Fri Jun 10 13:45:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5AIjcvW002193 for ; Fri, 10 Jun 2011 13:45:38 -0500 X-ASG-Debug-ID: 1307731537-7de702fa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e8.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CB1F54B1E3A for ; Fri, 10 Jun 2011 11:45:37 -0700 (PDT) Received: from e8.ny.us.ibm.com (e8.ny.us.ibm.com [32.97.182.138]) by cuda.sgi.com with ESMTP id LyrhdyQgkXkEERTK for ; Fri, 10 Jun 2011 11:45:37 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay07.pok.ibm.com (d01relay07.pok.ibm.com [9.56.227.147]) by e8.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5AIYPmt018156 for ; Fri, 10 Jun 2011 14:34:25 -0400 Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay07.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5AIjaoi1216658 for ; Fri, 10 Jun 2011 14:45:36 -0400 Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5AEjOZa017180 for ; Fri, 10 Jun 2011 11:45:24 -0300 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d01av03.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5AEjMTD017119; Fri, 10 Jun 2011 11:45:23 -0300 X-ASG-Orig-Subj: [PATCH]: [xfstests] Make ext2 requirement explicit for test 049 Subject: [PATCH]: [xfstests] Make ext2 requirement explicit for test 049 From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: XFS Cc: Eric Sandeen Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Fri, 10 Jun 2011 11:45:33 -0700 Message-ID: <1307731533.7661.436.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e8.ny.us.ibm.com[32.97.182.138] X-Barracuda-Start-Time: 1307731537 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 049 depends on ext2 module being supported by the kernel. This patch makes it a explicit, instead of failing the test with obscure message. Signed-Off-By: Chandra Seetharaman --- diff --git a/049 b/049 index 3d3f030..c6c4faa 100755 --- a/049 +++ b/049 @@ -64,6 +64,7 @@ _require_nobigloopfs _require_nonexternal _require_scratch _require_loop +_require_ext2 rm -f $seq.full diff --git a/common.rc b/common.rc index c510c66..531a43e 100644 --- a/common.rc +++ b/common.rc @@ -769,6 +769,23 @@ _require_loop() fi } +# this test requires ext2 filesystem support +# +_require_ext2() +{ + if [ "$HOSTOS" != "Linux" ] + then + _notrun "This test requires linux for ext2 filesystem support" + fi + + if modprobe ext2 >/dev/null 2>&1 + then + : + else + _notrun "This test requires ext2 filesystem support" + fi +} + # this test requires that (large) loopback device files are not in use # _require_nobigloopfs() From sandeen@redhat.com Fri Jun 10 13:53:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5AIrl6r002496 for ; Fri, 10 Jun 2011 13:53:48 -0500 X-ASG-Debug-ID: 1307732025-70bd03150000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 75A07DA2DBF for ; Fri, 10 Jun 2011 11:53:45 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id MnUe41MNRh3A6joo for ; Fri, 10 Jun 2011 11:53:45 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5AIrj4Z025692 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 10 Jun 2011 14:53:45 -0400 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p5AIri3G019581; Fri, 10 Jun 2011 14:53:44 -0400 Message-ID: <4DF26838.4030101@redhat.com> Date: Fri, 10 Jun 2011 13:53:44 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.15) Gecko/20110307 Fedora/3.1.9-0.38.b3pre.fc13 Lightning/1.0b3pre Thunderbird/3.1.9 MIME-Version: 1.0 To: sekharan@us.ibm.com CC: XFS X-ASG-Orig-Subj: Re: [PATCH]: [xfstests] Make ext2 requirement explicit for test 049 Subject: Re: [PATCH]: [xfstests] Make ext2 requirement explicit for test 049 References: <1307731533.7661.436.camel@chandra-lucid.beaverton.ibm.com> In-Reply-To: <1307731533.7661.436.camel@chandra-lucid.beaverton.ibm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1307732026 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 06/10/2011 01:45 PM, Chandra Seetharaman wrote: > Test 049 depends on ext2 module being supported by the kernel. > > This patch makes it a explicit, instead of failing the test with > obscure message. > > Signed-Off-By: Chandra Seetharaman > --- > > diff --git a/049 b/049 > index 3d3f030..c6c4faa 100755 > --- a/049 > +++ b/049 > @@ -64,6 +64,7 @@ _require_nobigloopfs > _require_nonexternal > _require_scratch > _require_loop > +_require_ext2 > > rm -f $seq.full > > diff --git a/common.rc b/common.rc > index c510c66..531a43e 100644 > --- a/common.rc > +++ b/common.rc > @@ -769,6 +769,23 @@ _require_loop() > fi > } > > +# this test requires ext2 filesystem support > +# > +_require_ext2() > +{ > + if [ "$HOSTOS" != "Linux" ] > + then > + _notrun "This test requires linux for ext2 filesystem support" > + fi > + > + if modprobe ext2 >/dev/null 2>&1 Does this do the right thing if ext2 is built in? If not, would : modprobe ext2 >/dev/null 2>&1 grep ext2 /proc/filesystems ... work better? -Eric > + then > + : > + else > + _notrun "This test requires ext2 filesystem support" > + fi > +} > + > # this test requires that (large) loopback device files are not in use > # > _require_nobigloopfs() > > From sekharan@us.ibm.com Fri Jun 10 14:22:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5AJMhnu007402 for ; Fri, 10 Jun 2011 14:22:43 -0500 X-ASG-Debug-ID: 1307733756-539200270000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e39.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9710F1666979 for ; Fri, 10 Jun 2011 12:22:37 -0700 (PDT) Received: from e39.co.us.ibm.com (e39.co.us.ibm.com [32.97.110.160]) by cuda.sgi.com with ESMTP id YFfauOc52X5QZBDy for ; Fri, 10 Jun 2011 12:22:37 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay05.boulder.ibm.com (d03relay05.boulder.ibm.com [9.17.195.107]) by e39.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5AJ8PeD020385 for ; Fri, 10 Jun 2011 13:08:25 -0600 Received: from d03av01.boulder.ibm.com (d03av01.boulder.ibm.com [9.17.195.167]) by d03relay05.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5AJLw4Y281332 for ; Fri, 10 Jun 2011 13:22:08 -0600 Received: from d03av01.boulder.ibm.com (loopback [127.0.0.1]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5AJLw1r018934 for ; Fri, 10 Jun 2011 13:21:58 -0600 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5AJLw1J018882; Fri, 10 Jun 2011 13:21:58 -0600 X-ASG-Orig-Subj: Re: [PATCH]: [xfstests] Make ext2 requirement explicit for test 049 Subject: Re: [PATCH]: [xfstests] Make ext2 requirement explicit for test 049 From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: Eric Sandeen Cc: XFS In-Reply-To: <4DF26838.4030101@redhat.com> References: <1307731533.7661.436.camel@chandra-lucid.beaverton.ibm.com> <4DF26838.4030101@redhat.com> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Fri, 10 Jun 2011 12:21:57 -0700 Message-ID: <1307733717.7661.437.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e39.co.us.ibm.com[32.97.110.160] X-Barracuda-Start-Time: 1307733757 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 Good catch. I will reroll the patch, test it and send it again. Thanks. chandra On Fri, 2011-06-10 at 13:53 -0500, Eric Sandeen wrote: > On 06/10/2011 01:45 PM, Chandra Seetharaman wrote: > > Test 049 depends on ext2 module being supported by the kernel. > > > > This patch makes it a explicit, instead of failing the test with > > obscure message. > > > > Signed-Off-By: Chandra Seetharaman > > --- > > > > diff --git a/049 b/049 > > index 3d3f030..c6c4faa 100755 > > --- a/049 > > +++ b/049 > > @@ -64,6 +64,7 @@ _require_nobigloopfs > > _require_nonexternal > > _require_scratch > > _require_loop > > +_require_ext2 > > > > rm -f $seq.full > > > > diff --git a/common.rc b/common.rc > > index c510c66..531a43e 100644 > > --- a/common.rc > > +++ b/common.rc > > @@ -769,6 +769,23 @@ _require_loop() > > fi > > } > > > > +# this test requires ext2 filesystem support > > +# > > +_require_ext2() > > +{ > > + if [ "$HOSTOS" != "Linux" ] > > + then > > + _notrun "This test requires linux for ext2 filesystem support" > > + fi > > + > > + if modprobe ext2 >/dev/null 2>&1 > > Does this do the right thing if ext2 is built in? > > If not, would : > > modprobe ext2 >/dev/null 2>&1 > grep ext2 /proc/filesystems ... > > work better? > > -Eric > > > + then > > + : > > + else > > + _notrun "This test requires ext2 filesystem support" > > + fi > > +} > > + > > # this test requires that (large) loopback device files are not in use > > # > > _require_nobigloopfs() > > > > > From egitim@ceoint.com Fri Jun 10 14:54:18 2011 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 p5AJsGDA008420 for ; Fri, 10 Jun 2011 14:54:17 -0500 X-ASG-Debug-ID: 1307735646-508201db0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from germanweb.aktifphp.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F13CCDA32C2 for ; Fri, 10 Jun 2011 12:54:06 -0700 (PDT) Received: from germanweb.aktifphp.net (178-162-135-162.local [178.162.135.162]) by cuda.sgi.com with ESMTP id GLkNGsjCWz23A7yH for ; Fri, 10 Jun 2011 12:54:06 -0700 (PDT) Received: from [78.170.174.227] (helo=CEOBilgisayar) by germanweb.aktifphp.net with esmtp (Exim 4.69) (envelope-from ) id 1QV7zy-0001YV-5u; Fri, 10 Jun 2011 16:08:13 -0400 From: =?iso-8859-9?B?Q0VPIEXQ3VTdTSBEQU5J3k1BTkxJSw==?= To: =?iso-8859-9?B?Q0VPIEXQ3VTdTSBEQU5J3k1BTkxJSw==?= X-ASG-Orig-Subj: =?iso-8859-9?Q?_V=DDZYON_2023_E=D0=DDT=DDMLER=DD__CEO_DA...?= Subject: =?iso-8859-9?Q?_V=DDZYON_2023_E=D0=DDT=DDMLER=DD__CEO_DA...?= Date: Fri, 10 Jun 2011 21:47:35 +0300 Message-ID: <0fd401cc27a0$179d09c0$46d71d40$@com> MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_NextPart_000_0FD5_01CC27B9.3CEA41C0" X-Priority: 1 (Highest) X-MSMail-Priority: High X-Mailer: Microsoft Office Outlook 12.0 Content-language: tr Thread-index: AcwjpTxYXFNqg241QBuHCFSZ/kXTIgBhV6tAAAfLVkAAZzb7kAAlKIlAAABPImA= Importance: High X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - germanweb.aktifphp.net X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - ceoint.com X-Barracuda-Connect: 178-162-135-162.local[178.162.135.162] X-Barracuda-Start-Time: 1307735650 X-Barracuda-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.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=BSF_SC0_SA090e, BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, HTML_IMAGE_RATIO_02, HTML_MESSAGE, MISSING_MIMEOLE, UPPERCASE_75_100, UPPERCASE_75_100_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65968 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 HTML_IMAGE_RATIO_02 BODY: HTML has a low ratio of text to image area 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 MISSING_MIMEOLE Message has X-MSMail-Priority, but no X-MimeOLE 0.01 UPPERCASE_75_100 message body is 75-100% uppercase 0.40 BSF_SC0_SA090e Custom Rule SA090e 1.93 UPPERCASE_75_100_2 message body is 75-100% uppercase 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 This is a multi-part message in MIME format. ------=_NextPart_000_0FD5_01CC27B9.3CEA41C0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0FD6_01CC27B9.3CEA41C0" ------=_NextPart_001_0FD6_01CC27B9.3CEA41C0 Content-Type: text/plain; charset="iso-8859-9" Content-Transfer-Encoding: quoted-printable =20 EXPRES SERT=DDF=DDKA H=DDZMET=DDM=DDZ =DDLE SERT=DDF=DDKALAR = ADRES=DDN=DDZE KARGO =DDLE TESL=DDM=20 E=D0=DDT=DDMLER=DDM=DDZ 28 HAZ=DDRANDA BA=DELIYOR.. =20 Slayt1.JPGSlayt2.JPGSlayt3.JPGSlayt4.JPG =20 =20 NOT:=20 =20 KAYSER=DD DI=DEINA DA KATILIM SERT=DDF=DDKASI,E=D0=DDT=DDM CD S=DD VE = UZMANLIK KARTI ADRES=DDN=DDZE KARGO =DDLE YOLLANMAKTADIR.=20 KATILMAK =DDSTEMEN=DDZ DURUMDA GARANT=DD BANKASI KAYSER=DD =DEUBES=DD = 421-6678098 CEO E=D0=DDT=DDM DANI=DEMANLIK F=DDRMAMIZA =DCCRET=DDN YATIRILMASI = GEREKMEKTED=DDR. IBAN NO TR72 0006 2000 4210 0006 6780 98 =DDLKAY RIZVAN/DEM=DDRPARMAK = ADINA =20 =20 CEO E=D0=DDT=DDM&DANI=DEMANLIK =20 TEL: 0 352 231 31 67 GSM:0 535 557 34 18 =20 ADRES:SAHAB=DDYE MAH. =DDSTASYON CAD. FAZLIO=D0LU =DD=DEMERKEZ=DD NO:110 KOCAS=DDNAN-KAYSER=DD =20 ceoint@hotmail.com=20 =20 www.ceoint.com =20 =20 =20 =20 ------=_NextPart_001_0FD6_01CC27B9.3CEA41C0 Content-Type: text/html; charset="iso-8859-9" Content-Transfer-Encoding: quoted-printable

 

3D"EXPRES

3D"E=D0=DDT=DDMLER=DDM=DDZ

 

3DSlayt1.JPG3DSlayt2.JPG3DSlayt3.JPG3DSlayt4.JPG

 

 

NOT: =

 

 KAYSER=DD= DI=DEINA DA KATILIM SERT=DDF=DDKASI,E=D0=DDT=DDM CD S=DD VE UZMANLIK = KARTI ADRES=DDN=DDZE KARGO =DDLE = YOLLANMAKTADIR. 

 KATILMAK = =DDSTEMEN=DDZ DURUMDA GARANT=DD BANKASI KAYSER=DD =DEUBES=DD = 421-6678098 CEO E=D0=DDT=DDM DANI=DEMANLIK F=DDRMAMIZA = =DCCRET=DDN YATIRILMASI GEREKMEKTED=DDR.

 IBAN NO = TR72 0006 2000 4210 0006 6780 98 =DDLKAY RIZVAN/DEM=DDRPARMAK = ADINA

 

 

CEO = E=D0=DDT=DDM&DANI=DEMANLIK<= /span>

 <= /span>

TEL: 0 352 231 31 = 67<= /span>

GSM:0 535 557 34 = 18<= /span>

 <= /span>

ADRES:SAHAB=DDYE MAH. = =DDSTASYON CAD. FAZLIO=D0LU =DD=DEMERKEZ=DD NO:110 = KOCAS=DDNAN-KAYSER=DD<= /span>

 <= /span>

ceoint@hotmail.com = <= /span>

 <= /span>

www.ceoint.com<= /span>

 

 

 

 

------=_NextPart_001_0FD6_01CC27B9.3CEA41C0-- ------=_NextPart_000_0FD5_01CC27B9.3CEA41C0 Content-Type: image/jpeg; name="image001.jpg" Content-Transfer-Encoding: base64 Content-ID: /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCALQA8ADASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwC1UkP3 6iqSE/PXzZ88izRRRVFhRRRRYBaSiiiwD4xmRRWwnAArKtRunrUJwRTXcuJsaS4WcD1Fbco3RsPa uWtJ/LkVh2NdRDIJYgwOcivVw0k48p6VBpx5Tl71CHYVmsMGuj1W1IYuo4NYckWD0rz61PllY46s bOxCtW4KrhCDVhBtjJ9qyitSEXtEbdqD+mKz9Z4vZPrWj4eQ5llPasvUm8y7dh0Jrsn/AAUjeX8N Iy5M7uKaFPWpWTmnLH6DNcPLc5LajFQn6Vbto/mAAyantNNnuSNqkD1Nb1rYWunp5kzAt710UqLe rN6dJvck0i0eMeY4xntWrWSdWDyBIxgZrURtyBvWvVouNrI9CnypWRga6xVzmuSunO412niCDdFv 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 FIYtFFFIBaKKBQM//9k= ------=_NextPart_000_0FD5_01CC27B9.3CEA41C0 Content-Type: image/jpeg; name="image002.jpg" Content-Transfer-Encoding: base64 Content-ID: /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCALQA8ADASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2aiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiikoAWikyKTeBQA6iozKo7003CjuKAJ qKrm6QdxTftkf94UAWqKqi8Q96cLpT2P5UXAsUVB9pX3/KlFwpoAmoqMTKe9KJAaAH0Um4UUALRR RQAUUUUAFFFFABRRSUALSZpCaY74oAkLAd6YZVHeqc1xtFZlzqJXPNAG210i/wAQqJtRiX+IVwWv eKhpkYGC8r/dUH+dcfc+KtUu2JknKKf4I+BTA9mk1q2j+9Kg+pqE+JbBTg3Cfga8XXV2zlySffmr EetKB96gD1//AISaxPSXP4U9fEdk38Z/75NeSx65H3lAq3FrSHpKv50AeqLrtk3/AC1/Q1Mmq2j9 Jk/E15hHq+Rw4/OrUernj5qAPTEuoXHyyKfoakDg9DXnMerj1FXIdZZcbZWX6NSA7vIork4fEMy/ 8tAw/wBoVoQeI4mx5ybfdeRQBu0VWt72C5XdFIrj2PSrAINAC0UUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABSUtIaAEJpjOKcelV5M4oAR59ueapy34XPNNuSwFY927DNAi7JqjF tq5JPQCrMNrdTANM4iB7dTWVoMkX9pN5pG8jCZ9a6MtzXFicS6TsjSMbjEsoE67nP+0amWOJfuxq Pwpm6l3VwPFvqy+QmBUdAPypQwqDdRvo+tByE+6lyKr76XfVrFoXITfKewo2r6CofMpRIKtYuPcO Ql2r2JFLgjo1R7/ejfWyxK7i5SQMw7ZpfM9Rio91LuB61qsSieUmDA0VBn0OKcJCODW8KsZbCsya imhs0taCFpKWigBpFRuuampMUAZdzESDisS9gfnrXWNEGFVZrJX7UAeU+KNGuL1FmtxmWLqn94Vx Ts0blJFKOvVWGCK94udGD5wtc/qvhG3vlInt1c9m6MPxoA8l80UeaK62/wDh3KpJs7hl9FkGf1rn 7rwrrloTmzMqjvGc0AUvMpN4qCaG6tzia2mjI/vIRUPnj1oAvCZlPDkfQ1Kmo3Mf3Z2/Hmszzx60 ecPWgDcj166j+8Ff9Kuw+JVPEgZD+YrlvOHrR5woA7uDXEcfLID+NXYtY/2v1rzcT7TkHBqxFqky 4AYt6AdaAsemQ6yyOHSQow6EGuy8O6//AGpG0cmPOjHJHQivI9G03xDq7gWunTBCf9ZKNij8TXqv hbw42iW7NNL51zIPnYfdHsKAOmVsin1GgOKkFAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR 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 KACiiigAooooAKKKKACiiigAooooAKKKKACs/W9Es9f01rG9VthIZWU4ZGHQj8z+daFFJpNWZcJy pyU4OzRzEPhK/a0Nhf8AiO7ubDAUQLEsbFB/Cz8sRjA7V0NpaW9jax2trEsUMYwiKOAKmoqYwjHY 1rYmrW0m9N9Ekr97K2vmFFFFWc4UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACUhNLikNACZxSFq CDSFTQA0tTSxpxWk2GgBhY00sal8uk8unYVyEk00k+tWPK9qPK9qpJENy6FbJ96bufsKt+V7UeV7 VXukPnfUqZk/yKT9561c8r2o8r2p8yFyy7lLEn940Yk/vGrvle1Hle1PmQuR9yliT+8aX97/AHjV zyvajyvajmQcj7lQNMO/6U4Syj0NWfK9qPK9qV49hqMu5AJ37r+VSCf1BFP8r2o8r2qfdKXMCyqe 9SBqj8r2pRGR0zU2Rab6kuaUGmDcPenA1JSY6lpKWgYUUUUAFFFFABRRSUALRTDIAcc0eYvv+VAD 6KZ5i+/5UeYvv+VAD6KZ5i+/5UeYvv8AlQA+imeYvv8AlTgc0ALRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRSUhYCgB1FM3j3o3j3pXCw+imbx70bx70XCw+ imbx70bx707hYfRSA55paACiiigAooooAKKKKACiiigAooooAKKKKACiiigAopCwFJvHvQA6imbx RvHvSuFh9FM3j3o3j3ouA+imbx70bx70wH0U0NnsaWgBaKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigBKMUtFACYoxS0UAJijFLRQAmKMUtFACYoxS0UAJijFLRQAmKMU tFACYoxS0UAJijFLRQAmKMUtFACYopaKAExRilooAKKKrXyXzwY0+e3hmBzmeFpFIweMBlI5xzk/ SgCzRXlWifEjxTr+rwaZa22kJNPu2tKkoUYUsc4YnoPStXxD4j8eeG7QXl1Y6NNbg4aW3WVghPAz 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 DgwpQaSiqMxxXPIpvIOVOD60oODThtb2NAyzb3gOEl4Pr61b61kshHUVJFdSQjH3l9KxlTvrE2jV 6M06KihuI5lypwe4NS1i01ubp32CiiikMKKKKACiiigDL8QWN3qmnSafbrAEuEZXmkkYNEf4WVQP mIPPJGMDrV+1ha3tIYGleZoo1QyP95yBjJ9zUtFA76WCiiigQUUUUAFFFFABRRRQAUUUUAFFRSzx wjLt+FVHnluTsiBVTVxg2RKaRLcXgU7Ivmb+VMhtWkbzJjnNSwWixcnlqfNcLEMDk1V7aQIavrMc 7pEnYY7VQmmaVvamySNI2SaZWkIWMpzcgoopCcdOT6VqQBPYck1ftLbyxvf7xptpa7f3kgyx6Vcr nqT6I6KcLasKKKKxNgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBOn Jrk9U1S08YWGp6FoWriG/hGCRwJB3APdexI6fTr0moWUeo2E9lMzrHOhRjGxVgD6EV5xo3gOPwpq 0+ua1qIisdPbfA0bFWl9M45742jqeOnWXc1pqOrb16B4D0bUfCkV7rWuXLabYxgo1u//AC1YHG7H 14GOT24695YX9j4i02O/0+UOj/gVPcEdjXG3d3p3xU0iW1tZpLLUbN2khglf5XXoCQODkY56qT3B 52vAXhB/C+nvJdSs15cgGVFb5E9AB0J96INxehVVKSbnv2NVgyNscYP864eHX7C/8XalYa8USGJh Daw3A/dHBO4kHgknaQT26V6XLCky4cfjXn2u+D9P8UtNf20j21zHNJbvJtBDNGxU7hn24OehGfSu hzckrbnLThGLfNt37FjWdBBl0270t5Y4obuAy20DHynTzF52Dj5eufQH0pfF/i2Dw9ZmKFlk1CVf 3UY52f7Te3p6/nXGxHxB4B1G3FxMX06SQBtpLxMM84H8LY57fjTPibBDD4miMUSRmS1V32qBube/ J9TwOaiU7RbSszaFFSqRUnda2PUF13Sha/aTqVmbff5fm+eu3djO3OcZxzipY9Q0y4tHu4dQtmt4 zh5VmUopxnBOcDrXNeNLK0sfA2oRWlrDboWjYrFGEBPmIM4HfisPwTodrr3gu8tLro123lvjJjbY nzCtHKSlyo540oOnzt6Xsei5TyhcJKhjI3CQMNpHrmm2WvWk8jQw3tvdMn3lilVmX6gGuRv9LOgJ okr68ttp+ln50mG4zNkk4XuSMgDsOlc58RNQkXxVZahaI9rJ9kSRCcB/vvgn/D06+lTOo0veRdKi pO0Xuel+JPGGn+HdMNxKwe5cEQW4PzOff0Hqf61a8N6zBrOjWsy3lvcXX2eJrlYnUmN2XJBA+7zn g+led/F6zgt5tLmjiRZJhKHcKAzY2Yye+MmtpXPhv4cDU9Nt44J5bCFnkiiUMzMoAYnHOCxPPvWW 8nbZGyS9nF9WdtJqdhFdLaSX1slw/wB2FpVDt9BnJpNUkii0y4ae9SyQxlftDuFEZPAOTxnJFeQ6 FFe6t4A1WwttOmu7m6vA5uTJGACNhOSzBs43dj97613Xn3K/DS5ttSVkvI9MmSQOwY5CMAcgnOQA aEpNXsOUYxdr9RngKzi0XTdQ83xHaakiv5rtDcB0gXk7mPYnknPHH1NReCNNSy13U5x4otdV+05c Qwzq7EZHzsB0I4HHHP0AxfgwR/xOQcc+Rx/38rM+D/8AyNl1/wBeL/8AocdZp7G0o6z17DPDEUcH xjaGGNY447y7VEUYCgLIAAOwr1mXWtKt7z7HNqdnFc5C+S86h8noNpOecj868j0i6jsvi9dXM2/y 4ry8ZtiFjjbJ0A5Nd34W8S6T4t1i4u1jMd3bJsgilA3CI4yw9yevpx68kWKtFtp+R1rKrqUdQysM EEZBFeOfEPwxH4b1m31awto/sU8gJhZAY0kHO3H90gZx9a9lrO17R7fX9GuNNuR8ky/Kw6ow5B/A 1UldGVKfJK/Qg0zUtM1LwrFeRQxiwe3w1uEBVQBgx7Rx6jFJoPh3T9HEl1BYQW91cktIY1HyAkHY PQDA6cEjNed/Ca9ubjUptHklzZIhuxGR/GpVR+HzA/VR759T1K6ax0u7u1Qu0EDyBVGSxVScD8qE 7q46kXCTijlYtGfR/Hc+t6h4jhjtrnKx28swVnznCYPGF7Y5/XM3hjw3eeHdR1TVNQ1sXNrcAuCz YGOvmOTwCAMccY/TnfhTOdSvNeu9Qk8+eYRB3k5LBt+R9OBxUHwl1uaOa80qd5HthH5sYPKxnOCB 6ZznHsaS1aLmmlLXax6Ta63pN87R2mqWdw6KXZYrhHKqO5wenI5qa1v7K+Dmzu4Ljy22v5MgfafQ 46GvFvhnbwXPiO4jubdbiP7IxMT8q3zp1HQj2NWfCxktvincWVpiGKW4uYjGvACrvIGPbaKabdm+ pMqSTkk9Urnr15qNnYRNLdXMUKL1MjhR+ZqsNTW8hEtpIjQkbvMVgRj1z0rzFdQuL34tok0E92lp NLFFbqVB+VGGRuIHUbuT/QV0nhPQ9Rstb1xdV0sRaVqDtLHFM8Ui/fJClAx5wfp8v0rSMknormU6 TUbt20uLYeNNMv8AxZLZvfQRWMFuxNzNIqLLLuUAKT2A3fXnsM0eMrC2vdesJI/FVnphsiPNgkuF V0PXcB/eIIHPGP14r4aWtpd+IriO8tILqMWbEJPGHUHenOD36/nUvxUcv4nt2bqbNf8A0N6hylKH MzaNOEKyhHex6pqHiHTrKXybnULW2cruCzTKhI9cE9ODVeXU7GNYnlvrdBPgxFpVAkz028859q4P 4sf8wn/tt/7JVfxXp9pD8P8ARbtLdBcOIA02MuQYicZ644HHbFbc/K2ktjljRU4wk3uejXN7a2UQ lurmGCM/xyyBR+ZqVWV1DKwZTyCDkGvN57aG6+E66jcxrNdqAqTyDLoBNtAB7DAxgVufC5p7vwy8 WcrDcuin0GFb+bGrVS8kn2uRLD2g5J7Ox1vJO1RkmrttaCP55OX/AJVLBbJCOBlvWpqmdS+iCFO2 rCiiisTUKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqOsaRZ 65p0lhfReZFJ+ansQexFXqKBp21RyfhDwFZ+F5JLqSQXV4xISUrjYnYAepHU11lFFJKw5ScndhXK aT4a1nR9U1K9h1G2lgv7qWdrKSNto3MSpD54bGM/KR9etdXRRYFJpWObvfDtxrL2r6ilvDFbTCcW 8EjSb3GQpLFV4GTxjn19ee8a+Cp/EF1DdW08cNzFH5ZWbO1lzkcjOOp7V6LTJIklGHUGtFJNWkRe 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 W1ZVG4Xqjd3xsf8AwFXPB+ox6R8KINQkQOtvFO+wtt3kSPhc9snA/GsXW1sjpWGXIpM3dPlsdU3m 01G2uvLxvFvMr7c9M4PHQ/lWpHbxxfdX8TWbpuhQaTrep39tHFDDfJEWReMSKX3HHQAhl/HP4uvf EukafGk1zcskLkBZxDI0XJx98KVH51DqSe41Tin7qNWiqc2rWMGlNqrXAezVN5miUyDb6/KCSPX0 rPsvGfh3ULW5urfU4/JtdvnPIjRhd2dv3gM5welRdFcrfQ0r3VNP03Z9vv7a08zOzz5lTdjrjJ56 j86ltrq3vbdbi1niuIXztkicMrYODgjjqK88+JuqWOs+B7O90+4WeBr9QHAI52PkYPIra8A3UVj8 OLC5n8zy4xKW8uNpGx5rfwqCT+VK+ti3TtDm63OuorGbxboq6R/a7XEy2O8J5xtZQMnofu5x2z0z xnNOtvFOjXuj3Gr2120tlbMVlkWCTKkAE/LtzgBgc4x+Rp3RHLLsa9FYNr438NXltPcw6rH5VuVE jSIyYLZwBuAz0PSr2ka7pevQNPpl4lwinDYBUr9QQCKLoHGS3RoVQtte0a9uFt7XVrG4mfO2OK4R mbAycAHPQUXGt6bbajHp0l0DdyDIhRWdgMZyQoOB7nFeU+GyrfGeRlIKm+uyCOhG2Sk3YuFPmTb6 HstFQT3kFsypLJh2BKxqCzsB1wo5NUtP8R6Tqd29na3Y+1R/egljaKQd/uuAe/pVGdnuS3OvaNZX DW91q1jbzJjdHLcIrLkZGQTnoav1418X/wDkbLb/AK8U/wDQ5K9O1nxTo3h+aOLVLtrdpV3J+4kY MO+CqkZ9uvI9alPVmkqdlFrqXb3VNP03Z9vv7a08zOzz5lTdjrjJ56j86ltrq3vbdbi1niuIXztk icMrYODgjjqK4L4rXMN74J0+7t23wz3cckb4IyrRuQcHkcVqeAbqKx+HFhcz+Z5cYlLeXG0jY81v 4VBJ/Ki+tgdP3ObzOuoqlperWes2v2qxeSSEnAd4XjDe43AZHuKu1Rk1bcKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACmuiSxtHIoZGBDKRkEHtT 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 Oq6hJp0UrxXsWd9vPGUcY69ev4UrobhJdDZooopkhRXLab4/0zUvEQ0JLO+hvN7xsJUTarICWBKu f7p6V1NJO5UouO4UVy1x4/0y18Sjw/PZ3yXbTpADsQpliNrZD5wQQemfbtXU0XBxa3CiiimSFFFF ABRWbr+tweHtKfUrmCeaCNlD+QFJUE4BwxHGSBx61F4b8SWfijT5L6xinjjjlMREygHIAPYnj5hS v0K5Xa/Q16KKKZIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFed+MfiRcaJrsen2FruFuwNyZlI8 wf3V9B/tf06+iVk6v4Y0jXbm2uNQtFlktm3Kem4f3W9RnnH/ANek79C6bin7yOaXwl4c125g8X/Z 50tpIjcS2RhP71uudo5PfIGQ3B7nOdo3xTkvfFH2aWzK6dOwjt0jXdJGexOOue4HTt70NW8c+Jbb xysMNnJFHA/kppxH+tUnqcdzgEEdPfnPoVh4a0m21aTW4rAQXtygLg4Oxj1wBwCe5HX8TmVrsby9 1e/r2NmuX+JP/Ig6l/2y/wDRqV1Fcv8AEn/kQdS/7Zf+jUqnsYU/jXqc78Lda0rTfDFzFfalaWsh vGYJNMqMRsQZAJzjg/lVey0u78S/E1vEWnK6aXHOri6I2rLsUKQueuSCPpmpPh9odr4h+HmoafdD 5XvXKOOqMI48MKp+CNbu/CHiGbwzrRKQySYQk/LG/Zgf7rcfp71Ha51PeTjud5r/AIsstCu7SwKN cX146rFAhA6nALHsM8UaX4ojvdeutBu7b7LqNqu9lV/MjdeDlWwD0YdQOteeeO1ms/idaXdzO8Nu z28kcwA/dqpAJGQQSCCeQetd3Z+F9OtvFEeu/wBq3l1fzofvtHtkXaFyQiDgDHPHOKd22YuEVFN9 UcD4d/5LTN/1/Xn8pK9Nn1PVE15dPt9MgmgKCRrg3ZUxrnHzLsPOc4GecdRXlmkLct8XrpbOSOO4 N5eeW0qllB2ydQCK3PBvi7UbHxPdaF4lcmeebAmkABEnAC9PukYx+GOtKLsa1YX17IyfEX/JaYf+ v6z/AJR16dceIrKLXE0OJ0k1B4zII2baoHXBODzjnABOOa8x8Rf8lph/6/rP+UddH4n1/T7DxxaW lhp9s2sStHFJfSjIgDkAcdztPXsCOtCdrinHmUV5Gta+OoV8Tv4d1WzFleB1RGSbzY3LAFRuwpBO fSqvi34hSeFdYFg+kLcq8SypILraSCSORsODlT3Pb6Vxmtps+MdunmtKVvrQF2IyxxHnOOOtSfGD /kbLX/rxT/0OShydmONKLktN0dpr3j//AIR6+tY7vRblbO5zsuGkUFgMZITk9xwcH2p/iDx2NEtb a+i0me6sLh1VbrzFRWyCflHJPAPUAH1rnPjR/wAwb/tv/wC06PHH/JKPD3/bt/6Iaht6kxhFqLtu bvjXUYNX+F11qFtu8q4SF1DdR+9Tg+46VnfC6+ttN8Dahe3cgiggvHZ2POB5cdU/+aCf5/5+qXwF c6fafDPVp9ViE1ml0/mRkZ3/ACR4H1Jxii+tx8tqbj5nUah4xe28PJ4htbCO6007SzfadsigsF+7 tIzk8jdViHxZbX/hO41/TIvPW3jZ3gkfyypUZZSQDg45Hrx65rhJ9U/tj4YatPFDDYWVvNHBb2UP QfPGxZieWPJ9O9WvA/8AySjxD/28/wDohafM7kumlG/mbeg/EU63p+pXS6LMGsEV/KhmEjODuyeQ uMbfc81t+FfEcfijRhqKWz237wxtGx3YIx0OBkc1xHwYAP8AbOR/zw/9qV6bDBDbRCKCJIoxnCIo UD8BTjdq5FVRjJxSJKKKKoxCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKz6fZyX8d+9tG11EhRJSvzKD1 Gas0UUAFZmreHtN1wbdRimmTAHli5lRDg5GVVgCffGa06KBptaox9K8K6Pocm/TYJrfkkot1KUY4 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 g3zkY2Ae9NazlDYABHrmgWkxIyAB9aLUwvUIWJY5Y5NCqWOFGTVtbABvmfI9KsxxJEMKuKTqJbDV KT3Ira3EQyeWNWKKKwbbd2dCSSsgooopDCiiigCtff6n8aoVpzw+cm3diq/2D/pp+lbwmlGzOepC TldFZPvr9a1R0qoLHDA+Z09qt1NSSexdOLje4tFFFZGoUUUUAFFFFABVe9/1H41YqOeLzo9ucVUX ZkyV00ZdKPvD61a+wf8ATT9KX7ByD5nT2ro9pE5vZy7Ftfuj6UtIBgAUtcp1hRRRQBHLEJUKms2S NonKtWtUU0CzLg9exrSE+XcynDm1RmVNbztEwU/dP6VL9g/6afpR9g/6afpWrnBqzMlCad0XAQRk cilqKGIxLtLbqlrne50q9tQooopDIbo3C2zm0ijlm/hSWQxqeecsASOPaqPh/SZNHsJLeW483zJ3 lVRnbCGOQi552j3961KKB30sFFFFAgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAopCQoyTgVGLiM9GoAloqPz4/71 HnR/3qAJKKj8+P8AvU03MQ6tQBNRSKyuoZSCD3FLQAUUUUAFFFFABRRRQAUUUhIAyegoAWioPtkR PDZpRcxn+KgCaiovtEf96j7RH/eoAloqL7RF/ep6OrrlTkUAOooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqF7iNHKk8ipqq3dpFcjJco/ZhQA/wC1 xetJ9sj9ax7jTNRj5iZJh7HB/WsmS9uo2KvE4I68UAdab2MdxTft8ftXIHUp/wDnlJ+VSwS3ly2F QoD3c4FAHTnUUXngirkbiSNXXowyKxLPSd7K1zdq/wDsR9/xrcVQqhVGAOgFAC0UUwzRBipkUEdi aAH0U0Op6MD9DTqACikJAGScCoJL+1i+9Mv50ASyRrLGUboRWJdWGoW5Jg/fp7HDD8KtSayjNst0 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 ------=_NextPart_000_0FD5_01CC27B9.3CEA41C0 Content-Type: image/jpeg; name="image003.jpg" Content-Transfer-Encoding: base64 Content-ID: /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCALQA8ADASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2aiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApkqGSMqrshPRl6in0Ubgc2+s6hZ3Lw TeW7IcZK4z71Zh8QFj+8gH/ATUPiW1KvHeKOD8j/ANKx45ADzyK8edarSqONzncpRdjsLa+guuI3 w3908GrNcojO0QaFgwTkgDDL/wDWrZ0vUftQ8mU/vFHB/vCu6liFJ8rNIzvozSopCQBknAFZx1aO W9jt4DlS2Gf1+lbynGO5baRpUUUVYwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKAI54I7mF4ZV3I4wRXHajp02mTYcFoifkk7H2PvXa0ySNJozHIgdG6 gjINc2Iw8ay7MiUOY5C2imCLcRNjbyWz0qxHMongvYcKPMCyqOin/A1dufC8DsTbTyQg/wAB+ZaW 28OmGKZJLneJE27QuBnsa41QqppKP49TJQkmO128bclnG2Nw3OfasnTGMmqQKufv5/CoXlnmE29W aaOMREAZPDAfyrZ8P6VJbA3Vyu2RhhEPVR6moTlXrJrYNZSN2iqd9qtlpy5uZgrHog5Y/hWFP43g Q4hs3cdizhf8a9KdenB2kzWU4x3Z1NFca/jyQHaunDcegMn/ANaupsXupLZZLyOOKRhnYhJ2+xPr ThWhU+EI1Iy2LNFFFalhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRWT4g8Saf4btUnvmcmVsRxxgF3x1wCRwM1esL+21OxivbSQSQTLlGH+eueKnmV+W+pq6 NRU1VcXyvRPoWKKKKoyCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAoqhrOs2eg6c19fOVjU7VVRlnbsAPXg0aNrNnr2nLfWLlo2O 1lYYZG7gj15FTzK/LfU19jU9n7XlfLe1+ly/RRRVGQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR 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 gkA8gA9OM4561o0UVJQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFNZ1RSzsFA7k4rkvEfhDXNe1dp4PFt5plkUVRbWykcjqSdw5 NZkfwb0WXnVNW1fUW7+dc8H9M/rQB1l54q8PaeD9r1uwhI7NcLn8s1h3nxZ8F2nH9ridvSCJ3/pi pbP4W+C7IDZocMpHedmk/ma3rTQtIsABZ6XZ2+OnlwKp/QUAcefizaXTBdJ8N65qJPQpbYU/jzS/ 8Jb48vmxp/gT7Op6Pe3YX9ODXe0tAHj2ufDfxZ4xuBcalaeHtLkzkyWyv5jf7xHBpLT4AxkL/aHi GR8cbYYMY+hJP8q9iooA4Cy+DXhu1txBNc6lcxjnY90VT8lArYs/hv4OsseX4ftHI7zAyf8AoRNd PXMeM/Ello1va2dxqcdg9/MI2lZsNHFyXYenA2g9iwoAz9S17TfD3i3StKszodnZ3Ak+0syhHjK4 wARgAnPf3rtlIZQwOQeQR3ryrxpa/DnxLZWYbxPa2P2FWWL7K4kypxkFRkk5HXrVn4XeJWstLttA 1db1GeZ0066uIWSO4jHRVJ79cA9qAPTaKKKACiiigAooooASmSwxTxmOaNZEPVWGRUlFAHP3ng/T p8tb77Vz/wA8zlfyNYl34W1a0y0Oy6Qf3DhvyNd3SUAeYSSy28nl3ETxOP4XXFOW6HrXpE9tBcoU niSVP7rqDXJeI9A060CPaB4JHJ+VTlcfQ0AZaXIxnNTLcD1rJaG4iPDKw/KozNOvVTQBui4HrS/a B61g/bJB1Bo+3sOxoA3WnB4zUZkGetY328+9KL5j0BoA2RKAOtRyXKr1NZouJn4AxUkcJZsucmgC 9G287u1SgVHGu0VMtAHSeGW/0GWP+7Jn8xWzgVg+GWwbhPXBreoAWiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArh77wX rKa5fanp2pafcLfMGkh1Sy83aB0UODnaOwruKKAOIj8NeJ1cGJPC1if+e1vprM4+gJArS07wbHHq UWq6xqd3rN/CcwvcELFCfVI1+UH35NdLRQAlLRRQAUUUUAFFFFAH/9k= ------=_NextPart_000_0FD5_01CC27B9.3CEA41C0 Content-Type: image/jpeg; name="image004.jpg" Content-Transfer-Encoding: base64 Content-ID: /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCALQA8ADASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDl6KSi voTzBacp7UyloAkopAcilpki0UUUALS0lLQIXGab0pwoIz9aAG0UUUALRRS0AJRS0UAFFLRigQU4 UlL/AA0xCUoopcUAFLSYpwFAgFOFGKWgQCnCkFOFIQopwFIKcKBCinCkpRSEKKcKQCnCkAopwpMU 4UhCilpBSjrQA4UtNFOFIBaWkpegpAOpabTh70AOUCpQQilj0AqNRTbl8KEB68mp3GQlixJPU80m aTrRViHUUmaM0ALS02loAXNLTc0ZoAdRSUZpAKKWkzSZoAd2oFJRQAtBpKKAF9qKTNGaAFopM0Zo AXPvRSUUAFLSUlAC5oz6UUUALSUlLQAuc0UmaKAHUvWm0CgB1FJRQA6ikpTSGL2ozSZpaAFopKWk AVIkeeT0oSPu35VJSuMXtxRmkJpKQC5pCaQmkJpgLmkzSGkzQIKKSimAUhopM0AHeko7UUwE7UGi k96AAmkNFNNMQUnXgUGnD5Bn+I9PYUAIx2jaOvc1GaUmmk0wA000pNNNMBDSUtNNAAeuKMYpQMUx 27CmMRm7Uyg0hpjENIaU02mBk0UlFSdItFJS0AKDipKip6ntTQh1LSUtMQtFFFAhacKbS0CFIz9a bTxQRn60wG0UdKKQBS0UUAFLiilpiClNAFB60AJS0UuKAFFLQKUUCAU4UgFOFIQCnAUgpwoEKKcK QClFIQopwpAKUUCHClFIKcKQDhSikFOpCAUoopRQAtL0pKWkAtKKSlFIBacvWmjrT1oGSIOcnpVS R/MkLdj0qxM2yHjq3FVKEAtGaSjNMQ6jNJmigB2aKSigBaWkBooAWjNJmigB1FJRQAtFJmigBeKM 0lFAC5opO9FAC0UlLQAZopKKAFzRmkooAXtRmkpKAHUU2loAXNGaTNFADqXPNNzSikAtLTaWgB1G aSikA4UopM0qqWOB/wDqoGAyTwKmSMLyev8AKlVAg9/WlqWxi9aSikzQAUE0maQmgBTSE0maKYgp M9qKTNAC5pKKSgANIc0ZpCaYBRmkooAKQmg0maYgNNzQaVRuPXAHWgBVAA3N0HQetMYkkknk0rtk +gHQelMNMBCaSikNMANNJpTTe9ABSgY570oGPrTXbFACO2OBURoJpDVDENJSmmmgYGkpaAKYGPRS UVJ1C0UCigBaUUlFMRKDkUtRqcGpKYhaKKWgQUtJS0Ei04U0UopiFIz9abinilK7h70AR0tGMcUt ABS0lLQAoFJS9jQKBBS0UooAAKcBSCnAUCAClAopaQhQKcKSnCgQopRQBSikAopRSCnCkIUU4V23 hTwrpt9o6318jTtMTtXcVCAEjseTx/KsTxRoa6JqQSEsbeZd0e48j1H4f1rGNaEpuC3NZUZRgpvY xhS0lLWpiKKUUgpaQC0opKWgBaWkpaQCjrUqDPFRqO9SM3lRM/tx9aTGV7l90uB0XgVFmkozViFo zSUA0AOzRSZooAdmim0uaAHUZptLSAWikozQA6im0uaAFozSUUALmikooAWikzRQAuaKSjNAC5op KKAFozSZozQAtJSUUAOozTQaUGgBc0tNFL1oAWlpKBQA6ikopAOFKKSpY4i3LDAoGIiM59vWrCqF GB+NHAGAMCkzUDFzSdKSigAzSUewpM0CCiikpgB6UZopM0AFFFJQAE0lFJTAPpSZoNJQAE0maCaT NMQpNNzQaSgBQCzADqaVyANq9PX1pT+7XH8R6+3tUZNAwJpuaDSZpiEpKXNNNMAP0pwGOe9AGOtI 7YHvQAjtt+tQk0pPPNNpjA000tJTGJRilApThRzQAgAprP2X86RmLfSm0wMmiiioOoKWkpaYBS0l LQIWnqc8UylBxTAlpaQHIpaZAtFFLQIUUopBS0xC0opKUUAKV3D3pmMHBqQUpAYc9fWgRHSigjBw aUUAB6CgUHrQKAFpRRSigQYpwpBT0RpHVEUu7HCqBkk+gFIQlLXYaR8Pbu4QTapMLSPr5a4L49z0 H61dc+BtE4Cf2hMq4+U+bu9+uyud4iN7R19DZUZWvLT1OEFSwwSzttiieRsZwikmvTfDmr2mrTMm n6KttaxD5pSFUBuwAA5Pfr/OtjVtSi0fS5ryQAiNflXpubsPzrGWKkpcvLr6mkcOnHm5tDxuSGSC QxzRtG46q64I/A0gqW7upb67lup23SSsWY/57VGK7Fe2pyPyACnCkApwoEd38Pb8tDc6e7Z2ESxg nseD+GcfnUfxFxnTvX95/wCy1F8PLYm9u7rBwkYjB7HJz/7KPzqv48vRcaylqpBW2jweP4m5P6ba 4FH/AGnT+tDtcv8AZtTmRXU6Z4Fub2yW4uboWrOMrGY9xx2zyMfSuWFerJ4k0drMXBv4VG3JQuN4 9tvWtMROcUuQyw8ISb5zzPUbGTTL+WzmILxHGR0PGQfyNV6u6zqA1TVri9VCiykbQeoAAA/QVSro jflV9zCVru2wopRSU4UyQpRSU5RSAegzUV4/IjB+7yfrVhMKC7dFGTWe7l2LHqTmhbjDNFJmirEL Rmm0uaAHZoBpuaXNIBaXNNzRQA7NFJRmgB1GabmlzQAtGaTNGaAFzS5puaKAHA0ZpuaXNAC5ozSU ZoAXNFJRmgBaSt/QPClxrMYuZJBBa5xuxlnwecD8+a7ax8NaRYKojs0kcYPmSje2fXnp+Fc1TEQg 7bs6aeHnNX2R5XmkzXtIUKMKAB6CobiztrtClxbxyqezqDWP1xfym31P+8eOA0tdn4i8FokLXeko cry9vnOR6r/h+XoeLrrp1I1FeJyVKcqbswpaSitDMWlrp/DnhBtRiW81DdFbtykY4aQevsP1Ndta aXYWCbbW0ii4AJC8n6nqa5amJjB2Wp1U8NKau9DyPrRXs2ARg1RvdF03UFIubSNmIxvA2sPxHNZL GLqjR4N9GeUClrc1/wAMT6RIskBaa1c4D45U+h/xrOihEfJ5b+VdcZxkro5JQcXZjIoP4n/KpiaC a6jSvB7SKs2oyFQeREnX8T/h+dZzqRgryKhTlN2ict3pK9OtdLsLMD7PaRIQMbtuW/M81axxiuZ4 tdEdSwj6s8m7UhNeoXel2N8pW4tY34+9jBH49a4vxB4ck0pvtEBaS1Y9T1jPofb3/wAnWniIzdtj Kph5QV90YVFGaSug5gpa1dE0CfWXLKwigjOHc8n6AetdlZeG9LsgNtssrjHzy/Mc/wAh+FYVK8YO 3U3p0JzV+h5vSV64qqowqgD2FNlginQpLEkikYIZQQax+t+Rv9T/ALx5LSHrXdax4PtrlDLp4FvM Odn8Le3tXCurRuUdSrKcEMMEGumnUjUWhy1KUqb1EpDQaM1qZiGkJopCaYgNJmikzTADTlGwbz1P 3f8AGkRQfmb7o/WkZixyaQCE5ppNBpKYBmkopKYAaULjk0oGOT1pGbAoARmCioiSeaGOTzTaYwNJ RRimAmKUCnYAGTUbPngdKAFZgOByajJycmikpjCkpaSgZk0UUVB0hS0lLTAKWkpaBC0UUUwHocGp KhqVDkYpkscKUUlKKCRaWkpaYhRSikpRQIcKcKbSigQ/AYYNMKlTg04VIAGGDSFcgPWinMhX3HrS CmMKcKQUopAPhieeVIo1LPIwVVHUk9BXpWm6Zp3gjSDqOolZLxxgkDJz/cT+prG+HOkpc302pSrk W2Fi543kHJ/Afzql451R7/xBJAGBhtP3aAHIz/Efrnj8K5KjdWp7JbLc6IJU4e0e/Qqa34n1HXZC JpPKt8/LBGSF68Z/vHpyf0rOtLWW9u4raBd0krBFHuahrsfh1pwn1Oe+dci3TamR/E3cH2AP51rN xpU20tjKKdWaTO50nTIdI02KygHyxjlu7N3NcN4+1c3Wopp0Tfurbl/dyP6D+Zr0C7uUs7Oa5f7s MbOfoBmvFZZZLiZ5pW3SSMWZvUk5JrhwkeabmzrxUuWKghtOFJThXpHnABT1UswVQSScADvTRXX+ CdBFxN/at0o8mE/ugw+8w/i+g/n9KzqTUI8zLpwc5cqN7S4ovCnhYzXQxJjzJB3LngL/ACH6153c 3Et5dS3Mx3SSsWY+5ra8W69/a98IIGzaQEhCDw7d2/oP/r1gqpZgqglicAAcmsqEGk5y3ZpWmm1G OyCgVrQ+FtcnjDpp7hSMjeyqfyJBrOubWeyuXtrmMxyofmU9u9aqcW7JmLjJK7RHS0lFUSKKWtCz 8P6tfxCW3spGQ9GYhQfpkjNWD4S10cmwP4SIf61DqQWjaLVOb1SZkCnoK0G8N6zGCW0+bA5+XDfy qS10DVZ3wthOuOpkTZ/PFJ1I23Dkl2Mq7fZCIx1fk/SqfatnxDoF/pHl3F0YmjlO1fLYnbgdDkCs TNXBpxuhSi4uzFoqzY6deanN5VlbvM467RwPqeg/Gl1HS77SplivrdoWYZXJBBH1HFVzK9r6hyu1 7aFXNGaTNLTELRWnaeG9YvrUXVvYu8LchtyjP0BOTWYysjlGUqynBBGCDUqSeiY3FrVoXNGabS5q iR2aM1bstH1LUcG0s5ZVP8e3C/meKvHwdr4Gf7POP+uqZ/nUOcE7NlqEnqkY2aM0+5tp7OZobmF4 pB1Vxg1HmqJFzRmkzSqrO4RFLMxwAByTQIXPeitaLwprssIlXTpNpGcMyqfyJzWQQVO1hgjgg9qS lGWzKcZLdC5ozSZq1FpmozRiWKwuXjIyGWFiD+OKbaW4km9ivmjNNzS5oELRTaWgDvtA8RaZpfhW 3FxcAypvHkpy5O5iOO3Hc8Vjal441O7dltStpFn5doy5HuT/AExXM0tYLDwUnJ63N3Xm4qK0Lv8A bOqZz/aV3n189v8AGuo8M+MLia8jsdScSCU7Y5sAEN2B9c1xWaVWZGDKxVlOQRwQfWqnSjNWaJhV lB3TPa68y8ZWC2OvyNGuI7hRKABgAng/qM/jXpaEmNSepAzXDfEQj7XZDHzeW3P4ivPwraqWO/FJ Onc4+trwrpI1fV1SUEwQjzJOOGweF/H+QNYteh+ArTydGkuSBuuJTgjrtXgfruruxE+Sm2jioQ55 pM6WWSO3heWRgkcalmJ6ACvNdZ8V3+p3DCCaS2tgfkjRsE+7Edfp0/nXU+Ob1rbQxChINzIEJBx8 o5P8hXnIrnwtJNc7OjFVWnyImiuriGRpIp5EdjksrkEn612XhLxNc3NwNPvn8wFcRTN97PoT3+v8 81x8Fs0nzN8qfzq9E5t3RoflZCGUjsRXRVhGasctOpKDuj0+5toru2kt5lDJIMEGvM7y2ezvJbaT 70bFfr716bbzLcW8U6fdkQMPoRmuJ8Y24h1gShcCaMEnPUjj+QFcWGk1JxO3FRTipGCTzXe6j4q0 +zjHkuLmVhkKh4H1NcDSV1zpRm1focdOrKmnbqat54m1S8ODcGFT/DD8v69f1qrHrGpwyB0v7jI/ vSFh+R4qnSVShFK1iXOTd2zv/DfiA6sjwXAVbmMZ46OPWtqaJJ4XhkUMjqVYHuK888LOy+IrUKT8 24HB6jaa9Grzq8FCeh6WHm5w1PKLu3a0vJrZzkxOUzjGcHrUNafiMj/hILzA/j/oKzK9KLvFM8yS tJo6rwzrdhpWjzrcykSecWEaqSWyoxj8jVPUfF+oXhZLci1iPTZ98j3P+GKwKCahUYczkzT20+VR RK95cvIJHuJWcdGLkkVq6P4mvdPuVE8zz2xOHWQ7iB6g9fwrEpCatwjJWaIjOUXdM9fVgyhlOQRk GuD8bWa2+rJcqABcJlvdhwf0xXY6OrJo1krghhAgIPUfKK5fx8w82yXuFc/y/wAK8/D6VbHoYjWl dnImkopCa9Q8sCabmg0hNMAzSqu847dz6UgBY4HWnsQq7VPHc+tACO3YcAdBTCaCabQAGkoopgJT gMfWgDHJ60M20ZNACMwUVCTk5NKzFjmm00hgaSlxSgUwEAoJC/WkZx0X86jNACsxPWm0UlAwpKWk pjCkpaSgDJoooqDpClpKWmAUtJS0CFopKWmAtOBxzTaUUxEwORSio0ODipRQQwpaSlpiFp1NFOoE KKUUgpRQIcKeOAaYKd2pCHjBGDyDTHjK8jlf5U4VIppCK4pRUrw/xJ+VR0xnpfw2x/YFx6/amz/3 ytcr400xtP8AEU77cRXR85Dz1P3vxzn8xSeFPEx8PXEiyxtLazY3qp5UjoRnj/PtUvi7xJb+IZrb 7NBJHHbhuZMBmLY7An09e9ccYTjXb6M6ZThKil1Rzor034eQGLw+8px++nYj6AAfzBrzMCvVPApB 8LQAdnfP/fRoxj/diwv8Qm8ZTNB4WvCjYLBUz7FgD+ma8pFemePpRH4c2HP72dFGPxP9K80ApYNW p/MMW/fFFKKBWloei3GtXywRKRGpBmk7Iv8Aj6CuqUlFXZzJOTsi14a8Py63eguCtpEf3r9M/wCy Pf8AkPwra8W+IIooTommkLGg2SsnAAH8A/r+XrU/iDWrbQNPGi6ThZQu12U8xg98/wB41w1csE6s ueW3T/M6JtUo8kd+pf0jSLrWbsQWy8Dl5D91B713VnbaD4VRI57iEXRA3SOMuc+gGcCuWtfFcun6 Qtjp9pFbyfxzg7ix7nB7/nVbQLeTVPEdsJmeQ+Z5kjk5JC88n8APxoqRlO/M7JBTlGFlHVs9UrzP xlci48RzKAMQqsefXjJ/U4/CvSZZUgheWQhUjUsxPYDmvHrmdrm6muGGGlkLke5Oa58HG8nI3xcr RUSOui8HaNBql/JLcqHitgD5Z6MxzjPtweK5yun8E6rBYX81vcMI1uQoV2OAGGcD8cmuytzezfLu cdHl9oubY3J/HWmQXDxJDPKqHG9AuD9OelTW/jbRplzJJLAc9JIyf/Qc1z/izQNP0qFLm1lZXmkx 5JYEAYJyO+Bx+dc1GjSSKiKWZiAqgZJPpXPChSnG6udE69WErOx6UfF2jnAhnknc8KkcTZY+gyBW obpIrM3VyPs6Ku5vMI+Ue+O9c9oeh2/h+0OpamyicDvyIvYerf8A6h78n4o8RXGsXpiVmjtYzhYg ep9W9T/KsY0IzlaG3c2daUI3nv2E8U+I2127VYgUtYSfLB6t/tGrWieEHuIft+ryfYrNeSH+VmH4 /dH+feuXrQ1XXL/WWU3k2UQDbGvCjjrj1r0HBqKjDRHEpptynqz0zRb/AEJk+w6TPDiLI8tcgnHU 8/e+vNO8RaNHrelPAQPOT54WzjDY/keleS29xLa3CTwSGOWM7lZeoNevaFq0etaTFeKArH5ZFz91 h1H9foRXBWpOi1OLO2jVVVOEkeQOrRuyOpVlOCpGCDTc10vjvTFsda+0xqBHeAvgf3x97+h/GuZr 0oSU4qSOCcXCTiz2PQSD4f08j/n2j/8AQRXnPjFVTxVehQAMoePUopNd94SmM/hexcjGEKdf7rFf 6V514nuBc+JL+Rc4EpTn/Z+X+lcOGTVaX9dTsxDTpRMxVLsFVSWJwABkk13uheD7Wwtv7Q1vazKp YxORsjH+16n9Kr+A9AWT/icXK5Ckrbqemehb+g/H2qLx7rbS3Q0mFiI4sNMQfvN1A+gGD9fpWlSc qk/ZwfqZwgoQ9pP5E+ofELy5DFpdmhjXhZJs4P0UY4/Gtjw34sh113t5IvIuVG4KDkOO5B9fb/6+ PLqv6Jcvaa5ZToxBWZQfoTgj8iaqeFp8jstRQxE+bV6Hp+vaHb65YmKQBZkBMUvdT/ge4ryWSN4Z XikUq6MVYHsR1Fe3V5N4uiWHxRfIigAsGwPUqCf1NY4Obu4GuLgrKRV0rSbzWLr7PaR5I5Z24VB6 k13fhuPQrC/bTbJvtN6kZaW528cEZAPbr0Hpya5eXxFFa+HoNN0qMwSSJm7l/iLdCAff+RArS+HN ruury7Kn5EWNT25OT/IVpX5nBuWiM6PKppLVnc3M6WtrLcSHCRIXb6AZryCzs7zWL/yrdDLNKSzE cAepPoK9U1u2uL3SpbO2IV58Rlm6KpPzH8s1x2oa/a+HrY6VoAUyLxNdEZJb29T+grDDNpPlWrNs Sk2uZ6I2NH8MaVojRSajcQS3j4CiVgFDeig9T7+3auprx7TIpdU1y2ilLTNNMu8uckjPOSevGa9h qMTBxkuZ3ZeHkpJ2VkeW+MooIfE1ysAxuCs4AwAxAJ/Pr+NYeau63efb9au7oEFXlO0j+6OB+gFU a9OmmoJM82o05toXNFFFWQLRSUUgFq7pFkdR1a2tAMiSQBh/sjk/oDVL6V33gXRDb27apOuHmXbC CMEL3P48fgPesq1Tkg2a0Yc80jr6808b3S3PiJ0X/lhGsZPqeSf/AEKu81rVItH0yW6kI3AYjUn7 zdhXkkkrzSvLK253YszHuT1rjwcHdzOzFz0URter+GYVg8OWKKMAxB/xbn+teUV67oYxoOnj/p2j /wDQRWmM+FGeD+JnLfENt09gg5IVzj67f8K5qCz24ebr/d/xrrvGYX7ZasQNwjYA+nNcyTVUH+6S Mq/8RgWppNBNJmtjE9H0CUS6FaMDnEe38uP6VheOl+ayb1Dj/wBBrW8KnPh629i//oRrP8cf8eNr /wBdD/KvOp6V/mz0qmtD5I4zPNLSUhr0jzAzRR6UqqzuEVSzMcAAZJNAHQeC7PztWa5I+W3Qn/gR 4H6ZrumYIpZjgAZJ9KztB0saTpqwnBlc75SPX0/AcVn+L9VW0sPsUbfvrgYYD+FO/wCfT868yb9r Vsj1IL2NK7OKvJxc3s9wAQJZGfB7ZOagoor00rHmN3CkOKX3r0y20TSltYgLC3YbB8zRgk8etZVa qp2ua0qTqXseY1u+H/Dc+pzLNco0doMEkjHmew9veu5h0ywt33w2VvG395YgDVk5wdoGe2a5p4pt WijqhhEneTGu6QxM7sqIgyWJwABXmXiHVF1bVpJ4/wDVKAkeRj5R/wDXJNb/AIpt/ENxGwZEezBz stiSfYsDyfw4rjDWmGppe9fUzxNRv3baAaSkNJXacQE0hozT1GwBz1PT/GgA/wBWuP4j19vamE5o Y5pM0AJmkzRRTAKcBj60AY69aCQBk0AISFHNQs2480rMWNN600MKMU4Cms4XgdaAFOFHNRs5b6el NJJOTSUxhSUtJTAKSlpKACkpaSgYUlLRQBkUUUVB0hRRRTAWlpKWgQUtJS0wFpRSUopiFFSocioq cpwc0CZNS00c806mQFOFJS0CFFOFNFOFIQop1IKU9aBCinimCnCgRKpxSvEJBlcBv50wVIpxUiIC pU4IwR2oAq4VWUYbr2PpVeSJojzyD0I707jGivTPh7KZPDrqcYjuGUY9MKf6mvNBXovw5P8AxJrl fS4z/wCOiuXF/wAI6MK/3hJ8RP8AkAQf9fS/+gvXnQr0zx5Gr+G2YrkxzIw9jyP615/pOmT6vfx2 duPmblmI4RR1JqcK0qV2PEpupZEui6Nc61fC3txhRzJIeiD1/wDrV1uratZ+FNPGkaSAbojLueSh P8TerHsO30wKNU1Sz8I6cNJ0oK14wzJIedhI+83+16Dt+WeGZ2kdndizMcszHJJ96aTrPml8PTzE 2qK5V8X5AzM7F2YszHJJOSTQKBRXScotdn8PrLL3V+w6ARIf1P8A7LXGV6j4UsxZ+HbYYG6UeaxA xndyP0x+VcuKly07dzqwsb1L9hnjC9Fn4emAOHnIiX3z1/QGvMq7D4gXm65tbIE4RTIw7Ek4H8j+ dcfRhY8tO/cWJlepbsFLSVYsrK41G6W2tYzJI3YdAPU+grpbtqznSvohkEEt1OkECNJI5wqqOTXd adpNh4Vsf7R1Fg91jAxzgn+FR6+/17Utta6b4LsftF1IJryUEAgct/sqOw9T/wDWFclqWq3OsXhn uW4HCIPuoPQVyNus7LSP5nUkqKu9ZfkWdX1261NmuJ8JHHny4lPAPb6n3rmScnJ5J61c1CTaEgHb 5m/pVeC0uroObe2lmEYy5jQttHqcdK6oRUY6HO25O73Is0UmaM1oSLXafDrUCl5c6exO2RfNQehH B/MEflXFVp+Grr7H4isZsZHnBDz2b5T/ADrKtHmptGtKXLNM73x3ZfavDrTBSXtnEgwOx4P4c5/C vMa9q1C2F5p1zatnE0TJx15GK8d02zfUdSt7NM5mkCkjsO5/AZrmwc/cafQ3xUffTXU9R0V49N8H 2s74VIrXzmwPUbj/ADry+2im1PU44txaW5lALYzyx5P9a9C8d3y2Ph8WkZ2tcsEADYIQcn+g/GuW 8CWyz+Jo3b/lhG0g+v3f/ZqVB8sJVO46y5pxp9j0u3gisbOOCIbYoUCqPYCvGby6e9vZ7qT700hc jOcZOcV7Bq0rQaNezJjdHbyMM9MhSa8YzSwSvzSHi3shaFBZgFBJJwAO9JV7RIGutbsoVGS06Z+g OT+ma727K5xJXdj2WvJ/GLh/FV6R2KD8kUV6pPNHbW8k8rBY41LMT2ArxW7uWu72e6YYaaRpCPQk 5rzcFH3nI78XL3UiPNen+BLT7N4cSUghriRpDn0+6P5Z/GvL69q061Flpttaj/ljEqfkK2xkrQS7 meEjeTZzvjnXX06zSxtpNs9yCXYHlU6fhk/yNec1seLr37b4lu2Dbkibyl46beCPzzWNW2HgoU0Y 15uc2dX8P7EXGtSXbAFbWPjnozcD9N1dr4hvf7P0G7uA21xGVQ+jHgfqay/Adkbbw/57feuZC4yM YA4H8ifxqj8Rb0pbWlip/wBYxkbB7DgD9T+VcU/3uIt/Wh2R/d0LnB0UlLXpnmi0UlLQIKWkra8O +HZ9duu8drGf3sv/ALKPf+X5AzKSirsqMXJ2RZ8KeG31e5F1cKVs4m5z/wAtCP4R7etekSSRW0DS SMscUa5JPAUCkiihs7ZY41WKGJcADgKBXnfizxM+q3DWdq+LKM9V/wCWp9T7eg/H0x5nvYmfkej7 uHh5lTxLrz63f5QkWsXESHj8T7msYUqqWYKoJJ6AVo29gEw82Cf7vYfWvRSjBWR58m5O7K1tZvN8 zfKnqe/0r1fRwq6NZqvQQIB+Vedlq73w5MZtCtmPVQV/IkD9K48U24pnXhNJNGJ41GLm1PqjD9RX Lk113jeEm3tJweFZkP4gH+lceTV0NaaMsRpUYE0meKTNIa6DnPRfCylfDtrkEE7jz/vGsrx1IRFZ xcYZnY+vGP8AE10Gkwtb6RaRMMMsS7h6HHNcr44n3ajbwY/1cW7Oe5P/ANavOpe9Wv6np1fdoW9D melJRS16J5gV2fhTw+1vt1G7XEjD91GR90f3j71U8L+HWmdNRvExEOYo2H3/APaPt6ev069beXkF havcXDhEQfn7CuKvWv7kTuw9G3vyItT1KDS7Jrmc9OFUdWPoK80vbya/unubhtzue3QD0HtVjVtV uNXuzPMdqjiOMHhB/nvVGtqNH2au9zGvW9o7LYT+VJSkUhrc5wzVlNV1CKMJHf3KIowqrMwAH51V PpSUWT3BNrYvxa9q0Jymo3Bz/fct/OtbTvG95DIq36rcRd2VQr/4GuYJpDUypQlujSNWcdmevWt1 De2yXFvIJIpBlWFch4z0GKGM6raptywE6Dpz/F+fB+v1qx4Bune1u7ViSsTK65PTdnI/Sui1SEXG lXcJON8LjOM44PNecr0atkei7VqV2eRmkJoJoRd554A6n0r1jyRUUH5m+6P1NDMSSaV2B6DAHQVH QAE0UhopgH0pwGPrQBj60EgDmgAJAGahZixpWYsaQCgBMUuABk0M4TgcmomYk8mmMcz54HAqM0UU xhSUUUwCkoooAKSlpKACiiigYlFFFAGRRRRUHSFFFLTAKWkpaBBS0lLTAWlpKUUxC0opBSigCRD2 qSoRUqnIpkMcKWkFKKCRRThSClFIQ4UvekXrRQIcKcKaKcKBDxTgaYKeKQiVTUysCNrAEHqDVdak U1LEJLakDfHll7juK7b4bS7ra/hx9x0bPrkEf0rkI3IOa7LwFs86+KqAWVM4/wCBf41z4n+Ezowz /eo3fE9hPqehTWtsoaV2TaCcD7wyfyzWJdXNl4I0r7HZlZtRmGWcjn/ePoB2H/161vEviKLQrQbQ JLqUHykPQf7R9h+v8vMJ7ia7uHuJ5DJLIcsx6k1z4enKcfe+H8zoxFSMJe7v+QkkrzSvLKxd5GLM x6knk0gpKXrXoHALS0lLQIltYDc3cNupwZXVAfqcV7GiCONUUYVQAK8u8KxLN4lslYBgHLYPqFJH 8q9TrzcZL3kj0cGvdbPK/FFz9q8RXjhiVR/LGe20YOPxBq7N4QuIPDp1GRytwo8xoSMYT3z/ABd/ 0rdtvD1not3cazq9zG+JGeMY+VSSSD7t6Dt78Vk3Wo6h4y1AWNopgtFO5gT0GfvN7+3/AOutlUbS UNluzJ00m3Pd7IwtL0q61e6FvaoCerM3CqPUmu1abS/BWn+SmJ72Rcn+859T/dX0H8+a2tN06z0W zW2g2qOrMx5c+pq4oTllC89x3rnq4jne2h0U6HIt9TyK+v7nU7trq6kLyNx7KPQDsKIVHLN91Rk/ SvWZ7S2ukKXFvHKp7OgNYmoeDNOu4ZEt2e0ZweUO5fyPb2BFbRxUNmrGE8LPdO55bLKZZWkPVjmv Q/hvJG2j3UQI8xbjcw74KjH8jWVcfDa/Vh9mv7eQdzIGT+QNaBit/AOhzkXCz6hd4CDoOOhx6DJP v0q61SFWHJB3bClCVOXNJaI4rWQia3frGAEW5kCgem44qnmhmLsWYlmJySTyaTNdqVlY5W7u4uaV WZGDKSrKcgg8g03NFAj3OGQSwRyDo6hvzFcP4M0gHxFqF6UAitJHii443Enp9B/Our8PNu8O6cf+ naMfkoFZmr3EXhXw5O0JAubmRypA5Mjkknp2H8gK8aDa5oR3eh6s0nab6anH+NNW/tLXXjjbMNr+ 6X3P8R/Pj8Kt/Doj/hIJ8/8APq2P++lrkq1vDeqro+uQXUhIh5SXAz8p/wAOD+FelOnak4R7HBGd 6qkz1m8gF1ZT27DIljZCPXIxXibKyMVYEMDgg9RXuKsrqHUhlYZBHcV594q8H3g1CW+02AzQzEu8 acsrHk4HcfT1riwlRRbi+p1Yqm5JNHHV2Pw90ozX0upuv7uAeXHkdXI5/If+hVnaR4M1XUZ0+0W7 2lv/ABvKNrY9Ap5zXSa74htPDOnrpGkBTcKu3I5EXufVj6fifQ9NapzL2cNWzClDl9+eiRD4915U i/se2cF3wZyD90dQv49f/wBdcDSu7ySNJI5d2JZmY5JJ7mm1tSpqnHlRjUqOpK7NTw5a/bfENjB2 MoY8dQvzH9BXrtxMltbSzyEBIkLsT2AGa8++HNp5uq3N2ekEQUDHdj1/JT+ddR4yvPsfhm5wQHmx Eue+Tz+ma4cT79ZQO3D+5ScjyuWV5pnlkbc7sWY+pPJpFBZgqglicADvTavaKofXLBT0a5jB/wC+ hXpN2Vzz0rs9e0+1Flp9varyIY1TPrgV5p41ujc+JrhSRtgCxrj0Ayf1Jr1OuNfwhawapd6trN5F 9lMzSBOgOTkbifc4wOv6V5OHnGM3KR6deEpRUYnL2Phu9vNLudSceRbwRl1Lj/W4GePbHf8AyMmu h8TeKH1dvsloDDYR9FHBkx0J9vQf5HO16VNzavI8+oop2iLS0lLWhka/h7w/ca7dYGY7ZD+9l9PY e9eo2trb6faJb26LFDEOB6e5/wAai0mxh07TILaFQFVBk4+8cck0+/sYtRtWtpmkEb/eCNtLD0z6 V49as6krdD1qNJU4+ZwvizxUdQZrCwkItV4kkH/LU+3t/Oubt7WS4PyjCjqx6CvRh4H0MHPlSn6y mrI8LaWFCiNwB0AeuiOIpQjyxRzzw9WcryOEht47ZcIMt3Y9TSs1dyfCuln+CT/vs1T1Pwxp8Gm3 E8IkWSJC4JfPTmmsRBsl4aaVzjia67wXeK1vPZs3zI3mKCex4OPx/nXHk1Z06/l0y+juouSh+Zc4 DA9RWtWHPBoxpT5Jpnfa9YHUtJmgQAyD54/94dvx5H415swKkqwIIOCD2r1OzvIL62S4t3Dow/L2 NZ2p+GbDU5TM26GU9Xj/AIvqK46Nb2fuyO2vR9paUTzytDQtNfU9Tii25iQhpTjgKO349K6CLwLE HzNfu6+iRhT+ZJrobDTrXTYPJtYwi9SepY+pNbVMTG1o7mNPDS5ry2LPAGegFeY6zfDUdVnuVJ2M 2Ez/AHRwP8fxrqPFWvRw276dbOGmkG2Uj+Be4+priaWGptLmY8VUTfKgrpvDXhs3bLe3yf6OOY4z /wAtPc+386x9FtY7zWLa3l5Rn+YeoHOP0r05VCqFUAADAA7VWIquPuonDUlP3n0Irq6gsbZp53Ec aDk/0Feda3rM2sXW9spAh/dx+nufeu81HR7XVdgujIyp0VXwM+tUf+EP0j/nnL/38Nc9GdOGr3Oi tCpPRbHn9JXoP/CH6R/zzl/7+Gj/AIQ7SP8AnnL/AN/DXT9agc31WoefGm10/inQLPSrOG4td67p NjBmzngn+lcxmt4TU1dGE4ODsyzPpl7bW0d1NbOsEoDLJ1BB6dOn41UPFeo6JJFc6FZ7SrqIFRh1 5AAINVL3whpN2SyRNbOTkmE4H5Hj8q51ikm1JHS8K2k4s84ptds/gCIyApqLhO6mIE/nn+lX7DwZ pVnIJJFe6YdBLgqPw7/jmreKppaGawtRvUi8E6a9npb3Uq7XuiGXn+ADj+Z/StHxLdJaeHrx2/jj MYA7luP61oySRwxNJI6oiDLMxwAK838U+Iv7auBBbgi0ib5MjmRum729h/kctOMq1XmOypKNGnym CAXYKOpqRiFG1eg6+9BxEu3+I9T/AEqMmvUPKCm0UYJ6UwDGaeBj60AYoJxSADxUTHcfanHLH2pj OE4HJpgLwoyajaQngcCmsxY5PNNJpjCkoopjCkoopgFJRRQAUUUUAFFFFACUUtFAxKKKKAMalpKW oOkKWkpaYBS0lLQAUtJS0xC0opKUUxC0opKUUAOFOU4NNpaCWTClFMQ9qkpkMWlFIKUUhDh0pRSd qUUCFpwpBSigQ4U4UgpRSEPFPBpgpwpASqea3vDWtxaM91JIhcvF+7A7tngfr19qwBT1NZzipKzH GTi7o0by7fVJ3mvDvdznP936elZ81m8Q3J86eo6j61IrVYjlIxSXu7Be+5mCnCtGWzjnG6PEb+nY 1RkikhbbIpU/zq00xWG0UUUxFiwvZtOvYru3IEkRyMjIPYg/hXUyfEOUxERaciyY4ZpSwz9MD+dc dRWU6UJu8kaQqzgrRZc1HVLzVp/OvJi5H3R0VR6AVPo2vXehmY2qQt5wAbzFJxjOMYI9azKWqcIu PLbQSnJPmvqS3V3cX07T3UzSyN1Zj/nA9qW3u7q1P+j3MsOeT5blf5VDTlGTTsrWJu73OjsfF+sx 4RpI7j081Of0xVqT4kmKV4/7LEm043CfGf8Ax01ze8W9vJN3UYX6npWLnuay9hTk9UbRrVF1Ozu/ iTeyR7bSxigY/wATuZPy4Fcld3tzf3DXF1O80rdWc5//AFD2qDNFbQpQh8KFKpKfxMWikorQgWig VseF9GfWtZiiK/uIiJJiRkbQen49KmUlFNscYuTsj1HQ4WttBsYpRtZLdAwPY4Ga818Xa5/bWrny jm2t8pF/tc8t+P8AICus8deIP7Psf7Ntnxc3C/MVP+rT/wCv0/OvNa4sLT1dR9TqxNT/AJdoWikp a7zjN7RPF+o6KghBFzbdopSfl/3T2/lW7/wss4/5BIz/ANfH/wBjXCUVhKhTk7tGsa1SKsmdLqfj nVtQVoomW0ibtF97H+9/hiubooq4wjBWiiJTlJ3bClpKKsk29E8U3ug2zwWsNu6yPvLSqxPQDsR6 Ua34qv8AXbWO3uordER948pWBJwR3J9axaKz9nDm5rale0ly8t9AqSKV4ZUljba6MGUjsR0plFaE Hap8SJxAFfTUaUDlxKQpP0x/Wub1XW7/AFmbzLubKj7sa8Iv0H9etZ9LWUaNODvFGkqs5KzYUtFF aGYtFPjieV9kalj7Vp2+mJHh7jDt/dHQVLkkCVzY07xfrZgjiWG1ZI1C+bIjZOPowzWifF1+B/qr Yn/db/4qsJmAGBwB2FRlq5XTg3sb+2mupvHxjqA/5Y23/fLf/FU0+MtRH/LG1/75b/4qsAmmk0ex h2D21TudAfGmo/8APG1/75b/AOKqC88V6heWkls6QIsg2sUU5x+JNYhNJn1qlSgtbEutUelwNIaK StDIs2Go3WmzeZaylCfvDqGHuK6CHxzOqAT2UcjdyjlQfwwa5akqJU4T3RpCrOHws60+OzjjTR/3 /wD/ALGs6/8AFuo3itHGVtoz/wA8/vY+v+GKw6KSo01qkU69RqzYUYoorUxJbW5ks7mO4hIEkbbg TW7/AMJvqf8AzwtP++G/+KrnaPxqJQjLdFxqSj8LOi/4TfU/+eFr/wB8N/8AFUf8Jvqf/PC1/wC+ G/8Aiq5yip9jT7F+2qdzoz441P8A54Wn/fDf/FUh8can/wA8LT/vhv8A4qucpCaPY0+wvb1O5p6v 4hvdYijiuFiREO4LGpGT6nJPvWV3oJpM1rGKirIzlJyd2T2d/d6fJ5lrO8Td9p4P1HQ1vWvju/iU LcwRXGAPmHyE/wBP0rmCabmlKnCfxIqNScPhZ2f/AAsLA50v/wAmP/sahn+INwyEW9hHG3Yu5cD8 ABXIk00moWHpdi/rFXuXtS1zUdVOLu5ZkzkRr8qj8B/Wqqjy13H7x6D0pI1AHmMMj+EetNZixyet bJJKyMm23diE5pKKUAmqJExk08AAUAAUUgCmMR1JwBSPKF4HJquzFjkmmkMe8pPC8Co6M0lUAUlF HagYUlFFMApKKKACiiigAooooAKKKKACiiigApKWigDFpaSlqDqCiiimAtLSUtABS0lKKYhRS0lL TELSikpRQA6lFNpwoJFHB4qYHIBqEU9Dg49aZLJRSikFOFIkXtSik7CloEOFKKQUooEOFOFNFOFI Q8U4UwU4UgJBT1qMU8UhEimpUNQg09TUsCyj4qwGSRNkihlPY1TU1KrVDRSY2bTON9uc/wCwev4V RZWRirqVI7EVrxyEVKyw3K7ZkDe/cfjQpNbjsmYdFX59Kdctbt5g/unr/wDXqiysjFWUqw6gjFWm nsS1YSiilxTEIKmiXJqJRVuBQOW+6OSfak2MqapLtEduOw3t9T0rPp88pnneU9WOcelR1aVkMSii uw8E+FrLWbaa+v8AdJGknlLEGK8gAkkjnuKVSpGnHmZcIObsjj6K9abwN4dYcWBX6TP/AI1WPw80 PzxJ/pO0dY/N+U/pn9a5ljKfmb/VZnnWmaXeaveLbWcRd2PJ/hQepPYV6L/xLvAWg9pbub8Gmf8A ooz+GfU8y6hq+ieDrM2trDGJiMrBH1J9WP8AU815rqWp3erXr3d5JvkboOyjsAOwpLmxD10j+Y3y 0VprL8iO7u5r68lurhy8srFmJ/z0qKkpa7ErHJuFLSUtABS0UUAFFLRQISloooAKWiigApaKKAAU tAGTgDJPYVet9Mkk+aU+Wvp3NS2kBTUFjgAknsKv2+lu+GnOwf3R1/8ArVfhghtx+7TB/vHk08tW bm3sVYESOFNkSBR7d6QtTS1NLVACk0wtQTTc0xATSZpKKYCUUUUCCkpyoznCKWIBOAM8AZJ/KkVW dgqgsScADkk0AIetJTnRo2KOpVlOCCMEGn/Zpzb/AGjyJPJBwZNh25+vSi47EVFFFMQUdKfDDNcS eXBE8r4ztRSx/SmMrIxVlKspwQRgg0DCikzRQIKQmigAsQACSeABQAhpD7VvQeFisatqeo2+nlxl EkYFj+BIrIv7eOzvZLeK5S5RCMSp0bjtUxnGTsi5QlFXaKxNNJpSaaa0MwptKTT5LW4jgSeSCVIn +5IyEK30PegZCadGgclm+6OvvQiGRsDj1PpT5GGNq8KOlMBruWPp6e1Mpe9AGTQIQDNPAwKljtbi WF5YoJXjj++6oSF+p7VESAMntRcYhOBk9KryTFuBwP50ksu84HAqOqSAU0hozSZpgFJRmkoGLSUU UwCkopaACkoooAKKKKACiiloAKKKKACiiigAooooAxKWkpag6goopaYBSikpaAClpKWmIWlpKWmI WlpBS0AOpRTacKBCilpBSigkmQ5HvTxUAODmpxyM0yGL6UtIe1KKQhwpRSClFAhwpwpop1IQ4U4U 0U4UgHCniminCkIeKcKYKeKQEimpFNRCng1LGTKalR6rg08GpaGXI5SKkdYbldsqB/fuPxqmGxUq uRUNFJkM+kH71u+4f3W6/nVCSKSFtsiFT7itpZaeSsi7XAYehFUptbhyp7GEgyafeyeTZFR96U7f w71pNYQk7oyUPp1FZ+pabePIHjj8yNVwNpyR68VSkmxcrRjmkpzoyNtdSpHZhikrYQ2tjw/4lvPD 8r+SBLBJ9+FzwT6g9j/n0rIopSipKzKjJxd0d2fic2ONIGf+vj/7GsnUvHmsX6tHCyWcbf8APL72 P94/0xXNUVlHD0ou6Ro69RqzYrMzuXdizMckk5JNFIKWtjEKUUUtMApaSlpAFLRRQIKKKWgBKWil AycDk0AJS1YjsbiTB2bR6txV2LTIk5lYufQcCpckhmYiPI21FLH0Aq9BpTtgzNsHoOTWgoSNcIoU egFKWrNzfQLDYYIbcfu0APr3qQtTC1NLYqBjy1NLU3dTc07CHFqbmkJpM0wFJpKM0UAaEFrBa26X eoIzrKD5MCnBcf3iey/qa2vDIi1S6m86xsxDCg+RYAcknjk5PY1n+KreS31YAriDylEOBwFAxj88 /nWr4dUWHhi6vWeOJpS22Rs4GOFzgZ+9npXNUd6fN1Z1U1apy9EYV/qf+nTi1htFgDkIBbRsMDvk r+NR3WoRXWmxwNawpcLLlpYoVTK44HHvn9Km07SbW8uxG+pQsoUsVjDhiAMnG5QKya1io7LoYyct 31Lmk3i2GqQXMi7kQkMPYgg/oa3rnVPD+nxvNpNur3b/AHWKtiM+vzdPwrK03TIXtX1LUGeOziOA FHzTH+6P8f8AI6PRG0vVYp2GjW8MMBGHZVYt1Pp7D161lVcb310NqKlbl012OHLFmLMSSeST3q+d aujo39lYjEAOc4O4/Nu659a0NKtdOu9QSaVVme6nbyrVDgRqCSS2Pbov+Q7xallbalbwQWscYRN0 ixqF3ZPTj6frWjmnJRaM1CUYOSZm6TpFxrFw0UDKgQAu7dAP8ar38Edrey28chkWJtm8jGSOv65r s9CmsrfRrnU4NPNqmCSomLlwo9T05JFcyX0zU7tcQjTokDPM7TNI0nTgZ7/41MajcnpohyppQWur K2l6rPpFy1xbrGzMhQhxkYJB7Y9KqzzPcXEk8n35GLt9Sc12F5a6Zb+Enuo9PjjaSP8AdlgGf5jw dx745qj4Z0/TJ7pI5gLu4MfmsP8AlnEOMA/3jzz6UKrGznYHSldQucyfrRmuvew02TxaLZ7ZH3H5 YIhtSMBc7nx1JPb060mt2Ok2mswM0CMXVUjs4QEDtk/MxHQdB6nFNVldKwnQdm79bHIVveD7BbzW PNkTdHbLv56bug/qfwqfxrb2NpPaRWsEUL7GZxGoXI4xnH0NXvByJY6Fd6jKNoJJJ9VQf4k0qlS9 LmXUqnTtW5X0Of8AE919r1+5YNuWNvLX2xwf1zWRmrtjZ3OtamIVOZJmLO5HCjqSa6PSV00a+2kW +mQXEMYYS3Ey73LAcnngDPGB65rRyVONuyIUHUlfuzjulNNdJeadpQ1u6IkUxCdYobWJ8M7kDOT/ AArkkZ/Kt/WdL0HTrSGa4tY4oIGztRfnlOOFz1Prye1J10rabjVBu7vsedmtG81u81LTrbTXWLyr faE2qQTgYGefSuwgudL17ULKJ7SKZkiaQRq2VhQ/3uxbp8vbmsXW4NM/4SKaIGOyt4UXzTGgBbpw oHc5/TPakqqlKzjqhuk4xupaPQ51iI02Kc+p9aiNd7d6bpa+FBPDaQWwlRW82Zd7ICQc565x0A7k CjTtI0qfwtJMlokRljfE1xhmXGQHz26ZwKPrEbXt1sH1d3tfpc4IDP0p3Su48P2uhyaddSCzSaG3 4e5nUEuQMkgH7oxjHfmua0izspcTXjiVjIIorRW2tIx6EnsvPWrVVO+mxDpNW13GWuvXVjpVxp8Q iENxnezA7hkYODn0FYksu84H3a7Lx9BYWNtZ21raQwyOzMWjQA7QMc+vJ/Ss/wAOR2sOkXOonSod Tmhc+aksqjyogoO7ac5yc9u1EJx5OdLcqVN8/I3sczmkrsG1XQ57I3t34agt0B/cKk2DMw9AFHyj uTx9TxXKXdybu6ecwxQ78fu4U2ovGOBWsJuW6sRKCjs7kWaSkNFaEBRRSUwFpKKKACiiigAooooA KWkpaACiiigAopaKACkpaKAEopaSgDEpaSlqDqCiiimAopaSloEFLSUtMBaWkpaYhRSikpaAFpaK BQIcKUUgpaCRwqSM9qjpRTEyc9aUU0HPNOpEDhSikFOFAhRTqaKcKQhwpwpopwpAOFPFMFPFIQ4U 8UwU4UgHqaeKYKcKkZIOKcDTBTgaQEgNPVsVEKcKQyUNUitUANSKamwycyBVyaatwfWq1w+MIPqa jD4o5QuX3aKddssauP8AaGapS6RZS5Kboj/snI/WgSU8SH1pq62C5nS6HMufKlSQeh4NVZNPu4vv QNj25rdEppRMapTkBzLKyn5lK/UUV0xkDD5gD9RUTW9q/wB6FD+GKr2nkBz1KK2206zb/lmR9GNM Ol2xPBcfjT50Ix6XFa39lwf33/MUf2XB/wA9H/SnzoDKFLWqNNtx1Ln8acLC2H8BP1alzoDIpQCe gz9K2VtrdekS/jzUgCqPlUAewpc4GOltM/3Ym/LFTppkrffZU/WtItSbqXOwK6abCv32Z/0FWUjj iH7tFX6Cm7qTfU3bAl3Um6o99JvpWC5IWpC1R7vek3U7BckLUm6o91GaLCHFqM03NGaYC5ozSZoz QAuaXNN/Gl6UAWbrUbu+SJLmcyLCNqZAyBx379B1rqPEG3TPC1rp4wHfaCBx05Y4+uPzrG0s6LbC K6vLiaSZDv8AJjjwAR0BJ61p3us6BrFwjXq3iqi4QEAKOeTwSc/4Vyz+JWWiOqHwu71ZyyuyNlGK nBGQccEYI/I1N9guluIYJIJIXmYKnmKVzk471qz2nhmRSYNVnhY9A8TOB+g/nUt/q7arqunrYQS3 P2NgQWGGlORknHQcDn3rTnb2Rn7NLd/cSeMGS1jsdMh+WOKPftx+AP6H86tRwtpPgaZnTEtwpLA8 ffwv/oNM8Qa7Yb4zHapNexcZk+ZYumQcHDH88fpT/Es0x8KWJkY+ZKYzJkck7CT+tc6vyxi11Ol2 UpyT6FXwPa77y4u2BxGgRT2yf/1frWNrM0l3qU92yny5ZGEb44YLwMHvxitHQfEVtpGmTwSQSySu 5ZduADwBgnqOnpWPf6hLfyhnCpGg2xRJ92NfQCt4xl7RyaMJSj7JRTOr1jGleDYLMZV5QqnB7n5m /X+dcvHptwdQtrSaJ42uCuAeu0nGcdu9ber+K7O7hjNvYk3Ef3JJ1BEZPcDJz071j6Xqgtdci1C9 Mk2GYuRyxJBHelSU4wemuo6rhKaV9NDoPG0jGO1sIELBFMzqoyVA4B9h1pPA8Qit769fGwYUfgCT /MVma74mOos6WkJgjcBXdvvyAdj6Dk8U6y1+ytPDE2miKb7RMrhmCjbluM5znpjtU+zl7JRsX7SH tua5b8Fq95rF7fyEbgpyMfxO2c/oaTR4xrPjK5vmAeKBy6kcg4+VP0GfwqpofiG10jR7mDy5muZS xRgo2g7cDPOetR+GNettEa5+0RSOJguDGAcYz6ketOUJXm0vJCjONoJvzZB4juZL7Wbm5CsYY5PJ ViPlGO2ffBNdFqQbS/BEFoilZp1RNo5JZvmYfzFcrqWpi92wW8QtrKI/uoF/9CJ7mtrWfGEN3DEt jaskqZIklAzHxj5QD19zTlCT5ElsKM4rnbe5c8JWg02y1K+ukKSwFo24yUCjccfmPyFYkGqXTlrD Q7d4mnPzyA7ppfct/CPp09as+HfE1tpdnPa30MsqSuX3Jgk5ABByR6VWu/EEMMD2uiWQsYnGHlJz K49M9u/c/hQoy55XV/yByjyRs7fmM8NWDzeJoIJU/wCPdy8gz90r/P5sVL40v3utdeAn93bAIo9y ASf6fhTPC+sWWi3M891FM7ugRPLAOBnJzkj0FZ87i6vJ7xx8ssrOFPfJzWln7XmfRGfMlS5V1Z1f gi2Wz0y81Kb5Q3GTxhVGSf1/SuUljub3UFMiFZbt9y7gQDuPUe2a37HxTaWfh8WD2jzzYYMGwEYE k8nr0PTFZVrrAOvw6jqO6UI24qgHy4HygA8YBxUQU1KUmipuDjGKZv8AjuYRQWVipAQZcjvwMD+Z qTxU/wDZvhaz04MNz7EbtkKMk/nisTVdbtdS8RW1/smFvDsBUqNxAOTxnHf1pPFGuw61cwvAjpDC hH7wAHcTz0J44FTCnL3E1tqXOpH32nvobN/GdE8Dw2iqRPdkB8DkluT9eBtrF8GWj3PiYGRGVbNW dlK4w33QD6Hn9Kt6x42s7uGKSysXF5ECI5ZgMRZxkqATk8DGaz/CviW20OW9lvY555LjaQyYJyM5 ySe+acY1FSlpqxtw9pHXREfjS4lvfEFxKEJgtyLdZADtyBkjPTOS1ZsdrDZ263V+m5pV3QWxJG8d mYjkL6dz7DmtF/E8dxftcXFmohhVntrZeUExOdz9N3fJrat/iRE52XumEJjrG4b9CB/OtP3kIqKj +JFoSk25HJ2sN3r+qw23nJ50o2IX+VFAGQAAOBgcACql1bvaXc1tLjzIXaNsHjIODXVXfiTw0jLd 6doZW9iO6JnUIit2JCtg469PyrkpZXnmeaVtzyMWZj3J5NbQcm9rIzmorrdjaSiitTMKKKKACiii gAooooAKKWigAoopaAEpaKKACil7UUgEopaKAEooNFAGHS0lLUnUFLSUtMApaSloEFLRRTAWlpKU UxC0opBS0ALSikpRQIcKUUgpRQSOpRSUopiHqcN7GpRUHepYzkY9KCWSCnCminCkSLTqaKcKQhwp wpopwpAOFOFIKUUhDxThTRThSAeKcKYKeKQxwp4NMp1SA8dMUoNNFOpAOFSLUQ60TPtiPqeKQyB3 3uzZ70m6mZpM1dhEu6l31Dml3UWAmElOD1X3UbqLAWN9LvqDfRvpWAn30b/eod9LuosBNvo31Duo 3UWAl3+9G+od1G6iwE2+k31FuozRYCXfSF6izRup2Ak3Um6o80ZosBJuNJupmaM80WAfmjNNzRni gB2c0ZpuaB1oAeM0ZpoPvRmgB+aM03IzRQA6jNJmkLUgHZ4ozTc0ZoAdmuo8OIZvD+oxWTKL9jgc 4YrgdP8Ax6uVzTo5pIZBJFIyOOjKcEVE4cysXTnyu5s6b4Y1C8ugtxA9tCrfO7jHHtnr/Krfi/VY Ll4bC1YOkBy7DpuxgAH2rBl1O/njKS3txIh4KtKxB/WqueaSptyUpdCnUSi4xW4uR3oJptJ1NamQ pPFFJRmmIXpSZpKTNAC5pM4pCaSmApNJRigUALRRT44zI2B0HU+goAIot53Nwg6+9SSNk+gHQUSS KgCL0HQVAzE8mp3GOLccdPWm9aTGafwoJJwBVCE4UZJxjvVWaYyHA4WiaYyHA4X0qEmmkMCaTNGa SqGBopKKYBRRSUAFLSUUDFoopKBC0UUUAFFLRQAUUUtABRRS0gEpaKWgBKWiigQlFLSUAFFFFAzD oooqTqCloopgFLRRQIWlpKWmAUtJTqYgFLRS0CFoooFADhS0gpRQSOFKKQUopiF705Tg5pp60ooE WByKcKijPapaRAop1IKUUhDhThTRThSAcKeKaKcKQhwpwpo6U4UgHinCminCkMeKUUgpakBwpRSC loActQXD7pNv90VNkKpbsOapkliWPU0JAGaTNFJmrELmjNNozQAuaM03NGaAHZpc0zNGaAH7qXdU eaM0ASBqXdUW6jdQBLuo3VHuo3UWAk3UZqPdRuoAkzRmmbqM0APzRmmZo3UAPz+VGaZmlzQA7NLm mBqN1IB+felzUe6l3UAPzRn1pm6jNAElGaZmjPeiwD80ZpuaTNAD80Z96aCOtGc0ALmjNIMYooAW ikzSZx3oAUGikJpM5oAUmkJpM0d6YBmiiigAopaTvQAnvS0UZ5AHJPQUAORC7BR1NSSSrGvlRc+p 9aQnylKLgufvH+lQE46cn1pbjF6deTQBk5oVc1J8qLuY4A70xCcKpZjgCqc0xkPHCjoKJ5zKfRR0 FQ5ppDFJppozRVDCkzRSUwFpKKKBhRRRQAUUUtACUtFFAgoopcUAFFFLQAUUUoFIAopaKBBRRS0A JRS0UAJRS0lABSUtFAGFRRRUnWLRRRTAWiilpiCloooAWlpKWmIWlFJS9qBC0tepeEtPsLjwvYyz 2VvLIyHLvEpJ+Y9yK2P7J0v/AKBtp/34X/CuV4lJtWNVSbV7niwpRXtH9k6X/wBA20/78L/hR/ZO l/8AQNtP+/C/4UvrS7D9g+54zSivZf7J0v8A6Btp/wB+F/wo/snS/wDoG2n/AH4X/Cn9aXYXsH3P Gz1pRXsf9k6X/wBA20/78L/hR/ZOl/8AQNtP+/C/4UfWl2D6u+548DU6ncM161/ZOl/9A20/78L/ AIUf2Tpf/QNtP+/C/wCFL60uwvqz7nk4pwr1P+z9H87yfsNl5m3ds8lc46Zxij+z9H87yfsNl5hX ds8lc46Z6UfWV2J+rPueXCnCvUv7J0v/AKBtp/34X/CmppukSrujsLJ19VhQj+VL6yuwfVn3PMRT wa9N/snS/wDoG2n/AH4X/Cj+ydL/AOgbaf8Afhf8KPrC7B9Vfc80FOFek/2Tpf8A0DbT/vwv+FNT TdIlXdHYWTr6rChH8qX1hdg+rPuedA08V6J/ZOl/9A20/wC/C/4Uf2Tpf/QNtP8Avwv+FL267B9V fc89FOr0D+ydL/6Btp/34X/Cj+ydL/6Btp/34X/Cj267D+rPucBThXe/2Tpf/QNtP+/C/wCFH9k6 X/0DbT/vwv8AhS9uuwfVn3PP53wm31qtmvSf7J0v/oG2n/fhf8KP7J0v/oG2n/fhf8KarpdBfVn3 PNSaaSK9M/snS/8AoG2n/fhf8KP7J0v/AKBtp/34X/Cn9YXYPqr7nmeaTNem/wBk6X/0DbT/AL8L /hR/ZOl/9A20/wC/C/4UfWF2D6q+55jmjNemNpukIyq1hZKzfdBhTJ+nFO/snS/+gbaf9+F/wp/W F2D6s+55jn3ozXp39k6X/wBA20/78L/hR/ZOl/8AQNtP+/C/4UfWF2D6q+55jmkzXp/9k6X/ANA2 0/78L/hSNpelKpZtPswAMkmFeP0o+sLsH1V9zzHNLmvTV0zSXUMmn2bKehEKkH9KX+ydL/6Btp/3 4X/Cj6wuwfVX3PMc0Zr07+ydL/6Btp/34X/Cj+ydL/6Btp/34X/Cj6wuwfVX3PMd1Ga9O/snS/8A oG2n/fhf8KP7J0v/AKBtp/34X/Cj6wuwfVX3PMc0Zr07+ydL/wCgbaf9+F/wo/snS/8AoG2n/fhf 8KPrC7B9Vfc8xz70ua9N/snS/wDoG2n/AH4X/Cj+ydL/AOgbaf8Afhf8KX1hdg+qvueZZozXpv8A ZOl/9A20/wC/C/4Uf2Tpf/QNtP8Avwv+FH1hdg+qvueZ596N1emf2Tpf/QNtP+/C/wCFH9k6X/0D bT/vwv8AhR9YXYPqr7nme73pc16X/ZOl/wDQNtP+/C/4Uf2Tpf8A0DbT/vwv+FH1hdg+qvueaZ96 XNelf2Tpf/QNtP8Avwv+FH9k6X/0DbT/AL8L/hR9YXYPqr7nm2aM+9ek/wBk6X/0DbT/AL8L/hR/ ZOl/9A20/wC/C/4UfWF2D6q+55tmlr0j+ydL/wCgbaf9+F/wo/snS/8AoG2n/fhf8KPrC7B9Vfc8 3zS5r0f+ydL/AOgbaf8Afhf8KP7J0v8A6Btp/wB+F/wo+sLsH1V9zzcGjPFekf2Tpf8A0DbT/vwv +FH9k6X/ANA20/78L/hR9YXYPqr7nm+aTdXpP9k6X/0DbT/vwv8AhR/ZOl/9A20/78L/AIUfWF2D 6q+55tn34o4r0n+ydL/6Btp/34X/AAo/snS/+gbaf9+F/wAKPrC7B9Vfc82or0n+ydL/AOgbaf8A fhf8KP7J0v8A6Btp/wB+F/wo+sLsH1V9zzYGivSf7J0v/oG2n/fhf8KP7J0v/oG2n/fhf8KPrC7B 9Vfc82zRkCvSG0zSVxu0+zGTgZhXk/lS/wBk6X/0DbT/AL8L/hR9YXYPqr7nmbOAOtTIvkpvbiQ9 P9kf416N/ZOl/wDQNtP+/C/4Uf2Tpf8A0DbT/vwv+FH1hdg+rPueZs+eFpyLXpJ0zSQwU6fZhj0H krk/pS/2Tpf/AEDbT/vwv+FH1hdg+qvuedfLGpZjgCqM85lb0UdBXqf9k6X/ANA20/78L/hR/ZOl /wDQNtP+/C/4ULELsP6s+55MTSZr1r+ydL/6Btp/34X/AAo/snS/+gbaf9+F/wAKr6yuwfVn3PJM 0V63/ZOl/wDQNtP+/C/4Uf2Tpf8A0DbT/vwv+FH1ldg+rPueR5or1z+ydL/6Btp/34X/AAo/snS/ +gbaf9+F/wAKPrS7B9Wfc8izS165/ZOl/wDQNtP+/C/4Uf2Tpf8A0DbT/vwv+FH1pdg+rPueR0V6 5/ZOl/8AQNtP+/C/4Uf2Tpf/AEDbT/vwv+FH1pdg+rPueR0V65/ZOl/9A20/78L/AIUf2Tpf/QNt P+/C/wCFH1ldg+rPueSUV63/AGTpf/QNtP8Avwv+FH9k6X/0DbT/AL8L/hR9ZXYPqz7nktFetf2T pf8A0DbT/vwv+FH9k6X/ANA20/78L/hR9ZXYPqz7nk1LXrH9k6X/ANA20/78L/hR/ZOl/wDQNtP+ /C/4UfWV2D6s+55PS16v/ZOl/wDQNtP+/C/4Uf2Tpf8A0DbT/vwv+FL6yuwfVn3PKKWvVv7J0v8A 6Btp/wB+F/wrnvGtlZ2ujRyW1pBC5uFBaOMKSMNxxVRxCk7WJlh3FXucVRS0V0nMFJS0UAJRS0lA BSUtFAGDS0lLSOsKWkpaBBS0lLTAWiiloAKUUlKKYhaU9KSjtQI9Z8HNjwnYf7h/9CNbe6sHwg2P CtiP9g/+hGtndXmzXvM64v3US7qN1RbqN1TYq5Luo3VFuo3UWC4+SYRRs5DEKM4VSxP4CqS65Zsu 7eQM4ORjB9Oatbq4WWUL4qyzAAXoJJ7fPVwgpXuRKTR2B1yyHWXpz1H+NXYplliSVDlXUMPoaxJZ o9YuL2wxG8ccS+W5HRznkH8vyqHXb2TS9EgtUYeZIojJGegHJH6fnRyX0QczWrLerRRXM8c0Uuya ElS2QFI9Mkgflk9aZYXtlDcZnZo7ll2KrLnjOe3Uk+vtVTwpAjWz3rjdIzbFJH3QB2/P9K2L60iv 7Ywy8HqjjqjdiKp2XuiV37xDe6lbz6YcmWJbhCquYzhSeBk9Bz2zVLS7qDTFnaaWSR3wz7FLbQB1 PH1/KnXML2vhN7ebG+OLBxyM5rJ8MobqLUYA20yw7AxGcZyKaiuVibfMjqG1m0VQWfAPTOB/WmnX LJSQZQCOvI4/WqGtxJaeF5YI/uxhAPf5xzVLweweK8DAEEqCD361PIuXmHzSvY1rvVbO5sJYxLIi yAxeaIyVU+56d/Wqmk3MNgZRJJLNNLglY0LngdeBmi8sk0/QL6JDlHYyKuPugkYH4YrP8HPme75/ hX+ZqlFcrsJt8yN7/hILDDHzG+X7w28j8K0RIGUMpBBGQR3rg9YtT515eocBboxuPqAQfzz+dbvh 7VEfQyZSR9kBDnr8oGQfy4/ClKmrXQ4zd7M1J9XtLe5Ns8h81QCQB0pE1a3kieVEnZVxysTEH6ED muI1TfmK8l4e83TY9FJ+Ufl/Ouy0Z/8AiTWn/XJf5UpU0kmEZtuw7+3bLYrh2Ib7uBnP09avRyiS NXAYBhnDKQR9QelcFpD/APFSQgdBK3H4Gu63UpwUXoOEm9yG51S3tZhFNvUt0Ow7SfQHpmo/7bs8 keZyOD0rP8VP/wASY/8AXRazNC1EWWh3swdfNDEopPU7R2701TTjcTm07HTW+rWtzIY4pNzBC+AM 8DHp9aZ/bdphyS67PvB12lfqDzVe1s/+JmupqEQTW22RV7sSDn9K5rxS+Nak90X+VEacZOwSk0rn WnXLBCRJMUPoVJ/lVxLiOSETRuHQjIZecj8Kw/FTw/2T8+PN3jyuMnOecfhUXhFphYzh8hPM+UH1 xz/SlyLl5kPmfNYNVeDUbgSC4lhCpsdXUqVwc5wf/rdBWm2vWaIHcTKh6O0TBT9D0Ncp4okxrT8/ wL/KtzxCBJokUZJAZ0U496twVo3JUndmta6nbXjskL5ZACQfQ1NcXMdtA80zbUQZJrg7G4k0TXgk 7bQj+XIccFT3+nQ10PiCVrjytORsCVWklI6hVGR+Z/lUyppPTYandF8a7ZsF2mRi33QqFifoBzTN YuYntXtHeWJpQCr7DjOc4z+HSuZ8KSZ1jr/yyb+Yrd8UMDokhPZ1I/Om4JTSQKTcWx+jXMFrG9v5 kkju5kYhSwTgdT26Z7dauLrNqyI4ZtrjKkjGawPCu6XT75EYBm4BPY4NaU00Hh7RgRtMiqFXI5kf 39uv4UpRXM0EZOxbOuWQ3Zk+597pxVyKdZoUlTO1wCMjBx9K4fQbJ9V1EzTlmjjO+Rj/ABt6V226 lOCi7IcJN6sfJMIo2kIYhRnCqWJ+gHWqP9uWYVmLsoX724Yx9c9Kt7q4TWJB/wAJHMGPHmrnP0FE IKT1CcmtjuPt0f2P7UFlMeM4EZ3Yzjp1/wDrc1HFq1tN5fl72EhAUquc5+lZ82qNf3osLGZVG3dJ KDzj/Z/x/wD11ftLWCxiMcC4zySeppOCS1HzNvQu7qgN9CL4WW/98U349s/zoeVY0Z3YKqjJJ7Cu El1SWPXF1J0YBn8xFPBKdB+nFOFPmFKfKd7cXUdrA00zbUXqf0qudYtFIDPgnoCR/jTL2JdU0xoo 5QEnVSrgZ4yDmsvxQqQaJFHEoRElUADtwaIwT0YSk1qjVOt2SnBkxzjqP8aP7cs9ivmTY2cPsO3g kYz0zkVk+EtsmkTq4DK05yCMg/KtJq1r/Z3hU2ofeI34bGOC+f60+SN7C5pWua51u13lAJnYDJCR liB6nHSkOu2SpuLtjOOnf0+tY3g5829ye+9f5GsmyfPidQf+fo/+hGq9mrtdhc7sjvIZxNEsgV1D dnUqR+BqC51OC0kCTeYMjO7Ydv0z0zUu6sjxQ/8AxI5f95f5isoxTdjRuyLp1u13FAJnYDJCRliB 6nHSm/2/Yd5SMHB46Gsjwc+ba5PfeOfwrCv7cqkt4Cdr3UkbDtkcj+v5Vqqceaxm5u1z0XdVKTWb SK5kty5MkeAwA6cZ/rVDS9YjbQBdTMAbddrgEckdPz4/OuS1GOWCdGnJ86aMSyZ9WJP8sUoUruzH KdldHoNpfxXqGSEPsHRmUgN9D3qxuqpaMBZwAcARr/KkvTI1hcLFnzDEwTHrg4rPl1LvoD6tbqSI 8zY6+WQcfhnNLbarbXkqpAzNuRmztwBggEfX5hXIaDrqaW8kFyh8tzksF+ZSOOfb+VdDaxQTar/a llJE0UkRjk29S2Qc/X1zVyp8pEZtlr+27TkMXQgZKyLsIHuDzR/bljwfNHPTkc/rXMeLpMatHz/y wX/0Jq2bfUEb+zbBfLkWWD96CM4wvA/P+VN01ZMOd3saX9q2/wBlFyvmNGXKZVCcHnrjoOOtM/tu zwD5nUZHTkVDZWh0/TXt9wYAuVI9CTj9K5fws+dZj5/gb+VJQTTfYHJqx18OtWM8qxJcLvbgA8ZP pnpn2qWfUILeUROx3ld2AO3rXH+KNn9rgwct5YMm3scn9eldBb2Lyz2V5dNukhtwpVhzv4yf50Om kkwU29Cydbs13ZkxtGW6cUf25Y7wnm8sQAOvU4rkvFMmNZk5/gX+VdRd2KX9tbZYK8Lo6tjPTGR+ P+FDhFJPuClJtoz9Ulh1K4VknkhKxlXR0ZSOcg4Pv29utaSa3aRxRhmmKkBRK0Z2sf8Ae6H865rx dJjV4+f+Xdf/AEJq1dVf/ijh/wBcof5rVOCaiJSd2ah1qzBKmTBHUZH+NC61Zu4RHZ2IYhVG4nAy eB9K5zwldRQi+eWRUUBDkn03VqWMY1CSy1cIkUmH8wKPvdQP8+9TKCTY1Jsq3rwXmoNdLdNGgKFl YFShU/4Z9MGtc65aB1VhMhf7u+IqG+hPWuQ1+THiO4Gf4k/9BWt7xa3/ABKEPpMuPyNU4J8qJUmr mvb6lBdSmOLcSoyTt4H1Pamy6tbwztC/mKyjJyhAI9QT1Fc3oOrQ6doszyfM5nO1c4/hXqewratb MyTi+u3WWZgNoX7qDqMev+frUumk9SlNtaGlb3KXMQlj3bTnG4EUlzdR2tu88rYRBkmjdXNeLb1y qWcQYhR5s2BwBnC5/H+lTGHM7FOVlc6hJVkjWRDlWAIPqKrXeqQWUipN5g3Dhgh2/TPTNZHhXURc aebViBJbnj3U9P6j8qseJX/4kFz9U/8AQ1o5LSsw5rxui6mr28kyxIJGckDCoTjPc46D3q7urlPB r5S7PfKc/nXTbqJwSdkEZNq5VGuWhdk/eK6/eVkKkfgaP7ctMAnzQrdHMZCn6N0Nc14vfGpQnuYR /M1oag+PBMf/AFwh/mtX7NWT7k87uzVOuWKsQ8u3HXvj8qsW1/bXik28yyY6gdR+HWub8HsHivAw BBKgg9+tZmok6LrzG1OxUIdFB7HqPp1o9km3FC52ldnaXepwWTKs3mANjDBDtye2emaj/tm2LbFW Z267UjLED1wKp65Os3hyaVfuuiMMj1INZngyTLXvPaP/ANmpKC5blOT5rG8ut2jBvmddpwwZdpB9 CDR/btgCQ820j1Un+Vcj4iYDxBLj+LYT/wB8itvxYYzpseQDJ5o2evQ5/wA/Sn7NaeZPO9fI6BJk lQPG6ujDIZTkEU7dXO+EmlGmSBwQnmnZx7DP61u7qzlCzsaKV1cl3Ubqi3UbqVh3Jd1G6ot1G6iw XJd1c346OdDi/wCvlf5NW/urnfG5zosX/Xwv8mq6a95EVH7jOKpaKK7zzRKKWimAlFFFABRRRQBg UUlLSOsWiiigQtFFFMBaWkpaBCilpKKYDqD0pKU9KBHqPhNseF7H/cP/AKEa2N1YfhVseGbIf7B/ ma199cUo6s6IvREu6jdUW+jfS5R3Jd1G6ot9G+jlC5Lurzu4Yt40MZJ2tegEA44LV3kzOYWEbhHI 4Yrux+Heuak0G2ku2unvx57SeZv8ogg5z0zirhpcznd2NbT7E6frN/L8/kSojKztnB5yMn+tZHiq U6nolvqVsG8qKV1PuM7d30yP1q/cQy3EBhuNU3qwwcwFc/kRV6xs4bfSorIkTRBNp3DhgevH40bO 4bqxQ8F3Il0PZuy0crAg+/P9ah8QazfaLdR4nMkc24qoVVKYPTODnrSR6ImmXzTabqDWwfhoSu8V Nc6fDqEsT6jOsjRggArgc9fT9c07LmuJ35bCTXF1c+D7i7uZ95mh3KoUDZz7de1Z/gOQmW9yc/Kn 9a177T1fTFsI7kQWgXaR5e4kZz1zxVXSdKXTrkvZXqAPgSJ5BIYD3LcUacrQa8yZe8Vvjw3dkf7H /oa1leA3Jt7wk5+ZP5GtPWbQ38JgkuhFbsBuXyixJBz1z9KraPpg02Zvsd8pjkIMkfknnHoSeKF8 Fhu/Pc0fEL40C8/65mue8ByEy3uTn5U/rW7q9u95bGA3QghcYceXuLcjvnis3TdI/s+Z3sNQVC64 dfILA+h5akl7rQO/MmXLW3jvhrNrL92S4K59PlXB/A81yejreHVZNJDlRO3lz46hVOT/ACI/Gur0 61ltr2aVdQ80TOXljMOMt7HPFWINOt4dYuNQXHmzIqkY+76n8ePy96adrg1ezOd8cERXNmkfyqsR AA7DNdRobf8AEjsv+uK/yrG1TR49RuvNvb1Syjaq+SQFGc9m96vWUF1bWAgiv0ZEAEbG35UD8eaG rxSBXUmzldFkP/CYRjPHnP8AyNegyTJFE0sjBUQFmY9gOtcpb6Db29ytxDqGLhWLCTyiSSevGcfp Vy7tpLu2aC61Tcjf9MSv8iM/jRJKTFBuK2IvEN8174QW7MZi81lYLnOBnj9KzNEsG1PwzeKjSGdZ CYwHIBIAOMdK173SxNp9vYyXoW2iRBt8k/OQOpOf0pmn6d/ZwdbLURGjnLKINwJ/Ek01pGyBq8rs 2PtyWf2G0cfvZwEC56YXJP6VxnjGRl8QHB/5ZrXRW9ir6ql6175s0aEKNhxyMdyfU8DHWqV9oUN9 dPNeX4eZgBnySMYHYBqUUou4SvJFHxNHfaRepLBO4tpPuYPII6gn8c11OianBqWmxzQokZHDxL/A f881DJZC90l7S9mWZWGBIsezGBwcZPOaz9J0hdNn3WWofewHQxEhx78/rQ/eVmNLlldGL4zkI19s HH7pa6fX2/4k9v8A9d4v5isy/wBChvbl5r2/V5mABPkkYwOwDVaubGe4tIoJ9THloVKEW2CSOmea btZeQlfXzKHjexdXi1GMnaf3cg9D2P8AMflV7QBNcaTcajdD97LF5aH/AGFXHH1OTV66svt+jyWl 5OJC6/60R7cEdDjNLPbNHpkdpb3PkRrH5Zby9xK4x68VN/dsO3vXOW8EyE642Tn9y38xXR+LnI8O zkcfMn/oQrOsdDisbtJ7K/VJVBH+oLbgfXLVo6zZtfxeTNeCK3OCU8oncR75+n5VUtZXFG6hYoeB HJsbok5/ej+VY/iDVZdb1hLW0O6NG8uLafvknk1sWukfZbW4gtdSCQzj94BATjscHdxxTLLQrexu RcWl+ElC4B8jdj35Jpq3M5C15VE6DS7OPStNjt9wOwZdzxk9zS6bf/2ham5CgIZHCEfxKGIB/Ssu 5gkuYTFcanuUjH+pK5/AMAav6XbpY6dDbRyeYqA4bGM5JPT8azcepon0NDdXneusW8WyxknDSoDj 6Cu8kZzGwjYK2OGK5AP071zVzoVvc3T3M2oA3DMCXEJBBHTjOKcNGTU1Rl6va3nhvWFubeR/KLbo nPP1U/56V2mkatDq1glxGQGxiRP7rdxVDUtPbUdMjgu7tSAdzSCHGfQ4zx/9eqNho0dhciWx1Ly3 PBUREhh6EE03aS13Erxemxp+IppZbaLTrfJmu224U8hByx/kPxrH8U2t1cWMdz9i+zrarg7ZQw28 Dp7VfexlbVReDUsXCgqoMGQF9MZq/qcD3lm8AnWJHBWQmPfkEdueKS921htc1zP8G6oLvSzau372 2OPqp6H+YpfGrkaECDj98v8AI1W07RYbC7Sazv8AY/3WAiJ3r3Byau61Y/2goinuxHBuDBPKzkjP fNOy5roLvksyDwO5OiyknP8ApDf+grVnxc+PDs5H95f/AEIVHoth/ZxaO2vFe3ZtzR+URzjHBJ47 flU2s2hv4TBLdLHbtjKeUSSQc9c0re9cavyWM7wI5NjdEnP70fyrF0+Q/wDCaKM8fan4/E1v6bpj ad5gsdQVUfBZTblgD6j5qrJoVsl0LpNQAuA+/wAwRHO7Oem7H4Yq9LvzIs7I6x5VjRnchVUZJPYV zmu3/wBv8HvdquwSMNoz2D4B/IVLcwS3Nu0Fzqm9HGDmAr/IimXGlBtIhsDeqtqqKD+5OWI5znPF QopMtttEHgRybK6yc/vB/Kp7K0Go6JqVsfvNdS7D6MDxTNN0xtO8wWOoqqPgsv2csOO4y1WtKtZL OWQJfCWKRy7p5OPmPU5zx9Kb3bQo7JM5bw6tzeXj6WzEW8jB7hSOcIentk4FTeNpCNcXBx+5X+Zr qrTTre0v7u7i/wBbcEFsj7v/AOs81lajosV/cmW9vkaXbt/1JGB+De9Upe9clxajY6O0b/Q4P+ua /wAqLy6+y2U9wF3eTGz7emcDNVdOSWC1WOW5+0BQAreXsOB6+v1qS+QXFhcQF9gkiZN2M4yCM1ly 6mt9DMvtCstdtkvrd/ImmQOHTlWJ9RWF4fa+0nxQNPkyS2UkQHIIxkMP0P0rbtLGTT/ksNQxE3Jh ZMqD7dSKs2WnWyX0motJ510/Bc8beMcD9Ku9k0Z2u0znfHErLrUO1iP9HXp/vNW5aacy6hpd/GZG U25Eu5y2CV4PJ4zVTUNGiv7rzr69V5Au3/UsoA9sN71bihnhtlh/tUmJVCrmEggduQQf1p/ZSF9p uxppqEV095BGCTb/ACs3YkjOPwrg/DERvNWMBlZN0TYZeoNdTZaebOwmS2vsGWUu8hizxjGME/jm qNloUNldJPZX6pKuR/qS24HsQWojZJ2HK7auZNnqd3ouuiPU9zJG2HXGQOOGH55r0ESBlDKQQRkE d6wdc0a01LyZZ5RFKnBfbneMdCM+vNT6PavY27QpemeID92rR42fjnJHtUy97UcLxdjl/GUhGvnB x+7Wu9ib9yn+6K5a+0KG+uXmvL8PMwAz5JG3A7ANW9YCaO2CTXIuCvAfy9hx780SV0kEbps5LxzI RrMODj/Rx/6E1bmtOR4JOP8AnjF/Naq6jo0WoXImvr5XkC7R+4KgDJPZvep59Pmn0sWU2pKbbaq/ 8e5BIBBGTn2qtLLyFrd+Zk+EbRNRtdQhleReECsrkbc7vTr0HWuo0GKW10W2gmUrIgIYH6mszR9L XTbhjZ3i7JMeYnknnHuW46mtyRmMbBGCtg7SRnB+nepnqxwVkcH4mkI8VzAHjdH/AOgrXR+NXI0I EHH75f5GqV5oNveXUk91fhpnxubySMYGOAG9qt6hYS6hbJFe6irRBgwAtyu4gHr83vVaaeROuvmc 7Z6TLqHhuW8gdjNBK2Uz99Qqn8xzWr4Q8Q/d0q6bnnyXP/oJ/p+XpWlotiNODxW92rwMd2zyiMNj Gck+3SsyXw3ZPcPJJeKJGcs2ImGD7Ybim2pXTBJxs0ddJMkUTSyMFRAWZj2A61z1j9qvLW5uZNPM w1DklpQpCYwoA9vWpLm0mudOFtPqhaJuC3kkMw44Jz/+ur+mpJBaLFJc+eEAVG8vZwP51mlZFt3Z xmjXsuheI/InJ2lvJlB9+h/PH4V1nit8eG7vH+x/6GtZd/oVveXjz3l4jTMAGxAV6fRqsz2E1xpf 2OfUw1vhVz9nOSAQRk7vardm0yVdJoq+A5Mw3uTk7k/ka6LUNQWxjiYjc8sqRIuepJx/LJrCsNLX TmkNjqXleZjeFg3A46dSfWpn08XeoW0898JJYHDKPKIzjnpnA/KlJJyuOLajYyPHUhGp2+Dj9z/U 1rao5HgJD/07Q/zWodS0aPULoS318rOq7QPJIAGSeze9Sy2Ek2lrYzakrWoVVH+jkEgYwCc+wp6W XkLW7K3gNybe8yc/Mv8AI1leK7hrvxE0UHzFFWMBe7en5mt3T9Oj03eLS/CJJ99REcH8Scj8KuWO k2FvN9pjUSS5J3+hPU//AK80XSk5Cs3FRG61GbXwjLBkkxQImfpgVleAnJF/k5/1f/s1bOsW7Xtu 0DXQhgcYceVuzznrniqOl6V/Z0kn2G+VRKBvXyCc46Yy3B5NJfC0U/iTMPxRIf8AhKWGeP3fH4Cp PESX+jairxzu1tIdyE8DrypPf/A1oXmhW95eSXFzfBp3xlvJIxgADGG9q1bqwGo6S9tfziUnkSiP ZtIHBxnr/jVc1rEct7lrR9Qt9Q02Ke2VUXGGjUYCN3H61d3Vzej6Uum3A+yaiSjH95F5Rw/5ng+9 b++snFX0Not21Jd1G6ot9G+lyjuS7qN1Rb6N9HKFyXdXP+MznRo/+vhf5GtvfWD4wbOkR/8AXdf5 GqitSZv3WcjS0UV1HAFJS0YoASilpKACiiigDn6Wm0uaDrFpabS5oAWlpM0ZpiHUUlLQAtLSUUCH UHpSUvamB6T4YbHhyyH+wf5mtXfXk8eqavBGsUGoSxxoMKqnAAp/9s65/wBBSf8A76rFxLueq76N 9eV/2xrn/QUn/Oj+2Nc/6Cc//fVLlDmPVN9G+vLP7X1z/oJz/wDfVKNX1v8A6Cc//fVHKLmPUt9U WQNeZPTdXnn9ra3/ANBOf/vqk/tXWev9pTZ9c0+UOY9OZlkYoygjHemSO0VuFU89AfavNRqmtDpq Uw+jUv8AamsnrqU5/wCBUuUXOekWqhULnlietNvP3gUDnFedDVNZ7alOB/vUv9p61/0E5/8Avqjl DnR6QD/om3/ZxUdkNm/3xXnn9paz31Kc/wDAqmS91cjK6jMM/wC1RYOdHoNyd0DD6fzpln8iN9a4 T7Zq5HOozn/gVC3erdtQmH/AqVhe0R6DK2YnHqpqCyGzf74riPtOrH/mIz/990qz6rnjUJh/wKgP aI7uNgpkPq2ahjkb7S0nY8H6Vxgm1X/oIT4/3zSrJqv/AD/zf99UtOwe0R2N4N7qfarMTYiQeiiu GL6oeuoTH/gZpwk1X/oIT/8AfZoug50dbGuL0t/tGrThZFKsMg1wpl1QNxfzfXdSGfVh/wAxGf8A 77NMPaI7WcH7KEJyRiktT5ULn3riDcaseuozn/gdM+06r0/tCb/vqj5B7RHoG1TIsgGCBVa6XdOD 7CuI+2av/wBBKf8A76ppu9WP/MQmP/Aqdg9ojvbqUsvlr360+3jEKf7R61579r1fP/IQm/76pft2 sf8AQSn/AO+qLB7RHdXa75gfarMpyqj/AGh/OvOze6v31GY/8Cpft2sd9SnP/AqLBzo9AupD5ewH 73WnQuTCFbqBivPDe6ueuozE/wC9R9u1gf8AMSn/AO+qLD9oju7Vdk5PsanujugIrz0Xurg8ajMP o1BvtYI51Gc/8CosLnR39oAsTKehNRBTbT7l6f0rhRfawOmozj/gVBvdYPXUZz/wKi3kHOj0Vtsi YYAg0Rfu4wuenSvOhf6xjjUp/wDvqj7frH/QSn/76osP2iPSN9UrhQbkN9K4T7frH/QSn/76pDe6 ueuoTE/71Fhe0R39zKZB5S8jvT7eJYVzj5j1NeeC91ftqMw/4FTvt+sf9BKf/vqiwc6PQ3O2RZB1 6GknmYREYIJ4rz37drGP+QlP/wB9UG+1c9dRnP1aiw/aI760jCAuep6VJdHdAR7158L7WP8AoJTj /gVBvdYPXUZz/wACosL2iPQLT5Ice9OuTugYfT+deei91cDjUZx/wKl+26ueupT4/wB6i3kHtEd9 Z/JEfrUQUC93Y71wwvNXHTUZx9GpPtmr5z/aE2f96iwe0R6K2HUqwyDUMoP2Qoe3H61wX23WP+gl P/31R9s1cjnUZz/wKiwe0R3tn8kR+tSqwRCenJP6154LzVx01GcD/epftmr451GfH+9SsHtEd1BI 3nMx6N1pLxd8in2rhRd6v21GYf8AAqU3erHrqExP+9Tt5B7RHom+kkO6Nl9QRXnovNX/AOglP/31 R9s1f/oJT/8AfdKwe0R38ey3jA4Hr71Ej7rvevAI5rhDd6qTzqEx/wCBUoutXHI1GYfRqLeQe0R2 94u+UH/ZqyrAIikZ4rz83WrHrqEx/wCBUC61br/aE+f96i3kHtEegRqI9wH3Sc4qtbDZOW9jXE/b NX/6CU//AH3TDdat/wBBCb/vqi3kHtEdzJuuph/dFW0wihV4ArzsXmrg4GoT5Po1WDPqyJh9SnLn qN/SgPaI7G5UPcZPtVwNgYrz/wA/Vic/2hNn/epZLvVIky2oz5PQbzzR8g9ojtb0b2U+1SzHNqV9 hXnTahrBPOozf99Uf2jrOOdSnx/vU7D50ehWeI427c1YEmQD615mdQ1j/oIzY/3qX+0tZ/6CU/8A 31Ryhzo7+dd10D7ipro7oMe9ecnUdYz/AMhGbP8AvUHUtZI51Kc/8Cot5Bzo9Dhk8m24654pkMPm ymR+ec/WvPv7Q1j/AKCE350o1LWgP+QlP/31RbyDnR6W2HQqehGKakp2gY6cGvN/7S1r/oJz/wDf VH9paz31Kf8A76o5Q50d8V8+5y3T+lWpiDAy9sV5sNR1gHjUZh9Gpf7R1k/8xKf/AL6osHOj0OzG xW9zUsihmVh95TnNebjUNZHTUZx/wKnf2jrP/QSn/wC+qLBzo768G+RT7VM3Npt/2K86N/rB66jO f+BUv2/Wcf8AISnx/vUWFzo9AswFRh6mmPmC43R8A84rghf6wOmozj/gVBvtXPXUZj/wKi3kHOj0 aVt0DD1FQ2XyB/euA+36zj/kJT/99UC+1gdNRmH/AAKiw/aI7yZd12G9xT7qUv8Au1PHeuAN7q56 6jMT/vUgvdXB/wCQjN/31RbyFzo9Et4xDHgdT1qbfXnH2/WP+glP/wB9UfbtY/6CU/8A31RYftEe j76N9ec/btY/6CU//fVH23WP+glP/wB9UWD2iPRt9G+vOftusf8AQSn/AO+qPtusf9BKf/vqlYPa I9G31h+LGzpUf/Xdf5GuV+26x/0Ep/8Avqhp9QnGy5vJJkBztc5GaaRMqiaHUUUtaHOJRilpKADF JS0UwEopaSgDnqKKKR1i0tNpaYC0tNpaBDqKSimA6lptLQA6ikozTEdEfDtkkFvI+rbTNCsu37OT jI6ZzTf7B0//AKDH/ks3+NW7v/j20/8A684/5VVrFXa3E3Z7Cf2FYf8AQY/8lm/xpf7DsP8AoMf+ Szf40UU9e4ubyD+w7D/oMf8Aks3+NL/Ylh/0GP8AyWb/ABpKKNe4X8hf7FsP+gv/AOSzf40v9i2H /QX/APJZv8abRRr3C67Dv7G0/wD6C/8A5LN/jS/2PYf9Bf8A8lm/xplFGvcV12JP7I0//oLf+S7f 40v9k2H/AEFv/Jdv8aioo17hddiX+yrD/oLf+S7f41ImnWCDH9q5/wC3dv8AGq1FFn3DTsXPsWn/ APQT/wDIDUotNPH/ADEv/IDVSoos+4tOxfFtYD/mJf8AkBqUQaf/ANBH/wAgNVFEeRwkaM7HoFGS ake0uYkLyW8qKOrMhAFK3mOy7FwRaf8A9BH/AMgtShNPH/MQ/wDILU7Q9OsdTee3ubs28+0GAn7r Hvnj6Umu6da6XdRWtvLJK4jBmZhhS3+zx0/Oouublu7lcnu81g22H/QQ/wDILUbdP/5//wDyC1Sa xpFvaTW6adPJeCWLecITj6Y/z+dZ/wBgvP8An0n/AO/ZoVmr3E42drFsx2H/AEEP/ILU0waf/wBB H/yC1Svpdovh0X/2p/tYl2PBt4HOOfTjB5rNaGVI1keJ1RvusVIB/GmrPZg4pdC2bbTz/wAxL/yA 1NNpp5/5iX/kBqqIjyOERSzHoFGSaHR43KOpVh1DDBFVbzFZdi19j0//AKCf/kBqQ2Vgf+Yn/wCQ GqsiPI4RFLMegUZJoeN4nKSIyMOqsMEUWfcLLsWfsNh/0E//ACXak+wWH/QU/wDJdv8AGo0tLmVA 8dvK6noyoSKhos+4WXYtf2fp/wD0FP8AyXaj+z7D/oKf+S7f41A8UkYVnjZQ4ypYYyPamU7PuGnY s/2fp/8A0FP/ACXaj+z7D/oKf+S7f41Woos+4tOxZ/s+w/6Cn/ku3+NH9n2H/QU/8l2/xqtRRZ9w 07Fn+z7D/oKf+S7f40f2fYf9BT/yXb/Gq1FFn3Hp2LP9n2H/AEFP/Jdv8aP7PsP+gp/5Lt/jVaii z7i07Fn+z7D/AKCn/ku3+NH9n2H/AEFP/Jdv8arUUWfcNOxZ/s+w/wCgp/5Lt/jR/Z9h/wBBT/yX b/Gq1FFn3DTsWf7PsP8AoKf+S7f40f2fYf8AQU/8l2/xqtRRZ9w07Fr7Bp//AEFP/JdqlutJsba4 eFtU5XH/ACwbuM+tUKvaz/yFZv8AgP8A6CKWt7XHaNtiP7Bp/wD0E/8AyA1H2Cw/6Cf/AJLt/jVW nIjyOERSzHoFGSadn3Fp2LP2Gw/6Cn/kBqPsOn/9BP8A8gNVbY/meXsbfnbtxzn0xTjBMHZDE4ZB uZdpyo9TSs+47LsWPsWn/wDQT/8AIDUn2LT/APoJ/wDkBqrIjyOEjRnY9AoyTTkgmkkMaROzr1UK SR+FFvMLLsT/AGLT/wDoJ/8AkBqPsVh/0E//ACA1V5IpIW2yxtG2M4YYNSLZ3TqGS2mZTyCEJBo+ YWXYl+xaf/0E/wDyA1H2LT/+gn/5AapNP03ztRggv/NtYZW2mRkI5wcAZ96h1K2is9Rnt4ZTLHG+ FcrgkUr62uPlVr2HfY7D/oJ/+QGo+x6f/wBBP/yA1QPbzxxLK8Mixv8AddlIB+hrQ1DTbO20iyvL e7aWWcfvE28Kcc8+x4obtbUFFPoV/sen/wDQS/8AIDUfY9P/AOgn/wCQGqmqs7BVBZicAAck1JNb T25AnhkiJ6B1K5/OnbzFZdix9k0//oJf+QGo+yWH/QT/APIDVVEUjRmQRsUXgsBwPxpFR33bEZto 3HAzgetFvMLLsWvsdh/0E/8AyA1J9isP+gn/AOQGqsiPI4RFLMegUZJp3kTCXyfKfzP7m05/Ki3m Fl2LcNrp0JLf2jubsfIbig29gTk6ln/tg1Utj+Z5ext+du3HOfTFPFtOZGjEMm9RkrtOQPpRbzCy 7FwQ6eP+Yj/5Aaq72FlIxZtWyT/07t/jVdVZ2CqCzE4AA5JpXR43KOpVh1DDBFFvMNOxL/Zlh/0F f/Jdv8aT+y7D/oK/+S7f41DRTs+4adi3daHY21w0LatyuP8Al3Ppn1qL+yrD/oLf+S7f41Y1n/kK zf8AAf8A0EVRpRu0ncbsnsS/2VYf9Bb/AMl2/wAaP7K0/wD6Cv8A5Lt/jUVPeKSNVZ42VX5UkYDf Snr3Fp2H/wBlWH/QW/8AJdv8aP7K0/8A6Cv/AJLt/jTDFIIhKY2EZOA+OCfrSPG8TlJEZGHVWGCK Ne4adiT+y7D/AKCv/ku3+NH9l6f/ANBX/wAl2/xpjxSRqrPGyhxlSRgEe1Pe0uYkLyW8qKOrMhAo 17/kGnYX+y9P/wCgr/5Lt/jR/Zmn/wDQV/8AJdv8aZFBNOSIonkx12KTipDY3gGTaT/9+zS+f5BZ dhP7M0//AKCv/ku3+NL/AGbYf9BX/wAl2/xpqWlzKgeO3ldT0ZUJFQ09e/5Bp2LH9m6f/wBBX/yX b/Gj+zbD/oK/+S7f41E8UkYVnjZQ4ypYYyPanPbTxxLLJDIkb/ddlIDfQ0a9/wAgsuw/+zrD/oKf +S7f40f2dp//AEFP/Jdv8aiMUixiQxsEbgMRwfxplFn3DTsWf7OsP+gp/wCS7f40f2dp/wD0FP8A yXb/ABpktpc26hpreWNW6F0IB/OmJFJIGZI2YIMsVGcD3pa9/wAgsuxN/Z9h/wBBT/yXb/Gj+z7D /oKf+S7f41AiPI4SNGdj0CjJpACxCqCSeAB3p2fcNOxZ/s/T/wDoKf8Aku1H9n2H/QU/8l2qF4Jo 3EckTo7dFZSCaa8bxOUkRkYdVYYIo17hZdix9gsP+gp/5Aaj7Bp//QU/8gNURtpxKIjBIJGGQmw5 I+lRkFSVYEEcEHtSs+4WXYs/YbD/AKCn/ku1L9h0/wD6Cf8A5Aaq8kUkLbZY2RuuGGDTKdn3FZdi 39h0/wD6Cf8A5AanPptp9inuIr/zDDt+TySM5OOtUquQf8gm/wD+2f8A6FSd11HZdjPo/GkpasxC kpaSgA4ooooAMUUUUActHMV4PIqcEMMg5qpTlYqcg4qFI7WizRmmJIG4PBp9WSLRSUtMBaM0lLQI WlpoNLmmA6ikzS5oEdZd/wDHtp//AF5R/wAqq1auv+PbT/8Aryi/lVWs47Ey3CiiimSFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAdH4G/5GNf+uT/ANK0/EN34mhtr0T28S6ezMgf5SdhOB0Oe47Vj+Db mC115ZLiaOFPKYbpGCjP1NXNZ0yCVby6XxJbSqS0q24lBzzkKPm/pXJNL22vl0OmLfstC8Jf+EX0 CwWxt1bUdRwS0g5yQOPw3AY/Gqes3HiZtEli1ayjMHy5m+Xcp3DHQ9+nTvU1vPp3iPQrOylvUsL6 y2rG7kDOAAMHjOcDpzkfnNrLx2PhCbT7jVY7y7Z1YfvNzEbgfUntULSSutblPWLs9LD/ABLqtzpH 9lXNoVEht3Q7lyMHYf6VPq3iC/s/DWn38LR+dcbd+VyOVJ6VjeMru2urfSxb3EUxjiYOI3DbTheu OnSjXby1m8IaVBFcxPLHt3xq4LL8p6jtRGmmoXXX/MHNpysyy0z3Pw7up5MF5bgu2B3MgJrobqKL UNNGkvgNcWe+PIzgjHP4ErXKx3dsPh7Lam4iE5lyIt43kbwenWr+pa1bW+raHcQXUUixoUm2SA7Q cA5x+f4VMoNvTuylJJa9kQeDrYafbXWq3CFHLi2jDAg5LAH9SB+Bqh45/wCRjb/rklaviPVrL7Zp tlY3EDQC5E8zRuCoJbPJHHdifwrG8ZXEF1rzS280cyeUo3RsGGfqK1p3dTnfW5nOyhyroWfBcEcU 15q04/dWUJIJHcjt+AP51N40iW8tdP1qJcLcRhG9jjIH/oX5U+z1Sx0LwnBGEtr2a6ctNB5oOAf7 w57BRipRq+na34XvLNkttPeL5oYRIFBP3hjOBycg/X3qW5e09pbS9vkNcvJyXJ59WutH8F6XPaFA 77UO5cjGCf6VXvzF4l8JSaq8Mcd7ath2QY3YxkfTDZ+tPaLT9X8J6fZPq9payRYZhJIuRwRjGR61 U1W/07SfDn9iadci6lmO6aaM8dQTyPXAGPTr7qKV9Frf8Cm9NXpYd45/49dI/wCuTfyWuRrqfGV3 bXVvpYt7iKYxxMHEbhtpwvXHTpXLV0UFamjCt8bCiiitjIKKKKACiiigAooooAKKKKACiiigAooo oAKvaz/yFZv+A/8AoIqjV7Wf+QrN/wAB/wDQRS+0h9CjVmwvZNPv4buL78TBseo7j8RxVaim1dWY k7anpTadZXGrweJg4FsLcyvnuwHBP4E/iorP8KahJqmuareSZHmRjaP7q54H5VnxX0C/D2W1+1xi cyYEXmDfjeD06461X8G6ra6bqMqXbiOO4QJvPRTnjPt71w+zfJLrbReh2c65o/eQeDv+Rps/+B/+ gNXReGM/8JRruOvmvj/vs1Fpmi6b4fv/AO1Z9YgkhjVjCARk5HseeCelV/C2qWv9s6rdzzx263BL p5rherE45+tOo+fmcey/MUFyWT7/AKGlNNqE3hnUW8QwQREIfIzjJbHHH1xiqng3Xr68vI9NlKeR DB8oC4PGAOaraTqFvrPh670zVruMTR/NBLcSAHJzjBJ7H9DiqXgq5gtdcMlzPHCnksN0jhRnI7ml ye5NNa/1sHP70WmaEWu32o+KrayuGQwwXjbNq4PG4D9K0Lawtrjxjq19coJPsYjZFPTJTr+G2uZ0 64hTxktw8yLD9qdvMLALjJ5zW9ba7YW3i3U0mnjNreCMCZW3LkKB1Hbk89sUTg18K6fqEJJ/E+v6 GTdeNdQu4riCWGAwToybNvKgggEH1FW9c/5EPSf99f8A0FqivvCdhYW73cmtRmFkZ4FAG6XA4A55 7dP0o1m7tpfBWmW8dxE8yOpeNXBZflbqOoq/cbjyLqT7yT5+xZ0gxaF4PbWoYVe8nJUO/O0biuPp xn3qx4d1iXxN9q0vVUjmBiLqwQDHOPzGRj6VU0a5sNW8Ltod1dJaTI+Y2cgBstuHX3JGKsWMWneD oLi5mv4bq8kTbHHH6dcd8AkdT6VEkveTXvX0Li3o0/dtqaHhcx2fh1YrkrtNy8LHsSTj9TVfRNLO kXuuWvPl+UrRE90IfH+H4Vkm+gk8BSwvcxG5efcY943n5wc461uad4jsbzQGmu7qGK7SBo5FdwGY gdQO+evHc4qJxkuZ92VGUXZdkYPguCOKa81acfurKEkEjuR2/AH86veJLho5NJ8TWi43KAwJ9sgf kWFRWeqWOheE4IwltezXTlpoPNBwD/eHPYKMVKNX07W/C95Zsltp7xfNDCJAoJ+8MZwOTkH6+9aS 5nPntpt8iFZQ5b67/M1W06yuNXg8TBwLYW5lfPdgOCfwJ/FRWf4U1CTVNc1W8kyPMjG0f3VzwPyr PivoF+Hstr9rjE5kwIvMG/G8Hp1x1pPA13a2t1efabmKAPGAplcKDz71Lg1CV+mi9B8654+epl+G P+Rksf8Arp/Q1L4u/wCRovfqv/oC1fs9KsdH1axuhrdncgThWCOo2jB5PPTj9azPFM0Vx4ju5YJU ljYrh0YEH5R3FdEWpVbrt+pi1anZ9zJooorcxL2s/wDIVm/4D/6CKo1e1n/kKzf8B/8AQRVGlH4U OW7Cu00jHiXwpLpTkfarTBhLen8P9Vri63/Bl1Daa8JJ50hjMTAtI4UduMms6yvC63WppSdpWezN LxDdx2t1pmg2rZitWjMh9W4xn+f41V8ff8h+P/r3X/0Jqx7+5H9v3F0rCUC5Z1O7IYBsjn0rq9V0 /T/FcsOoWurQwlYwkiSdVGSemQR3+tY2VNxbNLuakkVdc/48vCv/AFzX+UddLeTayuvW8VtBG2nl R5zvgY5OffpjtXKeIdRsJL7SbKzmWSGw2qZQfl/hHXvgL1rR1DxHHbeL7Zob1ZbF4lSUJKGQEk89 cZHH4Vk4ScVp3NFJJvXsZWoa5JoviPUTpJhEUrLuwuRkDnH4k1t+K9fv9JFmLVkHnxkvuXPPH+Nc n4kt7O31mX7BNDJbyAOvksGVc9Rx79vcVqeNby1u/wCz/s1zFNsjYN5bhtvTriteSLlDT+rGfPJK Wppz6tdaP4L0ue0KB32ody5GME/0qvfmLxL4Sk1V4Y4721bDsgxuxjI+mGz9ae0Wn6v4T0+yfV7S 1kiwzCSRcjgjGMj1qpqt/p2k+HP7E065F1LMd000Z46gnkeuAMenX3iKV9Frf8C29NXpY1tUNsNY 8OG72eVsfO/pnau39cVF4nl8Q2y3hCxXGmzIVwFBMSkYz2OffkVX106Zq82k2z6pBEiwOGkVwwRs LgHnjkd/SrtqF8L6TONR1VLuGVP9Hh654xheehyPYVC0UX17fMp6trp3+Rl65/yIek/76/8AoLUe FILey0W+11oRLcW5ZYw3RcKDx9c9fSotZu7aXwVplvHcRPMjqXjVwWX5W6jqKXwtqFi2lXujX862 63GWSVjgZIAPJ4GMA1rZ+yfr+FzNNe0XoW/D3ie71fVP7O1JIpoblWAXyx8uBnH0wD+dX/DkcWjL rCMQIbe5656Jj/CqWmaVpnhe5Oo3uqwzMqkRJGOTnjOMk98fjVew1aG50PXpbieKKa6ZmSJpAGOR wAO/pUSipX5Fpp+ZUW1bm31NXTtJGmeNppIh/o91bPJHjoDuXI/z6isHw5YC88XSyOP3VrI8rZHG QeP1Ofwra8J6/ZyaXHBf3MMM1p8iNK4XcnbGcdOn4CqOlanY6Ro+o6gHguLi6nO2DzMMyZwMjqOr Hp6Ue+uZddEHuuz6bk3iWddV0G112zyrW0xwe4G7AP5hT+NXfsNv4nOlayNq+Wf9IX6c4/76H5Gq ek67peqWV7pk1va6XHJGSMOFVieCeQBkcf5FUfD97DaeGNXt5buKKYh/LQygFjtx8vPP4UcslGy0 af4MfMm77p/mi9peq/2v47eVWzDHE8cX+6O/4nmuauf+Rql/6/j/AOh1a8G3MFrryyXE0cKeUw3S MFGfqat6hpNjFfSanHrdnMTciTyUdScM49+wOfwrVWhO3kZazhfzG+Pv+Q/H/wBe6/8AoTVzFdF4 2ure71uOS2njmQQKC0bhhnLcZFc7WtH+GjOr8bCrkH/IJv8A/tn/AOhVTq5B/wAgm/8A+2f/AKFW ktiEZ1LSUUzIWikFFABRRRQAUUUZoA5GlpKXNZHcKKkSQjg8ios06qQiwCDyDmlqupIOQalVwevB q0ybD6Wm0tMQtLTaWmA7NLTaWmI626/49dP/AOvKL+VVqs3X/Hrp/wD15RfyqtWcdiJbhRRRTJCi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACr2s/8hWb/AID/AOgiqNXtZ/5Cs3/Af/QRS+0h9CjR RRTEFFFFABRRRQAUUUUAFPjfy5Ufar7WB2sMg+x9qZRQBq6tr0mqW0FqlrBa28BJWOJcDJ7/AOfW sqiilGKirIbbbuwooopiCiiigAooooAKKKKACiiigAooooAvaz/yFZv+A/8AoIqjV7Wf+QrN/wAB /wDQRVGlH4UOW7CiiimIKKKKACiiigAooooAKKKKAHxSeVMkmxX2MG2uMq2OxHpWlrOuvq8dvD9l htobcEIkY6Z/px0rKopOKbTY1JpWCiiimIKKKKACiiigAooooAKKKKACiiigAq5B/wAgm/8A+2f/ AKFVOrkH/IJvv+2f/oVTLYaM6iiiqMgoopKAFopKWgApKKKAORpabS1kdw4UtNFLTAdS00UtUIkV yPcVICCODUIpRkU0xWJaWmB/WnVRI6lpuaWmB6WfCGrXVlYPEkRC2kanMmOcUz/hBta/uQ/9/BXT aVeXB0LTWMrZaziJPqdoq19ruP8Anq1eb7eotNDo9jB6nH/8INrX9yH/AL+Cj/hBta/uQ/8AfwV2 H2u4/wCerUfa7j/nq1L6xV8g9hA4/wD4QbWv7kP/AH8FH/CDa1/ch/7+Cuw+13H/AD1aj7Xcf89W o+sVfIPYQOP/AOEG1r+5D/38FH/CDa1/ch/7+Cuw+13H/PVqPtdx/wA9Wo+sVfIPYQOP/wCEG1r+ 5D/38FH/AAg2tf3If+/grsPtdx/z1aj7Xcf89Wo+sVfIPYQOP/4QbWv7kP8A38FH/CDa1/ch/wC/ grsPtdx/z1aj7Xcf89Wo+sVfIPYQOP8A+EG1r+5D/wB/BR/wg2tf3If+/grsPtdx/wA9Wo+13H/P VqPrFXyD2EDj/wDhBta/uQ/9/BR/wg2tf3If+/grsPtdx/z1aj7Xcf8APVqPrFXyD2EDj/8AhBta /uQ/9/BR/wAINrX9yH/v4K7D7Xcf89Wo+13H/PVqPrFXyD2EDj/+EG1r+5D/AN/BR/wg2tf3If8A v4K7D7Xcf89Wo+13H/PVqPrFXyD2EDj/APhBta/uQ/8AfwUf8INrX9yH/v4K7D7Xcf8APVqPtdx/ z1aj6xV8g9hA4/8A4QbWv7kP/fwUf8INrX9yH/v4K7D7Xcf89Wo+13H/AD1aj6xV8g9hA4//AIQb Wv7kP/fwUf8ACDa1/ch/7+Cuw+13H/PVqPtdx/z1aj6xV8g9hA4//hBta/uQ/wDfwUf8INrX9yH/ AL+Cuw+13H/PVqPtdx/z1aj6xV8g9hA4/wD4QbWv7kP/AH8FH/CDa1/ch/7+Cuw+13H/AD1aj7Xc f89Wo+sVfIPYQOP/AOEG1r+5D/38FH/CDa1/ch/7+Cuw+13H/PVqPtdx/wA9Wo+sVfIPYQOP/wCE G1r+5D/38FH/AAg2tf3If+/grsPtdx/z1aj7Xcf89Wo+sVfIPYQOP/4QbWv7kP8A38FH/CDa1/ch /wC/grsPtdx/z1aj7Xcf89Wo+sVfIPYQOP8A+EG1r+5D/wB/BR/wg2tf3If+/grsPtdx/wA9Wo+1 3H/PVqPrFXyD2EDj/wDhBta/uQ/9/BR/wg2tf3If+/grsPtdx/z1aj7Xcf8APVqPrFXyD2EDj/8A hBta/uQ/9/BR/wAINrX9yH/v4K7D7Xcf89Wo+13H/PVqPrFXyD2EDj/+EG1r+5D/AN/BR/wg2tf3 If8Av4K7D7Xcf89Wo+13H/PVqPrFXyD2EDj/APhBta/uQ/8AfwUf8INrX9yH/v4K7D7Xcf8APVqP tdx/z1aj6xV8g9hA4/8A4QbWv7kP/fwVZ1Hwbq9zfSTRpFtbGMyewFdP9ruP+erU+a6nWVgJGAo+ sVL9B+whY4z/AIQbWv7kP/fwUf8ACDa1/ch/7+Cuw+13H/PVqPtdx/z1aj6xV8hewgcf/wAINrX9 yH/v4KP+EG1r+5D/AN/BXYfa7j/nq1H2u4/56tR9Yq+Qewgcf/wg2tf3If8Av4KP+EG1r+5D/wB/ BXYfa7j/AJ6tR9ruP+erUfWKvkHsIHH/APCDa1/ch/7+Cj/hBta/uQ/9/BXYfa7j/nq1H2u4/wCe rUfWKvkHsIHH/wDCDa1/ch/7+Cj/AIQbWv7kP/fwV2H2u4/56tR9ruP+erUfWKvkHsIHH/8ACDa1 /ch/7+Cj/hBta/uQ/wDfwV2H2u4/56tR9ruP+erUfWKvkHsIHH/8INrX9yH/AL+Cj/hBta/uQ/8A fwV2H2u4/wCerUfa7j/nq1H1ir5B7CBx/wDwg2tf3If+/go/4QbWv7kP/fwV2H2u4/56tR9ruP8A nq1H1ir5B7CBx/8Awg2tf3If+/go/wCEG1r+5D/38Fdh9ruP+erUfa7j/nq1H1ir5B7CBx//AAg2 tf3If+/go/4QbWv7kP8A38Fdh9ruP+erUfa7j/nq1H1ir5B7CBx//CDa1/ch/wC/go/4QbWv7kP/ AH8Fdh9ruP8Anq1H2u4/56tR9Yq+Qewgcf8A8INrX9yH/v4KP+EG1r+5D/38Fdh9ruP+erUfa7j/ AJ6tR9Yq+QewgcxqPg3V7m+kmjSLa2MZk9gKrf8ACDa1/ch/7+Cuzmup1lYCRgKZ9ruP+erULEVE ug3Qg2cf/wAINrX9yH/v4KP+EG1r+5D/AN/BXYfa7j/nq1H2u4/56tR9Yq+QvYQOP/4QbWv7kP8A 38FH/CDa1/ch/wC/grsPtdx/z1aj7Xcf89Wo+sVfIPYQOP8A+EG1r+5D/wB/BR/wg2tf3If+/grs Ptdx/wA9Wo+13H/PVqPrFXyD2EDj/wDhBta/uQ/9/BR/wg2tf3If+/grsPtdx/z1aj7Xcf8APVqP rFXyD2EDj/8AhBta/uQ/9/BR/wAINrX9yH/v4K7D7Xcf89Wo+13H/PVqPrFXyD2EDj/+EG1r+5D/ AN/BR/wg2tf3If8Av4K7D7Xcf89Wo+13H/PVqPrFXyD2EDj/APhBta/uQ/8AfwUf8INrX9yH/v4K 7D7Xcf8APVqPtdx/z1aj6xV8g9hA4/8A4QbWv7kP/fwUf8INrX9yH/v4K7D7Xcf89Wo+13H/AD1a j6xV8g9hA4//AIQbWv7kP/fwUf8ACDa1/ch/7+Cuw+13H/PVqPtdx/z1aj6xV8g9hA4//hBta/uQ /wDfwUf8INrX9yH/AL+Cuw+13H/PVqPtdx/z1aj6xV8g9hA4/wD4QbWv7kP/AH8FH/CDa1/ch/7+ Cuw+13H/AD1aj7Xcf89Wo+sVfIPYQOP/AOEG1r+5D/38FH/CDa1/ch/7+Cuw+13H/PVqPtdx/wA9 Wo+sVfIPYQOP/wCEG1r+5D/38FMvfDuoaRod5LdrGFYxgbXz/FXZ/a7j/nq1Yniy6mfRnR5CVOCR /wACFVGtUlJJkzpQjFtHBUUtFdx54lFLS5oGNoxS5pc0ANxRilooA4+lptLWR2jhS00UtUA4UtNp aYh1Lmm0tMBwpwJFNFLVCJA2aWo6UNTuTY9r0j/kAaX/ANeUP/oAq3VTSP8AkX9K/wCvKH/0AVbr yHuztWwUUUUhhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAyaTyoXkxnYpbHrgVleFddPiXw9 b6sbcW5nLjyw+7G1ivXA9K0rv/jzm/65t/KuK+GGs6XH4Q07Tn1G2W8LSAW5lUSEmRiPlznpzS6j JfD+t2uneFddubLT2jj0m6nXy3uWkMrLgk7mGRkn3py+ONUttNttY1Lw40elTxpIbm2uhKYlbGCy YB71i6X/AMiJ43/6/rv/ANBFTXPifR0+FkGmx3kNzfT6dHbJawsHk8xkC42jkYJ/SlcDotZ8WT2e p6RY6VYxag2qxvJC7XHlrgKGznaeoo1fxNqeg+F7nV9S0iJJoZVVYI7rcGUkDO7bx1PGO1chrmnC zv8AwVp2palJpfk2ciS3UU4iaIhB0c9OePxq/wCMvsSfCy6hsdZfWEinQNcyXInckuDgsPTI49MU XYG/a+K76LXrPSNa0cWT36sbaWK5EyuVGSDwCOP51c0rxCdS8RaxpJthGNMMYEu/PmbwT0xxjHqa 5iK2l0f4i6WNau5tTS7gZdOuJiFNvIB8w2jAOQQM4zyPSn6Lq+m6V8QvFZ1G/t7QSNb7PPlCbsIc 4z16ii4Gvb3VrD8S7uyS0cXM+nrNJcGdiCFYKFCHgeuR7+tQJ4+hGi6pqE1ntks757KCBZNzXMgx tA44Jz6HAFQwusnxid0YMraKCCDwR5grkLCG40+S98UxI91DpWuXHn2uMjy2Cguo/vD19vrRcD1y xluZrKGW7gW3ndAXiV94Q+mcDNWKhtbqC9tIrq2kEkMyB0dehB6VNVCCiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKkuP8AXN+H8qjqS4/1zfh/KgCOiiigAooooAKKKKACiiigBksnlQvJ jOxS2PXFcroHijxHrZs7g+Flg0+5w32r7ejbV9duAT9K6e7khis5pLmQRwpGzSOTgKoHJ/KvNLh7 Lw9e6JH4S8S3F+8lylvJY/bRcRmM5yxUfdP5e2KTGjrNS8TX412bRtD0pNQuLWIS3LSXAiWPd91e hySOau+H/EA8Q+H11O3tmjlIZWt3blZF4K5+vf37Vzmn6jZaF8RvEn9q3cNmt3HbywPPIEDqFIOC ffjHtVv4ZwOnh26uyGEd/fzXMW5cHYcAH/x2knqBUPjfxONZGjnwcv24w+eIv7Sj+5nGc4x17ZzW 1Y+JbmfxPHoV1pwtpjpy3ch84PsYkApwMHBPXNZr/wDJZY/+wN/7UNVrrUbLTPi889/dw2sR0gKH mcICfMHGT34NAHeUVFb3EF3bpcW0yTQyDKSRsGVh6gipaoQUUUUAFFFFABRRRQAUUUUASXH+ub8P 5VHUlx/rm/D+VR0IAooooAKKKKACiiigAooooAzta1V9JsxLFY3F7M5IjhhXqcZySeFGB1NVdA8S R6v4Sj8QXMQtImSSSRd+4IqMwJzgdlzV3V9QstPsJHvbyC1V1ZVaaQIGbB4GTya4bwrLFqHwdm0y 0uIpb1bO5DW6SAyLl5CAVzkZ9/WlfUZpReO9QWKw1K90H7PpGoTiKKcXAaRA2drMuOAcev599DUv E1+Ndm0bQ9KTULi1iEty0lwIlj3fdXockjmuO1TUrDWvhnomhWN5DLfzm3g+zxsGdCOGLKOQBjqa 29P1Gy0L4jeJP7Vu4bNbuO3lgeeQIHUKQcE+/GPalcDo/D/iAeIfD66nb2zRykMrW7tysi8Fc/Xv 79q5w+N/E41kaOfBy/bjD54i/tKP7mcZzjHXtnNW/hnA6eHbq7IYR39/NcxblwdhwAf/AB2mP/yW WP8A7A3/ALUNGtgNKx8S3M/iePQrrThbTHTlu5D5wfYxIBTgYOCeua6GuDutRstM+Lzz393DaxHS AoeZwgJ8wcZPfg129vcQXdulxbTJNDIMpJGwZWHqCKaES0UUUwCiiigAooooAKKKKACsTxV/yCX/ AA/9CWtusPxX/wAglvw/9CWtKfxozq/AziaM0lFekeYLRmkzRmgBaKTNFAC0ZpM0ZoA5CikorI7h 1LSUtUIWlzTaWmA6lptKKYhwp1Mp1MQ6lFNzS0xHtukf8i/pX/XjD/6AKt0mh28L+HNKJL/8eUOO n9wVd+yQesn5ivIb1Z2paFOirn2SD1k/MUfZIPWT8xS5kOxToq59kg9ZPzFH2SD1k/MUcyCxToq5 9kg9ZPzFH2SD1k/MUcyCxToq59kg9ZPzFH2SD1k/MUcyCxToq59kg9ZPzFH2SD1k/MUcyCxToq59 kg9ZPzFH2SD1k/MUcyCxToq59kg9ZPzFH2SD1k/MUcyCxToq59kg9ZPzFH2SD1k/MUcyCxSIDAgg EHgg1nW/h3Q7SdLi20bT4JkOUkjtUVlPsQMit77JB6yfmKPskHrJ+YougsZKaZp8cE9uljbLDcsW mjEShZSepYYwSe+ajs9F0nTpDJY6XZ2rnq0MCoT+IFbX2SD1k/MUfZIPWT8xRdBYx77SdM1ModQ0 61uzHkIZ4Vk2564yOKYuhaOlk9kmlWS2sjb3gFugjZuOSuME8D8q2/skHrJ+Yo+yQesn5ildBYzL ixtLsxG5tYZzC4eLzIw3lsOhXPQ+4qrc+HtEvLh7i60awnmflpJbZGZvqSMmt37JB6yfmKPskHrJ +Yp3QWMtLCzjuhdpaQLcCPyhMIwH2f3c9ce1ENhZW0cscFpBEk7F5VSMKJGPUsB1J75rU+yQesn5 ij7JB6yfmKLoLGba2ltY2621pbxW8KZ2xxIEVcnJwBwOSTU1XPskHrJ+Yo+yQesn5ii6CxToq59k g9ZPzFH2SD1k/MUcyCxToq59kg9ZPzFH2SD1k/MUcyCxToq59kg9ZPzFH2SD1k/MUcyCxToq59kg 9ZPzFH2SD1k/MUcyCxToq59kg9ZPzFH2SD1k/MUcyCxToq59kg9ZPzFH2SD1k/MUcyCxToq59kg9 ZPzFH2SD1k/MUcyCxToq59kg9ZPzFH2SD1k/MUcyCxTqS4/1zfh/KrH2SD1k/MU+W2haQkl8/hSu gsUKKufZIPWT8xR9kg9ZPzFPmQWKdFXPskHrJ+Yo+yQesn5ijmQWKdFXPskHrJ+Yo+yQesn5ijmQ WKdFXPskHrJ+Yo+yQesn5ijmQWKTKrqVZQysMEEZBFUbLQ9J02VpbDTLS1kYYLQwKhI+oFbf2SD1 k/MUfZIPWT8xRdBYx77SdN1QINQsLa72fd8+JX2/TIq0qqiBEUKqjAAGABV77JB6yfmKPskHrJ+Y ougsZhs7U3ovTbQ/agnlifyxv25zt3dcZ7VBeaHpGozeffaVZXUoXbvnt0dsemSOlbX2SD1k/MUf ZIPWT8xRdBYz4IIbWBILeFIYoxhI41Cqo9AB0qSrn2SD1k/MUfZIPWT8xRdBYp0Vc+yQesn5ij7J B6yfmKOZBYp0Vc+yQesn5ij7JB6yfmKOZBYp0Vc+yQesn5ij7JB6yfmKOZBYp0Vc+yQesn5ij7JB 6yfmKOZBYr3H+ub8P5VHV+W2haQkl8/hTPskHrJ+YpXQWKdFXPskHrJ+Yo+yQesn5inzILFOirn2 SD1k/MUfZIPWT8xRzILFOirn2SD1k/MUfZIPWT8xRzILFOirn2SD1k/MUfZIPWT8xRzILGVe6dY6 lEsV/ZW93GrblWeJXAPqAR1pljpGmaYztp+nWlozgBzBAsZYe+BzWx9kg9ZPzFH2SD1k/MUXQWMa DRtLtr1r6DTrWK6fO6ZIVDnPXkDNLfaTpuqBBqFhbXez7vnxK+36ZFbH2SD1k/MUfZIPWT8xRdBY oqqogRFCqowABgAVEbO1N6L020P2oJ5Yn8sb9uc7d3XGe1af2SD1k/MUfZIPWT8xRdBYxbzQ9I1G bz77SrK6lC7d89ujtj0yR0q1BBDawJBbwpDFGMJHGoVVHoAOlaH2SD1k/MUfZIPWT8xRdBYp0Vc+ yQesn5ij7JB6yfmKOZBYp0Vc+yQesn5ij7JB6yfmKOZBYp0Vc+yQesn5ij7JB6yfmKOZBYp0Vc+y Qesn5ij7JB6yfmKOZBYp1h+K/wDkEt+H/oS11H2SD1k/MVz/AIyigi0ZuZNx6dMfeWtKT99GdVe4 zz+im5ozXpnmC5opM0UALmikzRQAuaKTNGaAORpaSisTtHUtNpapAOFLTaWmIXNLmm06mIdS03NL TAdS03NLTEe+eH/+RZ0n/rxh/wDQBV+qHh//AJFnSf8Arxh/9AFX68eW7O1bBRRRUjCiiigAoooo AKKKKACiiigAooooAKKKKAEdlRGdyFVRkk9hVWLVtOn05tShvreSyVWY3CygxgDqd3TjBq3Xkd3p N9aeJLr4e2Z2aXq1wl8rKcGG25MqDpgbkAA9OvWgDv8AVvEC2Q0y+hvtLj0q4c+fcXNxtLLjK+V2 Ynk/QfiH+GdbfWobuSS80y58u4ZYjYTbx5X8O/PRvWuWsbK01j4s6la31vHLb6JZwx2Nu6gpHkK2 7aeM88H0x6CpNStING+LegPpsaW39pQTpdxxKAsgVCVJA75xz7UgO0s9W07UJ54LK/t7mW3O2ZIp QxjOSMMB06H8qF1bTWhuplv7YxWbMly4lGIWX7wY9iPevI9MuD4dvZ/F9sjfZ4NYubDVl7GNpAyu AOu3cO3XArTsWV/CPxFdSGVtQvCCOhGKLhY7638V+HruYQW2uafNKwJCR3KMSACTwD2AJqP/AITT wt/0MWmf+Baf41zvw+lvrrStOt7zwjDa2a2KbNQM8bmb5QB8gGRuBJ5NUn8PaIPjDHYjR7D7IdH8 w2/2ZPL3+YRu24xnHegDr7HWZLzxFNaC502Sye1Se0EM+6eRTjLlemzngj8+eLOo+IdF0iVYdR1W 0tJH5CTTKpI9cE1ylvFFa/GdobeFI4otBCxxxqFVQJBgADoKq/C/TtP17Rb/AF7U7e3vr/ULqQXD TIJNi8fuxnOBgjj0I9qYHWy6vMPEdhax3GmmwvIGdC0/7+Vxz+7XoVA5J569sc6MN/Z3N1PawXUM lxbY86JHBaPPTcO2a4rXbWCy+JXgy2tolihijuVSNRgKPL6D2qXwl/yUrxn/AL1t/wCgNQB0UGpX TeKbrTZpdPEC26ywRpMTcnszMvZcnAx6e+Bbj1bTZra4uY7+3eG1ZlnkEoKxFRlgx7Y75rko/wDk t8v/AGA//aoriNOne5u7nQbx3tdH1LxFcLdXCsB5jAKVhJ6qGI6//XpXA9qtbq3vbZLm1mjnhkGU kjYMrD1BHWpaZDDHbwpDCixxxqFVVGAoHQCn0wCiiigAooooAKKKKACiiigAooooAKKKKACiiigA pz/fNNpz/fNADaKKKACiiigAooooAKKKKAEZgqlmIAAySe1Zdt4q8PXlylta65YTzSHakcdwjMx9 AAa0blGktZUUZZkIA98V5jojL4LGi2/iHwXZWzSMkCarE0UkgmOcbsLkH3BP40Aeh6lruk6MYxqe pWtmZM7BNKFLY64Bq1HdW81ot3FPG9uyeYsqsCpXGcg9MYriNGtrfV/if4pbUII7j7LFbwQrKgbY jKSQM+p5/GpPhUCfC9/YugNta6lPBCrDIMfBxz15ZqAN7/hNPC3/AEMWmf8AgWn+NX7fV9Nu7hLe 3v7eaaSETpGkoLNGejgd1561wL+HtEHxhjsRo9h9kOj+Ybf7Mnl7/MI3bcYzjvV61hitvjSYIIki ij0IKkaKFVQJBgADoKAO7ooooAKKKKACiiigAooooAKKKKAHP9802nP9802gAooooAKKKKACiiig AooooAZNNFbxNNNIscaDLO5wFHqTTLO9tdRtUurK4iubeTOyWJwytg4OCPcEVS17SLHWNPKX8Pnx whpFjZjsLBTjcOjY64PeuM8K3M1n8CDc27FJorO7ZGHVT5knP4daAO0g8SaHc6j/AGdBq9lLd7iv kJOpfI6jGeowePan6lruk6MYxqepWtmZM7BNKFLY64BrzLXNOtNO+EGganY2kS3tu1tcRyInzGQ8 nJHJyT0roNGtrfV/if4pbUII7j7LFbwQrKgbYjKSQM+p5/GkB28d1bzWi3cU8b27J5iyqwKlcZyD 0xisr/hNPC3/AEMWmf8AgWn+NYPwqBPhe/sXQG2tdSnghVhkGPg4568s1Zz+HtEHxhjsRo9h9kOj +Ybf7Mnl7/MI3bcYzjvTA7631fTbu4S3t7+3mmkhE6RpKCzRno4HdeetW64S1hitvjSYIIkiij0I KkaKFVQJBgADoK7ugAooooAKKKKACiiigAooooAK5rxz/wAgj/P95a6WuZ8c/wDII/z/AHlrWj/E RlV+BnnmaXNNzRmvVPMFpc03NGaAFzRmkzRQAuaKTNJQBylLTaWsTtFpaSimgHUtNpaoB1LTaWmI dmlFNpaYhwpabS0xHv3h/wD5FnSf+vGH/wBAFX6oaACvhrSQRgiyhyP+ACr9ePLdnatgoooqRhRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABWHN4aE3ja38TfayrQ2ZtTb+XkN8xO7dnj73TFblFAHM694 Pl1DWY9d0fVpdI1VIvJaZYllSRM5wyHg/wD6vQUaF4QksNYbXNY1WTV9VMXkrO0SxJGmc4VF4HXr 9fU101FAHOaV4NtbDRtX0u6nN3Dq11NcS/Js2iQAbRyemOtZ2ifDpNF8I6t4fTVGlGpF8TGDBiDK FHG75sY9R+FdpRRYDlPD3hfxFoklnDN4u+2adaJ5Ys/7Ojj3KFwo3glhjg/hV9vDe7xwvib7X92x +yfZ/L/2i27dn36Y/GtyigDDXw3t8cN4m+1/esfsn2fy/wDaDbt2fbpj8axpPAeo6fqN3c+GPE02 jw3shlntmtlnQMepUMfl/wD1egrtaKAOcm8JPNrug6rJqckr6PHIjebGGa4LrtyWBGPXoazrrwPr K+I9S1jR/FZ0w6iyGSIWCy/dXA5Zvr2HWu0oosBgQeGHi8ZDxHJf+Y/9nizaLysZO4MX3Z9umPxr Ph+HlodA1nSL26NxHql7Jdh1j2GBmxjHJzgjrxnpiuvoosBT0m1u7HSre1vb0XtxCmx7jy/L8zHQ kZPOMZ55PNXKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApz/AHzTac/3zQA2iiigAooo oAKKKKACiiigCK6iee0mhinaB5I2VZUALRkjAYZ4yOtckngfVdQvrSbxL4nk1a3splnht0tEgBcd CxXr9K7KigDlNY8H30+uTazoOvPo91dRrFdYtkmWUL0OD0OMDPtWx4e0K18N6NDplozukeS0khy0 jE5Zj9TWnRQBht4b3eOF8Tfa/u2P2T7P5f8AtFt27Pv0x+NZut+DNTv/ABT/AMJBpPiM6VObUWxA s1myu7J5ZgPTt2rrqKAK2nQXNrp8EF5eG8uEQCS4MYTzD67RwKs0UUAFFFFABRRRQAUUUUAFFFFA Dn++abTn++abQAUUUUAFFFFABRRRQAUUUUAZfiDTtU1OyWDStZ/sqTd+8k+yrPvXBG3DHjr19qyP C/gy60HRp9Ev9aGp6ZJE0UdubRYvLDEl/myS2dx69K6uigDh7L4d3cb2Vnf+I577RtPlWW2sWgVC GX7u5xywGTx/KruseD76fXJtZ0HXn0e6uo1iusWyTLKF6HB6HGBn2rq6KLAZnh7QrXw3o0OmWjO6 R5LSSHLSMTlmP1NVm8N7vHC+Jvtf3bH7J9n8v/aLbt2ffpj8a3KKAOR1vwZqd/4p/wCEg0nxGdKn NqLYgWazZXdk8swHp27V0unQXNrp8EF5eG8uEQCS4MYTzD67RwKs0UAFFFFABRRRQAUUUUAFFFFA BXM+Ov8AkD/5/vLXTVzXjmN30VmVchOp9PmWtaXxozq/AzzjNLmm5ozXqnljs0ZpuaM0AOzSZpM0 ZoAXNGaSkzQBy1FJRWJ3DqWm0oNMQtLSUUwHZpabS5piHClptLmmA7NLTaWmI9y0b/kXdJ/68Yf/ AEAVcqno3/Iu6T/14w/+gCrleW9zqWwUUUUhhRRRQAUUUUAFFFFAFPTNWsNZtDd6dcrcQB2TeoOM g4PWrlefWXifV4PCHifUU23Nxp+oSxQKUACICozgAZ2gk8+la/hCS5v44dQXxWdXgeHE8BhjXZIc H+EArjkbT60kx2OqorkfHeu3mkPpVtBeDTra+nMdxf8AlhzCBjAAPHOTz2xWzoMVxDZPJNrX9rQy NvgnKoMJgcZXhucnPvTuI1arX99b6ZYy3t0xSCEbnYKTgevFcHpHi3WJfFFneXdyraHq9zPbWiBV Aj2EBDuxkliCAM9zW34l1nUpNds/DGiPFDd3UTTT3MibxBEMjIU8Ekg/5OQrjsbtlq9hqNzPBZ3C ztbhTI0fzKNwJA3DgnA6e49au1zWj6RqWmajEF8SJeWmG861e3jUk44KlMYOccc8ZpvgjVr7VotY N9OZjbanLBFlQNqDGBwOetFxHT1lXviXSdOluYbu7WKW2VGaMg7mDfd2jq2TxxnmsbTfEVzH4k8V rf3Jax0pIpI02D92uxmboMnp71R0yDXvFFnFr17rUekJPlrO3it43Ma5OCWcZJPB4x+HSi4zu+tL XGa9qetaPZeHI21OOe4uNSjt7meKJVWZCT25A4xnHfOK6fV0vJNIu006Xyrwwt5D4Bw+Pl6g9/an cRcorkNO8XO3w0Ov3LA3UFuyyb8LmZTtGR2y2OPesnUtX1ywm8L2F/4gOnNe28j31zIkI2tgMASR tGCdv+NK47HotFZmgBjp5k/tsayjuSlwBHgDptBTg8g1keJNa1N9esvDOhyRwXlzE0891Im/7PEM gEL0JJB/ych3EdVWbP4h0m2nvoJbxVk06ETXShWJjQjIPA547Dnp61Q0zTtXs9UiaTxR/aFvhhNb zQRhiccFWXBGD254zVfwTqV3q8WstfyCdoNSlt0JRRiNQMLwOep60rgdJa3MN7axXVtIJIZkDxuO jKRkGpa88g1rxDe+D/ElzaXxF5p2oSrbkRJ8sSbSVxtwfl3dq19c8UTL4Dt9V00gXuorFHarxnzX xwM8ZHP5UXHY6yivP9V1bULfxnHotz4pGl2sempI08iwjzJd2Dywxk8nA9OlWfEt3rlpoekQaLrn 2m6vLgqt2Y4yJgUZlHA244AyKLhY7eiuCvfGd1e+GNC1Gwn+z3E+qQ2l7GFBKnDb0II46A+uCK1k 1a+PxNfSDOfsQ0zzxFtH394Gc4z096LhY231awj1aLSXuVF7NEZUhwclAcE+nr+R9KL3VbLTpreK 8nWA3JZY2fhSQM4LdAcfnWFrep3lr498O2MMoW3u1n85NindtTI5IyOfSqMt5qni/W9RsrK+j07S NLl8mSbyVkeeUZ3Ab+FAPt/PguB0h8Q6Wuhtrb3QTT1BJmZTggNtyBjJyemOuRitCKVJ4kljYMki hlYdwehrlLsato3hTWpJNcj1EQ25e1fyEV4sKeGx8rDgY49a2/Dd1Ne+GdMurh9801pG7tgDLFQS cDii4jTooopgFFFFABRRRQAUUUUAFSXH+ub8P5VHUlx/rm/D+VAEdFFFABRRRQAUUUUAFFFFABRU Vw7JbSupwyoSD74rg/Bt9qmsNY3Vx46guHdfMm0wW8QfHdSQc/jilcD0GiuOuLzV/EHi7UdI07VX 0y20uKPe0cSu0sjjIyWzgAdqueC9Zvdf8MyG8mUX9tLJazSonG9ejY6dCD6fSi4HS0V5w0fjBfGS +Hf+Exb5rL7V5/8AZ8X97bt2/h1zWzYajqsPxATQ7rUDcwR6QsrnylTzJQwBfjpnnjOKLjsddRRR TEFFFFABRRRQAUUUUAFFFFAElx/rm/D+VR1Jcf65vw/lUdCAKKKKACiiigAooooAKKKKACis3XDq v2AjSZLeGU53zTAt5agE5Cjqe3Jx/KsXwz4iun+Gqa/qUhuZ44J5ZGwFL7HfA4wOgAouB1lFebza x4k0nw/pniy71rz4LmWNrmzMCiNIn/ukDdkDHf8APvr3F5q/iDxdqOkadqr6ZbaXFHvaOJXaWRxk ZLZwAO1K47HY0VzXgvWb3X/DMhvJlF/bSyWs0qJxvXo2OnQg+n0rnWj8YL4yXw7/AMJi3zWX2rz/ AOz4v723bt/Drmi4WPR6K5Gw1HVYfiAmh3WoG5gj0hZXPlKnmShgC/HTPPGcV11MQUUUUAFFFFAB RRRQAUUUUAFYHjD/AJA7fh/6Etb9c/4x/wCQO34f+hLWlP40Z1PgZwNGaTNGa9I84WjNJmigBc0Z pKSgB2aM03NGaAOXpabmlrA7RaWm0tMB1FJS0xC0tNpaYDhS03NLTEOzS02lpge6aN/yLuk/9eMP /oAq5VPRf+Rc0n/rxh/9AFXK8x7nUtgooopAFFFFABRRRQAUUUUAcP4UW/0XSfEE8ukXczNq0siW 4j2vLGdo3KGxuGMn3xWd4fgh1fx1ba14f0W50qygWWK/MyLEJHx90ICeQ2M/T2r0aWMSxPGWZQ6l SUYqRn0I6GqWj6LaaJBLFamZjPKZZZJpWkd3IAySfYClYdyn4m1GOytkiu9Au9XtJgRIttCs208Y yhI65PPtXF2Fjq+leG/E1xpekXttb6kyJp9iVPnR7htdyBkrwc/8B7da9QooaC55jrXgbxLa+F4U g8QG9/sopPa2cdgqsGX+6wJJIBPXOTWrq0OrQ6zpPjOw0ue4JsxDfWONsyIfm4U9WBJ49h6k13NF FguebabbjVPiJpmrab4ZvtLtrdZjdy3NsId7sjAHr8xyf1qTwrql74fvNUsbnw5rUv2vVZZUmitC YwrEAEscccZz6V6LRRYLnEafolxeeJfGkF1BPBbajHFFHMUIDgxsCVJGDjNZK3F1YeG08OeI/CN9 qE1mrJbT2tsJ4mGCFbOeD+v0zivTaKLBc8wj0LVbbwh4Os5NPuPPtdWWSdFQsYk81zubGcDBHJr0 +iihKwjzG40DVP8AhKbnw7HYy/2Je6lHqEk/lFo9oUs8ZJ45YKAPbvWj47tWbxToN7Nol3q1jbpN 58Vva+f1AAyOnXB59K72iiw7mP4ZurW50wiy0W60eGKQqLe5thAT0JYKO3PX1zWN4msdT03xVZeK tMsnv0igNteW0Z/eeXkkMg7nJ6ew9Sa7GiiwjzbTbcap8RNM1bTfDN9pdtbrMbuW5thDvdkYA9fm OT+tWNKvb/wVe6vaXeganfR3l9Jc289hD5qsGxgHkYPA/WvQaKLDucv4G0a80/R719ThEM2pXcl0 1vnPlh8DaT3PH61zXhzQtWXxFZ6JeWUsek6FdT3MMzxHZNkjysMepBZm4/8Ar16bRRYLnnXiS3SH 4im/1Dw1faxYHTljAgsvPUSb89+OBn35q5rUUur2fhWXTtGvLSGDVoma2ktvLaCNCQSyjhV4/lXc 0UWC55f4q8M6paeLrR9LtJZtMvtQgu5liQsIZkJDEgcKCGJJP9K09YubzRfiW2rDRdTv7ZtNEG6y tjJht+evTt69xXe0UWC5xV+t3qvjTwnqkem3kUCxztL5sJBgynAfsp+tU2gvPCer6zFc6Hdavomr zGcG0jEro7feVk449/Ydc8eg0UWC55dpOkXZ0bxncW2h3VjbahCosrZ4drnCuCAg57j867zwtDLb +FNJhnjeKWOziV0dSGUhRkEHoa1aKErAFFFFMQUUUUAFFFFABRRRQAVJcf65vw/lUdSXH+ub8P5U AR0UUUAFFFFABRRRQAUUUUAQ3UhhtJpVgadkjZhEmMyYH3RnjJ6V5zfQDxLqOkx6J4UvdIlsrqOS W7uLRbYJEucqCDz9K9MopNXA4WeW88J+NNX1I6Pf6hZ6rHEUaxh8wo6Agqwzx3OfetbwJo91pHh9 vt0Qhury4kupYgc7C2MD8gK6Siiwzknsro/FiO9+zTfZRpPl+f5Z2bvMJ27umcdqz9YubzRfiW2r DRdTv7ZtNEG6ytjJht+evTt69xXe0UWAr2F2b6whujbT2xlXd5M6bZE9mHY1YoopiCiiigAooooA KKKKACiiigCS4/1zfh/Ko6kuP9c34fyqOhAFFFFABRRRQAUUUUAFFFFAGV4h1U6VpxddNv78zExh LKDzWXIPJGRge9cn4Pt7u++Hlx4XuNL1CxuUtpk826tzHGxdnK7SeTjIzwK9BopWA8wdNU1/w5pf g6TQdQtpbd4ku7iePbCsadSrg8kjFas8t54T8aavqR0e/wBQs9VjiKNYw+YUdAQVYZ47nPvXdUUW Hc5vwJo91pHh9vt0Qhury4kupYgc7C2MD8gKrPZXR+LEd79mm+yjSfL8/wAs7N3mE7d3TOO1dbRR YRwWsXN5ovxLbVhoup39s2miDdZWxkw2/PXp29e4rtbC7N9YQ3Rtp7Yyru8mdNsiezDsasUU7AFF FFABRRRQAUUUUAFFFFABXP8AjL/kDN+H/oS10Fc94zONGb8P/QlrSn8aM6nwM4DNFJnNFekeeLmj NNozQAuaKTNJmgB2aM02igDmaWm0tYHYLRSUtMBaWm0tMBaWm0tMQ6lptLTAdS02imI+hPD+xvDO kkxJzYw/w/7ArQ2x/wDPKP8A75rP8O/8ivpH/XjD/wCgCtCvJluzrWwbY/8AnlH/AN80bY/+eUf/ AHzRRUjDbH/zyj/75o2x/wDPKP8A75oooANsf/PKP/vmjbH/AM8o/wDvmiigA2x/88o/++aNsf8A zyj/AO+aKKADbH/zyj/75o2x/wDPKP8A75oooANsf/PKP/vmjbH/AM8o/wDvmiq2o3h0/T57sWs9 0YV3eTbpvkf2UdzQBZ2x/wDPKP8A75o2x/8APKP/AL5rhovijBPdTWkXhXxFJcQY86FLIF488jcN 2Rn3rTufHmk2vi2Lw3JHP9okZEM2F8pHdSVQnOdxxwMd6LgdNtj/AOeUf/fNG2P/AJ5R/wDfNZOu +IrXQH09bmKaT+0LtLWPywDtZuhOSOKSHxJa3PiafQbaGaaa1iElxMgXy4ieik5zuPpigDX2x/8A PKP/AL5o2x/88o/++a5628aafdaNrGqLb3Ii0iaWKZSF3OUAJ289Oe+Km8LeK7HxZYSXdlFPD5Th HiuFCuMgMDwTwQQQaANvbH/zyj/75o2x/wDPKP8A75rl7T4gaTe+L28NQxXJuA7xifaPKZ0Xcyg5 zkYPat3VNUs9F02bUdQnENtAuXc/kAB3JPGKALe2P/nlH/3zRtj/AOeUf/fNczpXjVdUvLaL+wdX tbe7JEF1PbgRtjpnByue2etL4i8eaT4a1e1029SdpLhQ7PGF2QIW2hnJIwM/yoA6XbH/AM8o/wDv mjbH/wA8o/8AvmsrxL4gtfC+iy6reRSywxMqlYQC3zHA6kDvVjVNUh0nRrnVJkd4raEysqAbiAM8 Z70AXdsf/PKP/vmjbH/zyj/75rnb3xtp9npGl3wt7qeXV1VrOziQGaTIB6ZwMAjJzUqeKFXQ9Q1S 90q/sRp4YywzoodwF3ZQg4Yc4znqDQBu7Y/+eUf/AHzRtj/55R/981ieFvFdj4ssJLuyinh8pwjx XChXGQGB4J4IIINUrT4gaTe+L28NQxXJuA7xifaPKZ0Xcyg5zkYPagDqNsf/ADyj/wC+aNsf/PKP /vmua8RePNJ8Nava6bepO0lwodnjC7IELbQzkkYGf5VpeIPEFl4b0w3995jKXEccUS7nlc9FUdyc H8qANPbH/wA8o/8AvmjbH/zyj/75rG0rxDLqBuVudF1DTnt4xJ/pSKBIDn7pBIJGOR2yKm8Oa9be JtDg1a0ilihnLBVlADDaxU5wSO1AGntj/wCeUf8A3zRtj/55R/8AfNFFABtj/wCeUf8A3zRtj/55 R/8AfNFFABtj/wCeUf8A3zRtj/55R/8AfNFFABtj/wCeUf8A3zRtj/55R/8AfNFFABtj/wCeUf8A 3zRtj/55R/8AfNFFABtj/wCeUf8A3zRtj/55R/8AfNFFABtj/wCeUf8A3zTnVN5zGh/4DTac/wB8 0AN2x/8APKP/AL5o2x/88o/++aKKADbH/wA8o/8AvmjbH/zyj/75oooANsf/ADyj/wC+aNsf/PKP /vmiigA2x/8APKP/AL5o2x/88o/++aKKADbH/wA8o/8AvmjbH/zyj/75pssgiieRskIpY49q5TRf H6a5c2sdv4b11ILk/JdSWmIQPUuCRigDrdsf/PKP/vmjbH/zyj/75rntY8YQaZqp0q102+1O8SHz pY7RAfKTsWJI5PYVd0bxBZa9oEes6eJZIXRmEe3DgjquPXIxQBqbY/8AnlH/AN80bY/+eUf/AHzX Df8AC0YBfCxPhXxF9rKeYLf7EPM2Zxu27s4z3rcsPFdtfa7Foxs7u3upLBb0rOgXYpIG1hnIYE8j FAG7tj/55R/980bY/wDnlH/3zRRQAbY/+eUf/fNG2P8A55R/980UUAG2P/nlH/3zRtj/AOeUf/fN FFABtj/55R/980bY/wDnlH/3zRRQAbY/+eUf/fNG2P8A55R/980UUAOdU3nMaH/gNN2x/wDPKP8A 75pz/fNNoANsf/PKP/vmjbH/AM8o/wDvmiigA2x/88o/++aNsf8Azyj/AO+aKKADbH/zyj/75o2x /wDPKP8A75oooANsf/PKP/vmjbH/AM8o/wDvmiigA2x/88o/++aNsf8Azyj/AO+az9a1yy0GzFze M53HbHFEhd5WxnCqOpwCfwqLQvENnr/h6HXIVkgtZVdsTYBUKxUk4JH8JoA1dsf/ADyj/wC+aNsf /PKP/vmuPtviRp881m0mmalb2F/P5FtfyxARSMcgd8gHHBx+XOL+seMINM1U6Va6bfaneJD50sdo gPlJ2LEkcnsKAOh2x/8APKP/AL5o2x/88o/++ay9G8QWWvaBHrOniWSF0ZhHtw4I6rj1yMVzX/C0 YBfCxPhXxF9rKeYLf7EPM2Zxu27s4z3oA7nbH/zyj/75o2x/88o/++awrDxXbX2uxaMbO7t7qSwW 9KzoF2KSBtYZyGBPIxW7QAbY/wDnlH/3zRtj/wCeUf8A3zRRQAbY/wDnlH/3zRtj/wCeUf8A3zRR QAbY/wDnlH/3zRtj/wCeUf8A3zRRQAbY/wDnlH/3zRtj/wCeUf8A3zRRQAbY/wDnlH/3zXL+PXVN DZRFH83fbyPmXpXUVynxB/5Ao/z/ABLWtL40Z1fgZ5rmlDetMzRmvVPNH0UzNLu9aAHZpKSjNAC5 ozTc0ZoA5qlpKM1znaLS02lFMQtLSZozTAdRSZopgOpabS0xDqKSlpgfQnh3/kV9I/68If8A0AVo 1neHf+RW0j/rwg/9AFaNeTLdnUtgooopDCiiigAooooAKKKKACiiigAooooA4LQriKz+JXjW6ncJ DDDbySMTgKojyT+VcNd6nc3/AIPvb86DrY1OfUBqsV8LMm3hCn5cP3UJnkjGfzr2Cbwvo082pTSW ZMmqxrHeMJXHmqBgDg8cemKvw2Nrb6emnxQqtrHEIVi7BAMY/KlYDz3xxqA1zRfB2oWj+SbzU7d0 YgN5bEdx3wf5VpfDWaKzh1LQbuMR61Z3LPesetxuOVlz3yCPpx61ux+DtAi0+wsEsMW2nXH2i1Tz pD5cmSc53ZPJPByKtyaHpsutxa01ti/hjMSzK7KSh7MAcMOe4OKAPONJ/wCSf+Pf+v8AvP8A0EVW g1ceAhp+sGP/AEbWfD0HABO66iiUID6AggfiTXpUPhjRoNPv9Pis9ttqUjyXSea58xnGGOc5Gcds UXXhfRb6wsLC5sVkttOKNaoXb92UGF5zk8euc96LAef6bpMmjeN/A9rcMzXLWt1NcMx5Mro7N+px +FbPxfEg8KWkxR5LSDUInu0U/ej+YYIzyMlePXFdfPo2n3Or2urTWwe9tFZIJSx+QMMHjOOnqKs3 NtBeW0ltcwpNDKpV43XKsD2Ip2AZBe2c1vBNBcQtDOB5LK4w4IyNvrxXj9/qY8RL4rnbQdZ1H+0j 9nsLiztDLAqQk7DvBHVxk4z+NdT4R+H8Ona9qWqX2i2lmsm0WUUV08xhBUiTDEDqeQcZGSK7PStK sdE06LTtOgEFrDnZGCTjJJPJJJ5J60gPNPEWtnX/AIEx3zsWmHkxTE4yXRwpPHrjP412njJ1bwBq 4Vgf9Afof9mpm8F+Hm0u70w6f/od7P8AaJ4hNIA0mQc53ZHQcDA4qKw8A+GNLtry3s9M8qK+i8m4 Xz5G3p6ZLHH4YoAw4PDMXiPwT4XMOpPp+p2VnHNZzx4LKdi5+XuOBmqDa/q2oeEvGOi608E95pFu UN1AMLKGVsEj+98pzgD6cV0Hi3wdZan4Yh0200aG6ktI/JtA9yYjbrjGQ+CTjC8HrjmruieE9PsP CaaJPY26LPAEvUgLBZXKgMd33j9c5oA8/g1ceAhp+sGP/RtZ8PQcAE7rqKJQgPoCCB+JNWtN0mTR vG/ge1uGZrlrW6muGY8mV0dm/U4/CvQLrwvot9YWFhc2KyW2nFGtULt+7KDC85yePXOe9TXeh6bf anBqVxbb7u2jeOKXewKK4w2MHHIJ560WA8nv9THiJfFc7aDrOo/2kfs9hcWdoZYFSEnYd4I6uMnG fxrrNPis/iL8N9Mjvbx7e5yoWdSA63EeRuA9TycDse1dhpWlWOiadFp2nQCC1hzsjBJxkknkkk8k 9azJPA/huXTrjT30tGtrm4NzIhkc/vSMFgc5U49MUWAwdB1nXbXX9R8Ja7dwai8FgbmG8iTaxXOM OOmfmH5dTmrXwl/5Jzp3+9N/6NatvRfCuh+HraWDS7BLdZhiRslmcc8FiSe571b0nSLHQtNj07TY PItYslI97NjJJPLEnqTTAuUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU5/vmm05/vmgBtFFFABRRR QAUUUUAFFFFAEdwqvbyqzBFZCCx7DHWvObldc+HQ0G3h14anYT3EdmbKS2RCAc/MrDn8Dnr1NejX FvDd20ttcRrJDMhSRGHDKRgg/hWBpHw/8LaHfC9sNJRLheUd5HkKe43E4Pv1oAyvDbCH4o+L1nIV 3S2dN3GUCYJHsOKX4Uq3/COX8+7dBcapPJbkHgp8o49sg1t674M8PeJZkn1bTknmjG0SB2RsehKk ZHNa1paW9haRWlpCkMEKhUjQYCigDjZP+S3xf9gP/wBqmkVlX43SFiAP7E7n/poK6s6Lp51wa2bf /TxB9nE29v8AV5zjbnHXvjNZ2t+BvDfiK+F9q2m/aLgIIw/nyJ8ozgYVgO5oA3wQRkHI9RRVfT7C 10uwhsLKLyreBdkabi20fU5JqxQAUUUUAFFFFABRRRQAUUUUAOf75ptOf75ptABRRRQAUUUUAFFF FABRRRQBBeqDZzEgEiNsHHTivPfDSSSfAKRIgWdrG7AAGSfnk4rttd8OaT4ltY7XV7T7TDE/mIvm OmGwRnKkdiag0LwdoHht530jTxbtcKFlzK77gO3zE+tAHCeIXS5+DGgW9rKv2ic2sUADcmQcHHuC DW74bYQ/FHxes5Cu6Wzpu4ygTBI9hxWvp/gLwvperDVbPSYoroHKsGYqh9VUnA/AVLrvgzw94lmS fVtOSeaMbRIHZGx6EqRkc0gMT4Uq3/COX8+7dBcapPJbkHgp8o49sg0kn/Jb4v8AsB/+1TXZWlpb 2FpFaWkKQwQqFSNBgKKrnRdPOuDWzb/6eIPs4m3t/q85xtzjr3xmmByisq/G6QsQB/Ync/8ATQV3 IIIyDkeorA1vwN4b8RXwvtW037RcBBGH8+RPlGcDCsB3Na+n2FrpdhDYWUXlW8C7I03Fto+pyTQB YooooAKKKKACiiigAooooAK5T4g/8gUf5/iWurrk/iF/yBR/n+JK1o/xEZ1PgZ5lmjNNzRmvVPOH ZozTc0ZoAdml3etMzRmgB+aM0zOKXdmgDnKKSlrnOwWikpaYC0UlLQAtLTaWmIWlptLTAdS02lpi PoTQJY08M6QpfOLGHnB5+QVf+0Rf3v0NYuif8i3pH/XhD/6AKu15rWp0pl37RF/e/Q0faIv736Gq VFKyHcu/aIv736Gj7RF/e/Q1SoosguXftEX979DR9oi/vfoapUUWQXLv2iL+9+ho+0Rf3v0NUqKL ILl37RF/e/Q0faIv736GqVFFkFy79oi/vfoaPtEX979DWbcyPDbSyxwtM6IWWJSAXIHABPHPTmod OuprvTYbm7tTZzOuXhZw3ln03Dg0WQXNj7RF/e/Q0faIv736GqJYAZJAHrSO6Rrudgq+pOBRZBcv /aIv736Gj7RF/e/Q1RBDAEEEHoRQGBJAIJHXB6UWQXL32iL+9+ho+0Rf3v0NUdw3bcjPpRkZxkZ6 4osguXvtEX979DR9oi/vfoao5AIGRk9BRkZxkZ9KLILl77RF/e/Q0faIv736GqO4btuRk9s0BgSQ CCR1osguXvtEX979DR9oi/vfoaob15+YcdeelKWAGSQB60WQXL32iL+9+ho+0Rf3v0NUScDJ6UAh hkEEeoosguXvtEX979DR9oi/vfoaohlIJBBA680m9cA7hz0560WQXL/2iL+9+ho+0Rf3v0NUqQMC SAQSOuD0osguXvtEX979DR9oi/vfoaoF1U4ZgD7mlJAGSRj1osguXvtEX979DR9oi/vfoaog5GR0 paLILl37RF/e/Q0faIv736GqVFFkFy79oi/vfoaPtEX979DVKiiyC5d+0Rf3v0NH2iL+9+hqlRRZ Bcu/aIv736Gj7RF/e/Q1SoosguXftEX979DR9oi/vfoapUUWQXLv2iL+9+hp0k8YkILfpVCpLj/X N+H8qVguWftEX979DR9oi/vfoapUU7ILl37RF/e/Q0faIv736GqVFFkFy79oi/vfoaPtEX979DVK iiyC5d+0Rf3v0NH2iL+9+hqlRRZBcu/aIv736Gj7RF/e/Q1SpokQnAdSfrRZBcv/AGiL+9+ho+0R f3v0NUHkSMZd1QHuxxS5GM54osguXvtEX979DR9oi/vfoaz/ADY/+ei/nTgyk4DAnGetFkFy99oi /vfoaPtEX979DVKiiyC5d+0Rf3v0NH2iL+9+hqlRRZBcu/aIv736Gj7RF/e/Q1SoosguXftEX979 DR9oi/vfoapUUWQXLv2iL+9+ho+0Rf3v0NUqKLILl+SeMSEFv0pv2iL+9+hqtcf65vw/lUdKwXLv 2iL+9+ho+0Rf3v0NUqKdkFy79oi/vfoaPtEX979DVKiiyC5d+0Rf3v0NH2iL+9+hqlRRZBcu/aIv 736Gj7RF/e/Q1SoosguXftEX979DR9oi/vfoao0AhhkEEeoosguXvtEX979DR9oi/vfoazxJGXKB 1LjqueRSvIkYy7qgPdjiiyC5f+0Rf3v0NH2iL+9+hqjkYznim+bH/wA9F/OiyC5ofaIv736Gj7RF /e/Q1RDKTgMCcZ60tFkFy79oi/vfoaPtEX979DVKiiyC5d+0Rf3v0NH2iL+9+hqlRRZBcu/aIv73 6Gj7RF/e/Q1SoosguXftEX979DR9oi/vfoapUUWQXLv2iL+9+hrl/HzRS6Cx83DL0G08/Mtbdc14 5/5Ajfh/6EtaUl76M6j9xnnOaM03NGa9M4B2aTNJmjNAC5ozSZozQAuaM03NGaAMCikpa5jsDNLS UUxC0tJRTAWlpKKYDqKSimIdS02lpge96J/yLWkf9eEP/oAq7VLQ/wDkWtI/68IP/QBV2vOe50IK KKKQBRRRQAUUUUAFFFFABRRRQBDd/wDHnN/1zb+VeWQCE/A21FySIPtI8wj+79oOf0r1WdDLBJGu MspAz7iuJPgbUm+GUfhc3FqLsSbjIGYx480v1256e3Wkxo57Vryaw8Ba/wCEr9mNzpZiNu7H/XW5 mTaR9OAfTIFbHjC2nTVtI1O+0ufV9DgtdsttCN3lyc/OV78EDnjir/j/AMDTeKlhuNOuIre8jXyp DISqyx5zhiATwRkVq6rD4rheL+wptLeERKjx3qOCGGcsCp78cGlYCrY614f0vwLcarobAafbrI6J yNshP3MNyMsRx7jHFc34Wsrjwj4p0pLp3I8Q2JM+8gn7SDvOfoG28dz+NaR+H95/YEekm8hkS71I XmpnBQOnGUjAHHQdx0/Cl1f4Y6ZHBDceGbeKx1K2nSaKSaeRkO05wclvrwO1GoGX4wtrh/HlxqGn M39o6XYRXkMa5/eIrsJF/Jq0NN1W31v4madqVqf3VxoO8DIJU+a2VOO4OQfpW/FoNyPHUuvySQ/Z 304Wvlgktu3hiemMcVkeH/Ac+geNbjVYbmJtNaF0ghyd8W5g20DGAoOe/fpRZgVfHeof2T408Pag IHnNvBdP5cYyWxHWx4H05f7PbX7idLrUNXxPNMg4Vf4Y17gKOPrU+r+H7nUPF2i6sjw/ZrBZhMjk 7m3rgYGMH3yRVKx8M6xokGs2GlXVsLG7R3sBK7BrWVuoxtI2c5H06ck0dQOS1OSaa6uPiHC7tHZa okUQBBD2q/u2K/7zN3962fEt4/g3xJ/wktnEZ7PV7cxSovQzqpMR/wCBYxx7mrMHwo8OjREt57TN /wDZ9r3KzSY8zb94DOOvOMfhT7nwhrF74O0TSJ7iz+16ZdxyM6s2xo03AAHbnO0jt2pWYzM1rRE0 X4XtHqRJnurqK4v5Mcl3kUt09Bx+FZurXk1h4C1/wlfsxudLMRt3Y/663MybSPpwD6ZArvfGehXP iTw1NpdrJFFLK6HdKSFADAnoD2FZPj/wNN4qWG4064it7yNfKkMhKrLHnOGIBPBGRTa7CTJfGUzX GhaboMDss+syxwfKRuEQwZG57AfzqPwCTpd3rXhZ2P8AxLbrzLcH/njJ8yj1OOp/3qm1TwUuv+Ib efWBFcaXa2flRW6yOrGUkZY4xxgY69hTLDwLFoHi611TQEhtrIwPDeQSSuzNnkFc55yBnJHSjW9w OO0y7mu5L/wvFK1omr63cLPdFePLAXKKem5unPb610/jazt9Ph8KWdrGIoIdXgREHYCnReAJpdC1 exu7iJLi51F76znhJJhY42kkgEHgg47HrVjxB4f8Ra1oujYl09dU0+5S4kZnfynZc4IwueeCRgd+ aLaAdBruqR6Jod5qUpAW3iLAE4y3RR+JIH41wXhayuPCPinSkuncjxDYkz7yCftIO85+gbbx3P41 t6joHinxFpcOn63Ppawm8jkuBaGQb4F5K8jOScdx0qvq/wAMdMjghuPDNvFY6lbTpNFJNPIyHac4 OS314Hah3AzPE7aKnxNkfXrVrmzTSQxAiaTad/3iF6ADPNP0mG5j+FWvSN5i2M6zyafHI+5kgK/K DycfTNdSmgXf/CePr8jwG1fTvspjyS+/cD0xjGPf8KzbPwfqNjoHiDQ4p7Y2l60jWALt+5DjlWGO AOOme5xRYDb8If8AInaN/wBeMP8A6AK2KoaFYy6XoFhYTsjS21tHE5QkqSqgHGe3FX6pCCiiigAo oooAKKKKACiiigAooooAKkuP9c34fyqOpLj/AFzfh/KgCOiiigAooooAKKKKACiiigCK5UtazKoJ JRgAO/FeXeFbTw3olxpA1jw5qOnaq+0R3twHWJ5T0H3sA+xH5V6jcrO1rKts6JOUIjZ1yqtjgkdx muPn8O+KPEV3ZL4juNKis7K4W4CWCyFpWXOAS/Qc/rSY0QRadZ+K/iBrsOsQC6g02KGG2icnam9c sceuR1q18N5Gu/Ct1p1wzyxWV3NZqXYktGACB7cNj8Kl1HQNfsvEd3rXhuew3ahGiXMV6HwCowGU r7Y4rW8MaEPD2ix2LTm4mLNLNKRjfIxyT/n0pJagcI/gjw4PiYmjjTv9BOmeeYvPk+/vIzndnp2z itmwtILD4srZ2yeXBBoSxxpknaocADJ5rZbQbo+P08QCSH7Kun/ZimTv3by2cYxjHvWdrGgeJP8A hMjr+hTaYN1mLYremT+9knCj6d/WiwHY0VXsBeiwh/tEwG72/vTBny93+znnH1qxVCCiiigAoooo AKKKKACiiigCS4/1zfh/Ko6kuP8AXN+H8qjoQBRRRQAUUUUAFFFFABRRRQBma/pa6rpzQS3NxFCo LSJC+zzRg/KSOcZ54x0rlfCd7LpvwZW9gOJYLa5eM4zhhJJj9a6nXk1uWxEeh/YPOZiJPtu/bsIP TbznOKw/C3hjWbDw1P4c1p9PewMLxRtatIZDvLFtxYAfxcYFLqM5bUdJs9C8A6N4otI2XVUkhuZL jed8xflgx9Dn/PNbsWnWfiv4ga7DrEAuoNNihhtonJ2pvXLHHrkdaLfwf4jntrDRNVvtPbRtPkR1 aBHE04T7qsDwB9PTvV/UdA1+y8R3eteG57DdqEaJcxXofAKjAZSvtjilYCL4byNd+FbrTrhnlisr uazUuxJaMAED24bH4Vz7+CPDg+JiaONO/wBBOmeeYvPk+/vIzndnp2ziu78MaEPD2ix2LTm4mLNL NKRjfIxyT/n0qs2g3R8fp4gEkP2VdP8AsxTJ37t5bOMYxj3otoFzGsLSCw+LK2dsnlwQaEscaZJ2 qHAAyea7muO1jQPEn/CZHX9Cm0wbrMWxW9Mn97JOFH07+tdTYC9FhD/aJgN3t/emDPl7v9nPOPrT QFiiiimIKKKKACiiigAooooAK5nx1/yBG/D/ANCWumrmfHf/ACA2/wA/xLWlP40RU+Fnm2aKTNGa 9I4Bc0ZpM0ZoGLmjNNzRmgB2aM03NGaAMKlpKK5zqFopKWgBaKSimA6ikopgOopKKYh1LTc0tAHv 2hRSHw1pGI2P+gQ9v9gVe8mX/nk//fJpvhxmPhbRyWJJsIM8/wCwK0dx9T+dea3qdKRQ8mX/AJ5P /wB8mjyZf+eT/wDfJq/uPqfzo3H1P50uYLFDyZf+eT/98mjyZf8Ank//AHyav7j6n86Nx9T+dHMF ih5Mv/PJ/wDvk0eTL/zyf/vk1f3H1P50bj6n86OYLFDyZf8Ank//AHyaPJl/55P/AN8mr+4+p/Oj cfU/nRzBYoeTL/zyf/vk0eTL/wA8n/75NX9x9T+dG4+p/OjmCxQ8mX/nk/8A3yaPJl/55P8A98mr +4+p/OjcfU/nRzBYoeTL/wA8n/75NHky/wDPJ/8Avk1f3H1P50bj6n86OYLFDyZf+eT/APfJo8mX /nk//fJq/uPqfzo3H1P50cwWKHky/wDPJ/8Avk0eTL/zyf8A75NX9x9T+dG4+p/OjmCxQ8mX/nk/ /fJo8mX/AJ5P/wB8mr+4+p/OjcfU/nRzBYoeTL/zyf8A75NHky/88n/75NX9x9T+dG4+p/OjmCxQ 8mX/AJ5P/wB8mjyZf+eT/wDfJq/uPqfzo3H1P50cwWKHky/88n/75NHky/8APJ/++TV/cfU/nRuP qfzo5gsUPJl/55P/AN8mjyZf+eT/APfJq/uPqfzo3H1P50cwWKHky/8APJ/++TR5Mv8Azyf/AL5N X9x9T+dG4+p/OjmCxQ8mX/nk/wD3yaPJl/55P/3yav7j6n86Nx9T+dHMFih5Mv8Azyf/AL5NHky/ 88n/AO+TV/cfU/nRuPqfzo5gsUPJl/55P/3yaPJl/wCeT/8AfJq/uPqfzo3H1P50cwWKHky/88n/ AO+TR5Mv/PJ/++TV/cfU/nRuPqfzo5gsUPJl/wCeT/8AfJo8mX/nk/8A3yav7j6n86Nx9T+dHMFi h5Mv/PJ/++TR5Mv/ADyf/vk1f3H1P50bj6n86OYLFDyZf+eT/wDfJo8mX/nk/wD3yav7j6n86Nx9 T+dHMFih5Mv/ADyf/vk1JPFIZmIjY/8AATVvcfU/nTnY7zyaXMFjO8mX/nk//fJo8mX/AJ5P/wB8 mr+4+p/OjcfU/nT5gsUPJl/55P8A98mjyZf+eT/98mr+4+p/OjcfU/nRzBYoeTL/AM8n/wC+TR5M v/PJ/wDvk1f3H1P50bj6n86OYLFDyZf+eT/98mjyZf8Ank//AHyav7j6n86Nx9T+dHMFih5Mv/PJ /wDvk0eTL/zyf/vk1f3H1P50bj6n86OYLFDyZf8Ank//AHyaPJl/55P/AN8mr+4+p/OjcfU/nRzB YoeTL/zyf/vk0eTL/wA8n/75NX9x9T+dG4+p/OjmCxQ8mX/nk/8A3yaPJl/55P8A98mr+4+p/Ojc fU/nRzBYoeTL/wA8n/75NHky/wDPJ/8Avk1f3H1P50bj6n86OYLFDyZf+eT/APfJo8mX/nk//fJq /uPqfzo3H1P50cwWKHky/wDPJ/8Avk0eTL/zyf8A75NX9x9T+dG4+p/OjmCxQ8mX/nk//fJo8mX/ AJ5P/wB8mr+4+p/OjcfU/nRzBYqTxSGZiI2P/ATUfky/88n/AO+TWi7HeeTTdx9T+dLmCxQ8mX/n k/8A3yaPJl/55P8A98mr+4+p/OjcfU/nT5gsUPJl/wCeT/8AfJo8mX/nk/8A3yav7j6n86Nx9T+d HMFih5Mv/PJ/++TR5Mv/ADyf/vk1f3H1P50bj6n86OYLFDyZf+eT/wDfJo8mX/nk/wD3yav7j6n8 6Nx9T+dHMFih5Mv/ADyf/vk0eTL/AM8n/wC+TV/cfU/nRuPqfzo5gsUPJl/55P8A98mjyZf+eT/9 8mr+4+p/OjcfU/nRzBYoeTL/AM8n/wC+TR5Mv/PJ/wDvk1f3H1P50bj6n86OYLFDyZf+eT/98mjy Zf8Ank//AHyav7j6n86Nx9T+dHMFih5Mv/PJ/wDvk0eTL/zyf/vk1f3H1P50bj6n86OYLFDyZf8A nk//AHyaPJl/55P/AN8mr+4+p/OjcfU/nRzBYoeTL/zyf/vk0eTL/wA8n/75NX9x9T+dG4+p/Ojm CxQ8mX/nk/8A3yaPJl/55P8A98mr+4+p/OjcfU/nRzBYoeTL/wA8n/75Ncx49ilXQXYxuAMZO08f MtdtuPqfzrkPiPI66DgOwDdQD1+ZK0pP30RU+FnlWaM0maM16hwC5ozSZpM0AOzRmkzSZoAdmkzS ZozQBiUUUVzHWLRSUUxC0tJRTAWlptLmgBaWm5pc0wFpabS0xH0X4b/5FXR/+vCD/wBAFaNZ3hv/ AJFXR/8Arwg/9AFaNeW92dKCuO0nxlrHiD/TtI8PpPpP2jyRM92ElZQQGcJjoOuCcnFdiSFUk9AM mvIdbn0jw2w1zwN4lRp7m4UvpEM6ypcFm5Aj5Kn8MjoMUmM7nXfFlxZa5DoOjaWdT1OSPzpEMoij hizjczEHv2H+ALNI8W3UviH/AIR/XdLGm37xmW3KTCWO4UddpwORg8exrDhvrfw38W9Wn1mZLODV rSJ7aeZgsZKKqlSx4ByD+nqKfcX9r4m+K2iPo80d5BpNvNJdXELBo13qVVQw4Jz/AD9jSA0vDnj1 db8SXei3OnmzeNpPs0hk3C4COVbHAwRjOOe9SQ+NWl0jxJf/AGAA6FczQBPN/wBd5ffOPlz+NcXb aZeX/hnVtX08k6noOv3M9pgcsg2s6cckHJOO/SpfDNw2u+A/HN3aQyE3t1czRxYy3zJuAwOp5oGd 6/iQp4G/4SX7ICfsIu/s/meq7tu7H64qre+N7fT/AAnputTWkkk+prELezibczyOMhQf61zMnijQ m+Dq2K6rbNeNpa2wtlkBlMm0Lt2devtVfxBbz6Bp3gHWL+BhbaSEivFwSYSyoNxAB6bT+IA70CO3 0XVvEV1eiDWPDq2ETxb1miu1lCt/cYAAg+/SpPFHiWHwzp8UzW8l1c3MogtbaM4aaQ9BnsPep7Hx Loep3S2un6taXc7IXEcEochR1Jx06965X4ik6f4g8La/OrfYLC7dLhwM+Xv2gMfb5T+lMC1P401n RJbSXxN4fSwsbpxGbmG7EogY9A4wMD3zjirGq+LNUt/FreHdK0WK+mWzF0Wku/K43Yx90+3esT4j 67pfiDw7FoOjX1vqN/qNzGkUdtKsm3ByWbBOBx+v1p9zqNjpHxkabUb2C0i/sQIJJpAilvMHGT34 NIDovDvixNavbnS7ywl0zVrRQ81pKwb5Tj5lYcMvI59xWdffEFLLxpHoR09ms/PjtZb/AMwhUmdS VTbjnt34rKs9XtNQ+ImreKbR9+k6TpRhluVHyyuDvIU98D+Q9RXMSWvinUPAF1IfC7O17cHVv7TS +TcrZ3blj+8PkGAAc8/hQM9R8TeJD4ek0pRai4/tG+jtDmTbs3fxdDn6Umn+Jm1XxReaXYWiy2Vg oW4vfM4E3/PNRjkjvzxXHeLdTTxL4c8GX6SGM3mpwb2ibmN+Q2D6hs/lWv8AD+5OjXF74MvkCXtg 7TRS4x9rhY5D+5GcH/6xoEbfhbxIfEkepM1qLf7DfSWnEm7ftx83QYznpRpHiQ6p4m1rRjaiIaUY gJfMz5m8E9McYx6muW+HmuaTpz69aXupWttcS63OY4pZlVmB2gYBPPPFXvCX/JSvGf8AvW3/AKA1 AGprvim5sdftPD+k6ct9qNxCZyJZvKjjjBIyTg5OQeAK1tLvL2fTPtGq2K6fcKW8yISiRQAThgwA yCOa5vxpp/hfU7+EalrqaNq1rHvt7lboQyKpJ9SMjIPTnr0zXM/8JXrF38LryKaf7Xf3d+2l2NyF 2/agxA3DGB03DPqBnmgDpfC3xAbxLf3Vn/ZTWsgtzc2QeXJuYwxXPIG3kD8/aqR8e+Kxrg0Q+CU+ 3mD7QIf7Tj/1ecZ3Yx17ZzWBfXOteHtZ8M6vfeGDo1jpoXT5ZvtyTB4mGBu28gL8zc8ZPY107/8A Jb4v+wH/AO1DQM1NP8U3Vx4ri8P3emC1nOmreykTh/LckAx8DBwT1zVLSfGWseIP9O0jw+k+k/aP JEz3YSVlBAZwmOg64JycVXUhfjdKT0Gh5P8A38Fc1rc+keGmGueB/EqNPcXCmTSIp1lSfc3OI+Sp /DI6DFAj1yQuI2MahnAO0E4BPasTwj4nTxPoJ1KS3+xyxyvFPAX3GJlPQnA7YPTvW6CSoJGDjkel eS+Ib6fwnrPibRbRX3eIIo5tPRPlHmyN5cmD/e5J/wCA9qYG+/xGuW0DT9VttGSUanqJs7RGuSu5 clQ5OzjJB47etdRo93rVyZRq+lwWIXHlmK687f1zn5Rjt+dcL8Q9Lt9K8OeFNK+1PbQW1/BC1yrh GjAUgvu6Ajk57V1vhFNNt7W4t7DxPLrxDh3kmvluXjyMAZHQcH9aQCeLvE0/huLT/s1gt5Nf3a2q I03lgFs4OcHvTNF8V3F5r8+gavpZ03UY4fPjVJhNHLHnG4MAMc9iKxvimszp4bW2kWOZtYhEbsu4 K3OCR3Ge1Gp6fceE7PWPGWr6qL/VRZ/Z7dlg8uOIEgKoUEk5cgk59elAFvTPiCmo+MW0NtPaG2eS aG1vDISJ5IsbgFxwOvOe1aXiHWPEemXIGleG01K1EW952v0g2HnIIbtjBzXmmoweJtE8K6LcP4Ue 1Gg3C3TX32+ORpAxy4Kj5gGJGeuAOa6bx54otNRXTvDdrqUFpFq8aT3d3JIEWO1PPDHjc2Dgf40A dF4M8VTeKvD76vc6f/Z8QkZUBl3h1UDLZwO+R+FUvCHj4eKNVnsZdNax/c/abRncsbiLeV3YwMc4 49/aqfivW9Ntvh82n+F7q2uGuXTTLVbaQMAz8Fcg8Hbnk9yK5y+uda8Paz4Z1e+8MHRrHTQunyzf bkmDxMMDdt5AX5m54yexoA7XVfFmqQeLj4d0rRor2ZbMXReW78oY3bcfdPtSWXjlbzwnqusHTnhu tJMiXNo8mcSIMlQ4HI98VhavYXupfF6aDT9Ul024/sTck8aK3/LTgEEdMkHjB461U0aW3Hwo8TWZ gMOo2n2iLUC0hdpZgOZCTzzj8waAPRtE1E6vodjqRi8o3duk3l7t23coOM9+tc1ffEFLLxpHoR09 ms/PjtZb/wAwhUmdSVTbjnt34pfCninQ7bwRYKdUtXmstMWSaBJQ0ihIwWyo54xXBSWvinUPAF1I fC7O17cHVv7TS+TcrZ3blj+8PkGAAc8/hQB6X408VT+FbSykttO+3zXl0tukXm+XyQcc4PcYqzae KLG68Hr4l+7bfZjO65yVIB3LnuQQRXIeINYTX9K8Caom3NzrFszhTkK+cMPwYEfhWS8F1FrVx8Nl icWd3qYulZV2qtmf3jIMHjkY/PpxRcDtfBPjSbxZJqENzpTadPY+UWjaXfkOCR2GD8vT3qvpnxBT UfGLaG2ntDbPJNDa3hkJE8kWNwC44HXnPauettYXw7qnxG1JSqPAYBDkcbyHVBgf7RFY+oweJtE8 K6LcP4Ue1Gg3C3TX32+ORpAxy4Kj5gGJGeuAOaBntdFRWl1Fe2cN3A4eGeNZEYHgqRkGpaYgpz/f NNpz/fNADaKKKACiiigAooooAKKKKAGTSeVBJLjOxS2PXArkfDvizxNrxsrk+Elg026w32v+0Eba nrswCfpXV3kkEVlPJcyCKBI2aV2OAqgcnPsK8suXsPDV9oMXg7xTc6i8t1HbSWH24XEZiOcsVHCn 8sdsc0AdjqnirUR4gm0TQNITUbi0hEt08lwIlj3fdUcHLEc1e8OeIx4k8NrqttavHMQ6tbOwysi8 Fc/XvxwegrmNN1Kx8P8AxN8Uf2veQWS3kdvLA9xIEEihSDgnrzxj2q58K7d08M3d4Qwj1DUZrmHc uCUOFB/HbmkBUPj3xWNcGiHwSn28wfaBD/acf+rzjO7GOvbOa3NP8U3Vx4ri8P3emC1nOmreykTh /LckAx8DBwT1zWXJ/wAlvi/7Af8A7VNVbzU7DSvjRJcajeQWkJ0YKJJ5Aik+YOMnvwaAPQqKitrm C8tkubWZJoZBuSSNgysPUEdalpgFFFFABRRRQAUUUUAFFFFADn++abTn++abQAUUUUAFFFFABRRR QAUUUUAZuuau+j2QlhsLi+nclY4YF6nBOWY8KMDqap+HfFEWs+DovEl1CLOJo5ZJE37giozAnOB2 XPSr+s6jY6bp0kl/e29okisiNPKqBmweBk8muB8Iyw6l8E59KsriKa/Wyug1vHIDIu55CoK5yM9s +tAGnF8QdSWHT9UvvD32bRtRnWGK4FyGkQNnY7JjABx6/nxnS1TxVqI8QTaJoGkJqNxaQiW6eS4E Sx7vuqODliOa4nVdT07XfhZoPh+wvYZtRuDbW/2eNg0iFeGLKOQBjqa3dN1Kx8P/ABN8Uf2veQWS 3kdvLA9xIEEihSDgnrzxj2pDOn8OeIx4k8NrqttavHMQ6tbOwysi8Fc/XvxwegrmT498VjXBoh8E p9vMH2gQ/wBpx/6vOM7sY69s5q38K7d08M3d4Qwj1DUZrmHcuCUOFB/HbmmSf8lvi/7Af/tU0CNT T/FN1ceK4vD93pgtZzpq3spE4fy3JAMfAwcE9c10lee3mp2GlfGiS41G8gtITowUSTyBFJ8wcZPf g13ttcwXlslzazJNDINySRsGVh6gjrTAlooooAKKKKACiiigAooooAK4/wCJP/IDH+f4krsK474k /wDICH+f4krWj/ERnU+FnlWaM0lGa9U4Rc0UmaM0ALmikzSZoAXNFJmjNAGNRSUtcx1C0UlFAC0U UUwFopKKYC0tJRQIdRSUUwPozw3/AMipo3/XhB/6AK0qyfD9xGnhfR1AYj7BBjj/AGBV/wC1p6N+ Vea1qdBPVCHQdHtr430GlWcV03WdIFDn8cZqx9rT0b8qPtaejflSswG32m2OpweRf2cF3FnOyeMO M/Q0WOnWOmQeRYWcFpFnOyGMIM/QU77Wno35Ufa09G/KizAW3s7WzR0tbaKBZHMjrEgUMx6scdSf Wm2en2WnI6WNnBarI5d1hiCBmPUnA5PvS/a09G/Kj7Wno35UWYFVfD2iJf8A29dIsRd5z54t0359 c4zmrd5C1xZTQoIS7oQomTemccblyMjPUZFJ9rT0b8qPtaejflRYDC8GeFP+EYtrwzCya4u7l5S1 rbiJY0PIjHUlQc4BPGcV0UsUc8TRSxrJGwwyuMgj3FRfa09G/Kj7Wno35UWC5XsNB0fSpGk07S7O 0dxhmggVCR9QKL3QNG1OcT3+kWN3MF2iSe2SRsemSOnNWPtaejflR9rT0b8qLBcHsbOSzazktYXt mG1oWjBQj0K9KkSKOOFYUjVYlXaqKoCgdMY9Kj+1p6N+VH2tPRvyoswIV0TSUggt00uzWG2k82CM W6BYnzncoxgHPcVNJYWct5FeyWkD3UAIinaMF4weCFbqM5PSj7Wno35Ufa09G/KiwFM+GPD5uTcn QtNM5fzDKbSPduzndnGc55zVyGxtLe5muYbWGKe4x50qRgNJjpuI5OPej7Wno35Ufa09G/KiwEOo aNperbP7R061vNn3fPhV9v0yKkfTrGQW4eyt2Fq26DMSnyj6rx8p+lO+1p6N+VH2tPRvyosAt5ZW moWzW17aw3UDYLRTRh1OORkHikFhZi8F6LSAXSx+UJ/LG8J127uuPaj7Wno35Ufa09G/KizABY2g vjfC1h+1mPyzceWPM2Zzt3dcZ7Vz9h4RNt40uNfdNOSJoTFFFb2u1ydwIdmJPzAZGQBnPtXQfa09 G/Kj7Wno35UWC5PVa402wurqG6ubK3mntzmGWSJWeM/7JIyPwp32tPRvyo+1p6N+VFmA2+0zT9Ui WLUbG2vI1bcqXESyAH1AIPNMsNH0vSjIdO020sjJjf8AZ4Fj3Y6Z2gZ6n86l+1p6N+VH2tPRvyos AXNjaXpiN1aw3BgkEkRljDeW46Mueh9xS3dla38Pk3ltDcxbg2yaMOuR0OD3pPtaejflR9rT0b8q LMCSeCG6geC4iSaGRSrxyKGVgeoIPUVnz+GtAufL+0aHp03lII4/MtI22IOijI4A9Kufa09G/Kj7 Wno35UWArQeH9FtRGLfR7CERSeagjtkXY+MbhgcHHfrVq8srTULZra9tYbqBsFopow6nHIyDxSfa 09G/Kj7Wno35UWAFsLNLz7atpAt15fleeIxv2ddu7rj2qM6Tppa6Y6falrwYuT5K5nHTD8fN171J 9rT0b8qPtaejflRZgUovC/h6Df5Wg6bH5ilH2WkY3KeoPHI9q0UijjhWFI1WJV2qiqAoHTGPSo/t aejflR9rT0b8qLAQpoukxwQQJpdmsVtJ5sEawKFifOdyjHynPcc1N9hszfC+NrD9rCeWLjyx5mzO du7rjPaj7Wno35Ufa09G/KiwEUmjaVN53m6baSee6yS7oFPmMOjNxyR2JqzPBDdQPBcRJNDIpV45 FDKwPUEHqKj+1p6N+VH2tPRvyosBJBBDawJBbxJDDGoVI41CqoHQADoKfUH2tPRvyo+1p6N+VFmB PTn++arfa09G/Kny3KLIQQ1FmBJRUH2tPRvyo+1p6N+VFmBPRUH2tPRvyo+1p6N+VFmBPRUH2tPR vyo+1p6N+VFmBPRUH2tPRvyo+1p6N+VFmBMyq6FHUMrDBBGQRVGw0DRtLmabT9Ks7SRhgvBAqEj0 yBVj7Wno35Ufa09G/KizAi1DRtL1YINR061vPL5Xz4Vfb9MiraIsaKiKFVRgKBgAelQ/a09G/Kj7 Wno35UWYAbG0N8L42sP2sR+WLjyx5mzOdu7rjPaq97oGjanOJ7/SLG7mC7RJPbJI2PTJHTmrH2tP Rvyo+1p6N+VFgH29vBaW6W9tDHDDGNqRxqFVR6ADgVJUH2tPRvyo+1p6N+VFmBPRUH2tPRvyo+1p 6N+VFmBPRUH2tPRvyo+1p6N+VFmBPRUH2tPRvyo+1p6N+VFmBPRUH2tPRvyo+1p6N+VFmBZf75pt Ry3KLIQQ1M+1p6N+VFmBPRUH2tPRvyo+1p6N+VFmBPRUH2tPRvyo+1p6N+VFmBPRUH2tPRvyo+1p 6N+VFmBPRUH2tPRvyo+1p6N+VFmA2+0zT9UiWLUbG2vI1bcqXESyAH1AIPNR2Gi6VpTO2naZZ2bS ABzbwLGWA6ZwBmpvtaejflR9rT0b8qLAQQaJpNrfvf2+mWkN2+d06QqrnPX5gM07UNG0vVgg1HTr W88vlfPhV9v0yKl+1p6N+VH2tPRvyosBMiLGioihVUYCgYAHpUJsbQ3wvjaw/axH5YuPLHmbM527 uuM9qPtaejflR9rT0b8qLMCve6Bo2pzie/0ixu5gu0ST2ySNj0yR05q3b28Fpbpb20McMMY2pHGo VVHoAOBTPtaejflR9rT0b8qLAT0VB9rT0b8qPtaejflRZgT0VB9rT0b8qPtaejflRZgT0VB9rT0b 8qPtaejflRZgT0VB9rT0b8qPtaejflRZgT1x3xK/5AQ/z/EldV9rT0b8q5T4iSwS+Hn3eYGH3cAY +8vWtKS99ET+FnlFFJmivVOEXNFJRmgYtFJRQAtGaSkzQBkUUlLXMdIUtJRQAtFJS0ALRSUUwFpa bS0wFpabS0xH0BoX/Is6P/2D4P8A0AVeqjoX/IsaP/2D4P8A0AVerge5uFFFFIAooooAKKKKACq8 t9aQ3cNpLcxJcT58qJnAaTHJwO+KsVxniL/kpnhT/duf/QKGB1kt9aQXUNpLcxJcT58qJnAaTHJw OpxSWuoWd6kr2t1DOsLlJDG4bYw6g46GuU8Rf8lM8Kf7tz/6BWN4nt9R0HxLc2Oj4WPxWmxQDjyZ gwEjjGMfKxOeuT7UrjsegJq+myaedQS/tmsxnNwJR5fHX5ulRWHiDRtUmMNhqlpcygZ8uKZWbHrj riuNutIs5fHOieFZ0DaXp+nG4jt2+7NJkrlh0PTP5+tasWqaXH4wsNNn8NNZ3r+b9kuTHEBtVWyQ VOQCAfzouB01rfWl8JDaXMU4icxyeW4bYw6qcdD7UxNV06S3uLhL63aG1ZlnkEgKxEdQx7Y965f4 b/6jX/8AsMz/AMlrE0v/AJETxv8A9f13/wCgii4WPSoZormBJ4JFlikUMjochgehB7ioH1TT49QT TnvbdbyQZS3MgEjDk8L17H8qo+ESB4N0ck4AsYsk/wC4K8x1HU7C5iuvGUWoW39pxaqktvb/AGgC V7ZPkC7c5Gc5PHQUNhY9dv8AU7DS4ll1C8gtI2barTSBAT6c1OssbwiZJFaNl3BwcqR1zn0riPH3 2XVoPC/3ZrW81WD3Dow/qDWZb6vd2ngS58MiRm1WK8OkQlgVLBidr8cgbM4PtRcLHoVhqun6ojvp 99b3axnDmCQOFPviiPVNPmv5NPivbd7uIZeBZAXUcdV6jqPzrhfBiWXhvWfGQUeXaaeIDx/dVJCf qeKwLHULDSrnQvFH9pWjX95fSnUoY7kMyxzHjcM5AQDoR1x0pXCx65LfWkN3DaS3MSXE+fKiZwGk xycDvii5vrSyMQurmKAzuI4vMcLvY9FGep9q5TxF/wAlM8Kf7tz/AOgUfEP/AF/hr/sMw/zp3A7I kKpZiABySe1ZkHifQLqZYYNasJZHOFRblCT9Bmr13/x5zf8AXNv5VwXgvQNK1n4X26X9nBIWWf8A esg3od7chuoIoYHd3N9aWRiF1cxQGdxHF5jhd7Hooz1PtUOoa3pWksi6jqNtatJyizShSw9QDXmU d7c3/g3wVNdyNLIusxxh26lVdgPyAA/Ct7XrHU9D8XXfiWPSI9ZsLmBUljyDLbhQAdoPbAzgdc9q VwsdzDNFcwJPBIksUihkdGBVgehBHUVmP4s8OxuyPrunq6khla5QEH061L4ev9P1PQrS70uMRWci fu4woXywOCuBwMEEcVyHifRNJTx74YiTS7NY7l7gzoLdAJSFBG4Y+bn1ptgdMmui41uxjtLzTJdO u4nKsLjM0sik5CAcEDHP9Mc3tQ1jTNJVW1G/t7UP93zpAu76Zrk9YtLax+InhK3s7eK3hRbrbHEg RRlCTgDjrUXhK2tdd8YeJNT1KOK5urW7+zQpIA3kxqWAwD0zjr7H1NFwO4gvLW6tVure4imt2G4S o4ZSPXI4qOx1Kx1SFptPvILqNW2s8MgcA9cZH1Fc341mtPDngyay09ILL7dJ9mhVf3caGT7x44UA bjnpWR4QuNL0Tx1d6Jpd/b3NhfWkcsHkzB1WRBtZeCfmIDMe/AovqFjsrnxJoVlcvbXWsWMEyHDR yXCqy/UE8VauNRsrSz+23F3BDbcHznkATnpz05rzO71GLTPFPjKe40J9VhCw78KpWMbD97PIBz1A OMU/WNPfTPghHbyXUdySY5BJG25cNICAD7A0rhY76HxNoNwJDDrNjIIkMkmy4U7FGASeeByOfeo/ +Ev8Nf8AQf07/wACk/xqnoIuNTinh1fwlb6bEY1UbpY5hMD1BAHTgdawdB0HRpviH4mtZdJsZIIF t/Kia2QpHlMnaMYGfandgegg5GR0paTpwKWmIKKKKACiiigAooooAKkuP9c34fyqOpLj/XN+H8qA I6KKKACiiigAooooAKKKKAK17qNlpsImv7uG1jJwHmkCDP1NOvL210+2a5vbmK2hXAMkrhVGeBya 4n4raVZN4XutUeHfdqYo0kYk7F3jO0dBnPJHWt7xrpl3q/h1rSytkuZTPE/lOwVWVXBOSe2AaVxm jYa1pWqO8en6ja3boMssMquVHqcGmS+IdFg1AafLqtol2WC+S0yhtx6DGep9K53w/qtraa3daPN4 XttD1L7OZkFt5bLPGD13KB37GucstPtL34MXuoXEEct3MZbiScqN5kEh5z17ClcLHp17fWmnW5uL 25itoQQDJK4VQT05NUYvFPh6eZIYdbsJJJGCoi3KEsTwABnrRpkMWteFtOOq2sNz51rDJLHNGGXe UBPB965X4f6NpUt3r0smmWbyWusSrAzQKTEFIwFOPlx2xTuB3FrfWl8JDaXMU4icxyeW4bYw6qcd D7VYrjPhv/qNf/7DM/8AJa7OmhBRRRQAUUUUAFFFFABRRRQBJcf65vw/lUdSXH+ub8P5VHQgCiii gAooooAKKKKACiiigCtfajZaZB59/dw2sWcb5XCgn05pLLUrHUbY3NleQ3EIyDJE4YDHXJHSoNat dHlszda1b201vaqXJuUDKnqcHjNcl8O9HljtNb1WKI29pq0zNZWxXbtjBbacdgQwA9h70r6jOqt/ E2g3dwlvbazYzTSHCRx3CszH0ABqbUda0vSSg1HULa0Mn3BNKFLfQGuC0Zl8HjR7fXvCFnbs7LCm pxNFJIJTnG7AyD75P41qaRbwap8SPErX8Ec/2aK3hhWVQ2xCpJAz6nn8aLhY7KO5gltVuo5o3gZN 4lVgVK4znPpWZ/wl/hr/AKD+nf8AgUn+NYfwyBPhu9snTNvbahPBErDIMfBxz15Y1RfQdGHxYjsh pNj9lOk+YYPsybN3mEbtuMZx3ouB28GqafdTpBb3tvLK8QmVEkBZoz0cD096t1xNtDFb/F8wwRpF FHogVERQFUCQYAA6Cu2poQUUUUAFFFFABRRRQAUUUUAFcr8QP+QC3+f4lrqq5X4g/wDIBb/P8S1p T+NET+Fnl+aKSivROMXNGaSigBaTNJRQAtGaSigDJozSUtcx1BS0lFMQtFJRmgB1FNzRmi4Ds0Zp tFFwHZozSUtMD6C0H/kWNG/7B8H/AKAKvVjaPqdnb+HdJilm2ulhCGG0nBCDjgVb/tnT/wDn4/8A HG/wria1Ni9RVH+2dP8A+fj/AMcb/Cj+2dP/AOfj/wAcb/CizAvUVR/tmw/5+P8Axxv8KP7YsP8A nv8A+ON/hRZgXqKo/wBsWH/Pf/xxv8KP7YsP+e//AI43+FFmBerC8R+GRrslpd297LYahYszW9zG obbuGCCp4I6f5NX/AO2LD/nv/wCON/hS/wBsWH/Pf/xxv8KLBcx9J8KXUGsJrOt6w+rX0KGO3Ywr EkKnrhV4yeeat6x4dGra3o+p/ajEdLkdxHs3eZuAGM5GPu+9Xf7YsP8Anv8A+ON/hR/bFh/z3/8A HG/wpcoXM/xH4Xi16S1u4ryaw1CyJa2uoeSueoIP3h7f4mqGneD9SXxDa63rXiB9SnslZYFW1SEA MpU5x161v/2xYf8APf8A8cb/AAo/tiw/57/+ON/hRyhc56bwZqVpf3dx4e8Ry6VFfSmaeBrZZl3n qV3dKuweD7W08JXeg21w4N4j+bcyDe7uwwXPIyenftWp/a9h/wA9/wDxxv8ACj+17D/nv/443+FH KFznLDwhr9npsmmv4taW1No1tFGLFU8rK7QwIbJIHvV2DwJ4fj0RNNk0yzlcW/ktcm2QSMduC+7G Qe/Wtb+17D/nv/443+FH9r2H/Pf/AMcb/CjlC5gp4Kl/sjQbCbVvNOjXaXCy/Z8eaqkkJjdxxgZ5 6dKmfwVaP45TxSZsOsWPI8vrJjbv3Z/u8Yx2zmtj+17D/nv/AOON/hR/a9h/z3/8cb/CjlC5zt74 Ea6GviPVmh/tyWJpCsOTGqEkqPm5znr6dqt6t4E0DUdHnsINMsrOSRNqXMVsgeMjocjBPTnnmtf+ 17D/AJ7/APjjf4Uf2vYf89//ABxv8KOXyC5z+q+DdR1CTRrqDxAbW+0qEx/aPsgcykqAW2lsDgH1 61LdeE77UbPS49R1w3Vxp98t2ZzahfNCnhNoOB9efpW3/a9h/wA9/wDxxv8ACj+17D/nv/443+FH KFy1LH5sLx5xvUrn0zXEWHw81O10k6NL4suG0sqytbwWiRkhjkjeSxwcn8663+17D/nv/wCON/hR /a9h/wA9/wDxxv8ACjlC5lal4Ptruz0aztJvskGkXUc6Js37wn8OcjGfXmsjxb/bUGtW1tp2vXsc epTIklqliJfKjPysyybcDGMkEjqTXWf2vYf89/8Axxv8KP7XsP8Anv8A+ON/hRysLjND0e10DR7f S7PcYYFIBc5ZiSSSfqSaq6p4e/tPxDpGr/avK/swyHyvLz5m8Adc8Yx6Grv9r2H/AD3/APHG/wAK P7XsP+e//jjf4U7Bcpaj4e/tDxNpOtfavL/s0SjyfLz5m9cdc8Y+hrP1LwbcnW59Z0HW5dIuroAX A8lZY5cd9p4B9/r6mt3+17D/AJ7/APjjf4Uf2vYf89//ABxv8KXKFzEl8Gvf3GlPrGqNqcdh5jyx TwLtuHcYyRnAA7DB+tPv/BGnSalpuoaVHbaTcWE/mFre2UCZD95CBjqO/OMn1rY/tew/57/+ON/h R/a9h/z3/wDHG/wo5QuUNP8ADSWWua1qUlwJ01byw0BjwECqQRnPOc+grJPgBj4Im8Lf2sTCZvMh ma3yY13btpG75uc88deldL/a9h/z3/8AHG/wo/tew/57/wDjjf4UcoXKGi6Tr9hdmTU/Ev8Aadv5 ZVYfsMcOGyMNuU56AjHvTtO8Pf2f4m1bWvtXmf2kIh5Pl48vYuOuec/QVd/tex/57/8Ajjf4Uf2v Y/8APf8A8cb/AAo5QuXaKpf2vY/89/8Axxv8KX+1rH/nv/443+FOzFcuUVT/ALWsf+e//jjf4Uf2 tY/89/8Axxv8KLMLouUVT/tax/57/wDjjf4Uf2rZf89//HG/woswui5RVP8AtWy/57f+Ot/hR/at l/z2/wDHT/hRZhdFypLj/XN+H8qz/wC1bL/nt/46f8KludTshOw88duik9vpRZjuieiqn9qWX/Pb /wAdP+FH9qWX/Pb/AMdP+FFmK6LdFVP7Us/+e3/jp/wo/tSz/wCe3/jp/wAKLMLot0VU/tOz/wCe 3/jp/wAKP7Ts/wDnt/46f8KLMLot0VU/tOz/AOe3/jp/wo/tSz/57f8Ajp/woswujB8XeFNS8UI1 qmv/AGPT3Vd9r9jWTLA53b8g+nHtVyTSNefQ0tR4mZdRSXf9tFnGAy8/KY+mOf0FaX9qWf8Az2/8 dP8AhR/adn/z2/8AHT/hS5R3MfRPCs1lq76zq2qyapqTw+QJTEsSImc4Cisxvh5OI5NMi1+aPQZp TJJp4gXPLbtok6hc4rqjqtkDgz/+Ot/hR/a1j/z3/wDHG/wo5QuWo0WKNY0UKqABQOwFY/h7w9/Y Mmpt9q8/7fevdY8vb5e7+Hqc/Xir39rWP/Pf/wAcb/Cj+1rH/nv/AOON/hTswuczYeCta0q/uZdP 8VGC2ubtrmS3FijZLHkbi2egxmuyqn/a1j/z3/8AHG/wo/tax/57/wDjjf4UctguXKKp/wBrWP8A z3/8cb/Cj+1rH/nv/wCON/hRZiuXKKpf2tY/89//ABxv8KX+1rH/AJ7/APjjf4UWYXLlFUv7Wsf+ e/8A443+FH9rWP8Az3/8cb/CizC5doql/a1j/wA9/wDxxv8ACj+1rH/nv/443+FFmFzRuP8AXN+H 8qjqvc6rYidgZx26KT2+lRf2tY/89/8Axxv8KEmO5doql/a1j/z3/wDHG/wo/tax/wCe/wD443+F FmK5doqn/a1j/wA9/wDxxv8ACj+1rH/nv/443+FFmFy5RVP+1rH/AJ7/APjjf4Uf2tY/89//ABxv 8KLMLlyiqf8Aa1j/AM9//HG/wo/tax/57/8Ajjf4UWYXMjxj4Vn8VW9rBHqpsY4JDI6GASpKeMbl JGcYPByOak0vRddtIrqPUPEz3omiKQstmkRgb+8ME5PsfStP+1rH/nv/AOON/hR/a1j/AM9//HG/ wpco7nOp4N1O+vbWXxF4kk1SCzmE0MCWqQDeOhYr1+lT6t4TvZtam1fRNbfSbm5jWO5xbrKsgXoc Hoegz7Vt/wBrWP8Az3/8cb/Cj+1rH/nv/wCON/hRyhci0HRLbw/pEOnWrO6x5LSOcs7E5LH6mqze Ht3jJfEX2r7tl9l8jy/9otu3Z9+mKvf2tY/89/8Axxv8KP7Wsf8Anv8A+ON/hT5WFzB1nwjqN74l /t3S9fOmTm2FuQLRZcrnPdvp27V0VhBcW1hDDd3Zu50XEk5QJ5h9do4FR/2tY/8APf8A8cb/AAo/ tax/57/+ON/hRysLlyiqf9rWP/Pf/wAcb/Cj+1rH/nv/AOON/hRZiui5RVP+1rH/AJ7/APjjf4Uf 2tY/89//ABxv8KLMLouUVT/tax/57/8Ajjf4Uf2tY/8APf8A8cb/AAoswui5RVP+1rH/AJ7/APjj f4Uf2rZf89//ABxv8KLMLouVynxB/wCQC3+f4lrf/tWy/wCe/wD443+Fc544njvPD8rW7bxHgt2x ll9evSrpp86Jn8LPMqM03NFeicg7NJmkzRmgBc0UlFAC0ZpKSgDKzS5puaK5bnSOzRmm0tABmlpK WmAUtFFMApaKKYhaKKKYC0tJRTEOopM0UwHUZpKKYh2aKSigB2aM02lzTELmlzTaKAHZopM0UALR mkozQA7NGabmjNMB2aKbmjNADs0U3NGaAHUU3NGaAHUZpuaM0AOopuaXNAC0UlFAhaKTNFAC0UlL QAtKKSloAWlptLTEOFLTaWgQ4UtNzS0CHUtNpc0CHUtNpaAFpaSloELmlFNpaQDqWm0uaAHUZpM0 ZoAXNJSZooAXNGabRmgBkw+YH1FRVNINyH25qCmUhaKSigBTSUGkoAWikzRQMKKKSgBaKSjNAC0U lFAC0UmaM0ALRSUZoAWlptFADqKSjNAC0UlFAC0UmaM0ALRSUUCFpaSkzQAtLSUZoAWikooAWiko zQAtGaSigBwOKdUeacDxQA6ikooEFFGaM0AGaKTNGaAFzRmkzRmgYtJmikzQBlUoopa5ToDFFFLT AKWkopiFopKWgBaKTNGaYC0tNpaYC0UlFAh1FJmjNMBaXNNpc0ALmlzTc0ZpgOozSUUCHUUmaM0w FopM0ZoAWlzTaXNAC5ozSUUALmikopgLmjNJRQAtFJRQIXNLTc0tAC0UlFAC0UlFAC5opKWgBaKS lpiFpaSloAWlpKKYhwpaaKWgQ4UtNFLQIdRSUtAC0tJRQIdS02loAdRTc0tIB4opopaBDqM0lFAB RSUUAFJmikoAdmoGG1iKlpkgyufSgaI6KKSmMU0lBooGFFFFABRSUUALRSUUALRSUUAFLSUUALRS UUALRSUUALRSUUALRSUUALRRmigBaKSigBaKSigBaKTNFAC0UlFAC0UlLQAUUUUAFKDzSUUCH0Ug ORRQAtFJRQAUUlFAC5opKKAFpKKKAMyikpa5ToFozSUUwFopKKAHUUlFAC0UlFMQtLSUUALRSUUw HUUlGaYC0uabS0ALRSZooEOzRmm0tMBc0uaIo5JpUiiRpJHYKiKMliegA7muils9D8PAQ6nG+qam Dia1im8uG3P91nAJdh0IXgcjPFJysOxztFepTeHvDdl8Nh4lu/D8Au5Iw8US3E5T5mwmf3mTwQT0 71wsOtaWJVM3hbTnjz8ypPcqT9CZTj8qmNTm2Q3Gxj0VpeIm0ltfuzoabNO3AQDLHgAZPzc8nJ59 a6nwTF4W1vw7caL4hu1spYbo3MFw0yxHDKqsFZuP4BkEen4Nzsr2Eld2OFozXZ+LtQ8PaXp58PeF v3sTsr3t4W3mYr91d3cZ5OMDPTvXJ6ddiw1O1vGhWYW8ySmJuj7SDg/XGKcZNq9hNWZBRW74w8UH xbrK6ibNbQJCsQjD7+ASck4GevpS23g3VZvDs/iCdY7XT4o96yStzKc4AVRzy2Bk468Zo5rK8tAt roYNFJXT/wDCZY8A/wDCKrpsYy+5rrfy3z7/ALuOvQZz0ptvogSOZopKWqEFLSUUAWrDT7zVLtLS xtpLidzhUjXJ+vsPc8V1V38LfENho02p3UllEkEJlkiMxLgAZI4Xbn8a6bwZZp4X+Gmo+JWCpeXU LtG7jG0D5Yx17tz75HtXk7yNI7O7FnY5ZmOST6mslKU5Pl2RVklqJRRmitiRaKSloELS0lLQAtLT a7a98NeEoNc0m0t/EHm2l0H+1TefGfKwuV5AwuTxzSlJR3BK5xdLWh4gs7DT9cubXTLv7XaRkCOb cG3ZUE8jg4JI49KzqpO6uS9BwpabS0xDhS02uj0fR9CvPDGoX19qv2fUIN/2e38xV8zCgj5SMnJy OKmUlHUErnPUtdDrGj6FZ+GNPvrHVftGoT7PtFv5it5eVJPygZGDgc1ztCkpK6Bqw6lptLTJFzS0 2pFUY3McL/OpnNQV2a0qUqsuWP8Akl6iUU8SRjpFn6mpHEYQMU5PYGuSWKlGSjKm9dtv8z1IZXTq U5ThXi+VXekrL58upEAScDrRRuAOVBH40uF8vO7n0roc2n7y0dvvPPVCM01CV2rt9FZW2vZt76eg UUrhRjac02rhNTjzIyrUpUpuErXXZ3/FC0nJOBSVKg2xM/foKzrVfZxv1bsvVm+Dwv1mo4t2STbf ZLV/5DTE4UscDFR0UlVTU1fnd/lb9WZ15UZNeyi4rzd7/ghaM+tL5n7vZgdetMqouTvdWJqwhHl5 JX010tZ9vO3cjYbWxSVIw3D3FRVZAppKDSUALRSojyyLHGrO7EBVUZJJ6ACuibQdO0WRItduWlvm xjT7Z1XZnp5srfKnuBkjIORUuSQ0rnOUld9q3h1dA05NV1HwzpaWZZV8k6hO0zluwZW2+/Q9DTPE 3hDSm8IweK9ALw2rKpmtpHL7ctt4PXIbgg/05hVYu3mXyM4Siiul/sXw/wD8IH/a39rf8Tjfj7F5 qdPM2/dxu+782c1bkkSlc5qiul8Y6L4f0f7D/YWrf2h5yMZv3qPsIxj7o4zk8H0rmqIyUldA1Z2C iiiqEFFdLoui+H73wrqWoahq32bUbff9ntvNRfMwoK/KRk5ORx6Ua1ovh+y8K6bqGn6v9p1G42fa LbzUby8qS3ygZGDgc1HOr2K5Xa5zVFFJVki0UV3F94Y8Hwa9pFpb+IvNs7oSfa5vPjPk4XK8gYXJ 45qJSUdxpXOHorS8RWWn6dr11aaXd/bLOMqI5twbdlQTyODgkjj0rNqk7q4noLRSUUwFopKKBC0U lOjjkmlSKJGkkdgqooyWJ6ADuaAEor0Sy8G6N4W0tdX8XSebMeY7JDkFuoXj7x9edvrnrWde/EzU VBg0S0tdKtl4QRxKzAfiMfpWSqOT9xXL5bfEcbRXoHhzxTB4p1KLR/E+nWl4ZwUiuREEkVsdyOmc dsc/pjXPhiHUfF+o2OlEW+m2Tnz7iYkpAq8MST15DYHf6ZNCqatSVg5dLo5iiupl8QaForiLw/o0 Ny6EZvdRXzGYjPKp0Xsc9fUV6f4Hvb/UfDMV/qMgaW4kdlAjVAiA4AAAHHGcnJ561NSs4K9hxgpO 1zweiuw1T4j+Izqt39i1JUtRMwhVYIyAmeOSpJ4qO0+J3ieCUNNdRXKZGUkhRePqoFXzTte34/8A AJtHucnRXafFDW4NV1y3gs7mG4traHh4nDDex55HHQLXIWdncahdxWlpC008rbURRyTTjK8eZ6A1 Z2RGvpS16BJonhrwLbRy64o1XVnTclop/dr259vds9OBxUI+Kt9buiWGj6fbWygDygrZx6AggDj2 qPaN/Crj5Ut2cLRXsOjeJPD3jyP+z9SsIo7xgSIZOdwHUo+Ac4+h6+ma4jxz4NbwzdJcWzNJp87Y Qt96Nuu0+vsf8OVGteXLJWYOFldao5WkoorczCikooAWikooGZlLSUVyG4uaKSimA6jNNooAdRSU ZoAWikpaYC0UlFAC0UUUwFopKM0CFzS02lzTAWjNJRQAtLTaWmB1/wANrSS4129ntohLeWWmzz2i nvNgKv8A6FXLRRTXt2kMYaWeeQKoJ5ZicDk+pNX/AA54jv8Awvqo1HT/ACzJsKMkq5V1PY4IPUA8 HtW54CtX8S/EeG7uI04me+lVMqoIO4YHpvK8Vm24tyY97I7P4oWDr4f0bQLFrRIoMN/pF7FCQEXY uBIwLfePPt7151qHhW50vw5FrFzc27Ce58mOOCVJgQASW3oxHBAGPftWt8WdQW98dTRrnFpCkGff lj+rVyTXty1glgZT9mjlaZY+29goJ9+FH0/E0qSaihyauQ13Fl4c8P8Ahq0ivPGkk8lzcxiSDTLY ESKhx80nTaevGR0PU8Bvwo0BNZ8VfabiPfb6ennHOMGTOEBH5n/gNZ+ovP41+IkkaMZBeXnlRlDn bEDgEfRRn86cpXfL2BLS52Hi3wn4YtvCNre6RpMtvfao8Edmksz7lZyGwQWIB25BzwKm8H/D3wzc JeR6i76ncWhVLiRJCluj4JKIVILFeMk8cjHeqHxpvx/aOmaTHuVLeAylQfl+Y7R+ICH861rf/ik/ gk00eBcX0O7cvykmYgA59QhH/fNY3lyLXcvTmPONNTw1NrF2moJqhtXkIs0sAhc5bgHf7Y969W8d SeHdC8J6d4f1STUltWCpGtmIzI4jA+8W46lTx39s15j8PtLOreNtOhIYxwyee5HYJ8wz7EgD8a3P izezat40j021V5zaQrGIo0JO9vmOMcngr+VaTV6iRK0i2VfDXhLStSvre5vZ51sL66aLT7VSpuJ1 Dcs+OFVQPmPXg47Zt+PvCmk2PiTTtG0GBLWWWBpZ2lnbYq8nczMTgAKxOOwqT4M6Ut14iutRcAix hAXI6O+QCPwDD8a5nxvqrax4x1K6JJRZjFGN2RtT5Rj64z+NNXdS19hacp3+leAfC8nhC51GCObV 5wkgilaRolkkX5RtAIwu4dWz+VReB/AfhjVdJuri6aXU5oZDC7o7JEHCgny9pBYfMBk9ccDHWfxb LL4a+EWmaXGphmu0jilCtgrkF5OnXJ4Prk1LaTS+FvgiJ0Oy5uYiUZGKkGVsAg+oUg/hWN5OOj3Z VlfYzPBXgfw5dX1zp2qu2pahboWnWB2WC35ACbwQWfr04GCO3Pn2r2sMOv31pYqzwpdSRwKPmJUO Qo9+MV6R4NjHhP4Yan4jcbLm8U+UWB7EpHx/vEn6GuJ8A6b/AGp420yAhiiTec5A6BBu59iQB+Nb Rk7yk3oiWtEj0L4myJoPw/07QYnBMhjhIb7zJGuSf++gv515/wCGvDMep2N7rOpzvbaRYL+9ePHm SPjhEzxk5HX1HrXQfGG+kvvE0dlEN8enWwaTaM7GcjJPoOU/P3rf8W2Wk+HPAGk6FfXc0ELMHljt kDSXJAy4G44Ub2ByemAAD0qINxgl1Y2rt+RmweHfCWu/D7UtbstIn02a1WXY73LuWZBuHU4IOQDx 1yB0zUXg/wCHml3Wptaa3cPcXcUImmtLdgI4c8BZHByWOc4Xpg5PIzzeseKNR1nRhp2n6f8AYNDs tuYIAzAZPBkfuS2TzjJ9TzXZfCxU0TwfrfiKZHIGcKeAyxqTx9SxH4U5c8YPUFZsS+0vwR4I1S5u tStvtUsp/wBF00DzRHHwNx3HGScn5j06CvMb6eO6v7i4ht1t45ZWdIUPEYJJCj2HSl1C/udU1Ce+ u5DJPcOXdj6nsPYdAPSq9bwg46t3ZnJ3Op8E+GrTXHv7zUXl+x6bEJZY4fvydTgfgp6c1Z1KPwdq PhCfUNMt/wCzNRt5gq2r3RdpQWAyAxORtOeAMEEfWb4V6yth4hk02ZQYdSTZnHR1yVz7EFh9SKyP HHh+Pw34kls4P+PaRBNAC2SqnIwfoQR9MVGrqWb9Cvs3Oh8DeENB1S6kh1GVr+4SLzJIoH/cxZIw C6n5m5/h4GDk5rJ0HQrLVviE+mLCZNOS4mJUOf8AVKW285z/AHR+NdF4Nx4a+HGqeIW2rPdZWE8n p8iZH++W/Ck+EOlOs19rM0RWIRiGKQ9DzlsfTC/n9ahza53fyGknZGR4k8NWEnjSTSNGSKytrWAP dSSysVjHVmJYknhlGB/jXSab8PdAu/ChuoBPPcXEZMVzcMUCdt4UHAXjdg5OOvpXmuqXkmsa5dXa iR2urhnRTy3J+VfywMV6T8RL9/D3hPTfD1q7DzohHI+eTGgAI49SR+tOamuWKeoly6uxi6lJ4Uez h8L6DaLc3lxPHF/aUiD5WLgEhup9MDAwetXX0jwTpHiBPDmpWczP5eX1Ge4MahyNw4BAxjjPrgc8 mvPbK6ksb6C8hx5lvIsqZ6ZU5Gfyr0v4h6da654atPFtmCriNPMDHrGx4BH94M2PxPoKclytRu7P 8xJ3TdjjbTR9Lk1e5SfUT9hiuWhhEJV57nkhdg6DIx8xwOa2viP4f0fw/Lp0OlwGJ5EdpcyMxYAr tPJ4/i6VnfD3Sv7V8X2oYAx2ubhwSf4cY/8AHitaHiDzPF3xK+xwIZYo5Vt/lGNsaH5yfx3fpVNt VN9EiUvd2LfiLwzo2ifD+0vHsymqXCxL5hkckORubjOOgI6U/wAJeBtNuNQe21iRri6jhEsltC2E gyeA7A5LHOcDpg5PSl+Lt+G1DT9NQsBDEZWAPynccD8RtP51b+G4TSPCOr65JG2QWxkfeWNcjH4s RWV5ey5r6su0ee1jMfwxoQ8ZtaXLTW9rNcCK1s4dzSOBgFmJyVQkHk8kcjjmqvxE0LStB1O1h0yM xeZDukiLlsc4B5JPPP5VL8OoZ9Z8btqN07yyQo87yHux+UZ/76Jx7VneP9S/tLxheMrAx25EC8f3 eD/49urSPN7RK+yIduS9jnalkX5EYfdxj8ahFLk4xnitJwcpRaexdKrGFOpCSvzJW8rNP7hyjcwH qamuD84UdhTLZcy59BmmyNukY+9cr9/Fpfyr8X/wD04fuMpk+tSSXyjr+bHIAWAJ6ntSyqFfC0QD L7j0UZoTMk2ffNEqjVeUm/ditfV/8AKeHjPBU4KC56k7J9bLR/i/wHSoqhQByetLHGrE5OcelMnb Mh9uKeh2QFu5PFc0nVWEhaT5pW/F3/I9CnHCSzWq3TXs6ab8rRVttm2++4nyJ1G5vT0pZPlhVaiU bnA9TU02GYjBJUZxmnWShXgpNvq/yXpqycJN1cFWlCKjtGKt31ldrVuy/wArDGRfIDjg0xEDEbjj JxgUjuWwOgHQCn2y7pM+greXPRw85Tl3fp2Rx0vYYzH0qdKCtaKfRNr4pWXz0+/sJMiLIFU445pT Ghh3oTx1zUUjbpGb3qS2OWZD0YVM1VpYeM3J3jZvz7mlGWGxOPqUVBKM21F9v5Wum9vvCFVcsG7D IqIRb2JBwoGWPpUifIsje22nYC2vP8Z5pzqyhOVnu0l5aa/h+IqOFp1aMOaKXJGUpdLq9opv1/D5 DIo4ZY3+UqV/iJqtUruwTy0GF6n3qKuihCcZScno9lvb/hzhxlalUhTjCKuk7tK13ft5LS+7Ot8J xjR9C1PxWY1kntSttZhuiytjLf8AAQcj8a5u1hm1TVIYDIzTXc6oXY7iWZsZPrya7HwtpI8U+Ab/ AEO0mRdQtr4XkcbnaHBQJ1x/vfjjPWqXw+0aWX4g29tcwgNYO8kyN/CyZA/EPiq5kuZ9UcVr2R33 xG0LVdbstK0jSbMyxrIWkkLBVjwAq5z7M3T0rnfHWproHha08F2tvKQsa+fcvEY0cghjsz1y3JPQ dOSeKXxO1+9TxrJDZXlzbC0hSM+VKUBYjfng/wC0B+Fb/iC6fXPgxFqepRg3iiMq7j5iwlCbh/vL k/jWEU4qF9jRtNyscR4R0HTNU1C1XVLtiLmYRxWlsQ0snIyW/uKB68kA4qz8QdB07SfFUGmaLbmM PBHmPzCxMjM3dieo21f+EWlC78Rz6nKB5enw5BJPDvkA/wDfIf8ASmaCkvjH4pnUhEZLZLk3DMBg Kif6vP5KMVq5NTbvokQl7q8zS8b+D/D2kxaTYWYhsLq6kPm3U87lAiL8xOSQMkjHqeKZp3g/wx4g 8IXv9gyzXOq2gP72XKM7DkYTOArAEAnkd+hrL+LGo/bPGTWyltllCkWCeNx+Ykf99AfhSfCjUTZe MktizbL2F4iAeMgbgT/3yR+NTafslK+u5WnPaxV+HWk6TrfiY2OrxebE9u5iTzCm5wQexB+7uP4V CuhaX/wkmoQXV40Flb3r28UMJD3ExDEKqqenQfM2BXU6XpkOh/ETxFq7qTbaPHJcAA87pFyqj8Cw /Kue+H2nya/47gmuCJPJZryYk4JIOQeP9srVc28r6WJtsi98TfDmi+HJdNh0q3MLypI02ZGcsAV2 nknH8XSrfiXwromhfDmzvXsimrXKxL5hlckORub5c7egI6VT8R+b4z+KP2GBDLDFKtsdoxtjQ/vC T7Ev+laHxm1ANqOnaWhYLBC0zAH5TuOB+I2n86mLl7kb+bKaXvMwPA/hiz159QvdReX7FpkQlljh +/L1O0fgp6c1a1OLwZqPg641HS7c6XqVvMEW1e6MjSgsBkBicjac8AYII+s3wn1pdP8AEcmmTKDD qabM46OuSufYgsPqRWP468Ox+GfE0tnb5+zSoJoAWyVQ5GD9CCPpir1dWzfoT9m50XgPwdoGq3Uk OpTNf3McXmSRQPiGHJGAXU5Zjk/dOBg5Oax/D+gWOr/EaTS1hMmmpczEqHP+qUtt5zn+6Oveuk8F 48MfDXVfETbVnusrCeT0yiZH++W/Ck+Dmkus1/rU0RWIRiGKQ9G5y+Ppheff61nKbXPK/kUop2Rj eJ/DGnyeN5dH0RIrG2tLcPdSSysUj/iZiWJPRlGB/jW+ngTw7/wgcmo2ttc3t3LCfs80rFCzE7Vf aDhV/i+bov3sc15xq17JrOu3d4iyO13cM6KeWwzfKv5YGK9L+J962heFNL8PWjtGsqBH2nrHGoGC fckflTlzrljcStq7FfwP4K8K6tb3QuJJdTntyqyyKWjgVjnhCMFsY6n245rzS8jhivZ47dzJCkjL G56soPB/KvVvCrDwz8I7zVSWSW5Ekibh0Yny049MgH8a8jq6TblJ30FOySFopKK3Mxa9V+HPhq30 rS28Taoqq7IXhZzxFFjlvYkZ/D6mvO/DulnWvEFlp38M0oD84+Uct+gNepfFHU10zwtFptuRGbxx GFU4xGvJx7fdH41zVpNtU11NaasnJ9DzTxP4hufEmsS3kzERAlYIu0aZ4H19T61j0lFdCSSsjJu+ po+H5Eh8R6ZLJIsSJdxMzucBQHGST2ArrPHkn9k6TZ6RCdj37vf3vPzOzN8oOOw5/wC+R6VwVep/ FfRDdWVr4gthuWFBFLj+4TlT+bY/4EKxm0qkbmkfhZ5bXvF9J/wi3w+b5h5lpZLErY6yEBQcf7xr x7wlY/2l4r0214wZ1dsjOQvzH9Aa9X+Ims6fpmjw2+oaf/aEd3JjyPtBh4XnOQM8HH51nXfNOMSq ekWzxGrd/pl7pckMd7AYWmiWZFJBJRuhODx06Hmur0LVfB97rVpaP4Q8kzyrEr/bXlAZjgZVsAjm s34g3n2zxnfbXDRwFYUA6KFUAj/vrNbqbcuW1jNxSV7nN16r4D0mDw34XufFF9GWlkhMiLgZWMdA Pdv8K8xsbU32oW1mrbWuJViDYzgsQM/rXr/xMki07wKLOJNkcksUCKo4UL8wH0wlZ13dqHcqmrXl 2PItQv7jVNQnvrpy807l2OT+Q9h0A7AVAOlNpRXQZFmxvZ9OvoL22bbNA4dD7j19q9w8VxQaz4Fv ZcB0a1+0xkH0G8EH8K8Hr3PUP+Jb8MZIrhlVo9KEJOeNxjCDr7muTEL3otbm1LZo8MopKK6zEWko ooAKKKKAM2ikorkOgWikpaACiiimAUUUUCFopKKYC0tJRQAtFJS0ALRSUUwFooopgFLSUUALRSUU CJ7O2+2XkVt50MHmuF82Z9qJ7sewFeq+DJ/BvgRrie68S297eXK7A8MDssajkgFQepx9cD0rySip lHmVrlJ2PR5vDHgzXGmvv+E5iS8upGlkeWIRpuZst8jEEDr1PpVnwzYaT4E159Xl8W6Re2Qt2jZI G8ydySMBUUnHIHOT3GO48vpaXI2rX0C/Wx6r8MPEVmPEXiO5lglggvpPtAl8v91AoZ2w7DhOG4J4 +U89Kf4W1Hw3a/EaHTfDNnvjuHl829mbJwEdtkQwNq5AGepA/E1fihaXGkaNpWmaRAY9BEW5nhB2 ySZ4LkfgRk8kn0qb4V+GbrSZ7jxNq6/YbWKBkj88bCc4y5z0AA/HNZPlcXPuUr3sc58VLl7jx/fI 33YEjjT6bA382Ndd4s+I3hiXTbSLTIjqU9qwkt1kjZIoXC7VZgwBYjJwBxn8K838V6umu+KNQ1KM YjnlPl57qBtU/kBWTWqppqN+hPNZux2nw68TWOkeLrrVNcuTGLi3kBl8stmRnVs4Ud8HtTvEnjDT 01W+m8LxSRSXxY3GoTEmVs9Vjz9xf16dMCuJoFX7Nc3MLmdrHpnw48ZaD4Z8MX0Wo3EiXck7Oscc TMzrsUDBxtBznqRXJ3+s2esatp9s1uthotpIsaQqCSkZYb2YjlmIGT+lYNJQqaTchcztY9B+KHir SvEs+mQ6TfebBAHMjGN0VSxUDIIBOAD0B61L8R/FmiaroOl6PoVwJ4Ld9z4jeMRhV2oMMozwx6dM V51RSVJK3kNybueqXPjLwjP4C0vT7pri6nsooi1iisiyyIm3DtjBTJzwew+lYvgfxdZ23je71vX5 1gE9syKY4SVVsptUKoJACrj8K4WihUo2a7hzPc67xb4ut9SvtQj0aKSC3vZQ1xPIf3lwAAAP9lBj he/U+ldh4j8V+AfFml2kuq3V2Jrb94LeCJhJkgbk3FduDgdCOg5ryKim6UdPIXMzo/EHisalZppO lWa6bo8LZS3Q5aQ9mkPc/wCeetdHd+J9DtvhNF4f0/UGe/kRPNj8t1IJfe43bQMdR16etedUVTpp 28g5mLVrTLtLDVbS8ePzEt50lZP7wVgcfpVWitNyD1TU9d8Eat4ksPEU+rzLJZov+ii2fLMrFlJb GOCfXnA/HifF/iRvFGuvfiHyYkQRQoT8wQEnn3JJP44561hUVnCkou5Tk2em3Pinwjc+BdO0q7mu ppLaKIvbW4ZCzqMEFiMbSc5/Mc1P4c8f6OdCvrXVZ/7PLOyW0FrCT5URQABTgjOdxy3c/hXllLU+ wi1YftGddaeIdJl1vTLQQDS9Csrr7QRgySSOuSGcgEknAGB0BpvxE1+z8QeII59PuDNaxW6op2so 3ZJPBA9R+VcnS1appS5iXJ2sd/oviDw9d/D9/DWq3j6fLk4mEDSZO/eD8o/AjjiofEfinSovCkHh bQDJPbKAZriVSu75t2ADzktz6DoPbh6Wl7KN7/MXO7WO4+G3iLSPD8movqlwYWmWMRERs2cbsjgH HUVNo3i3Q9H8RRJp8c0GnPK73d5cZkmmyG2jjkKGIPqe/fPBUUOlFtt9QU2kkd/4n8Y6P/a0uoaJ G11fyx+WLycELbrjGI0IHPU5PTPocBLnxHo1v8MI9Dsb5nvXRfMQRuCCX3uN2AMdR16etcFS0exj ZLsHO9Tt/hv4i0nw/JqLapcGEzLH5ZEbNnG7I4B9RWb4g8RWU8d1YaLaeRa3M3m3FxL80ty2cjP9 1QeQB+mSK5qlp+zjzcwud2sFKOT1xSUtaELRliJo40OHBY+1QkY7j8DTaWuenQVOcpp3b3ud+Jxz xFKFJxSUL2tfrve7evzJonRUYNnJ9KIpFV/RaioqZYSnLnvf3jWnmten7LlS/d7aed9f+BYkd1JO 0de5p0jqY1VTnHWoaWq+rQvH+7/w2pl/aNW1RWXv6PTZXvp69d7j4iqyAseBSiT/AEjdnjNR0lE8 PCcnJ9Vb5BRzCrRpQpQtaMuf5+Y+VdkhHbqKdFIiI24nJ9KTcsigMcMOhoVUjBLlWyOAOa5qnvUf ZVU76bdbHpUE6eMeJwzioO7u/s3T0ave62XfpciZsngYA6Cn23+vX8aPIlIzt/WncQKQDmQ9cdqu tUpzpulTd29NNfmzHCYevRxEcViYuMYtSu1a9tktr32SWy8hs7DdsXoD+tP82J4Qjkgr6VXoq3hI OEYtv3db9bmMc0qwrVKiimpqzT1Vui+Q93BUoowp/M1AQQcGpKQ8jBrpjBRVkefUqyqSvL/gL0RJ Y3N3a3SSWVzJbTE7Vkjl8sjP+1kYH416f8P4NO8PG91XVte0qW/ulwqC/iZwPvNlt2Mk479uteUE YODRUzhzqwoys7nWXekf2xrt3qmt63pdnBLM0knlXiTvt7BFQknjAGcfSjxj4wTWILfRtJja30ay VUiVvvSlRgM3sOw/E88DkqKahqm+gc3Y9G8AeKPD2j+FdR0/VruWCa5lfiJHLMhQLwwHBzu70/wh 440PR9XNpHG2naMkDYeRTJLPLlcPIVB7BsAcDP0x5tRUOjF3v1KU2rHa+J/Fmltd6kNAgd5NRyLn ULgfO6HrGi4+VcYGepxz0zWZ4ADHxzpWzOfOPT02nP6U6z+H3im/s4by20ovBOgeNjPGu5SMg4LZ rq9O06z+F+nyarqssVzrc6FLa1jbIQHqc/lk/gOtS3CMeWOrGk27sX4raza2jS6JYFfOvJVuNQIO TwqhFPpwoP4D1rL+GHiXRvDkmpvq1wYGmWMRERs+cbtw+UHHUVxV5eXGoXkt5dytNPMxZ3bqSagq lSXs+Ric3zcx6HonjHQdF8Swx6dFNb6a8rveXtzmSefIbaOOQoYg+p7982Nd8d+H7fxQmsaTavqN 0dqvczgqsMYwCsakA5I3fMem49jgeaUUexje4c7tY9X1PXvA2r+JrDxHPrE6yWca/wCiC1fLMrFl JbGOCfXnA/HhvGXiVvFWvvqAh8mFEEUKH7wQEkZ9yST7Zxz1rBopwpKLuJzbPULrxX4PuvAWm6Te TXU0ltFCXtbZWjLOowQzEY2k5zg+45xU/hv4h6MdAvrTVrg6cWdktoLWEnyoSgACnBGQdxy3c+nF eUUVPsI2sP2jOxs/EekS65pdmsA0rQbG6+0kYMkkjrkhnIBJJwBgdAfbhnxI8Q2XiLxFFPp1y09r DbrGp2so3ZJPDAeo/KuRoq1TSlzC5nax6pP4y8JSfD+y0q7M93LDbxLJZxq0e91A4L4wF3DOQc15 5rmtTa7qH2qWKKBEQRQwwqFSKMfdUfTNZ1FEKcYbBKTYUUUVoQdx8JYhJ4ukYjmK0dh9dyj+tW/j Dc7ta0+15/d2xk9vmYj/ANkql8J7hIfF7RuwBntXjUHucq2PyU1o/GGz26hp18EP7yJombnHynIH /jxrlf8AvCubf8uzzmikpa6jEK1JfEuszaKujS38j2C4AiIHQHIGcZwD0GewrPmtp7by/Pgki81B JHvUrvU9GGeoPrS21rc3kvlWtvLPJjOyJCxx9BSaT1Y9TuvhFYefr13fH7ttBtHH8Tnj9FP5034u Xxm8Q2tmCCltb7vcMxOf0C12nw50KbRPDK/a4WhubqQyyI4wyjooPpwM4PIzXC6/4Q8V6/r97qce kt5c8pMe6VEOwcLwzZHygVxxlF1nJvRGzTUEjiKK2r3wf4j0/BuNHusHvGnmAfUrnFdh8II5Y73V Fks3ClFHnMuAjKTlPqd2ce1dM6ijFyWpkotuzOH8NsE8T6U7cBb2En/vsV6z8U7X7R4MeXn/AEae OXj3ynP/AH3XmfjaS2/4TXUZLAosayjBi4G8KNxGO+7Ner+G9csfGvht4Lgq0zReVeQZwQSMEjvg 9j/hXPWbvGoaQ6xPCaWuk8S+B9W0C9ZY7eW7tDkxzxIWGPRsfdP8+1Y+naPqWrSiPT7Ka4JOMovy g+56D8a6lOLV0zJxadibw/pjazr9np6jImlAbnHyjlv0Br0T4sa2lvp1vocD4eYiSZRjhF+6D9Tz /wABqHS7Sx+GWlS3+qSR3Gs3KbYreM52j0B9OhJ9gBnv5zqWo3OrajNf3b75523MQMD0AHsBgVil 7Sal0RfwRt1ZWopKK6DIKKKKACiiigDNooorkOgKKKKACiiigApaSigBaKSlpgFFFFAhaKKKYBS0 lFAC0UUUwFopKKAFooopgFLSUUCFooopgb+leOfE2iWgtLDVpY4F+7G6rIF9huBwPYVBrHizXtfQ R6pqc08Y58vhE/FVABrHpaXLG97DuwpaSlqhBRRS0wCiiigQUtJRTAWiiloEFLSUtMAooopgLRRR QIWiiigBaWkooELS0lLTAWlpKKBDqKSloELRRRQAtLSUUCFooooAWlpKKBC0tJRQAtFFFABRRRQA UlFFADjNJtxvOKjpaSojCEPhVjapXq1be0k3bu7hSUtJVmQUUUlAAeRg0wgg80+g4IwaBjKSlIIP NJQMKKKKBnRWnj3xRY2Edjbaq6QRIERfKQlVHAAJXP61hXFzPdztcXM8k8z8tJK5Zm+pPJqKikop bIG2wooopgFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAWdPv59L1CC+tW2zW7h0PODjsfY9D7V7Tcr pXxI8KFLecI/DLnlreQdiPzHuDxXhtWLK/u9NuVubK5kt5l6PGxB+h9R7VlUp89mnZouMraPY173 wP4lsboQPpNxLliFeBfMQ89cjoPritrTPB0Hh+Ia14wZIYIuYrEMGknbsCBxj2/PAzWZ/wALF8Wb Nn9rtj/rhHn89uawb2/u9RuTc3tzLcTN1eRixx6ew9qVqj0k/uFeK2LniLXrnxHq8moXKqmQEijX pGg6Lnv1PPqTWhonjrVvD+m/YNPjtUj3ly7REsxPcnPoAPoK5uitHCLVraE3d7nVS/EvxXJIXXUV iB/gS3jwPzUn9alt/ih4ohXElzBOc5zJAo/D5cVyFFT7KHZD55dzuU+LfiFetvp7fWJ/6NVXU/iZ 4j1K1a3EkFmr8M1shViPTJJI/DBrkaKFSgtbBzy7hU9lfXenXSXVlcSW8ydHjbB/+uPaoKK0JO1t /ix4jgiVHSyuCBjfJEQT/wB8sB+lR3nxT8S3URjje2tc/wAUEXP/AI8TXHUVn7Kn2K55dyWa4mup nnuJpJpXOWkkYszfUmo6QdaWtCAooooAKKKSmAUUUUhmdRRRXGbhRRRQAUUUUwCiiigApaSigBaK KKYBS0lFAhaKKKYBRRRQAtFJS0AFLSUUwFooopgLRSUtMQUtJS0wClpKWgAooopgFFFKKBBS0UUw FooopiClpKWgAooopgLRRRQIWiiigBaKKWmIKWkpaAFpRSUUCFpaSloELRQKKAFooooELRRRQAtF JS0CFopKWgApaSigBaSiigAooooASiiigBKSlpKBhSGloNACUlLSUDDtg00jH0p1FADKKcV7im0D CiiigYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVqT6Bd2/hy2115IDbXUpiRA58wEZ6jHT5T39Ky 66/VdH0yP4aaVrUNmsN9Pc+VLIsjkMB5g6FiATsBOO/TA4qJStYaV7nIVa03TrnVtRhsLNN887bV BOB6kn2Aya9Fk0HwjbQ+GprnSX87WFRTDFPIE3OEyxJYnClsAZ/i74qtoen2eg/F46VbWyvGGJik kZi8IMBYhcEA/ex8wPA9eaz9smnZFcmupy2t+Eb7QtPjvp7i1mhed7f9yzEq6lgwIZR0KkZHp7is Ku7tdDtvFfxM1GzmiW2gt5p5JhCWzNtkIySxOCSwzjA9AKrWekaR4k8Pa5eWVh/Z8+l/voikjsJI sMdrBmb5sKeRjtTVSy1/q4OPY5jT9LvtVmMVlbtKyjcxyAqD1Zjwo+pq+fD0CzrA3iHSBIw6CSQr /wB9hNo/Otq10qXUX0nwrp7+XHcQpe6hIG5JYBuf91CuB0yfxrd0jwt4VvLrVZZNPf8As/SAYTO9 w/8ApDqMuzYIwVx2wDu/JSq2GoXPOtR0u70qcRXUeAw3RyKdySqejKw4Ye4qnXTWsUms+HorNYhE p1iOG0ZmLeWJVbcgzzgFUPvmtPV7Xwl4e1q50XUNJupY4rdAt5FK3mmQgHdgsExz6cEHr2v2ltHu Ty9ThqK7XSfDVlD4Mi166toL2e7uPLiiubsW0aICwb5iy5Y7T39ODg1ZtvBWi6j49OnWGopc6YLf 7U3kyhyo3bfL3AnuR74PrzS9rFX8g5GcDWpPoF3b+HLbXXkgNtdSmJEVz5gIz1GOnynv6VvWekaR 4k8Pa5eWVh/Z8+l/voikjsJIsMcMGZvmwp5GO1M1XR9Mj+Gmla1DZLDfT3PlSyLI5DAeYOhYgE7A Tjv0wOKHU1S8w5TkKcqs7hEUszHAAGSTXpkmg+ELaHw1Nc6S/nawqKYYp5Am5wmWJLEgKWwBn+Lv iqWk6PY6T8YRpUdus1ujFohNljGfK8wEepB4Gc/ng0vbJp6D5GcHc28tndS206bJoXMcik52sDgj 86ZWv4umSXxXqey3jg2Xcqt5ZY7yHb5juJ5PtgewrS8P6DZyeFNU8R3sBultD5UNuGYKX+X5m2kH A3DoRxmr57RTZHLd2Ry1FdVBYaB4o8QaTYaPa3OnGcEXiO+9QQu47CST0DDn2461qWXh/Q9e8Qa1 4ftdPNnJZI/2a5WV2YsjBW3hmIILEdAOKTqpboag2cBRXb6HpWgy/Dy91vUtOaSezufLDwzOrSDK EA5O0Z37SQOBzjNal5oPhC1vvD0/9lXLRa4qKluLhgse7ad5OdxPzqMA46ntynWSdrD5GeaUVteM NKt9E8U32n2m4QRMpQMckBlDYz7ZxWLWid1dENWdjOooorkNwooooAKKKKACiiimAUUUUAFLSUtA BRRRTAKKKKACiiimIWiiigBaKKKAFooopgFLSUtMQUtJS1QBRRRQAtFFFABS0ClpiCiilpgFFFFM QUtJS0AFFFLTAKKKKBC0UUUALRRRQIWlpKWmAtFFFAhaWkpaBC0UlLQAtFFFAhaKKKAClpKMj1oA WlpMj1oyPWgBaKTI9RRkeooAWikyPUUZHqKAFopMj1oyPUUCCijI9RRketAxKKMj1oyPWgBKO1HF HFACUlFFAwoopKAFpCAfY0tJQA08daKfkEc00j0ORQMSiiigYUUlFAC0UlFAC0UlFAC0UUlAC0UU UAFdVf8AiHS7n4fWPh6L7X9qtJfOLtCoRiS5K535AG84OOcdBnjlaKlxTtfoNOx3N74t0G6fwxj+ 0NuhlQ+bdAZQoXBH7w45jHHox545Z/wluj/8LH/4SfF79n2Z8ryU37/L8vH38Yxzn8Md64mio9lE fOzqtO8WxaP45u9ctI5ZrW7kkLxyKEfY7biOCRkH35x2zwsXiPStH0PVrDRYrp5NUbaz3CBBFFgj aMM244YjPHX2rlKKr2cQ5md94Z1u30u7i8Rm1luIUsFsrxLf5pIXXaFcg4wrIi89M5HXqkfjjR/+ Ea1DQlt72zhnZhBLGFmcqcEmTcwyzHdnHZsDpmuKsr67065W5sriSCVejI2OPQ+o9q0V8WawkxnS W2SZusqWUIc/8CCZ/Ws3Su7jU9DQvJzplpZzoj2SW8qzadZyf6yRgwLTzdODtwOntwCToa/4u8M6 40epzaPdPqkcIQRu4FuT2LYOWAOewz0PtxU9xPdzvPczSTSuctJIxZm+pNR1fs1uxcx2Oj+LNK/4 RJ/DevWt09sr7oZbQrvGW3fxHHBzzz16esGleL7bRfFSajp+mrDYpF9n8gEb2j67mPd8gH9PeuVo o9nHXzDmZ1cXiPStH0PVrDRYrp5NUbaz3CBBFFgjaMM244YjPHX2pL/xDpdz8P7Hw/F9r+1WkvnF 2hURsSXJXO/IA3nBxzjoM8crRT9mtw5md1e+LNBun8MY/tDboZUPm3QGUKFwR+8OOYxx6MeeOa1x 4vsF+I0fie2huJIDjzIpFVHX935ZxhiDxz29PeuOopKlFBzs7C71rwZeeIZbybR76S2mWWSQmXDv M7Ag4DYCj5u/8XtTfCHi6y0fTL7R9Ws5LnT7zJPkn5wSAp6kcEAc5yMflyNKKPZq1g5ne50Ka/p+ ka7Y3ugWDpDZEktcvmW43DDbiOBxwAOnJ74rVh8X6PpWq6trWlwXbX2oIRHHMiqkBY7mO4MS3zAH oOmK4mih04vcXMzqbDxDpdt8P77w/L9r+1XcvnB1hUxqQUIXO/JB2DJxxnocc6F74s0G6fwzj+0N mhlQ+bdAZQoXBH7w45jHHox5454aij2avcOZm34w1az13xHcanZCdY7hUykyBSpChccMcjgHPHXp xk4lJRVpWVkJ6u5//9k= ------=_NextPart_000_0FD5_01CC27B9.3CEA41C0 Content-Type: image/png; name="image006.png" Content-Transfer-Encoding: base64 Content-ID: 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 AAAASUVORK5CYII= ------=_NextPart_000_0FD5_01CC27B9.3CEA41C0 Content-Type: image/png; name="image008.png" Content-Transfer-Encoding: base64 Content-ID: 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 AAAASUVORK5CYII= ------=_NextPart_000_0FD5_01CC27B9.3CEA41C0-- From sekharan@us.ibm.com Fri Jun 10 15:28:02 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5AKS1d8009564 for ; Fri, 10 Jun 2011 15:28:02 -0500 X-ASG-Debug-ID: 1307737679-507502a40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e32.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 27C23DA3476 for ; Fri, 10 Jun 2011 13:27:59 -0700 (PDT) Received: from e32.co.us.ibm.com (e32.co.us.ibm.com [32.97.110.150]) by cuda.sgi.com with ESMTP id SEXmpaDtXaLd1sOB for ; Fri, 10 Jun 2011 13:27:59 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay01.boulder.ibm.com (d03relay01.boulder.ibm.com [9.17.195.226]) by e32.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5AKGC91032383 for ; Fri, 10 Jun 2011 14:16:12 -0600 Received: from d03av01.boulder.ibm.com (d03av01.boulder.ibm.com [9.17.195.167]) by d03relay01.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5AKRope141172 for ; Fri, 10 Jun 2011 14:27:50 -0600 Received: from d03av01.boulder.ibm.com (loopback [127.0.0.1]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5AKRof8014238 for ; Fri, 10 Jun 2011 14:27:50 -0600 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5AKRnFe014217; Fri, 10 Jun 2011 14:27:49 -0600 X-ASG-Orig-Subj: [PATCH]: [xfstests] v2: Make ext2 requirement explicit for test 049 Subject: [PATCH]: [xfstests] v2: Make ext2 requirement explicit for test 049 From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: XFS Mailing List Cc: Eric Sandeen Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Fri, 10 Jun 2011 13:27:48 -0700 Message-ID: <1307737668.7661.438.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e32.co.us.ibm.com[32.97.110.150] X-Barracuda-Start-Time: 1307737681 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 049 depends on ext2 module being supported by the kernel. This patch makes it a explicit, instead of failing the test with obscure message. Signed-Off-By: Chandra Seetharaman --- diff --git a/049 b/049 index 3d3f030..c6c4faa 100755 --- a/049 +++ b/049 @@ -64,6 +64,7 @@ _require_nobigloopfs _require_nonexternal _require_scratch _require_loop +_require_ext2 rm -f $seq.full diff --git a/common.rc b/common.rc index c510c66..44c746d 100644 --- a/common.rc +++ b/common.rc @@ -769,6 +769,24 @@ _require_loop() fi } +# this test requires ext2 filesystem support +# +_require_ext2() +{ + if [ "$HOSTOS" != "Linux" ] + then + _notrun "This test requires linux for ext2 filesystem support" + fi + + modprobe ext2 >/dev/null 2>&1 + if grep ext2 /proc/filesystems >/dev/null 2>&1 + then + : + else + _notrun "This test requires ext2 filesystem support" + fi +} + # this test requires that (large) loopback device files are not in use # _require_nobigloopfs() From sekharan@us.ibm.com Fri Jun 10 15:39:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5AKdqEQ009962 for ; Fri, 10 Jun 2011 15:39:53 -0500 X-ASG-Debug-ID: 1307738391-0443010b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e1.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9085816EA165 for ; Fri, 10 Jun 2011 13:39:51 -0700 (PDT) Received: from e1.ny.us.ibm.com (e1.ny.us.ibm.com [32.97.182.141]) by cuda.sgi.com with ESMTP id 6X3xecqZu4rM5Kix for ; Fri, 10 Jun 2011 13:39:51 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay03.pok.ibm.com (d01relay03.pok.ibm.com [9.56.227.235]) by e1.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5AKSCKR026835 for ; Fri, 10 Jun 2011 16:28:12 -0400 Received: from d01av01.pok.ibm.com (d01av01.pok.ibm.com [9.56.224.215]) by d01relay03.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5AKdpXZ112216 for ; Fri, 10 Jun 2011 16:39:51 -0400 Received: from d01av01.pok.ibm.com (loopback [127.0.0.1]) by d01av01.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5AKdpcg025209 for ; Fri, 10 Jun 2011 16:39:51 -0400 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d01av01.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5AKdobf024995 for ; Fri, 10 Jun 2011 16:39:50 -0400 X-ASG-Orig-Subj: Failure of xfstests test case 202 Subject: Failure of xfstests test case 202 From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: XFS Mailing List Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Fri, 10 Jun 2011 13:39:47 -0700 Message-ID: <1307738387.7661.450.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e1.ny.us.ibm.com[32.97.182.141] X-Barracuda-Start-Time: 1307738392 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 Hi all, Test case 202 tries to create a single AG filesystem and runs xfs_repair on it expecting it to fail. But, when I run the test with a filesystem that is bigger than 1TB it fails (not pleasantly) since the max AG size is 1TB. I am thinking of the following solution, please let me know if there is any other elegant fix. chandra ------------------------ diff --git a/202 b/202 index cbdcb57..b871d8b 100755 --- a/202 +++ b/202 @@ -42,10 +42,12 @@ _supported_os Linux _require_scratch echo "== Creating single-AG filesystem ==" -_scratch_mkfs_xfs -d agcount=1 >/dev/null 2>&1 +_scratch_mkfs_xfs -d agcount=1 >/dev/null 2>&1 \ + || _scratch_mkfs_xfs -d agcount=1 -d size=268435455b >/dev/null 2>&1 + || _fail "!!! failed to make filesystem" echo "== Trying to repair it (should fail) ==" -_scratch_xfs_repair +_scratch_xfs_repair && _fail "!!! xfs_repair of single AG filesystem succeeded" echo "== Trying to repair it with -o force_geometry ==" _scratch_xfs_repair -o force_geometry 2>&1 | _filter_repair ------------------------- From BATV+eb0d86002b4d40f18278+2847+infradead.org+hch@bombadil.srs.infradead.org Fri Jun 10 16:19:16 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5ALJFbj011242 for ; Fri, 10 Jun 2011 16:19:16 -0500 X-ASG-Debug-ID: 1307740752-508203a40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A6C66D9CF87 for ; Fri, 10 Jun 2011 14:19:12 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id zNbGHeS2GR9bpnnz for ; Fri, 10 Jun 2011 14:19:12 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QV96l-000327-AN; Fri, 10 Jun 2011 21:19:11 +0000 Date: Fri, 10 Jun 2011 17:19:11 -0400 From: Christoph Hellwig To: Chandra Seetharaman Cc: XFS Mailing List X-ASG-Orig-Subj: Re: Failure of xfstests test case 202 Subject: Re: Failure of xfstests test case 202 Message-ID: <20110610211911.GA11509@infradead.org> References: <1307738387.7661.450.camel@chandra-lucid.beaverton.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1307738387.7661.450.camel@chandra-lucid.beaverton.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1307740752 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65968 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Fri, Jun 10, 2011 at 01:39:47PM -0700, Chandra Seetharaman wrote: > Hi all, > > Test case 202 tries to create a single AG filesystem and runs xfs_repair > on it expecting it to fail. > > But, when I run the test with a filesystem that is bigger than 1TB it > fails (not pleasantly) since the max AG size is 1TB. > > I am thinking of the following solution, please let me know if there is > any other elegant fix. What about: # # The AG size is limited to 1TB (or even less with historic xfsprogs), # so chose a small enough filesystem to make sure we can actually create # a single AG filesystem. # _scratch_mkfs_sized `expr 1024 \* 1024 \* 1024` instead? From sekharan@us.ibm.com Fri Jun 10 16:33:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5ALXmgM011757 for ; Fri, 10 Jun 2011 16:33:48 -0500 X-ASG-Debug-ID: 1307741627-16b9024d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e8.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C0FB14B7A97 for ; Fri, 10 Jun 2011 14:33:47 -0700 (PDT) Received: from e8.ny.us.ibm.com (e8.ny.us.ibm.com [32.97.182.138]) by cuda.sgi.com with ESMTP id g41FIhz424xsIPT7 for ; Fri, 10 Jun 2011 14:33:47 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay07.pok.ibm.com (d01relay07.pok.ibm.com [9.56.227.147]) by e8.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5ALMY5Y000981 for ; Fri, 10 Jun 2011 17:22:34 -0400 Received: from d01av02.pok.ibm.com (d01av02.pok.ibm.com [9.56.224.216]) by d01relay07.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5ALXkxF1445998 for ; Fri, 10 Jun 2011 17:33:46 -0400 Received: from d01av02.pok.ibm.com (loopback [127.0.0.1]) by d01av02.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5ALXjFu019598 for ; Fri, 10 Jun 2011 18:33:46 -0300 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d01av02.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5ALXiAY019542; Fri, 10 Jun 2011 18:33:45 -0300 X-ASG-Orig-Subj: Re: Failure of xfstests test case 202 Subject: Re: Failure of xfstests test case 202 From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: Christoph Hellwig Cc: XFS Mailing List In-Reply-To: <20110610211911.GA11509@infradead.org> References: <1307738387.7661.450.camel@chandra-lucid.beaverton.ibm.com> <20110610211911.GA11509@infradead.org> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Fri, 10 Jun 2011 14:33:44 -0700 Message-ID: <1307741624.7661.453.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e8.ny.us.ibm.com[32.97.182.138] X-Barracuda-Start-Time: 1307741627 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, 2011-06-10 at 17:19 -0400, Christoph Hellwig wrote: > On Fri, Jun 10, 2011 at 01:39:47PM -0700, Chandra Seetharaman wrote: > > Hi all, > > > > Test case 202 tries to create a single AG filesystem and runs xfs_repair > > on it expecting it to fail. > > > > But, when I run the test with a filesystem that is bigger than 1TB it > > fails (not pleasantly) since the max AG size is 1TB. > > > > I am thinking of the following solution, please let me know if there is > > any other elegant fix. > > What about: > > # > # The AG size is limited to 1TB (or even less with historic xfsprogs), > # so chose a small enough filesystem to make sure we can actually create > # a single AG filesystem. > # > _scratch_mkfs_sized `expr 1024 \* 1024 \* 1024` > > instead? Good point. Here is a solution based on your suggestion, but not using _scratch_mkfs_sized (sincein the current context we need it to take extra option, whereas _scratch_mkfs_sized takes fixed options). What do you think ? ---------------- diff --git a/202 b/202 index cbdcb57..b982956 100755 --- a/202 +++ b/202 @@ -41,11 +41,18 @@ _supported_os Linux _require_scratch +# +# The AG size is limited to 1TB (or even less with historic xfsprogs), +# so chose a small enough filesystem to make sure we can actually create +# a single AG filesystem. +# echo "== Creating single-AG filesystem ==" -_scratch_mkfs_xfs -d agcount=1 >/dev/null 2>&1 +_scratch_mkfs_xfs -d agcount=1 -d size=$((1024*1024*1024)) >/dev/null 2>&1 \ + || _fail "!!! failed to make filesystem with single AG" echo "== Trying to repair it (should fail) ==" -_scratch_xfs_repair +_scratch_xfs_repair \ + && _fail "!!! xfs_repair of single AG filesystem succeeded. Expected to fail." echo "== Trying to repair it with -o force_geometry ==" _scratch_xfs_repair -o force_geometry 2>&1 | _filter_repair ----------------------- > From david@fromorbit.com Fri Jun 10 16:41:49 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5ALfnTb011985 for ; Fri, 10 Jun 2011 16:41:49 -0500 X-ASG-Debug-ID: 1307742106-16b902a20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EF2DD4B7AD5 for ; Fri, 10 Jun 2011 14:41:47 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id OsBdADizAilkzWA6 for ; Fri, 10 Jun 2011 14:41:47 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlYDAB+O8k15LCoegWdsb2JhbABSpkwVAQEWJiWIcrtWDoYVBKEU Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl6.internode.on.net with ESMTP; 11 Jun 2011 07:11:44 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QV9SZ-0002RO-BE; Sat, 11 Jun 2011 07:41:43 +1000 Date: Sat, 11 Jun 2011 07:41:43 +1000 From: Dave Chinner To: Chandra Seetharaman Cc: XFS Mailing List X-ASG-Orig-Subj: Re: Failure of xfstests test case 202 Subject: Re: Failure of xfstests test case 202 Message-ID: <20110610214143.GZ32466@dastard> References: <1307738387.7661.450.camel@chandra-lucid.beaverton.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1307738387.7661.450.camel@chandra-lucid.beaverton.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1307742107 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0095 1.0000 -1.9593 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.96 X-Barracuda-Spam-Status: No, SCORE=-1.96 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65968 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, Jun 10, 2011 at 01:39:47PM -0700, Chandra Seetharaman wrote: > Hi all, > > Test case 202 tries to create a single AG filesystem and runs xfs_repair > on it expecting it to fail. > > But, when I run the test with a filesystem that is bigger than 1TB it > fails (not pleasantly) since the max AG size is 1TB. > > I am thinking of the following solution, please let me know if there is > any other elegant fix. > > chandra > ------------------------ > diff --git a/202 b/202 > index cbdcb57..b871d8b 100755 > --- a/202 > +++ b/202 > @@ -42,10 +42,12 @@ _supported_os Linux > _require_scratch > > echo "== Creating single-AG filesystem ==" > -_scratch_mkfs_xfs -d agcount=1 >/dev/null 2>&1 > +_scratch_mkfs_xfs -d agcount=1 >/dev/null 2>&1 \ > + || _scratch_mkfs_xfs -d agcount=1 -d size=268435455b >/dev/null 2>&1 > + || _fail "!!! failed to make filesystem" Why the second mkfs attempt with a fixed block size? That will still fail for block size > 4k. All you need to do is detect the first attempt failed. > > echo "== Trying to repair it (should fail) ==" > -_scratch_xfs_repair > +_scratch_xfs_repair && _fail "!!! xfs_repair of single AG filesystem > succeeded" This is not necessary - the golden image compare at the end of the test will detect this succeeding when it shoul dbe failing. Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@redhat.com Fri Jun 10 17:12:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5AMCPkV012890 for ; Fri, 10 Jun 2011 17:12:25 -0500 X-ASG-Debug-ID: 1307743944-530500c80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1D35D4BA54A for ; Fri, 10 Jun 2011 15:12:24 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id xoXfdy7WPwsvIqes for ; Fri, 10 Jun 2011 15:12:24 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5AMCOna028155 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 10 Jun 2011 18:12:24 -0400 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p5AMCMrZ030791 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Fri, 10 Jun 2011 18:12:23 -0400 Message-ID: <4DF296C6.2090606@redhat.com> Date: Fri, 10 Jun 2011 17:12:22 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: sekharan@us.ibm.com CC: XFS Mailing List X-ASG-Orig-Subj: Re: [PATCH]: [xfstests] v2: Make ext2 requirement explicit for test 049 Subject: Re: [PATCH]: [xfstests] v2: Make ext2 requirement explicit for test 049 References: <1307737668.7661.438.camel@chandra-lucid.beaverton.ibm.com> In-Reply-To: <1307737668.7661.438.camel@chandra-lucid.beaverton.ibm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1307743945 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 6/10/11 3:27 PM, Chandra Seetharaman wrote: > Test 049 depends on ext2 module being supported by the kernel. > > This patch makes it a explicit, instead of failing the test with > obscure message. > > Signed-Off-By: Chandra Seetharaman committed in the xfstests-dev tree on kernel.org, thanks! -Eric > --- > > diff --git a/049 b/049 > index 3d3f030..c6c4faa 100755 > --- a/049 > +++ b/049 > @@ -64,6 +64,7 @@ _require_nobigloopfs > _require_nonexternal > _require_scratch > _require_loop > +_require_ext2 > > rm -f $seq.full > > diff --git a/common.rc b/common.rc > index c510c66..44c746d 100644 > --- a/common.rc > +++ b/common.rc > @@ -769,6 +769,24 @@ _require_loop() > fi > } > > +# this test requires ext2 filesystem support > +# > +_require_ext2() > +{ > + if [ "$HOSTOS" != "Linux" ] > + then > + _notrun "This test requires linux for ext2 filesystem support" > + fi > + > + modprobe ext2 >/dev/null 2>&1 > + if grep ext2 /proc/filesystems >/dev/null 2>&1 > + then > + : > + else > + _notrun "This test requires ext2 filesystem support" > + fi > +} > + > # this test requires that (large) loopback device files are not in use > # > _require_nobigloopfs() > > From sekharan@us.ibm.com Fri Jun 10 18:26:06 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5ANQ6fg019115 for ; Fri, 10 Jun 2011 18:26:06 -0500 X-ASG-Debug-ID: 1307748364-702f01510000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e39.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7E1AB16EA8CD for ; Fri, 10 Jun 2011 16:26:04 -0700 (PDT) Received: from e39.co.us.ibm.com (e39.co.us.ibm.com [32.97.110.160]) by cuda.sgi.com with ESMTP id 0IOzMdmQz7F763ro for ; Fri, 10 Jun 2011 16:26:04 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay02.boulder.ibm.com (d03relay02.boulder.ibm.com [9.17.195.227]) by e39.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5ANBp7F005518 for ; Fri, 10 Jun 2011 17:11:51 -0600 Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d03relay02.boulder.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id p5ANQ17d165702 for ; Fri, 10 Jun 2011 17:26:01 -0600 Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5AHPYTO009062 for ; Fri, 10 Jun 2011 11:25:34 -0600 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5AHPX2P008994; Fri, 10 Jun 2011 11:25:34 -0600 X-ASG-Orig-Subj: Re: Failure of xfstests test case 202 Subject: Re: Failure of xfstests test case 202 From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: Dave Chinner Cc: XFS Mailing List In-Reply-To: <20110610214143.GZ32466@dastard> References: <1307738387.7661.450.camel@chandra-lucid.beaverton.ibm.com> <20110610214143.GZ32466@dastard> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Fri, 10 Jun 2011 16:25:58 -0700 Message-ID: <1307748358.7661.459.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e39.co.us.ibm.com[32.97.110.160] X-Barracuda-Start-Time: 1307748365 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, 2011-06-11 at 07:41 +1000, Dave Chinner wrote: > On Fri, Jun 10, 2011 at 01:39:47PM -0700, Chandra Seetharaman wrote: > > Hi all, > > > > Test case 202 tries to create a single AG filesystem and runs xfs_repair > > on it expecting it to fail. > > > > But, when I run the test with a filesystem that is bigger than 1TB it > > fails (not pleasantly) since the max AG size is 1TB. > > > > I am thinking of the following solution, please let me know if there is > > any other elegant fix. > > > > chandra > > ------------------------ > > diff --git a/202 b/202 > > index cbdcb57..b871d8b 100755 > > --- a/202 > > +++ b/202 > > @@ -42,10 +42,12 @@ _supported_os Linux > > _require_scratch > > > > echo "== Creating single-AG filesystem ==" > > -_scratch_mkfs_xfs -d agcount=1 >/dev/null 2>&1 > > +_scratch_mkfs_xfs -d agcount=1 >/dev/null 2>&1 \ > > + || _scratch_mkfs_xfs -d agcount=1 -d size=268435455b >/dev/null 2>&1 > > + || _fail "!!! failed to make filesystem" > > Why the second mkfs attempt with a fixed block size? to see if the mkfs failed because the default filesystem size is too big. > That will > still fail for block size > 4k. Realized that. It should have been absolute. > All you need to do is detect the > first attempt failed. But, I didn't want the test to fail, instead want it to proceed if big filesystem was the reason for failure. By now you might have seen my response to Christoph's email. What do you think of that ? > > > > > echo "== Trying to repair it (should fail) ==" > > -_scratch_xfs_repair > > +_scratch_xfs_repair && _fail "!!! xfs_repair of single AG filesystem > > succeeded" > > This is not necessary - the golden image compare at the end of the > test will detect this succeeding when it shoul dbe failing. But it is not very informative about "why" the test failed. This message will make it clear to the user. > > Cheers, > > Dave. From stan@hardwarefreak.com Fri Jun 10 20:12:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5B1Ch2P022802 for ; Fri, 10 Jun 2011 20:12:43 -0500 X-ASG-Debug-ID: 1307754761-703503970000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from greer.hardwarefreak.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B22B816EAC26 for ; Fri, 10 Jun 2011 18:12:41 -0700 (PDT) Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id vqZAQyatSDCGwIw9 for ; Fri, 10 Jun 2011 18:12:41 -0700 (PDT) Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id D1A2E6C120; Fri, 10 Jun 2011 20:12:40 -0500 (CDT) Message-ID: <4DF2C108.70106@hardwarefreak.com> Date: Fri, 10 Jun 2011 20:12:40 -0500 From: Stan Hoeppner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Dave Chinner CC: Michael Monnerie , Kenneth Emerson , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Defragging XFS File Systems Subject: Re: Defragging XFS File Systems References: <201106090749.37745@zmi.at> <4DF080AC.2090507@hardwarefreak.com> <201106091212.36227@zmi.at> <4DF10FDF.1090508@hardwarefreak.com> <20110610175656.GW32466@dastard> In-Reply-To: <20110610175656.GW32466@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1307754761 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0876 1.0000 -1.4675 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.37 X-Barracuda-Spam-Status: No, SCORE=-1.37 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=INFO_TLD, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65968 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 INFO_TLD URI: Contains an URL in the INFO top-level domain 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 On 6/10/2011 12:56 PM, Dave Chinner wrote: > On Thu, Jun 09, 2011 at 01:24:31PM -0500, Stan Hoeppner wrote: >> On 6/9/2011 5:12 AM, Michael Monnerie wrote: >>> On Donnerstag, 9. Juni 2011 Stan Hoeppner wrote: >>>> When is running xfs_fsr recommended? >>> >>> Good question. One case that comes to my mind is a filesystem that was >>> used a long time when filled >85%, which has now either been expanded or >>> files removed so you have a lot of space again, and you want to defrag >>> all those files that have been badly fragmented. >>> >>>> I scheduled it twice a week some time ago due to a filesystem >>>> containing active mbox files. I did so because they became so >>>> heavily fragmented in short order, especially those swallowing >>>> copious amounts of list mail. Before cron'ing xfs_fsr I was seeing >>>> mbox files with over 1000 fragmented extents, and increasing MUA >>>> latency as the files became more fragmented. The filesystem is >>>> currently 90% free. >>> >>> This is also an example where defrag may help. You have 10% usage, so >>> there's enough space. Maybe your usage fits the mount option >>> "allocsize", >> >> I tried allocsize=1m but it didn't seem to help already existing files. >> I simply don't think there's much that can be done in filesystem logic >> to keep long lived constantly appended files from fragmenting, short of > > YOu can stop XFS from truncating speculative preallocation beyond > EOF by either telling the inode it has preallocated space or > or turning it into a an append-only file. e.g. > > $ xfs_io -f -c "resvsp 0 4k" > > or > > $ sudo chattr +a > > Either way, XFS won't truncate extents beyond EOF on file close for > such a file and that should prevent most future fragmentation of the > file. Given the way in which individual mails are deleted from an mbox file[1], how would changing the file to append-only affect a user's ability to delete mail from that mbox? Is this something I could use generically on all mbox files, or is this only applicable to files for which there is some certainty that they'll only be appended in the future? [1] http://www.linuxmail.info/mbox-maildir-mail-storage-formats/ 1. Lock the mailbox. 2. Move the contents of the mailbox, beginning from the position right after the mail to be deleted until the end of the mailbox, into the position of the mail to be deleted. 3. Reduce the size of the mailbox file by the size of the deleted mail. 4. Unlock the mailbox. -- Stan From xfs@tlinx.org Fri Jun 10 20:33:21 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5B1XLsJ023432 for ; Fri, 10 Jun 2011 20:33:21 -0500 X-ASG-Debug-ID: 1307755999-7a29005f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from Ishtar.tlinx.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5D82416EAC7C for ; Fri, 10 Jun 2011 18:33:19 -0700 (PDT) Received: from Ishtar.tlinx.org (ishtar.tlinx.org [173.164.175.65]) by cuda.sgi.com with ESMTP id 5gH9sujbD1ALcjwU for ; Fri, 10 Jun 2011 18:33:19 -0700 (PDT) Received: from [192.168.3.140] (Athenae2 [192.168.3.140]) by Ishtar.tlinx.org (8.14.4/8.14.3/SuSE Linux 0.8) with ESMTP id p5B1X7Gt026465; Fri, 10 Jun 2011 18:33:10 -0700 Message-ID: <4DF2C5D4.6030507@tlinx.org> Date: Fri, 10 Jun 2011 18:33:08 -0700 From: Linda Walsh User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.24) Thunderbird/2.0.0.24 Mnenhy/0.7.6.666 MIME-Version: 1.0 To: Emmanuel Florac CC: Paul Anderson , xfs@oss.sgi.com X-ASG-Orig-Subj: FYI: LSI rebuilding; and XFS speed V. raw - hints on maxing out 'dd'....(if not already obvious)... Subject: FYI: LSI rebuilding; and XFS speed V. raw - hints on maxing out 'dd'....(if not already obvious)... References: <20110502191323.417ef644@harpe.intellique.com> In-Reply-To: <20110502191323.417ef644@harpe.intellique.com> X-Stationery: 0.5.1 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Barracuda-Connect: ishtar.tlinx.org[173.164.175.65] X-Barracuda-Start-Time: 1307756000 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65968 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 Emmanuel Florac wrote: > Le Mon, 2 May 2011 11:47:48 -0400 > Paul Anderson écrivait: > >> We are deploying five Dell 810s, 192GiB RAM, 12 core, each with three >> LSI 9200-8E SAS controllers, and three SuperMicro 847 45 drive bay >> cabinets with enterprise grade 2TB drives. > > I have very little experience with these RAID coontrollers. However I > have a 9212 4i4e (same card generation and same chipset) in test, and so > far I must say it looks like _utter_ _crap_. The performance is abysmal > (it's been busy rebuilding a 20TB array for... 6 days!); the server ---- By default the card only allocates about 20% of it's disk capacity for rebuilds with the rest allocated for 'real work'. It's not so smart as to use 100% when there is no real work... If you enter the control software, (runs under X on linux -- even displays on CygX)... and enter something like 90%, you'll find your rebuilds will go much faster, but you can expect any real-access to the device to suffer accordingly. I have a 9285-8E and have been pretty happy with it's performance, but I only have 10 data disks (2x6-disk RAID5 =>RAID50) with 2TB SATA's and get 1GB perf... about what I'd expect from disks that get around 120MB each and doing 2 RAID5 calcs...)... ---- The only other things I can think of when benching XFS for max throughput. 1) Realtime partition might be an option (never tried, but thought I'd mention it) 2) on "dd", if you are testing "write" performance, try pre-allocating the file using (filling in the vars...): xfs_io -f -c "truncate $size" -c "resvsp 0 $size" "$Newfile" then test for fragmentation: (see if it is in 1 'extent'...., 1/line): xfs_bmap "$Newfile" if needed, try defragging: xfs_fsr "$Newfile" Then on "dd" use the conv="nocreat,notrunc" flags -- that way you'll be able to dump I/O directly into the file without it having to be "created or allocated"... From david@fromorbit.com Sat Jun 11 01:59:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5B6xa9j045155 for ; Sat, 11 Jun 2011 01:59:37 -0500 X-ASG-Debug-ID: 1307775573-1da500b60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 13A9C14EBD1D for ; Fri, 10 Jun 2011 23:59:33 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 9XI2s3TKrliiCFTq for ; Fri, 10 Jun 2011 23:59:33 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnEDALIP8015LCoegWdsb2JhbABTG6YxFQEBFiYliHK9Sg6GFgShIw Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl2.internode.on.net with ESMTP; 11 Jun 2011 16:29:32 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QVIAM-0003BB-3B; Sat, 11 Jun 2011 16:59:30 +1000 Date: Sat, 11 Jun 2011 16:59:30 +1000 From: Dave Chinner To: Chandra Seetharaman Cc: XFS Mailing List X-ASG-Orig-Subj: Re: Failure of xfstests test case 202 Subject: Re: Failure of xfstests test case 202 Message-ID: <20110611065930.GA32466@dastard> References: <1307738387.7661.450.camel@chandra-lucid.beaverton.ibm.com> <20110610214143.GZ32466@dastard> <1307748358.7661.459.camel@chandra-lucid.beaverton.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1307748358.7661.459.camel@chandra-lucid.beaverton.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1307775575 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.2.65968 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, Jun 10, 2011 at 04:25:58PM -0700, Chandra Seetharaman wrote: > On Sat, 2011-06-11 at 07:41 +1000, Dave Chinner wrote: > > On Fri, Jun 10, 2011 at 01:39:47PM -0700, Chandra Seetharaman wrote: > > > Hi all, > > > > > > Test case 202 tries to create a single AG filesystem and runs xfs_repair > > > on it expecting it to fail. > > > > > > But, when I run the test with a filesystem that is bigger than 1TB it > > > fails (not pleasantly) since the max AG size is 1TB. > > > > > > I am thinking of the following solution, please let me know if there is > > > any other elegant fix. > > > > > > chandra > > > ------------------------ > > > diff --git a/202 b/202 > > > index cbdcb57..b871d8b 100755 > > > --- a/202 > > > +++ b/202 > > > @@ -42,10 +42,12 @@ _supported_os Linux > > > _require_scratch > > > > > > echo "== Creating single-AG filesystem ==" > > > -_scratch_mkfs_xfs -d agcount=1 >/dev/null 2>&1 > > > +_scratch_mkfs_xfs -d agcount=1 >/dev/null 2>&1 \ > > > + || _scratch_mkfs_xfs -d agcount=1 -d size=268435455b >/dev/null 2>&1 > > > + || _fail "!!! failed to make filesystem" > > > > Why the second mkfs attempt with a fixed block size? > > to see if the mkfs failed because the default filesystem size is too > big. The reason for the failure will be in the test output. If the tests fail, you should be looking at the test output to find out why anyway, right? > > That will > > still fail for block size > 4k. > > Realized that. It should have been absolute. > > > All you need to do is detect the > > first attempt failed. > > But, I didn't want the test to fail, instead want it to proceed if big > filesystem was the reason for failure. > > By now you might have seen my response to Christoph's email. What do you > think of that ? I haven't seen it yet. > > > echo "== Trying to repair it (should fail) ==" > > > -_scratch_xfs_repair > > > +_scratch_xfs_repair && _fail "!!! xfs_repair of single AG filesystem > > > succeeded" > > > > This is not necessary - the golden image compare at the end of the > > test will detect this succeeding when it shoul dbe failing. > > But it is not very informative about "why" the test failed. This message > will make it clear to the user. It's perfectly clear - the output says "should fail" and so if the test is failed due to golden output mismatches due to repair succeeding, it's pretty clear why the test failed. http://users.on.net/~david_chinner/blog/xfstests_and_golden_output.html -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sat Jun 11 02:07:04 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5B7749c045439 for ; Sat, 11 Jun 2011 02:07:04 -0500 X-ASG-Debug-ID: 1307776021-1da201030000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D82D014EBD57 for ; Sat, 11 Jun 2011 00:07:02 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id wxIKWemM2I66RHmk for ; Sat, 11 Jun 2011 00:07:02 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnADAHYT8015LCoegWdsb2JhbABSpkwVAQEWJiWIcr1bDoYWBKEj Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl2.internode.on.net with ESMTP; 11 Jun 2011 16:37:01 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QVIHc-0003Bu-7p; Sat, 11 Jun 2011 17:07:00 +1000 Date: Sat, 11 Jun 2011 17:07:00 +1000 From: Dave Chinner To: Chandra Seetharaman Cc: Christoph Hellwig , XFS Mailing List X-ASG-Orig-Subj: Re: Failure of xfstests test case 202 Subject: Re: Failure of xfstests test case 202 Message-ID: <20110611070700.GB32466@dastard> References: <1307738387.7661.450.camel@chandra-lucid.beaverton.ibm.com> <20110610211911.GA11509@infradead.org> <1307741624.7661.453.camel@chandra-lucid.beaverton.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1307741624.7661.453.camel@chandra-lucid.beaverton.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1307776022 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65968 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, Jun 10, 2011 at 02:33:44PM -0700, Chandra Seetharaman wrote: > > On Fri, 2011-06-10 at 17:19 -0400, Christoph Hellwig wrote: > > On Fri, Jun 10, 2011 at 01:39:47PM -0700, Chandra Seetharaman wrote: > > > Hi all, > > > > > > Test case 202 tries to create a single AG filesystem and runs xfs_repair > > > on it expecting it to fail. > > > > > > But, when I run the test with a filesystem that is bigger than 1TB it > > > fails (not pleasantly) since the max AG size is 1TB. > > > > > > I am thinking of the following solution, please let me know if there is > > > any other elegant fix. > > > > What about: > > > > # > > # The AG size is limited to 1TB (or even less with historic xfsprogs), > > # so chose a small enough filesystem to make sure we can actually create > > # a single AG filesystem. > > # > > _scratch_mkfs_sized `expr 1024 \* 1024 \* 1024` > > > > instead? > > Good point. Here is a solution based on your suggestion, but not using > _scratch_mkfs_sized (sincein the current context we need it to take > extra option, whereas _scratch_mkfs_sized takes fixed options). > > What do you think ? > > ---------------- > diff --git a/202 b/202 > index cbdcb57..b982956 100755 > --- a/202 > +++ b/202 > @@ -41,11 +41,18 @@ _supported_os Linux > > _require_scratch > > +# > +# The AG size is limited to 1TB (or even less with historic xfsprogs), > +# so chose a small enough filesystem to make sure we can actually create > +# a single AG filesystem. > +# > echo "== Creating single-AG filesystem ==" > -_scratch_mkfs_xfs -d agcount=1 >/dev/null 2>&1 > +_scratch_mkfs_xfs -d agcount=1 -d size=$((1024*1024*1024)) >/dev/null 2>&1 \ > + || _fail "!!! failed to make filesystem with single AG" Should work for most test setups. > > echo "== Trying to repair it (should fail) ==" > -_scratch_xfs_repair > +_scratch_xfs_repair \ > + && _fail "!!! xfs_repair of single AG filesystem succeeded. Expected to fail." But as I said before, this change is not necessary. Cheers, Dave. -- Dave Chinner david@fromorbit.com From eflorac@intellique.com Sat Jun 11 04:31:21 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5B9VKca053291 for ; Sat, 11 Jun 2011 04:31:21 -0500 X-ASG-Debug-ID: 1307784677-6ed701630000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp3-g21.free.fr (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1A5DB4B7061 for ; Sat, 11 Jun 2011 02:31:18 -0700 (PDT) Received: from smtp3-g21.free.fr (smtp3-g21.free.fr [212.27.42.3]) by cuda.sgi.com with ESMTP id cO35EaKwBBe6a1ld for ; Sat, 11 Jun 2011 02:31:18 -0700 (PDT) Received: from galadriel2.home (unknown [82.235.234.79]) by smtp3-g21.free.fr (Postfix) with ESMTP id E5431A621D; Sat, 11 Jun 2011 11:31:12 +0200 (CEST) Date: Sat, 11 Jun 2011 11:30:49 +0200 From: Emmanuel Florac To: Linda Walsh Cc: Paul Anderson , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: FYI: LSI rebuilding; and XFS speed V. raw - hints on maxing out 'dd'....(if not already obvious)... Subject: Re: FYI: LSI rebuilding; and XFS speed V. raw - hints on maxing out 'dd'....(if not already obvious)... Message-ID: <20110611113049.2868f9c7@galadriel2.home> In-Reply-To: <4DF2C5D4.6030507@tlinx.org> References: <20110502191323.417ef644@harpe.intellique.com> <4DF2C5D4.6030507@tlinx.org> Organization: Intellique X-Mailer: Claws Mail 3.7.8 (GTK+ 2.20.1; i686-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: smtp3-g21.free.fr[212.27.42.3] X-Barracuda-Start-Time: 1307784680 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65969 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 Le Fri, 10 Jun 2011 18:33:08 -0700 vous =C3=A9criviez: > I have a 9285-8E and have been pretty happy with it's performance, > but I only have 10 data disks (2x6-disk RAID5 =3D>RAID50) with 2TB > SATA's and get 1GB perf... about what I'd expect from disks that get > around 120MB each and doing 2 RAID5 calcs...)... I've made some more tests since then, and I was using cheapo drives for testing that for some reason, behave extraordinarily poorly in combination with the LSI card. I've retested the card with hitachi Ultrastars and it worked just fine (though a bit slower than Adaptec 6xx5). OTOH, the Adaptec works fine with the "bad" drives too, go figure.=20 I didn't yet explored the advanced capabilities of the card (apparently it may have some snapshot mechanism) because MegaCli is such a PITA :) regards, --=20 ------------------------------------------------------------------------ Emmanuel Florac | Direction technique | Intellique | | +33 1 78 94 84 02 ------------------------------------------------------------------------ From xfs@tlinx.org Sat Jun 11 11:49:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_42 autolearn=no version=3.4.0-r929098 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 p5BGn0Cb078087 for ; Sat, 11 Jun 2011 11:49:01 -0500 X-ASG-Debug-ID: 1307810939-7f4b033e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from Ishtar.tlinx.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E533751A880 for ; Sat, 11 Jun 2011 09:48:59 -0700 (PDT) Received: from Ishtar.tlinx.org (ishtar.tlinx.org [173.164.175.65]) by cuda.sgi.com with ESMTP id KpQBUWKJpANncplT for ; Sat, 11 Jun 2011 09:48:59 -0700 (PDT) Received: from [192.168.3.140] (Athenae2 [192.168.3.140]) by Ishtar.tlinx.org (8.14.4/8.14.3/SuSE Linux 0.8) with ESMTP id p5BGmnbL011909; Sat, 11 Jun 2011 09:48:51 -0700 Message-ID: <4DF39C71.7060706@tlinx.org> Date: Sat, 11 Jun 2011 09:48:49 -0700 From: Linda Walsh User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.24) Thunderbird/2.0.0.24 Mnenhy/0.7.6.666 MIME-Version: 1.0 To: Emmanuel Florac CC: Paul Anderson , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: FYI: LSI rebuilding; and XFS speed V. raw - hints on maxing out 'dd'....(if not already obvious)... Subject: Re: FYI: LSI rebuilding; and XFS speed V. raw - hints on maxing out 'dd'....(if not already obvious)... References: <20110502191323.417ef644@harpe.intellique.com> <4DF2C5D4.6030507@tlinx.org> <20110611113049.2868f9c7@galadriel2.home> In-Reply-To: <20110611113049.2868f9c7@galadriel2.home> X-Stationery: 0.5.1 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Barracuda-Connect: ishtar.tlinx.org[173.164.175.65] X-Barracuda-Start-Time: 1307810939 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65969 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 Emmanuel Florac wrote: > Le Fri, 10 Jun 2011 18:33:08 -0700 vous écriviez: > >> I have a 9285-8E and have been pretty happy with it's performance, >> but I only have 10 data disks (2x6-disk RAID5 =>RAID50) with 2TB >> SATA's and get 1GB perf... about what I'd expect from disks that get >> around 120MB each and doing 2 RAID5 calcs...)... > > I've made some more tests since then, and I was using cheapo drives for > testing that for some reason, behave extraordinarily poorly in > combination with the LSI card. I've retested the card with hitachi > Ultrastars and it worked just fine (though a bit slower than Adaptec > 6xx5). OTOH, the Adaptec works fine with the "bad" drives too, go > figure. ----- I noticed this issue with the LSI card as well -- i.e. with 'bad' low-qual drives. What I noticed though -- in independent testing of the lower quality drives, was that even though they were all spec'ed at 7200RPM, their actual speeds varied, from top to bottom by almost 50% (Indirectly measured by top transfer speeds copying from & to the drives 128G files... .. all freshly formatted, factory 'new', from the same generation). Speeds varied from top to bottom with max around 129MB/s to bottom @ 87MB/s, with typical being 95-120. That was quite a range of speeds. Trying to 'synchronize reads/writes/ on drives with such varying speeds would be a nightmare. I tried another RAID controller and got about 60% the performance of the LSI's -- but it was also with the cheaper drives. The LSI controller wouldn't "pass" the drives as "acceptable" if they were too far out of spec. The Ultrastars (NOT the deskstars, which are not speed controlled) all were fine. I've heard of people having problems with Enterprise Class WD drives due to the issue. So it may be a matter of the controller 'protecting itself' from drives that are out of spec -- and are therefore not considered 'RAID class' drives... Some would argue that being more 'tolerant' of poor drives is a good thing... But if you want the fastest speed, you need to make sure the drive speeds are well matched. same issue. From ajeet.yadav.77@gmail.com Mon Jun 13 03:46:09 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=ham version=3.4.0-r929098 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 p5D8k95V223939 for ; Mon, 13 Jun 2011 03:46:09 -0500 X-ASG-Debug-ID: 1307954767-787702840000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-vw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E217D1B913CD for ; Mon, 13 Jun 2011 01:46:07 -0700 (PDT) Received: from mail-vw0-f53.google.com (mail-vw0-f53.google.com [209.85.212.53]) by cuda.sgi.com with ESMTP id O59zlMMxYTEzEcJO for ; Mon, 13 Jun 2011 01:46:07 -0700 (PDT) Received: by vws13 with SMTP id 13so3956783vws.26 for ; Mon, 13 Jun 2011 01:46:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to :content-type; bh=HMPV95wsb/0f45/22ttPoNE4HF6kYoMqEO9tBGRe2FY=; b=nT/ogCWQXhaMec5PU7xKdXKTot51gyaB0dVlTPhJCK4i5BOKiRGyjIIBgRTpz31nIj 5PReEg8nkGdtqbo7t8JTnoGhQTRpOacJGPujACySm9/Re2+Zzh/EL54ixhVhKd7fWBla 0dfBJvb3RwBclkjXXZciDsO0KXu/TUTOJyOyw= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=ok6/EgMfhRGh4DXV0eVfxmk1wM4ZYD9BLpWLatGHGoqp/FcSCpToiMVTokYnm4DCtm aEK3KiAiqQO1l1Z7O2hQehmPIt6cBtBeXssuiDyU3R7FEcsbij+prpaD578RyGcYaLVY 5uRczqUMVXUsdHLAmnYBF2bIDKCEf1X5mx7bg= MIME-Version: 1.0 Received: by 10.52.15.231 with SMTP id a7mr7278131vdd.102.1307954762333; Mon, 13 Jun 2011 01:46:02 -0700 (PDT) Received: by 10.220.170.75 with HTTP; Mon, 13 Jun 2011 01:46:02 -0700 (PDT) Date: Mon, 13 Jun 2011 14:16:02 +0530 Message-ID: X-ASG-Orig-Subj: xfstest run result on 2.6.35.13 X86, 51 test cases failed Subject: xfstest run result on 2.6.35.13 X86, 51 test cases failed From: Ajeet Yadav To: xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-vw0-f53.google.com[209.85.212.53] X-Barracuda-Start-Time: 1307954767 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1623 1.0000 -1.0324 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.03 X-Barracuda-Spam-Status: No, SCORE=-1.03 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65980 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dear All. I have installed the 2.6.35.13 long term valilla kernel release (www.kenrel.org) on my Intel core 2 duo PC, and run 11-05-2011 xfstest version, and run on it, below is the list of fails test cases. As far as I know community uses xfstest for QA, seeing so many fails, I am bit worried. Can anyone hepl me know that why so many fails, is I missed some config option ? or these test cases are not applicable ? or there is someting else 12 13 18 30 31 49 73 74 76 78 79 80 82 84 104 109 111 112 113 129 133 136 167 170 171 172 173 174 178 180 181 189 195 198 200 202 207 208 210 211 216 224 229 239 240 241 242 247 250 251 252 From david@fromorbit.com Mon Jun 13 09:13:30 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5DEDTJ6244900 for ; Mon, 13 Jun 2011 09:13:30 -0500 X-ASG-Debug-ID: 1307974407-033101040000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4657914EE0F9 for ; Mon, 13 Jun 2011 07:13:27 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id baQyzXkKd4Fv32LR for ; Mon, 13 Jun 2011 07:13:27 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: An4DAB4Y9k15LCoegWdsb2JhbABSpjcVAQEWJiWIcr8pDoYWBKEj Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail04.adl6.internode.on.net with ESMTP; 13 Jun 2011 23:43:25 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QW7tM-0007dR-4S; Tue, 14 Jun 2011 00:13:24 +1000 Date: Tue, 14 Jun 2011 00:13:24 +1000 From: Dave Chinner To: Ajeet Yadav Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfstest run result on 2.6.35.13 X86, 51 test cases failed Subject: Re: xfstest run result on 2.6.35.13 X86, 51 test cases failed Message-ID: <20110613141324.GC32466@dastard> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1307974408 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0889 1.0000 -1.4598 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.46 X-Barracuda-Spam-Status: No, SCORE=-1.46 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.65981 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, Jun 13, 2011 at 02:16:02PM +0530, Ajeet Yadav wrote: > Dear All. > I have installed the 2.6.35.13 long term valilla kernel release > (www.kenrel.org) on my Intel core 2 duo PC, and run 11-05-2011 xfstest > version, and run on it, below is the list of fails test cases. > As far as I know community uses xfstest for QA, seeing so many fails, > I am bit worried. It shouldn't fail very many tests at all... > Can anyone hepl me know that why so many fails, is I missed some > config option ? or these test cases are not applicable ? or there is > someting else Well, without telling us why the tests are failing (i.e. copy all the output rather than just telling us some tests failed) we have no idea what the failures you are seeing are. Without some indication of what they failures are nobody can really comment on your situation.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From sekharan@us.ibm.com Mon Jun 13 11:18:31 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5DGIUCI257218 for ; Mon, 13 Jun 2011 11:18:31 -0500 X-ASG-Debug-ID: 1307981909-615d01080000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e2.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3476114EE8AD for ; Mon, 13 Jun 2011 09:18:29 -0700 (PDT) Received: from e2.ny.us.ibm.com (e2.ny.us.ibm.com [32.97.182.142]) by cuda.sgi.com with ESMTP id CPrsSM9ZQfQ0deTZ for ; Mon, 13 Jun 2011 09:18:29 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay05.pok.ibm.com (d01relay05.pok.ibm.com [9.56.227.237]) by e2.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5DFw382031265 for ; Mon, 13 Jun 2011 11:58:03 -0400 Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay05.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5DGIRP9056042 for ; Mon, 13 Jun 2011 12:18:27 -0400 Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5DCIFuR021351 for ; Mon, 13 Jun 2011 09:18:15 -0300 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d01av03.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5DCIEeJ021279; Mon, 13 Jun 2011 09:18:14 -0300 X-ASG-Orig-Subj: [PATCH]: [xfstests] Change test 202 to create a filesystem with small enough filesystem for a single AG Subject: [PATCH]: [xfstests] Change test 202 to create a filesystem with small enough filesystem for a single AG From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: XFS Mailing List Cc: Eric Sandeen Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Mon, 13 Jun 2011 09:18:25 -0700 Message-ID: <1307981905.7661.461.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e2.ny.us.ibm.com[32.97.182.142] X-Barracuda-Start-Time: 1307981910 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 202 fails when the filesystem size is greater than 1TB with not so clear message. Call mkfs with a small enough filesystem size even with older versions of XFS. Signed-Off-By: Chandra Seetharaman --- diff --git a/202 b/202 index cbdcb57..f3030fc 100755 --- a/202 +++ b/202 @@ -41,8 +41,14 @@ _supported_os Linux _require_scratch +# +# The AG size is limited to 1TB (or even less with historic xfsprogs), +# so chose a small enough filesystem to make sure we can actually create +# a single AG filesystem. +# echo "== Creating single-AG filesystem ==" -_scratch_mkfs_xfs -d agcount=1 >/dev/null 2>&1 +_scratch_mkfs_xfs -d agcount=1 -d size=$((1024*1024*1024)) >/dev/null 2>&1 \ + || _fail "!!! failed to make filesystem with single AG" echo "== Trying to repair it (should fail) ==" _scratch_xfs_repair From root@cgpart.com Mon Jun 13 23:20:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, SUBJ_FRIEND,T_LOTS_OF_MONEY autolearn=no version=3.4.0-r929098 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 p5E4KuCu037010 for ; Mon, 13 Jun 2011 23:20:56 -0500 X-ASG-Debug-ID: 1308025254-54d9016c0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from 3ddd.ru (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B372612DBB6B for ; Mon, 13 Jun 2011 21:20:54 -0700 (PDT) Received: from 3ddd.ru (3ddd.ru [95.211.135.3]) by cuda.sgi.com with ESMTP id fuQKD5srqb3ph8ze for ; Mon, 13 Jun 2011 21:20:54 -0700 (PDT) Received: by 3ddd.ru (Postfix, from userid 500) id 79F4717E10F0; Tue, 14 Jun 2011 07:12:36 +0400 (MSD) To: "Friend" X-ASG-Orig-Subj: Your friend Randolf has recommended this great product from CGpart Subject: Your friend Randolf has recommended this great product from CGpart X-PHP-Script: cgpart.com/tell_a_friend.php for 112.202.50.14, 112.202.50.14 From: "Randolf" MIME-Version: 1.0 X-Mailer: osCommerce Mailer Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <20110614041844.79F4717E10F0@3ddd.ru> Date: Tue, 14 Jun 2011 07:12:36 +0400 (MSD) X-Barracuda-Connect: 3ddd.ru[95.211.135.3] X-Barracuda-Start-Time: 1308025254 X-Barracuda-Bayes: INNOCENT GLOBAL 0.6974 1.0000 1.3496 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= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66022 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 Friend! Your friend, Randolf, thought that you would be interested in SONNY from CGpart. Hi, What if I told you there was a secret combination of keys which you could press and something amazing would happen? Well, what if I told you there exists a combination of keys that if you press in a certain way will generate you at least $23,654 per day? Sceptical? I was too until I saw this! http://simplebis.cz.cc/nmo2.php?e=linux-xfs@oss.sgi.com Thank me later, Randolf To unsubscribe please click the link below: http://simplebis.cz.cc/un.php?e=linux-xfs@oss.sgi.com To view the product click on the link below or copy and paste the link into your web browser: http://cgpart.com/product_info.php?products_id=11&osCsid=827b37d9d2802f4d080c295b786ecf31 Regards, CGpart http://cgpart.com/ From ajeet.yadav.77@gmail.com Tue Jun 14 03:39:05 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p5E8d4bw059896 for ; Tue, 14 Jun 2011 03:39:05 -0500 X-ASG-Debug-ID: 1308040740-2c03039b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-vx0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4178E14EF1D9 for ; Tue, 14 Jun 2011 01:39:00 -0700 (PDT) Received: from mail-vx0-f181.google.com (mail-vx0-f181.google.com [209.85.220.181]) by cuda.sgi.com with ESMTP id 18aLdxNPGH1CMhRH for ; Tue, 14 Jun 2011 01:39:00 -0700 (PDT) Received: by vxb39 with SMTP id 39so4832738vxb.26 for ; Tue, 14 Jun 2011 01:39:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=tX+M+l4XjCOSu01yBsLCgcS/1X7mDwFuNdxA0JXxFeQ=; b=LV/o9oJ8he35xLQVtZaqxclNhZ3osyM7FA7MR/ZgpiO94zebH4Hu2VHfkKygHaVO2M 4tYMFJV7plvyTz8dnWlbw2Fxdj0pEr+gnG5rfTxUxKYzjZ+pRG5s1y1lUp/fxLMAmVcZ Lh293AH+z0lnBSjuIL26pyAz+uyDkESAWVbdI= 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=PEgzRQTAS7vE2ihKv2HgXmmgSt8zYSxNavNxjAf4kWAW9xdsWh2CPIRsoXWxuGNvic vvUjaE/wkJvtUIcp+PqXzRKHAQfCDLvL50dLI3SAgnA+zggDFieED7C/Ia1wizNaiwqa abx6qA52/4J2jpWFi0Haby3KpnDteWA5UTUQs= MIME-Version: 1.0 Received: by 10.220.215.73 with SMTP id hd9mr2550305vcb.52.1308040739822; Tue, 14 Jun 2011 01:38:59 -0700 (PDT) Received: by 10.220.170.75 with HTTP; Tue, 14 Jun 2011 01:38:59 -0700 (PDT) In-Reply-To: <20110613141324.GC32466@dastard> References: <20110613141324.GC32466@dastard> Date: Tue, 14 Jun 2011 14:08:59 +0530 Message-ID: X-ASG-Orig-Subj: Re: xfstest run result on 2.6.35.13 X86, 51 test cases failed Subject: Re: xfstest run result on 2.6.35.13 X86, 51 test cases failed From: Ajeet Yadav To: Dave Chinner Cc: xfs@oss.sgi.com Content-Type: multipart/mixed; boundary=bcaec54ee374a61e2904a5a7f7e6 X-Barracuda-Connect: mail-vx0-f181.google.com[209.85.220.181] X-Barracuda-Start-Time: 1308040742 X-Barracuda-Bayes: INNOCENT GLOBAL 0.2154 1.0000 -0.7474 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=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66040 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --bcaec54ee374a61e2904a5a7f7e6 Content-Type: text/plain; charset=UTF-8 Hello, I better to send the xfstest log as attachment becuase of it large size On Mon, Jun 13, 2011 at 7:43 PM, Dave Chinner wrote: > On Mon, Jun 13, 2011 at 02:16:02PM +0530, Ajeet Yadav wrote: >> Dear All. >> I have installed the 2.6.35.13 long term valilla kernel release >> (www.kenrel.org) on my Intel core 2 duo PC, and run 11-05-2011 xfstest >> version, and run on it, below is the list of fails test cases. >> As far as I know community uses xfstest for QA, seeing so many fails, >> I am bit worried. > > It shouldn't fail very many tests at all... > >> Can anyone hepl me know that why so many fails, is I missed some >> config option ? or these test cases are not applicable ? or there is >> someting else > > Well, without telling us why the tests are failing (i.e. copy all > the output rather than just telling us some tests failed) we have no > idea what the failures you are seeing are. Without some indication > of what they failures are nobody can really comment on your > situation.... > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > --bcaec54ee374a61e2904a5a7f7e6 Content-Type: application/octet-stream; name=08_06_11_log Content-Disposition: attachment; filename=08_06_11_log Content-Transfer-Encoding: base64 X-Attachment-Id: f_gowlogcv0 RlNUWVAgICAgICAgICAtLSB4ZnMgKG5vbi1kZWJ1ZykKUExBVEZPUk0gICAgICAtLSBMaW51eC9p Njg2IG1hbm51RGVzayAyLjYuMzUuMTMKTUtGU19PUFRJT05TICAtLSAtZiAtYnNpemU9NDA5NiAv ZGV2L3NkYjQKTU9VTlRfT1BUSU9OUyAtLSAvZGV2L3NkYjQgL2hvbWUvbWFuaXNoL1Byb2plY3Rz L3hmc3Rlc3RzL3NkYjQKCjAwMQkgNnMKMDAyIDFzIC4uLiAwcwowMDMgMHMgLi4uIDBzCjAwNAkg N3MKMDA1CSAwcwowMDYJIDIycwowMDcJIDI4cwowMDgJIDNzCjAwOQkgN3MKMDExCSA1OHMKMDEy IDE2cyAuLi4gMTZzCjAxMwkgMjc4NXMKMDE0CSA0OHMKMDE1CSAxOXMKMDE2CSA5NnMKMDE3CSAz MjFzCjAxOAkgLSBvdXRwdXQgbWlzbWF0Y2ggKHNlZSAwMTgub3V0LmJhZCkKLS0tIDAxOC5vdXQJ MjAxMS0wNS0xMSAyMjozMjoyNC4wMDAwMDAwMDAgKzA1MzAKKysrIDAxOC5vdXQuYmFkCTIwMTEt MDYtMDggMTc6NDk6MzIuMTY4MTI5MDAxICswNTMwCkBAIC0xLDE3ICsxLDcgQEAKIFFBIG91dHB1 dCBjcmVhdGVkIGJ5IDAxOAoreGZzX2xvZ3ByaW50OiAvZGV2L3NkYjQgY29udGFpbnMgYSBtb3Vu dGVkIGFuZCB3cml0YWJsZSBmaWxlc3lzdGVtCiAqKiogaW5pdCBGUwogKioqIGNvbXBhcmUgbG9n cHJpbnQ6IDAxOC5vcCB3aXRoIDAxOC5mdWxsZGlyL29wLm1udC1vbm9hbGlnbixsb2dic2l6ZT0z MmsubWtmcy1sc2l6ZT0yMDAwYi1sbGF6eS1jb3VudD0xLWx2ZXJzaW9uPTEuZmlsdGVyZWQKLSoq KiBjb21wYXJlIGxvZ3ByaW50OiAwMTgudHJhbnNfaW5vZGUgd2l0aCAwMTguZnVsbGRpci90cmFu c19pbm9kZS5tbnQtb25vYWxpZ24sbG9nYnNpemU9MzJrLm1rZnMtbHNpemU9MjAwMGItbGxhenkt Y291bnQ9MS1sdmVyc2lvbj0xLmZpbHRlcmVkCi0qKiogY29tcGFyZSBsb2dwcmludDogMDE4LnRy YW5zX2J1ZiB3aXRoIDAxOC5mdWxsZGlyL3RyYW5zX2J1Zi5tbnQtb25vYWxpZ24sbG9nYnNpemU9 MzJrLm1rZnMtbHNpemU9MjAwMGItbGxhenktY291bnQ9MS1sdmVyc2lvbj0xLmZpbHRlcmVkCi0q KiogY29tcGFyZSBsb2dwcmludDogMDE4Lm9wIHdpdGggMDE4LmZ1bGxkaXIvb3AubW50LW9ub2Fs aWduLGxvZ2JzaXplPTMyay5ta2ZzLWxzaXplPTIwMDBiLWxsYXp5LWNvdW50PTEtbHZlcnNpb249 Mi5maWx0ZXJlZAotKioqIGNvbXBhcmUgbG9ncHJpbnQ6IDAxOC50cmFuc19pbm9kZSB3aXRoIDAx OC5mdWxsZGlyL3RyYW5zX2lub2RlLm1udC1vbm9hbGlnbixsb2dic2l6ZT0zMmsubWtmcy1sc2l6 ZT0yMDAwYi1sbGF6eS1jb3VudD0xLWx2ZXJzaW9uPTIuZmlsdGVyZWQKLSoqKiBjb21wYXJlIGxv Z3ByaW50OiAwMTgudHJhbnNfYnVmIHdpdGggMDE4LmZ1bGxkaXIvdHJhbnNfYnVmLm1udC1vbm9h bGlnbixsb2dic2l6ZT0zMmsubWtmcy1sc2l6ZT0yMDAwYi1sbGF6eS1jb3VudD0xLWx2ZXJzaW9u PTIuZmlsdGVyZWQKLSoqKiBjb21wYXJlIGxvZ3ByaW50OiAwMTgub3Agd2l0aCAwMTguZnVsbGRp ci9vcC5tbnQtb25vYWxpZ24sbG9nYnNpemU9NjRrLm1rZnMtbHNpemU9MjAwMGItbGxhenktY291 bnQ9MS1sdmVyc2lvbj0yLmZpbHRlcmVkCi0qKiogY29tcGFyZSBsb2dwcmludDogMDE4LnRyYW5z X2lub2RlIHdpdGggMDE4LmZ1bGxkaXIvdHJhbnNfaW5vZGUubW50LW9ub2FsaWduLGxvZ2JzaXpl PTY0ay5ta2ZzLWxzaXplPTIwMDBiLWxsYXp5LWNvdW50PTEtbHZlcnNpb249Mi5maWx0ZXJlZAot KioqIGNvbXBhcmUgbG9ncHJpbnQ6IDAxOC50cmFuc19idWYgd2l0aCAwMTguZnVsbGRpci90cmFu c19idWYubW50LW9ub2FsaWduLGxvZ2JzaXplPTY0ay5ta2ZzLWxzaXplPTIwMDBiLWxsYXp5LWNv dW50PTEtbHZlcnNpb249Mi5maWx0ZXJlZAotKioqIGNvbXBhcmUgbG9ncHJpbnQ6IDAxOC5vcCB3 aXRoIDAxOC5mdWxsZGlyL29wLm1udC1vbm9hbGlnbixsb2dic2l6ZT0xMjhrLm1rZnMtbHNpemU9 MjAwMGItbGxhenktY291bnQ9MS1sdmVyc2lvbj0yLmZpbHRlcmVkCi0qKiogY29tcGFyZSBsb2dw cmludDogMDE4LnRyYW5zX2lub2RlIHdpdGggMDE4LmZ1bGxkaXIvdHJhbnNfaW5vZGUubW50LW9u b2FsaWduLGxvZ2JzaXplPTEyOGsubWtmcy1sc2l6ZT0yMDAwYi1sbGF6eS1jb3VudD0xLWx2ZXJz aW9uPTIuZmlsdGVyZWQKLSoqKiBjb21wYXJlIGxvZ3ByaW50OiAwMTgudHJhbnNfYnVmIHdpdGgg MDE4LmZ1bGxkaXIvdHJhbnNfYnVmLm1udC1vbm9hbGlnbixsb2dic2l6ZT0xMjhrLm1rZnMtbHNp emU9MjAwMGItbGxhenktY291bnQ9MS1sdmVyc2lvbj0yLmZpbHRlcmVkCi0qKiogY29tcGFyZSBs b2dwcmludDogMDE4Lm9wIHdpdGggMDE4LmZ1bGxkaXIvb3AubW50LW9ub2FsaWduLGxvZ2JzaXpl PTI1NmsubWtmcy1sc2l6ZT0yMDAwYi1sbGF6eS1jb3VudD0xLWx2ZXJzaW9uPTIuZmlsdGVyZWQK LSoqKiBjb21wYXJlIGxvZ3ByaW50OiAwMTgudHJhbnNfaW5vZGUgd2l0aCAwMTguZnVsbGRpci90 cmFuc19pbm9kZS5tbnQtb25vYWxpZ24sbG9nYnNpemU9MjU2ay5ta2ZzLWxzaXplPTIwMDBiLWxs YXp5LWNvdW50PTEtbHZlcnNpb249Mi5maWx0ZXJlZAotKioqIGNvbXBhcmUgbG9ncHJpbnQ6IDAx OC50cmFuc19idWYgd2l0aCAwMTguZnVsbGRpci90cmFuc19idWYubW50LW9ub2FsaWduLGxvZ2Jz aXplPTI1NmsubWtmcy1sc2l6ZT0yMDAwYi1sbGF6eS1jb3VudD0xLWx2ZXJzaW9uPTIuZmlsdGVy ZWQKKzAgIHNwbGl0KHMpIGZvdW5kIHByaW9yIHRvIGRpZmYgY21kOiAgOTZhMTEyLDEyNgorbG9n cHJpbnQgb3V0cHV0IDAxOC5vcCBkaWZmZXJzIHRvIDAxOC5mdWxsZGlyL29wLm1udC1vbm9hbGln bixsb2dic2l6ZT0zMmsubWtmcy1sc2l6ZT0yMDAwYi1sbGF6eS1jb3VudD0xLWx2ZXJzaW9uPTEu ZmlsdGVyZWQgY29uc2lkZXJpbmcgc3BsaXRzCisoc2VlIDAxOC5mdWxsIGZvciBkZXRhaWxzKQow MTkJIDdzCjAyMAkgNnMKMDIxCSA1cwowMjkJIDdzCjAzMCA2MHMgLi4uIDYycwowMzEgNDhzIC4u LiA1MHMKMDMyCSA3NTdzCjAzMwkgMTlzCjAzNAkgNnMKMDQxCSA2OHMKMDQyCSAxMTVzCjA0NQkg N3MKMDQ4CSAwcwowNDkJIDg2cwowNjIJIDhzCjA2OAkgOTRzCjA2OQkgMTdzCjA3MAkgMTQzcwow NzEJIC0gb3V0cHV0IG1pc21hdGNoIChzZWUgMDcxLm91dC5iYWQpCi0tLSAwNzEub3V0CTIwMTEt MDUtMTEgMjI6MzI6MjQuMDAwMDAwMDAwICswNTMwCisrKyAwNzEub3V0LmJhZAkyMDExLTA2LTA4 IDE4OjE0OjMzLjk5MDEyOTAwMCArMDUzMApAQCAtNDAsMTQgKzQwLDE0IEBACiAKIAogV3JpdGlu ZyA1MTIgYnl0ZXMsIG9mZnNldCBpcyArMCAoZGlyZWN0PWZhbHNlKQotcHdyaXRlNjQ6IEZpbGUg dG9vIGxhcmdlCit3cm90ZSA1MTIvNTEyIGJ5dGVzIGF0IG9mZnNldCA8T0ZGU0VUPgogUmVhZGlu ZyA1MTIgYnl0ZXMgKGRpcmVjdD1mYWxzZSkKLXJlYWQgMC81MTIgYnl0ZXMgYXQgb2Zmc2V0IDxP RkZTRVQ+CityZWFkIDUxMi81MTIgYnl0ZXMgYXQgb2Zmc2V0IDxPRkZTRVQ+CiAKIFdyaXRpbmcg NTEyIGJ5dGVzLCBvZmZzZXQgaXMgbWludXMgMSBieXRlIChkaXJlY3Q9ZmFsc2UpCi1wd3JpdGU2 NDogRmlsZSB0b28gbGFyZ2UKK3dyb3RlIDUxMi81MTIgYnl0ZXMgYXQgb2Zmc2V0IDxPRkZTRVQ+ CiBSZWFkaW5nIDUxMiBieXRlcyAoZGlyZWN0PWZhbHNlKQotcmVhZCAwLzUxMiBieXRlcyBhdCBv ZmZzZXQgPE9GRlNFVD4KK3JlYWQgNTEyLzUxMiBieXRlcyBhdCBvZmZzZXQgPE9GRlNFVD4KIAog V3JpdGluZyA1MTIgYnl0ZXMsIG9mZnNldCBpcyBtaW51cyAxRlNCIChkaXJlY3Q9ZmFsc2UpCiB3 cm90ZSA1MTIvNTEyIGJ5dGVzIGF0IG9mZnNldCA8T0ZGU0VUPgpAQCAtNjAsNDcgKzYwLDQ3IEBA CiByZWFkIDEvMSBieXRlcyBhdCBvZmZzZXQgPE9GRlNFVD4KIAogV3JpdGluZyAxRlNCIGJ5dGVz LCBvZmZzZXQgaXMgKzAgKGRpcmVjdD10cnVlKQotcHdyaXRlNjQ6IEZpbGUgdG9vIGxhcmdlCit3 cm90ZSA1MTIvNTEyIGJ5dGVzIGF0IG9mZnNldCA8T0ZGU0VUPgogUmVhZGluZyAxRlNCIGJ5dGVz IChkaXJlY3Q9dHJ1ZSkKLXJlYWQgMC8xRlNCIGJ5dGVzIGF0IG9mZnNldCA8T0ZGU0VUPgorcmVh ZCA1MTIvMUZTQiBieXRlcyBhdCBvZmZzZXQgPE9GRlNFVD4KIAogV3JpdGluZyAxRlNCIGJ5dGVz LCBvZmZzZXQgaXMgbWludXMgMUZTQiAoZGlyZWN0PXRydWUpCi1wd3JpdGU2NDogRmlsZSB0b28g bGFyZ2UKK3dyb3RlIDUxMi81MTIgYnl0ZXMgYXQgb2Zmc2V0IDxPRkZTRVQ+CiBSZWFkaW5nIDFG U0IgYnl0ZXMgKGRpcmVjdD10cnVlKQotcmVhZCAwLzFGU0IgYnl0ZXMgYXQgb2Zmc2V0IDxPRkZT RVQ+CityZWFkIDUxMy8xRlNCIGJ5dGVzIGF0IG9mZnNldCA8T0ZGU0VUPgogCiA9PT0gSXRlcmF0 aW5nLCAxIHJlbWFpbnMKIAogCiBXcml0aW5nIDUxMiBieXRlcywgb2Zmc2V0IGlzICswIChkaXJl Y3Q9ZmFsc2UpCi1wd3JpdGU2NDogRmlsZSB0b28gbGFyZ2UKK3dyb3RlIDUxMi81MTIgYnl0ZXMg YXQgb2Zmc2V0IDxPRkZTRVQ+CiBSZWFkaW5nIDUxMiBieXRlcyAoZGlyZWN0PWZhbHNlKQotcmVh ZCAwLzUxMiBieXRlcyBhdCBvZmZzZXQgPE9GRlNFVD4KK3JlYWQgNTEyLzUxMiBieXRlcyBhdCBv ZmZzZXQgPE9GRlNFVD4KIAogV3JpdGluZyA1MTIgYnl0ZXMsIG9mZnNldCBpcyBtaW51cyAxIGJ5 dGUgKGRpcmVjdD1mYWxzZSkKLXB3cml0ZTY0OiBGaWxlIHRvbyBsYXJnZQord3JvdGUgNTEyLzUx MiBieXRlcyBhdCBvZmZzZXQgPE9GRlNFVD4KIFJlYWRpbmcgNTEyIGJ5dGVzIChkaXJlY3Q9ZmFs c2UpCi1yZWFkIDAvNTEyIGJ5dGVzIGF0IG9mZnNldCA8T0ZGU0VUPgorcmVhZCA1MTIvNTEyIGJ5 dGVzIGF0IG9mZnNldCA8T0ZGU0VUPgogCiBXcml0aW5nIDUxMiBieXRlcywgb2Zmc2V0IGlzIG1p bnVzIDFGU0IgKGRpcmVjdD1mYWxzZSkKLXB3cml0ZTY0OiBGaWxlIHRvbyBsYXJnZQord3JvdGUg NTEyLzUxMiBieXRlcyBhdCBvZmZzZXQgPE9GRlNFVD4KIFJlYWRpbmcgNTEyIGJ5dGVzIChkaXJl Y3Q9ZmFsc2UpCi1yZWFkIDAvNTEyIGJ5dGVzIGF0IG9mZnNldCA8T0ZGU0VUPgorcmVhZCA1MTIv NTEyIGJ5dGVzIGF0IG9mZnNldCA8T0ZGU0VUPgogCiBXcml0aW5nIDEgYnl0ZXMsIG9mZnNldCBp cyBtaW51cyAxRlNCIChkaXJlY3Q9ZmFsc2UpCi1wd3JpdGU2NDogRmlsZSB0b28gbGFyZ2UKK3dy b3RlIDUxMi81MTIgYnl0ZXMgYXQgb2Zmc2V0IDxPRkZTRVQ+CiBSZWFkaW5nIDEgYnl0ZXMgKGRp cmVjdD1mYWxzZSkKLXJlYWQgMC8xIGJ5dGVzIGF0IG9mZnNldCA8T0ZGU0VUPgorcmVhZCAxLzEg Ynl0ZXMgYXQgb2Zmc2V0IDxPRkZTRVQ+CiAKIFdyaXRpbmcgMUZTQiBieXRlcywgb2Zmc2V0IGlz ICswIChkaXJlY3Q9dHJ1ZSkKLXB3cml0ZTY0OiBGaWxlIHRvbyBsYXJnZQord3JvdGUgNTEyLzUx MiBieXRlcyBhdCBvZmZzZXQgPE9GRlNFVD4KIFJlYWRpbmcgMUZTQiBieXRlcyAoZGlyZWN0PXRy dWUpCi1yZWFkIDAvMUZTQiBieXRlcyBhdCBvZmZzZXQgPE9GRlNFVD4KK3JlYWQgNTEyLzFGU0Ig Ynl0ZXMgYXQgb2Zmc2V0IDxPRkZTRVQ+CiAKIFdyaXRpbmcgMUZTQiBieXRlcywgb2Zmc2V0IGlz IG1pbnVzIDFGU0IgKGRpcmVjdD10cnVlKQotcHdyaXRlNjQ6IEZpbGUgdG9vIGxhcmdlCit3cm90 ZSA1MTIvNTEyIGJ5dGVzIGF0IG9mZnNldCA8T0ZGU0VUPgogUmVhZGluZyAxRlNCIGJ5dGVzIChk aXJlY3Q9dHJ1ZSkKLXJlYWQgMC8xRlNCIGJ5dGVzIGF0IG9mZnNldCA8T0ZGU0VUPgorcmVhZCA1 MTMvMUZTQiBieXRlcyBhdCBvZmZzZXQgPE9GRlNFVD4KIAogPT09IEl0ZXJhdGluZywgMCByZW1h aW5zCiAKMDcyCSA1cwowNzMJIDEzMHMKX2NoZWNrX3hmc19maWxlc3lzdGVtOiBmaWxlc3lzdGVt IG9uIC9kZXYvc2RiMyBoYXMgZGlydHkgbG9nIChzZWUgMDczLmZ1bGwpCl9jaGVja194ZnNfZmls ZXN5c3RlbTogZmlsZXN5c3RlbSBvbiAvZGV2L3NkYjMgaXMgaW5jb25zaXN0ZW50IChjKSAoc2Vl IDA3My5mdWxsKQpfY2hlY2tfeGZzX2ZpbGVzeXN0ZW06IGZpbGVzeXN0ZW0gb24gL2Rldi9zZGIz IGlzIGluY29uc2lzdGVudCAocikgKHNlZSAwNzMuZnVsbCkKUmFuOiAwMDEgMDAyIDAwMyAwMDQg MDA1IDAwNiAwMDcgMDA4IDAwOSAwMTEgMDEyIDAxMyAwMTQgMDE1IDAxNiAwMTcgMDE4IDAxOSAw MjAgMDIxIDAyOSAwMzAgMDMxIDAzMiAwMzMgMDM0IDA0MSAwNDIgMDQ1IDA0OCAwNDkgMDYyIDA2 OCAwNjkgMDcwIDA3MSAwNzIgMDczCkZhaWx1cmVzOiAwMTggMDcxCkZhaWxlZCAyIG9mIDM4IHRl c3RzCkZTVFlQICAgICAgICAgLS0geGZzIChub24tZGVidWcpClBMQVRGT1JNICAgICAgLS0gTGlu dXgvaTY4NiBtYW5udURlc2sgMi42LjM1LjEzCk1LRlNfT1BUSU9OUyAgLS0gLWYgLWJzaXplPTQw OTYgL2Rldi9zZGI0Ck1PVU5UX09QVElPTlMgLS0gL2Rldi9zZGI0IC9ob21lL21hbmlzaC9Qcm9q ZWN0cy94ZnN0ZXN0cy9zZGI0CgowNzIgNXMgLi4uIDRzCjA3MyAxMzBzIC4uLiAxMjhzCl9jaGVj a194ZnNfZmlsZXN5c3RlbTogZmlsZXN5c3RlbSBvbiAvZGV2L3NkYjMgaGFzIGRpcnR5IGxvZyAo c2VlIDA3My5mdWxsKQpfY2hlY2tfeGZzX2ZpbGVzeXN0ZW06IGZpbGVzeXN0ZW0gb24gL2Rldi9z ZGIzIGlzIGluY29uc2lzdGVudCAoYykgKHNlZSAwNzMuZnVsbCkKX2NoZWNrX3hmc19maWxlc3lz dGVtOiBmaWxlc3lzdGVtIG9uIC9kZXYvc2RiMyBpcyBpbmNvbnNpc3RlbnQgKHIpIChzZWUgMDcz LmZ1bGwpClJhbjogMDcyIDA3MwpQYXNzZWQgYWxsIDIgdGVzdHMKCgoKCgpGU1RZUCAgICAgICAg IC0tIHhmcyAobm9uLWRlYnVnKQpQTEFURk9STSAgICAgIC0tIExpbnV4L2k2ODYgbWFubnVEZXNr IDIuNi4zNS4xMwpNS0ZTX09QVElPTlMgIC0tIC1mIC1ic2l6ZT00MDk2IC9kZXYvc2RiNApNT1VO VF9PUFRJT05TIC0tIC9kZXYvc2RiNCAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NAoKMDc0CVBhc3NlZCBhbGwgMCB0ZXN0cwpGU1RZUCAgICAgICAgIC0tIHhmcyAobm9uLWRlYnVn KQpQTEFURk9STSAgICAgIC0tIExpbnV4L2k2ODYgbWFubnVEZXNrIDIuNi4zNS4xMwpNS0ZTX09Q VElPTlMgIC0tIC1mIC1ic2l6ZT00MDk2IC9kZXYvc2RiNApNT1VOVF9PUFRJT05TIC0tIC9kZXYv c2RiNCAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNAoKMDc1CSA4N3MKMDc2CSA0 NTZzCjA3OAkgMTE5M3MKMDc5CSBbZmFpbGVkLCBleGl0IHN0YXR1cyAxXSAtIG91dHB1dCBtaXNt YXRjaCAoc2VlIDA3OS5vdXQuYmFkKQotLS0gMDc5Lm91dAkyMDExLTA1LTExIDIyOjMyOjI0LjAw MDAwMDAwMCArMDUzMAorKysgMDc5Lm91dC5iYWQJMjAxMS0wNi0wOSAxMjo0NDo1Ny4wNTg2MTEw MDAgKzA1MzAKQEAgLTEsNyArMSw5IEBACiBRQSBvdXRwdXQgY3JlYXRlZCBieSAwNzkKICoqKiBz dGFydGluZyB1cAorc3RhdGZzIGZhaWxlZDogUGVybWlzc2lvbiBkZW5pZWQKK3N0YXRmcyBmYWls ZWQ6IFBlcm1pc3Npb24gZGVuaWVkCiB0ZXN0aW5nIGltbXV0YWJsZS4uLlBBU1MuCiB0ZXN0aW5n IGFwcGVuZC1vbmx5Li4uUEFTUy4KLXRlc3RpbmcgaW1tdXRhYmxlIGFzIG5vbi1yb290Li4uUEFT Uy4KLXRlc3RpbmcgYXBwZW5kLW9ubHkgYXMgbm9uLXJvb3QuLi5QQVNTLgordGVzdGluZyBpbW11 dGFibGUgYXMgbm9uLXJvb3QuLi5GQUlMRUQhICgxIHRlc3RzIGZhaWxlZCkKK3Rlc3RpbmcgYXBw ZW5kLW9ubHkgYXMgbm9uLXJvb3QuLi5GQUlMRUQhICgxIHRlc3RzIGZhaWxlZCkKICoqKiBjbGVh bmluZyB1cAowODAJIDU2cwowODIJIC0gb3V0cHV0IG1pc21hdGNoIChzZWUgMDgyLm91dC5iYWQp Ci0tLSAwODIub3V0CTIwMTEtMDUtMTEgMjI6MzI6MjQuMDAwMDAwMDAwICswNTMwCisrKyAwODIu b3V0LmJhZAkyMDExLTA2LTA5IDEyOjQ2OjA4LjUzODYxMTAwMCArMDUzMApAQCAtMiwzMyArMiwy MCBAQAogKioqIGluaXQgRlMKIC0tLSBta2ZzPXZlcnNpb249MiwgbW50PWxvZ2JzaXplPTMyaywg c3luYz1zeW5jIC0tLQogKioqIGNvbXBhcmUgbG9ncHJpbnQ6IDA4Mi50cmFuc19pbm9kZSB3aXRo IDA4Mi5mdWxsZGlyL3RyYW5zX2lub2RlLm1udC1vbG9nYnNpemU9MzJrLm1rZnMtbHNpemU9MjAw MGItbGxhenktY291bnQ9MS1sdmVyc2lvbj0yLnN5bmMuZmlsdGVyZWQKLSoqKiBjb21wYXJlIGxv Z3ByaW50OiAwODIudHJhbnNfYnVmIHdpdGggMDgyLmZ1bGxkaXIvdHJhbnNfYnVmLm1udC1vbG9n YnNpemU9MzJrLm1rZnMtbHNpemU9MjAwMGItbGxhenktY291bnQ9MS1sdmVyc2lvbj0yLnN5bmMu ZmlsdGVyZWQKLS0tLSBta2ZzPXZlcnNpb249MixzdT00MDk2LCBtbnQ9bG9nYnNpemU9MzJrLCBz eW5jPXN5bmMgLS0tCi0qKiogY29tcGFyZSBsb2dwcmludDogMDgyLnRyYW5zX2lub2RlIHdpdGgg MDgyLmZ1bGxkaXIvdHJhbnNfaW5vZGUubW50LW9sb2dic2l6ZT0zMmsubWtmcy1sc2l6ZT0yMDAw Yi1sbGF6eS1jb3VudD0xLWx2ZXJzaW9uPTIsc3U9NDA5Ni5zeW5jLmZpbHRlcmVkCi0qKiogY29t cGFyZSBsb2dwcmludDogMDgyLnRyYW5zX2J1ZiB3aXRoIDA4Mi5mdWxsZGlyL3RyYW5zX2J1Zi5t bnQtb2xvZ2JzaXplPTMyay5ta2ZzLWxzaXplPTIwMDBiLWxsYXp5LWNvdW50PTEtbHZlcnNpb249 MixzdT00MDk2LnN5bmMuZmlsdGVyZWQKLS0tLSBta2ZzPXZlcnNpb249MixzdT0zMjc2OCwgbW50 PWxvZ2JzaXplPTMyaywgc3luYz1zeW5jIC0tLQotKioqIGNvbXBhcmUgbG9ncHJpbnQ6IDA4Mi50 cmFuc19pbm9kZSB3aXRoIDA4Mi5mdWxsZGlyL3RyYW5zX2lub2RlLm1udC1vbG9nYnNpemU9MzJr Lm1rZnMtbHNpemU9MjAwMGItbGxhenktY291bnQ9MS1sdmVyc2lvbj0yLHN1PTMyNzY4LnN5bmMu ZmlsdGVyZWQKLSoqKiBjb21wYXJlIGxvZ3ByaW50OiAwODIudHJhbnNfYnVmIHdpdGggMDgyLmZ1 bGxkaXIvdHJhbnNfYnVmLm1udC1vbG9nYnNpemU9MzJrLm1rZnMtbHNpemU9MjAwMGItbGxhenkt Y291bnQ9MS1sdmVyc2lvbj0yLHN1PTMyNzY4LnN5bmMuZmlsdGVyZWQKLS0tLSBta2ZzPXZlcnNp b249MixzdT0zNjg2NCwgbW50PWxvZ2JzaXplPTMyaywgc3luYz1zeW5jIC0tLQorbG9ncHJpbnQg b3V0cHV0IDA4Mi50cmFuc19pbm9kZSBkaWZmZXJzIHRvIDA4Mi5mdWxsZGlyL3RyYW5zX2lub2Rl Lm1udC1vbG9nYnNpemU9MzJrLm1rZnMtbHNpemU9MjAwMGItbGxhenktY291bnQ9MS1sdmVyc2lv bj0yLnN5bmMuZmlsdGVyZWQKKyhzZWUgMDgyLmZ1bGwgZm9yIGRldGFpbHMpCistLS0gbWtmcz12 ZXJzaW9uPTIsIG1udD1sb2dic2l6ZT0zMmssIHN5bmM9bm9zeW5jIC0tLQogCi0qKiogQ2Fubm90 IG1rZnMgZm9yIHRoaXMgdGVzdCB1c2luZyBvcHRpb24gc3BlY2lmaWVkOiAtbCBzaXplPTIwMDBi IC1sIGxhenktY291bnQ9MSAtbCB2ZXJzaW9uPTIsc3U9MzY4NjQgKioqCisqKiogdW1vdW50IGZh aWxlZCAqKioKIAotLS0tIG1rZnM9dmVyc2lvbj0yLHN1PTUxMjAsIG1udD1sb2dic2l6ZT0zMmss IHN5bmM9c3luYyAtLS0KKy0tLSBta2ZzPXZlcnNpb249MixzdT00MDk2LCBtbnQ9bG9nYnNpemU9 MzJrLCBzeW5jPW5vc3luYyAtLS0KIAotKioqIENhbm5vdCBta2ZzIGZvciB0aGlzIHRlc3QgdXNp bmcgb3B0aW9uIHNwZWNpZmllZDogLWwgc2l6ZT0yMDAwYiAtbCBsYXp5LWNvdW50PTEgLWwgdmVy c2lvbj0yLHN1PTUxMjAgKioqCisqKiogQ2Fubm90IG1rZnMgZm9yIHRoaXMgdGVzdCB1c2luZyBv cHRpb24gc3BlY2lmaWVkOiAtbCBzaXplPTIwMDBiIC1sIGxhenktY291bnQ9MSAtbCB2ZXJzaW9u PTIsc3U9NDA5NiAqKioKIAotLS0tIG1rZnM9dmVyc2lvbj0yLCBtbnQ9bG9nYnNpemU9MzJrLCBz eW5jPW5vc3luYyAtLS0KLSoqKiBjb21wYXJlIGxvZ3ByaW50OiAwODIub3Agd2l0aCAwODIuZnVs bGRpci9vcC5tbnQtb2xvZ2JzaXplPTMyay5ta2ZzLWxzaXplPTIwMDBiLWxsYXp5LWNvdW50PTEt bHZlcnNpb249Mi5ub3N5bmMuZmlsdGVyZWQKLSoqKiBjb21wYXJlIGxvZ3ByaW50OiAwODIudHJh bnNfaW5vZGUgd2l0aCAwODIuZnVsbGRpci90cmFuc19pbm9kZS5tbnQtb2xvZ2JzaXplPTMyay5t a2ZzLWxzaXplPTIwMDBiLWxsYXp5LWNvdW50PTEtbHZlcnNpb249Mi5ub3N5bmMuZmlsdGVyZWQK LSoqKiBjb21wYXJlIGxvZ3ByaW50OiAwODIudHJhbnNfYnVmIHdpdGggMDgyLmZ1bGxkaXIvdHJh bnNfYnVmLm1udC1vbG9nYnNpemU9MzJrLm1rZnMtbHNpemU9MjAwMGItbGxhenktY291bnQ9MS1s dmVyc2lvbj0yLm5vc3luYy5maWx0ZXJlZAotLS0tIG1rZnM9dmVyc2lvbj0yLHN1PTQwOTYsIG1u dD1sb2dic2l6ZT0zMmssIHN5bmM9bm9zeW5jIC0tLQotKioqIGNvbXBhcmUgbG9ncHJpbnQ6IDA4 Mi5vcCB3aXRoIDA4Mi5mdWxsZGlyL29wLm1udC1vbG9nYnNpemU9MzJrLm1rZnMtbHNpemU9MjAw MGItbGxhenktY291bnQ9MS1sdmVyc2lvbj0yLHN1PTQwOTYubm9zeW5jLmZpbHRlcmVkCi0qKiog Y29tcGFyZSBsb2dwcmludDogMDgyLnRyYW5zX2lub2RlIHdpdGggMDgyLmZ1bGxkaXIvdHJhbnNf aW5vZGUubW50LW9sb2dic2l6ZT0zMmsubWtmcy1sc2l6ZT0yMDAwYi1sbGF6eS1jb3VudD0xLWx2 ZXJzaW9uPTIsc3U9NDA5Ni5ub3N5bmMuZmlsdGVyZWQKLSoqKiBjb21wYXJlIGxvZ3ByaW50OiAw ODIudHJhbnNfYnVmIHdpdGggMDgyLmZ1bGxkaXIvdHJhbnNfYnVmLm1udC1vbG9nYnNpemU9MzJr Lm1rZnMtbHNpemU9MjAwMGItbGxhenktY291bnQ9MS1sdmVyc2lvbj0yLHN1PTQwOTYubm9zeW5j LmZpbHRlcmVkCiAtLS0gbWtmcz12ZXJzaW9uPTIsc3U9MzI3NjgsIG1udD1sb2dic2l6ZT0zMmss IHN5bmM9bm9zeW5jIC0tLQotKioqIGNvbXBhcmUgbG9ncHJpbnQ6IDA4Mi5vcCB3aXRoIDA4Mi5m dWxsZGlyL29wLm1udC1vbG9nYnNpemU9MzJrLm1rZnMtbHNpemU9MjAwMGItbGxhenktY291bnQ9 MS1sdmVyc2lvbj0yLHN1PTMyNzY4Lm5vc3luYy5maWx0ZXJlZAotKioqIGNvbXBhcmUgbG9ncHJp bnQ6IDA4Mi50cmFuc19pbm9kZSB3aXRoIDA4Mi5mdWxsZGlyL3RyYW5zX2lub2RlLm1udC1vbG9n YnNpemU9MzJrLm1rZnMtbHNpemU9MjAwMGItbGxhenktY291bnQ9MS1sdmVyc2lvbj0yLHN1PTMy NzY4Lm5vc3luYy5maWx0ZXJlZAotKioqIGNvbXBhcmUgbG9ncHJpbnQ6IDA4Mi50cmFuc19idWYg d2l0aCAwODIuZnVsbGRpci90cmFuc19idWYubW50LW9sb2dic2l6ZT0zMmsubWtmcy1sc2l6ZT0y MDAwYi1sbGF6eS1jb3VudD0xLWx2ZXJzaW9uPTIsc3U9MzI3Njgubm9zeW5jLmZpbHRlcmVkCisK KyoqKiBDYW5ub3QgbWtmcyBmb3IgdGhpcyB0ZXN0IHVzaW5nIG9wdGlvbiBzcGVjaWZpZWQ6IC1s IHNpemU9MjAwMGIgLWwgbGF6eS1jb3VudD0xIC1sIHZlcnNpb249MixzdT0zMjc2OCAqKioKKwog LS0tIG1rZnM9dmVyc2lvbj0yLHN1PTM2ODY0LCBtbnQ9bG9nYnNpemU9MzJrLCBzeW5jPW5vc3lu YyAtLS0KIAogKioqIENhbm5vdCBta2ZzIGZvciB0aGlzIHRlc3QgdXNpbmcgb3B0aW9uIHNwZWNp ZmllZDogLWwgc2l6ZT0yMDAwYiAtbCBsYXp5LWNvdW50PTEgLWwgdmVyc2lvbj0yLHN1PTM2ODY0 ICoqKgowODMJIDEzOTRzCjA4NAkgNjBzCjA4NQkgOXMKMDg2CSAtIG91dHB1dCBtaXNtYXRjaCAo c2VlIDA4Ni5vdXQuYmFkKQotLS0gMDg2Lm91dAkyMDExLTA1LTExIDIyOjMyOjI0LjAwMDAwMDAw MCArMDUzMAorKysgMDg2Lm91dC5iYWQJMjAxMS0wNi0wOSAxMzoxMDo1NC4zNDk2MTA5OTggKzA1 MzAKQEAgLTEsNCArMSw1IEBACiBRQSBvdXRwdXQgY3JlYXRlZCBieSAwODYKK3hmc19sb2dwcmlu dDogL2Rldi9zZGI0IGNvbnRhaW5zIGEgbW91bnRlZCBhbmQgd3JpdGFibGUgZmlsZXN5c3RlbQog KioqIGluaXQgRlMKIC0tLSBta2ZzPXZlcnNpb249MiwgbW50PWxvZ2JzaXplPTMyaywgc3luYz1z eW5jIC0tLQogCkBAIC0yMjksNiArMjMwLDkgQEAKIAogKioqIHVubW91bnQgKioqCiAKK3Vtb3Vu dDogL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQ6IGRldmljZSBpcyBidXN5Lgor ICAgICAgICAoSW4gc29tZSBjYXNlcyB1c2VmdWwgaW5mbyBhYm91dCBwcm9jZXNzZXMgdGhhdCB1 c2UKKyAgICAgICAgIHRoZSBkZXZpY2UgaXMgZm91bmQgYnkgbHNvZig4KSBvciBmdXNlcigxKSkK IAogKioqIGxvZ3ByaW50IGFmdGVyIG1vdW50IGFuZCByZXBsYXkuLi4gKioqCiAKQEAgLTQ2NSwx MCArNDY5LDE0IEBACiAKICoqKiB1bm1vdW50ICoqKgogCit1bW91bnQ6IC9ob21lL21hbmlzaC9Q cm9qZWN0cy94ZnN0ZXN0cy9zZGI0OiBkZXZpY2UgaXMgYnVzeS4KKyAgICAgICAgKEluIHNvbWUg Y2FzZXMgdXNlZnVsIGluZm8gYWJvdXQgcHJvY2Vzc2VzIHRoYXQgdXNlCisgICAgICAgICB0aGUg ZGV2aWNlIGlzIGZvdW5kIGJ5IGxzb2YoOCkgb3IgZnVzZXIoMSkpCiAKICoqKiBsb2dwcmludCBh ZnRlciBtb3VudCBhbmQgcmVwbGF5Li4uICoqKgogCi1jbGVhbiBsb2cKK3hmc19sb2dwcmludDog L2Rldi9zZGI0IGNvbnRhaW5zIGEgbW91bnRlZCBhbmQgd3JpdGFibGUgZmlsZXN5c3RlbQorZGly dHkgbG9nCiAKICoqKiBmaWxlc3lzdGVtIGlzIGNoZWNrZWQgb2sgKioqCiAKQEAgLTQ3Nyw0MjQ2 ICs0ODUsMTI0IEBACiAqKiogbWtmcyAqKioKIAogCi0qKiogbW91bnQgKioqCisqKiogbWtmcyBm YWlsZWQ6IC1sIHZlcnNpb249MixzdT0zMjc2OCAqKioKIAorLS0tIG1rZnM9dmVyc2lvbj0yLHN1 PTMyNzY4LCBtbnQ9bG9nYnNpemU9NjRrLCBzeW5jPXN5bmMgLS0tCiAKLSoqKiBscyBTQ1JBVENI X01OVCAqKioKKyoqKiBta2ZzICoqKgogCi0wMAotMDEKLTAyCi0wMwotMDQKLTA1Ci0wNgotMDcK LTA4Ci0wOQotMTAKLTExCi0xMgotMTMKLTE0Ci0xNQotMTYKLTE3Ci0xOAotMTkKLTIwCi0yMQot MjIKLTIzCi0yNAotMjUKLTI2Ci0yNwotMjgKLTI5Ci0zMAotMzEKLTMyCi0zMwotMzQKLTM1Ci0z NgotMzcKLTM4Ci0zOQotNDAKLTQxCi00MgotNDMKLTQ0Ci00NQotNDYKLTQ3Ci00OAotNDkKLTUw Ci01MQotNTIKLTUzCi01NAotNTUKLTU2Ci01NwotNTgKLTU5Ci02MAotNjEKLTYyCi02MwotNjQK LTY1Ci02NgotNjcKLTY4Ci02OQotNzAKLTcxCi03MgotNzMKLTc0Ci03NQotNzYKLTc3Ci03OAot NzkKLTgwCi04MQotODIKLTgzCi04NAotODUKLTg2Ci04NwotODgKLTg5Ci05MAotOTEKLTkyCi05 MwotOTQKLTk1Ci05NgotOTcKLTk4Ci05OQogCi0qKiogZ29kb3duICoqKgorKioqIG1rZnMgZmFp bGVkOiAtbCB2ZXJzaW9uPTIsc3U9MzI3NjggKioqCiAKKy0tLSBta2ZzPXZlcnNpb249MiwgbW50 PWxvZ2JzaXplPTY0aywgc3luYz1zeW5jIC0tLQogCi0qKiogdW5tb3VudCAqKioKKyoqKiBta2Zz ICoqKgogCiAKLSoqKiBsb2dwcmludCBhZnRlciBnb2luZyBkb3duLi4uICoqKgorKioqIG1rZnMg ZmFpbGVkOiAtbCB2ZXJzaW9uPTIgKioqCiAKLWRpcnR5IGxvZworLS0tIG1rZnM9dmVyc2lvbj0y LHN1PTY0aywgbW50PWxvZ2JzaXplPTY0aywgc3luYz1zeW5jIC0tLQogCi0qKiogbW91bnQgd2l0 aCByZXBsYXkgKioqCisqKiogbWtmcyAqKioKIAogCi0qKiogbHMgU0NSQVRDSF9NTlQgKioqCisq KiogbWtmcyBmYWlsZWQ6IC1sIHZlcnNpb249MixzdT02NGsgKioqCiAKLTAwCi0wMQotMDIKLTAz Ci0wNAotMDUKLTA2Ci0wNwotMDgKLTA5Ci0xMAotMTEKLTEyCi0xMwotMTQKLTE1Ci0xNgotMTcK LTE4Ci0xOQotMjAKLTIxCi0yMgotMjMKLTI0Ci0yNQotMjYKLTI3Ci0yOAotMjkKLTMwCi0zMQot MzIKLTMzCi0zNAotMzUKLTM2Ci0zNwotMzgKLTM5Ci00MAotNDEKLTQyCi00MwotNDQKLTQ1Ci00 NgotNDcKLTQ4Ci00OQotNTAKLTUxCi01MgotNTMKLTU0Ci01NQotNTYKLTU3Ci01OAotNTkKLTYw Ci02MQotNjIKLTYzCi02NAotNjUKLTY2Ci02NwotNjgKLTY5Ci03MAotNzEKLTcyCi03MwotNzQK LTc1Ci03NgotNzcKLTc4Ci03OQotODAKLTgxCi04MgotODMKLTg0Ci04NQotODYKLTg3Ci04OAot ODkKLTkwCi05MQotOTIKLTkzCi05NAotOTUKLTk2Ci05NwotOTgKLTk5CistLS0gbWtmcz12ZXJz aW9uPTIsIG1udD1sb2dic2l6ZT0xMjhrLCBzeW5jPXN5bmMgLS0tCiAKLSoqKiB1bm1vdW50ICoq KgorKioqIG1rZnMgKioqCiAKIAotKioqIGxvZ3ByaW50IGFmdGVyIG1vdW50IGFuZCByZXBsYXku Li4gKioqCisqKiogbWtmcyBmYWlsZWQ6IC1sIHZlcnNpb249MiAqKioKIAotY2xlYW4gbG9nCist LS0gbWtmcz12ZXJzaW9uPTIsc3U9MTI4aywgbW50PWxvZ2JzaXplPTEyOGssIHN5bmM9c3luYyAt LS0KIAotKioqIGZpbGVzeXN0ZW0gaXMgY2hlY2tlZCBvayAqKioKKyoqKiBta2ZzICoqKgogCi0t LS0gbWtmcz12ZXJzaW9uPTIsc3U9MzI3NjgsIG1udD1sb2dic2l6ZT02NGssIHN5bmM9c3luYyAt LS0KKworKioqIG1rZnMgZmFpbGVkOiAtbCB2ZXJzaW9uPTIsc3U9MTI4ayAqKioKKworLS0tIG1r ZnM9dmVyc2lvbj0yLCBtbnQ9bG9nYnNpemU9MjU2aywgc3luYz1zeW5jIC0tLQogCiAqKiogbWtm cyAqKioKIAogCi0qKiogbW91bnQgKioqCisqKiogbWtmcyBmYWlsZWQ6IC1sIHZlcnNpb249MiAq KioKIAorLS0tIG1rZnM9dmVyc2lvbj0yLHN1PTI1NmssIG1udD1sb2dic2l6ZT0yNTZrLCBzeW5j PXN5bmMgLS0tCiAKLSoqKiBscyBTQ1JBVENIX01OVCAqKioKKyoqKiBta2ZzICoqKgogCi0wMAot MDEKLTAyCi0wMwotMDQKLTA1Ci0wNgotMDcKLTA4Ci0wOQotMTAKLTExCi0xMgotMTMKLTE0Ci0x NQotMTYKLTE3Ci0xOAotMTkKLTIwCi0yMQotMjIKLTIzCi0yNAotMjUKLTI2Ci0yNwotMjgKLTI5 Ci0zMAotMzEKLTMyCi0zMwotMzQKLTM1Ci0zNgotMzcKLTM4Ci0zOQotNDAKLTQxCi00MgotNDMK LTQ0Ci00NQotNDYKLTQ3Ci00OAotNDkKLTUwCi01MQotNTIKLTUzCi01NAotNTUKLTU2Ci01Nwot NTgKLTU5Ci02MAotNjEKLTYyCi02MwotNjQKLTY1Ci02NgotNjcKLTY4Ci02OQotNzAKLTcxCi03 MgotNzMKLTc0Ci03NQotNzYKLTc3Ci03OAotNzkKLTgwCi04MQotODIKLTgzCi04NAotODUKLTg2 Ci04NwotODgKLTg5Ci05MAotOTEKLTkyCi05MwotOTQKLTk1Ci05NgotOTcKLTk4Ci05OQotCi0q KiogZ29kb3duICoqKgotCi0KLSoqKiB1bm1vdW50ICoqKgotCi0KLSoqKiBsb2dwcmludCBhZnRl ciBnb2luZyBkb3duLi4uICoqKgotCi1kaXJ0eSBsb2cKLQotKioqIG1vdW50IHdpdGggcmVwbGF5 ICoqKgotCi0KLSoqKiBscyBTQ1JBVENIX01OVCAqKioKLQotMDAKLTAxCi0wMgotMDMKLTA0Ci0w NQotMDYKLTA3Ci0wOAotMDkKLTEwCi0xMQotMTIKLTEzCi0xNAotMTUKLTE2Ci0xNwotMTgKLTE5 Ci0yMAotMjEKLTIyCi0yMwotMjQKLTI1Ci0yNgotMjcKLTI4Ci0yOQotMzAKLTMxCi0zMgotMzMK LTM0Ci0zNQotMzYKLTM3Ci0zOAotMzkKLTQwCi00MQotNDIKLTQzCi00NAotNDUKLTQ2Ci00Nwot NDgKLTQ5Ci01MAotNTEKLTUyCi01MwotNTQKLTU1Ci01NgotNTcKLTU4Ci01OQotNjAKLTYxCi02 MgotNjMKLTY0Ci02NQotNjYKLTY3Ci02OAotNjkKLTcwCi03MQotNzIKLTczCi03NAotNzUKLTc2 Ci03NwotNzgKLTc5Ci04MAotODEKLTgyCi04MwotODQKLTg1Ci04NgotODcKLTg4Ci04OQotOTAK LTkxCi05MgotOTMKLTk0Ci05NQotOTYKLTk3Ci05OAotOTkKLQotKioqIHVubW91bnQgKioqCi0K LQotKioqIGxvZ3ByaW50IGFmdGVyIG1vdW50IGFuZCByZXBsYXkuLi4gKioqCi0KLWNsZWFuIGxv ZwotCi0qKiogZmlsZXN5c3RlbSBpcyBjaGVja2VkIG9rICoqKgotCi0tLS0gbWtmcz12ZXJzaW9u PTIsIG1udD1sb2dic2l6ZT02NGssIHN5bmM9c3luYyAtLS0KLQotKioqIG1rZnMgKioqCi0KLQot KioqIG1vdW50ICoqKgotCi0KLSoqKiBscyBTQ1JBVENIX01OVCAqKioKLQotMDAKLTAxCi0wMgot MDMKLTA0Ci0wNQotMDYKLTA3Ci0wOAotMDkKLTEwCi0xMQotMTIKLTEzCi0xNAotMTUKLTE2Ci0x NwotMTgKLTE5Ci0yMAotMjEKLTIyCi0yMwotMjQKLTI1Ci0yNgotMjcKLTI4Ci0yOQotMzAKLTMx Ci0zMgotMzMKLTM0Ci0zNQotMzYKLTM3Ci0zOAotMzkKLTQwCi00MQotNDIKLTQzCi00NAotNDUK LTQ2Ci00NwotNDgKLTQ5Ci01MAotNTEKLTUyCi01MwotNTQKLTU1Ci01NgotNTcKLTU4Ci01OQot NjAKLTYxCi02MgotNjMKLTY0Ci02NQotNjYKLTY3Ci02OAotNjkKLTcwCi03MQotNzIKLTczCi03 NAotNzUKLTc2Ci03NwotNzgKLTc5Ci04MAotODEKLTgyCi04MwotODQKLTg1Ci04NgotODcKLTg4 Ci04OQotOTAKLTkxCi05MgotOTMKLTk0Ci05NQotOTYKLTk3Ci05OAotOTkKLQotKioqIGdvZG93 biAqKioKLQotCi0qKiogdW5tb3VudCAqKioKLQotCi0qKiogbG9ncHJpbnQgYWZ0ZXIgZ29pbmcg ZG93bi4uLiAqKioKLQotZGlydHkgbG9nCi0KLSoqKiBtb3VudCB3aXRoIHJlcGxheSAqKioKLQot Ci0qKiogbHMgU0NSQVRDSF9NTlQgKioqCi0KLTAwCi0wMQotMDIKLTAzCi0wNAotMDUKLTA2Ci0w NwotMDgKLTA5Ci0xMAotMTEKLTEyCi0xMwotMTQKLTE1Ci0xNgotMTcKLTE4Ci0xOQotMjAKLTIx Ci0yMgotMjMKLTI0Ci0yNQotMjYKLTI3Ci0yOAotMjkKLTMwCi0zMQotMzIKLTMzCi0zNAotMzUK LTM2Ci0zNwotMzgKLTM5Ci00MAotNDEKLTQyCi00MwotNDQKLTQ1Ci00NgotNDcKLTQ4Ci00OQot NTAKLTUxCi01MgotNTMKLTU0Ci01NQotNTYKLTU3Ci01OAotNTkKLTYwCi02MQotNjIKLTYzCi02 NAotNjUKLTY2Ci02NwotNjgKLTY5Ci03MAotNzEKLTcyCi03MwotNzQKLTc1Ci03NgotNzcKLTc4 Ci03OQotODAKLTgxCi04MgotODMKLTg0Ci04NQotODYKLTg3Ci04OAotODkKLTkwCi05MQotOTIK LTkzCi05NAotOTUKLTk2Ci05NwotOTgKLTk5Ci0KLSoqKiB1bm1vdW50ICoqKgotCi0KLSoqKiBs b2dwcmludCBhZnRlciBtb3VudCBhbmQgcmVwbGF5Li4uICoqKgotCi1jbGVhbiBsb2cKLQotKioq IGZpbGVzeXN0ZW0gaXMgY2hlY2tlZCBvayAqKioKLQotLS0tIG1rZnM9dmVyc2lvbj0yLHN1PTY0 aywgbW50PWxvZ2JzaXplPTY0aywgc3luYz1zeW5jIC0tLQotCi0qKiogbWtmcyAqKioKLQotCi0q KiogbW91bnQgKioqCi0KLQotKioqIGxzIFNDUkFUQ0hfTU5UICoqKgotCi0wMAotMDEKLTAyCi0w MwotMDQKLTA1Ci0wNgotMDcKLTA4Ci0wOQotMTAKLTExCi0xMgotMTMKLTE0Ci0xNQotMTYKLTE3 Ci0xOAotMTkKLTIwCi0yMQotMjIKLTIzCi0yNAotMjUKLTI2Ci0yNwotMjgKLTI5Ci0zMAotMzEK LTMyCi0zMwotMzQKLTM1Ci0zNgotMzcKLTM4Ci0zOQotNDAKLTQxCi00MgotNDMKLTQ0Ci00NQot NDYKLTQ3Ci00OAotNDkKLTUwCi01MQotNTIKLTUzCi01NAotNTUKLTU2Ci01NwotNTgKLTU5Ci02 MAotNjEKLTYyCi02MwotNjQKLTY1Ci02NgotNjcKLTY4Ci02OQotNzAKLTcxCi03MgotNzMKLTc0 Ci03NQotNzYKLTc3Ci03OAotNzkKLTgwCi04MQotODIKLTgzCi04NAotODUKLTg2Ci04NwotODgK LTg5Ci05MAotOTEKLTkyCi05MwotOTQKLTk1Ci05NgotOTcKLTk4Ci05OQotCi0qKiogZ29kb3du ICoqKgotCi0KLSoqKiB1bm1vdW50ICoqKgotCi0KLSoqKiBsb2dwcmludCBhZnRlciBnb2luZyBk b3duLi4uICoqKgotCi1kaXJ0eSBsb2cKLQotKioqIG1vdW50IHdpdGggcmVwbGF5ICoqKgotCi0K LSoqKiBscyBTQ1JBVENIX01OVCAqKioKLQotMDAKLTAxCi0wMgotMDMKLTA0Ci0wNQotMDYKLTA3 Ci0wOAotMDkKLTEwCi0xMQotMTIKLTEzCi0xNAotMTUKLTE2Ci0xNwotMTgKLTE5Ci0yMAotMjEK LTIyCi0yMwotMjQKLTI1Ci0yNgotMjcKLTI4Ci0yOQotMzAKLTMxCi0zMgotMzMKLTM0Ci0zNQot MzYKLTM3Ci0zOAotMzkKLTQwCi00MQotNDIKLTQzCi00NAotNDUKLTQ2Ci00NwotNDgKLTQ5Ci01 MAotNTEKLTUyCi01MwotNTQKLTU1Ci01NgotNTcKLTU4Ci01OQotNjAKLTYxCi02MgotNjMKLTY0 Ci02NQotNjYKLTY3Ci02OAotNjkKLTcwCi03MQotNzIKLTczCi03NAotNzUKLTc2Ci03NwotNzgK LTc5Ci04MAotODEKLTgyCi04MwotODQKLTg1Ci04NgotODcKLTg4Ci04OQotOTAKLTkxCi05Mgot OTMKLTk0Ci05NQotOTYKLTk3Ci05OAotOTkKLQotKioqIHVubW91bnQgKioqCi0KLQotKioqIGxv Z3ByaW50IGFmdGVyIG1vdW50IGFuZCByZXBsYXkuLi4gKioqCi0KLWNsZWFuIGxvZwotCi0qKiog ZmlsZXN5c3RlbSBpcyBjaGVja2VkIG9rICoqKgotCi0tLS0gbWtmcz12ZXJzaW9uPTIsIG1udD1s b2dic2l6ZT0xMjhrLCBzeW5jPXN5bmMgLS0tCi0KLSoqKiBta2ZzICoqKgotCi0KLSoqKiBtb3Vu dCAqKioKLQotCi0qKiogbHMgU0NSQVRDSF9NTlQgKioqCi0KLTAwCi0wMQotMDIKLTAzCi0wNAot MDUKLTA2Ci0wNwotMDgKLTA5Ci0xMAotMTEKLTEyCi0xMwotMTQKLTE1Ci0xNgotMTcKLTE4Ci0x OQotMjAKLTIxCi0yMgotMjMKLTI0Ci0yNQotMjYKLTI3Ci0yOAotMjkKLTMwCi0zMQotMzIKLTMz Ci0zNAotMzUKLTM2Ci0zNwotMzgKLTM5Ci00MAotNDEKLTQyCi00MwotNDQKLTQ1Ci00NgotNDcK LTQ4Ci00OQotNTAKLTUxCi01MgotNTMKLTU0Ci01NQotNTYKLTU3Ci01OAotNTkKLTYwCi02MQot NjIKLTYzCi02NAotNjUKLTY2Ci02NwotNjgKLTY5Ci03MAotNzEKLTcyCi03MwotNzQKLTc1Ci03 NgotNzcKLTc4Ci03OQotODAKLTgxCi04MgotODMKLTg0Ci04NQotODYKLTg3Ci04OAotODkKLTkw Ci05MQotOTIKLTkzCi05NAotOTUKLTk2Ci05NwotOTgKLTk5Ci0KLSoqKiBnb2Rvd24gKioqCi0K LQotKioqIHVubW91bnQgKioqCi0KLQotKioqIGxvZ3ByaW50IGFmdGVyIGdvaW5nIGRvd24uLi4g KioqCi0KLWRpcnR5IGxvZwotCi0qKiogbW91bnQgd2l0aCByZXBsYXkgKioqCi0KLQotKioqIGxz IFNDUkFUQ0hfTU5UICoqKgotCi0wMAotMDEKLTAyCi0wMwotMDQKLTA1Ci0wNgotMDcKLTA4Ci0w OQotMTAKLTExCi0xMgotMTMKLTE0Ci0xNQotMTYKLTE3Ci0xOAotMTkKLTIwCi0yMQotMjIKLTIz Ci0yNAotMjUKLTI2Ci0yNwotMjgKLTI5Ci0zMAotMzEKLTMyCi0zMwotMzQKLTM1Ci0zNgotMzcK LTM4Ci0zOQotNDAKLTQxCi00MgotNDMKLTQ0Ci00NQotNDYKLTQ3Ci00OAotNDkKLTUwCi01MQot NTIKLTUzCi01NAotNTUKLTU2Ci01NwotNTgKLTU5Ci02MAotNjEKLTYyCi02MwotNjQKLTY1Ci02 NgotNjcKLTY4Ci02OQotNzAKLTcxCi03MgotNzMKLTc0Ci03NQotNzYKLTc3Ci03OAotNzkKLTgw Ci04MQotODIKLTgzCi04NAotODUKLTg2Ci04NwotODgKLTg5Ci05MAotOTEKLTkyCi05MwotOTQK LTk1Ci05NgotOTcKLTk4Ci05OQotCi0qKiogdW5tb3VudCAqKioKLQotCi0qKiogbG9ncHJpbnQg YWZ0ZXIgbW91bnQgYW5kIHJlcGxheS4uLiAqKioKLQotY2xlYW4gbG9nCi0KLSoqKiBmaWxlc3lz dGVtIGlzIGNoZWNrZWQgb2sgKioqCi0KLS0tLSBta2ZzPXZlcnNpb249MixzdT0xMjhrLCBtbnQ9 bG9nYnNpemU9MTI4aywgc3luYz1zeW5jIC0tLQotCi0qKiogbWtmcyAqKioKLQotCi0qKiogbW91 bnQgKioqCi0KLQotKioqIGxzIFNDUkFUQ0hfTU5UICoqKgotCi0wMAotMDEKLTAyCi0wMwotMDQK LTA1Ci0wNgotMDcKLTA4Ci0wOQotMTAKLTExCi0xMgotMTMKLTE0Ci0xNQotMTYKLTE3Ci0xOAot MTkKLTIwCi0yMQotMjIKLTIzCi0yNAotMjUKLTI2Ci0yNwotMjgKLTI5Ci0zMAotMzEKLTMyCi0z MwotMzQKLTM1Ci0zNgotMzcKLTM4Ci0zOQotNDAKLTQxCi00MgotNDMKLTQ0Ci00NQotNDYKLTQ3 Ci00OAotNDkKLTUwCi01MQotNTIKLTUzCi01NAotNTUKLTU2Ci01NwotNTgKLTU5Ci02MAotNjEK LTYyCi02MwotNjQKLTY1Ci02NgotNjcKLTY4Ci02OQotNzAKLTcxCi03MgotNzMKLTc0Ci03NQot NzYKLTc3Ci03OAotNzkKLTgwCi04MQotODIKLTgzCi04NAotODUKLTg2Ci04NwotODgKLTg5Ci05 MAotOTEKLTkyCi05MwotOTQKLTk1Ci05NgotOTcKLTk4Ci05OQotCi0qKiogZ29kb3duICoqKgot Ci0KLSoqKiB1bm1vdW50ICoqKgotCi0KLSoqKiBsb2dwcmludCBhZnRlciBnb2luZyBkb3duLi4u ICoqKgotCi1kaXJ0eSBsb2cKLQotKioqIG1vdW50IHdpdGggcmVwbGF5ICoqKgotCi0KLSoqKiBs cyBTQ1JBVENIX01OVCAqKioKLQotMDAKLTAxCi0wMgotMDMKLTA0Ci0wNQotMDYKLTA3Ci0wOAot MDkKLTEwCi0xMQotMTIKLTEzCi0xNAotMTUKLTE2Ci0xNwotMTgKLTE5Ci0yMAotMjEKLTIyCi0y MwotMjQKLTI1Ci0yNgotMjcKLTI4Ci0yOQotMzAKLTMxCi0zMgotMzMKLTM0Ci0zNQotMzYKLTM3 Ci0zOAotMzkKLTQwCi00MQotNDIKLTQzCi00NAotNDUKLTQ2Ci00NwotNDgKLTQ5Ci01MAotNTEK LTUyCi01MwotNTQKLTU1Ci01NgotNTcKLTU4Ci01OQotNjAKLTYxCi02MgotNjMKLTY0Ci02NQot NjYKLTY3Ci02OAotNjkKLTcwCi03MQotNzIKLTczCi03NAotNzUKLTc2Ci03NwotNzgKLTc5Ci04 MAotODEKLTgyCi04MwotODQKLTg1Ci04NgotODcKLTg4Ci04OQotOTAKLTkxCi05MgotOTMKLTk0 Ci05NQotOTYKLTk3Ci05OAotOTkKLQotKioqIHVubW91bnQgKioqCi0KLQotKioqIGxvZ3ByaW50 IGFmdGVyIG1vdW50IGFuZCByZXBsYXkuLi4gKioqCi0KLWNsZWFuIGxvZwotCi0qKiogZmlsZXN5 c3RlbSBpcyBjaGVja2VkIG9rICoqKgotCi0tLS0gbWtmcz12ZXJzaW9uPTIsIG1udD1sb2dic2l6 ZT0yNTZrLCBzeW5jPXN5bmMgLS0tCi0KLSoqKiBta2ZzICoqKgotCi0KLSoqKiBtb3VudCAqKioK LQotCi0qKiogbHMgU0NSQVRDSF9NTlQgKioqCi0KLTAwCi0wMQotMDIKLTAzCi0wNAotMDUKLTA2 Ci0wNwotMDgKLTA5Ci0xMAotMTEKLTEyCi0xMwotMTQKLTE1Ci0xNgotMTcKLTE4Ci0xOQotMjAK LTIxCi0yMgotMjMKLTI0Ci0yNQotMjYKLTI3Ci0yOAotMjkKLTMwCi0zMQotMzIKLTMzCi0zNAot MzUKLTM2Ci0zNwotMzgKLTM5Ci00MAotNDEKLTQyCi00MwotNDQKLTQ1Ci00NgotNDcKLTQ4Ci00 OQotNTAKLTUxCi01MgotNTMKLTU0Ci01NQotNTYKLTU3Ci01OAotNTkKLTYwCi02MQotNjIKLTYz Ci02NAotNjUKLTY2Ci02NwotNjgKLTY5Ci03MAotNzEKLTcyCi03MwotNzQKLTc1Ci03NgotNzcK LTc4Ci03OQotODAKLTgxCi04MgotODMKLTg0Ci04NQotODYKLTg3Ci04OAotODkKLTkwCi05MQot OTIKLTkzCi05NAotOTUKLTk2Ci05NwotOTgKLTk5Ci0KLSoqKiBnb2Rvd24gKioqCi0KLQotKioq IHVubW91bnQgKioqCi0KLQotKioqIGxvZ3ByaW50IGFmdGVyIGdvaW5nIGRvd24uLi4gKioqCi0K LWRpcnR5IGxvZwotCi0qKiogbW91bnQgd2l0aCByZXBsYXkgKioqCi0KLQotKioqIGxzIFNDUkFU Q0hfTU5UICoqKgotCi0wMAotMDEKLTAyCi0wMwotMDQKLTA1Ci0wNgotMDcKLTA4Ci0wOQotMTAK LTExCi0xMgotMTMKLTE0Ci0xNQotMTYKLTE3Ci0xOAotMTkKLTIwCi0yMQotMjIKLTIzCi0yNAot MjUKLTI2Ci0yNwotMjgKLTI5Ci0zMAotMzEKLTMyCi0zMwotMzQKLTM1Ci0zNgotMzcKLTM4Ci0z OQotNDAKLTQxCi00MgotNDMKLTQ0Ci00NQotNDYKLTQ3Ci00OAotNDkKLTUwCi01MQotNTIKLTUz Ci01NAotNTUKLTU2Ci01NwotNTgKLTU5Ci02MAotNjEKLTYyCi02MwotNjQKLTY1Ci02NgotNjcK LTY4Ci02OQotNzAKLTcxCi03MgotNzMKLTc0Ci03NQotNzYKLTc3Ci03OAotNzkKLTgwCi04MQot ODIKLTgzCi04NAotODUKLTg2Ci04NwotODgKLTg5Ci05MAotOTEKLTkyCi05MwotOTQKLTk1Ci05 NgotOTcKLTk4Ci05OQotCi0qKiogdW5tb3VudCAqKioKLQotCi0qKiogbG9ncHJpbnQgYWZ0ZXIg bW91bnQgYW5kIHJlcGxheS4uLiAqKioKLQotY2xlYW4gbG9nCi0KLSoqKiBmaWxlc3lzdGVtIGlz IGNoZWNrZWQgb2sgKioqCi0KLS0tLSBta2ZzPXZlcnNpb249MixzdT0yNTZrLCBtbnQ9bG9nYnNp emU9MjU2aywgc3luYz1zeW5jIC0tLQotCi0qKiogbWtmcyAqKioKLQotCi0qKiogbW91bnQgKioq Ci0KLQotKioqIGxzIFNDUkFUQ0hfTU5UICoqKgotCi0wMAotMDEKLTAyCi0wMwotMDQKLTA1Ci0w NgotMDcKLTA4Ci0wOQotMTAKLTExCi0xMgotMTMKLTE0Ci0xNQotMTYKLTE3Ci0xOAotMTkKLTIw Ci0yMQotMjIKLTIzCi0yNAotMjUKLTI2Ci0yNwotMjgKLTI5Ci0zMAotMzEKLTMyCi0zMwotMzQK LTM1Ci0zNgotMzcKLTM4Ci0zOQotNDAKLTQxCi00MgotNDMKLTQ0Ci00NQotNDYKLTQ3Ci00OAot NDkKLTUwCi01MQotNTIKLTUzCi01NAotNTUKLTU2Ci01NwotNTgKLTU5Ci02MAotNjEKLTYyCi02 MwotNjQKLTY1Ci02NgotNjcKLTY4Ci02OQotNzAKLTcxCi03MgotNzMKLTc0Ci03NQotNzYKLTc3 Ci03OAotNzkKLTgwCi04MQotODIKLTgzCi04NAotODUKLTg2Ci04NwotODgKLTg5Ci05MAotOTEK LTkyCi05MwotOTQKLTk1Ci05NgotOTcKLTk4Ci05OQotCi0qKiogZ29kb3duICoqKgotCi0KLSoq KiB1bm1vdW50ICoqKgotCi0KLSoqKiBsb2dwcmludCBhZnRlciBnb2luZyBkb3duLi4uICoqKgot Ci1kaXJ0eSBsb2cKLQotKioqIG1vdW50IHdpdGggcmVwbGF5ICoqKgotCi0KLSoqKiBscyBTQ1JB VENIX01OVCAqKioKLQotMDAKLTAxCi0wMgotMDMKLTA0Ci0wNQotMDYKLTA3Ci0wOAotMDkKLTEw Ci0xMQotMTIKLTEzCi0xNAotMTUKLTE2Ci0xNwotMTgKLTE5Ci0yMAotMjEKLTIyCi0yMwotMjQK LTI1Ci0yNgotMjcKLTI4Ci0yOQotMzAKLTMxCi0zMgotMzMKLTM0Ci0zNQotMzYKLTM3Ci0zOAot MzkKLTQwCi00MQotNDIKLTQzCi00NAotNDUKLTQ2Ci00NwotNDgKLTQ5Ci01MAotNTEKLTUyCi01 MwotNTQKLTU1Ci01NgotNTcKLTU4Ci01OQotNjAKLTYxCi02MgotNjMKLTY0Ci02NQotNjYKLTY3 Ci02OAotNjkKLTcwCi03MQotNzIKLTczCi03NAotNzUKLTc2Ci03NwotNzgKLTc5Ci04MAotODEK LTgyCi04MwotODQKLTg1Ci04NgotODcKLTg4Ci04OQotOTAKLTkxCi05MgotOTMKLTk0Ci05NQot OTYKLTk3Ci05OAotOTkKLQotKioqIHVubW91bnQgKioqCi0KLQotKioqIGxvZ3ByaW50IGFmdGVy IG1vdW50IGFuZCByZXBsYXkuLi4gKioqCi0KLWNsZWFuIGxvZwotCi0qKiogZmlsZXN5c3RlbSBp cyBjaGVja2VkIG9rICoqKgotCi0tLS0gbWtmcz12ZXJzaW9uPTIsIG1udD1sb2dic2l6ZT0zMmss IHN5bmM9bm9zeW5jIC0tLQotCi0qKiogbWtmcyAqKioKLQotCi0qKiogbW91bnQgKioqCi0KLQot KioqIGxzIFNDUkFUQ0hfTU5UICoqKgotCi0wMAotMDEKLTAyCi0wMwotMDQKLTA1Ci0wNgotMDcK LTA4Ci0wOQotMTAKLTExCi0xMgotMTMKLTE0Ci0xNQotMTYKLTE3Ci0xOAotMTkKLTIwCi0yMQot MjIKLTIzCi0yNAotMjUKLTI2Ci0yNwotMjgKLTI5Ci0zMAotMzEKLTMyCi0zMwotMzQKLTM1Ci0z NgotMzcKLTM4Ci0zOQotNDAKLTQxCi00MgotNDMKLTQ0Ci00NQotNDYKLTQ3Ci00OAotNDkKLTUw Ci01MQotNTIKLTUzCi01NAotNTUKLTU2Ci01NwotNTgKLTU5Ci02MAotNjEKLTYyCi02MwotNjQK LTY1Ci02NgotNjcKLTY4Ci02OQotNzAKLTcxCi03MgotNzMKLTc0Ci03NQotNzYKLTc3Ci03OAot NzkKLTgwCi04MQotODIKLTgzCi04NAotODUKLTg2Ci04NwotODgKLTg5Ci05MAotOTEKLTkyCi05 MwotOTQKLTk1Ci05NgotOTcKLTk4Ci05OQotCi0qKiogZ29kb3duICoqKgotCi0KLSoqKiB1bm1v dW50ICoqKgotCi0KLSoqKiBsb2dwcmludCBhZnRlciBnb2luZyBkb3duLi4uICoqKgotCi1kaXJ0 eSBsb2cKLQotKioqIG1vdW50IHdpdGggcmVwbGF5ICoqKgotCi0KLSoqKiBscyBTQ1JBVENIX01O VCAqKioKLQotMDAKLTAxCi0wMgotMDMKLTA0Ci0wNQotMDYKLTA3Ci0wOAotMDkKLTEwCi0xMQot MTIKLTEzCi0xNAotMTUKLTE2Ci0xNwotMTgKLTE5Ci0yMAotMjEKLTIyCi0yMwotMjQKLTI1Ci0y NgotMjcKLTI4Ci0yOQotMzAKLTMxCi0zMgotMzMKLTM0Ci0zNQotMzYKLTM3Ci0zOAotMzkKLTQw Ci00MQotNDIKLTQzCi00NAotNDUKLTQ2Ci00NwotNDgKLTQ5Ci01MAotNTEKLTUyCi01MwotNTQK LTU1Ci01NgotNTcKLTU4Ci01OQotNjAKLTYxCi02MgotNjMKLTY0Ci02NQotNjYKLTY3Ci02OAot NjkKLTcwCi03MQotNzIKLTczCi03NAotNzUKLTc2Ci03NwotNzgKLTc5Ci04MAotODEKLTgyCi04 MwotODQKLTg1Ci04NgotODcKLTg4Ci04OQotOTAKLTkxCi05MgotOTMKLTk0Ci05NQotOTYKLTk3 Ci05OAotOTkKLQotKioqIHVubW91bnQgKioqCi0KLQotKioqIGxvZ3ByaW50IGFmdGVyIG1vdW50 IGFuZCByZXBsYXkuLi4gKioqCi0KLWNsZWFuIGxvZwotCi0qKiogZmlsZXN5c3RlbSBpcyBjaGVj a2VkIG9rICoqKgotCi0tLS0gbWtmcz12ZXJzaW9uPTIsc3U9NDA5NiwgbW50PWxvZ2JzaXplPTMy aywgc3luYz1ub3N5bmMgLS0tCi0KLSoqKiBta2ZzICoqKgotCi0KLSoqKiBtb3VudCAqKioKLQot Ci0qKiogbHMgU0NSQVRDSF9NTlQgKioqCi0KLTAwCi0wMQotMDIKLTAzCi0wNAotMDUKLTA2Ci0w NwotMDgKLTA5Ci0xMAotMTEKLTEyCi0xMwotMTQKLTE1Ci0xNgotMTcKLTE4Ci0xOQotMjAKLTIx Ci0yMgotMjMKLTI0Ci0yNQotMjYKLTI3Ci0yOAotMjkKLTMwCi0zMQotMzIKLTMzCi0zNAotMzUK LTM2Ci0zNwotMzgKLTM5Ci00MAotNDEKLTQyCi00MwotNDQKLTQ1Ci00NgotNDcKLTQ4Ci00OQot NTAKLTUxCi01MgotNTMKLTU0Ci01NQotNTYKLTU3Ci01OAotNTkKLTYwCi02MQotNjIKLTYzCi02 NAotNjUKLTY2Ci02NwotNjgKLTY5Ci03MAotNzEKLTcyCi03MwotNzQKLTc1Ci03NgotNzcKLTc4 Ci03OQotODAKLTgxCi04MgotODMKLTg0Ci04NQotODYKLTg3Ci04OAotODkKLTkwCi05MQotOTIK LTkzCi05NAotOTUKLTk2Ci05NwotOTgKLTk5Ci0KLSoqKiBnb2Rvd24gKioqCi0KLQotKioqIHVu bW91bnQgKioqCi0KLQotKioqIGxvZ3ByaW50IGFmdGVyIGdvaW5nIGRvd24uLi4gKioqCi0KLWRp cnR5IGxvZwotCi0qKiogbW91bnQgd2l0aCByZXBsYXkgKioqCi0KLQotKioqIGxzIFNDUkFUQ0hf TU5UICoqKgotCi0wMAotMDEKLTAyCi0wMwotMDQKLTA1Ci0wNgotMDcKLTA4Ci0wOQotMTAKLTEx Ci0xMgotMTMKLTE0Ci0xNQotMTYKLTE3Ci0xOAotMTkKLTIwCi0yMQotMjIKLTIzCi0yNAotMjUK LTI2Ci0yNwotMjgKLTI5Ci0zMAotMzEKLTMyCi0zMwotMzQKLTM1Ci0zNgotMzcKLTM4Ci0zOQot NDAKLTQxCi00MgotNDMKLTQ0Ci00NQotNDYKLTQ3Ci00OAotNDkKLTUwCi01MQotNTIKLTUzCi01 NAotNTUKLTU2Ci01NwotNTgKLTU5Ci02MAotNjEKLTYyCi02MwotNjQKLTY1Ci02NgotNjcKLTY4 Ci02OQotNzAKLTcxCi03MgotNzMKLTc0Ci03NQotNzYKLTc3Ci03OAotNzkKLTgwCi04MQotODIK LTgzCi04NAotODUKLTg2Ci04NwotODgKLTg5Ci05MAotOTEKLTkyCi05MwotOTQKLTk1Ci05Ngot OTcKLTk4Ci05OQotCi0qKiogdW5tb3VudCAqKioKLQotCi0qKiogbG9ncHJpbnQgYWZ0ZXIgbW91 bnQgYW5kIHJlcGxheS4uLiAqKioKLQotY2xlYW4gbG9nCi0KLSoqKiBmaWxlc3lzdGVtIGlzIGNo ZWNrZWQgb2sgKioqCi0KLS0tLSBta2ZzPXZlcnNpb249MixzdT0zMjc2OCwgbW50PWxvZ2JzaXpl PTMyaywgc3luYz1ub3N5bmMgLS0tCi0KLSoqKiBta2ZzICoqKgotCi0KLSoqKiBtb3VudCAqKioK LQotCi0qKiogbHMgU0NSQVRDSF9NTlQgKioqCi0KLTAwCi0wMQotMDIKLTAzCi0wNAotMDUKLTA2 Ci0wNwotMDgKLTA5Ci0xMAotMTEKLTEyCi0xMwotMTQKLTE1Ci0xNgotMTcKLTE4Ci0xOQotMjAK LTIxCi0yMgotMjMKLTI0Ci0yNQotMjYKLTI3Ci0yOAotMjkKLTMwCi0zMQotMzIKLTMzCi0zNAot MzUKLTM2Ci0zNwotMzgKLTM5Ci00MAotNDEKLTQyCi00MwotNDQKLTQ1Ci00NgotNDcKLTQ4Ci00 OQotNTAKLTUxCi01MgotNTMKLTU0Ci01NQotNTYKLTU3Ci01OAotNTkKLTYwCi02MQotNjIKLTYz Ci02NAotNjUKLTY2Ci02NwotNjgKLTY5Ci03MAotNzEKLTcyCi03MwotNzQKLTc1Ci03NgotNzcK LTc4Ci03OQotODAKLTgxCi04MgotODMKLTg0Ci04NQotODYKLTg3Ci04OAotODkKLTkwCi05MQot OTIKLTkzCi05NAotOTUKLTk2Ci05NwotOTgKLTk5Ci0KLSoqKiBnb2Rvd24gKioqCi0KLQotKioq IHVubW91bnQgKioqCi0KLQotKioqIGxvZ3ByaW50IGFmdGVyIGdvaW5nIGRvd24uLi4gKioqCi0K LWRpcnR5IGxvZwotCi0qKiogbW91bnQgd2l0aCByZXBsYXkgKioqCi0KLQotKioqIGxzIFNDUkFU Q0hfTU5UICoqKgotCi0wMAotMDEKLTAyCi0wMwotMDQKLTA1Ci0wNgotMDcKLTA4Ci0wOQotMTAK LTExCi0xMgotMTMKLTE0Ci0xNQotMTYKLTE3Ci0xOAotMTkKLTIwCi0yMQotMjIKLTIzCi0yNAot MjUKLTI2Ci0yNwotMjgKLTI5Ci0zMAotMzEKLTMyCi0zMwotMzQKLTM1Ci0zNgotMzcKLTM4Ci0z OQotNDAKLTQxCi00MgotNDMKLTQ0Ci00NQotNDYKLTQ3Ci00OAotNDkKLTUwCi01MQotNTIKLTUz Ci01NAotNTUKLTU2Ci01NwotNTgKLTU5Ci02MAotNjEKLTYyCi02MwotNjQKLTY1Ci02NgotNjcK LTY4Ci02OQotNzAKLTcxCi03MgotNzMKLTc0Ci03NQotNzYKLTc3Ci03OAotNzkKLTgwCi04MQot ODIKLTgzCi04NAotODUKLTg2Ci04NwotODgKLTg5Ci05MAotOTEKLTkyCi05MwotOTQKLTk1Ci05 NgotOTcKLTk4Ci05OQotCi0qKiogdW5tb3VudCAqKioKLQotCi0qKiogbG9ncHJpbnQgYWZ0ZXIg bW91bnQgYW5kIHJlcGxheS4uLiAqKioKLQotY2xlYW4gbG9nCi0KLSoqKiBmaWxlc3lzdGVtIGlz IGNoZWNrZWQgb2sgKioqCi0KLS0tLSBta2ZzPXZlcnNpb249MixzdT0zMjc2OCwgbW50PWxvZ2Jz aXplPTY0aywgc3luYz1ub3N5bmMgLS0tCi0KLSoqKiBta2ZzICoqKgotCi0KLSoqKiBtb3VudCAq KioKLQotCi0qKiogbHMgU0NSQVRDSF9NTlQgKioqCi0KLTAwCi0wMQotMDIKLTAzCi0wNAotMDUK LTA2Ci0wNwotMDgKLTA5Ci0xMAotMTEKLTEyCi0xMwotMTQKLTE1Ci0xNgotMTcKLTE4Ci0xOQot MjAKLTIxCi0yMgotMjMKLTI0Ci0yNQotMjYKLTI3Ci0yOAotMjkKLTMwCi0zMQotMzIKLTMzCi0z NAotMzUKLTM2Ci0zNwotMzgKLTM5Ci00MAotNDEKLTQyCi00MwotNDQKLTQ1Ci00NgotNDcKLTQ4 Ci00OQotNTAKLTUxCi01MgotNTMKLTU0Ci01NQotNTYKLTU3Ci01OAotNTkKLTYwCi02MQotNjIK LTYzCi02NAotNjUKLTY2Ci02NwotNjgKLTY5Ci03MAotNzEKLTcyCi03MwotNzQKLTc1Ci03Ngot NzcKLTc4Ci03OQotODAKLTgxCi04MgotODMKLTg0Ci04NQotODYKLTg3Ci04OAotODkKLTkwCi05 MQotOTIKLTkzCi05NAotOTUKLTk2Ci05NwotOTgKLTk5Ci0KLSoqKiBnb2Rvd24gKioqCi0KLQot KioqIHVubW91bnQgKioqCi0KLQotKioqIGxvZ3ByaW50IGFmdGVyIGdvaW5nIGRvd24uLi4gKioq Ci0KLWRpcnR5IGxvZwotCi0qKiogbW91bnQgd2l0aCByZXBsYXkgKioqCi0KLQotKioqIGxzIFND UkFUQ0hfTU5UICoqKgotCi0wMAotMDEKLTAyCi0wMwotMDQKLTA1Ci0wNgotMDcKLTA4Ci0wOQot MTAKLTExCi0xMgotMTMKLTE0Ci0xNQotMTYKLTE3Ci0xOAotMTkKLTIwCi0yMQotMjIKLTIzCi0y NAotMjUKLTI2Ci0yNwotMjgKLTI5Ci0zMAotMzEKLTMyCi0zMwotMzQKLTM1Ci0zNgotMzcKLTM4 Ci0zOQotNDAKLTQxCi00MgotNDMKLTQ0Ci00NQotNDYKLTQ3Ci00OAotNDkKLTUwCi01MQotNTIK LTUzCi01NAotNTUKLTU2Ci01NwotNTgKLTU5Ci02MAotNjEKLTYyCi02MwotNjQKLTY1Ci02Ngot NjcKLTY4Ci02OQotNzAKLTcxCi03MgotNzMKLTc0Ci03NQotNzYKLTc3Ci03OAotNzkKLTgwCi04 MQotODIKLTgzCi04NAotODUKLTg2Ci04NwotODgKLTg5Ci05MAotOTEKLTkyCi05MwotOTQKLTk1 Ci05NgotOTcKLTk4Ci05OQotCi0qKiogdW5tb3VudCAqKioKLQotCi0qKiogbG9ncHJpbnQgYWZ0 ZXIgbW91bnQgYW5kIHJlcGxheS4uLiAqKioKLQotY2xlYW4gbG9nCi0KLSoqKiBmaWxlc3lzdGVt IGlzIGNoZWNrZWQgb2sgKioqCi0KLS0tLSBta2ZzPXZlcnNpb249MiwgbW50PWxvZ2JzaXplPTY0 aywgc3luYz1ub3N5bmMgLS0tCi0KLSoqKiBta2ZzICoqKgotCi0KLSoqKiBtb3VudCAqKioKLQot Ci0qKiogbHMgU0NSQVRDSF9NTlQgKioqCi0KLTAwCi0wMQotMDIKLTAzCi0wNAotMDUKLTA2Ci0w NwotMDgKLTA5Ci0xMAotMTEKLTEyCi0xMwotMTQKLTE1Ci0xNgotMTcKLTE4Ci0xOQotMjAKLTIx Ci0yMgotMjMKLTI0Ci0yNQotMjYKLTI3Ci0yOAotMjkKLTMwCi0zMQotMzIKLTMzCi0zNAotMzUK LTM2Ci0zNwotMzgKLTM5Ci00MAotNDEKLTQyCi00MwotNDQKLTQ1Ci00NgotNDcKLTQ4Ci00OQot NTAKLTUxCi01MgotNTMKLTU0Ci01NQotNTYKLTU3Ci01OAotNTkKLTYwCi02MQotNjIKLTYzCi02 NAotNjUKLTY2Ci02NwotNjgKLTY5Ci03MAotNzEKLTcyCi03MwotNzQKLTc1Ci03NgotNzcKLTc4 Ci03OQotODAKLTgxCi04MgotODMKLTg0Ci04NQotODYKLTg3Ci04OAotODkKLTkwCi05MQotOTIK LTkzCi05NAotOTUKLTk2Ci05NwotOTgKLTk5Ci0KLSoqKiBnb2Rvd24gKioqCi0KLQotKioqIHVu bW91bnQgKioqCi0KLQotKioqIGxvZ3ByaW50IGFmdGVyIGdvaW5nIGRvd24uLi4gKioqCi0KLWRp cnR5IGxvZwotCi0qKiogbW91bnQgd2l0aCByZXBsYXkgKioqCi0KLQotKioqIGxzIFNDUkFUQ0hf TU5UICoqKgotCi0wMAotMDEKLTAyCi0wMwotMDQKLTA1Ci0wNgotMDcKLTA4Ci0wOQotMTAKLTEx Ci0xMgotMTMKLTE0Ci0xNQotMTYKLTE3Ci0xOAotMTkKLTIwCi0yMQotMjIKLTIzCi0yNAotMjUK LTI2Ci0yNwotMjgKLTI5Ci0zMAotMzEKLTMyCi0zMwotMzQKLTM1Ci0zNgotMzcKLTM4Ci0zOQot NDAKLTQxCi00MgotNDMKLTQ0Ci00NQotNDYKLTQ3Ci00OAotNDkKLTUwCi01MQotNTIKLTUzCi01 NAotNTUKLTU2Ci01NwotNTgKLTU5Ci02MAotNjEKLTYyCi02MwotNjQKLTY1Ci02NgotNjcKLTY4 Ci02OQotNzAKLTcxCi03MgotNzMKLTc0Ci03NQotNzYKLTc3Ci03OAotNzkKLTgwCi04MQotODIK LTgzCi04NAotODUKLTg2Ci04NwotODgKLTg5Ci05MAotOTEKLTkyCi05MwotOTQKLTk1Ci05Ngot OTcKLTk4Ci05OQotCi0qKiogdW5tb3VudCAqKioKLQotCi0qKiogbG9ncHJpbnQgYWZ0ZXIgbW91 bnQgYW5kIHJlcGxheS4uLiAqKioKLQotY2xlYW4gbG9nCi0KLSoqKiBmaWxlc3lzdGVtIGlzIGNo ZWNrZWQgb2sgKioqCi0KLS0tLSBta2ZzPXZlcnNpb249MixzdT02NGssIG1udD1sb2dic2l6ZT02 NGssIHN5bmM9bm9zeW5jIC0tLQotCi0qKiogbWtmcyAqKioKLQotCi0qKiogbW91bnQgKioqCi0K LQotKioqIGxzIFNDUkFUQ0hfTU5UICoqKgotCi0wMAotMDEKLTAyCi0wMwotMDQKLTA1Ci0wNgot MDcKLTA4Ci0wOQotMTAKLTExCi0xMgotMTMKLTE0Ci0xNQotMTYKLTE3Ci0xOAotMTkKLTIwCi0y MQotMjIKLTIzCi0yNAotMjUKLTI2Ci0yNwotMjgKLTI5Ci0zMAotMzEKLTMyCi0zMwotMzQKLTM1 Ci0zNgotMzcKLTM4Ci0zOQotNDAKLTQxCi00MgotNDMKLTQ0Ci00NQotNDYKLTQ3Ci00OAotNDkK LTUwCi01MQotNTIKLTUzCi01NAotNTUKLTU2Ci01NwotNTgKLTU5Ci02MAotNjEKLTYyCi02Mwot NjQKLTY1Ci02NgotNjcKLTY4Ci02OQotNzAKLTcxCi03MgotNzMKLTc0Ci03NQotNzYKLTc3Ci03 OAotNzkKLTgwCi04MQotODIKLTgzCi04NAotODUKLTg2Ci04NwotODgKLTg5Ci05MAotOTEKLTky Ci05MwotOTQKLTk1Ci05NgotOTcKLTk4Ci05OQotCi0qKiogZ29kb3duICoqKgotCi0KLSoqKiB1 bm1vdW50ICoqKgotCi0KLSoqKiBsb2dwcmludCBhZnRlciBnb2luZyBkb3duLi4uICoqKgotCi1k aXJ0eSBsb2cKLQotKioqIG1vdW50IHdpdGggcmVwbGF5ICoqKgotCi0KLSoqKiBscyBTQ1JBVENI X01OVCAqKioKLQotMDAKLTAxCi0wMgotMDMKLTA0Ci0wNQotMDYKLTA3Ci0wOAotMDkKLTEwCi0x MQotMTIKLTEzCi0xNAotMTUKLTE2Ci0xNwotMTgKLTE5Ci0yMAotMjEKLTIyCi0yMwotMjQKLTI1 Ci0yNgotMjcKLTI4Ci0yOQotMzAKLTMxCi0zMgotMzMKLTM0Ci0zNQotMzYKLTM3Ci0zOAotMzkK LTQwCi00MQotNDIKLTQzCi00NAotNDUKLTQ2Ci00NwotNDgKLTQ5Ci01MAotNTEKLTUyCi01Mwot NTQKLTU1Ci01NgotNTcKLTU4Ci01OQotNjAKLTYxCi02MgotNjMKLTY0Ci02NQotNjYKLTY3Ci02 OAotNjkKLTcwCi03MQotNzIKLTczCi03NAotNzUKLTc2Ci03NwotNzgKLTc5Ci04MAotODEKLTgy Ci04MwotODQKLTg1Ci04NgotODcKLTg4Ci04OQotOTAKLTkxCi05MgotOTMKLTk0Ci05NQotOTYK LTk3Ci05OAotOTkKLQotKioqIHVubW91bnQgKioqCi0KLQotKioqIGxvZ3ByaW50IGFmdGVyIG1v dW50IGFuZCByZXBsYXkuLi4gKioqCi0KLWNsZWFuIGxvZwotCi0qKiogZmlsZXN5c3RlbSBpcyBj aGVja2VkIG9rICoqKgotCi0tLS0gbWtmcz12ZXJzaW9uPTIsIG1udD1sb2dic2l6ZT0xMjhrLCBz eW5jPW5vc3luYyAtLS0KLQotKioqIG1rZnMgKioqCi0KLQotKioqIG1vdW50ICoqKgotCi0KLSoq KiBscyBTQ1JBVENIX01OVCAqKioKLQotMDAKLTAxCi0wMgotMDMKLTA0Ci0wNQotMDYKLTA3Ci0w OAotMDkKLTEwCi0xMQotMTIKLTEzCi0xNAotMTUKLTE2Ci0xNwotMTgKLTE5Ci0yMAotMjEKLTIy Ci0yMwotMjQKLTI1Ci0yNgotMjcKLTI4Ci0yOQotMzAKLTMxCi0zMgotMzMKLTM0Ci0zNQotMzYK LTM3Ci0zOAotMzkKLTQwCi00MQotNDIKLTQzCi00NAotNDUKLTQ2Ci00NwotNDgKLTQ5Ci01MAot NTEKLTUyCi01MwotNTQKLTU1Ci01NgotNTcKLTU4Ci01OQotNjAKLTYxCi02MgotNjMKLTY0Ci02 NQotNjYKLTY3Ci02OAotNjkKLTcwCi03MQotNzIKLTczCi03NAotNzUKLTc2Ci03NwotNzgKLTc5 Ci04MAotODEKLTgyCi04MwotODQKLTg1Ci04NgotODcKLTg4Ci04OQotOTAKLTkxCi05MgotOTMK LTk0Ci05NQotOTYKLTk3Ci05OAotOTkKLQotKioqIGdvZG93biAqKioKLQotCi0qKiogdW5tb3Vu dCAqKioKLQotCi0qKiogbG9ncHJpbnQgYWZ0ZXIgZ29pbmcgZG93bi4uLiAqKioKLQotZGlydHkg bG9nCi0KLSoqKiBtb3VudCB3aXRoIHJlcGxheSAqKioKLQotCi0qKiogbHMgU0NSQVRDSF9NTlQg KioqCi0KLTAwCi0wMQotMDIKLTAzCi0wNAotMDUKLTA2Ci0wNwotMDgKLTA5Ci0xMAotMTEKLTEy Ci0xMwotMTQKLTE1Ci0xNgotMTcKLTE4Ci0xOQotMjAKLTIxCi0yMgotMjMKLTI0Ci0yNQotMjYK LTI3Ci0yOAotMjkKLTMwCi0zMQotMzIKLTMzCi0zNAotMzUKLTM2Ci0zNwotMzgKLTM5Ci00MAot NDEKLTQyCi00MwotNDQKLTQ1Ci00NgotNDcKLTQ4Ci00OQotNTAKLTUxCi01MgotNTMKLTU0Ci01 NQotNTYKLTU3Ci01OAotNTkKLTYwCi02MQotNjIKLTYzCi02NAotNjUKLTY2Ci02NwotNjgKLTY5 Ci03MAotNzEKLTcyCi03MwotNzQKLTc1Ci03NgotNzcKLTc4Ci03OQotODAKLTgxCi04MgotODMK LTg0Ci04NQotODYKLTg3Ci04OAotODkKLTkwCi05MQotOTIKLTkzCi05NAotOTUKLTk2Ci05Nwot OTgKLTk5Ci0KLSoqKiB1bm1vdW50ICoqKgotCi0KLSoqKiBsb2dwcmludCBhZnRlciBtb3VudCBh bmQgcmVwbGF5Li4uICoqKgotCi1jbGVhbiBsb2cKLQotKioqIGZpbGVzeXN0ZW0gaXMgY2hlY2tl ZCBvayAqKioKLQotLS0tIG1rZnM9dmVyc2lvbj0yLHN1PTEyOGssIG1udD1sb2dic2l6ZT0xMjhr LCBzeW5jPW5vc3luYyAtLS0KLQotKioqIG1rZnMgKioqCi0KLQotKioqIG1vdW50ICoqKgotCi0K LSoqKiBscyBTQ1JBVENIX01OVCAqKioKLQotMDAKLTAxCi0wMgotMDMKLTA0Ci0wNQotMDYKLTA3 Ci0wOAotMDkKLTEwCi0xMQotMTIKLTEzCi0xNAotMTUKLTE2Ci0xNwotMTgKLTE5Ci0yMAotMjEK LTIyCi0yMwotMjQKLTI1Ci0yNgotMjcKLTI4Ci0yOQotMzAKLTMxCi0zMgotMzMKLTM0Ci0zNQot MzYKLTM3Ci0zOAotMzkKLTQwCi00MQotNDIKLTQzCi00NAotNDUKLTQ2Ci00NwotNDgKLTQ5Ci01 MAotNTEKLTUyCi01MwotNTQKLTU1Ci01NgotNTcKLTU4Ci01OQotNjAKLTYxCi02MgotNjMKLTY0 Ci02NQotNjYKLTY3Ci02OAotNjkKLTcwCi03MQotNzIKLTczCi03NAotNzUKLTc2Ci03NwotNzgK LTc5Ci04MAotODEKLTgyCi04MwotODQKLTg1Ci04NgotODcKLTg4Ci04OQotOTAKLTkxCi05Mgot OTMKLTk0Ci05NQotOTYKLTk3Ci05OAotOTkKLQotKioqIGdvZG93biAqKioKLQotCi0qKiogdW5t b3VudCAqKioKLQotCi0qKiogbG9ncHJpbnQgYWZ0ZXIgZ29pbmcgZG93bi4uLiAqKioKLQotZGly dHkgbG9nCi0KLSoqKiBtb3VudCB3aXRoIHJlcGxheSAqKioKLQotCi0qKiogbHMgU0NSQVRDSF9N TlQgKioqCi0KLTAwCi0wMQotMDIKLTAzCi0wNAotMDUKLTA2Ci0wNwotMDgKLTA5Ci0xMAotMTEK LTEyCi0xMwotMTQKLTE1Ci0xNgotMTcKLTE4Ci0xOQotMjAKLTIxCi0yMgotMjMKLTI0Ci0yNQot MjYKLTI3Ci0yOAotMjkKLTMwCi0zMQotMzIKLTMzCi0zNAotMzUKLTM2Ci0zNwotMzgKLTM5Ci00 MAotNDEKLTQyCi00MwotNDQKLTQ1Ci00NgotNDcKLTQ4Ci00OQotNTAKLTUxCi01MgotNTMKLTU0 Ci01NQotNTYKLTU3Ci01OAotNTkKLTYwCi02MQotNjIKLTYzCi02NAotNjUKLTY2Ci02NwotNjgK LTY5Ci03MAotNzEKLTcyCi03MwotNzQKLTc1Ci03NgotNzcKLTc4Ci03OQotODAKLTgxCi04Mgot ODMKLTg0Ci04NQotODYKLTg3Ci04OAotODkKLTkwCi05MQotOTIKLTkzCi05NAotOTUKLTk2Ci05 NwotOTgKLTk5Ci0KLSoqKiB1bm1vdW50ICoqKgotCi0KLSoqKiBsb2dwcmludCBhZnRlciBtb3Vu dCBhbmQgcmVwbGF5Li4uICoqKgotCi1jbGVhbiBsb2cKLQotKioqIGZpbGVzeXN0ZW0gaXMgY2hl Y2tlZCBvayAqKioKLQotLS0tIG1rZnM9dmVyc2lvbj0yLCBtbnQ9bG9nYnNpemU9MjU2aywgc3lu Yz1ub3N5bmMgLS0tCi0KLSoqKiBta2ZzICoqKgotCi0KLSoqKiBtb3VudCAqKioKLQotCi0qKiog bHMgU0NSQVRDSF9NTlQgKioqCi0KLTAwCi0wMQotMDIKLTAzCi0wNAotMDUKLTA2Ci0wNwotMDgK LTA5Ci0xMAotMTEKLTEyCi0xMwotMTQKLTE1Ci0xNgotMTcKLTE4Ci0xOQotMjAKLTIxCi0yMgot MjMKLTI0Ci0yNQotMjYKLTI3Ci0yOAotMjkKLTMwCi0zMQotMzIKLTMzCi0zNAotMzUKLTM2Ci0z NwotMzgKLTM5Ci00MAotNDEKLTQyCi00MwotNDQKLTQ1Ci00NgotNDcKLTQ4Ci00OQotNTAKLTUx Ci01MgotNTMKLTU0Ci01NQotNTYKLTU3Ci01OAotNTkKLTYwCi02MQotNjIKLTYzCi02NAotNjUK LTY2Ci02NwotNjgKLTY5Ci03MAotNzEKLTcyCi03MwotNzQKLTc1Ci03NgotNzcKLTc4Ci03OQot ODAKLTgxCi04MgotODMKLTg0Ci04NQotODYKLTg3Ci04OAotODkKLTkwCi05MQotOTIKLTkzCi05 NAotOTUKLTk2Ci05NwotOTgKLTk5Ci0KLSoqKiBnb2Rvd24gKioqCi0KLQotKioqIHVubW91bnQg KioqCi0KLQotKioqIGxvZ3ByaW50IGFmdGVyIGdvaW5nIGRvd24uLi4gKioqCi0KLWRpcnR5IGxv ZwotCi0qKiogbW91bnQgd2l0aCByZXBsYXkgKioqCi0KLQotKioqIGxzIFNDUkFUQ0hfTU5UICoq KgotCi0wMAotMDEKLTAyCi0wMwotMDQKLTA1Ci0wNgotMDcKLTA4Ci0wOQotMTAKLTExCi0xMgot MTMKLTE0Ci0xNQotMTYKLTE3Ci0xOAotMTkKLTIwCi0yMQotMjIKLTIzCi0yNAotMjUKLTI2Ci0y NwotMjgKLTI5Ci0zMAotMzEKLTMyCi0zMwotMzQKLTM1Ci0zNgotMzcKLTM4Ci0zOQotNDAKLTQx Ci00MgotNDMKLTQ0Ci00NQotNDYKLTQ3Ci00OAotNDkKLTUwCi01MQotNTIKLTUzCi01NAotNTUK LTU2Ci01NwotNTgKLTU5Ci02MAotNjEKLTYyCi02MwotNjQKLTY1Ci02NgotNjcKLTY4Ci02OQot NzAKLTcxCi03MgotNzMKLTc0Ci03NQotNzYKLTc3Ci03OAotNzkKLTgwCi04MQotODIKLTgzCi04 NAotODUKLTg2Ci04NwotODgKLTg5Ci05MAotOTEKLTkyCi05MwotOTQKLTk1Ci05NgotOTcKLTk4 Ci05OQogCi0qKiogdW5tb3VudCAqKioKKyoqKiBta2ZzIGZhaWxlZDogLWwgdmVyc2lvbj0yLHN1 PTI1NmsgKioqCiAKKy0tLSBta2ZzPXZlcnNpb249MiwgbW50PWxvZ2JzaXplPTMyaywgc3luYz1u b3N5bmMgLS0tCiAKLSoqKiBsb2dwcmludCBhZnRlciBtb3VudCBhbmQgcmVwbGF5Li4uICoqKgor KioqIG1rZnMgKioqCiAKLWNsZWFuIGxvZwogCi0qKiogZmlsZXN5c3RlbSBpcyBjaGVja2VkIG9r ICoqKgorKioqIG1rZnMgZmFpbGVkOiAtbCB2ZXJzaW9uPTIgKioqCiAKLS0tLSBta2ZzPXZlcnNp b249MixzdT0yNTZrLCBtbnQ9bG9nYnNpemU9MjU2aywgc3luYz1ub3N5bmMgLS0tCistLS0gbWtm cz12ZXJzaW9uPTIsc3U9NDA5NiwgbW50PWxvZ2JzaXplPTMyaywgc3luYz1ub3N5bmMgLS0tCiAK ICoqKiBta2ZzICoqKgogCiAKLSoqKiBtb3VudCAqKioKKyoqKiBta2ZzIGZhaWxlZDogLWwgdmVy c2lvbj0yLHN1PTQwOTYgKioqCiAKKy0tLSBta2ZzPXZlcnNpb249MixzdT0zMjc2OCwgbW50PWxv Z2JzaXplPTMyaywgc3luYz1ub3N5bmMgLS0tCiAKLSoqKiBscyBTQ1JBVENIX01OVCAqKioKKyoq KiBta2ZzICoqKgogCi0wMAotMDEKLTAyCi0wMwotMDQKLTA1Ci0wNgotMDcKLTA4Ci0wOQotMTAK LTExCi0xMgotMTMKLTE0Ci0xNQotMTYKLTE3Ci0xOAotMTkKLTIwCi0yMQotMjIKLTIzCi0yNAot MjUKLTI2Ci0yNwotMjgKLTI5Ci0zMAotMzEKLTMyCi0zMwotMzQKLTM1Ci0zNgotMzcKLTM4Ci0z OQotNDAKLTQxCi00MgotNDMKLTQ0Ci00NQotNDYKLTQ3Ci00OAotNDkKLTUwCi01MQotNTIKLTUz Ci01NAotNTUKLTU2Ci01NwotNTgKLTU5Ci02MAotNjEKLTYyCi02MwotNjQKLTY1Ci02NgotNjcK LTY4Ci02OQotNzAKLTcxCi03MgotNzMKLTc0Ci03NQotNzYKLTc3Ci03OAotNzkKLTgwCi04MQot ODIKLTgzCi04NAotODUKLTg2Ci04NwotODgKLTg5Ci05MAotOTEKLTkyCi05MwotOTQKLTk1Ci05 NgotOTcKLTk4Ci05OQogCi0qKiogZ29kb3duICoqKgorKioqIG1rZnMgZmFpbGVkOiAtbCB2ZXJz aW9uPTIsc3U9MzI3NjggKioqCiAKKy0tLSBta2ZzPXZlcnNpb249MixzdT0zMjc2OCwgbW50PWxv Z2JzaXplPTY0aywgc3luYz1ub3N5bmMgLS0tCiAKLSoqKiB1bm1vdW50ICoqKgorKioqIG1rZnMg KioqCiAKIAotKioqIGxvZ3ByaW50IGFmdGVyIGdvaW5nIGRvd24uLi4gKioqCisqKiogbWtmcyBm YWlsZWQ6IC1sIHZlcnNpb249MixzdT0zMjc2OCAqKioKIAotZGlydHkgbG9nCistLS0gbWtmcz12 ZXJzaW9uPTIsIG1udD1sb2dic2l6ZT02NGssIHN5bmM9bm9zeW5jIC0tLQogCi0qKiogbW91bnQg d2l0aCByZXBsYXkgKioqCisqKiogbWtmcyAqKioKIAogCi0qKiogbHMgU0NSQVRDSF9NTlQgKioq CisqKiogbWtmcyBmYWlsZWQ6IC1sIHZlcnNpb249MiAqKioKIAotMDAKLTAxCi0wMgotMDMKLTA0 Ci0wNQotMDYKLTA3Ci0wOAotMDkKLTEwCi0xMQotMTIKLTEzCi0xNAotMTUKLTE2Ci0xNwotMTgK LTE5Ci0yMAotMjEKLTIyCi0yMwotMjQKLTI1Ci0yNgotMjcKLTI4Ci0yOQotMzAKLTMxCi0zMgot MzMKLTM0Ci0zNQotMzYKLTM3Ci0zOAotMzkKLTQwCi00MQotNDIKLTQzCi00NAotNDUKLTQ2Ci00 NwotNDgKLTQ5Ci01MAotNTEKLTUyCi01MwotNTQKLTU1Ci01NgotNTcKLTU4Ci01OQotNjAKLTYx Ci02MgotNjMKLTY0Ci02NQotNjYKLTY3Ci02OAotNjkKLTcwCi03MQotNzIKLTczCi03NAotNzUK LTc2Ci03NwotNzgKLTc5Ci04MAotODEKLTgyCi04MwotODQKLTg1Ci04NgotODcKLTg4Ci04OQot OTAKLTkxCi05MgotOTMKLTk0Ci05NQotOTYKLTk3Ci05OAotOTkKKy0tLSBta2ZzPXZlcnNpb249 MixzdT02NGssIG1udD1sb2dic2l6ZT02NGssIHN5bmM9bm9zeW5jIC0tLQogCi0qKiogdW5tb3Vu dCAqKioKKyoqKiBta2ZzICoqKgogCiAKLSoqKiBsb2dwcmludCBhZnRlciBtb3VudCBhbmQgcmVw bGF5Li4uICoqKgorKioqIG1rZnMgZmFpbGVkOiAtbCB2ZXJzaW9uPTIsc3U9NjRrICoqKgogCi1j bGVhbiBsb2cKKy0tLSBta2ZzPXZlcnNpb249MiwgbW50PWxvZ2JzaXplPTEyOGssIHN5bmM9bm9z eW5jIC0tLQogCi0qKiogZmlsZXN5c3RlbSBpcyBjaGVja2VkIG9rICoqKgorKioqIG1rZnMgKioq CisKKworKioqIG1rZnMgZmFpbGVkOiAtbCB2ZXJzaW9uPTIgKioqCisKKy0tLSBta2ZzPXZlcnNp b249MixzdT0xMjhrLCBtbnQ9bG9nYnNpemU9MTI4aywgc3luYz1ub3N5bmMgLS0tCisKKyoqKiBt a2ZzICoqKgorCisKKyoqKiBta2ZzIGZhaWxlZDogLWwgdmVyc2lvbj0yLHN1PTEyOGsgKioqCisK Ky0tLSBta2ZzPXZlcnNpb249MiwgbW50PWxvZ2JzaXplPTI1NmssIHN5bmM9bm9zeW5jIC0tLQor CisqKiogbWtmcyAqKioKKworCisqKiogbWtmcyBmYWlsZWQ6IC1sIHZlcnNpb249MiAqKioKKwor LS0tIG1rZnM9dmVyc2lvbj0yLHN1PTI1NmssIG1udD1sb2dic2l6ZT0yNTZrLCBzeW5jPW5vc3lu YyAtLS0KKworKioqIG1rZnMgKioqCisKKworKioqIG1rZnMgZmFpbGVkOiAtbCB2ZXJzaW9uPTIs c3U9MjU2ayAqKioKIAowODgJIDFzCjA4OQkgMTA3cwowOTEJIDM1OHMKMDk2CSAxMnMKMTAwCSA0 NXMKMTAzCSA5cwoxMDQJUmFuOiAwNzUgMDc2IDA3OCAwNzkgMDgwIDA4MiAwODMgMDg0IDA4NSAw ODYgMDg4IDA4OSAwOTEgMDk2IDEwMCAxMDMKRmFpbHVyZXM6IDA3OSAwODIgMDg2CkZhaWxlZCAz IG9mIDE2IHRlc3RzCkZTVFlQICAgICAgICAgLS0geGZzIChub24tZGVidWcpClBMQVRGT1JNICAg ICAgLS0gTGludXgvaTY4NiBtYW5udURlc2sgMi42LjM1LjEzCk1LRlNfT1BUSU9OUyAgLS0gLWYg LWJzaXplPTQwOTYgL2Rldi9zZGI0Ck1PVU5UX09QVElPTlMgLS0gL2Rldi9zZGI0IC9ob21lL21h bmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0CgoxMDkJUGFzc2VkIGFsbCAwIHRlc3RzCkZTVFlQ ICAgICAgICAgLS0geGZzIChub24tZGVidWcpClBMQVRGT1JNICAgICAgLS0gTGludXgvaTY4NiBt YW5udURlc2sgMi42LjM1LjEzCk1LRlNfT1BUSU9OUyAgLS0gLWYgLWJzaXplPTQwOTYgL2Rldi9z ZGI0Ck1PVU5UX09QVElPTlMgLS0gL2Rldi9zZGI0IC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0 ZXN0cy9zZGI0CgoxMTAJIDIwMnMKMTExCSAtIG91dHB1dCBtaXNtYXRjaCAoc2VlIDExMS5vdXQu YmFkKQotLS0gMTExLm91dAkyMDExLTA1LTExIDIyOjMyOjI0LjAwMDAwMDAwMCArMDUzMAorKysg MTExLm91dC5iYWQJMjAxMS0wNi0wOSAxNToxMzo1Ni4yOTI2MTA5OTkgKzA1MzAKQEAgLTk4LDMg Kzk4LDQgQEAKIE92ZXJ3cm90ZSBJTiBAb2Zmc2V0IDMyNTEyCiBPdmVyd3JpdGUgY29tcGxldGUK IEF0dGVtcHRpbmcgYnVsa3N0YXQKKy9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0 IHN0YXJ0IGlub2RlPTAKMTEyCSA4OXMKMTEzCSA5MzFzCjExNwkgNTJzCjExOQkgMTlzCjEyMAkg MTdzCjEyMQkgMTNzCjEyMgkgW25vdCBydW5dIENvdWxkIG5vdCBjb21waWxlIHRlc3QgcHJvZ3Jh bSAoc2VlIGVuZCBvZiAxMjIuZnVsbCkKMTI0CSA4cwoxMjUJIFtub3QgcnVuXSBmc2dxYSB1c2Vy IG5vdCBkZWZpbmVkLgoxMjYJIDBzCjEyNwkgNzIzcwoxMjkJIDIwOXMKMTMwCSAzN3MKMTMxCSAy cwoxMzIJIDMwcwoxMzMJIDEzNTRzCjEzNQkgNHMKMTM2CSAtIG91dHB1dCBtaXNtYXRjaCAoc2Vl IDEzNi5vdXQuYmFkKQotLS0gMTM2Lm91dAkyMDExLTA1LTExIDIyOjMyOjI0LjAwMDAwMDAwMCAr MDUzMAorKysgMTM2Lm91dC5iYWQJMjAxMS0wNi0wOSAxNjo0Njo1NC42NjA2MTA5OTggKzA1MzAK QEAgLTE0LDcgKzE0LDcgQEAKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAwCiBj b3JlLm5hZXh0ZW50cyA9IDAKLWNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCitjb3JlLmZv cmtvZmYgPSA0NyAoMzc2IGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMSAobG9jYWwpCiBhLnNmYXR0 ci5oZHIudG90c2l6ZSA9IDE4CiBhLnNmYXR0ci5oZHIuY291bnQgPSAxCkBAIC0zMSw3ICszMSw3 IEBACiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMAogY29yZS5uYWV4dGVudHMg PSAwCi1jb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQorY29yZS5mb3Jrb2ZmID0gNDcgKDM3 NiBieXRlcykKIGNvcmUuYWZvcm1hdCA9IDEgKGxvY2FsKQogYS5zZmF0dHIuaGRyLnRvdHNpemUg PSAzMgogYS5zZmF0dHIuaGRyLmNvdW50ID0gMgpAQCAtNTQsNyArNTQsNyBAQAogY29yZS5leHRz aXplID0gMAogY29yZS5uZXh0ZW50cyA9IDAKIGNvcmUubmFleHRlbnRzID0gMAotY29yZS5mb3Jr b2ZmID0gMjQgKDE5MiBieXRlcykKK2NvcmUuZm9ya29mZiA9IDQ0ICgzNTIgYnl0ZXMpCiBjb3Jl LmFmb3JtYXQgPSAxIChsb2NhbCkKIGEuc2ZhdHRyLmhkci50b3RzaXplID0gNjAKIGEuc2ZhdHRy Lmhkci5jb3VudCA9IDQKQEAgLTg5LDcgKzg5LDcgQEAKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUu bmV4dGVudHMgPSAwCiBjb3JlLm5hZXh0ZW50cyA9IDAKLWNvcmUuZm9ya29mZiA9IDI0ICgxOTIg Ynl0ZXMpCitjb3JlLmZvcmtvZmYgPSAzNyAoMjk2IGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMSAo bG9jYWwpCiBhLnNmYXR0ci5oZHIudG90c2l6ZSA9IDExNgogYS5zZmF0dHIuaGRyLmNvdW50ID0g OApAQCAtMTQ3LDYwICsxNDcsODAzIEBACiBjb3JlLnNpemUgPSAwCiBjb3JlLmV4dHNpemUgPSAw CiBjb3JlLm5leHRlbnRzID0gMAotY29yZS5uYWV4dGVudHMgPSAxCi1jb3JlLmZvcmtvZmYgPSAy NCAoMTkyIGJ5dGVzKQotY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKLWEuYm14WzBdID0gW3N0 YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE2LDEsMF0KK2Nv cmUubmFleHRlbnRzID0gMAorY29yZS5mb3Jrb2ZmID0gMjIgKDE3NiBieXRlcykKK2NvcmUuYWZv cm1hdCA9IDEgKGxvY2FsKQorYS5zZmF0dHIuaGRyLnRvdHNpemUgPSAyMzUKK2Euc2ZhdHRyLmhk ci5jb3VudCA9IDE2CithLnNmYXR0ci5saXN0WzBdLm5hbWVsZW4gPSA2CithLnNmYXR0ci5saXN0 WzBdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFswXS5yb290ID0gMAorYS5zZmF0dHIubGlz dFswXS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzBdLm5hbWUgPSAibmFtZS4xIgorYS5zZmF0 dHIubGlzdFswXS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbMV0ubmFtZWxlbiA9IDYK K2Euc2ZhdHRyLmxpc3RbMV0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzFdLnJvb3QgPSAw CithLnNmYXR0ci5saXN0WzFdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMV0ubmFtZSA9ICJu YW1lLjIiCithLnNmYXR0ci5saXN0WzFdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFsy XS5uYW1lbGVuID0gNgorYS5zZmF0dHIubGlzdFsyXS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxp c3RbMl0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMl0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlz dFsyXS5uYW1lID0gIm5hbWUuMyIKK2Euc2ZhdHRyLmxpc3RbMl0udmFsdWUgPSAidmFsdWUiCith LnNmYXR0ci5saXN0WzNdLm5hbWVsZW4gPSA2CithLnNmYXR0ci5saXN0WzNdLnZhbHVlbGVuID0g NQorYS5zZmF0dHIubGlzdFszXS5yb290ID0gMAorYS5zZmF0dHIubGlzdFszXS5zZWN1cmUgPSAw CithLnNmYXR0ci5saXN0WzNdLm5hbWUgPSAibmFtZS40IgorYS5zZmF0dHIubGlzdFszXS52YWx1 ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbNF0ubmFtZWxlbiA9IDYKK2Euc2ZhdHRyLmxpc3Rb NF0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzRdLnJvb3QgPSAwCithLnNmYXR0ci5saXN0 WzRdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbNF0ubmFtZSA9ICJuYW1lLjUiCithLnNmYXR0 ci5saXN0WzRdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFs1XS5uYW1lbGVuID0gNgor YS5zZmF0dHIubGlzdFs1XS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbNV0ucm9vdCA9IDAK K2Euc2ZhdHRyLmxpc3RbNV0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFs1XS5uYW1lID0gIm5h bWUuNiIKK2Euc2ZhdHRyLmxpc3RbNV0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzZd Lm5hbWVsZW4gPSA2CithLnNmYXR0ci5saXN0WzZdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlz dFs2XS5yb290ID0gMAorYS5zZmF0dHIubGlzdFs2XS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0 WzZdLm5hbWUgPSAibmFtZS43IgorYS5zZmF0dHIubGlzdFs2XS52YWx1ZSA9ICJ2YWx1ZSIKK2Eu c2ZhdHRyLmxpc3RbN10ubmFtZWxlbiA9IDYKK2Euc2ZhdHRyLmxpc3RbN10udmFsdWVsZW4gPSA1 CithLnNmYXR0ci5saXN0WzddLnJvb3QgPSAwCithLnNmYXR0ci5saXN0WzddLnNlY3VyZSA9IDAK K2Euc2ZhdHRyLmxpc3RbN10ubmFtZSA9ICJuYW1lLjgiCithLnNmYXR0ci5saXN0WzddLnZhbHVl ID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFs4XS5uYW1lbGVuID0gNgorYS5zZmF0dHIubGlzdFs4 XS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbOF0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3Rb OF0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFs4XS5uYW1lID0gIm5hbWUuOSIKK2Euc2ZhdHRy Lmxpc3RbOF0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzldLm5hbWVsZW4gPSA3Cith LnNmYXR0ci5saXN0WzldLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFs5XS5yb290ID0gMAor YS5zZmF0dHIubGlzdFs5XS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzldLm5hbWUgPSAibmFt ZS4xMCIKK2Euc2ZhdHRyLmxpc3RbOV0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzEw XS5uYW1lbGVuID0gNworYS5zZmF0dHIubGlzdFsxMF0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5s aXN0WzEwXS5yb290ID0gMAorYS5zZmF0dHIubGlzdFsxMF0uc2VjdXJlID0gMAorYS5zZmF0dHIu bGlzdFsxMF0ubmFtZSA9ICJuYW1lLjExIgorYS5zZmF0dHIubGlzdFsxMF0udmFsdWUgPSAidmFs dWUiCithLnNmYXR0ci5saXN0WzExXS5uYW1lbGVuID0gNworYS5zZmF0dHIubGlzdFsxMV0udmFs dWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzExXS5yb290ID0gMAorYS5zZmF0dHIubGlzdFsxMV0u c2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFsxMV0ubmFtZSA9ICJuYW1lLjEyIgorYS5zZmF0dHIu bGlzdFsxMV0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzEyXS5uYW1lbGVuID0gNwor YS5zZmF0dHIubGlzdFsxMl0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzEyXS5yb290ID0g MAorYS5zZmF0dHIubGlzdFsxMl0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFsxMl0ubmFtZSA9 ICJuYW1lLjEzIgorYS5zZmF0dHIubGlzdFsxMl0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5s aXN0WzEzXS5uYW1lbGVuID0gNworYS5zZmF0dHIubGlzdFsxM10udmFsdWVsZW4gPSA1CithLnNm YXR0ci5saXN0WzEzXS5yb290ID0gMAorYS5zZmF0dHIubGlzdFsxM10uc2VjdXJlID0gMAorYS5z ZmF0dHIubGlzdFsxM10ubmFtZSA9ICJuYW1lLjE0IgorYS5zZmF0dHIubGlzdFsxM10udmFsdWUg PSAidmFsdWUiCithLnNmYXR0ci5saXN0WzE0XS5uYW1lbGVuID0gNworYS5zZmF0dHIubGlzdFsx NF0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzE0XS5yb290ID0gMAorYS5zZmF0dHIubGlz dFsxNF0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFsxNF0ubmFtZSA9ICJuYW1lLjE1IgorYS5z ZmF0dHIubGlzdFsxNF0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzE1XS5uYW1lbGVu ID0gNworYS5zZmF0dHIubGlzdFsxNV0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzE1XS5y b290ID0gMAorYS5zZmF0dHIubGlzdFsxNV0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFsxNV0u bmFtZSA9ICJuYW1lLjE2IgorYS5zZmF0dHIubGlzdFsxNV0udmFsdWUgPSAidmFsdWUiCiAKICoq IGFkZCAxNy4uMjAgRUFzICoqCit1bW91bnQ6IC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0 cy9zZGI0OiBkZXZpY2UgaXMgYnVzeS4KKyAgICAgICAgKEluIHNvbWUgY2FzZXMgdXNlZnVsIGlu Zm8gYWJvdXQgcHJvY2Vzc2VzIHRoYXQgdXNlCisgICAgICAgICB0aGUgZGV2aWNlIGlzIGZvdW5k IGJ5IGxzb2YoOCkgb3IgZnVzZXIoMSkpCiBjb3JlLmZvcm1hdCA9IDIgKGV4dGVudHMpCiBjb3Jl LnNpemUgPSAwCiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMAotY29yZS5uYWV4 dGVudHMgPSAxCi1jb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQotY29yZS5hZm9ybWF0ID0g MiAoZXh0ZW50cykKLWEuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxl eHRlbnRmbGFnXSAwOlswLDE2LDEsMF0KK2NvcmUubmFleHRlbnRzID0gMAorY29yZS5mb3Jrb2Zm ID0gMjIgKDE3NiBieXRlcykKK2NvcmUuYWZvcm1hdCA9IDEgKGxvY2FsKQorYS5zZmF0dHIuaGRy LnRvdHNpemUgPSAyMzUKK2Euc2ZhdHRyLmhkci5jb3VudCA9IDE2CithLnNmYXR0ci5saXN0WzBd Lm5hbWVsZW4gPSA2CithLnNmYXR0ci5saXN0WzBdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlz dFswXS5yb290ID0gMAorYS5zZmF0dHIubGlzdFswXS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0 WzBdLm5hbWUgPSAibmFtZS4xIgorYS5zZmF0dHIubGlzdFswXS52YWx1ZSA9ICJ2YWx1ZSIKK2Eu c2ZhdHRyLmxpc3RbMV0ubmFtZWxlbiA9IDYKK2Euc2ZhdHRyLmxpc3RbMV0udmFsdWVsZW4gPSA1 CithLnNmYXR0ci5saXN0WzFdLnJvb3QgPSAwCithLnNmYXR0ci5saXN0WzFdLnNlY3VyZSA9IDAK K2Euc2ZhdHRyLmxpc3RbMV0ubmFtZSA9ICJuYW1lLjIiCithLnNmYXR0ci5saXN0WzFdLnZhbHVl ID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFsyXS5uYW1lbGVuID0gNgorYS5zZmF0dHIubGlzdFsy XS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbMl0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3Rb Ml0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFsyXS5uYW1lID0gIm5hbWUuMyIKK2Euc2ZhdHRy Lmxpc3RbMl0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzNdLm5hbWVsZW4gPSA2Cith LnNmYXR0ci5saXN0WzNdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFszXS5yb290ID0gMAor YS5zZmF0dHIubGlzdFszXS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzNdLm5hbWUgPSAibmFt ZS40IgorYS5zZmF0dHIubGlzdFszXS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbNF0u bmFtZWxlbiA9IDYKK2Euc2ZhdHRyLmxpc3RbNF0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0 WzRdLnJvb3QgPSAwCithLnNmYXR0ci5saXN0WzRdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3Rb NF0ubmFtZSA9ICJuYW1lLjUiCithLnNmYXR0ci5saXN0WzRdLnZhbHVlID0gInZhbHVlIgorYS5z ZmF0dHIubGlzdFs1XS5uYW1lbGVuID0gNgorYS5zZmF0dHIubGlzdFs1XS52YWx1ZWxlbiA9IDUK K2Euc2ZhdHRyLmxpc3RbNV0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbNV0uc2VjdXJlID0gMAor YS5zZmF0dHIubGlzdFs1XS5uYW1lID0gIm5hbWUuNiIKK2Euc2ZhdHRyLmxpc3RbNV0udmFsdWUg PSAidmFsdWUiCithLnNmYXR0ci5saXN0WzZdLm5hbWVsZW4gPSA2CithLnNmYXR0ci5saXN0WzZd LnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFs2XS5yb290ID0gMAorYS5zZmF0dHIubGlzdFs2 XS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzZdLm5hbWUgPSAibmFtZS43IgorYS5zZmF0dHIu bGlzdFs2XS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbN10ubmFtZWxlbiA9IDYKK2Eu c2ZhdHRyLmxpc3RbN10udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzddLnJvb3QgPSAwCith LnNmYXR0ci5saXN0WzddLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbN10ubmFtZSA9ICJuYW1l LjgiCithLnNmYXR0ci5saXN0WzddLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFs4XS5u YW1lbGVuID0gNgorYS5zZmF0dHIubGlzdFs4XS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3Rb OF0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbOF0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFs4 XS5uYW1lID0gIm5hbWUuOSIKK2Euc2ZhdHRyLmxpc3RbOF0udmFsdWUgPSAidmFsdWUiCithLnNm YXR0ci5saXN0WzldLm5hbWVsZW4gPSA3CithLnNmYXR0ci5saXN0WzldLnZhbHVlbGVuID0gNQor YS5zZmF0dHIubGlzdFs5XS5yb290ID0gMAorYS5zZmF0dHIubGlzdFs5XS5zZWN1cmUgPSAwCith LnNmYXR0ci5saXN0WzldLm5hbWUgPSAibmFtZS4xMCIKK2Euc2ZhdHRyLmxpc3RbOV0udmFsdWUg PSAidmFsdWUiCithLnNmYXR0ci5saXN0WzEwXS5uYW1lbGVuID0gNworYS5zZmF0dHIubGlzdFsx MF0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzEwXS5yb290ID0gMAorYS5zZmF0dHIubGlz dFsxMF0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFsxMF0ubmFtZSA9ICJuYW1lLjExIgorYS5z ZmF0dHIubGlzdFsxMF0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzExXS5uYW1lbGVu ID0gNworYS5zZmF0dHIubGlzdFsxMV0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzExXS5y b290ID0gMAorYS5zZmF0dHIubGlzdFsxMV0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFsxMV0u bmFtZSA9ICJuYW1lLjEyIgorYS5zZmF0dHIubGlzdFsxMV0udmFsdWUgPSAidmFsdWUiCithLnNm YXR0ci5saXN0WzEyXS5uYW1lbGVuID0gNworYS5zZmF0dHIubGlzdFsxMl0udmFsdWVsZW4gPSA1 CithLnNmYXR0ci5saXN0WzEyXS5yb290ID0gMAorYS5zZmF0dHIubGlzdFsxMl0uc2VjdXJlID0g MAorYS5zZmF0dHIubGlzdFsxMl0ubmFtZSA9ICJuYW1lLjEzIgorYS5zZmF0dHIubGlzdFsxMl0u dmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzEzXS5uYW1lbGVuID0gNworYS5zZmF0dHIu bGlzdFsxM10udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzEzXS5yb290ID0gMAorYS5zZmF0 dHIubGlzdFsxM10uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFsxM10ubmFtZSA9ICJuYW1lLjE0 IgorYS5zZmF0dHIubGlzdFsxM10udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzE0XS5u YW1lbGVuID0gNworYS5zZmF0dHIubGlzdFsxNF0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0 WzE0XS5yb290ID0gMAorYS5zZmF0dHIubGlzdFsxNF0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlz dFsxNF0ubmFtZSA9ICJuYW1lLjE1IgorYS5zZmF0dHIubGlzdFsxNF0udmFsdWUgPSAidmFsdWUi CithLnNmYXR0ci5saXN0WzE1XS5uYW1lbGVuID0gNworYS5zZmF0dHIubGlzdFsxNV0udmFsdWVs ZW4gPSA1CithLnNmYXR0ci5saXN0WzE1XS5yb290ID0gMAorYS5zZmF0dHIubGlzdFsxNV0uc2Vj dXJlID0gMAorYS5zZmF0dHIubGlzdFsxNV0ubmFtZSA9ICJuYW1lLjE2IgorYS5zZmF0dHIubGlz dFsxNV0udmFsdWUgPSAidmFsdWUiCittb3VudDogL2Rldi9zZGI0IGFscmVhZHkgbW91bnRlZCBv ciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNCBidXN5Cittb3VudDogYWNjb3Jk aW5nIHRvIG10YWIsIC9kZXYvc2RiNCBpcyBhbHJlYWR5IG1vdW50ZWQgb24gL2hvbWUvbWFuaXNo L1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQKIAogKiogYWRkIDIxLi4yMSBFQXMgKioKIGNvcmUuZm9y bWF0ID0gMiAoZXh0ZW50cykKIGNvcmUuc2l6ZSA9IDAKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUu bmV4dGVudHMgPSAwCi1jb3JlLm5hZXh0ZW50cyA9IDEKLWNvcmUuZm9ya29mZiA9IDI0ICgxOTIg Ynl0ZXMpCi1jb3JlLmFmb3JtYXQgPSAyIChleHRlbnRzKQotYS5ibXhbMF0gPSBbc3RhcnRvZmYs c3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTYsMSwwXQorY29yZS5uYWV4 dGVudHMgPSAwCitjb3JlLmZvcmtvZmYgPSAxMiAoOTYgYnl0ZXMpCitjb3JlLmFmb3JtYXQgPSAx IChsb2NhbCkKK2Euc2ZhdHRyLmhkci50b3RzaXplID0gMzEwCithLnNmYXR0ci5oZHIuY291bnQg PSAyMQorYS5zZmF0dHIubGlzdFswXS5uYW1lbGVuID0gNgorYS5zZmF0dHIubGlzdFswXS52YWx1 ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbMF0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMF0uc2Vj dXJlID0gMAorYS5zZmF0dHIubGlzdFswXS5uYW1lID0gIm5hbWUuMSIKK2Euc2ZhdHRyLmxpc3Rb MF0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzFdLm5hbWVsZW4gPSA2CithLnNmYXR0 ci5saXN0WzFdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFsxXS5yb290ID0gMAorYS5zZmF0 dHIubGlzdFsxXS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzFdLm5hbWUgPSAibmFtZS4yIgor YS5zZmF0dHIubGlzdFsxXS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbMl0ubmFtZWxl biA9IDYKK2Euc2ZhdHRyLmxpc3RbMl0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzJdLnJv b3QgPSAwCithLnNmYXR0ci5saXN0WzJdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMl0ubmFt ZSA9ICJuYW1lLjMiCithLnNmYXR0ci5saXN0WzJdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIu bGlzdFszXS5uYW1lbGVuID0gNgorYS5zZmF0dHIubGlzdFszXS52YWx1ZWxlbiA9IDUKK2Euc2Zh dHRyLmxpc3RbM10ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbM10uc2VjdXJlID0gMAorYS5zZmF0 dHIubGlzdFszXS5uYW1lID0gIm5hbWUuNCIKK2Euc2ZhdHRyLmxpc3RbM10udmFsdWUgPSAidmFs dWUiCithLnNmYXR0ci5saXN0WzRdLm5hbWVsZW4gPSA2CithLnNmYXR0ci5saXN0WzRdLnZhbHVl bGVuID0gNQorYS5zZmF0dHIubGlzdFs0XS5yb290ID0gMAorYS5zZmF0dHIubGlzdFs0XS5zZWN1 cmUgPSAwCithLnNmYXR0ci5saXN0WzRdLm5hbWUgPSAibmFtZS41IgorYS5zZmF0dHIubGlzdFs0 XS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbNV0ubmFtZWxlbiA9IDYKK2Euc2ZhdHRy Lmxpc3RbNV0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzVdLnJvb3QgPSAwCithLnNmYXR0 ci5saXN0WzVdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbNV0ubmFtZSA9ICJuYW1lLjYiCith LnNmYXR0ci5saXN0WzVdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFs2XS5uYW1lbGVu ID0gNgorYS5zZmF0dHIubGlzdFs2XS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbNl0ucm9v dCA9IDAKK2Euc2ZhdHRyLmxpc3RbNl0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFs2XS5uYW1l ID0gIm5hbWUuNyIKK2Euc2ZhdHRyLmxpc3RbNl0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5s aXN0WzddLm5hbWVsZW4gPSA2CithLnNmYXR0ci5saXN0WzddLnZhbHVlbGVuID0gNQorYS5zZmF0 dHIubGlzdFs3XS5yb290ID0gMAorYS5zZmF0dHIubGlzdFs3XS5zZWN1cmUgPSAwCithLnNmYXR0 ci5saXN0WzddLm5hbWUgPSAibmFtZS44IgorYS5zZmF0dHIubGlzdFs3XS52YWx1ZSA9ICJ2YWx1 ZSIKK2Euc2ZhdHRyLmxpc3RbOF0ubmFtZWxlbiA9IDYKK2Euc2ZhdHRyLmxpc3RbOF0udmFsdWVs ZW4gPSA1CithLnNmYXR0ci5saXN0WzhdLnJvb3QgPSAwCithLnNmYXR0ci5saXN0WzhdLnNlY3Vy ZSA9IDAKK2Euc2ZhdHRyLmxpc3RbOF0ubmFtZSA9ICJuYW1lLjkiCithLnNmYXR0ci5saXN0Wzhd LnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFs5XS5uYW1lbGVuID0gNworYS5zZmF0dHIu bGlzdFs5XS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbOV0ucm9vdCA9IDAKK2Euc2ZhdHRy Lmxpc3RbOV0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFs5XS5uYW1lID0gIm5hbWUuMTAiCith LnNmYXR0ci5saXN0WzldLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFsxMF0ubmFtZWxl biA9IDcKK2Euc2ZhdHRyLmxpc3RbMTBdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFsxMF0u cm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMTBdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMTBd Lm5hbWUgPSAibmFtZS4xMSIKK2Euc2ZhdHRyLmxpc3RbMTBdLnZhbHVlID0gInZhbHVlIgorYS5z ZmF0dHIubGlzdFsxMV0ubmFtZWxlbiA9IDcKK2Euc2ZhdHRyLmxpc3RbMTFdLnZhbHVlbGVuID0g NQorYS5zZmF0dHIubGlzdFsxMV0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMTFdLnNlY3VyZSA9 IDAKK2Euc2ZhdHRyLmxpc3RbMTFdLm5hbWUgPSAibmFtZS4xMiIKK2Euc2ZhdHRyLmxpc3RbMTFd LnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFsxMl0ubmFtZWxlbiA9IDcKK2Euc2ZhdHRy Lmxpc3RbMTJdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFsxMl0ucm9vdCA9IDAKK2Euc2Zh dHRyLmxpc3RbMTJdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMTJdLm5hbWUgPSAibmFtZS4x MyIKK2Euc2ZhdHRyLmxpc3RbMTJdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFsxM10u bmFtZWxlbiA9IDcKK2Euc2ZhdHRyLmxpc3RbMTNdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlz dFsxM10ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMTNdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxp c3RbMTNdLm5hbWUgPSAibmFtZS4xNCIKK2Euc2ZhdHRyLmxpc3RbMTNdLnZhbHVlID0gInZhbHVl IgorYS5zZmF0dHIubGlzdFsxNF0ubmFtZWxlbiA9IDcKK2Euc2ZhdHRyLmxpc3RbMTRdLnZhbHVl bGVuID0gNQorYS5zZmF0dHIubGlzdFsxNF0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMTRdLnNl Y3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMTRdLm5hbWUgPSAibmFtZS4xNSIKK2Euc2ZhdHRyLmxp c3RbMTRdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFsxNV0ubmFtZWxlbiA9IDcKK2Eu c2ZhdHRyLmxpc3RbMTVdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFsxNV0ucm9vdCA9IDAK K2Euc2ZhdHRyLmxpc3RbMTVdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMTVdLm5hbWUgPSAi bmFtZS4xNiIKK2Euc2ZhdHRyLmxpc3RbMTVdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlz dFsxNl0ubmFtZWxlbiA9IDcKK2Euc2ZhdHRyLmxpc3RbMTZdLnZhbHVlbGVuID0gNQorYS5zZmF0 dHIubGlzdFsxNl0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMTZdLnNlY3VyZSA9IDAKK2Euc2Zh dHRyLmxpc3RbMTZdLm5hbWUgPSAibmFtZS4xNyIKK2Euc2ZhdHRyLmxpc3RbMTZdLnZhbHVlID0g InZhbHVlIgorYS5zZmF0dHIubGlzdFsxN10ubmFtZWxlbiA9IDcKK2Euc2ZhdHRyLmxpc3RbMTdd LnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFsxN10ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3Rb MTddLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMTddLm5hbWUgPSAibmFtZS4xOCIKK2Euc2Zh dHRyLmxpc3RbMTddLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFsxOF0ubmFtZWxlbiA9 IDcKK2Euc2ZhdHRyLmxpc3RbMThdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFsxOF0ucm9v dCA9IDAKK2Euc2ZhdHRyLmxpc3RbMThdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMThdLm5h bWUgPSAibmFtZS4xOSIKK2Euc2ZhdHRyLmxpc3RbMThdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0 dHIubGlzdFsxOV0ubmFtZWxlbiA9IDcKK2Euc2ZhdHRyLmxpc3RbMTldLnZhbHVlbGVuID0gNQor YS5zZmF0dHIubGlzdFsxOV0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMTldLnNlY3VyZSA9IDAK K2Euc2ZhdHRyLmxpc3RbMTldLm5hbWUgPSAibmFtZS4yMCIKK2Euc2ZhdHRyLmxpc3RbMTldLnZh bHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFsyMF0ubmFtZWxlbiA9IDcKK2Euc2ZhdHRyLmxp c3RbMjBdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFsyMF0ucm9vdCA9IDAKK2Euc2ZhdHRy Lmxpc3RbMjBdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMjBdLm5hbWUgPSAibmFtZS4yMSIK K2Euc2ZhdHRyLmxpc3RbMjBdLnZhbHVlID0gInZhbHVlIgogCiAqKiBhZGQgMjIuLjIyIEVBcyAq KgogY29yZS5mb3JtYXQgPSAyIChleHRlbnRzKQogY29yZS5zaXplID0gMAogY29yZS5leHRzaXpl ID0gMAogY29yZS5uZXh0ZW50cyA9IDAKLWNvcmUubmFleHRlbnRzID0gMQotY29yZS5mb3Jrb2Zm ID0gMjQgKDE5MiBieXRlcykKLWNvcmUuYWZvcm1hdCA9IDIgKGV4dGVudHMpCi1hLmJteFswXSA9 IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNiwxLDBd Citjb3JlLm5hZXh0ZW50cyA9IDAKK2NvcmUuZm9ya29mZiA9IDEwICg4MCBieXRlcykKK2NvcmUu YWZvcm1hdCA9IDEgKGxvY2FsKQorYS5zZmF0dHIuaGRyLnRvdHNpemUgPSAzMjUKK2Euc2ZhdHRy Lmhkci5jb3VudCA9IDIyCithLnNmYXR0ci5saXN0WzBdLm5hbWVsZW4gPSA2CithLnNmYXR0ci5s aXN0WzBdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFswXS5yb290ID0gMAorYS5zZmF0dHIu bGlzdFswXS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzBdLm5hbWUgPSAibmFtZS4xIgorYS5z ZmF0dHIubGlzdFswXS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbMV0ubmFtZWxlbiA9 IDYKK2Euc2ZhdHRyLmxpc3RbMV0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzFdLnJvb3Qg PSAwCithLnNmYXR0ci5saXN0WzFdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMV0ubmFtZSA9 ICJuYW1lLjIiCithLnNmYXR0ci5saXN0WzFdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlz dFsyXS5uYW1lbGVuID0gNgorYS5zZmF0dHIubGlzdFsyXS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRy Lmxpc3RbMl0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMl0uc2VjdXJlID0gMAorYS5zZmF0dHIu bGlzdFsyXS5uYW1lID0gIm5hbWUuMyIKK2Euc2ZhdHRyLmxpc3RbMl0udmFsdWUgPSAidmFsdWUi CithLnNmYXR0ci5saXN0WzNdLm5hbWVsZW4gPSA2CithLnNmYXR0ci5saXN0WzNdLnZhbHVlbGVu ID0gNQorYS5zZmF0dHIubGlzdFszXS5yb290ID0gMAorYS5zZmF0dHIubGlzdFszXS5zZWN1cmUg PSAwCithLnNmYXR0ci5saXN0WzNdLm5hbWUgPSAibmFtZS40IgorYS5zZmF0dHIubGlzdFszXS52 YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbNF0ubmFtZWxlbiA9IDYKK2Euc2ZhdHRyLmxp c3RbNF0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzRdLnJvb3QgPSAwCithLnNmYXR0ci5s aXN0WzRdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbNF0ubmFtZSA9ICJuYW1lLjUiCithLnNm YXR0ci5saXN0WzRdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFs1XS5uYW1lbGVuID0g NgorYS5zZmF0dHIubGlzdFs1XS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbNV0ucm9vdCA9 IDAKK2Euc2ZhdHRyLmxpc3RbNV0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFs1XS5uYW1lID0g Im5hbWUuNiIKK2Euc2ZhdHRyLmxpc3RbNV0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0 WzZdLm5hbWVsZW4gPSA2CithLnNmYXR0ci5saXN0WzZdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIu bGlzdFs2XS5yb290ID0gMAorYS5zZmF0dHIubGlzdFs2XS5zZWN1cmUgPSAwCithLnNmYXR0ci5s aXN0WzZdLm5hbWUgPSAibmFtZS43IgorYS5zZmF0dHIubGlzdFs2XS52YWx1ZSA9ICJ2YWx1ZSIK K2Euc2ZhdHRyLmxpc3RbN10ubmFtZWxlbiA9IDYKK2Euc2ZhdHRyLmxpc3RbN10udmFsdWVsZW4g PSA1CithLnNmYXR0ci5saXN0WzddLnJvb3QgPSAwCithLnNmYXR0ci5saXN0WzddLnNlY3VyZSA9 IDAKK2Euc2ZhdHRyLmxpc3RbN10ubmFtZSA9ICJuYW1lLjgiCithLnNmYXR0ci5saXN0WzddLnZh bHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFs4XS5uYW1lbGVuID0gNgorYS5zZmF0dHIubGlz dFs4XS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbOF0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxp c3RbOF0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFs4XS5uYW1lID0gIm5hbWUuOSIKK2Euc2Zh dHRyLmxpc3RbOF0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzldLm5hbWVsZW4gPSA3 CithLnNmYXR0ci5saXN0WzldLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFs5XS5yb290ID0g MAorYS5zZmF0dHIubGlzdFs5XS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzldLm5hbWUgPSAi bmFtZS4xMCIKK2Euc2ZhdHRyLmxpc3RbOV0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0 WzEwXS5uYW1lbGVuID0gNworYS5zZmF0dHIubGlzdFsxMF0udmFsdWVsZW4gPSA1CithLnNmYXR0 ci5saXN0WzEwXS5yb290ID0gMAorYS5zZmF0dHIubGlzdFsxMF0uc2VjdXJlID0gMAorYS5zZmF0 dHIubGlzdFsxMF0ubmFtZSA9ICJuYW1lLjExIgorYS5zZmF0dHIubGlzdFsxMF0udmFsdWUgPSAi dmFsdWUiCithLnNmYXR0ci5saXN0WzExXS5uYW1lbGVuID0gNworYS5zZmF0dHIubGlzdFsxMV0u dmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzExXS5yb290ID0gMAorYS5zZmF0dHIubGlzdFsx MV0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFsxMV0ubmFtZSA9ICJuYW1lLjEyIgorYS5zZmF0 dHIubGlzdFsxMV0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzEyXS5uYW1lbGVuID0g NworYS5zZmF0dHIubGlzdFsxMl0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzEyXS5yb290 ID0gMAorYS5zZmF0dHIubGlzdFsxMl0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFsxMl0ubmFt ZSA9ICJuYW1lLjEzIgorYS5zZmF0dHIubGlzdFsxMl0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0 ci5saXN0WzEzXS5uYW1lbGVuID0gNworYS5zZmF0dHIubGlzdFsxM10udmFsdWVsZW4gPSA1Cith LnNmYXR0ci5saXN0WzEzXS5yb290ID0gMAorYS5zZmF0dHIubGlzdFsxM10uc2VjdXJlID0gMAor YS5zZmF0dHIubGlzdFsxM10ubmFtZSA9ICJuYW1lLjE0IgorYS5zZmF0dHIubGlzdFsxM10udmFs dWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzE0XS5uYW1lbGVuID0gNworYS5zZmF0dHIubGlz dFsxNF0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzE0XS5yb290ID0gMAorYS5zZmF0dHIu bGlzdFsxNF0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFsxNF0ubmFtZSA9ICJuYW1lLjE1Igor YS5zZmF0dHIubGlzdFsxNF0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzE1XS5uYW1l bGVuID0gNworYS5zZmF0dHIubGlzdFsxNV0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzE1 XS5yb290ID0gMAorYS5zZmF0dHIubGlzdFsxNV0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFsx NV0ubmFtZSA9ICJuYW1lLjE2IgorYS5zZmF0dHIubGlzdFsxNV0udmFsdWUgPSAidmFsdWUiCith LnNmYXR0ci5saXN0WzE2XS5uYW1lbGVuID0gNworYS5zZmF0dHIubGlzdFsxNl0udmFsdWVsZW4g PSA1CithLnNmYXR0ci5saXN0WzE2XS5yb290ID0gMAorYS5zZmF0dHIubGlzdFsxNl0uc2VjdXJl ID0gMAorYS5zZmF0dHIubGlzdFsxNl0ubmFtZSA9ICJuYW1lLjE3IgorYS5zZmF0dHIubGlzdFsx Nl0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzE3XS5uYW1lbGVuID0gNworYS5zZmF0 dHIubGlzdFsxN10udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzE3XS5yb290ID0gMAorYS5z ZmF0dHIubGlzdFsxN10uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFsxN10ubmFtZSA9ICJuYW1l LjE4IgorYS5zZmF0dHIubGlzdFsxN10udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzE4 XS5uYW1lbGVuID0gNworYS5zZmF0dHIubGlzdFsxOF0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5s aXN0WzE4XS5yb290ID0gMAorYS5zZmF0dHIubGlzdFsxOF0uc2VjdXJlID0gMAorYS5zZmF0dHIu bGlzdFsxOF0ubmFtZSA9ICJuYW1lLjE5IgorYS5zZmF0dHIubGlzdFsxOF0udmFsdWUgPSAidmFs dWUiCithLnNmYXR0ci5saXN0WzE5XS5uYW1lbGVuID0gNworYS5zZmF0dHIubGlzdFsxOV0udmFs dWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzE5XS5yb290ID0gMAorYS5zZmF0dHIubGlzdFsxOV0u c2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFsxOV0ubmFtZSA9ICJuYW1lLjIwIgorYS5zZmF0dHIu bGlzdFsxOV0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzIwXS5uYW1lbGVuID0gNwor YS5zZmF0dHIubGlzdFsyMF0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzIwXS5yb290ID0g MAorYS5zZmF0dHIubGlzdFsyMF0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFsyMF0ubmFtZSA9 ICJuYW1lLjIxIgorYS5zZmF0dHIubGlzdFsyMF0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5s aXN0WzIxXS5uYW1lbGVuID0gNworYS5zZmF0dHIubGlzdFsyMV0udmFsdWVsZW4gPSA1CithLnNm YXR0ci5saXN0WzIxXS5yb290ID0gMAorYS5zZmF0dHIubGlzdFsyMV0uc2VjdXJlID0gMAorYS5z ZmF0dHIubGlzdFsyMV0ubmFtZSA9ICJuYW1lLjIyIgorYS5zZmF0dHIubGlzdFsyMV0udmFsdWUg PSAidmFsdWUiCiAKICoqIGFkZCAyMy4uMjMgRUFzICoqCiBjb3JlLmZvcm1hdCA9IDIgKGV4dGVu dHMpCiBjb3JlLnNpemUgPSAwCiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMAot Y29yZS5uYWV4dGVudHMgPSAxCi1jb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQotY29yZS5h Zm9ybWF0ID0gMiAoZXh0ZW50cykKLWEuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxv Y2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE2LDEsMF0KK2NvcmUubmFleHRlbnRzID0gMAorY29y ZS5mb3Jrb2ZmID0gOSAoNzIgYnl0ZXMpCitjb3JlLmFmb3JtYXQgPSAxIChsb2NhbCkKK2Euc2Zh dHRyLmhkci50b3RzaXplID0gMzQwCithLnNmYXR0ci5oZHIuY291bnQgPSAyMworYS5zZmF0dHIu bGlzdFswXS5uYW1lbGVuID0gNgorYS5zZmF0dHIubGlzdFswXS52YWx1ZWxlbiA9IDUKK2Euc2Zh dHRyLmxpc3RbMF0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMF0uc2VjdXJlID0gMAorYS5zZmF0 dHIubGlzdFswXS5uYW1lID0gIm5hbWUuMSIKK2Euc2ZhdHRyLmxpc3RbMF0udmFsdWUgPSAidmFs dWUiCithLnNmYXR0ci5saXN0WzFdLm5hbWVsZW4gPSA2CithLnNmYXR0ci5saXN0WzFdLnZhbHVl bGVuID0gNQorYS5zZmF0dHIubGlzdFsxXS5yb290ID0gMAorYS5zZmF0dHIubGlzdFsxXS5zZWN1 cmUgPSAwCithLnNmYXR0ci5saXN0WzFdLm5hbWUgPSAibmFtZS4yIgorYS5zZmF0dHIubGlzdFsx XS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbMl0ubmFtZWxlbiA9IDYKK2Euc2ZhdHRy Lmxpc3RbMl0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzJdLnJvb3QgPSAwCithLnNmYXR0 ci5saXN0WzJdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMl0ubmFtZSA9ICJuYW1lLjMiCith LnNmYXR0ci5saXN0WzJdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFszXS5uYW1lbGVu ID0gNgorYS5zZmF0dHIubGlzdFszXS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbM10ucm9v dCA9IDAKK2Euc2ZhdHRyLmxpc3RbM10uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFszXS5uYW1l ID0gIm5hbWUuNCIKK2Euc2ZhdHRyLmxpc3RbM10udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5s aXN0WzRdLm5hbWVsZW4gPSA2CithLnNmYXR0ci5saXN0WzRdLnZhbHVlbGVuID0gNQorYS5zZmF0 dHIubGlzdFs0XS5yb290ID0gMAorYS5zZmF0dHIubGlzdFs0XS5zZWN1cmUgPSAwCithLnNmYXR0 ci5saXN0WzRdLm5hbWUgPSAibmFtZS41IgorYS5zZmF0dHIubGlzdFs0XS52YWx1ZSA9ICJ2YWx1 ZSIKK2Euc2ZhdHRyLmxpc3RbNV0ubmFtZWxlbiA9IDYKK2Euc2ZhdHRyLmxpc3RbNV0udmFsdWVs ZW4gPSA1CithLnNmYXR0ci5saXN0WzVdLnJvb3QgPSAwCithLnNmYXR0ci5saXN0WzVdLnNlY3Vy ZSA9IDAKK2Euc2ZhdHRyLmxpc3RbNV0ubmFtZSA9ICJuYW1lLjYiCithLnNmYXR0ci5saXN0WzVd LnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFs2XS5uYW1lbGVuID0gNgorYS5zZmF0dHIu bGlzdFs2XS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbNl0ucm9vdCA9IDAKK2Euc2ZhdHRy Lmxpc3RbNl0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFs2XS5uYW1lID0gIm5hbWUuNyIKK2Eu c2ZhdHRyLmxpc3RbNl0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzddLm5hbWVsZW4g PSA2CithLnNmYXR0ci5saXN0WzddLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFs3XS5yb290 ID0gMAorYS5zZmF0dHIubGlzdFs3XS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzddLm5hbWUg PSAibmFtZS44IgorYS5zZmF0dHIubGlzdFs3XS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxp c3RbOF0ubmFtZWxlbiA9IDYKK2Euc2ZhdHRyLmxpc3RbOF0udmFsdWVsZW4gPSA1CithLnNmYXR0 ci5saXN0WzhdLnJvb3QgPSAwCithLnNmYXR0ci5saXN0WzhdLnNlY3VyZSA9IDAKK2Euc2ZhdHRy Lmxpc3RbOF0ubmFtZSA9ICJuYW1lLjkiCithLnNmYXR0ci5saXN0WzhdLnZhbHVlID0gInZhbHVl IgorYS5zZmF0dHIubGlzdFs5XS5uYW1lbGVuID0gNworYS5zZmF0dHIubGlzdFs5XS52YWx1ZWxl biA9IDUKK2Euc2ZhdHRyLmxpc3RbOV0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbOV0uc2VjdXJl ID0gMAorYS5zZmF0dHIubGlzdFs5XS5uYW1lID0gIm5hbWUuMTAiCithLnNmYXR0ci5saXN0Wzld LnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFsxMF0ubmFtZWxlbiA9IDcKK2Euc2ZhdHRy Lmxpc3RbMTBdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFsxMF0ucm9vdCA9IDAKK2Euc2Zh dHRyLmxpc3RbMTBdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMTBdLm5hbWUgPSAibmFtZS4x MSIKK2Euc2ZhdHRyLmxpc3RbMTBdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFsxMV0u bmFtZWxlbiA9IDcKK2Euc2ZhdHRyLmxpc3RbMTFdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlz dFsxMV0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMTFdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxp c3RbMTFdLm5hbWUgPSAibmFtZS4xMiIKK2Euc2ZhdHRyLmxpc3RbMTFdLnZhbHVlID0gInZhbHVl IgorYS5zZmF0dHIubGlzdFsxMl0ubmFtZWxlbiA9IDcKK2Euc2ZhdHRyLmxpc3RbMTJdLnZhbHVl bGVuID0gNQorYS5zZmF0dHIubGlzdFsxMl0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMTJdLnNl Y3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMTJdLm5hbWUgPSAibmFtZS4xMyIKK2Euc2ZhdHRyLmxp c3RbMTJdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFsxM10ubmFtZWxlbiA9IDcKK2Eu c2ZhdHRyLmxpc3RbMTNdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFsxM10ucm9vdCA9IDAK K2Euc2ZhdHRyLmxpc3RbMTNdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMTNdLm5hbWUgPSAi bmFtZS4xNCIKK2Euc2ZhdHRyLmxpc3RbMTNdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlz dFsxNF0ubmFtZWxlbiA9IDcKK2Euc2ZhdHRyLmxpc3RbMTRdLnZhbHVlbGVuID0gNQorYS5zZmF0 dHIubGlzdFsxNF0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMTRdLnNlY3VyZSA9IDAKK2Euc2Zh dHRyLmxpc3RbMTRdLm5hbWUgPSAibmFtZS4xNSIKK2Euc2ZhdHRyLmxpc3RbMTRdLnZhbHVlID0g InZhbHVlIgorYS5zZmF0dHIubGlzdFsxNV0ubmFtZWxlbiA9IDcKK2Euc2ZhdHRyLmxpc3RbMTVd LnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFsxNV0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3Rb MTVdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMTVdLm5hbWUgPSAibmFtZS4xNiIKK2Euc2Zh dHRyLmxpc3RbMTVdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFsxNl0ubmFtZWxlbiA9 IDcKK2Euc2ZhdHRyLmxpc3RbMTZdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFsxNl0ucm9v dCA9IDAKK2Euc2ZhdHRyLmxpc3RbMTZdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMTZdLm5h bWUgPSAibmFtZS4xNyIKK2Euc2ZhdHRyLmxpc3RbMTZdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0 dHIubGlzdFsxN10ubmFtZWxlbiA9IDcKK2Euc2ZhdHRyLmxpc3RbMTddLnZhbHVlbGVuID0gNQor YS5zZmF0dHIubGlzdFsxN10ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMTddLnNlY3VyZSA9IDAK K2Euc2ZhdHRyLmxpc3RbMTddLm5hbWUgPSAibmFtZS4xOCIKK2Euc2ZhdHRyLmxpc3RbMTddLnZh bHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFsxOF0ubmFtZWxlbiA9IDcKK2Euc2ZhdHRyLmxp c3RbMThdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFsxOF0ucm9vdCA9IDAKK2Euc2ZhdHRy Lmxpc3RbMThdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMThdLm5hbWUgPSAibmFtZS4xOSIK K2Euc2ZhdHRyLmxpc3RbMThdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFsxOV0ubmFt ZWxlbiA9IDcKK2Euc2ZhdHRyLmxpc3RbMTldLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFsx OV0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMTldLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3Rb MTldLm5hbWUgPSAibmFtZS4yMCIKK2Euc2ZhdHRyLmxpc3RbMTldLnZhbHVlID0gInZhbHVlIgor YS5zZmF0dHIubGlzdFsyMF0ubmFtZWxlbiA9IDcKK2Euc2ZhdHRyLmxpc3RbMjBdLnZhbHVlbGVu ID0gNQorYS5zZmF0dHIubGlzdFsyMF0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMjBdLnNlY3Vy ZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMjBdLm5hbWUgPSAibmFtZS4yMSIKK2Euc2ZhdHRyLmxpc3Rb MjBdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFsyMV0ubmFtZWxlbiA9IDcKK2Euc2Zh dHRyLmxpc3RbMjFdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFsyMV0ucm9vdCA9IDAKK2Eu c2ZhdHRyLmxpc3RbMjFdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbMjFdLm5hbWUgPSAibmFt ZS4yMiIKK2Euc2ZhdHRyLmxpc3RbMjFdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFsy Ml0ubmFtZWxlbiA9IDcKK2Euc2ZhdHRyLmxpc3RbMjJdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIu bGlzdFsyMl0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMjJdLnNlY3VyZSA9IDAKK2Euc2ZhdHRy Lmxpc3RbMjJdLm5hbWUgPSAibmFtZS4yMyIKK2Euc2ZhdHRyLmxpc3RbMjJdLnZhbHVlID0gInZh bHVlIgogCiAqKiBhZGQgMjQuLjI0IEVBcyAqKgogY29yZS5mb3JtYXQgPSAyIChleHRlbnRzKQog Y29yZS5zaXplID0gMAogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDAKLWNvcmUu bmFleHRlbnRzID0gMQotY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNvcmUuYWZvcm1h dCA9IDIgKGV4dGVudHMpCi1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291 bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNiwxLDBdCitjb3JlLm5hZXh0ZW50cyA9IDAKK2NvcmUuZm9y a29mZiA9IDcgKDU2IGJ5dGVzKQorY29yZS5hZm9ybWF0ID0gMSAobG9jYWwpCithLnNmYXR0ci5o ZHIudG90c2l6ZSA9IDM1NQorYS5zZmF0dHIuaGRyLmNvdW50ID0gMjQKK2Euc2ZhdHRyLmxpc3Rb MF0ubmFtZWxlbiA9IDYKK2Euc2ZhdHRyLmxpc3RbMF0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5s aXN0WzBdLnJvb3QgPSAwCithLnNmYXR0ci5saXN0WzBdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxp c3RbMF0ubmFtZSA9ICJuYW1lLjEiCithLnNmYXR0ci5saXN0WzBdLnZhbHVlID0gInZhbHVlIgor YS5zZmF0dHIubGlzdFsxXS5uYW1lbGVuID0gNgorYS5zZmF0dHIubGlzdFsxXS52YWx1ZWxlbiA9 IDUKK2Euc2ZhdHRyLmxpc3RbMV0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMV0uc2VjdXJlID0g MAorYS5zZmF0dHIubGlzdFsxXS5uYW1lID0gIm5hbWUuMiIKK2Euc2ZhdHRyLmxpc3RbMV0udmFs dWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzJdLm5hbWVsZW4gPSA2CithLnNmYXR0ci5saXN0 WzJdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFsyXS5yb290ID0gMAorYS5zZmF0dHIubGlz dFsyXS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzJdLm5hbWUgPSAibmFtZS4zIgorYS5zZmF0 dHIubGlzdFsyXS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbM10ubmFtZWxlbiA9IDYK K2Euc2ZhdHRyLmxpc3RbM10udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzNdLnJvb3QgPSAw CithLnNmYXR0ci5saXN0WzNdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbM10ubmFtZSA9ICJu YW1lLjQiCithLnNmYXR0ci5saXN0WzNdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFs0 XS5uYW1lbGVuID0gNgorYS5zZmF0dHIubGlzdFs0XS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxp c3RbNF0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbNF0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlz dFs0XS5uYW1lID0gIm5hbWUuNSIKK2Euc2ZhdHRyLmxpc3RbNF0udmFsdWUgPSAidmFsdWUiCith LnNmYXR0ci5saXN0WzVdLm5hbWVsZW4gPSA2CithLnNmYXR0ci5saXN0WzVdLnZhbHVlbGVuID0g NQorYS5zZmF0dHIubGlzdFs1XS5yb290ID0gMAorYS5zZmF0dHIubGlzdFs1XS5zZWN1cmUgPSAw CithLnNmYXR0ci5saXN0WzVdLm5hbWUgPSAibmFtZS42IgorYS5zZmF0dHIubGlzdFs1XS52YWx1 ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbNl0ubmFtZWxlbiA9IDYKK2Euc2ZhdHRyLmxpc3Rb Nl0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzZdLnJvb3QgPSAwCithLnNmYXR0ci5saXN0 WzZdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbNl0ubmFtZSA9ICJuYW1lLjciCithLnNmYXR0 ci5saXN0WzZdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFs3XS5uYW1lbGVuID0gNgor YS5zZmF0dHIubGlzdFs3XS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbN10ucm9vdCA9IDAK K2Euc2ZhdHRyLmxpc3RbN10uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFs3XS5uYW1lID0gIm5h bWUuOCIKK2Euc2ZhdHRyLmxpc3RbN10udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0Wzhd Lm5hbWVsZW4gPSA2CithLnNmYXR0ci5saXN0WzhdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlz dFs4XS5yb290ID0gMAorYS5zZmF0dHIubGlzdFs4XS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0 WzhdLm5hbWUgPSAibmFtZS45IgorYS5zZmF0dHIubGlzdFs4XS52YWx1ZSA9ICJ2YWx1ZSIKK2Eu c2ZhdHRyLmxpc3RbOV0ubmFtZWxlbiA9IDcKK2Euc2ZhdHRyLmxpc3RbOV0udmFsdWVsZW4gPSA1 CithLnNmYXR0ci5saXN0WzldLnJvb3QgPSAwCithLnNmYXR0ci5saXN0WzldLnNlY3VyZSA9IDAK K2Euc2ZhdHRyLmxpc3RbOV0ubmFtZSA9ICJuYW1lLjEwIgorYS5zZmF0dHIubGlzdFs5XS52YWx1 ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbMTBdLm5hbWVsZW4gPSA3CithLnNmYXR0ci5saXN0 WzEwXS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbMTBdLnJvb3QgPSAwCithLnNmYXR0ci5s aXN0WzEwXS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzEwXS5uYW1lID0gIm5hbWUuMTEiCith LnNmYXR0ci5saXN0WzEwXS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbMTFdLm5hbWVs ZW4gPSA3CithLnNmYXR0ci5saXN0WzExXS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbMTFd LnJvb3QgPSAwCithLnNmYXR0ci5saXN0WzExXS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzEx XS5uYW1lID0gIm5hbWUuMTIiCithLnNmYXR0ci5saXN0WzExXS52YWx1ZSA9ICJ2YWx1ZSIKK2Eu c2ZhdHRyLmxpc3RbMTJdLm5hbWVsZW4gPSA3CithLnNmYXR0ci5saXN0WzEyXS52YWx1ZWxlbiA9 IDUKK2Euc2ZhdHRyLmxpc3RbMTJdLnJvb3QgPSAwCithLnNmYXR0ci5saXN0WzEyXS5zZWN1cmUg PSAwCithLnNmYXR0ci5saXN0WzEyXS5uYW1lID0gIm5hbWUuMTMiCithLnNmYXR0ci5saXN0WzEy XS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbMTNdLm5hbWVsZW4gPSA3CithLnNmYXR0 ci5saXN0WzEzXS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbMTNdLnJvb3QgPSAwCithLnNm YXR0ci5saXN0WzEzXS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzEzXS5uYW1lID0gIm5hbWUu MTQiCithLnNmYXR0ci5saXN0WzEzXS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbMTRd Lm5hbWVsZW4gPSA3CithLnNmYXR0ci5saXN0WzE0XS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxp c3RbMTRdLnJvb3QgPSAwCithLnNmYXR0ci5saXN0WzE0XS5zZWN1cmUgPSAwCithLnNmYXR0ci5s aXN0WzE0XS5uYW1lID0gIm5hbWUuMTUiCithLnNmYXR0ci5saXN0WzE0XS52YWx1ZSA9ICJ2YWx1 ZSIKK2Euc2ZhdHRyLmxpc3RbMTVdLm5hbWVsZW4gPSA3CithLnNmYXR0ci5saXN0WzE1XS52YWx1 ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbMTVdLnJvb3QgPSAwCithLnNmYXR0ci5saXN0WzE1XS5z ZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzE1XS5uYW1lID0gIm5hbWUuMTYiCithLnNmYXR0ci5s aXN0WzE1XS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbMTZdLm5hbWVsZW4gPSA3Cith LnNmYXR0ci5saXN0WzE2XS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbMTZdLnJvb3QgPSAw CithLnNmYXR0ci5saXN0WzE2XS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzE2XS5uYW1lID0g Im5hbWUuMTciCithLnNmYXR0ci5saXN0WzE2XS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxp c3RbMTddLm5hbWVsZW4gPSA3CithLnNmYXR0ci5saXN0WzE3XS52YWx1ZWxlbiA9IDUKK2Euc2Zh dHRyLmxpc3RbMTddLnJvb3QgPSAwCithLnNmYXR0ci5saXN0WzE3XS5zZWN1cmUgPSAwCithLnNm YXR0ci5saXN0WzE3XS5uYW1lID0gIm5hbWUuMTgiCithLnNmYXR0ci5saXN0WzE3XS52YWx1ZSA9 ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbMThdLm5hbWVsZW4gPSA3CithLnNmYXR0ci5saXN0WzE4 XS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbMThdLnJvb3QgPSAwCithLnNmYXR0ci5saXN0 WzE4XS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzE4XS5uYW1lID0gIm5hbWUuMTkiCithLnNm YXR0ci5saXN0WzE4XS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbMTldLm5hbWVsZW4g PSA3CithLnNmYXR0ci5saXN0WzE5XS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbMTldLnJv b3QgPSAwCithLnNmYXR0ci5saXN0WzE5XS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzE5XS5u YW1lID0gIm5hbWUuMjAiCithLnNmYXR0ci5saXN0WzE5XS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2Zh dHRyLmxpc3RbMjBdLm5hbWVsZW4gPSA3CithLnNmYXR0ci5saXN0WzIwXS52YWx1ZWxlbiA9IDUK K2Euc2ZhdHRyLmxpc3RbMjBdLnJvb3QgPSAwCithLnNmYXR0ci5saXN0WzIwXS5zZWN1cmUgPSAw CithLnNmYXR0ci5saXN0WzIwXS5uYW1lID0gIm5hbWUuMjEiCithLnNmYXR0ci5saXN0WzIwXS52 YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbMjFdLm5hbWVsZW4gPSA3CithLnNmYXR0ci5s aXN0WzIxXS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbMjFdLnJvb3QgPSAwCithLnNmYXR0 ci5saXN0WzIxXS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzIxXS5uYW1lID0gIm5hbWUuMjIi CithLnNmYXR0ci5saXN0WzIxXS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbMjJdLm5h bWVsZW4gPSA3CithLnNmYXR0ci5saXN0WzIyXS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3Rb MjJdLnJvb3QgPSAwCithLnNmYXR0ci5saXN0WzIyXS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0 WzIyXS5uYW1lID0gIm5hbWUuMjMiCithLnNmYXR0ci5saXN0WzIyXS52YWx1ZSA9ICJ2YWx1ZSIK K2Euc2ZhdHRyLmxpc3RbMjNdLm5hbWVsZW4gPSA3CithLnNmYXR0ci5saXN0WzIzXS52YWx1ZWxl biA9IDUKK2Euc2ZhdHRyLmxpc3RbMjNdLnJvb3QgPSAwCithLnNmYXR0ci5saXN0WzIzXS5zZWN1 cmUgPSAwCithLnNmYXR0ci5saXN0WzIzXS5uYW1lID0gIm5hbWUuMjQiCithLnNmYXR0ci5saXN0 WzIzXS52YWx1ZSA9ICJ2YWx1ZSIKIAogKiogYWRkIDI1Li4yNSBFQXMgKioKIGNvcmUuZm9ybWF0 ID0gMiAoZXh0ZW50cykKQEAgLTIzOCw3ICs5ODEsNyBAQAogY29yZS5leHRzaXplID0gMAogY29y ZS5uZXh0ZW50cyA9IDAKIGNvcmUubmFleHRlbnRzID0gMAotY29yZS5mb3Jrb2ZmID0gMjQgKDE5 MiBieXRlcykKK2NvcmUuZm9ya29mZiA9IDQ3ICgzNzYgYnl0ZXMpCiBjb3JlLmFmb3JtYXQgPSAx IChsb2NhbCkKIGEuc2ZhdHRyLmhkci50b3RzaXplID0gMTkKIGEuc2ZhdHRyLmhkci5jb3VudCA9 IDEKQEAgLTI1NSw3ICs5OTgsNyBAQAogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9 IDEKIGNvcmUubmFleHRlbnRzID0gMAotY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKK2Nv cmUuZm9ya29mZiA9IDQ3ICgzNzYgYnl0ZXMpCiBjb3JlLmFmb3JtYXQgPSAxIChsb2NhbCkKIHUu Ym14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlsw LDE2LDEsMF0KIGEuc2ZhdHRyLmhkci50b3RzaXplID0gMTkKQEAgLTI2OCwxNCArMTAxMSwxNyBA QAogYS5zZmF0dHIubGlzdFswXS52YWx1ZSA9ICJ2YWx1ZSIKIAogKiogMyBleHRlbnRzICoqCit1 bW91bnQ6IC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0OiBkZXZpY2UgaXMgYnVz eS4KKyAgICAgICAgKEluIHNvbWUgY2FzZXMgdXNlZnVsIGluZm8gYWJvdXQgcHJvY2Vzc2VzIHRo YXQgdXNlCisgICAgICAgICB0aGUgZGV2aWNlIGlzIGZvdW5kIGJ5IGxzb2YoOCkgb3IgZnVzZXIo MSkpCiBjb3JlLmZvcm1hdCA9IDIgKGV4dGVudHMpCi1jb3JlLnNpemUgPSAyNjI2NTYKK2NvcmUu c2l6ZSA9IDUxMgogY29yZS5leHRzaXplID0gMAotY29yZS5uZXh0ZW50cyA9IDMKK2NvcmUubmV4 dGVudHMgPSAxCiBjb3JlLm5hZXh0ZW50cyA9IDAKLWNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0 ZXMpCitjb3JlLmZvcmtvZmYgPSA0NyAoMzc2IGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMSAobG9j YWwpCi11LmJteFswLTJdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRm bGFnXSAwOlswLDE2LDEsMF0gMTpbMzIsNDgsMTYsMF0gMjpbNjQsODAsMSwwXQordS5ibXhbMF0g PSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTYsMSww XQogYS5zZmF0dHIuaGRyLnRvdHNpemUgPSAxOQogYS5zZmF0dHIuaGRyLmNvdW50ID0gMQogYS5z ZmF0dHIubGlzdFswXS5uYW1lbGVuID0gNwpAQCAtMjg0LDYgKzEwMzAsOCBAQAogYS5zZmF0dHIu bGlzdFswXS5zZWN1cmUgPSAwCiBhLnNmYXR0ci5saXN0WzBdLm5hbWUgPSAibmFtZS4zNSIKIGEu c2ZhdHRyLmxpc3RbMF0udmFsdWUgPSAidmFsdWUiCittb3VudDogL2Rldi9zZGI0IGFscmVhZHkg bW91bnRlZCBvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNCBidXN5Cittb3Vu dDogYWNjb3JkaW5nIHRvIG10YWIsIC9kZXYvc2RiNCBpcyBhbHJlYWR5IG1vdW50ZWQgb24gL2hv bWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQKIAogKiogNSBleHRlbnRzICoqCiBjcmVh dGluZyAzIG1vcmUgaG9sZXMKQEAgLTI5Miw3ICsxMDQwLDcgQEAKIGNvcmUuZXh0c2l6ZSA9IDAK IGNvcmUubmV4dGVudHMgPSA1CiBjb3JlLm5hZXh0ZW50cyA9IDAKLWNvcmUuZm9ya29mZiA9IDI0 ICgxOTIgYnl0ZXMpCitjb3JlLmZvcmtvZmYgPSA0NyAoMzc2IGJ5dGVzKQogY29yZS5hZm9ybWF0 ID0gMSAobG9jYWwpCiB1LmJteFswLTRdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3Vu dCxleHRlbnRmbGFnXSAwOlswLDE2LDEsMF0gMTpbMzIsNDgsMTYsMF0gMjpbNjQsODAsMSwwXSAz Ols5NiwxMTIsMTYsMF0gNDpbMTI4LDE0NCwxLDBdCiBhLnNmYXR0ci5oZHIudG90c2l6ZSA9IDE5 CkBAIC0zMTEsNyArMTA1OSw3IEBACiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0g NwogY29yZS5uYWV4dGVudHMgPSAwCi1jb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQorY29y ZS5mb3Jrb2ZmID0gNDcgKDM3NiBieXRlcykKIGNvcmUuYWZvcm1hdCA9IDEgKGxvY2FsKQogdS5i bXhbMC02XSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpb MCwxNiwxLDBdIDE6WzMyLDQ4LDE2LDBdIDI6WzY0LDgwLDEsMF0gMzpbOTYsMTEyLDE2LDBdIDQ6 WzEyOCwxNDQsMSwwXSA1OlsxNjAsMTc2LDE2LDBdIDY6WzE5MiwyMDgsMSwwXQogYS5zZmF0dHIu aGRyLnRvdHNpemUgPSAxOQpAQCAtMzMwLDcgKzEwNzgsNyBAQAogY29yZS5leHRzaXplID0gMAog Y29yZS5uZXh0ZW50cyA9IDkKIGNvcmUubmFleHRlbnRzID0gMAotY29yZS5mb3Jrb2ZmID0gMjQg KDE5MiBieXRlcykKK2NvcmUuZm9ya29mZiA9IDQ3ICgzNzYgYnl0ZXMpCiBjb3JlLmFmb3JtYXQg PSAxIChsb2NhbCkKIHUuYm14WzAtOF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50 LGV4dGVudGZsYWddIDA6WzAsMTYsMSwwXSAxOlszMiw0OCwxNiwwXSAyOls2NCw4MCwxLDBdIDM6 Wzk2LDExMiwxNiwwXSA0OlsxMjgsMTQ0LDEsMF0gNTpbMTYwLDE3NiwxNiwwXSA2OlsxOTIsMjA4 LDEsMF0gNzpbMjI0LDI0MCwxNiwwXSA4OlsyNTYsMjcyLDEsMF0KIGEuc2ZhdHRyLmhkci50b3Rz aXplID0gMTkKQEAgLTM0OSw3ICsxMDk3LDcgQEAKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4 dGVudHMgPSAxMQogY29yZS5uYWV4dGVudHMgPSAwCi1jb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5 dGVzKQorY29yZS5mb3Jrb2ZmID0gNDcgKDM3NiBieXRlcykKIGNvcmUuYWZvcm1hdCA9IDEgKGxv Y2FsKQogdS5ibXhbMC0xMF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVu dGZsYWddIDA6WzAsMTYsMSwwXSAxOlszMiw0OCwxNiwwXSAyOls2NCw4MCwxLDBdIDM6Wzk2LDEx MiwxNiwwXSA0OlsxMjgsMTQ0LDEsMF0gNTpbMTYwLDE3NiwxNiwwXSA2OlsxOTIsMjA4LDEsMF0g NzpbMjI0LDI0MCwxNiwwXSA4OlsyNTYsMjcyLDEsMF0gOTpbMjg4LDMwNCwxNiwwXSAxMDpbMzIw LDMzNiwxLDBdCiBhLnNmYXR0ci5oZHIudG90c2l6ZSA9IDE5CkBAIC0zNjMsMTcgKzExMTEsMTQg QEAKIAogKiogMTMgZXh0ZW50cyAqKgogY3JlYXRpbmcgMyBtb3JlIGhvbGVzCi1jb3JlLmZvcm1h dCA9IDMgKGJ0cmVlKQorY29yZS5mb3JtYXQgPSAyIChleHRlbnRzKQogY29yZS5zaXplID0gMTU3 MzM3NgogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDEzCiBjb3JlLm5hZXh0ZW50 cyA9IDAKLWNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCitjb3JlLmZvcmtvZmYgPSA0NyAo Mzc2IGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMSAobG9jYWwpCi11LmJtYnQubGV2ZWwgPSAxCi11 LmJtYnQubnVtcmVjcyA9IDEKLXUuYm1idC5rZXlzWzFdID0gW3N0YXJ0b2ZmXSAxOlswXQotdS5i bWJ0LnB0cnNbMV0gPSAxOjM5OQordS5ibXhbMC0xMl0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxi bG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTYsMSwwXSAxOlszMiw0OCwxNiwwXSAyOls2NCw4 MCwxLDBdIDM6Wzk2LDExMiwxNiwwXSA0OlsxMjgsMTQ0LDEsMF0gNTpbMTYwLDE3NiwxNiwwXSA2 OlsxOTIsMjA4LDEsMF0gNzpbMjI0LDI0MCwxNiwwXSA4OlsyNTYsMjcyLDEsMF0gOTpbMjg4LDMw NCwxNiwwXSAxMDpbMzIwLDMzNiwxLDBdIDExOlszNTIsMzY4LDE2LDBdIDEyOlszODQsNDAwLDEs MF0KIGEuc2ZhdHRyLmhkci50b3RzaXplID0gMTkKIGEuc2ZhdHRyLmhkci5jb3VudCA9IDEKIGEu c2ZhdHRyLmxpc3RbMF0ubmFtZWxlbiA9IDcKQEAgLTM4NSwxNyArMTEzMCwxNCBAQAogCiAqKiAx NSBleHRlbnRzICoqCiBjcmVhdGluZyAzIG1vcmUgaG9sZXMKLWNvcmUuZm9ybWF0ID0gMyAoYnRy ZWUpCitjb3JlLmZvcm1hdCA9IDIgKGV4dGVudHMpCiBjb3JlLnNpemUgPSAxODM1NTIwCiBjb3Jl LmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMTUKIGNvcmUubmFleHRlbnRzID0gMAotY29y ZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKK2NvcmUuZm9ya29mZiA9IDQ3ICgzNzYgYnl0ZXMp CiBjb3JlLmFmb3JtYXQgPSAxIChsb2NhbCkKLXUuYm1idC5sZXZlbCA9IDEKLXUuYm1idC5udW1y ZWNzID0gMQotdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZdIDE6WzBdCi11LmJtYnQucHRyc1sx XSA9IDE6Mzk5Cit1LmJteFswLTE0XSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQs ZXh0ZW50ZmxhZ10gMDpbMCwxNiwxLDBdIDE6WzMyLDQ4LDE2LDBdIDI6WzY0LDgwLDEsMF0gMzpb OTYsMTEyLDE2LDBdIDQ6WzEyOCwxNDQsMSwwXSA1OlsxNjAsMTc2LDE2LDBdIDY6WzE5MiwyMDgs MSwwXSA3OlsyMjQsMjQwLDE2LDBdIDg6WzI1NiwyNzIsMSwwXSA5OlsyODgsMzA0LDE2LDBdIDEw OlszMjAsMzM2LDEsMF0gMTE6WzM1MiwzNjgsMTYsMF0gMTI6WzM4NCw0MDAsMSwwXSAxMzpbNDE2 LDQzMiwxNiwwXSAxNDpbNDQ4LDQ2NCwxLDBdCiBhLnNmYXR0ci5oZHIudG90c2l6ZSA9IDE5CiBh LnNmYXR0ci5oZHIuY291bnQgPSAxCiBhLnNmYXR0ci5saXN0WzBdLm5hbWVsZW4gPSA3CkBAIC00 MDcsMTcgKzExNDksMTQgQEAKIAogKiogMTcgZXh0ZW50cyAqKgogY3JlYXRpbmcgMyBtb3JlIGhv bGVzCi1jb3JlLmZvcm1hdCA9IDMgKGJ0cmVlKQorY29yZS5mb3JtYXQgPSAyIChleHRlbnRzKQog Y29yZS5zaXplID0gMjA5NzY2NAogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDE3 CiBjb3JlLm5hZXh0ZW50cyA9IDAKLWNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCitjb3Jl LmZvcmtvZmYgPSA0NyAoMzc2IGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMSAobG9jYWwpCi11LmJt YnQubGV2ZWwgPSAxCi11LmJtYnQubnVtcmVjcyA9IDEKLXUuYm1idC5rZXlzWzFdID0gW3N0YXJ0 b2ZmXSAxOlswXQotdS5ibWJ0LnB0cnNbMV0gPSAxOjM5OQordS5ibXhbMC0xNl0gPSBbc3RhcnRv ZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTYsMSwwXSAxOlszMiw0 OCwxNiwwXSAyOls2NCw4MCwxLDBdIDM6Wzk2LDExMiwxNiwwXSA0OlsxMjgsMTQ0LDEsMF0gNTpb MTYwLDE3NiwxNiwwXSA2OlsxOTIsMjA4LDEsMF0gNzpbMjI0LDI0MCwxNiwwXSA4OlsyNTYsMjcy LDEsMF0gOTpbMjg4LDMwNCwxNiwwXSAxMDpbMzIwLDMzNiwxLDBdIDExOlszNTIsMzY4LDE2LDBd IDEyOlszODQsNDAwLDEsMF0gMTM6WzQxNiw0MzIsMTYsMF0gMTQ6WzQ0OCw0NjQsMSwwXSAxNTpb NDgwLDQ5NiwxNiwwXSAxNjpbNTEyLDUyOCwxLDBdCiBhLnNmYXR0ci5oZHIudG90c2l6ZSA9IDE5 CiBhLnNmYXR0ci5oZHIuY291bnQgPSAxCiBhLnNmYXR0ci5saXN0WzBdLm5hbWVsZW4gPSA3CkBA IC00MjksMTcgKzExNjgsMTQgQEAKIAogKiogMTkgZXh0ZW50cyAqKgogY3JlYXRpbmcgMyBtb3Jl IGhvbGVzCi1jb3JlLmZvcm1hdCA9IDMgKGJ0cmVlKQorY29yZS5mb3JtYXQgPSAyIChleHRlbnRz KQogY29yZS5zaXplID0gMjM1OTgwOAogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9 IDE5CiBjb3JlLm5hZXh0ZW50cyA9IDAKLWNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCitj b3JlLmZvcmtvZmYgPSA0NyAoMzc2IGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMSAobG9jYWwpCi11 LmJtYnQubGV2ZWwgPSAxCi11LmJtYnQubnVtcmVjcyA9IDEKLXUuYm1idC5rZXlzWzFdID0gW3N0 YXJ0b2ZmXSAxOlswXQotdS5ibWJ0LnB0cnNbMV0gPSAxOjM5OQordS5ibXhbMC0xOF0gPSBbc3Rh cnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTYsMSwwXSAxOlsz Miw0OCwxNiwwXSAyOls2NCw4MCwxLDBdIDM6Wzk2LDExMiwxNiwwXSA0OlsxMjgsMTQ0LDEsMF0g NTpbMTYwLDE3NiwxNiwwXSA2OlsxOTIsMjA4LDEsMF0gNzpbMjI0LDI0MCwxNiwwXSA4OlsyNTYs MjcyLDEsMF0gOTpbMjg4LDMwNCwxNiwwXSAxMDpbMzIwLDMzNiwxLDBdIDExOlszNTIsMzY4LDE2 LDBdIDEyOlszODQsNDAwLDEsMF0gMTM6WzQxNiw0MzIsMTYsMF0gMTQ6WzQ0OCw0NjQsMSwwXSAx NTpbNDgwLDQ5NiwxNiwwXSAxNjpbNTEyLDUyOCwxLDBdIDE3Ols1NDQsNTYwLDE2LDBdIDE4Ols1 NzYsNTkyLDEsMF0KIGEuc2ZhdHRyLmhkci50b3RzaXplID0gMTkKIGEuc2ZhdHRyLmhkci5jb3Vu dCA9IDEKIGEuc2ZhdHRyLmxpc3RbMF0ubmFtZWxlbiA9IDcKQEAgLTQ1MSwxNyArMTE4NywxNCBA QAogCiAqKiAyMSBleHRlbnRzICoqCiBjcmVhdGluZyAzIG1vcmUgaG9sZXMKLWNvcmUuZm9ybWF0 ID0gMyAoYnRyZWUpCitjb3JlLmZvcm1hdCA9IDIgKGV4dGVudHMpCiBjb3JlLnNpemUgPSAyNjIx OTUyCiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMjEKIGNvcmUubmFleHRlbnRz ID0gMAotY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKK2NvcmUuZm9ya29mZiA9IDQ3ICgz NzYgYnl0ZXMpCiBjb3JlLmFmb3JtYXQgPSAxIChsb2NhbCkKLXUuYm1idC5sZXZlbCA9IDEKLXUu Ym1idC5udW1yZWNzID0gMQotdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZdIDE6WzBdCi11LmJt YnQucHRyc1sxXSA9IDE6Mzk5Cit1LmJteFswLTIwXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJs b2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNiwxLDBdIDE6WzMyLDQ4LDE2LDBdIDI6WzY0LDgw LDEsMF0gMzpbOTYsMTEyLDE2LDBdIDQ6WzEyOCwxNDQsMSwwXSA1OlsxNjAsMTc2LDE2LDBdIDY6 WzE5MiwyMDgsMSwwXSA3OlsyMjQsMjQwLDE2LDBdIDg6WzI1NiwyNzIsMSwwXSA5OlsyODgsMzA0 LDE2LDBdIDEwOlszMjAsMzM2LDEsMF0gMTE6WzM1MiwzNjgsMTYsMF0gMTI6WzM4NCw0MDAsMSww XSAxMzpbNDE2LDQzMiwxNiwwXSAxNDpbNDQ4LDQ2NCwxLDBdIDE1Ols0ODAsNDk2LDE2LDBdIDE2 Ols1MTIsNTI4LDEsMF0gMTc6WzU0NCw1NjAsMTYsMF0gMTg6WzU3Niw1OTIsMSwwXSAxOTpbNjA4 LDYyNCwxNiwwXSAyMDpbNjQwLDY1NiwxLDBdCiBhLnNmYXR0ci5oZHIudG90c2l6ZSA9IDE5CiBh LnNmYXR0ci5oZHIuY291bnQgPSAxCiBhLnNmYXR0ci5saXN0WzBdLm5hbWVsZW4gPSA3CkBAIC00 NzMsMTcgKzEyMDYsMTQgQEAKIAogKiogMjMgZXh0ZW50cyAqKgogY3JlYXRpbmcgMyBtb3JlIGhv bGVzCi1jb3JlLmZvcm1hdCA9IDMgKGJ0cmVlKQorY29yZS5mb3JtYXQgPSAyIChleHRlbnRzKQog Y29yZS5zaXplID0gMjg4NDA5NgogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDIz CiBjb3JlLm5hZXh0ZW50cyA9IDAKLWNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCitjb3Jl LmZvcmtvZmYgPSA0NyAoMzc2IGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMSAobG9jYWwpCi11LmJt YnQubGV2ZWwgPSAxCi11LmJtYnQubnVtcmVjcyA9IDEKLXUuYm1idC5rZXlzWzFdID0gW3N0YXJ0 b2ZmXSAxOlswXQotdS5ibWJ0LnB0cnNbMV0gPSAxOjM5OQordS5ibXhbMC0yMl0gPSBbc3RhcnRv ZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTYsMSwwXSAxOlszMiw0 OCwxNiwwXSAyOls2NCw4MCwxLDBdIDM6Wzk2LDExMiwxNiwwXSA0OlsxMjgsMTQ0LDEsMF0gNTpb MTYwLDE3NiwxNiwwXSA2OlsxOTIsMjA4LDEsMF0gNzpbMjI0LDI0MCwxNiwwXSA4OlsyNTYsMjcy LDEsMF0gOTpbMjg4LDMwNCwxNiwwXSAxMDpbMzIwLDMzNiwxLDBdIDExOlszNTIsMzY4LDE2LDBd IDEyOlszODQsNDAwLDEsMF0gMTM6WzQxNiw0MzIsMTYsMF0gMTQ6WzQ0OCw0NjQsMSwwXSAxNTpb NDgwLDQ5NiwxNiwwXSAxNjpbNTEyLDUyOCwxLDBdIDE3Ols1NDQsNTYwLDE2LDBdIDE4Ols1NzYs NTkyLDEsMF0gMTk6WzYwOCw2MjQsMTYsMF0gMjA6WzY0MCw2NTYsMSwwXSAyMTpbNjcyLDY4OCwx NiwwXSAyMjpbNzA0LDcyMCwxLDBdCiBhLnNmYXR0ci5oZHIudG90c2l6ZSA9IDE5CiBhLnNmYXR0 ci5oZHIuY291bnQgPSAxCiBhLnNmYXR0ci5saXN0WzBdLm5hbWVsZW4gPSA3CkBAIC01MDAsMTIg KzEyMzAsMTIgQEAKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAyNQogY29yZS5u YWV4dGVudHMgPSAwCi1jb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQorY29yZS5mb3Jrb2Zm ID0gNDcgKDM3NiBieXRlcykKIGNvcmUuYWZvcm1hdCA9IDEgKGxvY2FsKQogdS5ibWJ0LmxldmVs ID0gMQogdS5ibWJ0Lm51bXJlY3MgPSAxCiB1LmJtYnQua2V5c1sxXSA9IFtzdGFydG9mZl0gMTpb MF0KLXUuYm1idC5wdHJzWzFdID0gMTozOTkKK3UuYm1idC5wdHJzWzFdID0gMTo3NTEKIGEuc2Zh dHRyLmhkci50b3RzaXplID0gMTkKIGEuc2ZhdHRyLmhkci5jb3VudCA9IDEKIGEuc2ZhdHRyLmxp c3RbMF0ubmFtZWxlbiA9IDcKQEAgLTUyMiwxMiArMTI1MiwxMiBAQAogY29yZS5leHRzaXplID0g MAogY29yZS5uZXh0ZW50cyA9IDI3CiBjb3JlLm5hZXh0ZW50cyA9IDAKLWNvcmUuZm9ya29mZiA9 IDI0ICgxOTIgYnl0ZXMpCitjb3JlLmZvcmtvZmYgPSA0NyAoMzc2IGJ5dGVzKQogY29yZS5hZm9y bWF0ID0gMSAobG9jYWwpCiB1LmJtYnQubGV2ZWwgPSAxCiB1LmJtYnQubnVtcmVjcyA9IDEKIHUu Ym1idC5rZXlzWzFdID0gW3N0YXJ0b2ZmXSAxOlswXQotdS5ibWJ0LnB0cnNbMV0gPSAxOjM5OQor dS5ibWJ0LnB0cnNbMV0gPSAxOjc1MQogYS5zZmF0dHIuaGRyLnRvdHNpemUgPSAxOQogYS5zZmF0 dHIuaGRyLmNvdW50ID0gMQogYS5zZmF0dHIubGlzdFswXS5uYW1lbGVuID0gNwpAQCAtNTQ0LDEy ICsxMjc0LDEyIEBACiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMjkKIGNvcmUu bmFleHRlbnRzID0gMAotY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKK2NvcmUuZm9ya29m ZiA9IDQ3ICgzNzYgYnl0ZXMpCiBjb3JlLmFmb3JtYXQgPSAxIChsb2NhbCkKIHUuYm1idC5sZXZl bCA9IDEKIHUuYm1idC5udW1yZWNzID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZdIDE6 WzBdCi11LmJtYnQucHRyc1sxXSA9IDE6Mzk5Cit1LmJtYnQucHRyc1sxXSA9IDE6NzUxCiBhLnNm YXR0ci5oZHIudG90c2l6ZSA9IDE5CiBhLnNmYXR0ci5oZHIuY291bnQgPSAxCiBhLnNmYXR0ci5s aXN0WzBdLm5hbWVsZW4gPSA3CkBAIC01NjYsMTIgKzEyOTYsMTIgQEAKIGNvcmUuZXh0c2l6ZSA9 IDAKIGNvcmUubmV4dGVudHMgPSAzMAogY29yZS5uYWV4dGVudHMgPSAwCi1jb3JlLmZvcmtvZmYg PSAyNCAoMTkyIGJ5dGVzKQorY29yZS5mb3Jrb2ZmID0gNDcgKDM3NiBieXRlcykKIGNvcmUuYWZv cm1hdCA9IDEgKGxvY2FsKQogdS5ibWJ0LmxldmVsID0gMQogdS5ibWJ0Lm51bXJlY3MgPSAxCiB1 LmJtYnQua2V5c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KLXUuYm1idC5wdHJzWzFdID0gMTozOTkK K3UuYm1idC5wdHJzWzFdID0gMTo3NTEKIGEuc2ZhdHRyLmhkci50b3RzaXplID0gMTkKIGEuc2Zh dHRyLmhkci5jb3VudCA9IDEKIGEuc2ZhdHRyLmxpc3RbMF0ubmFtZWxlbiA9IDcKQEAgLTU4OCwx MiArMTMxOCwxMiBAQAogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDI4CiBjb3Jl Lm5hZXh0ZW50cyA9IDAKLWNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCitjb3JlLmZvcmtv ZmYgPSA0NyAoMzc2IGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMSAobG9jYWwpCiB1LmJtYnQubGV2 ZWwgPSAxCiB1LmJtYnQubnVtcmVjcyA9IDEKIHUuYm1idC5rZXlzWzFdID0gW3N0YXJ0b2ZmXSAx OlswXQotdS5ibWJ0LnB0cnNbMV0gPSAxOjM5OQordS5ibWJ0LnB0cnNbMV0gPSAxOjc1MQogYS5z ZmF0dHIuaGRyLnRvdHNpemUgPSAxOQogYS5zZmF0dHIuaGRyLmNvdW50ID0gMQogYS5zZmF0dHIu bGlzdFswXS5uYW1lbGVuID0gNwpAQCAtNjEwLDEyICsxMzQwLDEyIEBACiBjb3JlLmV4dHNpemUg PSAwCiBjb3JlLm5leHRlbnRzID0gMjYKIGNvcmUubmFleHRlbnRzID0gMAotY29yZS5mb3Jrb2Zm ID0gMjQgKDE5MiBieXRlcykKK2NvcmUuZm9ya29mZiA9IDQ3ICgzNzYgYnl0ZXMpCiBjb3JlLmFm b3JtYXQgPSAxIChsb2NhbCkKIHUuYm1idC5sZXZlbCA9IDEKIHUuYm1idC5udW1yZWNzID0gMQog dS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZdIDE6WzBdCi11LmJtYnQucHRyc1sxXSA9IDE6Mzk5 Cit1LmJtYnQucHRyc1sxXSA9IDE6NzUxCiBhLnNmYXR0ci5oZHIudG90c2l6ZSA9IDE5CiBhLnNm YXR0ci5oZHIuY291bnQgPSAxCiBhLnNmYXR0ci5saXN0WzBdLm5hbWVsZW4gPSA3CkBAIC02MzIs MTIgKzEzNjIsMTIgQEAKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAyNAogY29y ZS5uYWV4dGVudHMgPSAwCi1jb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQorY29yZS5mb3Jr b2ZmID0gNDcgKDM3NiBieXRlcykKIGNvcmUuYWZvcm1hdCA9IDEgKGxvY2FsKQogdS5ibWJ0Lmxl dmVsID0gMQogdS5ibWJ0Lm51bXJlY3MgPSAxCiB1LmJtYnQua2V5c1sxXSA9IFtzdGFydG9mZl0g MTpbMF0KLXUuYm1idC5wdHJzWzFdID0gMTozOTkKK3UuYm1idC5wdHJzWzFdID0gMTo3NTEKIGEu c2ZhdHRyLmhkci50b3RzaXplID0gMTkKIGEuc2ZhdHRyLmhkci5jb3VudCA9IDEKIGEuc2ZhdHRy Lmxpc3RbMF0ubmFtZWxlbiA9IDcKQEAgLTY0OSwxNyArMTM3OSwxNCBAQAogCiAqKiAyMiBleHRl bnRzICoqCiB0cnVuY2F0aW5nIGJhY2sgdG8gMjg4MzU4NAotY29yZS5mb3JtYXQgPSAzIChidHJl ZSkKK2NvcmUuZm9ybWF0ID0gMiAoZXh0ZW50cykKIGNvcmUuc2l6ZSA9IDI4ODM1ODQKIGNvcmUu ZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAyMgogY29yZS5uYWV4dGVudHMgPSAwCi1jb3Jl LmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQorY29yZS5mb3Jrb2ZmID0gNDcgKDM3NiBieXRlcykK IGNvcmUuYWZvcm1hdCA9IDEgKGxvY2FsKQotdS5ibWJ0LmxldmVsID0gMQotdS5ibWJ0Lm51bXJl Y3MgPSAxCi11LmJtYnQua2V5c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KLXUuYm1idC5wdHJzWzFd ID0gMTozOTkKK3UuYm14WzAtMjFdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxl eHRlbnRmbGFnXSAwOlswLDE2LDEsMF0gMTpbMzIsNDgsMTYsMF0gMjpbNjQsODAsMSwwXSAzOls5 NiwxMTIsMTYsMF0gNDpbMTI4LDE0NCwxLDBdIDU6WzE2MCwxNzYsMTYsMF0gNjpbMTkyLDIwOCwx LDBdIDc6WzIyNCwyNDAsMTYsMF0gODpbMjU2LDI3MiwxLDBdIDk6WzI4OCwzMDQsMTYsMF0gMTA6 WzMyMCwzMzYsMSwwXSAxMTpbMzUyLDM2OCwxNiwwXSAxMjpbMzg0LDQwMCwxLDBdIDEzOls0MTYs NDMyLDE2LDBdIDE0Ols0NDgsNDY0LDEsMF0gMTU6WzQ4MCw0OTYsMTYsMF0gMTY6WzUxMiw1Mjgs MSwwXSAxNzpbNTQ0LDU2MCwxNiwwXSAxODpbNTc2LDU5MiwxLDBdIDE5Ols2MDgsNjI0LDE2LDBd IDIwOls2NDAsNjU2LDEsMF0gMjE6WzY3Miw2ODgsMTYsMF0KIGEuc2ZhdHRyLmhkci50b3RzaXpl ID0gMTkKIGEuc2ZhdHRyLmhkci5jb3VudCA9IDEKIGEuc2ZhdHRyLmxpc3RbMF0ubmFtZWxlbiA9 IDcKQEAgLTY3MSwxNyArMTM5OCwxNCBAQAogCiAqKiAyMCBleHRlbnRzICoqCiB0cnVuY2F0aW5n IGJhY2sgdG8gMjYyMTQ0MAotY29yZS5mb3JtYXQgPSAzIChidHJlZSkKK2NvcmUuZm9ybWF0ID0g MiAoZXh0ZW50cykKIGNvcmUuc2l6ZSA9IDI2MjE0NDAKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUu bmV4dGVudHMgPSAyMAogY29yZS5uYWV4dGVudHMgPSAwCi1jb3JlLmZvcmtvZmYgPSAyNCAoMTky IGJ5dGVzKQorY29yZS5mb3Jrb2ZmID0gNDcgKDM3NiBieXRlcykKIGNvcmUuYWZvcm1hdCA9IDEg KGxvY2FsKQotdS5ibWJ0LmxldmVsID0gMQotdS5ibWJ0Lm51bXJlY3MgPSAxCi11LmJtYnQua2V5 c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KLXUuYm1idC5wdHJzWzFdID0gMTozOTkKK3UuYm14WzAt MTldID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE2 LDEsMF0gMTpbMzIsNDgsMTYsMF0gMjpbNjQsODAsMSwwXSAzOls5NiwxMTIsMTYsMF0gNDpbMTI4 LDE0NCwxLDBdIDU6WzE2MCwxNzYsMTYsMF0gNjpbMTkyLDIwOCwxLDBdIDc6WzIyNCwyNDAsMTYs MF0gODpbMjU2LDI3MiwxLDBdIDk6WzI4OCwzMDQsMTYsMF0gMTA6WzMyMCwzMzYsMSwwXSAxMTpb MzUyLDM2OCwxNiwwXSAxMjpbMzg0LDQwMCwxLDBdIDEzOls0MTYsNDMyLDE2LDBdIDE0Ols0NDgs NDY0LDEsMF0gMTU6WzQ4MCw0OTYsMTYsMF0gMTY6WzUxMiw1MjgsMSwwXSAxNzpbNTQ0LDU2MCwx NiwwXSAxODpbNTc2LDU5MiwxLDBdIDE5Ols2MDgsNjI0LDE2LDBdCiBhLnNmYXR0ci5oZHIudG90 c2l6ZSA9IDE5CiBhLnNmYXR0ci5oZHIuY291bnQgPSAxCiBhLnNmYXR0ci5saXN0WzBdLm5hbWVs ZW4gPSA3CkBAIC02OTMsMTcgKzE0MTcsMTQgQEAKIAogKiogMTggZXh0ZW50cyAqKgogdHJ1bmNh dGluZyBiYWNrIHRvIDIzNTkyOTYKLWNvcmUuZm9ybWF0ID0gMyAoYnRyZWUpCitjb3JlLmZvcm1h dCA9IDIgKGV4dGVudHMpCiBjb3JlLnNpemUgPSAyMzU5Mjk2CiBjb3JlLmV4dHNpemUgPSAwCiBj b3JlLm5leHRlbnRzID0gMTgKIGNvcmUubmFleHRlbnRzID0gMAotY29yZS5mb3Jrb2ZmID0gMjQg KDE5MiBieXRlcykKK2NvcmUuZm9ya29mZiA9IDQ3ICgzNzYgYnl0ZXMpCiBjb3JlLmFmb3JtYXQg PSAxIChsb2NhbCkKLXUuYm1idC5sZXZlbCA9IDEKLXUuYm1idC5udW1yZWNzID0gMQotdS5ibWJ0 LmtleXNbMV0gPSBbc3RhcnRvZmZdIDE6WzBdCi11LmJtYnQucHRyc1sxXSA9IDE6Mzk5Cit1LmJt eFswLTE3XSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpb MCwxNiwxLDBdIDE6WzMyLDQ4LDE2LDBdIDI6WzY0LDgwLDEsMF0gMzpbOTYsMTEyLDE2LDBdIDQ6 WzEyOCwxNDQsMSwwXSA1OlsxNjAsMTc2LDE2LDBdIDY6WzE5MiwyMDgsMSwwXSA3OlsyMjQsMjQw LDE2LDBdIDg6WzI1NiwyNzIsMSwwXSA5OlsyODgsMzA0LDE2LDBdIDEwOlszMjAsMzM2LDEsMF0g MTE6WzM1MiwzNjgsMTYsMF0gMTI6WzM4NCw0MDAsMSwwXSAxMzpbNDE2LDQzMiwxNiwwXSAxNDpb NDQ4LDQ2NCwxLDBdIDE1Ols0ODAsNDk2LDE2LDBdIDE2Ols1MTIsNTI4LDEsMF0gMTc6WzU0NCw1 NjAsMTYsMF0KIGEuc2ZhdHRyLmhkci50b3RzaXplID0gMTkKIGEuc2ZhdHRyLmhkci5jb3VudCA9 IDEKIGEuc2ZhdHRyLmxpc3RbMF0ubmFtZWxlbiA9IDcKQEAgLTcxNSwxNyArMTQzNiwxNCBAQAog CiAqKiAxNiBleHRlbnRzICoqCiB0cnVuY2F0aW5nIGJhY2sgdG8gMjA5NzE1MgotY29yZS5mb3Jt YXQgPSAzIChidHJlZSkKK2NvcmUuZm9ybWF0ID0gMiAoZXh0ZW50cykKIGNvcmUuc2l6ZSA9IDIw OTcxNTIKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAxNgogY29yZS5uYWV4dGVu dHMgPSAwCi1jb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQorY29yZS5mb3Jrb2ZmID0gNDcg KDM3NiBieXRlcykKIGNvcmUuYWZvcm1hdCA9IDEgKGxvY2FsKQotdS5ibWJ0LmxldmVsID0gMQot dS5ibWJ0Lm51bXJlY3MgPSAxCi11LmJtYnQua2V5c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KLXUu Ym1idC5wdHJzWzFdID0gMTozOTkKK3UuYm14WzAtMTVdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ss YmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE2LDEsMF0gMTpbMzIsNDgsMTYsMF0gMjpbNjQs ODAsMSwwXSAzOls5NiwxMTIsMTYsMF0gNDpbMTI4LDE0NCwxLDBdIDU6WzE2MCwxNzYsMTYsMF0g NjpbMTkyLDIwOCwxLDBdIDc6WzIyNCwyNDAsMTYsMF0gODpbMjU2LDI3MiwxLDBdIDk6WzI4OCwz MDQsMTYsMF0gMTA6WzMyMCwzMzYsMSwwXSAxMTpbMzUyLDM2OCwxNiwwXSAxMjpbMzg0LDQwMCwx LDBdIDEzOls0MTYsNDMyLDE2LDBdIDE0Ols0NDgsNDY0LDEsMF0gMTU6WzQ4MCw0OTYsMTYsMF0K IGEuc2ZhdHRyLmhkci50b3RzaXplID0gMTkKIGEuc2ZhdHRyLmhkci5jb3VudCA9IDEKIGEuc2Zh dHRyLmxpc3RbMF0ubmFtZWxlbiA9IDcKQEAgLTczNywxNyArMTQ1NSwxNCBAQAogCiAqKiAxNCBl eHRlbnRzICoqCiB0cnVuY2F0aW5nIGJhY2sgdG8gMTgzNTAwOAotY29yZS5mb3JtYXQgPSAzIChi dHJlZSkKK2NvcmUuZm9ybWF0ID0gMiAoZXh0ZW50cykKIGNvcmUuc2l6ZSA9IDE4MzUwMDgKIGNv cmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAxNAogY29yZS5uYWV4dGVudHMgPSAwCi1j b3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQorY29yZS5mb3Jrb2ZmID0gNDcgKDM3NiBieXRl cykKIGNvcmUuYWZvcm1hdCA9IDEgKGxvY2FsKQotdS5ibWJ0LmxldmVsID0gMQotdS5ibWJ0Lm51 bXJlY3MgPSAxCi11LmJtYnQua2V5c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KLXUuYm1idC5wdHJz WzFdID0gMTozOTkKK3UuYm14WzAtMTNdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3Vu dCxleHRlbnRmbGFnXSAwOlswLDE2LDEsMF0gMTpbMzIsNDgsMTYsMF0gMjpbNjQsODAsMSwwXSAz Ols5NiwxMTIsMTYsMF0gNDpbMTI4LDE0NCwxLDBdIDU6WzE2MCwxNzYsMTYsMF0gNjpbMTkyLDIw OCwxLDBdIDc6WzIyNCwyNDAsMTYsMF0gODpbMjU2LDI3MiwxLDBdIDk6WzI4OCwzMDQsMTYsMF0g MTA6WzMyMCwzMzYsMSwwXSAxMTpbMzUyLDM2OCwxNiwwXSAxMjpbMzg0LDQwMCwxLDBdIDEzOls0 MTYsNDMyLDE2LDBdCiBhLnNmYXR0ci5oZHIudG90c2l6ZSA9IDE5CiBhLnNmYXR0ci5oZHIuY291 bnQgPSAxCiBhLnNmYXR0ci5saXN0WzBdLm5hbWVsZW4gPSA3CkBAIC03NjQsNyArMTQ3OSw3IEBA CiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMTIKIGNvcmUubmFleHRlbnRzID0g MAotY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKK2NvcmUuZm9ya29mZiA9IDQ3ICgzNzYg Ynl0ZXMpCiBjb3JlLmFmb3JtYXQgPSAxIChsb2NhbCkKIHUuYm14WzAtMTFdID0gW3N0YXJ0b2Zm LHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE2LDEsMF0gMTpbMzIsNDgs MTYsMF0gMjpbNjQsODAsMSwwXSAzOls5NiwxMTIsMTYsMF0gNDpbMTI4LDE0NCwxLDBdIDU6WzE2 MCwxNzYsMTYsMF0gNjpbMTkyLDIwOCwxLDBdIDc6WzIyNCwyNDAsMTYsMF0gODpbMjU2LDI3Miwx LDBdIDk6WzI4OCwzMDQsMTYsMF0gMTA6WzMyMCwzMzYsMSwwXSAxMTpbMzUyLDM2OCwxNiwwXQog YS5zZmF0dHIuaGRyLnRvdHNpemUgPSAxOQpAQCAtNzgzLDcgKzE0OTgsNyBAQAogY29yZS5leHRz aXplID0gMAogY29yZS5uZXh0ZW50cyA9IDEwCiBjb3JlLm5hZXh0ZW50cyA9IDAKLWNvcmUuZm9y a29mZiA9IDI0ICgxOTIgYnl0ZXMpCitjb3JlLmZvcmtvZmYgPSA0NyAoMzc2IGJ5dGVzKQogY29y ZS5hZm9ybWF0ID0gMSAobG9jYWwpCiB1LmJteFswLTldID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ss YmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE2LDEsMF0gMTpbMzIsNDgsMTYsMF0gMjpbNjQs ODAsMSwwXSAzOls5NiwxMTIsMTYsMF0gNDpbMTI4LDE0NCwxLDBdIDU6WzE2MCwxNzYsMTYsMF0g NjpbMTkyLDIwOCwxLDBdIDc6WzIyNCwyNDAsMTYsMF0gODpbMjU2LDI3MiwxLDBdIDk6WzI4OCwz MDQsMTYsMF0KIGEuc2ZhdHRyLmhkci50b3RzaXplID0gMTkKQEAgLTgwMiw3ICsxNTE3LDcgQEAK IGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSA4CiBjb3JlLm5hZXh0ZW50cyA9IDAK LWNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCitjb3JlLmZvcmtvZmYgPSA0NyAoMzc2IGJ5 dGVzKQogY29yZS5hZm9ybWF0ID0gMSAobG9jYWwpCiB1LmJteFswLTddID0gW3N0YXJ0b2ZmLHN0 YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE2LDEsMF0gMTpbMzIsNDgsMTYs MF0gMjpbNjQsODAsMSwwXSAzOls5NiwxMTIsMTYsMF0gNDpbMTI4LDE0NCwxLDBdIDU6WzE2MCwx NzYsMTYsMF0gNjpbMTkyLDIwOCwxLDBdIDc6WzIyNCwyNDAsMTYsMF0KIGEuc2ZhdHRyLmhkci50 b3RzaXplID0gMTkKQEAgLTgyMSw3ICsxNTM2LDcgQEAKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUu bmV4dGVudHMgPSA2CiBjb3JlLm5hZXh0ZW50cyA9IDAKLWNvcmUuZm9ya29mZiA9IDI0ICgxOTIg Ynl0ZXMpCitjb3JlLmZvcmtvZmYgPSA0NyAoMzc2IGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMSAo bG9jYWwpCiB1LmJteFswLTVdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRl bnRmbGFnXSAwOlswLDE2LDEsMF0gMTpbMzIsNDgsMTYsMF0gMjpbNjQsODAsMSwwXSAzOls5Niwx MTIsMTYsMF0gNDpbMTI4LDE0NCwxLDBdIDU6WzE2MCwxNzYsMTYsMF0KIGEuc2ZhdHRyLmhkci50 b3RzaXplID0gMTkKQEAgLTg0MCw3ICsxNTU1LDcgQEAKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUu bmV4dGVudHMgPSA0CiBjb3JlLm5hZXh0ZW50cyA9IDAKLWNvcmUuZm9ya29mZiA9IDI0ICgxOTIg Ynl0ZXMpCitjb3JlLmZvcmtvZmYgPSA0NyAoMzc2IGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMSAo bG9jYWwpCiB1LmJteFswLTNdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRl bnRmbGFnXSAwOlswLDE2LDEsMF0gMTpbMzIsNDgsMTYsMF0gMjpbNjQsODAsMSwwXSAzOls5Niwx MTIsMTYsMF0KIGEuc2ZhdHRyLmhkci50b3RzaXplID0gMTkKQEAgLTg1OSw3ICsxNTc0LDcgQEAK IGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAyCiBjb3JlLm5hZXh0ZW50cyA9IDAK LWNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCitjb3JlLmZvcmtvZmYgPSA0NyAoMzc2IGJ5 dGVzKQogY29yZS5hZm9ybWF0ID0gMSAobG9jYWwpCiB1LmJteFswLTFdID0gW3N0YXJ0b2ZmLHN0 YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE2LDEsMF0gMTpbMzIsNDgsMTYs MF0KIGEuc2ZhdHRyLmhkci50b3RzaXplID0gMTkKQEAgLTg3OCw3ICsxNTkzLDcgQEAKIGNvcmUu ZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAxCiBjb3JlLm5hZXh0ZW50cyA9IDAKLWNvcmUu Zm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCitjb3JlLmZvcmtvZmYgPSA0NyAoMzc2IGJ5dGVzKQog Y29yZS5hZm9ybWF0ID0gMSAobG9jYWwpCiB1LmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2Nr LGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNiwxLDBdCiBhLnNmYXR0ci5oZHIudG90c2l6 ZSA9IDE5CkBAIC04OTcsNyArMTYxMiw3IEBACiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRl bnRzID0gMwogY29yZS5uYWV4dGVudHMgPSAwCi1jb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVz KQorY29yZS5mb3Jrb2ZmID0gNDcgKDM3NiBieXRlcykKIGNvcmUuYWZvcm1hdCA9IDEgKGxvY2Fs KQogdS5ibXhbMC0yXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50Zmxh Z10gMDpbMCwxNiwxLDBdIDE6WzMyLDQ4LDE2LDBdIDI6WzY0LDgwLDEsMF0KIGEuc2ZhdHRyLmhk ci50b3RzaXplID0gMTkKQEAgLTkxNiw3ICsxNjMxLDcgQEAKIGNvcmUuZXh0c2l6ZSA9IDAKIGNv cmUubmV4dGVudHMgPSA1CiBjb3JlLm5hZXh0ZW50cyA9IDAKLWNvcmUuZm9ya29mZiA9IDI0ICgx OTIgYnl0ZXMpCitjb3JlLmZvcmtvZmYgPSA0NyAoMzc2IGJ5dGVzKQogY29yZS5hZm9ybWF0ID0g MSAobG9jYWwpCiB1LmJteFswLTRdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxl eHRlbnRmbGFnXSAwOlswLDE2LDEsMF0gMTpbMzIsNDgsMTYsMF0gMjpbNjQsODAsMSwwXSAzOls5 NiwxMTIsMTYsMF0gNDpbMTI4LDE0NCwxLDBdCiBhLnNmYXR0ci5oZHIudG90c2l6ZSA9IDE5CkBA IC05MzUsNyArMTY1MCw3IEBACiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gNwog Y29yZS5uYWV4dGVudHMgPSAwCi1jb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQorY29yZS5m b3Jrb2ZmID0gNDcgKDM3NiBieXRlcykKIGNvcmUuYWZvcm1hdCA9IDEgKGxvY2FsKQogdS5ibXhb MC02XSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwx NiwxLDBdIDE6WzMyLDQ4LDE2LDBdIDI6WzY0LDgwLDEsMF0gMzpbOTYsMTEyLDE2LDBdIDQ6WzEy OCwxNDQsMSwwXSA1OlsxNjAsMTc2LDE2LDBdIDY6WzE5MiwyMDgsMSwwXQogYS5zZmF0dHIuaGRy LnRvdHNpemUgPSAxOQpAQCAtOTU0LDcgKzE2NjksNyBAQAogY29yZS5leHRzaXplID0gMAogY29y ZS5uZXh0ZW50cyA9IDkKIGNvcmUubmFleHRlbnRzID0gMAotY29yZS5mb3Jrb2ZmID0gMjQgKDE5 MiBieXRlcykKK2NvcmUuZm9ya29mZiA9IDQ3ICgzNzYgYnl0ZXMpCiBjb3JlLmFmb3JtYXQgPSAx IChsb2NhbCkKIHUuYm14WzAtOF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4 dGVudGZsYWddIDA6WzAsMTYsMSwwXSAxOlszMiw0OCwxNiwwXSAyOls2NCw4MCwxLDBdIDM6Wzk2 LDExMiwxNiwwXSA0OlsxMjgsMTQ0LDEsMF0gNTpbMTYwLDE3NiwxNiwwXSA2OlsxOTIsMjA4LDEs MF0gNzpbMjI0LDI0MCwxNiwwXSA4OlsyNTYsMjcyLDEsMF0KIGEuc2ZhdHRyLmhkci50b3RzaXpl ID0gMTkKQEAgLTk3Myw3ICsxNjg4LDcgQEAKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVu dHMgPSAxMQogY29yZS5uYWV4dGVudHMgPSAwCi1jb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVz KQorY29yZS5mb3Jrb2ZmID0gNDcgKDM3NiBieXRlcykKIGNvcmUuYWZvcm1hdCA9IDEgKGxvY2Fs KQogdS5ibXhbMC0xMF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZs YWddIDA6WzAsMTYsMSwwXSAxOlszMiw0OCwxNiwwXSAyOls2NCw4MCwxLDBdIDM6Wzk2LDExMiwx NiwwXSA0OlsxMjgsMTQ0LDEsMF0gNTpbMTYwLDE3NiwxNiwwXSA2OlsxOTIsMjA4LDEsMF0gNzpb MjI0LDI0MCwxNiwwXSA4OlsyNTYsMjcyLDEsMF0gOTpbMjg4LDMwNCwxNiwwXSAxMDpbMzIwLDMz NiwxLDBdCiBhLnNmYXR0ci5oZHIudG90c2l6ZSA9IDE5CkBAIC05ODcsMTcgKzE3MDIsMTQgQEAK IAogKiogMTMgZXh0ZW50cyAqKgogY3JlYXRpbmcgMyBtb3JlIGhvbGVzCi1jb3JlLmZvcm1hdCA9 IDMgKGJ0cmVlKQorY29yZS5mb3JtYXQgPSAyIChleHRlbnRzKQogY29yZS5zaXplID0gMTU3MzM3 NgogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDEzCiBjb3JlLm5hZXh0ZW50cyA9 IDAKLWNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCitjb3JlLmZvcmtvZmYgPSA0NyAoMzc2 IGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMSAobG9jYWwpCi11LmJtYnQubGV2ZWwgPSAxCi11LmJt YnQubnVtcmVjcyA9IDEKLXUuYm1idC5rZXlzWzFdID0gW3N0YXJ0b2ZmXSAxOlswXQotdS5ibWJ0 LnB0cnNbMV0gPSAxOjM5OQordS5ibXhbMC0xMl0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9j a2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTYsMSwwXSAxOlszMiw0OCwxNiwwXSAyOls2NCw4MCwx LDBdIDM6Wzk2LDExMiwxNiwwXSA0OlsxMjgsMTQ0LDEsMF0gNTpbMTYwLDE3NiwxNiwwXSA2Olsx OTIsMjA4LDEsMF0gNzpbMjI0LDI0MCwxNiwwXSA4OlsyNTYsMjcyLDEsMF0gOTpbMjg4LDMwNCwx NiwwXSAxMDpbMzIwLDMzNiwxLDBdIDExOlszNTIsMzY4LDE2LDBdIDEyOlszODQsNDAwLDEsMF0K IGEuc2ZhdHRyLmhkci50b3RzaXplID0gMTkKIGEuc2ZhdHRyLmhkci5jb3VudCA9IDEKIGEuc2Zh dHRyLmxpc3RbMF0ubmFtZWxlbiA9IDcKQEAgLTEwMDksMTcgKzE3MjEsMTQgQEAKIAogKiogMTUg ZXh0ZW50cyAqKgogY3JlYXRpbmcgMyBtb3JlIGhvbGVzCi1jb3JlLmZvcm1hdCA9IDMgKGJ0cmVl KQorY29yZS5mb3JtYXQgPSAyIChleHRlbnRzKQogY29yZS5zaXplID0gMTgzNTUyMAogY29yZS5l eHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDE1CiBjb3JlLm5hZXh0ZW50cyA9IDAKLWNvcmUu Zm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCitjb3JlLmZvcmtvZmYgPSA0NyAoMzc2IGJ5dGVzKQog Y29yZS5hZm9ybWF0ID0gMSAobG9jYWwpCi11LmJtYnQubGV2ZWwgPSAxCi11LmJtYnQubnVtcmVj cyA9IDEKLXUuYm1idC5rZXlzWzFdID0gW3N0YXJ0b2ZmXSAxOlswXQotdS5ibWJ0LnB0cnNbMV0g PSAxOjM5OQordS5ibXhbMC0xNF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4 dGVudGZsYWddIDA6WzAsMTYsMSwwXSAxOlszMiw0OCwxNiwwXSAyOls2NCw4MCwxLDBdIDM6Wzk2 LDExMiwxNiwwXSA0OlsxMjgsMTQ0LDEsMF0gNTpbMTYwLDE3NiwxNiwwXSA2OlsxOTIsMjA4LDEs MF0gNzpbMjI0LDI0MCwxNiwwXSA4OlsyNTYsMjcyLDEsMF0gOTpbMjg4LDMwNCwxNiwwXSAxMDpb MzIwLDMzNiwxLDBdIDExOlszNTIsMzY4LDE2LDBdIDEyOlszODQsNDAwLDEsMF0gMTM6WzQxNiw0 MzIsMTYsMF0gMTQ6WzQ0OCw0NjQsMSwwXQogYS5zZmF0dHIuaGRyLnRvdHNpemUgPSAxOQogYS5z ZmF0dHIuaGRyLmNvdW50ID0gMQogYS5zZmF0dHIubGlzdFswXS5uYW1lbGVuID0gNwpAQCAtMTAz MSwxNyArMTc0MCwxNCBAQAogCiAqKiAxNyBleHRlbnRzICoqCiBjcmVhdGluZyAzIG1vcmUgaG9s ZXMKLWNvcmUuZm9ybWF0ID0gMyAoYnRyZWUpCitjb3JlLmZvcm1hdCA9IDIgKGV4dGVudHMpCiBj b3JlLnNpemUgPSAyMDk3NjY0CiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMTcK IGNvcmUubmFleHRlbnRzID0gMAotY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKK2NvcmUu Zm9ya29mZiA9IDQ3ICgzNzYgYnl0ZXMpCiBjb3JlLmFmb3JtYXQgPSAxIChsb2NhbCkKLXUuYm1i dC5sZXZlbCA9IDEKLXUuYm1idC5udW1yZWNzID0gMQotdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRv ZmZdIDE6WzBdCi11LmJtYnQucHRyc1sxXSA9IDE6Mzk5Cit1LmJteFswLTE2XSA9IFtzdGFydG9m ZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNiwxLDBdIDE6WzMyLDQ4 LDE2LDBdIDI6WzY0LDgwLDEsMF0gMzpbOTYsMTEyLDE2LDBdIDQ6WzEyOCwxNDQsMSwwXSA1Olsx NjAsMTc2LDE2LDBdIDY6WzE5MiwyMDgsMSwwXSA3OlsyMjQsMjQwLDE2LDBdIDg6WzI1NiwyNzIs MSwwXSA5OlsyODgsMzA0LDE2LDBdIDEwOlszMjAsMzM2LDEsMF0gMTE6WzM1MiwzNjgsMTYsMF0g MTI6WzM4NCw0MDAsMSwwXSAxMzpbNDE2LDQzMiwxNiwwXSAxNDpbNDQ4LDQ2NCwxLDBdIDE1Ols0 ODAsNDk2LDE2LDBdIDE2Ols1MTIsNTI4LDEsMF0KIGEuc2ZhdHRyLmhkci50b3RzaXplID0gMTkK IGEuc2ZhdHRyLmhkci5jb3VudCA9IDEKIGEuc2ZhdHRyLmxpc3RbMF0ubmFtZWxlbiA9IDcKQEAg LTEwNTMsMTcgKzE3NTksMTQgQEAKIAogKiogMTkgZXh0ZW50cyAqKgogY3JlYXRpbmcgMyBtb3Jl IGhvbGVzCi1jb3JlLmZvcm1hdCA9IDMgKGJ0cmVlKQorY29yZS5mb3JtYXQgPSAyIChleHRlbnRz KQogY29yZS5zaXplID0gMjM1OTgwOAogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9 IDE5CiBjb3JlLm5hZXh0ZW50cyA9IDAKLWNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCitj b3JlLmZvcmtvZmYgPSA0NyAoMzc2IGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMSAobG9jYWwpCi11 LmJtYnQubGV2ZWwgPSAxCi11LmJtYnQubnVtcmVjcyA9IDEKLXUuYm1idC5rZXlzWzFdID0gW3N0 YXJ0b2ZmXSAxOlswXQotdS5ibWJ0LnB0cnNbMV0gPSAxOjM5OQordS5ibXhbMC0xOF0gPSBbc3Rh cnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTYsMSwwXSAxOlsz Miw0OCwxNiwwXSAyOls2NCw4MCwxLDBdIDM6Wzk2LDExMiwxNiwwXSA0OlsxMjgsMTQ0LDEsMF0g NTpbMTYwLDE3NiwxNiwwXSA2OlsxOTIsMjA4LDEsMF0gNzpbMjI0LDI0MCwxNiwwXSA4OlsyNTYs MjcyLDEsMF0gOTpbMjg4LDMwNCwxNiwwXSAxMDpbMzIwLDMzNiwxLDBdIDExOlszNTIsMzY4LDE2 LDBdIDEyOlszODQsNDAwLDEsMF0gMTM6WzQxNiw0MzIsMTYsMF0gMTQ6WzQ0OCw0NjQsMSwwXSAx NTpbNDgwLDQ5NiwxNiwwXSAxNjpbNTEyLDUyOCwxLDBdIDE3Ols1NDQsNTYwLDE2LDBdIDE4Ols1 NzYsNTkyLDEsMF0KIGEuc2ZhdHRyLmhkci50b3RzaXplID0gMTkKIGEuc2ZhdHRyLmhkci5jb3Vu dCA9IDEKIGEuc2ZhdHRyLmxpc3RbMF0ubmFtZWxlbiA9IDcKQEAgLTEwNzUsMTcgKzE3NzgsMTQg QEAKIAogKiogMjEgZXh0ZW50cyAqKgogY3JlYXRpbmcgMyBtb3JlIGhvbGVzCi1jb3JlLmZvcm1h dCA9IDMgKGJ0cmVlKQorY29yZS5mb3JtYXQgPSAyIChleHRlbnRzKQogY29yZS5zaXplID0gMjYy MTk1MgogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDIxCiBjb3JlLm5hZXh0ZW50 cyA9IDAKLWNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCitjb3JlLmZvcmtvZmYgPSA0NyAo Mzc2IGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMSAobG9jYWwpCi11LmJtYnQubGV2ZWwgPSAxCi11 LmJtYnQubnVtcmVjcyA9IDEKLXUuYm1idC5rZXlzWzFdID0gW3N0YXJ0b2ZmXSAxOlswXQotdS5i bWJ0LnB0cnNbMV0gPSAxOjM5OQordS5ibXhbMC0yMF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxi bG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTYsMSwwXSAxOlszMiw0OCwxNiwwXSAyOls2NCw4 MCwxLDBdIDM6Wzk2LDExMiwxNiwwXSA0OlsxMjgsMTQ0LDEsMF0gNTpbMTYwLDE3NiwxNiwwXSA2 OlsxOTIsMjA4LDEsMF0gNzpbMjI0LDI0MCwxNiwwXSA4OlsyNTYsMjcyLDEsMF0gOTpbMjg4LDMw NCwxNiwwXSAxMDpbMzIwLDMzNiwxLDBdIDExOlszNTIsMzY4LDE2LDBdIDEyOlszODQsNDAwLDEs MF0gMTM6WzQxNiw0MzIsMTYsMF0gMTQ6WzQ0OCw0NjQsMSwwXSAxNTpbNDgwLDQ5NiwxNiwwXSAx NjpbNTEyLDUyOCwxLDBdIDE3Ols1NDQsNTYwLDE2LDBdIDE4Ols1NzYsNTkyLDEsMF0gMTk6WzYw OCw2MjQsMTYsMF0gMjA6WzY0MCw2NTYsMSwwXQogYS5zZmF0dHIuaGRyLnRvdHNpemUgPSAxOQog YS5zZmF0dHIuaGRyLmNvdW50ID0gMQogYS5zZmF0dHIubGlzdFswXS5uYW1lbGVuID0gNwpAQCAt MTA5NywxNyArMTc5NywxNCBAQAogCiAqKiAyMyBleHRlbnRzICoqCiBjcmVhdGluZyAzIG1vcmUg aG9sZXMKLWNvcmUuZm9ybWF0ID0gMyAoYnRyZWUpCitjb3JlLmZvcm1hdCA9IDIgKGV4dGVudHMp CiBjb3JlLnNpemUgPSAyODg0MDk2CiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0g MjMKIGNvcmUubmFleHRlbnRzID0gMAotY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKK2Nv cmUuZm9ya29mZiA9IDQ3ICgzNzYgYnl0ZXMpCiBjb3JlLmFmb3JtYXQgPSAxIChsb2NhbCkKLXUu Ym1idC5sZXZlbCA9IDEKLXUuYm1idC5udW1yZWNzID0gMQotdS5ibWJ0LmtleXNbMV0gPSBbc3Rh cnRvZmZdIDE6WzBdCi11LmJtYnQucHRyc1sxXSA9IDE6Mzk5Cit1LmJteFswLTIyXSA9IFtzdGFy dG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNiwxLDBdIDE6WzMy LDQ4LDE2LDBdIDI6WzY0LDgwLDEsMF0gMzpbOTYsMTEyLDE2LDBdIDQ6WzEyOCwxNDQsMSwwXSA1 OlsxNjAsMTc2LDE2LDBdIDY6WzE5MiwyMDgsMSwwXSA3OlsyMjQsMjQwLDE2LDBdIDg6WzI1Niwy NzIsMSwwXSA5OlsyODgsMzA0LDE2LDBdIDEwOlszMjAsMzM2LDEsMF0gMTE6WzM1MiwzNjgsMTYs MF0gMTI6WzM4NCw0MDAsMSwwXSAxMzpbNDE2LDQzMiwxNiwwXSAxNDpbNDQ4LDQ2NCwxLDBdIDE1 Ols0ODAsNDk2LDE2LDBdIDE2Ols1MTIsNTI4LDEsMF0gMTc6WzU0NCw1NjAsMTYsMF0gMTg6WzU3 Niw1OTIsMSwwXSAxOTpbNjA4LDYyNCwxNiwwXSAyMDpbNjQwLDY1NiwxLDBdIDIxOls2NzIsNjg4 LDE2LDBdIDIyOls3MDQsNzIwLDEsMF0KIGEuc2ZhdHRyLmhkci50b3RzaXplID0gMTkKIGEuc2Zh dHRyLmhkci5jb3VudCA9IDEKIGEuc2ZhdHRyLmxpc3RbMF0ubmFtZWxlbiA9IDcKQEAgLTExMjQs MTIgKzE4MjEsMTIgQEAKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAyNQogY29y ZS5uYWV4dGVudHMgPSAwCi1jb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQorY29yZS5mb3Jr b2ZmID0gNDcgKDM3NiBieXRlcykKIGNvcmUuYWZvcm1hdCA9IDEgKGxvY2FsKQogdS5ibWJ0Lmxl dmVsID0gMQogdS5ibWJ0Lm51bXJlY3MgPSAxCiB1LmJtYnQua2V5c1sxXSA9IFtzdGFydG9mZl0g MTpbMF0KLXUuYm1idC5wdHJzWzFdID0gMTozOTkKK3UuYm1idC5wdHJzWzFdID0gMTo3NTEKIGEu c2ZhdHRyLmhkci50b3RzaXplID0gMTkKIGEuc2ZhdHRyLmhkci5jb3VudCA9IDEKIGEuc2ZhdHRy Lmxpc3RbMF0ubmFtZWxlbiA9IDcKQEAgLTExNDYsMTIgKzE4NDMsMTIgQEAKIGNvcmUuZXh0c2l6 ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAyNwogY29yZS5uYWV4dGVudHMgPSAwCi1jb3JlLmZvcmtv ZmYgPSAyNCAoMTkyIGJ5dGVzKQorY29yZS5mb3Jrb2ZmID0gNDcgKDM3NiBieXRlcykKIGNvcmUu YWZvcm1hdCA9IDEgKGxvY2FsKQogdS5ibWJ0LmxldmVsID0gMQogdS5ibWJ0Lm51bXJlY3MgPSAx CiB1LmJtYnQua2V5c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KLXUuYm1idC5wdHJzWzFdID0gMToz OTkKK3UuYm1idC5wdHJzWzFdID0gMTo3NTEKIGEuc2ZhdHRyLmhkci50b3RzaXplID0gMTkKIGEu c2ZhdHRyLmhkci5jb3VudCA9IDEKIGEuc2ZhdHRyLmxpc3RbMF0ubmFtZWxlbiA9IDcKQEAgLTEx NjgsMTIgKzE4NjUsMTIgQEAKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAyOQog Y29yZS5uYWV4dGVudHMgPSAwCi1jb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQorY29yZS5m b3Jrb2ZmID0gNDcgKDM3NiBieXRlcykKIGNvcmUuYWZvcm1hdCA9IDEgKGxvY2FsKQogdS5ibWJ0 LmxldmVsID0gMQogdS5ibWJ0Lm51bXJlY3MgPSAxCiB1LmJtYnQua2V5c1sxXSA9IFtzdGFydG9m Zl0gMTpbMF0KLXUuYm1idC5wdHJzWzFdID0gMTozOTkKK3UuYm1idC5wdHJzWzFdID0gMTo3NTEK IGEuc2ZhdHRyLmhkci50b3RzaXplID0gMTkKIGEuc2ZhdHRyLmhkci5jb3VudCA9IDEKIGEuc2Zh dHRyLmxpc3RbMF0ubmFtZWxlbiA9IDcKQEAgLTExOTEsNyArMTg4OCw3IEBACiBjb3JlLmV4dHNp emUgPSAwCiBjb3JlLm5leHRlbnRzID0gMQogY29yZS5uYWV4dGVudHMgPSAwCi1jb3JlLmZvcmtv ZmYgPSAyNCAoMTkyIGJ5dGVzKQorY29yZS5mb3Jrb2ZmID0gNDcgKDM3NiBieXRlcykKIGNvcmUu YWZvcm1hdCA9IDEgKGxvY2FsKQogdS5ibXhbMF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9j a2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTYsMSwwXQogYS5zZmF0dHIuaGRyLnRvdHNpemUgPSAx OQpAQCAtMTIwMyw1NiArMTkwMCwzMDEgQEAKIGEuc2ZhdHRyLmxpc3RbMF0ubmFtZSA9ICJuYW1l LjM1IgogYS5zZmF0dHIubGlzdFswXS52YWx1ZSA9ICJ2YWx1ZSIKIAotKiogYWRkIDEuLjUgRUFz ICoqCisqKiBhZGQgMS4uNCBFQXMgKioKIAotKiogYWRkIDYuLjEwIEVBcyAqKgorKiogYWRkIDYu LjggRUFzICoqCiAKLSoqIGFkZCAxMS4uMTUgRUFzICoqCisqKiBhZGQgMTEuLjEyIEVBcyAqKgog Ci0qKiBhZGQgMTYuLjIwIEVBcyAqKgorKiogYWRkIDE2Li4xNiBFQXMgKioKIAotKiogYWRkIDIx Li4yNSBFQXMgKioKKyoqIGFkZCAyMS4uMjAgRUFzICoqCiAKLSoqIGFkZCAyNi4uMzAgRUFzICoq CisqKiBhZGQgMjYuLjI0IEVBcyAqKgogCi0qKiBhZGQgMzEuLjM1IEVBcyAqKgorKiogYWRkIDMx Li4yOCBFQXMgKioKIAotKiogYWRkIDM2Li40MCBFQXMgKioKKyoqIGFkZCAzNi4uMzIgRUFzICoq CiAKLSoqIGFkZCA0MS4uNDUgRUFzICoqCisqKiBhZGQgNDEuLjM2IEVBcyAqKgogCi0qKiBhZGQg NDYuLjUwIEVBcyAqKgorKiogYWRkIDQ2Li40MCBFQXMgKioKIAotKiogYWRkIDUxLi41NSBFQXMg KioKKyoqIGFkZCA1MS4uNDQgRUFzICoqCiAKLSoqIGFkZCA1Ni4uNjAgRUFzICoqCisqKiBhZGQg NTYuLjQ4IEVBcyAqKgogCi0qKiBhZGQgNjEuLjY1IEVBcyAqKgorKiogYWRkIDYxLi41MiBFQXMg KioKIAotKiogYWRkIDY2Li43MCBFQXMgKioKKyoqIGFkZCA2Ni4uNTYgRUFzICoqCiAKLSoqIGFk ZCA3MS4uNzUgRUFzICoqCisqKiBhZGQgNzEuLjYwIEVBcyAqKgogCi0qKiBhZGQgNzYuLjgwIEVB cyAqKgorKiogYWRkIDc2Li42NCBFQXMgKioKIAotKiogYWRkIDgxLi44NSBFQXMgKioKKyoqIGFk ZCA4MS4uNjggRUFzICoqCiAKLSoqIGFkZCA4Ni4uOTAgRUFzICoqCisqKiBhZGQgODYuLjcyIEVB cyAqKgogCi0qKiBhZGQgOTEuLjk1IEVBcyAqKgorKiogYWRkIDkxLi43NiBFQXMgKioKIAotKiog YWRkIDk2Li4xMDAgRUFzICoqCisqKiBhZGQgOTYuLjgwIEVBcyAqKgogY29yZS5mb3JtYXQgPSAy IChleHRlbnRzKQogY29yZS5zaXplID0gMTMxMDcyCi1jb3JlLmV4dHNpemUgPSAwCi1jb3JlLm5l eHRlbnRzID0gMQotY29yZS5uYWV4dGVudHMgPSAxCi1jb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5 dGVzKQotY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKK2NvcmUuZXh0c2l6ZSA9IDAKK2NvcmUu bmV4dGVudHMgPSAxCitjb3JlLm5hZXh0ZW50cyA9IDAKK2NvcmUuZm9ya29mZiA9IDMxICgyNDgg Ynl0ZXMpCitjb3JlLmFmb3JtYXQgPSAxIChsb2NhbCkKIHUuYm14WzBdID0gW3N0YXJ0b2ZmLHN0 YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE2LDEsMF0KLWEuYm14WzBdID0g W3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDEsMF0K K2Euc2ZhdHRyLmhkci50b3RzaXplID0gMTYyCithLnNmYXR0ci5oZHIuY291bnQgPSAxMQorYS5z ZmF0dHIubGlzdFswXS5uYW1lbGVuID0gNworYS5zZmF0dHIubGlzdFswXS52YWx1ZWxlbiA9IDUK K2Euc2ZhdHRyLmxpc3RbMF0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbMF0uc2VjdXJlID0gMAor YS5zZmF0dHIubGlzdFswXS5uYW1lID0gIm5hbWUuMzUiCithLnNmYXR0ci5saXN0WzBdLnZhbHVl ID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFsxXS5uYW1lbGVuID0gNgorYS5zZmF0dHIubGlzdFsx XS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3RbMV0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3Rb MV0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFsxXS5uYW1lID0gIm5hbWUuMSIKK2Euc2ZhdHRy Lmxpc3RbMV0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzJdLm5hbWVsZW4gPSA2Cith LnNmYXR0ci5saXN0WzJdLnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFsyXS5yb290ID0gMAor YS5zZmF0dHIubGlzdFsyXS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzJdLm5hbWUgPSAibmFt ZS4yIgorYS5zZmF0dHIubGlzdFsyXS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbM10u bmFtZWxlbiA9IDYKK2Euc2ZhdHRyLmxpc3RbM10udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0 WzNdLnJvb3QgPSAwCithLnNmYXR0ci5saXN0WzNdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3Rb M10ubmFtZSA9ICJuYW1lLjMiCithLnNmYXR0ci5saXN0WzNdLnZhbHVlID0gInZhbHVlIgorYS5z ZmF0dHIubGlzdFs0XS5uYW1lbGVuID0gNgorYS5zZmF0dHIubGlzdFs0XS52YWx1ZWxlbiA9IDUK K2Euc2ZhdHRyLmxpc3RbNF0ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbNF0uc2VjdXJlID0gMAor YS5zZmF0dHIubGlzdFs0XS5uYW1lID0gIm5hbWUuNCIKK2Euc2ZhdHRyLmxpc3RbNF0udmFsdWUg PSAidmFsdWUiCithLnNmYXR0ci5saXN0WzVdLm5hbWVsZW4gPSA2CithLnNmYXR0ci5saXN0WzVd LnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFs1XS5yb290ID0gMAorYS5zZmF0dHIubGlzdFs1 XS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzVdLm5hbWUgPSAibmFtZS42IgorYS5zZmF0dHIu bGlzdFs1XS52YWx1ZSA9ICJ2YWx1ZSIKK2Euc2ZhdHRyLmxpc3RbNl0ubmFtZWxlbiA9IDYKK2Eu c2ZhdHRyLmxpc3RbNl0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzZdLnJvb3QgPSAwCith LnNmYXR0ci5saXN0WzZdLnNlY3VyZSA9IDAKK2Euc2ZhdHRyLmxpc3RbNl0ubmFtZSA9ICJuYW1l LjciCithLnNmYXR0ci5saXN0WzZdLnZhbHVlID0gInZhbHVlIgorYS5zZmF0dHIubGlzdFs3XS5u YW1lbGVuID0gNgorYS5zZmF0dHIubGlzdFs3XS52YWx1ZWxlbiA9IDUKK2Euc2ZhdHRyLmxpc3Rb N10ucm9vdCA9IDAKK2Euc2ZhdHRyLmxpc3RbN10uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFs3 XS5uYW1lID0gIm5hbWUuOCIKK2Euc2ZhdHRyLmxpc3RbN10udmFsdWUgPSAidmFsdWUiCithLnNm YXR0ci5saXN0WzhdLm5hbWVsZW4gPSA3CithLnNmYXR0ci5saXN0WzhdLnZhbHVlbGVuID0gNQor YS5zZmF0dHIubGlzdFs4XS5yb290ID0gMAorYS5zZmF0dHIubGlzdFs4XS5zZWN1cmUgPSAwCith LnNmYXR0ci5saXN0WzhdLm5hbWUgPSAibmFtZS4xMSIKK2Euc2ZhdHRyLmxpc3RbOF0udmFsdWUg PSAidmFsdWUiCithLnNmYXR0ci5saXN0WzldLm5hbWVsZW4gPSA3CithLnNmYXR0ci5saXN0Wzld LnZhbHVlbGVuID0gNQorYS5zZmF0dHIubGlzdFs5XS5yb290ID0gMAorYS5zZmF0dHIubGlzdFs5 XS5zZWN1cmUgPSAwCithLnNmYXR0ci5saXN0WzldLm5hbWUgPSAibmFtZS4xMiIKK2Euc2ZhdHRy Lmxpc3RbOV0udmFsdWUgPSAidmFsdWUiCithLnNmYXR0ci5saXN0WzEwXS5uYW1lbGVuID0gNwor YS5zZmF0dHIubGlzdFsxMF0udmFsdWVsZW4gPSA1CithLnNmYXR0ci5saXN0WzEwXS5yb290ID0g MAorYS5zZmF0dHIubGlzdFsxMF0uc2VjdXJlID0gMAorYS5zZmF0dHIubGlzdFsxMF0ubmFtZSA9 ICJuYW1lLjE2IgorYS5zZmF0dHIubGlzdFsxMF0udmFsdWUgPSAidmFsdWUiCiAKICoqIHJtIDEu LjEwMCBFQXMgKioKK2F0dHJfcmVtb3ZlOiBObyBkYXRhIGF2YWlsYWJsZQorQ291bGQgbm90IHJl bW92ZSAibmFtZS41IiBmb3IgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvZmls ZQorYXR0cl9yZW1vdmU6IE5vIGRhdGEgYXZhaWxhYmxlCitDb3VsZCBub3QgcmVtb3ZlICJuYW1l LjkiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3Jl bW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuMTAiIGZvciAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8g ZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuMTMiIGZvciAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFp bGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuMTQiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0Nv dWxkIG5vdCByZW1vdmUgIm5hbWUuMTUiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCBy ZW1vdmUgIm5hbWUuMTciIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9m aWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5h bWUuMTgiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRy X3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuMTkiIGZv ciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTog Tm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuMjAiIGZvciAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBh dmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuMjEiIGZvciAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUK K0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuMjIiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5v dCByZW1vdmUgIm5hbWUuMjMiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUg Im5hbWUuMjQiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCith dHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuMjUi IGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92 ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuMjYiIGZvciAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0 YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuMjciIGZvciAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFi bGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuMjgiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxk IG5vdCByZW1vdmUgIm5hbWUuMjkiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1v dmUgIm5hbWUuMzAiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxl CithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUu MzEiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3Jl bW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuMzIiIGZvciAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8g ZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuMzMiIGZvciAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFp bGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuMzQiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0Nv dWxkIG5vdCByZW1vdmUgIm5hbWUuMzYiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCBy ZW1vdmUgIm5hbWUuMzciIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9m aWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5h bWUuMzgiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRy X3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuMzkiIGZv ciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTog Tm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNDAiIGZvciAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBh dmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNDEiIGZvciAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUK K0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNDIiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5v dCByZW1vdmUgIm5hbWUuNDMiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUg Im5hbWUuNDQiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCith dHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNDUi IGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92 ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNDYiIGZvciAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0 YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNDciIGZvciAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFi bGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNDgiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxk IG5vdCByZW1vdmUgIm5hbWUuNDkiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1v dmUgIm5hbWUuNTAiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxl CithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUu NTEiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3Jl bW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNTIiIGZvciAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8g ZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNTMiIGZvciAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFp bGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNTQiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0Nv dWxkIG5vdCByZW1vdmUgIm5hbWUuNTUiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCBy ZW1vdmUgIm5hbWUuNTYiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9m aWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5h bWUuNTciIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRy X3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNTgiIGZv ciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTog Tm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNTkiIGZvciAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBh dmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNjAiIGZvciAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUK K0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNjEiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5v dCByZW1vdmUgIm5hbWUuNjIiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUg Im5hbWUuNjMiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCith dHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNjQi IGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92 ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNjUiIGZvciAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0 YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNjYiIGZvciAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFi bGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNjciIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxk IG5vdCByZW1vdmUgIm5hbWUuNjgiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1v dmUgIm5hbWUuNjkiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxl CithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUu NzAiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3Jl bW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNzEiIGZvciAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8g ZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNzIiIGZvciAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFp bGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNzMiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0Nv dWxkIG5vdCByZW1vdmUgIm5hbWUuNzQiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCBy ZW1vdmUgIm5hbWUuNzUiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9m aWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5h bWUuNzYiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRy X3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNzciIGZv ciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTog Tm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNzgiIGZvciAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBh dmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuNzkiIGZvciAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUK K0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuODAiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5v dCByZW1vdmUgIm5hbWUuODEiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUg Im5hbWUuODIiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCith dHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuODMi IGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92 ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuODQiIGZvciAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0 YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuODUiIGZvciAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFi bGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuODYiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxk IG5vdCByZW1vdmUgIm5hbWUuODciIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1v dmUgIm5hbWUuODgiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxl CithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUu ODkiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3Jl bW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuOTAiIGZvciAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8g ZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuOTEiIGZvciAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFp bGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuOTIiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0Nv dWxkIG5vdCByZW1vdmUgIm5hbWUuOTMiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCBy ZW1vdmUgIm5hbWUuOTQiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9m aWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5h bWUuOTUiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRy X3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuOTYiIGZv ciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTog Tm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuOTciIGZvciAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBh dmFpbGFibGUKK0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuOTgiIGZvciAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUK K0NvdWxkIG5vdCByZW1vdmUgIm5hbWUuOTkiIGZvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC9maWxlCithdHRyX3JlbW92ZTogTm8gZGF0YSBhdmFpbGFibGUKK0NvdWxkIG5v dCByZW1vdmUgIm5hbWUuMTAwIiBmb3IgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3Nk YjQvZmlsZQogCiAqKiogRXh0ZW50IGRpZmZlcmVuY2VzIGJlZm9yZSBhbmQgYWZ0ZXIgRUFzIGFk ZGVkICoqKgogRmlsZXMgVE1QLnUxIGFuZCBUTVAudTIgYXJlIGlkZW50aWNhbApAQCAtMTI3MCw1 MSArMjIxMiw0OSBAQAogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDExCiBjb3Jl Lm5hZXh0ZW50cyA9IDAKLWNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCi1jb3JlLmFmb3Jt YXQgPSAxIChsb2NhbCkKK2NvcmUuZm9ya29mZiA9IDAgKDAgYnl0ZXMpCitjb3JlLmFmb3JtYXQg PSAyIChleHRlbnRzKQogdS5ibXhbMC0xMF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2Nv dW50LGV4dGVudGZsYWddIDA6WzAsMTYsMSwwXSAxOlszMiw0OCwxNiwwXSAyOls2NCw4MCwxNiww XSAzOls5NiwxMTIsMTYsMF0gNDpbMTI4LDE0NCwxNiwwXSA1OlsxNjAsMTc2LDE2LDBdIDY6WzE5 MiwyMDgsMTYsMF0gNzpbMjI0LDI0MCwxNiwwXSA4OlsyNTYsMjcyLDE2LDBdIDk6WzI4OCwzMDQs MTYsMF0gMTA6WzMyMCwzMzYsMSwwXQotYS5zZmF0dHIuaGRyLnRvdHNpemUgPSA0Ci1hLnNmYXR0 ci5oZHIuY291bnQgPSAwCiAKLSoqIGFkZCAxLi41IEVBcyAqKgorKiogYWRkIDEuLjg0IEVBcyAq KgogCi0qKiBhZGQgNi4uMTAgRUFzICoqCisqKiBhZGQgNi4uODggRUFzICoqCiAKLSoqIGFkZCAx MS4uMTUgRUFzICoqCisqKiBhZGQgMTEuLjkyIEVBcyAqKgogCi0qKiBhZGQgMTYuLjIwIEVBcyAq KgorKiogYWRkIDE2Li45NiBFQXMgKioKIAotKiogYWRkIDIxLi4yNSBFQXMgKioKKyoqIGFkZCAy MS4uMTAwIEVBcyAqKgogCi0qKiBhZGQgMjYuLjMwIEVBcyAqKgorKiogYWRkIDI2Li4xMDQgRUFz ICoqCiAKLSoqIGFkZCAzMS4uMzUgRUFzICoqCisqKiBhZGQgMzEuLjEwOCBFQXMgKioKIAotKiog YWRkIDM2Li40MCBFQXMgKioKKyoqIGFkZCAzNi4uMTEyIEVBcyAqKgogCi0qKiBhZGQgNDEuLjQ1 IEVBcyAqKgorKiogYWRkIDQxLi4xMTYgRUFzICoqCiAKLSoqIGFkZCA0Ni4uNTAgRUFzICoqCisq KiBhZGQgNDYuLjEyMCBFQXMgKioKIAotKiogYWRkIDUxLi41NSBFQXMgKioKKyoqIGFkZCA1MS4u MTI0IEVBcyAqKgogCi0qKiBhZGQgNTYuLjYwIEVBcyAqKgorKiogYWRkIDU2Li4xMjggRUFzICoq CiAKLSoqIGFkZCA2MS4uNjUgRUFzICoqCisqKiBhZGQgNjEuLjEzMiBFQXMgKioKIAotKiogYWRk IDY2Li43MCBFQXMgKioKKyoqIGFkZCA2Ni4uMTM2IEVBcyAqKgogCi0qKiBhZGQgNzEuLjc1IEVB cyAqKgorKiogYWRkIDcxLi4xNDAgRUFzICoqCiAKLSoqIGFkZCA3Ni4uODAgRUFzICoqCisqKiBh ZGQgNzYuLjE0NCBFQXMgKioKIAotKiogYWRkIDgxLi44NSBFQXMgKioKKyoqIGFkZCA4MS4uMTQ4 IEVBcyAqKgogCi0qKiBhZGQgODYuLjkwIEVBcyAqKgorKiogYWRkIDg2Li4xNTIgRUFzICoqCiAK LSoqIGFkZCA5MS4uOTUgRUFzICoqCisqKiBhZGQgOTEuLjE1NiBFQXMgKioKIAotKiogYWRkIDk2 Li4xMDAgRUFzICoqCisqKiBhZGQgOTYuLjE2MCBFQXMgKioKIGNvcmUuZm9ybWF0ID0gMiAoZXh0 ZW50cykKIGNvcmUuc2l6ZSA9IDEzMTEyMzIKIGNvcmUuZXh0c2l6ZSA9IDAKQEAgLTEzNDIsNTUg KzIyODIsNTQgQEAKIGNvcmUuc2l6ZSA9IDI2MjE5NTIKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUu bmV4dGVudHMgPSAyMQotY29yZS5uYWV4dGVudHMgPSAwCitjb3JlLm5hZXh0ZW50cyA9IDEKIGNv cmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCi1jb3JlLmFmb3JtYXQgPSAxIChsb2NhbCkKK2Nv cmUuYWZvcm1hdCA9IDIgKGV4dGVudHMpCiB1LmJtYnQubGV2ZWwgPSAxCiB1LmJtYnQubnVtcmVj cyA9IDEKIHUuYm1idC5rZXlzWzFdID0gW3N0YXJ0b2ZmXSAxOlswXQogdS5ibWJ0LnB0cnNbMV0g PSAxOjM5OQotYS5zZmF0dHIuaGRyLnRvdHNpemUgPSA0Ci1hLnNmYXR0ci5oZHIuY291bnQgPSAw CithLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10g MDpbMCwxNywxLDBdCiAKLSoqIGFkZCAxLi41IEVBcyAqKgorKiogYWRkIDEuLjE2NCBFQXMgKioK IAotKiogYWRkIDYuLjEwIEVBcyAqKgorKiogYWRkIDYuLjE2OCBFQXMgKioKIAotKiogYWRkIDEx Li4xNSBFQXMgKioKKyoqIGFkZCAxMS4uMTcyIEVBcyAqKgogCi0qKiBhZGQgMTYuLjIwIEVBcyAq KgorKiogYWRkIDE2Li4xNzYgRUFzICoqCiAKLSoqIGFkZCAyMS4uMjUgRUFzICoqCisqKiBhZGQg MjEuLjE4MCBFQXMgKioKIAotKiogYWRkIDI2Li4zMCBFQXMgKioKKyoqIGFkZCAyNi4uMTg0IEVB cyAqKgogCi0qKiBhZGQgMzEuLjM1IEVBcyAqKgorKiogYWRkIDMxLi4xODggRUFzICoqCiAKLSoq IGFkZCAzNi4uNDAgRUFzICoqCisqKiBhZGQgMzYuLjE5MiBFQXMgKioKIAotKiogYWRkIDQxLi40 NSBFQXMgKioKKyoqIGFkZCA0MS4uMTk2IEVBcyAqKgogCi0qKiBhZGQgNDYuLjUwIEVBcyAqKgor KiogYWRkIDQ2Li4yMDAgRUFzICoqCiAKLSoqIGFkZCA1MS4uNTUgRUFzICoqCisqKiBhZGQgNTEu LjIwNCBFQXMgKioKIAotKiogYWRkIDU2Li42MCBFQXMgKioKKyoqIGFkZCA1Ni4uMjA4IEVBcyAq KgogCi0qKiBhZGQgNjEuLjY1IEVBcyAqKgorKiogYWRkIDYxLi4yMTIgRUFzICoqCiAKLSoqIGFk ZCA2Ni4uNzAgRUFzICoqCisqKiBhZGQgNjYuLjIxNiBFQXMgKioKIAotKiogYWRkIDcxLi43NSBF QXMgKioKKyoqIGFkZCA3MS4uMjIwIEVBcyAqKgogCi0qKiBhZGQgNzYuLjgwIEVBcyAqKgorKiog YWRkIDc2Li4yMjQgRUFzICoqCiAKLSoqIGFkZCA4MS4uODUgRUFzICoqCisqKiBhZGQgODEuLjIy OCBFQXMgKioKIAotKiogYWRkIDg2Li45MCBFQXMgKioKKyoqIGFkZCA4Ni4uMjMyIEVBcyAqKgog Ci0qKiBhZGQgOTEuLjk1IEVBcyAqKgorKiogYWRkIDkxLi4yMzYgRUFzICoqCiAKLSoqIGFkZCA5 Ni4uMTAwIEVBcyAqKgorKiogYWRkIDk2Li4yNDAgRUFzICoqCiBjb3JlLmZvcm1hdCA9IDMgKGJ0 cmVlKQogY29yZS5zaXplID0gMjYyMTk1MgogY29yZS5leHRzaXplID0gMApAQCAtMTQwMiw3ICsy MzQxLDcgQEAKIHUuYm1idC5udW1yZWNzID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZd IDE6WzBdCiB1LmJtYnQucHRyc1sxXSA9IDE6Mzk5Ci1hLmJteFswXSA9IFtzdGFydG9mZixzdGFy dGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxLDBdCithLmJteFswXSA9IFtz dGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywzLDBdCiAK ICoqIHJtIDEuLjEwMCBFQXMgKioKIApAQCAtMTQyMSw1NSArMjM2MCw1NCBAQAogY29yZS5zaXpl ID0gMzkzMjY3MgogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDMxCi1jb3JlLm5h ZXh0ZW50cyA9IDAKK2NvcmUubmFleHRlbnRzID0gMQogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBi eXRlcykKLWNvcmUuYWZvcm1hdCA9IDEgKGxvY2FsKQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50 cykKIHUuYm1idC5sZXZlbCA9IDEKIHUuYm1idC5udW1yZWNzID0gMQogdS5ibWJ0LmtleXNbMV0g PSBbc3RhcnRvZmZdIDE6WzBdCiB1LmJtYnQucHRyc1sxXSA9IDE6Mzk5Ci1hLnNmYXR0ci5oZHIu dG90c2l6ZSA9IDQKLWEuc2ZhdHRyLmhkci5jb3VudCA9IDAKK2EuYm14WzBdID0gW3N0YXJ0b2Zm LHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDEsMF0KIAotKiogYWRk IDEuLjUgRUFzICoqCisqKiBhZGQgMS4uMjQ0IEVBcyAqKgogCi0qKiBhZGQgNi4uMTAgRUFzICoq CisqKiBhZGQgNi4uMjQ4IEVBcyAqKgogCi0qKiBhZGQgMTEuLjE1IEVBcyAqKgorKiogYWRkIDEx Li4yNTIgRUFzICoqCiAKLSoqIGFkZCAxNi4uMjAgRUFzICoqCisqKiBhZGQgMTYuLjI1NiBFQXMg KioKIAotKiogYWRkIDIxLi4yNSBFQXMgKioKKyoqIGFkZCAyMS4uMjYwIEVBcyAqKgogCi0qKiBh ZGQgMjYuLjMwIEVBcyAqKgorKiogYWRkIDI2Li4yNjQgRUFzICoqCiAKLSoqIGFkZCAzMS4uMzUg RUFzICoqCisqKiBhZGQgMzEuLjI2OCBFQXMgKioKIAotKiogYWRkIDM2Li40MCBFQXMgKioKKyoq IGFkZCAzNi4uMjcyIEVBcyAqKgogCi0qKiBhZGQgNDEuLjQ1IEVBcyAqKgorKiogYWRkIDQxLi4y NzYgRUFzICoqCiAKLSoqIGFkZCA0Ni4uNTAgRUFzICoqCisqKiBhZGQgNDYuLjI4MCBFQXMgKioK IAotKiogYWRkIDUxLi41NSBFQXMgKioKKyoqIGFkZCA1MS4uMjg0IEVBcyAqKgogCi0qKiBhZGQg NTYuLjYwIEVBcyAqKgorKiogYWRkIDU2Li4yODggRUFzICoqCiAKLSoqIGFkZCA2MS4uNjUgRUFz ICoqCisqKiBhZGQgNjEuLjI5MiBFQXMgKioKIAotKiogYWRkIDY2Li43MCBFQXMgKioKKyoqIGFk ZCA2Ni4uMjk2IEVBcyAqKgogCi0qKiBhZGQgNzEuLjc1IEVBcyAqKgorKiogYWRkIDcxLi4zMDAg RUFzICoqCiAKLSoqIGFkZCA3Ni4uODAgRUFzICoqCisqKiBhZGQgNzYuLjMwNCBFQXMgKioKIAot KiogYWRkIDgxLi44NSBFQXMgKioKKyoqIGFkZCA4MS4uMzA4IEVBcyAqKgogCi0qKiBhZGQgODYu LjkwIEVBcyAqKgorKiogYWRkIDg2Li4zMTIgRUFzICoqCiAKLSoqIGFkZCA5MS4uOTUgRUFzICoq CisqKiBhZGQgOTEuLjMxNiBFQXMgKioKIAotKiogYWRkIDk2Li4xMDAgRUFzICoqCisqKiBhZGQg OTYuLjMyMCBFQXMgKioKIGNvcmUuZm9ybWF0ID0gMyAoYnRyZWUpCiBjb3JlLnNpemUgPSAzOTMy NjcyCiBjb3JlLmV4dHNpemUgPSAwCkBAIC0xNDgxLDcgKzI0MTksNyBAQAogdS5ibWJ0Lm51bXJl Y3MgPSAxCiB1LmJtYnQua2V5c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KIHUuYm1idC5wdHJzWzFd ID0gMTozOTkKLWEuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRl bnRmbGFnXSAwOlswLDE3LDEsMF0KK2EuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxv Y2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDMsMF0KIAogKiogcm0gMS4uMTAwIEVBcyAqKgog CkBAIC0xNTAwLDU1ICsyNDM4LDU0IEBACiBjb3JlLnNpemUgPSA1MjQzMzkyCiBjb3JlLmV4dHNp emUgPSAwCiBjb3JlLm5leHRlbnRzID0gNDEKLWNvcmUubmFleHRlbnRzID0gMAorY29yZS5uYWV4 dGVudHMgPSAxCiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQotY29yZS5hZm9ybWF0ID0g MSAobG9jYWwpCitjb3JlLmFmb3JtYXQgPSAyIChleHRlbnRzKQogdS5ibWJ0LmxldmVsID0gMQog dS5ibWJ0Lm51bXJlY3MgPSAxCiB1LmJtYnQua2V5c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KIHUu Ym1idC5wdHJzWzFdID0gMTozOTkKLWEuc2ZhdHRyLmhkci50b3RzaXplID0gNAotYS5zZmF0dHIu aGRyLmNvdW50ID0gMAorYS5ibXhbMF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50 LGV4dGVudGZsYWddIDA6WzAsMTcsMywwXQogCi0qKiBhZGQgMS4uNSBFQXMgKioKKyoqIGFkZCAx Li4zMjQgRUFzICoqCiAKLSoqIGFkZCA2Li4xMCBFQXMgKioKKyoqIGFkZCA2Li4zMjggRUFzICoq CiAKLSoqIGFkZCAxMS4uMTUgRUFzICoqCisqKiBhZGQgMTEuLjMzMiBFQXMgKioKIAotKiogYWRk IDE2Li4yMCBFQXMgKioKKyoqIGFkZCAxNi4uMzM2IEVBcyAqKgogCi0qKiBhZGQgMjEuLjI1IEVB cyAqKgorKiogYWRkIDIxLi4zNDAgRUFzICoqCiAKLSoqIGFkZCAyNi4uMzAgRUFzICoqCisqKiBh ZGQgMjYuLjM0NCBFQXMgKioKIAotKiogYWRkIDMxLi4zNSBFQXMgKioKKyoqIGFkZCAzMS4uMzQ4 IEVBcyAqKgogCi0qKiBhZGQgMzYuLjQwIEVBcyAqKgorKiogYWRkIDM2Li4zNTIgRUFzICoqCiAK LSoqIGFkZCA0MS4uNDUgRUFzICoqCisqKiBhZGQgNDEuLjM1NiBFQXMgKioKIAotKiogYWRkIDQ2 Li41MCBFQXMgKioKKyoqIGFkZCA0Ni4uMzYwIEVBcyAqKgogCi0qKiBhZGQgNTEuLjU1IEVBcyAq KgorKiogYWRkIDUxLi4zNjQgRUFzICoqCiAKLSoqIGFkZCA1Ni4uNjAgRUFzICoqCisqKiBhZGQg NTYuLjM2OCBFQXMgKioKIAotKiogYWRkIDYxLi42NSBFQXMgKioKKyoqIGFkZCA2MS4uMzcyIEVB cyAqKgogCi0qKiBhZGQgNjYuLjcwIEVBcyAqKgorKiogYWRkIDY2Li4zNzYgRUFzICoqCiAKLSoq IGFkZCA3MS4uNzUgRUFzICoqCisqKiBhZGQgNzEuLjM4MCBFQXMgKioKIAotKiogYWRkIDc2Li44 MCBFQXMgKioKKyoqIGFkZCA3Ni4uMzg0IEVBcyAqKgogCi0qKiBhZGQgODEuLjg1IEVBcyAqKgor KiogYWRkIDgxLi4zODggRUFzICoqCiAKLSoqIGFkZCA4Ni4uOTAgRUFzICoqCisqKiBhZGQgODYu LjM5MiBFQXMgKioKIAotKiogYWRkIDkxLi45NSBFQXMgKioKKyoqIGFkZCA5MS4uMzk2IEVBcyAq KgogCi0qKiBhZGQgOTYuLjEwMCBFQXMgKioKKyoqIGFkZCA5Ni4uNDAwIEVBcyAqKgogY29yZS5m b3JtYXQgPSAzIChidHJlZSkKIGNvcmUuc2l6ZSA9IDUyNDMzOTIKIGNvcmUuZXh0c2l6ZSA9IDAK QEAgLTE1NjAsNyArMjQ5Nyw3IEBACiB1LmJtYnQubnVtcmVjcyA9IDEKIHUuYm1idC5rZXlzWzFd ID0gW3N0YXJ0b2ZmXSAxOlswXQogdS5ibWJ0LnB0cnNbMV0gPSAxOjM5OQotYS5ibXhbMF0gPSBb c3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMSwwXQor YS5ibXhbMF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6 WzAsMTcsNCwwXQogCiAqKiBybSAxLi4xMDAgRUFzICoqCiAKQEAgLTE1NzksNTUgKzI1MTYsNTQg QEAKIGNvcmUuc2l6ZSA9IDY1NTQxMTIKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMg PSA1MQotY29yZS5uYWV4dGVudHMgPSAwCitjb3JlLm5hZXh0ZW50cyA9IDEKIGNvcmUuZm9ya29m ZiA9IDI0ICgxOTIgYnl0ZXMpCi1jb3JlLmFmb3JtYXQgPSAxIChsb2NhbCkKK2NvcmUuYWZvcm1h dCA9IDIgKGV4dGVudHMpCiB1LmJtYnQubGV2ZWwgPSAxCiB1LmJtYnQubnVtcmVjcyA9IDEKIHUu Ym1idC5rZXlzWzFdID0gW3N0YXJ0b2ZmXSAxOlswXQogdS5ibWJ0LnB0cnNbMV0gPSAxOjM5OQot YS5zZmF0dHIuaGRyLnRvdHNpemUgPSA0Ci1hLnNmYXR0ci5oZHIuY291bnQgPSAwCithLmJteFsw XSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNyw0 LDBdCiAKLSoqIGFkZCAxLi41IEVBcyAqKgorKiogYWRkIDEuLjQwNCBFQXMgKioKIAotKiogYWRk IDYuLjEwIEVBcyAqKgorKiogYWRkIDYuLjQwOCBFQXMgKioKIAotKiogYWRkIDExLi4xNSBFQXMg KioKKyoqIGFkZCAxMS4uNDEyIEVBcyAqKgogCi0qKiBhZGQgMTYuLjIwIEVBcyAqKgorKiogYWRk IDE2Li40MTYgRUFzICoqCiAKLSoqIGFkZCAyMS4uMjUgRUFzICoqCisqKiBhZGQgMjEuLjQyMCBF QXMgKioKIAotKiogYWRkIDI2Li4zMCBFQXMgKioKKyoqIGFkZCAyNi4uNDI0IEVBcyAqKgogCi0q KiBhZGQgMzEuLjM1IEVBcyAqKgorKiogYWRkIDMxLi40MjggRUFzICoqCiAKLSoqIGFkZCAzNi4u NDAgRUFzICoqCisqKiBhZGQgMzYuLjQzMiBFQXMgKioKIAotKiogYWRkIDQxLi40NSBFQXMgKioK KyoqIGFkZCA0MS4uNDM2IEVBcyAqKgogCi0qKiBhZGQgNDYuLjUwIEVBcyAqKgorKiogYWRkIDQ2 Li40NDAgRUFzICoqCiAKLSoqIGFkZCA1MS4uNTUgRUFzICoqCisqKiBhZGQgNTEuLjQ0NCBFQXMg KioKIAotKiogYWRkIDU2Li42MCBFQXMgKioKKyoqIGFkZCA1Ni4uNDQ4IEVBcyAqKgogCi0qKiBh ZGQgNjEuLjY1IEVBcyAqKgorKiogYWRkIDYxLi40NTIgRUFzICoqCiAKLSoqIGFkZCA2Ni4uNzAg RUFzICoqCisqKiBhZGQgNjYuLjQ1NiBFQXMgKioKIAotKiogYWRkIDcxLi43NSBFQXMgKioKKyoq IGFkZCA3MS4uNDYwIEVBcyAqKgogCi0qKiBhZGQgNzYuLjgwIEVBcyAqKgorKiogYWRkIDc2Li40 NjQgRUFzICoqCiAKLSoqIGFkZCA4MS4uODUgRUFzICoqCisqKiBhZGQgODEuLjQ2OCBFQXMgKioK IAotKiogYWRkIDg2Li45MCBFQXMgKioKKyoqIGFkZCA4Ni4uNDcyIEVBcyAqKgogCi0qKiBhZGQg OTEuLjk1IEVBcyAqKgorKiogYWRkIDkxLi40NzYgRUFzICoqCiAKLSoqIGFkZCA5Ni4uMTAwIEVB cyAqKgorKiogYWRkIDk2Li40ODAgRUFzICoqCiBjb3JlLmZvcm1hdCA9IDMgKGJ0cmVlKQogY29y ZS5zaXplID0gNjU1NDExMgogY29yZS5leHRzaXplID0gMApAQCAtMTYzOSw3ICsyNTc1LDcgQEAK IHUuYm1idC5udW1yZWNzID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZdIDE6WzBdCiB1 LmJtYnQucHRyc1sxXSA9IDE6Mzk5Ci1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJs b2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxLDBdCithLmJteFswXSA9IFtzdGFydG9mZixz dGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNyw0LDBdCiAKICoqIHJtIDEu LjEwMCBFQXMgKioKIApAQCAtMTY1OCw1NSArMjU5NCw1NCBAQAogY29yZS5zaXplID0gNzg2NDgz MgogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDYxCi1jb3JlLm5hZXh0ZW50cyA9 IDAKK2NvcmUubmFleHRlbnRzID0gMQogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNv cmUuYWZvcm1hdCA9IDEgKGxvY2FsKQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1i dC5sZXZlbCA9IDEKIHUuYm1idC5udW1yZWNzID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRv ZmZdIDE6WzBdCiB1LmJtYnQucHRyc1sxXSA9IDE6Mzk5Ci1hLnNmYXR0ci5oZHIudG90c2l6ZSA9 IDQKLWEuc2ZhdHRyLmhkci5jb3VudCA9IDAKK2EuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0Ymxv Y2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDQsMF0KIAotKiogYWRkIDEuLjUgRUFz ICoqCisqKiBhZGQgMS4uNDg0IEVBcyAqKgogCi0qKiBhZGQgNi4uMTAgRUFzICoqCisqKiBhZGQg Ni4uNDg4IEVBcyAqKgogCi0qKiBhZGQgMTEuLjE1IEVBcyAqKgorKiogYWRkIDExLi40OTIgRUFz ICoqCiAKLSoqIGFkZCAxNi4uMjAgRUFzICoqCisqKiBhZGQgMTYuLjQ5NiBFQXMgKioKIAotKiog YWRkIDIxLi4yNSBFQXMgKioKKyoqIGFkZCAyMS4uNTAwIEVBcyAqKgogCi0qKiBhZGQgMjYuLjMw IEVBcyAqKgorKiogYWRkIDI2Li41MDQgRUFzICoqCiAKLSoqIGFkZCAzMS4uMzUgRUFzICoqCisq KiBhZGQgMzEuLjUwOCBFQXMgKioKIAotKiogYWRkIDM2Li40MCBFQXMgKioKKyoqIGFkZCAzNi4u NTEyIEVBcyAqKgogCi0qKiBhZGQgNDEuLjQ1IEVBcyAqKgorKiogYWRkIDQxLi41MTYgRUFzICoq CiAKLSoqIGFkZCA0Ni4uNTAgRUFzICoqCisqKiBhZGQgNDYuLjUyMCBFQXMgKioKIAotKiogYWRk IDUxLi41NSBFQXMgKioKKyoqIGFkZCA1MS4uNTI0IEVBcyAqKgogCi0qKiBhZGQgNTYuLjYwIEVB cyAqKgorKiogYWRkIDU2Li41MjggRUFzICoqCiAKLSoqIGFkZCA2MS4uNjUgRUFzICoqCisqKiBh ZGQgNjEuLjUzMiBFQXMgKioKIAotKiogYWRkIDY2Li43MCBFQXMgKioKKyoqIGFkZCA2Ni4uNTM2 IEVBcyAqKgogCi0qKiBhZGQgNzEuLjc1IEVBcyAqKgorKiogYWRkIDcxLi41NDAgRUFzICoqCiAK LSoqIGFkZCA3Ni4uODAgRUFzICoqCisqKiBhZGQgNzYuLjU0NCBFQXMgKioKIAotKiogYWRkIDgx Li44NSBFQXMgKioKKyoqIGFkZCA4MS4uNTQ4IEVBcyAqKgogCi0qKiBhZGQgODYuLjkwIEVBcyAq KgorKiogYWRkIDg2Li41NTIgRUFzICoqCiAKLSoqIGFkZCA5MS4uOTUgRUFzICoqCisqKiBhZGQg OTEuLjU1NiBFQXMgKioKIAotKiogYWRkIDk2Li4xMDAgRUFzICoqCisqKiBhZGQgOTYuLjU2MCBF QXMgKioKIGNvcmUuZm9ybWF0ID0gMyAoYnRyZWUpCiBjb3JlLnNpemUgPSA3ODY0ODMyCiBjb3Jl LmV4dHNpemUgPSAwCkBAIC0xNzE4LDcgKzI2NTMsNyBAQAogdS5ibWJ0Lm51bXJlY3MgPSAxCiB1 LmJtYnQua2V5c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KIHUuYm1idC5wdHJzWzFdID0gMTozOTkK LWEuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAw OlswLDE3LDEsMF0KK2EuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxl eHRlbnRmbGFnXSAwOlswLDE3LDUsMF0KIAogKiogcm0gMS4uMTAwIEVBcyAqKgogCkBAIC0xNzM3 LDU1ICsyNjcyLDU0IEBACiBjb3JlLnNpemUgPSA5MTc1NTUyCiBjb3JlLmV4dHNpemUgPSAwCiBj b3JlLm5leHRlbnRzID0gNzEKLWNvcmUubmFleHRlbnRzID0gMAorY29yZS5uYWV4dGVudHMgPSAx CiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQotY29yZS5hZm9ybWF0ID0gMSAobG9jYWwp Citjb3JlLmFmb3JtYXQgPSAyIChleHRlbnRzKQogdS5ibWJ0LmxldmVsID0gMQogdS5ibWJ0Lm51 bXJlY3MgPSAxCiB1LmJtYnQua2V5c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KIHUuYm1idC5wdHJz WzFdID0gMTozOTkKLWEuc2ZhdHRyLmhkci50b3RzaXplID0gNAotYS5zZmF0dHIuaGRyLmNvdW50 ID0gMAorYS5ibXhbMF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZs YWddIDA6WzAsMTcsNSwwXQogCi0qKiBhZGQgMS4uNSBFQXMgKioKKyoqIGFkZCAxLi41NjQgRUFz ICoqCiAKLSoqIGFkZCA2Li4xMCBFQXMgKioKKyoqIGFkZCA2Li41NjggRUFzICoqCiAKLSoqIGFk ZCAxMS4uMTUgRUFzICoqCisqKiBhZGQgMTEuLjU3MiBFQXMgKioKIAotKiogYWRkIDE2Li4yMCBF QXMgKioKKyoqIGFkZCAxNi4uNTc2IEVBcyAqKgogCi0qKiBhZGQgMjEuLjI1IEVBcyAqKgorKiog YWRkIDIxLi41ODAgRUFzICoqCiAKLSoqIGFkZCAyNi4uMzAgRUFzICoqCisqKiBhZGQgMjYuLjU4 NCBFQXMgKioKIAotKiogYWRkIDMxLi4zNSBFQXMgKioKKyoqIGFkZCAzMS4uNTg4IEVBcyAqKgog Ci0qKiBhZGQgMzYuLjQwIEVBcyAqKgorKiogYWRkIDM2Li41OTIgRUFzICoqCiAKLSoqIGFkZCA0 MS4uNDUgRUFzICoqCisqKiBhZGQgNDEuLjU5NiBFQXMgKioKIAotKiogYWRkIDQ2Li41MCBFQXMg KioKKyoqIGFkZCA0Ni4uNjAwIEVBcyAqKgogCi0qKiBhZGQgNTEuLjU1IEVBcyAqKgorKiogYWRk IDUxLi42MDQgRUFzICoqCiAKLSoqIGFkZCA1Ni4uNjAgRUFzICoqCisqKiBhZGQgNTYuLjYwOCBF QXMgKioKIAotKiogYWRkIDYxLi42NSBFQXMgKioKKyoqIGFkZCA2MS4uNjEyIEVBcyAqKgogCi0q KiBhZGQgNjYuLjcwIEVBcyAqKgorKiogYWRkIDY2Li42MTYgRUFzICoqCiAKLSoqIGFkZCA3MS4u NzUgRUFzICoqCisqKiBhZGQgNzEuLjYyMCBFQXMgKioKIAotKiogYWRkIDc2Li44MCBFQXMgKioK KyoqIGFkZCA3Ni4uNjI0IEVBcyAqKgogCi0qKiBhZGQgODEuLjg1IEVBcyAqKgorKiogYWRkIDgx Li42MjggRUFzICoqCiAKLSoqIGFkZCA4Ni4uOTAgRUFzICoqCisqKiBhZGQgODYuLjYzMiBFQXMg KioKIAotKiogYWRkIDkxLi45NSBFQXMgKioKKyoqIGFkZCA5MS4uNjM2IEVBcyAqKgogCi0qKiBh ZGQgOTYuLjEwMCBFQXMgKioKKyoqIGFkZCA5Ni4uNjQwIEVBcyAqKgogY29yZS5mb3JtYXQgPSAz IChidHJlZSkKIGNvcmUuc2l6ZSA9IDkxNzU1NTIKIGNvcmUuZXh0c2l6ZSA9IDAKQEAgLTE3OTcs NyArMjczMSw3IEBACiB1LmJtYnQubnVtcmVjcyA9IDEKIHUuYm1idC5rZXlzWzFdID0gW3N0YXJ0 b2ZmXSAxOlswXQogdS5ibWJ0LnB0cnNbMV0gPSAxOjM5OQotYS5ibXhbMF0gPSBbc3RhcnRvZmYs c3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMSwwXQorYS5ibXhbMF0g PSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsNiww XQogCiAqKiBybSAxLi4xMDAgRUFzICoqCiAKQEAgLTE4MTYsNTUgKzI3NTAsNTQgQEAKIGNvcmUu c2l6ZSA9IDEwNDg2MjcyCiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gODEKLWNv cmUubmFleHRlbnRzID0gMAorY29yZS5uYWV4dGVudHMgPSAxCiBjb3JlLmZvcmtvZmYgPSAyNCAo MTkyIGJ5dGVzKQotY29yZS5hZm9ybWF0ID0gMSAobG9jYWwpCitjb3JlLmFmb3JtYXQgPSAyIChl eHRlbnRzKQogdS5ibWJ0LmxldmVsID0gMQogdS5ibWJ0Lm51bXJlY3MgPSAxCiB1LmJtYnQua2V5 c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KIHUuYm1idC5wdHJzWzFdID0gMTozOTkKLWEuc2ZhdHRy Lmhkci50b3RzaXplID0gNAotYS5zZmF0dHIuaGRyLmNvdW50ID0gMAorYS5ibXhbMF0gPSBbc3Rh cnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsNiwwXQogCi0q KiBhZGQgMS4uNSBFQXMgKioKKyoqIGFkZCAxLi42NDQgRUFzICoqCiAKLSoqIGFkZCA2Li4xMCBF QXMgKioKKyoqIGFkZCA2Li42NDggRUFzICoqCiAKLSoqIGFkZCAxMS4uMTUgRUFzICoqCisqKiBh ZGQgMTEuLjY1MiBFQXMgKioKIAotKiogYWRkIDE2Li4yMCBFQXMgKioKKyoqIGFkZCAxNi4uNjU2 IEVBcyAqKgogCi0qKiBhZGQgMjEuLjI1IEVBcyAqKgorKiogYWRkIDIxLi42NjAgRUFzICoqCiAK LSoqIGFkZCAyNi4uMzAgRUFzICoqCisqKiBhZGQgMjYuLjY2NCBFQXMgKioKIAotKiogYWRkIDMx Li4zNSBFQXMgKioKKyoqIGFkZCAzMS4uNjY4IEVBcyAqKgogCi0qKiBhZGQgMzYuLjQwIEVBcyAq KgorKiogYWRkIDM2Li42NzIgRUFzICoqCiAKLSoqIGFkZCA0MS4uNDUgRUFzICoqCisqKiBhZGQg NDEuLjY3NiBFQXMgKioKIAotKiogYWRkIDQ2Li41MCBFQXMgKioKKyoqIGFkZCA0Ni4uNjgwIEVB cyAqKgogCi0qKiBhZGQgNTEuLjU1IEVBcyAqKgorKiogYWRkIDUxLi42ODQgRUFzICoqCiAKLSoq IGFkZCA1Ni4uNjAgRUFzICoqCisqKiBhZGQgNTYuLjY4OCBFQXMgKioKIAotKiogYWRkIDYxLi42 NSBFQXMgKioKKyoqIGFkZCA2MS4uNjkyIEVBcyAqKgogCi0qKiBhZGQgNjYuLjcwIEVBcyAqKgor KiogYWRkIDY2Li42OTYgRUFzICoqCiAKLSoqIGFkZCA3MS4uNzUgRUFzICoqCisqKiBhZGQgNzEu LjcwMCBFQXMgKioKIAotKiogYWRkIDc2Li44MCBFQXMgKioKKyoqIGFkZCA3Ni4uNzA0IEVBcyAq KgogCi0qKiBhZGQgODEuLjg1IEVBcyAqKgorKiogYWRkIDgxLi43MDggRUFzICoqCiAKLSoqIGFk ZCA4Ni4uOTAgRUFzICoqCisqKiBhZGQgODYuLjcxMiBFQXMgKioKIAotKiogYWRkIDkxLi45NSBF QXMgKioKKyoqIGFkZCA5MS4uNzE2IEVBcyAqKgogCi0qKiBhZGQgOTYuLjEwMCBFQXMgKioKKyoq IGFkZCA5Ni4uNzIwIEVBcyAqKgogY29yZS5mb3JtYXQgPSAzIChidHJlZSkKIGNvcmUuc2l6ZSA9 IDEwNDg2MjcyCiBjb3JlLmV4dHNpemUgPSAwCkBAIC0xODc2LDcgKzI4MDksNyBAQAogdS5ibWJ0 Lm51bXJlY3MgPSAxCiB1LmJtYnQua2V5c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KIHUuYm1idC5w dHJzWzFdID0gMTozOTkKLWEuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3Vu dCxleHRlbnRmbGFnXSAwOlswLDE3LDEsMF0KK2EuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0Ymxv Y2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDcsMF0KIAogKiogcm0gMS4uMTAwIEVB cyAqKgogCkBAIC0xODk1LDU1ICsyODI4LDU0IEBACiBjb3JlLnNpemUgPSAxMTc5Njk5MgogY29y ZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDkxCi1jb3JlLm5hZXh0ZW50cyA9IDAKK2Nv cmUubmFleHRlbnRzID0gMQogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNvcmUuYWZv cm1hdCA9IDEgKGxvY2FsKQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5sZXZl bCA9IDEKIHUuYm1idC5udW1yZWNzID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZdIDE6 WzBdCiB1LmJtYnQucHRyc1sxXSA9IDE6Mzk5Ci1hLnNmYXR0ci5oZHIudG90c2l6ZSA9IDQKLWEu c2ZhdHRyLmhkci5jb3VudCA9IDAKK2EuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxv Y2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDcsMF0KIAotKiogYWRkIDEuLjUgRUFzICoqCisq KiBhZGQgMS4uNzI0IEVBcyAqKgogCi0qKiBhZGQgNi4uMTAgRUFzICoqCisqKiBhZGQgNi4uNzI4 IEVBcyAqKgogCi0qKiBhZGQgMTEuLjE1IEVBcyAqKgorKiogYWRkIDExLi43MzIgRUFzICoqCiAK LSoqIGFkZCAxNi4uMjAgRUFzICoqCisqKiBhZGQgMTYuLjczNiBFQXMgKioKIAotKiogYWRkIDIx Li4yNSBFQXMgKioKKyoqIGFkZCAyMS4uNzQwIEVBcyAqKgogCi0qKiBhZGQgMjYuLjMwIEVBcyAq KgorKiogYWRkIDI2Li43NDQgRUFzICoqCiAKLSoqIGFkZCAzMS4uMzUgRUFzICoqCisqKiBhZGQg MzEuLjc0OCBFQXMgKioKIAotKiogYWRkIDM2Li40MCBFQXMgKioKKyoqIGFkZCAzNi4uNzUyIEVB cyAqKgogCi0qKiBhZGQgNDEuLjQ1IEVBcyAqKgorKiogYWRkIDQxLi43NTYgRUFzICoqCiAKLSoq IGFkZCA0Ni4uNTAgRUFzICoqCisqKiBhZGQgNDYuLjc2MCBFQXMgKioKIAotKiogYWRkIDUxLi41 NSBFQXMgKioKKyoqIGFkZCA1MS4uNzY0IEVBcyAqKgogCi0qKiBhZGQgNTYuLjYwIEVBcyAqKgor KiogYWRkIDU2Li43NjggRUFzICoqCiAKLSoqIGFkZCA2MS4uNjUgRUFzICoqCisqKiBhZGQgNjEu Ljc3MiBFQXMgKioKIAotKiogYWRkIDY2Li43MCBFQXMgKioKKyoqIGFkZCA2Ni4uNzc2IEVBcyAq KgogCi0qKiBhZGQgNzEuLjc1IEVBcyAqKgorKiogYWRkIDcxLi43ODAgRUFzICoqCiAKLSoqIGFk ZCA3Ni4uODAgRUFzICoqCisqKiBhZGQgNzYuLjc4NCBFQXMgKioKIAotKiogYWRkIDgxLi44NSBF QXMgKioKKyoqIGFkZCA4MS4uNzg4IEVBcyAqKgogCi0qKiBhZGQgODYuLjkwIEVBcyAqKgorKiog YWRkIDg2Li43OTIgRUFzICoqCiAKLSoqIGFkZCA5MS4uOTUgRUFzICoqCisqKiBhZGQgOTEuLjc5 NiBFQXMgKioKIAotKiogYWRkIDk2Li4xMDAgRUFzICoqCisqKiBhZGQgOTYuLjgwMCBFQXMgKioK IGNvcmUuZm9ybWF0ID0gMyAoYnRyZWUpCiBjb3JlLnNpemUgPSAxMTc5Njk5MgogY29yZS5leHRz aXplID0gMApAQCAtMTk1NSw3ICsyODg3LDcgQEAKIHUuYm1idC5udW1yZWNzID0gMQogdS5ibWJ0 LmtleXNbMV0gPSBbc3RhcnRvZmZdIDE6WzBdCiB1LmJtYnQucHRyc1sxXSA9IDE6Mzk5Ci1hLmJt eFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwx NywxLDBdCithLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50 ZmxhZ10gMDpbMCwxNyw4LDBdCiAKICoqIHJtIDEuLjEwMCBFQXMgKioKIApAQCAtMTk3NSw1NSAr MjkwNyw1NCBAQAogY29yZS5zaXplID0gMTMxMDc3MTIKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUu bmV4dGVudHMgPSAxMDEKLWNvcmUubmFleHRlbnRzID0gMAorY29yZS5uYWV4dGVudHMgPSAxCiBj b3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQotY29yZS5hZm9ybWF0ID0gMSAobG9jYWwpCitj b3JlLmFmb3JtYXQgPSAyIChleHRlbnRzKQogdS5ibWJ0LmxldmVsID0gMQogdS5ibWJ0Lm51bXJl Y3MgPSAxCiB1LmJtYnQua2V5c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KIHUuYm1idC5wdHJzWzFd ID0gMTozOTkKLWEuc2ZhdHRyLmhkci50b3RzaXplID0gNAotYS5zZmF0dHIuaGRyLmNvdW50ID0g MAorYS5ibXhbMF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWdd IDA6WzAsMTcsOCwwXQogCi0qKiBhZGQgMS4uNSBFQXMgKioKKyoqIGFkZCAxLi44MDQgRUFzICoq CiAKLSoqIGFkZCA2Li4xMCBFQXMgKioKKyoqIGFkZCA2Li44MDggRUFzICoqCiAKLSoqIGFkZCAx MS4uMTUgRUFzICoqCisqKiBhZGQgMTEuLjgxMiBFQXMgKioKIAotKiogYWRkIDE2Li4yMCBFQXMg KioKKyoqIGFkZCAxNi4uODE2IEVBcyAqKgogCi0qKiBhZGQgMjEuLjI1IEVBcyAqKgorKiogYWRk IDIxLi44MjAgRUFzICoqCiAKLSoqIGFkZCAyNi4uMzAgRUFzICoqCisqKiBhZGQgMjYuLjgyNCBF QXMgKioKIAotKiogYWRkIDMxLi4zNSBFQXMgKioKKyoqIGFkZCAzMS4uODI4IEVBcyAqKgogCi0q KiBhZGQgMzYuLjQwIEVBcyAqKgorKiogYWRkIDM2Li44MzIgRUFzICoqCiAKLSoqIGFkZCA0MS4u NDUgRUFzICoqCisqKiBhZGQgNDEuLjgzNiBFQXMgKioKIAotKiogYWRkIDQ2Li41MCBFQXMgKioK KyoqIGFkZCA0Ni4uODQwIEVBcyAqKgogCi0qKiBhZGQgNTEuLjU1IEVBcyAqKgorKiogYWRkIDUx Li44NDQgRUFzICoqCiAKLSoqIGFkZCA1Ni4uNjAgRUFzICoqCisqKiBhZGQgNTYuLjg0OCBFQXMg KioKIAotKiogYWRkIDYxLi42NSBFQXMgKioKKyoqIGFkZCA2MS4uODUyIEVBcyAqKgogCi0qKiBh ZGQgNjYuLjcwIEVBcyAqKgorKiogYWRkIDY2Li44NTYgRUFzICoqCiAKLSoqIGFkZCA3MS4uNzUg RUFzICoqCisqKiBhZGQgNzEuLjg2MCBFQXMgKioKIAotKiogYWRkIDc2Li44MCBFQXMgKioKKyoq IGFkZCA3Ni4uODY0IEVBcyAqKgogCi0qKiBhZGQgODEuLjg1IEVBcyAqKgorKiogYWRkIDgxLi44 NjggRUFzICoqCiAKLSoqIGFkZCA4Ni4uOTAgRUFzICoqCisqKiBhZGQgODYuLjg3MiBFQXMgKioK IAotKiogYWRkIDkxLi45NSBFQXMgKioKKyoqIGFkZCA5MS4uODc2IEVBcyAqKgogCi0qKiBhZGQg OTYuLjEwMCBFQXMgKioKKyoqIGFkZCA5Ni4uODgwIEVBcyAqKgogY29yZS5mb3JtYXQgPSAzIChi dHJlZSkKIGNvcmUuc2l6ZSA9IDEzMTA3NzEyCiBjb3JlLmV4dHNpemUgPSAwCkBAIC0yMDM1LDcg KzI5NjYsNyBAQAogdS5ibWJ0Lm51bXJlY3MgPSAxCiB1LmJtYnQua2V5c1sxXSA9IFtzdGFydG9m Zl0gMTpbMF0KIHUuYm1idC5wdHJzWzFdID0gMTozOTkKLWEuYm14WzBdID0gW3N0YXJ0b2ZmLHN0 YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDEsMF0KK2EuYm14WzBdID0g W3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDksMF0K IAogKiogcm0gMS4uMTAwIEVBcyAqKgogCkBAIC0yMDU0LDU1ICsyOTg1LDU0IEBACiBjb3JlLnNp emUgPSAxNDQxODQzMgogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDExMQotY29y ZS5uYWV4dGVudHMgPSAwCitjb3JlLm5hZXh0ZW50cyA9IDEKIGNvcmUuZm9ya29mZiA9IDI0ICgx OTIgYnl0ZXMpCi1jb3JlLmFmb3JtYXQgPSAxIChsb2NhbCkKK2NvcmUuYWZvcm1hdCA9IDIgKGV4 dGVudHMpCiB1LmJtYnQubGV2ZWwgPSAxCiB1LmJtYnQubnVtcmVjcyA9IDEKIHUuYm1idC5rZXlz WzFdID0gW3N0YXJ0b2ZmXSAxOlswXQogdS5ibWJ0LnB0cnNbMV0gPSAxOjM5OQotYS5zZmF0dHIu aGRyLnRvdHNpemUgPSA0Ci1hLnNmYXR0ci5oZHIuY291bnQgPSAwCithLmJteFswXSA9IFtzdGFy dG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNyw4LDBdCiAKLSoq IGFkZCAxLi41IEVBcyAqKgorKiogYWRkIDEuLjg4NCBFQXMgKioKIAotKiogYWRkIDYuLjEwIEVB cyAqKgorKiogYWRkIDYuLjg4OCBFQXMgKioKIAotKiogYWRkIDExLi4xNSBFQXMgKioKKyoqIGFk ZCAxMS4uODkyIEVBcyAqKgogCi0qKiBhZGQgMTYuLjIwIEVBcyAqKgorKiogYWRkIDE2Li44OTYg RUFzICoqCiAKLSoqIGFkZCAyMS4uMjUgRUFzICoqCisqKiBhZGQgMjEuLjkwMCBFQXMgKioKIAot KiogYWRkIDI2Li4zMCBFQXMgKioKKyoqIGFkZCAyNi4uOTA0IEVBcyAqKgogCi0qKiBhZGQgMzEu LjM1IEVBcyAqKgorKiogYWRkIDMxLi45MDggRUFzICoqCiAKLSoqIGFkZCAzNi4uNDAgRUFzICoq CisqKiBhZGQgMzYuLjkxMiBFQXMgKioKIAotKiogYWRkIDQxLi40NSBFQXMgKioKKyoqIGFkZCA0 MS4uOTE2IEVBcyAqKgogCi0qKiBhZGQgNDYuLjUwIEVBcyAqKgorKiogYWRkIDQ2Li45MjAgRUFz ICoqCiAKLSoqIGFkZCA1MS4uNTUgRUFzICoqCisqKiBhZGQgNTEuLjkyNCBFQXMgKioKIAotKiog YWRkIDU2Li42MCBFQXMgKioKKyoqIGFkZCA1Ni4uOTI4IEVBcyAqKgogCi0qKiBhZGQgNjEuLjY1 IEVBcyAqKgorKiogYWRkIDYxLi45MzIgRUFzICoqCiAKLSoqIGFkZCA2Ni4uNzAgRUFzICoqCisq KiBhZGQgNjYuLjkzNiBFQXMgKioKIAotKiogYWRkIDcxLi43NSBFQXMgKioKKyoqIGFkZCA3MS4u OTQwIEVBcyAqKgogCi0qKiBhZGQgNzYuLjgwIEVBcyAqKgorKiogYWRkIDc2Li45NDQgRUFzICoq CiAKLSoqIGFkZCA4MS4uODUgRUFzICoqCisqKiBhZGQgODEuLjk0OCBFQXMgKioKIAotKiogYWRk IDg2Li45MCBFQXMgKioKKyoqIGFkZCA4Ni4uOTUyIEVBcyAqKgogCi0qKiBhZGQgOTEuLjk1IEVB cyAqKgorKiogYWRkIDkxLi45NTYgRUFzICoqCiAKLSoqIGFkZCA5Ni4uMTAwIEVBcyAqKgorKiog YWRkIDk2Li45NjAgRUFzICoqCiBjb3JlLmZvcm1hdCA9IDMgKGJ0cmVlKQogY29yZS5zaXplID0g MTQ0MTg0MzIKIGNvcmUuZXh0c2l6ZSA9IDAKQEAgLTIxMTQsNyArMzA0NCw3IEBACiB1LmJtYnQu bnVtcmVjcyA9IDEKIHUuYm1idC5rZXlzWzFdID0gW3N0YXJ0b2ZmXSAxOlswXQogdS5ibWJ0LnB0 cnNbMV0gPSAxOjM5OQotYS5ibXhbMF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50 LGV4dGVudGZsYWddIDA6WzAsMTcsMSwwXQorYS5ibXhbMF0gPSBbc3RhcnRvZmYsc3RhcnRibG9j ayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMTAsMF0KIAogKiogcm0gMS4uMTAwIEVB cyAqKgogCkBAIC0yMTMzLDU1ICszMDYzLDU0IEBACiBjb3JlLnNpemUgPSAxNTcyOTE1MgogY29y ZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDEyMQotY29yZS5uYWV4dGVudHMgPSAwCitj b3JlLm5hZXh0ZW50cyA9IDEKIGNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCi1jb3JlLmFm b3JtYXQgPSAxIChsb2NhbCkKK2NvcmUuYWZvcm1hdCA9IDIgKGV4dGVudHMpCiB1LmJtYnQubGV2 ZWwgPSAxCiB1LmJtYnQubnVtcmVjcyA9IDEKIHUuYm1idC5rZXlzWzFdID0gW3N0YXJ0b2ZmXSAx OlswXQogdS5ibWJ0LnB0cnNbMV0gPSAxOjM5OQotYS5zZmF0dHIuaGRyLnRvdHNpemUgPSA0Ci1h LnNmYXR0ci5oZHIuY291bnQgPSAwCithLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJs b2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNyw5LDBdCiAKLSoqIGFkZCAxLi41IEVBcyAqKgor KiogYWRkIDEuLjk2NCBFQXMgKioKIAotKiogYWRkIDYuLjEwIEVBcyAqKgorKiogYWRkIDYuLjk2 OCBFQXMgKioKIAotKiogYWRkIDExLi4xNSBFQXMgKioKKyoqIGFkZCAxMS4uOTcyIEVBcyAqKgog Ci0qKiBhZGQgMTYuLjIwIEVBcyAqKgorKiogYWRkIDE2Li45NzYgRUFzICoqCiAKLSoqIGFkZCAy MS4uMjUgRUFzICoqCisqKiBhZGQgMjEuLjk4MCBFQXMgKioKIAotKiogYWRkIDI2Li4zMCBFQXMg KioKKyoqIGFkZCAyNi4uOTg0IEVBcyAqKgogCi0qKiBhZGQgMzEuLjM1IEVBcyAqKgorKiogYWRk IDMxLi45ODggRUFzICoqCiAKLSoqIGFkZCAzNi4uNDAgRUFzICoqCisqKiBhZGQgMzYuLjk5MiBF QXMgKioKIAotKiogYWRkIDQxLi40NSBFQXMgKioKKyoqIGFkZCA0MS4uOTk2IEVBcyAqKgogCi0q KiBhZGQgNDYuLjUwIEVBcyAqKgorKiogYWRkIDQ2Li4xMDAwIEVBcyAqKgogCi0qKiBhZGQgNTEu LjU1IEVBcyAqKgorKiogYWRkIDUxLi4xMDA0IEVBcyAqKgogCi0qKiBhZGQgNTYuLjYwIEVBcyAq KgorKiogYWRkIDU2Li4xMDA4IEVBcyAqKgogCi0qKiBhZGQgNjEuLjY1IEVBcyAqKgorKiogYWRk IDYxLi4xMDEyIEVBcyAqKgogCi0qKiBhZGQgNjYuLjcwIEVBcyAqKgorKiogYWRkIDY2Li4xMDE2 IEVBcyAqKgogCi0qKiBhZGQgNzEuLjc1IEVBcyAqKgorKiogYWRkIDcxLi4xMDIwIEVBcyAqKgog Ci0qKiBhZGQgNzYuLjgwIEVBcyAqKgorKiogYWRkIDc2Li4xMDI0IEVBcyAqKgogCi0qKiBhZGQg ODEuLjg1IEVBcyAqKgorKiogYWRkIDgxLi4xMDI4IEVBcyAqKgogCi0qKiBhZGQgODYuLjkwIEVB cyAqKgorKiogYWRkIDg2Li4xMDMyIEVBcyAqKgogCi0qKiBhZGQgOTEuLjk1IEVBcyAqKgorKiog YWRkIDkxLi4xMDM2IEVBcyAqKgogCi0qKiBhZGQgOTYuLjEwMCBFQXMgKioKKyoqIGFkZCA5Ni4u MTA0MCBFQXMgKioKIGNvcmUuZm9ybWF0ID0gMyAoYnRyZWUpCiBjb3JlLnNpemUgPSAxNTcyOTE1 MgogY29yZS5leHRzaXplID0gMApAQCAtMjE5Myw3ICszMTIyLDcgQEAKIHUuYm1idC5udW1yZWNz ID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZdIDE6WzBdCiB1LmJtYnQucHRyc1sxXSA9 IDE6Mzk5Ci1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50 ZmxhZ10gMDpbMCwxNywxLDBdCithLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2Nr Y291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxMSwwXQogCiAqKiBybSAxLi4xMDAgRUFzICoqCiAK QEAgLTIyMTIsNTUgKzMxNDEsNTQgQEAKIGNvcmUuc2l6ZSA9IDE3MDM5ODcyCiBjb3JlLmV4dHNp emUgPSAwCiBjb3JlLm5leHRlbnRzID0gMTMxCi1jb3JlLm5hZXh0ZW50cyA9IDAKK2NvcmUubmFl eHRlbnRzID0gMQogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNvcmUuYWZvcm1hdCA9 IDEgKGxvY2FsKQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5sZXZlbCA9IDEK IHUuYm1idC5udW1yZWNzID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZdIDE6WzBdCiB1 LmJtYnQucHRyc1sxXSA9IDE6Mzk5Ci1hLnNmYXR0ci5oZHIudG90c2l6ZSA9IDQKLWEuc2ZhdHRy Lmhkci5jb3VudCA9IDAKK2EuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3Vu dCxleHRlbnRmbGFnXSAwOlswLDE3LDEwLDBdCiAKLSoqIGFkZCAxLi41IEVBcyAqKgorKiogYWRk IDEuLjEwNDQgRUFzICoqCiAKLSoqIGFkZCA2Li4xMCBFQXMgKioKKyoqIGFkZCA2Li4xMDQ4IEVB cyAqKgogCi0qKiBhZGQgMTEuLjE1IEVBcyAqKgorKiogYWRkIDExLi4xMDUyIEVBcyAqKgogCi0q KiBhZGQgMTYuLjIwIEVBcyAqKgorKiogYWRkIDE2Li4xMDU2IEVBcyAqKgogCi0qKiBhZGQgMjEu LjI1IEVBcyAqKgorKiogYWRkIDIxLi4xMDYwIEVBcyAqKgogCi0qKiBhZGQgMjYuLjMwIEVBcyAq KgorKiogYWRkIDI2Li4xMDY0IEVBcyAqKgogCi0qKiBhZGQgMzEuLjM1IEVBcyAqKgorKiogYWRk IDMxLi4xMDY4IEVBcyAqKgogCi0qKiBhZGQgMzYuLjQwIEVBcyAqKgorKiogYWRkIDM2Li4xMDcy IEVBcyAqKgogCi0qKiBhZGQgNDEuLjQ1IEVBcyAqKgorKiogYWRkIDQxLi4xMDc2IEVBcyAqKgog Ci0qKiBhZGQgNDYuLjUwIEVBcyAqKgorKiogYWRkIDQ2Li4xMDgwIEVBcyAqKgogCi0qKiBhZGQg NTEuLjU1IEVBcyAqKgorKiogYWRkIDUxLi4xMDg0IEVBcyAqKgogCi0qKiBhZGQgNTYuLjYwIEVB cyAqKgorKiogYWRkIDU2Li4xMDg4IEVBcyAqKgogCi0qKiBhZGQgNjEuLjY1IEVBcyAqKgorKiog YWRkIDYxLi4xMDkyIEVBcyAqKgogCi0qKiBhZGQgNjYuLjcwIEVBcyAqKgorKiogYWRkIDY2Li4x MDk2IEVBcyAqKgogCi0qKiBhZGQgNzEuLjc1IEVBcyAqKgorKiogYWRkIDcxLi4xMTAwIEVBcyAq KgogCi0qKiBhZGQgNzYuLjgwIEVBcyAqKgorKiogYWRkIDc2Li4xMTA0IEVBcyAqKgogCi0qKiBh ZGQgODEuLjg1IEVBcyAqKgorKiogYWRkIDgxLi4xMTA4IEVBcyAqKgogCi0qKiBhZGQgODYuLjkw IEVBcyAqKgorKiogYWRkIDg2Li4xMTEyIEVBcyAqKgogCi0qKiBhZGQgOTEuLjk1IEVBcyAqKgor KiogYWRkIDkxLi4xMTE2IEVBcyAqKgogCi0qKiBhZGQgOTYuLjEwMCBFQXMgKioKKyoqIGFkZCA5 Ni4uMTEyMCBFQXMgKioKIGNvcmUuZm9ybWF0ID0gMyAoYnRyZWUpCiBjb3JlLnNpemUgPSAxNzAz OTg3MgogY29yZS5leHRzaXplID0gMApAQCAtMjI3Miw3ICszMjAwLDcgQEAKIHUuYm1idC5udW1y ZWNzID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZdIDE6WzBdCiB1LmJtYnQucHRyc1sx XSA9IDE6Mzk5Ci1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0 ZW50ZmxhZ10gMDpbMCwxNywxLDBdCithLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJs b2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxMiwwXQogCiAqKiBybSAxLi4xMDAgRUFzICoq CiAKQEAgLTIyOTEsNTUgKzMyMTksNTQgQEAKIGNvcmUuc2l6ZSA9IDE4MzUwNTkyCiBjb3JlLmV4 dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMTQxCi1jb3JlLm5hZXh0ZW50cyA9IDAKK2NvcmUu bmFleHRlbnRzID0gMQogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNvcmUuYWZvcm1h dCA9IDEgKGxvY2FsKQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5sZXZlbCA9 IDEKIHUuYm1idC5udW1yZWNzID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZdIDE6WzBd CiB1LmJtYnQucHRyc1sxXSA9IDE6Mzk5Ci1hLnNmYXR0ci5oZHIudG90c2l6ZSA9IDQKLWEuc2Zh dHRyLmhkci5jb3VudCA9IDAKK2EuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tj b3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDExLDBdCiAKLSoqIGFkZCAxLi41IEVBcyAqKgorKiog YWRkIDEuLjExMjQgRUFzICoqCiAKLSoqIGFkZCA2Li4xMCBFQXMgKioKKyoqIGFkZCA2Li4xMTI4 IEVBcyAqKgogCi0qKiBhZGQgMTEuLjE1IEVBcyAqKgorKiogYWRkIDExLi4xMTMyIEVBcyAqKgog Ci0qKiBhZGQgMTYuLjIwIEVBcyAqKgorKiogYWRkIDE2Li4xMTM2IEVBcyAqKgogCi0qKiBhZGQg MjEuLjI1IEVBcyAqKgorKiogYWRkIDIxLi4xMTQwIEVBcyAqKgogCi0qKiBhZGQgMjYuLjMwIEVB cyAqKgorKiogYWRkIDI2Li4xMTQ0IEVBcyAqKgogCi0qKiBhZGQgMzEuLjM1IEVBcyAqKgorKiog YWRkIDMxLi4xMTQ4IEVBcyAqKgogCi0qKiBhZGQgMzYuLjQwIEVBcyAqKgorKiogYWRkIDM2Li4x MTUyIEVBcyAqKgogCi0qKiBhZGQgNDEuLjQ1IEVBcyAqKgorKiogYWRkIDQxLi4xMTU2IEVBcyAq KgogCi0qKiBhZGQgNDYuLjUwIEVBcyAqKgorKiogYWRkIDQ2Li4xMTYwIEVBcyAqKgogCi0qKiBh ZGQgNTEuLjU1IEVBcyAqKgorKiogYWRkIDUxLi4xMTY0IEVBcyAqKgogCi0qKiBhZGQgNTYuLjYw IEVBcyAqKgorKiogYWRkIDU2Li4xMTY4IEVBcyAqKgogCi0qKiBhZGQgNjEuLjY1IEVBcyAqKgor KiogYWRkIDYxLi4xMTcyIEVBcyAqKgogCi0qKiBhZGQgNjYuLjcwIEVBcyAqKgorKiogYWRkIDY2 Li4xMTc2IEVBcyAqKgogCi0qKiBhZGQgNzEuLjc1IEVBcyAqKgorKiogYWRkIDcxLi4xMTgwIEVB cyAqKgogCi0qKiBhZGQgNzYuLjgwIEVBcyAqKgorKiogYWRkIDc2Li4xMTg0IEVBcyAqKgogCi0q KiBhZGQgODEuLjg1IEVBcyAqKgorKiogYWRkIDgxLi4xMTg4IEVBcyAqKgogCi0qKiBhZGQgODYu LjkwIEVBcyAqKgorKiogYWRkIDg2Li4xMTkyIEVBcyAqKgogCi0qKiBhZGQgOTEuLjk1IEVBcyAq KgorKiogYWRkIDkxLi4xMTk2IEVBcyAqKgogCi0qKiBhZGQgOTYuLjEwMCBFQXMgKioKKyoqIGFk ZCA5Ni4uMTIwMCBFQXMgKioKIGNvcmUuZm9ybWF0ID0gMyAoYnRyZWUpCiBjb3JlLnNpemUgPSAx ODM1MDU5MgogY29yZS5leHRzaXplID0gMApAQCAtMjM1MSw3ICszMjc4LDcgQEAKIHUuYm1idC5u dW1yZWNzID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZdIDE6WzBdCiB1LmJtYnQucHRy c1sxXSA9IDE6Mzk5Ci1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQs ZXh0ZW50ZmxhZ10gMDpbMCwxNywxLDBdCithLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2Nr LGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxMywwXQogCiAqKiBybSAxLi4xMDAgRUFz ICoqCiAKQEAgLTIzNzAsNTUgKzMyOTcsNTQgQEAKIGNvcmUuc2l6ZSA9IDE5NjYxMzEyCiBjb3Jl LmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMTUxCi1jb3JlLm5hZXh0ZW50cyA9IDAKK2Nv cmUubmFleHRlbnRzID0gMQogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNvcmUuYWZv cm1hdCA9IDEgKGxvY2FsKQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5sZXZl bCA9IDEKIHUuYm1idC5udW1yZWNzID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZdIDE6 WzBdCiB1LmJtYnQucHRyc1sxXSA9IDE6Mzk5Ci1hLnNmYXR0ci5oZHIudG90c2l6ZSA9IDQKLWEu c2ZhdHRyLmhkci5jb3VudCA9IDAKK2EuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxv Y2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDEyLDBdCiAKLSoqIGFkZCAxLi41IEVBcyAqKgor KiogYWRkIDEuLjEyMDQgRUFzICoqCiAKLSoqIGFkZCA2Li4xMCBFQXMgKioKKyoqIGFkZCA2Li4x MjA4IEVBcyAqKgogCi0qKiBhZGQgMTEuLjE1IEVBcyAqKgorKiogYWRkIDExLi4xMjEyIEVBcyAq KgogCi0qKiBhZGQgMTYuLjIwIEVBcyAqKgorKiogYWRkIDE2Li4xMjE2IEVBcyAqKgogCi0qKiBh ZGQgMjEuLjI1IEVBcyAqKgorKiogYWRkIDIxLi4xMjIwIEVBcyAqKgogCi0qKiBhZGQgMjYuLjMw IEVBcyAqKgorKiogYWRkIDI2Li4xMjI0IEVBcyAqKgogCi0qKiBhZGQgMzEuLjM1IEVBcyAqKgor KiogYWRkIDMxLi4xMjI4IEVBcyAqKgogCi0qKiBhZGQgMzYuLjQwIEVBcyAqKgorKiogYWRkIDM2 Li4xMjMyIEVBcyAqKgogCi0qKiBhZGQgNDEuLjQ1IEVBcyAqKgorKiogYWRkIDQxLi4xMjM2IEVB cyAqKgogCi0qKiBhZGQgNDYuLjUwIEVBcyAqKgorKiogYWRkIDQ2Li4xMjQwIEVBcyAqKgogCi0q KiBhZGQgNTEuLjU1IEVBcyAqKgorKiogYWRkIDUxLi4xMjQ0IEVBcyAqKgogCi0qKiBhZGQgNTYu LjYwIEVBcyAqKgorKiogYWRkIDU2Li4xMjQ4IEVBcyAqKgogCi0qKiBhZGQgNjEuLjY1IEVBcyAq KgorKiogYWRkIDYxLi4xMjUyIEVBcyAqKgogCi0qKiBhZGQgNjYuLjcwIEVBcyAqKgorKiogYWRk IDY2Li4xMjU2IEVBcyAqKgogCi0qKiBhZGQgNzEuLjc1IEVBcyAqKgorKiogYWRkIDcxLi4xMjYw IEVBcyAqKgogCi0qKiBhZGQgNzYuLjgwIEVBcyAqKgorKiogYWRkIDc2Li4xMjY0IEVBcyAqKgog Ci0qKiBhZGQgODEuLjg1IEVBcyAqKgorKiogYWRkIDgxLi4xMjY4IEVBcyAqKgogCi0qKiBhZGQg ODYuLjkwIEVBcyAqKgorKiogYWRkIDg2Li4xMjcyIEVBcyAqKgogCi0qKiBhZGQgOTEuLjk1IEVB cyAqKgorKiogYWRkIDkxLi4xMjc2IEVBcyAqKgogCi0qKiBhZGQgOTYuLjEwMCBFQXMgKioKKyoq IGFkZCA5Ni4uMTI4MCBFQXMgKioKIGNvcmUuZm9ybWF0ID0gMyAoYnRyZWUpCiBjb3JlLnNpemUg PSAxOTY2MTMxMgogY29yZS5leHRzaXplID0gMApAQCAtMjQzMCw3ICszMzU2LDcgQEAKIHUuYm1i dC5udW1yZWNzID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZdIDE6WzBdCiB1LmJtYnQu cHRyc1sxXSA9IDE6Mzk5Ci1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291 bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxLDBdCithLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJs b2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxNCwwXQogCiAqKiBybSAxLi4xMDAg RUFzICoqCiAKQEAgLTI0NDksNTUgKzMzNzUsNTQgQEAKIGNvcmUuc2l6ZSA9IDIwOTcyMDMyCiBj b3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMTYxCi1jb3JlLm5hZXh0ZW50cyA9IDAK K2NvcmUubmFleHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNvcmUu YWZvcm1hdCA9IDEgKGxvY2FsKQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5s ZXZlbCA9IDEKIHUuYm1idC5udW1yZWNzID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZd IDE6WzBdCiB1LmJtYnQucHRyc1sxXSA9IDE6Mzk5Ci1hLnNmYXR0ci5oZHIudG90c2l6ZSA9IDQK LWEuc2ZhdHRyLmhkci5jb3VudCA9IDAKK2EuYm14WzAtMV0gPSBbc3RhcnRvZmYsc3RhcnRibG9j ayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMTIsMF0gMTpbMTMsMzAsMSwwXQogCi0q KiBhZGQgMS4uNSBFQXMgKioKKyoqIGFkZCAxLi4xMjg0IEVBcyAqKgogCi0qKiBhZGQgNi4uMTAg RUFzICoqCisqKiBhZGQgNi4uMTI4OCBFQXMgKioKIAotKiogYWRkIDExLi4xNSBFQXMgKioKKyoq IGFkZCAxMS4uMTI5MiBFQXMgKioKIAotKiogYWRkIDE2Li4yMCBFQXMgKioKKyoqIGFkZCAxNi4u MTI5NiBFQXMgKioKIAotKiogYWRkIDIxLi4yNSBFQXMgKioKKyoqIGFkZCAyMS4uMTMwMCBFQXMg KioKIAotKiogYWRkIDI2Li4zMCBFQXMgKioKKyoqIGFkZCAyNi4uMTMwNCBFQXMgKioKIAotKiog YWRkIDMxLi4zNSBFQXMgKioKKyoqIGFkZCAzMS4uMTMwOCBFQXMgKioKIAotKiogYWRkIDM2Li40 MCBFQXMgKioKKyoqIGFkZCAzNi4uMTMxMiBFQXMgKioKIAotKiogYWRkIDQxLi40NSBFQXMgKioK KyoqIGFkZCA0MS4uMTMxNiBFQXMgKioKIAotKiogYWRkIDQ2Li41MCBFQXMgKioKKyoqIGFkZCA0 Ni4uMTMyMCBFQXMgKioKIAotKiogYWRkIDUxLi41NSBFQXMgKioKKyoqIGFkZCA1MS4uMTMyNCBF QXMgKioKIAotKiogYWRkIDU2Li42MCBFQXMgKioKKyoqIGFkZCA1Ni4uMTMyOCBFQXMgKioKIAot KiogYWRkIDYxLi42NSBFQXMgKioKKyoqIGFkZCA2MS4uMTMzMiBFQXMgKioKIAotKiogYWRkIDY2 Li43MCBFQXMgKioKKyoqIGFkZCA2Ni4uMTMzNiBFQXMgKioKIAotKiogYWRkIDcxLi43NSBFQXMg KioKKyoqIGFkZCA3MS4uMTM0MCBFQXMgKioKIAotKiogYWRkIDc2Li44MCBFQXMgKioKKyoqIGFk ZCA3Ni4uMTM0NCBFQXMgKioKIAotKiogYWRkIDgxLi44NSBFQXMgKioKKyoqIGFkZCA4MS4uMTM0 OCBFQXMgKioKIAotKiogYWRkIDg2Li45MCBFQXMgKioKKyoqIGFkZCA4Ni4uMTM1MiBFQXMgKioK IAotKiogYWRkIDkxLi45NSBFQXMgKioKKyoqIGFkZCA5MS4uMTM1NiBFQXMgKioKIAotKiogYWRk IDk2Li4xMDAgRUFzICoqCisqKiBhZGQgOTYuLjEzNjAgRUFzICoqCiBjb3JlLmZvcm1hdCA9IDMg KGJ0cmVlKQogY29yZS5zaXplID0gMjA5NzIwMzIKIGNvcmUuZXh0c2l6ZSA9IDAKQEAgLTI1MDks NyArMzQzNCw3IEBACiB1LmJtYnQubnVtcmVjcyA9IDEKIHUuYm1idC5rZXlzWzFdID0gW3N0YXJ0 b2ZmXSAxOlswXQogdS5ibWJ0LnB0cnNbMV0gPSAxOjM5OQotYS5ibXhbMF0gPSBbc3RhcnRvZmYs c3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMSwwXQorYS5ibXhbMF0g PSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMTQs MF0KIAogKiogcm0gMS4uMTAwIEVBcyAqKgogCkBAIC0yNTI4LDU1ICszNDUzLDU0IEBACiBjb3Jl LnNpemUgPSAyMjI4Mjc1MgogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDE3MQot Y29yZS5uYWV4dGVudHMgPSAwCitjb3JlLm5hZXh0ZW50cyA9IDIKIGNvcmUuZm9ya29mZiA9IDI0 ICgxOTIgYnl0ZXMpCi1jb3JlLmFmb3JtYXQgPSAxIChsb2NhbCkKK2NvcmUuYWZvcm1hdCA9IDIg KGV4dGVudHMpCiB1LmJtYnQubGV2ZWwgPSAxCiB1LmJtYnQubnVtcmVjcyA9IDEKIHUuYm1idC5r ZXlzWzFdID0gW3N0YXJ0b2ZmXSAxOlswXQogdS5ibWJ0LnB0cnNbMV0gPSAxOjM5OQotYS5zZmF0 dHIuaGRyLnRvdHNpemUgPSA0Ci1hLnNmYXR0ci5oZHIuY291bnQgPSAwCithLmJteFswLTFdID0g W3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDEyLDBd IDE6WzEzLDMwLDEsMF0KIAotKiogYWRkIDEuLjUgRUFzICoqCisqKiBhZGQgMS4uMTM2NCBFQXMg KioKIAotKiogYWRkIDYuLjEwIEVBcyAqKgorKiogYWRkIDYuLjEzNjggRUFzICoqCiAKLSoqIGFk ZCAxMS4uMTUgRUFzICoqCisqKiBhZGQgMTEuLjEzNzIgRUFzICoqCiAKLSoqIGFkZCAxNi4uMjAg RUFzICoqCisqKiBhZGQgMTYuLjEzNzYgRUFzICoqCiAKLSoqIGFkZCAyMS4uMjUgRUFzICoqCisq KiBhZGQgMjEuLjEzODAgRUFzICoqCiAKLSoqIGFkZCAyNi4uMzAgRUFzICoqCisqKiBhZGQgMjYu LjEzODQgRUFzICoqCiAKLSoqIGFkZCAzMS4uMzUgRUFzICoqCisqKiBhZGQgMzEuLjEzODggRUFz ICoqCiAKLSoqIGFkZCAzNi4uNDAgRUFzICoqCisqKiBhZGQgMzYuLjEzOTIgRUFzICoqCiAKLSoq IGFkZCA0MS4uNDUgRUFzICoqCisqKiBhZGQgNDEuLjEzOTYgRUFzICoqCiAKLSoqIGFkZCA0Ni4u NTAgRUFzICoqCisqKiBhZGQgNDYuLjE0MDAgRUFzICoqCiAKLSoqIGFkZCA1MS4uNTUgRUFzICoq CisqKiBhZGQgNTEuLjE0MDQgRUFzICoqCiAKLSoqIGFkZCA1Ni4uNjAgRUFzICoqCisqKiBhZGQg NTYuLjE0MDggRUFzICoqCiAKLSoqIGFkZCA2MS4uNjUgRUFzICoqCisqKiBhZGQgNjEuLjE0MTIg RUFzICoqCiAKLSoqIGFkZCA2Ni4uNzAgRUFzICoqCisqKiBhZGQgNjYuLjE0MTYgRUFzICoqCiAK LSoqIGFkZCA3MS4uNzUgRUFzICoqCisqKiBhZGQgNzEuLjE0MjAgRUFzICoqCiAKLSoqIGFkZCA3 Ni4uODAgRUFzICoqCisqKiBhZGQgNzYuLjE0MjQgRUFzICoqCiAKLSoqIGFkZCA4MS4uODUgRUFz ICoqCisqKiBhZGQgODEuLjE0MjggRUFzICoqCiAKLSoqIGFkZCA4Ni4uOTAgRUFzICoqCisqKiBh ZGQgODYuLjE0MzIgRUFzICoqCiAKLSoqIGFkZCA5MS4uOTUgRUFzICoqCisqKiBhZGQgOTEuLjE0 MzYgRUFzICoqCiAKLSoqIGFkZCA5Ni4uMTAwIEVBcyAqKgorKiogYWRkIDk2Li4xNDQwIEVBcyAq KgogY29yZS5mb3JtYXQgPSAzIChidHJlZSkKIGNvcmUuc2l6ZSA9IDIyMjgyNzUyCiBjb3JlLmV4 dHNpemUgPSAwCkBAIC0yNTg4LDcgKzM1MTIsNyBAQAogdS5ibWJ0Lm51bXJlY3MgPSAxCiB1LmJt YnQua2V5c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KIHUuYm1idC5wdHJzWzFdID0gMTozOTkKLWEu Ym14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlsw LDE3LDEsMF0KK2EuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRl bnRmbGFnXSAwOlswLDE3LDE1LDBdCiAKICoqIHJtIDEuLjEwMCBFQXMgKioKIApAQCAtMjYwNyw1 NSArMzUzMSw1NCBAQAogY29yZS5zaXplID0gMjM1OTM0NzIKIGNvcmUuZXh0c2l6ZSA9IDAKIGNv cmUubmV4dGVudHMgPSAxODEKLWNvcmUubmFleHRlbnRzID0gMAorY29yZS5uYWV4dGVudHMgPSAy CiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQotY29yZS5hZm9ybWF0ID0gMSAobG9jYWwp Citjb3JlLmFmb3JtYXQgPSAyIChleHRlbnRzKQogdS5ibWJ0LmxldmVsID0gMQogdS5ibWJ0Lm51 bXJlY3MgPSAxCiB1LmJtYnQua2V5c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KIHUuYm1idC5wdHJz WzFdID0gMTozOTkKLWEuc2ZhdHRyLmhkci50b3RzaXplID0gNAotYS5zZmF0dHIuaGRyLmNvdW50 ID0gMAorYS5ibXhbMC0xXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50 ZmxhZ10gMDpbMCwxNywxMiwwXSAxOlsxMywzMCwyLDBdCiAKLSoqIGFkZCAxLi41IEVBcyAqKgor KiogYWRkIDEuLjE0NDQgRUFzICoqCiAKLSoqIGFkZCA2Li4xMCBFQXMgKioKKyoqIGFkZCA2Li4x NDQ4IEVBcyAqKgogCi0qKiBhZGQgMTEuLjE1IEVBcyAqKgorKiogYWRkIDExLi4xNDUyIEVBcyAq KgogCi0qKiBhZGQgMTYuLjIwIEVBcyAqKgorKiogYWRkIDE2Li4xNDU2IEVBcyAqKgogCi0qKiBh ZGQgMjEuLjI1IEVBcyAqKgorKiogYWRkIDIxLi4xNDYwIEVBcyAqKgogCi0qKiBhZGQgMjYuLjMw IEVBcyAqKgorKiogYWRkIDI2Li4xNDY0IEVBcyAqKgogCi0qKiBhZGQgMzEuLjM1IEVBcyAqKgor KiogYWRkIDMxLi4xNDY4IEVBcyAqKgogCi0qKiBhZGQgMzYuLjQwIEVBcyAqKgorKiogYWRkIDM2 Li4xNDcyIEVBcyAqKgogCi0qKiBhZGQgNDEuLjQ1IEVBcyAqKgorKiogYWRkIDQxLi4xNDc2IEVB cyAqKgogCi0qKiBhZGQgNDYuLjUwIEVBcyAqKgorKiogYWRkIDQ2Li4xNDgwIEVBcyAqKgogCi0q KiBhZGQgNTEuLjU1IEVBcyAqKgorKiogYWRkIDUxLi4xNDg0IEVBcyAqKgogCi0qKiBhZGQgNTYu LjYwIEVBcyAqKgorKiogYWRkIDU2Li4xNDg4IEVBcyAqKgogCi0qKiBhZGQgNjEuLjY1IEVBcyAq KgorKiogYWRkIDYxLi4xNDkyIEVBcyAqKgogCi0qKiBhZGQgNjYuLjcwIEVBcyAqKgorKiogYWRk IDY2Li4xNDk2IEVBcyAqKgogCi0qKiBhZGQgNzEuLjc1IEVBcyAqKgorKiogYWRkIDcxLi4xNTAw IEVBcyAqKgogCi0qKiBhZGQgNzYuLjgwIEVBcyAqKgorKiogYWRkIDc2Li4xNTA0IEVBcyAqKgog Ci0qKiBhZGQgODEuLjg1IEVBcyAqKgorKiogYWRkIDgxLi4xNTA4IEVBcyAqKgogCi0qKiBhZGQg ODYuLjkwIEVBcyAqKgorKiogYWRkIDg2Li4xNTEyIEVBcyAqKgogCi0qKiBhZGQgOTEuLjk1IEVB cyAqKgorKiogYWRkIDkxLi4xNTE2IEVBcyAqKgogCi0qKiBhZGQgOTYuLjEwMCBFQXMgKioKKyoq IGFkZCA5Ni4uMTUyMCBFQXMgKioKIGNvcmUuZm9ybWF0ID0gMyAoYnRyZWUpCiBjb3JlLnNpemUg PSAyMzU5MzQ3MgogY29yZS5leHRzaXplID0gMApAQCAtMjY2Nyw3ICszNTkwLDcgQEAKIHUuYm1i dC5udW1yZWNzID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZdIDE6WzBdCiB1LmJtYnQu cHRyc1sxXSA9IDE6Mzk5Ci1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291 bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxLDBdCithLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJs b2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxNiwwXQogCiAqKiBybSAxLi4xMDAg RUFzICoqCiAKQEAgLTI2ODYsNTUgKzM2MDksNTQgQEAKIGNvcmUuc2l6ZSA9IDI0OTA0MTkyCiBj b3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMTkxCi1jb3JlLm5hZXh0ZW50cyA9IDAK K2NvcmUubmFleHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNvcmUu YWZvcm1hdCA9IDEgKGxvY2FsKQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5s ZXZlbCA9IDEKIHUuYm1idC5udW1yZWNzID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZd IDE6WzBdCiB1LmJtYnQucHRyc1sxXSA9IDE6Mzk5Ci1hLnNmYXR0ci5oZHIudG90c2l6ZSA9IDQK LWEuc2ZhdHRyLmhkci5jb3VudCA9IDAKK2EuYm14WzAtMV0gPSBbc3RhcnRvZmYsc3RhcnRibG9j ayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMTIsMF0gMTpbMTMsMzAsMywwXQogCi0q KiBhZGQgMS4uNSBFQXMgKioKKyoqIGFkZCAxLi4xNTI0IEVBcyAqKgogCi0qKiBhZGQgNi4uMTAg RUFzICoqCisqKiBhZGQgNi4uMTUyOCBFQXMgKioKIAotKiogYWRkIDExLi4xNSBFQXMgKioKKyoq IGFkZCAxMS4uMTUzMiBFQXMgKioKIAotKiogYWRkIDE2Li4yMCBFQXMgKioKKyoqIGFkZCAxNi4u MTUzNiBFQXMgKioKIAotKiogYWRkIDIxLi4yNSBFQXMgKioKKyoqIGFkZCAyMS4uMTU0MCBFQXMg KioKIAotKiogYWRkIDI2Li4zMCBFQXMgKioKKyoqIGFkZCAyNi4uMTU0NCBFQXMgKioKIAotKiog YWRkIDMxLi4zNSBFQXMgKioKKyoqIGFkZCAzMS4uMTU0OCBFQXMgKioKIAotKiogYWRkIDM2Li40 MCBFQXMgKioKKyoqIGFkZCAzNi4uMTU1MiBFQXMgKioKIAotKiogYWRkIDQxLi40NSBFQXMgKioK KyoqIGFkZCA0MS4uMTU1NiBFQXMgKioKIAotKiogYWRkIDQ2Li41MCBFQXMgKioKKyoqIGFkZCA0 Ni4uMTU2MCBFQXMgKioKIAotKiogYWRkIDUxLi41NSBFQXMgKioKKyoqIGFkZCA1MS4uMTU2NCBF QXMgKioKIAotKiogYWRkIDU2Li42MCBFQXMgKioKKyoqIGFkZCA1Ni4uMTU2OCBFQXMgKioKIAot KiogYWRkIDYxLi42NSBFQXMgKioKKyoqIGFkZCA2MS4uMTU3MiBFQXMgKioKIAotKiogYWRkIDY2 Li43MCBFQXMgKioKKyoqIGFkZCA2Ni4uMTU3NiBFQXMgKioKIAotKiogYWRkIDcxLi43NSBFQXMg KioKKyoqIGFkZCA3MS4uMTU4MCBFQXMgKioKIAotKiogYWRkIDc2Li44MCBFQXMgKioKKyoqIGFk ZCA3Ni4uMTU4NCBFQXMgKioKIAotKiogYWRkIDgxLi44NSBFQXMgKioKKyoqIGFkZCA4MS4uMTU4 OCBFQXMgKioKIAotKiogYWRkIDg2Li45MCBFQXMgKioKKyoqIGFkZCA4Ni4uMTU5MiBFQXMgKioK IAotKiogYWRkIDkxLi45NSBFQXMgKioKKyoqIGFkZCA5MS4uMTU5NiBFQXMgKioKIAotKiogYWRk IDk2Li4xMDAgRUFzICoqCisqKiBhZGQgOTYuLjE2MDAgRUFzICoqCiBjb3JlLmZvcm1hdCA9IDMg KGJ0cmVlKQogY29yZS5zaXplID0gMjQ5MDQxOTIKIGNvcmUuZXh0c2l6ZSA9IDAKQEAgLTI3NDYs NyArMzY2OCw3IEBACiB1LmJtYnQubnVtcmVjcyA9IDEKIHUuYm1idC5rZXlzWzFdID0gW3N0YXJ0 b2ZmXSAxOlswXQogdS5ibWJ0LnB0cnNbMV0gPSAxOjM5OQotYS5ibXhbMF0gPSBbc3RhcnRvZmYs c3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMSwwXQorYS5ibXhbMF0g PSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMTcs MF0KIAogKiogcm0gMS4uMTAwIEVBcyAqKgogCkBAIC0yNzY2LDU1ICszNjg4LDU0IEBACiBjb3Jl LnNpemUgPSAyNjIxNDkxMgogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDIwMQot Y29yZS5uYWV4dGVudHMgPSAwCitjb3JlLm5hZXh0ZW50cyA9IDIKIGNvcmUuZm9ya29mZiA9IDI0 ICgxOTIgYnl0ZXMpCi1jb3JlLmFmb3JtYXQgPSAxIChsb2NhbCkKK2NvcmUuYWZvcm1hdCA9IDIg KGV4dGVudHMpCiB1LmJtYnQubGV2ZWwgPSAxCiB1LmJtYnQubnVtcmVjcyA9IDEKIHUuYm1idC5r ZXlzWzFdID0gW3N0YXJ0b2ZmXSAxOlswXQogdS5ibWJ0LnB0cnNbMV0gPSAxOjM5OQotYS5zZmF0 dHIuaGRyLnRvdHNpemUgPSA0Ci1hLnNmYXR0ci5oZHIuY291bnQgPSAwCithLmJteFswLTFdID0g W3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDEyLDBd IDE6WzEzLDMwLDQsMF0KIAotKiogYWRkIDEuLjUgRUFzICoqCisqKiBhZGQgMS4uMTYwNCBFQXMg KioKIAotKiogYWRkIDYuLjEwIEVBcyAqKgorKiogYWRkIDYuLjE2MDggRUFzICoqCiAKLSoqIGFk ZCAxMS4uMTUgRUFzICoqCisqKiBhZGQgMTEuLjE2MTIgRUFzICoqCiAKLSoqIGFkZCAxNi4uMjAg RUFzICoqCisqKiBhZGQgMTYuLjE2MTYgRUFzICoqCiAKLSoqIGFkZCAyMS4uMjUgRUFzICoqCisq KiBhZGQgMjEuLjE2MjAgRUFzICoqCiAKLSoqIGFkZCAyNi4uMzAgRUFzICoqCisqKiBhZGQgMjYu LjE2MjQgRUFzICoqCiAKLSoqIGFkZCAzMS4uMzUgRUFzICoqCisqKiBhZGQgMzEuLjE2MjggRUFz ICoqCiAKLSoqIGFkZCAzNi4uNDAgRUFzICoqCisqKiBhZGQgMzYuLjE2MzIgRUFzICoqCiAKLSoq IGFkZCA0MS4uNDUgRUFzICoqCisqKiBhZGQgNDEuLjE2MzYgRUFzICoqCiAKLSoqIGFkZCA0Ni4u NTAgRUFzICoqCisqKiBhZGQgNDYuLjE2NDAgRUFzICoqCiAKLSoqIGFkZCA1MS4uNTUgRUFzICoq CisqKiBhZGQgNTEuLjE2NDQgRUFzICoqCiAKLSoqIGFkZCA1Ni4uNjAgRUFzICoqCisqKiBhZGQg NTYuLjE2NDggRUFzICoqCiAKLSoqIGFkZCA2MS4uNjUgRUFzICoqCisqKiBhZGQgNjEuLjE2NTIg RUFzICoqCiAKLSoqIGFkZCA2Ni4uNzAgRUFzICoqCisqKiBhZGQgNjYuLjE2NTYgRUFzICoqCiAK LSoqIGFkZCA3MS4uNzUgRUFzICoqCisqKiBhZGQgNzEuLjE2NjAgRUFzICoqCiAKLSoqIGFkZCA3 Ni4uODAgRUFzICoqCisqKiBhZGQgNzYuLjE2NjQgRUFzICoqCiAKLSoqIGFkZCA4MS4uODUgRUFz ICoqCisqKiBhZGQgODEuLjE2NjggRUFzICoqCiAKLSoqIGFkZCA4Ni4uOTAgRUFzICoqCisqKiBh ZGQgODYuLjE2NzIgRUFzICoqCiAKLSoqIGFkZCA5MS4uOTUgRUFzICoqCisqKiBhZGQgOTEuLjE2 NzYgRUFzICoqCiAKLSoqIGFkZCA5Ni4uMTAwIEVBcyAqKgorKiogYWRkIDk2Li4xNjgwIEVBcyAq KgogY29yZS5mb3JtYXQgPSAzIChidHJlZSkKIGNvcmUuc2l6ZSA9IDI2MjE0OTEyCiBjb3JlLmV4 dHNpemUgPSAwCkBAIC0yODI2LDcgKzM3NDcsNyBAQAogdS5ibWJ0Lm51bXJlY3MgPSAxCiB1LmJt YnQua2V5c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KIHUuYm1idC5wdHJzWzFdID0gMTozOTkKLWEu Ym14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlsw LDE3LDEsMF0KK2EuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRl bnRmbGFnXSAwOlswLDE3LDE4LDBdCiAKICoqIHJtIDEuLjEwMCBFQXMgKioKIApAQCAtMjg0NSw1 NSArMzc2Niw1NCBAQAogY29yZS5zaXplID0gMjc1MjU2MzIKIGNvcmUuZXh0c2l6ZSA9IDAKIGNv cmUubmV4dGVudHMgPSAyMTEKLWNvcmUubmFleHRlbnRzID0gMAorY29yZS5uYWV4dGVudHMgPSAy CiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQotY29yZS5hZm9ybWF0ID0gMSAobG9jYWwp Citjb3JlLmFmb3JtYXQgPSAyIChleHRlbnRzKQogdS5ibWJ0LmxldmVsID0gMQogdS5ibWJ0Lm51 bXJlY3MgPSAxCiB1LmJtYnQua2V5c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KIHUuYm1idC5wdHJz WzFdID0gMTozOTkKLWEuc2ZhdHRyLmhkci50b3RzaXplID0gNAotYS5zZmF0dHIuaGRyLmNvdW50 ID0gMAorYS5ibXhbMC0xXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50 ZmxhZ10gMDpbMCwxNywxMiwwXSAxOlsxMywzMCw1LDBdCiAKLSoqIGFkZCAxLi41IEVBcyAqKgor KiogYWRkIDEuLjE2ODQgRUFzICoqCiAKLSoqIGFkZCA2Li4xMCBFQXMgKioKKyoqIGFkZCA2Li4x Njg4IEVBcyAqKgogCi0qKiBhZGQgMTEuLjE1IEVBcyAqKgorKiogYWRkIDExLi4xNjkyIEVBcyAq KgogCi0qKiBhZGQgMTYuLjIwIEVBcyAqKgorKiogYWRkIDE2Li4xNjk2IEVBcyAqKgogCi0qKiBh ZGQgMjEuLjI1IEVBcyAqKgorKiogYWRkIDIxLi4xNzAwIEVBcyAqKgogCi0qKiBhZGQgMjYuLjMw IEVBcyAqKgorKiogYWRkIDI2Li4xNzA0IEVBcyAqKgogCi0qKiBhZGQgMzEuLjM1IEVBcyAqKgor KiogYWRkIDMxLi4xNzA4IEVBcyAqKgogCi0qKiBhZGQgMzYuLjQwIEVBcyAqKgorKiogYWRkIDM2 Li4xNzEyIEVBcyAqKgogCi0qKiBhZGQgNDEuLjQ1IEVBcyAqKgorKiogYWRkIDQxLi4xNzE2IEVB cyAqKgogCi0qKiBhZGQgNDYuLjUwIEVBcyAqKgorKiogYWRkIDQ2Li4xNzIwIEVBcyAqKgogCi0q KiBhZGQgNTEuLjU1IEVBcyAqKgorKiogYWRkIDUxLi4xNzI0IEVBcyAqKgogCi0qKiBhZGQgNTYu LjYwIEVBcyAqKgorKiogYWRkIDU2Li4xNzI4IEVBcyAqKgogCi0qKiBhZGQgNjEuLjY1IEVBcyAq KgorKiogYWRkIDYxLi4xNzMyIEVBcyAqKgogCi0qKiBhZGQgNjYuLjcwIEVBcyAqKgorKiogYWRk IDY2Li4xNzM2IEVBcyAqKgogCi0qKiBhZGQgNzEuLjc1IEVBcyAqKgorKiogYWRkIDcxLi4xNzQw IEVBcyAqKgogCi0qKiBhZGQgNzYuLjgwIEVBcyAqKgorKiogYWRkIDc2Li4xNzQ0IEVBcyAqKgog Ci0qKiBhZGQgODEuLjg1IEVBcyAqKgorKiogYWRkIDgxLi4xNzQ4IEVBcyAqKgogCi0qKiBhZGQg ODYuLjkwIEVBcyAqKgorKiogYWRkIDg2Li4xNzUyIEVBcyAqKgogCi0qKiBhZGQgOTEuLjk1IEVB cyAqKgorKiogYWRkIDkxLi4xNzU2IEVBcyAqKgogCi0qKiBhZGQgOTYuLjEwMCBFQXMgKioKKyoq IGFkZCA5Ni4uMTc2MCBFQXMgKioKIGNvcmUuZm9ybWF0ID0gMyAoYnRyZWUpCiBjb3JlLnNpemUg PSAyNzUyNTYzMgogY29yZS5leHRzaXplID0gMApAQCAtMjkwNSw3ICszODI1LDcgQEAKIHUuYm1i dC5udW1yZWNzID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZdIDE6WzBdCiB1LmJtYnQu cHRyc1sxXSA9IDE6Mzk5Ci1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291 bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxLDBdCithLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJs b2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxOSwwXQogCiAqKiBybSAxLi4xMDAg RUFzICoqCiAKQEAgLTI5MjQsNTUgKzM4NDQsNTQgQEAKIGNvcmUuc2l6ZSA9IDI4ODM2MzUyCiBj b3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMjIxCi1jb3JlLm5hZXh0ZW50cyA9IDAK K2NvcmUubmFleHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNvcmUu YWZvcm1hdCA9IDEgKGxvY2FsKQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5s ZXZlbCA9IDEKIHUuYm1idC5udW1yZWNzID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZd IDE6WzBdCiB1LmJtYnQucHRyc1sxXSA9IDE6Mzk5Ci1hLnNmYXR0ci5oZHIudG90c2l6ZSA9IDQK LWEuc2ZhdHRyLmhkci5jb3VudCA9IDAKK2EuYm14WzAtMV0gPSBbc3RhcnRvZmYsc3RhcnRibG9j ayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMTIsMF0gMTpbMTMsMzAsNiwwXQogCi0q KiBhZGQgMS4uNSBFQXMgKioKKyoqIGFkZCAxLi4xNzY0IEVBcyAqKgogCi0qKiBhZGQgNi4uMTAg RUFzICoqCisqKiBhZGQgNi4uMTc2OCBFQXMgKioKIAotKiogYWRkIDExLi4xNSBFQXMgKioKKyoq IGFkZCAxMS4uMTc3MiBFQXMgKioKIAotKiogYWRkIDE2Li4yMCBFQXMgKioKKyoqIGFkZCAxNi4u MTc3NiBFQXMgKioKIAotKiogYWRkIDIxLi4yNSBFQXMgKioKKyoqIGFkZCAyMS4uMTc4MCBFQXMg KioKIAotKiogYWRkIDI2Li4zMCBFQXMgKioKKyoqIGFkZCAyNi4uMTc4NCBFQXMgKioKIAotKiog YWRkIDMxLi4zNSBFQXMgKioKKyoqIGFkZCAzMS4uMTc4OCBFQXMgKioKIAotKiogYWRkIDM2Li40 MCBFQXMgKioKKyoqIGFkZCAzNi4uMTc5MiBFQXMgKioKIAotKiogYWRkIDQxLi40NSBFQXMgKioK KyoqIGFkZCA0MS4uMTc5NiBFQXMgKioKIAotKiogYWRkIDQ2Li41MCBFQXMgKioKKyoqIGFkZCA0 Ni4uMTgwMCBFQXMgKioKIAotKiogYWRkIDUxLi41NSBFQXMgKioKKyoqIGFkZCA1MS4uMTgwNCBF QXMgKioKIAotKiogYWRkIDU2Li42MCBFQXMgKioKKyoqIGFkZCA1Ni4uMTgwOCBFQXMgKioKIAot KiogYWRkIDYxLi42NSBFQXMgKioKKyoqIGFkZCA2MS4uMTgxMiBFQXMgKioKIAotKiogYWRkIDY2 Li43MCBFQXMgKioKKyoqIGFkZCA2Ni4uMTgxNiBFQXMgKioKIAotKiogYWRkIDcxLi43NSBFQXMg KioKKyoqIGFkZCA3MS4uMTgyMCBFQXMgKioKIAotKiogYWRkIDc2Li44MCBFQXMgKioKKyoqIGFk ZCA3Ni4uMTgyNCBFQXMgKioKIAotKiogYWRkIDgxLi44NSBFQXMgKioKKyoqIGFkZCA4MS4uMTgy OCBFQXMgKioKIAotKiogYWRkIDg2Li45MCBFQXMgKioKKyoqIGFkZCA4Ni4uMTgzMiBFQXMgKioK IAotKiogYWRkIDkxLi45NSBFQXMgKioKKyoqIGFkZCA5MS4uMTgzNiBFQXMgKioKIAotKiogYWRk IDk2Li4xMDAgRUFzICoqCisqKiBhZGQgOTYuLjE4NDAgRUFzICoqCiBjb3JlLmZvcm1hdCA9IDMg KGJ0cmVlKQogY29yZS5zaXplID0gMjg4MzYzNTIKIGNvcmUuZXh0c2l6ZSA9IDAKQEAgLTI5ODQs NyArMzkwMyw3IEBACiB1LmJtYnQubnVtcmVjcyA9IDEKIHUuYm1idC5rZXlzWzFdID0gW3N0YXJ0 b2ZmXSAxOlswXQogdS5ibWJ0LnB0cnNbMV0gPSAxOjM5OQotYS5ibXhbMF0gPSBbc3RhcnRvZmYs c3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMSwwXQorYS5ibXhbMF0g PSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMjAs MF0KIAogKiogcm0gMS4uMTAwIEVBcyAqKgogCkBAIC0zMDAzLDU1ICszOTIyLDU0IEBACiBjb3Jl LnNpemUgPSAzMDE0NzA3MgogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDIzMQot Y29yZS5uYWV4dGVudHMgPSAwCitjb3JlLm5hZXh0ZW50cyA9IDIKIGNvcmUuZm9ya29mZiA9IDI0 ICgxOTIgYnl0ZXMpCi1jb3JlLmFmb3JtYXQgPSAxIChsb2NhbCkKK2NvcmUuYWZvcm1hdCA9IDIg KGV4dGVudHMpCiB1LmJtYnQubGV2ZWwgPSAxCiB1LmJtYnQubnVtcmVjcyA9IDEKIHUuYm1idC5r ZXlzWzFdID0gW3N0YXJ0b2ZmXSAxOlswXQogdS5ibWJ0LnB0cnNbMV0gPSAxOjM5OQotYS5zZmF0 dHIuaGRyLnRvdHNpemUgPSA0Ci1hLnNmYXR0ci5oZHIuY291bnQgPSAwCithLmJteFswLTFdID0g W3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDEyLDBd IDE6WzEzLDMwLDcsMF0KIAotKiogYWRkIDEuLjUgRUFzICoqCisqKiBhZGQgMS4uMTg0NCBFQXMg KioKIAotKiogYWRkIDYuLjEwIEVBcyAqKgorKiogYWRkIDYuLjE4NDggRUFzICoqCiAKLSoqIGFk ZCAxMS4uMTUgRUFzICoqCisqKiBhZGQgMTEuLjE4NTIgRUFzICoqCiAKLSoqIGFkZCAxNi4uMjAg RUFzICoqCisqKiBhZGQgMTYuLjE4NTYgRUFzICoqCiAKLSoqIGFkZCAyMS4uMjUgRUFzICoqCisq KiBhZGQgMjEuLjE4NjAgRUFzICoqCiAKLSoqIGFkZCAyNi4uMzAgRUFzICoqCisqKiBhZGQgMjYu LjE4NjQgRUFzICoqCiAKLSoqIGFkZCAzMS4uMzUgRUFzICoqCisqKiBhZGQgMzEuLjE4NjggRUFz ICoqCiAKLSoqIGFkZCAzNi4uNDAgRUFzICoqCisqKiBhZGQgMzYuLjE4NzIgRUFzICoqCiAKLSoq IGFkZCA0MS4uNDUgRUFzICoqCisqKiBhZGQgNDEuLjE4NzYgRUFzICoqCiAKLSoqIGFkZCA0Ni4u NTAgRUFzICoqCisqKiBhZGQgNDYuLjE4ODAgRUFzICoqCiAKLSoqIGFkZCA1MS4uNTUgRUFzICoq CisqKiBhZGQgNTEuLjE4ODQgRUFzICoqCiAKLSoqIGFkZCA1Ni4uNjAgRUFzICoqCisqKiBhZGQg NTYuLjE4ODggRUFzICoqCiAKLSoqIGFkZCA2MS4uNjUgRUFzICoqCisqKiBhZGQgNjEuLjE4OTIg RUFzICoqCiAKLSoqIGFkZCA2Ni4uNzAgRUFzICoqCisqKiBhZGQgNjYuLjE4OTYgRUFzICoqCiAK LSoqIGFkZCA3MS4uNzUgRUFzICoqCisqKiBhZGQgNzEuLjE5MDAgRUFzICoqCiAKLSoqIGFkZCA3 Ni4uODAgRUFzICoqCisqKiBhZGQgNzYuLjE5MDQgRUFzICoqCiAKLSoqIGFkZCA4MS4uODUgRUFz ICoqCisqKiBhZGQgODEuLjE5MDggRUFzICoqCiAKLSoqIGFkZCA4Ni4uOTAgRUFzICoqCisqKiBh ZGQgODYuLjE5MTIgRUFzICoqCiAKLSoqIGFkZCA5MS4uOTUgRUFzICoqCisqKiBhZGQgOTEuLjE5 MTYgRUFzICoqCiAKLSoqIGFkZCA5Ni4uMTAwIEVBcyAqKgorKiogYWRkIDk2Li4xOTIwIEVBcyAq KgogY29yZS5mb3JtYXQgPSAzIChidHJlZSkKIGNvcmUuc2l6ZSA9IDMwMTQ3MDcyCiBjb3JlLmV4 dHNpemUgPSAwCkBAIC0zMDYzLDcgKzM5ODEsNyBAQAogdS5ibWJ0Lm51bXJlY3MgPSAxCiB1LmJt YnQua2V5c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KIHUuYm1idC5wdHJzWzFdID0gMTozOTkKLWEu Ym14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlsw LDE3LDEsMF0KK2EuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRl bnRmbGFnXSAwOlswLDE3LDIxLDBdCiAKICoqIHJtIDEuLjEwMCBFQXMgKioKIApAQCAtMzA4Miw1 NSArNDAwMCw1NCBAQAogY29yZS5zaXplID0gMzE0NTc3OTIKIGNvcmUuZXh0c2l6ZSA9IDAKIGNv cmUubmV4dGVudHMgPSAyNDEKLWNvcmUubmFleHRlbnRzID0gMAorY29yZS5uYWV4dGVudHMgPSAy CiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQotY29yZS5hZm9ybWF0ID0gMSAobG9jYWwp Citjb3JlLmFmb3JtYXQgPSAyIChleHRlbnRzKQogdS5ibWJ0LmxldmVsID0gMQogdS5ibWJ0Lm51 bXJlY3MgPSAxCiB1LmJtYnQua2V5c1sxXSA9IFtzdGFydG9mZl0gMTpbMF0KIHUuYm1idC5wdHJz WzFdID0gMTozOTkKLWEuc2ZhdHRyLmhkci50b3RzaXplID0gNAotYS5zZmF0dHIuaGRyLmNvdW50 ID0gMAorYS5ibXhbMC0xXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50 ZmxhZ10gMDpbMCwxNywxMiwwXSAxOlsxMywzMCw4LDBdCiAKLSoqIGFkZCAxLi41IEVBcyAqKgor KiogYWRkIDEuLjE5MjQgRUFzICoqCiAKLSoqIGFkZCA2Li4xMCBFQXMgKioKKyoqIGFkZCA2Li4x OTI4IEVBcyAqKgogCi0qKiBhZGQgMTEuLjE1IEVBcyAqKgorKiogYWRkIDExLi4xOTMyIEVBcyAq KgogCi0qKiBhZGQgMTYuLjIwIEVBcyAqKgorKiogYWRkIDE2Li4xOTM2IEVBcyAqKgogCi0qKiBh ZGQgMjEuLjI1IEVBcyAqKgorKiogYWRkIDIxLi4xOTQwIEVBcyAqKgogCi0qKiBhZGQgMjYuLjMw IEVBcyAqKgorKiogYWRkIDI2Li4xOTQ0IEVBcyAqKgogCi0qKiBhZGQgMzEuLjM1IEVBcyAqKgor KiogYWRkIDMxLi4xOTQ4IEVBcyAqKgogCi0qKiBhZGQgMzYuLjQwIEVBcyAqKgorKiogYWRkIDM2 Li4xOTUyIEVBcyAqKgogCi0qKiBhZGQgNDEuLjQ1IEVBcyAqKgorKiogYWRkIDQxLi4xOTU2IEVB cyAqKgogCi0qKiBhZGQgNDYuLjUwIEVBcyAqKgorKiogYWRkIDQ2Li4xOTYwIEVBcyAqKgogCi0q KiBhZGQgNTEuLjU1IEVBcyAqKgorKiogYWRkIDUxLi4xOTY0IEVBcyAqKgogCi0qKiBhZGQgNTYu LjYwIEVBcyAqKgorKiogYWRkIDU2Li4xOTY4IEVBcyAqKgogCi0qKiBhZGQgNjEuLjY1IEVBcyAq KgorKiogYWRkIDYxLi4xOTcyIEVBcyAqKgogCi0qKiBhZGQgNjYuLjcwIEVBcyAqKgorKiogYWRk IDY2Li4xOTc2IEVBcyAqKgogCi0qKiBhZGQgNzEuLjc1IEVBcyAqKgorKiogYWRkIDcxLi4xOTgw IEVBcyAqKgogCi0qKiBhZGQgNzYuLjgwIEVBcyAqKgorKiogYWRkIDc2Li4xOTg0IEVBcyAqKgog Ci0qKiBhZGQgODEuLjg1IEVBcyAqKgorKiogYWRkIDgxLi4xOTg4IEVBcyAqKgogCi0qKiBhZGQg ODYuLjkwIEVBcyAqKgorKiogYWRkIDg2Li4xOTkyIEVBcyAqKgogCi0qKiBhZGQgOTEuLjk1IEVB cyAqKgorKiogYWRkIDkxLi4xOTk2IEVBcyAqKgogCi0qKiBhZGQgOTYuLjEwMCBFQXMgKioKKyoq IGFkZCA5Ni4uMjAwMCBFQXMgKioKIGNvcmUuZm9ybWF0ID0gMyAoYnRyZWUpCiBjb3JlLnNpemUg PSAzMTQ1Nzc5MgogY29yZS5leHRzaXplID0gMApAQCAtMzE0Miw3ICs0MDU5LDcgQEAKIHUuYm1i dC5udW1yZWNzID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZdIDE6WzBdCiB1LmJtYnQu cHRyc1sxXSA9IDE6Mzk5Ci1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291 bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxLDBdCithLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJs b2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywyMiwwXQogCiAqKiBybSAxLi4xMDAg RUFzICoqCiAKQEAgLTMxNjEsNTUgKzQwNzgsNTQgQEAKIGNvcmUuc2l6ZSA9IDMyNzY4NTEyCiBj b3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMjUxCi1jb3JlLm5hZXh0ZW50cyA9IDAK K2NvcmUubmFleHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNvcmUu YWZvcm1hdCA9IDEgKGxvY2FsKQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5s ZXZlbCA9IDEKIHUuYm1idC5udW1yZWNzID0gMQogdS5ibWJ0LmtleXNbMV0gPSBbc3RhcnRvZmZd IDE6WzBdCiB1LmJtYnQucHRyc1sxXSA9IDE6Mzk5Ci1hLnNmYXR0ci5oZHIudG90c2l6ZSA9IDQK LWEuc2ZhdHRyLmhkci5jb3VudCA9IDAKK2EuYm14WzAtMV0gPSBbc3RhcnRvZmYsc3RhcnRibG9j ayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMTIsMF0gMTpbMTMsMzAsOSwwXQogCi0q KiBhZGQgMS4uNSBFQXMgKioKKyoqIGFkZCAxLi4yMDA0IEVBcyAqKgogCi0qKiBhZGQgNi4uMTAg RUFzICoqCisqKiBhZGQgNi4uMjAwOCBFQXMgKioKIAotKiogYWRkIDExLi4xNSBFQXMgKioKKyoq IGFkZCAxMS4uMjAxMiBFQXMgKioKIAotKiogYWRkIDE2Li4yMCBFQXMgKioKKyoqIGFkZCAxNi4u MjAxNiBFQXMgKioKIAotKiogYWRkIDIxLi4yNSBFQXMgKioKKyoqIGFkZCAyMS4uMjAyMCBFQXMg KioKIAotKiogYWRkIDI2Li4zMCBFQXMgKioKKyoqIGFkZCAyNi4uMjAyNCBFQXMgKioKIAotKiog YWRkIDMxLi4zNSBFQXMgKioKKyoqIGFkZCAzMS4uMjAyOCBFQXMgKioKIAotKiogYWRkIDM2Li40 MCBFQXMgKioKKyoqIGFkZCAzNi4uMjAzMiBFQXMgKioKIAotKiogYWRkIDQxLi40NSBFQXMgKioK KyoqIGFkZCA0MS4uMjAzNiBFQXMgKioKIAotKiogYWRkIDQ2Li41MCBFQXMgKioKKyoqIGFkZCA0 Ni4uMjA0MCBFQXMgKioKIAotKiogYWRkIDUxLi41NSBFQXMgKioKKyoqIGFkZCA1MS4uMjA0NCBF QXMgKioKIAotKiogYWRkIDU2Li42MCBFQXMgKioKKyoqIGFkZCA1Ni4uMjA0OCBFQXMgKioKIAot KiogYWRkIDYxLi42NSBFQXMgKioKKyoqIGFkZCA2MS4uMjA1MiBFQXMgKioKIAotKiogYWRkIDY2 Li43MCBFQXMgKioKKyoqIGFkZCA2Ni4uMjA1NiBFQXMgKioKIAotKiogYWRkIDcxLi43NSBFQXMg KioKKyoqIGFkZCA3MS4uMjA2MCBFQXMgKioKIAotKiogYWRkIDc2Li44MCBFQXMgKioKKyoqIGFk ZCA3Ni4uMjA2NCBFQXMgKioKIAotKiogYWRkIDgxLi44NSBFQXMgKioKKyoqIGFkZCA4MS4uMjA2 OCBFQXMgKioKIAotKiogYWRkIDg2Li45MCBFQXMgKioKKyoqIGFkZCA4Ni4uMjA3MiBFQXMgKioK IAotKiogYWRkIDkxLi45NSBFQXMgKioKKyoqIGFkZCA5MS4uMjA3NiBFQXMgKioKIAotKiogYWRk IDk2Li4xMDAgRUFzICoqCisqKiBhZGQgOTYuLjIwODAgRUFzICoqCiBjb3JlLmZvcm1hdCA9IDMg KGJ0cmVlKQogY29yZS5zaXplID0gMzI3Njg1MTIKIGNvcmUuZXh0c2l6ZSA9IDAKQEAgLTMyMjEs NyArNDEzNyw3IEBACiB1LmJtYnQubnVtcmVjcyA9IDEKIHUuYm1idC5rZXlzWzFdID0gW3N0YXJ0 b2ZmXSAxOlswXQogdS5ibWJ0LnB0cnNbMV0gPSAxOjM5OQotYS5ibXhbMF0gPSBbc3RhcnRvZmYs c3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMSwwXQorYS5ibXhbMF0g PSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMjMs MF0KIAogKiogcm0gMS4uMTAwIEVBcyAqKgogCkBAIC0zMjQwLDU1ICs0MTU2LDU5IEBACiBjb3Jl LnNpemUgPSAzNDA3OTIzMgogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDI2MQot Y29yZS5uYWV4dGVudHMgPSAwCitjb3JlLm5hZXh0ZW50cyA9IDIKIGNvcmUuZm9ya29mZiA9IDI0 ICgxOTIgYnl0ZXMpCi1jb3JlLmFmb3JtYXQgPSAxIChsb2NhbCkKK2NvcmUuYWZvcm1hdCA9IDIg KGV4dGVudHMpCiB1LmJtYnQubGV2ZWwgPSAxCiB1LmJtYnQubnVtcmVjcyA9IDIKIHUuYm1idC5r ZXlzWzEtMl0gPSBbc3RhcnRvZmZdIDE6WzBdIDI6WzQwNjRdCiB1LmJtYnQucHRyc1sxLTJdID0g MTozOTkgMjo4MTQzCi1hLnNmYXR0ci5oZHIudG90c2l6ZSA9IDQKLWEuc2ZhdHRyLmhkci5jb3Vu dCA9IDAKK2EuYm14WzAtMV0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVu dGZsYWddIDA6WzAsMTcsMTIsMF0gMTpbMTMsMzAsMTAsMF0KK3Vtb3VudDogL2hvbWUvbWFuaXNo L1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQ6IGRldmljZSBpcyBidXN5LgorICAgICAgICAoSW4gc29t ZSBjYXNlcyB1c2VmdWwgaW5mbyBhYm91dCBwcm9jZXNzZXMgdGhhdCB1c2UKKyAgICAgICAgIHRo ZSBkZXZpY2UgaXMgZm91bmQgYnkgbHNvZig4KSBvciBmdXNlcigxKSkKK21vdW50OiAvZGV2L3Nk YjQgYWxyZWFkeSBtb3VudGVkIG9yIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0 IGJ1c3kKK21vdW50OiBhY2NvcmRpbmcgdG8gbXRhYiwgL2Rldi9zZGI0IGlzIGFscmVhZHkgbW91 bnRlZCBvbiAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNAogCi0qKiBhZGQgMS4u NSBFQXMgKioKKyoqIGFkZCAxLi4yMDg0IEVBcyAqKgogCi0qKiBhZGQgNi4uMTAgRUFzICoqCisq KiBhZGQgNi4uMjA4OCBFQXMgKioKIAotKiogYWRkIDExLi4xNSBFQXMgKioKKyoqIGFkZCAxMS4u MjA5MiBFQXMgKioKIAotKiogYWRkIDE2Li4yMCBFQXMgKioKKyoqIGFkZCAxNi4uMjA5NiBFQXMg KioKIAotKiogYWRkIDIxLi4yNSBFQXMgKioKKyoqIGFkZCAyMS4uMjEwMCBFQXMgKioKIAotKiog YWRkIDI2Li4zMCBFQXMgKioKKyoqIGFkZCAyNi4uMjEwNCBFQXMgKioKIAotKiogYWRkIDMxLi4z NSBFQXMgKioKKyoqIGFkZCAzMS4uMjEwOCBFQXMgKioKIAotKiogYWRkIDM2Li40MCBFQXMgKioK KyoqIGFkZCAzNi4uMjExMiBFQXMgKioKIAotKiogYWRkIDQxLi40NSBFQXMgKioKKyoqIGFkZCA0 MS4uMjExNiBFQXMgKioKIAotKiogYWRkIDQ2Li41MCBFQXMgKioKKyoqIGFkZCA0Ni4uMjEyMCBF QXMgKioKIAotKiogYWRkIDUxLi41NSBFQXMgKioKKyoqIGFkZCA1MS4uMjEyNCBFQXMgKioKIAot KiogYWRkIDU2Li42MCBFQXMgKioKKyoqIGFkZCA1Ni4uMjEyOCBFQXMgKioKIAotKiogYWRkIDYx Li42NSBFQXMgKioKKyoqIGFkZCA2MS4uMjEzMiBFQXMgKioKIAotKiogYWRkIDY2Li43MCBFQXMg KioKKyoqIGFkZCA2Ni4uMjEzNiBFQXMgKioKIAotKiogYWRkIDcxLi43NSBFQXMgKioKKyoqIGFk ZCA3MS4uMjE0MCBFQXMgKioKIAotKiogYWRkIDc2Li44MCBFQXMgKioKKyoqIGFkZCA3Ni4uMjE0 NCBFQXMgKioKIAotKiogYWRkIDgxLi44NSBFQXMgKioKKyoqIGFkZCA4MS4uMjE0OCBFQXMgKioK IAotKiogYWRkIDg2Li45MCBFQXMgKioKKyoqIGFkZCA4Ni4uMjE1MiBFQXMgKioKIAotKiogYWRk IDkxLi45NSBFQXMgKioKKyoqIGFkZCA5MS4uMjE1NiBFQXMgKioKIAotKiogYWRkIDk2Li4xMDAg RUFzICoqCisqKiBhZGQgOTYuLjIxNjAgRUFzICoqCiBjb3JlLmZvcm1hdCA9IDMgKGJ0cmVlKQog Y29yZS5zaXplID0gMzQwNzkyMzIKIGNvcmUuZXh0c2l6ZSA9IDAKQEAgLTMzMDAsNyArNDIyMCw3 IEBACiB1LmJtYnQubnVtcmVjcyA9IDIKIHUuYm1idC5rZXlzWzEtMl0gPSBbc3RhcnRvZmZdIDE6 WzBdIDI6WzQwNjRdCiB1LmJtYnQucHRyc1sxLTJdID0gMTozOTkgMjo4MTQzCi1hLmJteFswXSA9 IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxLDBd CithLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10g MDpbMCwxNywyNCwwXQogCiAqKiBybSAxLi4xMDAgRUFzICoqCiAKQEAgLTMzMTksNTUgKzQyMzks NTcgQEAKIGNvcmUuc2l6ZSA9IDM1Mzg5OTUyCiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRl bnRzID0gMjcxCi1jb3JlLm5hZXh0ZW50cyA9IDAKK2NvcmUubmFleHRlbnRzID0gMgogY29yZS5m b3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNvcmUuYWZvcm1hdCA9IDEgKGxvY2FsKQorY29yZS5h Zm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5sZXZlbCA9IDEKIHUuYm1idC5udW1yZWNzID0g MgogdS5ibWJ0LmtleXNbMS0yXSA9IFtzdGFydG9mZl0gMTpbMF0gMjpbNDA2NF0KIHUuYm1idC5w dHJzWzEtMl0gPSAxOjM5OSAyOjgxNDMKLWEuc2ZhdHRyLmhkci50b3RzaXplID0gNAotYS5zZmF0 dHIuaGRyLmNvdW50ID0gMAorYS5ibXhbMC0xXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2Nr Y291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxMiwwXSAxOlsxMywzMCwxMSwwXQordW1vdW50OiAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNDogZGV2aWNlIGlzIGJ1c3kuCisgICAg ICAgIChJbiBzb21lIGNhc2VzIHVzZWZ1bCBpbmZvIGFib3V0IHByb2Nlc3NlcyB0aGF0IHVzZQor ICAgICAgICAgdGhlIGRldmljZSBpcyBmb3VuZCBieSBsc29mKDgpIG9yIGZ1c2VyKDEpKQogCi0q KiBhZGQgMS4uNSBFQXMgKioKKyoqIGFkZCAxLi4yMTY0IEVBcyAqKgogCi0qKiBhZGQgNi4uMTAg RUFzICoqCisqKiBhZGQgNi4uMjE2OCBFQXMgKioKIAotKiogYWRkIDExLi4xNSBFQXMgKioKKyoq IGFkZCAxMS4uMjE3MiBFQXMgKioKIAotKiogYWRkIDE2Li4yMCBFQXMgKioKKyoqIGFkZCAxNi4u MjE3NiBFQXMgKioKIAotKiogYWRkIDIxLi4yNSBFQXMgKioKKyoqIGFkZCAyMS4uMjE4MCBFQXMg KioKIAotKiogYWRkIDI2Li4zMCBFQXMgKioKKyoqIGFkZCAyNi4uMjE4NCBFQXMgKioKIAotKiog YWRkIDMxLi4zNSBFQXMgKioKKyoqIGFkZCAzMS4uMjE4OCBFQXMgKioKIAotKiogYWRkIDM2Li40 MCBFQXMgKioKKyoqIGFkZCAzNi4uMjE5MiBFQXMgKioKIAotKiogYWRkIDQxLi40NSBFQXMgKioK KyoqIGFkZCA0MS4uMjE5NiBFQXMgKioKIAotKiogYWRkIDQ2Li41MCBFQXMgKioKKyoqIGFkZCA0 Ni4uMjIwMCBFQXMgKioKIAotKiogYWRkIDUxLi41NSBFQXMgKioKKyoqIGFkZCA1MS4uMjIwNCBF QXMgKioKIAotKiogYWRkIDU2Li42MCBFQXMgKioKKyoqIGFkZCA1Ni4uMjIwOCBFQXMgKioKIAot KiogYWRkIDYxLi42NSBFQXMgKioKKyoqIGFkZCA2MS4uMjIxMiBFQXMgKioKIAotKiogYWRkIDY2 Li43MCBFQXMgKioKKyoqIGFkZCA2Ni4uMjIxNiBFQXMgKioKIAotKiogYWRkIDcxLi43NSBFQXMg KioKKyoqIGFkZCA3MS4uMjIyMCBFQXMgKioKIAotKiogYWRkIDc2Li44MCBFQXMgKioKKyoqIGFk ZCA3Ni4uMjIyNCBFQXMgKioKIAotKiogYWRkIDgxLi44NSBFQXMgKioKKyoqIGFkZCA4MS4uMjIy OCBFQXMgKioKIAotKiogYWRkIDg2Li45MCBFQXMgKioKKyoqIGFkZCA4Ni4uMjIzMiBFQXMgKioK IAotKiogYWRkIDkxLi45NSBFQXMgKioKKyoqIGFkZCA5MS4uMjIzNiBFQXMgKioKIAotKiogYWRk IDk2Li4xMDAgRUFzICoqCisqKiBhZGQgOTYuLjIyNDAgRUFzICoqCiBjb3JlLmZvcm1hdCA9IDMg KGJ0cmVlKQogY29yZS5zaXplID0gMzUzODk5NTIKIGNvcmUuZXh0c2l6ZSA9IDAKQEAgLTMzNzks NyArNDMwMSw3IEBACiB1LmJtYnQubnVtcmVjcyA9IDIKIHUuYm1idC5rZXlzWzEtMl0gPSBbc3Rh cnRvZmZdIDE6WzBdIDI6WzQwNjRdCiB1LmJtYnQucHRyc1sxLTJdID0gMTozOTkgMjo4MTQzCi1h LmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpb MCwxNywxLDBdCithLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0 ZW50ZmxhZ10gMDpbMCwxNywyNSwwXQogCiAqKiBybSAxLi4xMDAgRUFzICoqCiAKQEAgLTMzOTgs NTUgKzQzMjAsNTQgQEAKIGNvcmUuc2l6ZSA9IDM2NzAwNjcyCiBjb3JlLmV4dHNpemUgPSAwCiBj b3JlLm5leHRlbnRzID0gMjgxCi1jb3JlLm5hZXh0ZW50cyA9IDAKK2NvcmUubmFleHRlbnRzID0g MgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNvcmUuYWZvcm1hdCA9IDEgKGxvY2Fs KQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5sZXZlbCA9IDEKIHUuYm1idC5u dW1yZWNzID0gMgogdS5ibWJ0LmtleXNbMS0yXSA9IFtzdGFydG9mZl0gMTpbMF0gMjpbNDA2NF0K IHUuYm1idC5wdHJzWzEtMl0gPSAxOjM5OSAyOjgxNDMKLWEuc2ZhdHRyLmhkci50b3RzaXplID0g NAotYS5zZmF0dHIuaGRyLmNvdW50ID0gMAorYS5ibXhbMC0xXSA9IFtzdGFydG9mZixzdGFydGJs b2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxMiwwXSAxOlsxMywzMCwxMiwwXQog Ci0qKiBhZGQgMS4uNSBFQXMgKioKKyoqIGFkZCAxLi4yMjQ0IEVBcyAqKgogCi0qKiBhZGQgNi4u MTAgRUFzICoqCisqKiBhZGQgNi4uMjI0OCBFQXMgKioKIAotKiogYWRkIDExLi4xNSBFQXMgKioK KyoqIGFkZCAxMS4uMjI1MiBFQXMgKioKIAotKiogYWRkIDE2Li4yMCBFQXMgKioKKyoqIGFkZCAx Ni4uMjI1NiBFQXMgKioKIAotKiogYWRkIDIxLi4yNSBFQXMgKioKKyoqIGFkZCAyMS4uMjI2MCBF QXMgKioKIAotKiogYWRkIDI2Li4zMCBFQXMgKioKKyoqIGFkZCAyNi4uMjI2NCBFQXMgKioKIAot KiogYWRkIDMxLi4zNSBFQXMgKioKKyoqIGFkZCAzMS4uMjI2OCBFQXMgKioKIAotKiogYWRkIDM2 Li40MCBFQXMgKioKKyoqIGFkZCAzNi4uMjI3MiBFQXMgKioKIAotKiogYWRkIDQxLi40NSBFQXMg KioKKyoqIGFkZCA0MS4uMjI3NiBFQXMgKioKIAotKiogYWRkIDQ2Li41MCBFQXMgKioKKyoqIGFk ZCA0Ni4uMjI4MCBFQXMgKioKIAotKiogYWRkIDUxLi41NSBFQXMgKioKKyoqIGFkZCA1MS4uMjI4 NCBFQXMgKioKIAotKiogYWRkIDU2Li42MCBFQXMgKioKKyoqIGFkZCA1Ni4uMjI4OCBFQXMgKioK IAotKiogYWRkIDYxLi42NSBFQXMgKioKKyoqIGFkZCA2MS4uMjI5MiBFQXMgKioKIAotKiogYWRk IDY2Li43MCBFQXMgKioKKyoqIGFkZCA2Ni4uMjI5NiBFQXMgKioKIAotKiogYWRkIDcxLi43NSBF QXMgKioKKyoqIGFkZCA3MS4uMjMwMCBFQXMgKioKIAotKiogYWRkIDc2Li44MCBFQXMgKioKKyoq IGFkZCA3Ni4uMjMwNCBFQXMgKioKIAotKiogYWRkIDgxLi44NSBFQXMgKioKKyoqIGFkZCA4MS4u MjMwOCBFQXMgKioKIAotKiogYWRkIDg2Li45MCBFQXMgKioKKyoqIGFkZCA4Ni4uMjMxMiBFQXMg KioKIAotKiogYWRkIDkxLi45NSBFQXMgKioKKyoqIGFkZCA5MS4uMjMxNiBFQXMgKioKIAotKiog YWRkIDk2Li4xMDAgRUFzICoqCisqKiBhZGQgOTYuLjIzMjAgRUFzICoqCiBjb3JlLmZvcm1hdCA9 IDMgKGJ0cmVlKQogY29yZS5zaXplID0gMzY3MDA2NzIKIGNvcmUuZXh0c2l6ZSA9IDAKQEAgLTM0 NTgsNyArNDM3OSw3IEBACiB1LmJtYnQubnVtcmVjcyA9IDIKIHUuYm1idC5rZXlzWzEtMl0gPSBb c3RhcnRvZmZdIDE6WzBdIDI6WzQwNjRdCiB1LmJtYnQucHRyc1sxLTJdID0gMTozOTkgMjo4MTQz Ci1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10g MDpbMCwxNywxLDBdCithLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQs ZXh0ZW50ZmxhZ10gMDpbMCwxNywyNiwwXQogCiAqKiBybSAxLi4xMDAgRUFzICoqCiAKQEAgLTM0 NzcsNTUgKzQzOTgsNTQgQEAKIGNvcmUuc2l6ZSA9IDM4MDExMzkyCiBjb3JlLmV4dHNpemUgPSAw CiBjb3JlLm5leHRlbnRzID0gMjkxCi1jb3JlLm5hZXh0ZW50cyA9IDAKK2NvcmUubmFleHRlbnRz ID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNvcmUuYWZvcm1hdCA9IDEgKGxv Y2FsKQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5sZXZlbCA9IDEKIHUuYm1i dC5udW1yZWNzID0gMgogdS5ibWJ0LmtleXNbMS0yXSA9IFtzdGFydG9mZl0gMTpbMF0gMjpbNDA2 NF0KIHUuYm1idC5wdHJzWzEtMl0gPSAxOjM5OSAyOjgxNDMKLWEuc2ZhdHRyLmhkci50b3RzaXpl ID0gNAotYS5zZmF0dHIuaGRyLmNvdW50ID0gMAorYS5ibXhbMC0xXSA9IFtzdGFydG9mZixzdGFy dGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxMiwwXSAxOlsxMywzMCwxMyww XQogCi0qKiBhZGQgMS4uNSBFQXMgKioKKyoqIGFkZCAxLi4yMzI0IEVBcyAqKgogCi0qKiBhZGQg Ni4uMTAgRUFzICoqCisqKiBhZGQgNi4uMjMyOCBFQXMgKioKIAotKiogYWRkIDExLi4xNSBFQXMg KioKKyoqIGFkZCAxMS4uMjMzMiBFQXMgKioKIAotKiogYWRkIDE2Li4yMCBFQXMgKioKKyoqIGFk ZCAxNi4uMjMzNiBFQXMgKioKIAotKiogYWRkIDIxLi4yNSBFQXMgKioKKyoqIGFkZCAyMS4uMjM0 MCBFQXMgKioKIAotKiogYWRkIDI2Li4zMCBFQXMgKioKKyoqIGFkZCAyNi4uMjM0NCBFQXMgKioK IAotKiogYWRkIDMxLi4zNSBFQXMgKioKKyoqIGFkZCAzMS4uMjM0OCBFQXMgKioKIAotKiogYWRk IDM2Li40MCBFQXMgKioKKyoqIGFkZCAzNi4uMjM1MiBFQXMgKioKIAotKiogYWRkIDQxLi40NSBF QXMgKioKKyoqIGFkZCA0MS4uMjM1NiBFQXMgKioKIAotKiogYWRkIDQ2Li41MCBFQXMgKioKKyoq IGFkZCA0Ni4uMjM2MCBFQXMgKioKIAotKiogYWRkIDUxLi41NSBFQXMgKioKKyoqIGFkZCA1MS4u MjM2NCBFQXMgKioKIAotKiogYWRkIDU2Li42MCBFQXMgKioKKyoqIGFkZCA1Ni4uMjM2OCBFQXMg KioKIAotKiogYWRkIDYxLi42NSBFQXMgKioKKyoqIGFkZCA2MS4uMjM3MiBFQXMgKioKIAotKiog YWRkIDY2Li43MCBFQXMgKioKKyoqIGFkZCA2Ni4uMjM3NiBFQXMgKioKIAotKiogYWRkIDcxLi43 NSBFQXMgKioKKyoqIGFkZCA3MS4uMjM4MCBFQXMgKioKIAotKiogYWRkIDc2Li44MCBFQXMgKioK KyoqIGFkZCA3Ni4uMjM4NCBFQXMgKioKIAotKiogYWRkIDgxLi44NSBFQXMgKioKKyoqIGFkZCA4 MS4uMjM4OCBFQXMgKioKIAotKiogYWRkIDg2Li45MCBFQXMgKioKKyoqIGFkZCA4Ni4uMjM5MiBF QXMgKioKIAotKiogYWRkIDkxLi45NSBFQXMgKioKKyoqIGFkZCA5MS4uMjM5NiBFQXMgKioKIAot KiogYWRkIDk2Li4xMDAgRUFzICoqCisqKiBhZGQgOTYuLjI0MDAgRUFzICoqCiBjb3JlLmZvcm1h dCA9IDMgKGJ0cmVlKQogY29yZS5zaXplID0gMzgwMTEzOTIKIGNvcmUuZXh0c2l6ZSA9IDAKQEAg LTM1MzcsNyArNDQ1Nyw3IEBACiB1LmJtYnQubnVtcmVjcyA9IDIKIHUuYm1idC5rZXlzWzEtMl0g PSBbc3RhcnRvZmZdIDE6WzBdIDI6WzQwNjRdCiB1LmJtYnQucHRyc1sxLTJdID0gMTozOTkgMjo4 MTQzCi1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50Zmxh Z10gMDpbMCwxNywxLDBdCithLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291 bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywyNywwXQogCiAqKiBybSAxLi4xMDAgRUFzICoqCiAKQEAg LTM1NTcsNTUgKzQ0NzcsNTQgQEAKIGNvcmUuc2l6ZSA9IDM5MzIyMTEyCiBjb3JlLmV4dHNpemUg PSAwCiBjb3JlLm5leHRlbnRzID0gMzAxCi1jb3JlLm5hZXh0ZW50cyA9IDAKK2NvcmUubmFleHRl bnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNvcmUuYWZvcm1hdCA9IDEg KGxvY2FsKQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5sZXZlbCA9IDEKIHUu Ym1idC5udW1yZWNzID0gMgogdS5ibWJ0LmtleXNbMS0yXSA9IFtzdGFydG9mZl0gMTpbMF0gMjpb NDA2NF0KIHUuYm1idC5wdHJzWzEtMl0gPSAxOjM5OSAyOjgxNDMKLWEuc2ZhdHRyLmhkci50b3Rz aXplID0gNAotYS5zZmF0dHIuaGRyLmNvdW50ID0gMAorYS5ibXhbMC0xXSA9IFtzdGFydG9mZixz dGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxMiwwXSAxOlsxMywzMCwx NCwwXQogCi0qKiBhZGQgMS4uNSBFQXMgKioKKyoqIGFkZCAxLi4yNDA0IEVBcyAqKgogCi0qKiBh ZGQgNi4uMTAgRUFzICoqCisqKiBhZGQgNi4uMjQwOCBFQXMgKioKIAotKiogYWRkIDExLi4xNSBF QXMgKioKKyoqIGFkZCAxMS4uMjQxMiBFQXMgKioKIAotKiogYWRkIDE2Li4yMCBFQXMgKioKKyoq IGFkZCAxNi4uMjQxNiBFQXMgKioKIAotKiogYWRkIDIxLi4yNSBFQXMgKioKKyoqIGFkZCAyMS4u MjQyMCBFQXMgKioKIAotKiogYWRkIDI2Li4zMCBFQXMgKioKKyoqIGFkZCAyNi4uMjQyNCBFQXMg KioKIAotKiogYWRkIDMxLi4zNSBFQXMgKioKKyoqIGFkZCAzMS4uMjQyOCBFQXMgKioKIAotKiog YWRkIDM2Li40MCBFQXMgKioKKyoqIGFkZCAzNi4uMjQzMiBFQXMgKioKIAotKiogYWRkIDQxLi40 NSBFQXMgKioKKyoqIGFkZCA0MS4uMjQzNiBFQXMgKioKIAotKiogYWRkIDQ2Li41MCBFQXMgKioK KyoqIGFkZCA0Ni4uMjQ0MCBFQXMgKioKIAotKiogYWRkIDUxLi41NSBFQXMgKioKKyoqIGFkZCA1 MS4uMjQ0NCBFQXMgKioKIAotKiogYWRkIDU2Li42MCBFQXMgKioKKyoqIGFkZCA1Ni4uMjQ0OCBF QXMgKioKIAotKiogYWRkIDYxLi42NSBFQXMgKioKKyoqIGFkZCA2MS4uMjQ1MiBFQXMgKioKIAot KiogYWRkIDY2Li43MCBFQXMgKioKKyoqIGFkZCA2Ni4uMjQ1NiBFQXMgKioKIAotKiogYWRkIDcx Li43NSBFQXMgKioKKyoqIGFkZCA3MS4uMjQ2MCBFQXMgKioKIAotKiogYWRkIDc2Li44MCBFQXMg KioKKyoqIGFkZCA3Ni4uMjQ2NCBFQXMgKioKIAotKiogYWRkIDgxLi44NSBFQXMgKioKKyoqIGFk ZCA4MS4uMjQ2OCBFQXMgKioKIAotKiogYWRkIDg2Li45MCBFQXMgKioKKyoqIGFkZCA4Ni4uMjQ3 MiBFQXMgKioKIAotKiogYWRkIDkxLi45NSBFQXMgKioKKyoqIGFkZCA5MS4uMjQ3NiBFQXMgKioK IAotKiogYWRkIDk2Li4xMDAgRUFzICoqCisqKiBhZGQgOTYuLjI0ODAgRUFzICoqCiBjb3JlLmZv cm1hdCA9IDMgKGJ0cmVlKQogY29yZS5zaXplID0gMzkzMjIxMTIKIGNvcmUuZXh0c2l6ZSA9IDAK QEAgLTM2MTcsNyArNDUzNiw3IEBACiB1LmJtYnQubnVtcmVjcyA9IDIKIHUuYm1idC5rZXlzWzEt Ml0gPSBbc3RhcnRvZmZdIDE6WzBdIDI6WzQwNjRdCiB1LmJtYnQucHRyc1sxLTJdID0gMTozOTkg Mjo4MTQzCi1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50 ZmxhZ10gMDpbMCwxNywxLDBdCithLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2Nr Y291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywyOCwwXQogCiAqKiBybSAxLi4xMDAgRUFzICoqCiAK QEAgLTM2MzYsNTUgKzQ1NTUsNTQgQEAKIGNvcmUuc2l6ZSA9IDQwNjMyODMyCiBjb3JlLmV4dHNp emUgPSAwCiBjb3JlLm5leHRlbnRzID0gMzExCi1jb3JlLm5hZXh0ZW50cyA9IDAKK2NvcmUubmFl eHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNvcmUuYWZvcm1hdCA9 IDEgKGxvY2FsKQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5sZXZlbCA9IDEK IHUuYm1idC5udW1yZWNzID0gMgogdS5ibWJ0LmtleXNbMS0yXSA9IFtzdGFydG9mZl0gMTpbMF0g MjpbNDA2NF0KIHUuYm1idC5wdHJzWzEtMl0gPSAxOjM5OSAyOjgxNDMKLWEuc2ZhdHRyLmhkci50 b3RzaXplID0gNAotYS5zZmF0dHIuaGRyLmNvdW50ID0gMAorYS5ibXhbMC0xXSA9IFtzdGFydG9m ZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxMiwwXSAxOlsxMywz MCwxNSwwXQogCi0qKiBhZGQgMS4uNSBFQXMgKioKKyoqIGFkZCAxLi4yNDg0IEVBcyAqKgogCi0q KiBhZGQgNi4uMTAgRUFzICoqCisqKiBhZGQgNi4uMjQ4OCBFQXMgKioKIAotKiogYWRkIDExLi4x NSBFQXMgKioKKyoqIGFkZCAxMS4uMjQ5MiBFQXMgKioKIAotKiogYWRkIDE2Li4yMCBFQXMgKioK KyoqIGFkZCAxNi4uMjQ5NiBFQXMgKioKIAotKiogYWRkIDIxLi4yNSBFQXMgKioKKyoqIGFkZCAy MS4uMjUwMCBFQXMgKioKIAotKiogYWRkIDI2Li4zMCBFQXMgKioKKyoqIGFkZCAyNi4uMjUwNCBF QXMgKioKIAotKiogYWRkIDMxLi4zNSBFQXMgKioKKyoqIGFkZCAzMS4uMjUwOCBFQXMgKioKIAot KiogYWRkIDM2Li40MCBFQXMgKioKKyoqIGFkZCAzNi4uMjUxMiBFQXMgKioKIAotKiogYWRkIDQx Li40NSBFQXMgKioKKyoqIGFkZCA0MS4uMjUxNiBFQXMgKioKIAotKiogYWRkIDQ2Li41MCBFQXMg KioKKyoqIGFkZCA0Ni4uMjUyMCBFQXMgKioKIAotKiogYWRkIDUxLi41NSBFQXMgKioKKyoqIGFk ZCA1MS4uMjUyNCBFQXMgKioKIAotKiogYWRkIDU2Li42MCBFQXMgKioKKyoqIGFkZCA1Ni4uMjUy OCBFQXMgKioKIAotKiogYWRkIDYxLi42NSBFQXMgKioKKyoqIGFkZCA2MS4uMjUzMiBFQXMgKioK IAotKiogYWRkIDY2Li43MCBFQXMgKioKKyoqIGFkZCA2Ni4uMjUzNiBFQXMgKioKIAotKiogYWRk IDcxLi43NSBFQXMgKioKKyoqIGFkZCA3MS4uMjU0MCBFQXMgKioKIAotKiogYWRkIDc2Li44MCBF QXMgKioKKyoqIGFkZCA3Ni4uMjU0NCBFQXMgKioKIAotKiogYWRkIDgxLi44NSBFQXMgKioKKyoq IGFkZCA4MS4uMjU0OCBFQXMgKioKIAotKiogYWRkIDg2Li45MCBFQXMgKioKKyoqIGFkZCA4Ni4u MjU1MiBFQXMgKioKIAotKiogYWRkIDkxLi45NSBFQXMgKioKKyoqIGFkZCA5MS4uMjU1NiBFQXMg KioKIAotKiogYWRkIDk2Li4xMDAgRUFzICoqCisqKiBhZGQgOTYuLjI1NjAgRUFzICoqCiBjb3Jl LmZvcm1hdCA9IDMgKGJ0cmVlKQogY29yZS5zaXplID0gNDA2MzI4MzIKIGNvcmUuZXh0c2l6ZSA9 IDAKQEAgLTM2OTYsNyArNDYxNCw3IEBACiB1LmJtYnQubnVtcmVjcyA9IDIKIHUuYm1idC5rZXlz WzEtMl0gPSBbc3RhcnRvZmZdIDE6WzBdIDI6WzQwNjRdCiB1LmJtYnQucHRyc1sxLTJdID0gMToz OTkgMjo4MTQzCi1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0 ZW50ZmxhZ10gMDpbMCwxNywxLDBdCithLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJs b2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywyOCwwXQogCiAqKiBybSAxLi4xMDAgRUFzICoq CiAKQEAgLTM3MTUsNTUgKzQ2MzMsNTQgQEAKIGNvcmUuc2l6ZSA9IDQxOTQzNTUyCiBjb3JlLmV4 dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMzIxCi1jb3JlLm5hZXh0ZW50cyA9IDAKK2NvcmUu bmFleHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNvcmUuYWZvcm1h dCA9IDEgKGxvY2FsKQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5sZXZlbCA9 IDEKIHUuYm1idC5udW1yZWNzID0gMgogdS5ibWJ0LmtleXNbMS0yXSA9IFtzdGFydG9mZl0gMTpb MF0gMjpbNDA2NF0KIHUuYm1idC5wdHJzWzEtMl0gPSAxOjM5OSAyOjgxNDMKLWEuc2ZhdHRyLmhk ci50b3RzaXplID0gNAotYS5zZmF0dHIuaGRyLmNvdW50ID0gMAorYS5ibXhbMC0xXSA9IFtzdGFy dG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxMiwwXSAxOlsx MywzMCwxNSwwXQogCi0qKiBhZGQgMS4uNSBFQXMgKioKKyoqIGFkZCAxLi4yNTY0IEVBcyAqKgog Ci0qKiBhZGQgNi4uMTAgRUFzICoqCisqKiBhZGQgNi4uMjU2OCBFQXMgKioKIAotKiogYWRkIDEx Li4xNSBFQXMgKioKKyoqIGFkZCAxMS4uMjU3MiBFQXMgKioKIAotKiogYWRkIDE2Li4yMCBFQXMg KioKKyoqIGFkZCAxNi4uMjU3NiBFQXMgKioKIAotKiogYWRkIDIxLi4yNSBFQXMgKioKKyoqIGFk ZCAyMS4uMjU4MCBFQXMgKioKIAotKiogYWRkIDI2Li4zMCBFQXMgKioKKyoqIGFkZCAyNi4uMjU4 NCBFQXMgKioKIAotKiogYWRkIDMxLi4zNSBFQXMgKioKKyoqIGFkZCAzMS4uMjU4OCBFQXMgKioK IAotKiogYWRkIDM2Li40MCBFQXMgKioKKyoqIGFkZCAzNi4uMjU5MiBFQXMgKioKIAotKiogYWRk IDQxLi40NSBFQXMgKioKKyoqIGFkZCA0MS4uMjU5NiBFQXMgKioKIAotKiogYWRkIDQ2Li41MCBF QXMgKioKKyoqIGFkZCA0Ni4uMjYwMCBFQXMgKioKIAotKiogYWRkIDUxLi41NSBFQXMgKioKKyoq IGFkZCA1MS4uMjYwNCBFQXMgKioKIAotKiogYWRkIDU2Li42MCBFQXMgKioKKyoqIGFkZCA1Ni4u MjYwOCBFQXMgKioKIAotKiogYWRkIDYxLi42NSBFQXMgKioKKyoqIGFkZCA2MS4uMjYxMiBFQXMg KioKIAotKiogYWRkIDY2Li43MCBFQXMgKioKKyoqIGFkZCA2Ni4uMjYxNiBFQXMgKioKIAotKiog YWRkIDcxLi43NSBFQXMgKioKKyoqIGFkZCA3MS4uMjYyMCBFQXMgKioKIAotKiogYWRkIDc2Li44 MCBFQXMgKioKKyoqIGFkZCA3Ni4uMjYyNCBFQXMgKioKIAotKiogYWRkIDgxLi44NSBFQXMgKioK KyoqIGFkZCA4MS4uMjYyOCBFQXMgKioKIAotKiogYWRkIDg2Li45MCBFQXMgKioKKyoqIGFkZCA4 Ni4uMjYzMiBFQXMgKioKIAotKiogYWRkIDkxLi45NSBFQXMgKioKKyoqIGFkZCA5MS4uMjYzNiBF QXMgKioKIAotKiogYWRkIDk2Li4xMDAgRUFzICoqCisqKiBhZGQgOTYuLjI2NDAgRUFzICoqCiBj b3JlLmZvcm1hdCA9IDMgKGJ0cmVlKQogY29yZS5zaXplID0gNDE5NDM1NTIKIGNvcmUuZXh0c2l6 ZSA9IDAKQEAgLTM3NzUsNyArNDY5Miw3IEBACiB1LmJtYnQubnVtcmVjcyA9IDIKIHUuYm1idC5r ZXlzWzEtMl0gPSBbc3RhcnRvZmZdIDE6WzBdIDI6WzQwNjRdCiB1LmJtYnQucHRyc1sxLTJdID0g MTozOTkgMjo4MTQzCi1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQs ZXh0ZW50ZmxhZ10gMDpbMCwxNywxLDBdCithLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2Nr LGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywzMCwwXQogCiAqKiBybSAxLi4xMDAgRUFz ICoqCiAKQEAgLTM3OTQsNTUgKzQ3MTEsNTQgQEAKIGNvcmUuc2l6ZSA9IDQzMjU0MjcyCiBjb3Jl LmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMzMxCi1jb3JlLm5hZXh0ZW50cyA9IDAKK2Nv cmUubmFleHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNvcmUuYWZv cm1hdCA9IDEgKGxvY2FsKQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5sZXZl bCA9IDEKIHUuYm1idC5udW1yZWNzID0gMgogdS5ibWJ0LmtleXNbMS0yXSA9IFtzdGFydG9mZl0g MTpbMF0gMjpbNDA2NF0KIHUuYm1idC5wdHJzWzEtMl0gPSAxOjM5OSAyOjgxNDMKLWEuc2ZhdHRy Lmhkci50b3RzaXplID0gNAotYS5zZmF0dHIuaGRyLmNvdW50ID0gMAorYS5ibXhbMC0xXSA9IFtz dGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxMiwwXSAx OlsxMywzMCwxNywwXQogCi0qKiBhZGQgMS4uNSBFQXMgKioKKyoqIGFkZCAxLi4yNjQ0IEVBcyAq KgogCi0qKiBhZGQgNi4uMTAgRUFzICoqCisqKiBhZGQgNi4uMjY0OCBFQXMgKioKIAotKiogYWRk IDExLi4xNSBFQXMgKioKKyoqIGFkZCAxMS4uMjY1MiBFQXMgKioKIAotKiogYWRkIDE2Li4yMCBF QXMgKioKKyoqIGFkZCAxNi4uMjY1NiBFQXMgKioKIAotKiogYWRkIDIxLi4yNSBFQXMgKioKKyoq IGFkZCAyMS4uMjY2MCBFQXMgKioKIAotKiogYWRkIDI2Li4zMCBFQXMgKioKKyoqIGFkZCAyNi4u MjY2NCBFQXMgKioKIAotKiogYWRkIDMxLi4zNSBFQXMgKioKKyoqIGFkZCAzMS4uMjY2OCBFQXMg KioKIAotKiogYWRkIDM2Li40MCBFQXMgKioKKyoqIGFkZCAzNi4uMjY3MiBFQXMgKioKIAotKiog YWRkIDQxLi40NSBFQXMgKioKKyoqIGFkZCA0MS4uMjY3NiBFQXMgKioKIAotKiogYWRkIDQ2Li41 MCBFQXMgKioKKyoqIGFkZCA0Ni4uMjY4MCBFQXMgKioKIAotKiogYWRkIDUxLi41NSBFQXMgKioK KyoqIGFkZCA1MS4uMjY4NCBFQXMgKioKIAotKiogYWRkIDU2Li42MCBFQXMgKioKKyoqIGFkZCA1 Ni4uMjY4OCBFQXMgKioKIAotKiogYWRkIDYxLi42NSBFQXMgKioKKyoqIGFkZCA2MS4uMjY5MiBF QXMgKioKIAotKiogYWRkIDY2Li43MCBFQXMgKioKKyoqIGFkZCA2Ni4uMjY5NiBFQXMgKioKIAot KiogYWRkIDcxLi43NSBFQXMgKioKKyoqIGFkZCA3MS4uMjcwMCBFQXMgKioKIAotKiogYWRkIDc2 Li44MCBFQXMgKioKKyoqIGFkZCA3Ni4uMjcwNCBFQXMgKioKIAotKiogYWRkIDgxLi44NSBFQXMg KioKKyoqIGFkZCA4MS4uMjcwOCBFQXMgKioKIAotKiogYWRkIDg2Li45MCBFQXMgKioKKyoqIGFk ZCA4Ni4uMjcxMiBFQXMgKioKIAotKiogYWRkIDkxLi45NSBFQXMgKioKKyoqIGFkZCA5MS4uMjcx NiBFQXMgKioKIAotKiogYWRkIDk2Li4xMDAgRUFzICoqCisqKiBhZGQgOTYuLjI3MjAgRUFzICoq CiBjb3JlLmZvcm1hdCA9IDMgKGJ0cmVlKQogY29yZS5zaXplID0gNDMyNTQyNzIKIGNvcmUuZXh0 c2l6ZSA9IDAKQEAgLTM4NTQsNyArNDc3MCw3IEBACiB1LmJtYnQubnVtcmVjcyA9IDIKIHUuYm1i dC5rZXlzWzEtMl0gPSBbc3RhcnRvZmZdIDE6WzBdIDI6WzQwNjRdCiB1LmJtYnQucHRyc1sxLTJd ID0gMTozOTkgMjo4MTQzCi1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291 bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxLDBdCithLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJs b2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywzMSwwXQogCiAqKiBybSAxLi4xMDAg RUFzICoqCiAKQEAgLTM4NzMsNjcgKzQ3ODksNjYgQEAKIGNvcmUuc2l6ZSA9IDQ0NTY0OTkyCiBj b3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMzQxCi1jb3JlLm5hZXh0ZW50cyA9IDAK K2NvcmUubmFleHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNvcmUu YWZvcm1hdCA9IDEgKGxvY2FsKQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5s ZXZlbCA9IDEKIHUuYm1idC5udW1yZWNzID0gMgogdS5ibWJ0LmtleXNbMS0yXSA9IFtzdGFydG9m Zl0gMTpbMF0gMjpbNDA2NF0KIHUuYm1idC5wdHJzWzEtMl0gPSAxOjM5OSAyOjgxNDMKLWEuc2Zh dHRyLmhkci50b3RzaXplID0gNAotYS5zZmF0dHIuaGRyLmNvdW50ID0gMAorYS5ibXhbMC0xXSA9 IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxMiww XSAxOlsxMywzMCwxOCwwXQogCi0qKiBhZGQgMS4uNSBFQXMgKioKKyoqIGFkZCAxLi4yNzI0IEVB cyAqKgogCi0qKiBhZGQgNi4uMTAgRUFzICoqCisqKiBhZGQgNi4uMjcyOCBFQXMgKioKIAotKiog YWRkIDExLi4xNSBFQXMgKioKKyoqIGFkZCAxMS4uMjczMiBFQXMgKioKIAotKiogYWRkIDE2Li4y MCBFQXMgKioKKyoqIGFkZCAxNi4uMjczNiBFQXMgKioKIAotKiogYWRkIDIxLi4yNSBFQXMgKioK KyoqIGFkZCAyMS4uMjc0MCBFQXMgKioKIAotKiogYWRkIDI2Li4zMCBFQXMgKioKKyoqIGFkZCAy Ni4uMjc0NCBFQXMgKioKIAotKiogYWRkIDMxLi4zNSBFQXMgKioKKyoqIGFkZCAzMS4uMjc0OCBF QXMgKioKIAotKiogYWRkIDM2Li40MCBFQXMgKioKKyoqIGFkZCAzNi4uMjc1MiBFQXMgKioKIAot KiogYWRkIDQxLi40NSBFQXMgKioKKyoqIGFkZCA0MS4uMjc1NiBFQXMgKioKIAotKiogYWRkIDQ2 Li41MCBFQXMgKioKKyoqIGFkZCA0Ni4uMjc2MCBFQXMgKioKIAotKiogYWRkIDUxLi41NSBFQXMg KioKKyoqIGFkZCA1MS4uMjc2NCBFQXMgKioKIAotKiogYWRkIDU2Li42MCBFQXMgKioKKyoqIGFk ZCA1Ni4uMjc2OCBFQXMgKioKIAotKiogYWRkIDYxLi42NSBFQXMgKioKKyoqIGFkZCA2MS4uMjc3 MiBFQXMgKioKIAotKiogYWRkIDY2Li43MCBFQXMgKioKKyoqIGFkZCA2Ni4uMjc3NiBFQXMgKioK IAotKiogYWRkIDcxLi43NSBFQXMgKioKKyoqIGFkZCA3MS4uMjc4MCBFQXMgKioKIAotKiogYWRk IDc2Li44MCBFQXMgKioKKyoqIGFkZCA3Ni4uMjc4NCBFQXMgKioKIAotKiogYWRkIDgxLi44NSBF QXMgKioKKyoqIGFkZCA4MS4uMjc4OCBFQXMgKioKIAotKiogYWRkIDg2Li45MCBFQXMgKioKKyoq IGFkZCA4Ni4uMjc5MiBFQXMgKioKIAotKiogYWRkIDkxLi45NSBFQXMgKioKKyoqIGFkZCA5MS4u Mjc5NiBFQXMgKioKIAotKiogYWRkIDk2Li4xMDAgRUFzICoqCisqKiBhZGQgOTYuLjI4MDAgRUFz ICoqCiBjb3JlLmZvcm1hdCA9IDMgKGJ0cmVlKQogY29yZS5zaXplID0gNDQ1NjQ5OTIKIGNvcmUu ZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAzNDEKLWNvcmUubmFleHRlbnRzID0gMQorY29y ZS5uYWV4dGVudHMgPSAyCiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQogY29yZS5hZm9y bWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5sZXZlbCA9IDEKIHUuYm1idC5udW1yZWNzID0gMgog dS5ibWJ0LmtleXNbMS0yXSA9IFtzdGFydG9mZl0gMTpbMF0gMjpbNDA2NF0KIHUuYm1idC5wdHJz WzEtMl0gPSAxOjM5OSAyOjgxNDMKLWEuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxv Y2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDEsMF0KK2EuYm14WzAtMV0gPSBbc3RhcnRvZmYs c3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMzEsMF0gMTpbMzEsNjQs MSwwXQogCiAqKiBybSAxLi4xMDAgRUFzICoqCiAKQEAgLTM5NTIsNjcgKzQ4NjcsNjYgQEAKIGNv cmUuc2l6ZSA9IDQ1ODc1NzEyCiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMzUx Ci1jb3JlLm5hZXh0ZW50cyA9IDAKK2NvcmUubmFleHRlbnRzID0gMwogY29yZS5mb3Jrb2ZmID0g MjQgKDE5MiBieXRlcykKLWNvcmUuYWZvcm1hdCA9IDEgKGxvY2FsKQorY29yZS5hZm9ybWF0ID0g MiAoZXh0ZW50cykKIHUuYm1idC5sZXZlbCA9IDEKIHUuYm1idC5udW1yZWNzID0gMgogdS5ibWJ0 LmtleXNbMS0yXSA9IFtzdGFydG9mZl0gMTpbMF0gMjpbNDA2NF0KIHUuYm1idC5wdHJzWzEtMl0g PSAxOjM5OSAyOjgxNDMKLWEuc2ZhdHRyLmhkci50b3RzaXplID0gNAotYS5zZmF0dHIuaGRyLmNv dW50ID0gMAorYS5ibXhbMC0yXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0 ZW50ZmxhZ10gMDpbMCwxNywxMiwwXSAxOlsxMywzMCwxOCwwXSAyOlszMSw2NCwxLDBdCiAKLSoq IGFkZCAxLi41IEVBcyAqKgorKiogYWRkIDEuLjI4MDQgRUFzICoqCiAKLSoqIGFkZCA2Li4xMCBF QXMgKioKKyoqIGFkZCA2Li4yODA4IEVBcyAqKgogCi0qKiBhZGQgMTEuLjE1IEVBcyAqKgorKiog YWRkIDExLi4yODEyIEVBcyAqKgogCi0qKiBhZGQgMTYuLjIwIEVBcyAqKgorKiogYWRkIDE2Li4y ODE2IEVBcyAqKgogCi0qKiBhZGQgMjEuLjI1IEVBcyAqKgorKiogYWRkIDIxLi4yODIwIEVBcyAq KgogCi0qKiBhZGQgMjYuLjMwIEVBcyAqKgorKiogYWRkIDI2Li4yODI0IEVBcyAqKgogCi0qKiBh ZGQgMzEuLjM1IEVBcyAqKgorKiogYWRkIDMxLi4yODI4IEVBcyAqKgogCi0qKiBhZGQgMzYuLjQw IEVBcyAqKgorKiogYWRkIDM2Li4yODMyIEVBcyAqKgogCi0qKiBhZGQgNDEuLjQ1IEVBcyAqKgor KiogYWRkIDQxLi4yODM2IEVBcyAqKgogCi0qKiBhZGQgNDYuLjUwIEVBcyAqKgorKiogYWRkIDQ2 Li4yODQwIEVBcyAqKgogCi0qKiBhZGQgNTEuLjU1IEVBcyAqKgorKiogYWRkIDUxLi4yODQ0IEVB cyAqKgogCi0qKiBhZGQgNTYuLjYwIEVBcyAqKgorKiogYWRkIDU2Li4yODQ4IEVBcyAqKgogCi0q KiBhZGQgNjEuLjY1IEVBcyAqKgorKiogYWRkIDYxLi4yODUyIEVBcyAqKgogCi0qKiBhZGQgNjYu LjcwIEVBcyAqKgorKiogYWRkIDY2Li4yODU2IEVBcyAqKgogCi0qKiBhZGQgNzEuLjc1IEVBcyAq KgorKiogYWRkIDcxLi4yODYwIEVBcyAqKgogCi0qKiBhZGQgNzYuLjgwIEVBcyAqKgorKiogYWRk IDc2Li4yODY0IEVBcyAqKgogCi0qKiBhZGQgODEuLjg1IEVBcyAqKgorKiogYWRkIDgxLi4yODY4 IEVBcyAqKgogCi0qKiBhZGQgODYuLjkwIEVBcyAqKgorKiogYWRkIDg2Li4yODcyIEVBcyAqKgog Ci0qKiBhZGQgOTEuLjk1IEVBcyAqKgorKiogYWRkIDkxLi4yODc2IEVBcyAqKgogCi0qKiBhZGQg OTYuLjEwMCBFQXMgKioKKyoqIGFkZCA5Ni4uMjg4MCBFQXMgKioKIGNvcmUuZm9ybWF0ID0gMyAo YnRyZWUpCiBjb3JlLnNpemUgPSA0NTg3NTcxMgogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0 ZW50cyA9IDM1MQotY29yZS5uYWV4dGVudHMgPSAxCitjb3JlLm5hZXh0ZW50cyA9IDIKIGNvcmUu Zm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCiBjb3JlLmFmb3JtYXQgPSAyIChleHRlbnRzKQogdS5i bWJ0LmxldmVsID0gMQogdS5ibWJ0Lm51bXJlY3MgPSAyCiB1LmJtYnQua2V5c1sxLTJdID0gW3N0 YXJ0b2ZmXSAxOlswXSAyOls0MDY0XQogdS5ibWJ0LnB0cnNbMS0yXSA9IDE6Mzk5IDI6ODE0Mwot YS5ibXhbMF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6 WzAsMTcsMSwwXQorYS5ibXhbMC0xXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQs ZXh0ZW50ZmxhZ10gMDpbMCwxNywzMSwwXSAxOlszMSw2NCwyLDBdCiAKICoqIHJtIDEuLjEwMCBF QXMgKioKIApAQCAtNDAzMSw2NyArNDk0NSw2NiBAQAogY29yZS5zaXplID0gNDcxODY0MzIKIGNv cmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAzNjEKLWNvcmUubmFleHRlbnRzID0gMAor Y29yZS5uYWV4dGVudHMgPSAzCiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQotY29yZS5h Zm9ybWF0ID0gMSAobG9jYWwpCitjb3JlLmFmb3JtYXQgPSAyIChleHRlbnRzKQogdS5ibWJ0Lmxl dmVsID0gMQogdS5ibWJ0Lm51bXJlY3MgPSAyCiB1LmJtYnQua2V5c1sxLTJdID0gW3N0YXJ0b2Zm XSAxOlswXSAyOls0MDY0XQogdS5ibWJ0LnB0cnNbMS0yXSA9IDE6Mzk5IDI6ODE0MwotYS5zZmF0 dHIuaGRyLnRvdHNpemUgPSA0Ci1hLnNmYXR0ci5oZHIuY291bnQgPSAwCithLmJteFswLTJdID0g W3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDEyLDBd IDE6WzEzLDMwLDE4LDBdIDI6WzMxLDY0LDIsMF0KIAotKiogYWRkIDEuLjUgRUFzICoqCisqKiBh ZGQgMS4uMjg4NCBFQXMgKioKIAotKiogYWRkIDYuLjEwIEVBcyAqKgorKiogYWRkIDYuLjI4ODgg RUFzICoqCiAKLSoqIGFkZCAxMS4uMTUgRUFzICoqCisqKiBhZGQgMTEuLjI4OTIgRUFzICoqCiAK LSoqIGFkZCAxNi4uMjAgRUFzICoqCisqKiBhZGQgMTYuLjI4OTYgRUFzICoqCiAKLSoqIGFkZCAy MS4uMjUgRUFzICoqCisqKiBhZGQgMjEuLjI5MDAgRUFzICoqCiAKLSoqIGFkZCAyNi4uMzAgRUFz ICoqCisqKiBhZGQgMjYuLjI5MDQgRUFzICoqCiAKLSoqIGFkZCAzMS4uMzUgRUFzICoqCisqKiBh ZGQgMzEuLjI5MDggRUFzICoqCiAKLSoqIGFkZCAzNi4uNDAgRUFzICoqCisqKiBhZGQgMzYuLjI5 MTIgRUFzICoqCiAKLSoqIGFkZCA0MS4uNDUgRUFzICoqCisqKiBhZGQgNDEuLjI5MTYgRUFzICoq CiAKLSoqIGFkZCA0Ni4uNTAgRUFzICoqCisqKiBhZGQgNDYuLjI5MjAgRUFzICoqCiAKLSoqIGFk ZCA1MS4uNTUgRUFzICoqCisqKiBhZGQgNTEuLjI5MjQgRUFzICoqCiAKLSoqIGFkZCA1Ni4uNjAg RUFzICoqCisqKiBhZGQgNTYuLjI5MjggRUFzICoqCiAKLSoqIGFkZCA2MS4uNjUgRUFzICoqCisq KiBhZGQgNjEuLjI5MzIgRUFzICoqCiAKLSoqIGFkZCA2Ni4uNzAgRUFzICoqCisqKiBhZGQgNjYu LjI5MzYgRUFzICoqCiAKLSoqIGFkZCA3MS4uNzUgRUFzICoqCisqKiBhZGQgNzEuLjI5NDAgRUFz ICoqCiAKLSoqIGFkZCA3Ni4uODAgRUFzICoqCisqKiBhZGQgNzYuLjI5NDQgRUFzICoqCiAKLSoq IGFkZCA4MS4uODUgRUFzICoqCisqKiBhZGQgODEuLjI5NDggRUFzICoqCiAKLSoqIGFkZCA4Ni4u OTAgRUFzICoqCisqKiBhZGQgODYuLjI5NTIgRUFzICoqCiAKLSoqIGFkZCA5MS4uOTUgRUFzICoq CisqKiBhZGQgOTEuLjI5NTYgRUFzICoqCiAKLSoqIGFkZCA5Ni4uMTAwIEVBcyAqKgorKiogYWRk IDk2Li4yOTYwIEVBcyAqKgogY29yZS5mb3JtYXQgPSAzIChidHJlZSkKIGNvcmUuc2l6ZSA9IDQ3 MTg2NDMyCiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMzYxCi1jb3JlLm5hZXh0 ZW50cyA9IDEKK2NvcmUubmFleHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRl cykKIGNvcmUuYWZvcm1hdCA9IDIgKGV4dGVudHMpCiB1LmJtYnQubGV2ZWwgPSAxCiB1LmJtYnQu bnVtcmVjcyA9IDIKIHUuYm1idC5rZXlzWzEtMl0gPSBbc3RhcnRvZmZdIDE6WzBdIDI6WzQwNjRd CiB1LmJtYnQucHRyc1sxLTJdID0gMTozOTkgMjo4MTQzCi1hLmJteFswXSA9IFtzdGFydG9mZixz dGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxLDBdCithLmJteFswLTFd ID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDMx LDBdIDE6WzMxLDY0LDIsMF0KIAogKiogcm0gMS4uMTAwIEVBcyAqKgogCkBAIC00MTEwLDY3ICs1 MDIzLDY2IEBACiBjb3JlLnNpemUgPSA0ODQ5NzE1MgogY29yZS5leHRzaXplID0gMAogY29yZS5u ZXh0ZW50cyA9IDM3MQotY29yZS5uYWV4dGVudHMgPSAwCitjb3JlLm5hZXh0ZW50cyA9IDMKIGNv cmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCi1jb3JlLmFmb3JtYXQgPSAxIChsb2NhbCkKK2Nv cmUuYWZvcm1hdCA9IDIgKGV4dGVudHMpCiB1LmJtYnQubGV2ZWwgPSAxCiB1LmJtYnQubnVtcmVj cyA9IDIKIHUuYm1idC5rZXlzWzEtMl0gPSBbc3RhcnRvZmZdIDE6WzBdIDI6WzQwNjRdCiB1LmJt YnQucHRyc1sxLTJdID0gMTozOTkgMjo4MTQzCi1hLnNmYXR0ci5oZHIudG90c2l6ZSA9IDQKLWEu c2ZhdHRyLmhkci5jb3VudCA9IDAKK2EuYm14WzAtMl0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxi bG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMTIsMF0gMTpbMTMsMzAsMTgsMF0gMjpbMzEs NjQsMiwwXQogCi0qKiBhZGQgMS4uNSBFQXMgKioKKyoqIGFkZCAxLi4yOTY0IEVBcyAqKgogCi0q KiBhZGQgNi4uMTAgRUFzICoqCisqKiBhZGQgNi4uMjk2OCBFQXMgKioKIAotKiogYWRkIDExLi4x NSBFQXMgKioKKyoqIGFkZCAxMS4uMjk3MiBFQXMgKioKIAotKiogYWRkIDE2Li4yMCBFQXMgKioK KyoqIGFkZCAxNi4uMjk3NiBFQXMgKioKIAotKiogYWRkIDIxLi4yNSBFQXMgKioKKyoqIGFkZCAy MS4uMjk4MCBFQXMgKioKIAotKiogYWRkIDI2Li4zMCBFQXMgKioKKyoqIGFkZCAyNi4uMjk4NCBF QXMgKioKIAotKiogYWRkIDMxLi4zNSBFQXMgKioKKyoqIGFkZCAzMS4uMjk4OCBFQXMgKioKIAot KiogYWRkIDM2Li40MCBFQXMgKioKKyoqIGFkZCAzNi4uMjk5MiBFQXMgKioKIAotKiogYWRkIDQx Li40NSBFQXMgKioKKyoqIGFkZCA0MS4uMjk5NiBFQXMgKioKIAotKiogYWRkIDQ2Li41MCBFQXMg KioKKyoqIGFkZCA0Ni4uMzAwMCBFQXMgKioKIAotKiogYWRkIDUxLi41NSBFQXMgKioKKyoqIGFk ZCA1MS4uMzAwNCBFQXMgKioKIAotKiogYWRkIDU2Li42MCBFQXMgKioKKyoqIGFkZCA1Ni4uMzAw OCBFQXMgKioKIAotKiogYWRkIDYxLi42NSBFQXMgKioKKyoqIGFkZCA2MS4uMzAxMiBFQXMgKioK IAotKiogYWRkIDY2Li43MCBFQXMgKioKKyoqIGFkZCA2Ni4uMzAxNiBFQXMgKioKIAotKiogYWRk IDcxLi43NSBFQXMgKioKKyoqIGFkZCA3MS4uMzAyMCBFQXMgKioKIAotKiogYWRkIDc2Li44MCBF QXMgKioKKyoqIGFkZCA3Ni4uMzAyNCBFQXMgKioKIAotKiogYWRkIDgxLi44NSBFQXMgKioKKyoq IGFkZCA4MS4uMzAyOCBFQXMgKioKIAotKiogYWRkIDg2Li45MCBFQXMgKioKKyoqIGFkZCA4Ni4u MzAzMiBFQXMgKioKIAotKiogYWRkIDkxLi45NSBFQXMgKioKKyoqIGFkZCA5MS4uMzAzNiBFQXMg KioKIAotKiogYWRkIDk2Li4xMDAgRUFzICoqCisqKiBhZGQgOTYuLjMwNDAgRUFzICoqCiBjb3Jl LmZvcm1hdCA9IDMgKGJ0cmVlKQogY29yZS5zaXplID0gNDg0OTcxNTIKIGNvcmUuZXh0c2l6ZSA9 IDAKIGNvcmUubmV4dGVudHMgPSAzNzEKLWNvcmUubmFleHRlbnRzID0gMQorY29yZS5uYWV4dGVu dHMgPSAyCiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMiAo ZXh0ZW50cykKIHUuYm1idC5sZXZlbCA9IDEKIHUuYm1idC5udW1yZWNzID0gMgogdS5ibWJ0Lmtl eXNbMS0yXSA9IFtzdGFydG9mZl0gMTpbMF0gMjpbNDA2NF0KIHUuYm1idC5wdHJzWzEtMl0gPSAx OjM5OSAyOjgxNDMKLWEuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxl eHRlbnRmbGFnXSAwOlswLDE3LDEsMF0KK2EuYm14WzAtMV0gPSBbc3RhcnRvZmYsc3RhcnRibG9j ayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMzEsMF0gMTpbMzEsNjQsMywwXQogCiAq KiBybSAxLi4xMDAgRUFzICoqCiAKQEAgLTQxODksNjcgKzUxMDEsNjYgQEAKIGNvcmUuc2l6ZSA9 IDQ5ODA3ODcyCiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMzgxCi1jb3JlLm5h ZXh0ZW50cyA9IDAKK2NvcmUubmFleHRlbnRzID0gMwogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBi eXRlcykKLWNvcmUuYWZvcm1hdCA9IDEgKGxvY2FsKQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50 cykKIHUuYm1idC5sZXZlbCA9IDEKIHUuYm1idC5udW1yZWNzID0gMgogdS5ibWJ0LmtleXNbMS0y XSA9IFtzdGFydG9mZl0gMTpbMF0gMjpbNDA2NF0KIHUuYm1idC5wdHJzWzEtMl0gPSAxOjM5OSAy OjgxNDMKLWEuc2ZhdHRyLmhkci50b3RzaXplID0gNAotYS5zZmF0dHIuaGRyLmNvdW50ID0gMAor YS5ibXhbMC0yXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10g MDpbMCwxNywxMiwwXSAxOlsxMywzMCwxOCwwXSAyOlszMSw2NCwzLDBdCiAKLSoqIGFkZCAxLi41 IEVBcyAqKgorKiogYWRkIDEuLjMwNDQgRUFzICoqCiAKLSoqIGFkZCA2Li4xMCBFQXMgKioKKyoq IGFkZCA2Li4zMDQ4IEVBcyAqKgogCi0qKiBhZGQgMTEuLjE1IEVBcyAqKgorKiogYWRkIDExLi4z MDUyIEVBcyAqKgogCi0qKiBhZGQgMTYuLjIwIEVBcyAqKgorKiogYWRkIDE2Li4zMDU2IEVBcyAq KgogCi0qKiBhZGQgMjEuLjI1IEVBcyAqKgorKiogYWRkIDIxLi4zMDYwIEVBcyAqKgogCi0qKiBh ZGQgMjYuLjMwIEVBcyAqKgorKiogYWRkIDI2Li4zMDY0IEVBcyAqKgogCi0qKiBhZGQgMzEuLjM1 IEVBcyAqKgorKiogYWRkIDMxLi4zMDY4IEVBcyAqKgogCi0qKiBhZGQgMzYuLjQwIEVBcyAqKgor KiogYWRkIDM2Li4zMDcyIEVBcyAqKgogCi0qKiBhZGQgNDEuLjQ1IEVBcyAqKgorKiogYWRkIDQx Li4zMDc2IEVBcyAqKgogCi0qKiBhZGQgNDYuLjUwIEVBcyAqKgorKiogYWRkIDQ2Li4zMDgwIEVB cyAqKgogCi0qKiBhZGQgNTEuLjU1IEVBcyAqKgorKiogYWRkIDUxLi4zMDg0IEVBcyAqKgogCi0q KiBhZGQgNTYuLjYwIEVBcyAqKgorKiogYWRkIDU2Li4zMDg4IEVBcyAqKgogCi0qKiBhZGQgNjEu LjY1IEVBcyAqKgorKiogYWRkIDYxLi4zMDkyIEVBcyAqKgogCi0qKiBhZGQgNjYuLjcwIEVBcyAq KgorKiogYWRkIDY2Li4zMDk2IEVBcyAqKgogCi0qKiBhZGQgNzEuLjc1IEVBcyAqKgorKiogYWRk IDcxLi4zMTAwIEVBcyAqKgogCi0qKiBhZGQgNzYuLjgwIEVBcyAqKgorKiogYWRkIDc2Li4zMTA0 IEVBcyAqKgogCi0qKiBhZGQgODEuLjg1IEVBcyAqKgorKiogYWRkIDgxLi4zMTA4IEVBcyAqKgog Ci0qKiBhZGQgODYuLjkwIEVBcyAqKgorKiogYWRkIDg2Li4zMTEyIEVBcyAqKgogCi0qKiBhZGQg OTEuLjk1IEVBcyAqKgorKiogYWRkIDkxLi4zMTE2IEVBcyAqKgogCi0qKiBhZGQgOTYuLjEwMCBF QXMgKioKKyoqIGFkZCA5Ni4uMzEyMCBFQXMgKioKIGNvcmUuZm9ybWF0ID0gMyAoYnRyZWUpCiBj b3JlLnNpemUgPSA0OTgwNzg3MgogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDM4 MQotY29yZS5uYWV4dGVudHMgPSAxCitjb3JlLm5hZXh0ZW50cyA9IDIKIGNvcmUuZm9ya29mZiA9 IDI0ICgxOTIgYnl0ZXMpCiBjb3JlLmFmb3JtYXQgPSAyIChleHRlbnRzKQogdS5ibWJ0LmxldmVs ID0gMQogdS5ibWJ0Lm51bXJlY3MgPSAyCiB1LmJtYnQua2V5c1sxLTJdID0gW3N0YXJ0b2ZmXSAx OlswXSAyOls0MDY0XQogdS5ibWJ0LnB0cnNbMS0yXSA9IDE6Mzk5IDI6ODE0MwotYS5ibXhbMF0g PSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMSww XQorYS5ibXhbMC0xXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50Zmxh Z10gMDpbMCwxNywzMSwwXSAxOlszMSw2NCw0LDBdCiAKICoqIHJtIDEuLjEwMCBFQXMgKioKIApA QCAtNDI2OCw2NyArNTE3OSw2NiBAQAogY29yZS5zaXplID0gNTExMTg1OTIKIGNvcmUuZXh0c2l6 ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAzOTEKLWNvcmUubmFleHRlbnRzID0gMAorY29yZS5uYWV4 dGVudHMgPSAzCiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQotY29yZS5hZm9ybWF0ID0g MSAobG9jYWwpCitjb3JlLmFmb3JtYXQgPSAyIChleHRlbnRzKQogdS5ibWJ0LmxldmVsID0gMQog dS5ibWJ0Lm51bXJlY3MgPSAyCiB1LmJtYnQua2V5c1sxLTJdID0gW3N0YXJ0b2ZmXSAxOlswXSAy Ols0Mzg0XQogdS5ibWJ0LnB0cnNbMS0yXSA9IDE6Mzk5IDI6ODE0MwotYS5zZmF0dHIuaGRyLnRv dHNpemUgPSA0Ci1hLnNmYXR0ci5oZHIuY291bnQgPSAwCithLmJteFswLTJdID0gW3N0YXJ0b2Zm LHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDEyLDBdIDE6WzEzLDMw LDE4LDBdIDI6WzMxLDY0LDQsMF0KIAotKiogYWRkIDEuLjUgRUFzICoqCisqKiBhZGQgMS4uMzEy NCBFQXMgKioKIAotKiogYWRkIDYuLjEwIEVBcyAqKgorKiogYWRkIDYuLjMxMjggRUFzICoqCiAK LSoqIGFkZCAxMS4uMTUgRUFzICoqCisqKiBhZGQgMTEuLjMxMzIgRUFzICoqCiAKLSoqIGFkZCAx Ni4uMjAgRUFzICoqCisqKiBhZGQgMTYuLjMxMzYgRUFzICoqCiAKLSoqIGFkZCAyMS4uMjUgRUFz ICoqCisqKiBhZGQgMjEuLjMxNDAgRUFzICoqCiAKLSoqIGFkZCAyNi4uMzAgRUFzICoqCisqKiBh ZGQgMjYuLjMxNDQgRUFzICoqCiAKLSoqIGFkZCAzMS4uMzUgRUFzICoqCisqKiBhZGQgMzEuLjMx NDggRUFzICoqCiAKLSoqIGFkZCAzNi4uNDAgRUFzICoqCisqKiBhZGQgMzYuLjMxNTIgRUFzICoq CiAKLSoqIGFkZCA0MS4uNDUgRUFzICoqCisqKiBhZGQgNDEuLjMxNTYgRUFzICoqCiAKLSoqIGFk ZCA0Ni4uNTAgRUFzICoqCisqKiBhZGQgNDYuLjMxNjAgRUFzICoqCiAKLSoqIGFkZCA1MS4uNTUg RUFzICoqCisqKiBhZGQgNTEuLjMxNjQgRUFzICoqCiAKLSoqIGFkZCA1Ni4uNjAgRUFzICoqCisq KiBhZGQgNTYuLjMxNjggRUFzICoqCiAKLSoqIGFkZCA2MS4uNjUgRUFzICoqCisqKiBhZGQgNjEu LjMxNzIgRUFzICoqCiAKLSoqIGFkZCA2Ni4uNzAgRUFzICoqCisqKiBhZGQgNjYuLjMxNzYgRUFz ICoqCiAKLSoqIGFkZCA3MS4uNzUgRUFzICoqCisqKiBhZGQgNzEuLjMxODAgRUFzICoqCiAKLSoq IGFkZCA3Ni4uODAgRUFzICoqCisqKiBhZGQgNzYuLjMxODQgRUFzICoqCiAKLSoqIGFkZCA4MS4u ODUgRUFzICoqCisqKiBhZGQgODEuLjMxODggRUFzICoqCiAKLSoqIGFkZCA4Ni4uOTAgRUFzICoq CisqKiBhZGQgODYuLjMxOTIgRUFzICoqCiAKLSoqIGFkZCA5MS4uOTUgRUFzICoqCisqKiBhZGQg OTEuLjMxOTYgRUFzICoqCiAKLSoqIGFkZCA5Ni4uMTAwIEVBcyAqKgorKiogYWRkIDk2Li4zMjAw IEVBcyAqKgogY29yZS5mb3JtYXQgPSAzIChidHJlZSkKIGNvcmUuc2l6ZSA9IDUxMTE4NTkyCiBj b3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMzkxCi1jb3JlLm5hZXh0ZW50cyA9IDEK K2NvcmUubmFleHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKIGNvcmUu YWZvcm1hdCA9IDIgKGV4dGVudHMpCiB1LmJtYnQubGV2ZWwgPSAxCiB1LmJtYnQubnVtcmVjcyA9 IDIKIHUuYm1idC5rZXlzWzEtMl0gPSBbc3RhcnRvZmZdIDE6WzBdIDI6WzQzODRdCiB1LmJtYnQu cHRyc1sxLTJdID0gMTozOTkgMjo4MTQzCi1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2Nr LGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywxLDBdCithLmJteFswLTFdID0gW3N0YXJ0 b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDMxLDBdIDE6WzMx LDY0LDUsMF0KIAogKiogcm0gMS4uMTAwIEVBcyAqKgogCkBAIC00MzQwLDUxICs1MjUwLDIwIEBA CiBGaWxlcyBUTVAudTIgYW5kIFRNUC51MyBhcmUgaWRlbnRpY2FsCiAKIAotKiogYWRkIDEuLjUg RUFzICoqCisqKiBhZGQgMS4uMzIwNCBFQXMgKioKIC0tLSBFQXM6IDEgLS0tCiBjb3JlLmZvcm1h dCA9IDMgKGJ0cmVlKQogY29yZS5zaXplID0gNTExMTg1OTIKIGNvcmUuZXh0c2l6ZSA9IDAKIGNv cmUubmV4dGVudHMgPSAzOTEKLWNvcmUubmFleHRlbnRzID0gMAorY29yZS5uYWV4dGVudHMgPSAy CiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQotY29yZS5hZm9ybWF0ID0gMSAobG9jYWwp Citjb3JlLmFmb3JtYXQgPSAyIChleHRlbnRzKQogdS5ibWJ0LmxldmVsID0gMQogdS5ibWJ0Lm51 bXJlY3MgPSAyCiB1LmJtYnQua2V5c1sxLTJdID0gW3N0YXJ0b2ZmXSAxOlswXSAyOls0Mzg0XQog dS5ibWJ0LnB0cnNbMS0yXSA9IDE6Mzk5IDI6ODE0MwotYS5zZmF0dHIuaGRyLnRvdHNpemUgPSA3 NAotYS5zZmF0dHIuaGRyLmNvdW50ID0gNQotYS5zZmF0dHIubGlzdFswXS5uYW1lbGVuID0gNgot YS5zZmF0dHIubGlzdFswXS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRyLmxpc3RbMF0ucm9vdCA9IDAK LWEuc2ZhdHRyLmxpc3RbMF0uc2VjdXJlID0gMAotYS5zZmF0dHIubGlzdFswXS5uYW1lID0gIm5h bWUuMSIKLWEuc2ZhdHRyLmxpc3RbMF0udmFsdWUgPSAidmFsdWUiCi1hLnNmYXR0ci5saXN0WzFd Lm5hbWVsZW4gPSA2Ci1hLnNmYXR0ci5saXN0WzFdLnZhbHVlbGVuID0gNQotYS5zZmF0dHIubGlz dFsxXS5yb290ID0gMAotYS5zZmF0dHIubGlzdFsxXS5zZWN1cmUgPSAwCi1hLnNmYXR0ci5saXN0 WzFdLm5hbWUgPSAibmFtZS4yIgotYS5zZmF0dHIubGlzdFsxXS52YWx1ZSA9ICJ2YWx1ZSIKLWEu c2ZhdHRyLmxpc3RbMl0ubmFtZWxlbiA9IDYKLWEuc2ZhdHRyLmxpc3RbMl0udmFsdWVsZW4gPSA1 Ci1hLnNmYXR0ci5saXN0WzJdLnJvb3QgPSAwCi1hLnNmYXR0ci5saXN0WzJdLnNlY3VyZSA9IDAK LWEuc2ZhdHRyLmxpc3RbMl0ubmFtZSA9ICJuYW1lLjMiCi1hLnNmYXR0ci5saXN0WzJdLnZhbHVl ID0gInZhbHVlIgotYS5zZmF0dHIubGlzdFszXS5uYW1lbGVuID0gNgotYS5zZmF0dHIubGlzdFsz XS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRyLmxpc3RbM10ucm9vdCA9IDAKLWEuc2ZhdHRyLmxpc3Rb M10uc2VjdXJlID0gMAotYS5zZmF0dHIubGlzdFszXS5uYW1lID0gIm5hbWUuNCIKLWEuc2ZhdHRy Lmxpc3RbM10udmFsdWUgPSAidmFsdWUiCi1hLnNmYXR0ci5saXN0WzRdLm5hbWVsZW4gPSA2Ci1h LnNmYXR0ci5saXN0WzRdLnZhbHVlbGVuID0gNQotYS5zZmF0dHIubGlzdFs0XS5yb290ID0gMAot YS5zZmF0dHIubGlzdFs0XS5zZWN1cmUgPSAwCi1hLnNmYXR0ci5saXN0WzRdLm5hbWUgPSAibmFt ZS41IgotYS5zZmF0dHIubGlzdFs0XS52YWx1ZSA9ICJ2YWx1ZSIKK2EuYm14WzAtMV0gPSBbc3Rh cnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMzEsMF0gMTpb MzEsNjQsNSwwXQogCiAqKiAxIGV4dGVudHMgKioKIHRydW5jYXRpbmcgYmFjayB0byAxMzEwNzIK QEAgLTQ1MTIsNDUgKzUzOTEsMTQgQEAKIGNvcmUuc2l6ZSA9IDUxMTE4NTkyCiBjb3JlLmV4dHNp emUgPSAwCiBjb3JlLm5leHRlbnRzID0gMzkxCi1jb3JlLm5hZXh0ZW50cyA9IDAKK2NvcmUubmFl eHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKLWNvcmUuYWZvcm1hdCA9 IDEgKGxvY2FsKQorY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5sZXZlbCA9IDEK IHUuYm1idC5udW1yZWNzID0gMgogdS5ibWJ0LmtleXNbMS0yXSA9IFtzdGFydG9mZl0gMTpbMF0g MjpbNDM4NF0KIHUuYm1idC5wdHJzWzEtMl0gPSAxOjM5OSAyOjgxNDMKLWEuc2ZhdHRyLmhkci50 b3RzaXplID0gNzQKLWEuc2ZhdHRyLmhkci5jb3VudCA9IDUKLWEuc2ZhdHRyLmxpc3RbMF0ubmFt ZWxlbiA9IDYKLWEuc2ZhdHRyLmxpc3RbMF0udmFsdWVsZW4gPSA1Ci1hLnNmYXR0ci5saXN0WzBd LnJvb3QgPSAwCi1hLnNmYXR0ci5saXN0WzBdLnNlY3VyZSA9IDAKLWEuc2ZhdHRyLmxpc3RbMF0u bmFtZSA9ICJuYW1lLjEiCi1hLnNmYXR0ci5saXN0WzBdLnZhbHVlID0gInZhbHVlIgotYS5zZmF0 dHIubGlzdFsxXS5uYW1lbGVuID0gNgotYS5zZmF0dHIubGlzdFsxXS52YWx1ZWxlbiA9IDUKLWEu c2ZhdHRyLmxpc3RbMV0ucm9vdCA9IDAKLWEuc2ZhdHRyLmxpc3RbMV0uc2VjdXJlID0gMAotYS5z ZmF0dHIubGlzdFsxXS5uYW1lID0gIm5hbWUuMiIKLWEuc2ZhdHRyLmxpc3RbMV0udmFsdWUgPSAi dmFsdWUiCi1hLnNmYXR0ci5saXN0WzJdLm5hbWVsZW4gPSA2Ci1hLnNmYXR0ci5saXN0WzJdLnZh bHVlbGVuID0gNQotYS5zZmF0dHIubGlzdFsyXS5yb290ID0gMAotYS5zZmF0dHIubGlzdFsyXS5z ZWN1cmUgPSAwCi1hLnNmYXR0ci5saXN0WzJdLm5hbWUgPSAibmFtZS4zIgotYS5zZmF0dHIubGlz dFsyXS52YWx1ZSA9ICJ2YWx1ZSIKLWEuc2ZhdHRyLmxpc3RbM10ubmFtZWxlbiA9IDYKLWEuc2Zh dHRyLmxpc3RbM10udmFsdWVsZW4gPSA1Ci1hLnNmYXR0ci5saXN0WzNdLnJvb3QgPSAwCi1hLnNm YXR0ci5saXN0WzNdLnNlY3VyZSA9IDAKLWEuc2ZhdHRyLmxpc3RbM10ubmFtZSA9ICJuYW1lLjQi Ci1hLnNmYXR0ci5saXN0WzNdLnZhbHVlID0gInZhbHVlIgotYS5zZmF0dHIubGlzdFs0XS5uYW1l bGVuID0gNgotYS5zZmF0dHIubGlzdFs0XS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRyLmxpc3RbNF0u cm9vdCA9IDAKLWEuc2ZhdHRyLmxpc3RbNF0uc2VjdXJlID0gMAotYS5zZmF0dHIubGlzdFs0XS5u YW1lID0gIm5hbWUuNSIKLWEuc2ZhdHRyLmxpc3RbNF0udmFsdWUgPSAidmFsdWUiCithLmJteFsw LTFdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3 LDMxLDBdIDE6WzMxLDY0LDUsMF0KIAogKioqIEVBIGRpZmZlcmVuY2VzIGJlZm9yZSBhbmQgYWZ0 ZXIgZXh0ZW50cyBhZGRlZCAqKioKIEZpbGVzIFRNUC5hMSBhbmQgVE1QLmEyIGFyZSBpZGVudGlj YWwKQEAgLTQ1NjAsNzcgKzU0MDgsMTYgQEAKIEZpbGVzIFRNUC5hMiBhbmQgVE1QLmEzIGFyZSBp ZGVudGljYWwKIAogCi0qKiBhZGQgNi4uMTAgRUFzICoqCisqKiBhZGQgNi4uMzIwOCBFQXMgKioK IC0tLSBFQXM6IDYgLS0tCiBjb3JlLmZvcm1hdCA9IDIgKGV4dGVudHMpCiBjb3JlLnNpemUgPSAw CiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMAotY29yZS5uYWV4dGVudHMgPSAw Citjb3JlLm5hZXh0ZW50cyA9IDIKIGNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCi1jb3Jl LmFmb3JtYXQgPSAxIChsb2NhbCkKLWEuc2ZhdHRyLmhkci50b3RzaXplID0gMTQ1Ci1hLnNmYXR0 ci5oZHIuY291bnQgPSAxMAotYS5zZmF0dHIubGlzdFswXS5uYW1lbGVuID0gNgotYS5zZmF0dHIu bGlzdFswXS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRyLmxpc3RbMF0ucm9vdCA9IDAKLWEuc2ZhdHRy Lmxpc3RbMF0uc2VjdXJlID0gMAotYS5zZmF0dHIubGlzdFswXS5uYW1lID0gIm5hbWUuMSIKLWEu c2ZhdHRyLmxpc3RbMF0udmFsdWUgPSAidmFsdWUiCi1hLnNmYXR0ci5saXN0WzFdLm5hbWVsZW4g PSA2Ci1hLnNmYXR0ci5saXN0WzFdLnZhbHVlbGVuID0gNQotYS5zZmF0dHIubGlzdFsxXS5yb290 ID0gMAotYS5zZmF0dHIubGlzdFsxXS5zZWN1cmUgPSAwCi1hLnNmYXR0ci5saXN0WzFdLm5hbWUg PSAibmFtZS4yIgotYS5zZmF0dHIubGlzdFsxXS52YWx1ZSA9ICJ2YWx1ZSIKLWEuc2ZhdHRyLmxp c3RbMl0ubmFtZWxlbiA9IDYKLWEuc2ZhdHRyLmxpc3RbMl0udmFsdWVsZW4gPSA1Ci1hLnNmYXR0 ci5saXN0WzJdLnJvb3QgPSAwCi1hLnNmYXR0ci5saXN0WzJdLnNlY3VyZSA9IDAKLWEuc2ZhdHRy Lmxpc3RbMl0ubmFtZSA9ICJuYW1lLjMiCi1hLnNmYXR0ci5saXN0WzJdLnZhbHVlID0gInZhbHVl IgotYS5zZmF0dHIubGlzdFszXS5uYW1lbGVuID0gNgotYS5zZmF0dHIubGlzdFszXS52YWx1ZWxl biA9IDUKLWEuc2ZhdHRyLmxpc3RbM10ucm9vdCA9IDAKLWEuc2ZhdHRyLmxpc3RbM10uc2VjdXJl ID0gMAotYS5zZmF0dHIubGlzdFszXS5uYW1lID0gIm5hbWUuNCIKLWEuc2ZhdHRyLmxpc3RbM10u dmFsdWUgPSAidmFsdWUiCi1hLnNmYXR0ci5saXN0WzRdLm5hbWVsZW4gPSA2Ci1hLnNmYXR0ci5s aXN0WzRdLnZhbHVlbGVuID0gNQotYS5zZmF0dHIubGlzdFs0XS5yb290ID0gMAotYS5zZmF0dHIu bGlzdFs0XS5zZWN1cmUgPSAwCi1hLnNmYXR0ci5saXN0WzRdLm5hbWUgPSAibmFtZS41IgotYS5z ZmF0dHIubGlzdFs0XS52YWx1ZSA9ICJ2YWx1ZSIKLWEuc2ZhdHRyLmxpc3RbNV0ubmFtZWxlbiA9 IDYKLWEuc2ZhdHRyLmxpc3RbNV0udmFsdWVsZW4gPSA1Ci1hLnNmYXR0ci5saXN0WzVdLnJvb3Qg PSAwCi1hLnNmYXR0ci5saXN0WzVdLnNlY3VyZSA9IDAKLWEuc2ZhdHRyLmxpc3RbNV0ubmFtZSA9 ICJuYW1lLjYiCi1hLnNmYXR0ci5saXN0WzVdLnZhbHVlID0gInZhbHVlIgotYS5zZmF0dHIubGlz dFs2XS5uYW1lbGVuID0gNgotYS5zZmF0dHIubGlzdFs2XS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRy Lmxpc3RbNl0ucm9vdCA9IDAKLWEuc2ZhdHRyLmxpc3RbNl0uc2VjdXJlID0gMAotYS5zZmF0dHIu bGlzdFs2XS5uYW1lID0gIm5hbWUuNyIKLWEuc2ZhdHRyLmxpc3RbNl0udmFsdWUgPSAidmFsdWUi Ci1hLnNmYXR0ci5saXN0WzddLm5hbWVsZW4gPSA2Ci1hLnNmYXR0ci5saXN0WzddLnZhbHVlbGVu ID0gNQotYS5zZmF0dHIubGlzdFs3XS5yb290ID0gMAotYS5zZmF0dHIubGlzdFs3XS5zZWN1cmUg PSAwCi1hLnNmYXR0ci5saXN0WzddLm5hbWUgPSAibmFtZS44IgotYS5zZmF0dHIubGlzdFs3XS52 YWx1ZSA9ICJ2YWx1ZSIKLWEuc2ZhdHRyLmxpc3RbOF0ubmFtZWxlbiA9IDYKLWEuc2ZhdHRyLmxp c3RbOF0udmFsdWVsZW4gPSA1Ci1hLnNmYXR0ci5saXN0WzhdLnJvb3QgPSAwCi1hLnNmYXR0ci5s aXN0WzhdLnNlY3VyZSA9IDAKLWEuc2ZhdHRyLmxpc3RbOF0ubmFtZSA9ICJuYW1lLjkiCi1hLnNm YXR0ci5saXN0WzhdLnZhbHVlID0gInZhbHVlIgotYS5zZmF0dHIubGlzdFs5XS5uYW1lbGVuID0g NwotYS5zZmF0dHIubGlzdFs5XS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRyLmxpc3RbOV0ucm9vdCA9 IDAKLWEuc2ZhdHRyLmxpc3RbOV0uc2VjdXJlID0gMAotYS5zZmF0dHIubGlzdFs5XS5uYW1lID0g Im5hbWUuMTAiCi1hLnNmYXR0ci5saXN0WzldLnZhbHVlID0gInZhbHVlIgorY29yZS5hZm9ybWF0 ID0gMiAoZXh0ZW50cykKK2EuYm14WzAtMV0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2Nv dW50LGV4dGVudGZsYWddIDA6WzAsMTcsMzEsMF0gMTpbMzEsNjQsNSwwXQogCiAqKiAxIGV4dGVu dHMgKioKIApAQCAtNDc1Niw3NSArNTU0MywxNCBAQAogY29yZS5zaXplID0gNTExMTg1OTIKIGNv cmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAzOTEKLWNvcmUubmFleHRlbnRzID0gMAor Y29yZS5uYWV4dGVudHMgPSAyCiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQotY29yZS5h Zm9ybWF0ID0gMSAobG9jYWwpCitjb3JlLmFmb3JtYXQgPSAyIChleHRlbnRzKQogdS5ibWJ0Lmxl dmVsID0gMQogdS5ibWJ0Lm51bXJlY3MgPSAyCiB1LmJtYnQua2V5c1sxLTJdID0gW3N0YXJ0b2Zm XSAxOlswXSAyOls0Mzg0XQotdS5ibWJ0LnB0cnNbMS0yXSA9IDE6Mzk5IDI6ODE0MwotYS5zZmF0 dHIuaGRyLnRvdHNpemUgPSAxNDUKLWEuc2ZhdHRyLmhkci5jb3VudCA9IDEwCi1hLnNmYXR0ci5s aXN0WzBdLm5hbWVsZW4gPSA2Ci1hLnNmYXR0ci5saXN0WzBdLnZhbHVlbGVuID0gNQotYS5zZmF0 dHIubGlzdFswXS5yb290ID0gMAotYS5zZmF0dHIubGlzdFswXS5zZWN1cmUgPSAwCi1hLnNmYXR0 ci5saXN0WzBdLm5hbWUgPSAibmFtZS4xIgotYS5zZmF0dHIubGlzdFswXS52YWx1ZSA9ICJ2YWx1 ZSIKLWEuc2ZhdHRyLmxpc3RbMV0ubmFtZWxlbiA9IDYKLWEuc2ZhdHRyLmxpc3RbMV0udmFsdWVs ZW4gPSA1Ci1hLnNmYXR0ci5saXN0WzFdLnJvb3QgPSAwCi1hLnNmYXR0ci5saXN0WzFdLnNlY3Vy ZSA9IDAKLWEuc2ZhdHRyLmxpc3RbMV0ubmFtZSA9ICJuYW1lLjIiCi1hLnNmYXR0ci5saXN0WzFd LnZhbHVlID0gInZhbHVlIgotYS5zZmF0dHIubGlzdFsyXS5uYW1lbGVuID0gNgotYS5zZmF0dHIu bGlzdFsyXS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRyLmxpc3RbMl0ucm9vdCA9IDAKLWEuc2ZhdHRy Lmxpc3RbMl0uc2VjdXJlID0gMAotYS5zZmF0dHIubGlzdFsyXS5uYW1lID0gIm5hbWUuMyIKLWEu c2ZhdHRyLmxpc3RbMl0udmFsdWUgPSAidmFsdWUiCi1hLnNmYXR0ci5saXN0WzNdLm5hbWVsZW4g PSA2Ci1hLnNmYXR0ci5saXN0WzNdLnZhbHVlbGVuID0gNQotYS5zZmF0dHIubGlzdFszXS5yb290 ID0gMAotYS5zZmF0dHIubGlzdFszXS5zZWN1cmUgPSAwCi1hLnNmYXR0ci5saXN0WzNdLm5hbWUg PSAibmFtZS40IgotYS5zZmF0dHIubGlzdFszXS52YWx1ZSA9ICJ2YWx1ZSIKLWEuc2ZhdHRyLmxp c3RbNF0ubmFtZWxlbiA9IDYKLWEuc2ZhdHRyLmxpc3RbNF0udmFsdWVsZW4gPSA1Ci1hLnNmYXR0 ci5saXN0WzRdLnJvb3QgPSAwCi1hLnNmYXR0ci5saXN0WzRdLnNlY3VyZSA9IDAKLWEuc2ZhdHRy Lmxpc3RbNF0ubmFtZSA9ICJuYW1lLjUiCi1hLnNmYXR0ci5saXN0WzRdLnZhbHVlID0gInZhbHVl IgotYS5zZmF0dHIubGlzdFs1XS5uYW1lbGVuID0gNgotYS5zZmF0dHIubGlzdFs1XS52YWx1ZWxl biA9IDUKLWEuc2ZhdHRyLmxpc3RbNV0ucm9vdCA9IDAKLWEuc2ZhdHRyLmxpc3RbNV0uc2VjdXJl ID0gMAotYS5zZmF0dHIubGlzdFs1XS5uYW1lID0gIm5hbWUuNiIKLWEuc2ZhdHRyLmxpc3RbNV0u dmFsdWUgPSAidmFsdWUiCi1hLnNmYXR0ci5saXN0WzZdLm5hbWVsZW4gPSA2Ci1hLnNmYXR0ci5s aXN0WzZdLnZhbHVlbGVuID0gNQotYS5zZmF0dHIubGlzdFs2XS5yb290ID0gMAotYS5zZmF0dHIu bGlzdFs2XS5zZWN1cmUgPSAwCi1hLnNmYXR0ci5saXN0WzZdLm5hbWUgPSAibmFtZS43IgotYS5z ZmF0dHIubGlzdFs2XS52YWx1ZSA9ICJ2YWx1ZSIKLWEuc2ZhdHRyLmxpc3RbN10ubmFtZWxlbiA9 IDYKLWEuc2ZhdHRyLmxpc3RbN10udmFsdWVsZW4gPSA1Ci1hLnNmYXR0ci5saXN0WzddLnJvb3Qg PSAwCi1hLnNmYXR0ci5saXN0WzddLnNlY3VyZSA9IDAKLWEuc2ZhdHRyLmxpc3RbN10ubmFtZSA9 ICJuYW1lLjgiCi1hLnNmYXR0ci5saXN0WzddLnZhbHVlID0gInZhbHVlIgotYS5zZmF0dHIubGlz dFs4XS5uYW1lbGVuID0gNgotYS5zZmF0dHIubGlzdFs4XS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRy Lmxpc3RbOF0ucm9vdCA9IDAKLWEuc2ZhdHRyLmxpc3RbOF0uc2VjdXJlID0gMAotYS5zZmF0dHIu bGlzdFs4XS5uYW1lID0gIm5hbWUuOSIKLWEuc2ZhdHRyLmxpc3RbOF0udmFsdWUgPSAidmFsdWUi Ci1hLnNmYXR0ci5saXN0WzldLm5hbWVsZW4gPSA3Ci1hLnNmYXR0ci5saXN0WzldLnZhbHVlbGVu ID0gNQotYS5zZmF0dHIubGlzdFs5XS5yb290ID0gMAotYS5zZmF0dHIubGlzdFs5XS5zZWN1cmUg PSAwCi1hLnNmYXR0ci5saXN0WzldLm5hbWUgPSAibmFtZS4xMCIKLWEuc2ZhdHRyLmxpc3RbOV0u dmFsdWUgPSAidmFsdWUiCit1LmJtYnQucHRyc1sxLTJdID0gMTo0MzEgMjo4MTc1CithLmJteFsw LTFdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3 LDMxLDBdIDE6WzMxLDY0LDUsMF0KIAogKioqIEVBIGRpZmZlcmVuY2VzIGJlZm9yZSBhbmQgYWZ0 ZXIgZXh0ZW50cyBhZGRlZCAqKioKIEZpbGVzIFRNUC5hMSBhbmQgVE1QLmEyIGFyZSBpZGVudGlj YWwKQEAgLTQ4MzQsMTA3ICs1NTYwLDE2IEBACiBGaWxlcyBUTVAuYTIgYW5kIFRNUC5hMyBhcmUg aWRlbnRpY2FsCiAKIAotKiogYWRkIDExLi4xNSBFQXMgKioKKyoqIGFkZCAxMS4uMzIxMiBFQXMg KioKIC0tLSBFQXM6IDExIC0tLQogY29yZS5mb3JtYXQgPSAyIChleHRlbnRzKQogY29yZS5zaXpl ID0gMAogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDAKLWNvcmUubmFleHRlbnRz ID0gMAorY29yZS5uYWV4dGVudHMgPSAyCiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQot Y29yZS5hZm9ybWF0ID0gMSAobG9jYWwpCi1hLnNmYXR0ci5oZHIudG90c2l6ZSA9IDIyMAotYS5z ZmF0dHIuaGRyLmNvdW50ID0gMTUKLWEuc2ZhdHRyLmxpc3RbMF0ubmFtZWxlbiA9IDYKLWEuc2Zh dHRyLmxpc3RbMF0udmFsdWVsZW4gPSA1Ci1hLnNmYXR0ci5saXN0WzBdLnJvb3QgPSAwCi1hLnNm YXR0ci5saXN0WzBdLnNlY3VyZSA9IDAKLWEuc2ZhdHRyLmxpc3RbMF0ubmFtZSA9ICJuYW1lLjEi Ci1hLnNmYXR0ci5saXN0WzBdLnZhbHVlID0gInZhbHVlIgotYS5zZmF0dHIubGlzdFsxXS5uYW1l bGVuID0gNgotYS5zZmF0dHIubGlzdFsxXS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRyLmxpc3RbMV0u cm9vdCA9IDAKLWEuc2ZhdHRyLmxpc3RbMV0uc2VjdXJlID0gMAotYS5zZmF0dHIubGlzdFsxXS5u YW1lID0gIm5hbWUuMiIKLWEuc2ZhdHRyLmxpc3RbMV0udmFsdWUgPSAidmFsdWUiCi1hLnNmYXR0 ci5saXN0WzJdLm5hbWVsZW4gPSA2Ci1hLnNmYXR0ci5saXN0WzJdLnZhbHVlbGVuID0gNQotYS5z ZmF0dHIubGlzdFsyXS5yb290ID0gMAotYS5zZmF0dHIubGlzdFsyXS5zZWN1cmUgPSAwCi1hLnNm YXR0ci5saXN0WzJdLm5hbWUgPSAibmFtZS4zIgotYS5zZmF0dHIubGlzdFsyXS52YWx1ZSA9ICJ2 YWx1ZSIKLWEuc2ZhdHRyLmxpc3RbM10ubmFtZWxlbiA9IDYKLWEuc2ZhdHRyLmxpc3RbM10udmFs dWVsZW4gPSA1Ci1hLnNmYXR0ci5saXN0WzNdLnJvb3QgPSAwCi1hLnNmYXR0ci5saXN0WzNdLnNl Y3VyZSA9IDAKLWEuc2ZhdHRyLmxpc3RbM10ubmFtZSA9ICJuYW1lLjQiCi1hLnNmYXR0ci5saXN0 WzNdLnZhbHVlID0gInZhbHVlIgotYS5zZmF0dHIubGlzdFs0XS5uYW1lbGVuID0gNgotYS5zZmF0 dHIubGlzdFs0XS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRyLmxpc3RbNF0ucm9vdCA9IDAKLWEuc2Zh dHRyLmxpc3RbNF0uc2VjdXJlID0gMAotYS5zZmF0dHIubGlzdFs0XS5uYW1lID0gIm5hbWUuNSIK LWEuc2ZhdHRyLmxpc3RbNF0udmFsdWUgPSAidmFsdWUiCi1hLnNmYXR0ci5saXN0WzVdLm5hbWVs ZW4gPSA2Ci1hLnNmYXR0ci5saXN0WzVdLnZhbHVlbGVuID0gNQotYS5zZmF0dHIubGlzdFs1XS5y b290ID0gMAotYS5zZmF0dHIubGlzdFs1XS5zZWN1cmUgPSAwCi1hLnNmYXR0ci5saXN0WzVdLm5h bWUgPSAibmFtZS42IgotYS5zZmF0dHIubGlzdFs1XS52YWx1ZSA9ICJ2YWx1ZSIKLWEuc2ZhdHRy Lmxpc3RbNl0ubmFtZWxlbiA9IDYKLWEuc2ZhdHRyLmxpc3RbNl0udmFsdWVsZW4gPSA1Ci1hLnNm YXR0ci5saXN0WzZdLnJvb3QgPSAwCi1hLnNmYXR0ci5saXN0WzZdLnNlY3VyZSA9IDAKLWEuc2Zh dHRyLmxpc3RbNl0ubmFtZSA9ICJuYW1lLjciCi1hLnNmYXR0ci5saXN0WzZdLnZhbHVlID0gInZh bHVlIgotYS5zZmF0dHIubGlzdFs3XS5uYW1lbGVuID0gNgotYS5zZmF0dHIubGlzdFs3XS52YWx1 ZWxlbiA9IDUKLWEuc2ZhdHRyLmxpc3RbN10ucm9vdCA9IDAKLWEuc2ZhdHRyLmxpc3RbN10uc2Vj dXJlID0gMAotYS5zZmF0dHIubGlzdFs3XS5uYW1lID0gIm5hbWUuOCIKLWEuc2ZhdHRyLmxpc3Rb N10udmFsdWUgPSAidmFsdWUiCi1hLnNmYXR0ci5saXN0WzhdLm5hbWVsZW4gPSA2Ci1hLnNmYXR0 ci5saXN0WzhdLnZhbHVlbGVuID0gNQotYS5zZmF0dHIubGlzdFs4XS5yb290ID0gMAotYS5zZmF0 dHIubGlzdFs4XS5zZWN1cmUgPSAwCi1hLnNmYXR0ci5saXN0WzhdLm5hbWUgPSAibmFtZS45Igot YS5zZmF0dHIubGlzdFs4XS52YWx1ZSA9ICJ2YWx1ZSIKLWEuc2ZhdHRyLmxpc3RbOV0ubmFtZWxl biA9IDcKLWEuc2ZhdHRyLmxpc3RbOV0udmFsdWVsZW4gPSA1Ci1hLnNmYXR0ci5saXN0WzldLnJv b3QgPSAwCi1hLnNmYXR0ci5saXN0WzldLnNlY3VyZSA9IDAKLWEuc2ZhdHRyLmxpc3RbOV0ubmFt ZSA9ICJuYW1lLjEwIgotYS5zZmF0dHIubGlzdFs5XS52YWx1ZSA9ICJ2YWx1ZSIKLWEuc2ZhdHRy Lmxpc3RbMTBdLm5hbWVsZW4gPSA3Ci1hLnNmYXR0ci5saXN0WzEwXS52YWx1ZWxlbiA9IDUKLWEu c2ZhdHRyLmxpc3RbMTBdLnJvb3QgPSAwCi1hLnNmYXR0ci5saXN0WzEwXS5zZWN1cmUgPSAwCi1h LnNmYXR0ci5saXN0WzEwXS5uYW1lID0gIm5hbWUuMTEiCi1hLnNmYXR0ci5saXN0WzEwXS52YWx1 ZSA9ICJ2YWx1ZSIKLWEuc2ZhdHRyLmxpc3RbMTFdLm5hbWVsZW4gPSA3Ci1hLnNmYXR0ci5saXN0 WzExXS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRyLmxpc3RbMTFdLnJvb3QgPSAwCi1hLnNmYXR0ci5s aXN0WzExXS5zZWN1cmUgPSAwCi1hLnNmYXR0ci5saXN0WzExXS5uYW1lID0gIm5hbWUuMTIiCi1h LnNmYXR0ci5saXN0WzExXS52YWx1ZSA9ICJ2YWx1ZSIKLWEuc2ZhdHRyLmxpc3RbMTJdLm5hbWVs ZW4gPSA3Ci1hLnNmYXR0ci5saXN0WzEyXS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRyLmxpc3RbMTJd LnJvb3QgPSAwCi1hLnNmYXR0ci5saXN0WzEyXS5zZWN1cmUgPSAwCi1hLnNmYXR0ci5saXN0WzEy XS5uYW1lID0gIm5hbWUuMTMiCi1hLnNmYXR0ci5saXN0WzEyXS52YWx1ZSA9ICJ2YWx1ZSIKLWEu c2ZhdHRyLmxpc3RbMTNdLm5hbWVsZW4gPSA3Ci1hLnNmYXR0ci5saXN0WzEzXS52YWx1ZWxlbiA9 IDUKLWEuc2ZhdHRyLmxpc3RbMTNdLnJvb3QgPSAwCi1hLnNmYXR0ci5saXN0WzEzXS5zZWN1cmUg PSAwCi1hLnNmYXR0ci5saXN0WzEzXS5uYW1lID0gIm5hbWUuMTQiCi1hLnNmYXR0ci5saXN0WzEz XS52YWx1ZSA9ICJ2YWx1ZSIKLWEuc2ZhdHRyLmxpc3RbMTRdLm5hbWVsZW4gPSA3Ci1hLnNmYXR0 ci5saXN0WzE0XS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRyLmxpc3RbMTRdLnJvb3QgPSAwCi1hLnNm YXR0ci5saXN0WzE0XS5zZWN1cmUgPSAwCi1hLnNmYXR0ci5saXN0WzE0XS5uYW1lID0gIm5hbWUu MTUiCi1hLnNmYXR0ci5saXN0WzE0XS52YWx1ZSA9ICJ2YWx1ZSIKK2NvcmUuYWZvcm1hdCA9IDIg KGV4dGVudHMpCithLmJteFswLTFdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxl eHRlbnRmbGFnXSAwOlswLDE3LDMxLDBdIDE6WzMxLDY0LDUsMF0KIAogKiogMSBleHRlbnRzICoq CiAKQEAgLTUwNjAsMTA1ICs1Njk1LDE0IEBACiBjb3JlLnNpemUgPSA1MTExODU5MgogY29yZS5l eHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDM5MQotY29yZS5uYWV4dGVudHMgPSAwCitjb3Jl Lm5hZXh0ZW50cyA9IDIKIGNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCi1jb3JlLmFmb3Jt YXQgPSAxIChsb2NhbCkKK2NvcmUuYWZvcm1hdCA9IDIgKGV4dGVudHMpCiB1LmJtYnQubGV2ZWwg PSAxCiB1LmJtYnQubnVtcmVjcyA9IDIKIHUuYm1idC5rZXlzWzEtMl0gPSBbc3RhcnRvZmZdIDE6 WzBdIDI6WzQzODRdCi11LmJtYnQucHRyc1sxLTJdID0gMTozOTkgMjo4MTQzCi1hLnNmYXR0ci5o ZHIudG90c2l6ZSA9IDIyMAotYS5zZmF0dHIuaGRyLmNvdW50ID0gMTUKLWEuc2ZhdHRyLmxpc3Rb MF0ubmFtZWxlbiA9IDYKLWEuc2ZhdHRyLmxpc3RbMF0udmFsdWVsZW4gPSA1Ci1hLnNmYXR0ci5s aXN0WzBdLnJvb3QgPSAwCi1hLnNmYXR0ci5saXN0WzBdLnNlY3VyZSA9IDAKLWEuc2ZhdHRyLmxp c3RbMF0ubmFtZSA9ICJuYW1lLjEiCi1hLnNmYXR0ci5saXN0WzBdLnZhbHVlID0gInZhbHVlIgot YS5zZmF0dHIubGlzdFsxXS5uYW1lbGVuID0gNgotYS5zZmF0dHIubGlzdFsxXS52YWx1ZWxlbiA9 IDUKLWEuc2ZhdHRyLmxpc3RbMV0ucm9vdCA9IDAKLWEuc2ZhdHRyLmxpc3RbMV0uc2VjdXJlID0g MAotYS5zZmF0dHIubGlzdFsxXS5uYW1lID0gIm5hbWUuMiIKLWEuc2ZhdHRyLmxpc3RbMV0udmFs dWUgPSAidmFsdWUiCi1hLnNmYXR0ci5saXN0WzJdLm5hbWVsZW4gPSA2Ci1hLnNmYXR0ci5saXN0 WzJdLnZhbHVlbGVuID0gNQotYS5zZmF0dHIubGlzdFsyXS5yb290ID0gMAotYS5zZmF0dHIubGlz dFsyXS5zZWN1cmUgPSAwCi1hLnNmYXR0ci5saXN0WzJdLm5hbWUgPSAibmFtZS4zIgotYS5zZmF0 dHIubGlzdFsyXS52YWx1ZSA9ICJ2YWx1ZSIKLWEuc2ZhdHRyLmxpc3RbM10ubmFtZWxlbiA9IDYK LWEuc2ZhdHRyLmxpc3RbM10udmFsdWVsZW4gPSA1Ci1hLnNmYXR0ci5saXN0WzNdLnJvb3QgPSAw Ci1hLnNmYXR0ci5saXN0WzNdLnNlY3VyZSA9IDAKLWEuc2ZhdHRyLmxpc3RbM10ubmFtZSA9ICJu YW1lLjQiCi1hLnNmYXR0ci5saXN0WzNdLnZhbHVlID0gInZhbHVlIgotYS5zZmF0dHIubGlzdFs0 XS5uYW1lbGVuID0gNgotYS5zZmF0dHIubGlzdFs0XS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRyLmxp c3RbNF0ucm9vdCA9IDAKLWEuc2ZhdHRyLmxpc3RbNF0uc2VjdXJlID0gMAotYS5zZmF0dHIubGlz dFs0XS5uYW1lID0gIm5hbWUuNSIKLWEuc2ZhdHRyLmxpc3RbNF0udmFsdWUgPSAidmFsdWUiCi1h LnNmYXR0ci5saXN0WzVdLm5hbWVsZW4gPSA2Ci1hLnNmYXR0ci5saXN0WzVdLnZhbHVlbGVuID0g NQotYS5zZmF0dHIubGlzdFs1XS5yb290ID0gMAotYS5zZmF0dHIubGlzdFs1XS5zZWN1cmUgPSAw Ci1hLnNmYXR0ci5saXN0WzVdLm5hbWUgPSAibmFtZS42IgotYS5zZmF0dHIubGlzdFs1XS52YWx1 ZSA9ICJ2YWx1ZSIKLWEuc2ZhdHRyLmxpc3RbNl0ubmFtZWxlbiA9IDYKLWEuc2ZhdHRyLmxpc3Rb Nl0udmFsdWVsZW4gPSA1Ci1hLnNmYXR0ci5saXN0WzZdLnJvb3QgPSAwCi1hLnNmYXR0ci5saXN0 WzZdLnNlY3VyZSA9IDAKLWEuc2ZhdHRyLmxpc3RbNl0ubmFtZSA9ICJuYW1lLjciCi1hLnNmYXR0 ci5saXN0WzZdLnZhbHVlID0gInZhbHVlIgotYS5zZmF0dHIubGlzdFs3XS5uYW1lbGVuID0gNgot YS5zZmF0dHIubGlzdFs3XS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRyLmxpc3RbN10ucm9vdCA9IDAK LWEuc2ZhdHRyLmxpc3RbN10uc2VjdXJlID0gMAotYS5zZmF0dHIubGlzdFs3XS5uYW1lID0gIm5h bWUuOCIKLWEuc2ZhdHRyLmxpc3RbN10udmFsdWUgPSAidmFsdWUiCi1hLnNmYXR0ci5saXN0Wzhd Lm5hbWVsZW4gPSA2Ci1hLnNmYXR0ci5saXN0WzhdLnZhbHVlbGVuID0gNQotYS5zZmF0dHIubGlz dFs4XS5yb290ID0gMAotYS5zZmF0dHIubGlzdFs4XS5zZWN1cmUgPSAwCi1hLnNmYXR0ci5saXN0 WzhdLm5hbWUgPSAibmFtZS45IgotYS5zZmF0dHIubGlzdFs4XS52YWx1ZSA9ICJ2YWx1ZSIKLWEu c2ZhdHRyLmxpc3RbOV0ubmFtZWxlbiA9IDcKLWEuc2ZhdHRyLmxpc3RbOV0udmFsdWVsZW4gPSA1 Ci1hLnNmYXR0ci5saXN0WzldLnJvb3QgPSAwCi1hLnNmYXR0ci5saXN0WzldLnNlY3VyZSA9IDAK LWEuc2ZhdHRyLmxpc3RbOV0ubmFtZSA9ICJuYW1lLjEwIgotYS5zZmF0dHIubGlzdFs5XS52YWx1 ZSA9ICJ2YWx1ZSIKLWEuc2ZhdHRyLmxpc3RbMTBdLm5hbWVsZW4gPSA3Ci1hLnNmYXR0ci5saXN0 WzEwXS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRyLmxpc3RbMTBdLnJvb3QgPSAwCi1hLnNmYXR0ci5s aXN0WzEwXS5zZWN1cmUgPSAwCi1hLnNmYXR0ci5saXN0WzEwXS5uYW1lID0gIm5hbWUuMTEiCi1h LnNmYXR0ci5saXN0WzEwXS52YWx1ZSA9ICJ2YWx1ZSIKLWEuc2ZhdHRyLmxpc3RbMTFdLm5hbWVs ZW4gPSA3Ci1hLnNmYXR0ci5saXN0WzExXS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRyLmxpc3RbMTFd LnJvb3QgPSAwCi1hLnNmYXR0ci5saXN0WzExXS5zZWN1cmUgPSAwCi1hLnNmYXR0ci5saXN0WzEx XS5uYW1lID0gIm5hbWUuMTIiCi1hLnNmYXR0ci5saXN0WzExXS52YWx1ZSA9ICJ2YWx1ZSIKLWEu c2ZhdHRyLmxpc3RbMTJdLm5hbWVsZW4gPSA3Ci1hLnNmYXR0ci5saXN0WzEyXS52YWx1ZWxlbiA9 IDUKLWEuc2ZhdHRyLmxpc3RbMTJdLnJvb3QgPSAwCi1hLnNmYXR0ci5saXN0WzEyXS5zZWN1cmUg PSAwCi1hLnNmYXR0ci5saXN0WzEyXS5uYW1lID0gIm5hbWUuMTMiCi1hLnNmYXR0ci5saXN0WzEy XS52YWx1ZSA9ICJ2YWx1ZSIKLWEuc2ZhdHRyLmxpc3RbMTNdLm5hbWVsZW4gPSA3Ci1hLnNmYXR0 ci5saXN0WzEzXS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRyLmxpc3RbMTNdLnJvb3QgPSAwCi1hLnNm YXR0ci5saXN0WzEzXS5zZWN1cmUgPSAwCi1hLnNmYXR0ci5saXN0WzEzXS5uYW1lID0gIm5hbWUu MTQiCi1hLnNmYXR0ci5saXN0WzEzXS52YWx1ZSA9ICJ2YWx1ZSIKLWEuc2ZhdHRyLmxpc3RbMTRd Lm5hbWVsZW4gPSA3Ci1hLnNmYXR0ci5saXN0WzE0XS52YWx1ZWxlbiA9IDUKLWEuc2ZhdHRyLmxp c3RbMTRdLnJvb3QgPSAwCi1hLnNmYXR0ci5saXN0WzE0XS5zZWN1cmUgPSAwCi1hLnNmYXR0ci5s aXN0WzE0XS5uYW1lID0gIm5hbWUuMTUiCi1hLnNmYXR0ci5saXN0WzE0XS52YWx1ZSA9ICJ2YWx1 ZSIKK3UuYm1idC5wdHJzWzEtMl0gPSAxOjQzMSAyOjgxNzUKK2EuYm14WzAtMV0gPSBbc3RhcnRv ZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMzEsMF0gMTpbMzEs NjQsNSwwXQogCiAqKiogRUEgZGlmZmVyZW5jZXMgYmVmb3JlIGFuZCBhZnRlciBleHRlbnRzIGFk ZGVkICoqKgogRmlsZXMgVE1QLmExIGFuZCBUTVAuYTIgYXJlIGlkZW50aWNhbApAQCAtNTE2OCwx NiArNTcxMiwxNiBAQAogRmlsZXMgVE1QLmEyIGFuZCBUTVAuYTMgYXJlIGlkZW50aWNhbAogCiAK LSoqIGFkZCAxNi4uMjAgRUFzICoqCisqKiBhZGQgMTYuLjMyMTYgRUFzICoqCiAtLS0gRUFzOiAx NiAtLS0KIGNvcmUuZm9ybWF0ID0gMiAoZXh0ZW50cykKIGNvcmUuc2l6ZSA9IDAKIGNvcmUuZXh0 c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAwCi1jb3JlLm5hZXh0ZW50cyA9IDEKK2NvcmUubmFl eHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKIGNvcmUuYWZvcm1hdCA9 IDIgKGV4dGVudHMpCi1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQs ZXh0ZW50ZmxhZ10gMDpbMCwxNiwxLDBdCithLmJteFswLTFdID0gW3N0YXJ0b2ZmLHN0YXJ0Ymxv Y2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDMxLDBdIDE6WzMxLDY0LDUsMF0KIAog KiogMSBleHRlbnRzICoqCiAKQEAgLTUzMDMsMTQgKzU4NDcsMTQgQEAKIGNvcmUuc2l6ZSA9IDUx MTE4NTkyCiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMzkxCi1jb3JlLm5hZXh0 ZW50cyA9IDEKK2NvcmUubmFleHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRl cykKIGNvcmUuYWZvcm1hdCA9IDIgKGV4dGVudHMpCiB1LmJtYnQubGV2ZWwgPSAxCiB1LmJtYnQu bnVtcmVjcyA9IDIKIHUuYm1idC5rZXlzWzEtMl0gPSBbc3RhcnRvZmZdIDE6WzBdIDI6WzQzODRd Ci11LmJtYnQucHRyc1sxLTJdID0gMTo0MDAgMjo4MTQ0Ci1hLmJteFswXSA9IFtzdGFydG9mZixz dGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNiwxLDBdCit1LmJtYnQucHRy c1sxLTJdID0gMTo0MzEgMjo4MTc1CithLmJteFswLTFdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ss YmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDMxLDBdIDE6WzMxLDY0LDUsMF0KIAogKioq IEVBIGRpZmZlcmVuY2VzIGJlZm9yZSBhbmQgYWZ0ZXIgZXh0ZW50cyBhZGRlZCAqKioKIEZpbGVz IFRNUC5hMSBhbmQgVE1QLmEyIGFyZSBpZGVudGljYWwKQEAgLTUzMjAsMTYgKzU4NjQsMTYgQEAK IEZpbGVzIFRNUC5hMiBhbmQgVE1QLmEzIGFyZSBpZGVudGljYWwKIAogCi0qKiBhZGQgMjEuLjI1 IEVBcyAqKgorKiogYWRkIDIxLi4zMjIwIEVBcyAqKgogLS0tIEVBczogMjEgLS0tCiBjb3JlLmZv cm1hdCA9IDIgKGV4dGVudHMpCiBjb3JlLnNpemUgPSAwCiBjb3JlLmV4dHNpemUgPSAwCiBjb3Jl Lm5leHRlbnRzID0gMAotY29yZS5uYWV4dGVudHMgPSAxCitjb3JlLm5hZXh0ZW50cyA9IDIKIGNv cmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCiBjb3JlLmFmb3JtYXQgPSAyIChleHRlbnRzKQot YS5ibXhbMF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6 WzAsMTYsMSwwXQorYS5ibXhbMC0xXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQs ZXh0ZW50ZmxhZ10gMDpbMCwxNywzMSwwXSAxOlszMSw2NCw1LDBdCiAKICoqIDEgZXh0ZW50cyAq KgogCkBAIC01NDU1LDE0ICs1OTk5LDE0IEBACiBjb3JlLnNpemUgPSA1MTExODU5MgogY29yZS5l eHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDM5MQotY29yZS5uYWV4dGVudHMgPSAxCitjb3Jl Lm5hZXh0ZW50cyA9IDIKIGNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCiBjb3JlLmFmb3Jt YXQgPSAyIChleHRlbnRzKQogdS5ibWJ0LmxldmVsID0gMQogdS5ibWJ0Lm51bXJlY3MgPSAyCiB1 LmJtYnQua2V5c1sxLTJdID0gW3N0YXJ0b2ZmXSAxOlswXSAyOls0Mzg0XQotdS5ibWJ0LnB0cnNb MS0yXSA9IDE6NDAwIDI6ODE0NAotYS5ibXhbMF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9j a2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTYsMSwwXQordS5ibWJ0LnB0cnNbMS0yXSA9IDE6NDMx IDI6ODE3NQorYS5ibXhbMC0xXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0 ZW50ZmxhZ10gMDpbMCwxNywzMSwwXSAxOlszMSw2NCw1LDBdCiAKICoqKiBFQSBkaWZmZXJlbmNl cyBiZWZvcmUgYW5kIGFmdGVyIGV4dGVudHMgYWRkZWQgKioqCiBGaWxlcyBUTVAuYTEgYW5kIFRN UC5hMiBhcmUgaWRlbnRpY2FsCkBAIC01NDcyLDE2ICs2MDE2LDE2IEBACiBGaWxlcyBUTVAuYTIg YW5kIFRNUC5hMyBhcmUgaWRlbnRpY2FsCiAKIAotKiogYWRkIDI2Li4zMCBFQXMgKioKKyoqIGFk ZCAyNi4uMzIyNCBFQXMgKioKIC0tLSBFQXM6IDI2IC0tLQogY29yZS5mb3JtYXQgPSAyIChleHRl bnRzKQogY29yZS5zaXplID0gMAogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDAK LWNvcmUubmFleHRlbnRzID0gMQorY29yZS5uYWV4dGVudHMgPSAyCiBjb3JlLmZvcmtvZmYgPSAy NCAoMTkyIGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKLWEuYm14WzBdID0gW3N0 YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE2LDEsMF0KK2Eu Ym14WzAtMV0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6 WzAsMTcsMzEsMF0gMTpbMzEsNjQsNSwwXQogCiAqKiAxIGV4dGVudHMgKioKIApAQCAtNTYwNywx NCArNjE1MSwxNCBAQAogY29yZS5zaXplID0gNTExMTg1OTIKIGNvcmUuZXh0c2l6ZSA9IDAKIGNv cmUubmV4dGVudHMgPSAzOTEKLWNvcmUubmFleHRlbnRzID0gMQorY29yZS5uYWV4dGVudHMgPSAy CiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50 cykKIHUuYm1idC5sZXZlbCA9IDEKIHUuYm1idC5udW1yZWNzID0gMgogdS5ibWJ0LmtleXNbMS0y XSA9IFtzdGFydG9mZl0gMTpbMF0gMjpbNDM4NF0KLXUuYm1idC5wdHJzWzEtMl0gPSAxOjQwMCAy OjgxNDQKLWEuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRm bGFnXSAwOlswLDE2LDEsMF0KK3UuYm1idC5wdHJzWzEtMl0gPSAxOjQzMSAyOjgxNzUKK2EuYm14 WzAtMV0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAs MTcsMzEsMF0gMTpbMzEsNjQsNSwwXQogCiAqKiogRUEgZGlmZmVyZW5jZXMgYmVmb3JlIGFuZCBh ZnRlciBleHRlbnRzIGFkZGVkICoqKgogRmlsZXMgVE1QLmExIGFuZCBUTVAuYTIgYXJlIGlkZW50 aWNhbApAQCAtNTYyNCwxNiArNjE2OCwxNiBAQAogRmlsZXMgVE1QLmEyIGFuZCBUTVAuYTMgYXJl IGlkZW50aWNhbAogCiAKLSoqIGFkZCAzMS4uMzUgRUFzICoqCisqKiBhZGQgMzEuLjMyMjggRUFz ICoqCiAtLS0gRUFzOiAzMSAtLS0KIGNvcmUuZm9ybWF0ID0gMiAoZXh0ZW50cykKIGNvcmUuc2l6 ZSA9IDAKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAwCi1jb3JlLm5hZXh0ZW50 cyA9IDEKK2NvcmUubmFleHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykK IGNvcmUuYWZvcm1hdCA9IDIgKGV4dGVudHMpCi1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJs b2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNiwxLDBdCithLmJteFswLTFdID0gW3N0 YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDMxLDBdIDE6 WzMxLDY0LDUsMF0KIAogKiogMSBleHRlbnRzICoqCiAKQEAgLTU3NTksMTQgKzYzMDMsMTQgQEAK IGNvcmUuc2l6ZSA9IDUxMTE4NTkyCiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0g MzkxCi1jb3JlLm5hZXh0ZW50cyA9IDEKK2NvcmUubmFleHRlbnRzID0gMgogY29yZS5mb3Jrb2Zm ID0gMjQgKDE5MiBieXRlcykKIGNvcmUuYWZvcm1hdCA9IDIgKGV4dGVudHMpCiB1LmJtYnQubGV2 ZWwgPSAxCiB1LmJtYnQubnVtcmVjcyA9IDIKIHUuYm1idC5rZXlzWzEtMl0gPSBbc3RhcnRvZmZd IDE6WzBdIDI6WzQzODRdCi11LmJtYnQucHRyc1sxLTJdID0gMTo0MDAgMjo4MTQ0Ci1hLmJteFsw XSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNiwx LDBdCit1LmJtYnQucHRyc1sxLTJdID0gMTo0MzEgMjo4MTc1CithLmJteFswLTFdID0gW3N0YXJ0 b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDMxLDBdIDE6WzMx LDY0LDUsMF0KIAogKioqIEVBIGRpZmZlcmVuY2VzIGJlZm9yZSBhbmQgYWZ0ZXIgZXh0ZW50cyBh ZGRlZCAqKioKIEZpbGVzIFRNUC5hMSBhbmQgVE1QLmEyIGFyZSBpZGVudGljYWwKQEAgLTU3NzYs MTYgKzYzMjAsMTYgQEAKIEZpbGVzIFRNUC5hMiBhbmQgVE1QLmEzIGFyZSBpZGVudGljYWwKIAog Ci0qKiBhZGQgMzYuLjQwIEVBcyAqKgorKiogYWRkIDM2Li4zMjMyIEVBcyAqKgogLS0tIEVBczog MzYgLS0tCiBjb3JlLmZvcm1hdCA9IDIgKGV4dGVudHMpCiBjb3JlLnNpemUgPSAwCiBjb3JlLmV4 dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMAotY29yZS5uYWV4dGVudHMgPSAxCitjb3JlLm5h ZXh0ZW50cyA9IDIKIGNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCiBjb3JlLmFmb3JtYXQg PSAyIChleHRlbnRzKQotYS5ibXhbMF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50 LGV4dGVudGZsYWddIDA6WzAsMTYsMSwwXQorYS5ibXhbMC0xXSA9IFtzdGFydG9mZixzdGFydGJs b2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywzMSwwXSAxOlszMSw2NCw1LDBdCiAK ICoqIDEgZXh0ZW50cyAqKgogCkBAIC01OTExLDE0ICs2NDU1LDE0IEBACiBjb3JlLnNpemUgPSA1 MTExODU5MgogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDM5MQotY29yZS5uYWV4 dGVudHMgPSAxCitjb3JlLm5hZXh0ZW50cyA9IDIKIGNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0 ZXMpCiBjb3JlLmFmb3JtYXQgPSAyIChleHRlbnRzKQogdS5ibWJ0LmxldmVsID0gMQogdS5ibWJ0 Lm51bXJlY3MgPSAyCiB1LmJtYnQua2V5c1sxLTJdID0gW3N0YXJ0b2ZmXSAxOlswXSAyOls0Mzg0 XQotdS5ibWJ0LnB0cnNbMS0yXSA9IDE6NDAwIDI6ODE0NAotYS5ibXhbMF0gPSBbc3RhcnRvZmYs c3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTYsMSwwXQordS5ibWJ0LnB0 cnNbMS0yXSA9IDE6NDMxIDI6ODE3NQorYS5ibXhbMC0xXSA9IFtzdGFydG9mZixzdGFydGJsb2Nr LGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywzMSwwXSAxOlszMSw2NCw1LDBdCiAKICoq KiBFQSBkaWZmZXJlbmNlcyBiZWZvcmUgYW5kIGFmdGVyIGV4dGVudHMgYWRkZWQgKioqCiBGaWxl cyBUTVAuYTEgYW5kIFRNUC5hMiBhcmUgaWRlbnRpY2FsCkBAIC01OTI4LDE2ICs2NDcyLDE2IEBA CiBGaWxlcyBUTVAuYTIgYW5kIFRNUC5hMyBhcmUgaWRlbnRpY2FsCiAKIAotKiogYWRkIDQxLi40 NSBFQXMgKioKKyoqIGFkZCA0MS4uMzIzNiBFQXMgKioKIC0tLSBFQXM6IDQxIC0tLQogY29yZS5m b3JtYXQgPSAyIChleHRlbnRzKQogY29yZS5zaXplID0gMAogY29yZS5leHRzaXplID0gMAogY29y ZS5uZXh0ZW50cyA9IDAKLWNvcmUubmFleHRlbnRzID0gMQorY29yZS5uYWV4dGVudHMgPSAyCiBj b3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykK LWEuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAw OlswLDE2LDEsMF0KK2EuYm14WzAtMV0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50 LGV4dGVudGZsYWddIDA6WzAsMTcsMzEsMF0gMTpbMzEsNjQsNSwwXQogCiAqKiAxIGV4dGVudHMg KioKIApAQCAtNjA2MywxNCArNjYwNywxNCBAQAogY29yZS5zaXplID0gNTExMTg1OTIKIGNvcmUu ZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAzOTEKLWNvcmUubmFleHRlbnRzID0gMQorY29y ZS5uYWV4dGVudHMgPSAyCiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQogY29yZS5hZm9y bWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5sZXZlbCA9IDEKIHUuYm1idC5udW1yZWNzID0gMgog dS5ibWJ0LmtleXNbMS0yXSA9IFtzdGFydG9mZl0gMTpbMF0gMjpbNDM4NF0KLXUuYm1idC5wdHJz WzEtMl0gPSAxOjQwMCAyOjgxNDQKLWEuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxv Y2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE2LDEsMF0KK3UuYm1idC5wdHJzWzEtMl0gPSAxOjQz MSAyOjgxNzUKK2EuYm14WzAtMV0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4 dGVudGZsYWddIDA6WzAsMTcsMzEsMF0gMTpbMzEsNjQsNSwwXQogCiAqKiogRUEgZGlmZmVyZW5j ZXMgYmVmb3JlIGFuZCBhZnRlciBleHRlbnRzIGFkZGVkICoqKgogRmlsZXMgVE1QLmExIGFuZCBU TVAuYTIgYXJlIGlkZW50aWNhbApAQCAtNjA4MCwxNiArNjYyNCwxNiBAQAogRmlsZXMgVE1QLmEy IGFuZCBUTVAuYTMgYXJlIGlkZW50aWNhbAogCiAKLSoqIGFkZCA0Ni4uNTAgRUFzICoqCisqKiBh ZGQgNDYuLjMyNDAgRUFzICoqCiAtLS0gRUFzOiA0NiAtLS0KIGNvcmUuZm9ybWF0ID0gMiAoZXh0 ZW50cykKIGNvcmUuc2l6ZSA9IDAKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAw Ci1jb3JlLm5hZXh0ZW50cyA9IDEKK2NvcmUubmFleHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0g MjQgKDE5MiBieXRlcykKIGNvcmUuYWZvcm1hdCA9IDIgKGV4dGVudHMpCi1hLmJteFswXSA9IFtz dGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNiwxLDBdCith LmJteFswLTFdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAw OlswLDE3LDMxLDBdIDE6WzMxLDY0LDUsMF0KIAogKiogMSBleHRlbnRzICoqCiAKQEAgLTYyMTUs MTQgKzY3NTksMTQgQEAKIGNvcmUuc2l6ZSA9IDUxMTE4NTkyCiBjb3JlLmV4dHNpemUgPSAwCiBj b3JlLm5leHRlbnRzID0gMzkxCi1jb3JlLm5hZXh0ZW50cyA9IDEKK2NvcmUubmFleHRlbnRzID0g MgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKIGNvcmUuYWZvcm1hdCA9IDIgKGV4dGVu dHMpCiB1LmJtYnQubGV2ZWwgPSAxCiB1LmJtYnQubnVtcmVjcyA9IDIKIHUuYm1idC5rZXlzWzEt Ml0gPSBbc3RhcnRvZmZdIDE6WzBdIDI6WzQzODRdCi11LmJtYnQucHRyc1sxLTJdID0gMTo0MDAg Mjo4MTQ0Ci1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50 ZmxhZ10gMDpbMCwxNiwxLDBdCit1LmJtYnQucHRyc1sxLTJdID0gMTo0MzEgMjo4MTc1CithLmJt eFswLTFdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlsw LDE3LDMxLDBdIDE6WzMxLDY0LDUsMF0KIAogKioqIEVBIGRpZmZlcmVuY2VzIGJlZm9yZSBhbmQg YWZ0ZXIgZXh0ZW50cyBhZGRlZCAqKioKIEZpbGVzIFRNUC5hMSBhbmQgVE1QLmEyIGFyZSBpZGVu dGljYWwKQEAgLTYyMzIsMTYgKzY3NzYsMTYgQEAKIEZpbGVzIFRNUC5hMiBhbmQgVE1QLmEzIGFy ZSBpZGVudGljYWwKIAogCi0qKiBhZGQgNTEuLjU1IEVBcyAqKgorKiogYWRkIDUxLi4zMjQ0IEVB cyAqKgogLS0tIEVBczogNTEgLS0tCiBjb3JlLmZvcm1hdCA9IDIgKGV4dGVudHMpCiBjb3JlLnNp emUgPSAwCiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMAotY29yZS5uYWV4dGVu dHMgPSAxCitjb3JlLm5hZXh0ZW50cyA9IDIKIGNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMp CiBjb3JlLmFmb3JtYXQgPSAyIChleHRlbnRzKQotYS5ibXhbMF0gPSBbc3RhcnRvZmYsc3RhcnRi bG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTYsMSwwXQorYS5ibXhbMC0xXSA9IFtz dGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywzMSwwXSAx OlszMSw2NCw1LDBdCiAKICoqIDEgZXh0ZW50cyAqKgogCkBAIC02MzY3LDE0ICs2OTExLDE0IEBA CiBjb3JlLnNpemUgPSA1MTExODU5MgogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9 IDM5MQotY29yZS5uYWV4dGVudHMgPSAxCitjb3JlLm5hZXh0ZW50cyA9IDIKIGNvcmUuZm9ya29m ZiA9IDI0ICgxOTIgYnl0ZXMpCiBjb3JlLmFmb3JtYXQgPSAyIChleHRlbnRzKQogdS5ibWJ0Lmxl dmVsID0gMQogdS5ibWJ0Lm51bXJlY3MgPSAyCiB1LmJtYnQua2V5c1sxLTJdID0gW3N0YXJ0b2Zm XSAxOlswXSAyOls0Mzg0XQotdS5ibWJ0LnB0cnNbMS0yXSA9IDE6NDAwIDI6ODE0NAotYS5ibXhb MF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTYs MSwwXQordS5ibWJ0LnB0cnNbMS0yXSA9IDE6NDMxIDI6ODE3NQorYS5ibXhbMC0xXSA9IFtzdGFy dG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywzMSwwXSAxOlsz MSw2NCw1LDBdCiAKICoqKiBFQSBkaWZmZXJlbmNlcyBiZWZvcmUgYW5kIGFmdGVyIGV4dGVudHMg YWRkZWQgKioqCiBGaWxlcyBUTVAuYTEgYW5kIFRNUC5hMiBhcmUgaWRlbnRpY2FsCkBAIC02Mzg0 LDE2ICs2OTI4LDE2IEBACiBGaWxlcyBUTVAuYTIgYW5kIFRNUC5hMyBhcmUgaWRlbnRpY2FsCiAK IAotKiogYWRkIDU2Li42MCBFQXMgKioKKyoqIGFkZCA1Ni4uMzI0OCBFQXMgKioKIC0tLSBFQXM6 IDU2IC0tLQogY29yZS5mb3JtYXQgPSAyIChleHRlbnRzKQogY29yZS5zaXplID0gMAogY29yZS5l eHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDAKLWNvcmUubmFleHRlbnRzID0gMQorY29yZS5u YWV4dGVudHMgPSAyCiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQogY29yZS5hZm9ybWF0 ID0gMiAoZXh0ZW50cykKLWEuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3Vu dCxleHRlbnRmbGFnXSAwOlswLDE2LDEsMF0KK2EuYm14WzAtMV0gPSBbc3RhcnRvZmYsc3RhcnRi bG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMzEsMF0gMTpbMzEsNjQsNSwwXQog CiAqKiAxIGV4dGVudHMgKioKIApAQCAtNjUxOSwxNCArNzA2MywxNCBAQAogY29yZS5zaXplID0g NTExMTg1OTIKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAzOTEKLWNvcmUubmFl eHRlbnRzID0gMQorY29yZS5uYWV4dGVudHMgPSAyCiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5 dGVzKQogY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5sZXZlbCA9IDEKIHUuYm1i dC5udW1yZWNzID0gMgogdS5ibWJ0LmtleXNbMS0yXSA9IFtzdGFydG9mZl0gMTpbMF0gMjpbNDM4 NF0KLXUuYm1idC5wdHJzWzEtMl0gPSAxOjQwMCAyOjgxNDQKLWEuYm14WzBdID0gW3N0YXJ0b2Zm LHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE2LDEsMF0KK3UuYm1idC5w dHJzWzEtMl0gPSAxOjQzMSAyOjgxNzUKK2EuYm14WzAtMV0gPSBbc3RhcnRvZmYsc3RhcnRibG9j ayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMzEsMF0gMTpbMzEsNjQsNSwwXQogCiAq KiogRUEgZGlmZmVyZW5jZXMgYmVmb3JlIGFuZCBhZnRlciBleHRlbnRzIGFkZGVkICoqKgogRmls ZXMgVE1QLmExIGFuZCBUTVAuYTIgYXJlIGlkZW50aWNhbApAQCAtNjUzNiwxNiArNzA4MCwxNiBA QAogRmlsZXMgVE1QLmEyIGFuZCBUTVAuYTMgYXJlIGlkZW50aWNhbAogCiAKLSoqIGFkZCA2MS4u NjUgRUFzICoqCisqKiBhZGQgNjEuLjMyNTIgRUFzICoqCiAtLS0gRUFzOiA2MSAtLS0KIGNvcmUu Zm9ybWF0ID0gMiAoZXh0ZW50cykKIGNvcmUuc2l6ZSA9IDAKIGNvcmUuZXh0c2l6ZSA9IDAKIGNv cmUubmV4dGVudHMgPSAwCi1jb3JlLm5hZXh0ZW50cyA9IDEKK2NvcmUubmFleHRlbnRzID0gMgog Y29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKIGNvcmUuYWZvcm1hdCA9IDIgKGV4dGVudHMp Ci1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10g MDpbMCwxNiwxLDBdCithLmJteFswLTFdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3Vu dCxleHRlbnRmbGFnXSAwOlswLDE3LDMxLDBdIDE6WzMxLDY0LDYsMF0KIAogKiogMSBleHRlbnRz ICoqCiAKQEAgLTY2NzEsMTQgKzcyMTUsMTQgQEAKIGNvcmUuc2l6ZSA9IDUxMTE4NTkyCiBjb3Jl LmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMzkxCi1jb3JlLm5hZXh0ZW50cyA9IDEKK2Nv cmUubmFleHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKIGNvcmUuYWZv cm1hdCA9IDIgKGV4dGVudHMpCiB1LmJtYnQubGV2ZWwgPSAxCiB1LmJtYnQubnVtcmVjcyA9IDIK IHUuYm1idC5rZXlzWzEtMl0gPSBbc3RhcnRvZmZdIDE6WzBdIDI6WzQzODRdCi11LmJtYnQucHRy c1sxLTJdID0gMTo0MDAgMjo4MTQ0Ci1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJs b2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNiwxLDBdCit1LmJtYnQucHRyc1sxLTJdID0gMTo0 MzEgMjo4MTc1CithLmJteFswLTFdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxl eHRlbnRmbGFnXSAwOlswLDE3LDMxLDBdIDE6WzMxLDY0LDYsMF0KIAogKioqIEVBIGRpZmZlcmVu Y2VzIGJlZm9yZSBhbmQgYWZ0ZXIgZXh0ZW50cyBhZGRlZCAqKioKIEZpbGVzIFRNUC5hMSBhbmQg VE1QLmEyIGFyZSBpZGVudGljYWwKQEAgLTY2ODgsMTYgKzcyMzIsMTYgQEAKIEZpbGVzIFRNUC5h MiBhbmQgVE1QLmEzIGFyZSBpZGVudGljYWwKIAogCi0qKiBhZGQgNjYuLjcwIEVBcyAqKgorKiog YWRkIDY2Li4zMjU2IEVBcyAqKgogLS0tIEVBczogNjYgLS0tCiBjb3JlLmZvcm1hdCA9IDIgKGV4 dGVudHMpCiBjb3JlLnNpemUgPSAwCiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0g MAotY29yZS5uYWV4dGVudHMgPSAxCitjb3JlLm5hZXh0ZW50cyA9IDIKIGNvcmUuZm9ya29mZiA9 IDI0ICgxOTIgYnl0ZXMpCiBjb3JlLmFmb3JtYXQgPSAyIChleHRlbnRzKQotYS5ibXhbMF0gPSBb c3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTYsMSwwXQor YS5ibXhbMC0xXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10g MDpbMCwxNywzMSwwXSAxOlszMSw2NCw2LDBdCiAKICoqIDEgZXh0ZW50cyAqKgogCkBAIC02ODIz LDE0ICs3MzY3LDE0IEBACiBjb3JlLnNpemUgPSA1MTExODU5MgogY29yZS5leHRzaXplID0gMAog Y29yZS5uZXh0ZW50cyA9IDM5MQotY29yZS5uYWV4dGVudHMgPSAxCitjb3JlLm5hZXh0ZW50cyA9 IDIKIGNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCiBjb3JlLmFmb3JtYXQgPSAyIChleHRl bnRzKQogdS5ibWJ0LmxldmVsID0gMQogdS5ibWJ0Lm51bXJlY3MgPSAyCiB1LmJtYnQua2V5c1sx LTJdID0gW3N0YXJ0b2ZmXSAxOlswXSAyOls0Mzg0XQotdS5ibWJ0LnB0cnNbMS0yXSA9IDE6NDAw IDI6ODE0NAotYS5ibXhbMF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVu dGZsYWddIDA6WzAsMTYsMSwwXQordS5ibWJ0LnB0cnNbMS0yXSA9IDE6NDMxIDI6ODE3NQorYS5i bXhbMC0xXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpb MCwxNywzMSwwXSAxOlszMSw2NCw2LDBdCiAKICoqKiBFQSBkaWZmZXJlbmNlcyBiZWZvcmUgYW5k IGFmdGVyIGV4dGVudHMgYWRkZWQgKioqCiBGaWxlcyBUTVAuYTEgYW5kIFRNUC5hMiBhcmUgaWRl bnRpY2FsCkBAIC02ODQwLDE2ICs3Mzg0LDE2IEBACiBGaWxlcyBUTVAuYTIgYW5kIFRNUC5hMyBh cmUgaWRlbnRpY2FsCiAKIAotKiogYWRkIDcxLi43NSBFQXMgKioKKyoqIGFkZCA3MS4uMzI2MCBF QXMgKioKIC0tLSBFQXM6IDcxIC0tLQogY29yZS5mb3JtYXQgPSAyIChleHRlbnRzKQogY29yZS5z aXplID0gMAogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDAKLWNvcmUubmFleHRl bnRzID0gMQorY29yZS5uYWV4dGVudHMgPSAyCiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVz KQogY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKLWEuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0 YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE2LDEsMF0KK2EuYm14WzAtMV0gPSBb c3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMzEsMF0g MTpbMzEsNjQsNiwwXQogCiAqKiAxIGV4dGVudHMgKioKIApAQCAtNjk3NSwxNCArNzUxOSwxNCBA QAogY29yZS5zaXplID0gNTExMTg1OTIKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMg PSAzOTEKLWNvcmUubmFleHRlbnRzID0gMQorY29yZS5uYWV4dGVudHMgPSAyCiBjb3JlLmZvcmtv ZmYgPSAyNCAoMTkyIGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5s ZXZlbCA9IDEKIHUuYm1idC5udW1yZWNzID0gMgogdS5ibWJ0LmtleXNbMS0yXSA9IFtzdGFydG9m Zl0gMTpbMF0gMjpbNDM4NF0KLXUuYm1idC5wdHJzWzEtMl0gPSAxOjQwMCAyOjgxNDQKLWEuYm14 WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE2 LDEsMF0KK3UuYm1idC5wdHJzWzEtMl0gPSAxOjQzMSAyOjgxNzUKK2EuYm14WzAtMV0gPSBbc3Rh cnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMzEsMF0gMTpb MzEsNjQsNiwwXQogCiAqKiogRUEgZGlmZmVyZW5jZXMgYmVmb3JlIGFuZCBhZnRlciBleHRlbnRz IGFkZGVkICoqKgogRmlsZXMgVE1QLmExIGFuZCBUTVAuYTIgYXJlIGlkZW50aWNhbApAQCAtNjk5 MiwxNiArNzUzNiwxNiBAQAogRmlsZXMgVE1QLmEyIGFuZCBUTVAuYTMgYXJlIGlkZW50aWNhbAog CiAKLSoqIGFkZCA3Ni4uODAgRUFzICoqCisqKiBhZGQgNzYuLjMyNjQgRUFzICoqCiAtLS0gRUFz OiA3NiAtLS0KIGNvcmUuZm9ybWF0ID0gMiAoZXh0ZW50cykKIGNvcmUuc2l6ZSA9IDAKIGNvcmUu ZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAwCi1jb3JlLm5hZXh0ZW50cyA9IDEKK2NvcmUu bmFleHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRlcykKIGNvcmUuYWZvcm1h dCA9IDIgKGV4dGVudHMpCi1hLmJteFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291 bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNiwxLDBdCithLmJteFswLTFdID0gW3N0YXJ0b2ZmLHN0YXJ0 YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDMxLDBdIDE6WzMxLDY0LDYsMF0K IAogKiogMSBleHRlbnRzICoqCiAKQEAgLTcxMjcsMTQgKzc2NzEsMTQgQEAKIGNvcmUuc2l6ZSA9 IDUxMTE4NTkyCiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRzID0gMzkxCi1jb3JlLm5h ZXh0ZW50cyA9IDEKK2NvcmUubmFleHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBi eXRlcykKIGNvcmUuYWZvcm1hdCA9IDIgKGV4dGVudHMpCiB1LmJtYnQubGV2ZWwgPSAxCiB1LmJt YnQubnVtcmVjcyA9IDIKIHUuYm1idC5rZXlzWzEtMl0gPSBbc3RhcnRvZmZdIDE6WzBdIDI6WzQz ODRdCi11LmJtYnQucHRyc1sxLTJdID0gMTo0MDAgMjo4MTQ0Ci1hLmJteFswXSA9IFtzdGFydG9m ZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNiwxLDBdCit1LmJtYnQu cHRyc1sxLTJdID0gMTo0MzEgMjo4MTc1CithLmJteFswLTFdID0gW3N0YXJ0b2ZmLHN0YXJ0Ymxv Y2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDMxLDBdIDE6WzMxLDY0LDYsMF0KIAog KioqIEVBIGRpZmZlcmVuY2VzIGJlZm9yZSBhbmQgYWZ0ZXIgZXh0ZW50cyBhZGRlZCAqKioKIEZp bGVzIFRNUC5hMSBhbmQgVE1QLmEyIGFyZSBpZGVudGljYWwKQEAgLTcxNDQsMTYgKzc2ODgsMTYg QEAKIEZpbGVzIFRNUC5hMiBhbmQgVE1QLmEzIGFyZSBpZGVudGljYWwKIAogCi0qKiBhZGQgODEu Ljg1IEVBcyAqKgorKiogYWRkIDgxLi4zMjY4IEVBcyAqKgogLS0tIEVBczogODEgLS0tCiBjb3Jl LmZvcm1hdCA9IDIgKGV4dGVudHMpCiBjb3JlLnNpemUgPSAwCiBjb3JlLmV4dHNpemUgPSAwCiBj b3JlLm5leHRlbnRzID0gMAotY29yZS5uYWV4dGVudHMgPSAxCitjb3JlLm5hZXh0ZW50cyA9IDIK IGNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCiBjb3JlLmFmb3JtYXQgPSAyIChleHRlbnRz KQotYS5ibXhbMF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWdd IDA6WzAsMTYsMSwwXQorYS5ibXhbMC0xXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291 bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNywzMSwwXSAxOlszMSw2NCw2LDBdCiAKICoqIDEgZXh0ZW50 cyAqKgogCkBAIC03Mjc5LDE0ICs3ODIzLDE0IEBACiBjb3JlLnNpemUgPSA1MTExODU5MgogY29y ZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDM5MQotY29yZS5uYWV4dGVudHMgPSAxCitj b3JlLm5hZXh0ZW50cyA9IDIKIGNvcmUuZm9ya29mZiA9IDI0ICgxOTIgYnl0ZXMpCiBjb3JlLmFm b3JtYXQgPSAyIChleHRlbnRzKQogdS5ibWJ0LmxldmVsID0gMQogdS5ibWJ0Lm51bXJlY3MgPSAy CiB1LmJtYnQua2V5c1sxLTJdID0gW3N0YXJ0b2ZmXSAxOlswXSAyOls0Mzg0XQotdS5ibWJ0LnB0 cnNbMS0yXSA9IDE6NDAwIDI6ODE0NAotYS5ibXhbMF0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxi bG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTYsMSwwXQordS5ibWJ0LnB0cnNbMS0yXSA9IDE6 NDMxIDI6ODE3NQorYS5ibXhbMC0xXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQs ZXh0ZW50ZmxhZ10gMDpbMCwxNywzMSwwXSAxOlszMSw2NCw2LDBdCiAKICoqKiBFQSBkaWZmZXJl bmNlcyBiZWZvcmUgYW5kIGFmdGVyIGV4dGVudHMgYWRkZWQgKioqCiBGaWxlcyBUTVAuYTEgYW5k IFRNUC5hMiBhcmUgaWRlbnRpY2FsCkBAIC03Mjk2LDE2ICs3ODQwLDE2IEBACiBGaWxlcyBUTVAu YTIgYW5kIFRNUC5hMyBhcmUgaWRlbnRpY2FsCiAKIAotKiogYWRkIDg2Li45MCBFQXMgKioKKyoq IGFkZCA4Ni4uMzI3MiBFQXMgKioKIC0tLSBFQXM6IDg2IC0tLQogY29yZS5mb3JtYXQgPSAyIChl eHRlbnRzKQogY29yZS5zaXplID0gMAogY29yZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9 IDAKLWNvcmUubmFleHRlbnRzID0gMQorY29yZS5uYWV4dGVudHMgPSAyCiBjb3JlLmZvcmtvZmYg PSAyNCAoMTkyIGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKLWEuYm14WzBdID0g W3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE2LDEsMF0K K2EuYm14WzAtMV0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWdd IDA6WzAsMTcsMzEsMF0gMTpbMzEsNjQsNiwwXQogCiAqKiAxIGV4dGVudHMgKioKIApAQCAtNzQz MSwxNCArNzk3NSwxNCBAQAogY29yZS5zaXplID0gNTExMTg1OTIKIGNvcmUuZXh0c2l6ZSA9IDAK IGNvcmUubmV4dGVudHMgPSAzOTEKLWNvcmUubmFleHRlbnRzID0gMQorY29yZS5uYWV4dGVudHMg PSAyCiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMiAoZXh0 ZW50cykKIHUuYm1idC5sZXZlbCA9IDEKIHUuYm1idC5udW1yZWNzID0gMgogdS5ibWJ0LmtleXNb MS0yXSA9IFtzdGFydG9mZl0gMTpbMF0gMjpbNDM4NF0KLXUuYm1idC5wdHJzWzEtMl0gPSAxOjQw MCAyOjgxNDQKLWEuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRl bnRmbGFnXSAwOlswLDE2LDEsMF0KK3UuYm1idC5wdHJzWzEtMl0gPSAxOjQzMSAyOjgxNzUKK2Eu Ym14WzAtMV0gPSBbc3RhcnRvZmYsc3RhcnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6 WzAsMTcsMzEsMF0gMTpbMzEsNjQsNiwwXQogCiAqKiogRUEgZGlmZmVyZW5jZXMgYmVmb3JlIGFu ZCBhZnRlciBleHRlbnRzIGFkZGVkICoqKgogRmlsZXMgVE1QLmExIGFuZCBUTVAuYTIgYXJlIGlk ZW50aWNhbApAQCAtNzQ0OCwxNiArNzk5MiwxNiBAQAogRmlsZXMgVE1QLmEyIGFuZCBUTVAuYTMg YXJlIGlkZW50aWNhbAogCiAKLSoqIGFkZCA5MS4uOTUgRUFzICoqCisqKiBhZGQgOTEuLjMyNzYg RUFzICoqCiAtLS0gRUFzOiA5MSAtLS0KIGNvcmUuZm9ybWF0ID0gMiAoZXh0ZW50cykKIGNvcmUu c2l6ZSA9IDAKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAwCi1jb3JlLm5hZXh0 ZW50cyA9IDEKK2NvcmUubmFleHRlbnRzID0gMgogY29yZS5mb3Jrb2ZmID0gMjQgKDE5MiBieXRl cykKIGNvcmUuYWZvcm1hdCA9IDIgKGV4dGVudHMpCi1hLmJteFswXSA9IFtzdGFydG9mZixzdGFy dGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwxNiwxLDBdCithLmJteFswLTFdID0g W3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDMxLDBd IDE6WzMxLDY0LDYsMF0KIAogKiogMSBleHRlbnRzICoqCiAKQEAgLTc1ODMsMTQgKzgxMjcsMTQg QEAKIGNvcmUuc2l6ZSA9IDUxMTE4NTkyCiBjb3JlLmV4dHNpemUgPSAwCiBjb3JlLm5leHRlbnRz ID0gMzkxCi1jb3JlLm5hZXh0ZW50cyA9IDEKK2NvcmUubmFleHRlbnRzID0gMgogY29yZS5mb3Jr b2ZmID0gMjQgKDE5MiBieXRlcykKIGNvcmUuYWZvcm1hdCA9IDIgKGV4dGVudHMpCiB1LmJtYnQu bGV2ZWwgPSAxCiB1LmJtYnQubnVtcmVjcyA9IDIKIHUuYm1idC5rZXlzWzEtMl0gPSBbc3RhcnRv ZmZdIDE6WzBdIDI6WzQzODRdCi11LmJtYnQucHRyc1sxLTJdID0gMTo0MDAgMjo4MTQ0Ci1hLmJt eFswXSA9IFtzdGFydG9mZixzdGFydGJsb2NrLGJsb2NrY291bnQsZXh0ZW50ZmxhZ10gMDpbMCwx NiwxLDBdCit1LmJtYnQucHRyc1sxLTJdID0gMTo0MzEgMjo4MTc1CithLmJteFswLTFdID0gW3N0 YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE3LDMxLDBdIDE6 WzMxLDY0LDYsMF0KIAogKioqIEVBIGRpZmZlcmVuY2VzIGJlZm9yZSBhbmQgYWZ0ZXIgZXh0ZW50 cyBhZGRlZCAqKioKIEZpbGVzIFRNUC5hMSBhbmQgVE1QLmEyIGFyZSBpZGVudGljYWwKQEAgLTc2 MDAsMTYgKzgxNDQsMTYgQEAKIEZpbGVzIFRNUC5hMiBhbmQgVE1QLmEzIGFyZSBpZGVudGljYWwK IAogCi0qKiBhZGQgOTYuLjEwMCBFQXMgKioKKyoqIGFkZCA5Ni4uMzI4MCBFQXMgKioKIC0tLSBF QXM6IDk2IC0tLQogY29yZS5mb3JtYXQgPSAyIChleHRlbnRzKQogY29yZS5zaXplID0gMAogY29y ZS5leHRzaXplID0gMAogY29yZS5uZXh0ZW50cyA9IDAKLWNvcmUubmFleHRlbnRzID0gMQorY29y ZS5uYWV4dGVudHMgPSAyCiBjb3JlLmZvcmtvZmYgPSAyNCAoMTkyIGJ5dGVzKQogY29yZS5hZm9y bWF0ID0gMiAoZXh0ZW50cykKLWEuYm14WzBdID0gW3N0YXJ0b2ZmLHN0YXJ0YmxvY2ssYmxvY2tj b3VudCxleHRlbnRmbGFnXSAwOlswLDE2LDEsMF0KK2EuYm14WzAtMV0gPSBbc3RhcnRvZmYsc3Rh cnRibG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMzEsMF0gMTpbMzEsNjQsNiww XQogCiAqKiAxIGV4dGVudHMgKioKIApAQCAtNzczNSwxNCArODI3OSwxNCBAQAogY29yZS5zaXpl ID0gNTExMTg1OTIKIGNvcmUuZXh0c2l6ZSA9IDAKIGNvcmUubmV4dGVudHMgPSAzOTEKLWNvcmUu bmFleHRlbnRzID0gMQorY29yZS5uYWV4dGVudHMgPSAyCiBjb3JlLmZvcmtvZmYgPSAyNCAoMTky IGJ5dGVzKQogY29yZS5hZm9ybWF0ID0gMiAoZXh0ZW50cykKIHUuYm1idC5sZXZlbCA9IDEKIHUu Ym1idC5udW1yZWNzID0gMgogdS5ibWJ0LmtleXNbMS0yXSA9IFtzdGFydG9mZl0gMTpbMF0gMjpb NDM4NF0KLXUuYm1idC5wdHJzWzEtMl0gPSAxOjQwMCAyOjgxNDQKLWEuYm14WzBdID0gW3N0YXJ0 b2ZmLHN0YXJ0YmxvY2ssYmxvY2tjb3VudCxleHRlbnRmbGFnXSAwOlswLDE2LDEsMF0KK3UuYm1i dC5wdHJzWzEtMl0gPSAxOjQzMSAyOjgxNzUKK2EuYm14WzAtMV0gPSBbc3RhcnRvZmYsc3RhcnRi bG9jayxibG9ja2NvdW50LGV4dGVudGZsYWddIDA6WzAsMTcsMzEsMF0gMTpbMzEsNjQsNiwwXQog CiAqKiogRUEgZGlmZmVyZW5jZXMgYmVmb3JlIGFuZCBhZnRlciBleHRlbnRzIGFkZGVkICoqKgog RmlsZXMgVE1QLmExIGFuZCBUTVAuYTIgYXJlIGlkZW50aWNhbAoxMzcJIDIwcwoxMzgJIDY2cwox MzkJIDEwNHMKMTQwCSA0NXMKMTQxCSA2cwoxNjQJIDFzCjE2NQkgMHMKMTY2CSA0cwoxNjcJIDE0 NTJzCjE2OQkgN3MKMTcwCSBbZmFpbGVkLCBleGl0IHN0YXR1cyAxXSAtIG91dHB1dCBtaXNtYXRj aCAoc2VlIDE3MC5vdXQuYmFkKQotLS0gMTcwLm91dAkyMDExLTA1LTExIDIyOjMyOjI0LjAwMDAw MDAwMCArMDUzMAorKysgMTcwLm91dC5iYWQJMjAxMS0wNi0wOSAxNzoxNjo0OC40MjY2MTA5OTkg KzA1MzAKQEAgLTMsMTkgKzMsNSBAQAogIyBzdHJlYW1pbmcKICMgc3luYyBBR3MuLi4KICMgY2hl Y2tpbmcgc3RyZWFtIEFHcy4uLgotKyBwYXNzZWQsIHN0cmVhbXMgYXJlIGluIHNlcGVyYXRlIEFH cwotIyB0ZXN0aW5nIDggMTYgNCA4IDMgMSAwIC4uLi4KLSMgc3RyZWFtaW5nCi0jIHN5bmMgQUdz Li4uCi0jIGNoZWNraW5nIHN0cmVhbSBBR3MuLi4KLSsgcGFzc2VkLCBzdHJlYW1zIGFyZSBpbiBz ZXBlcmF0ZSBBR3MKLSMgdGVzdGluZyA4IDE2IDQgOCAzIDAgMSAuLi4uCi0jIHN0cmVhbWluZwot IyBzeW5jIEFHcy4uLgotIyBjaGVja2luZyBzdHJlYW0gQUdzLi4uCi0rIHBhc3NlZCwgc3RyZWFt cyBhcmUgaW4gc2VwZXJhdGUgQUdzCi0jIHRlc3RpbmcgOCAxNiA0IDggMyAxIDEgLi4uLgotIyBz dHJlYW1pbmcKLSMgc3luYyBBR3MuLi4KLSMgY2hlY2tpbmcgc3RyZWFtIEFHcy4uLgotKyBwYXNz ZWQsIHN0cmVhbXMgYXJlIGluIHNlcGVyYXRlIEFHcworLSBmYWlsZWQsIDMgc3RyZWFtcyB3aXRo IG1hdGNoaW5nIEFHcworKHNlZSAxNzAuZnVsbCBmb3IgZGV0YWlscykKMTcxCSBbZmFpbGVkLCBl eGl0IHN0YXR1cyAxXSAtIG91dHB1dCBtaXNtYXRjaCAoc2VlIDE3MS5vdXQuYmFkKQotLS0gMTcx Lm91dAkyMDExLTA1LTExIDIyOjMyOjI0LjAwMDAwMDAwMCArMDUzMAorKysgMTcxLm91dC5iYWQJ MjAxMS0wNi0wOSAxNzoyNzoyNS45NzQ2MTEwMDAgKzA1MzAKQEAgLTMsMTkgKzMsNSBAQAogIyBz dHJlYW1pbmcKICMgc3luYyBBR3MuLi4KICMgY2hlY2tpbmcgc3RyZWFtIEFHcy4uLgotKyBwYXNz ZWQsIHN0cmVhbXMgYXJlIGluIHNlcGVyYXRlIEFHcwotIyB0ZXN0aW5nIDY0IDE2IDggMTAwIDEg MSAxIC4uLi4KLSMgc3RyZWFtaW5nCi0jIHN5bmMgQUdzLi4uCi0jIGNoZWNraW5nIHN0cmVhbSBB R3MuLi4KLSsgcGFzc2VkLCBzdHJlYW1zIGFyZSBpbiBzZXBlcmF0ZSBBR3MKLSMgdGVzdGluZyA2 NCAxNiA4IDEwMCAxIDAgMCAuLi4uCi0jIHN0cmVhbWluZwotIyBzeW5jIEFHcy4uLgotIyBjaGVj a2luZyBzdHJlYW0gQUdzLi4uCi0rIHBhc3NlZCwgc3RyZWFtcyBhcmUgaW4gc2VwZXJhdGUgQUdz Ci0jIHRlc3RpbmcgNjQgMTYgOCAxMDAgMSAwIDEgLi4uLgotIyBzdHJlYW1pbmcKLSMgc3luYyBB R3MuLi4KLSMgY2hlY2tpbmcgc3RyZWFtIEFHcy4uLgotKyBwYXNzZWQsIHN0cmVhbXMgYXJlIGlu IHNlcGVyYXRlIEFHcworLSBmYWlsZWQsIDcgc3RyZWFtcyB3aXRoIG1hdGNoaW5nIEFHcworKHNl ZSAxNzEuZnVsbCBmb3IgZGV0YWlscykKMTcyCSA0MjhzCjE3MwkgW2ZhaWxlZCwgZXhpdCBzdGF0 dXMgMV0gLSBvdXRwdXQgbWlzbWF0Y2ggKHNlZSAxNzMub3V0LmJhZCkKLS0tIDE3My5vdXQJMjAx MS0wNS0xMSAyMjozMjoyNC4wMDAwMDAwMDAgKzA1MzAKKysrIDE3My5vdXQuYmFkCTIwMTEtMDYt MDkgMTg6MTA6MzAuMTMyNjEwOTk4ICswNTMwCkBAIC04LDE0ICs4LDUgQEAKICMgc3RyZWFtaW5n CiAjIHN5bmMgQUdzLi4uCiAjIGNoZWNraW5nIHN0cmVhbSBBR3MuLi4KLSsgcGFzc2VkLCBzdHJl YW1zIGFyZSBpbiBzZXBlcmF0ZSBBR3MKLSMgdGVzdGluZyA2NCAxNiAzMyA4IDIgMCAwIGZhaWwg Li4uLgotIyBzdHJlYW1pbmcKLSMgc3luYyBBR3MuLi4KLSMgY2hlY2tpbmcgc3RyZWFtIEFHcy4u LgotKyBleHBlY3RlZCBmYWlsdXJlLCBtYXRjaGluZyBBR3MKLSMgdGVzdGluZyA2NCAxNiAzMiA4 IDIgMSAwIC4uLi4KLSMgc3RyZWFtaW5nCi0jIHN5bmMgQUdzLi4uCi0jIGNoZWNraW5nIHN0cmVh bSBBR3MuLi4KLSsgcGFzc2VkLCBzdHJlYW1zIGFyZSBpbiBzZXBlcmF0ZSBBR3MKKy0gZmFpbGVk LCAxNCBzdHJlYW1zIHdpdGggbWF0Y2hpbmcgQUdzCisoc2VlIDE3My5mdWxsIGZvciBkZXRhaWxz KQoxNzQJIDQxNHMKMTc4CSAzOXMKMTc5CSAtIG91dHB1dCBtaXNtYXRjaCAoc2VlIDE3OS5vdXQu YmFkKQotLS0gMTc5Lm91dAkyMDExLTA1LTExIDIyOjMyOjI0LjAwMDAwMDAwMCArMDUzMAorKysg MTc5Lm91dC5iYWQJMjAxMS0wNi0wOSAxODoxODozNy41NDM2MTEwMDAgKzA1MzAKQEAgLTEgKzEs MTAxMCBAQAogUUEgb3V0cHV0IGNyZWF0ZWQgYnkgMTc5Cit1bW91bnQ6IC9ob21lL21hbmlzaC9Q cm9qZWN0cy94ZnN0ZXN0cy9zZGI0OiBkZXZpY2UgaXMgYnVzeS4KKyAgICAgICAgKEluIHNvbWUg Y2FzZXMgdXNlZnVsIGluZm8gYWJvdXQgcHJvY2Vzc2VzIHRoYXQgdXNlCisgICAgICAgICB0aGUg ZGV2aWNlIGlzIGZvdW5kIGJ5IGxzb2YoOCkgb3IgZnVzZXIoMSkpCittb3VudDogL2Rldi9zZGI0 IGFscmVhZHkgbW91bnRlZCBvciAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNCBi dXN5Cittb3VudDogYWNjb3JkaW5nIHRvIG10YWIsIC9kZXYvc2RiNCBpcyBhbHJlYWR5IG1vdW50 ZWQgb24gL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQKK3Vtb3VudDogL2hvbWUv bWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQ6IGRldmljZSBpcyBidXN5LgorICAgICAgICAo SW4gc29tZSBjYXNlcyB1c2VmdWwgaW5mbyBhYm91dCBwcm9jZXNzZXMgdGhhdCB1c2UKKyAgICAg ICAgIHRoZSBkZXZpY2UgaXMgZm91bmQgYnkgbHNvZig4KSBvciBmdXNlcigxKSkKK21vdW50OiAv ZGV2L3NkYjQgYWxyZWFkeSBtb3VudGVkIG9yIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0 cy9zZGI0IGJ1c3kKK21vdW50OiBhY2NvcmRpbmcgdG8gbXRhYiwgL2Rldi9zZGI0IGlzIGFscmVh ZHkgbW91bnRlZCBvbiAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xIG1pc3NpbmcgLSBmc3luYyBmYWls ZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvMiBtaXNzaW5nIC0g ZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0LzMg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC80IG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2pl Y3RzL3hmc3Rlc3RzL3NkYjQvNSBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21h bmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0LzYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83IG1pc3NpbmcgLSBmc3luYyBm YWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvOCBtaXNzaW5n IC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0 LzkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC8xMCBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Q cm9qZWN0cy94ZnN0ZXN0cy9zZGI0LzExIG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hv bWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvMTIgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMyBtaXNzaW5nIC0g ZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0LzE0 IG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rl c3RzL3NkYjQvMTUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC8xNiBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21l L21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0LzE3IG1pc3NpbmcgLSBmc3luYyBmYWlsZWQK K2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvMTggbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xOSBt aXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0 cy9zZGI0LzIwIG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2pl Y3RzL3hmc3Rlc3RzL3NkYjQvMjEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMiBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitm aWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0LzIzIG1pc3NpbmcgLSBmc3lu YyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvMjQgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC8yNSBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0 cy94ZnN0ZXN0cy9zZGI0LzI2IG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFu aXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvMjcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yOCBtaXNzaW5nIC0gZnN5bmMg ZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0LzI5IG1pc3Np bmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3Nk YjQvMzAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC8zMSBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlz aC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0LzMyIG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUg L2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvMzMgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNCBtaXNzaW5n IC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0 LzM1IG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hm c3Rlc3RzL3NkYjQvMzYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNyBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9o b21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0LzM4IG1pc3NpbmcgLSBmc3luYyBmYWls ZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvMzkgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80 MCBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0 ZXN0cy9zZGI0LzQxIG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1By b2plY3RzL3hmc3Rlc3RzL3NkYjQvNDIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MyBtaXNzaW5nIC0gZnN5bmMgZmFpbGVk CitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0LzQ0IG1pc3NpbmcgLSBm c3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvNDUg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC80NiBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9q ZWN0cy94ZnN0ZXN0cy9zZGI0LzQ3IG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUv bWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvNDggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80OSBtaXNzaW5nIC0gZnN5 bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0LzUwIG1p c3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3Rz L3NkYjQvNTEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC81MiBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21h bmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0LzUzIG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2Zp bGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvNTQgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NSBtaXNz aW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9z ZGI0LzU2IG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3Rz L3hmc3Rlc3RzL3NkYjQvNTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81OCBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxl IC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0LzU5IG1pc3NpbmcgLSBmc3luYyBm YWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvNjAgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC82MSBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94 ZnN0ZXN0cy9zZGI0LzYyIG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNo L1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvNjMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NCBtaXNzaW5nIC0gZnN5bmMgZmFp bGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0LzY1IG1pc3Npbmcg LSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQv NjYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC82NyBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Q cm9qZWN0cy94ZnN0ZXN0cy9zZGI0LzY4IG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hv bWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvNjkgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MCBtaXNzaW5nIC0g ZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0Lzcx IG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rl c3RzL3NkYjQvNzIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC83MyBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21l L21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0Lzc0IG1pc3NpbmcgLSBmc3luYyBmYWlsZWQK K2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvNzUgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NiBt aXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0 cy9zZGI0Lzc3IG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2pl Y3RzL3hmc3Rlc3RzL3NkYjQvNzggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83OSBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitm aWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0LzgwIG1pc3NpbmcgLSBmc3lu YyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvODEgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC84MiBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0 cy94ZnN0ZXN0cy9zZGI0LzgzIG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFu aXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvODQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NSBtaXNzaW5nIC0gZnN5bmMg ZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0Lzg2IG1pc3Np bmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3Nk YjQvODcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC84OCBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlz aC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0Lzg5IG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUg L2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvOTAgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MSBtaXNzaW5n IC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0 LzkyIG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hm c3Rlc3RzL3NkYjQvOTMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC85NCBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9o b21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0Lzk1IG1pc3NpbmcgLSBmc3luYyBmYWls ZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvOTYgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85 NyBtaXNzaW5nIC0gZnN5bmMgZmFpbGVkCitmaWxlIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0 ZXN0cy9zZGI0Lzk4IG1pc3NpbmcgLSBmc3luYyBmYWlsZWQKK2ZpbGUgL2hvbWUvbWFuaXNoL1By b2plY3RzL3hmc3Rlc3RzL3NkYjQvOTkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMDAgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMDEgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8x MDIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC8xMDMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMDQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMDUgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMDYgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC8xMDcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC8xMDggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMDkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMTAgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMTEgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC8xMTIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC8xMTMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMTQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMTUgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMTYg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC8xMTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC8xMTggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMTkgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMjAgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8x MjEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC8xMjIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMjMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMjQgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMjUgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC8xMjYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC8xMjcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMjggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMjkgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMzAgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC8xMzEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC8xMzIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMzMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMzQgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMzUg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC8xMzYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC8xMzcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMzggbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xMzkgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8x NDAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC8xNDEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNDIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNDMgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNDQgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC8xNDUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC8xNDYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNDcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNDggbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNDkgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC8xNTAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC8xNTEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNTIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNTMgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNTQg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC8xNTUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC8xNTYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNTcgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNTggbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8x NTkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC8xNjAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNjEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNjIgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNjMgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC8xNjQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC8xNjUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNjYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNjcgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNjggbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC8xNjkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC8xNzAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNzEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNzIgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNzMg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC8xNzQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC8xNzUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNzYgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xNzcgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8x NzggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC8xNzkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC8xODAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xODEgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xODIgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC8xODMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC8xODQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xODUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xODYgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xODcgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC8xODggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC8xODkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xOTAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xOTEgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xOTIg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC8xOTMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC8xOTQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xOTUgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xOTYgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8x OTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC8xOTggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC8xOTkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMDAgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMDEgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC8yMDIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC8yMDMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMDQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMDUgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMDYgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC8yMDcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC8yMDggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMDkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMTAgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMTEg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC8yMTIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC8yMTMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMTQgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMTUgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8y MTYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC8yMTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMTggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMTkgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMjAgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC8yMjEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC8yMjIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMjMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMjQgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMjUgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC8yMjYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC8yMjcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMjggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMjkgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMzAg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC8yMzEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC8yMzIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMzMgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMzQgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8y MzUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC8yMzYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMzcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMzggbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yMzkgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC8yNDAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC8yNDEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNDIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNDMgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNDQgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC8yNDUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC8yNDYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNDcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNDggbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNDkg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC8yNTAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC8yNTEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNTIgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNTMgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8y NTQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC8yNTUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNTYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNTcgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNTggbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC8yNTkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC8yNjAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNjEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNjIgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNjMgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC8yNjQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC8yNjUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNjYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNjcgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNjgg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC8yNjkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC8yNzAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNzEgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNzIgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8y NzMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC8yNzQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNzUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNzYgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yNzcgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC8yNzggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC8yNzkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yODAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yODEgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yODIgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC8yODMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC8yODQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yODUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yODYgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yODcg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC8yODggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC8yODkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yOTAgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yOTEgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8y OTIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC8yOTMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC8yOTQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yOTUgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yOTYgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC8yOTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC8yOTggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8yOTkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMDAgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMDEgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC8zMDIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC8zMDMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMDQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMDUgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMDYg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC8zMDcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC8zMDggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMDkgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMTAgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8z MTEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC8zMTIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMTMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMTQgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMTUgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC8zMTYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC8zMTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMTggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMTkgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMjAgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC8zMjEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC8zMjIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMjMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMjQgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMjUg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC8zMjYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC8zMjcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMjggbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMjkgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8z MzAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC8zMzEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMzIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMzMgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMzQgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC8zMzUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC8zMzYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMzcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMzggbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zMzkgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC8zNDAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC8zNDEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNDIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNDMgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNDQg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC8zNDUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC8zNDYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNDcgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNDggbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8z NDkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC8zNTAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNTEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNTIgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNTMgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC8zNTQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC8zNTUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNTYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNTcgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNTggbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC8zNTkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC8zNjAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNjEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNjIgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNjMg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC8zNjQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC8zNjUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNjYgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNjcgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8z NjggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC8zNjkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNzAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNzEgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNzIgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC8zNzMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC8zNzQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNzUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNzYgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zNzcgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC8zNzggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC8zNzkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zODAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zODEgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zODIg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC8zODMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC8zODQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zODUgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zODYgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8z ODcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC8zODggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC8zODkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zOTAgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zOTEgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC8zOTIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC8zOTMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zOTQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zOTUgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zOTYgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC8zOTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC8zOTggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8zOTkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MDAgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MDEg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC80MDIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC80MDMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MDQgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MDUgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80 MDYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC80MDcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC80MDggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MDkgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MTAgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC80MTEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC80MTIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MTMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MTQgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MTUgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC80MTYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC80MTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MTggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MTkgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MjAg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC80MjEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC80MjIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MjMgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MjQgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80 MjUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC80MjYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC80MjcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MjggbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MjkgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC80MzAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC80MzEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MzIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MzMgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MzQgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC80MzUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC80MzYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MzcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80MzggbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80Mzkg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC80NDAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC80NDEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NDIgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NDMgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80 NDQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC80NDUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC80NDYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NDcgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NDggbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC80NDkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC80NTAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NTEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NTIgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NTMgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC80NTQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC80NTUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NTYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NTcgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NTgg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC80NTkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC80NjAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NjEgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NjIgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80 NjMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC80NjQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC80NjUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NjYgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NjcgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC80NjggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC80NjkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NzAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NzEgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NzIgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC80NzMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC80NzQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NzUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80NzYgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80Nzcg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC80NzggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC80NzkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80ODAgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80ODEgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80 ODIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC80ODMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC80ODQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80ODUgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80ODYgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC80ODcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC80ODggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80ODkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80OTAgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80OTEgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC80OTIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC80OTMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80OTQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80OTUgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80OTYg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC80OTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC80OTggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC80OTkgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MDAgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81 MDEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC81MDIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC81MDMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MDQgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MDUgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC81MDYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC81MDcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MDggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MDkgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MTAgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC81MTEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC81MTIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MTMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MTQgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MTUg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC81MTYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC81MTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MTggbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MTkgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81 MjAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC81MjEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC81MjIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MjMgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MjQgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC81MjUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC81MjYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MjcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MjggbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MjkgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC81MzAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC81MzEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MzIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MzMgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MzQg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC81MzUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC81MzYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MzcgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81MzggbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81 MzkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC81NDAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC81NDEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NDIgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NDMgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC81NDQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC81NDUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NDYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NDcgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NDggbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC81NDkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC81NTAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NTEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NTIgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NTMg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC81NTQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC81NTUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NTYgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NTcgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81 NTggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC81NTkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC81NjAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NjEgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NjIgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC81NjMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC81NjQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NjUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NjYgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NjcgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC81NjggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC81NjkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NzAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NzEgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NzIg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC81NzMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC81NzQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NzUgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81NzYgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81 NzcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC81NzggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC81NzkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81ODAgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81ODEgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC81ODIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC81ODMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81ODQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81ODUgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81ODYgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC81ODcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC81ODggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81ODkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81OTAgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81OTEg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC81OTIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC81OTMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81OTQgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81OTUgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81 OTYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC81OTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC81OTggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC81OTkgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MDAgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC82MDEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC82MDIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MDMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MDQgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MDUgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC82MDYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC82MDcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MDggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MDkgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MTAg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC82MTEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC82MTIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MTMgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MTQgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82 MTUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC82MTYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC82MTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MTggbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MTkgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC82MjAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC82MjEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MjIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MjMgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MjQgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC82MjUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC82MjYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MjcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MjggbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82Mjkg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC82MzAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC82MzEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MzIgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MzMgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82 MzQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC82MzUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC82MzYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MzcgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82MzggbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC82MzkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC82NDAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NDEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NDIgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NDMgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC82NDQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC82NDUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NDYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NDcgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NDgg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC82NDkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC82NTAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NTEgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NTIgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82 NTMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC82NTQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC82NTUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NTYgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NTcgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC82NTggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC82NTkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NjAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NjEgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NjIgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC82NjMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC82NjQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NjUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NjYgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82Njcg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC82NjggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC82NjkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NzAgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NzEgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82 NzIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC82NzMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC82NzQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NzUgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NzYgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC82NzcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC82NzggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82NzkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82ODAgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82ODEgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC82ODIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC82ODMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82ODQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82ODUgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82ODYg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC82ODcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC82ODggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82ODkgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82OTAgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82 OTEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC82OTIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC82OTMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82OTQgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82OTUgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC82OTYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC82OTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82OTggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC82OTkgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MDAgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC83MDEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC83MDIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MDMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MDQgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MDUg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC83MDYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC83MDcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MDggbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MDkgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83 MTAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC83MTEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC83MTIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MTMgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MTQgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC83MTUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC83MTYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MTggbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MTkgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC83MjAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC83MjEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MjIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MjMgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MjQg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC83MjUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC83MjYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MjcgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MjggbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83 MjkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC83MzAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC83MzEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MzIgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MzMgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC83MzQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC83MzUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MzYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MzcgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83MzggbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC83MzkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC83NDAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NDEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NDIgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NDMg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC83NDQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC83NDUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NDYgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NDcgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83 NDggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC83NDkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC83NTAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NTEgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NTIgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC83NTMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC83NTQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NTUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NTYgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NTcgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC83NTggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC83NTkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NjAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NjEgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NjIg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC83NjMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC83NjQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NjUgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NjYgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83 NjcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC83NjggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC83NjkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NzAgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NzEgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC83NzIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC83NzMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NzQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NzUgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NzYgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC83NzcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC83NzggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83NzkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83ODAgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83ODEg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC83ODIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC83ODMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83ODQgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83ODUgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83 ODYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC83ODcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC83ODggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83ODkgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83OTAgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC83OTEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC83OTIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83OTMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83OTQgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83OTUgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC83OTYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC83OTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83OTggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC83OTkgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MDAg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC84MDEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC84MDIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MDMgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MDQgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84 MDUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC84MDYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC84MDcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MDggbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MDkgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC84MTAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC84MTEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MTIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MTMgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MTQgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC84MTUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC84MTYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MTggbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MTkg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC84MjAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC84MjEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MjIgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MjMgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84 MjQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC84MjUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC84MjYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MjcgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MjggbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC84MjkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC84MzAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MzEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MzIgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MzMgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC84MzQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC84MzUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MzYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84MzcgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84Mzgg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC84MzkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC84NDAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NDEgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NDIgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84 NDMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC84NDQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC84NDUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NDYgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NDcgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC84NDggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC84NDkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NTAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NTEgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NTIgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC84NTMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC84NTQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NTUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NTYgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NTcg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC84NTggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC84NTkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NjAgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NjEgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84 NjIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC84NjMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC84NjQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NjUgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NjYgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC84NjcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC84NjggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NjkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NzAgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NzEgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC84NzIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC84NzMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NzQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NzUgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NzYg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC84NzcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC84NzggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84NzkgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84ODAgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84 ODEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC84ODIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC84ODMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84ODQgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84ODUgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC84ODYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC84ODcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84ODggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84ODkgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84OTAgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC84OTEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC84OTIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84OTMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84OTQgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84OTUg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC84OTYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC84OTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84OTggbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC84OTkgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85 MDAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC85MDEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC85MDIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MDMgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MDQgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC85MDUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC85MDYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MDcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MDggbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MDkgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC85MTAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC85MTEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MTIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MTMgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MTQg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC85MTUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC85MTYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MTcgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MTggbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85 MTkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC85MjAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC85MjEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MjIgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MjMgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC85MjQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC85MjUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MjYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MjcgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MjggbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC85MjkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC85MzAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MzEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MzIgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MzMg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC85MzQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC85MzUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MzYgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85MzcgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85 MzggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC85MzkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC85NDAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NDEgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NDIgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC85NDMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC85NDQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NDUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NDYgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NDcgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC85NDggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC85NDkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NTAgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NTEgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NTIg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC85NTMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC85NTQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NTUgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NTYgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85 NTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC85NTggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC85NTkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NjAgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NjEgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC85NjIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC85NjMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NjQgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NjUgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NjYgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC85NjcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC85NjggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NjkgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NzAgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NzEg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC85NzIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC85NzMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NzQgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NzUgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85 NzYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC85NzcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC85NzggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85NzkgbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85ODAgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri NC85ODEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC85ODIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5p c2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85ODMgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmls ZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85ODQgbWlzc2luZyAtIGZzeW5j IGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85ODUgbWlz c2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC85ODYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiNC85ODcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85ODggbWlzc2luZyAtIGZzeW5jIGZhaWxlZAor ZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85ODkgbWlzc2luZyAtIGZz eW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85OTAg bWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiNC85OTEgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC85OTIgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85OTMgbWlzc2luZyAtIGZzeW5jIGZhaWxl ZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85OTQgbWlzc2luZyAt IGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85 OTUgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiNC85OTYgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC85OTcgbWlzc2luZyAtIGZzeW5jIGZhaWxlZAorZmlsZSAv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85OTggbWlzc2luZyAtIGZzeW5jIGZh aWxlZAorZmlsZSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC85OTkgbWlzc2lu ZyAtIGZzeW5jIGZhaWxlZAoxODAJIFtmYWlsZWQsIGV4aXQgc3RhdHVzIDFdIC0gb3V0cHV0IG1p c21hdGNoIChzZWUgMTgwLm91dC5iYWQpCi0tLSAxODAub3V0CTIwMTEtMDUtMTEgMjI6MzI6MjQu MDAwMDAwMDAwICswNTMwCisrKyAxODAub3V0LmJhZAkyMDExLTA2LTA5IDE4OjE4OjM5LjY2NjYx MDk5OSArMDUzMApAQCAtMSArMSwzIEBACiBRQSBvdXRwdXQgY3JlYXRlZCBieSAxODAKK2NvbW1v bi5jb25maWc6IEVycm9yOiAkU0NSQVRDSF9NTlQgKC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0 ZXN0cy9zZGI0KSBpcyBub3QgYSBkaXJlY3RvcnkKKy4vMTgwOiBsaW5lIDM4OiBfY2xlYW51cF90 ZXN0ZGlyOiBjb21tYW5kIG5vdCBmb3VuZAoxODEJIFtmYWlsZWQsIGV4aXQgc3RhdHVzIDFdIC0g b3V0cHV0IG1pc21hdGNoIChzZWUgMTgxLm91dC5iYWQpCi0tLSAxODEub3V0CTIwMTEtMDUtMTEg MjI6MzI6MjQuMDAwMDAwMDAwICswNTMwCisrKyAxODEub3V0LmJhZAkyMDExLTA2LTA5IDE4OjE4 OjQwLjc1NDYxMDk5OSArMDUzMApAQCAtMSwxNSArMSwyIEBACiBRQSBvdXRwdXQgY3JlYXRlZCBi eSAxODEKLW1rZnMKLW1vdW50Ci1vcGVuIGFuZCB1bmxpbmsgMjAwIGZpbGVzIHdpdGggRUFzCi1n b2Rvd24KLXVubW91bnQKLWxvZ3ByaW50IGFmdGVyIGdvaW5nIGRvd24uLi4KLWRpcnR5IGxvZwot bW91bnQgd2l0aCByZXBsYXkKLWdvZG93bgotdW5tb3VudAotbG9ncHJpbnQgYWZ0ZXIgZ29pbmcg ZG93bi4uLgotZGlydHkgbG9nCi1sb2dwcmludCB0byBjaGVjayBmb3IgQ0xFQVJfQUdJX0JVQ0tF VC4uLgotTm8gQ0xFQVJfQUdJX0JVQ0tFVCBmb3VuZCBpbiB0cmFuc2FjdGlvbnMgLSBncmVhdCAt IHRlc3QgcGFzc2VkIDopCitjb21tb24uY29uZmlnOiBFcnJvcjogJFNDUkFUQ0hfTU5UICgvaG9t ZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNCkgaXMgbm90IGEgZGlyZWN0b3J5CjE4Mgkg W2ZhaWxlZCwgZXhpdCBzdGF0dXMgMV0gLSBvdXRwdXQgbWlzbWF0Y2ggKHNlZSAxODIub3V0LmJh ZCkKLS0tIDE4Mi5vdXQJMjAxMS0wNS0xMSAyMjozMjoyNC4wMDAwMDAwMDAgKzA1MzAKKysrIDE4 Mi5vdXQuYmFkCTIwMTEtMDYtMDkgMTg6MTg6NDEuOTM5NjExMDAwICswNTMwCkBAIC0xICsxLDMg QEAKIFFBIG91dHB1dCBjcmVhdGVkIGJ5IDE4MgorY29tbW9uLmNvbmZpZzogRXJyb3I6ICRTQ1JB VENIX01OVCAoL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQpIGlzIG5vdCBhIGRp cmVjdG9yeQorLi8xODI6IGxpbmUgMzg6IF9jbGVhbnVwX3Rlc3RkaXI6IGNvbW1hbmQgbm90IGZv dW5kCjE4MwkgW2ZhaWxlZCwgZXhpdCBzdGF0dXMgMV0gLSBvdXRwdXQgbWlzbWF0Y2ggKHNlZSAx ODMub3V0LmJhZCkKLS0tIDE4My5vdXQJMjAxMS0wNS0xMSAyMjozMjoyNC4wMDAwMDAwMDAgKzA1 MzAKKysrIDE4My5vdXQuYmFkCTIwMTEtMDYtMDkgMTg6MTg6NDIuOTM0NjExMDAwICswNTMwCkBA IC0xLDQgKzEsMiBAQAogUUEgb3V0cHV0IGNyZWF0ZWQgYnkgMTgzCi1TdGFydCBvcmlnaW5hbCBi dWxrc3RhdF91bmxpbmtfdGVzdCB3aXRoIC1yIHN3aXRjaAotUnVuaW5nIGV4dGVuZGVkIGNoZWNr cy4KLUl0ZXJhdGlvbiAwIC4uLiAoMTAwIGZpbGVzKXBhc3NlZAorY29tbW9uLmNvbmZpZzogRXJy b3I6ICRTQ1JBVENIX01OVCAoL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQpIGlz IG5vdCBhIGRpcmVjdG9yeQoxODQJIFtmYWlsZWQsIGV4aXQgc3RhdHVzIDFdIC0gb3V0cHV0IG1p c21hdGNoIChzZWUgMTg0Lm91dC5iYWQpCi0tLSAxODQub3V0CTIwMTEtMDUtMTEgMjI6MzI6MjQu MDAwMDAwMDAwICswNTMwCisrKyAxODQub3V0LmJhZAkyMDExLTA2LTA5IDE4OjE4OjQ0LjIxNzYx MDk5OSArMDUzMApAQCAtMSArMSwzIEBACiBRQSBvdXRwdXQgY3JlYXRlZCBieSAxODQgLSBzaWxl bmNlIGlzIGdvbGRlbgorY29tbW9uLmNvbmZpZzogRXJyb3I6ICRTQ1JBVENIX01OVCAoL2hvbWUv bWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQpIGlzIG5vdCBhIGRpcmVjdG9yeQorLi8xODQ6 IGxpbmUgMzk6IF9jbGVhbnVwX3Rlc3RkaXI6IGNvbW1hbmQgbm90IGZvdW5kCjE4NgkgW2ZhaWxl ZCwgZXhpdCBzdGF0dXMgMV0gLSBvdXRwdXQgbWlzbWF0Y2ggKHNlZSAxODYub3V0LmJhZCkKLS0t IDE4Ni5vdXQJMjAxMS0wNS0xMSAyMjozMjoyNC4wMDAwMDAwMDAgKzA1MzAKKysrIDE4Ni5vdXQu YmFkCTIwMTEtMDYtMDkgMTg6MTg6NDUuMzE3NjExMDAwICswNTMwCkBAIC0xLDI5MCArMSwyIEBA CiBRQSBvdXRwdXQgY3JlYXRlZCBieSAxODYKLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci1BVFRSMgotZm9ya29mZiA9IDAKLXUuc2ZkaXIyLmhkci5jb3VudCA9IDAKLXUuc2Zk aXIyLmhkci5pOGNvdW50ID0gMAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0K LSoqKiBjcmVhdGUgMjUgZGlyZW50cyAqKioKLQotCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLUFUVFIyCi1mb3Jrb2ZmID0gMAotdS5zZmRpcjIuaGRyLmNvdW50ID0gMjUKLXUu c2ZkaXIyLmhkci5pOGNvdW50ID0gMAotdS5zZmRpcjIubGlzdFswXS5uYW1lbGVuID0gNgotdS5z ZmRpcjIubGlzdFswXS5vZmZzZXQgPSAweDMwCi11LnNmZGlyMi5saXN0WzBdLm5hbWUgPSAiZmls ZS4xIgotdS5zZmRpcjIubGlzdFsxXS5uYW1lbGVuID0gNgotdS5zZmRpcjIubGlzdFsxXS5vZmZz ZXQgPSAweDQ4Ci11LnNmZGlyMi5saXN0WzFdLm5hbWUgPSAiZmlsZS4yIgotdS5zZmRpcjIubGlz dFsyXS5uYW1lbGVuID0gNgotdS5zZmRpcjIubGlzdFsyXS5vZmZzZXQgPSAweDYwCi11LnNmZGly Mi5saXN0WzJdLm5hbWUgPSAiZmlsZS4zIgotdS5zZmRpcjIubGlzdFszXS5uYW1lbGVuID0gNgot dS5zZmRpcjIubGlzdFszXS5vZmZzZXQgPSAweDc4Ci11LnNmZGlyMi5saXN0WzNdLm5hbWUgPSAi ZmlsZS40IgotdS5zZmRpcjIubGlzdFs0XS5uYW1lbGVuID0gNgotdS5zZmRpcjIubGlzdFs0XS5v ZmZzZXQgPSAweDkwCi11LnNmZGlyMi5saXN0WzRdLm5hbWUgPSAiZmlsZS41IgotdS5zZmRpcjIu bGlzdFs1XS5uYW1lbGVuID0gNgotdS5zZmRpcjIubGlzdFs1XS5vZmZzZXQgPSAweGE4Ci11LnNm ZGlyMi5saXN0WzVdLm5hbWUgPSAiZmlsZS42IgotdS5zZmRpcjIubGlzdFs2XS5uYW1lbGVuID0g NgotdS5zZmRpcjIubGlzdFs2XS5vZmZzZXQgPSAweGMwCi11LnNmZGlyMi5saXN0WzZdLm5hbWUg PSAiZmlsZS43IgotdS5zZmRpcjIubGlzdFs3XS5uYW1lbGVuID0gNgotdS5zZmRpcjIubGlzdFs3 XS5vZmZzZXQgPSAweGQ4Ci11LnNmZGlyMi5saXN0WzddLm5hbWUgPSAiZmlsZS44IgotdS5zZmRp cjIubGlzdFs4XS5uYW1lbGVuID0gNgotdS5zZmRpcjIubGlzdFs4XS5vZmZzZXQgPSAweGYwCi11 LnNmZGlyMi5saXN0WzhdLm5hbWUgPSAiZmlsZS45IgotdS5zZmRpcjIubGlzdFs5XS5uYW1lbGVu ID0gNwotdS5zZmRpcjIubGlzdFs5XS5vZmZzZXQgPSAweDEwOAotdS5zZmRpcjIubGlzdFs5XS5u YW1lID0gImZpbGUuMTAiCi11LnNmZGlyMi5saXN0WzEwXS5uYW1lbGVuID0gNwotdS5zZmRpcjIu bGlzdFsxMF0ub2Zmc2V0ID0gMHgxMjAKLXUuc2ZkaXIyLmxpc3RbMTBdLm5hbWUgPSAiZmlsZS4x MSIKLXUuc2ZkaXIyLmxpc3RbMTFdLm5hbWVsZW4gPSA3Ci11LnNmZGlyMi5saXN0WzExXS5vZmZz ZXQgPSAweDEzOAotdS5zZmRpcjIubGlzdFsxMV0ubmFtZSA9ICJmaWxlLjEyIgotdS5zZmRpcjIu bGlzdFsxMl0ubmFtZWxlbiA9IDcKLXUuc2ZkaXIyLmxpc3RbMTJdLm9mZnNldCA9IDB4MTUwCi11 LnNmZGlyMi5saXN0WzEyXS5uYW1lID0gImZpbGUuMTMiCi11LnNmZGlyMi5saXN0WzEzXS5uYW1l bGVuID0gNwotdS5zZmRpcjIubGlzdFsxM10ub2Zmc2V0ID0gMHgxNjgKLXUuc2ZkaXIyLmxpc3Rb MTNdLm5hbWUgPSAiZmlsZS4xNCIKLXUuc2ZkaXIyLmxpc3RbMTRdLm5hbWVsZW4gPSA3Ci11LnNm ZGlyMi5saXN0WzE0XS5vZmZzZXQgPSAweDE4MAotdS5zZmRpcjIubGlzdFsxNF0ubmFtZSA9ICJm aWxlLjE1IgotdS5zZmRpcjIubGlzdFsxNV0ubmFtZWxlbiA9IDcKLXUuc2ZkaXIyLmxpc3RbMTVd Lm9mZnNldCA9IDB4MTk4Ci11LnNmZGlyMi5saXN0WzE1XS5uYW1lID0gImZpbGUuMTYiCi11LnNm ZGlyMi5saXN0WzE2XS5uYW1lbGVuID0gNwotdS5zZmRpcjIubGlzdFsxNl0ub2Zmc2V0ID0gMHgx YjAKLXUuc2ZkaXIyLmxpc3RbMTZdLm5hbWUgPSAiZmlsZS4xNyIKLXUuc2ZkaXIyLmxpc3RbMTdd Lm5hbWVsZW4gPSA3Ci11LnNmZGlyMi5saXN0WzE3XS5vZmZzZXQgPSAweDFjOAotdS5zZmRpcjIu bGlzdFsxN10ubmFtZSA9ICJmaWxlLjE4IgotdS5zZmRpcjIubGlzdFsxOF0ubmFtZWxlbiA9IDcK LXUuc2ZkaXIyLmxpc3RbMThdLm9mZnNldCA9IDB4MWUwCi11LnNmZGlyMi5saXN0WzE4XS5uYW1l ID0gImZpbGUuMTkiCi11LnNmZGlyMi5saXN0WzE5XS5uYW1lbGVuID0gNwotdS5zZmRpcjIubGlz dFsxOV0ub2Zmc2V0ID0gMHgxZjgKLXUuc2ZkaXIyLmxpc3RbMTldLm5hbWUgPSAiZmlsZS4yMCIK LXUuc2ZkaXIyLmxpc3RbMjBdLm5hbWVsZW4gPSA3Ci11LnNmZGlyMi5saXN0WzIwXS5vZmZzZXQg PSAweDIxMAotdS5zZmRpcjIubGlzdFsyMF0ubmFtZSA9ICJmaWxlLjIxIgotdS5zZmRpcjIubGlz dFsyMV0ubmFtZWxlbiA9IDcKLXUuc2ZkaXIyLmxpc3RbMjFdLm9mZnNldCA9IDB4MjI4Ci11LnNm ZGlyMi5saXN0WzIxXS5uYW1lID0gImZpbGUuMjIiCi11LnNmZGlyMi5saXN0WzIyXS5uYW1lbGVu ID0gNwotdS5zZmRpcjIubGlzdFsyMl0ub2Zmc2V0ID0gMHgyNDAKLXUuc2ZkaXIyLmxpc3RbMjJd Lm5hbWUgPSAiZmlsZS4yMyIKLXUuc2ZkaXIyLmxpc3RbMjNdLm5hbWVsZW4gPSA3Ci11LnNmZGly Mi5saXN0WzIzXS5vZmZzZXQgPSAweDI1OAotdS5zZmRpcjIubGlzdFsyM10ubmFtZSA9ICJmaWxl LjI0IgotdS5zZmRpcjIubGlzdFsyNF0ubmFtZWxlbiA9IDcKLXUuc2ZkaXIyLmxpc3RbMjRdLm9m ZnNldCA9IDB4MjcwCi11LnNmZGlyMi5saXN0WzI0XS5uYW1lID0gImZpbGUuMjUiCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKioqIGNyZWF0ZSBFQXMgc3RhcnQgMSBlbmQg MSAqKioKLQotCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLUFUVFIKLUFUVFIy Ci1mb3Jrb2ZmID0gNDcKLXUuc2ZkaXIyLmhkci5jb3VudCA9IDI1Ci11LnNmZGlyMi5oZHIuaThj b3VudCA9IDAKLXUuc2ZkaXIyLmxpc3RbMF0ubmFtZWxlbiA9IDYKLXUuc2ZkaXIyLmxpc3RbMF0u b2Zmc2V0ID0gMHgzMAotdS5zZmRpcjIubGlzdFswXS5uYW1lID0gImZpbGUuMSIKLXUuc2ZkaXIy Lmxpc3RbMV0ubmFtZWxlbiA9IDYKLXUuc2ZkaXIyLmxpc3RbMV0ub2Zmc2V0ID0gMHg0OAotdS5z ZmRpcjIubGlzdFsxXS5uYW1lID0gImZpbGUuMiIKLXUuc2ZkaXIyLmxpc3RbMl0ubmFtZWxlbiA9 IDYKLXUuc2ZkaXIyLmxpc3RbMl0ub2Zmc2V0ID0gMHg2MAotdS5zZmRpcjIubGlzdFsyXS5uYW1l ID0gImZpbGUuMyIKLXUuc2ZkaXIyLmxpc3RbM10ubmFtZWxlbiA9IDYKLXUuc2ZkaXIyLmxpc3Rb M10ub2Zmc2V0ID0gMHg3OAotdS5zZmRpcjIubGlzdFszXS5uYW1lID0gImZpbGUuNCIKLXUuc2Zk aXIyLmxpc3RbNF0ubmFtZWxlbiA9IDYKLXUuc2ZkaXIyLmxpc3RbNF0ub2Zmc2V0ID0gMHg5MAot dS5zZmRpcjIubGlzdFs0XS5uYW1lID0gImZpbGUuNSIKLXUuc2ZkaXIyLmxpc3RbNV0ubmFtZWxl biA9IDYKLXUuc2ZkaXIyLmxpc3RbNV0ub2Zmc2V0ID0gMHhhOAotdS5zZmRpcjIubGlzdFs1XS5u YW1lID0gImZpbGUuNiIKLXUuc2ZkaXIyLmxpc3RbNl0ubmFtZWxlbiA9IDYKLXUuc2ZkaXIyLmxp c3RbNl0ub2Zmc2V0ID0gMHhjMAotdS5zZmRpcjIubGlzdFs2XS5uYW1lID0gImZpbGUuNyIKLXUu c2ZkaXIyLmxpc3RbN10ubmFtZWxlbiA9IDYKLXUuc2ZkaXIyLmxpc3RbN10ub2Zmc2V0ID0gMHhk OAotdS5zZmRpcjIubGlzdFs3XS5uYW1lID0gImZpbGUuOCIKLXUuc2ZkaXIyLmxpc3RbOF0ubmFt ZWxlbiA9IDYKLXUuc2ZkaXIyLmxpc3RbOF0ub2Zmc2V0ID0gMHhmMAotdS5zZmRpcjIubGlzdFs4 XS5uYW1lID0gImZpbGUuOSIKLXUuc2ZkaXIyLmxpc3RbOV0ubmFtZWxlbiA9IDcKLXUuc2ZkaXIy Lmxpc3RbOV0ub2Zmc2V0ID0gMHgxMDgKLXUuc2ZkaXIyLmxpc3RbOV0ubmFtZSA9ICJmaWxlLjEw IgotdS5zZmRpcjIubGlzdFsxMF0ubmFtZWxlbiA9IDcKLXUuc2ZkaXIyLmxpc3RbMTBdLm9mZnNl dCA9IDB4MTIwCi11LnNmZGlyMi5saXN0WzEwXS5uYW1lID0gImZpbGUuMTEiCi11LnNmZGlyMi5s aXN0WzExXS5uYW1lbGVuID0gNwotdS5zZmRpcjIubGlzdFsxMV0ub2Zmc2V0ID0gMHgxMzgKLXUu c2ZkaXIyLmxpc3RbMTFdLm5hbWUgPSAiZmlsZS4xMiIKLXUuc2ZkaXIyLmxpc3RbMTJdLm5hbWVs ZW4gPSA3Ci11LnNmZGlyMi5saXN0WzEyXS5vZmZzZXQgPSAweDE1MAotdS5zZmRpcjIubGlzdFsx Ml0ubmFtZSA9ICJmaWxlLjEzIgotdS5zZmRpcjIubGlzdFsxM10ubmFtZWxlbiA9IDcKLXUuc2Zk aXIyLmxpc3RbMTNdLm9mZnNldCA9IDB4MTY4Ci11LnNmZGlyMi5saXN0WzEzXS5uYW1lID0gImZp bGUuMTQiCi11LnNmZGlyMi5saXN0WzE0XS5uYW1lbGVuID0gNwotdS5zZmRpcjIubGlzdFsxNF0u b2Zmc2V0ID0gMHgxODAKLXUuc2ZkaXIyLmxpc3RbMTRdLm5hbWUgPSAiZmlsZS4xNSIKLXUuc2Zk aXIyLmxpc3RbMTVdLm5hbWVsZW4gPSA3Ci11LnNmZGlyMi5saXN0WzE1XS5vZmZzZXQgPSAweDE5 OAotdS5zZmRpcjIubGlzdFsxNV0ubmFtZSA9ICJmaWxlLjE2IgotdS5zZmRpcjIubGlzdFsxNl0u bmFtZWxlbiA9IDcKLXUuc2ZkaXIyLmxpc3RbMTZdLm9mZnNldCA9IDB4MWIwCi11LnNmZGlyMi5s aXN0WzE2XS5uYW1lID0gImZpbGUuMTciCi11LnNmZGlyMi5saXN0WzE3XS5uYW1lbGVuID0gNwot dS5zZmRpcjIubGlzdFsxN10ub2Zmc2V0ID0gMHgxYzgKLXUuc2ZkaXIyLmxpc3RbMTddLm5hbWUg PSAiZmlsZS4xOCIKLXUuc2ZkaXIyLmxpc3RbMThdLm5hbWVsZW4gPSA3Ci11LnNmZGlyMi5saXN0 WzE4XS5vZmZzZXQgPSAweDFlMAotdS5zZmRpcjIubGlzdFsxOF0ubmFtZSA9ICJmaWxlLjE5Igot dS5zZmRpcjIubGlzdFsxOV0ubmFtZWxlbiA9IDcKLXUuc2ZkaXIyLmxpc3RbMTldLm9mZnNldCA9 IDB4MWY4Ci11LnNmZGlyMi5saXN0WzE5XS5uYW1lID0gImZpbGUuMjAiCi11LnNmZGlyMi5saXN0 WzIwXS5uYW1lbGVuID0gNwotdS5zZmRpcjIubGlzdFsyMF0ub2Zmc2V0ID0gMHgyMTAKLXUuc2Zk aXIyLmxpc3RbMjBdLm5hbWUgPSAiZmlsZS4yMSIKLXUuc2ZkaXIyLmxpc3RbMjFdLm5hbWVsZW4g PSA3Ci11LnNmZGlyMi5saXN0WzIxXS5vZmZzZXQgPSAweDIyOAotdS5zZmRpcjIubGlzdFsyMV0u bmFtZSA9ICJmaWxlLjIyIgotdS5zZmRpcjIubGlzdFsyMl0ubmFtZWxlbiA9IDcKLXUuc2ZkaXIy Lmxpc3RbMjJdLm9mZnNldCA9IDB4MjQwCi11LnNmZGlyMi5saXN0WzIyXS5uYW1lID0gImZpbGUu MjMiCi11LnNmZGlyMi5saXN0WzIzXS5uYW1lbGVuID0gNwotdS5zZmRpcjIubGlzdFsyM10ub2Zm c2V0ID0gMHgyNTgKLXUuc2ZkaXIyLmxpc3RbMjNdLm5hbWUgPSAiZmlsZS4yNCIKLXUuc2ZkaXIy Lmxpc3RbMjRdLm5hbWVsZW4gPSA3Ci11LnNmZGlyMi5saXN0WzI0XS5vZmZzZXQgPSAweDI3MAot dS5zZmRpcjIubGlzdFsyNF0ubmFtZSA9ICJmaWxlLjI1IgotYS5zZmF0dHIuaGRyLnRvdHNpemUg PSAxMAotYS5zZmF0dHIuaGRyLmNvdW50ID0gMQotYS5zZmF0dHIubGlzdFswXS5uYW1lbGVuID0g MQotYS5zZmF0dHIubGlzdFswXS52YWx1ZWxlbiA9IDIKLWEuc2ZhdHRyLmxpc3RbMF0ucm9vdCA9 IDAKLWEuc2ZhdHRyLmxpc3RbMF0uc2VjdXJlID0gMAotYS5zZmF0dHIubGlzdFswXS5uYW1lID0g IjEiCi1hLnNmYXR0ci5saXN0WzBdLnZhbHVlID0gIlwyNzJcMjc2IgotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0KLVRyeSBzZXR0aW5nIGF0dHIxIGJ5IGRiCi0KLUFUVFIKLQot KioqIGNyZWF0ZSBFQXMgc3RhcnQgMiBlbmQgMiAqKioKLQotCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLUFUVFIKLWZvcmtvZmYgPSA0NwotdS5zZmRpcjIuaGRyLmNvdW50ID0g MjUKLXUuc2ZkaXIyLmhkci5pOGNvdW50ID0gMAotdS5zZmRpcjIubGlzdFswXS5uYW1lbGVuID0g NgotdS5zZmRpcjIubGlzdFswXS5vZmZzZXQgPSAweDMwCi11LnNmZGlyMi5saXN0WzBdLm5hbWUg PSAiZmlsZS4xIgotdS5zZmRpcjIubGlzdFsxXS5uYW1lbGVuID0gNgotdS5zZmRpcjIubGlzdFsx XS5vZmZzZXQgPSAweDQ4Ci11LnNmZGlyMi5saXN0WzFdLm5hbWUgPSAiZmlsZS4yIgotdS5zZmRp cjIubGlzdFsyXS5uYW1lbGVuID0gNgotdS5zZmRpcjIubGlzdFsyXS5vZmZzZXQgPSAweDYwCi11 LnNmZGlyMi5saXN0WzJdLm5hbWUgPSAiZmlsZS4zIgotdS5zZmRpcjIubGlzdFszXS5uYW1lbGVu ID0gNgotdS5zZmRpcjIubGlzdFszXS5vZmZzZXQgPSAweDc4Ci11LnNmZGlyMi5saXN0WzNdLm5h bWUgPSAiZmlsZS40IgotdS5zZmRpcjIubGlzdFs0XS5uYW1lbGVuID0gNgotdS5zZmRpcjIubGlz dFs0XS5vZmZzZXQgPSAweDkwCi11LnNmZGlyMi5saXN0WzRdLm5hbWUgPSAiZmlsZS41IgotdS5z ZmRpcjIubGlzdFs1XS5uYW1lbGVuID0gNgotdS5zZmRpcjIubGlzdFs1XS5vZmZzZXQgPSAweGE4 Ci11LnNmZGlyMi5saXN0WzVdLm5hbWUgPSAiZmlsZS42IgotdS5zZmRpcjIubGlzdFs2XS5uYW1l bGVuID0gNgotdS5zZmRpcjIubGlzdFs2XS5vZmZzZXQgPSAweGMwCi11LnNmZGlyMi5saXN0WzZd Lm5hbWUgPSAiZmlsZS43IgotdS5zZmRpcjIubGlzdFs3XS5uYW1lbGVuID0gNgotdS5zZmRpcjIu bGlzdFs3XS5vZmZzZXQgPSAweGQ4Ci11LnNmZGlyMi5saXN0WzddLm5hbWUgPSAiZmlsZS44Igot dS5zZmRpcjIubGlzdFs4XS5uYW1lbGVuID0gNgotdS5zZmRpcjIubGlzdFs4XS5vZmZzZXQgPSAw eGYwCi11LnNmZGlyMi5saXN0WzhdLm5hbWUgPSAiZmlsZS45IgotdS5zZmRpcjIubGlzdFs5XS5u YW1lbGVuID0gNwotdS5zZmRpcjIubGlzdFs5XS5vZmZzZXQgPSAweDEwOAotdS5zZmRpcjIubGlz dFs5XS5uYW1lID0gImZpbGUuMTAiCi11LnNmZGlyMi5saXN0WzEwXS5uYW1lbGVuID0gNwotdS5z ZmRpcjIubGlzdFsxMF0ub2Zmc2V0ID0gMHgxMjAKLXUuc2ZkaXIyLmxpc3RbMTBdLm5hbWUgPSAi ZmlsZS4xMSIKLXUuc2ZkaXIyLmxpc3RbMTFdLm5hbWVsZW4gPSA3Ci11LnNmZGlyMi5saXN0WzEx XS5vZmZzZXQgPSAweDEzOAotdS5zZmRpcjIubGlzdFsxMV0ubmFtZSA9ICJmaWxlLjEyIgotdS5z ZmRpcjIubGlzdFsxMl0ubmFtZWxlbiA9IDcKLXUuc2ZkaXIyLmxpc3RbMTJdLm9mZnNldCA9IDB4 MTUwCi11LnNmZGlyMi5saXN0WzEyXS5uYW1lID0gImZpbGUuMTMiCi11LnNmZGlyMi5saXN0WzEz XS5uYW1lbGVuID0gNwotdS5zZmRpcjIubGlzdFsxM10ub2Zmc2V0ID0gMHgxNjgKLXUuc2ZkaXIy Lmxpc3RbMTNdLm5hbWUgPSAiZmlsZS4xNCIKLXUuc2ZkaXIyLmxpc3RbMTRdLm5hbWVsZW4gPSA3 Ci11LnNmZGlyMi5saXN0WzE0XS5vZmZzZXQgPSAweDE4MAotdS5zZmRpcjIubGlzdFsxNF0ubmFt ZSA9ICJmaWxlLjE1IgotdS5zZmRpcjIubGlzdFsxNV0ubmFtZWxlbiA9IDcKLXUuc2ZkaXIyLmxp c3RbMTVdLm9mZnNldCA9IDB4MTk4Ci11LnNmZGlyMi5saXN0WzE1XS5uYW1lID0gImZpbGUuMTYi Ci11LnNmZGlyMi5saXN0WzE2XS5uYW1lbGVuID0gNwotdS5zZmRpcjIubGlzdFsxNl0ub2Zmc2V0 ID0gMHgxYjAKLXUuc2ZkaXIyLmxpc3RbMTZdLm5hbWUgPSAiZmlsZS4xNyIKLXUuc2ZkaXIyLmxp c3RbMTddLm5hbWVsZW4gPSA3Ci11LnNmZGlyMi5saXN0WzE3XS5vZmZzZXQgPSAweDFjOAotdS5z ZmRpcjIubGlzdFsxN10ubmFtZSA9ICJmaWxlLjE4IgotdS5zZmRpcjIubGlzdFsxOF0ubmFtZWxl biA9IDcKLXUuc2ZkaXIyLmxpc3RbMThdLm9mZnNldCA9IDB4MWUwCi11LnNmZGlyMi5saXN0WzE4 XS5uYW1lID0gImZpbGUuMTkiCi11LnNmZGlyMi5saXN0WzE5XS5uYW1lbGVuID0gNwotdS5zZmRp cjIubGlzdFsxOV0ub2Zmc2V0ID0gMHgxZjgKLXUuc2ZkaXIyLmxpc3RbMTldLm5hbWUgPSAiZmls ZS4yMCIKLXUuc2ZkaXIyLmxpc3RbMjBdLm5hbWVsZW4gPSA3Ci11LnNmZGlyMi5saXN0WzIwXS5v ZmZzZXQgPSAweDIxMAotdS5zZmRpcjIubGlzdFsyMF0ubmFtZSA9ICJmaWxlLjIxIgotdS5zZmRp cjIubGlzdFsyMV0ubmFtZWxlbiA9IDcKLXUuc2ZkaXIyLmxpc3RbMjFdLm9mZnNldCA9IDB4MjI4 Ci11LnNmZGlyMi5saXN0WzIxXS5uYW1lID0gImZpbGUuMjIiCi11LnNmZGlyMi5saXN0WzIyXS5u YW1lbGVuID0gNwotdS5zZmRpcjIubGlzdFsyMl0ub2Zmc2V0ID0gMHgyNDAKLXUuc2ZkaXIyLmxp c3RbMjJdLm5hbWUgPSAiZmlsZS4yMyIKLXUuc2ZkaXIyLmxpc3RbMjNdLm5hbWVsZW4gPSA3Ci11 LnNmZGlyMi5saXN0WzIzXS5vZmZzZXQgPSAweDI1OAotdS5zZmRpcjIubGlzdFsyM10ubmFtZSA9 ICJmaWxlLjI0IgotdS5zZmRpcjIubGlzdFsyNF0ubmFtZWxlbiA9IDcKLXUuc2ZkaXIyLmxpc3Rb MjRdLm9mZnNldCA9IDB4MjcwCi11LnNmZGlyMi5saXN0WzI0XS5uYW1lID0gImZpbGUuMjUiCi1h LnNmYXR0ci5oZHIudG90c2l6ZSA9IDE2Ci1hLnNmYXR0ci5oZHIuY291bnQgPSAyCi1hLnNmYXR0 ci5saXN0WzBdLm5hbWVsZW4gPSAxCi1hLnNmYXR0ci5saXN0WzBdLnZhbHVlbGVuID0gMgotYS5z ZmF0dHIubGlzdFswXS5yb290ID0gMAotYS5zZmF0dHIubGlzdFswXS5zZWN1cmUgPSAwCi1hLnNm YXR0ci5saXN0WzBdLm5hbWUgPSAiMSIKLWEuc2ZhdHRyLmxpc3RbMF0udmFsdWUgPSAiXDI3Mlwy NzYiCi1hLnNmYXR0ci5saXN0WzFdLm5hbWVsZW4gPSAxCi1hLnNmYXR0ci5saXN0WzFdLnZhbHVl bGVuID0gMgotYS5zZmF0dHIubGlzdFsxXS5yb290ID0gMAotYS5zZmF0dHIubGlzdFsxXS5zZWN1 cmUgPSAwCi1hLnNmYXR0ci5saXN0WzFdLm5hbWUgPSAiMiIKLWEuc2ZhdHRyLmxpc3RbMV0udmFs dWUgPSAiXDI3MlwyNzYiCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2NvbW1v bi5jb25maWc6IEVycm9yOiAkU0NSQVRDSF9NTlQgKC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0 ZXN0cy9zZGI0KSBpcyBub3QgYSBkaXJlY3RvcnkKMTg3CSBbZmFpbGVkLCBleGl0IHN0YXR1cyAx XSAtIG91dHB1dCBtaXNtYXRjaCAoc2VlIDE4Ny5vdXQuYmFkKQotLS0gMTg3Lm91dAkyMDExLTA1 LTExIDIyOjMyOjI0LjAwMDAwMDAwMCArMDUzMAorKysgMTg3Lm91dC5iYWQJMjAxMS0wNi0wOSAx ODoxODo0Ni41NDU2MTA5OTggKzA1MzAKQEAgLTEsMzkgKzEsMiBAQAogUUEgb3V0cHV0IGNyZWF0 ZWQgYnkgMTg3Ci0KLSoqKiAxLiB0ZXN0IGF0dHIyIG1rZnMgYW5kIHRoZW4gbm9hdHRyMiBtb3Vu dCAqKioKLQotYXR0cjIgZnMKLQotTU9SRUJJVFMKLUFUVFIyCi0KLW5vYXR0cjIgZnMKLQotCi0q KiogMi4gdGVzdCBhdHRyMiBta2ZzIGFuZCB0aGVuIG5vYXR0cjIgbW91bnQgd2l0aCAxIEVBICoq KgotCi1hdHRyMiBmcwotCi1NT1JFQklUUwotQVRUUjIKLQotbm9hdHRyMiBmcwotCi0jIGZpbGU6 IHRlc3RmaWxlCi11c2VyLnRlc3QKLQotQVRUUgotCi0qKiogMy4gdGVzdCBub2F0dHIyIG1vdW50 IGFuZCBsYXp5IHNiICoqKgotCi0KLWF0dHIyIGZzCi0KLU1PUkVCSVRTCi1BVFRSMgotTEFaWVNC Q09VTlQKLQotbm9hdHRyMiBmcwotCi1NT1JFQklUUwotTEFaWVNCQ09VTlQKK2NvbW1vbi5jb25m aWc6IEVycm9yOiAkU0NSQVRDSF9NTlQgKC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9z ZGI0KSBpcyBub3QgYSBkaXJlY3RvcnkKMTg4CSAtIG91dHB1dCBtaXNtYXRjaCAoc2VlIDE4OC5v dXQuYmFkKQotLS0gMTg4Lm91dAkyMDExLTA1LTExIDIyOjMyOjI0LjAwMDAwMDAwMCArMDUzMAor KysgMTg4Lm91dC5iYWQJMjAxMS0wNi0wOSAxODoxODo0Ny41MzU2MTA5OTkgKzA1MzAKQEAgLTEs NjUgKzEsMyBAQAogUUEgb3V0cHV0IGNyZWF0ZWQgYnkgMTg4Ci1zZWVkID0gMSwgaGFzaCA9IDB4 MGFhODQ5NDkKLS5TZWVkID0gMSAodXNlICItcyAxIiB0byByZS1leGVjdXRlIHRoaXMgdGVzdCkK LQotY3JlYXRlczogICAgIDE1IE9LLCAgICAgIDUgRUVYSVNUICAoICAgIDIwIHRvdGFsLCAyNSUg RUVYSVNUKQotcmVtb3ZlczogICAgIDEzIE9LLCAgICAgMTcgRU5PRU5UICAoICAgIDMwIHRvdGFs LCA1NiUgRU5PRU5UKQotbG9va3VwczogICAgICAzIE9LLCAgICAgIDcgRU5PRU5UICAoICAgIDEw IHRvdGFsLCA3MCUgRU5PRU5UKQotdG90YWwgIDogICAgIDMxIE9LLCAgICAgMjkgdy9lcnJvciAo ICAgIDYwIHRvdGFsLCA0OCUgdy9lcnJvcikKLQotY2xlYW51cDogICAgICAyIHJlbW92ZXMKLXNl ZWQgPSAxLCBoYXNoID0gMHgwYWE4NDk0OQotLlNlZWQgPSAxICh1c2UgIi1zIDEiIHRvIHJlLWV4 ZWN1dGUgdGhpcyB0ZXN0KQotLi4KLWNyZWF0ZXM6ICAgICA1OCBPSywgICAgIDUwIEVFWElTVCAg KCAgIDEwOCB0b3RhbCwgNDYlIEVFWElTVCkKLXJlbW92ZXM6ICAgICA0MCBPSywgICAgIDQ4IEVO T0VOVCAgKCAgICA4OCB0b3RhbCwgNTQlIEVOT0VOVCkKLWxvb2t1cHM6ICAgICAyMCBPSywgICAg IDI0IEVOT0VOVCAgKCAgICA0NCB0b3RhbCwgNTQlIEVOT0VOVCkKLXRvdGFsICA6ICAgIDExOCBP SywgICAgMTIyIHcvZXJyb3IgKCAgIDI0MCB0b3RhbCwgNTAlIHcvZXJyb3IpCi0KLWNsZWFudXA6 ICAgICAxOCByZW1vdmVzCi1zZWVkID0gMSwgaGFzaCA9IDB4MGFhODQ5NDkKLS5TZWVkID0gMSAo dXNlICItcyAxIiB0byByZS1leGVjdXRlIHRoaXMgdGVzdCkKLS4uLi4uLi4uLgotY3JlYXRlczog ICAgMjE2IE9LLCAgICAxODUgRUVYSVNUICAoICAgNDAxIHRvdGFsLCA0NiUgRUVYSVNUKQotcmVt b3ZlczogICAgMTUyIE9LLCAgICAxNzkgRU5PRU5UICAoICAgMzMxIHRvdGFsLCA1NCUgRU5PRU5U KQotbG9va3VwczogICAgMTEzIE9LLCAgICAxMTUgRU5PRU5UICAoICAgMjI4IHRvdGFsLCA1MCUg RU5PRU5UKQotdG90YWwgIDogICAgNDgxIE9LLCAgICA0Nzkgdy9lcnJvciAoICAgOTYwIHRvdGFs LCA0OSUgdy9lcnJvcikKLQotY2xlYW51cDogICAgIDY0IHJlbW92ZXMKLXNlZWQgPSAxLCBoYXNo ID0gMHgwYWE4NDk0OQotLlNlZWQgPSAxICh1c2UgIi1zIDEiIHRvIHJlLWV4ZWN1dGUgdGhpcyB0 ZXN0KQotLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi1jcmVhdGVzOiAg ICA4NTggT0ssICAgIDYzOCBFRVhJU1QgICggIDE0OTYgdG90YWwsIDQyJSBFRVhJU1QpCi1yZW1v dmVzOiAgICA1OTUgT0ssICAgIDgzMCBFTk9FTlQgICggIDE0MjUgdG90YWwsIDU4JSBFTk9FTlQp Ci1sb29rdXBzOiAgICA0MTQgT0ssICAgIDUwNSBFTk9FTlQgICggICA5MTkgdG90YWwsIDU0JSBF Tk9FTlQpCi10b3RhbCAgOiAgIDE4NjcgT0ssICAgMTk3MyB3L2Vycm9yICggIDM4NDAgdG90YWws IDUxJSB3L2Vycm9yKQotLgotY2xlYW51cDogICAgMjYzIHJlbW92ZXMKLXNlZWQgPSAxLCBoYXNo ID0gMHgwYWE4NDk0OQotLlNlZWQgPSAxICh1c2UgIi1zIDEiIHRvIHJlLWV4ZWN1dGUgdGhpcyB0 ZXN0KQotLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4KLS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLS4uLi4uLi4uLi4KLWNyZWF0 ZXM6ICAgMzUxMSBPSywgICAyNTg5IEVFWElTVCAgKCAgNjEwMCB0b3RhbCwgNDIlIEVFWElTVCkK LXJlbW92ZXM6ICAgMjM2MyBPSywgICAzMTMyIEVOT0VOVCAgKCAgNTQ5NSB0b3RhbCwgNTYlIEVO T0VOVCkKLWxvb2t1cHM6ICAgMTY2OCBPSywgICAyMDk3IEVOT0VOVCAgKCAgMzc2NSB0b3RhbCwg NTUlIEVOT0VOVCkKLXRvdGFsICA6ICAgNzU0MiBPSywgICA3ODE4IHcvZXJyb3IgKCAxNTM2MCB0 b3RhbCwgNTAlIHcvZXJyb3IpCi0uLi4uLi4uLi4uCi1jbGVhbnVwOiAgIDExNDggcmVtb3Zlcwot c2VlZCA9IDEsIGhhc2ggPSAweDBhYTg0OTQ5Ci0uU2VlZCA9IDEgKHVzZSAiLXMgMSIgdG8gcmUt ZXhlY3V0ZSB0aGlzIHRlc3QpCi0uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLgotLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLgotLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi1jcmVhdGVzOiAgMTQxNTUgT0ssICAxMDM5MSBFRVhJ U1QgICggMjQ1NDYgdG90YWwsIDQyJSBFRVhJU1QpCi1yZW1vdmVzOiAgIDk2ODAgT0ssICAxMjQ4 NCBFTk9FTlQgICggMjIxNjQgdG90YWwsIDU2JSBFTk9FTlQpCi1sb29rdXBzOiAgIDY1MDggT0ss ICAgODIyMiBFTk9FTlQgICggMTQ3MzAgdG90YWwsIDU1JSBFTk9FTlQpCi10b3RhbCAgOiAgMzAz NDMgT0ssICAzMTA5NyB3L2Vycm9yICggNjE0NDAgdG90YWwsIDUwJSB3L2Vycm9yKQotLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotY2xlYW51cDogICA0NDc1IHJl bW92ZXMKK2NvbW1vbi5jb25maWc6IEVycm9yOiAkU0NSQVRDSF9NTlQgKC9ob21lL21hbmlzaC9Q cm9qZWN0cy94ZnN0ZXN0cy9zZGI0KSBpcyBub3QgYSBkaXJlY3RvcnkKK3JtOiBjYW5ub3QgcmVt b3ZlIGAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC8xODgnOiBJbnB1dC9vdXRw dXQgZXJyb3IKMTg5CSBbZmFpbGVkLCBleGl0IHN0YXR1cyAxXSAtIG91dHB1dCBtaXNtYXRjaCAo c2VlIDE4OS5vdXQuYmFkKQotLS0gMTg5Lm91dAkyMDExLTA1LTExIDIyOjMyOjI0LjAwMDAwMDAw MCArMDUzMAorKysgMTg5Lm91dC5iYWQJMjAxMS0wNi0wOSAxODoxODo0OC44MzE2MTA5OTkgKzA1 MzAKQEAgLTEsNTkgKzEsMiBAQAogUUEgb3V0cHV0IGNyZWF0ZWQgYnkgMTg5Ci1tZXRhLWRhdGE9 RERFViBpc2l6ZT1YWFggYWdjb3VudD1OLCBhZ3NpemU9WFhYIGJsa3MKLWRhdGEgICAgID0gYnNp emU9WFhYIGJsb2Nrcz1YWFgsIGltYXhwY3Q9UENUCi0gICAgICAgICA9IHN1bml0PVhYWCBzd2lk dGg9WFhYLCB1bndyaXR0ZW49WAotbmFtaW5nICAgPVZFUk4gYnNpemU9WFhYCi1sb2cgICAgICA9 TERFViBic2l6ZT1YWFggYmxvY2tzPVhYWAotcmVhbHRpbWUgPVJERVYgZXh0c3o9WFhYIGJsb2Nr cz1YWFgsIHJ0ZXh0ZW50cz1YWFgKLQotdHJ5IHJlbW91bnQgcm8sZmlsZXN0cmVhbXMgLT4gcncs ZmlsZXN0cmVhbXMKLQotU0NSQVRDSF9ERVYgb24gU0NSQVRDSF9NTlQgdHlwZSB4ZnMgKHJvLGZp bGVzdHJlYW1zKQotbW91bnRpbmcgZ2l2ZW46IFNDUkFUQ0hfREVWCi1TQ1JBVENIX0RFViBvbiBT Q1JBVENIX01OVCB0eXBlIHhmcyAocncpCi1tb3VudGluZyBnaXZlbjogU0NSQVRDSF9NTlQKLVND UkFUQ0hfREVWIG9uIFNDUkFUQ0hfTU5UIHR5cGUgeGZzIChydykKLW1vdW50aW5nIGdpdmVuOiBT Q1JBVENIX0RFViBTQ1JBVENIX01OVAotU0NSQVRDSF9ERVYgb24gU0NSQVRDSF9NTlQgdHlwZSB4 ZnMgKHJ3KQotCi10cnkgcmVtb3VudCBybyxub2F0dHIyIC0+IHJ3LGF0dHIyCi0KLVNDUkFUQ0hf REVWIG9uIFNDUkFUQ0hfTU5UIHR5cGUgeGZzIChybyxub2F0dHIyKQotbW91bnRpbmcgZ2l2ZW46 IFNDUkFUQ0hfREVWCi1TQ1JBVENIX0RFViBvbiBTQ1JBVENIX01OVCB0eXBlIHhmcyAocncsYXR0 cjIpCi1tb3VudGluZyBnaXZlbjogU0NSQVRDSF9NTlQKLVNDUkFUQ0hfREVWIG9uIFNDUkFUQ0hf TU5UIHR5cGUgeGZzIChydyxhdHRyMikKLW1vdW50aW5nIGdpdmVuOiBTQ1JBVENIX0RFViBTQ1JB VENIX01OVAotU0NSQVRDSF9ERVYgb24gU0NSQVRDSF9NTlQgdHlwZSB4ZnMgKHJ3LGF0dHIyKQot Ci10cnkgdG91Y2hpbmcgZmlsZSBhZnRlciByZW1vdW50IHJvIC0+IHJ3IHdpdGggb3B0aW9ucwot Ci0KLWFkZCBub2lrZWVwIHRvIGZzdGFiIGZvciBzY3JhdGNoCi0KLXRyeSByZW1vdW50IHJvLGZp bGVzdHJlYW1zIC0+IHJ3LGZpbGVzdHJlYW1zCi0KLVNDUkFUQ0hfREVWIG9uIFNDUkFUQ0hfTU5U IHR5cGUgeGZzIChybyxmaWxlc3RyZWFtcykKLW1vdW50aW5nIGdpdmVuOiBTQ1JBVENIX0RFVgot U0NSQVRDSF9ERVYgb24gU0NSQVRDSF9NTlQgdHlwZSB4ZnMgKHJ3LG5vaWtlZXApCi1tb3VudGlu ZyBnaXZlbjogU0NSQVRDSF9NTlQKLVNDUkFUQ0hfREVWIG9uIFNDUkFUQ0hfTU5UIHR5cGUgeGZz IChydyxub2lrZWVwKQotbW91bnRpbmcgZ2l2ZW46IFNDUkFUQ0hfREVWIFNDUkFUQ0hfTU5UCi1T Q1JBVENIX0RFViBvbiBTQ1JBVENIX01OVCB0eXBlIHhmcyAocncpCi0KLXRyeSByZW1vdW50IHJv LG5vYXR0cjIgLT4gcncsYXR0cjIKLQotU0NSQVRDSF9ERVYgb24gU0NSQVRDSF9NTlQgdHlwZSB4 ZnMgKHJvLG5vYXR0cjIpCi1tb3VudGluZyBnaXZlbjogU0NSQVRDSF9ERVYKLVNDUkFUQ0hfREVW IG9uIFNDUkFUQ0hfTU5UIHR5cGUgeGZzIChydyxub2lrZWVwLGF0dHIyKQotbW91bnRpbmcgZ2l2 ZW46IFNDUkFUQ0hfTU5UCi1TQ1JBVENIX0RFViBvbiBTQ1JBVENIX01OVCB0eXBlIHhmcyAocncs bm9pa2VlcCxhdHRyMikKLW1vdW50aW5nIGdpdmVuOiBTQ1JBVENIX0RFViBTQ1JBVENIX01OVAot U0NSQVRDSF9ERVYgb24gU0NSQVRDSF9NTlQgdHlwZSB4ZnMgKHJ3LGF0dHIyKQotCi1EbyByZW1v dW50IGJhcnJpZXIgdGVzdHMKLQotU0NSQVRDSF9ERVYgb24gU0NSQVRDSF9NTlQgdHlwZSB4ZnMg KHJ3LGJhcnJpZXIpCi1TQ1JBVENIX0RFViBvbiBTQ1JBVENIX01OVCB0eXBlIHhmcyAocncsbm9i YXJyaWVyKQotU0NSQVRDSF9ERVYgb24gU0NSQVRDSF9NTlQgdHlwZSB4ZnMgKHJ3LGJhcnJpZXIp Ci0qKiogZG9uZQorY29tbW9uLmNvbmZpZzogRXJyb3I6ICRTQ1JBVENIX01OVCAoL2hvbWUvbWFu aXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQpIGlzIG5vdCBhIGRpcmVjdG9yeQoxOTAJIDhzCjE5 MgkgNDFzCjE5NAkgLSBvdXRwdXQgbWlzbWF0Y2ggKHNlZSAxOTQub3V0LmJhZCkKLS0tIDE5NC5v dXQJMjAxMS0wNS0xMSAyMjozMjoyNC4wMDAwMDAwMDAgKzA1MzAKKysrIDE5NC5vdXQuYmFkCTIw MTEtMDYtMDkgMTg6MTk6NDkuMjcxNjEwOTk5ICswNTMwCkBAIC0yLDggKzIsOCBAQAogPT0gVGVz dCAxID09CiBTQ1JBVENIX01OVC90ZXN0ZmlsZTE6CiBFWFQ6CVRZUEUJVE9UQUwKLTA6CWJsb2Nr cwkxCi0xOglob2xlCTcKKzA6CWJsb2Nrcwk0CisxOglob2xlCTQKIDExMTEgMTExMSAxMTExIDEx MTEgMTExMSAxMTExIDExMTEgMTExMQogKgogMDAwMCAwMDAwIDAwMDAgMDAwMCAwMDAwIDAwMDAg MDAwMCAwMDAwCkBAIC0xMiwxMCArMTIsOCBAQAogPT0gVGVzdCAyID09CiBTQ1JBVENIX01OVC90 ZXN0ZmlsZTI6CiBFWFQ6CVRZUEUJVE9UQUwKLTA6CWJsb2NrcwkxCiswOglibG9ja3MJNQogMToJ aG9sZQkzCi0yOglibG9ja3MJMQotMzoJaG9sZQkzCiAxMTExIDExMTEgMTExMSAxMTExIDExMTEg MTExMSAxMTExIDExMTEKICoKIDAwMDAgMDAwMCAwMDAwIDAwMDAgMDAwMCAwMDAwIDAwMDAgMDAw MApAQCAtMjgsMzEgKzI2LDI3IEBACiA9PSBUZXN0IDMgPT0KIFNDUkFUQ0hfTU5UL3Rlc3RmaWxl MzoKIEVYVDoJVFlQRQlUT1RBTAotMDoJYmxvY2tzCTEKLTE6CWhvbGUJMwotMjoJYmxvY2tzCTEK KzA6CWJsb2Nrcwk1CiAxMTExIDExMTEgMTExMSAxMTExIDExMTEgMTExMSAxMTExIDExMTEKICoK IDAwMDAgMDAwMCAwMDAwIDAwMDAgMDAwMCAwMDAwIDAwMDAgMDAwMAogKgorMTExMSAxMTExIDEx MTEgMTExMSAxMTExIDExMTEgMTExMSAxMTExCisqCiAyMjIyIDIyMjIgMjIyMiAyMjIyIDIyMjIg MjIyMiAyMjIyIDIyMjIKICoKIAogPT0gVGVzdCA0ID09CiBTQ1JBVENIX01OVC90ZXN0ZmlsZTQ6 CiBFWFQ6CVRZUEUJVE9UQUwKLTA6CWJsb2NrcwkxCi0xOglob2xlCTEKLTI6CWJsb2NrcwkxCi0z Oglob2xlCTEKLTQ6CWJsb2NrcwkxCiswOglibG9ja3MJNQogMTExMSAxMTExIDExMTEgMTExMSAx MTExIDExMTEgMTExMSAxMTExCiAqCiAwMDAwIDAwMDAgMDAwMCAwMDAwIDAwMDAgMDAwMCAwMDAw IDAwMDAKICoKIDMzMzMgMzMzMyAzMzMzIDMzMzMgMzMzMyAzMzMzIDMzMzMgMzMzMwogKgotMDAw MCAwMDAwIDAwMDAgMDAwMCAwMDAwIDAwMDAgMDAwMCAwMDAwCisxMTExIDExMTEgMTExMSAxMTEx IDExMTEgMTExMSAxMTExIDExMTEKICoKIDIyMjIgMjIyMiAyMjIyIDIyMjIgMjIyMiAyMjIyIDIy MjIgMjIyMgogKgoxOTUJIFtub3QgcnVuXSBmc2dxYSB1c2VyIG5vdCBkZWZpbmVkLgoxOTcJIDBz CjE5OAkgMzlzCjE5OQkgMTJzCjIwMAkgNnMKMjAxCSAyMnMKMjAyCSA1cwoyMDMJIDFzCjIwNAkg NzVzCjIwNQkgMThzCjIwNwkgMTNzCjIwOAkgMjAycwoyMDkJIDMxcwoyMTAJIDBzCjIxMQkgMXMK MjEyCSAwcwoyMTMJIDBzCjIxNAkgMHMKMjE1CSAycwoyMTYJIDEyMHMKMjE3CSBbbm90IHJ1bl0g VGhpcyB0ZXN0IHJlcXVpcmVzIGF0IGxlYXN0IDJHQiBmcmVlIG9uIC9ob21lL21hbmlzaC9Qcm9q ZWN0cy94ZnN0ZXN0cy9zZGI0IHRvIHJ1bgoyMTgJIDNzCjIyMQkgMnMKMjIyCSA0cwoyMjMJIDE3 OXMKMjI0CSA4MTdzCjIyNQkgNTNzCjIyNgkgLSBvdXRwdXQgbWlzbWF0Y2ggKHNlZSAyMjYub3V0 LmJhZCkKLS0tIDIyNi5vdXQJMjAxMS0wNS0xMSAyMjozMjoyNC4wMDAwMDAwMDAgKzA1MzAKKysr IDIyNi5vdXQuYmFkCTIwMTEtMDYtMDkgMTg6NDk6MTIuNzI3NjEwOTk5ICswNTMwCkBAIC0zLDQg KzMsMzAgQEAKIC0tPiAxNiBidWZmZXJlZCA2NG0gd3JpdGVzIGluIGEgbG9vcAogMSAyIDMgNCA1 IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgCiAtLT4gMTYgZGlyZWN0IDY0bSB3cml0ZXMg aW4gYSBsb29wCi0xIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAKKzEgMiAz IDQgcHdyaXRlNjQ6IElucHV0L291dHB1dCBlcnJvcgorcm06IGNhbm5vdCByZW1vdmUgYC9ob21l L21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0L3Rlc3QnOiBJbnB1dC9vdXRwdXQgZXJyb3IK KzUgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvdGVzdDogSW5wdXQvb3V0cHV0 IGVycm9yCitybTogY2Fubm90IHJlbW92ZSBgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3Rz L3NkYjQvdGVzdCc6IElucHV0L291dHB1dCBlcnJvcgorNiAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC90ZXN0OiBJbnB1dC9vdXRwdXQgZXJyb3IKK3JtOiBjYW5ub3QgcmVtb3Zl IGAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC90ZXN0JzogSW5wdXQvb3V0cHV0 IGVycm9yCis3IC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0L3Rlc3Q6IElucHV0 L291dHB1dCBlcnJvcgorcm06IGNhbm5vdCByZW1vdmUgYC9ob21lL21hbmlzaC9Qcm9qZWN0cy94 ZnN0ZXN0cy9zZGI0L3Rlc3QnOiBJbnB1dC9vdXRwdXQgZXJyb3IKKzggL2hvbWUvbWFuaXNoL1By b2plY3RzL3hmc3Rlc3RzL3NkYjQvdGVzdDogSW5wdXQvb3V0cHV0IGVycm9yCitybTogY2Fubm90 IHJlbW92ZSBgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQvdGVzdCc6IElucHV0 L291dHB1dCBlcnJvcgorOSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC90ZXN0 OiBJbnB1dC9vdXRwdXQgZXJyb3IKK3JtOiBjYW5ub3QgcmVtb3ZlIGAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiNC90ZXN0JzogSW5wdXQvb3V0cHV0IGVycm9yCisxMCAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC90ZXN0OiBJbnB1dC9vdXRwdXQgZXJyb3IKK3Jt OiBjYW5ub3QgcmVtb3ZlIGAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC90ZXN0 JzogSW5wdXQvb3V0cHV0IGVycm9yCisxMSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC90ZXN0OiBJbnB1dC9vdXRwdXQgZXJyb3IKK3JtOiBjYW5ub3QgcmVtb3ZlIGAvaG9tZS9t YW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC90ZXN0JzogSW5wdXQvb3V0cHV0IGVycm9yCisx MiAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC90ZXN0OiBJbnB1dC9vdXRwdXQg ZXJyb3IKK3JtOiBjYW5ub3QgcmVtb3ZlIGAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMv c2RiNC90ZXN0JzogSW5wdXQvb3V0cHV0IGVycm9yCisxMyAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC90ZXN0OiBJbnB1dC9vdXRwdXQgZXJyb3IKK3JtOiBjYW5ub3QgcmVtb3Zl IGAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC90ZXN0JzogSW5wdXQvb3V0cHV0 IGVycm9yCisxNCAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC90ZXN0OiBJbnB1 dC9vdXRwdXQgZXJyb3IKK3JtOiBjYW5ub3QgcmVtb3ZlIGAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiNC90ZXN0JzogSW5wdXQvb3V0cHV0IGVycm9yCisxNSAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC90ZXN0OiBJbnB1dC9vdXRwdXQgZXJyb3IKK3JtOiBjYW5u b3QgcmVtb3ZlIGAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC90ZXN0JzogSW5w dXQvb3V0cHV0IGVycm9yCisxNiAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiNC90 ZXN0OiBJbnB1dC9vdXRwdXQgZXJyb3IKK3JtOiBjYW5ub3QgcmVtb3ZlIGAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiNC90ZXN0JzogSW5wdXQvb3V0cHV0IGVycm9yCisKX2NoZWNr X3hmc19maWxlc3lzdGVtOiBmaWxlc3lzdGVtIG9uIC9kZXYvc2RiMyBoYXMgZGlydHkgbG9nIChz ZWUgMjI2LmZ1bGwpCl9jaGVja194ZnNfZmlsZXN5c3RlbTogZmlsZXN5c3RlbSBvbiAvZGV2L3Nk YjMgaXMgaW5jb25zaXN0ZW50IChjKSAoc2VlIDIyNi5mdWxsKQpfY2hlY2tfeGZzX2ZpbGVzeXN0 ZW06IGZpbGVzeXN0ZW0gb24gL2Rldi9zZGIzIGlzIGluY29uc2lzdGVudCAocikgKHNlZSAyMjYu ZnVsbCkKUmFuOiAxMTAgMTExIDExMiAxMTMgMTE3IDExOSAxMjAgMTIxIDEyNCAxMjYgMTI3IDEy OSAxMzAgMTMxIDEzMiAxMzMgMTM1IDEzNiAxMzcgMTM4IDEzOSAxNDAgMTQxIDE2NCAxNjUgMTY2 IDE2NyAxNjkgMTcwIDE3MSAxNzIgMTczIDE3NCAxNzggMTc5IDE4MCAxODEgMTgyIDE4MyAxODQg MTg2IDE4NyAxODggMTg5IDE5MCAxOTIgMTk0IDE5NyAxOTggMTk5IDIwMCAyMDEgMjAyIDIwMyAy MDQgMjA1IDIwNyAyMDggMjA5IDIxMCAyMTEgMjEyIDIxMyAyMTQgMjE1IDIxNiAyMTggMjIxIDIy MiAyMjMgMjI0IDIyNSAyMjYKTm90IHJ1bjogMTIyIDEyNSAxOTUgMjE3CkZhaWx1cmVzOiAxMTEg MTM2IDE3MCAxNzEgMTczIDE3OSAxODAgMTgxIDE4MiAxODMgMTg0IDE4NiAxODcgMTg4IDE4OSAx OTQgMjI2CkZhaWxlZCAxNyBvZiA3MyB0ZXN0cwoKCgoKCkZTVFlQICAgICAgICAgLS0geGZzIChu b24tZGVidWcpClBMQVRGT1JNICAgICAgLS0gTGludXgvaTY4NiBtYW5udURlc2sgMi42LjM1LjEz Ck1LRlNfT1BUSU9OUyAgLS0gLWYgLWJzaXplPTQwOTYgL2Rldi9zZGI0Ck1PVU5UX09QVElPTlMg LS0gL2Rldi9zZGI0IC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGI0CgoyMjYgMzgx cyAuLi4gMzg1cwoyMjcJIDg4MXMKMjI4CSAwcwoyMjkJIFtmYWlsZWQsIGV4aXQgc3RhdHVzIDQy XSAtIG91dHB1dCBtaXNtYXRjaCAoc2VlIDIyOS5vdXQuYmFkKQotLS0gMjI5Lm91dAkyMDExLTA1 LTExIDIyOjMyOjI0LjAwMDAwMDAwMCArMDUzMAorKysgMjI5Lm91dC5iYWQJMjAxMS0wNi0xMCAx MjoxMjowNC4zMjI2MTA5OTkgKzA1MzAKQEAgLTEsNCArMSw1MSBAQAogUUEgb3V0cHV0IGNyZWF0 ZWQgYnkgMjI5CiBnZW5lcmF0aW5nIDEwIGZpbGVzCitXcml0ZSBkaWQgbm90IHJldHVybiBjb3Jy ZWN0IGFtb3VudAorV3JpdGUgZGlkIG5vdCByZXR1cm4gY29ycmVjdCBhbW91bnQKK1dyaXRlIGRp ZCBub3QgcmV0dXJuIGNvcnJlY3QgYW1vdW50CitXcml0ZSBkaWQgbm90IHJldHVybiBjb3JyZWN0 IGFtb3VudAorV3JpdGUgZGlkIG5vdCByZXR1cm4gY29ycmVjdCBhbW91bnQKIGNvbXBhcmluZyBm aWxlcwotZ290IDAgZXJyb3JzCisvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiMy90 X2hvbGVzLzAgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjMvdF9ob2xlcy8xIGRp ZmZlcjogY2hhciAyNjIxNDUsIGxpbmUgMQorL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3Rz L3NkYjMvdF9ob2xlcy8wIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGIzL3RfaG9s ZXMvMiBkaWZmZXI6IGNoYXIgMjYyMTQ1LCBsaW5lIDEKKy9ob21lL21hbmlzaC9Qcm9qZWN0cy94 ZnN0ZXN0cy9zZGIzL3RfaG9sZXMvMCAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2Ri My90X2hvbGVzLzMgZGlmZmVyOiBjaGFyIDI4NjcyMiwgbGluZSAxCisvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiMy90X2hvbGVzLzAgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rl c3RzL3NkYjMvdF9ob2xlcy80IGRpZmZlcjogY2hhciAyODY3MjIsIGxpbmUgMQorL2hvbWUvbWFu aXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjMvdF9ob2xlcy8wIC9ob21lL21hbmlzaC9Qcm9qZWN0 cy94ZnN0ZXN0cy9zZGIzL3RfaG9sZXMvNSBkaWZmZXI6IGNoYXIgMjgyNjI1LCBsaW5lIDEKKy9o b21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGIzL3RfaG9sZXMvMCAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiMy90X2hvbGVzLzYgZGlmZmVyOiBjaGFyIDI2MjE0NSwgbGlu ZSAxCitjbXA6IEVPRiBvbiAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiMy90X2hv bGVzLzcKK2NtcDogRU9GIG9uIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGIzL3Rf aG9sZXMvOAorY21wOiBFT0Ygb24gL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjMv dF9ob2xlcy85CisvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiMy90X2hvbGVzLzEg L2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjMvdF9ob2xlcy8yIGRpZmZlcjogY2hh ciAyNjIxNDUsIGxpbmUgMQorL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjMvdF9o b2xlcy8xIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGIzL3RfaG9sZXMvMyBkaWZm ZXI6IGNoYXIgMjYyMTQ1LCBsaW5lIDEKKy9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9z ZGIzL3RfaG9sZXMvMSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiMy90X2hvbGVz LzQgZGlmZmVyOiBjaGFyIDI2MjE0NSwgbGluZSAxCisvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiMy90X2hvbGVzLzEgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjMv dF9ob2xlcy81IGRpZmZlcjogY2hhciAyNjIxNDUsIGxpbmUgMQorL2hvbWUvbWFuaXNoL1Byb2pl Y3RzL3hmc3Rlc3RzL3NkYjMvdF9ob2xlcy8xIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0 cy9zZGIzL3RfaG9sZXMvNiBkaWZmZXI6IGNoYXIgMjYyMTQ1LCBsaW5lIDEKK2NtcDogRU9GIG9u IC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGIzL3RfaG9sZXMvNworY21wOiBFT0Yg b24gL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjMvdF9ob2xlcy84CitjbXA6IEVP RiBvbiAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiMy90X2hvbGVzLzkKKy9ob21l L21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGIzL3RfaG9sZXMvMiAvaG9tZS9tYW5pc2gvUHJv amVjdHMveGZzdGVzdHMvc2RiMy90X2hvbGVzLzMgZGlmZmVyOiBjaGFyIDI2MjE0NSwgbGluZSAx CisvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiMy90X2hvbGVzLzIgL2hvbWUvbWFu aXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjMvdF9ob2xlcy80IGRpZmZlcjogY2hhciAyNjIxNDUs IGxpbmUgMQorL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjMvdF9ob2xlcy8yIC9o b21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGIzL3RfaG9sZXMvNSBkaWZmZXI6IGNoYXIg MjYyMTQ1LCBsaW5lIDEKKy9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGIzL3RfaG9s ZXMvMiAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiMy90X2hvbGVzLzYgZGlmZmVy OiBjaGFyIDI2MjE0NSwgbGluZSAxCitjbXA6IEVPRiBvbiAvaG9tZS9tYW5pc2gvUHJvamVjdHMv eGZzdGVzdHMvc2RiMy90X2hvbGVzLzcKK2NtcDogRU9GIG9uIC9ob21lL21hbmlzaC9Qcm9qZWN0 cy94ZnN0ZXN0cy9zZGIzL3RfaG9sZXMvOAorY21wOiBFT0Ygb24gL2hvbWUvbWFuaXNoL1Byb2pl Y3RzL3hmc3Rlc3RzL3NkYjMvdF9ob2xlcy85CisvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiMy90X2hvbGVzLzMgL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjMvdF9o b2xlcy80IGRpZmZlcjogY2hhciAzMjc2ODEsIGxpbmUgMQorL2hvbWUvbWFuaXNoL1Byb2plY3Rz L3hmc3Rlc3RzL3NkYjMvdF9ob2xlcy8zIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9z ZGIzL3RfaG9sZXMvNSBkaWZmZXI6IGNoYXIgMjgyNjI1LCBsaW5lIDEKKy9ob21lL21hbmlzaC9Q cm9qZWN0cy94ZnN0ZXN0cy9zZGIzL3RfaG9sZXMvMyAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZz dGVzdHMvc2RiMy90X2hvbGVzLzYgZGlmZmVyOiBjaGFyIDI2MjE0NSwgbGluZSAxCitjbXA6IEVP RiBvbiAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiMy90X2hvbGVzLzcKK2NtcDog RU9GIG9uIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGIzL3RfaG9sZXMvOAorY21w OiBFT0Ygb24gL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjMvdF9ob2xlcy85Cisv aG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiMy90X2hvbGVzLzQgL2hvbWUvbWFuaXNo L1Byb2plY3RzL3hmc3Rlc3RzL3NkYjMvdF9ob2xlcy81IGRpZmZlcjogY2hhciAyODI2MjUsIGxp bmUgMQorL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjMvdF9ob2xlcy80IC9ob21l L21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGIzL3RfaG9sZXMvNiBkaWZmZXI6IGNoYXIgMjYy MTQ1LCBsaW5lIDEKK2NtcDogRU9GIG9uIC9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9z ZGIzL3RfaG9sZXMvNworY21wOiBFT0Ygb24gL2hvbWUvbWFuaXNoL1Byb2plY3RzL3hmc3Rlc3Rz L3NkYjMvdF9ob2xlcy84CitjbXA6IEVPRiBvbiAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVz dHMvc2RiMy90X2hvbGVzLzkKKy9ob21lL21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGIzL3Rf aG9sZXMvNSAvaG9tZS9tYW5pc2gvUHJvamVjdHMveGZzdGVzdHMvc2RiMy90X2hvbGVzLzYgZGlm ZmVyOiBjaGFyIDI2MjE0NSwgbGluZSAxCitjbXA6IEVPRiBvbiAvaG9tZS9tYW5pc2gvUHJvamVj dHMveGZzdGVzdHMvc2RiMy90X2hvbGVzLzcKK2NtcDogRU9GIG9uIC9ob21lL21hbmlzaC9Qcm9q ZWN0cy94ZnN0ZXN0cy9zZGIzL3RfaG9sZXMvOAorY21wOiBFT0Ygb24gL2hvbWUvbWFuaXNoL1By b2plY3RzL3hmc3Rlc3RzL3NkYjMvdF9ob2xlcy85CitjbXA6IEVPRiBvbiAvaG9tZS9tYW5pc2gv UHJvamVjdHMveGZzdGVzdHMvc2RiMy90X2hvbGVzLzcKK2NtcDogRU9GIG9uIC9ob21lL21hbmlz aC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGIzL3RfaG9sZXMvOAorY21wOiBFT0Ygb24gL2hvbWUvbWFu aXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjMvdF9ob2xlcy85Citnb3QgNDIgZXJyb3JzCjIzNgkg MXMKMjM4CSAxMXMKMjM5CSAzcwoyNDAJIFtmYWlsZWQsIGV4aXQgc3RhdHVzIDEwXSAtIG91dHB1 dCBtaXNtYXRjaCAoc2VlIDI0MC5vdXQuYmFkKQotLS0gMjQwLm91dAkyMDExLTA1LTExIDIyOjMy OjI0LjAwMDAwMDAwMCArMDUzMAorKysgMjQwLm91dC5iYWQJMjAxMS0wNi0xMCAxMjoxMjoyOS4x ODQ2MTA5OTAgKzA1MzAKQEAgLTEsMiArMSw1IEBACiBRQSBvdXRwdXQgY3JlYXRlZCBieSAyNDAK IFNpbGVuY2UgaXMgZ29sZGVuLgorbm9uIG9uZSBidWZmZXIgYXQgYnVmWzBdID0+IDB4MDAsMDAs MDAsMDAKK25vbi1vbmUgcmVhZCBhdCBvZmZzZXQgNDYwOAorKioqIFdBUk5JTkcgKioqIC9ob21l L21hbmlzaC9Qcm9qZWN0cy94ZnN0ZXN0cy9zZGIzL2Fpb2Rpb19zcGFyc2UgaGFzIG5vdCBiZWVu IHVubGlua2VkOyBpZiB5b3UgZG9uJ3Qgcm0gaXQgbWFudWFsbHkgZmlyc3QsIGl0IG1heSBpbmZs dWVuY2UgdGhlIG5leHQgcnVuCjI0MQkgW25vdCBydW5dIGRiZW5jaCBub3QgZm91bmQKMjQyCSBb bm90IHJ1bl0gemVybyBjb21tYW5kIG5vdCBzdXBwb3J0ZWQKMjQzCSAwcwoyNDUJIDBzCjI0Ngkg MHMKMjQ3CSA0NzdzCjI0OAkgMHMKMjQ5CSAyM3MKMjUwCSBbZmFpbGVkLCBleGl0IHN0YXR1cyAx XSAtIG5vIHF1YWxpZmllZCBvdXRwdXQKMjUxCSBbbm90IHJ1bl0gRlNUUklNIGlzIG5vdCBzdXBw b3J0ZWQKMjUyCSBbbm90IHJ1bl0geGZzX2lvIGZhbGxvY2F0ZSBwdW5jaCBzdXBwb3J0IGlzIG1p c3NpbmcKMjUzCQoKCgoKRlNUWVAgICAgICAgICAtLSB4ZnMgKG5vbi1kZWJ1ZykKUExBVEZPUk0g ICAgICAtLSBMaW51eC9pNjg2IG1hbm51RGVzayAyLjYuMzUuMTMKTUtGU19PUFRJT05TICAtLSAt ZiAtYnNpemU9NDA5NiAvZGV2L3NkYjQKTU9VTlRfT1BUSU9OUyAtLSAvZGV2L3NkYjQgL2hvbWUv bWFuaXNoL1Byb2plY3RzL3hmc3Rlc3RzL3NkYjQKCjI1MwkgOHMKUmFuOiAyNTMKUGFzc2VkIGFs bCAxIHRlc3RzCg== --bcaec54ee374a61e2904a5a7f7e6-- From sentto-74162301-103-1308057220-linux-xfs=oss.sgi.com@returns.groups.yahoo.com Tue Jun 14 08:13:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.1 required=5.0 tests=BAYES_50,FREEMAIL_FROM, HTML_MESSAGE,MIME_8BIT_HEADER,T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.4.0-r929098 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 p5EDDhd1083496 for ; Tue, 14 Jun 2011 08:13:44 -0500 X-ASG-Debug-ID: 1308057221-6ec803220000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from n54c.bullet.mail.sp1.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 6F37A15E319E for ; Tue, 14 Jun 2011 06:13:41 -0700 (PDT) Received: from n54c.bullet.mail.sp1.yahoo.com (n54c.bullet.mail.sp1.yahoo.com [98.136.45.53]) by cuda.sgi.com with SMTP id EWC9FxCRF3JGvmZ9 for ; Tue, 14 Jun 2011 06:13:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoogroups.com; s=lima; t=1308057221; bh=vB5qbDDqQDwl6cjei3RWrxGxbj7H4IlIFp8a1uRkQ1w=; h=Received:Received:X-Yahoo-Newman-Id:X-Sender:X-Apparently-To:X-Received:X-Received:X-Received:X-Received:X-Received:To:Message-ID:User-Agent:X-Mailer:X-Originating-IP:X-Yahoo-Post-IP:From:X-Yahoo-Profile:Sender:MIME-Version:Mailing-List:Delivered-To:List-Id:Precedence:List-Unsubscribe:Date:Subject:Reply-To:X-Yahoo-Newman-Property:Content-Type; b=AuhvsAsQ1VhPhwk1BRsubC2O9MZnfcYiDfNP+fCidwjYF+k6/PxfyAW4iUwEyu0rlf1O9u/Rl40Kxw3LFZfTafe0E/HGCP9qVS3HenUlqgnKHIZ70i4leNQRsbyT/HVj DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=lima; d=yahoogroups.com; b=Y+26Yy64y4ONu3b1xPQbayxp1FE2bwISMR6FF3Q80OR2RVmRXih9EtioAIeHsYKsOdad8ymdpP0gXXsHiP9kNZRr++XEm18zZ8gZ6HrRSwVMW5V0GEMl1sRfe7IYm6q5; Received: from [69.147.65.172] by n54.bullet.mail.sp1.yahoo.com with NNFMP; 14 Jun 2011 13:13:41 -0000 Received: from [66.196.95.33] by t14.bullet.mail.sp1.yahoo.com with NNFMP; 14 Jun 2011 13:13:41 -0000 X-Yahoo-Newman-Id: 74162301-m103 X-Sender: halenlukekavi@yahoo.com.tw X-Apparently-To: nxgaxk@yahoogroups.com X-Received: (qmail 27484 invoked from network); 14 Jun 2011 13:13:34 -0000 X-Received: from unknown (66.196.94.107) by m16.grp.re1.yahoo.com with QMQP; 14 Jun 2011 13:13:34 -0000 X-Received: from unknown (HELO n37b.bullet.mail.sp1.yahoo.com) (66.163.168.151) by mta3.grp.re1.yahoo.com with SMTP; 14 Jun 2011 13:13:34 -0000 X-Received: from [69.147.65.151] by n37.bullet.mail.sp1.yahoo.com with NNFMP; 14 Jun 2011 13:13:33 -0000 X-Received: from [98.137.34.36] by t5.bullet.mail.sp1.yahoo.com with NNFMP; 14 Jun 2011 13:13:33 -0000 To: nxgaxk@yahoogroups.com Message-ID: User-Agent: eGroups-EW/0.82 X-Mailer: Yahoo Groups Message Poster X-Originating-IP: 66.163.168.151 X-Yahoo-Post-IP: 114.41.34.66 From: "halenlukekavi" X-Yahoo-Profile: halenlukekavi Sender: nxgaxk@yahoogroups.com MIME-Version: 1.0 Mailing-List: list nxgaxk@yahoogroups.com; contact nxgaxk-owner@yahoogroups.com Delivered-To: mailing list nxgaxk@yahoogroups.com List-Id: Precedence: bulk List-Unsubscribe: Date: Tue, 14 Jun 2011 13:13:33 -0000 X-ASG-Orig-Subj: [nxgaxk] =?big5?B?plmmQrDVIahDpn6uTKTRq0So07RYtvSko6VpISFp?= =?big5?B?aWc2N3Z0eWE0cXRhMzFvNnE1NmU=?= Subject: [nxgaxk] =?big5?B?plmmQrDVIahDpn6uTKTRq0So07RYtvSko6VpISFp?= =?big5?B?aWc2N3Z0eWE0cXRhMzFvNnE1NmU=?= Reply-To: nxgaxk@yahoogroups.com X-Yahoo-Newman-Property: groups-email-ff-u Content-Type: multipart/alternative; boundary="zAvCJ10ZygVBdabeHFpWUE16aVGYlsELDiNFsmk" X-Barracuda-Connect: n54c.bullet.mail.sp1.yahoo.com[98.136.45.53] X-Barracuda-Start-Time: 1308057222 X-Barracuda-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, DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66054 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 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 --zAvCJ10ZygVBdabeHFpWUE16aVGYlsELDiNFsmk Content-Type: text/plain; charset=BIG5 Content-Transfer-Encoding: base64 bTFtbDU4ZDdyM24wM24zczMzanNkNmUzN3NibWE4bXdvNGZrd2k2NXlnNm5wMDIydTQwMHVs bmsxMmE2YndteXFzcjNxbzY4NXdoZzh1bWI3bTBvYWU4dHZmM2d5MzhhN3JpNXQwOG9iZ3N5 bmRhY2gzMTBnN3l3aG50bHkyb29tbDZwZjI2M3BzZDMxdTh3aTR3NmxwZDI0a3E4bjd2dDMK CqTRrvCmbrz2IajTwkmyRKq6IK74tLukQKRVIQoKu7C68qZZpEC29KazNTCmfrtzp0C4Z8Xn qrqmbqZZsk2yRKTipHWkVKn6qnamQrvmCgqoQ6Z+rkyk0atEqNO0WLb0pKOlaaFDCgpodHRw Oi8vemFwdC5pbi8xNEFFCgqmcKpHpKOv4Kq9sbWzc7WyIL3Qvca7c7r0p30KCnV5dDV3ZTI0 cThvcG81MzZiazB0N3h4ZHQxZ2lsa3U4eTFwNnU1N2JvNzdyNjZmbGI1NTc4ZHZ1ZGdvbzBu YmM3ZnI3a2twMjY2OHF1NjNpdmUwMTM4MzZva3ltYTJlMGZtdTUyN2RtN2U3NTI4YXMxYjFy NnVqNzJiNXltNHluMHlwdzZwN3M3Z2Izdjc2NHFqZTh3NXhlYmE2eXk4M2swNjBhMnMwcTF2 cnVsZ3ZiNTZvcThxd24ybnI2MmoxbjZ2 --zAvCJ10ZygVBdabeHFpWUE16aVGYlsELDiNFsmk Content-Type: text/html; charset=BIG5 Content-Transfer-Encoding: quoted-printable  
=20=20=20=20=20=20 =20=20=20=20=20=20

m1ml58d7r3n03n3s33jsd6e37sbma8mwo4fkwi65yg6np022u400ulnk12a6bwmyqs= r3qo685whg8umb7m0oae8tvf3gy38a7ri5t08obgsyndach310g7ywhntly2ooml6pf263psd31= u8wi4w6lpd24kq8n7vt3

=A4=D1=AE=F0=A6n=BC=F6!=A8=D3=C2I=B2D=AA=BA =AE=F8=B4=BB=A4@=A4U!

=BB=B0=BA=F2=A6Y=A4@=B6=F4=A6=B350=A6~=BBs=A7@=B8g=C5=E7=AA=BA=A6n=A6Y=B2M= =B2D=A4=E2=A4u=A4T=A9=FA=AAv=A6B=BB=E6

=A8C=A6~=AEL=A4=D1=ABD=A8=D3=B4X=B6=F4=A4=A3=A5i=A1C

http://zapt.in/14AE

=A6p=AAG=A4=A3=AF=E0=AA=BD=B1=B5=B3s=B5=B2 =BD=D0=BD=C6=BBs=BA=F4=A7}

uyt5we24q8opo536bk0t7xxdt1gilku8y1p6u57bo77r66flb5578dvudgoo0nbc7fr7kkp2668= qu63ive013836okyma2e0fmu527dm7e7528as1b1r6uj72b5ym4yn0ypw6p7s7gb3v764qje8w5= xeba6yy83k060a2s0q1vrulgvb56oq8qwn2nr62j1n6v

=20=20=20=20=20
__._,_.___
=20=20=20=20=20=20=20=20 =20=20 =20=20=20
.

__,_._,___
--zAvCJ10ZygVBdabeHFpWUE16aVGYlsELDiNFsmk-- From david@fromorbit.com Tue Jun 14 09:03:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5EE3skB085528 for ; Tue, 14 Jun 2011 09:03:55 -0500 X-ASG-Debug-ID: 1308060231-7ef803410000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D47C94DFD7F for ; Tue, 14 Jun 2011 07:03:51 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id gZNXEgBhOZF9iyrM for ; Tue, 14 Jun 2011 07:03:51 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtgDACJn9015LCoegWdsb2JhbABTpkAVAQEWJiXKJA6GFgShQQ Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail06.adl6.internode.on.net with ESMTP; 14 Jun 2011 23:33:50 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QWUDc-0001Yq-FU; Wed, 15 Jun 2011 00:03:48 +1000 Date: Wed, 15 Jun 2011 00:03:48 +1000 From: Dave Chinner To: Ajeet Yadav Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfstest run result on 2.6.35.13 X86, 51 test cases failed Subject: Re: xfstest run result on 2.6.35.13 X86, 51 test cases failed Message-ID: <20110614140348.GD32466@dastard> References: <20110613141324.GC32466@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308060232 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0191 1.0000 -1.8969 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.90 X-Barracuda-Spam-Status: No, SCORE=-1.90 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66057 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, Jun 14, 2011 at 02:08:59PM +0530, Ajeet Yadav wrote: > On Mon, Jun 13, 2011 at 7:43 PM, Dave Chinner wrote: > > On Mon, Jun 13, 2011 at 02:16:02PM +0530, Ajeet Yadav wrote: > >> Dear All. > >> I have installed the 2.6.35.13 long term valilla kernel release > >> (www.kenrel.org) on my Intel core 2 duo PC, and run 11-05-2011 xfstest > >> version, and run on it, below is the list of fails test cases. > >> As far as I know community uses xfstest for QA, seeing so many fails, > >> I am bit worried. > > > > It shouldn't fail very many tests at all... > > > >> Can anyone hepl me know that why so many fails, is I missed some > >> config option ? or these test cases are not applicable ? or there is > >> someting else > > > > Well, without telling us why the tests are failing (i.e. copy all > > the output rather than just telling us some tests failed) we have no > > idea what the failures you are seeing are. Without some indication > > of what they failures are nobody can really comment on your > > situation.... > > I better to send the xfstest log as attachment becuase of it large size Which means I can't easily quote sections of it. It looks like you are running "check" without a group specification, so it's just running all the tests, including known broken tests (e.g. test 018). It looks like there are problems unmounting the scratch device as a result, so lots of tests are subsequently failing due to that. You should be running either the "auto" or "quick" group tests. Aslo, seeing failures like this: 180 [failed, exit status 1] - output mismatch (see 180.out.bad) --- 180.out 2011-05-11 22:32:24.000000000 +0530 +++ 180.out.bad 2011-06-09 18:18:39.666610999 +0530 @@ -1 +1,3 @@ QA output created by 180 +common.config: Error: $SCRATCH_MNT (/home/manish/Projects/xfstests/sdb4) is not a directory +./180: line 38: _cleanup_testdir: command not found Makes me think you've got problems with your test setup that need to be fixed before you go any further. FWIW, your tests are running terribly slowly - e.g. it's taking 2795 seconds to run test 013 on a non-debug kernel. It takes 20s to run in a VM on my laptop (and it's quite a slow laptop) so I really suspect you may have some deeper problem of which the xfstests failures are just a symptom of.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From achender@linux.vnet.ibm.com Tue Jun 14 10:41:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5EFfqTk089080 for ; Tue, 14 Jun 2011 10:41:53 -0500 X-ASG-Debug-ID: 1308066111-1a3c02810000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e36.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0FCF011DC10C for ; Tue, 14 Jun 2011 08:41:51 -0700 (PDT) Received: from e36.co.us.ibm.com (e36.co.us.ibm.com [32.97.110.154]) by cuda.sgi.com with ESMTP id XS5dfGOx68HL8kIH for ; Tue, 14 Jun 2011 08:41:51 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay02.boulder.ibm.com (d03relay02.boulder.ibm.com [9.17.195.227]) by e36.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5EFZnDw024274 for ; Tue, 14 Jun 2011 09:35:49 -0600 Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d03relay02.boulder.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id p5EFfYEL148956 for ; Tue, 14 Jun 2011 09:41:35 -0600 Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5E9f3ro011828 for ; Tue, 14 Jun 2011 03:41:03 -0600 Received: from lc4eb0185863151.ibm.com (sig-9-65-209-130.mts.ibm.com [9.65.209.130]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5E9f0jL011610; Tue, 14 Jun 2011 03:41:01 -0600 Message-ID: <4DF78127.40505@linux.vnet.ibm.com> Date: Tue, 14 Jun 2011 08:41:27 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: xfs-oss , Ext4 Developers List , linux-fsdevel X-ASG-Orig-Subj: xfstests 252 failure Subject: xfstests 252 failure Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e36.co.us.ibm.com[32.97.110.154] X-Barracuda-Start-Time: 1308066112 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 Hi all, I just wanted to get some ideas moving on this question before too much time goes by. Ext4 is currently failing xfstest 252, test number 12. Currently test 12 is: $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$alloc_cmd 0 20k" \ -c "pwrite 8k 4k" -c "fsync" \ -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ]&& die_now and the output is: 12. unwritten -> data -> unwritten 0: [0..7]: unwritten 1: [8..31]: hole 2: [32..39]: unwritten Ext4 gets data extents here instead of unwritten extents. I did some investigating and it looks like the fsync command causes the extents to be written out before the punch hole operation starts. It looks like what happens is that when an unwritten extent gets written to, it doesnt always split the extent. If the extent is small enough, then it just zeros out the portions that are not written to, and the whole extent becomes a written extent. Im not sure if that is incorrect or if we need to change the test to not compare the extent types. It looks to me that the code in ext4 that does this is supposed to be an optimization to help reduce fragmentation. We could change the filters to print just "extent" instead of "unwritten" or "data", but I realize that probably makes the test a lot less effective for xfs. If anyone can think of some more elegant fixes, please let me know. Thx! Allison Henderson From sandeen@redhat.com Tue Jun 14 11:07:00 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_18 autolearn=no version=3.4.0-r929098 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 p5EG6xDI089992 for ; Tue, 14 Jun 2011 11:07:00 -0500 X-ASG-Debug-ID: 1308067618-4da203970000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 84F7E1EDA557 for ; Tue, 14 Jun 2011 09:06:59 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id mAkRe14RKCfYDx7n for ; Tue, 14 Jun 2011 09:06:59 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5EG6lBL013145 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 14 Jun 2011 12:06:48 -0400 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p5EG6kTa021289 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Tue, 14 Jun 2011 12:06:47 -0400 Message-ID: <4DF78716.4040605@redhat.com> Date: Tue, 14 Jun 2011 11:06:46 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Allison Henderson CC: xfs-oss , Ext4 Developers List , linux-fsdevel , Josef Bacik X-ASG-Orig-Subj: Re: xfstests 252 failure Subject: Re: xfstests 252 failure References: <4DF78127.40505@linux.vnet.ibm.com> In-Reply-To: <4DF78127.40505@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1308067619 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 6/14/11 10:41 AM, Allison Henderson wrote: > Hi all, > > I just wanted to get some ideas moving on this question before too > much time goes by. Ext4 is currently failing xfstest 252, test number > 12. Currently test 12 is: > > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > -c "$alloc_cmd 0 20k" \ > -c "pwrite 8k 4k" -c "fsync" \ > -c "$zero_cmd 4k 12k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ]&& die_now so the file should go through these steps: (H=hole, P=prealloc, D=data) 0k 20k | H | H | H | H | H | (truncate) | P | P | P | P | P | (alloc_cmd) | P | P | D | P | P | (pwrite) (fsync) | P | H | H | H | P | (punch) > and the output is: > > 12. unwritten -> data -> unwritten > 0: [0..7]: unwritten > 1: [8..31]: hole > 2: [32..39]: unwritten > > Ext4 gets data extents here instead of unwritten extents. so it's like this? 0: [0..7]: data 1: [8..31]: hole 2: [32..39]: data > I did some > investigating and it looks like the fsync command causes the extents > to be written out before the punch hole operation starts. It looks > like what happens is that when an unwritten extent gets written to, > it doesnt always split the extent. If the extent is small enough, > then it just zeros out the portions that are not written to, and the > whole extent becomes a written extent. Im not sure if that is > incorrect or if we need to change the test to not compare the extent > types. Yes, it does do that IIRC. I probably need to look closer, but any test which expects exact layouts from a filesystem after a series of operations is probably expecting too much... >From a data integrity perspective, written zeros is as good as a hole is as good as preallocated space, so I suppose those should all be acceptable, though I guess "punch" should result in holes exactly as requested. > It looks to me that the code in ext4 that does this is supposed to be > an optimization to help reduce fragmentation. We could change the > filters to print just "extent" instead of "unwritten" or "data", but > I realize that probably makes the test a lot less effective for xfs. > If anyone can think of some more elegant fixes, please let me know. > Thx! Josef, what do you think? It's your test originally. :) But if the test is supposed to verify hole punching behavior, then to me, making unwritten extents equivalent to data extents full of 0s should be fine. Perhaps an md5sum step would be in order to verify that it is in fact all 0s. -Eric > Allison Henderson > > -- > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html From sekharan@us.ibm.com Tue Jun 14 13:41:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_51,J_CHICKENPOX_71,J_CHICKENPOX_73 autolearn=no version=3.4.0-r929098 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 p5EIftGJ116644 for ; Tue, 14 Jun 2011 13:41:56 -0500 X-ASG-Debug-ID: 1308076914-129102850000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e1.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A4ECB1EDAD41 for ; Tue, 14 Jun 2011 11:41:54 -0700 (PDT) Received: from e1.ny.us.ibm.com (e1.ny.us.ibm.com [32.97.182.141]) by cuda.sgi.com with ESMTP id WD7x5QmrUJ0q2oYg for ; Tue, 14 Jun 2011 11:41:54 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay01.pok.ibm.com (d01relay01.pok.ibm.com [9.56.227.233]) by e1.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5EIUArj027816 for ; Tue, 14 Jun 2011 14:30:10 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay01.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5EIfrJI110536 for ; Tue, 14 Jun 2011 14:41:53 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5EIfqgH030571 for ; Tue, 14 Jun 2011 14:41:52 -0400 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5EIfpKe030473 for ; Tue, 14 Jun 2011 14:41:51 -0400 X-ASG-Orig-Subj: Failure of test case 244 Subject: Failure of test case 244 From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: XFS Mailing List Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Tue, 14 Jun 2011 11:41:50 -0700 Message-ID: <1308076910.7661.470.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e1.ny.us.ibm.com[32.97.182.141] X-Barracuda-Start-Time: 1308076914 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 Hello, test case 244 expects a mkfs option projid32bit, which is not present in older version of mkfs.xfs(for example 3.1.1 in RHEL 6.1). I though of making it a "requires" for this test, so that the test case doesn't generate a "failure" when the test is run on older versions. Opinions ? regards chandra PS: here is the test o/p FSTYP -- xfs (non-debug) PLATFORM -- Linux/x86_64 elm3c201 2.6.39-rc4-xfs.git.p2+ MKFS_OPTIONS -- -f -bsize=4096 /dev/sdd2 MOUNT_OPTIONS -- -o context=system_u:object_r:nfs_t:s0 /dev/sdd2 /mnt/xfsScratchMntPt 244 [failed, exit status 1] - output mismatch (see 244.out.bad) --- 244.out 2011-04-20 08:34:36.000000000 -0700 +++ 244.out.bad 2011-06-14 11:29:57.000000000 -0700 @@ -1,2 +1,25 @@ QA output created by 244 -Silence is golden +unknown option -i projid32bit=0 +Usage: mkfs.xfs +/* blocksize */ [-b log=n|size=num] +/* data subvol */ [-d agcount=n,agsize=n,file,name=xxx,size=num, + (sunit=value,swidth=value|su=num,sw=num), + sectlog=n|sectsize=num +/* inode size */ [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2] +/* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n + sunit=value|su=num,sectlog=n|sectsize=num, + lazy-count=0|1] +/* label */ [-L label (maximum 12 characters)] +/* naming */ [-n log=n|size=num,version=2|ci] +/* prototype file */ [-p fname] +/* quiet */ [-q] +/* realtime subvol */ [-r extsize=num,size=num,rtdev=xxx] +/* sectorsize */ [-s log=n|size=num] +/* version */ [-V] + devicename + is required unless -d name=xxx is given. + is xxx (bytes), xxxs (sectors), xxxb (fs blocks), xxxk (xxx KiB), + xxxm (xxx MiB), xxxg (xxx GiB), xxxt (xxx TiB) or xxxp (xxx PiB). + is xxx (512 byte blocks). +mkfs failed +(see 244.full for details) Ran: 244 Failures: 244 Failed 1 of 1 tests From josef@redhat.com Tue Jun 14 13:42:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_18 autolearn=no version=3.4.0-r929098 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 p5EIg2uf116672 for ; Tue, 14 Jun 2011 13:42:03 -0500 X-ASG-Debug-ID: 1308076921-162f027f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 74A551EDAD4A for ; Tue, 14 Jun 2011 11:42:01 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 5gXqy4G9LmZUhwp4 for ; Tue, 14 Jun 2011 11:42:01 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5EIg0Fl006926 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 14 Jun 2011 14:42:00 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p5EIfx2p008611; Tue, 14 Jun 2011 14:41:59 -0400 Received: from localhost.localdomain (vpn-10-46.rdu.redhat.com [10.11.10.46]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id p5EIfwN1030545; Tue, 14 Jun 2011 14:41:58 -0400 Message-ID: <4DF7AB76.8030701@redhat.com> Date: Tue, 14 Jun 2011 14:41:58 -0400 From: Josef Bacik User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc15 Lightning/1.0b2 Thunderbird/3.1.10 MIME-Version: 1.0 To: Eric Sandeen CC: Allison Henderson , xfs-oss , Ext4 Developers List , linux-fsdevel X-ASG-Orig-Subj: Re: xfstests 252 failure Subject: Re: xfstests 252 failure References: <4DF78127.40505@linux.vnet.ibm.com> <4DF78716.4040605@redhat.com> In-Reply-To: <4DF78716.4040605@redhat.com> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1308076922 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 06/14/2011 12:06 PM, Eric Sandeen wrote: > On 6/14/11 10:41 AM, Allison Henderson wrote: >> Hi all, >> >> I just wanted to get some ideas moving on this question before too >> much time goes by. Ext4 is currently failing xfstest 252, test number >> 12. Currently test 12 is: >> >> $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ >> -c "$alloc_cmd 0 20k" \ >> -c "pwrite 8k 4k" -c "fsync" \ >> -c "$zero_cmd 4k 12k" \ >> -c "$map_cmd -v" $testfile | $filter_cmd >> [ $? -ne 0 ]&& die_now > > so the file should go through these steps: > (H=hole, P=prealloc, D=data) > > 0k 20k > | H | H | H | H | H | (truncate) > | P | P | P | P | P | (alloc_cmd) > | P | P | D | P | P | (pwrite) > (fsync) > | P | H | H | H | P | (punch) > >> and the output is: >> >> 12. unwritten -> data -> unwritten >> 0: [0..7]: unwritten >> 1: [8..31]: hole >> 2: [32..39]: unwritten >> >> Ext4 gets data extents here instead of unwritten extents. > > so it's like this? > > 0: [0..7]: data > 1: [8..31]: hole > 2: [32..39]: data > >> I did some >> investigating and it looks like the fsync command causes the extents >> to be written out before the punch hole operation starts. It looks >> like what happens is that when an unwritten extent gets written to, >> it doesnt always split the extent. If the extent is small enough, >> then it just zeros out the portions that are not written to, and the >> whole extent becomes a written extent. Im not sure if that is >> incorrect or if we need to change the test to not compare the extent >> types. > > Yes, it does do that IIRC. > > I probably need to look closer, but any test which expects exact > layouts from a filesystem after a series of operations is probably > expecting too much... > > From a data integrity perspective, written zeros is as good as a hole is > as good as preallocated space, so I suppose those should all be acceptable, > though I guess "punch" should result in holes exactly as requested. > >> It looks to me that the code in ext4 that does this is supposed to be >> an optimization to help reduce fragmentation. We could change the >> filters to print just "extent" instead of "unwritten" or "data", but >> I realize that probably makes the test a lot less effective for xfs. >> If anyone can think of some more elegant fixes, please let me know. >> Thx! > > Josef, what do you think? It's your test originally. :) > Yes, a test that was really only meant to test the block based fiemap since they all act in a dumb and easy to verify way. I think if we want to keep this test we should probably have it just recognize these little optimizations so it doesn't freak out. Thanks, Josef From sekharan@us.ibm.com Tue Jun 14 13:51:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_51, J_CHICKENPOX_61 autolearn=no version=3.4.0-r929098 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 p5EIpPej117828 for ; Tue, 14 Jun 2011 13:51:25 -0500 X-ASG-Debug-ID: 1308077484-1fd4025a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e33.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0B9423ECD for ; Tue, 14 Jun 2011 11:51:24 -0700 (PDT) Received: from e33.co.us.ibm.com (e33.co.us.ibm.com [32.97.110.151]) by cuda.sgi.com with ESMTP id AQIzg7xAAVMOs2Wp for ; Tue, 14 Jun 2011 11:51:24 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay02.boulder.ibm.com (d03relay02.boulder.ibm.com [9.17.195.227]) by e33.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5EIhwuD019750 for ; Tue, 14 Jun 2011 12:43:58 -0600 Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d03relay02.boulder.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id p5EIp9o4129776 for ; Tue, 14 Jun 2011 12:51:11 -0600 Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5ECocRp026461 for ; Tue, 14 Jun 2011 06:50:38 -0600 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5ECoc6E026406 for ; Tue, 14 Jun 2011 06:50:38 -0600 X-ASG-Orig-Subj: xfstests test case 180 fails often Subject: xfstests test case 180 fails often From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: XFS Mailing List Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Tue, 14 Jun 2011 11:51:04 -0700 Message-ID: <1308077464.7661.473.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e33.co.us.ibm.com[32.97.110.151] X-Barracuda-Start-Time: 1308077485 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 Hello All, test case 180 fails often (4 out of 5) in my x86_64 system. Any suggestions on how to proceed to debug ? regards, chandra 80 176s ... - output mismatch (see 180.out.bad)^M --- 180.out 2011-04-20 08:34:36.000000000 -0700^M +++ 180.out.bad 2011-06-03 14:10:45.000000000 -0700^M @@ -1 +1,4 @@^M QA output created by 180^M +file /mnt/xfsScratchMntPt/656 has incorrect size - sync failed^M +file /mnt/xfsScratchMntPt/818 has incorrect size - sync failed^M +file /mnt/xfsScratchMntPt/899 has incorrect size - sync failed^M Ran: 180^M Failures: 180^M Failed 1 of 1 tests^M From sekharan@us.ibm.com Tue Jun 14 13:54:02 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5EIs2EJ118256 for ; Tue, 14 Jun 2011 13:54:02 -0500 X-ASG-Debug-ID: 1308077640-0f37000c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e4.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9B11511DC1DD for ; Tue, 14 Jun 2011 11:54:01 -0700 (PDT) Received: from e4.ny.us.ibm.com (e4.ny.us.ibm.com [32.97.182.144]) by cuda.sgi.com with ESMTP id FxGcknnkyoZzMvB1 for ; Tue, 14 Jun 2011 11:54:01 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay05.pok.ibm.com (d01relay05.pok.ibm.com [9.56.227.237]) by e4.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5EIWTLa024785 for ; Tue, 14 Jun 2011 14:32:29 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay05.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5EIrxdV117824 for ; Tue, 14 Jun 2011 14:53:59 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5EIrw7X027519 for ; Tue, 14 Jun 2011 14:53:58 -0400 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5EIrvl6027458 for ; Tue, 14 Jun 2011 14:53:57 -0400 X-ASG-Orig-Subj: xfstests test case 229 fails consistently Subject: xfstests test case 229 fails consistently From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: XFS Mailing List Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Tue, 14 Jun 2011 11:53:56 -0700 Message-ID: <1308077636.7661.476.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e4.ny.us.ibm.com[32.97.182.144] X-Barracuda-Start-Time: 1308077641 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 Hello All, xfstests test case 229 fails consistently in my x84_64 system. Only thing that is different between runs is the number of errors. Any suggestions on how to proceed with the debug. regards, chandra 229 118s ... [failed, exit status 45] - output mismatch (see 229.out.bad) --- 229.out 2011-04-20 08:34:36.000000000 -0700 +++ 229.out.bad 2011-06-03 14:53:22.000000000 -0700 @@ -1,4 +1,49 @@ QA output created by 229 generating 10 files comparing files -got 0 errors +/mnt/xfsMntPt//t_holes/0 /mnt/xfsMntPt//t_holes/1 differ: char 266241, line 1 +/mnt/xfsMntPt//t_holes/0 /mnt/xfsMntPt//t_holes/2 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/0 /mnt/xfsMntPt//t_holes/3 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/0 /mnt/xfsMntPt//t_holes/4 differ: char 266241, line 1 +/mnt/xfsMntPt//t_holes/0 /mnt/xfsMntPt//t_holes/5 differ: char 266241, line 1 +/mnt/xfsMntPt//t_holes/0 /mnt/xfsMntPt//t_holes/6 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/0 /mnt/xfsMntPt//t_holes/7 differ: char 274433, line 1 +/mnt/xfsMntPt//t_holes/0 /mnt/xfsMntPt//t_holes/8 differ: char 266241, line 1 +/mnt/xfsMntPt//t_holes/0 /mnt/xfsMntPt//t_holes/9 differ: char 274433, line 1 +/mnt/xfsMntPt//t_holes/1 /mnt/xfsMntPt//t_holes/2 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/1 /mnt/xfsMntPt//t_holes/3 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/1 /mnt/xfsMntPt//t_holes/4 differ: char 274433, line 1 +/mnt/xfsMntPt//t_holes/1 /mnt/xfsMntPt//t_holes/5 differ: char 274433, line 1 +/mnt/xfsMntPt//t_holes/1 /mnt/xfsMntPt//t_holes/6 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/1 /mnt/xfsMntPt//t_holes/7 differ: char 266241, line 1 +/mnt/xfsMntPt//t_holes/1 /mnt/xfsMntPt//t_holes/8 differ: char 270337, line 1 +/mnt/xfsMntPt//t_holes/1 /mnt/xfsMntPt//t_holes/9 differ: char 266241, line 1 +/mnt/xfsMntPt//t_holes/2 /mnt/xfsMntPt//t_holes/3 differ: char 266241, line 1 +/mnt/xfsMntPt//t_holes/2 /mnt/xfsMntPt//t_holes/4 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/2 /mnt/xfsMntPt//t_holes/5 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/2 /mnt/xfsMntPt//t_holes/6 differ: char 266241, line 1 +/mnt/xfsMntPt//t_holes/2 /mnt/xfsMntPt//t_holes/7 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/2 /mnt/xfsMntPt//t_holes/8 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/2 /mnt/xfsMntPt//t_holes/9 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/3 /mnt/xfsMntPt//t_holes/4 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/3 /mnt/xfsMntPt//t_holes/5 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/3 /mnt/xfsMntPt//t_holes/6 differ: char 278529, line 1 +/mnt/xfsMntPt//t_holes/3 /mnt/xfsMntPt//t_holes/7 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/3 /mnt/xfsMntPt//t_holes/8 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/3 /mnt/xfsMntPt//t_holes/9 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/4 /mnt/xfsMntPt//t_holes/5 differ: char 282625, line 1 +/mnt/xfsMntPt//t_holes/4 /mnt/xfsMntPt//t_holes/6 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/4 /mnt/xfsMntPt//t_holes/7 differ: char 266241, line 1 +/mnt/xfsMntPt//t_holes/4 /mnt/xfsMntPt//t_holes/8 differ: char 270337, line 1 +/mnt/xfsMntPt//t_holes/4 /mnt/xfsMntPt//t_holes/9 differ: char 266241, line 1 +/mnt/xfsMntPt//t_holes/5 /mnt/xfsMntPt//t_holes/6 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/5 /mnt/xfsMntPt//t_holes/7 differ: char 266241, line 1 +/mnt/xfsMntPt//t_holes/5 /mnt/xfsMntPt//t_holes/8 differ: char 270337, line 1 +/mnt/xfsMntPt//t_holes/5 /mnt/xfsMntPt//t_holes/9 differ: char 266241, line 1 +/mnt/xfsMntPt//t_holes/6 /mnt/xfsMntPt//t_holes/7 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/6 /mnt/xfsMntPt//t_holes/8 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/6 /mnt/xfsMntPt//t_holes/9 differ: char 262145, line 1 +/mnt/xfsMntPt//t_holes/7 /mnt/xfsMntPt//t_holes/8 differ: char 266241, line 1 +/mnt/xfsMntPt//t_holes/7 /mnt/xfsMntPt//t_holes/9 differ: char 70037361, line 8097 +/mnt/xfsMntPt//t_holes/8 /mnt/xfsMntPt//t_holes/9 differ: char 266241, line 1 +got 45 errors Ran: 229 Failures: 229 Failed 1 of 1 tests From achender@linux.vnet.ibm.com Tue Jun 14 14:37:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_18 autolearn=no version=3.4.0-r929098 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 p5EJbvDq120552 for ; Tue, 14 Jun 2011 14:37:57 -0500 X-ASG-Debug-ID: 1308080274-6bcc011f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e33.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C1ABC170C966 for ; Tue, 14 Jun 2011 12:37:54 -0700 (PDT) Received: from e33.co.us.ibm.com (e33.co.us.ibm.com [32.97.110.151]) by cuda.sgi.com with ESMTP id PiP7KsW2PHZ690oi for ; Tue, 14 Jun 2011 12:37:54 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay01.boulder.ibm.com (d03relay01.boulder.ibm.com [9.17.195.226]) by e33.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5EJURws010344 for ; Tue, 14 Jun 2011 13:30:27 -0600 Received: from d03av05.boulder.ibm.com (d03av05.boulder.ibm.com [9.17.195.85]) by d03relay01.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5EJbTcO125570 for ; Tue, 14 Jun 2011 13:37:30 -0600 Received: from d03av05.boulder.ibm.com (loopback [127.0.0.1]) by d03av05.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5EJbSLL022926 for ; Tue, 14 Jun 2011 13:37:28 -0600 Received: from lc4eb0185863151.ibm.com (sig-9-65-209-130.mts.ibm.com [9.65.209.130]) by d03av05.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5EJbQLC022854; Tue, 14 Jun 2011 13:37:27 -0600 Message-ID: <4DF7B875.7090700@linux.vnet.ibm.com> Date: Tue, 14 Jun 2011 12:37:25 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Josef Bacik CC: Eric Sandeen , xfs-oss , Ext4 Developers List , linux-fsdevel X-ASG-Orig-Subj: Re: xfstests 252 failure Subject: Re: xfstests 252 failure References: <4DF78127.40505@linux.vnet.ibm.com> <4DF78716.4040605@redhat.com> <4DF7AB76.8030701@redhat.com> In-Reply-To: <4DF7AB76.8030701@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e33.co.us.ibm.com[32.97.110.151] X-Barracuda-Start-Time: 1308080276 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 06/14/2011 11:41 AM, Josef Bacik wrote: > On 06/14/2011 12:06 PM, Eric Sandeen wrote: >> On 6/14/11 10:41 AM, Allison Henderson wrote: >>> Hi all, >>> >>> I just wanted to get some ideas moving on this question before too >>> much time goes by. Ext4 is currently failing xfstest 252, test number >>> 12. Currently test 12 is: >>> >>> $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ >>> -c "$alloc_cmd 0 20k" \ >>> -c "pwrite 8k 4k" -c "fsync" \ >>> -c "$zero_cmd 4k 12k" \ >>> -c "$map_cmd -v" $testfile | $filter_cmd >>> [ $? -ne 0 ]&& die_now >> >> so the file should go through these steps: >> (H=hole, P=prealloc, D=data) >> >> 0k 20k >> | H | H | H | H | H | (truncate) >> | P | P | P | P | P | (alloc_cmd) >> | P | P | D | P | P | (pwrite) >> (fsync) >> | P | H | H | H | P | (punch) >> >>> and the output is: >>> >>> 12. unwritten -> data -> unwritten >>> 0: [0..7]: unwritten >>> 1: [8..31]: hole >>> 2: [32..39]: unwritten >>> >>> Ext4 gets data extents here instead of unwritten extents. >> >> so it's like this? >> >> 0: [0..7]: data >> 1: [8..31]: hole >> 2: [32..39]: data >> >>> I did some >>> investigating and it looks like the fsync command causes the extents >>> to be written out before the punch hole operation starts. It looks >>> like what happens is that when an unwritten extent gets written to, >>> it doesnt always split the extent. If the extent is small enough, >>> then it just zeros out the portions that are not written to, and the >>> whole extent becomes a written extent. Im not sure if that is >>> incorrect or if we need to change the test to not compare the extent >>> types. >> >> Yes, it does do that IIRC. >> >> I probably need to look closer, but any test which expects exact >> layouts from a filesystem after a series of operations is probably >> expecting too much... >> >> From a data integrity perspective, written zeros is as good as a hole is >> as good as preallocated space, so I suppose those should all be acceptable, >> though I guess "punch" should result in holes exactly as requested. >> >>> It looks to me that the code in ext4 that does this is supposed to be >>> an optimization to help reduce fragmentation. We could change the >>> filters to print just "extent" instead of "unwritten" or "data", but >>> I realize that probably makes the test a lot less effective for xfs. >>> If anyone can think of some more elegant fixes, please let me know. >>> Thx! >> >> Josef, what do you think? It's your test originally. :) >> > > Yes, a test that was really only meant to test the block based fiemap > since they all act in a dumb and easy to verify way. I think if we want > to keep this test we should probably have it just recognize these little > optimizations so it doesn't freak out. Thanks, > > Josef Alrighty then, so it sounds like we should adjust the filters to only recognize extents and holes, and then add a checksum to the punched files. I think that seems pretty straight forward. I already have a patch set out there that is adding more punch hole tests, so I can add these changes in with it if everyone is ok with that. Thx! Allison Henderson From sandeen@sandeen.net Tue Jun 14 14:38:08 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_51,J_CHICKENPOX_71,J_CHICKENPOX_73 autolearn=no version=3.4.0-r929098 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 p5EJc8e9120573 for ; Tue, 14 Jun 2011 14:38:08 -0500 X-ASG-Debug-ID: 1308080286-6798014a0000-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 5A100170C968 for ; Tue, 14 Jun 2011 12:38:07 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id 1QKrYPcM8emKu6O5 for ; Tue, 14 Jun 2011 12:38:07 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id A45054964600; Tue, 14 Jun 2011 14:38:06 -0500 (CDT) Message-ID: <4DF7B89E.8010000@sandeen.net> Date: Tue, 14 Jun 2011 14:38:06 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: sekharan@us.ibm.com CC: XFS Mailing List X-ASG-Orig-Subj: Re: Failure of test case 244 Subject: Re: Failure of test case 244 References: <1308076910.7661.470.camel@chandra-lucid.beaverton.ibm.com> In-Reply-To: <1308076910.7661.470.camel@chandra-lucid.beaverton.ibm.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1308080287 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.27 X-Barracuda-Spam-Status: No, SCORE=-1.27 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE_7580D X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66079 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.75 BSF_RULE_7580D Custom Rule 7580D X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 6/14/11 1:41 PM, Chandra Seetharaman wrote: > Hello, > > test case 244 expects a mkfs option projid32bit, which is not present in > older version of mkfs.xfs(for example 3.1.1 in RHEL 6.1). > > I though of making it a "requires" for this test, so that the test case > doesn't generate a "failure" when the test is run on older versions. > > Opinions ? Yes, that make sense; care to send a patch with proper signoff? Thanks, -Eric > regards > > chandra > > PS: here is the test o/p > > FSTYP -- xfs (non-debug) > PLATFORM -- Linux/x86_64 elm3c201 2.6.39-rc4-xfs.git.p2+ > MKFS_OPTIONS -- -f -bsize=4096 /dev/sdd2 > MOUNT_OPTIONS -- -o context=system_u:object_r:nfs_t:s0 /dev/sdd2 /mnt/xfsScratchMntPt > > 244 [failed, exit status 1] - output mismatch (see 244.out.bad) > --- 244.out 2011-04-20 08:34:36.000000000 -0700 > +++ 244.out.bad 2011-06-14 11:29:57.000000000 -0700 > @@ -1,2 +1,25 @@ > QA output created by 244 > -Silence is golden > +unknown option -i projid32bit=0 > +Usage: mkfs.xfs > +/* blocksize */ [-b log=n|size=num] > +/* data subvol */ [-d agcount=n,agsize=n,file,name=xxx,size=num, > + (sunit=value,swidth=value|su=num,sw=num), > + sectlog=n|sectsize=num > +/* inode size */ [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2] > +/* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n > + sunit=value|su=num,sectlog=n|sectsize=num, > + lazy-count=0|1] > +/* label */ [-L label (maximum 12 characters)] > +/* naming */ [-n log=n|size=num,version=2|ci] > +/* prototype file */ [-p fname] > +/* quiet */ [-q] > +/* realtime subvol */ [-r extsize=num,size=num,rtdev=xxx] > +/* sectorsize */ [-s log=n|size=num] > +/* version */ [-V] > + devicename > + is required unless -d name=xxx is given. > + is xxx (bytes), xxxs (sectors), xxxb (fs blocks), xxxk (xxx KiB), > + xxxm (xxx MiB), xxxg (xxx GiB), xxxt (xxx TiB) or xxxp (xxx PiB). > + is xxx (512 byte blocks). > +mkfs failed > +(see 244.full for details) > Ran: 244 > Failures: 244 > Failed 1 of 1 tests > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@sandeen.net Tue Jun 14 14:39:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5EJdvt3120642 for ; Tue, 14 Jun 2011 14:39:57 -0500 X-ASG-Debug-ID: 1308080396-61f2021f0000-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 5557A1B2ED42 for ; Tue, 14 Jun 2011 12:39:56 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id 0PP2JgYWfKs6BrQh for ; Tue, 14 Jun 2011 12:39:56 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 809BC4964600; Tue, 14 Jun 2011 14:39:56 -0500 (CDT) Message-ID: <4DF7B90C.8050100@sandeen.net> Date: Tue, 14 Jun 2011 14:39:56 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: sekharan@us.ibm.com CC: XFS Mailing List X-ASG-Orig-Subj: Re: xfstests test case 229 fails consistently Subject: Re: xfstests test case 229 fails consistently References: <1308077636.7661.476.camel@chandra-lucid.beaverton.ibm.com> In-Reply-To: <1308077636.7661.476.camel@chandra-lucid.beaverton.ibm.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1308080397 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1075 1.0000 -1.3480 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= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66079 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 6/14/11 1:53 PM, Chandra Seetharaman wrote: > Hello All, > > xfstests test case 229 fails consistently in my x84_64 system. > Only thing that is different between runs is the number of errors. > Any suggestions on how to proceed with the debug. > > regards, > > chandra > This one is known to fail. http://oss.sgi.com/archives/xfs/2011-05/msg00237.html "it's never passed. It's a placeholder to remind us how to reproduce a known problem that is difficult to fix." -Eric From sekharan@us.ibm.com Tue Jun 14 15:10:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_51,J_CHICKENPOX_71,J_CHICKENPOX_73 autolearn=no version=3.4.0-r929098 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 p5EKAoc1121808 for ; Tue, 14 Jun 2011 15:10:50 -0500 X-ASG-Debug-ID: 1308082249-569403710000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e35.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 34C0F4610 for ; Tue, 14 Jun 2011 13:10:49 -0700 (PDT) Received: from e35.co.us.ibm.com (e35.co.us.ibm.com [32.97.110.153]) by cuda.sgi.com with ESMTP id laYMgAbXXJbIiKCR for ; Tue, 14 Jun 2011 13:10:49 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by e35.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5EJqreS015947 for ; Tue, 14 Jun 2011 13:52:53 -0600 Received: from d03av04.boulder.ibm.com (d03av04.boulder.ibm.com [9.17.195.170]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5EKAcDn150044 for ; Tue, 14 Jun 2011 14:10:38 -0600 Received: from d03av04.boulder.ibm.com (loopback [127.0.0.1]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5EEAPAg000319 for ; Tue, 14 Jun 2011 08:10:25 -0600 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5EEAOIl032675; Tue, 14 Jun 2011 08:10:24 -0600 X-ASG-Orig-Subj: Re: Failure of test case 244 Subject: Re: Failure of test case 244 From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: Eric Sandeen Cc: XFS Mailing List In-Reply-To: <4DF7B89E.8010000@sandeen.net> References: <1308076910.7661.470.camel@chandra-lucid.beaverton.ibm.com> <4DF7B89E.8010000@sandeen.net> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Tue, 14 Jun 2011 13:10:23 -0700 Message-ID: <1308082223.7661.477.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e35.co.us.ibm.com[32.97.110.153] X-Barracuda-Start-Time: 1308082250 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, 2011-06-14 at 14:38 -0500, Eric Sandeen wrote: > On 6/14/11 1:41 PM, Chandra Seetharaman wrote: > > Hello, > > > > test case 244 expects a mkfs option projid32bit, which is not present in > > older version of mkfs.xfs(for example 3.1.1 in RHEL 6.1). > > > > I though of making it a "requires" for this test, so that the test case > > doesn't generate a "failure" when the test is run on older versions. > > > > Opinions ? > > Yes, that make sense; care to send a patch with proper signoff? Will test and send it. Thanks > > Thanks, > -Eric > > > regards > > > > chandra > > > > PS: here is the test o/p > > > > FSTYP -- xfs (non-debug) > > PLATFORM -- Linux/x86_64 elm3c201 2.6.39-rc4-xfs.git.p2+ > > MKFS_OPTIONS -- -f -bsize=4096 /dev/sdd2 > > MOUNT_OPTIONS -- -o context=system_u:object_r:nfs_t:s0 /dev/sdd2 /mnt/xfsScratchMntPt > > > > 244 [failed, exit status 1] - output mismatch (see 244.out.bad) > > --- 244.out 2011-04-20 08:34:36.000000000 -0700 > > +++ 244.out.bad 2011-06-14 11:29:57.000000000 -0700 > > @@ -1,2 +1,25 @@ > > QA output created by 244 > > -Silence is golden > > +unknown option -i projid32bit=0 > > +Usage: mkfs.xfs > > +/* blocksize */ [-b log=n|size=num] > > +/* data subvol */ [-d agcount=n,agsize=n,file,name=xxx,size=num, > > + (sunit=value,swidth=value|su=num,sw=num), > > + sectlog=n|sectsize=num > > +/* inode size */ [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2] > > +/* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n > > + sunit=value|su=num,sectlog=n|sectsize=num, > > + lazy-count=0|1] > > +/* label */ [-L label (maximum 12 characters)] > > +/* naming */ [-n log=n|size=num,version=2|ci] > > +/* prototype file */ [-p fname] > > +/* quiet */ [-q] > > +/* realtime subvol */ [-r extsize=num,size=num,rtdev=xxx] > > +/* sectorsize */ [-s log=n|size=num] > > +/* version */ [-V] > > + devicename > > + is required unless -d name=xxx is given. > > + is xxx (bytes), xxxs (sectors), xxxb (fs blocks), xxxk (xxx KiB), > > + xxxm (xxx MiB), xxxg (xxx GiB), xxxt (xxx TiB) or xxxp (xxx PiB). > > + is xxx (512 byte blocks). > > +mkfs failed > > +(see 244.full for details) > > Ran: 244 > > Failures: 244 > > Failed 1 of 1 tests > > > > > > _______________________________________________ > > 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+ad120dfd57bc1f73e115+2851+infradead.org+hch@bombadil.srs.infradead.org Tue Jun 14 15:12:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5EKCg2n121891 for ; Tue, 14 Jun 2011 15:12:43 -0500 X-ASG-Debug-ID: 1308082359-26a002bd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A22E91348A6C for ; Tue, 14 Jun 2011 13:12:39 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id r8cxNiZSkor7AfNN for ; Tue, 14 Jun 2011 13:12:39 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QWZyY-0004bo-Gu; Tue, 14 Jun 2011 20:12:38 +0000 Date: Tue, 14 Jun 2011 16:12:38 -0400 From: Christoph Hellwig To: neilb@suse.de, rgoldwyn@suse.de Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org X-ASG-Orig-Subj: suse xfs patches Subject: suse xfs patches Message-ID: <20110614201238.GA17586@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308082361 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66081 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Neil, hi Goldwyn, if you find issue with XFS and commit local patches to the SLES tree it would be very much appreciated if you could actually send them upstream, including an explanation of what you are running into. Thanks a lot, Christoph From sekharan@us.ibm.com Tue Jun 14 15:47:36 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5EKlaEt127200 for ; Tue, 14 Jun 2011 15:47:36 -0500 X-ASG-Debug-ID: 1308084454-610b00f60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e5.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 86D8A11E1FD7 for ; Tue, 14 Jun 2011 13:47:34 -0700 (PDT) Received: from e5.ny.us.ibm.com (e5.ny.us.ibm.com [32.97.182.145]) by cuda.sgi.com with ESMTP id C2ExOhbnAmyJ13CG for ; Tue, 14 Jun 2011 13:47:34 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay03.pok.ibm.com (d01relay03.pok.ibm.com [9.56.227.235]) by e5.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5EKJils022975 for ; Tue, 14 Jun 2011 16:19:44 -0400 Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay03.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5EKlYB2107744 for ; Tue, 14 Jun 2011 16:47:34 -0400 Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5EGlMUW032475 for ; Tue, 14 Jun 2011 13:47:22 -0300 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d01av03.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5EGlLv6032467; Tue, 14 Jun 2011 13:47:22 -0300 X-ASG-Orig-Subj: Re: xfstests test case 229 fails consistently Subject: Re: xfstests test case 229 fails consistently From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: Eric Sandeen Cc: XFS Mailing List In-Reply-To: <4DF7B90C.8050100@sandeen.net> References: <1308077636.7661.476.camel@chandra-lucid.beaverton.ibm.com> <4DF7B90C.8050100@sandeen.net> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Tue, 14 Jun 2011 13:47:33 -0700 Message-ID: <1308084453.7661.480.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e5.ny.us.ibm.com[32.97.182.145] X-Barracuda-Start-Time: 1308084455 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, 2011-06-14 at 14:39 -0500, Eric Sandeen wrote: > On 6/14/11 1:53 PM, Chandra Seetharaman wrote: > > Hello All, > > > > xfstests test case 229 fails consistently in my x84_64 system. > > Only thing that is different between runs is the number of errors. > > Any suggestions on how to proceed with the debug. > > > > regards, > > > > chandra > > > > This one is known to fail. > > http://oss.sgi.com/archives/xfs/2011-05/msg00237.html > > "it's never passed. It's a placeholder to remind us how to > reproduce a known problem that is difficult to fix." > > -Eric IIRC, correctly there are more tests like these (placeholder to remind us how to reproduce ...). Would it be a good idea to list them in a file and refer them in README ? If yes, Can you provide me the list :), I promise a patch with the changes. chandra > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From sekharan@us.ibm.com Tue Jun 14 16:08:51 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_51,J_CHICKENPOX_71,J_CHICKENPOX_73 autolearn=no version=3.4.0-r929098 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 p5EL8pI7130236 for ; Tue, 14 Jun 2011 16:08:51 -0500 X-ASG-Debug-ID: 1308085729-6eed010c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e5.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 79EE31348C77 for ; Tue, 14 Jun 2011 14:08:49 -0700 (PDT) Received: from e5.ny.us.ibm.com (e5.ny.us.ibm.com [32.97.182.145]) by cuda.sgi.com with ESMTP id exxQJhLRd5HqEOcK for ; Tue, 14 Jun 2011 14:08:49 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay01.pok.ibm.com (d01relay01.pok.ibm.com [9.56.227.233]) by e5.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5EKex3g014933 for ; Tue, 14 Jun 2011 16:40:59 -0400 Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay01.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5EL8nPf112526 for ; Tue, 14 Jun 2011 17:08:49 -0400 Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5EH8bs4000641 for ; Tue, 14 Jun 2011 14:08:37 -0300 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d01av03.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5EH8alN000617; Tue, 14 Jun 2011 14:08:36 -0300 X-ASG-Orig-Subj: Re: Failure of test case 244 Subject: Re: Failure of test case 244 From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: Eric Sandeen Cc: XFS Mailing List In-Reply-To: <4DF7B89E.8010000@sandeen.net> References: <1308076910.7661.470.camel@chandra-lucid.beaverton.ibm.com> <4DF7B89E.8010000@sandeen.net> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Tue, 14 Jun 2011 14:08:47 -0700 Message-ID: <1308085727.7661.484.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e5.ny.us.ibm.com[32.97.182.145] X-Barracuda-Start-Time: 1308085730 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 Ran the test with new mkfs.xfs. Got this failure. Wondering if any other tools need to be replaced. ------------- STYP -- xfs (non-debug) PLATFORM -- Linux/x86_64 elm3c201 2.6.39-rc4-xfs.git.p2+ MKFS_OPTIONS -- -f -bsize=4096 /dev/sdd2 MOUNT_OPTIONS -- -o context=system_u:object_r:nfs_t:s0 /dev/sdd2 /mnt/xfsScratchMntPt 244 [failed, exit status 1] - output mismatch (see 244.out.bad) --- 244.out 2011-06-10 17:25:22.000000000 -0700 +++ 244.out.bad 2011-06-14 14:05:36.000000000 -0700 @@ -1,2 +1,4 @@ QA output created by 244 Silence is golden +FAIL: projid32bit enabled: setting over 32bit projid succeeded + while it should fail Ran: 244 Failures: 244 Failed 1 of 1 tests ----------------------- Thanks chandra On Tue, 2011-06-14 at 14:38 -0500, Eric Sandeen wrote: > On 6/14/11 1:41 PM, Chandra Seetharaman wrote: > > Hello, > > > > test case 244 expects a mkfs option projid32bit, which is not present in > > older version of mkfs.xfs(for example 3.1.1 in RHEL 6.1). > > > > I though of making it a "requires" for this test, so that the test case > > doesn't generate a "failure" when the test is run on older versions. > > > > Opinions ? > > Yes, that make sense; care to send a patch with proper signoff? > > Thanks, > -Eric > > > regards > > > > chandra > > > > PS: here is the test o/p > > > > FSTYP -- xfs (non-debug) > > PLATFORM -- Linux/x86_64 elm3c201 2.6.39-rc4-xfs.git.p2+ > > MKFS_OPTIONS -- -f -bsize=4096 /dev/sdd2 > > MOUNT_OPTIONS -- -o context=system_u:object_r:nfs_t:s0 /dev/sdd2 /mnt/xfsScratchMntPt > > > > 244 [failed, exit status 1] - output mismatch (see 244.out.bad) > > --- 244.out 2011-04-20 08:34:36.000000000 -0700 > > +++ 244.out.bad 2011-06-14 11:29:57.000000000 -0700 > > @@ -1,2 +1,25 @@ > > QA output created by 244 > > -Silence is golden > > +unknown option -i projid32bit=0 > > +Usage: mkfs.xfs > > +/* blocksize */ [-b log=n|size=num] > > +/* data subvol */ [-d agcount=n,agsize=n,file,name=xxx,size=num, > > + (sunit=value,swidth=value|su=num,sw=num), > > + sectlog=n|sectsize=num > > +/* inode size */ [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2] > > +/* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n > > + sunit=value|su=num,sectlog=n|sectsize=num, > > + lazy-count=0|1] > > +/* label */ [-L label (maximum 12 characters)] > > +/* naming */ [-n log=n|size=num,version=2|ci] > > +/* prototype file */ [-p fname] > > +/* quiet */ [-q] > > +/* realtime subvol */ [-r extsize=num,size=num,rtdev=xxx] > > +/* sectorsize */ [-s log=n|size=num] > > +/* version */ [-V] > > + devicename > > + is required unless -d name=xxx is given. > > + is xxx (bytes), xxxs (sectors), xxxb (fs blocks), xxxk (xxx KiB), > > + xxxm (xxx MiB), xxxg (xxx GiB), xxxt (xxx TiB) or xxxp (xxx PiB). > > + is xxx (512 byte blocks). > > +mkfs failed > > +(see 244.full for details) > > Ran: 244 > > Failures: 244 > > Failed 1 of 1 tests > > > > > > _______________________________________________ > > xfs mailing list > > xfs@oss.sgi.com > > http://oss.sgi.com/mailman/listinfo/xfs > > > From rgoldwyn@suse.de Tue Jun 14 17:05:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5EM5tqr134392 for ; Tue, 14 Jun 2011 17:05:56 -0500 X-ASG-Debug-ID: 1308089152-540f033b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6CFE11B2F295 for ; Tue, 14 Jun 2011 15:05:52 -0700 (PDT) Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id hJLfiBRSsOW7kiOa for ; Tue, 14 Jun 2011 15:05:52 -0700 (PDT) Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.221.2]) by mx2.suse.de (Postfix) with ESMTP id D020986EE4; Wed, 15 Jun 2011 00:05:51 +0200 (CEST) Date: Tue, 14 Jun 2011 17:05:50 -0500 From: Goldwyn Rodrigues To: Christoph Hellwig Cc: neilb@suse.de, xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org X-ASG-Orig-Subj: Re: suse xfs patches Subject: Re: suse xfs patches Message-ID: <20110614220550.GA9138@baloo.cartoons> References: <20110614201238.GA17586@infradead.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="d6Gm4EdcadzBjdND" Content-Disposition: inline In-Reply-To: <20110614201238.GA17586@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1308089153 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1306 1.0000 -1.2123 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.21 X-Barracuda-Spam-Status: No, SCORE=-1.21 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66088 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 --d6Gm4EdcadzBjdND Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Tue, Jun 14, 2011 at 04:12:38PM -0400, Christoph Hellwig wrote: > Hi Neil, hi Goldwyn, > > if you find issue with XFS and commit local patches to the SLES tree > it would be very much appreciated if you could actually send them > upstream, including an explanation of what you are running into. > Yes sure. I suppose you are refering to the patch attached. I did not send it upstream because the upstream code had taken a different approach and the patch was relevant to the SLES kernel tree only. FWIW, SGI was involved. The upstream commits were 90810b9e82a36c3c57c1aeb8b2918b242a130b26 and ff57ab21995a8636cfc72efeebb09cc6034d756f -- Goldwyn --d6Gm4EdcadzBjdND Content-Type: text/x-patch; charset=us-ascii Content-Disposition: attachment; filename="xfs-make-xfsbufd-less-aggressive.patch" From: Goldwyn Rodrigues Subject: XFS - Make xfsbufd less aggressive References: bnc#649473 Patch-mainline: no xfsbufd and flush threads are in contention of the xfs_buf_t because flush thread needs to read a buffer (usually for btree metadata) which is locked for I/O by xfsbufd for writes. This could block writes for a long time. After a run of heavy writes (approx 10 minutes), the vmscan code shrinks slabs, which instructs xfsbufd to flush the slab cache as well. xfsbufd receives flush requests. However, this is too aggressive for xfsbufd, and causes more contention with flush threads. To make things worse, the xfsbufd_wakeup returns zero which does not account to the objects it will free. This patch makes the flushes less aggressive by returning the count of objects in the list, and force flushes only when priority > 0. Signed-off-by: Goldwyn Rodrigues Signed-off-by: NeilBrown --- fs/xfs/linux-2.6/xfs_buf.c | 17 +++++++++++++---- fs/xfs/linux-2.6/xfs_buf.h | 3 +++ 2 files changed, 16 insertions(+), 4 deletions(-) --- linux-2.6.32-SLE11-SP1.orig/fs/xfs/linux-2.6/xfs_buf.c +++ linux-2.6.32-SLE11-SP1/fs/xfs/linux-2.6/xfs_buf.c @@ -411,7 +411,7 @@ _xfs_buf_lookup_pages( __func__, gfp_mask); XFS_STATS_INC(xb_page_retries); - xfsbufd_wakeup(0, gfp_mask); + xfsbufd_wakeup(1, gfp_mask); congestion_wait(BLK_RW_ASYNC, HZ/50); goto retry; } @@ -1565,6 +1565,7 @@ xfs_alloc_delwrite_queue( INIT_LIST_HEAD(&btp->bt_list); INIT_LIST_HEAD(&btp->bt_delwrite_queue); spin_lock_init(&btp->bt_delwrite_lock); + atomic_set(&btp->bt_qcount, 0); btp->bt_flags = 0; btp->bt_task = kthread_run(xfsbufd, btp, "xfsbufd"); if (IS_ERR(btp->bt_task)) { @@ -1627,6 +1628,7 @@ xfs_buf_delwri_queue( bp->b_flags |= _XBF_DELWRI_Q; list_add_tail(&bp->b_list, dwq); + atomic_inc(&bp->b_target->bt_qcount); bp->b_queuetime = jiffies; spin_unlock(dwlk); @@ -1669,16 +1671,22 @@ xfsbufd_wakeup( gfp_t mask) { xfs_buftarg_t *btp; + int count = 0; spin_lock(&xfs_buftarg_lock); list_for_each_entry(btp, &xfs_buftarg_list, bt_list) { if (test_bit(XBT_FORCE_SLEEP, &btp->bt_flags)) continue; - set_bit(XBT_FORCE_FLUSH, &btp->bt_flags); - wake_up_process(btp->bt_task); + if (list_empty(&btp->bt_delwrite_queue)) + continue; + count += atomic_read(&btp->bt_qcount); + if (priority) { + set_bit(XBT_FORCE_FLUSH, &btp->bt_flags); + wake_up_process(btp->bt_task); + } } spin_unlock(&xfs_buftarg_lock); - return 0; + return count; } /* @@ -1715,6 +1723,7 @@ xfs_buf_delwri_split( _XBF_RUN_QUEUES); bp->b_flags |= XBF_WRITE; list_move_tail(&bp->b_list, list); + atomic_dec(&bp->b_target->bt_qcount); } else skipped++; } --- linux-2.6.32-SLE11-SP1.orig/fs/xfs/linux-2.6/xfs_buf.h +++ linux-2.6.32-SLE11-SP1/fs/xfs/linux-2.6/xfs_buf.h @@ -125,6 +125,9 @@ typedef struct xfs_buftarg { struct list_head bt_delwrite_queue; spinlock_t bt_delwrite_lock; unsigned long bt_flags; +#ifndef __GENKSYMS__ + atomic_t bt_qcount; +#endif } xfs_buftarg_t; /* --d6Gm4EdcadzBjdND-- From sekharan@us.ibm.com Tue Jun 14 20:10:14 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5F1AEk4147601 for ; Tue, 14 Jun 2011 20:10:14 -0500 X-ASG-Debug-ID: 1308100213-380f014f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e35.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9C3B915E33A9 for ; Tue, 14 Jun 2011 18:10:13 -0700 (PDT) Received: from e35.co.us.ibm.com (e35.co.us.ibm.com [32.97.110.153]) by cuda.sgi.com with ESMTP id fRC178dgvJSBbOAL for ; Tue, 14 Jun 2011 18:10:13 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by e35.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5F0qGeZ027500 for ; Tue, 14 Jun 2011 18:52:16 -0600 Received: from d03av01.boulder.ibm.com (d03av01.boulder.ibm.com [9.17.195.167]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5F1A8Vt122848 for ; Tue, 14 Jun 2011 19:10:08 -0600 Received: from d03av01.boulder.ibm.com (loopback [127.0.0.1]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5F1A7wu006079 for ; Tue, 14 Jun 2011 19:10:07 -0600 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5F1A74Y006050; Tue, 14 Jun 2011 19:10:07 -0600 X-ASG-Orig-Subj: [PATCH]: [xfstests] Make the requirement of projid32bit explicit in test 244 Subject: [PATCH]: [xfstests] Make the requirement of projid32bit explicit in test 244 From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: XFS Mailing List Cc: Eric Sandeen Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Tue, 14 Jun 2011 18:10:06 -0700 Message-ID: <1308100206.7661.486.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e35.co.us.ibm.com[32.97.110.153] X-Barracuda-Start-Time: 1308100213 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 244 depends on projid32bit feature in mkfs.xfs. Not all versions of xfsprogs provide that feature in mkfs.xfs. This patch makes it an explicit requirement and avoids running the test if the feature doesn't exist, instead of failing the test with an obscure message. Signed-Off-By: Chandra Seetharaman --- diff --git a/244 b/244 index 99762a5..e9f8a3d 100755 --- a/244 +++ b/244 @@ -48,6 +48,7 @@ _cleanup() _supported_fs xfs _require_xfs_quota _require_scratch +_require_projid32bit_in_xfs export MOUNT_OPTIONS="-opquota" diff --git a/common.rc b/common.rc index c510c66..4e051dc 100644 --- a/common.rc +++ b/common.rc @@ -797,6 +797,15 @@ _require_command() [ -n "$1" -a -x "$1" ] || _notrun "$_cmd utility required, skipped this test" } +# this test requires the projid32bit feature to be available in +# mkfs.xfs +# +_require_projid32bit_in_xfs() +{ + _scratch_mkfs_xfs -f -i projid32bit=0 2>&1 >/dev/null \ + || _notrun "mkfs.xfs doesn't have projid32bit feature" +} + # this test requires that external log/realtime devices are not in use # _require_nonexternal() From ajeet.yadav.77@gmail.com Wed Jun 15 03:56:05 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,FREEMAIL_FROM, J_CHICKENPOX_53,J_CHICKENPOX_63,J_CHICKENPOX_71,J_CHICKENPOX_73, J_CHICKENPOX_91,J_CHICKENPOX_93,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p5F8u4X6174166 for ; Wed, 15 Jun 2011 03:56:05 -0500 X-ASG-Debug-ID: 1308128163-42c600650000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-vx0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F0DAC4E131B for ; Wed, 15 Jun 2011 01:56:03 -0700 (PDT) Received: from mail-vx0-f181.google.com (mail-vx0-f181.google.com [209.85.220.181]) by cuda.sgi.com with ESMTP id gwgMzgDdHvbrT3AH for ; Wed, 15 Jun 2011 01:56:03 -0700 (PDT) Received: by vxb39 with SMTP id 39so142994vxb.26 for ; Wed, 15 Jun 2011 01:56:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=/fVwS+NsJbxRbL4xPEELG/ioQivDvo1l2MLqWXGGq+Q=; b=bGheGRLnBpaNkyyEAS/W5L0sfZzcllBFjxlRSpNN9Gc3WjVl5uYKvnA8z+eGe4RKwF hGW15UZrIbp20qBUkbLfcelnDnOMbRg6+58FJro5RotPlnvUQ+87PVc0zsL6ykCY+vDy s+dzQc+YwBvgW0JxMHUhkvPtqZFgXyhhdKRZs= 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=tceQUZ1czXTK0BJpaMLcFRY7XrF6QoviXQ1Bafh9TrtjPbG20v6DweycF6+WXQTKHU Ptv0MHrcPB0ffp6yt7Yzgb/A0Dufu0DANlzBKdYAAuP45lzk216PbSqYXWYq5oJqBUtx OiFwbIaJORMMVDR7csOM/pzJR37hVj1ruVlMY= MIME-Version: 1.0 Received: by 10.220.86.139 with SMTP id s11mr102006vcl.122.1308128162860; Wed, 15 Jun 2011 01:56:02 -0700 (PDT) Received: by 10.220.170.75 with HTTP; Wed, 15 Jun 2011 01:56:02 -0700 (PDT) In-Reply-To: <20110614140348.GD32466@dastard> References: <20110613141324.GC32466@dastard> <20110614140348.GD32466@dastard> Date: Wed, 15 Jun 2011 14:26:02 +0530 Message-ID: X-ASG-Orig-Subj: Re: xfstest run result on 2.6.35.13 X86, 51 test cases failed Subject: Re: xfstest run result on 2.6.35.13 X86, 51 test cases failed From: Ajeet Yadav To: Dave Chinner Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-vx0-f181.google.com[209.85.220.181] X-Barracuda-Start-Time: 1308128163 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66131 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I understand the slowness is because we are using Sandisk 8GB USB flash. Kernel : Vanilla 2.6.38.5 PC: Desktop HQ Pentinum Core 2 Duo #./check -xfs -g quick FSTYP -- xfs (non-debug) PLATFORM -- Linux/i686 mannuDesk 2.6.38.5 MKFS_OPTIONS -- -f -bsize=4096 /dev/sda6 MOUNT_OPTIONS -- /dev/sda6 /home/manish/Projects/xfstests/sdb4 001 5s ... 5s 002 0s ... 0s 003 0s ... 0s 004 1s ... 1s 005 1s ... 1s 006 36s ... 36s 007 58s ... 58s 008 2s ... 1s 009 1s ... 1s 011 45s ... 41s 012 1s ... 2s 013 143s ... 145s 014 49s ... 50s 015 1s ... - output mismatch (see 015.out.bad) --- 015.out 2011-05-11 22:32:24.000000000 +0530 +++ 015.out.bad 2011-06-13 17:19:09.132699162 +0530 @@ -4,4 +4,5 @@ check free space: delete fill: check free space: - !!! free space is in range + !!! free space has value of 20 +free space is NOT in range 43306.56 .. 44181.44 016 64s ... 75s 017 28s ... 29s 019 1s ... 1s 020 4s ... 3s 021 1s ... 1s 026 12s ... 12s 027 13s ... 12s 028 23s ... 23s 029 1s ... 1s 030 15s ... 15s 031 9s ... 10s 032 67s ... 68s 033 10s ... 10s 034 2s ... 2s 045 1s ... 1s 046 12s ... 13s 048 0s ... 0s 050 [failed, exit status 1] - output mismatch (see 050.out.bad) --- 050.out 2011-05-11 22:32:24.000000000 +0530 +++ 050.out.bad 2011-06-13 17:24:01.444044767 +0530 @@ -12,23 +12,24 @@ *** report initial settings [ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 1 4 10 00 [--------] 0 0 0 00 [--------] +[NAME] 0 100 500 00 [--------] 0 4 10 00 [--------] 0 0 0 00 [--------] *** push past the soft inode limit [ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 3 4 10 00 [--------] 0 0 0 00 [--------] +[NAME] 0 100 500 00 [--------] 0 4 10 00 [--------] 0 0 0 00 [--------] *** push past the soft block limit [ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [7 days] 4 4 10 00 [7 days] 0 0 0 00 [--------] +[NAME] 0 100 500 00 [--------] 0 4 10 00 [--------] 0 0 0 00 [--------] *** push past the hard inode limit (expect EDQUOT) [ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [7 days] 10 4 10 00 [7 days] 0 0 0 00 [--------] +[NAME] 0 100 500 00 [--------] 0 4 10 00 [--------] 0 0 0 00 [--------] *** push past the hard block limit (expect EDQUOT) [ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] =OK= 100 500 00 [7 days] 10 4 10 00 [7 days] 0 0 0 00 [--------] +[NAME] =OK= 100 500 00 [--------] 0 4 10 00 [--------] 0 0 0 00 [--------] + URK 99: 0 is out of range! [425,500] *** unmount *** group @@ -76,23 +77,23 @@ *** report initial settings [ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 1 4 10 00 [--------] 0 0 0 00 [--------] +[NAME] 0 100 500 00 [--------] 0 4 10 00 [--------] 0 0 0 00 [--------] *** push past the soft inode limit [ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 3 4 10 00 [--------] 0 0 0 00 [--------] +[NAME] 0 100 500 00 [--------] 0 4 10 00 [--------] 0 0 0 00 [--------] *** push past the soft block limit [ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [--------] 4 4 10 00 [--------] 0 0 0 00 [--------] +[NAME] 0 100 500 00 [--------] 0 4 10 00 [--------] 0 0 0 00 [--------] *** push past the hard inode limit (expect EDQUOT) [ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [--------] 16 4 10 00 [--none--] 0 0 0 00 [--------] +[NAME] 0 100 500 00 [--------] 0 4 10 00 [--------] 0 0 0 00 [--------] *** push past the hard block limit (expect EDQUOT) [ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 540 100 500 00 [--none--] 16 4 10 00 [--none--] 0 0 0 00 [--------] +[NAME] 0 100 500 00 [--------] 0 4 10 00 [--------] 0 0 0 00 [--------] *** unmount *** gqnoenforce @@ -115,79 +116,7 @@ [NAME] 0 100 500 00 [--------] 3 4 10 00 [--------] 0 0 0 00 [--------] *** push past the soft block limit -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [--------] 4 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the hard inode limit (expect EDQUOT) -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [--------] 16 4 10 00 [--none--] 0 0 0 00 [--------] - -*** push past the hard block limit (expect EDQUOT) -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 540 100 500 00 [--none--] 16 4 10 00 [--none--] 0 0 0 00 [--------] - -*** unmount -*** pquota -meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks -data = bsize=XXX blocks=XXX, imaxpct=PCT - = sunit=XXX swidth=XXX, unwritten=X -naming =VERN bsize=XXX -log =LDEV bsize=XXX blocks=XXX -realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX - -*** report no quota settings -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] - -*** report initial settings -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 1 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the soft inode limit -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 3 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the soft block limit -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [7 days] 4 4 10 00 [7 days] 0 0 0 00 [--------] - -*** push past the hard inode limit (expect EDQUOT) -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [7 days] 9 4 10 00 [7 days] 0 0 0 00 [--------] - -*** push past the hard block limit (expect EDQUOT) -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] =OK= 100 500 00 [7 days] 9 4 10 00 [7 days] 0 0 0 00 [--------] - -*** unmount -*** pqnoenforce -meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks -data = bsize=XXX blocks=XXX, imaxpct=PCT - = sunit=XXX swidth=XXX, unwritten=X -naming =VERN bsize=XXX -log =LDEV bsize=XXX blocks=XXX -realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX - -*** report no quota settings -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] - -*** report initial settings -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 1 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the soft inode limit -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 3 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the soft block limit -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [--------] 4 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the hard inode limit (expect EDQUOT) -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [--------] 16 4 10 00 [--none--] 0 0 0 00 [--------] - -*** push past the hard block limit (expect EDQUOT) -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 540 100 500 00 [--none--] 16 4 10 00 [--none--] 0 0 0 00 [--------] - -*** unmount +mount: /dev/sda6 already mounted or /home/manish/Projects/xfstests/sdb4 busy +mount: according to mtab, /dev/sda6 is already mounted on /home/manish/Projects/xfstests/sdb4 +qmount failed +(see 050.full for details) 051 1s ... 1s 052 - output mismatch (see 052.out.bad) --- 052.out 2011-05-11 22:32:24.000000000 +0530 +++ 052.out.bad 2011-06-13 17:24:04.819002574 +0530 @@ -5,5 +5,9 @@ naming =VERN bsize=XXX log =LDEV bsize=XXX blocks=XXX realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX +warning: quota output file is empty Comparing out of xfs_quota and xfs_db -OK. +0a1,3 +> hard_blocks=1004 +> soft_blocks=1004 +> used_blocks=0 053 1s 054 3s 056 12s 061 11s 062 8s ... 1s 063 12s 066 1s 067 1s 069 17s ... 9s 070 18s ... 21s 072 4s ... 1s 075 75s ... 69s 076 456s ... 82s 078 1193s ... 78s _check_xfs_filesystem: filesystem on /dev/sda5 has dirty log (see 078.full) _check_xfs_filesystem: filesystem on /dev/sda5 is inconsistent (c) (see 078.full) _check_xfs_filesystem: filesystem on /dev/sda5 is inconsistent (r) (see 078.full) Ran: 001 002 003 004 005 006 007 008 009 011 012 013 014 015 016 017 019 020 021 026 027 028 029 030 031 032 033 034 045 046 048 050 051 052 053 054 056 061 062 063 066 067 069 070 072 075 076 078 Failures: 015 050 052 Failed 3 of 48 tests From mani.iitb@gmail.com Wed Jun 15 04:24:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.1 required=5.0 tests=BAYES_05,FREEMAIL_FROM, HTML_MESSAGE,J_CHICKENPOX_53,J_CHICKENPOX_63,J_CHICKENPOX_71,J_CHICKENPOX_73, J_CHICKENPOX_91,J_CHICKENPOX_93,LOCAL_GNU_PATCH,T_DKIM_INVALID, T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.4.0-r929098 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 p5F9OqVN178994 for ; Wed, 15 Jun 2011 04:24:52 -0500 X-ASG-Debug-ID: 1308129881-7bb2026d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-iy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2DF8016695DD for ; Wed, 15 Jun 2011 02:24:41 -0700 (PDT) Received: from mail-iy0-f181.google.com (mail-iy0-f181.google.com [209.85.210.181]) by cuda.sgi.com with ESMTP id sW6YXghSZlxPbmGv for ; Wed, 15 Jun 2011 02:24:41 -0700 (PDT) Received: by iyb26 with SMTP id 26so134191iyb.26 for ; Wed, 15 Jun 2011 02:24:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to :content-type; bh=XY6rarINCOxYhOBL8+HeuAIJvHSpwWIplrpyBK5pKZA=; b=fFi/MS4y9qWI663eQNDZFFQSf+HRydVIrDwk01FSaEsOqpI4RM3kSGUL4OZyPNpT+U iDHPKEi++2J4T10RttGb1AgoqCCMEwkcYA3+OZ5rCojUP4WD3PFWHVl0adEeJniuxW5m Qen25+ja+q+ma7IavAIf3GhFA3qnYuiBeUJ0o= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=Gg9wfPPMKwMEv9U2CNwBlo4qXq2VV6dtwDcspXcIA1kv4hM2BZYNVEuRQ/ySuvV2Go zV09aomBqdEYeyXhNCHrBiQ7Xg91fEigClkFk7iUXKfS3rdI3SRbs/nAWf8zqMo5gULq XgM3XFzsp+m1wZVv9pkR2jUyQ6yn7GhcQkOHg= MIME-Version: 1.0 Received: by 10.42.221.3 with SMTP id ia3mr315651icb.181.1308129880765; Wed, 15 Jun 2011 02:24:40 -0700 (PDT) Received: by 10.42.239.10 with HTTP; Wed, 15 Jun 2011 02:24:40 -0700 (PDT) Date: Wed, 15 Jun 2011 14:54:40 +0530 Message-ID: X-ASG-Orig-Subj: auto group failing on kernel v2.6.38.5 Subject: auto group failing on kernel v2.6.38.5 From: Manish Aggarwal To: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=20cf30564473dcf77904a5bcb811 X-Barracuda-Connect: mail-iy0-f181.google.com[209.85.210.181] X-Barracuda-Start-Time: 1308129883 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0012 1.0000 -2.0135 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.79 X-Barracuda-Spam-Status: No, SCORE=1.79 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE, SUBJECT_FUZZY_VPILL X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66132 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 3.30 SUBJECT_FUZZY_VPILL Attempt to obfuscate words in 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 --20cf30564473dcf77904a5bcb811 Content-Type: text/plain; charset=ISO-8859-1 Hi I am running xfstest suite using command ./check -xfs -g auto PC x86 machine with Kernel version 2.6.38.5 XFS Tests Suite dated 2011-05-11 ( http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/cmds/xfstests.git;a=summary) Many of the test cases are failing , please let me know thatt am I missing something? Regards, Manish FSTYP -- xfs (non-debug) PLATFORM -- Linux/i686 mannuDesk 2.6.38.5 MKFS_OPTIONS -- -f -bsize=4096 /dev/sda6 MOUNT_OPTIONS -- /dev/sda6 /home/manish/Projects/xfstests/sdb4 001 4s ... 5s 002 0s ... 0s 003 0s ... 0s 004 1s ... 1s 005 0s ... 0s 006 35s ... 36s 007 58s ... 58s 008 1s ... 1s 009 1s ... 1s 010 [not run] dbtest was not built for this platform 011 43s ... 45s 012 1s ... 2s 013 145s ... 158s 014 53s ... 51s 015 1s ... - output mismatch (see 015.out.bad) --- 015.out 2011-05-11 22:32:24.000000000 +0530 +++ 015.out.bad 2011-06-15 14:34:36.561351828 +0530 @@ -4,4 +4,8 @@ check free space: delete fill: check free space: - !!! free space is in range + !!! free space has value of 20 +free space is NOT in range 43306.56 .. 44181.44 +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) 016 74s ... 79s 017 28s ... 30s 019 1s ... 1s 020 4s ... 3s 021 1s ... 1s 026 12s ... 13s 027 12s ... 12s 028 23s ... 23s 029 1s ... 1s 030 16s ... 18s 031 9s ... 9s 032 72s ... 70s 033 10s ... 11s 034 1s ... 1s 035 [not run] No dump tape specified 040 [not run] Can't run srcdiff without KWORKAREA set 041 23s ... 19s 042 115s ... [failed, exit status 1] - output mismatch (see 042.out.bad) --- 042.out 2011-05-11 22:32:24.000000000 +0530 +++ 042.out.bad 2011-06-15 14:42:05.946733738 +0530 @@ -9,5 +9,8 @@ Run xfs_fsr on filesystem... done Check fill file... done Check large file... done -Checking filesystem... done -xfs_fsr tests passed. +Checking filesystem... fail +_check_scratch_fs failed (returned 1): see 042.full +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) 044 [not run] This test requires a valid $SCRATCH_LOGDEV 045 1s ... 1s 046 13s ... 13s 047 24s 048 0s ... 0s 049 86s ... [failed, exit status 1] - output mismatch (see 049.out.bad) --- 049.out 2011-05-11 22:32:24.000000000 +0530 +++ 049.out.bad 2011-06-15 14:42:52.004157941 +0530 @@ -13,3 +13,5 @@ --- clean --- umount ext2 on xfs --- umount xfs +!!! umount xfs failed +(see 049.full for details) 050 [failed, exit status 1] - output mismatch (see 050.out.bad) --- 050.out 2011-05-11 22:32:24.000000000 +0530 +++ 050.out.bad 2011-06-15 14:42:52.866147163 +0530 @@ -1,193 +1,5 @@ QA output created by 050 -*** user -meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks -data = bsize=XXX blocks=XXX, imaxpct=PCT - = sunit=XXX swidth=XXX, unwritten=X -naming =VERN bsize=XXX -log =LDEV bsize=XXX blocks=XXX -realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX - -*** report no quota settings -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] - -*** report initial settings -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 1 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the soft inode limit -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 3 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the soft block limit -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [7 days] 4 4 10 00 [7 days] 0 0 0 00 [--------] - -*** push past the hard inode limit (expect EDQUOT) -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [7 days] 10 4 10 00 [7 days] 0 0 0 00 [--------] - -*** push past the hard block limit (expect EDQUOT) -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] =OK= 100 500 00 [7 days] 10 4 10 00 [7 days] 0 0 0 00 [--------] - -*** unmount -*** group -meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks -data = bsize=XXX blocks=XXX, imaxpct=PCT - = sunit=XXX swidth=XXX, unwritten=X -naming =VERN bsize=XXX -log =LDEV bsize=XXX blocks=XXX -realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX - -*** report no quota settings -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] - -*** report initial settings -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 1 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the soft inode limit -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 3 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the soft block limit -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [7 days] 4 4 10 00 [7 days] 0 0 0 00 [--------] - -*** push past the hard inode limit (expect EDQUOT) -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [7 days] 10 4 10 00 [7 days] 0 0 0 00 [--------] - -*** push past the hard block limit (expect EDQUOT) -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] =OK= 100 500 00 [7 days] 10 4 10 00 [7 days] 0 0 0 00 [--------] - -*** unmount -*** uqnoenforce -meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks -data = bsize=XXX blocks=XXX, imaxpct=PCT - = sunit=XXX swidth=XXX, unwritten=X -naming =VERN bsize=XXX -log =LDEV bsize=XXX blocks=XXX -realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX - -*** report no quota settings -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] - -*** report initial settings -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 1 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the soft inode limit -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 3 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the soft block limit -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [--------] 4 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the hard inode limit (expect EDQUOT) -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [--------] 16 4 10 00 [--none--] 0 0 0 00 [--------] - -*** push past the hard block limit (expect EDQUOT) -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 540 100 500 00 [--none--] 16 4 10 00 [--none--] 0 0 0 00 [--------] - -*** unmount -*** gqnoenforce -meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks -data = bsize=XXX blocks=XXX, imaxpct=PCT - = sunit=XXX swidth=XXX, unwritten=X -naming =VERN bsize=XXX -log =LDEV bsize=XXX blocks=XXX -realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX - -*** report no quota settings -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] - -*** report initial settings -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 1 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the soft inode limit -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 3 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the soft block limit -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [--------] 4 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the hard inode limit (expect EDQUOT) -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [--------] 16 4 10 00 [--none--] 0 0 0 00 [--------] - -*** push past the hard block limit (expect EDQUOT) -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 540 100 500 00 [--none--] 16 4 10 00 [--none--] 0 0 0 00 [--------] - -*** unmount -*** pquota -meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks -data = bsize=XXX blocks=XXX, imaxpct=PCT - = sunit=XXX swidth=XXX, unwritten=X -naming =VERN bsize=XXX -log =LDEV bsize=XXX blocks=XXX -realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX - -*** report no quota settings -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] - -*** report initial settings -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 1 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the soft inode limit -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 3 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the soft block limit -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [7 days] 4 4 10 00 [7 days] 0 0 0 00 [--------] - -*** push past the hard inode limit (expect EDQUOT) -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [7 days] 9 4 10 00 [7 days] 0 0 0 00 [--------] - -*** push past the hard block limit (expect EDQUOT) -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] =OK= 100 500 00 [7 days] 9 4 10 00 [7 days] 0 0 0 00 [--------] - -*** unmount -*** pqnoenforce -meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks -data = bsize=XXX blocks=XXX, imaxpct=PCT - = sunit=XXX swidth=XXX, unwritten=X -naming =VERN bsize=XXX -log =LDEV bsize=XXX blocks=XXX -realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX - -*** report no quota settings -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] - -*** report initial settings -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 1 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the soft inode limit -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 0 100 500 00 [--------] 3 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the soft block limit -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [--------] 4 4 10 00 [--------] 0 0 0 00 [--------] - -*** push past the hard inode limit (expect EDQUOT) -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 140 100 500 00 [--------] 16 4 10 00 [--none--] 0 0 0 00 [--------] - -*** push past the hard block limit (expect EDQUOT) -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------] -[NAME] 540 100 500 00 [--none--] 16 4 10 00 [--none--] 0 0 0 00 [--------] - -*** unmount +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) +failed to unmount /dev/sda6 051 1s ... 0s 052 [failed, exit status 1] - output mismatch (see 052.out.bad) --- 052.out 2011-05-11 22:32:24.000000000 +0530 +++ 052.out.bad 2011-06-15 14:42:54.705124173 +0530 @@ -1,9 +1,5 @@ QA output created by 052 -meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks -data = bsize=XXX blocks=XXX, imaxpct=PCT - = sunit=XXX swidth=XXX, unwritten=X -naming =VERN bsize=XXX -log =LDEV bsize=XXX blocks=XXX -realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX -Comparing out of xfs_quota and xfs_db -OK. +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) +failed to unmount /dev/sda6 053 1s ... [failed, exit status 1] - output mismatch (see 053.out.bad) --- 053.out 2011-05-11 22:32:24.000000000 +0530 +++ 053.out.bad 2011-06-15 14:42:55.443114947 +0530 @@ -1,24 +1,5 @@ QA output created by 053 -make filesystem on $SCRATCH_DEV... done -mount filesytem... done -acls before repair: -$SCRATCH_MNT/test.0 [u::r--,g::rwx,o::rw-] -$SCRATCH_MNT/test.1 [u::r-x,g::---,o::---] -$SCRATCH_MNT/test.2 [u::---,g::r-x,o::---] -$SCRATCH_MNT/test.3 [u::---,g::---,o::r-x] -$SCRATCH_MNT/test.4 [u::---,g::r-x,o::rwx] -$SCRATCH_MNT/test.5 [u::---,u:id2:r-x,g::---,m::rwx,o::---] -$SCRATCH_MNT/test.6 [u::rwx,g::r-x,o::r--] -$SCRATCH_MNT/test.7 [u::---,g::---,g:id2:r-x,m::-w-,o::---] -unmount $SCRATCH_DEV... done -repair filesystem... done -mount filesytem... done -acls after repair: -$SCRATCH_MNT/test.0 [u::r--,g::rwx,o::rw-] -$SCRATCH_MNT/test.1 [u::r-x,g::---,o::---] -$SCRATCH_MNT/test.2 [u::---,g::r-x,o::---] -$SCRATCH_MNT/test.3 [u::---,g::---,o::r-x] -$SCRATCH_MNT/test.4 [u::---,g::r-x,o::rwx] -$SCRATCH_MNT/test.5 [u::---,u:id2:r-x,g::---,m::rwx,o::---] -$SCRATCH_MNT/test.6 [u::rwx,g::r-x,o::r--] -$SCRATCH_MNT/test.7 [u::---,g::---,g:id2:r-x,m::-w-,o::---] +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) +failed to unmount /dev/sda6 054 3s ... [failed, exit status 1] - output mismatch (see 054.out.bad) --- 054.out 2011-05-11 22:32:24.000000000 +0530 +++ 054.out.bad 2011-06-15 14:42:56.126106409 +0530 @@ -1,73 +1,5 @@ QA output created by 054 -*** Default mount options - File: "/testfile" - Size: 0 Filetype: Regular File - Mode: (0644/-rw-r--r--) Uid: (12345) Gid: (54321) -Device: Inode: Links: 1 - File: "/testfile" - Size: 0 Filetype: Regular File - Mode: (0644/-rw-r--r--) Uid: (34567) Gid: (76543) -Device: Inode: Links: 1 - File: "/testfile" - Size: 0 Filetype: Regular File - Mode: (0644/-rw-r--r--) Uid: (56789) Gid: (98765) -Device: Inode: Links: 1 - File: "/testfile" - Size: 0 Filetype: Regular File - Mode: (0644/-rw-r--r--) Uid: (12345) Gid: (54321) -Device: Inode: Links: 1 - -*** User quota mount option - File: "/testfile" - Size: 0 Filetype: Regular File - Mode: (0644/-rw-r--r--) Uid: (12345) Gid: (54321) -Device: Inode: Links: 1 - File: "/testfile" - Size: 0 Filetype: Regular File - Mode: (0644/-rw-r--r--) Uid: (34567) Gid: (76543) -Device: Inode: Links: 1 - File: "/testfile" - Size: 0 Filetype: Regular File - Mode: (0644/-rw-r--r--) Uid: (56789) Gid: (98765) -Device: Inode: Links: 1 - File: "/testfile" - Size: 0 Filetype: Regular File - Mode: (0644/-rw-r--r--) Uid: (12345) Gid: (54321) -Device: Inode: Links: 1 - -*** Group quota mount option - File: "/testfile" - Size: 0 Filetype: Regular File - Mode: (0644/-rw-r--r--) Uid: (12345) Gid: (54321) -Device: Inode: Links: 1 - File: "/testfile" - Size: 0 Filetype: Regular File - Mode: (0644/-rw-r--r--) Uid: (34567) Gid: (76543) -Device: Inode: Links: 1 - File: "/testfile" - Size: 0 Filetype: Regular File - Mode: (0644/-rw-r--r--) Uid: (56789) Gid: (98765) -Device: Inode: Links: 1 - File: "/testfile" - Size: 0 Filetype: Regular File - Mode: (0644/-rw-r--r--) Uid: (12345) Gid: (54321) -Device: Inode: Links: 1 - -*** User and Group quota mount options - File: "/testfile" - Size: 0 Filetype: Regular File - Mode: (0644/-rw-r--r--) Uid: (12345) Gid: (54321) -Device: Inode: Links: 1 - File: "/testfile" - Size: 0 Filetype: Regular File - Mode: (0644/-rw-r--r--) Uid: (34567) Gid: (76543) -Device: Inode: Links: 1 - File: "/testfile" - Size: 0 Filetype: Regular File - Mode: (0644/-rw-r--r--) Uid: (56789) Gid: (98765) -Device: Inode: Links: 1 - File: "/testfile" - Size: 0 Filetype: Regular File - Mode: (0644/-rw-r--r--) Uid: (12345) Gid: (54321) -Device: Inode: Links: 1 - +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) +failed to unmount /dev/sda6 056 12s ... [failed, exit status 1] - output mismatch (see 056.out.bad) --- 056.out 2011-05-11 22:32:24.000000000 +0530 +++ 056.out.bad 2011-06-15 14:43:06.828972606 +0530 @@ -1,37 +1,8 @@ QA output created by 056 -Creating directory system to dump using src/fill. -Setup .......... -Dumping to file... -xfsdump -f DUMP_FILE -M stress_tape_media -L stress_056 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 0 dump of HOSTNAME:SCRATCH_MNT -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_056" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: /var/xfsdump/inventory created -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Restoring from file... -xfsrestore -f DUMP_FILE -L stress_056 RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: examining media file 0 -xfsrestore: reading directories -xfsrestore: 7 directories and 11 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -Comparing listing of dump directory with restore directory -Files TMP.dump_dir and TMP.restore_dir are identical +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) +failed to unmount /dev/sda6 +_check_xfs_filesystem: filesystem on /dev/sda6 has dirty log (see 056.full) +_check_xfs_filesystem: filesystem on /dev/sda6 is inconsistent (c) (see 056.full) +_check_xfs_filesystem: filesystem on /dev/sda6 is inconsistent (r) (see 056.full) 057 [not run] Place holder for IRIX test 057 058 [not run] Place holder for IRIX test 058 061 11s ... [failed, exit status 1] - output mismatch (see 061.out.bad) --- 061.out 2011-05-11 22:32:24.000000000 +0530 +++ 061.out.bad 2011-06-15 14:43:17.950833562 +0530 @@ -1,34 +1,8 @@ QA output created by 061 -Creating directory system to dump using src/fill. -Setup .......... -Restoring from file... -xfsrestore -f DUMP_FILE -L stress_056 RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: found dump matching specified label: -xfsrestore: hostname: crackle.melbourne.sgi.com -xfsrestore: mount point: /spare1 -xfsrestore: volume: /dev/dsk/dks0d2s1 -xfsrestore: session time: TIME -xfsrestore: level: 0 -xfsrestore: session label: "stress_056" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 7 directories and 11 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -Comparing dump directory with restore directory -Files DUMP_DIR/file_guid and RESTORE_DIR/DUMP_SUBDIR/file_guid are identical -Files DUMP_DIR/file_mix1 and RESTORE_DIR/DUMP_SUBDIR/file_mix1 are identical -Files DUMP_DIR/file_mix2 and RESTORE_DIR/DUMP_SUBDIR/file_mix2 are identical -Files DUMP_DIR/file_sticky and RESTORE_DIR/DUMP_SUBDIR/file_sticky are identical -Files DUMP_DIR/file_suid and RESTORE_DIR/DUMP_SUBDIR/file_suid are identical -Comparing listing of dump directory with restore directory -Files TMP.dump_dir and TMP.restore_dir are identical +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) +failed to unmount /dev/sda6 +_check_xfs_filesystem: filesystem on /dev/sda6 has dirty log (see 061.full) +_check_xfs_filesystem: filesystem on /dev/sda6 is inconsistent (c) (see 061.full) +_check_xfs_filesystem: filesystem on /dev/sda6 is inconsistent (r) (see 061.full) 062 1s ... [failed, exit status 1] - output mismatch (see 062.out.bad) --- 062.out 2011-05-11 22:32:24.000000000 +0530 +++ 062.out.bad 2011-06-15 14:43:18.673824524 +0530 @@ -1,660 +1,7 @@ QA output created by 062 -meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks -data = bsize=XXX blocks=XXX, imaxpct=PCT - = sunit=XXX swidth=XXX, unwritten=X -naming =VERN bsize=XXX -log =LDEV bsize=XXX blocks=XXX -realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX -*** create test bed -SCRATCH_MNT -SCRATCH_MNT/dev -SCRATCH_MNT/dev/b -SCRATCH_MNT/dev/c -SCRATCH_MNT/dev/p -SCRATCH_MNT/dir -SCRATCH_MNT/lnk -SCRATCH_MNT/reg - -=== TYPE reg; NAMESPACE user - -*** set/get one initially empty attribute -# file: SCRATCH_MNT/reg -user.name - -*** overwrite empty, set several new attributes -*** fetch several attribute names and values (hex) -# file: SCRATCH_MNT/reg -user.name=0xbabe -user.name2=0xdeadbeef -user.name3=0xdeface - -*** fetch several attribute names and values (base64) -# file: SCRATCH_MNT/reg -user.name=0sur4= -user.name2=0s3q2+7w== -user.name3=0s3vrO - -*** shrink value of an existing attribute -# file: SCRATCH_MNT/reg -user.name=0xbabe -user.name2=0xdeaf -user.name3=0xdeface - -*** grow value of existing attribute -# file: SCRATCH_MNT/reg -user.name=0xbabe -user.name2=0xdecade -user.name3=0xdeface - -*** set an empty value for second attribute -# file: SCRATCH_MNT/reg -user.name2 - -*** overwrite empty value -# file: SCRATCH_MNT/reg -user.name2=0xcafe - -*** remove attribute -SCRATCH_MNT/reg: user.name2: No such attribute -*** final list (strings, type=reg, nsp=user) -# file: SCRATCH_MNT/reg -user.name=0xbabe -user.name3=0xdeface - - -=== TYPE dir; NAMESPACE user - -*** set/get one initially empty attribute -# file: SCRATCH_MNT/dir -user.name - -*** overwrite empty, set several new attributes -*** fetch several attribute names and values (hex) -# file: SCRATCH_MNT/dir -user.name=0xbabe -user.name2=0xdeadbeef -user.name3=0xdeface - -*** fetch several attribute names and values (base64) -# file: SCRATCH_MNT/dir -user.name=0sur4= -user.name2=0s3q2+7w== -user.name3=0s3vrO - -*** shrink value of an existing attribute -# file: SCRATCH_MNT/dir -user.name=0xbabe -user.name2=0xdeaf -user.name3=0xdeface - -*** grow value of existing attribute -# file: SCRATCH_MNT/dir -user.name=0xbabe -user.name2=0xdecade -user.name3=0xdeface - -*** set an empty value for second attribute -# file: SCRATCH_MNT/dir -user.name2 - -*** overwrite empty value -# file: SCRATCH_MNT/dir -user.name2=0xcafe - -*** remove attribute -SCRATCH_MNT/dir: user.name2: No such attribute -*** final list (strings, type=dir, nsp=user) -# file: SCRATCH_MNT/dir -user.name=0xbabe -user.name3=0xdeface - - -=== TYPE lnk; NAMESPACE user - -*** set/get one initially empty attribute -setfattr: SCRATCH_MNT/lnk: Operation not permitted -*** overwrite empty, set several new attributes -setfattr: SCRATCH_MNT/lnk: Operation not permitted -setfattr: SCRATCH_MNT/lnk: Operation not permitted -setfattr: SCRATCH_MNT/lnk: Operation not permitted -*** fetch several attribute names and values (hex) -*** fetch several attribute names and values (base64) -*** shrink value of an existing attribute -setfattr: SCRATCH_MNT/lnk: Operation not permitted -*** grow value of existing attribute -setfattr: SCRATCH_MNT/lnk: Operation not permitted -*** set an empty value for second attribute -setfattr: SCRATCH_MNT/lnk: Operation not permitted -SCRATCH_MNT/lnk: user.name2: Operation not permitted -*** overwrite empty value -setfattr: SCRATCH_MNT/lnk: Operation not permitted -SCRATCH_MNT/lnk: user.name2: Operation not permitted -*** remove attribute -setfattr: SCRATCH_MNT/lnk: Operation not permitted -SCRATCH_MNT/lnk: user.name2: Operation not permitted -*** final list (strings, type=lnk, nsp=user) - -=== TYPE dev/b; NAMESPACE user - -*** set/get one initially empty attribute -setfattr: SCRATCH_MNT/dev/b: Operation not permitted -*** overwrite empty, set several new attributes -setfattr: SCRATCH_MNT/dev/b: Operation not permitted -setfattr: SCRATCH_MNT/dev/b: Operation not permitted -setfattr: SCRATCH_MNT/dev/b: Operation not permitted -*** fetch several attribute names and values (hex) -*** fetch several attribute names and values (base64) -*** shrink value of an existing attribute -setfattr: SCRATCH_MNT/dev/b: Operation not permitted -*** grow value of existing attribute -setfattr: SCRATCH_MNT/dev/b: Operation not permitted -*** set an empty value for second attribute -setfattr: SCRATCH_MNT/dev/b: Operation not permitted -SCRATCH_MNT/dev/b: user.name2: Operation not permitted -*** overwrite empty value -setfattr: SCRATCH_MNT/dev/b: Operation not permitted -SCRATCH_MNT/dev/b: user.name2: Operation not permitted -*** remove attribute -setfattr: SCRATCH_MNT/dev/b: Operation not permitted -SCRATCH_MNT/dev/b: user.name2: Operation not permitted -*** final list (strings, type=dev/b, nsp=user) - -=== TYPE dev/c; NAMESPACE user - -*** set/get one initially empty attribute -setfattr: SCRATCH_MNT/dev/c: Operation not permitted -*** overwrite empty, set several new attributes -setfattr: SCRATCH_MNT/dev/c: Operation not permitted -setfattr: SCRATCH_MNT/dev/c: Operation not permitted -setfattr: SCRATCH_MNT/dev/c: Operation not permitted -*** fetch several attribute names and values (hex) -*** fetch several attribute names and values (base64) -*** shrink value of an existing attribute -setfattr: SCRATCH_MNT/dev/c: Operation not permitted -*** grow value of existing attribute -setfattr: SCRATCH_MNT/dev/c: Operation not permitted -*** set an empty value for second attribute -setfattr: SCRATCH_MNT/dev/c: Operation not permitted -SCRATCH_MNT/dev/c: user.name2: Operation not permitted -*** overwrite empty value -setfattr: SCRATCH_MNT/dev/c: Operation not permitted -SCRATCH_MNT/dev/c: user.name2: Operation not permitted -*** remove attribute -setfattr: SCRATCH_MNT/dev/c: Operation not permitted -SCRATCH_MNT/dev/c: user.name2: Operation not permitted -*** final list (strings, type=dev/c, nsp=user) - -=== TYPE dev/p; NAMESPACE user - -*** set/get one initially empty attribute -setfattr: SCRATCH_MNT/dev/p: Operation not permitted -*** overwrite empty, set several new attributes -setfattr: SCRATCH_MNT/dev/p: Operation not permitted -setfattr: SCRATCH_MNT/dev/p: Operation not permitted -setfattr: SCRATCH_MNT/dev/p: Operation not permitted -*** fetch several attribute names and values (hex) -*** fetch several attribute names and values (base64) -*** shrink value of an existing attribute -setfattr: SCRATCH_MNT/dev/p: Operation not permitted -*** grow value of existing attribute -setfattr: SCRATCH_MNT/dev/p: Operation not permitted -*** set an empty value for second attribute -setfattr: SCRATCH_MNT/dev/p: Operation not permitted -SCRATCH_MNT/dev/p: user.name2: Operation not permitted -*** overwrite empty value -setfattr: SCRATCH_MNT/dev/p: Operation not permitted -SCRATCH_MNT/dev/p: user.name2: Operation not permitted -*** remove attribute -setfattr: SCRATCH_MNT/dev/p: Operation not permitted -SCRATCH_MNT/dev/p: user.name2: Operation not permitted -*** final list (strings, type=dev/p, nsp=user) - -=== TYPE reg; NAMESPACE trusted - -*** set/get one initially empty attribute -# file: SCRATCH_MNT/reg -trusted.name - -*** overwrite empty, set several new attributes -*** fetch several attribute names and values (hex) -# file: SCRATCH_MNT/reg -trusted.name=0xbabe -trusted.name2=0xdeadbeef -trusted.name3=0xdeface - -*** fetch several attribute names and values (base64) -# file: SCRATCH_MNT/reg -trusted.name=0sur4= -trusted.name2=0s3q2+7w== -trusted.name3=0s3vrO - -*** shrink value of an existing attribute -# file: SCRATCH_MNT/reg -trusted.name=0xbabe -trusted.name2=0xdeaf -trusted.name3=0xdeface - -*** grow value of existing attribute -# file: SCRATCH_MNT/reg -trusted.name=0xbabe -trusted.name2=0xdecade -trusted.name3=0xdeface - -*** set an empty value for second attribute -# file: SCRATCH_MNT/reg -trusted.name2 - -*** overwrite empty value -# file: SCRATCH_MNT/reg -trusted.name2=0xcafe - -*** remove attribute -SCRATCH_MNT/reg: trusted.name2: No such attribute -*** final list (strings, type=reg, nsp=trusted) -# file: SCRATCH_MNT/reg -trusted.name=0xbabe -trusted.name3=0xdeface -user.name=0xbabe -user.name3=0xdeface - - -=== TYPE dir; NAMESPACE trusted - -*** set/get one initially empty attribute -# file: SCRATCH_MNT/dir -trusted.name - -*** overwrite empty, set several new attributes -*** fetch several attribute names and values (hex) -# file: SCRATCH_MNT/dir -trusted.name=0xbabe -trusted.name2=0xdeadbeef -trusted.name3=0xdeface - -*** fetch several attribute names and values (base64) -# file: SCRATCH_MNT/dir -trusted.name=0sur4= -trusted.name2=0s3q2+7w== -trusted.name3=0s3vrO - -*** shrink value of an existing attribute -# file: SCRATCH_MNT/dir -trusted.name=0xbabe -trusted.name2=0xdeaf -trusted.name3=0xdeface - -*** grow value of existing attribute -# file: SCRATCH_MNT/dir -trusted.name=0xbabe -trusted.name2=0xdecade -trusted.name3=0xdeface - -*** set an empty value for second attribute -# file: SCRATCH_MNT/dir -trusted.name2 - -*** overwrite empty value -# file: SCRATCH_MNT/dir -trusted.name2=0xcafe - -*** remove attribute -SCRATCH_MNT/dir: trusted.name2: No such attribute -*** final list (strings, type=dir, nsp=trusted) -# file: SCRATCH_MNT/dir -trusted.name=0xbabe -trusted.name3=0xdeface -user.name=0xbabe -user.name3=0xdeface - - -=== TYPE lnk; NAMESPACE trusted - -*** set/get one initially empty attribute -# file: SCRATCH_MNT/lnk -trusted.name - -*** overwrite empty, set several new attributes -*** fetch several attribute names and values (hex) -# file: SCRATCH_MNT/lnk -trusted.name=0xbabe -trusted.name2=0xdeadbeef -trusted.name3=0xdeface - -*** fetch several attribute names and values (base64) -# file: SCRATCH_MNT/lnk -trusted.name=0sur4= -trusted.name2=0s3q2+7w== -trusted.name3=0s3vrO - -*** shrink value of an existing attribute -# file: SCRATCH_MNT/lnk -trusted.name=0xbabe -trusted.name2=0xdeaf -trusted.name3=0xdeface - -*** grow value of existing attribute -# file: SCRATCH_MNT/lnk -trusted.name=0xbabe -trusted.name2=0xdecade -trusted.name3=0xdeface - -*** set an empty value for second attribute -# file: SCRATCH_MNT/lnk -trusted.name2 - -*** overwrite empty value -# file: SCRATCH_MNT/lnk -trusted.name2=0xcafe - -*** remove attribute -SCRATCH_MNT/lnk: trusted.name2: No such attribute -*** final list (strings, type=lnk, nsp=trusted) -# file: SCRATCH_MNT/lnk -trusted.name=0xbabe -trusted.name3=0xdeface - - -=== TYPE dev/b; NAMESPACE trusted - -*** set/get one initially empty attribute -# file: SCRATCH_MNT/dev/b -trusted.name - -*** overwrite empty, set several new attributes -*** fetch several attribute names and values (hex) -# file: SCRATCH_MNT/dev/b -trusted.name=0xbabe -trusted.name2=0xdeadbeef -trusted.name3=0xdeface - -*** fetch several attribute names and values (base64) -# file: SCRATCH_MNT/dev/b -trusted.name=0sur4= -trusted.name2=0s3q2+7w== -trusted.name3=0s3vrO - -*** shrink value of an existing attribute -# file: SCRATCH_MNT/dev/b -trusted.name=0xbabe -trusted.name2=0xdeaf -trusted.name3=0xdeface - -*** grow value of existing attribute -# file: SCRATCH_MNT/dev/b -trusted.name=0xbabe -trusted.name2=0xdecade -trusted.name3=0xdeface - -*** set an empty value for second attribute -# file: SCRATCH_MNT/dev/b -trusted.name2 - -*** overwrite empty value -# file: SCRATCH_MNT/dev/b -trusted.name2=0xcafe - -*** remove attribute -SCRATCH_MNT/dev/b: trusted.name2: No such attribute -*** final list (strings, type=dev/b, nsp=trusted) -# file: SCRATCH_MNT/dev/b -trusted.name=0xbabe -trusted.name3=0xdeface - - -=== TYPE dev/c; NAMESPACE trusted - -*** set/get one initially empty attribute -# file: SCRATCH_MNT/dev/c -trusted.name - -*** overwrite empty, set several new attributes -*** fetch several attribute names and values (hex) -# file: SCRATCH_MNT/dev/c -trusted.name=0xbabe -trusted.name2=0xdeadbeef -trusted.name3=0xdeface - -*** fetch several attribute names and values (base64) -# file: SCRATCH_MNT/dev/c -trusted.name=0sur4= -trusted.name2=0s3q2+7w== -trusted.name3=0s3vrO - -*** shrink value of an existing attribute -# file: SCRATCH_MNT/dev/c -trusted.name=0xbabe -trusted.name2=0xdeaf -trusted.name3=0xdeface - -*** grow value of existing attribute -# file: SCRATCH_MNT/dev/c -trusted.name=0xbabe -trusted.name2=0xdecade -trusted.name3=0xdeface - -*** set an empty value for second attribute -# file: SCRATCH_MNT/dev/c -trusted.name2 - -*** overwrite empty value -# file: SCRATCH_MNT/dev/c -trusted.name2=0xcafe - -*** remove attribute -SCRATCH_MNT/dev/c: trusted.name2: No such attribute -*** final list (strings, type=dev/c, nsp=trusted) -# file: SCRATCH_MNT/dev/c -trusted.name=0xbabe -trusted.name3=0xdeface - - -=== TYPE dev/p; NAMESPACE trusted - -*** set/get one initially empty attribute -# file: SCRATCH_MNT/dev/p -trusted.name - -*** overwrite empty, set several new attributes -*** fetch several attribute names and values (hex) -# file: SCRATCH_MNT/dev/p -trusted.name=0xbabe -trusted.name2=0xdeadbeef -trusted.name3=0xdeface - -*** fetch several attribute names and values (base64) -# file: SCRATCH_MNT/dev/p -trusted.name=0sur4= -trusted.name2=0s3q2+7w== -trusted.name3=0s3vrO - -*** shrink value of an existing attribute -# file: SCRATCH_MNT/dev/p -trusted.name=0xbabe -trusted.name2=0xdeaf -trusted.name3=0xdeface - -*** grow value of existing attribute -# file: SCRATCH_MNT/dev/p -trusted.name=0xbabe -trusted.name2=0xdecade -trusted.name3=0xdeface - -*** set an empty value for second attribute -# file: SCRATCH_MNT/dev/p -trusted.name2 - -*** overwrite empty value -# file: SCRATCH_MNT/dev/p -trusted.name2=0xcafe - -*** remove attribute -SCRATCH_MNT/dev/p: trusted.name2: No such attribute -*** final list (strings, type=dev/p, nsp=trusted) -# file: SCRATCH_MNT/dev/p -trusted.name=0xbabe -trusted.name3=0xdeface - - - -*** extend test bed -SCRATCH_MNT -SCRATCH_MNT/descend -SCRATCH_MNT/descend/and -SCRATCH_MNT/descend/down -SCRATCH_MNT/descend/down/here -SCRATCH_MNT/dev -SCRATCH_MNT/dev/b -SCRATCH_MNT/dev/c -SCRATCH_MNT/dev/p -SCRATCH_MNT/dir -SCRATCH_MNT/here -SCRATCH_MNT/here/up -SCRATCH_MNT/here/up/ascend -SCRATCH_MNT/lnk -SCRATCH_MNT/reg - -*** directory descent with us following symlinks -# file: SCRATCH_MNT/reg -trusted.name=0xbabe -trusted.name3=0xdeface -user.name=0xbabe -user.name3=0xdeface - -# file: SCRATCH_MNT/dir -trusted.name=0xbabe -trusted.name3=0xdeface -user.name=0xbabe -user.name3=0xdeface - -# file: SCRATCH_MNT/lnk -trusted.name=0xbabe -trusted.name3=0xdeface - -# file: SCRATCH_MNT/dev/b -trusted.name=0xbabe -trusted.name3=0xdeface - -# file: SCRATCH_MNT/dev/c -trusted.name=0xbabe -trusted.name3=0xdeface - -# file: SCRATCH_MNT/dev/p -trusted.name=0xbabe -trusted.name3=0xdeface - -# file: SCRATCH_MNT/here -trusted.9=0x3837 -trusted.a=0x6263 - -# file: SCRATCH_MNT/here/up -trusted.9=0x3837 -trusted.a=0x6263 - -# file: SCRATCH_MNT/here/up/ascend -trusted.9=0x3837 -trusted.a=0x6263 - -# file: SCRATCH_MNT/descend -user.1=0x3233 -user.x=0x797a - -# file: SCRATCH_MNT/descend/down -user.1=0x3233 -user.x=0x797a - -# file: SCRATCH_MNT/descend/down/here -user.1=0x3233 -user.x=0x797a - -# file: SCRATCH_MNT/descend/and/ascend -trusted.9=0x3837 -trusted.a=0x6263 - - -*** directory descent without following symlinks -# file: SCRATCH_MNT/reg -trusted.name=0xbabe -trusted.name3=0xdeface -user.name=0xbabe -user.name3=0xdeface - -# file: SCRATCH_MNT/dir -trusted.name=0xbabe -trusted.name3=0xdeface -user.name=0xbabe -user.name3=0xdeface - -# file: SCRATCH_MNT/lnk -trusted.name=0xbabe -trusted.name3=0xdeface - -# file: SCRATCH_MNT/dev/b -trusted.name=0xbabe -trusted.name3=0xdeface - -# file: SCRATCH_MNT/dev/c -trusted.name=0xbabe -trusted.name3=0xdeface - -# file: SCRATCH_MNT/dev/p -trusted.name=0xbabe -trusted.name3=0xdeface - -# file: SCRATCH_MNT/here -trusted.9=0x3837 -trusted.a=0x6263 - -# file: SCRATCH_MNT/here/up -trusted.9=0x3837 -trusted.a=0x6263 - -# file: SCRATCH_MNT/here/up/ascend -trusted.9=0x3837 -trusted.a=0x6263 - -# file: SCRATCH_MNT/descend -user.1=0x3233 -user.x=0x797a - -# file: SCRATCH_MNT/descend/down -user.1=0x3233 -user.x=0x797a - -# file: SCRATCH_MNT/descend/down/here -user.1=0x3233 -user.x=0x797a - - - -*** backup everything -*** clear out the scratch device -*** reset test bed with no extended attributes -*** create test bed -SCRATCH_MNT -SCRATCH_MNT/dev -SCRATCH_MNT/dev/b -SCRATCH_MNT/dev/c -SCRATCH_MNT/dev/p -SCRATCH_MNT/dir -SCRATCH_MNT/lnk -SCRATCH_MNT/reg -*** extend test bed -SCRATCH_MNT -SCRATCH_MNT/descend -SCRATCH_MNT/descend/and -SCRATCH_MNT/descend/down -SCRATCH_MNT/descend/down/here -SCRATCH_MNT/dev -SCRATCH_MNT/dev/b -SCRATCH_MNT/dev/c -SCRATCH_MNT/dev/p -SCRATCH_MNT/dir -SCRATCH_MNT/here -SCRATCH_MNT/here/up -SCRATCH_MNT/here/up/ascend -SCRATCH_MNT/lnk -SCRATCH_MNT/reg -*** restore everything -*** compare before and after backups +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) +failed to unmount /dev/sda6 *** unmount 063 12s ... [failed, exit status 1] - output mismatch (see 063.out.bad) --- 063.out 2011-05-11 22:32:24.000000000 +0530 +++ 063.out.bad 2011-06-15 14:43:29.427690082 +0530 @@ -1,74 +1,8 @@ QA output created by 063 -Creating directory system to dump using src/fill. -Setup Attribute "attr1" set to a 9 byte value for smalll: -some_text -.Attribute "attr2" set to a 10 byte value for biggg: -some_text2 -.Attribute "attr3" set to a 10 byte value for sub/smalll: -some_text3 -.Attribute "attr4" set to a 10 byte value for sub/biggg: -some_text4 -.Attribute "attr5" set to a 8 byte value for dir: -dir_text -............... -Dumping to file... -xfsdump -f DUMP_FILE -M stress_tape_media -L stress_063 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 0 dump of HOSTNAME:SCRATCH_MNT -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_063" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: /var/xfsdump/inventory created -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Restoring from file... -xfsrestore -f DUMP_FILE -L stress_063 RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: examining media file 0 -xfsrestore: reading directories -xfsrestore: 4 directories and 21 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -Comparing dump directory with restore directory -Looking at the extended attributes (EAs) -EAs on dump -User names -Attribute "attr5" had a 8 byte value for DUMP_DIR/dir: -dir_text -Attribute "attr1" had a 9 byte value for DUMP_DIR/smalll: -some_text -Attribute "attr3" had a 10 byte value for DUMP_DIR/sub/smalll: -some_text3 -Root names -Attribute "attr2" had a 10 byte value for DUMP_DIR/biggg: -some_text2 -Attribute "attr4" had a 10 byte value for DUMP_DIR/sub/biggg: -some_text4 -EAs on restore -User names -Attribute "attr5" had a 8 byte value for DUMP_DIR/dir: -dir_text -Attribute "attr1" had a 9 byte value for DUMP_DIR/smalll: -some_text -Attribute "attr3" had a 10 byte value for DUMP_DIR/sub/smalll: -some_text3 -Root names -Attribute "attr2" had a 10 byte value for DUMP_DIR/biggg: -some_text2 -Attribute "attr4" had a 10 byte value for DUMP_DIR/sub/biggg: -some_text4 -Files 063.ea1 and 063.ea2 are identical +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) +failed to unmount /dev/sda6 +_check_xfs_filesystem: filesystem on /dev/sda6 has dirty log (see 063.full) +_check_xfs_filesystem: filesystem on /dev/sda6 is inconsistent (c) (see 063.full) +_check_xfs_filesystem: filesystem on /dev/sda6 is inconsistent (r) (see 063.full) 064 [failed, exit status 1] - output mismatch (see 064.out.bad) --- 064.out 2011-05-11 22:32:24.000000000 +0530 +++ 064.out.bad 2011-06-15 14:43:40.183555616 +0530 @@ -1,1484 +1,8 @@ QA output created by 064 -Creating directory system of hardlinks to incrementally dump. -creating hardlink file1_h1 to file1 -creating hardlink file1_h2 to file1 -creating hardlink file1_h3 to file1 -creating hardlink file1_h4 to file1 -creating hardlink file1_h5 to file1 -creating hardlink file2_h1 to file2 -creating hardlink file2_h2 to file2 -creating hardlink file2_h3 to file2 -creating hardlink file2_h4 to file2 -creating hardlink file2_h5 to file2 -creating hardlink file3_h1 to file3 -creating hardlink file3_h2 to file3 -creating hardlink file3_h3 to file3 -creating hardlink file3_h4 to file3 -creating hardlink file3_h5 to file3 -creating hardlink file4_h1 to file4 -creating hardlink file4_h2 to file4 -creating hardlink file4_h3 to file4 -creating hardlink file4_h4 to file4 -creating hardlink file4_h5 to file4 -creating hardlink file5_h1 to file5 -creating hardlink file5_h2 to file5 -creating hardlink file5_h3 to file5 -creating hardlink file5_h4 to file5 -creating hardlink file5_h5 to file5 -creating hardlink file6_h1 to file6 -creating hardlink file6_h2 to file6 -creating hardlink file6_h3 to file6 -creating hardlink file6_h4 to file6 -creating hardlink file6_h5 to file6 -creating hardlink file7_h1 to file7 -creating hardlink file7_h2 to file7 -creating hardlink file7_h3 to file7 -creating hardlink file7_h4 to file7 -creating hardlink file7_h5 to file7 -creating hardlink file8_h1 to file8 -creating hardlink file8_h2 to file8 -creating hardlink file8_h3 to file8 -creating hardlink file8_h4 to file8 -creating hardlink file8_h5 to file8 -creating hardlink file9_h1 to file9 -creating hardlink file9_h2 to file9 -creating hardlink file9_h3 to file9 -creating hardlink file9_h4 to file9 -creating hardlink file9_h5 to file9 -Do the incremental dumps -Dumping to file... -xfsdump -l0 -f DUMP_FILE -M stress_tape_media -L stress_064 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 0 dump of HOSTNAME:SCRATCH_MNT -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_064" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: /var/xfsdump/inventory created -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Dumping to file... -xfsdump -l1 -f DUMP_FILE -M stress_tape_media -L stress_064 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 1 incremental dump of HOSTNAME:SCRATCH_MNT based on level 0 dump begun DATE -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_064" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Dumping to file... -xfsdump -l2 -f DUMP_FILE -M stress_tape_media -L stress_064 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 2 incremental dump of HOSTNAME:SCRATCH_MNT based on level 1 dump begun DATE -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_064" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Dumping to file... -xfsdump -l3 -f DUMP_FILE -M stress_tape_media -L stress_064 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 3 incremental dump of HOSTNAME:SCRATCH_MNT based on level 2 dump begun DATE -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_064" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Dumping to file... -xfsdump -l4 -f DUMP_FILE -M stress_tape_media -L stress_064 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 4 incremental dump of HOSTNAME:SCRATCH_MNT based on level 3 dump begun DATE -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_064" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Dumping to file... -xfsdump -l5 -f DUMP_FILE -M stress_tape_media -L stress_064 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 5 incremental dump of HOSTNAME:SCRATCH_MNT based on level 4 dump begun DATE -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_064" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Dumping to file... -xfsdump -l6 -f DUMP_FILE -M stress_tape_media -L stress_064 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 6 incremental dump of HOSTNAME:SCRATCH_MNT based on level 5 dump begun DATE -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_064" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Dumping to file... -xfsdump -l7 -f DUMP_FILE -M stress_tape_media -L stress_064 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 7 incremental dump of HOSTNAME:SCRATCH_MNT based on level 6 dump begun DATE -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_064" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Dumping to file... -xfsdump -l8 -f DUMP_FILE -M stress_tape_media -L stress_064 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 8 incremental dump of HOSTNAME:SCRATCH_MNT based on level 7 dump begun DATE -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_064" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Dumping to file... -xfsdump -l9 -f DUMP_FILE -M stress_tape_media -L stress_064 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 9 incremental dump of HOSTNAME:SCRATCH_MNT based on level 8 dump begun DATE -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_064" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Listing of what files we start with: -12 file1 -12 file1_h1 -12 file1_h2 -12 file1_h3 -12 file1_h4 -12 file1_h5 -12 file2 -12 file2_h1 -12 file2_h2 -12 file2_h3 -12 file2_h4 -12 file2_h5 -12 file3 -12 file3_h1 -12 file3_h2 -12 file3_h3 -12 file3_h4 -12 file3_h5 -12 file4 -12 file4_h1 -12 file4_h2 -12 file4_h3 -12 file4_h4 -12 file4_h5 -12 file5 -12 file5_h1 -12 file5_h2 -12 file5_h3 -12 file5_h4 -12 file5_h5 -12 file6 -12 file6_h1 -12 file6_h2 -12 file6_h3 -12 file6_h4 -12 file6_h5 -12 file7 -12 file7_h1 -12 file7_h2 -12 file7_h3 -12 file7_h4 -12 file7_h5 -12 file8 -12 file8_h1 -12 file8_h2 -12 file8_h3 -12 file8_h4 -12 file8_h5 -12 file9 -12 file9_h1 -12 file9_h2 -12 file9_h3 -12 file9_h4 -12 file9_h5 -Look at what files are contained in the inc. dump - -restoring from df.level0 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 0 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: reading non-directory files -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - -dumpdir/file1 -dumpdir/file1_h1 -dumpdir/file1_h2 -dumpdir/file1_h3 -dumpdir/file1_h4 -dumpdir/file1_h5 -dumpdir/file2 -dumpdir/file2_h1 -dumpdir/file2_h2 -dumpdir/file2_h3 -dumpdir/file2_h4 -dumpdir/file2_h5 -dumpdir/file3 -dumpdir/file3_h1 -dumpdir/file3_h2 -dumpdir/file3_h3 -dumpdir/file3_h4 -dumpdir/file3_h5 -dumpdir/file4 -dumpdir/file4_h1 -dumpdir/file4_h2 -dumpdir/file4_h3 -dumpdir/file4_h4 -dumpdir/file4_h5 -dumpdir/file5 -dumpdir/file5_h1 -dumpdir/file5_h2 -dumpdir/file5_h3 -dumpdir/file5_h4 -dumpdir/file5_h5 -dumpdir/file6 -dumpdir/file6_h1 -dumpdir/file6_h2 -dumpdir/file6_h3 -dumpdir/file6_h4 -dumpdir/file6_h5 -dumpdir/file7 -dumpdir/file7_h1 -dumpdir/file7_h2 -dumpdir/file7_h3 -dumpdir/file7_h4 -dumpdir/file7_h5 -dumpdir/file8 -dumpdir/file8_h1 -dumpdir/file8_h2 -dumpdir/file8_h3 -dumpdir/file8_h4 -dumpdir/file8_h5 -dumpdir/file9 -dumpdir/file9_h1 -dumpdir/file9_h2 -dumpdir/file9_h3 -dumpdir/file9_h4 -dumpdir/file9_h5 - -restoring from df.level1 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 1 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: reading non-directory files -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - -dumpdir/file1 -dumpdir/file1_h1 -dumpdir/file1_h2 -dumpdir/file1_h3 -dumpdir/file1_h4 -dumpdir/file1_h5 - -restoring from df.level2 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 2 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: reading non-directory files -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - -dumpdir/file2 -dumpdir/file2_h1 -dumpdir/file2_h2 -dumpdir/file2_h3 -dumpdir/file2_h4 -dumpdir/file2_h5 - -restoring from df.level3 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 3 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: reading non-directory files -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - -dumpdir/file3 -dumpdir/file3_h1 -dumpdir/file3_h2 -dumpdir/file3_h3 -dumpdir/file3_h4 -dumpdir/file3_h5 - -restoring from df.level4 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 4 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: reading non-directory files -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - -dumpdir/file4 -dumpdir/file4_h1 -dumpdir/file4_h2 -dumpdir/file4_h3 -dumpdir/file4_h4 -dumpdir/file4_h5 - -restoring from df.level5 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 5 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: reading non-directory files -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - -dumpdir/file5 -dumpdir/file5_h1 -dumpdir/file5_h2 -dumpdir/file5_h3 -dumpdir/file5_h4 -dumpdir/file5_h5 - -restoring from df.level6 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 6 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: reading non-directory files -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - -dumpdir/file6 -dumpdir/file6_h1 -dumpdir/file6_h2 -dumpdir/file6_h3 -dumpdir/file6_h4 -dumpdir/file6_h5 - -restoring from df.level7 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 7 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: reading non-directory files -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - -dumpdir/file7 -dumpdir/file7_h1 -dumpdir/file7_h2 -dumpdir/file7_h3 -dumpdir/file7_h4 -dumpdir/file7_h5 - -restoring from df.level8 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 8 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: reading non-directory files -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - -dumpdir/file8 -dumpdir/file8_h1 -dumpdir/file8_h2 -dumpdir/file8_h3 -dumpdir/file8_h4 -dumpdir/file8_h5 - -restoring from df.level9 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 9 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: reading non-directory files -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - -dumpdir/file9 -dumpdir/file9_h1 -dumpdir/file9_h2 -dumpdir/file9_h3 -dumpdir/file9_h4 -dumpdir/file9_h5 -Do the cumulative restores - -restoring from df.level0 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 0 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -ls -l restore_dir -0 file1 -0 file1_h1 -0 file1_h2 -0 file1_h3 -0 file1_h4 -0 file1_h5 -0 file2 -0 file2_h1 -0 file2_h2 -0 file2_h3 -0 file2_h4 -0 file2_h5 -0 file3 -0 file3_h1 -0 file3_h2 -0 file3_h3 -0 file3_h4 -0 file3_h5 -0 file4 -0 file4_h1 -0 file4_h2 -0 file4_h3 -0 file4_h4 -0 file4_h5 -0 file5 -0 file5_h1 -0 file5_h2 -0 file5_h3 -0 file5_h4 -0 file5_h5 -0 file6 -0 file6_h1 -0 file6_h2 -0 file6_h3 -0 file6_h4 -0 file6_h5 -0 file7 -0 file7_h1 -0 file7_h2 -0 file7_h3 -0 file7_h4 -0 file7_h5 -0 file8 -0 file8_h1 -0 file8_h2 -0 file8_h3 -0 file8_h4 -0 file8_h5 -0 file9 -0 file9_h1 -0 file9_h2 -0 file9_h3 -0 file9_h4 -0 file9_h5 - -restoring from df.level1 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 1 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -ls -l restore_dir -12 file1 -12 file1_h1 -12 file1_h2 -12 file1_h3 -12 file1_h4 -12 file1_h5 -0 file2 -0 file2_h1 -0 file2_h2 -0 file2_h3 -0 file2_h4 -0 file2_h5 -0 file3 -0 file3_h1 -0 file3_h2 -0 file3_h3 -0 file3_h4 -0 file3_h5 -0 file4 -0 file4_h1 -0 file4_h2 -0 file4_h3 -0 file4_h4 -0 file4_h5 -0 file5 -0 file5_h1 -0 file5_h2 -0 file5_h3 -0 file5_h4 -0 file5_h5 -0 file6 -0 file6_h1 -0 file6_h2 -0 file6_h3 -0 file6_h4 -0 file6_h5 -0 file7 -0 file7_h1 -0 file7_h2 -0 file7_h3 -0 file7_h4 -0 file7_h5 -0 file8 -0 file8_h1 -0 file8_h2 -0 file8_h3 -0 file8_h4 -0 file8_h5 -0 file9 -0 file9_h1 -0 file9_h2 -0 file9_h3 -0 file9_h4 -0 file9_h5 - -restoring from df.level2 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 2 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -ls -l restore_dir -12 file1 -12 file1_h1 -12 file1_h2 -12 file1_h3 -12 file1_h4 -12 file1_h5 -12 file2 -12 file2_h1 -12 file2_h2 -12 file2_h3 -12 file2_h4 -12 file2_h5 -0 file3 -0 file3_h1 -0 file3_h2 -0 file3_h3 -0 file3_h4 -0 file3_h5 -0 file4 -0 file4_h1 -0 file4_h2 -0 file4_h3 -0 file4_h4 -0 file4_h5 -0 file5 -0 file5_h1 -0 file5_h2 -0 file5_h3 -0 file5_h4 -0 file5_h5 -0 file6 -0 file6_h1 -0 file6_h2 -0 file6_h3 -0 file6_h4 -0 file6_h5 -0 file7 -0 file7_h1 -0 file7_h2 -0 file7_h3 -0 file7_h4 -0 file7_h5 -0 file8 -0 file8_h1 -0 file8_h2 -0 file8_h3 -0 file8_h4 -0 file8_h5 -0 file9 -0 file9_h1 -0 file9_h2 -0 file9_h3 -0 file9_h4 -0 file9_h5 - -restoring from df.level3 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 3 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -ls -l restore_dir -12 file1 -12 file1_h1 -12 file1_h2 -12 file1_h3 -12 file1_h4 -12 file1_h5 -12 file2 -12 file2_h1 -12 file2_h2 -12 file2_h3 -12 file2_h4 -12 file2_h5 -12 file3 -12 file3_h1 -12 file3_h2 -12 file3_h3 -12 file3_h4 -12 file3_h5 -0 file4 -0 file4_h1 -0 file4_h2 -0 file4_h3 -0 file4_h4 -0 file4_h5 -0 file5 -0 file5_h1 -0 file5_h2 -0 file5_h3 -0 file5_h4 -0 file5_h5 -0 file6 -0 file6_h1 -0 file6_h2 -0 file6_h3 -0 file6_h4 -0 file6_h5 -0 file7 -0 file7_h1 -0 file7_h2 -0 file7_h3 -0 file7_h4 -0 file7_h5 -0 file8 -0 file8_h1 -0 file8_h2 -0 file8_h3 -0 file8_h4 -0 file8_h5 -0 file9 -0 file9_h1 -0 file9_h2 -0 file9_h3 -0 file9_h4 -0 file9_h5 - -restoring from df.level4 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 4 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -ls -l restore_dir -12 file1 -12 file1_h1 -12 file1_h2 -12 file1_h3 -12 file1_h4 -12 file1_h5 -12 file2 -12 file2_h1 -12 file2_h2 -12 file2_h3 -12 file2_h4 -12 file2_h5 -12 file3 -12 file3_h1 -12 file3_h2 -12 file3_h3 -12 file3_h4 -12 file3_h5 -12 file4 -12 file4_h1 -12 file4_h2 -12 file4_h3 -12 file4_h4 -12 file4_h5 -0 file5 -0 file5_h1 -0 file5_h2 -0 file5_h3 -0 file5_h4 -0 file5_h5 -0 file6 -0 file6_h1 -0 file6_h2 -0 file6_h3 -0 file6_h4 -0 file6_h5 -0 file7 -0 file7_h1 -0 file7_h2 -0 file7_h3 -0 file7_h4 -0 file7_h5 -0 file8 -0 file8_h1 -0 file8_h2 -0 file8_h3 -0 file8_h4 -0 file8_h5 -0 file9 -0 file9_h1 -0 file9_h2 -0 file9_h3 -0 file9_h4 -0 file9_h5 - -restoring from df.level5 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 5 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -ls -l restore_dir -12 file1 -12 file1_h1 -12 file1_h2 -12 file1_h3 -12 file1_h4 -12 file1_h5 -12 file2 -12 file2_h1 -12 file2_h2 -12 file2_h3 -12 file2_h4 -12 file2_h5 -12 file3 -12 file3_h1 -12 file3_h2 -12 file3_h3 -12 file3_h4 -12 file3_h5 -12 file4 -12 file4_h1 -12 file4_h2 -12 file4_h3 -12 file4_h4 -12 file4_h5 -12 file5 -12 file5_h1 -12 file5_h2 -12 file5_h3 -12 file5_h4 -12 file5_h5 -0 file6 -0 file6_h1 -0 file6_h2 -0 file6_h3 -0 file6_h4 -0 file6_h5 -0 file7 -0 file7_h1 -0 file7_h2 -0 file7_h3 -0 file7_h4 -0 file7_h5 -0 file8 -0 file8_h1 -0 file8_h2 -0 file8_h3 -0 file8_h4 -0 file8_h5 -0 file9 -0 file9_h1 -0 file9_h2 -0 file9_h3 -0 file9_h4 -0 file9_h5 - -restoring from df.level6 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 6 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -ls -l restore_dir -12 file1 -12 file1_h1 -12 file1_h2 -12 file1_h3 -12 file1_h4 -12 file1_h5 -12 file2 -12 file2_h1 -12 file2_h2 -12 file2_h3 -12 file2_h4 -12 file2_h5 -12 file3 -12 file3_h1 -12 file3_h2 -12 file3_h3 -12 file3_h4 -12 file3_h5 -12 file4 -12 file4_h1 -12 file4_h2 -12 file4_h3 -12 file4_h4 -12 file4_h5 -12 file5 -12 file5_h1 -12 file5_h2 -12 file5_h3 -12 file5_h4 -12 file5_h5 -12 file6 -12 file6_h1 -12 file6_h2 -12 file6_h3 -12 file6_h4 -12 file6_h5 -0 file7 -0 file7_h1 -0 file7_h2 -0 file7_h3 -0 file7_h4 -0 file7_h5 -0 file8 -0 file8_h1 -0 file8_h2 -0 file8_h3 -0 file8_h4 -0 file8_h5 -0 file9 -0 file9_h1 -0 file9_h2 -0 file9_h3 -0 file9_h4 -0 file9_h5 - -restoring from df.level7 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 7 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -ls -l restore_dir -12 file1 -12 file1_h1 -12 file1_h2 -12 file1_h3 -12 file1_h4 -12 file1_h5 -12 file2 -12 file2_h1 -12 file2_h2 -12 file2_h3 -12 file2_h4 -12 file2_h5 -12 file3 -12 file3_h1 -12 file3_h2 -12 file3_h3 -12 file3_h4 -12 file3_h5 -12 file4 -12 file4_h1 -12 file4_h2 -12 file4_h3 -12 file4_h4 -12 file4_h5 -12 file5 -12 file5_h1 -12 file5_h2 -12 file5_h3 -12 file5_h4 -12 file5_h5 -12 file6 -12 file6_h1 -12 file6_h2 -12 file6_h3 -12 file6_h4 -12 file6_h5 -12 file7 -12 file7_h1 -12 file7_h2 -12 file7_h3 -12 file7_h4 -12 file7_h5 -0 file8 -0 file8_h1 -0 file8_h2 -0 file8_h3 -0 file8_h4 -0 file8_h5 -0 file9 -0 file9_h1 -0 file9_h2 -0 file9_h3 -0 file9_h4 -0 file9_h5 - -restoring from df.level8 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 8 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -ls -l restore_dir -12 file1 -12 file1_h1 -12 file1_h2 -12 file1_h3 -12 file1_h4 -12 file1_h5 -12 file2 -12 file2_h1 -12 file2_h2 -12 file2_h3 -12 file2_h4 -12 file2_h5 -12 file3 -12 file3_h1 -12 file3_h2 -12 file3_h3 -12 file3_h4 -12 file3_h5 -12 file4 -12 file4_h1 -12 file4_h2 -12 file4_h3 -12 file4_h4 -12 file4_h5 -12 file5 -12 file5_h1 -12 file5_h2 -12 file5_h3 -12 file5_h4 -12 file5_h5 -12 file6 -12 file6_h1 -12 file6_h2 -12 file6_h3 -12 file6_h4 -12 file6_h5 -12 file7 -12 file7_h1 -12 file7_h2 -12 file7_h3 -12 file7_h4 -12 file7_h5 -12 file8 -12 file8_h1 -12 file8_h2 -12 file8_h3 -12 file8_h4 -12 file8_h5 -0 file9 -0 file9_h1 -0 file9_h2 -0 file9_h3 -0 file9_h4 -0 file9_h5 - -restoring from df.level9 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 9 -xfsrestore: session label: "stress_064" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 55 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -ls -l restore_dir -12 file1 -12 file1_h1 -12 file1_h2 -12 file1_h3 -12 file1_h4 -12 file1_h5 -12 file2 -12 file2_h1 -12 file2_h2 -12 file2_h3 -12 file2_h4 -12 file2_h5 -12 file3 -12 file3_h1 -12 file3_h2 -12 file3_h3 -12 file3_h4 -12 file3_h5 -12 file4 -12 file4_h1 -12 file4_h2 -12 file4_h3 -12 file4_h4 -12 file4_h5 -12 file5 -12 file5_h1 -12 file5_h2 -12 file5_h3 -12 file5_h4 -12 file5_h5 -12 file6 -12 file6_h1 -12 file6_h2 -12 file6_h3 -12 file6_h4 -12 file6_h5 -12 file7 -12 file7_h1 -12 file7_h2 -12 file7_h3 -12 file7_h4 -12 file7_h5 -12 file8 -12 file8_h1 -12 file8_h2 -12 file8_h3 -12 file8_h4 -12 file8_h5 -12 file9 -12 file9_h1 -12 file9_h2 -12 file9_h3 -12 file9_h4 -12 file9_h5 +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) +failed to unmount /dev/sda6 +_check_xfs_filesystem: filesystem on /dev/sda6 has dirty log (see 064.full) +_check_xfs_filesystem: filesystem on /dev/sda6 is inconsistent (c) (see 064.full) +_check_xfs_filesystem: filesystem on /dev/sda6 is inconsistent (r) (see 064.full) 065 [failed, exit status 1] - output mismatch (see 065.out.bad) --- 065.out 2011-05-11 22:32:24.000000000 +0530 +++ 065.out.bad 2011-06-15 14:43:50.945421073 +0530 @@ -1,832 +1,13 @@ QA output created by 065 -Do the incremental dumps -Listing of what files we have at level 0: -dumpdir/addeddir1 XXX drwxr-xr-x 0,0 -dumpdir/addeddir2 XXX drwxr-xr-x 0,0 -dumpdir/addeddir3 XXX drwxr-xr-x 0,0 -dumpdir/addeddir3/addedfile4 5 -rw-r--r-- 0,0 -dumpdir/addeddir4 XXX drwxr-xr-x 0,0 -dumpdir/addeddir4/addedfile5 5 -rw-r--r-- 0,0 -dumpdir/addedfile0 5 -rw-r--r-- 0,0 -dumpdir/addedfile1 5 -rw-r--r-- 0,0 -dumpdir/addedfile2 5 -rw-r--r-- 0,0 -dumpdir/addedfile3 5 -rw-r--r-- 0,0 -Dumping to file... -xfsdump -l0 -f DUMP_FILE -M stress_tape_media -L stress_065 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 0 dump of HOSTNAME:SCRATCH_MNT -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_065" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: /var/xfsdump/inventory created -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Listing of what files we have at level 1: -dumpdir/addeddir1 XXX drwxr-xr-x 0,0 -dumpdir/addeddir4 XXX drwxr-xr-x 0,0 -dumpdir/addeddir4/addedfile5 5 -rw-r--r-- 0,0 -dumpdir/addedfile0 5 -rw-r--r-- 0,0 -dumpdir/addedfile1 5 -rw-r--r-- 0,0 -dumpdir/addedfile3 5 -rw-r--r-- 0,0 -Dumping to file... -xfsdump -l1 -f DUMP_FILE -M stress_tape_media -L stress_065 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 1 incremental dump of HOSTNAME:SCRATCH_MNT based on level 0 dump begun DATE -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_065" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Listing of what files we have at level 2: -dumpdir/addeddir2 XXX drwxr-xr-x 0,0 -dumpdir/addeddir6 XXX drwxr-xr-x 0,0 -dumpdir/addeddir6/addedfile4 5 -rw-r--r-- 0,0 -dumpdir/addedfile0 5 -rw-r--r-- 0,0 -dumpdir/addedfile2 5 -rw-r--r-- 0,0 -dumpdir/addedfile3 5 -rw-r--r-- 0,0 -Dumping to file... -xfsdump -l2 -f DUMP_FILE -M stress_tape_media -L stress_065 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 2 incremental dump of HOSTNAME:SCRATCH_MNT based on level 1 dump begun DATE -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_065" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Listing of what files we have at level 3: -dumpdir/addeddir2 XXX drwxr-xr-x 0,0 -dumpdir/addeddir6 XXX drwxr-xr-x 0,0 -dumpdir/addeddir6/addedfile4 5 -rw-r--r-- 0,0 -dumpdir/addedfile0 5 -rw-r--r-- 0,0 -dumpdir/addedfile2 5 -rw-r--r-- 0,0 -dumpdir/addedfile3 5 -rw-r--r-- 0,0 -dumpdir/linkfile0 5 -rw-r--r-- 0,0 -dumpdir/linkfile0_1 5 -rw-r--r-- 0,0 -dumpdir/linkfile2 5 -rw-r--r-- 0,0 -dumpdir/linkfile64 5 -rw-r--r-- 0,0 -Dumping to file... -xfsdump -l3 -f DUMP_FILE -M stress_tape_media -L stress_065 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 3 incremental dump of HOSTNAME:SCRATCH_MNT based on level 2 dump begun DATE -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_065" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Listing of what files we have at level 4: -dumpdir/addeddir2 XXX drwxr-xr-x 0,0 -dumpdir/addeddir6 XXX drwxr-xr-x 0,0 -dumpdir/addedfile0 5 -rw-r--r-- 0,0 -dumpdir/addedfile3 5 -rw-r--r-- 0,0 -dumpdir/linkfile0_1 5 -rw-r--r-- 0,0 -dumpdir/linkfile2 5 -rw-r--r-- 0,0 -Dumping to file... -xfsdump -l4 -f DUMP_FILE -M stress_tape_media -L stress_065 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 4 incremental dump of HOSTNAME:SCRATCH_MNT based on level 3 dump begun DATE -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_065" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Listing of what files we have at level 5: -dumpdir/addedfile6 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_1 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_2 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_3 5 -rw-r--r-- 0,0 -Dumping to file... -xfsdump -l5 -f DUMP_FILE -M stress_tape_media -L stress_065 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 5 incremental dump of HOSTNAME:SCRATCH_MNT based on level 4 dump begun DATE -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_065" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Listing of what files we have at level 6: -dumpdir/addedfile6_mv 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_mv_1 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_mv_2 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_mv_3 5 -rw-r--r-- 0,0 -Dumping to file... -xfsdump -l6 -f DUMP_FILE -M stress_tape_media -L stress_065 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 6 incremental dump of HOSTNAME:SCRATCH_MNT based on level 5 dump begun DATE -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_065" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Listing of what files we have at level 7: -dumpdir/addedfile6_mv 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_mv_1 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_mv_2 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_mv_3 5 -rw-r--r-- 0,0 -Dumping to file... -xfsdump -l7 -f DUMP_FILE -M stress_tape_media -L stress_065 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 7 incremental dump of HOSTNAME:SCRATCH_MNT based on level 6 dump begun DATE -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_065" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Listing of what files we have at level 8: -dumpdir/addedfile6_mv 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_mv_1 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_mv_2 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_mv_3 5 -rw-r--r-- 0,0 -Dumping to file... -xfsdump -l8 -f DUMP_FILE -M stress_tape_media -L stress_065 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 8 incremental dump of HOSTNAME:SCRATCH_MNT based on level 7 dump begun DATE -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_065" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Look at what files are contained in the inc. dump - -restoring from df.level0 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 0 -xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 6 directories and 11 entries processed -xfsrestore: directory post-processing -xfsrestore: reading non-directory files -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - -dumpdir/addeddir3/addedfile4 -dumpdir/addeddir4/addedfile5 -dumpdir/addedfile0 -dumpdir/addedfile1 -dumpdir/addedfile2 -dumpdir/addedfile3 - -restoring from df.level1 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 1 -xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 6 entries processed -xfsrestore: directory post-processing -xfsrestore: reading non-directory files -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - - -restoring from df.level2 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 2 -xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 4 directories and 7 entries processed -xfsrestore: directory post-processing -xfsrestore: reading non-directory files -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - -dumpdir/addeddir6/addedfile4 -dumpdir/addedfile2 - -restoring from df.level3 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 3 -xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 3 directories and 11 entries processed -xfsrestore: directory post-processing -xfsrestore: reading non-directory files -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - -dumpdir/addeddir6/addedfile4 -dumpdir/addedfile0 -dumpdir/addedfile2 -dumpdir/linkfile0 -dumpdir/linkfile0_1 -dumpdir/linkfile2 -dumpdir/linkfile64 - -restoring from df.level4 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 4 -xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 3 directories and 7 entries processed -xfsrestore: directory post-processing -xfsrestore: reading non-directory files -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - -dumpdir/addedfile0 -dumpdir/linkfile0_1 -dumpdir/linkfile2 - -restoring from df.level5 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 5 -xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 5 entries processed -xfsrestore: directory post-processing -xfsrestore: reading non-directory files -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - -dumpdir/addedfile6 -dumpdir/linkfile6_1 -dumpdir/linkfile6_2 -dumpdir/linkfile6_3 - -restoring from df.level6 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 6 -xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 5 entries processed -xfsrestore: directory post-processing -xfsrestore: reading non-directory files -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - -dumpdir/addedfile6_mv -dumpdir/linkfile6_mv_1 -dumpdir/linkfile6_mv_2 -dumpdir/linkfile6_mv_3 - -restoring from df.level7 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 7 -xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 0 directories and 0 entries processed -xfsrestore: directory post-processing -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - - -restoring from df.level8 -Contents of dump ... -xfsrestore -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 8 -xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 0 directories and 0 entries processed -xfsrestore: directory post-processing -xfsrestore: table of contents display complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS - -Do the cumulative restores - -restoring from df.level0 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 0 -xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 6 directories and 11 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -list restore_dir -dumpdir/addeddir1 XXX drwxr-xr-x 0,0 -dumpdir/addeddir2 XXX drwxr-xr-x 0,0 -dumpdir/addeddir3 XXX drwxr-xr-x 0,0 -dumpdir/addeddir3/addedfile4 5 -rw-r--r-- 0,0 -dumpdir/addeddir4 XXX drwxr-xr-x 0,0 -dumpdir/addeddir4/addedfile5 5 -rw-r--r-- 0,0 -dumpdir/addedfile0 5 -rw-r--r-- 0,0 -dumpdir/addedfile1 5 -rw-r--r-- 0,0 -dumpdir/addedfile2 5 -rw-r--r-- 0,0 -dumpdir/addedfile3 5 -rw-r--r-- 0,0 - -restoring from df.level1 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 1 -xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 6 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -list restore_dir -dumpdir/addeddir1 XXX drwxr-xr-x 0,0 -dumpdir/addeddir4 XXX drwxr-xr-x 0,0 -dumpdir/addeddir4/addedfile5 5 -rw-r--r-- 0,0 -dumpdir/addedfile0 5 -rw-r--r-- 0,0 -dumpdir/addedfile1 5 -rw-r--r-- 0,0 -dumpdir/addedfile3 5 -rw-r--r-- 0,0 - -restoring from df.level2 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 2 -xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 4 directories and 7 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -list restore_dir -dumpdir/addeddir2 XXX drwxr-xr-x 0,0 -dumpdir/addeddir6 XXX drwxr-xr-x 0,0 -dumpdir/addeddir6/addedfile4 5 -rw-r--r-- 0,0 -dumpdir/addedfile0 5 -rw-r--r-- 0,0 -dumpdir/addedfile2 5 -rw-r--r-- 0,0 -dumpdir/addedfile3 5 -rw-r--r-- 0,0 - -restoring from df.level3 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 3 -xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 3 directories and 11 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -list restore_dir -dumpdir/addeddir2 XXX drwxr-xr-x 0,0 -dumpdir/addeddir6 XXX drwxr-xr-x 0,0 -dumpdir/addeddir6/addedfile4 5 -rw-r--r-- 0,0 -dumpdir/addedfile0 5 -rw-r--r-- 0,0 -dumpdir/addedfile2 5 -rw-r--r-- 0,0 -dumpdir/addedfile3 5 -rw-r--r-- 0,0 -dumpdir/linkfile0 5 -rw-r--r-- 0,0 -dumpdir/linkfile0_1 5 -rw-r--r-- 0,0 -dumpdir/linkfile2 5 -rw-r--r-- 0,0 -dumpdir/linkfile64 5 -rw-r--r-- 0,0 - -restoring from df.level4 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 4 -xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 3 directories and 7 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -list restore_dir -dumpdir/addeddir2 XXX drwxr-xr-x 0,0 -dumpdir/addeddir6 XXX drwxr-xr-x 0,0 -dumpdir/addedfile0 5 -rw-r--r-- 0,0 -dumpdir/addedfile3 5 -rw-r--r-- 0,0 -dumpdir/linkfile0_1 5 -rw-r--r-- 0,0 -dumpdir/linkfile2 5 -rw-r--r-- 0,0 - -restoring from df.level5 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 5 -xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 5 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -list restore_dir -dumpdir/addedfile6 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_1 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_2 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_3 5 -rw-r--r-- 0,0 - -restoring from df.level6 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 6 -xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 2 directories and 5 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -list restore_dir -dumpdir/addedfile6_mv 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_mv_1 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_mv_2 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_mv_3 5 -rw-r--r-- 0,0 - -restoring from df.level7 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 7 -xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 0 directories and 0 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -list restore_dir -dumpdir/addedfile6_mv 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_mv_1 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_mv_2 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_mv_3 5 -rw-r--r-- 0,0 - -restoring from df.level8 -Restoring cumumlative from file... -xfsrestore -f DUMP_FILE -r RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: searching media for dump -xfsrestore: examining media file 0 -xfsrestore: dump description: -xfsrestore: hostname: HOSTNAME -xfsrestore: mount point: SCRATCH_MNT -xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME -xfsrestore: level: 8 -xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media" -xfsrestore: file system ID: ID -xfsrestore: session id: ID -xfsrestore: media ID: ID -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: reading directories -xfsrestore: 0 directories and 0 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -list restore_dir -dumpdir/addedfile6_mv 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_mv_1 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_mv_2 5 -rw-r--r-- 0,0 -dumpdir/linkfile6_mv_3 5 -rw-r--r-- 0,0 - -Do the ls comparison -Comparing ls of FS with restored FS at level 0 -Files TMP.ls.0 and TMP.restorals.0 are identical - -Comparing ls of FS with restored FS at level 1 -Files TMP.ls.1 and TMP.restorals.1 are identical - -Comparing ls of FS with restored FS at level 2 -Files TMP.ls.2 and TMP.restorals.2 are identical - -Comparing ls of FS with restored FS at level 3 -Files TMP.ls.3 and TMP.restorals.3 are identical - -Comparing ls of FS with restored FS at level 4 -Files TMP.ls.4 and TMP.restorals.4 are identical - -Comparing ls of FS with restored FS at level 5 -Files TMP.ls.5 and TMP.restorals.5 are identical - -Comparing ls of FS with restored FS at level 6 -Files TMP.ls.6 and TMP.restorals.6 are identical - -Comparing ls of FS with restored FS at level 7 -Files TMP.ls.7 and TMP.restorals.7 are identical - -Comparing ls of FS with restored FS at level 8 -Files TMP.ls.8 and TMP.restorals.8 are identical - +mount: /dev/sda6 already mounted or /home/manish/Projects/xfstests/sdb4 busy +mount: according to mtab, /dev/sda6 is already mounted on /home/manish/Projects/xfstests/sdb4 +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) +failed to unmount /dev/sda6 +_check_xfs_filesystem: filesystem on /dev/sda6 has dirty log (see 065.full) +_check_xfs_filesystem: filesystem on /dev/sda6 is inconsistent (c) (see 065.full) +_check_xfs_filesystem: filesystem on /dev/sda6 is inconsistent (r) (see 065.full) 066 1s ... [failed, exit status 1] - output mismatch (see 066.out.bad) --- 066.out 2011-05-11 22:32:24.000000000 +0530 +++ 066.out.bad 2011-06-15 14:43:51.626412560 +0530 @@ -1,40 +1,5 @@ QA output created by 066 -dd a largefile at offset 4294967297 -10+0 records in -10+0 records out -ls dumpdir/largefile -22 largefile -Dumping to file... -xfsdump -f DUMP_FILE -M stress_tape_media -L stress_066 SCRATCH_MNT -xfsdump: using file dump (drive_simple) strategy -xfsdump: level 0 dump of HOSTNAME:SCRATCH_MNT -xfsdump: dump date: DATE -xfsdump: session id: ID -xfsdump: session label: "stress_066" -xfsdump: ino map -xfsdump: ino map construction complete -xfsdump: estimated dump size: NUM bytes -xfsdump: /var/xfsdump/inventory created -xfsdump: creating dump session media file 0 (media 0, file 0) -xfsdump: dumping ino map -xfsdump: dumping directories -xfsdump: dumping non-directory files -xfsdump: ending media file -xfsdump: media file size NUM bytes -xfsdump: dump size (non-dir files) : NUM bytes -xfsdump: dump complete: SECS seconds elapsed -xfsdump: Dump Status: SUCCESS -Restoring from file... -xfsrestore -f DUMP_FILE -L stress_066 RESTORE_DIR -xfsrestore: using file dump (drive_simple) strategy -xfsrestore: using online session inventory -xfsrestore: searching media for directory dump -xfsrestore: examining media file 0 -xfsrestore: reading directories -xfsrestore: 2 directories and 2 entries processed -xfsrestore: directory post-processing -xfsrestore: restoring non-directory files -xfsrestore: restore complete: SECS seconds elapsed -xfsrestore: Restore Status: SUCCESS -ls restoredir/largefile -22 largefile +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) +failed to unmount /dev/sda6 067 1s ... [failed, exit status 1] - output mismatch (see 067.out.bad) --- 067.out 2011-05-11 22:32:24.000000000 +0530 +++ 067.out.bad 2011-06-15 14:43:52.403402846 +0530 @@ -1,166 +1,5 @@ QA output created by 067 - -=== Test out large ACLs === -try 20 aces for access acl -# file: largeacldir -# owner: 0 -# group: 0 -user::rwx -user:1:rwx -user:2:rwx -user:3:rwx -user:4:rwx -user:5:rwx -user:6:rwx -user:7:rwx -user:8:rwx -user:9:rwx -user:10:rwx -user:11:rwx -user:12:rwx -user:13:rwx -user:14:rwx -user:15:rwx -user:16:rwx -group::rwx -mask::rwx -other::rwx - -try 20 aces for default acl -# file: largeacldir -# owner: 0 -# group: 0 -user::rwx -user:1:rwx -user:2:rwx -user:3:rwx -user:4:rwx -user:5:rwx -user:6:rwx -user:7:rwx -user:8:rwx -user:9:rwx -user:10:rwx -user:11:rwx -user:12:rwx -user:13:rwx -user:14:rwx -user:15:rwx -user:16:rwx -group::rwx -mask::rwx -other::rwx -default:user::rwx -default:user:1:rwx -default:user:2:rwx -default:user:3:rwx -default:user:4:rwx -default:user:5:rwx -default:user:6:rwx -default:user:7:rwx -default:user:8:rwx -default:user:9:rwx -default:user:10:rwx -default:user:11:rwx -default:user:12:rwx -default:user:13:rwx -default:user:14:rwx -default:user:15:rwx -default:user:16:rwx -default:group::rwx -default:mask::rwx -default:other::rwx - -try 21 aces for access acl -# file: largeacldir -# owner: 0 -# group: 0 -user::rwx -user:1:rwx -user:2:rwx -user:3:rwx -user:4:rwx -user:5:rwx -user:6:rwx -user:7:rwx -user:8:rwx -user:9:rwx -user:10:rwx -user:11:rwx -user:12:rwx -user:13:rwx -user:14:rwx -user:15:rwx -user:16:rwx -user:17:rwx -group::rwx -mask::rwx -other::rwx -default:user::rwx -default:user:1:rwx -default:user:2:rwx -default:user:3:rwx -default:user:4:rwx -default:user:5:rwx -default:user:6:rwx -default:user:7:rwx -default:user:8:rwx -default:user:9:rwx -default:user:10:rwx -default:user:11:rwx -default:user:12:rwx -default:user:13:rwx -default:user:14:rwx -default:user:15:rwx -default:user:16:rwx -default:group::rwx -default:mask::rwx -default:other::rwx - -try 21 aces for default acl -# file: largeacldir -# owner: 0 -# group: 0 -user::rwx -user:1:rwx -user:2:rwx -user:3:rwx -user:4:rwx -user:5:rwx -user:6:rwx -user:7:rwx -user:8:rwx -user:9:rwx -user:10:rwx -user:11:rwx -user:12:rwx -user:13:rwx -user:14:rwx -user:15:rwx -user:16:rwx -user:17:rwx -group::rwx -mask::rwx -other::rwx -default:user::rwx -default:user:1:rwx -default:user:2:rwx -default:user:3:rwx -default:user:4:rwx -default:user:5:rwx -default:user:6:rwx -default:user:7:rwx -default:user:8:rwx -default:user:9:rwx -default:user:10:rwx -default:user:11:rwx -default:user:12:rwx -default:user:13:rwx -default:user:14:rwx -default:user:15:rwx -default:user:16:rwx -default:user:17:rwx -default:group::rwx -default:mask::rwx -default:other::rwx - +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) +failed to unmount /dev/sda6 068 94s ... - output mismatch (see 068.out.bad) --- 068.out 2011-05-11 22:32:24.000000000 +0530 +++ 068.out.bad 2011-06-15 14:43:53.141393620 +0530 @@ -1,43 +1,5 @@ QA output created by 068 -*** init FS - -*** iteration: 0 -*** freezing $SCRATCH_MNT -*** thawing $SCRATCH_MNT - -*** iteration: 1 -*** freezing $SCRATCH_MNT -*** thawing $SCRATCH_MNT - -*** iteration: 2 -*** freezing $SCRATCH_MNT -*** thawing $SCRATCH_MNT - -*** iteration: 3 -*** freezing $SCRATCH_MNT -*** thawing $SCRATCH_MNT - -*** iteration: 4 -*** freezing $SCRATCH_MNT -*** thawing $SCRATCH_MNT - -*** iteration: 5 -*** freezing $SCRATCH_MNT -*** thawing $SCRATCH_MNT - -*** iteration: 6 -*** freezing $SCRATCH_MNT -*** thawing $SCRATCH_MNT - -*** iteration: 7 -*** freezing $SCRATCH_MNT -*** thawing $SCRATCH_MNT - -*** iteration: 8 -*** freezing $SCRATCH_MNT -*** thawing $SCRATCH_MNT - -*** iteration: 9 -*** freezing $SCRATCH_MNT -*** thawing $SCRATCH_MNT - +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) +failed to unmount /dev/sda6 069 9s ... - output mismatch (see 069.out.bad) --- 069.out 2011-05-11 22:32:24.000000000 +0530 +++ 069.out.bad 2011-06-15 14:43:53.905384068 +0530 @@ -1,9 +1,5 @@ QA output created by 069 -*** mkfs -*** mount FS -*** checking file with 1 integers -*** checking file with 20 integers -*** checking file with 300 integers -*** checking file with 40000 integers -*** checking file with 3000000 integers -*** checking file with 12345 integers +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) +failed to unmount /dev/sda6 070 19s ... 22s 072 1s ... [failed, exit status 1] - output mismatch (see 072.out.bad) --- 072.out 2011-05-11 22:32:24.000000000 +0530 +++ 072.out.bad 2011-06-15 14:44:17.914083917 +0530 @@ -1,2 +1,5 @@ QA output created by 072 -Silence is golden +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) +failed to unmount /dev/sda6 073 34s ... [failed, exit status 1] - output mismatch (see 073.out.bad) --- 073.out 2011-05-11 22:32:24.000000000 +0530 +++ 073.out.bad 2011-06-15 14:44:19.447064754 +0530 @@ -1,73 +1,5 @@ QA output created by 073 -meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks -data = bsize=XXX blocks=XXX, imaxpct=PCT - = sunit=XXX swidth=XXX, unwritten=X -naming =VERN bsize=XXX -log =LDEV bsize=XXX blocks=XXX -realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX - -=== populating scratch device -1000+0 records in -1000+0 records out - -=== copying scratch device to single target -Creating file - 0% ... 10% ... 20% ... 30% ... 40% ... 50% ... 60% ... 70% ... 80% ... 90% ... 100% - -All copies completed. -checking new image -mounting new image on loopback -comparing new image files to old -comparing new image directories to old -comparing new image geometry to old -unmounting and removing new image - -=== copying scratch device to single target, duplicate UUID -Creating file - 0% ... 10% ... 20% ... 30% ... 40% ... 50% ... 60% ... 70% ... 80% ... 90% ... 100% - -All copies completed. -checking new image -mounting new image on loopback -retrying mount with nouuid option -comparing new image files to old -comparing new image directories to old -comparing new image geometry to old -unmounting and removing new image - -=== copying scratch device to single target, large ro device -meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks -data = bsize=XXX blocks=XXX, imaxpct=PCT - = sunit=XXX swidth=XXX, unwritten=X -naming =VERN bsize=XXX -log =LDEV bsize=XXX blocks=XXX -realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX -Creating file - 0% ... 10% ... 20% ... 30% ... 40% ... 50% ... 60% ... 70% ... 80% ... 90% ... 100% - -All copies completed. -checking new image -mounting new image on loopback -comparing new image files to old -comparing new image directories to old -comparing new image geometry to old -unmounting and removing new image - -=== copying scratch device to multiple targets -Creating file -Creating file - 0% ... 10% ... 20% ... 30% ... 40% ... 50% ... 60% ... 70% ... 80% ... 90% ... 100% - -All copies completed. -checking new image -mounting new image on loopback -comparing new image files to old -comparing new image directories to old -comparing new image geometry to old -unmounting and removing new image -checking new image -mounting new image on loopback -comparing new image files to old -comparing new image directories to old -comparing new image geometry to old -unmounting and removing new image +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) +failed to unmount /dev/sda6 074 211s ... 218s 075 84s ... 100s 076 80s ... [failed, exit status 1] - output mismatch (see 076.out.bad) --- 076.out 2011-05-11 22:32:24.000000000 +0530 +++ 076.out.bad 2011-06-15 14:49:41.146042964 +0530 @@ -1,5 +1,6 @@ QA output created by 076 -*** init fs -*** test concurrent block/fs access -*** done +umount: /home/manish/Projects/xfstests/sdb4: device is busy. + (In some cases useful info about processes that use + the device is found by lsof(8) or fuser(1)) +failed to unmount /dev/sda6 *** unmount 077 [failed, exit status 1] - output mismatch (see 077.out.bad) --- 077.out 2011-05-11 22:32:24.000000000 +0530 +++ 077.out.bad 2011-06-15 14:49:42.722023261 +0530 @@ -1,7 +1,5 @@ QA output created by 077 *** create filesystem -*** set default ACL -*** populate filesystem, pass #1 -*** populate filesystem, pass #2 -*** all done +mkfs failed +(see 077.full for details) *** unmount 078 78s ... 80s _check_xfs_filesystem: filesystem on /dev/sda5 has dirty log (see 078.full) _check_xfs_filesystem: filesystem on /dev/sda5 is inconsistent (c) (see 078.full) _check_xfs_filesystem: filesystem on /dev/sda5 is inconsistent (r) (see 078.full) Ran: 001 002 003 004 005 006 007 008 009 011 012 013 014 015 016 017 019 020 021 026 027 028 029 030 031 032 033 034 041 042 045 046 047 048 049 050 051 052 053 054 056 061 062 063 064 065 066 067 068 069 070 072 073 074 075 076 077 078 Not run: 010 035 040 044 057 058 Failures: 015 042 049 050 052 053 054 056 061 062 063 064 065 066 067 068 069 072 073 076 077 Failed 21 of 58 tests --20cf30564473dcf77904a5bcb811 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi I am running xfstest suite using command

./check -xfs -g auto
PC x86 machine with Kernel version 2.6.38.5
XFS Tests Suite dated 2011-05-11 (http://oss= .sgi.com/cgi-bin/gitweb.cgi?p=3Dxfs/cmds/xfstests.git;a=3Dsummary)
<= br>
Many of the test cases are failing , please let me know thatt am I missing = something?

Regards,
Manish


FSTYP=A0=A0=A0=A0=A0=A0=A0= =A0 -- xfs (non-debug)
PLATFORM=A0=A0=A0=A0=A0 -- Linux/i686 mannuDesk 2= .6.38.5
MKFS_OPTIONS=A0 -- -f -bsize=3D4096 /dev/sda6
MOUNT_OPTIONS -- /dev/sda6 /home/manish/Projects/xfstests/sdb4

001 4= s ... 5s
002 0s ... 0s
003 0s ... 0s
004 1s ... 1s
005 0s ... 0= s
006 35s ... 36s
007 58s ... 58s
008 1s ... 1s
009 1s ... 1s 010=A0=A0=A0 =A0[not run] dbtest was not built for this platform
011 43s= ... 45s
012 1s ... 2s
013 145s ... 158s
014 53s ... 51s
015 1s= ... - output mismatch (see 015.out.bad)
--- 015.out=A0=A0=A0 2011-05-11= 22:32:24.000000000 +0530
+++ 015.out.bad=A0=A0=A0 2011-06-15 14:34:36.561351828 +0530
@@ -4,4 +4,= 8 @@
=A0check free space:
=A0delete fill:
=A0check free space:
= -=A0=A0 !!! free space is in range
+=A0=A0 !!! free space has value of 2= 0
+free space is NOT in range 43306.56 .. 44181.44
+umount: /home/manish/Projects/xfstests/sdb4: device is busy.
+=A0=A0=A0= =A0=A0=A0=A0 (In some cases useful info about processes that use
+=A0=A0= =A0=A0=A0=A0=A0=A0 the device is found by lsof(8) or fuser(1))
016 74s .= .. 79s
017 28s ... 30s
019 1s ... 1s
020 4s ... 3s
021 1s ... 1s
026 12s ... 13s
027 1= 2s ... 12s
028 23s ... 23s
029 1s ... 1s
030 16s ... 18s
031 9s= ... 9s
032 72s ... 70s
033 10s ... 11s
034 1s ... 1s
035=A0=A0= =A0 =A0[not run] No dump tape specified
040=A0=A0=A0 =A0[not run] Can't run srcdiff without KWORKAREA set
04= 1 23s ... 19s
042 115s ... [failed, exit status 1] - output mismatch (se= e 042.out.bad)
--- 042.out=A0=A0=A0 2011-05-11 22:32:24.000000000 +0530<= br>+++ 042.out.bad=A0=A0=A0 2011-06-15 14:42:05.946733738 +0530
@@ -9,5 +9,8 @@
=A0Run xfs_fsr on filesystem... done
=A0Check fill fi= le... done
=A0Check large file... done
-Checking filesystem... done-xfs_fsr tests passed.
+Checking filesystem... fail
+_check_scratch= _fs failed (returned 1): see 042.full
+umount: /home/manish/Projects/xfstests/sdb4: device is busy.
+=A0=A0=A0= =A0=A0=A0=A0 (In some cases useful info about processes that use
+=A0=A0= =A0=A0=A0=A0=A0=A0 the device is found by lsof(8) or fuser(1))
044=A0=A0= =A0 =A0[not run] This test requires a valid $SCRATCH_LOGDEV
045 1s ... 1s
046 13s ... 13s
047=A0=A0=A0 =A024s
048 0s ... 0s049 86s ... [failed, exit status 1] - output mismatch (see 049.out.bad)--- 049.out=A0=A0=A0 2011-05-11 22:32:24.000000000 +0530
+++ 049.out.ba= d=A0=A0=A0 2011-06-15 14:42:52.004157941 +0530
@@ -13,3 +13,5 @@
=A0--- clean
=A0--- umount ext2 on xfs
=A0--- um= ount xfs
+!!! umount xfs failed
+(see 049.full for details)
050=A0= =A0=A0 =A0[failed, exit status 1] - output mismatch (see 050.out.bad)
--= - 050.out=A0=A0=A0 2011-05-11 22:32:24.000000000 +0530
+++ 050.out.bad=A0=A0=A0 2011-06-15 14:42:52.866147163 +0530
@@ -1,193 += 1,5 @@
=A0QA output created by 050
-*** user
-meta-data=3DDDEV isi= ze=3DXXX agcount=3DN, agsize=3DXXX blks
-data=A0=A0=A0=A0 =3D bsize=3DXX= X blocks=3DXXX, imaxpct=3DPCT
-=A0=A0=A0=A0=A0=A0=A0=A0 =3D sunit=3DXXX swidth=3DXXX, unwritten=3DX
-n= aming=A0=A0 =3DVERN bsize=3DXXX
-log=A0=A0=A0=A0=A0 =3DLDEV bsize=3DXXX = blocks=3DXXX
-realtime =3DRDEV extsz=3DXXX blocks=3DXXX, rtextents=3DXXX=
-
-*** report no quota settings
-[ROOT] 0 0 0 00 [--------] 3 0 0= 00 [--------] 0 0 0 00 [--------]
-
-*** report initial settings
-[ROOT] 0 0 0 00 [--------] 3 0 0 00 [= --------] 0 0 0 00 [--------]
-[NAME] 0 100 500 00 [--------] 1 4 10 00 = [--------] 0 0 0 00 [--------]
-
-*** push past the soft inode limit<= br> -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------]
-[NA= ME] 0 100 500 00 [--------] 3 4 10 00 [--------] 0 0 0 00 [--------]
--*** push past the soft block limit
-[ROOT] 0 0 0 00 [--------] 3 0 0 = 00 [--------] 0 0 0 00 [--------]
-[NAME] 140 100 500 00 [7 days] 4 4 10 00 [7 days] 0 0 0 00 [--------]
-=
-*** push past the hard inode limit (expect EDQUOT)
-[ROOT] 0 0 0 00= [--------] 3 0 0 00 [--------] 0 0 0 00 [--------]
-[NAME] 140 100 500 = 00 [7 days] 10 4 10 00 [7 days] 0 0 0 00 [--------]
-
-*** push past the hard block limit (expect EDQUOT)
-[ROOT] 0 0 0 0= 0 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------]
-[NAME] =3DOK=3D 10= 0 500 00 [7 days] 10 4 10 00 [7 days] 0 0 0 00 [--------]
-
-*** unmo= unt
-*** group
-meta-data=3DDDEV isize=3DXXX agcount=3DN, agsize=3DXXX blks<= br>-data=A0=A0=A0=A0 =3D bsize=3DXXX blocks=3DXXX, imaxpct=3DPCT
-=A0=A0= =A0=A0=A0=A0=A0=A0 =3D sunit=3DXXX swidth=3DXXX, unwritten=3DX
-naming= =A0=A0 =3DVERN bsize=3DXXX
-log=A0=A0=A0=A0=A0 =3DLDEV bsize=3DXXX block= s=3DXXX
-realtime =3DRDEV extsz=3DXXX blocks=3DXXX, rtextents=3DXXX
-
-*** re= port no quota settings
-[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0= 0 0 00 [--------]
-
-*** report initial settings
-[ROOT] 0 0 0 00= [--------] 3 0 0 00 [--------] 0 0 0 00 [--------]
-[NAME] 0 100 500 00 [--------] 1 4 10 00 [--------] 0 0 0 00 [--------]-
-*** push past the soft inode limit
-[ROOT] 0 0 0 00 [--------] 3 = 0 0 00 [--------] 0 0 0 00 [--------]
-[NAME] 0 100 500 00 [--------] 3 = 4 10 00 [--------] 0 0 0 00 [--------]
-
-*** push past the soft block limit
-[ROOT] 0 0 0 00 [--------] 3 0= 0 00 [--------] 0 0 0 00 [--------]
-[NAME] 140 100 500 00 [7 days] 4 4= 10 00 [7 days] 0 0 0 00 [--------]
-
-*** push past the hard inode l= imit (expect EDQUOT)
-[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------]
-[NA= ME] 140 100 500 00 [7 days] 10 4 10 00 [7 days] 0 0 0 00 [--------]
--*** push past the hard block limit (expect EDQUOT)
-[ROOT] 0 0 0 00 [-= -------] 3 0 0 00 [--------] 0 0 0 00 [--------]
-[NAME] =3DOK=3D 100 500 00 [7 days] 10 4 10 00 [7 days] 0 0 0 00 [--------= ]
-
-*** unmount
-*** uqnoenforce
-meta-data=3DDDEV isize=3DXXX= agcount=3DN, agsize=3DXXX blks
-data=A0=A0=A0=A0 =3D bsize=3DXXX blocks= =3DXXX, imaxpct=3DPCT
-=A0=A0=A0=A0=A0=A0=A0=A0 =3D sunit=3DXXX swidth=3DXXX, unwritten=3DX
-n= aming=A0=A0 =3DVERN bsize=3DXXX
-log=A0=A0=A0=A0=A0 =3DLDEV bsize=3DXXX = blocks=3DXXX
-realtime =3DRDEV extsz=3DXXX blocks=3DXXX, rtextents=3DXXX=
-
-*** report no quota settings
-[ROOT] 0 0 0 00 [--------] 3 0 0= 00 [--------] 0 0 0 00 [--------]
-
-*** report initial settings
-[ROOT] 0 0 0 00 [--------] 3 0 0 00 [= --------] 0 0 0 00 [--------]
-[NAME] 0 100 500 00 [--------] 1 4 10 00 = [--------] 0 0 0 00 [--------]
-
-*** push past the soft inode limit<= br> -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------]
-[NA= ME] 0 100 500 00 [--------] 3 4 10 00 [--------] 0 0 0 00 [--------]
--*** push past the soft block limit
-[ROOT] 0 0 0 00 [--------] 3 0 0 = 00 [--------] 0 0 0 00 [--------]
-[NAME] 140 100 500 00 [--------] 4 4 10 00 [--------] 0 0 0 00 [--------]<= br>-
-*** push past the hard inode limit (expect EDQUOT)
-[ROOT] 0 0 = 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------]
-[NAME] 140 100 = 500 00 [--------] 16 4 10 00 [--none--] 0 0 0 00 [--------]
-
-*** push past the hard block limit (expect EDQUOT)
-[ROOT] 0 0 0 0= 0 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------]
-[NAME] 540 100 500= 00 [--none--] 16 4 10 00 [--none--] 0 0 0 00 [--------]
-
-*** unmou= nt
-*** gqnoenforce
-meta-data=3DDDEV isize=3DXXX agcount=3DN, agsize=3DXXX= blks
-data=A0=A0=A0=A0 =3D bsize=3DXXX blocks=3DXXX, imaxpct=3DPCT
-= =A0=A0=A0=A0=A0=A0=A0=A0 =3D sunit=3DXXX swidth=3DXXX, unwritten=3DX
-na= ming=A0=A0 =3DVERN bsize=3DXXX
-log=A0=A0=A0=A0=A0 =3DLDEV bsize=3DXXX b= locks=3DXXX
-realtime =3DRDEV extsz=3DXXX blocks=3DXXX, rtextents=3DXXX
-
-*** re= port no quota settings
-[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0= 0 0 00 [--------]
-
-*** report initial settings
-[ROOT] 0 0 0 00= [--------] 3 0 0 00 [--------] 0 0 0 00 [--------]
-[NAME] 0 100 500 00 [--------] 1 4 10 00 [--------] 0 0 0 00 [--------]-
-*** push past the soft inode limit
-[ROOT] 0 0 0 00 [--------] 3 = 0 0 00 [--------] 0 0 0 00 [--------]
-[NAME] 0 100 500 00 [--------] 3 = 4 10 00 [--------] 0 0 0 00 [--------]
-
-*** push past the soft block limit
-[ROOT] 0 0 0 00 [--------] 3 0= 0 00 [--------] 0 0 0 00 [--------]
-[NAME] 140 100 500 00 [--------] 4= 4 10 00 [--------] 0 0 0 00 [--------]
-
-*** push past the hard ino= de limit (expect EDQUOT)
-[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------]
-[NA= ME] 140 100 500 00 [--------] 16 4 10 00 [--none--] 0 0 0 00 [--------]
= -
-*** push past the hard block limit (expect EDQUOT)
-[ROOT] 0 0 0 0= 0 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------]
-[NAME] 540 100 500 00 [--none--] 16 4 10 00 [--none--] 0 0 0 00 [--------]=
-
-*** unmount
-*** pquota
-meta-data=3DDDEV isize=3DXXX agcou= nt=3DN, agsize=3DXXX blks
-data=A0=A0=A0=A0 =3D bsize=3DXXX blocks=3DXXX= , imaxpct=3DPCT
-=A0=A0=A0=A0=A0=A0=A0=A0 =3D sunit=3DXXX swidth=3DXXX, = unwritten=3DX
-naming=A0=A0 =3DVERN bsize=3DXXX
-log=A0=A0=A0=A0=A0 =3DLDEV bsize=3DXX= X blocks=3DXXX
-realtime =3DRDEV extsz=3DXXX blocks=3DXXX, rtextents=3DX= XX
-
-*** report no quota settings
-[ROOT] 0 0 0 00 [--------] 3 0= 0 00 [--------] 0 0 0 00 [--------]
-
-*** report initial settings
-[ROOT] 0 0 0 00 [--------] 3 0 0 00 [= --------] 0 0 0 00 [--------]
-[NAME] 0 100 500 00 [--------] 1 4 10 00 = [--------] 0 0 0 00 [--------]
-
-*** push past the soft inode limit<= br> -[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------]
-[NA= ME] 0 100 500 00 [--------] 3 4 10 00 [--------] 0 0 0 00 [--------]
--*** push past the soft block limit
-[ROOT] 0 0 0 00 [--------] 3 0 0 = 00 [--------] 0 0 0 00 [--------]
-[NAME] 140 100 500 00 [7 days] 4 4 10 00 [7 days] 0 0 0 00 [--------]
-=
-*** push past the hard inode limit (expect EDQUOT)
-[ROOT] 0 0 0 00= [--------] 3 0 0 00 [--------] 0 0 0 00 [--------]
-[NAME] 140 100 500 = 00 [7 days] 9 4 10 00 [7 days] 0 0 0 00 [--------]
-
-*** push past the hard block limit (expect EDQUOT)
-[ROOT] 0 0 0 0= 0 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------]
-[NAME] =3DOK=3D 10= 0 500 00 [7 days] 9 4 10 00 [7 days] 0 0 0 00 [--------]
-
-*** unmou= nt
-*** pqnoenforce
-meta-data=3DDDEV isize=3DXXX agcount=3DN, agsize=3DXXX= blks
-data=A0=A0=A0=A0 =3D bsize=3DXXX blocks=3DXXX, imaxpct=3DPCT
-= =A0=A0=A0=A0=A0=A0=A0=A0 =3D sunit=3DXXX swidth=3DXXX, unwritten=3DX
-na= ming=A0=A0 =3DVERN bsize=3DXXX
-log=A0=A0=A0=A0=A0 =3DLDEV bsize=3DXXX b= locks=3DXXX
-realtime =3DRDEV extsz=3DXXX blocks=3DXXX, rtextents=3DXXX
-
-*** re= port no quota settings
-[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0= 0 0 00 [--------]
-
-*** report initial settings
-[ROOT] 0 0 0 00= [--------] 3 0 0 00 [--------] 0 0 0 00 [--------]
-[NAME] 0 100 500 00 [--------] 1 4 10 00 [--------] 0 0 0 00 [--------]-
-*** push past the soft inode limit
-[ROOT] 0 0 0 00 [--------] 3 = 0 0 00 [--------] 0 0 0 00 [--------]
-[NAME] 0 100 500 00 [--------] 3 = 4 10 00 [--------] 0 0 0 00 [--------]
-
-*** push past the soft block limit
-[ROOT] 0 0 0 00 [--------] 3 0= 0 00 [--------] 0 0 0 00 [--------]
-[NAME] 140 100 500 00 [--------] 4= 4 10 00 [--------] 0 0 0 00 [--------]
-
-*** push past the hard ino= de limit (expect EDQUOT)
-[ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------]
-[NA= ME] 140 100 500 00 [--------] 16 4 10 00 [--none--] 0 0 0 00 [--------]
= -
-*** push past the hard block limit (expect EDQUOT)
-[ROOT] 0 0 0 0= 0 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------]
-[NAME] 540 100 500 00 [--none--] 16 4 10 00 [--none--] 0 0 0 00 [--------]=
-
-*** unmount
+umount: /home/manish/Projects/xfstests/sdb4: devi= ce is busy.
+=A0=A0=A0=A0=A0=A0=A0 (In some cases useful info about proc= esses that use
+=A0=A0=A0=A0=A0=A0=A0=A0 the device is found by lsof(8) or fuser(1))
+f= ailed to unmount /dev/sda6
051 1s ... 0s
052=A0=A0=A0 =A0[failed, exi= t status 1] - output mismatch (see 052.out.bad)
--- 052.out=A0=A0=A0 201= 1-05-11 22:32:24.000000000 +0530
+++ 052.out.bad=A0=A0=A0 2011-06-15 14:42:54.705124173 +0530
@@ -1,9 +1,= 5 @@
=A0QA output created by 052
-meta-data=3DDDEV isize=3DXXX agcoun= t=3DN, agsize=3DXXX blks
-data=A0=A0=A0=A0 =3D bsize=3DXXX blocks=3DXXX,= imaxpct=3DPCT
-=A0=A0=A0=A0=A0=A0=A0=A0 =3D sunit=3DXXX swidth=3DXXX, u= nwritten=3DX
-naming=A0=A0 =3DVERN bsize=3DXXX
-log=A0=A0=A0=A0=A0 =3DLDEV bsize=3DXX= X blocks=3DXXX
-realtime =3DRDEV extsz=3DXXX blocks=3DXXX, rtextents=3DX= XX
-Comparing out of xfs_quota and xfs_db
-OK.
+umount: /home/mani= sh/Projects/xfstests/sdb4: device is busy.
+=A0=A0=A0=A0=A0=A0=A0 (In some cases useful info about processes that use<= br>+=A0=A0=A0=A0=A0=A0=A0=A0 the device is found by lsof(8) or fuser(1))+failed to unmount /dev/sda6
053 1s ... [failed, exit status 1] - outpu= t mismatch (see 053.out.bad)
--- 053.out=A0=A0=A0 2011-05-11 22:32:24.000000000 +0530
+++ 053.out.bad= =A0=A0=A0 2011-06-15 14:42:55.443114947 +0530
@@ -1,24 +1,5 @@
=A0QA = output created by 053
-make filesystem on $SCRATCH_DEV... done
-mount= filesytem... done
-acls before repair:
-$SCRATCH_MNT/test.0 [u::r--,g::rwx,o::rw-]
-$SC= RATCH_MNT/test.1 [u::r-x,g::---,o::---]
-$SCRATCH_MNT/test.2 [u::---,g::= r-x,o::---]
-$SCRATCH_MNT/test.3 [u::---,g::---,o::r-x]
-$SCRATCH_MNT= /test.4 [u::---,g::r-x,o::rwx]
-$SCRATCH_MNT/test.5 [u::---,u:id2:r-x,g::---,m::rwx,o::---]
-$SCRATCH_M= NT/test.6 [u::rwx,g::r-x,o::r--]
-$SCRATCH_MNT/test.7 [u::---,g::---,g:i= d2:r-x,m::-w-,o::---]
-unmount $SCRATCH_DEV... done
-repair filesyste= m... done
-mount filesytem... done
-acls after repair:
-$SCRATCH_MNT/test.0 [u= ::r--,g::rwx,o::rw-]
-$SCRATCH_MNT/test.1 [u::r-x,g::---,o::---]
-$SC= RATCH_MNT/test.2 [u::---,g::r-x,o::---]
-$SCRATCH_MNT/test.3 [u::---,g::= ---,o::r-x]
-$SCRATCH_MNT/test.4 [u::---,g::r-x,o::rwx]
-$SCRATCH_MNT/test.5 [u::---= ,u:id2:r-x,g::---,m::rwx,o::---]
-$SCRATCH_MNT/test.6 [u::rwx,g::r-x,o::= r--]
-$SCRATCH_MNT/test.7 [u::---,g::---,g:id2:r-x,m::-w-,o::---]
+umount: /home/manish/Projects/xfstests/sdb4: device is busy.
+=A0=A0=A0= =A0=A0=A0=A0 (In some cases useful info about processes that use
+=A0=A0= =A0=A0=A0=A0=A0=A0 the device is found by lsof(8) or fuser(1))
+failed t= o unmount /dev/sda6
054 3s ... [failed, exit status 1] - output mismatch= (see 054.out.bad)
--- 054.out=A0=A0=A0 2011-05-11 22:32:24.000000000 +0530
+++ 054.out.bad= =A0=A0=A0 2011-06-15 14:42:56.126106409 +0530
@@ -1,73 +1,5 @@
=A0QA = output created by 054
-*** Default mount options
- File: "<MO= UNT>/testfile"
- Size: 0 Filetype: Regular File
- Mode: (0644/-rw-r--r--) Uid: (12345) = Gid: (54321)
-Device: <DEVICE> Inode: <INODE> Links: 1
-= File: "<MOUNT>/testfile"
- Size: 0 Filetype: Regular Fi= le
- Mode: (0644/-rw-r--r--) Uid: (34567) Gid: (76543)
-Device: <DEVICE&= gt; Inode: <INODE> Links: 1
- File: "<MOUNT>/testfile&= quot;
- Size: 0 Filetype: Regular File
- Mode: (0644/-rw-r--r--) Uid:= (56789) Gid: (98765)
-Device: <DEVICE> Inode: <INODE> Links: 1
- File: "<= ;MOUNT>/testfile"
- Size: 0 Filetype: Regular File
- Mode: (0= 644/-rw-r--r--) Uid: (12345) Gid: (54321)
-Device: <DEVICE> Inode:= <INODE> Links: 1
-
-*** User quota mount option
- File: "<MOUNT>/testfile&q= uot;
- Size: 0 Filetype: Regular File
- Mode: (0644/-rw-r--r--) Uid: = (12345) Gid: (54321)
-Device: <DEVICE> Inode: <INODE> Links:= 1
- File: "<MOUNT>/testfile"
- Size: 0 Filetype: Regular F= ile
- Mode: (0644/-rw-r--r--) Uid: (34567) Gid: (76543)
-Device: <= DEVICE> Inode: <INODE> Links: 1
- File: "<MOUNT>/te= stfile"
- Size: 0 Filetype: Regular File
- Mode: (0644/-rw-r--r--) Uid: (56789) = Gid: (98765)
-Device: <DEVICE> Inode: <INODE> Links: 1
-= File: "<MOUNT>/testfile"
- Size: 0 Filetype: Regular Fi= le
- Mode: (0644/-rw-r--r--) Uid: (12345) Gid: (54321)
-Device: <DEVICE&= gt; Inode: <INODE> Links: 1
-
-*** Group quota mount option- File: "<MOUNT>/testfile"
- Size: 0 Filetype: Regular = File
- Mode: (0644/-rw-r--r--) Uid: (12345) Gid: (54321)
-Device: <DEVICE&= gt; Inode: <INODE> Links: 1
- File: "<MOUNT>/testfile&= quot;
- Size: 0 Filetype: Regular File
- Mode: (0644/-rw-r--r--) Uid:= (34567) Gid: (76543)
-Device: <DEVICE> Inode: <INODE> Links: 1
- File: "<= ;MOUNT>/testfile"
- Size: 0 Filetype: Regular File
- Mode: (0= 644/-rw-r--r--) Uid: (56789) Gid: (98765)
-Device: <DEVICE> Inode:= <INODE> Links: 1
- File: "<MOUNT>/testfile"
- Size: 0 Filetype: Regular F= ile
- Mode: (0644/-rw-r--r--) Uid: (12345) Gid: (54321)
-Device: <= DEVICE> Inode: <INODE> Links: 1
-
-*** User and Group quota= mount options
- File: "<MOUNT>/testfile"
- Size: 0 Filetype: Regular F= ile
- Mode: (0644/-rw-r--r--) Uid: (12345) Gid: (54321)
-Device: <= DEVICE> Inode: <INODE> Links: 1
- File: "<MOUNT>/te= stfile"
- Size: 0 Filetype: Regular File
- Mode: (0644/-rw-r--r--) Uid: (34567) = Gid: (76543)
-Device: <DEVICE> Inode: <INODE> Links: 1
-= File: "<MOUNT>/testfile"
- Size: 0 Filetype: Regular Fi= le
- Mode: (0644/-rw-r--r--) Uid: (56789) Gid: (98765)
-Device: <DEVICE&= gt; Inode: <INODE> Links: 1
- File: "<MOUNT>/testfile&= quot;
- Size: 0 Filetype: Regular File
- Mode: (0644/-rw-r--r--) Uid:= (12345) Gid: (54321)
-Device: <DEVICE> Inode: <INODE> Links: 1
-
+umount: /ho= me/manish/Projects/xfstests/sdb4: device is busy.
+=A0=A0=A0=A0=A0=A0=A0= (In some cases useful info about processes that use
+=A0=A0=A0=A0=A0=A0= =A0=A0 the device is found by lsof(8) or fuser(1))
+failed to unmount /dev/sda6
056 12s ... [failed, exit status 1] - outpu= t mismatch (see 056.out.bad)
--- 056.out=A0=A0=A0 2011-05-11 22:32:24.00= 0000000 +0530
+++ 056.out.bad=A0=A0=A0 2011-06-15 14:43:06.828972606 +05= 30
@@ -1,37 +1,8 @@
=A0QA output created by 056
-Creating directory system to dump using src= /fill.
-Setup ..........
-Dumping to file...
-xfsdump=A0 -f DUMP_F= ILE -M stress_tape_media -L stress_056 SCRATCH_MNT
-xfsdump: using file = dump (drive_simple) strategy
-xfsdump: level 0 dump of HOSTNAME:SCRATCH_MNT
-xfsdump: dump date: DATE=
-xfsdump: session id: ID
-xfsdump: session label: "stress_056&q= uot;
-xfsdump: ino map <PHASES>
-xfsdump: ino map construction = complete
-xfsdump: estimated dump size: NUM bytes
-xfsdump: /var/xfsdump/inventor= y created
-xfsdump: creating dump session media file 0 (media 0, file 0)=
-xfsdump: dumping ino map
-xfsdump: dumping directories
-xfsdump:= dumping non-directory files
-xfsdump: ending media file
-xfsdump: media file size NUM bytes
-xfsd= ump: dump size (non-dir files) : NUM bytes
-xfsdump: dump complete: SECS= seconds elapsed
-xfsdump: Dump Status: SUCCESS
-Restoring from file.= ..
-xfsrestore=A0 -f DUMP_FILE=A0 -L stress_056 RESTORE_DIR
-xfsrestore: us= ing file dump (drive_simple) strategy
-xfsrestore: using online session = inventory
-xfsrestore: searching media for directory dump
-xfsrestore= : examining media file 0
-xfsrestore: reading directories
-xfsrestore: 7 directories and 11 entri= es processed
-xfsrestore: directory post-processing
-xfsrestore: rest= oring non-directory files
-xfsrestore: restore complete: SECS seconds el= apsed
-xfsrestore: Restore Status: SUCCESS
-Comparing listing of dump director= y with restore directory
-Files TMP.dump_dir and TMP.restore_dir are ide= ntical
+umount: /home/manish/Projects/xfstests/sdb4: device is busy.
+=A0=A0=A0=A0=A0=A0=A0 (In some cases useful info about processes that use<= br>+=A0=A0=A0=A0=A0=A0=A0=A0 the device is found by lsof(8) or fuser(1))+failed to unmount /dev/sda6
+_check_xfs_filesystem: filesystem on /dev= /sda6 has dirty log (see 056.full)
+_check_xfs_filesystem: filesystem on /dev/sda6 is inconsistent (c) (see 05= 6.full)
+_check_xfs_filesystem: filesystem on /dev/sda6 is inconsistent = (r) (see 056.full)
057=A0=A0=A0 =A0[not run] Place holder for IRIX test = 057
058=A0=A0=A0 =A0[not run] Place holder for IRIX test 058
061 11s ... [fa= iled, exit status 1] - output mismatch (see 061.out.bad)
--- 061.out=A0= =A0=A0 2011-05-11 22:32:24.000000000 +0530
+++ 061.out.bad=A0=A0=A0 2011= -06-15 14:43:17.950833562 +0530
@@ -1,34 +1,8 @@
=A0QA output created by 061
-Creating directory syst= em to dump using src/fill.
-Setup ..........
-Restoring from file...<= br>-xfsrestore=A0 -f DUMP_FILE=A0 -L stress_056 RESTORE_DIR
-xfsrestore:= using file dump (drive_simple) strategy
-xfsrestore: searching media for dump
-xfsrestore: examining media file = 0
-xfsrestore: found dump matching specified label:
-xfsrestore: host= name: crackle.melbourne.sgi.co= m
-xfsrestore: mount point: /spare1
-xfsrestore: volume: /dev/dsk/dks0d2s1=
-xfsrestore: session time: TIME
-xfsrestore: level: 0
-xfsrestore= : session label: "stress_056"
-xfsrestore: media label: "= stress_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: session id: ID
-xfsresto= re: media ID: ID
-xfsrestore: searching media for directory dump
-xfs= restore: reading directories
-xfsrestore: 7 directories and 11 entries p= rocessed
-xfsrestore: directory post-processing
-xfsrestore: restoring non-direct= ory files
-xfsrestore: restore complete: SECS seconds elapsed
-xfsres= tore: Restore Status: SUCCESS
-Comparing dump directory with restore dir= ectory
-Files DUMP_DIR/file_guid and RESTORE_DIR/DUMP_SUBDIR/file_guid are identic= al
-Files DUMP_DIR/file_mix1 and RESTORE_DIR/DUMP_SUBDIR/file_mix1 are i= dentical
-Files DUMP_DIR/file_mix2 and RESTORE_DIR/DUMP_SUBDIR/file_mix2= are identical
-Files DUMP_DIR/file_sticky and RESTORE_DIR/DUMP_SUBDIR/file_sticky are ide= ntical
-Files DUMP_DIR/file_suid and RESTORE_DIR/DUMP_SUBDIR/file_suid a= re identical
-Comparing listing of dump directory with restore directory=
-Files TMP.dump_dir and TMP.restore_dir are identical
+umount: /home/man= ish/Projects/xfstests/sdb4: device is busy.
+=A0=A0=A0=A0=A0=A0=A0 (In s= ome cases useful info about processes that use
+=A0=A0=A0=A0=A0=A0=A0=A0= the device is found by lsof(8) or fuser(1))
+failed to unmount /dev/sda6
+_check_xfs_filesystem: filesystem on /dev/= sda6 has dirty log (see 061.full)
+_check_xfs_filesystem: filesystem on = /dev/sda6 is inconsistent (c) (see 061.full)
+_check_xfs_filesystem: fil= esystem on /dev/sda6 is inconsistent (r) (see 061.full)
062 1s ... [failed, exit status 1] - output mismatch (see 062.out.bad)
-= -- 062.out=A0=A0=A0 2011-05-11 22:32:24.000000000 +0530
+++ 062.out.bad= =A0=A0=A0 2011-06-15 14:43:18.673824524 +0530
@@ -1,660 +1,7 @@
=A0QA= output created by 062
-meta-data=3DDDEV isize=3DXXX agcount=3DN, agsize=3DXXX blks
-data=A0=A0= =A0=A0 =3D bsize=3DXXX blocks=3DXXX, imaxpct=3DPCT
-=A0=A0=A0=A0=A0=A0= =A0=A0 =3D sunit=3DXXX swidth=3DXXX, unwritten=3DX
-naming=A0=A0 =3DVERN= bsize=3DXXX
-log=A0=A0=A0=A0=A0 =3DLDEV bsize=3DXXX blocks=3DXXX
-realtime =3DRDEV extsz=3DXXX blocks=3DXXX, rtextents=3DXXX
-*** create = test bed
-SCRATCH_MNT
-SCRATCH_MNT/dev
-SCRATCH_MNT/dev/b
-SCRA= TCH_MNT/dev/c
-SCRATCH_MNT/dev/p
-SCRATCH_MNT/dir
-SCRATCH_MNT/lnk=
-SCRATCH_MNT/reg
-
-=3D=3D=3D TYPE reg; NAMESPACE user
-
-*** s= et/get one initially empty attribute
-# file: SCRATCH_MNT/reg
-user.name
-
-*** overwrite empty, set seve= ral new attributes
-*** fetch several attribute names and values (hex)
-# file: SCRATCH_MNT= /reg
-user.name=3D0xbabe
-user.name2= =3D0xdeadbeef
-user.name3=3D0xdeface
-
-*** fetch several attribut= e names and values (base64)
-# file: SCRATCH_MNT/reg
-user.name=3D0= sur4=3D
-user.name2=3D0s3q2+7w=3D=3D
-user.name3=3D0s3vrO
-
-**= * shrink value of an existing attribute
-# file: SCRATCH_MNT/reg
-user.name=3D0xbabe
-user.name2=3D0xdeaf
-user.name3=3D0xdeface
-
-*** grow value of e= xisting attribute
-# file: SCRATCH_MNT/reg
-user.name=3D0xbabe
-user.name2=3D0xdecade
-user.name3=3D0xdef= ace
-
-*** set an empty value for second attribute
-# file: SCRATCH_MNT/reg-user.name2
-
-*** overwrite empty value
-# file: SCRATCH_MNT/reg=
-user.name2=3D0xcafe
-
-*** remove attribute
-SCRATCH_MNT/reg:= user.name2: No such attribute
-*** final list (strings, type=3Dreg, nsp=3Duser)
-# file: SCRATCH_MNT/r= eg
-user.name=3D0xbabe
-user.name3= =3D0xdeface
-
-
-=3D=3D=3D TYPE dir; NAMESPACE user
-
-*** s= et/get one initially empty attribute
-# file: SCRATCH_MNT/dir
-user.name
= -
-*** overwrite empty, set several new attributes
-*** fetch several= attribute names and values (hex)
-# file: SCRATCH_MNT/dir
-user.name=3D0xbabe
-user.name2=3D0xdeadbeef
-user.name3=3D0xdeface
-
-*** fetch sever= al attribute names and values (base64)
-# file: SCRATCH_MNT/dir
-user.name=3D0sur4=3D
-user.name2=3D0s3q2+7w= =3D=3D
-user.name3=3D0s3vrO
-
-*** shrink value of an existing attribute
-# file: SCRATCH_MNT/dir=
-user.name=3D0xbabe
-user.name2=3D0= xdeaf
-user.name3=3D0xdeface
-
-*** grow value of existing attribu= te
-# file: SCRATCH_MNT/dir
-user.name=3D0= xbabe
-user.name2=3D0xdecade
-user.name3=3D0xdeface
-
-*** set = an empty value for second attribute
-# file: SCRATCH_MNT/dir
-user.na= me2
-
-*** overwrite empty value
-# file: SCRATCH_MNT/dir
-user.name2= =3D0xcafe
-
-*** remove attribute
-SCRATCH_MNT/dir: user.name2: No= such attribute
-*** final list (strings, type=3Ddir, nsp=3Duser)
-# = file: SCRATCH_MNT/dir
-user.name=3D0xbabe
-user.name3=3D0xdef= ace
-
-
-=3D=3D=3D TYPE lnk; NAMESPACE user
-
-*** set/get o= ne initially empty attribute
-setfattr: SCRATCH_MNT/lnk: Operation not p= ermitted
-*** overwrite empty, set several new attributes
-setfattr: SCRATCH_MNT/= lnk: Operation not permitted
-setfattr: SCRATCH_MNT/lnk: Operation not p= ermitted
-setfattr: SCRATCH_MNT/lnk: Operation not permitted
-*** fet= ch several attribute names and values (hex)
-*** fetch several attribute names and values (base64)
-*** shrink value= of an existing attribute
-setfattr: SCRATCH_MNT/lnk: Operation not perm= itted
-*** grow value of existing attribute
-setfattr: SCRATCH_MNT/ln= k: Operation not permitted
-*** set an empty value for second attribute
-setfattr: SCRATCH_MNT/lnk:= Operation not permitted
-SCRATCH_MNT/lnk: user.name2: Operation not per= mitted
-*** overwrite empty value
-setfattr: SCRATCH_MNT/lnk: Operati= on not permitted
-SCRATCH_MNT/lnk: user.name2: Operation not permitted
-*** remove attrib= ute
-setfattr: SCRATCH_MNT/lnk: Operation not permitted
-SCRATCH_MNT/= lnk: user.name2: Operation not permitted
-*** final list (strings, type= =3Dlnk, nsp=3Duser)
-
-=3D=3D=3D TYPE dev/b; NAMESPACE user
-
-*** set/get one initial= ly empty attribute
-setfattr: SCRATCH_MNT/dev/b: Operation not permitted=
-*** overwrite empty, set several new attributes
-setfattr: SCRATCH_= MNT/dev/b: Operation not permitted
-setfattr: SCRATCH_MNT/dev/b: Operation not permitted
-setfattr: SCRATCH= _MNT/dev/b: Operation not permitted
-*** fetch several attribute names a= nd values (hex)
-*** fetch several attribute names and values (base64) -*** shrink value of an existing attribute
-setfattr: SCRATCH_MNT/dev/b:= Operation not permitted
-*** grow value of existing attribute
-setfa= ttr: SCRATCH_MNT/dev/b: Operation not permitted
-*** set an empty value = for second attribute
-setfattr: SCRATCH_MNT/dev/b: Operation not permitted
-SCRATCH_MNT/dev/b= : user.name2: Operation not permitted
-*** overwrite empty value
-set= fattr: SCRATCH_MNT/dev/b: Operation not permitted
-SCRATCH_MNT/dev/b: us= er.name2: Operation not permitted
-*** remove attribute
-setfattr: SCRATCH_MNT/dev/b: Operation not permit= ted
-SCRATCH_MNT/dev/b: user.name2: Operation not permitted
-*** fina= l list (strings, type=3Ddev/b, nsp=3Duser)
-
-=3D=3D=3D TYPE dev/c; N= AMESPACE user
-
-*** set/get one initially empty attribute
-setfattr: SCRATCH_MNT/d= ev/c: Operation not permitted
-*** overwrite empty, set several new attr= ibutes
-setfattr: SCRATCH_MNT/dev/c: Operation not permitted
-setfatt= r: SCRATCH_MNT/dev/c: Operation not permitted
-setfattr: SCRATCH_MNT/dev/c: Operation not permitted
-*** fetch several= attribute names and values (hex)
-*** fetch several attribute names and= values (base64)
-*** shrink value of an existing attribute
-setfattr= : SCRATCH_MNT/dev/c: Operation not permitted
-*** grow value of existing attribute
-setfattr: SCRATCH_MNT/dev/c: Oper= ation not permitted
-*** set an empty value for second attribute
-set= fattr: SCRATCH_MNT/dev/c: Operation not permitted
-SCRATCH_MNT/dev/c: us= er.name2: Operation not permitted
-*** overwrite empty value
-setfattr: SCRATCH_MNT/dev/c: Operation not p= ermitted
-SCRATCH_MNT/dev/c: user.name2: Operation not permitted
-***= remove attribute
-setfattr: SCRATCH_MNT/dev/c: Operation not permitted<= br> -SCRATCH_MNT/dev/c: user.name2: Operation not permitted
-*** final list = (strings, type=3Ddev/c, nsp=3Duser)
-
-=3D=3D=3D TYPE dev/p; NAMESPAC= E user
-
-*** set/get one initially empty attribute
-setfattr: SCR= ATCH_MNT/dev/p: Operation not permitted
-*** overwrite empty, set several new attributes
-setfattr: SCRATCH_MNT/= dev/p: Operation not permitted
-setfattr: SCRATCH_MNT/dev/p: Operation n= ot permitted
-setfattr: SCRATCH_MNT/dev/p: Operation not permitted
-*** fetch several attribute names and values (hex)
-*** fetch several a= ttribute names and values (base64)
-*** shrink value of an existing attr= ibute
-setfattr: SCRATCH_MNT/dev/p: Operation not permitted
-*** grow= value of existing attribute
-setfattr: SCRATCH_MNT/dev/p: Operation not permitted
-*** set an empty = value for second attribute
-setfattr: SCRATCH_MNT/dev/p: Operation not p= ermitted
-SCRATCH_MNT/dev/p: user.name2: Operation not permitted
-*** overwrite empty value
-setfattr: SCRATCH_MNT/dev/p: Operation not p= ermitted
-SCRATCH_MNT/dev/p: user.name2: Operation not permitted
-***= remove attribute
-setfattr: SCRATCH_MNT/dev/p: Operation not permitted<= br> -SCRATCH_MNT/dev/p: user.name2: Operation not permitted
-*** final list = (strings, type=3Ddev/p, nsp=3Duser)
-
-=3D=3D=3D TYPE reg; NAMESPACE = trusted
-
-*** set/get one initially empty attribute
-# file: SCRA= TCH_MNT/reg
-trusted.name
-
-*** overwrite em= pty, set several new attributes
-*** fetch several attribute names and v= alues (hex)
-# file: SCRATCH_MNT/reg
-trusted.name=3D0xbabe
-trusted.name2=3D0xdeadbeef
-trusted.name3=3D0xdeface
-
-*** fetch= several attribute names and values (base64)
-# file: SCRATCH_MNT/reg-trusted.name=3D0sur4=3D
-trusted.n= ame2=3D0s3q2+7w=3D=3D
-trusted.name3=3D0s3vrO
-
-*** shrink value of an existing attribute<= br>-# file: SCRATCH_MNT/reg
-trusted.nam= e=3D0xbabe
-trusted.name2=3D0xdeaf
-trusted.name3=3D0xdeface
-=
-*** grow value of existing attribute
-# file: SCRATCH_MNT/reg
-trusted.name=3D0xbabe
-trusted.name2=3D0xdecade
-trusted.name3=3D0xdeface
-<= br>-*** set an empty value for second attribute
-# file: SCRATCH_MNT/reg=
-trusted.name2
-
-*** overwrite empty value
-# file: SCRATCH_MNT/r= eg
-trusted.name2=3D0xcafe
-
-*** remove attribute
-SCRATCH_MNT= /reg: trusted.name2: No such attribute
-*** final list (strings, type=3D= reg, nsp=3Dtrusted)
-# file: SCRATCH_MNT/reg
-
trusted.name=3D0xbabe
-trusted.name3=3D0xdeface
-
u= ser.name=3D0xbabe
-user.name3=3D0xdeface
-
-
-=3D=3D=3D TYP= E dir; NAMESPACE trusted
-
-*** set/get one initially empty attribute
-# file: SCRATCH_MNT/dir=
-trusted.name
-
-*** overwrit= e empty, set several new attributes
-*** fetch several attribute names a= nd values (hex)
-# file: SCRATCH_MNT/dir
-trusted.name=3D0xbabe
-trusted.name2=3D0xdeadbeef
-trusted.name3=3D0xdeface
= -
-*** fetch several attribute names and values (base64)
-# file: SCR= ATCH_MNT/dir
-
trusted.name=3D0sur4=3D
-trusted.na= me2=3D0s3q2+7w=3D=3D
-trusted.name3=3D0s3vrO
-
-*** shrink value o= f an existing attribute
-# file: SCRATCH_MNT/dir
-trusted.name=3D0xbabe
-trusted.name2=3D0xdeaf
-trusted.name3=3D0xdeface
-
-*** grow valu= e of existing attribute
-# file: SCRATCH_MNT/dir
-trusted.name=3D0xbabe
-trusted.name2=3D0xdecade
-tru= sted.name3=3D0xdeface
-
-*** set an empty value for second attribute
-# file: SCRATCH_MNT/d= ir
-trusted.name2
-
-*** overwrite empty value
-# file: SCRATCH= _MNT/dir
-trusted.name2=3D0xcafe
-
-*** remove attribute
-SCRAT= CH_MNT/dir: trusted.name2: No such attribute
-*** final list (strings, type=3Ddir, nsp=3Dtrusted)
-# file: SCRATCH_MN= T/dir
-trusted.name=3D0xbabe
-tru= sted.name3=3D0xdeface
-user.name=3D0xba= be
-user.name3=3D0xdeface
-
-
-=3D=3D=3D TYPE lnk; NAMESPACE trusted
-
-*** set/get one i= nitially empty attribute
-# file: SCRATCH_MNT/lnk
-trusted.name
-
-*** overwrite empty, set several ne= w attributes
-*** fetch several attribute names and values (hex)
-# file: SCRATCH_MNT= /lnk
-trusted.name=3D0xbabe
-trus= ted.name2=3D0xdeadbeef
-trusted.name3=3D0xdeface
-
-*** fetch seve= ral attribute names and values (base64)
-# file: SCRATCH_MNT/lnk
-trusted.name=3D0sur4=3D
-trusted.name2=3D0s3q2+7w=3D=3D
-trusted.name3=3D0s3vrO=
-
-*** shrink value of an existing attribute
-# file: SCRATCH_MNT= /lnk
-
trusted.name=3D0xbabe
-trusted.name2=3D0xdeaf
-trusted.name3=3D0xdeface
-
-*** grow valu= e of existing attribute
-# file: SCRATCH_MNT/lnk
-trusted.name=3D0xbabe
-trusted.name2=3D0xdecade
-tru= sted.name3=3D0xdeface
-
-*** set an empty value for second attribute
-# file: SCRATCH_MNT/l= nk
-trusted.name2
-
-*** overwrite empty value
-# file: SCRATCH= _MNT/lnk
-trusted.name2=3D0xcafe
-
-*** remove attribute
-SCRAT= CH_MNT/lnk: trusted.name2: No such attribute
-*** final list (strings, type=3Dlnk, nsp=3Dtrusted)
-# file: SCRATCH_MN= T/lnk
-trusted.name=3D0xbabe
-tru= sted.name3=3D0xdeface
-
-
-=3D=3D=3D TYPE dev/b; NAMESPACE trusted=
-
-*** set/get one initially empty attribute
-# file: SCRATCH_MNT/dev/b
-trusted.name=
-
-*** overwrite empty, set several new attributes
-*** fetch= several attribute names and values (hex)
-# file: SCRATCH_MNT/dev/b
-trusted.name=3D0xbabe
-trusted.name= 2=3D0xdeadbeef
-trusted.name3=3D0xdeface
-
-*** fetch several attr= ibute names and values (base64)
-# file: SCRATCH_MNT/dev/b
-trusted.name=3D0sur4=3D
-trusted.name2=3D0s3q2+7w=3D=3D
-trusted.name3=3D0s3vrO
-
-*** shr= ink value of an existing attribute
-# file: SCRATCH_MNT/dev/b
-trusted.name=3D0xbabe
-trusted.name2=3D0xd= eaf
-trusted.name3=3D0xdeface
-
-*** grow value of existing attribute
-# file: SCRATCH_MNT/dev/b-trusted.name=3D0xbabe
-trusted.nam= e2=3D0xdecade
-trusted.name3=3D0xdeface
-
-*** set an empty value = for second attribute
-# file: SCRATCH_MNT/dev/b
-trusted.name2
-
-*** overwrite empty v= alue
-# file: SCRATCH_MNT/dev/b
-trusted.name2=3D0xcafe
-
-*** = remove attribute
-SCRATCH_MNT/dev/b: trusted.name2: No such attribute -*** final list (strings, type=3Ddev/b, nsp=3Dtrusted)
-# file: SCRATCH_= MNT/dev/b
-trusted.name=3D0xbabe
= -trusted.name3=3D0xdeface
-
-
-=3D=3D=3D TYPE dev/c; NAMESPACE tru= sted
-
-*** set/get one initially empty attribute
-# file: SCRATCH_MNT/dev/c-trusted.name
-
-*** overwrite e= mpty, set several new attributes
-*** fetch several attribute names and = values (hex)
-# file: SCRATCH_MNT/dev/c
-trusted.name= =3D0xbabe
-trusted.name2=3D0xdeadbeef
-trusted.name3=3D0xdeface-
-*** fetch several attribute names and values (base64)
-# file: S= CRATCH_MNT/dev/c
-trusted.name=3D0sur4=3D
-trusted.na= me2=3D0s3q2+7w=3D=3D
-trusted.name3=3D0s3vrO
-
-*** shrink value o= f an existing attribute
-# file: SCRATCH_MNT/dev/c
-trusted.name=3D0xbabe
-trusted.name2=3D0xdeaf
-trusted.name3=3D0xdeface
-
-*** grow valu= e of existing attribute
-# file: SCRATCH_MNT/dev/c
-trusted.name=3D0xbabe
-trusted.name2=3D0xdecade
-t= rusted.name3=3D0xdeface
-
-*** set an empty value for second attribute
-# file: SCRATCH_MNT/d= ev/c
-trusted.name2
-
-*** overwrite empty value
-# file: SCRAT= CH_MNT/dev/c
-trusted.name2=3D0xcafe
-
-*** remove attribute
-SCRATCH_MNT/dev/c: trusted.name2: No such attribute
-*** final list (st= rings, type=3Ddev/c, nsp=3Dtrusted)
-# file: SCRATCH_MNT/dev/c
-trusted.name=3D0xbabe
-trusted.name3=3D0x= deface
-
-
-=3D=3D=3D TYPE dev/p; NAMESPACE trusted
-
-*** set/get one= initially empty attribute
-# file: SCRATCH_MNT/dev/p
-trusted.name
-
-*** overwrite empty, set severa= l new attributes
-*** fetch several attribute names and values (hex)
-# file: SCRATCH_MNT= /dev/p
-trusted.name=3D0xbabe
-tr= usted.name2=3D0xdeadbeef
-trusted.name3=3D0xdeface
-
-*** fetch se= veral attribute names and values (base64)
-# file: SCRATCH_MNT/dev/p
-trusted.name= =3D0sur4=3D
-trusted.name2=3D0s3q2+7w=3D=3D
-trusted.name3=3D0s3v= rO
-
-*** shrink value of an existing attribute
-# file: SCRATCH_M= NT/dev/p
-trusted.name=3D0xbabe
-trusted.name= 2=3D0xdeaf
-trusted.name3=3D0xdeface
-
-*** grow value of existing= attribute
-# file: SCRATCH_MNT/dev/p
-trusted.name=3D0xbabe
-trusted.name2=3D0xdecade
-trusted.name3=3D0xdeface
-
-*** set an = empty value for second attribute
-# file: SCRATCH_MNT/dev/p
-trusted.= name2
-
-*** overwrite empty value
-# file: SCRATCH_MNT/dev/p
-= trusted.name2=3D0xcafe
-
-*** remove attribute
-SCRATCH_MNT/dev/p: trusted.name2: No such at= tribute
-*** final list (strings, type=3Ddev/p, nsp=3Dtrusted)
-# fil= e: SCRATCH_MNT/dev/p
-trusted.name= =3D0xbabe
-trusted.name3=3D0xdeface
-
-
-
-*** extend test bed
-SCRATC= H_MNT
-SCRATCH_MNT/descend
-SCRATCH_MNT/descend/and
-SCRATCH_MNT/d= escend/down
-SCRATCH_MNT/descend/down/here
-SCRATCH_MNT/dev
-SCRAT= CH_MNT/dev/b
-SCRATCH_MNT/dev/c
-SCRATCH_MNT/dev/p
-SCRATCH_MNT/dir
-SCRATCH_MN= T/here
-SCRATCH_MNT/here/up
-SCRATCH_MNT/here/up/ascend
-SCRATCH_M= NT/lnk
-SCRATCH_MNT/reg
-
-*** directory descent with us following= symlinks
-# file: SCRATCH_MNT/reg
-trusted.name=3D0xbabe
-trusted.name3=3D0xdeface
-
u= ser.name=3D0xbabe
-user.name3=3D0xdeface
-
-# file: SCRATCH_MN= T/dir
-trusted.name=3D0xbabe
-trusted.name= 3=3D0xdeface
-user.name=3D0xbabe
-us= er.name3=3D0xdeface
-
-# file: SCRATCH_MNT/lnk
-trusted.name=3D0xbabe
-trusted.name3=3D0xdeface
-
-# file: SCRATCH_MNT/dev/b
-trusted.name=3D0xbabe
-trusted.name3=3D0xdefac= e
-
-# file: SCRATCH_MNT/dev/c
-tr= usted.name=3D0xbabe
-trusted.name3=3D0xdeface
-
-# file: SCRATCH_MNT/dev/p
-trusted.name=3D0xbabe
-trusted.name3=3D0xdefac= e
-
-# file: SCRATCH_MNT/here
-trusted.9=3D0x3837
-trusted.a=3D= 0x6263
-
-# file: SCRATCH_MNT/here/up
-trusted.9=3D0x3837
-trusted.a=3D0x= 6263
-
-# file: SCRATCH_MNT/here/up/ascend
-trusted.9=3D0x3837
= -trusted.a=3D0x6263
-
-# file: SCRATCH_MNT/descend
-user.1=3D0x323= 3
-user.x=3D0x797a
-
-# file: SCRATCH_MNT/descend/down
-user.1=3D0x3233
-user.x=3D0x7= 97a
-
-# file: SCRATCH_MNT/descend/down/here
-user.1=3D0x3233
-= user.x=3D0x797a
-
-# file: SCRATCH_MNT/descend/and/ascend
-trusted= .9=3D0x3837
-trusted.a=3D0x6263
-
-
-*** directory descent without following s= ymlinks
-# file: SCRATCH_MNT/reg
-tru= sted.name=3D0xbabe
-trusted.name3=3D0xdeface
-user.name=3D0xbabe
-user.name3=3D0xdeface
-
-# file: SCRATCH_MNT/dir
-trusted.name=3D0xbabe
-trusted.name3=3D0xdeface
= -user.name=3D0xbabe
-user.name3=3D0xdef= ace
-
-# file: SCRATCH_MNT/lnk
-trusted.name=3D0xbabe
-trusted.name3=3D0xdeface
-
-# file: SCRATCH_MNT/dev/b=
-
trusted.name=3D0xbabe
-trusted.= name3=3D0xdeface
-
-# file: SCRATCH_MNT/dev/c
-trusted= .name=3D0xbabe
-trusted.name3=3D0xdeface
-
-# file: SCRATCH_MN= T/dev/p
-trusted.name=3D0xbabe
-t= rusted.name3=3D0xdeface
-
-# file: SCRATCH_MNT/here
-trusted.9=3D0x3837
-trusted.a=3D0x626= 3
-
-# file: SCRATCH_MNT/here/up
-trusted.9=3D0x3837
-trusted.a= =3D0x6263
-
-# file: SCRATCH_MNT/here/up/ascend
-trusted.9=3D0x383= 7
-trusted.a=3D0x6263
-
-# file: SCRATCH_MNT/descend
-user.1=3D0x3233
-user.x=3D0x797a-
-# file: SCRATCH_MNT/descend/down
-user.1=3D0x3233
-user.x=3D0= x797a
-
-# file: SCRATCH_MNT/descend/down/here
-user.1=3D0x3233-user.x=3D0x797a
-
-
-
-*** backup everything
-*** clear out the scratch device<= br>-*** reset test bed with no extended attributes
-*** create test bed<= br>-SCRATCH_MNT
-SCRATCH_MNT/dev
-SCRATCH_MNT/dev/b
-SCRATCH_MNT/d= ev/c
-SCRATCH_MNT/dev/p
-SCRATCH_MNT/dir
-SCRATCH_MNT/lnk
-SCRATCH_MNT/= reg
-*** extend test bed
-SCRATCH_MNT
-SCRATCH_MNT/descend
-SCR= ATCH_MNT/descend/and
-SCRATCH_MNT/descend/down
-SCRATCH_MNT/descend/d= own/here
-SCRATCH_MNT/dev
-SCRATCH_MNT/dev/b
-SCRATCH_MNT/dev/c
-SCRATCH_MN= T/dev/p
-SCRATCH_MNT/dir
-SCRATCH_MNT/here
-SCRATCH_MNT/here/up-SCRATCH_MNT/here/up/ascend
-SCRATCH_MNT/lnk
-SCRATCH_MNT/reg
-*** restore everything
-*** compare before and after backups
+umount= : /home/manish/Projects/xfstests/sdb4: device is busy.
+=A0=A0=A0=A0=A0= =A0=A0 (In some cases useful info about processes that use
+=A0=A0=A0=A0= =A0=A0=A0=A0 the device is found by lsof(8) or fuser(1))
+failed to unmount /dev/sda6
=A0
=A0*** unmount
063 12s ... [faile= d, exit status 1] - output mismatch (see 063.out.bad)
--- 063.out=A0=A0= =A0 2011-05-11 22:32:24.000000000 +0530
+++ 063.out.bad=A0=A0=A0 2011-06= -15 14:43:29.427690082 +0530
@@ -1,74 +1,8 @@
=A0QA output created by 063
-Creating directory syst= em to dump using src/fill.
-Setup Attribute "attr1" set to a 9= byte value for smalll:
-some_text
-.Attribute "attr2" set = to a 10 byte value for biggg:
-some_text2
-.Attribute "attr3" set to a 10 byte value for sub= /smalll:
-some_text3
-.Attribute "attr4" set to a 10 byte v= alue for sub/biggg:
-some_text4
-.Attribute "attr5" set to = a 8 byte value for dir:
-dir_text
-...............
-Dumping to file...
-xfsdump=A0 -f DUMP= _FILE -M stress_tape_media -L stress_063 SCRATCH_MNT
-xfsdump: using fil= e dump (drive_simple) strategy
-xfsdump: level 0 dump of HOSTNAME:SCRATC= H_MNT
-xfsdump: dump date: DATE
-xfsdump: session id: ID
-xfsdump: session = label: "stress_063"
-xfsdump: ino map <PHASES>
-xfsdu= mp: ino map construction complete
-xfsdump: estimated dump size: NUM byt= es
-xfsdump: /var/xfsdump/inventory created
-xfsdump: creating dump session= media file 0 (media 0, file 0)
-xfsdump: dumping ino map
-xfsdump: d= umping directories
-xfsdump: dumping non-directory files
-xfsdump: en= ding media file
-xfsdump: media file size NUM bytes
-xfsdump: dump size (non-dir files) = : NUM bytes
-xfsdump: dump complete: SECS seconds elapsed
-xfsdump: D= ump Status: SUCCESS
-Restoring from file...
-xfsrestore=A0 -f DUMP_FI= LE=A0 -L stress_063 RESTORE_DIR
-xfsrestore: using file dump (drive_simple) strategy
-xfsrestore: using = online session inventory
-xfsrestore: searching media for directory dump=
-xfsrestore: examining media file 0
-xfsrestore: reading directories=
-xfsrestore: 4 directories and 21 entries processed
-xfsrestore: directo= ry post-processing
-xfsrestore: restoring non-directory files
-xfsres= tore: restore complete: SECS seconds elapsed
-xfsrestore: Restore Status= : SUCCESS
-Comparing dump directory with restore directory
-Looking at the extende= d attributes (EAs)
-EAs on dump
-User names
-Attribute "attr5= " had a 8 byte value for DUMP_DIR/dir:
-dir_text
-Attribute &quo= t;attr1" had a 9 byte value for DUMP_DIR/smalll:
-some_text
-Attribute "attr3" had a 10 byte value for DUMP_DIR= /sub/smalll:
-some_text3
-Root names
-Attribute "attr2" = had a 10 byte value for DUMP_DIR/biggg:
-some_text2
-Attribute "= attr4" had a 10 byte value for DUMP_DIR/sub/biggg:
-some_text4
-EAs on restore
-User names
-Attribute "attr5&quo= t; had a 8 byte value for DUMP_DIR/dir:
-dir_text
-Attribute "at= tr1" had a 9 byte value for DUMP_DIR/smalll:
-some_text
-Attribu= te "attr3" had a 10 byte value for DUMP_DIR/sub/smalll:
-some_text3
-Root names
-Attribute "attr2" had a 10 byte va= lue for DUMP_DIR/biggg:
-some_text2
-Attribute "attr4" had = a 10 byte value for DUMP_DIR/sub/biggg:
-some_text4
-Files 063.ea1 an= d 063.ea2 are identical
+umount: /home/manish/Projects/xfstests/sdb4: device is busy.
+=A0=A0=A0= =A0=A0=A0=A0 (In some cases useful info about processes that use
+=A0=A0= =A0=A0=A0=A0=A0=A0 the device is found by lsof(8) or fuser(1))
+failed t= o unmount /dev/sda6
+_check_xfs_filesystem: filesystem on /dev/sda6 has = dirty log (see 063.full)
+_check_xfs_filesystem: filesystem on /dev/sda6 is inconsistent (c) (see 06= 3.full)
+_check_xfs_filesystem: filesystem on /dev/sda6 is inconsistent = (r) (see 063.full)
064=A0=A0=A0 =A0[failed, exit status 1] - output mism= atch (see 064.out.bad)
--- 064.out=A0=A0=A0 2011-05-11 22:32:24.000000000 +0530
+++ 064.out.bad= =A0=A0=A0 2011-06-15 14:43:40.183555616 +0530
@@ -1,1484 +1,8 @@
=A0Q= A output created by 064
-Creating directory system of hardlinks to incre= mentally dump.
-creating hardlink file1_h1 to file1
-creating hardlink file1_h2 to file= 1
-creating hardlink file1_h3 to file1
-creating hardlink file1_h4 to= file1
-creating hardlink file1_h5 to file1
-creating hardlink file2_= h1 to file2
-creating hardlink file2_h2 to file2
-creating hardlink file2_h3 to file= 2
-creating hardlink file2_h4 to file2
-creating hardlink file2_h5 to= file2
-creating hardlink file3_h1 to file3
-creating hardlink file3_= h2 to file3
-creating hardlink file3_h3 to file3
-creating hardlink file3_h4 to file= 3
-creating hardlink file3_h5 to file3
-creating hardlink file4_h1 to= file4
-creating hardlink file4_h2 to file4
-creating hardlink file4_= h3 to file4
-creating hardlink file4_h4 to file4
-creating hardlink file4_h5 to file= 4
-creating hardlink file5_h1 to file5
-creating hardlink file5_h2 to= file5
-creating hardlink file5_h3 to file5
-creating hardlink file5_= h4 to file5
-creating hardlink file5_h5 to file5
-creating hardlink file6_h1 to file= 6
-creating hardlink file6_h2 to file6
-creating hardlink file6_h3 to= file6
-creating hardlink file6_h4 to file6
-creating hardlink file6_= h5 to file6
-creating hardlink file7_h1 to file7
-creating hardlink file7_h2 to file= 7
-creating hardlink file7_h3 to file7
-creating hardlink file7_h4 to= file7
-creating hardlink file7_h5 to file7
-creating hardlink file8_= h1 to file8
-creating hardlink file8_h2 to file8
-creating hardlink file8_h3 to file= 8
-creating hardlink file8_h4 to file8
-creating hardlink file8_h5 to= file8
-creating hardlink file9_h1 to file9
-creating hardlink file9_= h2 to file9
-creating hardlink file9_h3 to file9
-creating hardlink file9_h4 to file= 9
-creating hardlink file9_h5 to file9
-Do the incremental dumps
-= Dumping to file...
-xfsdump=A0 -l0 -f DUMP_FILE -M stress_tape_media -L = stress_064 SCRATCH_MNT
-xfsdump: using file dump (drive_simple) strategy
-xfsdump: level 0 dump= of HOSTNAME:SCRATCH_MNT
-xfsdump: dump date: DATE
-xfsdump: session = id: ID
-xfsdump: session label: "stress_064"
-xfsdump: ino = map <PHASES>
-xfsdump: ino map construction complete
-xfsdump: estimated dump size: N= UM bytes
-xfsdump: /var/xfsdump/inventory created
-xfsdump: creating = dump session media file 0 (media 0, file 0)
-xfsdump: dumping ino map -xfsdump: dumping directories
-xfsdump: dumping non-directory files
-= xfsdump: ending media file
-xfsdump: media file size NUM bytes
-xfsdu= mp: dump size (non-dir files) : NUM bytes
-xfsdump: dump complete: SECS = seconds elapsed
-xfsdump: Dump Status: SUCCESS
-Dumping to file...
-xfsdump=A0 -l1 -f= DUMP_FILE -M stress_tape_media -L stress_064 SCRATCH_MNT
-xfsdump: usin= g file dump (drive_simple) strategy
-xfsdump: level 1 incremental dump o= f HOSTNAME:SCRATCH_MNT based on level 0 dump begun DATE
-xfsdump: dump date: DATE
-xfsdump: session id: ID
-xfsdump: session = label: "stress_064"
-xfsdump: ino map <PHASES>
-xfsdu= mp: ino map construction complete
-xfsdump: estimated dump size: NUM byt= es
-xfsdump: creating dump session media file 0 (media 0, file 0)
-xfsdump:= dumping ino map
-xfsdump: dumping directories
-xfsdump: dumping non-= directory files
-xfsdump: ending media file
-xfsdump: media file size= NUM bytes
-xfsdump: dump size (non-dir files) : NUM bytes
-xfsdump: dump complete:= SECS seconds elapsed
-xfsdump: Dump Status: SUCCESS
-Dumping to file= ...
-xfsdump=A0 -l2 -f DUMP_FILE -M stress_tape_media -L stress_064 SCRA= TCH_MNT
-xfsdump: using file dump (drive_simple) strategy
-xfsdump: level 2 incr= emental dump of HOSTNAME:SCRATCH_MNT based on level 1 dump begun DATE
-x= fsdump: dump date: DATE
-xfsdump: session id: ID
-xfsdump: session la= bel: "stress_064"
-xfsdump: ino map <PHASES>
-xfsdump: ino map construction complete=
-xfsdump: estimated dump size: NUM bytes
-xfsdump: creating dump ses= sion media file 0 (media 0, file 0)
-xfsdump: dumping ino map
-xfsdum= p: dumping directories
-xfsdump: dumping non-directory files
-xfsdump: ending media file
-xf= sdump: media file size NUM bytes
-xfsdump: dump size (non-dir files) : N= UM bytes
-xfsdump: dump complete: SECS seconds elapsed
-xfsdump: Dump= Status: SUCCESS
-Dumping to file...
-xfsdump=A0 -l3 -f DUMP_FILE -M stress_tape_media -L= stress_064 SCRATCH_MNT
-xfsdump: using file dump (drive_simple) strateg= y
-xfsdump: level 3 incremental dump of HOSTNAME:SCRATCH_MNT based on le= vel 2 dump begun DATE
-xfsdump: dump date: DATE
-xfsdump: session id: ID
-xfsdump: session = label: "stress_064"
-xfsdump: ino map <PHASES>
-xfsdu= mp: ino map construction complete
-xfsdump: estimated dump size: NUM byt= es
-xfsdump: creating dump session media file 0 (media 0, file 0)
-xfsdump:= dumping ino map
-xfsdump: dumping directories
-xfsdump: dumping non-= directory files
-xfsdump: ending media file
-xfsdump: media file size= NUM bytes
-xfsdump: dump size (non-dir files) : NUM bytes
-xfsdump: dump complete:= SECS seconds elapsed
-xfsdump: Dump Status: SUCCESS
-Dumping to file= ...
-xfsdump=A0 -l4 -f DUMP_FILE -M stress_tape_media -L stress_064 SCRA= TCH_MNT
-xfsdump: using file dump (drive_simple) strategy
-xfsdump: level 4 incr= emental dump of HOSTNAME:SCRATCH_MNT based on level 3 dump begun DATE
-x= fsdump: dump date: DATE
-xfsdump: session id: ID
-xfsdump: session la= bel: "stress_064"
-xfsdump: ino map <PHASES>
-xfsdump: ino map construction complete=
-xfsdump: estimated dump size: NUM bytes
-xfsdump: creating dump ses= sion media file 0 (media 0, file 0)
-xfsdump: dumping ino map
-xfsdum= p: dumping directories
-xfsdump: dumping non-directory files
-xfsdump: ending media file
-xf= sdump: media file size NUM bytes
-xfsdump: dump size (non-dir files) : N= UM bytes
-xfsdump: dump complete: SECS seconds elapsed
-xfsdump: Dump= Status: SUCCESS
-Dumping to file...
-xfsdump=A0 -l5 -f DUMP_FILE -M stress_tape_media -L= stress_064 SCRATCH_MNT
-xfsdump: using file dump (drive_simple) strateg= y
-xfsdump: level 5 incremental dump of HOSTNAME:SCRATCH_MNT based on le= vel 4 dump begun DATE
-xfsdump: dump date: DATE
-xfsdump: session id: ID
-xfsdump: session = label: "stress_064"
-xfsdump: ino map <PHASES>
-xfsdu= mp: ino map construction complete
-xfsdump: estimated dump size: NUM byt= es
-xfsdump: creating dump session media file 0 (media 0, file 0)
-xfsdump:= dumping ino map
-xfsdump: dumping directories
-xfsdump: dumping non-= directory files
-xfsdump: ending media file
-xfsdump: media file size= NUM bytes
-xfsdump: dump size (non-dir files) : NUM bytes
-xfsdump: dump complete:= SECS seconds elapsed
-xfsdump: Dump Status: SUCCESS
-Dumping to file= ...
-xfsdump=A0 -l6 -f DUMP_FILE -M stress_tape_media -L stress_064 SCRA= TCH_MNT
-xfsdump: using file dump (drive_simple) strategy
-xfsdump: level 6 incr= emental dump of HOSTNAME:SCRATCH_MNT based on level 5 dump begun DATE
-x= fsdump: dump date: DATE
-xfsdump: session id: ID
-xfsdump: session la= bel: "stress_064"
-xfsdump: ino map <PHASES>
-xfsdump: ino map construction complete=
-xfsdump: estimated dump size: NUM bytes
-xfsdump: creating dump ses= sion media file 0 (media 0, file 0)
-xfsdump: dumping ino map
-xfsdum= p: dumping directories
-xfsdump: dumping non-directory files
-xfsdump: ending media file
-xf= sdump: media file size NUM bytes
-xfsdump: dump size (non-dir files) : N= UM bytes
-xfsdump: dump complete: SECS seconds elapsed
-xfsdump: Dump= Status: SUCCESS
-Dumping to file...
-xfsdump=A0 -l7 -f DUMP_FILE -M stress_tape_media -L= stress_064 SCRATCH_MNT
-xfsdump: using file dump (drive_simple) strateg= y
-xfsdump: level 7 incremental dump of HOSTNAME:SCRATCH_MNT based on le= vel 6 dump begun DATE
-xfsdump: dump date: DATE
-xfsdump: session id: ID
-xfsdump: session = label: "stress_064"
-xfsdump: ino map <PHASES>
-xfsdu= mp: ino map construction complete
-xfsdump: estimated dump size: NUM byt= es
-xfsdump: creating dump session media file 0 (media 0, file 0)
-xfsdump:= dumping ino map
-xfsdump: dumping directories
-xfsdump: dumping non-= directory files
-xfsdump: ending media file
-xfsdump: media file size= NUM bytes
-xfsdump: dump size (non-dir files) : NUM bytes
-xfsdump: dump complete:= SECS seconds elapsed
-xfsdump: Dump Status: SUCCESS
-Dumping to file= ...
-xfsdump=A0 -l8 -f DUMP_FILE -M stress_tape_media -L stress_064 SCRA= TCH_MNT
-xfsdump: using file dump (drive_simple) strategy
-xfsdump: level 8 incr= emental dump of HOSTNAME:SCRATCH_MNT based on level 7 dump begun DATE
-x= fsdump: dump date: DATE
-xfsdump: session id: ID
-xfsdump: session la= bel: "stress_064"
-xfsdump: ino map <PHASES>
-xfsdump: ino map construction complete=
-xfsdump: estimated dump size: NUM bytes
-xfsdump: creating dump ses= sion media file 0 (media 0, file 0)
-xfsdump: dumping ino map
-xfsdum= p: dumping directories
-xfsdump: dumping non-directory files
-xfsdump: ending media file
-xf= sdump: media file size NUM bytes
-xfsdump: dump size (non-dir files) : N= UM bytes
-xfsdump: dump complete: SECS seconds elapsed
-xfsdump: Dump= Status: SUCCESS
-Dumping to file...
-xfsdump=A0 -l9 -f DUMP_FILE -M stress_tape_media -L= stress_064 SCRATCH_MNT
-xfsdump: using file dump (drive_simple) strateg= y
-xfsdump: level 9 incremental dump of HOSTNAME:SCRATCH_MNT based on le= vel 8 dump begun DATE
-xfsdump: dump date: DATE
-xfsdump: session id: ID
-xfsdump: session = label: "stress_064"
-xfsdump: ino map <PHASES>
-xfsdu= mp: ino map construction complete
-xfsdump: estimated dump size: NUM byt= es
-xfsdump: creating dump session media file 0 (media 0, file 0)
-xfsdump:= dumping ino map
-xfsdump: dumping directories
-xfsdump: dumping non-= directory files
-xfsdump: ending media file
-xfsdump: media file size= NUM bytes
-xfsdump: dump size (non-dir files) : NUM bytes
-xfsdump: dump complete:= SECS seconds elapsed
-xfsdump: Dump Status: SUCCESS
-Listing of what= files we start with:
-12 file1
-12 file1_h1
-12 file1_h2
-12 f= ile1_h3
-12 file1_h4
-12 file1_h5
-12 file2
-12 file2_h1
-12 file2_h2-12 file2_h3
-12 file2_h4
-12 file2_h5
-12 file3
-12 file3_h1=
-12 file3_h2
-12 file3_h3
-12 file3_h4
-12 file3_h5
-12 fil= e4
-12 file4_h1
-12 file4_h2
-12 file4_h3
-12 file4_h4
-12 file4_h= 5
-12 file5
-12 file5_h1
-12 file5_h2
-12 file5_h3
-12 file5= _h4
-12 file5_h5
-12 file6
-12 file6_h1
-12 file6_h2
-12 fil= e6_h3
-12 file6_h4
-12 file6_h5
-12 file7
-12 file7_h1
-12 file7_h2-12 file7_h3
-12 file7_h4
-12 file7_h5
-12 file8
-12 file8_h1=
-12 file8_h2
-12 file8_h3
-12 file8_h4
-12 file8_h5
-12 fil= e9
-12 file9_h1
-12 file9_h2
-12 file9_h3
-12 file9_h4
-12 file9_h= 5
-Look at what files are contained in the inc. dump
-
-restoring = from df.level0
-Contents of dump ...
-xfsrestore=A0 -f DUMP_FILE -t -xfsrestore: using file dump (drive_simple) strategy
-xfsrestore: search= ing media for dump
-xfsrestore: examining media file 0
-xfsrestore: d= ump description:
-xfsrestore: hostname: HOSTNAME
-xfsrestore: mount = point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV
-xfsrestore: session time: TIME
-xfs= restore: level: 0
-xfsrestore: session label: "stress_064"
= -xfsrestore: media label: "stress_tape_media"
-xfsrestore: fil= e system ID: ID
-xfsrestore: session id: ID
-xfsrestore: media ID: ID
-xfsrestore: us= ing online session inventory
-xfsrestore: searching media for directory = dump
-xfsrestore: reading directories
-xfsrestore: 2 directories and = 55 entries processed
-xfsrestore: directory post-processing
-xfsrestore: reading non-director= y files
-xfsrestore: table of contents display complete: SECS seconds el= apsed
-xfsrestore: Restore Status: SUCCESS
-
-dumpdir/file1
-dumpdir/file1_h1
-dumpdir/file1_h2
-dumpdir/file1_h3
-dumpdir/fil= e1_h4
-dumpdir/file1_h5
-dumpdir/file2
-dumpdir/file2_h1
-dumpd= ir/file2_h2
-dumpdir/file2_h3
-dumpdir/file2_h4
-dumpdir/file2_h5<= br> -dumpdir/file3
-dumpdir/file3_h1
-dumpdir/file3_h2
-dumpdir/file3_= h3
-dumpdir/file3_h4
-dumpdir/file3_h5
-dumpdir/file4
-dumpdir/= file4_h1
-dumpdir/file4_h2
-dumpdir/file4_h3
-dumpdir/file4_h4
-dumpdir/file4_h5
-dumpdir/file5
-dumpdir/file5_h1
-dumpdir/file5_= h2
-dumpdir/file5_h3
-dumpdir/file5_h4
-dumpdir/file5_h5
-dumpd= ir/file6
-dumpdir/file6_h1
-dumpdir/file6_h2
-dumpdir/file6_h3
-dumpdir/file6_h4
-dumpdir/file6_h5
-dumpdir/file7
-dumpdir/file7_= h1
-dumpdir/file7_h2
-dumpdir/file7_h3
-dumpdir/file7_h4
-dumpd= ir/file7_h5
-dumpdir/file8
-dumpdir/file8_h1
-dumpdir/file8_h2
-dumpdir/file8_h3
-dumpdir/file8_h4
-dumpdir/file8_h5
-dumpdir/fil= e9
-dumpdir/file9_h1
-dumpdir/file9_h2
-dumpdir/file9_h3
-dumpd= ir/file9_h4
-dumpdir/file9_h5
-
-restoring from df.level1
-Cont= ents of dump ...
-xfsrestore=A0 -f DUMP_FILE -t
-xfsrestore: using file dump (drive_simpl= e) strategy
-xfsrestore: searching media for dump
-xfsrestore: examin= ing media file 0
-xfsrestore: dump description:
-xfsrestore: hostnam= e: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV-xfsrestore: session time: TIME
-xfsrestore: level: 1
-xfsrestore: = session label: "stress_064"
-xfsrestore: media label: "st= ress_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: session id: ID
-xfsresto= re: media ID: ID
-xfsrestore: using online session inventory
-xfsrest= ore: searching media for directory dump
-xfsrestore: reading directories=
-xfsrestore: 2 directories and 55 entries processed
-xfsrestore: directo= ry post-processing
-xfsrestore: reading non-directory files
-xfsresto= re: table of contents display complete: SECS seconds elapsed
-xfsrestore= : Restore Status: SUCCESS
-
-dumpdir/file1
-dumpdir/file1_h1
-dumpdir/file1_h2
-dumpdir/f= ile1_h3
-dumpdir/file1_h4
-dumpdir/file1_h5
-
-restoring from d= f.level2
-Contents of dump ...
-xfsrestore=A0 -f DUMP_FILE -t
-xfs= restore: using file dump (drive_simple) strategy
-xfsrestore: searching media for dump
-xfsrestore: examining media file = 0
-xfsrestore: dump description:
-xfsrestore: hostname: HOSTNAME
= -xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME
-xfsrestore: level: 2
-xfsrestore: se= ssion label: "stress_064"
-xfsrestore: media label: "stre= ss_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: sess= ion id: ID
-xfsrestore: media ID: ID
-xfsrestore: using online session inventory-xfsrestore: searching media for directory dump
-xfsrestore: reading di= rectories
-xfsrestore: 2 directories and 55 entries processed
-xfsres= tore: directory post-processing
-xfsrestore: reading non-directory files
-xfsrestore: table of contents = display complete: SECS seconds elapsed
-xfsrestore: Restore Status: SUCC= ESS
-
-dumpdir/file2
-dumpdir/file2_h1
-dumpdir/file2_h2
-dumpdir/file2_h3
-dumpdir/file2_h4
-dumpdir/file2_h5
-
-restor= ing from df.level3
-Contents of dump ...
-xfsrestore=A0 -f DUMP_FILE = -t
-xfsrestore: using file dump (drive_simple) strategy
-xfsrestore: = searching media for dump
-xfsrestore: examining media file 0
-xfsrestore: dump description:
-= xfsrestore: hostname: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT
= -xfsrestore: volume: SCRATCH_DEV
-xfsrestore: session time: TIME
-xfsrestore: level: 3
-xfsrestore: session label: "stress_064"=
-xfsrestore: media label: "stress_tape_media"
-xfsrestore:= file system ID: ID
-xfsrestore: session id: ID
-xfsrestore: media ID= : ID
-xfsrestore: using online session inventory
-xfsrestore: searching media= for directory dump
-xfsrestore: reading directories
-xfsrestore: 2 d= irectories and 55 entries processed
-xfsrestore: directory post-processi= ng
-xfsrestore: reading non-directory files
-xfsrestore: table of contents = display complete: SECS seconds elapsed
-xfsrestore: Restore Status: SUCC= ESS
-
-dumpdir/file3
-dumpdir/file3_h1
-dumpdir/file3_h2
-dumpdir/file3_h3
-dumpdir/file3_h4
-dumpdir/file3_h5
-
-restor= ing from df.level4
-Contents of dump ...
-xfsrestore=A0 -f DUMP_FILE = -t
-xfsrestore: using file dump (drive_simple) strategy
-xfsrestore: = searching media for dump
-xfsrestore: examining media file 0
-xfsrestore: dump description:
-= xfsrestore: hostname: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT
= -xfsrestore: volume: SCRATCH_DEV
-xfsrestore: session time: TIME
-xfsrestore: level: 4
-xfsrestore: session label: "stress_064"=
-xfsrestore: media label: "stress_tape_media"
-xfsrestore:= file system ID: ID
-xfsrestore: session id: ID
-xfsrestore: media ID= : ID
-xfsrestore: using online session inventory
-xfsrestore: searching media= for directory dump
-xfsrestore: reading directories
-xfsrestore: 2 d= irectories and 55 entries processed
-xfsrestore: directory post-processi= ng
-xfsrestore: reading non-directory files
-xfsrestore: table of contents = display complete: SECS seconds elapsed
-xfsrestore: Restore Status: SUCC= ESS
-
-dumpdir/file4
-dumpdir/file4_h1
-dumpdir/file4_h2
-dumpdir/file4_h3
-dumpdir/file4_h4
-dumpdir/file4_h5
-
-restor= ing from df.level5
-Contents of dump ...
-xfsrestore=A0 -f DUMP_FILE = -t
-xfsrestore: using file dump (drive_simple) strategy
-xfsrestore: = searching media for dump
-xfsrestore: examining media file 0
-xfsrestore: dump description:
-= xfsrestore: hostname: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT
= -xfsrestore: volume: SCRATCH_DEV
-xfsrestore: session time: TIME
-xfsrestore: level: 5
-xfsrestore: session label: "stress_064"=
-xfsrestore: media label: "stress_tape_media"
-xfsrestore:= file system ID: ID
-xfsrestore: session id: ID
-xfsrestore: media ID= : ID
-xfsrestore: using online session inventory
-xfsrestore: searching media= for directory dump
-xfsrestore: reading directories
-xfsrestore: 2 d= irectories and 55 entries processed
-xfsrestore: directory post-processi= ng
-xfsrestore: reading non-directory files
-xfsrestore: table of contents = display complete: SECS seconds elapsed
-xfsrestore: Restore Status: SUCC= ESS
-
-dumpdir/file5
-dumpdir/file5_h1
-dumpdir/file5_h2
-dumpdir/file5_h3
-dumpdir/file5_h4
-dumpdir/file5_h5
-
-restor= ing from df.level6
-Contents of dump ...
-xfsrestore=A0 -f DUMP_FILE = -t
-xfsrestore: using file dump (drive_simple) strategy
-xfsrestore: = searching media for dump
-xfsrestore: examining media file 0
-xfsrestore: dump description:
-= xfsrestore: hostname: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT
= -xfsrestore: volume: SCRATCH_DEV
-xfsrestore: session time: TIME
-xfsrestore: level: 6
-xfsrestore: session label: "stress_064"=
-xfsrestore: media label: "stress_tape_media"
-xfsrestore:= file system ID: ID
-xfsrestore: session id: ID
-xfsrestore: media ID= : ID
-xfsrestore: using online session inventory
-xfsrestore: searching media= for directory dump
-xfsrestore: reading directories
-xfsrestore: 2 d= irectories and 55 entries processed
-xfsrestore: directory post-processi= ng
-xfsrestore: reading non-directory files
-xfsrestore: table of contents = display complete: SECS seconds elapsed
-xfsrestore: Restore Status: SUCC= ESS
-
-dumpdir/file6
-dumpdir/file6_h1
-dumpdir/file6_h2
-dumpdir/file6_h3
-dumpdir/file6_h4
-dumpdir/file6_h5
-
-restor= ing from df.level7
-Contents of dump ...
-xfsrestore=A0 -f DUMP_FILE = -t
-xfsrestore: using file dump (drive_simple) strategy
-xfsrestore: = searching media for dump
-xfsrestore: examining media file 0
-xfsrestore: dump description:
-= xfsrestore: hostname: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT
= -xfsrestore: volume: SCRATCH_DEV
-xfsrestore: session time: TIME
-xfsrestore: level: 7
-xfsrestore: session label: "stress_064"=
-xfsrestore: media label: "stress_tape_media"
-xfsrestore:= file system ID: ID
-xfsrestore: session id: ID
-xfsrestore: media ID= : ID
-xfsrestore: using online session inventory
-xfsrestore: searching media= for directory dump
-xfsrestore: reading directories
-xfsrestore: 2 d= irectories and 55 entries processed
-xfsrestore: directory post-processi= ng
-xfsrestore: reading non-directory files
-xfsrestore: table of contents = display complete: SECS seconds elapsed
-xfsrestore: Restore Status: SUCC= ESS
-
-dumpdir/file7
-dumpdir/file7_h1
-dumpdir/file7_h2
-dumpdir/file7_h3
-dumpdir/file7_h4
-dumpdir/file7_h5
-
-restor= ing from df.level8
-Contents of dump ...
-xfsrestore=A0 -f DUMP_FILE = -t
-xfsrestore: using file dump (drive_simple) strategy
-xfsrestore: = searching media for dump
-xfsrestore: examining media file 0
-xfsrestore: dump description:
-= xfsrestore: hostname: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT
= -xfsrestore: volume: SCRATCH_DEV
-xfsrestore: session time: TIME
-xfsrestore: level: 8
-xfsrestore: session label: "stress_064"=
-xfsrestore: media label: "stress_tape_media"
-xfsrestore:= file system ID: ID
-xfsrestore: session id: ID
-xfsrestore: media ID= : ID
-xfsrestore: using online session inventory
-xfsrestore: searching media= for directory dump
-xfsrestore: reading directories
-xfsrestore: 2 d= irectories and 55 entries processed
-xfsrestore: directory post-processi= ng
-xfsrestore: reading non-directory files
-xfsrestore: table of contents = display complete: SECS seconds elapsed
-xfsrestore: Restore Status: SUCC= ESS
-
-dumpdir/file8
-dumpdir/file8_h1
-dumpdir/file8_h2
-dumpdir/file8_h3
-dumpdir/file8_h4
-dumpdir/file8_h5
-
-restor= ing from df.level9
-Contents of dump ...
-xfsrestore=A0 -f DUMP_FILE = -t
-xfsrestore: using file dump (drive_simple) strategy
-xfsrestore: = searching media for dump
-xfsrestore: examining media file 0
-xfsrestore: dump description:
-= xfsrestore: hostname: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT
= -xfsrestore: volume: SCRATCH_DEV
-xfsrestore: session time: TIME
-xfsrestore: level: 9
-xfsrestore: session label: "stress_064"=
-xfsrestore: media label: "stress_tape_media"
-xfsrestore:= file system ID: ID
-xfsrestore: session id: ID
-xfsrestore: media ID= : ID
-xfsrestore: using online session inventory
-xfsrestore: searching media= for directory dump
-xfsrestore: reading directories
-xfsrestore: 2 d= irectories and 55 entries processed
-xfsrestore: directory post-processi= ng
-xfsrestore: reading non-directory files
-xfsrestore: table of contents = display complete: SECS seconds elapsed
-xfsrestore: Restore Status: SUCC= ESS
-
-dumpdir/file9
-dumpdir/file9_h1
-dumpdir/file9_h2
-dumpdir/file9_h3
-dumpdir/file9_h4
-dumpdir/file9_h5
-Do the cumu= lative restores
-
-restoring from df.level0
-Restoring cumumlative= from file...
-xfsrestore=A0 -f DUMP_FILE -r RESTORE_DIR
-xfsrestore:= using file dump (drive_simple) strategy
-xfsrestore: searching media for dump
-xfsrestore: examining media file = 0
-xfsrestore: dump description:
-xfsrestore: hostname: HOSTNAME
= -xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME
-xfsrestore: level: 0
-xfsrestore: se= ssion label: "stress_064"
-xfsrestore: media label: "stre= ss_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: sess= ion id: ID
-xfsrestore: media ID: ID
-xfsrestore: using online session inventory-xfsrestore: searching media for directory dump
-xfsrestore: reading di= rectories
-xfsrestore: 2 directories and 55 entries processed
-xfsres= tore: directory post-processing
-xfsrestore: restoring non-directory files
-xfsrestore: restore complete= : SECS seconds elapsed
-xfsrestore: Restore Status: SUCCESS
-ls -l re= store_dir
-0 file1
-0 file1_h1
-0 file1_h2
-0 file1_h3
-0 fi= le1_h4
-0 file1_h5
-0 file2
-0 file2_h1
-0 file2_h2
-0 file2_h3
-0 = file2_h4
-0 file2_h5
-0 file3
-0 file3_h1
-0 file3_h2
-0 fil= e3_h3
-0 file3_h4
-0 file3_h5
-0 file4
-0 file4_h1
-0 file4_= h2
-0 file4_h3
-0 file4_h4
-0 file4_h5
-0 file5
-0 file5_h1
-0 = file5_h2
-0 file5_h3
-0 file5_h4
-0 file5_h5
-0 file6
-0 fil= e6_h1
-0 file6_h2
-0 file6_h3
-0 file6_h4
-0 file6_h5
-0 fil= e7
-0 file7_h1
-0 file7_h2
-0 file7_h3
-0 file7_h4
-0 file7_h5
= -0 file8
-0 file8_h1
-0 file8_h2
-0 file8_h3
-0 file8_h4
-0 = file8_h5
-0 file9
-0 file9_h1
-0 file9_h2
-0 file9_h3
-0 fil= e9_h4
-0 file9_h5
-
-restoring from df.level1
-Restoring cumumlative fro= m file...
-xfsrestore=A0 -f DUMP_FILE -r RESTORE_DIR
-xfsrestore: usi= ng file dump (drive_simple) strategy
-xfsrestore: searching media for du= mp
-xfsrestore: examining media file 0
-xfsrestore: dump description:
-= xfsrestore: hostname: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT
= -xfsrestore: volume: SCRATCH_DEV
-xfsrestore: session time: TIME
-xfsrestore: level: 1
-xfsrestore: session label: "stress_064"=
-xfsrestore: media label: "stress_tape_media"
-xfsrestore:= file system ID: ID
-xfsrestore: session id: ID
-xfsrestore: media ID= : ID
-xfsrestore: using online session inventory
-xfsrestore: searching media= for directory dump
-xfsrestore: reading directories
-xfsrestore: 2 d= irectories and 55 entries processed
-xfsrestore: directory post-processi= ng
-xfsrestore: restoring non-directory files
-xfsrestore: restore complete= : SECS seconds elapsed
-xfsrestore: Restore Status: SUCCESS
-ls -l re= store_dir
-12 file1
-12 file1_h1
-12 file1_h2
-12 file1_h3
-12 file1_h4
-12 file1_h5
-0 file2
-0 file2_h1
-0 file2_h2
-= 0 file2_h3
-0 file2_h4
-0 file2_h5
-0 file3
-0 file3_h1
-0 f= ile3_h2
-0 file3_h3
-0 file3_h4
-0 file3_h5
-0 file4
-0 file= 4_h1
-0 file4_h2
-0 file4_h3
-0 file4_h4
-0 file4_h5
-0 file5
-0 = file5_h1
-0 file5_h2
-0 file5_h3
-0 file5_h4
-0 file5_h5
-0 = file6
-0 file6_h1
-0 file6_h2
-0 file6_h3
-0 file6_h4
-0 fil= e6_h5
-0 file7
-0 file7_h1
-0 file7_h2
-0 file7_h3
-0 file7_h4
-0 = file7_h5
-0 file8
-0 file8_h1
-0 file8_h2
-0 file8_h3
-0 fil= e8_h4
-0 file8_h5
-0 file9
-0 file9_h1
-0 file9_h2
-0 file9_= h3
-0 file9_h4
-0 file9_h5
-
-restoring from df.level2
-Restoring = cumumlative from file...
-xfsrestore=A0 -f DUMP_FILE -r RESTORE_DIR
-= xfsrestore: using file dump (drive_simple) strategy
-xfsrestore: searchi= ng media for dump
-xfsrestore: examining media file 0
-xfsrestore: dump description:
-= xfsrestore: hostname: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT
= -xfsrestore: volume: SCRATCH_DEV
-xfsrestore: session time: TIME
-xfsrestore: level: 2
-xfsrestore: session label: "stress_064"=
-xfsrestore: media label: "stress_tape_media"
-xfsrestore:= file system ID: ID
-xfsrestore: session id: ID
-xfsrestore: media ID= : ID
-xfsrestore: using online session inventory
-xfsrestore: searching media= for directory dump
-xfsrestore: reading directories
-xfsrestore: 2 d= irectories and 55 entries processed
-xfsrestore: directory post-processi= ng
-xfsrestore: restoring non-directory files
-xfsrestore: restore complete= : SECS seconds elapsed
-xfsrestore: Restore Status: SUCCESS
-ls -l re= store_dir
-12 file1
-12 file1_h1
-12 file1_h2
-12 file1_h3
-12 file1_h4
-12 file1_h5
-12 file2
-12 file2_h1
-12 file2_h2-12 file2_h3
-12 file2_h4
-12 file2_h5
-0 file3
-0 file3_h1-0 file3_h2
-0 file3_h3
-0 file3_h4
-0 file3_h5
-0 file4
-0 file4_h1
-0 file4_h2
-0 file4_h3
-0 file4_h4
-0 file4_h5
= -0 file5
-0 file5_h1
-0 file5_h2
-0 file5_h3
-0 file5_h4
-0 = file5_h5
-0 file6
-0 file6_h1
-0 file6_h2
-0 file6_h3
-0 fil= e6_h4
-0 file6_h5
-0 file7
-0 file7_h1
-0 file7_h2
-0 file7_h3
-0 = file7_h4
-0 file7_h5
-0 file8
-0 file8_h1
-0 file8_h2
-0 fil= e8_h3
-0 file8_h4
-0 file8_h5
-0 file9
-0 file9_h1
-0 file9_= h2
-0 file9_h3
-0 file9_h4
-0 file9_h5
-
-restoring from df.level3=
-Restoring cumumlative from file...
-xfsrestore=A0 -f DUMP_FILE -r R= ESTORE_DIR
-xfsrestore: using file dump (drive_simple) strategy
-xfsr= estore: searching media for dump
-xfsrestore: examining media file 0
-xfsrestore: dump description:
-= xfsrestore: hostname: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT
= -xfsrestore: volume: SCRATCH_DEV
-xfsrestore: session time: TIME
-xfsrestore: level: 3
-xfsrestore: session label: "stress_064"=
-xfsrestore: media label: "stress_tape_media"
-xfsrestore:= file system ID: ID
-xfsrestore: session id: ID
-xfsrestore: media ID= : ID
-xfsrestore: using online session inventory
-xfsrestore: searching media= for directory dump
-xfsrestore: reading directories
-xfsrestore: 2 d= irectories and 55 entries processed
-xfsrestore: directory post-processi= ng
-xfsrestore: restoring non-directory files
-xfsrestore: restore complete= : SECS seconds elapsed
-xfsrestore: Restore Status: SUCCESS
-ls -l re= store_dir
-12 file1
-12 file1_h1
-12 file1_h2
-12 file1_h3
-12 file1_h4
-12 file1_h5
-12 file2
-12 file2_h1
-12 file2_h2-12 file2_h3
-12 file2_h4
-12 file2_h5
-12 file3
-12 file3_h1=
-12 file3_h2
-12 file3_h3
-12 file3_h4
-12 file3_h5
-0 file= 4
-0 file4_h1
-0 file4_h2
-0 file4_h3
-0 file4_h4
-0 file4_h5
= -0 file5
-0 file5_h1
-0 file5_h2
-0 file5_h3
-0 file5_h4
-0 = file5_h5
-0 file6
-0 file6_h1
-0 file6_h2
-0 file6_h3
-0 fil= e6_h4
-0 file6_h5
-0 file7
-0 file7_h1
-0 file7_h2
-0 file7_h3
-0 = file7_h4
-0 file7_h5
-0 file8
-0 file8_h1
-0 file8_h2
-0 fil= e8_h3
-0 file8_h4
-0 file8_h5
-0 file9
-0 file9_h1
-0 file9_= h2
-0 file9_h3
-0 file9_h4
-0 file9_h5
-
-restoring from df.level4=
-Restoring cumumlative from file...
-xfsrestore=A0 -f DUMP_FILE -r R= ESTORE_DIR
-xfsrestore: using file dump (drive_simple) strategy
-xfsr= estore: searching media for dump
-xfsrestore: examining media file 0
-xfsrestore: dump description:
-= xfsrestore: hostname: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT
= -xfsrestore: volume: SCRATCH_DEV
-xfsrestore: session time: TIME
-xfsrestore: level: 4
-xfsrestore: session label: "stress_064"=
-xfsrestore: media label: "stress_tape_media"
-xfsrestore:= file system ID: ID
-xfsrestore: session id: ID
-xfsrestore: media ID= : ID
-xfsrestore: using online session inventory
-xfsrestore: searching media= for directory dump
-xfsrestore: reading directories
-xfsrestore: 2 d= irectories and 55 entries processed
-xfsrestore: directory post-processi= ng
-xfsrestore: restoring non-directory files
-xfsrestore: restore complete= : SECS seconds elapsed
-xfsrestore: Restore Status: SUCCESS
-ls -l re= store_dir
-12 file1
-12 file1_h1
-12 file1_h2
-12 file1_h3
-12 file1_h4
-12 file1_h5
-12 file2
-12 file2_h1
-12 file2_h2-12 file2_h3
-12 file2_h4
-12 file2_h5
-12 file3
-12 file3_h1=
-12 file3_h2
-12 file3_h3
-12 file3_h4
-12 file3_h5
-12 fil= e4
-12 file4_h1
-12 file4_h2
-12 file4_h3
-12 file4_h4
-12 file4_h= 5
-0 file5
-0 file5_h1
-0 file5_h2
-0 file5_h3
-0 file5_h4-0 file5_h5
-0 file6
-0 file6_h1
-0 file6_h2
-0 file6_h3
-0 file6_h4
-0 file6_h5
-0 file7
-0 file7_h1
-0 file7_h2
-0 = file7_h3
-0 file7_h4
-0 file7_h5
-0 file8
-0 file8_h1
-0 fil= e8_h2
-0 file8_h3
-0 file8_h4
-0 file8_h5
-0 file9
-0 file9_= h1
-0 file9_h2
-0 file9_h3
-0 file9_h4
-0 file9_h5
-
-restoring= from df.level5
-Restoring cumumlative from file...
-xfsrestore=A0 -f= DUMP_FILE -r RESTORE_DIR
-xfsrestore: using file dump (drive_simple) st= rategy
-xfsrestore: searching media for dump
-xfsrestore: examining media file = 0
-xfsrestore: dump description:
-xfsrestore: hostname: HOSTNAME
= -xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME
-xfsrestore: level: 5
-xfsrestore: se= ssion label: "stress_064"
-xfsrestore: media label: "stre= ss_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: sess= ion id: ID
-xfsrestore: media ID: ID
-xfsrestore: using online session inventory-xfsrestore: searching media for directory dump
-xfsrestore: reading di= rectories
-xfsrestore: 2 directories and 55 entries processed
-xfsres= tore: directory post-processing
-xfsrestore: restoring non-directory files
-xfsrestore: restore complete= : SECS seconds elapsed
-xfsrestore: Restore Status: SUCCESS
-ls -l re= store_dir
-12 file1
-12 file1_h1
-12 file1_h2
-12 file1_h3
-12 file1_h4
-12 file1_h5
-12 file2
-12 file2_h1
-12 file2_h2-12 file2_h3
-12 file2_h4
-12 file2_h5
-12 file3
-12 file3_h1=
-12 file3_h2
-12 file3_h3
-12 file3_h4
-12 file3_h5
-12 fil= e4
-12 file4_h1
-12 file4_h2
-12 file4_h3
-12 file4_h4
-12 file4_h= 5
-12 file5
-12 file5_h1
-12 file5_h2
-12 file5_h3
-12 file5= _h4
-12 file5_h5
-0 file6
-0 file6_h1
-0 file6_h2
-0 file6_h= 3
-0 file6_h4
-0 file6_h5
-0 file7
-0 file7_h1
-0 file7_h2
-0 = file7_h3
-0 file7_h4
-0 file7_h5
-0 file8
-0 file8_h1
-0 fil= e8_h2
-0 file8_h3
-0 file8_h4
-0 file8_h5
-0 file9
-0 file9_= h1
-0 file9_h2
-0 file9_h3
-0 file9_h4
-0 file9_h5
-
-restoring= from df.level6
-Restoring cumumlative from file...
-xfsrestore=A0 -f= DUMP_FILE -r RESTORE_DIR
-xfsrestore: using file dump (drive_simple) st= rategy
-xfsrestore: searching media for dump
-xfsrestore: examining media file = 0
-xfsrestore: dump description:
-xfsrestore: hostname: HOSTNAME
= -xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME
-xfsrestore: level: 6
-xfsrestore: se= ssion label: "stress_064"
-xfsrestore: media label: "stre= ss_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: sess= ion id: ID
-xfsrestore: media ID: ID
-xfsrestore: using online session inventory-xfsrestore: searching media for directory dump
-xfsrestore: reading di= rectories
-xfsrestore: 2 directories and 55 entries processed
-xfsres= tore: directory post-processing
-xfsrestore: restoring non-directory files
-xfsrestore: restore complete= : SECS seconds elapsed
-xfsrestore: Restore Status: SUCCESS
-ls -l re= store_dir
-12 file1
-12 file1_h1
-12 file1_h2
-12 file1_h3
-12 file1_h4
-12 file1_h5
-12 file2
-12 file2_h1
-12 file2_h2-12 file2_h3
-12 file2_h4
-12 file2_h5
-12 file3
-12 file3_h1=
-12 file3_h2
-12 file3_h3
-12 file3_h4
-12 file3_h5
-12 fil= e4
-12 file4_h1
-12 file4_h2
-12 file4_h3
-12 file4_h4
-12 file4_h= 5
-12 file5
-12 file5_h1
-12 file5_h2
-12 file5_h3
-12 file5= _h4
-12 file5_h5
-12 file6
-12 file6_h1
-12 file6_h2
-12 fil= e6_h3
-12 file6_h4
-12 file6_h5
-0 file7
-0 file7_h1
-0 file7_h2
-= 0 file7_h3
-0 file7_h4
-0 file7_h5
-0 file8
-0 file8_h1
-0 f= ile8_h2
-0 file8_h3
-0 file8_h4
-0 file8_h5
-0 file9
-0 file= 9_h1
-0 file9_h2
-0 file9_h3
-0 file9_h4
-0 file9_h5
-
-restoring= from df.level7
-Restoring cumumlative from file...
-xfsrestore=A0 -f= DUMP_FILE -r RESTORE_DIR
-xfsrestore: using file dump (drive_simple) st= rategy
-xfsrestore: searching media for dump
-xfsrestore: examining media file = 0
-xfsrestore: dump description:
-xfsrestore: hostname: HOSTNAME
= -xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME
-xfsrestore: level: 7
-xfsrestore: se= ssion label: "stress_064"
-xfsrestore: media label: "stre= ss_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: sess= ion id: ID
-xfsrestore: media ID: ID
-xfsrestore: using online session inventory-xfsrestore: searching media for directory dump
-xfsrestore: reading di= rectories
-xfsrestore: 2 directories and 55 entries processed
-xfsres= tore: directory post-processing
-xfsrestore: restoring non-directory files
-xfsrestore: restore complete= : SECS seconds elapsed
-xfsrestore: Restore Status: SUCCESS
-ls -l re= store_dir
-12 file1
-12 file1_h1
-12 file1_h2
-12 file1_h3
-12 file1_h4
-12 file1_h5
-12 file2
-12 file2_h1
-12 file2_h2-12 file2_h3
-12 file2_h4
-12 file2_h5
-12 file3
-12 file3_h1=
-12 file3_h2
-12 file3_h3
-12 file3_h4
-12 file3_h5
-12 fil= e4
-12 file4_h1
-12 file4_h2
-12 file4_h3
-12 file4_h4
-12 file4_h= 5
-12 file5
-12 file5_h1
-12 file5_h2
-12 file5_h3
-12 file5= _h4
-12 file5_h5
-12 file6
-12 file6_h1
-12 file6_h2
-12 fil= e6_h3
-12 file6_h4
-12 file6_h5
-12 file7
-12 file7_h1
-12 file7_h2-12 file7_h3
-12 file7_h4
-12 file7_h5
-0 file8
-0 file8_h1-0 file8_h2
-0 file8_h3
-0 file8_h4
-0 file8_h5
-0 file9
-0 file9_h1
-0 file9_h2
-0 file9_h3
-0 file9_h4
-0 file9_h5
= -
-restoring from df.level8
-Restoring cumumlative from file...
-x= fsrestore=A0 -f DUMP_FILE -r RESTORE_DIR
-xfsrestore: using file dump (d= rive_simple) strategy
-xfsrestore: searching media for dump
-xfsrestore: examining media file = 0
-xfsrestore: dump description:
-xfsrestore: hostname: HOSTNAME
= -xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME
-xfsrestore: level: 8
-xfsrestore: se= ssion label: "stress_064"
-xfsrestore: media label: "stre= ss_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: sess= ion id: ID
-xfsrestore: media ID: ID
-xfsrestore: using online session inventory-xfsrestore: searching media for directory dump
-xfsrestore: reading di= rectories
-xfsrestore: 2 directories and 55 entries processed
-xfsres= tore: directory post-processing
-xfsrestore: restoring non-directory files
-xfsrestore: restore complete= : SECS seconds elapsed
-xfsrestore: Restore Status: SUCCESS
-ls -l re= store_dir
-12 file1
-12 file1_h1
-12 file1_h2
-12 file1_h3
-12 file1_h4
-12 file1_h5
-12 file2
-12 file2_h1
-12 file2_h2-12 file2_h3
-12 file2_h4
-12 file2_h5
-12 file3
-12 file3_h1=
-12 file3_h2
-12 file3_h3
-12 file3_h4
-12 file3_h5
-12 fil= e4
-12 file4_h1
-12 file4_h2
-12 file4_h3
-12 file4_h4
-12 file4_h= 5
-12 file5
-12 file5_h1
-12 file5_h2
-12 file5_h3
-12 file5= _h4
-12 file5_h5
-12 file6
-12 file6_h1
-12 file6_h2
-12 fil= e6_h3
-12 file6_h4
-12 file6_h5
-12 file7
-12 file7_h1
-12 file7_h2-12 file7_h3
-12 file7_h4
-12 file7_h5
-12 file8
-12 file8_h1=
-12 file8_h2
-12 file8_h3
-12 file8_h4
-12 file8_h5
-0 file= 9
-0 file9_h1
-0 file9_h2
-0 file9_h3
-0 file9_h4
-0 file9_h5
= -
-restoring from df.level9
-Restoring cumumlative from file...
-x= fsrestore=A0 -f DUMP_FILE -r RESTORE_DIR
-xfsrestore: using file dump (d= rive_simple) strategy
-xfsrestore: searching media for dump
-xfsrestore: examining media file = 0
-xfsrestore: dump description:
-xfsrestore: hostname: HOSTNAME
= -xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME
-xfsrestore: level: 9
-xfsrestore: se= ssion label: "stress_064"
-xfsrestore: media label: "stre= ss_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: sess= ion id: ID
-xfsrestore: media ID: ID
-xfsrestore: using online session inventory-xfsrestore: searching media for directory dump
-xfsrestore: reading di= rectories
-xfsrestore: 2 directories and 55 entries processed
-xfsres= tore: directory post-processing
-xfsrestore: restoring non-directory files
-xfsrestore: restore complete= : SECS seconds elapsed
-xfsrestore: Restore Status: SUCCESS
-ls -l re= store_dir
-12 file1
-12 file1_h1
-12 file1_h2
-12 file1_h3
-12 file1_h4
-12 file1_h5
-12 file2
-12 file2_h1
-12 file2_h2-12 file2_h3
-12 file2_h4
-12 file2_h5
-12 file3
-12 file3_h1=
-12 file3_h2
-12 file3_h3
-12 file3_h4
-12 file3_h5
-12 fil= e4
-12 file4_h1
-12 file4_h2
-12 file4_h3
-12 file4_h4
-12 file4_h= 5
-12 file5
-12 file5_h1
-12 file5_h2
-12 file5_h3
-12 file5= _h4
-12 file5_h5
-12 file6
-12 file6_h1
-12 file6_h2
-12 fil= e6_h3
-12 file6_h4
-12 file6_h5
-12 file7
-12 file7_h1
-12 file7_h2-12 file7_h3
-12 file7_h4
-12 file7_h5
-12 file8
-12 file8_h1=
-12 file8_h2
-12 file8_h3
-12 file8_h4
-12 file8_h5
-12 fil= e9
-12 file9_h1
-12 file9_h2
-12 file9_h3
-12 file9_h4
-12 file9_h= 5
+umount: /home/manish/Projects/xfstests/sdb4: device is busy.
+=A0= =A0=A0=A0=A0=A0=A0 (In some cases useful info about processes that use
+= =A0=A0=A0=A0=A0=A0=A0=A0 the device is found by lsof(8) or fuser(1))
+failed to unmount /dev/sda6
+_check_xfs_filesystem: filesystem on /dev/= sda6 has dirty log (see 064.full)
+_check_xfs_filesystem: filesystem on = /dev/sda6 is inconsistent (c) (see 064.full)
+_check_xfs_filesystem: fil= esystem on /dev/sda6 is inconsistent (r) (see 064.full)
065=A0=A0=A0 =A0[failed, exit status 1] - output mismatch (see 065.out.bad)=
--- 065.out=A0=A0=A0 2011-05-11 22:32:24.000000000 +0530
+++ 065.out= .bad=A0=A0=A0 2011-06-15 14:43:50.945421073 +0530
@@ -1,832 +1,13 @@
= =A0QA output created by 065
-Do the incremental dumps
-Listing of what files we have at level 0:
= -dumpdir/addeddir1 XXX drwxr-xr-x 0,0
-dumpdir/addeddir2 XXX drwxr-xr-x = 0,0
-dumpdir/addeddir3 XXX drwxr-xr-x 0,0
-dumpdir/addeddir3/addedfil= e4 5 -rw-r--r-- 0,0
-dumpdir/addeddir4 XXX drwxr-xr-x 0,0
-dumpdir/addeddir4/addedfile5 5 -r= w-r--r-- 0,0
-dumpdir/addedfile0 5 -rw-r--r-- 0,0
-dumpdir/addedfile1= 5 -rw-r--r-- 0,0
-dumpdir/addedfile2 5 -rw-r--r-- 0,0
-dumpdir/added= file3 5 -rw-r--r-- 0,0
-Dumping to file...
-xfsdump=A0 -l0 -f DUMP_FILE -M stress_tape_media -L= stress_065 SCRATCH_MNT
-xfsdump: using file dump (drive_simple) strateg= y
-xfsdump: level 0 dump of HOSTNAME:SCRATCH_MNT
-xfsdump: dump date:= DATE
-xfsdump: session id: ID
-xfsdump: session label: "stress_065"=
-xfsdump: ino map <PHASES>
-xfsdump: ino map construction comp= lete
-xfsdump: estimated dump size: NUM bytes
-xfsdump: /var/xfsdump/= inventory created
-xfsdump: creating dump session media file 0 (media 0, file 0)
-xfsdump:= dumping ino map
-xfsdump: dumping directories
-xfsdump: dumping non-= directory files
-xfsdump: ending media file
-xfsdump: media file size= NUM bytes
-xfsdump: dump size (non-dir files) : NUM bytes
-xfsdump: dump complete:= SECS seconds elapsed
-xfsdump: Dump Status: SUCCESS
-Listing of what= files we have at level 1:
-dumpdir/addeddir1 XXX drwxr-xr-x 0,0
-dumpdir/addeddir4 XXX drwxr-xr-x 0,0
-dumpdir/addeddir4/addedfile5 5 -r= w-r--r-- 0,0
-dumpdir/addedfile0 5 -rw-r--r-- 0,0
-dumpdir/addedfile1= 5 -rw-r--r-- 0,0
-dumpdir/addedfile3 5 -rw-r--r-- 0,0
-Dumping to fi= le...
-xfsdump=A0 -l1 -f DUMP_FILE -M stress_tape_media -L stress_065 SCRATCH_MNT=
-xfsdump: using file dump (drive_simple) strategy
-xfsdump: level 1 = incremental dump of HOSTNAME:SCRATCH_MNT based on level 0 dump begun DATE -xfsdump: dump date: DATE
-xfsdump: session id: ID
-xfsdump: session = label: "stress_065"
-xfsdump: ino map <PHASES>
-xfsdu= mp: ino map construction complete
-xfsdump: estimated dump size: NUM byt= es
-xfsdump: creating dump session media file 0 (media 0, file 0)
-xfsdump:= dumping ino map
-xfsdump: dumping directories
-xfsdump: dumping non-= directory files
-xfsdump: ending media file
-xfsdump: media file size= NUM bytes
-xfsdump: dump size (non-dir files) : NUM bytes
-xfsdump: dump complete:= SECS seconds elapsed
-xfsdump: Dump Status: SUCCESS
-Listing of what= files we have at level 2:
-dumpdir/addeddir2 XXX drwxr-xr-x 0,0
-dumpdir/addeddir6 XXX drwxr-xr-x 0,0
-dumpdir/addeddir6/addedfile4 5 -r= w-r--r-- 0,0
-dumpdir/addedfile0 5 -rw-r--r-- 0,0
-dumpdir/addedfile2= 5 -rw-r--r-- 0,0
-dumpdir/addedfile3 5 -rw-r--r-- 0,0
-Dumping to fi= le...
-xfsdump=A0 -l2 -f DUMP_FILE -M stress_tape_media -L stress_065 SCRATCH_MNT=
-xfsdump: using file dump (drive_simple) strategy
-xfsdump: level 2 = incremental dump of HOSTNAME:SCRATCH_MNT based on level 1 dump begun DATE -xfsdump: dump date: DATE
-xfsdump: session id: ID
-xfsdump: session = label: "stress_065"
-xfsdump: ino map <PHASES>
-xfsdu= mp: ino map construction complete
-xfsdump: estimated dump size: NUM byt= es
-xfsdump: creating dump session media file 0 (media 0, file 0)
-xfsdump:= dumping ino map
-xfsdump: dumping directories
-xfsdump: dumping non-= directory files
-xfsdump: ending media file
-xfsdump: media file size= NUM bytes
-xfsdump: dump size (non-dir files) : NUM bytes
-xfsdump: dump complete:= SECS seconds elapsed
-xfsdump: Dump Status: SUCCESS
-Listing of what= files we have at level 3:
-dumpdir/addeddir2 XXX drwxr-xr-x 0,0
-dumpdir/addeddir6 XXX drwxr-xr-x 0,0
-dumpdir/addeddir6/addedfile4 5 -r= w-r--r-- 0,0
-dumpdir/addedfile0 5 -rw-r--r-- 0,0
-dumpdir/addedfile2= 5 -rw-r--r-- 0,0
-dumpdir/addedfile3 5 -rw-r--r-- 0,0
-dumpdir/linkf= ile0 5 -rw-r--r-- 0,0
-dumpdir/linkfile0_1 5 -rw-r--r-- 0,0
-dumpdir/linkfile2 5 -rw-r--r-- 0,= 0
-dumpdir/linkfile64 5 -rw-r--r-- 0,0
-Dumping to file...
-xfsdum= p=A0 -l3 -f DUMP_FILE -M stress_tape_media -L stress_065 SCRATCH_MNT
-xf= sdump: using file dump (drive_simple) strategy
-xfsdump: level 3 incremental dump of HOSTNAME:SCRATCH_MNT based on level 2= dump begun DATE
-xfsdump: dump date: DATE
-xfsdump: session id: ID-xfsdump: session label: "stress_065"
-xfsdump: ino map <= PHASES>
-xfsdump: ino map construction complete
-xfsdump: estimated dump size: N= UM bytes
-xfsdump: creating dump session media file 0 (media 0, file 0)<= br>-xfsdump: dumping ino map
-xfsdump: dumping directories
-xfsdump: = dumping non-directory files
-xfsdump: ending media file
-xfsdump: media file size NUM bytes
-xfsd= ump: dump size (non-dir files) : NUM bytes
-xfsdump: dump complete: SECS= seconds elapsed
-xfsdump: Dump Status: SUCCESS
-Listing of what file= s we have at level 4:
-dumpdir/addeddir2 XXX drwxr-xr-x 0,0
-dumpdir/addeddir6 XXX drwxr-xr-x = 0,0
-dumpdir/addedfile0 5 -rw-r--r-- 0,0
-dumpdir/addedfile3 5 -rw-r-= -r-- 0,0
-dumpdir/linkfile0_1 5 -rw-r--r-- 0,0
-dumpdir/linkfile2 5 -= rw-r--r-- 0,0
-Dumping to file...
-xfsdump=A0 -l4 -f DUMP_FILE -M stress_tape_media -L= stress_065 SCRATCH_MNT
-xfsdump: using file dump (drive_simple) strateg= y
-xfsdump: level 4 incremental dump of HOSTNAME:SCRATCH_MNT based on le= vel 3 dump begun DATE
-xfsdump: dump date: DATE
-xfsdump: session id: ID
-xfsdump: session = label: "stress_065"
-xfsdump: ino map <PHASES>
-xfsdu= mp: ino map construction complete
-xfsdump: estimated dump size: NUM byt= es
-xfsdump: creating dump session media file 0 (media 0, file 0)
-xfsdump:= dumping ino map
-xfsdump: dumping directories
-xfsdump: dumping non-= directory files
-xfsdump: ending media file
-xfsdump: media file size= NUM bytes
-xfsdump: dump size (non-dir files) : NUM bytes
-xfsdump: dump complete:= SECS seconds elapsed
-xfsdump: Dump Status: SUCCESS
-Listing of what= files we have at level 5:
-dumpdir/addedfile6 5 -rw-r--r-- 0,0
-dump= dir/linkfile6_1 5 -rw-r--r-- 0,0
-dumpdir/linkfile6_2 5 -rw-r--r-- 0,0
-dumpdir/linkfile6_3 5 -rw-r--r-- = 0,0
-Dumping to file...
-xfsdump=A0 -l5 -f DUMP_FILE -M stress_tape_m= edia -L stress_065 SCRATCH_MNT
-xfsdump: using file dump (drive_simple) = strategy
-xfsdump: level 5 incremental dump of HOSTNAME:SCRATCH_MNT based on level 4= dump begun DATE
-xfsdump: dump date: DATE
-xfsdump: session id: ID-xfsdump: session label: "stress_065"
-xfsdump: ino map <= PHASES>
-xfsdump: ino map construction complete
-xfsdump: estimated dump size: N= UM bytes
-xfsdump: creating dump session media file 0 (media 0, file 0)<= br>-xfsdump: dumping ino map
-xfsdump: dumping directories
-xfsdump: = dumping non-directory files
-xfsdump: ending media file
-xfsdump: media file size NUM bytes
-xfsd= ump: dump size (non-dir files) : NUM bytes
-xfsdump: dump complete: SECS= seconds elapsed
-xfsdump: Dump Status: SUCCESS
-Listing of what file= s we have at level 6:
-dumpdir/addedfile6_mv 5 -rw-r--r-- 0,0
-dumpdir/linkfile6_mv_1 5 -rw-r-= -r-- 0,0
-dumpdir/linkfile6_mv_2 5 -rw-r--r-- 0,0
-dumpdir/linkfile6_= mv_3 5 -rw-r--r-- 0,0
-Dumping to file...
-xfsdump=A0 -l6 -f DUMP_FIL= E -M stress_tape_media -L stress_065 SCRATCH_MNT
-xfsdump: using file dump (drive_simple) strategy
-xfsdump: level 6 incr= emental dump of HOSTNAME:SCRATCH_MNT based on level 5 dump begun DATE
-x= fsdump: dump date: DATE
-xfsdump: session id: ID
-xfsdump: session la= bel: "stress_065"
-xfsdump: ino map <PHASES>
-xfsdump: ino map construction complete=
-xfsdump: estimated dump size: NUM bytes
-xfsdump: creating dump ses= sion media file 0 (media 0, file 0)
-xfsdump: dumping ino map
-xfsdum= p: dumping directories
-xfsdump: dumping non-directory files
-xfsdump: ending media file
-xf= sdump: media file size NUM bytes
-xfsdump: dump size (non-dir files) : N= UM bytes
-xfsdump: dump complete: SECS seconds elapsed
-xfsdump: Dump= Status: SUCCESS
-Listing of what files we have at level 7:
-dumpdir/addedfile6_mv 5 -rw-= r--r-- 0,0
-dumpdir/linkfile6_mv_1 5 -rw-r--r-- 0,0
-dumpdir/linkfile= 6_mv_2 5 -rw-r--r-- 0,0
-dumpdir/linkfile6_mv_3 5 -rw-r--r-- 0,0
-Dumping to file...
-xfsdump=A0 -l7 -f DUMP_FILE -M stress_tape_media -L= stress_065 SCRATCH_MNT
-xfsdump: using file dump (drive_simple) strateg= y
-xfsdump: level 7 incremental dump of HOSTNAME:SCRATCH_MNT based on le= vel 6 dump begun DATE
-xfsdump: dump date: DATE
-xfsdump: session id: ID
-xfsdump: session = label: "stress_065"
-xfsdump: ino map <PHASES>
-xfsdu= mp: ino map construction complete
-xfsdump: estimated dump size: NUM byt= es
-xfsdump: creating dump session media file 0 (media 0, file 0)
-xfsdump:= dumping ino map
-xfsdump: dumping directories
-xfsdump: dumping non-= directory files
-xfsdump: ending media file
-xfsdump: media file size= NUM bytes
-xfsdump: dump size (non-dir files) : NUM bytes
-xfsdump: dump complete:= SECS seconds elapsed
-xfsdump: Dump Status: SUCCESS
-Listing of what= files we have at level 8:
-dumpdir/addedfile6_mv 5 -rw-r--r-- 0,0
-dumpdir/linkfile6_mv_1 5 -rw-r--r-- 0,0
-dumpdir/linkfile6_mv_2 5 -rw-r= --r-- 0,0
-dumpdir/linkfile6_mv_3 5 -rw-r--r-- 0,0
-Dumping to file..= .
-xfsdump=A0 -l8 -f DUMP_FILE -M stress_tape_media -L stress_065 SCRATC= H_MNT
-xfsdump: using file dump (drive_simple) strategy
-xfsdump: level 8 incr= emental dump of HOSTNAME:SCRATCH_MNT based on level 7 dump begun DATE
-x= fsdump: dump date: DATE
-xfsdump: session id: ID
-xfsdump: session la= bel: "stress_065"
-xfsdump: ino map <PHASES>
-xfsdump: ino map construction complete=
-xfsdump: estimated dump size: NUM bytes
-xfsdump: creating dump ses= sion media file 0 (media 0, file 0)
-xfsdump: dumping ino map
-xfsdum= p: dumping directories
-xfsdump: dumping non-directory files
-xfsdump: ending media file
-xf= sdump: media file size NUM bytes
-xfsdump: dump size (non-dir files) : N= UM bytes
-xfsdump: dump complete: SECS seconds elapsed
-xfsdump: Dump= Status: SUCCESS
-Look at what files are contained in the inc. dump
-
-restoring from = df.level0
-Contents of dump ...
-xfsrestore=A0 -f DUMP_FILE -t
-xf= srestore: using file dump (drive_simple) strategy
-xfsrestore: searching= media for dump
-xfsrestore: examining media file 0
-xfsrestore: dump description:
-= xfsrestore: hostname: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT
= -xfsrestore: volume: SCRATCH_DEV
-xfsrestore: session time: TIME
-xfsrestore: level: 0
-xfsrestore: session label: "stress_065"=
-xfsrestore: media label: "stress_tape_media"
-xfsrestore:= file system ID: ID
-xfsrestore: session id: ID
-xfsrestore: media ID= : ID
-xfsrestore: using online session inventory
-xfsrestore: searching media= for directory dump
-xfsrestore: reading directories
-xfsrestore: 6 d= irectories and 11 entries processed
-xfsrestore: directory post-processi= ng
-xfsrestore: reading non-directory files
-xfsrestore: table of contents = display complete: SECS seconds elapsed
-xfsrestore: Restore Status: SUCC= ESS
-
-dumpdir/addeddir3/addedfile4
-dumpdir/addeddir4/addedfile5<= br> -dumpdir/addedfile0
-dumpdir/addedfile1
-dumpdir/addedfile2
-dumpd= ir/addedfile3
-
-restoring from df.level1
-Contents of dump ...-xfsrestore=A0 -f DUMP_FILE -t
-xfsrestore: using file dump (drive_simp= le) strategy
-xfsrestore: searching media for dump
-xfsrestore: examining media file = 0
-xfsrestore: dump description:
-xfsrestore: hostname: HOSTNAME
= -xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME
-xfsrestore: level: 1
-xfsrestore: se= ssion label: "stress_065"
-xfsrestore: media label: "stre= ss_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: sess= ion id: ID
-xfsrestore: media ID: ID
-xfsrestore: using online session inventory-xfsrestore: searching media for directory dump
-xfsrestore: reading di= rectories
-xfsrestore: 2 directories and 6 entries processed
-xfsrest= ore: directory post-processing
-xfsrestore: reading non-directory files
-xfsrestore: table of contents = display complete: SECS seconds elapsed
-xfsrestore: Restore Status: SUCC= ESS
-
-
-restoring from df.level2
-Contents of dump ...
-xfsrestore=A0 -f DUMP_FILE -t
-xfsrestore: using file dump (drive_simpl= e) strategy
-xfsrestore: searching media for dump
-xfsrestore: examin= ing media file 0
-xfsrestore: dump description:
-xfsrestore: hostnam= e: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV-xfsrestore: session time: TIME
-xfsrestore: level: 2
-xfsrestore: = session label: "stress_065"
-xfsrestore: media label: "st= ress_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: session id: ID
-xfsresto= re: media ID: ID
-xfsrestore: using online session inventory
-xfsrest= ore: searching media for directory dump
-xfsrestore: reading directories=
-xfsrestore: 4 directories and 7 entries processed
-xfsrestore: director= y post-processing
-xfsrestore: reading non-directory files
-xfsrestor= e: table of contents display complete: SECS seconds elapsed
-xfsrestore:= Restore Status: SUCCESS
-
-dumpdir/addeddir6/addedfile4
-dumpdir/addedfile2
-
-restorin= g from df.level3
-Contents of dump ...
-xfsrestore=A0 -f DUMP_FILE -t=
-xfsrestore: using file dump (drive_simple) strategy
-xfsrestore: se= arching media for dump
-xfsrestore: examining media file 0
-xfsrestore: dump description:
-= xfsrestore: hostname: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT
= -xfsrestore: volume: SCRATCH_DEV
-xfsrestore: session time: TIME
-xfsrestore: level: 3
-xfsrestore: session label: "stress_065"=
-xfsrestore: media label: "stress_tape_media"
-xfsrestore:= file system ID: ID
-xfsrestore: session id: ID
-xfsrestore: media ID= : ID
-xfsrestore: using online session inventory
-xfsrestore: searching media= for directory dump
-xfsrestore: reading directories
-xfsrestore: 3 d= irectories and 11 entries processed
-xfsrestore: directory post-processi= ng
-xfsrestore: reading non-directory files
-xfsrestore: table of contents = display complete: SECS seconds elapsed
-xfsrestore: Restore Status: SUCC= ESS
-
-dumpdir/addeddir6/addedfile4
-dumpdir/addedfile0
-dumpdi= r/addedfile2
-dumpdir/linkfile0
-dumpdir/linkfile0_1
-dumpdir/linkfile2
-dumpdi= r/linkfile64
-
-restoring from df.level4
-Contents of dump ...
= -xfsrestore=A0 -f DUMP_FILE -t
-xfsrestore: using file dump (drive_simpl= e) strategy
-xfsrestore: searching media for dump
-xfsrestore: examining media file = 0
-xfsrestore: dump description:
-xfsrestore: hostname: HOSTNAME
= -xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME
-xfsrestore: level: 4
-xfsrestore: se= ssion label: "stress_065"
-xfsrestore: media label: "stre= ss_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: sess= ion id: ID
-xfsrestore: media ID: ID
-xfsrestore: using online session inventory-xfsrestore: searching media for directory dump
-xfsrestore: reading di= rectories
-xfsrestore: 3 directories and 7 entries processed
-xfsrest= ore: directory post-processing
-xfsrestore: reading non-directory files
-xfsrestore: table of contents = display complete: SECS seconds elapsed
-xfsrestore: Restore Status: SUCC= ESS
-
-dumpdir/addedfile0
-dumpdir/linkfile0_1
-dumpdir/linkfil= e2
-
-restoring from df.level5
-Contents of dump ...
-xfsrestore=A0 -= f DUMP_FILE -t
-xfsrestore: using file dump (drive_simple) strategy
-= xfsrestore: searching media for dump
-xfsrestore: examining media file 0=
-xfsrestore: dump description:
-xfsrestore: hostname: HOSTNAME
-xfsr= estore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV
-xf= srestore: session time: TIME
-xfsrestore: level: 5
-xfsrestore: sessi= on label: "stress_065"
-xfsrestore: media label: "stress_tape_media"
-xfsrestore: fil= e system ID: ID
-xfsrestore: session id: ID
-xfsrestore: media ID: ID=
-xfsrestore: using online session inventory
-xfsrestore: searching m= edia for directory dump
-xfsrestore: reading directories
-xfsrestore: 2 directories and 5 entrie= s processed
-xfsrestore: directory post-processing
-xfsrestore: readi= ng non-directory files
-xfsrestore: table of contents display complete: = SECS seconds elapsed
-xfsrestore: Restore Status: SUCCESS
-
-dumpdir/addedfile6
-dumpdi= r/linkfile6_1
-dumpdir/linkfile6_2
-dumpdir/linkfile6_3
-
-rest= oring from df.level6
-Contents of dump ...
-xfsrestore=A0 -f DUMP_FIL= E -t
-xfsrestore: using file dump (drive_simple) strategy
-xfsrestore: search= ing media for dump
-xfsrestore: examining media file 0
-xfsrestore: d= ump description:
-xfsrestore: hostname: HOSTNAME
-xfsrestore: mount = point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV
-xfsrestore: session time: TIME
-xfs= restore: level: 6
-xfsrestore: session label: "stress_065"
= -xfsrestore: media label: "stress_tape_media"
-xfsrestore: fil= e system ID: ID
-xfsrestore: session id: ID
-xfsrestore: media ID: ID
-xfsrestore: us= ing online session inventory
-xfsrestore: searching media for directory = dump
-xfsrestore: reading directories
-xfsrestore: 2 directories and = 5 entries processed
-xfsrestore: directory post-processing
-xfsrestore: reading non-director= y files
-xfsrestore: table of contents display complete: SECS seconds el= apsed
-xfsrestore: Restore Status: SUCCESS
-
-dumpdir/addedfile6_m= v
-dumpdir/linkfile6_mv_1
-dumpdir/linkfile6_mv_2
-dumpdir/linkfile6_mv= _3
-
-restoring from df.level7
-Contents of dump ...
-xfsrestor= e=A0 -f DUMP_FILE -t
-xfsrestore: using file dump (drive_simple) strateg= y
-xfsrestore: searching media for dump
-xfsrestore: examining media file = 0
-xfsrestore: dump description:
-xfsrestore: hostname: HOSTNAME
= -xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME
-xfsrestore: level: 7
-xfsrestore: se= ssion label: "stress_065"
-xfsrestore: media label: "stre= ss_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: sess= ion id: ID
-xfsrestore: media ID: ID
-xfsrestore: using online session inventory-xfsrestore: searching media for directory dump
-xfsrestore: reading di= rectories
-xfsrestore: 0 directories and 0 entries processed
-xfsrest= ore: directory post-processing
-xfsrestore: table of contents display complete: SECS seconds elapsed
-x= fsrestore: Restore Status: SUCCESS
-
-
-restoring from df.level8-Contents of dump ...
-xfsrestore=A0 -f DUMP_FILE -t
-xfsrestore: u= sing file dump (drive_simple) strategy
-xfsrestore: searching media for dump
-xfsrestore: examining media file = 0
-xfsrestore: dump description:
-xfsrestore: hostname: HOSTNAME
= -xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME
-xfsrestore: level: 8
-xfsrestore: se= ssion label: "stress_065"
-xfsrestore: media label: "stre= ss_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: sess= ion id: ID
-xfsrestore: media ID: ID
-xfsrestore: using online session inventory-xfsrestore: searching media for directory dump
-xfsrestore: reading di= rectories
-xfsrestore: 0 directories and 0 entries processed
-xfsrest= ore: directory post-processing
-xfsrestore: table of contents display complete: SECS seconds elapsed
-x= fsrestore: Restore Status: SUCCESS
-
-Do the cumulative restores
-=
-restoring from df.level0
-Restoring cumumlative from file...
-xfsrestore=A0 -f DUMP_FILE -r RESTORE_DIR
-xfsrestore: using file dump = (drive_simple) strategy
-xfsrestore: searching media for dump
-xfsres= tore: examining media file 0
-xfsrestore: dump description:
-xfsrest= ore: hostname: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV-xfsrestore: session time: TIME
-xfsrestore: level: 0
-xfsrestore: = session label: "stress_065"
-xfsrestore: media label: "st= ress_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: session id: ID
-xfsresto= re: media ID: ID
-xfsrestore: using online session inventory
-xfsrest= ore: searching media for directory dump
-xfsrestore: reading directories=
-xfsrestore: 6 directories and 11 entries processed
-xfsrestore: directo= ry post-processing
-xfsrestore: restoring non-directory files
-xfsres= tore: restore complete: SECS seconds elapsed
-xfsrestore: Restore Status= : SUCCESS
-list restore_dir
-dumpdir/addeddir1 XXX drwxr-xr-x 0,0
-dumpdir/adde= ddir2 XXX drwxr-xr-x 0,0
-dumpdir/addeddir3 XXX drwxr-xr-x 0,0
-dumpd= ir/addeddir3/addedfile4 5 -rw-r--r-- 0,0
-dumpdir/addeddir4 XXX drwxr-xr= -x 0,0
-dumpdir/addeddir4/addedfile5 5 -rw-r--r-- 0,0
-dumpdir/addedfile0 5 -rw= -r--r-- 0,0
-dumpdir/addedfile1 5 -rw-r--r-- 0,0
-dumpdir/addedfile2 = 5 -rw-r--r-- 0,0
-dumpdir/addedfile3 5 -rw-r--r-- 0,0
-
-restoring= from df.level1
-Restoring cumumlative from file...
-xfsrestore=A0 -f DUMP_FILE -r RESTO= RE_DIR
-xfsrestore: using file dump (drive_simple) strategy
-xfsresto= re: searching media for dump
-xfsrestore: examining media file 0
-xfs= restore: dump description:
-xfsrestore: hostname: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT-xfsrestore: volume: SCRATCH_DEV
-xfsrestore: session time: TIME
-xf= srestore: level: 1
-xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media"
-xfsrestore: fil= e system ID: ID
-xfsrestore: session id: ID
-xfsrestore: media ID: ID=
-xfsrestore: using online session inventory
-xfsrestore: searching m= edia for directory dump
-xfsrestore: reading directories
-xfsrestore: 2 directories and 6 entrie= s processed
-xfsrestore: directory post-processing
-xfsrestore: resto= ring non-directory files
-xfsrestore: restore complete: SECS seconds ela= psed
-xfsrestore: Restore Status: SUCCESS
-list restore_dir
-dumpdir/added= dir1 XXX drwxr-xr-x 0,0
-dumpdir/addeddir4 XXX drwxr-xr-x 0,0
-dumpdi= r/addeddir4/addedfile5 5 -rw-r--r-- 0,0
-dumpdir/addedfile0 5 -rw-r--r--= 0,0
-dumpdir/addedfile1 5 -rw-r--r-- 0,0
-dumpdir/addedfile3 5 -rw-r--r-- 0,= 0
-
-restoring from df.level2
-Restoring cumumlative from file...<= br>-xfsrestore=A0 -f DUMP_FILE -r RESTORE_DIR
-xfsrestore: using file du= mp (drive_simple) strategy
-xfsrestore: searching media for dump
-xfsrestore: examining media file = 0
-xfsrestore: dump description:
-xfsrestore: hostname: HOSTNAME
= -xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME
-xfsrestore: level: 2
-xfsrestore: se= ssion label: "stress_065"
-xfsrestore: media label: "stre= ss_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: sess= ion id: ID
-xfsrestore: media ID: ID
-xfsrestore: using online session inventory-xfsrestore: searching media for directory dump
-xfsrestore: reading di= rectories
-xfsrestore: 4 directories and 7 entries processed
-xfsrest= ore: directory post-processing
-xfsrestore: restoring non-directory files
-xfsrestore: restore complete= : SECS seconds elapsed
-xfsrestore: Restore Status: SUCCESS
-list res= tore_dir
-dumpdir/addeddir2 XXX drwxr-xr-x 0,0
-dumpdir/addeddir6 XXX= drwxr-xr-x 0,0
-dumpdir/addeddir6/addedfile4 5 -rw-r--r-- 0,0
-dumpdir/addedfile0 5 -rw= -r--r-- 0,0
-dumpdir/addedfile2 5 -rw-r--r-- 0,0
-dumpdir/addedfile3 = 5 -rw-r--r-- 0,0
-
-restoring from df.level3
-Restoring cumumlativ= e from file...
-xfsrestore=A0 -f DUMP_FILE -r RESTORE_DIR
-xfsrestore: using file dump = (drive_simple) strategy
-xfsrestore: searching media for dump
-xfsres= tore: examining media file 0
-xfsrestore: dump description:
-xfsrest= ore: hostname: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV-xfsrestore: session time: TIME
-xfsrestore: level: 3
-xfsrestore: = session label: "stress_065"
-xfsrestore: media label: "st= ress_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: session id: ID
-xfsresto= re: media ID: ID
-xfsrestore: using online session inventory
-xfsrest= ore: searching media for directory dump
-xfsrestore: reading directories=
-xfsrestore: 3 directories and 11 entries processed
-xfsrestore: directo= ry post-processing
-xfsrestore: restoring non-directory files
-xfsres= tore: restore complete: SECS seconds elapsed
-xfsrestore: Restore Status= : SUCCESS
-list restore_dir
-dumpdir/addeddir2 XXX drwxr-xr-x 0,0
-dumpdir/adde= ddir6 XXX drwxr-xr-x 0,0
-dumpdir/addeddir6/addedfile4 5 -rw-r--r-- 0,0<= br>-dumpdir/addedfile0 5 -rw-r--r-- 0,0
-dumpdir/addedfile2 5 -rw-r--r--= 0,0
-dumpdir/addedfile3 5 -rw-r--r-- 0,0
-dumpdir/linkfile0 5 -rw-r--r-- 0,0=
-dumpdir/linkfile0_1 5 -rw-r--r-- 0,0
-dumpdir/linkfile2 5 -rw-r--r-= - 0,0
-dumpdir/linkfile64 5 -rw-r--r-- 0,0
-
-restoring from df.le= vel4
-Restoring cumumlative from file...
-xfsrestore=A0 -f DUMP_FILE -r RESTO= RE_DIR
-xfsrestore: using file dump (drive_simple) strategy
-xfsresto= re: searching media for dump
-xfsrestore: examining media file 0
-xfs= restore: dump description:
-xfsrestore: hostname: HOSTNAME
-xfsrestore: mount point: SCRATCH_MNT-xfsrestore: volume: SCRATCH_DEV
-xfsrestore: session time: TIME
-xf= srestore: level: 4
-xfsrestore: session label: "stress_065" -xfsrestore: media label: "stress_tape_media"
-xfsrestore: fil= e system ID: ID
-xfsrestore: session id: ID
-xfsrestore: media ID: ID=
-xfsrestore: using online session inventory
-xfsrestore: searching m= edia for directory dump
-xfsrestore: reading directories
-xfsrestore: 3 directories and 7 entrie= s processed
-xfsrestore: directory post-processing
-xfsrestore: resto= ring non-directory files
-xfsrestore: restore complete: SECS seconds ela= psed
-xfsrestore: Restore Status: SUCCESS
-list restore_dir
-dumpdir/added= dir2 XXX drwxr-xr-x 0,0
-dumpdir/addeddir6 XXX drwxr-xr-x 0,0
-dumpdi= r/addedfile0 5 -rw-r--r-- 0,0
-dumpdir/addedfile3 5 -rw-r--r-- 0,0
-dumpdir/linkfile0_1 5 -rw-r--r-- 0,0
-dumpdir/linkfile2 5 -rw-r--r-- 0,= 0
-
-restoring from df.level5
-Restoring cumumlative from file...<= br>-xfsrestore=A0 -f DUMP_FILE -r RESTORE_DIR
-xfsrestore: using file du= mp (drive_simple) strategy
-xfsrestore: searching media for dump
-xfsrestore: examining media file = 0
-xfsrestore: dump description:
-xfsrestore: hostname: HOSTNAME
= -xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME
-xfsrestore: level: 5
-xfsrestore: se= ssion label: "stress_065"
-xfsrestore: media label: "stre= ss_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: sess= ion id: ID
-xfsrestore: media ID: ID
-xfsrestore: using online session inventory-xfsrestore: searching media for directory dump
-xfsrestore: reading di= rectories
-xfsrestore: 2 directories and 5 entries processed
-xfsrest= ore: directory post-processing
-xfsrestore: restoring non-directory files
-xfsrestore: restore complete= : SECS seconds elapsed
-xfsrestore: Restore Status: SUCCESS
-list res= tore_dir
-dumpdir/addedfile6 5 -rw-r--r-- 0,0
-dumpdir/linkfile6_1 5 = -rw-r--r-- 0,0
-dumpdir/linkfile6_2 5 -rw-r--r-- 0,0
-dumpdir/linkfile6_3 5 -rw-r--r-- = 0,0
-
-restoring from df.level6
-Restoring cumumlative from file..= .
-xfsrestore=A0 -f DUMP_FILE -r RESTORE_DIR
-xfsrestore: using file = dump (drive_simple) strategy
-xfsrestore: searching media for dump
-xfsrestore: examining media file = 0
-xfsrestore: dump description:
-xfsrestore: hostname: HOSTNAME
= -xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME
-xfsrestore: level: 6
-xfsrestore: se= ssion label: "stress_065"
-xfsrestore: media label: "stre= ss_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: sess= ion id: ID
-xfsrestore: media ID: ID
-xfsrestore: using online session inventory-xfsrestore: searching media for directory dump
-xfsrestore: reading di= rectories
-xfsrestore: 2 directories and 5 entries processed
-xfsrest= ore: directory post-processing
-xfsrestore: restoring non-directory files
-xfsrestore: restore complete= : SECS seconds elapsed
-xfsrestore: Restore Status: SUCCESS
-list res= tore_dir
-dumpdir/addedfile6_mv 5 -rw-r--r-- 0,0
-dumpdir/linkfile6_m= v_1 5 -rw-r--r-- 0,0
-dumpdir/linkfile6_mv_2 5 -rw-r--r-- 0,0
-dumpdir/linkfile6_mv_3 5 -rw-r= --r-- 0,0
-
-restoring from df.level7
-Restoring cumumlative from = file...
-xfsrestore=A0 -f DUMP_FILE -r RESTORE_DIR
-xfsrestore: using= file dump (drive_simple) strategy
-xfsrestore: searching media for dump
-xfsrestore: examining media file = 0
-xfsrestore: dump description:
-xfsrestore: hostname: HOSTNAME
= -xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME
-xfsrestore: level: 7
-xfsrestore: se= ssion label: "stress_065"
-xfsrestore: media label: "stre= ss_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: sess= ion id: ID
-xfsrestore: media ID: ID
-xfsrestore: using online session inventory-xfsrestore: searching media for directory dump
-xfsrestore: reading di= rectories
-xfsrestore: 0 directories and 0 entries processed
-xfsrest= ore: directory post-processing
-xfsrestore: restoring non-directory files
-xfsrestore: restore complete= : SECS seconds elapsed
-xfsrestore: Restore Status: SUCCESS
-list res= tore_dir
-dumpdir/addedfile6_mv 5 -rw-r--r-- 0,0
-dumpdir/linkfile6_m= v_1 5 -rw-r--r-- 0,0
-dumpdir/linkfile6_mv_2 5 -rw-r--r-- 0,0
-dumpdir/linkfile6_mv_3 5 -rw-r= --r-- 0,0
-
-restoring from df.level8
-Restoring cumumlative from = file...
-xfsrestore=A0 -f DUMP_FILE -r RESTORE_DIR
-xfsrestore: using= file dump (drive_simple) strategy
-xfsrestore: searching media for dump
-xfsrestore: examining media file = 0
-xfsrestore: dump description:
-xfsrestore: hostname: HOSTNAME
= -xfsrestore: mount point: SCRATCH_MNT
-xfsrestore: volume: SCRATCH_DEV -xfsrestore: session time: TIME
-xfsrestore: level: 8
-xfsrestore: se= ssion label: "stress_065"
-xfsrestore: media label: "stre= ss_tape_media"
-xfsrestore: file system ID: ID
-xfsrestore: sess= ion id: ID
-xfsrestore: media ID: ID
-xfsrestore: using online session inventory-xfsrestore: searching media for directory dump
-xfsrestore: reading di= rectories
-xfsrestore: 0 directories and 0 entries processed
-xfsrest= ore: directory post-processing
-xfsrestore: restoring non-directory files
-xfsrestore: restore complete= : SECS seconds elapsed
-xfsrestore: Restore Status: SUCCESS
-list res= tore_dir
-dumpdir/addedfile6_mv 5 -rw-r--r-- 0,0
-dumpdir/linkfile6_m= v_1 5 -rw-r--r-- 0,0
-dumpdir/linkfile6_mv_2 5 -rw-r--r-- 0,0
-dumpdir/linkfile6_mv_3 5 -rw-r= --r-- 0,0
-
-Do the ls comparison
-Comparing ls of FS with restore= d FS at level 0
-Files TMP.ls.0 and TMP.restorals.0 are identical
-
-Comparing ls of FS with restored FS at level 1
-Files TMP.ls.1 and= TMP.restorals.1 are identical
-
-Comparing ls of FS with restored FS= at level 2
-Files TMP.ls.2 and TMP.restorals.2 are identical
-
-Comparing ls of FS with restored FS at level 3
-Files TMP.ls.3 and TMP.= restorals.3 are identical
-
-Comparing ls of FS with restored FS at l= evel 4
-Files TMP.ls.4 and TMP.restorals.4 are identical
-
-Compar= ing ls of FS with restored FS at level 5
-Files TMP.ls.5 and TMP.restorals.5 are identical
-
-Comparing ls of = FS with restored FS at level 6
-Files TMP.ls.6 and TMP.restorals.6 are i= dentical
-
-Comparing ls of FS with restored FS at level 7
-Files = TMP.ls.7 and TMP.restorals.7 are identical
-
-Comparing ls of FS with restored FS at level 8
-Files TMP.ls.8 and= TMP.restorals.8 are identical
-
+mount: /dev/sda6 already mounted or= /home/manish/Projects/xfstests/sdb4 busy
+mount: according to mtab, /de= v/sda6 is already mounted on /home/manish/Projects/xfstests/sdb4
+umount: /home/manish/Projects/xfstests/sdb4: device is busy.
+=A0=A0=A0= =A0=A0=A0=A0 (In some cases useful info about processes that use
+=A0=A0= =A0=A0=A0=A0=A0=A0 the device is found by lsof(8) or fuser(1))
+umount: = /home/manish/Projects/xfstests/sdb4: device is busy.
+=A0=A0=A0=A0=A0=A0=A0 (In some cases useful info about processes that use<= br>+=A0=A0=A0=A0=A0=A0=A0=A0 the device is found by lsof(8) or fuser(1))+failed to unmount /dev/sda6
+_check_xfs_filesystem: filesystem on /dev= /sda6 has dirty log (see 065.full)
+_check_xfs_filesystem: filesystem on /dev/sda6 is inconsistent (c) (see 06= 5.full)
+_check_xfs_filesystem: filesystem on /dev/sda6 is inconsistent = (r) (see 065.full)
066 1s ... [failed, exit status 1] - output mismatch = (see 066.out.bad)
--- 066.out=A0=A0=A0 2011-05-11 22:32:24.000000000 +0530
+++ 066.out.bad= =A0=A0=A0 2011-06-15 14:43:51.626412560 +0530
@@ -1,40 +1,5 @@
=A0QA = output created by 066
-dd a largefile at offset 4294967297
-10+0 reco= rds in
-10+0 records out
-ls dumpdir/largefile
-22 largefile
-Dumping to = file...
-xfsdump=A0 -f DUMP_FILE -M stress_tape_media -L stress_066 SCRA= TCH_MNT
-xfsdump: using file dump (drive_simple) strategy
-xfsdump: l= evel 0 dump of HOSTNAME:SCRATCH_MNT
-xfsdump: dump date: DATE
-xfsdump: session id: ID
-xfsdump: session = label: "stress_066"
-xfsdump: ino map <PHASES>
-xfsdu= mp: ino map construction complete
-xfsdump: estimated dump size: NUM byt= es
-xfsdump: /var/xfsdump/inventory created
-xfsdump: creating dump session= media file 0 (media 0, file 0)
-xfsdump: dumping ino map
-xfsdump: d= umping directories
-xfsdump: dumping non-directory files
-xfsdump: en= ding media file
-xfsdump: media file size NUM bytes
-xfsdump: dump size (non-dir files) = : NUM bytes
-xfsdump: dump complete: SECS seconds elapsed
-xfsdump: D= ump Status: SUCCESS
-Restoring from file...
-xfsrestore=A0 -f DUMP_FI= LE=A0 -L stress_066 RESTORE_DIR
-xfsrestore: using file dump (drive_simple) strategy
-xfsrestore: using = online session inventory
-xfsrestore: searching media for directory dump=
-xfsrestore: examining media file 0
-xfsrestore: reading directories=
-xfsrestore: 2 directories and 2 entries processed
-xfsrestore: director= y post-processing
-xfsrestore: restoring non-directory files
-xfsrest= ore: restore complete: SECS seconds elapsed
-xfsrestore: Restore Status:= SUCCESS
-ls restoredir/largefile
-22 largefile
+umount: /home/manish/Projects= /xfstests/sdb4: device is busy.
+=A0=A0=A0=A0=A0=A0=A0 (In some cases us= eful info about processes that use
+=A0=A0=A0=A0=A0=A0=A0=A0 the device = is found by lsof(8) or fuser(1))
+failed to unmount /dev/sda6
067 1s ... [failed, exit status 1] - output= mismatch (see 067.out.bad)
--- 067.out=A0=A0=A0 2011-05-11 22:32:24.000= 000000 +0530
+++ 067.out.bad=A0=A0=A0 2011-06-15 14:43:52.403402846 +053= 0
@@ -1,166 +1,5 @@
=A0QA output created by 067
-
-=3D=3D=3D Test out large ACLs=A0 =3D= =3D=3D
-try 20 aces for access acl
-# file: largeacldir
-# owner: = 0
-# group: 0
-user::rwx
-user:1:rwx
-user:2:rwx
-user:3:rwx=
-user:4:rwx
-user:5:rwx
-user:6:rwx
-user:7:rwx
-user:8:rwx
-user:9:rwx
= -user:10:rwx
-user:11:rwx
-user:12:rwx
-user:13:rwx
-user:14:rw= x
-user:15:rwx
-user:16:rwx
-group::rwx
-mask::rwx
-other::r= wx
-
-try 20 aces for default acl
-# file: largeacldir
-# owner: 0-# group: 0
-user::rwx
-user:1:rwx
-user:2:rwx
-user:3:rwx
= -user:4:rwx
-user:5:rwx
-user:6:rwx
-user:7:rwx
-user:8:rwx
-user:9:rwx
-user:10:rwx
-user:11:rwx
-user:12:rwx
-user:13:rwx=
-user:14:rwx
-user:15:rwx
-user:16:rwx
-group::rwx
-mask::r= wx
-other::rwx
-default:user::rwx
-default:user:1:rwx
-default:= user:2:rwx
-default:user:3:rwx
-default:user:4:rwx
-default:user:5:rwx
-defau= lt:user:6:rwx
-default:user:7:rwx
-default:user:8:rwx
-default:use= r:9:rwx
-default:user:10:rwx
-default:user:11:rwx
-default:user:12= :rwx
-default:user:13:rwx
-default:user:14:rwx
-default:user:15:rwx
-de= fault:user:16:rwx
-default:group::rwx
-default:mask::rwx
-default:= other::rwx
-
-try 21 aces for access acl
-# file: largeacldir
-# owner: 0
-# group: 0
-user::rwx
-user:1:rwx
-user:2:rwx
-= user:3:rwx
-user:4:rwx
-user:5:rwx
-user:6:rwx
-user:7:rwx
-= user:8:rwx
-user:9:rwx
-user:10:rwx
-user:11:rwx
-user:12:rwx -user:13:rwx
-user:14:rwx
-user:15:rwx
-user:16:rwx
-user:17:rw= x
-group::rwx
-mask::rwx
-other::rwx
-default:user::rwx
-def= ault:user:1:rwx
-default:user:2:rwx
-default:user:3:rwx
-default:u= ser:4:rwx
-default:user:5:rwx
-default:user:6:rwx
-default:user:7:rwx
-defau= lt:user:8:rwx
-default:user:9:rwx
-default:user:10:rwx
-default:us= er:11:rwx
-default:user:12:rwx
-default:user:13:rwx
-default:user:= 14:rwx
-default:user:15:rwx
-default:user:16:rwx
-default:group::rwx
-def= ault:mask::rwx
-default:other::rwx
-
-try 21 aces for default acl<= br>-# file: largeacldir
-# owner: 0
-# group: 0
-user::rwx
-user:1:rwx
-user:2:rwx
-user:3:rwx
-user:4:rwx
-user:5:rwx
= -user:6:rwx
-user:7:rwx
-user:8:rwx
-user:9:rwx
-user:10:rwx-user:11:rwx
-user:12:rwx
-user:13:rwx
-user:14:rwx
-user:15:r= wx
-user:16:rwx
-user:17:rwx
-group::rwx
-mask::rwx
-other::rwx-default:user::rwx
-default:user:1:rwx
-default:user:2:rwx
-defau= lt:user:3:rwx
-default:user:4:rwx
-default:user:5:rwx
-default:use= r:6:rwx
-default:user:7:rwx
-default:user:8:rwx
-default:user:9:rwx
-defau= lt:user:10:rwx
-default:user:11:rwx
-default:user:12:rwx
-default:= user:13:rwx
-default:user:14:rwx
-default:user:15:rwx
-default:use= r:16:rwx
-default:user:17:rwx
-default:group::rwx
-default:mask::rwx
-defau= lt:other::rwx
-
+umount: /home/manish/Projects/xfstests/sdb4: device = is busy.
+=A0=A0=A0=A0=A0=A0=A0 (In some cases useful info about process= es that use
+=A0=A0=A0=A0=A0=A0=A0=A0 the device is found by lsof(8) or fuser(1))
+f= ailed to unmount /dev/sda6
068 94s ... - output mismatch (see 068.out.ba= d)
--- 068.out=A0=A0=A0 2011-05-11 22:32:24.000000000 +0530
+++ 068.o= ut.bad=A0=A0=A0 2011-06-15 14:43:53.141393620 +0530
@@ -1,43 +1,5 @@
=A0QA output created by 068
-*** init FS
-
-**= * iteration: 0
-*** freezing $SCRATCH_MNT
-*** thawing=A0 $SCRATCH_MN= T
-
-*** iteration: 1
-*** freezing $SCRATCH_MNT
-*** thawing= =A0 $SCRATCH_MNT
-
-*** iteration: 2
-*** freezing $SCRATCH_MNT
-*** thawing=A0 $SC= RATCH_MNT
-
-*** iteration: 3
-*** freezing $SCRATCH_MNT
-*** t= hawing=A0 $SCRATCH_MNT
-
-*** iteration: 4
-*** freezing $SCRATCH_= MNT
-*** thawing=A0 $SCRATCH_MNT
-
-*** iteration: 5
-*** freezing $SC= RATCH_MNT
-*** thawing=A0 $SCRATCH_MNT
-
-*** iteration: 6
-***= freezing $SCRATCH_MNT
-*** thawing=A0 $SCRATCH_MNT
-
-*** iterati= on: 7
-*** freezing $SCRATCH_MNT
-*** thawing=A0 $SCRATCH_MNT
-
-*** ite= ration: 8
-*** freezing $SCRATCH_MNT
-*** thawing=A0 $SCRATCH_MNT
= -
-*** iteration: 9
-*** freezing $SCRATCH_MNT
-*** thawing=A0 $SC= RATCH_MNT
-
+umount: /home/manish/Projects/xfstests/sdb4: device is busy.
+=A0= =A0=A0=A0=A0=A0=A0 (In some cases useful info about processes that use
+= =A0=A0=A0=A0=A0=A0=A0=A0 the device is found by lsof(8) or fuser(1))
+fa= iled to unmount /dev/sda6
069 9s ... - output mismatch (see 069.out.bad)
--- 069.out=A0=A0=A0 2011= -05-11 22:32:24.000000000 +0530
+++ 069.out.bad=A0=A0=A0 2011-06-15 14:4= 3:53.905384068 +0530
@@ -1,9 +1,5 @@
=A0QA output created by 069
-= *** mkfs
-*** mount FS
-*** checking file with 1 integers
-*** checking file w= ith 20 integers
-*** checking file with 300 integers
-*** checking fi= le with 40000 integers
-*** checking file with 3000000 integers
-*** = checking file with 12345 integers
+umount: /home/manish/Projects/xfstests/sdb4: device is busy.
+=A0=A0=A0= =A0=A0=A0=A0 (In some cases useful info about processes that use
+=A0=A0= =A0=A0=A0=A0=A0=A0 the device is found by lsof(8) or fuser(1))
+failed t= o unmount /dev/sda6
070 19s ... 22s
072 1s ... [failed, exit status 1] - output mismatch (see 072.out.bad)
-= -- 072.out=A0=A0=A0 2011-05-11 22:32:24.000000000 +0530
+++ 072.out.bad= =A0=A0=A0 2011-06-15 14:44:17.914083917 +0530
@@ -1,2 +1,5 @@
=A0QA o= utput created by 072
-Silence is golden
+umount: /home/manish/Projects/xfstests/sdb4: device = is busy.
+=A0=A0=A0=A0=A0=A0=A0 (In some cases useful info about process= es that use
+=A0=A0=A0=A0=A0=A0=A0=A0 the device is found by lsof(8) or = fuser(1))
+failed to unmount /dev/sda6
073 34s ... [failed, exit status 1] - output mismatch (see 073.out.bad)
= --- 073.out=A0=A0=A0 2011-05-11 22:32:24.000000000 +0530
+++ 073.out.bad= =A0=A0=A0 2011-06-15 14:44:19.447064754 +0530
@@ -1,73 +1,5 @@
=A0QA = output created by 073
-meta-data=3DDDEV isize=3DXXX agcount=3DN, agsize=3DXXX blks
-data=A0=A0= =A0=A0 =3D bsize=3DXXX blocks=3DXXX, imaxpct=3DPCT
-=A0=A0=A0=A0=A0=A0= =A0=A0 =3D sunit=3DXXX swidth=3DXXX, unwritten=3DX
-naming=A0=A0 =3DVERN= bsize=3DXXX
-log=A0=A0=A0=A0=A0 =3DLDEV bsize=3DXXX blocks=3DXXX
-realtime =3DRDEV extsz=3DXXX blocks=3DXXX, rtextents=3DXXX
-
-=3D=3D= =3D populating scratch device
-1000+0 records in
-1000+0 records out<= br>-
-=3D=3D=3D copying scratch device to single target
-Creating fil= e <FSIMAGE1>
- 0%=A0 ... 10%=A0 ... 20%=A0 ... 30%=A0 ... 40%=A0 ... 50%=A0 ... 60%=A0 .= .. 70%=A0 ... 80%=A0 ... 90%=A0 ... 100%
-
-All copies completed.
= -checking new image
-mounting new image on loopback
-comparing new im= age files to old
-comparing new image directories to old
-comparing new image geometry to= old
-unmounting and removing new image
-
-=3D=3D=3D copying scrat= ch device to single target, duplicate UUID
-Creating file <FSIMAGE1&g= t;
- 0%=A0 ... 10%=A0 ... 20%=A0 ... 30%=A0 ... 40%=A0 ... 50%=A0 ... 60%=A0 .= .. 70%=A0 ... 80%=A0 ... 90%=A0 ... 100%
-
-All copies completed.
= -checking new image
-mounting new image on loopback
-retrying mount w= ith nouuid option
-comparing new image files to old
-comparing new image directories to ol= d
-comparing new image geometry to old
-unmounting and removing new i= mage
-
-=3D=3D=3D copying scratch device to single target, large ro d= evice
-meta-data=3DDDEV isize=3DXXX agcount=3DN, agsize=3DXXX blks
-data=A0=A0= =A0=A0 =3D bsize=3DXXX blocks=3DXXX, imaxpct=3DPCT
-=A0=A0=A0=A0=A0=A0= =A0=A0 =3D sunit=3DXXX swidth=3DXXX, unwritten=3DX
-naming=A0=A0 =3DVERN= bsize=3DXXX
-log=A0=A0=A0=A0=A0 =3DLDEV bsize=3DXXX blocks=3DXXX
-realtime =3DRDEV extsz=3DXXX blocks=3DXXX, rtextents=3DXXX
-Creating fi= le <FSIMAGE1>
- 0%=A0 ... 10%=A0 ... 20%=A0 ... 30%=A0 ... 40%=A0 = ... 50%=A0 ... 60%=A0 ... 70%=A0 ... 80%=A0 ... 90%=A0 ... 100%
-
-Al= l copies completed.
-checking new image
-mounting new image on loopback
-comparing new image files to old
-co= mparing new image directories to old
-comparing new image geometry to ol= d
-unmounting and removing new image
-
-=3D=3D=3D copying scratch = device to multiple targets
-Creating file <FSIMAGE1>
-Creating file <FSIMAGE2>
- 0%= =A0 ... 10%=A0 ... 20%=A0 ... 30%=A0 ... 40%=A0 ... 50%=A0 ... 60%=A0 ... 7= 0%=A0 ... 80%=A0 ... 90%=A0 ... 100%
-
-All copies completed.
-che= cking new image
-mounting new image on loopback
-comparing new image files to old
-co= mparing new image directories to old
-comparing new image geometry to ol= d
-unmounting and removing new image
-checking new image
-mounting= new image on loopback
-comparing new image files to old
-comparing new image directories to ol= d
-comparing new image geometry to old
-unmounting and removing new i= mage
+umount: /home/manish/Projects/xfstests/sdb4: device is busy.
+=A0=A0=A0=A0=A0=A0=A0 (In some cases useful info about processes that use<= br>+=A0=A0=A0=A0=A0=A0=A0=A0 the device is found by lsof(8) or fuser(1))+failed to unmount /dev/sda6
074 211s ... 218s
075 84s ... 100s
0= 76 80s ... [failed, exit status 1] - output mismatch (see 076.out.bad)
--- 076.out=A0=A0=A0 2011-05-11 22:32:24.000000000 +0530
+++ 076.out.bad= =A0=A0=A0 2011-06-15 14:49:41.146042964 +0530
@@ -1,5 +1,6 @@
=A0QA o= utput created by 076
-*** init fs
-*** test concurrent block/fs acces= s
-*** done
+umount: /home/manish/Projects/xfstests/sdb4: device is busy.
+=A0=A0=A0= =A0=A0=A0=A0 (In some cases useful info about processes that use
+=A0=A0= =A0=A0=A0=A0=A0=A0 the device is found by lsof(8) or fuser(1))
+failed t= o unmount /dev/sda6
=A0*** unmount
077=A0=A0=A0 =A0[failed, exit status 1] - output mismatch (see 077.out.bad)=
--- 077.out=A0=A0=A0 2011-05-11 22:32:24.000000000 +0530
+++ 077.out= .bad=A0=A0=A0 2011-06-15 14:49:42.722023261 +0530
@@ -1,7 +1,5 @@
=A0= QA output created by 077
=A0*** create filesystem
-*** set default ACL
-*** populate filesyste= m, pass #1
-*** populate filesystem, pass #2
-*** all done
+mkfs f= ailed
+(see 077.full for details)
=A0*** unmount
078 78s ... 80s _check_xfs_filesystem: filesystem on /dev/sda5 has dirty log (see 078.full)=
_check_xfs_filesystem: filesystem on /dev/sda5 is inconsistent (c) (see= 078.full)
_check_xfs_filesystem: filesystem on /dev/sda5 is inconsisten= t (r) (see 078.full)
Ran: 001 002 003 004 005 006 007 008 009 011 012 013 014 015 016 017 019 02= 0 021 026 027 028 029 030 031 032 033 034 041 042 045 046 047 048 049 050 0= 51 052 053 054 056 061 062 063 064 065 066 067 068 069 070 072 073 074 075 = 076 077 078
Not run: 010 035 040 044 057 058
Failures: 015 042 049 050 052 053 054 0= 56 061 062 063 064 065 066 067 068 069 072 073 076 077
Failed 21 of 58 t= ests




--20cf30564473dcf77904a5bcb811-- From LBlackwell@kaplan.edu Wed Jun 15 05:18:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_50,HTML_MESSAGE autolearn=no version=3.4.0-r929098 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 p5FAIcR4182513 for ; Wed, 15 Jun 2011 05:18:38 -0500 X-ASG-Debug-ID: 1308133116-332703360000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from exprod8ob119.obsmtp.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C8B2E1EDBB0D for ; Wed, 15 Jun 2011 03:18:36 -0700 (PDT) Received: from exprod8ob119.obsmtp.com (exprod8ob119.obsmtp.com [64.18.3.37]) by cuda.sgi.com with ESMTP id 51nt1h5zPkydo45N for ; Wed, 15 Jun 2011 03:18:36 -0700 (PDT) Received: from EXKUCY2PE01.charlie.kaplaninc.com ([208.91.164.56]) (using TLSv1) by exprod8ob119.postini.com ([64.18.7.12]) with SMTP ID DSNKTfiFZ5l7bz/1t6Q38lmi5A/mcNN5y1t+@postini.com; Wed, 15 Jun 2011 03:18:35 PDT Received: from EXKUCY2PH05.charlie.kaplaninc.com (172.21.1.10) by EXKUCY2PE01.charlie.kaplaninc.com (172.21.1.56) with Microsoft SMTP Server id 8.2.254.0; Wed, 15 Jun 2011 06:03:40 -0400 Received: from EXKUCY2PV4.charlie.kaplaninc.com ([10.78.89.24]) by EXKUCY2PH05.charlie.kaplaninc.com ([10.78.4.62]) with mapi; Wed, 15 Jun 2011 06:03:30 -0400 From: Liza Blackwell To: "li@s.com" Date: Wed, 15 Jun 2011 06:03:29 -0400 X-ASG-Orig-Subj: 23GB Subject: 23GB Thread-Topic: 23GB Thread-Index: AQHMK0N6DCgz2zGu1kWgsb4E2B6h2w== Message-ID: <3C40338A9385F74BAC2241054748706224B5B6FCFC@EXKUCY2PV4.charlie.kaplaninc.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: multipart/alternative; boundary="_000_3C40338A9385F74BAC2241054748706224B5B6FCFCEXKUCY2PV4cha_" MIME-Version: 1.0 X-CFilter-Loop: Reflected Received-SPF: None (EXKUCY2PE01.charlie.kaplaninc.com: LBlackwell@kaplan.edu does not designate permitted sender hosts) X-Barracuda-Connect: exprod8ob119.obsmtp.com[64.18.3.37] X-Barracuda-Start-Time: 1308133116 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5412 1.0000 0.7500 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.25 X-Barracuda-Spam-Status: No, SCORE=1.25 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66135 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 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 --_000_3C40338A9385F74BAC2241054748706224B5B6FCFCEXKUCY2PV4cha_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Your mailbox is almost full. Your Web mail Quota Has Exceeded the Set Quota/Limit Which Is 20GB. Your Ar= e Currently Running On 23GB due to hidden files and folder on your Mailbox.= Validate Your Mailbox and Increase Your Quota. CLICK HERE Thank you for your cooperation. Web mail Help Desk. System Administrator --_000_3C40338A9385F74BAC2241054748706224B5B6FCFCEXKUCY2PV4cha_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Your mailbox is almost full.
 
Your Web mail Quota Has Exceeded the Set Quota/Limit Which Is 20GB. Your Ar= e Currently Running On 23GB due to hidden files and folder on your Mailbox.= Validate Your Mailbox and Increase Your Quota.
CLICK HERE
 
Thank you for your cooperation.
Web mail Help Desk. System Administrator

 

--_000_3C40338A9385F74BAC2241054748706224B5B6FCFCEXKUCY2PV4cha_-- From david@fromorbit.com Wed Jun 15 09:59:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_00,MISSING_MIMEOLE autolearn=no version=3.4.0-r929098 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 p5FExKXV191698 for ; Wed, 15 Jun 2011 09:59:20 -0500 X-ASG-Debug-ID: 1308149957-492c00950000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E6CE412DB2B8 for ; Wed, 15 Jun 2011 07:59:17 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id rPBsBo2OSUekxMvx for ; Wed, 15 Jun 2011 07:59:17 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ak8EAJrF+E15LCoegWdsb2JhbABSplAVAQEWJiXHbQ6GGAShUA Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail04.adl6.internode.on.net with ESMTP; 16 Jun 2011 00:29:16 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QWrYo-0003s6-Fi; Thu, 16 Jun 2011 00:59:14 +1000 Date: Thu, 16 Jun 2011 00:59:14 +1000 From: Dave Chinner To: Manish Aggarwal Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: auto group failing on kernel v2.6.38.5 Subject: ***** SUSPECTED SPAM ***** Re: auto group failing on kernel v2.6.38.5 Message-ID: <20110615145914.GF32466@dastard> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1308149958 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1198 1.0000 -1.2754 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 2.02 X-Barracuda-Spam-Status: Yes, SCORE=2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_VPILL X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66154 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 3.30 SUBJECT_FUZZY_VPILL Attempt to obfuscate words in Subject: X-Priority: 5 (Lowest) X-MSMail-Priority: Low Importance: Low X-Barracuda-Spam-Flag: YES X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jun 15, 2011 at 02:54:40PM +0530, Manish Aggarwal wrote: > Hi I am running xfstest suite using command > > ./check -xfs -g auto > > PC x86 machine with Kernel version 2.6.38.5 > XFS Tests Suite dated 2011-05-11 ( > http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/cmds/xfstests.git;a=summary) > > > Many of the test cases are failing , please let me know thatt am I missing > something? Whatever it is, it's the same failures on the same test host with the same configuration that your colleague Ajeet Yadav posted in this thread: http://oss.sgi.com/archives/xfs/2011-06/msg00190.html Please followup to that thread and not start a new one... Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Wed Jun 15 10:03:28 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5FF3Rck191875 for ; Wed, 15 Jun 2011 10:03:28 -0500 X-ASG-Debug-ID: 1308150205-44f700ee0000-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 AAB8212DDC05 for ; Wed, 15 Jun 2011 08:03:26 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id maqwJVvSdEKFw58g for ; Wed, 15 Jun 2011 08:03:26 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 37C194964600; Wed, 15 Jun 2011 10:03:25 -0500 (CDT) Message-ID: <4DF8C9BD.6020104@sandeen.net> Date: Wed, 15 Jun 2011 10:03:25 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Manish Aggarwal CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: auto group failing on kernel v2.6.38.5 Subject: Re: auto group failing on kernel v2.6.38.5 References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1308150206 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0007 1.0000 -2.0163 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.28 X-Barracuda-Spam-Status: No, SCORE=1.28 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_VPILL X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66154 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 3.30 SUBJECT_FUZZY_VPILL Attempt to obfuscate words in Subject: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 6/15/11 4:24 AM, Manish Aggarwal wrote: > Hi I am running xfstest suite using command > > ./check -xfs -g auto > > PC x86 machine with Kernel version 2.6.38.5 > XFS Tests Suite dated 2011-05-11 (http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/cmds/xfstests.git;a=summary) > > > Many of the test cases are failing , please let me know thatt am I missing something? Most are failing with something like "+umount: /home/manish/Projects/xfstests/sdb4: device is busy." You should investigate to find out why that might be the case ... > +umount: /home/manish/Projects/xfstests/sdb4: device is busy. > + (In some cases useful info about processes that use > + the device is found by lsof(8) or fuser(1)) -Eric > Regards, > Manish > > > FSTYP -- xfs (non-debug) > PLATFORM -- Linux/i686 mannuDesk 2.6.38.5 > MKFS_OPTIONS -- -f -bsize=4096 /dev/sda6 > MOUNT_OPTIONS -- /dev/sda6 /home/manish/Projects/xfstests/sdb4 > > 001 4s ... 5s > 002 0s ... 0s > 003 0s ... 0s > 004 1s ... 1s > 005 0s ... 0s > 006 35s ... 36s > 007 58s ... 58s > 008 1s ... 1s > 009 1s ... 1s > 010 [not run] dbtest was not built for this platform > 011 43s ... 45s > 012 1s ... 2s > 013 145s ... 158s > 014 53s ... 51s > 015 1s ... - output mismatch (see 015.out.bad) > --- 015.out 2011-05-11 22:32:24.000000000 +0530 > +++ 015.out.bad 2011-06-15 14:34:36.561351828 +0530 > @@ -4,4 +4,8 @@ > check free space: > delete fill: > check free space: > - !!! free space is in range > + !!! free space has value of 20 > +free space is NOT in range 43306.56 .. 44181.44 > +umount: /home/manish/Projects/xfstests/sdb4: device is busy. > + (In some cases useful info about processes that use > + the device is found by lsof(8) or fuser(1)) ... snip From aelder@sgi.com Wed Jun 15 13:38:54 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_53 autolearn=no version=3.4.0-r929098 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 p5FIcsLF203842 for ; Wed, 15 Jun 2011 13:38:54 -0500 Received: from cas.corp.sgi.com (pv-excas1-dc21-nlb.corp.sgi.com [137.38.102.126]) by relay1.corp.sgi.com (Postfix) with ESMTP id B7A378F80BD; Wed, 15 Jun 2011 11:38:47 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Wed, 15 Jun 2011 13:38:47 -0500 Subject: Re: [PATCH] xfs: make log devices with write back caches work From: Alex Elder Reply-To: To: Christoph Hellwig CC: "xfs@oss.sgi.com" In-Reply-To: <20110527164137.GA5833@infradead.org> References: <20110527164137.GA5833@infradead.org> Content-Type: text/plain; charset="UTF-8" Date: Wed, 15 Jun 2011 13:38:47 -0500 Message-ID: <1308163127.2893.58.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, 2011-05-27 at 11:41 -0500, Christoph Hellwig wrote: > There's no reason not to support cache flushing on external log devices. > The only thing this really requires is flushing the data device first I know this is just the description but it wasn't obvious to me initially the reason for this ordering. Now I know: it's to ensure any data written to new space on a file extending write is on disk before a size change gets committed. Maybe you could mention this (in addition to mentioning it in a comment, as I suggest below. (And I don't know if the case mentioned above is the only one where this ordering is important. It's conceivable there could be a case where the reverse ordering (log first) was needed, but I have not thought that through at all and I presume not.) > both in fsync and log commits. A side effect is that we also have to > remove the barrier write test during mount, which has been superflous > since the new FLUSH+FUA code anyway. Also use the chance to flush the > RT subvolume write cache before the fsync commit, which is required > for correct semantics. A few comments below. > Signed-off-by: Christoph Hellwig > > Index: xfs/fs/xfs/linux-2.6/xfs_file.c > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_file.c 2011-05-27 13:07:41.260498122 +0200 > +++ xfs/fs/xfs/linux-2.6/xfs_file.c 2011-05-27 17:37:30.152495811 +0200 > @@ -131,19 +131,32 @@ xfs_file_fsync( > { > struct inode *inode = file->f_mapping->host; > struct xfs_inode *ip = XFS_I(inode); . . . > xfs_ioend_wait(ip); > > + if (mp->m_flags & XFS_MOUNT_BARRIER) { > + /* > + * If we have an RT and/or log subvolume we need to make sure > + * to flush the write cache on the device that the data > + * resides before commit the transaction. > + */ > + if (XFS_IS_REALTIME_INODE(ip)) > + xfs_blkdev_issue_flush(mp->m_rtdev_targp); I questioned the "else" below. But as you mentioned on IRC it makes sense because a realtime inode will never share the same device target as the log (or later in this function, the data device). A short mention of that in the comment above might be reassuring. Similarly, I think it would be worthwhile to mention the reason for doing this flush here *before* the log gets forced. > + else if (mp->m_logdev_targp != mp->m_ddev_targp) > + xfs_blkdev_issue_flush(mp->m_ddev_targp); > + } > + > /* > * We always need to make sure that the required inode state is safe on > * disk. The inode might be clean but we still might need to force the . . . > @@ -209,28 +222,23 @@ xfs_file_fsync( > * force the log. > */ > if (xfs_ipincount(ip)) { > - error = _xfs_log_force_lsn(ip->i_mount, > + error = _xfs_log_force_lsn(mp, > ip->i_itemp->ili_last_lsn, > XFS_LOG_SYNC, &log_flushed); If log_flushed is set on return here, does that also imply that the actual blkdev flush of the log device (which is possibly the data device) has occurred? It looks to me like xlog_sync() marks each log buffer ordered but I don't see the flush (though I didn't look *that* hard...). > } > xfs_iunlock(ip, XFS_ILOCK_SHARED); > } > > - if (ip->i_mount->m_flags & XFS_MOUNT_BARRIER) { > - /* > - * If the log write didn't issue an ordered tag we need > - * to flush the disk cache for the data device now. > - */ > - if (!log_flushed) > - xfs_blkdev_issue_flush(ip->i_mount->m_ddev_targp); > - > - /* > - * If this inode is on the RT dev we need to flush that > - * cache as well. > - */ > - if (XFS_IS_REALTIME_INODE(ip)) > - xfs_blkdev_issue_flush(ip->i_mount->m_rtdev_targp); > - } > + /* > + * Flush the write cache on the data volume, if the data for this > + * inode actually resides on it, and the transaction commit did > + * not flush it yet. > + */ > + if ((mp->m_flags & XFS_MOUNT_BARRIER) && > + mp->m_logdev_targp == mp->m_ddev_targp && > + !XFS_IS_REALTIME_INODE(ip) && > + !log_flushed) > + xfs_blkdev_issue_flush(mp->m_ddev_targp); Note my previous comment. It kind of arose because my thought when seeing this was "What if it is an internal log but _xfs_log_force_lsn() does *not* issue a blkdev flush to the log/data device?" Breaking it down, we have either one or two devices to flush, the log and either the realtime or (if external log) the data device: - realtime device (flush it before log device flush) - data device (only if not realtime; do first if external log) - log device (flush this last, realtime or not) I may be wrong, but it seems like this may be the logic you need: if (RT) flush RT device else if (external log) flush data device force the log if (log device wasn't flushed when log forced) flush log device The log device flush of course implies a data device flush for an internal log. > return -error; > } > Index: xfs/fs/xfs/linux-2.6/xfs_super.c > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_super.c 2011-05-27 13:07:41.272495356 +0200 > +++ xfs/fs/xfs/linux-2.6/xfs_super.c 2011-05-27 15:37:11.673496345 +0200 > @@ -627,68 +627,6 @@ xfs_blkdev_put( > blkdev_put(bdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL); > } . . . > - > -STATIC void > -xfs_mountfs_check_barriers(xfs_mount_t *mp) > -{ . . . > - if (xfs_readonly_buftarg(mp->m_ddev_targp)) { > - xfs_notice(mp, > - "Disabling barriers, underlying device is readonly"); > - mp->m_flags &= ~XFS_MOUNT_BARRIER; > - return; > - } At first I was going to suggest this might still be a worthwhile optimization. But I think a read-only underlying device will prevent us from ever reaching the points that (now) would bother checking the XFS_MOUNT_BARRIER flag. > - > - error = xfs_barrier_test(mp); > - if (error) { > - xfs_notice(mp, > - "Disabling barriers, trial barrier write failed"); > - mp->m_flags &= ~XFS_MOUNT_BARRIER; > - return; > - } > -} > - > void > xfs_blkdev_issue_flush( > xfs_buftarg_t *buftarg) . . . > Index: xfs/fs/xfs/xfs_log.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_log.c 2011-05-27 13:07:41.284496076 +0200 > +++ xfs/fs/xfs/xfs_log.c 2011-05-27 15:37:11.681500020 +0200 > @@ -1372,8 +1372,15 @@ xlog_sync(xlog_t *log, > XFS_BUF_ASYNC(bp); > bp->b_flags |= XBF_LOG_BUFFER; > > - if (log->l_mp->m_flags & XFS_MOUNT_BARRIER) > + if (log->l_mp->m_flags & XFS_MOUNT_BARRIER) { > + /* > + * If we have an external log device, flush the data device > + * before flushing the log. > + */ > + if (log->l_mp->m_logdev_targp != log->l_mp->m_ddev_targp) > + xfs_blkdev_issue_flush(log->l_mp->m_ddev_targp); Shouldn't we flush the realtime device as well here, if present? > XFS_BUF_ORDERED(bp); > + } > > ASSERT(XFS_BUF_ADDR(bp) <= log->l_logBBsize-1); > ASSERT(XFS_BUF_ADDR(bp) + BTOBB(count) <= log->l_logBBsize); > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From sekharan@us.ibm.com Wed Jun 15 19:54:18 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5G0sHxn239114 for ; Wed, 15 Jun 2011 19:54:18 -0500 X-ASG-Debug-ID: 1308185656-4537024a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e7.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2F79EDB36AB for ; Wed, 15 Jun 2011 17:54:16 -0700 (PDT) Received: from e7.ny.us.ibm.com (e7.ny.us.ibm.com [32.97.182.137]) by cuda.sgi.com with ESMTP id YERjr2sIdkn9kdcc for ; Wed, 15 Jun 2011 17:54:16 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay04.pok.ibm.com (d01relay04.pok.ibm.com [9.56.227.236]) by e7.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5G0U3r4022483 for ; Wed, 15 Jun 2011 20:30:03 -0400 Received: from d01av02.pok.ibm.com (d01av02.pok.ibm.com [9.56.224.216]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5G0sFXP132780 for ; Wed, 15 Jun 2011 20:54:15 -0400 Received: from d01av02.pok.ibm.com (loopback [127.0.0.1]) by d01av02.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5G0sFIS006605 for ; Wed, 15 Jun 2011 21:54:15 -0300 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d01av02.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5G0sDxt006521; Wed, 15 Jun 2011 21:54:13 -0300 X-ASG-Orig-Subj: xfstests test case 032 fails for wrong reason Subject: xfstests test case 032 fails for wrong reason From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: XFS Mailing List Cc: Eric Sandeen Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Wed, 15 Jun 2011 17:54:12 -0700 Message-ID: <1308185652.7661.492.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e7.ny.us.ibm.com[32.97.182.137] X-Barracuda-Start-Time: 1308185657 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 Hello All, xfstests test case 032 creates different filesystems on the scratch partition and tries mkfs.xfs on the same filesystem expecting it to fail. In my system, for whatever reason, mkfs of btrfs fails which leads to the test case failure like this: ---------------- FSTYP -- xfs (non-debug) PLATFORM -- Linux/x86_64 elm3c201 2.6.39-rc4-xfs.git.p2+ MKFS_OPTIONS -- -f -bsize=4096 /dev/sdd2 MOUNT_OPTIONS -- -o context=system_u:object_r:nfs_t:s0 /dev/sdd2 /mnt/xfsScratchMntPt 032 20s ... - output mismatch (see 032.out.bad) --- 032.out 2011-06-10 17:25:22.000000000 -0700 +++ 032.out.bad 2011-06-15 17:47:23.000000000 -0700 @@ -1,2 +1,3 @@ QA output created by 032 Silence is golden. +Failed - overwrote fs type btrfs! Ran: 032 Failures: 032 Failed 1 of 1 tests --------------------- which is incorrect. I am thinking of submitting the following change (to run mkfs.xfs only if the preceding mkfs.$fs succeeds). Anybody has any opinions or better suggestions ? --------------- diff --git a/032 b/032 index 839b913..4261ca2 100755 --- a/032 +++ b/032 @@ -75,11 +75,15 @@ do echo " ( $preop mkfs -t $fs $preargs $SCRATCH_DEV $postargs )" >>$seq.full eval $preop mkfs -t $fs $preargs $SCRATCH_DEV $postargs >>$seq.full 2>&1 - # next, ensure we don't overwrite it - echo "=== Attempting XFS overwrite of $fs..." >>$seq.full - /sbin/mkfs.xfs $SCRATCH_DEV >>$seq.full 2>&1 + if [ $? -eq 0 ] ; then + # next, ensure we don't overwrite it + echo "=== Attempting XFS overwrite of $fs..." >>$seq.full + /sbin/mkfs.xfs $SCRATCH_DEV >>$seq.full 2>&1 - [ $? -eq 0 ] && echo "Failed - overwrote fs type ${fs}!" + [ $? -eq 0 ] && echo "Failed - overwrote fs type ${fs}!" + else + echo "mkfs of type ${fs} failed" >>$seq.full + fi ------------------ regards, chandra From sandeen@redhat.com Wed Jun 15 20:01:09 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 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 p5G119hr239552 for ; Wed, 15 Jun 2011 20:01:09 -0500 X-ASG-Debug-ID: 1308186068-64eb00810000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2D446171154B for ; Wed, 15 Jun 2011 18:01:08 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id a2eOs9MtMxQoTADZ for ; Wed, 15 Jun 2011 18:01:08 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5G117h6015912 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 15 Jun 2011 21:01:07 -0400 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id p5G112b9009504 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO); Wed, 15 Jun 2011 21:01:05 -0400 Message-ID: <4DF955CE.6090108@redhat.com> Date: Wed, 15 Jun 2011 20:01:02 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: sekharan@us.ibm.com CC: XFS Mailing List X-ASG-Orig-Subj: Re: xfstests test case 032 fails for wrong reason Subject: Re: xfstests test case 032 fails for wrong reason References: <1308185652.7661.492.camel@chandra-lucid.beaverton.ibm.com> In-Reply-To: <1308185652.7661.492.camel@chandra-lucid.beaverton.ibm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1308186069 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 6/15/11 7:54 PM, Chandra Seetharaman wrote: > Hello All, > > xfstests test case 032 creates different filesystems on the scratch > partition and tries mkfs.xfs on the same filesystem expecting it to > fail. > > In my system, for whatever reason, mkfs of btrfs fails which leads to > the test case failure like this: > ---------------- > FSTYP -- xfs (non-debug) > PLATFORM -- Linux/x86_64 elm3c201 2.6.39-rc4-xfs.git.p2+ > MKFS_OPTIONS -- -f -bsize=4096 /dev/sdd2 > MOUNT_OPTIONS -- -o > context=system_u:object_r:nfs_t:s0 /dev/sdd2 /mnt/xfsScratchMntPt > > 032 20s ... - output mismatch (see 032.out.bad) > --- 032.out 2011-06-10 17:25:22.000000000 -0700 > +++ 032.out.bad 2011-06-15 17:47:23.000000000 -0700 > @@ -1,2 +1,3 @@ > QA output created by 032 > Silence is golden. > +Failed - overwrote fs type btrfs! > Ran: 032 > Failures: 032 > Failed 1 of 1 tests > --------------------- > > which is incorrect. I am thinking of submitting the following change (to > run mkfs.xfs only if the preceding mkfs.$fs succeeds). Anybody has any > opinions or better suggestions ? Sounds like the right approach. Would be good to know why mkfs.btrfs failed too, though, just for informational reasons :) -Eric > --------------- > diff --git a/032 b/032 > index 839b913..4261ca2 100755 > --- a/032 > +++ b/032 > @@ -75,11 +75,15 @@ do > echo " ( $preop mkfs -t $fs $preargs $SCRATCH_DEV $postargs )" >>$seq.full > eval $preop mkfs -t $fs $preargs $SCRATCH_DEV $postargs >>$seq.full 2>&1 > > - # next, ensure we don't overwrite it > - echo "=== Attempting XFS overwrite of $fs..." >>$seq.full > - /sbin/mkfs.xfs $SCRATCH_DEV >>$seq.full 2>&1 > + if [ $? -eq 0 ] ; then > + # next, ensure we don't overwrite it > + echo "=== Attempting XFS overwrite of $fs..." >>$seq.full > + /sbin/mkfs.xfs $SCRATCH_DEV >>$seq.full 2>&1 > > - [ $? -eq 0 ] && echo "Failed - overwrote fs type ${fs}!" > + [ $? -eq 0 ] && echo "Failed - overwrote fs type ${fs}!" > + else > + echo "mkfs of type ${fs} failed" >>$seq.full > + fi > ------------------ > > regards, > > chandra > From stan@hardwarefreak.com Thu Jun 16 00:50:21 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5G5oKol003087 for ; Thu, 16 Jun 2011 00:50:21 -0500 X-ASG-Debug-ID: 1308203418-14d1025b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from greer.hardwarefreak.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D674FDBBFF7 for ; Wed, 15 Jun 2011 22:50:18 -0700 (PDT) Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id Tfz820wuZbShsFOa for ; Wed, 15 Jun 2011 22:50:18 -0700 (PDT) Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id D3BDD6C120; Thu, 16 Jun 2011 00:50:17 -0500 (CDT) Message-ID: <4DF9999B.7000209@hardwarefreak.com> Date: Thu, 16 Jun 2011 00:50:19 -0500 From: Stan Hoeppner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: NeilBrown CC: "fibreraid@gmail.com" , linux-raid , xfs-oss X-ASG-Orig-Subj: Re: md 3.2.1 and xfs kernel panic on Linux 2.6.38 Subject: Re: md 3.2.1 and xfs kernel panic on Linux 2.6.38 References: <20110616115531.298328f2@notabene.brown> In-Reply-To: <20110616115531.298328f2@notabene.brown> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1308203419 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66214 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On 6/15/2011 8:55 PM, NeilBrown wrote: > On Sun, 12 Jun 2011 11:50:01 -0700 "fibreraid@gmail.com" > wrote: > >> Hi All, Hi guys. I was racking my brain trying to figure out why this thread wasn't hitting the XFS list, and finally figured it out. Palm to forehead. It's 'xfs@oss.sgi.com' not 'linux-xfs@vger.kernel.org' >> I am benchmarking md RAID with XFS on a server running Linux 2.6.38 >> kernel. The server has 24 x HDD's, dual 2.4GHz 6-core CPUs, and 24GB >> RAM. What HBA(s)/RAID card(s)? BBWC enabled? >> I created an md0 array using RAID 5, 64k chunk, 23 active drives, and >> 1 hot-spare. I then created a LVM2 volume group from this md0, and >> created an LV out of it. The volume was formatted XFS as follows: >> >> /sbin/mkfs.xfs –f –l lazy-count=1 -l size=128m -s size=4096 >> /dev/mapper/pool1-vol1 With 22 stripe spindles you should have at least specified '-d sw=22' in mkfs.xfs. This would give better performance, though it should have nothing to do with the panic. >> I then mounted it as follows: >> >> /dev/mapper/pool1-vol1 on /volumes/pool1/vol1 type xfs >> (rw,_netdev,noatime,nodiratime,osyncisdsync,nobarrier,logbufs=8,delaylog) I'm wondering if specifying nobarrier might have something to do with the OP's issue. Does the system panic when using only defaults,delaylog >> Once md synchronization was complete, I removed one of the active 23 >> drives. After attempting some IO, the md0 array began to rebuild to >> the hot-spare. In a few hours, it was complete and the md0 array was >> listed as active and healthy again (though now lacking a hot-spare >> obviously). >> >> As a test, I removed one more drive to see what would happen. As >> expected, mdadm reported the array as active but degraded, and since >> there was no hot-spare available, there was no rebuilding happening. >> > .... >> >> What surprised me though is that I was no longer able to run IO on the >> md0 device. As a test, I am using fio to generate IO to the XFS >> mountpoint /volumes/pool1/vol1. However, IO failed. A few minutes >> later, I received the following kernel dumps in /var/log/messages. Any >> ideas? What happens when you test with something other than FIO? How about simply touching a file or creating a directory? >> >> >> Jun 12 11:33:54 TESTBA16 kernel: [59435.936575] fio D >> ffff88060c6e1a50 0 30463 1 0x00000000 >> Jun 12 11:33:54 TESTBA16 kernel: [59435.936578] ffff880609887778 >> 0000000000000086 0000000000000001 0000000000000086 >> Jun 12 11:33:54 TESTBA16 kernel: [59435.936581] 0000000000011e40 >> ffff88060c6e16c0 ffff88060c6e1a50 ffff880609887fd8 >> Jun 12 11:33:54 TESTBA16 kernel: [59435.936583] ffff88060c6e1a58 >> 0000000000011e40 ffff880609886010 0000000000011e40 >> Jun 12 11:33:54 TESTBA16 kernel: [59435.936586] Call Trace: >> Jun 12 11:33:54 TESTBA16 kernel: [59435.936594] [] >> make_request+0x138/0x3d0 [raid456] > >> >> The errors seem to be a combination of XFS and md related messages. >> Any insight into this issue would be greatly appreciated. Thanks! >> > > Very peculiar! > > It appears that make_request in raid5.c is entering schedule() in an > uninterruptible wait. > There are 4 places where make_request calls schedule. > 2 can only happen if the array is being reshaped (e.2. 5 drives to 6 drives) > but that does not appear to be happening. > 1 causes and interruptible wait, so it cannot be that one. > > That just leaves the one on line 4105. > This requires either than the stripe is being reshaped (which we already > decided isn't happening) or that md/raid5 has received overlapping requests. > > i.e. while one request (either read or write) was pending, another request > (either read or write, not necessarily the same) arrives for a range of > sectors which over-laps the previous request. > > When this happens (which it shouldn't because it would be dumb for a > filesystem to do that, but you never know) md/raid5 will wait for the first > request to be completely handled before letting the second proceed. > So we should be waiting here for at most a small fraction of a second. > Clearly we are waiting longer than that... With nobarrier set, I'm wondering if XFS is issuing overlapping writes to the same sector on the log device. Maybe the drives aren't responding quickly enough, causing the excess wait. > So this cannot possibly happen (as is so often the case when debugging :-) > > Hmmm... maybe we are missing the wakeup call. I can find where we wake-up > anyone waiting for an overlapping read request to complete, but I cannot find > where we wake-up someone waiting for when an overlapping write request > completes. That should probably go in handle_stripe_clean_event. I'm beginning to think this is a case of non enterprise drives (no TLER, etc) being used with a cache less HBA and without write barriers. This would definitely be a recipe for disaster from a data loss standpoint, though I'm not sure it should cause a kernel panic. > Do you have the system still hanging in this state? If not, can you get it > back into this state easily? > If so, you can force a wakeup with the magic incantation: > > cat /sys/block/mdXX/md/suspend_lo > /sys/block/mdXX/md/suspend_lo > > (with 'XX' suitably substituted). > > If that makes a difference, then I know I am on the right track Is there any downside to introducing such a wake-up for writers? -- Stan From BATV+e3504cbc5f765f75e945+2853+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 16 06:25:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5GBP12o028530 for ; Thu, 16 Jun 2011 06:25:01 -0500 X-ASG-Debug-ID: 1308223498-6b78037c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6931DA987; Thu, 16 Jun 2011 04:24:58 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id y7lHccLmOHBeMeJZ; Thu, 16 Jun 2011 04:24:58 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QXAgz-000473-3n; Thu, 16 Jun 2011 11:24:57 +0000 Date: Thu, 16 Jun 2011 07:24:57 -0400 From: Christoph Hellwig To: Alex Elder Cc: "xfs@oss.sgi.com" X-ASG-Orig-Subj: Re: [PATCH] xfs: make log devices with write back caches work Subject: Re: [PATCH] xfs: make log devices with write back caches work Message-ID: <20110616112457.GA12467@infradead.org> References: <20110527164137.GA5833@infradead.org> <1308163127.2893.58.camel@doink> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1308163127.2893.58.camel@doink> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308223498 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66236 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Wed, Jun 15, 2011 at 01:38:47PM -0500, Alex Elder wrote: > I questioned the "else" below. But as you mentioned on IRC > it makes sense because a realtime inode will never share the > same device target as the log (or later in this function, the > data device). A short mention of that in the comment above > might be reassuring. Similarly, I think it would be worthwhile > to mention the reason for doing this flush here *before* the > log gets forced. I'll update the comments. > If log_flushed is set on return here, does that also imply > that the actual blkdev flush of the log device (which is > possibly the data device) has occurred? It looks to > me like xlog_sync() marks each log buffer ordered but I > don't see the flush (though I didn't look *that* hard...). Yes. The XBF_ORDERED flag is a bit misnamed, but it causes the to set REQ_FLUSH_FUA and thus a full cache flush before the actual write. I have some patches in my queue for the next cycle to clean that naming up. > Breaking it down, we have either one or two devices to flush, > the log and either the realtime or (if external log) the data > device: > - realtime device (flush it before log device flush) > - data device (only if not realtime; do first if external log) > - log device (flush this last, realtime or not) If we have both an RT and a log device we might even have to flush all three. But the flush of the main device is trasparently handled in xlog_sync(). At this point we might double-flush the data device, but cleaning that up is more involved and I'll leave it for the next cycle. > > I may be wrong, but it seems like this may be the > logic you need: > > if (RT) > flush RT device > else if (external log) > flush data device > force the log > if (log device wasn't flushed when log forced) > flush log device > > The log device flush of course implies a data device flush > for an internal log. No, that's incorrect. If we have dirty data in the log that needs to be flushed (that is anything dirty for this inode is in the log), the log force does it for us. The flush of the data device after the log force is for the case where the log did not get flushed. That case only happens if we did overwrites of and already allocated file, and we're using fdatasync and thus don't flush out the timestamps. > > - if (log->l_mp->m_flags & XFS_MOUNT_BARRIER) > > + if (log->l_mp->m_flags & XFS_MOUNT_BARRIER) { > > + /* > > + * If we have an external log device, flush the data device > > + * before flushing the log. > > + */ > > + if (log->l_mp->m_logdev_targp != log->l_mp->m_ddev_targp) > > + xfs_blkdev_issue_flush(log->l_mp->m_ddev_targp); > > Shouldn't we flush the realtime device as well here, if present? No. The reason we flush the data device here is to make sure metadata written back from the AIL actually made it to disk before moving the log tail. None of that metadata is on the RT device. I'll add a comment explaning what we do here. From BATV+e3504cbc5f765f75e945+2853+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 16 06:33:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5GBXSm7028767 for ; Thu, 16 Jun 2011 06:33:29 -0500 X-ASG-Debug-ID: 1308224008-723f033e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 700174E1D7F for ; Thu, 16 Jun 2011 04:33:28 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id SryE2KXlDhnog2Hd for ; Thu, 16 Jun 2011 04:33:28 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QXAp7-0005xB-VV; Thu, 16 Jun 2011 11:33:22 +0000 Date: Thu, 16 Jun 2011 07:33:21 -0400 From: Christoph Hellwig To: Dave Chinner Cc: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/12] Per superblock cache reclaim Subject: Re: [PATCH 0/12] Per superblock cache reclaim Message-ID: <20110616113321.GA22422@infradead.org> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1306998067-27659-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308224008 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66236 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 Can we get some comments from the MM folks for patches 1-3? Those look like some pretty urgent fixes for really dumb shrinker behaviour. From BATV+e3504cbc5f765f75e945+2853+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 16 07:02:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_102, J_CHICKENPOX_53 autolearn=no version=3.4.0-r929098 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 p5GC2PrK029796 for ; Thu, 16 Jun 2011 07:02:25 -0500 X-ASG-Debug-ID: 1308225744-1356032f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B8321AC0F for ; Thu, 16 Jun 2011 05:02:24 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 1jfm80Cs6ArpRVwp for ; Thu, 16 Jun 2011 05:02:24 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QXBHD-0002cX-Rq for xfs@oss.sgi.com; Thu, 16 Jun 2011 12:02:23 +0000 Date: Thu, 16 Jun 2011 08:02:23 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH v2] xfs: make log devices with write back caches work Subject: [PATCH v2] xfs: make log devices with write back caches work Message-ID: <20110616120223.GA9854@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308225744 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66239 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 There's no reason not to support cache flushing on external log devices. The only thing this really requires is flushing the data device first both in fsync and log commits. A side effect is that we also have to remove the barrier write test during mount, which has been superflous since the new FLUSH+FUA code anyway. Also use the chance to flush the RT subvolume write cache before the fsync commit, which is required for correct semantics. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_file.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_file.c 2011-06-09 11:50:25.239644994 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_file.c 2011-06-16 13:27:37.680255105 +0200 @@ -131,19 +131,34 @@ xfs_file_fsync( { struct inode *inode = file->f_mapping->host; struct xfs_inode *ip = XFS_I(inode); + struct xfs_mount *mp = ip->i_mount; struct xfs_trans *tp; int error = 0; int log_flushed = 0; trace_xfs_file_fsync(ip); - if (XFS_FORCED_SHUTDOWN(ip->i_mount)) + if (XFS_FORCED_SHUTDOWN(mp)) return -XFS_ERROR(EIO); xfs_iflags_clear(ip, XFS_ITRUNCATED); xfs_ioend_wait(ip); + if (mp->m_flags & XFS_MOUNT_BARRIER) { + /* + * If we have an RT and/or log subvolume we need to make sure + * to flush the write cache the device used for file data + * first. This is to ensure newly written file data make + * it to disk before logging the new inode size in case of + * an extending write. + */ + if (XFS_IS_REALTIME_INODE(ip)) + xfs_blkdev_issue_flush(mp->m_rtdev_targp); + else if (mp->m_logdev_targp != mp->m_ddev_targp) + xfs_blkdev_issue_flush(mp->m_ddev_targp); + } + /* * We always need to make sure that the required inode state is safe on * disk. The inode might be clean but we still might need to force the @@ -175,9 +190,9 @@ xfs_file_fsync( * updates. The sync transaction will also force the log. */ xfs_iunlock(ip, XFS_ILOCK_SHARED); - tp = xfs_trans_alloc(ip->i_mount, XFS_TRANS_FSYNC_TS); + tp = xfs_trans_alloc(mp, XFS_TRANS_FSYNC_TS); error = xfs_trans_reserve(tp, 0, - XFS_FSYNC_TS_LOG_RES(ip->i_mount), 0, 0, 0); + XFS_FSYNC_TS_LOG_RES(mp), 0, 0, 0); if (error) { xfs_trans_cancel(tp, 0); return -error; @@ -209,28 +224,25 @@ xfs_file_fsync( * force the log. */ if (xfs_ipincount(ip)) { - error = _xfs_log_force_lsn(ip->i_mount, + error = _xfs_log_force_lsn(mp, ip->i_itemp->ili_last_lsn, XFS_LOG_SYNC, &log_flushed); } xfs_iunlock(ip, XFS_ILOCK_SHARED); } - if (ip->i_mount->m_flags & XFS_MOUNT_BARRIER) { - /* - * If the log write didn't issue an ordered tag we need - * to flush the disk cache for the data device now. - */ - if (!log_flushed) - xfs_blkdev_issue_flush(ip->i_mount->m_ddev_targp); - - /* - * If this inode is on the RT dev we need to flush that - * cache as well. - */ - if (XFS_IS_REALTIME_INODE(ip)) - xfs_blkdev_issue_flush(ip->i_mount->m_rtdev_targp); - } + /* + * If we only have a single device, and the log force about was + * a no-op we might have to flush the data device cache here. + * This can only happen for fdatasync/O_DSYNC if we were overwriting + * an already allocated file and thus do not have any metadata to + * commit. + */ + if ((mp->m_flags & XFS_MOUNT_BARRIER) && + mp->m_logdev_targp == mp->m_ddev_targp && + !XFS_IS_REALTIME_INODE(ip) && + !log_flushed) + xfs_blkdev_issue_flush(mp->m_ddev_targp); return -error; } Index: xfs/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_super.c 2011-06-16 13:10:42.240306517 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_super.c 2011-06-16 13:11:53.650302901 +0200 @@ -627,68 +627,6 @@ xfs_blkdev_put( blkdev_put(bdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL); } -/* - * Try to write out the superblock using barriers. - */ -STATIC int -xfs_barrier_test( - xfs_mount_t *mp) -{ - xfs_buf_t *sbp = xfs_getsb(mp, 0); - int error; - - XFS_BUF_UNDONE(sbp); - XFS_BUF_UNREAD(sbp); - XFS_BUF_UNDELAYWRITE(sbp); - XFS_BUF_WRITE(sbp); - XFS_BUF_UNASYNC(sbp); - XFS_BUF_ORDERED(sbp); - - xfsbdstrat(mp, sbp); - error = xfs_buf_iowait(sbp); - - /* - * Clear all the flags we set and possible error state in the - * buffer. We only did the write to try out whether barriers - * worked and shouldn't leave any traces in the superblock - * buffer. - */ - XFS_BUF_DONE(sbp); - XFS_BUF_ERROR(sbp, 0); - XFS_BUF_UNORDERED(sbp); - - xfs_buf_relse(sbp); - return error; -} - -STATIC void -xfs_mountfs_check_barriers(xfs_mount_t *mp) -{ - int error; - - if (mp->m_logdev_targp != mp->m_ddev_targp) { - xfs_notice(mp, - "Disabling barriers, not supported with external log device"); - mp->m_flags &= ~XFS_MOUNT_BARRIER; - return; - } - - if (xfs_readonly_buftarg(mp->m_ddev_targp)) { - xfs_notice(mp, - "Disabling barriers, underlying device is readonly"); - mp->m_flags &= ~XFS_MOUNT_BARRIER; - return; - } - - error = xfs_barrier_test(mp); - if (error) { - xfs_notice(mp, - "Disabling barriers, trial barrier write failed"); - mp->m_flags &= ~XFS_MOUNT_BARRIER; - return; - } -} - void xfs_blkdev_issue_flush( xfs_buftarg_t *buftarg) @@ -1240,14 +1178,6 @@ xfs_fs_remount( switch (token) { case Opt_barrier: mp->m_flags |= XFS_MOUNT_BARRIER; - - /* - * Test if barriers are actually working if we can, - * else delay this check until the filesystem is - * marked writeable. - */ - if (!(mp->m_flags & XFS_MOUNT_RDONLY)) - xfs_mountfs_check_barriers(mp); break; case Opt_nobarrier: mp->m_flags &= ~XFS_MOUNT_BARRIER; @@ -1282,8 +1212,6 @@ xfs_fs_remount( /* ro -> rw */ if ((mp->m_flags & XFS_MOUNT_RDONLY) && !(*flags & MS_RDONLY)) { mp->m_flags &= ~XFS_MOUNT_RDONLY; - if (mp->m_flags & XFS_MOUNT_BARRIER) - xfs_mountfs_check_barriers(mp); /* * If this is the first remount to writeable state we @@ -1465,9 +1393,6 @@ xfs_fs_fill_super( if (error) goto out_free_sb; - if (mp->m_flags & XFS_MOUNT_BARRIER) - xfs_mountfs_check_barriers(mp); - error = xfs_filestream_mount(mp); if (error) goto out_free_sb; Index: xfs/fs/xfs/xfs_log.c =================================================================== --- xfs.orig/fs/xfs/xfs_log.c 2011-06-09 11:50:25.266311660 +0200 +++ xfs/fs/xfs/xfs_log.c 2011-06-16 13:25:08.210262674 +0200 @@ -1372,8 +1372,17 @@ xlog_sync(xlog_t *log, XFS_BUF_ASYNC(bp); bp->b_flags |= XBF_LOG_BUFFER; - if (log->l_mp->m_flags & XFS_MOUNT_BARRIER) + if (log->l_mp->m_flags & XFS_MOUNT_BARRIER) { + /* + * If we have an external log device, flush the data device + * before flushing the log to make sure all meta data + * written back from the AIL actually made it to disk + * before writing out the new log tail LSN in the log buffer. + */ + if (log->l_mp->m_logdev_targp != log->l_mp->m_ddev_targp) + xfs_blkdev_issue_flush(log->l_mp->m_ddev_targp); XFS_BUF_ORDERED(bp); + } ASSERT(XFS_BUF_ADDR(bp) <= log->l_logBBsize-1); ASSERT(XFS_BUF_ADDR(bp) + BTOBB(count) <= log->l_logBBsize); From sandeen@sandeen.net Thu Jun 16 09:46:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5GEktXx039572 for ; Thu, 16 Jun 2011 09:46:56 -0500 X-ASG-Debug-ID: 1308235614-227502790000-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 DC6A5B4126A for ; Thu, 16 Jun 2011 07:46:54 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id Uk8YWpJk8ZHFB7P6 for ; Thu, 16 Jun 2011 07:46:54 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 0F5444964600; Thu, 16 Jun 2011 09:46:54 -0500 (CDT) Message-ID: <4DFA175D.9060005@sandeen.net> Date: Thu, 16 Jun 2011 09:46:53 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Manish Aggarwal CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: auto group failing on kernel v2.6.38.5 Subject: Re: auto group failing on kernel v2.6.38.5 References: <4DF8C9BD.6020104@sandeen.net> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1308235614 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0035 1.0000 -1.9981 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.30 X-Barracuda-Spam-Status: No, SCORE=1.30 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_VPILL X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66250 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 3.30 SUBJECT_FUZZY_VPILL Attempt to obfuscate words in Subject: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 6/16/11 12:05 AM, Manish Aggarwal wrote: > Hi Eric, > > Thanks for responding. Yes I agree most of the Test Cases are failed > due to the umount failure. > > But isn't the "quick and auto" group are supposed to run without any > error? Yes, but if that were guaranteed, there would be no reason to run them! :) > The point is in case I am running xfstest suite on some target, how > would I know that whether the there is some error with my target (or > kernel settings) or if there is some error in xfs test suite itself. The test suite is not perfect; it evolves, and there are bugs in it as with any other software. It is your role as a developer and as a user of the test suite to investigate failures, and discern where the problem lies. In general, the test suite works. Busy filesystems at unmount are not a common result, so you need to try to find out why you are running into that, and what the root cause may be ... Running on a usb stick is not something the core xfs developers do, so you may well run into unique issues. -Eric > Regards, Manish From Sean.Noonan@twosigma.com Thu Jun 16 09:49:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5GEnN1R039880 for ; Thu, 16 Jun 2011 09:49:24 -0500 X-ASG-Debug-ID: 1308235761-023402420000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx3.twosigma.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 51BA4171D121 for ; Thu, 16 Jun 2011 07:49:21 -0700 (PDT) Received: from mx3.twosigma.com (mx3.twosigma.com [208.77.213.34]) by cuda.sgi.com with ESMTP id NZHj5FhsAjftxHRk for ; Thu, 16 Jun 2011 07:49:21 -0700 (PDT) Received: by mx3.twosigma.com (Postfix, from userid 108) id E4064666FC; Thu, 16 Jun 2011 14:49:19 +0000 (UTC) Received: from msxaoa3.twosigma.com (nfw1-1-dmz.twosigma.com [208.77.213.62]) by mx3.twosigma.com (Postfix) with ESMTP id D2A3F66709 for ; Thu, 16 Jun 2011 14:49:15 +0000 (UTC) Received: from pfxnyc1.twosigma.com (192.168.30.150) by msxaoa3.twosigma.com (192.168.200.135) with Microsoft SMTP Server (TLS) id 8.1.340.0; Thu, 16 Jun 2011 10:49:15 -0400 Received: from msxaoa6.twosigma.com ([fe80:0000:0000:0000:5d02:8f37:242.212.227.132]) by pfxnyc1.twosigma.com ([192.168.30.150]) with mapi; Thu, 16 Jun 2011 10:49:15 -0400 From: Sean Noonan To: "'linux-xfs@oss.sgi.com'" CC: Trammell Hudson , Martin Bligh , Stephen Degler , Ian Baum Date: Thu, 16 Jun 2011 10:49:14 -0400 X-ASG-Orig-Subj: sparse file handling bug in XFS Subject: sparse file handling bug in XFS Thread-Topic: sparse file handling bug in XFS Thread-Index: AcwsNI92J2UXaJBBSPeiFOvG4Cz7Gw== Message-ID: <081DDE43F61F3D43929A181B477DCA95639B561F@MSXAOA6.twosigma.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Barracuda-Connect: mx3.twosigma.com[208.77.213.34] X-Barracuda-Start-Time: 1308235762 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0224 1.0000 -1.8753 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.64 X-Barracuda-Spam-Status: No, SCORE=-1.64 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RCVD_ILLEGAL_IP X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66249 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.23 RCVD_ILLEGAL_IP Received: contains illegal IP address X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Sparse files do not stay sparse. Here's the simplest test case I've got so far. I don't think it can get mu= ch simpler than this. This did not exist in 2.6.36. It appeared by 2.6.38-rc8. It continued int= o 2.6.38.2. It continues to exist on 3.0.0-rc3. # for x in gogo xfs; do date | dd of=3Dsparse-file bs=3D1k seek=3D4096; sta= t sparse-file; done 0+1 records in 0+1 records out 29 bytes (29 B) copied, 0.00151976 s, 19.1 kB/s File: `sparse-file' Size: 4194333 Blocks: 8 IO Block: 4096 regul= ar file Device: 6809h/26633d Inode: 12153368 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2011-06-14 13:56:43.826251881 +0000 Modify: 2011-06-14 13:56:43.826251881 +0000 Change: 2011-06-14 13:56:43.826251881 +0000 0+1 records in 0+1 records out 29 bytes (29 B) copied, 0.00152104 s, 19.1 kB/s File: `sparse-file' Size: 4194333 Blocks: 8192 IO Block: 4096 regul= ar file Device: 6809h/26633d Inode: 12153368 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2011-06-14 13:56:43.826251881 +0000 Modify: 2011-06-14 13:56:43.834252062 +0000 Change: 2011-06-14 13:56:43.834252062 +0000 For more fun, it even happens if we explicitly remove the file in between! = (It looks like this is just because the recently freed inode is reused and= not properly initialized.) FILE=3Dsparse-file-99; for x in gogo xfs; do rm -f $FILE; date | dd of=3D$F= ILE bs=3D1k seek=3D4096; stat $FILE; done 0+1 records in 0+1 records out 29 bytes (29 B) copied, 0.00151841 s, 19.1 kB/s File: `sparse-file-99' Size: 4194333 Blocks: 8 IO Block: 4096 regul= ar file Device: 6809h/26633d Inode: 12153371 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2011-06-14 14:03:37.933888145 +0000 Modify: 2011-06-14 14:03:37.937888543 +0000 Change: 2011-06-14 14:03:37.937888543 +0000 0+1 records in 0+1 records out 29 bytes (29 B) copied, 2.1681e-05 s, 1.3 MB/s File: `sparse-file-99' Size: 4194333 Blocks: 8192 IO Block: 4096 regul= ar file Device: 6809h/26633d Inode: 12153371 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2011-06-14 14:03:37.941888722 +0000 Modify: 2011-06-14 14:03:37.941888722 +0000 Change: 2011-06-14 14:03:37.941888722 +0000 Here is a run on ext3. Notice how blocks stays at 16. # for x in gogo xfs; do date | dd of=3Dsparse-file bs=3D1k seek=3D4096; sta= t sparse-file; done 0+1 records in 0+1 records out 29 bytes (29 B) copied, 0.00603038 s, 4.8 kB/s File: `sparse-file' Size: 4194333 Blocks: 16 IO Block: 4096 regular file Device: 6805h/26629d Inode: 24 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2011-06-16 14:48:32.480750867 +0000 Modify: 2011-06-16 14:48:32.480750867 +0000 Change: 2011-06-16 14:48:32.480750867 +0000 0+1 records in 0+1 records out 29 bytes (29 B) copied, 0.00125449 s, 23.1 kB/s File: `sparse-file' Size: 4194333 Blocks: 16 IO Block: 4096 regular file Device: 6805h/26629d Inode: 24 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2011-06-16 14:48:32.480750867 +0000 Modify: 2011-06-16 14:48:32.492751347 +0000 Change: 2011-06-16 14:48:32.492751347 +0000 From BATV+e3504cbc5f765f75e945+2853+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 16 10:09:46 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5GF9igO042078 for ; Thu, 16 Jun 2011 10:09:46 -0500 X-ASG-Debug-ID: 1308236983-041e00890000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 885B951D3DA for ; Thu, 16 Jun 2011 08:09:43 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id FpuD3G4CvaaIuIKq for ; Thu, 16 Jun 2011 08:09:43 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QXECT-0000hc-Eg; Thu, 16 Jun 2011 15:09:41 +0000 Date: Thu, 16 Jun 2011 11:09:41 -0400 From: Christoph Hellwig To: Goldwyn Rodrigues Cc: Christoph Hellwig , neilb@suse.de, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: suse xfs patches Subject: Re: suse xfs patches Message-ID: <20110616150941.GA28112@infradead.org> References: <20110614201238.GA17586@infradead.org> <20110614220550.GA9138@baloo.cartoons> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110614220550.GA9138@baloo.cartoons> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308236983 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66251 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Tue, Jun 14, 2011 at 05:05:50PM -0500, Goldwyn Rodrigues wrote: > > Yes sure. I suppose you are refering to the patch attached. > I did not send it upstream because the upstream code had taken a > different approach and the patch was relevant to the SLES kernel > tree only. That, and "XFS: force log before waiting for a pinned buffer". They look similar, but different enough from things that we have in mainline that make me really curious if you a) were hitting the same things, and b) came to different conclusions under different workloads. Looking over it in more detail the bufd patch should be fully superceed by current mainline code, altough less so by the commit you quote, but rather by the LRU-ification of the xfs_buf code. Similarly the other one you quote isn't really related to what you have in tree, in fact you are still missing that case in the suse tree - the addition to xfs_buf_lock that you're adding only in one caller was added in commit ed3b4d6cdc81e8feefdbfa3c584614be301b6d39, but that was still missing the trylock case. Either way the mainline code only handles pinned and stale buffers, which from my understanding are what matters, but the changelog from Neil reads like he saw a case where even non-stale buffers might matter - except that it's not explained very well. From sandeen@sandeen.net Thu Jun 16 11:08:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5GG8O2l045297 for ; Thu, 16 Jun 2011 11:08:25 -0500 X-ASG-Debug-ID: 1308240503-330501cb0000-w1Z2WR 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 0048E11E3DB1 for ; Thu, 16 Jun 2011 09:08:23 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id Nnr7kR9r1qL2rd4m for ; Thu, 16 Jun 2011 09:08:23 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id D8C744964600; Thu, 16 Jun 2011 11:08:22 -0500 (CDT) Message-ID: <4DFA2A76.6000104@sandeen.net> Date: Thu, 16 Jun 2011 11:08:22 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Sean Noonan CC: "'linux-xfs@oss.sgi.com'" , Martin Bligh , Trammell Hudson , Ian Baum , Stephen Degler X-ASG-Orig-Subj: Re: sparse file handling bug in XFS Subject: Re: sparse file handling bug in XFS References: <081DDE43F61F3D43929A181B477DCA95639B561F@MSXAOA6.twosigma.com> In-Reply-To: <081DDE43F61F3D43929A181B477DCA95639B561F@MSXAOA6.twosigma.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1308240504 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66256 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 6/16/11 9:49 AM, Sean Noonan wrote: > Sparse files do not stay sparse. > Here's the simplest test case I've got so far. I don't think it can get much simpler than this. > > This did not exist in 2.6.36. It appeared by 2.6.38-rc8. It continued into 2.6.38.2. It continues to exist on 3.0.0-rc3. > > # for x in gogo xfs; do date | dd of=sparse-file bs=1k seek=4096; stat sparse-file; done Funky; if we do xfs_bmap, it shows the right nr of blocks allocated: # for x in gogo xfs; do date | dd of=sparse-file bs=1k seek=4096; stat sparse-file | grep Blocks; xfs_bmap -v sparse-file; done Size: 4194333 Blocks: 8 IO Block: 4096 regular file sparse-file: EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL 0: [0..8191]: hole 8192 1: [8192..8199]: 450475168..450475175 2 (18736320..18736327) 8 Size: 4194333 Blocks: 8192 IO Block: 4096 regular file sparse-file: EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL 0: [0..8191]: hole 8192 1: [8192..8199]: 459367952..459367959 2 (27629104..27629111) 8 And if we unmount & remount it's right again: # stat sparse-file | grep Blocks Size: 4194333 Blocks: 8 IO Block: 4096 regular file so they do remain sparse, but stat tells us the wrong thing. I think it has to do with the count of delayed blocks but I'll try to look into it. -Eric From sekharan@us.ibm.com Thu Jun 16 11:31:46 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 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 p5GGVjkD046215 for ; Thu, 16 Jun 2011 11:31:45 -0500 X-ASG-Debug-ID: 1308241904-31d801d60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e5.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4804C171CDC4 for ; Thu, 16 Jun 2011 09:31:44 -0700 (PDT) Received: from e5.ny.us.ibm.com (e5.ny.us.ibm.com [32.97.182.145]) by cuda.sgi.com with ESMTP id sK7Akg2ShubWSE4Y for ; Thu, 16 Jun 2011 09:31:44 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay05.pok.ibm.com (d01relay05.pok.ibm.com [9.56.227.237]) by e5.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5GG3o5h011626 for ; Thu, 16 Jun 2011 12:03:50 -0400 Received: from d01av01.pok.ibm.com (d01av01.pok.ibm.com [9.56.224.215]) by d01relay05.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5GGVhvE154292 for ; Thu, 16 Jun 2011 12:31:43 -0400 Received: from d01av01.pok.ibm.com (loopback [127.0.0.1]) by d01av01.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5GGVe8X008235 for ; Thu, 16 Jun 2011 12:31:40 -0400 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d01av01.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5GGVag6007803; Thu, 16 Jun 2011 12:31:37 -0400 X-ASG-Orig-Subj: Re: xfstests test case 032 fails for wrong reason Subject: Re: xfstests test case 032 fails for wrong reason From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: Eric Sandeen Cc: XFS Mailing List In-Reply-To: <4DF955CE.6090108@redhat.com> References: <1308185652.7661.492.camel@chandra-lucid.beaverton.ibm.com> <4DF955CE.6090108@redhat.com> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Thu, 16 Jun 2011 09:31:35 -0700 Message-ID: <1308241896.5505.0.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e5.ny.us.ibm.com[32.97.182.145] X-Barracuda-Start-Time: 1308241905 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, 2011-06-15 at 20:01 -0500, Eric Sandeen wrote: > On 6/15/11 7:54 PM, Chandra Seetharaman wrote: > > Hello All, > > > > xfstests test case 032 creates different filesystems on the scratch > > partition and tries mkfs.xfs on the same filesystem expecting it to > > fail. > > > > In my system, for whatever reason, mkfs of btrfs fails which leads to > > the test case failure like this: > > ---------------- > > FSTYP -- xfs (non-debug) > > PLATFORM -- Linux/x86_64 elm3c201 2.6.39-rc4-xfs.git.p2+ > > MKFS_OPTIONS -- -f -bsize=4096 /dev/sdd2 > > MOUNT_OPTIONS -- -o > > context=system_u:object_r:nfs_t:s0 /dev/sdd2 /mnt/xfsScratchMntPt > > > > 032 20s ... - output mismatch (see 032.out.bad) > > --- 032.out 2011-06-10 17:25:22.000000000 -0700 > > +++ 032.out.bad 2011-06-15 17:47:23.000000000 -0700 > > @@ -1,2 +1,3 @@ > > QA output created by 032 > > Silence is golden. > > +Failed - overwrote fs type btrfs! > > Ran: 032 > > Failures: 032 > > Failed 1 of 1 tests > > --------------------- > > > > which is incorrect. I am thinking of submitting the following change (to > > run mkfs.xfs only if the preceding mkfs.$fs succeeds). Anybody has any > > opinions or better suggestions ? > > Sounds like the right approach. Would be good to know why mkfs.btrfs > failed too, though, just for informational reasons :) It is saved in $seq.full. Is that sufficient ? > > -Eric > > > --------------- > > diff --git a/032 b/032 > > index 839b913..4261ca2 100755 > > --- a/032 > > +++ b/032 > > @@ -75,11 +75,15 @@ do > > echo " ( $preop mkfs -t $fs $preargs $SCRATCH_DEV $postargs )" >>$seq.full > > eval $preop mkfs -t $fs $preargs $SCRATCH_DEV $postargs >>$seq.full 2>&1 > > > > - # next, ensure we don't overwrite it > > - echo "=== Attempting XFS overwrite of $fs..." >>$seq.full > > - /sbin/mkfs.xfs $SCRATCH_DEV >>$seq.full 2>&1 > > + if [ $? -eq 0 ] ; then > > + # next, ensure we don't overwrite it > > + echo "=== Attempting XFS overwrite of $fs..." >>$seq.full > > + /sbin/mkfs.xfs $SCRATCH_DEV >>$seq.full 2>&1 > > > > - [ $? -eq 0 ] && echo "Failed - overwrote fs type ${fs}!" > > + [ $? -eq 0 ] && echo "Failed - overwrote fs type ${fs}!" > > + else > > + echo "mkfs of type ${fs} failed" >>$seq.full > > + fi > > ------------------ > > > > regards, > > > > chandra > > > From aelder@sgi.com Thu Jun 16 11:32:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_53 autolearn=no version=3.4.0-r929098 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 p5GGWwJ7046272 for ; Thu, 16 Jun 2011 11:32:58 -0500 Received: from cas.corp.sgi.com (pv-excas1-dc21-nlb.corp.sgi.com [137.38.102.126]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6BB808F8738; Thu, 16 Jun 2011 09:32:55 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Thu, 16 Jun 2011 11:32:55 -0500 Subject: Re: [PATCH v2] xfs: make log devices with write back caches work From: Alex Elder Reply-To: To: Christoph Hellwig CC: In-Reply-To: <20110616120223.GA9854@infradead.org> References: <20110616120223.GA9854@infradead.org> Content-Type: text/plain; charset="UTF-8" Date: Thu, 16 Jun 2011 11:32:54 -0500 Message-ID: <1308241974.2717.1.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, 2011-06-16 at 08:02 -0400, Christoph Hellwig wrote: > There's no reason not to support cache flushing on external log devices. > The only thing this really requires is flushing the data device first > both in fsync and log commits. A side effect is that we also have to > remove the barrier write test during mount, which has been superflous > since the new FLUSH+FUA code anyway. Also use the chance to flush the > RT subvolume write cache before the fsync commit, which is required > for correct semantics. > > Signed-off-by: Christoph Hellwig Thanks for the explanations and update. This looks good. I'm testing now and barring a problem should be to Linus this weekend. Reviewed-by: Alex Elder From sandeen@redhat.com Thu Jun 16 11:46:16 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 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 p5GGkFBC046741 for ; Thu, 16 Jun 2011 11:46:16 -0500 X-ASG-Debug-ID: 1308242774-31d802630000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 70AF5171D9E8 for ; Thu, 16 Jun 2011 09:46:14 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id wQ94eSAqZIpPmZLp for ; Thu, 16 Jun 2011 09:46:14 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5GGjWhk007308 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 16 Jun 2011 12:46:14 -0400 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p5GGWSZY017302 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Thu, 16 Jun 2011 12:32:29 -0400 Message-ID: <4DFA301C.3050307@redhat.com> Date: Thu, 16 Jun 2011 11:32:28 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: sekharan@us.ibm.com CC: XFS Mailing List X-ASG-Orig-Subj: Re: xfstests test case 032 fails for wrong reason Subject: Re: xfstests test case 032 fails for wrong reason References: <1308185652.7661.492.camel@chandra-lucid.beaverton.ibm.com> <4DF955CE.6090108@redhat.com> <1308241896.5505.0.camel@chandra-lucid.beaverton.ibm.com> In-Reply-To: <1308241896.5505.0.camel@chandra-lucid.beaverton.ibm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1308242775 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 6/16/11 11:31 AM, Chandra Seetharaman wrote: > On Wed, 2011-06-15 at 20:01 -0500, Eric Sandeen wrote: >> On 6/15/11 7:54 PM, Chandra Seetharaman wrote: >>> Hello All, >>> >>> xfstests test case 032 creates different filesystems on the scratch >>> partition and tries mkfs.xfs on the same filesystem expecting it to >>> fail. >>> >>> In my system, for whatever reason, mkfs of btrfs fails which leads to >>> the test case failure like this: >>> ---------------- >>> FSTYP -- xfs (non-debug) >>> PLATFORM -- Linux/x86_64 elm3c201 2.6.39-rc4-xfs.git.p2+ >>> MKFS_OPTIONS -- -f -bsize=4096 /dev/sdd2 >>> MOUNT_OPTIONS -- -o >>> context=system_u:object_r:nfs_t:s0 /dev/sdd2 /mnt/xfsScratchMntPt >>> >>> 032 20s ... - output mismatch (see 032.out.bad) >>> --- 032.out 2011-06-10 17:25:22.000000000 -0700 >>> +++ 032.out.bad 2011-06-15 17:47:23.000000000 -0700 >>> @@ -1,2 +1,3 @@ >>> QA output created by 032 >>> Silence is golden. >>> +Failed - overwrote fs type btrfs! >>> Ran: 032 >>> Failures: 032 >>> Failed 1 of 1 tests >>> --------------------- >>> >>> which is incorrect. I am thinking of submitting the following change (to >>> run mkfs.xfs only if the preceding mkfs.$fs succeeds). Anybody has any >>> opinions or better suggestions ? >> >> Sounds like the right approach. Would be good to know why mkfs.btrfs >> failed too, though, just for informational reasons :) > > It is saved in $seq.full. Is that sufficient ? sure. Why -did- it fail, out of curiosity? -Eric >> >> -Eric >> >>> --------------- >>> diff --git a/032 b/032 >>> index 839b913..4261ca2 100755 >>> --- a/032 >>> +++ b/032 >>> @@ -75,11 +75,15 @@ do >>> echo " ( $preop mkfs -t $fs $preargs $SCRATCH_DEV $postargs )" >>$seq.full >>> eval $preop mkfs -t $fs $preargs $SCRATCH_DEV $postargs >>$seq.full 2>&1 >>> >>> - # next, ensure we don't overwrite it >>> - echo "=== Attempting XFS overwrite of $fs..." >>$seq.full >>> - /sbin/mkfs.xfs $SCRATCH_DEV >>$seq.full 2>&1 >>> + if [ $? -eq 0 ] ; then >>> + # next, ensure we don't overwrite it >>> + echo "=== Attempting XFS overwrite of $fs..." >>$seq.full >>> + /sbin/mkfs.xfs $SCRATCH_DEV >>$seq.full 2>&1 >>> >>> - [ $? -eq 0 ] && echo "Failed - overwrote fs type ${fs}!" >>> + [ $? -eq 0 ] && echo "Failed - overwrote fs type ${fs}!" >>> + else >>> + echo "mkfs of type ${fs} failed" >>$seq.full >>> + fi >>> ------------------ >>> >>> regards, >>> >>> chandra >>> >> > > From sekharan@us.ibm.com Thu Jun 16 12:01:28 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5GH1S8I047361 for ; Thu, 16 Jun 2011 12:01:28 -0500 X-ASG-Debug-ID: 1308243687-29bc035d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e5.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1C0B0A145 for ; Thu, 16 Jun 2011 10:01:27 -0700 (PDT) Received: from e5.ny.us.ibm.com (e5.ny.us.ibm.com [32.97.182.145]) by cuda.sgi.com with ESMTP id IYDRulolSpkqtEpy for ; Thu, 16 Jun 2011 10:01:27 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay04.pok.ibm.com (d01relay04.pok.ibm.com [9.56.227.236]) by e5.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5GGXXL5016285 for ; Thu, 16 Jun 2011 12:33:33 -0400 Received: from d01av01.pok.ibm.com (d01av01.pok.ibm.com [9.56.224.215]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5GH1QMP116132 for ; Thu, 16 Jun 2011 13:01:26 -0400 Received: from d01av01.pok.ibm.com (loopback [127.0.0.1]) by d01av01.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5GH1Ek9026620 for ; Thu, 16 Jun 2011 13:01:14 -0400 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d01av01.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5GH1CZ9026506; Thu, 16 Jun 2011 13:01:12 -0400 X-ASG-Orig-Subj: [PATCH]: [xfstests] test 032: Run mkfs.xfs only if the prior mkfs.${fs} succeded Subject: [PATCH]: [xfstests] test 032: Run mkfs.xfs only if the prior mkfs.${fs} succeded From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: XFS Mailing List Cc: Eric Sandeen Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Thu, 16 Jun 2011 10:01:11 -0700 Message-ID: <1308243671.5505.4.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e5.ny.us.ibm.com[32.97.182.145] X-Barracuda-Start-Time: 1308243688 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 test fails when mkfs of a different filesystem fails, which is not a failure case for this specific test. Hence, change the test to run mkfs.xfs only if the prior mkfs.${fs} on different filesystem succeded. Signed-Off-By: Chandra Seetharaman --- diff --git a/032 b/032 index 839b913..4261ca2 100755 --- a/032 +++ b/032 @@ -75,11 +75,15 @@ do echo " ( $preop mkfs -t $fs $preargs $SCRATCH_DEV $postargs )" >>$seq.full eval $preop mkfs -t $fs $preargs $SCRATCH_DEV $postargs >>$seq.full 2>&1 - # next, ensure we don't overwrite it - echo "=== Attempting XFS overwrite of $fs..." >>$seq.full - /sbin/mkfs.xfs $SCRATCH_DEV >>$seq.full 2>&1 + if [ $? -eq 0 ] ; then + # next, ensure we don't overwrite it + echo "=== Attempting XFS overwrite of $fs..." >>$seq.full + /sbin/mkfs.xfs $SCRATCH_DEV >>$seq.full 2>&1 - [ $? -eq 0 ] && echo "Failed - overwrote fs type ${fs}!" + [ $? -eq 0 ] && echo "Failed - overwrote fs type ${fs}!" + else + echo "mkfs of type ${fs} failed" >>$seq.full + fi done # success, all done From aelder@sgi.com Thu Jun 16 12:14:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5GHETlO047862 for ; Thu, 16 Jun 2011 12:14:29 -0500 Received: from cas.corp.sgi.com (pv-excas1-dc21.corp.sgi.com [137.38.102.116]) by relay3.corp.sgi.com (Postfix) with ESMTP id B270CAC001; Thu, 16 Jun 2011 10:14:25 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Thu, 16 Jun 2011 12:14:25 -0500 Subject: Re: [PATCH] [RFC] xfs: introduce an allocation workqueue From: Alex Elder Reply-To: To: Dave Chinner CC: "xfs@oss.sgi.com" In-Reply-To: <20110415014928.GM21395@dastard> References: <1302616337-29894-1-git-send-email-david@fromorbit.com> <1302809374.2608.73.camel@doink> <20110415014928.GM21395@dastard> Content-Type: text/plain; charset="UTF-8" Date: Thu, 16 Jun 2011 12:14:24 -0500 Message-ID: <1308244464.2717.13.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 8bit X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, 2011-04-14 at 20:49 -0500, Dave Chinner wrote: > On Thu, Apr 14, 2011 at 02:29:34PM -0500, Alex Elder wrote: > > On Tue, 2011-04-12 at 23:52 +1000, Dave Chinner wrote: > > > From: Dave Chinner > > > > > > We currently have significant issues with the amount of stack that > > > allocation in XFS uses, especially in the writeback path. We can > > > easily consume 4k of stack between mapping the page, manipulating > > > the bmap btree and allocating blocks from the free list. Not to > > > mention btree block readahead and other functionality that issues IO > > > in the allocation path. > > > > > > As a result, we can no longer fit allocation in the writeback path > > > in the stack space provided on x86_64. To alleviate this problem, > > > introduce an allocation workqueue and move all allocations to a > > > seperate context. This can be easily added as an interposing layer > > > into xfs_alloc_vextent(), which takes a single argument structure > > > and does not return until the allocation is complete or has failed. > > > > > > To do this, add a work structure and a completion to the allocation > > > args structure. This allows xfs_alloc_vextent to queue the args onto > > > the workqueue and wait for it to be completed by the worker. This > > > can be done completely transparently to the caller. > > > > > > The worker function needs to ensure that it sets and clears the > > > PF_MEMALLOC flag appropriately as it is being run in an active > > > tranÑ•action context. Work can also be queued in a memory reclaim > > > context, so a rescuer is needed for the workqueue. > > > > > > Signed-off-by: Dave Chinner > > > > Interesting. > > > > I guess I don't see anything inherently wrong with this. > > At first glance it seems like workqueue abuse. But it's > > better than rolling our own daemon to do the same thing. > > (There's nothing to stop you from doing this generically > > either...) > > > > Will it shift some accounting of CPU time from user to > > system? > > Some, yes. For delayed allocation in the background flush or sync > path, there is no difference because that isn't accounted to the > user anyway. The only cases it will make a difference are for > foreground writeback (e.g. fsync or write throttling), and for inode > and directory allocation. Linus made a comment relevant to this yesterday, but in reference to RCU making use of kernel threads: Re: REGRESSION: Performance regressions from switching anon_vma->lock to mutex So using anonymous kernel threads is actually a real downside. It makes it much less obvious what is going on. We saw that exact same thing with the generic worker thread conversions: things that used to have clear performance issues ("oh, the iwl-phy0 thread is using 3% of CPU time because it is polling for IO, and I can see that in 'top'") turned into much-harder-to-see issues ("oh, kwork0 us using 3% CPU time according to 'top' - I have no idea why"). Maybe if there were a way to reuse the generic worker infrastructure but have it associated with a kernel module or something. Then again that is sort of contrary to the purpose of the generic centrally-managed pool. Maybe if generic work could somehow get tagged with its real owner or origin it would be better, but I really have no idea how one would go about that. In any case, I think we need to be cautious about moving in this direction. -Alex > > The code looks OK to me. The idea of it makes me pause > > a little, though I don't object. > > It's definitely a different way of thinking, but I'm seriously > starting to consider pushing more operations into asychronous > background tasks that the caller can wait on if they so desire. > e.g. EOF truncation during xfs_inactive and xfs_release(), flushing > a range of a file, inode cluster freeing, CIL flushes, etc. > > We've got multiple cores in most machines these days (even the low > end is going multi-core), context switch overhead is pretty low and > we've got concurrency managed work queues so we don't need thread > pools - we should take advantage of what they provide.... > > Cheers, > > Dave. From sandeen@sandeen.net Thu Jun 16 12:33:52 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5GHXpSq048620 for ; Thu, 16 Jun 2011 12:33:51 -0500 X-ASG-Debug-ID: 1308245629-0a50015f0000-w1Z2WR 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 C6FFCDC9156 for ; Thu, 16 Jun 2011 10:33:49 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id B6o22GlkeZz5eUDx for ; Thu, 16 Jun 2011 10:33:49 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 109804964600; Thu, 16 Jun 2011 12:33:49 -0500 (CDT) Message-ID: <4DFA3E7D.4030408@sandeen.net> Date: Thu, 16 Jun 2011 12:33:49 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Sean Noonan CC: "'linux-xfs@oss.sgi.com'" , Martin Bligh , Stephen Degler , Ian Baum , Trammell Hudson X-ASG-Orig-Subj: Re: sparse file handling bug in XFS Subject: Re: sparse file handling bug in XFS References: <081DDE43F61F3D43929A181B477DCA95639B561F@MSXAOA6.twosigma.com> <4DFA2A76.6000104@sandeen.net> In-Reply-To: <4DFA2A76.6000104@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1308245630 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66260 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 6/16/11 11:08 AM, Eric Sandeen wrote: > On 6/16/11 9:49 AM, Sean Noonan wrote: >> Sparse files do not stay sparse. >> Here's the simplest test case I've got so far. I don't think it can get much simpler than this. >> >> This did not exist in 2.6.36. It appeared by 2.6.38-rc8. It continued into 2.6.38.2. It continues to exist on 3.0.0-rc3. >> >> # for x in gogo xfs; do date | dd of=sparse-file bs=1k seek=4096; stat sparse-file; done > > Funky; if we do xfs_bmap, it shows the right nr of blocks allocated: > > # for x in gogo xfs; do date | dd of=sparse-file bs=1k seek=4096; stat sparse-file | grep Blocks; xfs_bmap -v sparse-file; done > Size: 4194333 Blocks: 8 IO Block: 4096 regular file > sparse-file: > EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL > 0: [0..8191]: hole 8192 > 1: [8192..8199]: 450475168..450475175 2 (18736320..18736327) 8 > > Size: 4194333 Blocks: 8192 IO Block: 4096 regular file > sparse-file: > EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL > 0: [0..8191]: hole 8192 > 1: [8192..8199]: 459367952..459367959 2 (27629104..27629111) 8 > > > And if we unmount & remount it's right again: > > # stat sparse-file | grep Blocks > Size: 4194333 Blocks: 8 IO Block: 4096 regular file > > so they do remain sparse, but stat tells us the wrong thing. I think it has > to do with the count of delayed blocks but I'll try to look into it. Actually this looks like it's a result of 6e857567dbbfe14dd6cc3f7414671b047b1ff5c7 xfs: don't truncate prealloc from frequently accessed inodes I thought Dave's patch from the "Re: drastic changes to allocsize semantics in or around 2.6.38?" thread would fix it, but it doesn't seem to. Here it is anyway ;) xfs: clear inode dirty release flag when recycling it From: Dave Chinner The state used to track dirty inode release calls is not reset when an inode is reallocated and reused from the reclaimable state. This leads to specualtive preallocation not being truncated away in the expected manner for local files until the inode is subsequently truncated, freed or cycles out of the cache. Signed-off-by: Dave Chinner --- fs/xfs/xfs_iget.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c index cb9b6d1..e75e757 100644 --- a/fs/xfs/xfs_iget.c +++ b/fs/xfs/xfs_iget.c @@ -241,6 +241,13 @@ xfs_iget_cache_hit( */ ip->i_flags |= XFS_IRECLAIM; + /* + * clear the dirty release state as we are now effectively a + * new inode and so we need to treat speculative preallocation + * accordingly. + */ + ip->i_flags &= ~XFS_IDIRTY_RELEASE; + spin_unlock(&ip->i_flags_lock); rcu_read_unlock(); -Eric From BATV+e3504cbc5f765f75e945+2853+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 16 12:57:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5GHvn9k049529 for ; Thu, 16 Jun 2011 12:57:50 -0500 X-ASG-Debug-ID: 1308247065-696903220000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7D9A4C463 for ; Thu, 16 Jun 2011 10:57:46 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id BRQeELWuJ680qbgU for ; Thu, 16 Jun 2011 10:57:46 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QXGp5-0005Mx-Js; Thu, 16 Jun 2011 17:57:43 +0000 Date: Thu, 16 Jun 2011 13:57:43 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: Sean Noonan , "'linux-xfs@oss.sgi.com'" , Martin Bligh , Trammell Hudson , Ian Baum , Stephen Degler X-ASG-Orig-Subj: Re: sparse file handling bug in XFS Subject: Re: sparse file handling bug in XFS Message-ID: <20110616175743.GA20570@infradead.org> References: <081DDE43F61F3D43929A181B477DCA95639B561F@MSXAOA6.twosigma.com> <4DFA2A76.6000104@sandeen.net> <4DFA3E7D.4030408@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DFA3E7D.4030408@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308247066 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66263 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Thu, Jun 16, 2011 at 12:33:49PM -0500, Eric Sandeen wrote: > Actually this looks like it's a result of > > 6e857567dbbfe14dd6cc3f7414671b047b1ff5c7 xfs: don't truncate prealloc from frequently accessed inodes > > I thought Dave's patch from the "Re: drastic changes to allocsize semantics in or around 2.6.38?" > thread would fix it, but it doesn't seem to. Here it is anyway ;) It should fix the thing about the preallocation staying when removing and recreating the file. Keeping pre-allocate blocks around otherwise is a considered a feature. From BATV+e3504cbc5f765f75e945+2853+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 16 12:58:28 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5GHwSii049590 for ; Thu, 16 Jun 2011 12:58:28 -0500 X-ASG-Debug-ID: 1308247107-2c70008e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C4607DC959F for ; Thu, 16 Jun 2011 10:58:27 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id AEs06z4b7Im2CP1P for ; Thu, 16 Jun 2011 10:58:27 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QXGpj-0005NI-MK; Thu, 16 Jun 2011 17:58:23 +0000 Date: Thu, 16 Jun 2011 13:58:23 -0400 From: Christoph Hellwig To: Chandra Seetharaman Cc: XFS Mailing List , Eric Sandeen X-ASG-Orig-Subj: Re: [PATCH]: [xfstests] test 032: Run mkfs.xfs only if the prior mkfs.${fs} succeded Subject: Re: [PATCH]: [xfstests] test 032: Run mkfs.xfs only if the prior mkfs.${fs} succeded Message-ID: <20110616175823.GB20570@infradead.org> References: <1308243671.5505.4.camel@chandra-lucid.beaverton.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1308243671.5505.4.camel@chandra-lucid.beaverton.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308247107 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66262 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Thu, Jun 16, 2011 at 10:01:11AM -0700, Chandra Seetharaman wrote: > This test fails when mkfs of a different filesystem fails, which is not > a failure case for this specific test. > > Hence, change the test to run mkfs.xfs only if the prior mkfs.${fs} on > different filesystem succeded. > > Signed-Off-By: Chandra Seetharaman Looks good, I'll put it in. From aelder@oss.sgi.com Thu Jun 16 15:21:27 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=ALL_TRUSTED,BAYES_00, J_CHICKENPOX_53 autolearn=no version=3.4.0-r929098 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 p5GKLRHS061028 for ; Thu, 16 Jun 2011 15:21:27 -0500 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id p5GKLP0j060995; Thu, 16 Jun 2011 15:21:25 -0500 Date: Thu, 16 Jun 2011 15:21:25 -0500 Message-Id: <201106162021.p5GKLP0j060995@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.38-18959-ga27a263 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 59c5f46fbe01a00eedf54a23789634438bb80603 X-Git-Newrev: a27a263bae072a499acc77b632238a6dacccf888 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 a27a263 xfs: make log devices with write back caches work c46a131 xfs: fix ->mknod() return value on xfs_get_acl() failure from 59c5f46fbe01a00eedf54a23789634438bb80603 (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 a27a263bae072a499acc77b632238a6dacccf888 Author: Christoph Hellwig Date: Thu Jun 16 12:02:23 2011 +0000 xfs: make log devices with write back caches work There's no reason not to support cache flushing on external log devices. The only thing this really requires is flushing the data device first both in fsync and log commits. A side effect is that we also have to remove the barrier write test during mount, which has been superflous since the new FLUSH+FUA code anyway. Also use the chance to flush the RT subvolume write cache before the fsync commit, which is required for correct semantics. Signed-off-by: Christoph Hellwig Signed-off-by: Alex Elder commit c46a131c0c0f4c2457e6b1e430c578a5cb057334 Author: Al Viro Date: Sun Jun 5 11:12:31 2011 +0000 xfs: fix ->mknod() return value on xfs_get_acl() failure ->mknod() should return negative on errors and PTR_ERR() gives already negative value... Signed-off-by: Al Viro Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_file.c | 50 +++++++++++++++++---------- fs/xfs/linux-2.6/xfs_iops.c | 2 +- fs/xfs/linux-2.6/xfs_super.c | 75 ------------------------------------------ fs/xfs/xfs_log.c | 11 +++++- 4 files changed, 42 insertions(+), 96 deletions(-) hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Thu Jun 16 15:21:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=ALL_TRUSTED,BAYES_00, J_CHICKENPOX_53 autolearn=no version=3.4.0-r929098 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 p5GKLcQc061182 for ; Thu, 16 Jun 2011 15:21:38 -0500 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id p5GKLZJG061095; Thu, 16 Jun 2011 15:21:35 -0500 Date: Thu, 16 Jun 2011 15:21:35 -0500 Message-Id: <201106162021.p5GKLZJG061095@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-linus, updated. v2.6.38-18959-ga27a263 X-Git-Refname: refs/heads/for-linus X-Git-Reftype: branch X-Git-Oldrev: 233eebb9a96f956c541c0c9094fd321894bd93a7 X-Git-Newrev: a27a263bae072a499acc77b632238a6dacccf888 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-linus has been updated a27a263 xfs: make log devices with write back caches work c46a131 xfs: fix ->mknod() return value on xfs_get_acl() failure aa38572 fs: pass exact type of data dirties to ->dirty_inode 8a0599d Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs 1495f23 vmscan: change shrinker API by passing shrink_control struct a77febb Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs 57d19e8 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 70f23fd treewide: fix a few typos in comments 7ac9565 xfs: fix race condition in AIL push trigger fe0da76 xfs: make AIL target updates and compares 32bit safe. 50e8668 xfs: always push the AIL to the target 9e7004e xfs: exit AIL push work correctly when AIL is empty 228d62d xfs: ensure reclaim cursor is reset correctly at end of AG from 233eebb9a96f956c541c0c9094fd321894bd93a7 (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 a27a263bae072a499acc77b632238a6dacccf888 Author: Christoph Hellwig Date: Thu Jun 16 12:02:23 2011 +0000 xfs: make log devices with write back caches work There's no reason not to support cache flushing on external log devices. The only thing this really requires is flushing the data device first both in fsync and log commits. A side effect is that we also have to remove the barrier write test during mount, which has been superflous since the new FLUSH+FUA code anyway. Also use the chance to flush the RT subvolume write cache before the fsync commit, which is required for correct semantics. Signed-off-by: Christoph Hellwig Signed-off-by: Alex Elder commit c46a131c0c0f4c2457e6b1e430c578a5cb057334 Author: Al Viro Date: Sun Jun 5 11:12:31 2011 +0000 xfs: fix ->mknod() return value on xfs_get_acl() failure ->mknod() should return negative on errors and PTR_ERR() gives already negative value... Signed-off-by: Al Viro Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit aa38572954ade525817fe88c54faebf85e5a61c0 Author: Christoph Hellwig Date: Fri May 27 06:53:02 2011 -0400 fs: pass exact type of data dirties to ->dirty_inode Tell the filesystem if we just updated timestamp (I_DIRTY_SYNC) or anything else, so that the filesystem can track internally if it needs to push out a transaction for fdatasync or not. This is just the prototype change with no user for it yet. I plan to push large XFS changes for the next merge window, and getting this trivial infrastructure in this window would help a lot to avoid tree interdependencies. Also remove incorrect comments that ->dirty_inode can't block. That has been changed a long time ago, and many implementations rely on it. Signed-off-by: Christoph Hellwig Signed-off-by: Al Viro commit 8a0599dd2471f2a2e409498c08a0ab339057ad06 Merge: 35806b4f7c5620b547f183e9d53f7cfaeabb582b 233eebb9a96f956c541c0c9094fd321894bd93a7 Author: Linus Torvalds Date: Thu May 26 10:49:11 2011 -0700 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs * 'for-linus' of git://oss.sgi.com/xfs/xfs: xfs: correctly decrement the extent buffer index in xfs_bmap_del_extent xfs: check for valid indices in xfs_iext_get_ext and xfs_iext_idx_to_irec xfs: fix up asserts in xfs_iflush_fork xfs: do not do pointer arithmetic on extent records xfs: do not use unchecked extent indices in xfs_bunmapi xfs: do not use unchecked extent indices in xfs_bmapi xfs: do not use unchecked extent indices in xfs_bmap_add_extent_* xfs: remove if_lastex xfs: remove the unused XFS_BMAPI_RSVBLOCKS flag xfs: do not discard alloc btree blocks xfs: add online discard support commit 1495f230fa7750479c79e3656286b9183d662077 Author: Ying Han Date: Tue May 24 17:12:27 2011 -0700 vmscan: change shrinker API by passing shrink_control struct Change each shrinker's API by consolidating the existing parameters into shrink_control struct. This will simplify any further features added w/o touching each file of shrinker. [akpm@linux-foundation.org: fix build] [akpm@linux-foundation.org: fix warning] [kosaki.motohiro@jp.fujitsu.com: fix up new shrinker API] [akpm@linux-foundation.org: fix xfs warning] [akpm@linux-foundation.org: update gfs2] Signed-off-by: Ying Han Cc: KOSAKI Motohiro Cc: Minchan Kim Acked-by: Pavel Emelyanov Cc: KAMEZAWA Hiroyuki Cc: Mel Gorman Acked-by: Rik van Riel Cc: Johannes Weiner Cc: Hugh Dickins Cc: Dave Hansen Cc: Steven Whitehouse Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit a77febbef105554c5a37241cf903f48ab7bc03c7 Merge: 42cd71bf1e3a081b3150018bbf448cb6c8a844a5 bf59170a66bc3eaf3ee513aa6ce9774aa2ab5188 Author: Linus Torvalds Date: Mon May 23 15:19:16 2011 -0700 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs * 'for-linus' of git://oss.sgi.com/xfs/xfs: xfs: obey minleft values during extent allocation correctly xfs: reset buffer pointers before freeing them xfs: avoid getting stuck during async inode flushes xfs: fix xfs_itruncate_start tracing xfs: fix duplicate workqueue initialisation xfs: kill off xfs_printk() xfs: fix race condition in AIL push trigger xfs: make AIL target updates and compares 32bit safe. xfs: always push the AIL to the target xfs: exit AIL push work correctly when AIL is empty xfs: ensure reclaim cursor is reset correctly at end of AG xfs: add an x86 compat handler for XFS_IOC_ZERO_RANGE xfs: fix compiler warning in xfs_trace.h xfs: cleanup duplicate initializations xfs: reduce the number of pagb_lock roundtrips in xfs_alloc_clear_busy xfs: exact busy extent tracking xfs: do not immediately reuse busy extent ranges xfs: optimize AGFL refills commit 57d19e80f459dd845fb3cfeba8e6df8471bac142 Merge: ee9ec4f82049c678373a611ce20ac67fe9ad836e e64851f5a0ad6ec991f74ebb3108c35aa0323d5f Author: Linus Torvalds Date: Mon May 23 09:12:26 2011 -0700 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits) b43: fix comment typo reqest -> request Haavard Skinnemoen has left Atmel cris: typo in mach-fs Makefile Kconfig: fix copy/paste-ism for dell-wmi-aio driver doc: timers-howto: fix a typo ("unsgined") perf: Only include annotate.h once in tools/perf/util/ui/browsers/annotate.c md, raid5: Fix spelling error in comment ('Ofcourse' --> 'Of course'). treewide: fix a few typos in comments regulator: change debug statement be consistent with the style of the rest Revert "arm: mach-u300/gpio: Fix mem_region resource size miscalculations" audit: acquire creds selectively to reduce atomic op overhead rtlwifi: don't touch with treewide double semicolon removal treewide: cleanup continuations and remove logging message whitespace ath9k_hw: don't touch with treewide double semicolon removal include/linux/leds-regulator.h: fix syntax in example code tty: fix typo in descripton of tty_termios_encode_baud_rate xtensa: remove obsolete BKL kernel option from defconfig m68k: fix comment typo 'occcured' arch:Kconfig.locks Remove unused config option. treewide: remove extra semicolons ... commit 70f23fd66bc821a0e99647f70a809e277cc93c4c Author: Justin P. Mattock Date: Tue May 10 10:16:21 2011 +0200 treewide: fix a few typos in comments - kenrel -> kernel - whetehr -> whether - ttt -> tt - sss -> ss Signed-off-by: Justin P. Mattock Signed-off-by: Jiri Kosina commit 7ac956576d0ce8f97450a39c2f304db8eea01647 Author: Dave Chinner Date: Fri May 6 02:54:08 2011 +0000 xfs: fix race condition in AIL push trigger The recent conversion of the xfsaild functionality to a work queue introduced a hard-to-hit log space grant hang. One is caused by a race condition in determining whether there is a psh in progress or not. The XFS_AIL_PUSHING_BIT is used to determine whether a push is currently in progress. When the AIL push work completes, it checked whether the target changed and cleared the PUSHING bit to allow a new push to be requeued. The race condition is as follows: Thread 1 push work smp_wmb() smp_rmb() check ailp->xa_target unchanged update ailp->xa_target test/set PUSHING bit does not queue clear PUSHING bit does not requeue Now that the push target is updated, new attempts to push the AIL will not trigger as the push target will be the same, and hence despite trying to push the AIL we won't ever wake it again. The fix is to ensure that the AIL push work clears the PUSHING bit before it checks if the target is unchanged. As a result, both push triggers operate on the same test/set bit criteria, so even if we race in the push work and miss the target update, the thread requesting the push will still set the PUSHING bit and queue the push work to occur. For safety sake, the same queue check is done if the push work detects the target change, though only one of the two will will queue new work due to the use of test_and_set_bit() checks. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Reviewed-by: Alex Elder (cherry picked from commit e4d3c4a43b595d5124ae824d300626e6489ae857) commit fe0da767311933d1c1907cb8d326beea7a3cbd9c Author: Dave Chinner Date: Fri May 6 02:54:07 2011 +0000 xfs: make AIL target updates and compares 32bit safe. The recent conversion of the xfsaild functionality to a work queue introduced a hard-to-hit log space grant hang. One of the problems noticed was that updates of the push target are not 32 bit safe as the target is a 64 bit value. We cannot copy a 64 bit LSN without the possibility of corrupting the result when racing with another updating thread. We have function to do this update safely without needing to care about 32/64 bit issues - xfs_trans_ail_copy_lsn() - so use that when updating the AIL push target. Also move the reading of the target in the push work inside the AIL lock, and use XFS_LSN_CMP() for the unlocked comparison during work termination to close read holes as well. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Reviewed-by: Alex Elder (cherry picked from commit fd5670f22fce247754243cf2ed41941e5762d990) commit 50e86686dfb287d720af8b0f977202d205c04215 Author: Dave Chinner Date: Fri May 6 02:54:06 2011 +0000 xfs: always push the AIL to the target The recent conversion of the xfsaild functionality to a work queue introduced a hard-to-hit log space grant hang. One of the problems discovered is a target mismatch between the item pushing loop and the target itself. The push trigger checks for the target increasing (i.e. new target > current) while the push loop only pushes items that have a LSN < current. As a result, we can get the situation where the push target is X, the items at the tail of the AIL have LSN X and they don't get pushed. The push work then completes thinking it is done, and cannot be restarted until the push target increases to >= X + 1. If the push target then never increases (because the tail is not moving), then we never run the push work again and we stall. Fix it by making sure log items with a LSN that matches the target exactly are pushed during the loop. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Reviewed-by: Alex Elder (cherry picked from commit cb64026b6e8af50db598ec7c3f59d504259b00bb) commit 9e7004e741de0b2daabbbadafbaf11ff1a94e00c Author: Dave Chinner Date: Fri May 6 02:54:05 2011 +0000 xfs: exit AIL push work correctly when AIL is empty The recent conversion of the xfsaild functionality to a work queue introduced a hard-to-hit log space grant hang. The main cause is a regression where a work exit path fails to clear the PUSHING state and recheck the target correctly. Make both exit paths do the same PUSHING bit clearing and target checking when the "no more work to be done" condition is hit. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Reviewed-by: Alex Elder (cherry picked from commit ea35a20021f8497390d05b93271b4d675516c654) commit 228d62dd3f74734b9801c789b5addc57fdfc208f Author: Dave Chinner Date: Fri May 6 02:54:04 2011 +0000 xfs: ensure reclaim cursor is reset correctly at end of AG On a 32 bit highmem PowerPC machine, the XFS inode cache was growing without bound and exhausting low memory causing the OOM killer to be triggered. After some effort, the problem was reproduced on a 32 bit x86 highmem machine. The problem is that the per-ag inode reclaim index cursor was not getting reset to the start of the AG if the radix tree tag lookup found no more reclaimable inodes. Hence every further reclaim attempt started at the same index beyond where any reclaimable inodes lay, and no further background reclaim ever occurred from the AG. Without background inode reclaim the VM driven cache shrinker simply cannot keep up with cache growth, and OOM is the result. While the change that exposed the problem was the conversion of the inode reclaim to use work queues for background reclaim, it was not the cause of the bug. The bug was introduced when the cursor code was added, just waiting for some weird configuration to strike.... Signed-off-by: Dave Chinner Tested-By: Christian Kujau Reviewed-by: Christoph Hellwig Reviewed-by: Alex Elder (cherry picked from commit b223221956675ce8a7b436d198ced974bb388571) ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_buf.c | 4 +- fs/xfs/linux-2.6/xfs_file.c | 50 ++++++++++++++++---------- fs/xfs/linux-2.6/xfs_iops.c | 2 +- fs/xfs/linux-2.6/xfs_super.c | 78 +---------------------------------------- fs/xfs/linux-2.6/xfs_sync.c | 5 ++- fs/xfs/quota/xfs_qm.c | 6 ++-- fs/xfs/xfs_inode.c | 2 +- fs/xfs/xfs_log.c | 11 +++++- 8 files changed, 53 insertions(+), 105 deletions(-) hooks/post-receive -- XFS development tree From sandeen@sandeen.net Thu Jun 16 16:08:09 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5GL88GH062484 for ; Thu, 16 Jun 2011 16:08:09 -0500 X-ASG-Debug-ID: 1308258487-0798025d0000-w1Z2WR 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 538071D756E1 for ; Thu, 16 Jun 2011 14:08:07 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id 6vyoYhZ8P7esWmOd for ; Thu, 16 Jun 2011 14:08:07 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 5ED2E4964602; Thu, 16 Jun 2011 16:08:07 -0500 (CDT) Message-ID: <4DFA70B7.5080206@sandeen.net> Date: Thu, 16 Jun 2011 16:08:07 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Christoph Hellwig CC: Trammell Hudson , Sean Noonan , Martin Bligh , Ian Baum , Stephen Degler , "'linux-xfs@oss.sgi.com'" X-ASG-Orig-Subj: Re: sparse file handling bug in XFS Subject: Re: sparse file handling bug in XFS References: <081DDE43F61F3D43929A181B477DCA95639B561F@MSXAOA6.twosigma.com> <4DFA2A76.6000104@sandeen.net> <4DFA3E7D.4030408@sandeen.net> <20110616175743.GA20570@infradead.org> In-Reply-To: <20110616175743.GA20570@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1308258488 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0195 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66275 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 6/16/11 12:57 PM, Christoph Hellwig wrote: > On Thu, Jun 16, 2011 at 12:33:49PM -0500, Eric Sandeen wrote: >> Actually this looks like it's a result of >> >> 6e857567dbbfe14dd6cc3f7414671b047b1ff5c7 xfs: don't truncate prealloc from frequently accessed inodes >> >> I thought Dave's patch from the "Re: drastic changes to allocsize semantics in or around 2.6.38?" >> thread would fix it, but it doesn't seem to. Here it is anyway ;) > > It should fix the thing about the preallocation staying when removing > and recreating the file. Keeping pre-allocate blocks around otherwise > is a considered a feature. It strikes me as odd that truncating & rewriting would lead to different preallocation though .. I'll let Dave chime in. Thanks, -Eric From aelder@sgi.com Thu Jun 16 16:29:27 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_51, J_CHICKENPOX_61 autolearn=no version=3.4.0-r929098 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 p5GLTRl3063094 for ; Thu, 16 Jun 2011 16:29:27 -0500 Received: from cas.corp.sgi.com (pv-excas1-dc21-nlb.corp.sgi.com [137.38.102.126]) by relay2.corp.sgi.com (Postfix) with ESMTP id 402D5304039; Thu, 16 Jun 2011 14:29:24 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Thu, 16 Jun 2011 16:29:24 -0500 Subject: Re: xfstests test case 180 fails often From: Alex Elder Reply-To: To: CC: XFS Mailing List In-Reply-To: <1308077464.7661.473.camel@chandra-lucid.beaverton.ibm.com> References: <1308077464.7661.473.camel@chandra-lucid.beaverton.ibm.com> Content-Type: text/plain; charset="UTF-8" Date: Thu, 16 Jun 2011 16:29:22 -0500 Message-ID: <1308259762.2717.31.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, 2011-06-14 at 11:51 -0700, Chandra Seetharaman wrote: > Hello All, > > test case 180 fails often (4 out of 5) in my x86_64 system. > Any suggestions on how to proceed to debug ? I have been seeing failures like that sometimes (more often recently I think) for a while. I have not had the chance to really chase it down. If you can reproduce it pretty relibly you could use "git bisect" to try to find out whether the failures started to occur after a particular commit. -Alex > regards, > > chandra > > 80 176s ... - output mismatch (see 180.out.bad)^M > --- 180.out 2011-04-20 08:34:36.000000000 -0700^M > +++ 180.out.bad 2011-06-03 14:10:45.000000000 -0700^M > @@ -1 +1,4 @@^M > QA output created by 180^M > +file /mnt/xfsScratchMntPt/656 has incorrect size - sync failed^M > +file /mnt/xfsScratchMntPt/818 has incorrect size - sync failed^M > +file /mnt/xfsScratchMntPt/899 has incorrect size - sync failed^M > Ran: 180^M > Failures: 180^M > Failed 1 of 1 tests^M > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From aelder@sgi.com Thu Jun 16 16:41:06 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5GLf6H6063460 for ; Thu, 16 Jun 2011 16:41:06 -0500 Received: from cas.corp.sgi.com (pv-excas1-dc21-nlb.corp.sgi.com [137.38.102.126]) by relay1.corp.sgi.com (Postfix) with ESMTP id 44FB58F8272; Thu, 16 Jun 2011 14:41:03 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Thu, 16 Jun 2011 16:41:03 -0500 Subject: Re: [PATCH]: [xfstests] Change test 202 to create a filesystem with small enough filesystem for a single AG From: Alex Elder Reply-To: To: CC: XFS Mailing List , Eric Sandeen In-Reply-To: <1307981905.7661.461.camel@chandra-lucid.beaverton.ibm.com> References: <1307981905.7661.461.camel@chandra-lucid.beaverton.ibm.com> Content-Type: text/plain; charset="UTF-8" Date: Thu, 16 Jun 2011 16:41:02 -0500 Message-ID: <1308260462.2717.33.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, 2011-06-13 at 09:18 -0700, Chandra Seetharaman wrote: > Test 202 fails when the filesystem size is greater than 1TB with > not so clear message. > > Call mkfs with a small enough filesystem size even with older > versions of XFS. > > Signed-Off-By: Chandra Seetharaman Looks good. I will commit this for you. Reviewed-by: Alex Elder From support@bizoppers-invites.com Thu Jun 16 18:44:27 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=ham version=3.4.0-r929098 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 p5GNiRPf075156 for ; Thu, 16 Jun 2011 18:44:27 -0500 X-ASG-Debug-ID: 1308267864-661100f60000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from swom-invites.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D137D1E49C19 for ; Thu, 16 Jun 2011 16:44:25 -0700 (PDT) Received: from swom-invites.com (swom-invites.com [78.46.57.228]) by cuda.sgi.com with ESMTP id JaFGHHO5iEUsAVIu for ; Thu, 16 Jun 2011 16:44:25 -0700 (PDT) Received: from bizoppers-invites.com (app1.bizoppers.com [46.4.80.185]) (Authenticated sender: support@bizoppers-invites.com) by swom-invites.com (Postfix) with ESMTPSA id 4158C6F6E2 for ; Fri, 17 Jun 2011 00:44:24 +0100 (BST) Date: Thu, 16 Jun 2011 23:44:24 +0000 From: Jaypee Verdera To: linux-xfs@oss.sgi.com Message-ID: <4dfa955831ef4_6dd48f293849719289@app1.bizoppers.com.mail> X-ASG-Orig-Subj: Reminder about your invitation from Jaypee Verdera Subject: Reminder about your invitation from Jaypee Verdera Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit host: bizoppers.com X-BIZOPPERS-UUID: 7585460-4f4e6 X-Barracuda-Connect: swom-invites.com[78.46.57.228] X-Barracuda-Start-Time: 1308267865 X-Barracuda-Bayes: INNOCENT GLOBAL 0.7467 1.0000 1.7450 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.74 X-Barracuda-Spam-Status: No, SCORE=1.74 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66285 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, This is a reminder that on June 02, Jaypee Verdera (jpv_vv@yahoo.com) sent you an invitation to become part of his or her professional network at BizOppers. Follow this link to accept Jaypee Verdera's invitation. http://bizoppers.com/r/328308?utm_campaign=imported_contact_invitation_reminder&utm_content=et_1_text_1&utm_medium=email&utm_source=user_mailer Signing up is free and takes less than a minute. On June 02, Jaypee Verdera wrote: > To: [linux-xfs@oss.sgi.com] > From: Jaypee Verdera [jpv_vv@yahoo.com] > Subject: Jaypee Verdera wants to stay in touch on BizOppers > Hey, I'd like to add you to my wealth network on BizOppers. Like Facebook but pays :) - jaypee > > - jaypee The only way to get access to Jaypee Verdera's professional network on BizOppers is through the following link: http://bizoppers.com/r/328308?utm_campaign=imported_contact_invitation_reminder&utm_content=et_1_text_2&utm_medium=email&utm_source=user_mailer You can remove yourself from Jaypee Verdera's network at any time. If you don't know Jaypee Verdera you can report this member and unsubscribe: http://bizoppers.com/unsubscribe/7585460/4f4e6?utm_campaign=imported_contact_invitation_reminder&utm_content=et_1_text_3&utm_medium=email&utm_source=user_mailer From support@bizoppers-invites.com Thu Jun 16 18:44:30 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5GNiTwf075164 for ; Thu, 16 Jun 2011 18:44:30 -0500 X-ASG-Debug-ID: 1308267868-5438013a0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from swom-invites.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 10E4612DF3B3 for ; Thu, 16 Jun 2011 16:44:28 -0700 (PDT) Received: from swom-invites.com (swom-invites.com [78.46.57.228]) by cuda.sgi.com with ESMTP id aC4Ezr7Y6I90BDTh for ; Thu, 16 Jun 2011 16:44:28 -0700 (PDT) Received: from bizoppers-invites.com (app1.bizoppers.com [46.4.80.185]) (Authenticated sender: support@bizoppers-invites.com) by swom-invites.com (Postfix) with ESMTPSA id E59706F6D2 for ; Fri, 17 Jun 2011 00:44:27 +0100 (BST) Date: Thu, 16 Jun 2011 23:44:27 +0000 From: Arjay Verdera To: linux-xfs@oss.sgi.com Message-ID: <4dfa955bd9e41_6dcd8f293850303725@app1.bizoppers.com.mail> X-ASG-Orig-Subj: Reminder about your invitation from Arjay Verdera Subject: Reminder about your invitation from Arjay Verdera Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit host: bizoppers.com X-BIZOPPERS-UUID: 7585481-4f4e6 X-Barracuda-Connect: swom-invites.com[78.46.57.228] X-Barracuda-Start-Time: 1308267869 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5736 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.2.66286 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, This is a reminder that on June 02, Arjay Verdera (zhendoh_23@yahoo.com) sent you an invitation to become part of his or her professional network at BizOppers. Follow this link to accept Arjay Verdera's invitation. http://bizoppers.com/r/328793?utm_campaign=imported_contact_invitation_reminder&utm_content=et_1_text_1&utm_medium=email&utm_source=user_mailer Signing up is free and takes less than a minute. On June 02, Arjay Verdera wrote: > To: [linux-xfs@oss.sgi.com] > From: Arjay Verdera [zhendoh_23@yahoo.com] > Subject: Arjay Verdera wants to stay in touch on BizOppers > Hey, I'd like to add you to my wealth network on BizOppers. Like Facebook but pays :) - arjay > > - arjay The only way to get access to Arjay Verdera's professional network on BizOppers is through the following link: http://bizoppers.com/r/328793?utm_campaign=imported_contact_invitation_reminder&utm_content=et_1_text_2&utm_medium=email&utm_source=user_mailer You can remove yourself from Arjay Verdera's network at any time. If you don't know Arjay Verdera you can report this member and unsubscribe: http://bizoppers.com/unsubscribe/7585481/4f4e6?utm_campaign=imported_contact_invitation_reminder&utm_content=et_1_text_3&utm_medium=email&utm_source=user_mailer From sandeen@sandeen.net Thu Jun 16 19:27:16 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5H0RFla076627 for ; Thu, 16 Jun 2011 19:27:16 -0500 X-ASG-Debug-ID: 1308270434-3a53017f0000-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 E73EB10DA3 for ; Thu, 16 Jun 2011 17:27:14 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id KwztZCeTUBW9H3aH for ; Thu, 16 Jun 2011 17:27:14 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 23BC04964600; Thu, 16 Jun 2011 19:27:14 -0500 (CDT) Message-ID: <4DFA9F61.60007@sandeen.net> Date: Thu, 16 Jun 2011 19:27:13 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: sekharan@us.ibm.com CC: XFS Mailing List , Eric Sandeen X-ASG-Orig-Subj: Re: [PATCH]: [xfstests] Make the requirement of projid32bit explicit in test 244 Subject: Re: [PATCH]: [xfstests] Make the requirement of projid32bit explicit in test 244 References: <1308100206.7661.486.camel@chandra-lucid.beaverton.ibm.com> In-Reply-To: <1308100206.7661.486.camel@chandra-lucid.beaverton.ibm.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1308270434 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66289 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 6/14/11 8:10 PM, Chandra Seetharaman wrote: > Test 244 depends on projid32bit feature in mkfs.xfs. Not all versions > of xfsprogs provide that feature in mkfs.xfs. > > This patch makes it an explicit requirement and avoids running the test > if the feature doesn't exist, instead of failing the test with an obscure > message. > > Signed-Off-By: Chandra Seetharaman This is fine; I'd prefer to check it in with just _require_projid32bit and drop the _in_xfs if that's ok with you, it's an xfs-only test anyway so it's just a bit wordy :) Thanks, -Eric > --- > diff --git a/244 b/244 > index 99762a5..e9f8a3d 100755 > --- a/244 > +++ b/244 > @@ -48,6 +48,7 @@ _cleanup() > _supported_fs xfs > _require_xfs_quota > _require_scratch > +_require_projid32bit_in_xfs > > export MOUNT_OPTIONS="-opquota" > > diff --git a/common.rc b/common.rc > index c510c66..4e051dc 100644 > --- a/common.rc > +++ b/common.rc > @@ -797,6 +797,15 @@ _require_command() > [ -n "$1" -a -x "$1" ] || _notrun "$_cmd utility required, skipped this test" > } > > +# this test requires the projid32bit feature to be available in > +# mkfs.xfs > +# > +_require_projid32bit_in_xfs() > +{ > + _scratch_mkfs_xfs -f -i projid32bit=0 2>&1 >/dev/null \ > + || _notrun "mkfs.xfs doesn't have projid32bit feature" > +} > + > # this test requires that external log/realtime devices are not in use > # > _require_nonexternal() > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sekharan@us.ibm.com Thu Jun 16 19:46:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5H0kuJJ077304 for ; Thu, 16 Jun 2011 19:46:56 -0500 X-ASG-Debug-ID: 1308271615-5436038b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e38.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 118471349CCA for ; Thu, 16 Jun 2011 17:46:55 -0700 (PDT) Received: from e38.co.us.ibm.com (e38.co.us.ibm.com [32.97.110.159]) by cuda.sgi.com with ESMTP id oCqt6EByAi2mrpF9 for ; Thu, 16 Jun 2011 17:46:55 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by e38.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5H0cTjp027273 for ; Thu, 16 Jun 2011 18:38:29 -0600 Received: from d03av03.boulder.ibm.com (d03av03.boulder.ibm.com [9.17.195.169]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5H0ko74174212 for ; Thu, 16 Jun 2011 18:46:50 -0600 Received: from d03av03.boulder.ibm.com (loopback [127.0.0.1]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5GIknKo018598 for ; Thu, 16 Jun 2011 12:46:49 -0600 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5GIkmK8018589; Thu, 16 Jun 2011 12:46:48 -0600 X-ASG-Orig-Subj: Re: [PATCH]: [xfstests] Make the requirement of projid32bit explicit in test 244 Subject: Re: [PATCH]: [xfstests] Make the requirement of projid32bit explicit in test 244 From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: Eric Sandeen Cc: XFS Mailing List , Eric Sandeen In-Reply-To: <4DFA9F61.60007@sandeen.net> References: <1308100206.7661.486.camel@chandra-lucid.beaverton.ibm.com> <4DFA9F61.60007@sandeen.net> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Thu, 16 Jun 2011 17:46:48 -0700 Message-ID: <1308271608.5505.7.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e38.co.us.ibm.com[32.97.110.159] X-Barracuda-Start-Time: 1308271616 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, 2011-06-16 at 19:27 -0500, Eric Sandeen wrote: > On 6/14/11 8:10 PM, Chandra Seetharaman wrote: > > Test 244 depends on projid32bit feature in mkfs.xfs. Not all versions > > of xfsprogs provide that feature in mkfs.xfs. > > > > This patch makes it an explicit requirement and avoids running the test > > if the feature doesn't exist, instead of failing the test with an obscure > > message. > > > > Signed-Off-By: Chandra Seetharaman > > This is fine; I'd prefer to check it in with just _require_projid32bit > and drop the _in_xfs if that's ok with you, it's an xfs-only test > anyway so it's just a bit wordy :) Fine by me. You want me to reroll the patch ? chandra > > Thanks, > -Eric > > > --- > > diff --git a/244 b/244 > > index 99762a5..e9f8a3d 100755 > > --- a/244 > > +++ b/244 > > @@ -48,6 +48,7 @@ _cleanup() > > _supported_fs xfs > > _require_xfs_quota > > _require_scratch > > +_require_projid32bit_in_xfs > > > > export MOUNT_OPTIONS="-opquota" > > > > diff --git a/common.rc b/common.rc > > index c510c66..4e051dc 100644 > > --- a/common.rc > > +++ b/common.rc > > @@ -797,6 +797,15 @@ _require_command() > > [ -n "$1" -a -x "$1" ] || _notrun "$_cmd utility required, skipped this test" > > } > > > > +# this test requires the projid32bit feature to be available in > > +# mkfs.xfs > > +# > > +_require_projid32bit_in_xfs() > > +{ > > + _scratch_mkfs_xfs -f -i projid32bit=0 2>&1 >/dev/null \ > > + || _notrun "mkfs.xfs doesn't have projid32bit feature" > > +} > > + > > # this test requires that external log/realtime devices are not in use > > # > > _require_nonexternal() > > > > > > _______________________________________________ > > xfs mailing list > > xfs@oss.sgi.com > > http://oss.sgi.com/mailman/listinfo/xfs > > > From kosaki.motohiro@jp.fujitsu.com Thu Jun 16 22:36:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5H3a68c089656 for ; Thu, 16 Jun 2011 22:36:07 -0500 X-ASG-Debug-ID: 1308281763-358001fc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from fgwmail6.fujitsu.co.jp (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E8D2EC9C5 for ; Thu, 16 Jun 2011 20:36:03 -0700 (PDT) Received: from fgwmail6.fujitsu.co.jp (fgwmail6.fujitsu.co.jp [192.51.44.36]) by cuda.sgi.com with ESMTP id tTZPIJHJIYlqb4qH for ; Thu, 16 Jun 2011 20:36:03 -0700 (PDT) Received: from m4.gw.fujitsu.co.jp (unknown [10.0.50.74]) by fgwmail6.fujitsu.co.jp (Postfix) with ESMTP id 5962A3EE0BD for ; Fri, 17 Jun 2011 12:36:01 +0900 (JST) Received: from smail (m4 [127.0.0.1]) by outgoing.m4.gw.fujitsu.co.jp (Postfix) with ESMTP id 3F06445DF3B for ; Fri, 17 Jun 2011 12:36:01 +0900 (JST) Received: from s4.gw.fujitsu.co.jp (s4.gw.fujitsu.co.jp [10.0.50.94]) by m4.gw.fujitsu.co.jp (Postfix) with ESMTP id 17DD845DF45 for ; Fri, 17 Jun 2011 12:36:01 +0900 (JST) Received: from s4.gw.fujitsu.co.jp (localhost.localdomain [127.0.0.1]) by s4.gw.fujitsu.co.jp (Postfix) with ESMTP id 0A5D71DB803E for ; Fri, 17 Jun 2011 12:36:01 +0900 (JST) Received: from m105.s.css.fujitsu.com (m105.s.css.fujitsu.com [10.240.81.145]) by s4.gw.fujitsu.co.jp (Postfix) with ESMTP id CC9BE1DB8037 for ; Fri, 17 Jun 2011 12:36:00 +0900 (JST) Received: from m105.css.fujitsu.com (m105 [127.0.0.1]) by m105.s.css.fujitsu.com (Postfix) with ESMTP id 9642B5D8006; Fri, 17 Jun 2011 12:36:00 +0900 (JST) Received: from [127.0.0.1] (unknown [10.124.101.131]) by m105.s.css.fujitsu.com (Postfix) with ESMTP id 1C3405D8003; Fri, 17 Jun 2011 12:36:00 +0900 (JST) X-SecurityPolicyCheck-FJ: OK by FujitsuOutboundMailChecker v1.3.1 Received: from KOSANOTE2[10.124.101.131] by KOSANOTE2 (FujitsuOutboundMailChecker v1.3.1/9992[10.124.101.131]); Fri, 17 Jun 2011 12:36:01 +0900 (JST) Message-ID: <4DFACB8A.2020008@jp.fujitsu.com> Date: Fri, 17 Jun 2011 12:35:38 +0900 From: KOSAKI Motohiro User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.17) Gecko/20110414 Lightning/1.0b2 Thunderbird/3.1.10 MIME-Version: 1.0 To: hch@infradead.org CC: david@fromorbit.com, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/12] Per superblock cache reclaim Subject: Re: [PATCH 0/12] Per superblock cache reclaim References: <1306998067-27659-1-git-send-email-david@fromorbit.com> <20110616113321.GA22422@infradead.org> In-Reply-To: <20110616113321.GA22422@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: fgwmail6.fujitsu.co.jp[192.51.44.36] X-Barracuda-Start-Time: 1308281765 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0057 1.0000 -1.9837 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.2.66301 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 (2011/06/16 20:33), Christoph Hellwig wrote: > Can we get some comments from the MM folks for patches 1-3? Those look > like some pretty urgent fixes for really dumb shrinker behaviour. Yeah, I'm reviewing today. I'm sorry delayed it. So, generically they are pretty good to me. thanks Dave. So, I have a few minor comments and I'll post it when my review is finished. (Maybe some hour later). From chingimleong@yahoo.com.sg Fri Jun 17 06:36:16 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.2 required=5.0 tests=BAYES_50,FREEMAIL_FROM, RCVD_IN_BL_SPAMCOP_NET,T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.4.0-r929098 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 p5HBaFZD116215 for ; Fri, 17 Jun 2011 06:36:16 -0500 X-ASG-Debug-ID: 1308310573-7442014c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from nm8.bullet.mail.sg1.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 11F0C1EDD8C3 for ; Fri, 17 Jun 2011 04:36:13 -0700 (PDT) Received: from nm8.bullet.mail.sg1.yahoo.com (nm8.bullet.mail.sg1.yahoo.com [115.178.12.208]) by cuda.sgi.com with SMTP id h8Hg0o419sGmhX0w for ; Fri, 17 Jun 2011 04:36:13 -0700 (PDT) Received: from [115.178.12.221] by nm8.bullet.mail.sg1.yahoo.com with NNFMP; 17 Jun 2011 11:36:12 -0000 Received: from [115.178.12.216] by tm2.bullet.mail.sg1.yahoo.com with NNFMP; 17 Jun 2011 11:36:12 -0000 Received: from [127.0.0.1] by omp1001.mail.sg1.yahoo.com with NNFMP; 17 Jun 2011 11:36:12 -0000 X-Yahoo-Newman-Property: ymail-3 X-Yahoo-Newman-Id: 490526.85788.bm@omp1001.mail.sg1.yahoo.com Received: (qmail 92170 invoked by uid 60001); 17 Jun 2011 11:36:12 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com.sg; s=s1024; t=1308310572; bh=YJxrdNQxeUHk5Dwy2XmQLQ9ZEug5iGWeoQKmt2LnpVE=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=wEFDMSxO/fF71A/c8KrjbDjnb0qPfvZPPAJFSL2dctW3LP+B6x3hpjc0rQgDch5zfeehVPXN3GXdd4s9gNBeZ8kPwzodDJ8MCx6uQlNJTd2hs00nWwrK4JLBgFqAY76gX0JzmnJtrkq3yBC6zPn21gxT5OGAyRGxFBG9kxYurRs= DomainKey-Signature:a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com.sg; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=Mv/yABVReN4G5XZXg1MEgmCthTpaMkyrULYebZvsiRhzqX+mwE0mvxteHJw+F2Bc84VXtOTNIFHa0y+pxmJKyi3Cs1j/Y9rBp3NFLBGeSsyGe4fAYOXEwgBwb/P9f7Mk5cgFMfDr8p6z5MOfXoKLwTYYG/gIik8uWmAF2VzzNxU=; Message-ID: <385532.69322.qm@web77719.mail.sg1.yahoo.com> X-YMail-OSG: TdXt7LoVM1l7R4NaqteJBxrOvsWb8LghxU3swKJdHiKMBlF ZuJitrPmGGtn.tTLq7fNFcnNWrN7w_wP.6hMPFyMofZzqAvngedeZRy8O37g J2VtcCmiejvahyzGHLe8CbAio0Bj2pcJYhKB_hW4IvW1pZ94ebYYgtrmTiWR OaaO4eg.QChHHQVPsZacJkDRWEL9ER0z9uorpPMUxIRkemj8_1r_f9Nw6HYJ P20GsWktvkaCo_bSglIWq27LUCRYkBpupzFo8KHDHQPMpixhubvcaukLAoSI hk2Q2UmOQUWw4setlD8GJvgfPkqNtW3CltRPgRwnN1aq0cn1vMHr7M8cg.IT iJ6xv7HczJeAeXUzf0KOsvbyE7s8KnxST2g-- Received: from [192.122.131.20] by web77719.mail.sg1.yahoo.com via HTTP; Fri, 17 Jun 2011 19:36:12 SGT X-Mailer: YahooMailClassic/14.0.3 YahooMailWebService/0.8.111.304355 Date: Fri, 17 Jun 2011 19:36:12 +0800 (SGT) From: Gim Leong Chin X-ASG-Orig-Subj: Warning: AG size is a multiple of stripe width? Subject: Warning: AG size is a multiple of stripe width? To: xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: nm8.bullet.mail.sg1.yahoo.com[115.178.12.208] X-Barracuda-Start-Time: 1308310575 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0003 1.0000 -2.0192 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66325 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi,=0A=0A=0AI have a Sun workstation with eight Cheetah 15K.5 SAS 300 GB on= RAID 1E (RAID 10) on LSI SAS3081E-R.=0A=0AI am installing SLED 11 SP1 on i= t and I thought I will do a thorough optimization right down to the partiti= on boundaries.=0A=0ASince the default for XFS is to create four aggregation= groups, and with the reasoning that Cheetah can do double the seeks of nor= mal 7200 RPM drives, I have four aggregation groups per drive for a total o= f 16 for 70 GB /dev/sda2 partition, and eight per drive for total of 32 for= /dev/sda3 partition (1011 GB).=0A=0AI have aligned the partition start and= end with the stripe width boundaries.=0AThe stripe size is 64 kB, stripe w= idth is 4*64 kB =3D 256 kB, in terms of 512 byte sectors:=0A=0A70 GB /=0A= =0ANo Start End Number=0A1 512 = 67109375 32 GB =3D 67108864 sectors =3D 131072 stripe sets=0A=0A2 = 67109376 213910015 70 GB =3D 146800640 sectors =3D 286720= stripe sets=0A=0A3 213910016 2335932415 Left =3D 23359324= 16 - 213910016 =3D 2122022400 sectors =3D 4144575 stripe sets=0A=0A=0AWhen = I do the following:=0A=0Amkfs.xfs -f -b size=3D4k -d agcount=3D16,su=3D64k,= sw=3D4 -i size=3D256,align=3D1,attr=3D2 -l version=3D2,su=3D64k,lazy-count= =3D1 -n version=3D2 -s size=3D512 -L / /dev/sda2=0A=0AWarning: AG size is a= multiple of stripe width. This can cause performance problems by aligning= all AGs on the same disk. To avoid this, run mkfs with an AG size that is= one stripe unit smaller, for example 1146864=0A=0Aagcount=3D16 agsize=3D11= 46880 blks=0Absize=3D4096=0Asunit=3D16 swidth=3D64 blks=0A=0Amkfs.xfs -f -b= size=3D4k -d agcount=3D32,su=3D64k,sw=3D4 -i size=3D256,align=3D1,attr=3D2= -l version=3D2,su=3D64k,lazy-count=3D1 -n version=3D2 -s size=3D512 -L /ho= me /dev/sda3=0A=0AWarning: AG size is a multiple of stripe width. This can= cause performance problems by aligning all AGs on the same disk. To avoid= this, run mkfs with an AG size that is one stripe unit smaller, for exampl= e 8289136=0A=0Aagcount=3D32 agsize=3D8289152 blks=0Absize=3D4096=0Asunit=3D= 16 swidth=3D64 blks=0A=0AI am really puzzled since I thought all I am doing= is distributing 4 aggregation groups per drive for sda2 and 8 per drive fo= r sda3.=0A=0AWhat have I done wrong and what is the flaw with my understand= ing?=0A=0AThank you!=0A=0A=0AChin Gim Leong=0A From BATV+9fa73473e6c20b0c9e70+2854+infradead.org+hch@bombadil.srs.infradead.org Fri Jun 17 07:02:51 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5HC2ofV117215 for ; Fri, 17 Jun 2011 07:02:51 -0500 X-ASG-Debug-ID: 1308312166-744301cd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 34C481EDD560 for ; Fri, 17 Jun 2011 05:02:47 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id YX4WZ1NFDBXIlEUD for ; Fri, 17 Jun 2011 05:02:47 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QXXl3-0005Mo-TM; Fri, 17 Jun 2011 12:02:41 +0000 Date: Fri, 17 Jun 2011 08:02:41 -0400 From: Christoph Hellwig To: Allison Henderson Cc: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Re: [PATCH 1/3 v5] XFS TESTS: Add Punch Hole to FSX Subject: Re: [PATCH 1/3 v5] XFS TESTS: Add Punch Hole to FSX Message-ID: <20110617120241.GA20227@infradead.org> References: <4DED63D1.5010600@vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DED63D1.5010600@vnet.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308312170 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0203 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66327 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 I'm a bit worried about adding more and more local hacks to our FSX version before resyncing with the official Apple variant that actual has clear licensing. But we didn't let other recent patches be affected by that, so I guess I can't complain this time either and will put it in. From BATV+9fa73473e6c20b0c9e70+2854+infradead.org+hch@bombadil.srs.infradead.org Fri Jun 17 07:08:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5HC8evV117418 for ; Fri, 17 Jun 2011 07:08:40 -0500 X-ASG-Debug-ID: 1308312519-5739028b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9AB4951DB08 for ; Fri, 17 Jun 2011 05:08:39 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id B69PvejBEFfJE9WJ for ; Fri, 17 Jun 2011 05:08:39 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QXXqo-0006FT-2r; Fri, 17 Jun 2011 12:08:38 +0000 Date: Fri, 17 Jun 2011 08:08:38 -0400 From: Christoph Hellwig To: Allison Henderson Cc: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Re: [PATCH 3/3 v5] XFS TESTS: Add ENOSPC Hole Punch Test Subject: Re: [PATCH 3/3 v5] XFS TESTS: Add ENOSPC Hole Punch Test Message-ID: <20110617120838.GA20714@infradead.org> References: <4DED6405.7020104@vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DED6405.7020104@vnet.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308312519 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66327 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 one fails for me because my test system doesn't have sudo installed. I can't see any reason why a simple su wouldn't be enough. We already have a helper to make su usable on both IRIX and Linux in test 123, and it might be a good idea to add this to the common routines and use it. I'd also suggest to split this test off 252 into a new test case, as unlike the other tests it actually requires a scratch devices, and in general is pretty different from the simple xfs_io exercises in 252. I'd also move the newly added helpers directly into the new testcase as they really aren't common. From BATV+9fa73473e6c20b0c9e70+2854+infradead.org+hch@bombadil.srs.infradead.org Fri Jun 17 07:08:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5HC8t40117443 for ; Fri, 17 Jun 2011 07:08:56 -0500 X-ASG-Debug-ID: 1308312534-4ce401680000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 229BE10F8FBA for ; Fri, 17 Jun 2011 05:08:54 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id IygPw8DRAFGr9NOt for ; Fri, 17 Jun 2011 05:08:54 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QXXr3-0006Fk-EW; Fri, 17 Jun 2011 12:08:53 +0000 Date: Fri, 17 Jun 2011 08:08:53 -0400 From: Christoph Hellwig To: Allison Henderson Cc: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Re: [PATCH 2/3 v5] XFS TESTS: Expand 252 punch hole test Subject: Re: [PATCH 2/3 v5] XFS TESTS: Expand 252 punch hole test Message-ID: <20110617120853.GB20714@infradead.org> References: <4DED63DE.1070000@vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DED63DE.1070000@vnet.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308312535 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66328 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Mon, Jun 06, 2011 at 04:33:50PM -0700, Allison Henderson wrote: > This patch adds additional punch hole tests to 252 > that were used to test ext4 punch hole. The _test_generic_punch > routine has been modified to accept two new flags: > > -k To keep the test file between tests. > This will test the handling of existing holes > > -d To not sync the file between tests. > This will test the handling of delayed extents > > Four new corner cases have also been added to the routine: > 14. data -> hole @ EOF > 15. data -> hole @ 0 > 16. data -> cache cold ->hole > 17. data -> hole in single block file Looks good, I'll put it in. From BATV+9fa73473e6c20b0c9e70+2854+infradead.org+hch@bombadil.srs.infradead.org Fri Jun 17 08:12:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5HDCHb4119928 for ; Fri, 17 Jun 2011 08:12:17 -0500 X-ASG-Debug-ID: 1308316334-1cf302730000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 537CE51E04B for ; Fri, 17 Jun 2011 06:12:14 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id oYH7PBWyycuC7JH3 for ; Fri, 17 Jun 2011 06:12:14 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QXYqM-0000f7-H5 for xfs@oss.sgi.com; Fri, 17 Jun 2011 13:12:14 +0000 Date: Fri, 17 Jun 2011 09:12:14 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfs: work around bogus gcc warning in xfs_allocbt_init_cursor Subject: [PATCH] xfs: work around bogus gcc warning in xfs_allocbt_init_cursor Message-ID: <20110617131214.GA2141@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308316335 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66331 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 GCC 4.6 complains about an array subscript is above array bounds when using the btree index to index into the agf_levels array. The only two indices passed in are 0 and 1, and we have an assert insuring that. Replace the trick of using the array index directly with using constants in the already existing branch for assigning the XFS_BTREE_LASTREC_UPDATE flag. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_alloc_btree.c =================================================================== --- xfs.orig/fs/xfs/xfs_alloc_btree.c 2011-06-17 14:16:27.929065669 +0200 +++ xfs/fs/xfs/xfs_alloc_btree.c 2011-06-17 14:17:22.145729599 +0200 @@ -427,13 +427,16 @@ xfs_allocbt_init_cursor( cur->bc_tp = tp; cur->bc_mp = mp; - cur->bc_nlevels = be32_to_cpu(agf->agf_levels[btnum]); cur->bc_btnum = btnum; cur->bc_blocklog = mp->m_sb.sb_blocklog; - cur->bc_ops = &xfs_allocbt_ops; - if (btnum == XFS_BTNUM_CNT) + + if (btnum == XFS_BTNUM_CNT) { + cur->bc_nlevels = be32_to_cpu(agf->agf_levels[XFS_BTNUM_CNT]); cur->bc_flags = XFS_BTREE_LASTREC_UPDATE; + } else { + cur->bc_nlevels = be32_to_cpu(agf->agf_levels[XFS_BTNUM_BNO]); + } cur->bc_private.a.agbp = agbp; cur->bc_private.a.agno = agno; From BATV+9fa73473e6c20b0c9e70+2854+infradead.org+hch@bombadil.srs.infradead.org Fri Jun 17 08:13:04 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5HDD3Gn119964 for ; Fri, 17 Jun 2011 08:13:04 -0500 X-ASG-Debug-ID: 1308316382-117f00580000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D40DF1E4A1E3 for ; Fri, 17 Jun 2011 06:13:02 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id XeRfOk2iR4gH2bbo for ; Fri, 17 Jun 2011 06:13:02 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QXYr7-0000gu-TM for xfs@oss.sgi.com; Fri, 17 Jun 2011 13:13:01 +0000 Date: Fri, 17 Jun 2011 09:13:01 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfs: kill xfs_itruncate_start Subject: [PATCH] xfs: kill xfs_itruncate_start Message-ID: <20110617131301.GB2141@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308316382 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66331 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 xfs_itruncate_start is a rather length wrapper that evaluates to a call to xfs_ioend_wait and xfs_tosspages, and only has two callers. Instead of using the complicated checks left over from IRIX where we can to truncate the pagecache just call xfs_tosspages (aka truncate_inode_pages) directly as we want to get rid of all data after i_size, and truncate_inode_pages handles incorrect alignments and too large offsets just fine. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode.c 2011-05-23 20:54:39.043447167 +0200 +++ xfs/fs/xfs/xfs_inode.c 2011-05-23 21:02:18.231947817 +0200 @@ -1217,165 +1217,8 @@ xfs_isize_check( #endif /* DEBUG */ /* - * Calculate the last possible buffered byte in a file. This must - * include data that was buffered beyond the EOF by the write code. - * This also needs to deal with overflowing the xfs_fsize_t type - * which can happen for sizes near the limit. - * - * We also need to take into account any blocks beyond the EOF. It - * may be the case that they were buffered by a write which failed. - * In that case the pages will still be in memory, but the inode size - * will never have been updated. - */ -STATIC xfs_fsize_t -xfs_file_last_byte( - xfs_inode_t *ip) -{ - xfs_mount_t *mp; - xfs_fsize_t last_byte; - xfs_fileoff_t last_block; - xfs_fileoff_t size_last_block; - int error; - - ASSERT(xfs_isilocked(ip, XFS_IOLOCK_EXCL|XFS_IOLOCK_SHARED)); - - mp = ip->i_mount; - /* - * Only check for blocks beyond the EOF if the extents have - * been read in. This eliminates the need for the inode lock, - * and it also saves us from looking when it really isn't - * necessary. - */ - if (ip->i_df.if_flags & XFS_IFEXTENTS) { - xfs_ilock(ip, XFS_ILOCK_SHARED); - error = xfs_bmap_last_offset(NULL, ip, &last_block, - XFS_DATA_FORK); - xfs_iunlock(ip, XFS_ILOCK_SHARED); - if (error) { - last_block = 0; - } - } else { - last_block = 0; - } - size_last_block = XFS_B_TO_FSB(mp, (xfs_ufsize_t)ip->i_size); - last_block = XFS_FILEOFF_MAX(last_block, size_last_block); - - last_byte = XFS_FSB_TO_B(mp, last_block); - if (last_byte < 0) { - return XFS_MAXIOFFSET(mp); - } - last_byte += (1 << mp->m_writeio_log); - if (last_byte < 0) { - return XFS_MAXIOFFSET(mp); - } - return last_byte; -} - -/* - * Start the truncation of the file to new_size. The new size - * must be smaller than the current size. This routine will - * clear the buffer and page caches of file data in the removed - * range, and xfs_itruncate_finish() will remove the underlying - * disk blocks. - * - * The inode must have its I/O lock locked EXCLUSIVELY, and it - * must NOT have the inode lock held at all. This is because we're - * calling into the buffer/page cache code and we can't hold the - * inode lock when we do so. - * - * We need to wait for any direct I/Os in flight to complete before we - * proceed with the truncate. This is needed to prevent the extents - * being read or written by the direct I/Os from being removed while the - * I/O is in flight as there is no other method of synchronising - * direct I/O with the truncate operation. Also, because we hold - * the IOLOCK in exclusive mode, we prevent new direct I/Os from being - * started until the truncate completes and drops the lock. Essentially, - * the xfs_ioend_wait() call forms an I/O barrier that provides strict - * ordering between direct I/Os and the truncate operation. - * - * The flags parameter can have either the value XFS_ITRUNC_DEFINITE - * or XFS_ITRUNC_MAYBE. The XFS_ITRUNC_MAYBE value should be used - * in the case that the caller is locking things out of order and - * may not be able to call xfs_itruncate_finish() with the inode lock - * held without dropping the I/O lock. If the caller must drop the - * I/O lock before calling xfs_itruncate_finish(), then xfs_itruncate_start() - * must be called again with all the same restrictions as the initial - * call. - */ -int -xfs_itruncate_start( - xfs_inode_t *ip, - uint flags, - xfs_fsize_t new_size) -{ - xfs_fsize_t last_byte; - xfs_off_t toss_start; - xfs_mount_t *mp; - int error = 0; - - ASSERT(xfs_isilocked(ip, XFS_IOLOCK_EXCL)); - ASSERT((new_size == 0) || (new_size <= ip->i_size)); - ASSERT((flags == XFS_ITRUNC_DEFINITE) || - (flags == XFS_ITRUNC_MAYBE)); - - mp = ip->i_mount; - - /* wait for the completion of any pending DIOs */ - if (new_size == 0 || new_size < ip->i_size) - xfs_ioend_wait(ip); - - /* - * Call toss_pages or flushinval_pages to get rid of pages - * overlapping the region being removed. We have to use - * the less efficient flushinval_pages in the case that the - * caller may not be able to finish the truncate without - * dropping the inode's I/O lock. Make sure - * to catch any pages brought in by buffers overlapping - * the EOF by searching out beyond the isize by our - * block size. We round new_size up to a block boundary - * so that we don't toss things on the same block as - * new_size but before it. - * - * Before calling toss_page or flushinval_pages, make sure to - * call remapf() over the same region if the file is mapped. - * This frees up mapped file references to the pages in the - * given range and for the flushinval_pages case it ensures - * that we get the latest mapped changes flushed out. - */ - toss_start = XFS_B_TO_FSB(mp, (xfs_ufsize_t)new_size); - toss_start = XFS_FSB_TO_B(mp, toss_start); - if (toss_start < 0) { - /* - * The place to start tossing is beyond our maximum - * file size, so there is no way that the data extended - * out there. - */ - return 0; - } - last_byte = xfs_file_last_byte(ip); - trace_xfs_itruncate_start(ip, new_size, flags, toss_start, last_byte); - if (last_byte > toss_start) { - if (flags & XFS_ITRUNC_DEFINITE) { - xfs_tosspages(ip, toss_start, - -1, FI_REMAPF_LOCKED); - } else { - error = xfs_flushinval_pages(ip, toss_start, - -1, FI_REMAPF_LOCKED); - } - } - -#ifdef DEBUG - if (new_size == 0) { - ASSERT(VN_CACHED(VFS_I(ip)) == 0); - } -#endif - return error; -} - -/* - * Shrink the file to the given new_size. The new size must be smaller than - * the current size. This will free up the underlying blocks in the removed - * range after a call to xfs_itruncate_start() or xfs_atruncate_start(). + * Free up the underlying blocks past new_size. The new size must be + * smaller than the current size. * * The transaction passed to this routine must have made a permanent log * reservation of at least XFS_ITRUNCATE_LOG_RES. This routine may commit the @@ -1387,7 +1230,7 @@ xfs_itruncate_start( * will be "held" within the returned transaction. This routine does NOT * require any disk space to be reserved for it within the transaction. * - * The fork parameter must be either xfs_attr_fork or xfs_data_fork, and it + * The fork parameter must be either XFS_ATTR_FORK or XFS_DATA_FORK, and it * indicates the fork which is to be truncated. For the attribute fork we only * support truncation to size 0. * Index: xfs/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.c 2011-05-23 20:54:39.055445403 +0200 +++ xfs/fs/xfs/xfs_vnodeops.c 2011-05-23 20:57:30.379948217 +0200 @@ -197,13 +197,6 @@ xfs_free_eofblocks( */ tp = xfs_trans_alloc(mp, XFS_TRANS_INACTIVE); - /* - * Do the xfs_itruncate_start() call before - * reserving any log space because - * itruncate_start will call into the buffer - * cache and we can't - * do that within a transaction. - */ if (flags & XFS_FREE_EOF_TRYLOCK) { if (!xfs_ilock_nowait(ip, XFS_IOLOCK_EXCL)) { xfs_trans_cancel(tp, 0); @@ -212,13 +205,6 @@ xfs_free_eofblocks( } else { xfs_ilock(ip, XFS_IOLOCK_EXCL); } - error = xfs_itruncate_start(ip, XFS_ITRUNC_DEFINITE, - ip->i_size); - if (error) { - xfs_trans_cancel(tp, 0); - xfs_iunlock(ip, XFS_IOLOCK_EXCL); - return error; - } error = xfs_trans_reserve(tp, 0, XFS_ITRUNCATE_LOG_RES(mp), @@ -657,20 +643,9 @@ xfs_inactive( tp = xfs_trans_alloc(mp, XFS_TRANS_INACTIVE); if (truncate) { - /* - * Do the xfs_itruncate_start() call before - * reserving any log space because itruncate_start - * will call into the buffer cache and we can't - * do that within a transaction. - */ xfs_ilock(ip, XFS_IOLOCK_EXCL); - error = xfs_itruncate_start(ip, XFS_ITRUNC_DEFINITE, 0); - if (error) { - xfs_trans_cancel(tp, 0); - xfs_iunlock(ip, XFS_IOLOCK_EXCL); - return VN_INACTIVE_CACHE; - } + xfs_ioend_wait(ip); error = xfs_trans_reserve(tp, 0, XFS_ITRUNCATE_LOG_RES(mp), Index: xfs/fs/xfs/linux-2.6/xfs_trace.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_trace.h 2011-05-23 20:59:44.039946364 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_trace.h 2011-05-23 21:00:06.955570292 +0200 @@ -1029,40 +1029,6 @@ DEFINE_SIMPLE_IO_EVENT(xfs_delalloc_enos DEFINE_SIMPLE_IO_EVENT(xfs_unwritten_convert); DEFINE_SIMPLE_IO_EVENT(xfs_get_blocks_notfound); - -TRACE_EVENT(xfs_itruncate_start, - TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size, int flag, - xfs_off_t toss_start, xfs_off_t toss_finish), - TP_ARGS(ip, new_size, flag, toss_start, toss_finish), - TP_STRUCT__entry( - __field(dev_t, dev) - __field(xfs_ino_t, ino) - __field(xfs_fsize_t, size) - __field(xfs_fsize_t, new_size) - __field(xfs_off_t, toss_start) - __field(xfs_off_t, toss_finish) - __field(int, flag) - ), - TP_fast_assign( - __entry->dev = VFS_I(ip)->i_sb->s_dev; - __entry->ino = ip->i_ino; - __entry->size = ip->i_d.di_size; - __entry->new_size = new_size; - __entry->toss_start = toss_start; - __entry->toss_finish = toss_finish; - __entry->flag = flag; - ), - TP_printk("dev %d:%d ino 0x%llx %s size 0x%llx new_size 0x%llx " - "toss start 0x%llx toss finish 0x%llx", - MAJOR(__entry->dev), MINOR(__entry->dev), - __entry->ino, - __print_flags(__entry->flag, "|", XFS_ITRUNC_FLAGS), - __entry->size, - __entry->new_size, - __entry->toss_start, - __entry->toss_finish) -); - DECLARE_EVENT_CLASS(xfs_itrunc_class, TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size), TP_ARGS(ip, new_size), Index: xfs/fs/xfs/xfs_inode.h =================================================================== --- xfs.orig/fs/xfs/xfs_inode.h 2011-05-23 20:59:23.304947922 +0200 +++ xfs/fs/xfs/xfs_inode.h 2011-05-23 20:59:34.971947361 +0200 @@ -448,16 +448,6 @@ static inline void xfs_ifunlock(xfs_inod extern struct lock_class_key xfs_iolock_reclaimable; /* - * Flags for xfs_itruncate_start(). - */ -#define XFS_ITRUNC_DEFINITE 0x1 -#define XFS_ITRUNC_MAYBE 0x2 - -#define XFS_ITRUNC_FLAGS \ - { XFS_ITRUNC_DEFINITE, "DEFINITE" }, \ - { XFS_ITRUNC_MAYBE, "MAYBE" } - -/* * For multiple groups support: if S_ISGID bit is set in the parent * directory, group of new file is set to that of the parent, and * new subdirectory gets S_ISGID bit from parent. @@ -491,7 +481,6 @@ uint xfs_ip2xflags(struct xfs_inode *); uint xfs_dic2xflags(struct xfs_dinode *); int xfs_ifree(struct xfs_trans *, xfs_inode_t *, struct xfs_bmap_free *); -int xfs_itruncate_start(xfs_inode_t *, uint, xfs_fsize_t); int xfs_itruncate_finish(struct xfs_trans **, xfs_inode_t *, xfs_fsize_t, int, int); int xfs_iunlink(struct xfs_trans *, xfs_inode_t *); From BATV+9fa73473e6c20b0c9e70+2854+infradead.org+hch@bombadil.srs.infradead.org Fri Jun 17 08:14:04 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 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 p5HDE4CV120006 for ; Fri, 17 Jun 2011 08:14:04 -0500 X-ASG-Debug-ID: 1308316442-1cf102580000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6952751E062 for ; Fri, 17 Jun 2011 06:14:03 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 7Y1cmsKDDtC7gpXm for ; Fri, 17 Jun 2011 06:14:03 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QXYs5-0000iM-85; Fri, 17 Jun 2011 13:14:01 +0000 Date: Fri, 17 Jun 2011 09:14:01 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Wu Fengguang X-ASG-Orig-Subj: [PATCH] xfs: improve sync behaviour in face of aggressive dirtying Subject: [PATCH] xfs: improve sync behaviour in face of aggressive dirtying Message-ID: <20110617131401.GC2141@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308316443 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66331 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 The following script from Wu Fengguang shows very bad behaviour in XFS when aggressively dirtying data during a sync on XFS, with sync times up to almost 10 times as long as ext4. A large part of the issue is that XFS writes data out itself two times in the ->sync_fs method, overriding the lifelock protection in the core writeback code, and another issue is the lock-less xfs_ioend_wait call, which doesn't prevent new ioend from beeing queue up while waiting for the count to reach zero. This patch removes the XFS-internal sync calls and relies on the VFS to do it's work just like all other filesystems do, and just uses the internal inode iterator to wait for pending ioends, but now with the iolock held. With this fix we improve the sync time quite a bit, but we'll need further work split i_iocount between pending direct I/O requests that are only relevant for truncate, and pending unwritten extent conversion that matter for sync and fsync. ------------------------------ snip ------------------------------ #!/bin/sh umount /dev/sda7 mkfs.xfs -f /dev/sda7 # mkfs.ext4 /dev/sda7 # mkfs.btrfs /dev/sda7 mount /dev/sda7 /fs echo $((50<<20)) > /proc/sys/vm/dirty_bytes pid= for i in `seq 10` do dd if=/dev/zero of=/fs/zero-$i bs=1M count=1000 & pid="$pid $!" done sleep 1 tic=$(date +'%s') sync tac=$(date +'%s') echo echo sync time: $((tac-tic)) egrep '(Dirty|Writeback|NFS_Unstable)' /proc/meminfo pidof dd > /dev/null && { kill -9 $pid; echo sync NOT livelocked; } ------------------------------ snip ------------------------------ Reported-by: Wu Fengguang 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 2011-06-17 14:16:18.442399481 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2011-06-17 14:18:06.632394003 +0200 @@ -215,6 +215,19 @@ xfs_inode_ag_iterator( } STATIC int +xfs_wait_ioend_cb( + struct xfs_inode *ip, + struct xfs_perag *pag, + int flags) +{ + xfs_ilock(ip, XFS_IOLOCK_SHARED); + xfs_ioend_wait(ip); + xfs_iunlock(ip, XFS_IOLOCK_SHARED); + + return 0; +} + +STATIC int xfs_sync_inode_data( struct xfs_inode *ip, struct xfs_perag *pag, @@ -359,14 +372,15 @@ xfs_quiesce_data( { int error, error2 = 0; - /* push non-blocking */ - xfs_sync_data(mp, 0); xfs_qm_sync(mp, SYNC_TRYLOCK); - - /* push and block till complete */ - xfs_sync_data(mp, SYNC_WAIT); xfs_qm_sync(mp, SYNC_WAIT); + /* wait for all pending unwritten extent conversions */ + xfs_inode_ag_iterator(mp, xfs_wait_ioend_cb, 0); + + /* force out the newly dirtied log buffers */ + xfs_log_force(mp, XFS_LOG_SYNC); + /* write superblock and hoover up shutdown errors */ error = xfs_sync_fsdata(mp); From BATV+9fa73473e6c20b0c9e70+2854+infradead.org+hch@bombadil.srs.infradead.org Fri Jun 17 08:15:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64, LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 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 p5HDFNJJ120066 for ; Fri, 17 Jun 2011 08:15:23 -0500 X-ASG-Debug-ID: 1308316521-564d029b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A30051D7617A for ; Fri, 17 Jun 2011 06:15:21 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 1ENb5UZyMjU0M7hf for ; Fri, 17 Jun 2011 06:15:21 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QXYtM-0001TM-3V; Fri, 17 Jun 2011 13:15:20 +0000 Date: Fri, 17 Jun 2011 09:15:20 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/2] xfs: split xfs_setattr Subject: [PATCH 1/2] xfs: split xfs_setattr Message-ID: <20110617131519.GA2822@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308316521 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66331 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Split up xfs_setattr into two functions, one for the complex truncate handling, and one for the trivial attribute updates. Also move both new routines to xfs_iops.c as they are fairly Linux-specific. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_iops.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_iops.c 2011-06-17 14:07:57.059091534 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_iops.c 2011-06-17 14:18:42.495725522 +0200 @@ -39,6 +39,7 @@ #include "xfs_buf_item.h" #include "xfs_utils.h" #include "xfs_vnodeops.h" +#include "xfs_inode_item.h" #include "xfs_trace.h" #include @@ -497,12 +498,452 @@ xfs_vn_getattr( return 0; } +int +xfs_setattr_simple( + struct xfs_inode *ip, + struct iattr *iattr, + int flags) +{ + xfs_mount_t *mp = ip->i_mount; + struct inode *inode = VFS_I(ip); + int mask = iattr->ia_valid; + xfs_trans_t *tp; + int error; + uint lock_flags = 0; + uid_t uid = 0, iuid = 0; + gid_t gid = 0, igid = 0; + struct xfs_dquot *udqp = NULL, *gdqp = NULL; + struct xfs_dquot *olddquot1 = NULL, *olddquot2 = NULL; + + trace_xfs_setattr(ip); + + if (mp->m_flags & XFS_MOUNT_RDONLY) + return XFS_ERROR(EROFS); + + if (XFS_FORCED_SHUTDOWN(mp)) + return XFS_ERROR(EIO); + + error = -inode_change_ok(inode, iattr); + if (error) + return error; + + ASSERT((mask & ATTR_SIZE) == 0); + + /* + * If disk quotas is on, we make sure that the dquots do exist on disk, + * before we start any other transactions. Trying to do this later + * is messy. We don't care to take a readlock to look at the ids + * in inode here, because we can't hold it across the trans_reserve. + * If the IDs do change before we take the ilock, we're covered + * because the i_*dquot fields will get updated anyway. + */ + if (XFS_IS_QUOTA_ON(mp) && (mask & (ATTR_UID|ATTR_GID))) { + uint qflags = 0; + + if ((mask & ATTR_UID) && XFS_IS_UQUOTA_ON(mp)) { + uid = iattr->ia_uid; + qflags |= XFS_QMOPT_UQUOTA; + } else { + uid = ip->i_d.di_uid; + } + if ((mask & ATTR_GID) && XFS_IS_GQUOTA_ON(mp)) { + gid = iattr->ia_gid; + qflags |= XFS_QMOPT_GQUOTA; + } else { + gid = ip->i_d.di_gid; + } + + /* + * We take a reference when we initialize udqp and gdqp, + * so it is important that we never blindly double trip on + * the same variable. See xfs_create() for an example. + */ + ASSERT(udqp == NULL); + ASSERT(gdqp == NULL); + error = xfs_qm_vop_dqalloc(ip, uid, gid, xfs_get_projid(ip), + qflags, &udqp, &gdqp); + if (error) + return error; + } + + tp = xfs_trans_alloc(mp, XFS_TRANS_SETATTR_NOT_SIZE); + error = xfs_trans_reserve(tp, 0, XFS_ICHANGE_LOG_RES(mp), 0, 0, 0); + if (error) + goto error_return; + + lock_flags = XFS_ILOCK_EXCL; + xfs_ilock(ip, lock_flags); + + /* + * Change file ownership. Must be the owner or privileged. + */ + if (mask & (ATTR_UID|ATTR_GID)) { + /* + * These IDs could have changed since we last looked at them. + * But, we're assured that if the ownership did change + * while we didn't have the inode locked, inode's dquot(s) + * would have changed also. + */ + iuid = ip->i_d.di_uid; + igid = ip->i_d.di_gid; + gid = (mask & ATTR_GID) ? iattr->ia_gid : igid; + uid = (mask & ATTR_UID) ? iattr->ia_uid : iuid; + + /* + * Do a quota reservation only if uid/gid is actually + * going to change. + */ + if (XFS_IS_QUOTA_RUNNING(mp) && + ((XFS_IS_UQUOTA_ON(mp) && iuid != uid) || + (XFS_IS_GQUOTA_ON(mp) && igid != gid))) { + ASSERT(tp); + error = xfs_qm_vop_chown_reserve(tp, ip, udqp, gdqp, + capable(CAP_FOWNER) ? + XFS_QMOPT_FORCE_RES : 0); + if (error) /* out of quota */ + goto error_return; + } + } + + xfs_trans_ijoin(tp, ip); + + /* + * Change file ownership. Must be the owner or privileged. + */ + if (mask & (ATTR_UID|ATTR_GID)) { + /* + * CAP_FSETID overrides the following restrictions: + * + * The set-user-ID and set-group-ID bits of a file will be + * cleared upon successful return from chown() + */ + if ((ip->i_d.di_mode & (S_ISUID|S_ISGID)) && + !capable(CAP_FSETID)) + ip->i_d.di_mode &= ~(S_ISUID|S_ISGID); + + /* + * Change the ownerships and register quota modifications + * in the transaction. + */ + if (iuid != uid) { + if (XFS_IS_QUOTA_RUNNING(mp) && XFS_IS_UQUOTA_ON(mp)) { + ASSERT(mask & ATTR_UID); + ASSERT(udqp); + 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_QUOTA_RUNNING(mp) && XFS_IS_GQUOTA_ON(mp)) { + ASSERT(!XFS_IS_PQUOTA_ON(mp)); + ASSERT(mask & ATTR_GID); + ASSERT(gdqp); + olddquot2 = xfs_qm_vop_chown(tp, ip, + &ip->i_gdquot, gdqp); + } + ip->i_d.di_gid = gid; + inode->i_gid = gid; + } + } + + /* + * Change file access modes. + */ + if (mask & ATTR_MODE) { + umode_t mode = iattr->ia_mode; + + if (!in_group_p(inode->i_gid) && !capable(CAP_FSETID)) + mode &= ~S_ISGID; + + ip->i_d.di_mode &= S_IFMT; + ip->i_d.di_mode |= mode & ~S_IFMT; + + inode->i_mode &= S_IFMT; + inode->i_mode |= mode & ~S_IFMT; + } + + /* + * Change file access or modified times. + */ + if (mask & ATTR_ATIME) { + inode->i_atime = iattr->ia_atime; + ip->i_d.di_atime.t_sec = iattr->ia_atime.tv_sec; + ip->i_d.di_atime.t_nsec = iattr->ia_atime.tv_nsec; + ip->i_update_core = 1; + } + if (mask & ATTR_CTIME) { + inode->i_ctime = iattr->ia_ctime; + ip->i_d.di_ctime.t_sec = iattr->ia_ctime.tv_sec; + ip->i_d.di_ctime.t_nsec = iattr->ia_ctime.tv_nsec; + ip->i_update_core = 1; + } + if (mask & ATTR_MTIME) { + inode->i_mtime = iattr->ia_mtime; + ip->i_d.di_mtime.t_sec = iattr->ia_mtime.tv_sec; + ip->i_d.di_mtime.t_nsec = iattr->ia_mtime.tv_nsec; + ip->i_update_core = 1; + } + + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); + + XFS_STATS_INC(xs_ig_attrchg); + + if (mp->m_flags & XFS_MOUNT_WSYNC) + xfs_trans_set_sync(tp); + error = xfs_trans_commit(tp, 0); + + xfs_iunlock(ip, lock_flags); + + /* + * Release any dquot(s) the inode had kept before chown. + */ + xfs_qm_dqrele(olddquot1); + xfs_qm_dqrele(olddquot2); + xfs_qm_dqrele(udqp); + xfs_qm_dqrele(gdqp); + + if (error) + return error; + + /* + * XXX(hch): Updating the ACL entries is not atomic vs the i_mode + * update. We could avoid this with linked transactions + * and passing down the transaction pointer all the way + * to attr_set. No previous user of the generic + * Posix ACL code seems to care about this issue either. + */ + if ((mask & ATTR_MODE) && !(flags & XFS_ATTR_NOACL)) { + error = -xfs_acl_chmod(inode); + if (error) + return XFS_ERROR(error); + } + + return 0; + +error_return: + xfs_qm_dqrele(udqp); + xfs_qm_dqrele(gdqp); + if (tp) + xfs_trans_cancel(tp, 0); + if (lock_flags != 0) + xfs_iunlock(ip, lock_flags); + return error; +} + +/* + * Truncate file. Must have write permission and not be a directory. + */ +int +xfs_setattr_size( + struct xfs_inode *ip, + struct iattr *iattr, + int flags) +{ + struct xfs_mount *mp = ip->i_mount; + struct inode *inode = VFS_I(ip); + int mask = iattr->ia_valid; + struct xfs_trans *tp; + int error; + uint lock_flags; + uint commit_flags = 0; + + trace_xfs_setattr(ip); + + if (mp->m_flags & XFS_MOUNT_RDONLY) + return XFS_ERROR(EROFS); + + if (XFS_FORCED_SHUTDOWN(mp)) + return XFS_ERROR(EIO); + + error = -inode_change_ok(inode, iattr); + if (error) + return error; + + ASSERT(S_ISREG(ip->i_d.di_mode)); + ASSERT((mask & (ATTR_MODE|ATTR_UID|ATTR_GID|ATTR_ATIME|ATTR_ATIME_SET| + ATTR_MTIME_SET|ATTR_KILL_SUID|ATTR_KILL_SGID| + ATTR_KILL_PRIV|ATTR_TIMES_SET)) == 0); + + lock_flags = XFS_ILOCK_EXCL; + if (!(flags & XFS_ATTR_NOLOCK)) + lock_flags |= XFS_IOLOCK_EXCL; + xfs_ilock(ip, lock_flags); + + /* + * Short circuit the truncate case for zero length files. + */ + if (iattr->ia_size == 0 && + ip->i_size == 0 && ip->i_d.di_nextents == 0) { + xfs_iunlock(ip, XFS_ILOCK_EXCL); + lock_flags &= ~XFS_ILOCK_EXCL; + if (mask & ATTR_CTIME) { + inode->i_mtime = inode->i_ctime = + current_fs_time(inode->i_sb); + xfs_mark_inode_dirty_sync(ip); + } + goto out_unlock; + } + + /* + * Make sure that the dquots are attached to the inode. + */ + error = xfs_qm_dqattach_locked(ip, 0); + if (error) + goto out_unlock; + + /* + * Now we can make the changes. Before we join the inode to the + * transaction, take care of the part of the truncation that must be + * done without the inode lock. This needs to be done before joining + * the inode to the transaction, because the inode cannot be unlocked + * once it is a part of the transaction. + */ + if (iattr->ia_size > ip->i_size) { + /* + * Do the first part of growing a file: zero any data in the + * last block that is beyond the old EOF. We need to do this + * before the inode is joined to the transaction to modify + * i_size. + */ + error = xfs_zero_eof(ip, iattr->ia_size, ip->i_size); + if (error) + goto out_unlock; + } + xfs_iunlock(ip, XFS_ILOCK_EXCL); + lock_flags &= ~XFS_ILOCK_EXCL; + + /* + * We are going to log the inode size change in this transaction so + * any previous writes that are beyond the on disk EOF and the new + * EOF that have not been written out need to be written here. If we + * do not write the data out, we expose ourselves to the null files + * problem. + * + * Only flush from the on disk size to the smaller of the in memory + * file size or the new size as that's the range we really care about + * here and prevents waiting for other data not within the range we + * care about here. + */ + if (ip->i_size != ip->i_d.di_size && iattr->ia_size > ip->i_d.di_size) { + error = xfs_flush_pages(ip, ip->i_d.di_size, iattr->ia_size, + XBF_ASYNC, FI_NONE); + if (error) + goto out_unlock; + } + + /* + * Wait for all I/O to complete. + */ + xfs_ioend_wait(ip); + + error = -block_truncate_page(inode->i_mapping, iattr->ia_size, + xfs_get_blocks); + if (error) + goto out_unlock; + + tp = xfs_trans_alloc(mp, XFS_TRANS_SETATTR_SIZE); + error = xfs_trans_reserve(tp, 0, XFS_ITRUNCATE_LOG_RES(mp), 0, + XFS_TRANS_PERM_LOG_RES, + XFS_ITRUNCATE_LOG_COUNT); + if (error) + goto out_trans_cancel; + + truncate_setsize(inode, iattr->ia_size); + + commit_flags = XFS_TRANS_RELEASE_LOG_RES; + lock_flags |= XFS_ILOCK_EXCL; + + xfs_ilock(ip, XFS_ILOCK_EXCL); + + xfs_trans_ijoin(tp, ip); + + /* + * Only change the c/mtime if we are changing the size or we are + * explicitly asked to change it. This handles the semantic difference + * between truncate() and ftruncate() as implemented in the VFS. + * + * The regular truncate() case without ATTR_CTIME and ATTR_MTIME is a + * special case where we need to update the times despite not having + * these flags set. For all other operations the VFS set these flags + * explicitly if it wants a timestamp update. + */ + if (iattr->ia_size != ip->i_size && + (!(mask & (ATTR_CTIME | ATTR_MTIME)))) { + iattr->ia_ctime = iattr->ia_mtime = + current_fs_time(inode->i_sb); + mask |= ATTR_CTIME | ATTR_MTIME; + } + + if (iattr->ia_size > ip->i_size) { + ip->i_d.di_size = iattr->ia_size; + ip->i_size = iattr->ia_size; + } else if (iattr->ia_size <= ip->i_size || + (iattr->ia_size == 0 && ip->i_d.di_nextents)) { + /* + * Signal a sync transaction unless we are truncating an + * already unlinked file on a wsync filesystem. + */ + error = xfs_itruncate_finish(&tp, ip, iattr->ia_size, + XFS_DATA_FORK, + ((ip->i_d.di_nlink != 0 || + !(mp->m_flags & XFS_MOUNT_WSYNC)) + ? 1 : 0)); + if (error) + goto out_trans_abort; + + /* + * Truncated "down", so we're removing references to old data + * here - if we delay flushing for a long time, we expose + * ourselves unduly to the notorious NULL files problem. So, + * we mark this inode and flush it when the file is closed, + * and do not wait the usual (long) time for writeout. + */ + xfs_iflags_set(ip, XFS_ITRUNCATED); + } + + if (mask & ATTR_CTIME) { + inode->i_ctime = iattr->ia_ctime; + ip->i_d.di_ctime.t_sec = iattr->ia_ctime.tv_sec; + ip->i_d.di_ctime.t_nsec = iattr->ia_ctime.tv_nsec; + ip->i_update_core = 1; + } + if (mask & ATTR_MTIME) { + inode->i_mtime = iattr->ia_mtime; + ip->i_d.di_mtime.t_sec = iattr->ia_mtime.tv_sec; + ip->i_d.di_mtime.t_nsec = iattr->ia_mtime.tv_nsec; + ip->i_update_core = 1; + } + + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); + + XFS_STATS_INC(xs_ig_attrchg); + + if (mp->m_flags & XFS_MOUNT_WSYNC) + xfs_trans_set_sync(tp); + + error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); + goto out_unlock; + +out_trans_abort: + commit_flags |= XFS_TRANS_ABORT; +out_trans_cancel: + xfs_trans_cancel(tp, commit_flags); +out_unlock: + if (lock_flags) + xfs_iunlock(ip, lock_flags); + return error; +} + STATIC int xfs_vn_setattr( struct dentry *dentry, struct iattr *iattr) { - return -xfs_setattr(XFS_I(dentry->d_inode), iattr, 0); + if (iattr->ia_valid & ATTR_SIZE) + return -xfs_setattr_size(XFS_I(dentry->d_inode), iattr, 0); + return -xfs_setattr_simple(XFS_I(dentry->d_inode), iattr, 0); } #define XFS_FIEMAP_FLAGS (FIEMAP_FLAG_SYNC|FIEMAP_FLAG_XATTR) Index: xfs/fs/xfs/linux-2.6/xfs_acl.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_acl.c 2011-06-09 11:50:25.016311672 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_acl.c 2011-06-17 14:18:42.495725522 +0200 @@ -264,7 +264,7 @@ xfs_set_mode(struct inode *inode, mode_t iattr.ia_mode = mode; iattr.ia_ctime = current_fs_time(inode->i_sb); - error = -xfs_setattr(XFS_I(inode), &iattr, XFS_ATTR_NOACL); + error = -xfs_setattr_simple(XFS_I(inode), &iattr, XFS_ATTR_NOACL); } return error; Index: xfs/fs/xfs/linux-2.6/xfs_file.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_file.c 2011-06-17 14:07:57.000000000 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_file.c 2011-06-17 14:18:42.499058855 +0200 @@ -944,7 +944,7 @@ xfs_file_fallocate( iattr.ia_valid = ATTR_SIZE; iattr.ia_size = new_size; - error = -xfs_setattr(ip, &iattr, XFS_ATTR_NOLOCK); + error = -xfs_setattr_size(ip, &iattr, XFS_ATTR_NOLOCK); } out_unlock: Index: xfs/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.c 2011-06-09 11:50:25.039645004 +0200 +++ xfs/fs/xfs/xfs_vnodeops.c 2011-06-17 14:18:42.499058855 +0200 @@ -50,430 +50,6 @@ #include "xfs_vnodeops.h" #include "xfs_trace.h" -int -xfs_setattr( - struct xfs_inode *ip, - struct iattr *iattr, - int flags) -{ - xfs_mount_t *mp = ip->i_mount; - struct inode *inode = VFS_I(ip); - int mask = iattr->ia_valid; - xfs_trans_t *tp; - int code; - uint lock_flags; - uint commit_flags=0; - uid_t uid=0, iuid=0; - gid_t gid=0, igid=0; - struct xfs_dquot *udqp, *gdqp, *olddquot1, *olddquot2; - int need_iolock = 1; - - trace_xfs_setattr(ip); - - if (mp->m_flags & XFS_MOUNT_RDONLY) - return XFS_ERROR(EROFS); - - if (XFS_FORCED_SHUTDOWN(mp)) - return XFS_ERROR(EIO); - - code = -inode_change_ok(inode, iattr); - if (code) - return code; - - olddquot1 = olddquot2 = NULL; - udqp = gdqp = NULL; - - /* - * If disk quotas is on, we make sure that the dquots do exist on disk, - * before we start any other transactions. Trying to do this later - * is messy. We don't care to take a readlock to look at the ids - * in inode here, because we can't hold it across the trans_reserve. - * If the IDs do change before we take the ilock, we're covered - * because the i_*dquot fields will get updated anyway. - */ - if (XFS_IS_QUOTA_ON(mp) && (mask & (ATTR_UID|ATTR_GID))) { - uint qflags = 0; - - if ((mask & ATTR_UID) && XFS_IS_UQUOTA_ON(mp)) { - uid = iattr->ia_uid; - qflags |= XFS_QMOPT_UQUOTA; - } else { - uid = ip->i_d.di_uid; - } - if ((mask & ATTR_GID) && XFS_IS_GQUOTA_ON(mp)) { - gid = iattr->ia_gid; - qflags |= XFS_QMOPT_GQUOTA; - } else { - gid = ip->i_d.di_gid; - } - - /* - * We take a reference when we initialize udqp and gdqp, - * so it is important that we never blindly double trip on - * the same variable. See xfs_create() for an example. - */ - ASSERT(udqp == NULL); - ASSERT(gdqp == NULL); - code = xfs_qm_vop_dqalloc(ip, uid, gid, xfs_get_projid(ip), - qflags, &udqp, &gdqp); - if (code) - return code; - } - - /* - * For the other attributes, we acquire the inode lock and - * first do an error checking pass. - */ - tp = NULL; - lock_flags = XFS_ILOCK_EXCL; - if (flags & XFS_ATTR_NOLOCK) - need_iolock = 0; - if (!(mask & ATTR_SIZE)) { - tp = xfs_trans_alloc(mp, XFS_TRANS_SETATTR_NOT_SIZE); - commit_flags = 0; - code = xfs_trans_reserve(tp, 0, XFS_ICHANGE_LOG_RES(mp), - 0, 0, 0); - if (code) { - lock_flags = 0; - goto error_return; - } - } else { - if (need_iolock) - lock_flags |= XFS_IOLOCK_EXCL; - } - - xfs_ilock(ip, lock_flags); - - /* - * Change file ownership. Must be the owner or privileged. - */ - if (mask & (ATTR_UID|ATTR_GID)) { - /* - * These IDs could have changed since we last looked at them. - * But, we're assured that if the ownership did change - * while we didn't have the inode locked, inode's dquot(s) - * would have changed also. - */ - iuid = ip->i_d.di_uid; - igid = ip->i_d.di_gid; - gid = (mask & ATTR_GID) ? iattr->ia_gid : igid; - uid = (mask & ATTR_UID) ? iattr->ia_uid : iuid; - - /* - * Do a quota reservation only if uid/gid is actually - * going to change. - */ - 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_vop_chown_reserve(tp, ip, udqp, gdqp, - capable(CAP_FOWNER) ? - XFS_QMOPT_FORCE_RES : 0); - if (code) /* out of quota */ - goto error_return; - } - } - - /* - * Truncate file. Must have write permission and not be a directory. - */ - if (mask & ATTR_SIZE) { - /* Short circuit the truncate case for zero length files */ - if (iattr->ia_size == 0 && - ip->i_size == 0 && ip->i_d.di_nextents == 0) { - xfs_iunlock(ip, XFS_ILOCK_EXCL); - lock_flags &= ~XFS_ILOCK_EXCL; - if (mask & ATTR_CTIME) { - inode->i_mtime = inode->i_ctime = - current_fs_time(inode->i_sb); - xfs_mark_inode_dirty_sync(ip); - } - code = 0; - goto error_return; - } - - if (S_ISDIR(ip->i_d.di_mode)) { - code = XFS_ERROR(EISDIR); - goto error_return; - } else if (!S_ISREG(ip->i_d.di_mode)) { - code = XFS_ERROR(EINVAL); - goto error_return; - } - - /* - * Make sure that the dquots are attached to the inode. - */ - code = xfs_qm_dqattach_locked(ip, 0); - if (code) - goto error_return; - - /* - * Now we can make the changes. Before we join the inode - * to the transaction, if ATTR_SIZE is set then take care of - * the part of the truncation that must be done without the - * inode lock. This needs to be done before joining the inode - * to the transaction, because the inode cannot be unlocked - * once it is a part of the transaction. - */ - if (iattr->ia_size > ip->i_size) { - /* - * Do the first part of growing a file: zero any data - * in the last block that is beyond the old EOF. We - * need to do this before the inode is joined to the - * transaction to modify the i_size. - */ - code = xfs_zero_eof(ip, iattr->ia_size, ip->i_size); - if (code) - goto error_return; - } - xfs_iunlock(ip, XFS_ILOCK_EXCL); - lock_flags &= ~XFS_ILOCK_EXCL; - - /* - * We are going to log the inode size change in this - * transaction so any previous writes that are beyond the on - * disk EOF and the new EOF that have not been written out need - * to be written here. If we do not write the data out, we - * expose ourselves to the null files problem. - * - * Only flush from the on disk size to the smaller of the in - * memory file size or the new size as that's the range we - * really care about here and prevents waiting for other data - * not within the range we care about here. - */ - if (ip->i_size != ip->i_d.di_size && - iattr->ia_size > ip->i_d.di_size) { - code = xfs_flush_pages(ip, - ip->i_d.di_size, iattr->ia_size, - XBF_ASYNC, FI_NONE); - if (code) - goto error_return; - } - - /* wait for all I/O to complete */ - xfs_ioend_wait(ip); - - code = -block_truncate_page(inode->i_mapping, iattr->ia_size, - xfs_get_blocks); - if (code) - goto error_return; - - tp = xfs_trans_alloc(mp, XFS_TRANS_SETATTR_SIZE); - code = xfs_trans_reserve(tp, 0, XFS_ITRUNCATE_LOG_RES(mp), 0, - XFS_TRANS_PERM_LOG_RES, - XFS_ITRUNCATE_LOG_COUNT); - if (code) - goto error_return; - - truncate_setsize(inode, iattr->ia_size); - - commit_flags = XFS_TRANS_RELEASE_LOG_RES; - lock_flags |= XFS_ILOCK_EXCL; - - xfs_ilock(ip, XFS_ILOCK_EXCL); - - xfs_trans_ijoin(tp, ip); - - /* - * Only change the c/mtime if we are changing the size - * or we are explicitly asked to change it. This handles - * the semantic difference between truncate() and ftruncate() - * as implemented in the VFS. - * - * The regular truncate() case without ATTR_CTIME and ATTR_MTIME - * is a special case where we need to update the times despite - * not having these flags set. For all other operations the - * VFS set these flags explicitly if it wants a timestamp - * update. - */ - if (iattr->ia_size != ip->i_size && - (!(mask & (ATTR_CTIME | ATTR_MTIME)))) { - iattr->ia_ctime = iattr->ia_mtime = - current_fs_time(inode->i_sb); - mask |= ATTR_CTIME | ATTR_MTIME; - } - - if (iattr->ia_size > ip->i_size) { - ip->i_d.di_size = iattr->ia_size; - ip->i_size = iattr->ia_size; - xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); - } else if (iattr->ia_size <= ip->i_size || - (iattr->ia_size == 0 && ip->i_d.di_nextents)) { - /* - * signal a sync transaction unless - * we're truncating an already unlinked - * file on a wsync filesystem - */ - code = xfs_itruncate_finish(&tp, ip, iattr->ia_size, - XFS_DATA_FORK, - ((ip->i_d.di_nlink != 0 || - !(mp->m_flags & XFS_MOUNT_WSYNC)) - ? 1 : 0)); - if (code) - goto abort_return; - /* - * Truncated "down", so we're removing references - * to old data here - if we now delay flushing for - * a long time, we expose ourselves unduly to the - * notorious NULL files problem. So, we mark this - * vnode and flush it when the file is closed, and - * do not wait the usual (long) time for writeout. - */ - xfs_iflags_set(ip, XFS_ITRUNCATED); - } - } else if (tp) { - xfs_trans_ijoin(tp, ip); - } - - /* - * Change file ownership. Must be the owner or privileged. - */ - if (mask & (ATTR_UID|ATTR_GID)) { - /* - * CAP_FSETID overrides the following restrictions: - * - * The set-user-ID and set-group-ID bits of a file will be - * cleared upon successful return from chown() - */ - if ((ip->i_d.di_mode & (S_ISUID|S_ISGID)) && - !capable(CAP_FSETID)) { - ip->i_d.di_mode &= ~(S_ISUID|S_ISGID); - } - - /* - * Change the ownerships and register quota modifications - * in the transaction. - */ - if (iuid != uid) { - if (XFS_IS_QUOTA_RUNNING(mp) && XFS_IS_UQUOTA_ON(mp)) { - ASSERT(mask & ATTR_UID); - ASSERT(udqp); - 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_QUOTA_RUNNING(mp) && XFS_IS_GQUOTA_ON(mp)) { - ASSERT(!XFS_IS_PQUOTA_ON(mp)); - ASSERT(mask & ATTR_GID); - ASSERT(gdqp); - olddquot2 = xfs_qm_vop_chown(tp, ip, - &ip->i_gdquot, gdqp); - } - ip->i_d.di_gid = gid; - inode->i_gid = gid; - } - } - - /* - * Change file access modes. - */ - if (mask & ATTR_MODE) { - umode_t mode = iattr->ia_mode; - - if (!in_group_p(inode->i_gid) && !capable(CAP_FSETID)) - mode &= ~S_ISGID; - - ip->i_d.di_mode &= S_IFMT; - ip->i_d.di_mode |= mode & ~S_IFMT; - - inode->i_mode &= S_IFMT; - inode->i_mode |= mode & ~S_IFMT; - } - - /* - * Change file access or modified times. - */ - if (mask & ATTR_ATIME) { - inode->i_atime = iattr->ia_atime; - ip->i_d.di_atime.t_sec = iattr->ia_atime.tv_sec; - ip->i_d.di_atime.t_nsec = iattr->ia_atime.tv_nsec; - ip->i_update_core = 1; - } - if (mask & ATTR_CTIME) { - inode->i_ctime = iattr->ia_ctime; - ip->i_d.di_ctime.t_sec = iattr->ia_ctime.tv_sec; - ip->i_d.di_ctime.t_nsec = iattr->ia_ctime.tv_nsec; - ip->i_update_core = 1; - } - if (mask & ATTR_MTIME) { - inode->i_mtime = iattr->ia_mtime; - ip->i_d.di_mtime.t_sec = iattr->ia_mtime.tv_sec; - ip->i_d.di_mtime.t_nsec = iattr->ia_mtime.tv_nsec; - ip->i_update_core = 1; - } - - /* - * And finally, log the inode core if any attribute in it - * has been changed. - */ - if (mask & (ATTR_UID|ATTR_GID|ATTR_MODE| - ATTR_ATIME|ATTR_CTIME|ATTR_MTIME)) - xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); - - XFS_STATS_INC(xs_ig_attrchg); - - /* - * If this is a synchronous mount, make sure that the - * transaction goes to disk before returning to the user. - * This is slightly sub-optimal in that truncates require - * two sync transactions instead of one for wsync filesystems. - * One for the truncate and one for the timestamps since we - * don't want to change the timestamps unless we're sure the - * truncate worked. Truncates are less than 1% of the laddis - * mix so this probably isn't worth the trouble to optimize. - */ - code = 0; - if (mp->m_flags & XFS_MOUNT_WSYNC) - xfs_trans_set_sync(tp); - - code = xfs_trans_commit(tp, commit_flags); - - xfs_iunlock(ip, lock_flags); - - /* - * Release any dquot(s) the inode had kept before chown. - */ - xfs_qm_dqrele(olddquot1); - xfs_qm_dqrele(olddquot2); - xfs_qm_dqrele(udqp); - xfs_qm_dqrele(gdqp); - - if (code) - return code; - - /* - * XXX(hch): Updating the ACL entries is not atomic vs the i_mode - * update. We could avoid this with linked transactions - * and passing down the transaction pointer all the way - * to attr_set. No previous user of the generic - * Posix ACL code seems to care about this issue either. - */ - if ((mask & ATTR_MODE) && !(flags & XFS_ATTR_NOACL)) { - code = -xfs_acl_chmod(inode); - if (code) - return XFS_ERROR(code); - } - - return 0; - - abort_return: - commit_flags |= XFS_TRANS_ABORT; - error_return: - xfs_qm_dqrele(udqp); - xfs_qm_dqrele(gdqp); - if (tp) { - xfs_trans_cancel(tp, commit_flags); - } - if (lock_flags != 0) { - xfs_iunlock(ip, lock_flags); - } - return code; -} - /* * The maximum pathlen is 1024 bytes. Since the minimum file system * blocksize is 512 bytes, we can get a max of 2 extents back from @@ -2781,7 +2357,7 @@ xfs_change_file_space( iattr.ia_valid = ATTR_SIZE; iattr.ia_size = startoffset; - error = xfs_setattr(ip, &iattr, attr_flags); + error = xfs_setattr_size(ip, &iattr, attr_flags); if (error) return error; Index: xfs/fs/xfs/xfs_vnodeops.h =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.h 2011-06-09 11:50:25.056311670 +0200 +++ xfs/fs/xfs/xfs_vnodeops.h 2011-06-17 14:18:42.502392188 +0200 @@ -13,7 +13,8 @@ struct xfs_inode; struct xfs_iomap; -int xfs_setattr(struct xfs_inode *ip, struct iattr *vap, int flags); +int xfs_setattr_simple(struct xfs_inode *ip, struct iattr *vap, int flags); +int xfs_setattr_size(struct xfs_inode *ip, struct iattr *vap, int flags); #define XFS_ATTR_DMI 0x01 /* invocation from a DMI function */ #define XFS_ATTR_NONBLOCK 0x02 /* return EAGAIN if operation would block */ #define XFS_ATTR_NOLOCK 0x04 /* Don't grab any conflicting locks */ From BATV+9fa73473e6c20b0c9e70+2854+infradead.org+hch@bombadil.srs.infradead.org Fri Jun 17 08:15:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5HDFwnb120092 for ; Fri, 17 Jun 2011 08:15:58 -0500 X-ASG-Debug-ID: 1308316557-058b00f30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 90C37DC99B2 for ; Fri, 17 Jun 2011 06:15:57 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id ZExsW0rYid6p6Ug4 for ; Fri, 17 Jun 2011 06:15:57 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QXYtw-0001VP-M1 for xfs@oss.sgi.com; Fri, 17 Jun 2011 13:15:56 +0000 Date: Fri, 17 Jun 2011 09:15:56 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/2] xfs: always log timestamp updates in xfs_setattr_size Subject: [PATCH 2/2] xfs: always log timestamp updates in xfs_setattr_size Message-ID: <20110617131556.GA5682@infradead.org> References: <20110617131519.GA2822@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110617131519.GA2822@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308316557 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66332 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Get rid of the special case where we use unlogged timestamp updates for a truncate to the current inode size, and just call xfs_setattr_simple for it to treat it like a utimes calls. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_iops.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_iops.c 2011-05-23 14:29:07.815944904 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_iops.c 2011-05-23 14:29:26.067946531 +0200 @@ -776,14 +776,16 @@ xfs_setattr_size( */ if (iattr->ia_size == 0 && ip->i_size == 0 && ip->i_d.di_nextents == 0) { - xfs_iunlock(ip, XFS_ILOCK_EXCL); - lock_flags &= ~XFS_ILOCK_EXCL; - if (mask & ATTR_CTIME) { - inode->i_mtime = inode->i_ctime = - current_fs_time(inode->i_sb); - xfs_mark_inode_dirty_sync(ip); - } - goto out_unlock; + if (!(mask & ATTR_CTIME)) + goto out_unlock; + + /* + * Use the regular setattr path to update the timestamps. + */ + xfs_iunlock(ip, lock_flags); + iattr->ia_valid &= ~ATTR_SIZE; + iattr->ia_valid |= ATTR_MTIME; + return xfs_setattr_simple(ip, iattr, 0); } /* From sandeen@redhat.com Fri Jun 17 08:53:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5HDrumn121253 for ; Fri, 17 Jun 2011 08:53:58 -0500 X-ASG-Debug-ID: 1308318835-163b02700000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6ECBC171E090 for ; Fri, 17 Jun 2011 06:53:55 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 3xOCz3F1R9zOYas3 for ; Fri, 17 Jun 2011 06:53:55 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5HDrtxL024241 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 17 Jun 2011 09:53:55 -0400 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p5HDrrMS004501 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Fri, 17 Jun 2011 09:53:54 -0400 Message-ID: <4DFB5C71.2060506@redhat.com> Date: Fri, 17 Jun 2011 08:53:53 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: sekharan@us.ibm.com CC: Eric Sandeen , XFS Mailing List X-ASG-Orig-Subj: Re: [PATCH]: [xfstests] Make the requirement of projid32bit explicit in test 244 Subject: Re: [PATCH]: [xfstests] Make the requirement of projid32bit explicit in test 244 References: <1308100206.7661.486.camel@chandra-lucid.beaverton.ibm.com> <4DFA9F61.60007@sandeen.net> <1308271608.5505.7.camel@chandra-lucid.beaverton.ibm.com> In-Reply-To: <1308271608.5505.7.camel@chandra-lucid.beaverton.ibm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1308318836 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 6/16/11 7:46 PM, Chandra Seetharaman wrote: > > On Thu, 2011-06-16 at 19:27 -0500, Eric Sandeen wrote: >> On 6/14/11 8:10 PM, Chandra Seetharaman wrote: >>> Test 244 depends on projid32bit feature in mkfs.xfs. Not all versions >>> of xfsprogs provide that feature in mkfs.xfs. >>> >>> This patch makes it an explicit requirement and avoids running the test >>> if the feature doesn't exist, instead of failing the test with an obscure >>> message. >>> >>> Signed-Off-By: Chandra Seetharaman >> >> This is fine; I'd prefer to check it in with just _require_projid32bit >> and drop the _in_xfs if that's ok with you, it's an xfs-only test >> anyway so it's just a bit wordy :) > > Fine by me. You want me to reroll the patch ? I'll just fix it with a note on the way in since you agree, thanks. -Eric > chandra >> >> Thanks, >> -Eric >> >>> --- >>> diff --git a/244 b/244 >>> index 99762a5..e9f8a3d 100755 >>> --- a/244 >>> +++ b/244 >>> @@ -48,6 +48,7 @@ _cleanup() >>> _supported_fs xfs >>> _require_xfs_quota >>> _require_scratch >>> +_require_projid32bit_in_xfs >>> >>> export MOUNT_OPTIONS="-opquota" >>> >>> diff --git a/common.rc b/common.rc >>> index c510c66..4e051dc 100644 >>> --- a/common.rc >>> +++ b/common.rc >>> @@ -797,6 +797,15 @@ _require_command() >>> [ -n "$1" -a -x "$1" ] || _notrun "$_cmd utility required, skipped this test" >>> } >>> >>> +# this test requires the projid32bit feature to be available in >>> +# mkfs.xfs >>> +# >>> +_require_projid32bit_in_xfs() >>> +{ >>> + _scratch_mkfs_xfs -f -i projid32bit=0 2>&1 >/dev/null \ >>> + || _notrun "mkfs.xfs doesn't have projid32bit feature" >>> +} >>> + >>> # this test requires that external log/realtime devices are not in use >>> # >>> _require_nonexternal() >>> >>> >>> _______________________________________________ >>> xfs mailing list >>> xfs@oss.sgi.com >>> http://oss.sgi.com/mailman/listinfo/xfs >>> >> > > From sandeen@sandeen.net Fri Jun 17 10:08:00 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5HF7xaY124214 for ; Fri, 17 Jun 2011 10:07:59 -0500 X-ASG-Debug-ID: 1308323278-7f3b00d60000-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 B9792166B851 for ; Fri, 17 Jun 2011 08:07:58 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id nNL4rMKLBWC7vH60 for ; Fri, 17 Jun 2011 08:07:58 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id A8BBB4964600; Fri, 17 Jun 2011 10:07:57 -0500 (CDT) Message-ID: <4DFB6DCD.6060106@sandeen.net> Date: Fri, 17 Jun 2011 10:07:57 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Gim Leong Chin CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Warning: AG size is a multiple of stripe width? Subject: Re: Warning: AG size is a multiple of stripe width? References: <385532.69322.qm@web77719.mail.sg1.yahoo.com> In-Reply-To: <385532.69322.qm@web77719.mail.sg1.yahoo.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1308323278 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66340 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 6/17/11 6:36 AM, Gim Leong Chin wrote: > Hi, > > > I have a Sun workstation with eight Cheetah 15K.5 SAS 300 GB on RAID > 1E (RAID 10) on LSI SAS3081E-R. > > I am installing SLED 11 SP1 on it and I thought I will do a thorough > optimization right down to the partition boundaries. > > Since the default for XFS is to create four aggregation groups, and > with the reasoning that Cheetah can do double the seeks of normal > 7200 RPM drives, I have four aggregation groups per drive for a total "Allocation groups" just FWIW :) Probably no real reason to try to outfox the defaults by doubling AGs though, at least at this point. > of 16 for 70 GB /dev/sda2 partition, and eight per drive for total of > 32 for /dev/sda3 partition (1011 GB). > > I have aligned the partition start and end with the stripe width > boundaries. The stripe size is 64 kB, stripe width is 4*64 kB = 256 > kB, in terms of 512 byte sectors: > > 70 GB / > > No Start End Number > 1 512 67109375 32 GB = 67108864 sectors = 131072 stripe sets > > 2 67109376 213910015 70 GB = 146800640 sectors = 286720 stripe sets > > 3 213910016 2335932415 Left = 2335932416 - 213910016 = 2122022400 sectors = 4144575 stripe sets > > > When I do the following: > > mkfs.xfs -f -b size=4k -d agcount=16,su=64k,sw=4 -i size=256,align=1,attr=2 -l version=2,su=64k,lazy-count=1 -n version=2 -s size=512 -L / /dev/sda2 You are restating many defaults here, I'm not sure why... I would probably just drop the agcount specification and let mkfs do its own thing here; left to its own devices it will choose 4 AGs. > Warning: AG size is a multiple of stripe width. This can cause > performance problems by aligning all AGs on the same disk. To avoid > this, run mkfs with an AG size that is one stripe unit smaller, for > example 1146864 mkfs.xfs -f -b size=4k -d agsize=1146864b,su=64k,sw=4 ... does work too, if you really want that many AGs for some reason: meta-data=testfile isize=256 agcount=16, agsize=1146864 blks = sectsz=512 attr=2 data = bsize=4096 blocks=18349824, imaxpct=25 = sunit=16 swidth=64 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal log bsize=4096 blocks=8960, version=2 = sectsz=512 sunit=16 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 -Eric From aelder@sgi.com Fri Jun 17 11:08:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5HG8wal126441 for ; Fri, 17 Jun 2011 11:08:58 -0500 Received: from stout.americas.sgi.com (stout.americas.sgi.com [128.162.232.50]) by relay3.corp.sgi.com (Postfix) with ESMTP id 72697AC001; Fri, 17 Jun 2011 09:08:54 -0700 (PDT) Received: from stout.americas.sgi.com (localhost6.localdomain6 [127.0.0.1]) by stout.americas.sgi.com (8.14.4/8.14.2) with ESMTP id p5HG8rAc030244; Fri, 17 Jun 2011 11:08:53 -0500 Received: (from aelder@localhost) by stout.americas.sgi.com (8.14.4/8.14.4/Submit) id p5HG8qno030243; Fri, 17 Jun 2011 11:08:52 -0500 From: Alex Elder Message-Id: <201106171608.p5HG8qno030243@stout.americas.sgi.com> Date: Fri, 17 Jun 2011 11:08:52 -0500 To: torvalds@linux-foundation.org Subject: [GIT PULL] XFS update for 3.0-rc4 Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, akpm@linux-foundation.org User-Agent: Heirloom mailx 12.5 7/5/10 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii 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 Linus, please pull the following two XFS changes for 3.0. The first is a simple fix that flips the sign of an error return value. The second fixes a bug having to do with the order in which log and data (or realtime) device cache flushes are issued. This could lead to data corruption when an external log was used. Previously, we avoided the problem by disabling barriers and issuing a warning about that at mount time, but the recent barrier/FUA rework makes that not work properly any more. Fixing the flush ordering problem also nicely eliminates the need a block of code. Thanks. -Alex The following changes since commit eb96c925152fc289311e5d7e956b919e9b60ab53: Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 (2011-06-16 17:54:41 -0700) are available in the git repository at: git://oss.sgi.com/xfs/xfs for-linus Al Viro (1): xfs: fix ->mknod() return value on xfs_get_acl() failure Christoph Hellwig (1): xfs: make log devices with write back caches work fs/xfs/linux-2.6/xfs_file.c | 50 +++++++++++++++++---------- fs/xfs/linux-2.6/xfs_iops.c | 2 +- fs/xfs/linux-2.6/xfs_super.c | 75 ------------------------------------------ fs/xfs/xfs_log.c | 11 +++++- 4 files changed, 42 insertions(+), 96 deletions(-) From achender@linux.vnet.ibm.com Fri Jun 17 15:20:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5HKKV0R143168 for ; Fri, 17 Jun 2011 15:20:32 -0500 X-ASG-Debug-ID: 1308342030-6cdb03670000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e38.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F26DADD420D for ; Fri, 17 Jun 2011 13:20:30 -0700 (PDT) Received: from e38.co.us.ibm.com (e38.co.us.ibm.com [32.97.110.159]) by cuda.sgi.com with ESMTP id pe6ucSELMfc4fnvb for ; Fri, 17 Jun 2011 13:20:30 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay02.boulder.ibm.com (d03relay02.boulder.ibm.com [9.17.195.227]) by e38.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5HKC1Tj029242 for ; Fri, 17 Jun 2011 14:12:01 -0600 Received: from d03av05.boulder.ibm.com (d03av05.boulder.ibm.com [9.17.195.85]) by d03relay02.boulder.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id p5HKKKOE177880 for ; Fri, 17 Jun 2011 14:20:21 -0600 Received: from d03av05.boulder.ibm.com (loopback [127.0.0.1]) by d03av05.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5HKKGOm031170 for ; Fri, 17 Jun 2011 14:20:17 -0600 Received: from lc4eb0185863151.ibm.com (dyn9011169111.tucson.ibm.com [9.11.169.111]) by d03av05.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5HKKGsx031147; Fri, 17 Jun 2011 14:20:16 -0600 Message-ID: <4DFBB6FF.8080208@linux.vnet.ibm.com> Date: Fri, 17 Jun 2011 13:20:15 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Christoph Hellwig CC: Allison Henderson , linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Re: [PATCH 3/3 v5] XFS TESTS: Add ENOSPC Hole Punch Test Subject: Re: [PATCH 3/3 v5] XFS TESTS: Add ENOSPC Hole Punch Test References: <4DED6405.7020104@vnet.ibm.com> <20110617120838.GA20714@infradead.org> In-Reply-To: <20110617120838.GA20714@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e38.co.us.ibm.com[32.97.110.159] X-Barracuda-Start-Time: 1308342030 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 06/17/2011 05:08 AM, Christoph Hellwig wrote: > This one fails for me because my test system doesn't have sudo > installed. I can't see any reason why a simple su wouldn't be enough. > > We already have a helper to make su usable on both IRIX and Linux in > test 123, and it might be a good idea to add this to the common routines > and use it. > > I'd also suggest to split this test off 252 into a new test case, as > unlike the other tests it actually requires a scratch devices, and in > general is pretty different from the simple xfs_io exercises in 252. > > I'd also move the newly added helpers directly into the new testcase > as they really aren't common. > Hi Christoph, Thanks for the review, I will make those adjustments then and submit them in a separate patch set since it sounds like 1/3 and 2/3 are moving forward. Thanks again! :) Allison Henderson From markus@trippelsdorf.de Sat Jun 18 09:19:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,T_DKIM_INVALID, UPPERCASE_50_75 autolearn=no version=3.4.0-r929098 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 p5IEJvPu214079 for ; Sat, 18 Jun 2011 09:19:58 -0500 X-ASG-Debug-ID: 1308406792-60c103dd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 107A814F2A07 for ; Sat, 18 Jun 2011 07:19:53 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id mNXIFcSthKmGsA5F for ; Sat, 18 Jun 2011 07:19:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:subject:message-id:mime-version:content-type; q= dns/txt; s=beta; bh=KzyN+gMt2Kg0tg3XxZnThI5aTvbF5CZUnEshN7JpSbM=; b= d/3EfD/5WdRwH2awbz+Sh6rlvyCuiXBgsm0GS9BRBDP8plf9mPTX0jtqxk02QXzv Z9houhtO/Q320og3/qHOWQxh3U33arFQE2F6lR6rhZYt3XbFsdwFKZfazbb3zMH7 L93VPHpEfYdfEDVtwr/XcGBLrCagkNhyr/lQ+NtubfI= Received: (qmail 25415 invoked from network); 18 Jun 2011 16:19:50 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.66.182.48) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 18 Jun 2011 16:19:50 +0200 Date: Sat, 18 Jun 2011 16:19:50 +0200 From: Markus Trippelsdorf To: xfs@oss.sgi.com X-ASG-Orig-Subj: long hangs when deleting large directories (3.0-rc3) Subject: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110618141950.GA1685@x4.trippels.de> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="/04w6evG8XlLl3ft" Content-Disposition: inline X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1308406795 X-Barracuda-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.53 X-Barracuda-Spam-Status: No, SCORE=-1.53 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, FUZZY_VPILL, UPPERCASE_50_75, UPPERCASE_50_75_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66431 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 FUZZY_VPILL BODY: Attempt to obfuscate words in spam 0.00 UPPERCASE_50_75 message body is 50-75% uppercase 0.49 UPPERCASE_50_75_2 message body is 50-75% uppercase X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --/04w6evG8XlLl3ft Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Running the latest git kernel (3.0-rc3) my machine hangs for long periods (1-2 sec) whenever I delete a large directory recursively on my xfs partition. During the hang I cannot move the mouse pointer or use the keyboard (but the music keeps playing without stuttering). A quick way to reproduce is to "rm -fr" a kernel tree. This happens on a 4kb SATA hard drive: xfs_info /var meta-data=/dev/sda1 isize=256 agcount=4, agsize=12800000 blks = sectsz=4096 attr=2 data = bsize=4096 blocks=51200000, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=25000, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 /dev/sda1 on /var type xfs (rw,noatime,attr2,delaylog,logbsize=256k,noquota) My kernel config is attached. Please let me know if you need additional information. -- Markus --/04w6evG8XlLl3ft Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=config # # Automatically generated make config: don't edit # Linux/x86_64 3.0.0-rc3 Kernel Configuration # CONFIG_64BIT=y # CONFIG_X86_32 is not set CONFIG_X86_64=y CONFIG_X86=y CONFIG_INSTRUCTION_DECODER=y CONFIG_OUTPUT_FORMAT="elf64-x86-64" CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" 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_MMU=y CONFIG_ZONE_DMA=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_NEED_SG_DMA_LENGTH=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 is not set CONFIG_RWSEM_XCHGADD_ALGORITHM=y 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_NEED_PER_CPU_EMBED_FIRST_CHUNK=y CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=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_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_X86_64_SMP=y CONFIG_X86_HT=y CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" # CONFIG_KTIME_SCALAR is not set CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_HAVE_IRQ_WORK=y CONFIG_IRQ_WORK=y # # General setup # CONFIG_EXPERIMENTAL=y CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_CROSS_COMPILE="" CONFIG_LOCALVERSION="" CONFIG_LOCALVERSION_AUTO=y CONFIG_HAVE_KERNEL_GZIP=y CONFIG_HAVE_KERNEL_BZIP2=y CONFIG_HAVE_KERNEL_LZMA=y CONFIG_HAVE_KERNEL_XZ=y CONFIG_HAVE_KERNEL_LZO=y # CONFIG_KERNEL_GZIP is not set # CONFIG_KERNEL_BZIP2 is not set # CONFIG_KERNEL_LZMA is not set # CONFIG_KERNEL_XZ is not set CONFIG_KERNEL_LZO=y CONFIG_DEFAULT_HOSTNAME="(none)" CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y CONFIG_POSIX_MQUEUE_SYSCTL=y CONFIG_BSD_PROCESS_ACCT=y # CONFIG_BSD_PROCESS_ACCT_V3 is not set # CONFIG_FHANDLE is not set # CONFIG_TASKSTATS is not set # CONFIG_AUDIT is not set CONFIG_HAVE_GENERIC_HARDIRQS=y # # IRQ subsystem # CONFIG_GENERIC_HARDIRQS=y CONFIG_HAVE_SPARSE_IRQ=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_IRQ_SHOW=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_IRQ_FORCED_THREADING=y # CONFIG_SPARSE_IRQ is not set # # RCU Subsystem # CONFIG_TREE_PREEMPT_RCU=y CONFIG_PREEMPT_RCU=y # 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_RCU_BOOST is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=16 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y # CONFIG_CGROUPS is not set # CONFIG_NAMESPACES is not set # CONFIG_SCHED_AUTOGROUP is not set # CONFIG_SYSFS_DEPRECATED is not set # CONFIG_RELAY is not set # CONFIG_BLK_DEV_INITRD is not set # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_SYSCTL=y CONFIG_ANON_INODES=y CONFIG_EXPERT=y CONFIG_SYSCTL_SYSCALL=y CONFIG_KALLSYMS=y # CONFIG_KALLSYMS_ALL is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y # CONFIG_ELF_CORE is not set # CONFIG_PCSPKR_PLATFORM is not set 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_EMBEDDED=y CONFIG_HAVE_PERF_EVENTS=y # # Kernel Performance Events And Counters # CONFIG_PERF_EVENTS=y # CONFIG_PERF_COUNTERS is not set # CONFIG_DEBUG_PERF_USE_VMALLOC is not set CONFIG_VM_EVENT_COUNTERS=y CONFIG_PCI_QUIRKS=y # CONFIG_SLUB_DEBUG is not set # CONFIG_COMPAT_BRK is not set # CONFIG_SLAB is not set CONFIG_SLUB=y # CONFIG_SLOB is not set # CONFIG_PROFILING is not set CONFIG_TRACEPOINTS=y CONFIG_HAVE_OPROFILE=y CONFIG_JUMP_LABEL=y CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_USER_RETURN_NOTIFIER=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y CONFIG_HAVE_OPTPROBES=y CONFIG_HAVE_ARCH_TRACEHOOK=y CONFIG_HAVE_DMA_ATTRS=y CONFIG_USE_GENERIC_SMP_HELPERS=y CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y CONFIG_HAVE_DMA_API_DEBUG=y CONFIG_HAVE_HW_BREAKPOINT=y CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y CONFIG_HAVE_USER_RETURN_NOTIFIER=y CONFIG_HAVE_PERF_EVENTS_NMI=y CONFIG_HAVE_ARCH_JUMP_LABEL=y # # GCOV-based kernel profiling # # CONFIG_GCOV_KERNEL is not set # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set CONFIG_RT_MUTEXES=y CONFIG_BASE_SMALL=0 # CONFIG_MODULES is not set CONFIG_STOP_MACHINE=y CONFIG_BLOCK=y CONFIG_BLK_DEV_BSG=y # CONFIG_BLK_DEV_INTEGRITY is not set # # IO Schedulers # CONFIG_IOSCHED_NOOP=y # CONFIG_IOSCHED_DEADLINE is not set CONFIG_IOSCHED_CFQ=y CONFIG_DEFAULT_CFQ=y # CONFIG_DEFAULT_NOOP is not set CONFIG_DEFAULT_IOSCHED="cfq" CONFIG_PREEMPT_NOTIFIERS=y # CONFIG_INLINE_SPIN_TRYLOCK is not set # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set # CONFIG_INLINE_SPIN_LOCK is not set # CONFIG_INLINE_SPIN_LOCK_BH is not set # CONFIG_INLINE_SPIN_LOCK_IRQ is not set # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set # CONFIG_INLINE_SPIN_UNLOCK is not set # CONFIG_INLINE_SPIN_UNLOCK_BH is not set # CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set # CONFIG_INLINE_READ_TRYLOCK is not set # CONFIG_INLINE_READ_LOCK is not set # CONFIG_INLINE_READ_LOCK_BH is not set # CONFIG_INLINE_READ_LOCK_IRQ is not set # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set # CONFIG_INLINE_READ_UNLOCK is not set # CONFIG_INLINE_READ_UNLOCK_BH is not set # CONFIG_INLINE_READ_UNLOCK_IRQ is not set # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set # CONFIG_INLINE_WRITE_TRYLOCK is not set # CONFIG_INLINE_WRITE_LOCK is not set # CONFIG_INLINE_WRITE_LOCK_BH is not set # CONFIG_INLINE_WRITE_LOCK_IRQ is not set # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set # CONFIG_INLINE_WRITE_UNLOCK is not set # CONFIG_INLINE_WRITE_UNLOCK_BH is not set # CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set CONFIG_MUTEX_SPIN_ON_OWNER=y # CONFIG_FREEZER is not set # # Processor type and features # CONFIG_TICK_ONESHOT=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y CONFIG_SMP=y # CONFIG_X86_MPPARSE is not set # CONFIG_X86_EXTENDED_PLATFORM is not set CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y CONFIG_SCHED_OMIT_FRAME_POINTER=y # CONFIG_PARAVIRT_GUEST is not set CONFIG_NO_BOOTMEM=y # CONFIG_MEMTEST is not set CONFIG_MK8=y # CONFIG_MPSC is not set # CONFIG_MCORE2 is not set # CONFIG_MATOM is not set # CONFIG_GENERIC_CPU is not set CONFIG_X86_INTERNODE_CACHE_SHIFT=6 CONFIG_X86_CMPXCHG=y CONFIG_CMPXCHG_LOCAL=y CONFIG_X86_L1_CACHE_SHIFT=6 CONFIG_X86_XADD=y CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_INTEL_USERCOPY=y CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_TSC=y CONFIG_X86_CMPXCHG64=y CONFIG_X86_CMOV=y CONFIG_X86_MINIMUM_CPU_FAMILY=64 CONFIG_X86_DEBUGCTLMSR=y CONFIG_PROCESSOR_SELECT=y # CONFIG_CPU_SUP_INTEL is not set CONFIG_CPU_SUP_AMD=y # CONFIG_CPU_SUP_CENTAUR is not set CONFIG_HPET_TIMER=y CONFIG_HPET_EMULATE_RTC=y CONFIG_DMI=y # CONFIG_GART_IOMMU is not set # CONFIG_CALGARY_IOMMU is not set # CONFIG_AMD_IOMMU is not set CONFIG_SWIOTLB=y CONFIG_IOMMU_HELPER=y # CONFIG_IOMMU_API is not set # CONFIG_MAXSMP is not set CONFIG_NR_CPUS=4 # CONFIG_SCHED_SMT is not set CONFIG_SCHED_MC=y # CONFIG_IRQ_TIME_ACCOUNTING is not set # CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_VOLUNTARY is not set CONFIG_PREEMPT=y CONFIG_X86_LOCAL_APIC=y CONFIG_X86_IO_APIC=y # CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS is not set CONFIG_X86_MCE=y # CONFIG_X86_MCE_INTEL is not set CONFIG_X86_MCE_AMD=y CONFIG_X86_MCE_THRESHOLD=y # CONFIG_X86_MCE_INJECT is not set # CONFIG_I8K is not set # CONFIG_MICROCODE is not set CONFIG_X86_MSR=y CONFIG_X86_CPUID=y CONFIG_ARCH_PHYS_ADDR_T_64BIT=y CONFIG_ARCH_DMA_ADDR_T_64BIT=y CONFIG_DIRECT_GBPAGES=y # CONFIG_NUMA is not set CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SPARSEMEM_DEFAULT=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_ARCH_PROC_KCORE_TEXT=y CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 CONFIG_SELECT_MEMORY_MODEL=y CONFIG_SPARSEMEM_MANUAL=y CONFIG_SPARSEMEM=y CONFIG_HAVE_MEMORY_PRESENT=y CONFIG_SPARSEMEM_EXTREME=y CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER=y CONFIG_SPARSEMEM_VMEMMAP=y CONFIG_HAVE_MEMBLOCK=y # CONFIG_MEMORY_HOTPLUG is not set CONFIG_PAGEFLAGS_EXTENDED=y CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_COMPACTION=y CONFIG_MIGRATION=y CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_VIRT_TO_BUS=y CONFIG_MMU_NOTIFIER=y # CONFIG_KSM is not set CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y # CONFIG_MEMORY_FAILURE is not set CONFIG_TRANSPARENT_HUGEPAGE=y CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y # CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set # CONFIG_CLEANCACHE is not set # CONFIG_X86_CHECK_BIOS_CORRUPTION is not set CONFIG_X86_RESERVE_LOW=64 CONFIG_MTRR=y CONFIG_MTRR_SANITIZER=y CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=2 CONFIG_X86_PAT=y CONFIG_ARCH_USES_PG_UNCACHED=y # CONFIG_EFI is not set CONFIG_SECCOMP=y # CONFIG_CC_STACKPROTECTOR is not set # CONFIG_HZ_100 is not set # CONFIG_HZ_250 is not set # CONFIG_HZ_300 is not set CONFIG_HZ_1000=y CONFIG_HZ=1000 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=0x1000000 # CONFIG_HOTPLUG_CPU is not set # CONFIG_CMDLINE_BOOL is not set CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # # Power management and ACPI options # # CONFIG_SUSPEND is not set # CONFIG_HIBERNATION is not set # CONFIG_PM_RUNTIME is not set CONFIG_ACPI=y # CONFIG_ACPI_PROCFS is not set # CONFIG_ACPI_PROCFS_POWER is not set # CONFIG_ACPI_EC_DEBUGFS is not set # CONFIG_ACPI_PROC_EVENT is not set # CONFIG_ACPI_AC is not set # CONFIG_ACPI_BATTERY is not set CONFIG_ACPI_BUTTON=y # CONFIG_ACPI_VIDEO is not set # CONFIG_ACPI_FAN is not set # CONFIG_ACPI_DOCK is not set CONFIG_ACPI_PROCESSOR=y # CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set CONFIG_ACPI_THERMAL=y # CONFIG_ACPI_CUSTOM_DSDT is not set CONFIG_ACPI_BLACKLIST_YEAR=0 # CONFIG_ACPI_DEBUG is not set # CONFIG_ACPI_PCI_SLOT is not set CONFIG_X86_PM_TIMER=y # CONFIG_ACPI_CONTAINER is not set # CONFIG_ACPI_SBS is not set # CONFIG_ACPI_HED is not set # CONFIG_ACPI_CUSTOM_METHOD is not set # CONFIG_ACPI_APEI is not set # CONFIG_SFI is not set # # CPU Frequency scaling # CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_TABLE=y CONFIG_CPU_FREQ_STAT=y # 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 is not set # CONFIG_CPU_FREQ_GOV_USERSPACE is not set CONFIG_CPU_FREQ_GOV_ONDEMAND=y # CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set # # x86 CPU frequency scaling drivers # # CONFIG_X86_PCC_CPUFREQ is not set # CONFIG_X86_ACPI_CPUFREQ is not set CONFIG_X86_POWERNOW_K8=y # CONFIG_X86_SPEEDSTEP_CENTRINO is not set # 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 is not set # # Bus options (PCI etc.) # CONFIG_PCI=y CONFIG_PCI_DIRECT=y # CONFIG_PCI_MMCONFIG is not set CONFIG_PCI_DOMAINS=y # CONFIG_PCI_CNB20LE_QUIRK is not set # CONFIG_DMAR is not set # CONFIG_INTR_REMAP is not set # CONFIG_PCIEPORTBUS is not set CONFIG_ARCH_SUPPORTS_MSI=y CONFIG_PCI_MSI=y # CONFIG_PCI_DEBUG is not set # CONFIG_PCI_STUB is not set CONFIG_HT_IRQ=y # CONFIG_PCI_IOV is not set CONFIG_PCI_IOAPIC=y CONFIG_PCI_LABEL=y CONFIG_ISA_DMA_API=y CONFIG_AMD_NB=y # CONFIG_PCCARD is not set # CONFIG_HOTPLUG_PCI is not set # CONFIG_RAPIDIO is not set # # Executable file formats / Emulations # CONFIG_BINFMT_ELF=y # CONFIG_HAVE_AOUT is not set # CONFIG_BINFMT_MISC is not set # CONFIG_IA32_EMULATION is not set # CONFIG_COMPAT_FOR_U64_ALIGNMENT is not set CONFIG_HAVE_TEXT_POKE_SMP=y CONFIG_NET=y # # Networking options # CONFIG_PACKET=y CONFIG_UNIX=y # CONFIG_NET_KEY is not set CONFIG_INET=y # CONFIG_IP_MULTICAST is not set # CONFIG_IP_ADVANCED_ROUTER is not set # CONFIG_IP_PNP is not set # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE_DEMUX is not set # CONFIG_ARPD is not set # CONFIG_SYN_COOKIES is not set # CONFIG_INET_AH is not set # CONFIG_INET_ESP is not set # CONFIG_INET_IPCOMP is not set # CONFIG_INET_XFRM_TUNNEL is not set # CONFIG_INET_TUNNEL is not set # CONFIG_INET_XFRM_MODE_TRANSPORT is not set # CONFIG_INET_XFRM_MODE_TUNNEL is not set # CONFIG_INET_XFRM_MODE_BEET is not set CONFIG_INET_LRO=y CONFIG_INET_DIAG=y CONFIG_INET_TCP_DIAG=y # CONFIG_TCP_CONG_ADVANCED is not set CONFIG_TCP_CONG_CUBIC=y CONFIG_DEFAULT_TCP_CONG="cubic" # CONFIG_TCP_MD5SIG is not set # CONFIG_IPV6 is not set # CONFIG_NETWORK_SECMARK is not set # CONFIG_NETWORK_PHY_TIMESTAMPING is not set CONFIG_NETFILTER=y # CONFIG_NETFILTER_DEBUG is not set # CONFIG_NETFILTER_ADVANCED is not set # # Core Netfilter Configuration # CONFIG_NETFILTER_NETLINK=y CONFIG_NETFILTER_NETLINK_LOG=y CONFIG_NF_CONNTRACK=y CONFIG_NF_CONNTRACK_FTP=y CONFIG_NF_CONNTRACK_IRC=y CONFIG_NF_CONNTRACK_SIP=y CONFIG_NF_CT_NETLINK=y CONFIG_NETFILTER_XTABLES=y # # Xtables combined modules # CONFIG_NETFILTER_XT_MARK=y # # Xtables targets # CONFIG_NETFILTER_XT_TARGET_NFLOG=y CONFIG_NETFILTER_XT_TARGET_TCPMSS=y # # Xtables matches # CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y CONFIG_NETFILTER_XT_MATCH_STATE=y # CONFIG_IP_SET is not set # CONFIG_IP_VS is not set # # IP: Netfilter Configuration # CONFIG_NF_DEFRAG_IPV4=y CONFIG_NF_CONNTRACK_IPV4=y CONFIG_NF_CONNTRACK_PROC_COMPAT=y CONFIG_IP_NF_IPTABLES=y CONFIG_IP_NF_FILTER=y CONFIG_IP_NF_TARGET_REJECT=y CONFIG_IP_NF_TARGET_LOG=y CONFIG_IP_NF_TARGET_ULOG=y CONFIG_NF_NAT=y CONFIG_NF_NAT_NEEDED=y CONFIG_IP_NF_TARGET_MASQUERADE=y CONFIG_NF_NAT_FTP=y CONFIG_NF_NAT_IRC=y # CONFIG_NF_NAT_TFTP is not set # CONFIG_NF_NAT_AMANDA is not set # CONFIG_NF_NAT_PPTP is not set # CONFIG_NF_NAT_H323 is not set CONFIG_NF_NAT_SIP=y CONFIG_IP_NF_MANGLE=y # CONFIG_IP_DCCP is not set # CONFIG_IP_SCTP is not set # CONFIG_RDS is not set # CONFIG_TIPC is not set # CONFIG_ATM is not set # CONFIG_L2TP is not set CONFIG_STP=y CONFIG_BRIDGE=y CONFIG_BRIDGE_IGMP_SNOOPING=y # CONFIG_NET_DSA is not set # CONFIG_VLAN_8021Q is not set # CONFIG_DECNET is not set CONFIG_LLC=y # CONFIG_LLC2 is not set # CONFIG_IPX is not set # CONFIG_ATALK is not set # CONFIG_X25 is not set # CONFIG_LAPB is not set # CONFIG_ECONET is not set # CONFIG_WAN_ROUTER is not set # CONFIG_PHONET is not set # CONFIG_IEEE802154 is not set # CONFIG_NET_SCHED is not set # CONFIG_DCB is not set # CONFIG_BATMAN_ADV is not set CONFIG_RPS=y CONFIG_RFS_ACCEL=y CONFIG_XPS=y CONFIG_HAVE_BPF_JIT=y # # Network testing # # CONFIG_NET_PKTGEN is not set # CONFIG_NET_DROP_MONITOR is not set # CONFIG_HAMRADIO is not set # CONFIG_CAN is not set # CONFIG_IRDA is not set # CONFIG_BT is not set # CONFIG_AF_RXRPC is not set # CONFIG_WIRELESS is not set # CONFIG_WIMAX is not set # CONFIG_RFKILL is not set # CONFIG_NET_9P is not set # CONFIG_CAIF is not set # CONFIG_CEPH_LIB is not set # # Device Drivers # # # Generic Driver Options # CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y CONFIG_STANDALONE=y # CONFIG_PREVENT_FIRMWARE_BUILD is not set CONFIG_FW_LOADER=y CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE="radeon/R600_rlc.bin" CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware" # CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DEVRES is not set # CONFIG_SYS_HYPERVISOR is not set # CONFIG_CONNECTOR is not set # CONFIG_MTD is not set # CONFIG_PARPORT is not set CONFIG_PNP=y CONFIG_PNP_DEBUG_MESSAGES=y # # Protocols # CONFIG_PNPACPI=y CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_FD is not set # CONFIG_BLK_CPQ_DA is not set # CONFIG_BLK_CPQ_CISS_DA is not set # CONFIG_BLK_DEV_DAC960 is not set # CONFIG_BLK_DEV_UMEM is not set # CONFIG_BLK_DEV_COW_COMMON is not set CONFIG_BLK_DEV_LOOP=y # CONFIG_BLK_DEV_CRYPTOLOOP is not set # # DRBD disabled because PROC_FS, INET or CONNECTOR not selected # # CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_SX8 is not set # CONFIG_BLK_DEV_UB is not set # CONFIG_BLK_DEV_RAM is not set CONFIG_CDROM_PKTCDVD=y CONFIG_CDROM_PKTCDVD_BUFFERS=8 # CONFIG_CDROM_PKTCDVD_WCACHE is not set # CONFIG_ATA_OVER_ETH is not set # CONFIG_VIRTIO_BLK is not set # CONFIG_BLK_DEV_HD is not set # CONFIG_BLK_DEV_RBD is not set # CONFIG_SENSORS_LIS3LV02D is not set # CONFIG_MISC_DEVICES is not set CONFIG_HAVE_IDE=y # CONFIG_IDE is not set # # SCSI device support # CONFIG_SCSI_MOD=y # CONFIG_RAID_ATTRS is not set CONFIG_SCSI=y CONFIG_SCSI_DMA=y # CONFIG_SCSI_TGT is not set # CONFIG_SCSI_NETLINK is not set # CONFIG_SCSI_PROC_FS is not set # # SCSI support type (disk, tape, CD-ROM) # CONFIG_BLK_DEV_SD=y # CONFIG_CHR_DEV_ST is not set # CONFIG_CHR_DEV_OSST is not set CONFIG_BLK_DEV_SR=y # CONFIG_BLK_DEV_SR_VENDOR is not set CONFIG_CHR_DEV_SG=y # CONFIG_CHR_DEV_SCH is not set # CONFIG_SCSI_MULTI_LUN is not set # CONFIG_SCSI_CONSTANTS is not set # CONFIG_SCSI_LOGGING is not set # CONFIG_SCSI_SCAN_ASYNC is not set # # SCSI Transports # # CONFIG_SCSI_SPI_ATTRS is not set # CONFIG_SCSI_FC_ATTRS is not set # CONFIG_SCSI_ISCSI_ATTRS is not set # CONFIG_SCSI_SAS_ATTRS is not set # CONFIG_SCSI_SAS_LIBSAS is not set # CONFIG_SCSI_SRP_ATTRS is not set # CONFIG_SCSI_LOWLEVEL is not set # CONFIG_SCSI_DH is not set # CONFIG_SCSI_OSD_INITIATOR is not set CONFIG_ATA=y # CONFIG_ATA_NONSTANDARD is not set CONFIG_ATA_VERBOSE_ERROR=y # CONFIG_ATA_ACPI is not set # CONFIG_SATA_PMP is not set # # Controllers with non-SFF native interface # CONFIG_SATA_AHCI=y # CONFIG_SATA_AHCI_PLATFORM is not set # CONFIG_SATA_INIC162X is not set # CONFIG_SATA_ACARD_AHCI is not set # CONFIG_SATA_SIL24 is not set CONFIG_ATA_SFF=y # # SFF controllers with custom DMA interface # # CONFIG_PDC_ADMA is not set # CONFIG_SATA_QSTOR is not set # CONFIG_SATA_SX4 is not set CONFIG_ATA_BMDMA=y # # SATA SFF controllers with BMDMA # # CONFIG_ATA_PIIX is not set # CONFIG_SATA_MV is not set # CONFIG_SATA_NV is not set # CONFIG_SATA_PROMISE is not set # CONFIG_SATA_SIL is not set # CONFIG_SATA_SIS is not set # CONFIG_SATA_SVW is not set # CONFIG_SATA_ULI is not set # CONFIG_SATA_VIA is not set # CONFIG_SATA_VITESSE is not set # # PATA SFF controllers with BMDMA # # CONFIG_PATA_ALI is not set # CONFIG_PATA_AMD is not set # CONFIG_PATA_ARASAN_CF is not set # CONFIG_PATA_ARTOP is not set CONFIG_PATA_ATIIXP=y # CONFIG_PATA_ATP867X is not set # CONFIG_PATA_CMD64X is not set # CONFIG_PATA_CS5520 is not set # CONFIG_PATA_CS5530 is not set # CONFIG_PATA_CS5536 is not set # CONFIG_PATA_CYPRESS is not set # CONFIG_PATA_EFAR is not set # 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_IT8213 is not set # CONFIG_PATA_IT821X is not set # CONFIG_PATA_JMICRON is not set # CONFIG_PATA_MARVELL is not set # CONFIG_PATA_NETCELL is not set # CONFIG_PATA_NINJA32 is not set # CONFIG_PATA_NS87415 is not set # CONFIG_PATA_OLDPIIX is not set # CONFIG_PATA_OPTIDMA is not set # CONFIG_PATA_PDC2027X is not set # CONFIG_PATA_PDC_OLD is not set # CONFIG_PATA_RADISYS is not set # CONFIG_PATA_RDC is not set # CONFIG_PATA_SC1200 is not set # CONFIG_PATA_SCH is not set # CONFIG_PATA_SERVERWORKS is not set # CONFIG_PATA_SIL680 is not set # CONFIG_PATA_SIS is not set # CONFIG_PATA_TOSHIBA is not set # CONFIG_PATA_TRIFLEX is not set # CONFIG_PATA_VIA is not set # CONFIG_PATA_WINBOND is not set # # PIO-only SFF controllers # # CONFIG_PATA_CMD640_PCI is not set # CONFIG_PATA_MPIIX is not set # CONFIG_PATA_NS87410 is not set # CONFIG_PATA_OPTI is not set # CONFIG_PATA_PLATFORM is not set # CONFIG_PATA_RZ1000 is not set # # Generic fallback / legacy drivers # # CONFIG_ATA_GENERIC is not set # CONFIG_PATA_LEGACY is not set # CONFIG_MD is not set # CONFIG_TARGET_CORE is not set # CONFIG_FUSION is not set # # IEEE 1394 (FireWire) support # # CONFIG_FIREWIRE is not set # CONFIG_FIREWIRE_NOSY is not set # CONFIG_I2O is not set # CONFIG_MACINTOSH_DRIVERS is not set CONFIG_NETDEVICES=y CONFIG_DUMMY=y # CONFIG_BONDING is not set # CONFIG_MACVLAN is not set # CONFIG_EQUALIZER is not set CONFIG_TUN=y # CONFIG_VETH is not set # CONFIG_NET_SB1000 is not set # CONFIG_ARCNET is not set CONFIG_MII=y # CONFIG_PHYLIB is not set # CONFIG_NET_ETHERNET is not set CONFIG_NETDEV_1000=y # CONFIG_ACENIC is not set # CONFIG_DL2K is not set # CONFIG_E1000 is not set # CONFIG_E1000E is not set # CONFIG_IP1000 is not set # CONFIG_IGB is not set # CONFIG_IGBVF is not set # CONFIG_NS83820 is not set # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set # CONFIG_R8169 is not set # CONFIG_SIS190 is not set # CONFIG_SKGE is not set # CONFIG_SKY2 is not set # CONFIG_VIA_VELOCITY is not set # CONFIG_TIGON3 is not set # CONFIG_BNX2 is not set # CONFIG_CNIC is not set # CONFIG_QLA3XXX is not set # CONFIG_ATL1 is not set CONFIG_ATL1E=y # CONFIG_ATL1C is not set # CONFIG_JME is not set # CONFIG_STMMAC_ETH is not set # CONFIG_PCH_GBE is not set # CONFIG_NETDEV_10000 is not set # CONFIG_TR is not set # CONFIG_WLAN is not set # # Enable WiMAX (Networking options) to see the WiMAX drivers # # # USB Network Adapters # # CONFIG_USB_CATC is not set # CONFIG_USB_KAWETH is not set # CONFIG_USB_PEGASUS is not set # CONFIG_USB_RTL8150 is not set # CONFIG_USB_USBNET is not set # CONFIG_USB_IPHETH is not set # CONFIG_WAN is not set # # CAIF transport drivers # # CONFIG_FDDI is not set # CONFIG_HIPPI is not set CONFIG_PPP=y # CONFIG_PPP_MULTILINK is not set CONFIG_PPP_FILTER=y CONFIG_PPP_ASYNC=y CONFIG_PPP_SYNC_TTY=y # CONFIG_PPP_DEFLATE is not set # CONFIG_PPP_BSDCOMP is not set # CONFIG_PPP_MPPE is not set # CONFIG_PPPOE is not set # CONFIG_SLIP is not set CONFIG_SLHC=y # CONFIG_NET_FC is not set # CONFIG_NETCONSOLE is not set # CONFIG_NETPOLL is not set # CONFIG_NET_POLL_CONTROLLER is not set # CONFIG_VIRTIO_NET is not set # CONFIG_VMXNET3 is not set # CONFIG_ISDN is not set # CONFIG_PHONE is not set # # Input device support # CONFIG_INPUT=y # CONFIG_INPUT_FF_MEMLESS is not set # CONFIG_INPUT_POLLDEV is not set # CONFIG_INPUT_SPARSEKMAP is not set # # Userland interfaces # CONFIG_INPUT_MOUSEDEV=y # CONFIG_INPUT_MOUSEDEV_PSAUX is not set CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 # CONFIG_INPUT_JOYDEV is not set CONFIG_INPUT_EVDEV=y # CONFIG_INPUT_EVBUG is not set # # Input Device Drivers # CONFIG_INPUT_KEYBOARD=y # CONFIG_KEYBOARD_ADP5588 is not set # CONFIG_KEYBOARD_ADP5589 is not set CONFIG_KEYBOARD_ATKBD=y # CONFIG_KEYBOARD_QT1070 is not set # CONFIG_KEYBOARD_QT2160 is not set # CONFIG_KEYBOARD_LKKBD is not set # CONFIG_KEYBOARD_TCA6416 is not set # CONFIG_KEYBOARD_MAX7359 is not set # CONFIG_KEYBOARD_MCS is not set # CONFIG_KEYBOARD_MPR121 is not set # CONFIG_KEYBOARD_NEWTON is not set # CONFIG_KEYBOARD_OPENCORES is not set # CONFIG_KEYBOARD_STOWAWAY is not set # CONFIG_KEYBOARD_SUNKBD is not set # CONFIG_KEYBOARD_XTKBD is not set CONFIG_INPUT_MOUSE=y # CONFIG_MOUSE_PS2 is not set # CONFIG_MOUSE_SERIAL is not set # CONFIG_MOUSE_APPLETOUCH is not set # CONFIG_MOUSE_BCM5974 is not set # CONFIG_MOUSE_VSXXXAA is not set # CONFIG_MOUSE_SYNAPTICS_I2C is not set # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_TABLET is not set # CONFIG_INPUT_TOUCHSCREEN is not set # CONFIG_INPUT_MISC is not set # # Hardware I/O ports # CONFIG_SERIO=y CONFIG_SERIO_I8042=y # CONFIG_SERIO_SERPORT is not set # CONFIG_SERIO_CT82C710 is not set # CONFIG_SERIO_PCIPS2 is not set CONFIG_SERIO_LIBPS2=y # CONFIG_SERIO_RAW is not set # CONFIG_SERIO_ALTERA_PS2 is not set # CONFIG_SERIO_PS2MULT is not set # CONFIG_GAMEPORT is not set # # 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_UNIX98_PTYS=y # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set # CONFIG_LEGACY_PTYS is not set # CONFIG_SERIAL_NONSTANDARD is not set # CONFIG_NOZOMI is not set # CONFIG_N_GSM is not set # CONFIG_TRACE_SINK is not set # CONFIG_DEVKMEM is not set # # Serial drivers # # CONFIG_SERIAL_8250 is not set CONFIG_FIX_EARLYCON_MEM=y # # Non-8250 serial port support # # CONFIG_SERIAL_MFD_HSU is not set # CONFIG_SERIAL_JSM is not set # CONFIG_SERIAL_TIMBERDALE is not set # CONFIG_SERIAL_ALTERA_JTAGUART is not set # CONFIG_SERIAL_ALTERA_UART is not set # CONFIG_SERIAL_PCH_UART is not set # CONFIG_SERIAL_XILINX_PS_UART is not set # CONFIG_TTY_PRINTK is not set # CONFIG_VIRTIO_CONSOLE is not set # CONFIG_IPMI_HANDLER is not set # CONFIG_HW_RANDOM is not set # CONFIG_NVRAM is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set # CONFIG_MWAVE is not set # CONFIG_RAW_DRIVER is not set CONFIG_HPET=y CONFIG_HPET_MMAP=y # CONFIG_HANGCHECK_TIMER is not set # CONFIG_TCG_TPM is not set # CONFIG_TELCLOCK is not set CONFIG_DEVPORT=y # CONFIG_RAMOOPS is not set CONFIG_I2C=y CONFIG_I2C_BOARDINFO=y CONFIG_I2C_COMPAT=y CONFIG_I2C_CHARDEV=y # CONFIG_I2C_MUX is not set CONFIG_I2C_HELPER_AUTO=y CONFIG_I2C_ALGOBIT=y # # I2C Hardware Bus support # # # PC SMBus host controller drivers # # CONFIG_I2C_ALI1535 is not set # CONFIG_I2C_ALI1563 is not set # CONFIG_I2C_ALI15X3 is not set # CONFIG_I2C_AMD756 is not set # CONFIG_I2C_AMD8111 is not set # CONFIG_I2C_I801 is not set # CONFIG_I2C_ISCH is not set # CONFIG_I2C_PIIX4 is not set # CONFIG_I2C_NFORCE2 is not set # CONFIG_I2C_SIS5595 is not set # CONFIG_I2C_SIS630 is not set # CONFIG_I2C_SIS96X is not set # CONFIG_I2C_VIA is not set # CONFIG_I2C_VIAPRO is not set # # ACPI drivers # # CONFIG_I2C_SCMI is not set # # I2C system bus drivers (mostly embedded / system-on-chip) # # CONFIG_I2C_INTEL_MID is not set # CONFIG_I2C_OCORES is not set # CONFIG_I2C_PCA_PLATFORM is not set # CONFIG_I2C_PXA_PCI is not set # CONFIG_I2C_SIMTEC is not set # CONFIG_I2C_XILINX is not set # CONFIG_I2C_EG20T is not set # # External I2C/SMBus adapter drivers # # CONFIG_I2C_DIOLAN_U2C is not set # CONFIG_I2C_PARPORT_LIGHT is not set # CONFIG_I2C_TAOS_EVM is not set # CONFIG_I2C_TINY_USB is not set # # Other I2C/SMBus bus drivers # # CONFIG_I2C_DEBUG_CORE is not set # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set # CONFIG_SPI is not set # # PPS support # # CONFIG_PPS is not set # # PPS generators support # # # PTP clock support # # # Enable Device Drivers -> PPS to see the PTP clock options. # CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y # CONFIG_GPIOLIB is not set # CONFIG_W1 is not set CONFIG_POWER_SUPPLY=y # CONFIG_POWER_SUPPLY_DEBUG is not set # CONFIG_PDA_POWER is not set # CONFIG_TEST_POWER is not set # CONFIG_BATTERY_DS2780 is not set # CONFIG_BATTERY_DS2782 is not set # CONFIG_BATTERY_BQ20Z75 is not set # CONFIG_BATTERY_BQ27x00 is not set # CONFIG_BATTERY_MAX17040 is not set # CONFIG_BATTERY_MAX17042 is not set # CONFIG_CHARGER_MAX8903 is not set CONFIG_HWMON=y # CONFIG_HWMON_VID is not set # CONFIG_HWMON_DEBUG_CHIP is not set # # Native drivers # # CONFIG_SENSORS_ABITUGURU is not set # CONFIG_SENSORS_ABITUGURU3 is not set # CONFIG_SENSORS_AD7414 is not set # CONFIG_SENSORS_AD7418 is not set # CONFIG_SENSORS_ADM1021 is not set # CONFIG_SENSORS_ADM1025 is not set # CONFIG_SENSORS_ADM1026 is not set # CONFIG_SENSORS_ADM1029 is not set # CONFIG_SENSORS_ADM1031 is not set # CONFIG_SENSORS_ADM9240 is not set # CONFIG_SENSORS_ADT7411 is not set # CONFIG_SENSORS_ADT7462 is not set # CONFIG_SENSORS_ADT7470 is not set # CONFIG_SENSORS_ADT7475 is not set # CONFIG_SENSORS_ASC7621 is not set # CONFIG_SENSORS_K8TEMP is not set CONFIG_SENSORS_K10TEMP=y # CONFIG_SENSORS_FAM15H_POWER is not set # CONFIG_SENSORS_ASB100 is not set # CONFIG_SENSORS_ATXP1 is not set # CONFIG_SENSORS_DS620 is not set # CONFIG_SENSORS_DS1621 is not set # CONFIG_SENSORS_I5K_AMB is not set # CONFIG_SENSORS_F71805F is not set # CONFIG_SENSORS_F71882FG is not set # CONFIG_SENSORS_F75375S is not set # CONFIG_SENSORS_FSCHMD is not set # CONFIG_SENSORS_G760A is not set # CONFIG_SENSORS_GL518SM is not set # CONFIG_SENSORS_GL520SM is not set # CONFIG_SENSORS_CORETEMP is not set # CONFIG_SENSORS_IT87 is not set # CONFIG_SENSORS_JC42 is not set # CONFIG_SENSORS_LINEAGE is not set # CONFIG_SENSORS_LM63 is not set # CONFIG_SENSORS_LM73 is not set # CONFIG_SENSORS_LM75 is not set # CONFIG_SENSORS_LM77 is not set # CONFIG_SENSORS_LM78 is not set # CONFIG_SENSORS_LM80 is not set # CONFIG_SENSORS_LM83 is not set # CONFIG_SENSORS_LM85 is not set # CONFIG_SENSORS_LM87 is not set # CONFIG_SENSORS_LM90 is not set # CONFIG_SENSORS_LM92 is not set # CONFIG_SENSORS_LM93 is not set # CONFIG_SENSORS_LTC4151 is not set # CONFIG_SENSORS_LTC4215 is not set # CONFIG_SENSORS_LTC4245 is not set # CONFIG_SENSORS_LTC4261 is not set # CONFIG_SENSORS_LM95241 is not set # CONFIG_SENSORS_MAX16065 is not set # CONFIG_SENSORS_MAX1619 is not set # CONFIG_SENSORS_MAX6639 is not set # CONFIG_SENSORS_MAX6642 is not set # CONFIG_SENSORS_MAX6650 is not set # CONFIG_SENSORS_PC87360 is not set # CONFIG_SENSORS_PC87427 is not set # CONFIG_SENSORS_PCF8591 is not set # CONFIG_PMBUS is not set # CONFIG_SENSORS_SHT21 is not set # CONFIG_SENSORS_SIS5595 is not set # CONFIG_SENSORS_SMM665 is not set # CONFIG_SENSORS_DME1737 is not set # CONFIG_SENSORS_EMC1403 is not set # CONFIG_SENSORS_EMC2103 is not set # CONFIG_SENSORS_EMC6W201 is not set # CONFIG_SENSORS_SMSC47M1 is not set # CONFIG_SENSORS_SMSC47M192 is not set # CONFIG_SENSORS_SMSC47B397 is not set # CONFIG_SENSORS_SCH5627 is not set # CONFIG_SENSORS_ADS1015 is not set # CONFIG_SENSORS_ADS7828 is not set # CONFIG_SENSORS_AMC6821 is not set # CONFIG_SENSORS_THMC50 is not set # CONFIG_SENSORS_TMP102 is not set # CONFIG_SENSORS_TMP401 is not set # CONFIG_SENSORS_TMP421 is not set # CONFIG_SENSORS_VIA_CPUTEMP is not set # CONFIG_SENSORS_VIA686A is not set # CONFIG_SENSORS_VT1211 is not set # CONFIG_SENSORS_VT8231 is not set # CONFIG_SENSORS_W83781D is not set # CONFIG_SENSORS_W83791D is not set # CONFIG_SENSORS_W83792D is not set # CONFIG_SENSORS_W83793 is not set # CONFIG_SENSORS_W83795 is not set # CONFIG_SENSORS_W83L785TS is not set # CONFIG_SENSORS_W83L786NG is not set # CONFIG_SENSORS_W83627HF is not set # CONFIG_SENSORS_W83627EHF is not set # CONFIG_SENSORS_APPLESMC is not set # # ACPI drivers # # CONFIG_SENSORS_ACPI_POWER is not set CONFIG_SENSORS_ATK0110=y CONFIG_THERMAL=y CONFIG_THERMAL_HWMON=y # CONFIG_WATCHDOG is not set CONFIG_SSB_POSSIBLE=y # # Sonics Silicon Backplane # # CONFIG_SSB is not set CONFIG_BCMA_POSSIBLE=y # # Broadcom specific AMBA # # CONFIG_BCMA is not set # CONFIG_MFD_SUPPORT is not set # CONFIG_REGULATOR is not set # CONFIG_MEDIA_SUPPORT is not set # # Graphics support # # CONFIG_AGP is not set # CONFIG_VGA_ARB is not set # CONFIG_VGA_SWITCHEROO is not set CONFIG_DRM=y CONFIG_DRM_KMS_HELPER=y CONFIG_DRM_TTM=y # CONFIG_DRM_TDFX is not set # CONFIG_DRM_R128 is not set CONFIG_DRM_RADEON=y CONFIG_DRM_RADEON_KMS=y # CONFIG_DRM_MGA is not set # CONFIG_DRM_VIA is not set # CONFIG_DRM_SAVAGE is not set # CONFIG_STUB_POULSBO is not set # CONFIG_VGASTATE is not set CONFIG_VIDEO_OUTPUT_CONTROL=y CONFIG_FB=y # CONFIG_FIRMWARE_EDID is not set # CONFIG_FB_DDC is not set # CONFIG_FB_BOOT_VESA_SUPPORT is not set 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 is not set # CONFIG_FB_SYS_COPYAREA is not set # CONFIG_FB_SYS_IMAGEBLIT is not set # CONFIG_FB_FOREIGN_ENDIAN is not set # CONFIG_FB_SYS_FOPS is not set # CONFIG_FB_WMT_GE_ROPS is not set # CONFIG_FB_SVGALIB is not set # CONFIG_FB_MACMODES is not set # CONFIG_FB_BACKLIGHT is not set CONFIG_FB_MODE_HELPERS=y # CONFIG_FB_TILEBLITTING is not set # # Frame buffer hardware drivers # # CONFIG_FB_CIRRUS is not set # CONFIG_FB_PM2 is not set # CONFIG_FB_CYBER2000 is not set # CONFIG_FB_ARC is not set # CONFIG_FB_ASILIANT is not set # CONFIG_FB_IMSTT is not set # CONFIG_FB_VGA16 is not set # CONFIG_FB_VESA is not set # CONFIG_FB_N411 is not set # CONFIG_FB_HGA is not set # CONFIG_FB_S1D13XXX is not set # CONFIG_FB_NVIDIA is not set # CONFIG_FB_RIVA is not set # CONFIG_FB_LE80578 is not set # CONFIG_FB_MATROX is not set # CONFIG_FB_RADEON is not set # CONFIG_FB_ATY128 is not set # CONFIG_FB_ATY is not set # CONFIG_FB_S3 is not set # CONFIG_FB_SAVAGE is not set # CONFIG_FB_SIS is not set # CONFIG_FB_VIA is not set # CONFIG_FB_NEOMAGIC is not set # CONFIG_FB_KYRO is not set # CONFIG_FB_3DFX is not set # CONFIG_FB_VOODOO1 is not set # CONFIG_FB_VT8623 is not set # CONFIG_FB_TRIDENT is not set # CONFIG_FB_ARK is not set # CONFIG_FB_PM3 is not set # CONFIG_FB_CARMINE is not set # CONFIG_FB_GEODE is not set # CONFIG_FB_UDL is not set # CONFIG_FB_VIRTUAL is not set # CONFIG_FB_METRONOME is not set # CONFIG_FB_MB862XX is not set # CONFIG_FB_BROADSHEET is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set CONFIG_BACKLIGHT_CLASS_DEVICE=y # # Display device support # # CONFIG_DISPLAY_SUPPORT is not set # # Console display driver support # CONFIG_VGA_CONSOLE=y CONFIG_VGACON_SOFT_SCROLLBACK=y CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64 CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y 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=y CONFIG_SOUND_OSS_CORE=y CONFIG_SOUND_OSS_CORE_PRECLAIM=y CONFIG_SND=y CONFIG_SND_TIMER=y CONFIG_SND_PCM=y CONFIG_SND_HWDEP=y CONFIG_SND_RAWMIDI=y CONFIG_SND_SEQUENCER=y CONFIG_SND_SEQ_DUMMY=y CONFIG_SND_OSSEMUL=y CONFIG_SND_MIXER_OSS=y CONFIG_SND_PCM_OSS=y CONFIG_SND_PCM_OSS_PLUGINS=y CONFIG_SND_SEQUENCER_OSS=y CONFIG_SND_HRTIMER=y CONFIG_SND_SEQ_HRTIMER_DEFAULT=y CONFIG_SND_DYNAMIC_MINORS=y CONFIG_SND_SUPPORT_OLD_API=y # CONFIG_SND_VERBOSE_PROCFS is not set # CONFIG_SND_VERBOSE_PRINTK is not set # CONFIG_SND_DEBUG is not set CONFIG_SND_DMA_SGBUF=y CONFIG_SND_RAWMIDI_SEQ=y # CONFIG_SND_OPL3_LIB_SEQ is not set # CONFIG_SND_OPL4_LIB_SEQ is not set # CONFIG_SND_SBAWE_SEQ is not set # CONFIG_SND_EMU10K1_SEQ is not set # CONFIG_SND_DRIVERS is not set # CONFIG_SND_PCI is not set CONFIG_SND_USB=y CONFIG_SND_USB_AUDIO=y # CONFIG_SND_USB_UA101 is not set # CONFIG_SND_USB_USX2Y is not set # CONFIG_SND_USB_CAIAQ is not set # CONFIG_SND_USB_US122L is not set # CONFIG_SND_USB_6FIRE is not set # CONFIG_SND_SOC is not set # CONFIG_SOUND_PRIME is not set CONFIG_HID_SUPPORT=y CONFIG_HID=y CONFIG_HIDRAW=y # # USB Input Devices # CONFIG_USB_HID=y # CONFIG_HID_PID is not set CONFIG_USB_HIDDEV=y # # Special HID drivers # # CONFIG_HID_A4TECH is not set # CONFIG_HID_ACRUX is not set # CONFIG_HID_APPLE is not set # CONFIG_HID_BELKIN is not set # CONFIG_HID_CHERRY is not set # CONFIG_HID_CHICONY is not set # CONFIG_HID_PRODIKEYS is not set # CONFIG_HID_CYPRESS is not set # CONFIG_HID_DRAGONRISE is not set # CONFIG_HID_EMS_FF is not set # CONFIG_HID_EZKEY is not set # CONFIG_HID_KEYTOUCH is not set # CONFIG_HID_KYE is not set # CONFIG_HID_UCLOGIC is not set # CONFIG_HID_WALTOP is not set # CONFIG_HID_GYRATION is not set # CONFIG_HID_TWINHAN is not set # CONFIG_HID_KENSINGTON is not set # CONFIG_HID_LCPOWER is not set # CONFIG_HID_LOGITECH is not set # CONFIG_HID_MICROSOFT is not set # CONFIG_HID_MONTEREY is not set # CONFIG_HID_MULTITOUCH is not set # CONFIG_HID_NTRIG is not set # CONFIG_HID_ORTEK is not set # CONFIG_HID_PANTHERLORD is not set # CONFIG_HID_PETALYNX is not set # CONFIG_HID_PICOLCD is not set # CONFIG_HID_QUANTA is not set # CONFIG_HID_ROCCAT is not set # CONFIG_HID_ROCCAT_ARVO is not set # CONFIG_HID_ROCCAT_KONE is not set # CONFIG_HID_ROCCAT_KONEPLUS is not set # CONFIG_HID_ROCCAT_KOVAPLUS is not set # CONFIG_HID_ROCCAT_PYRA is not set # CONFIG_HID_SAMSUNG is not set # CONFIG_HID_SONY is not set # CONFIG_HID_SUNPLUS is not set # CONFIG_HID_GREENASIA is not set # CONFIG_HID_SMARTJOYPLUS is not set # CONFIG_HID_TOPSEED is not set # CONFIG_HID_THRUSTMASTER is not set # CONFIG_HID_ZEROPLUS is not set # CONFIG_HID_ZYDACRON is not set 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 is not set # # Miscellaneous USB options # # CONFIG_USB_DEVICEFS is not set # CONFIG_USB_DEVICE_CLASS is not set # CONFIG_USB_DYNAMIC_MINORS is not set # CONFIG_USB_OTG_WHITELIST is not set # CONFIG_USB_OTG_BLACKLIST_HUB is not set CONFIG_USB_MON=y # CONFIG_USB_WUSB is not set # CONFIG_USB_WUSB_CBAF is not set # # USB Host Controller Drivers # # CONFIG_USB_C67X00_HCD is not set # CONFIG_USB_XHCI_HCD is not set CONFIG_USB_EHCI_HCD=y # CONFIG_USB_EHCI_ROOT_HUB_TT is not set # CONFIG_USB_EHCI_TT_NEWSCHED is not set # CONFIG_USB_OXU210HP_HCD is not set # CONFIG_USB_ISP116X_HCD is not set # CONFIG_USB_ISP1760_HCD is not set # CONFIG_USB_ISP1362_HCD is not set CONFIG_USB_OHCI_HCD=y # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set CONFIG_USB_OHCI_LITTLE_ENDIAN=y # CONFIG_USB_UHCI_HCD is not set # CONFIG_USB_SL811_HCD is not set # CONFIG_USB_R8A66597_HCD is not set # CONFIG_USB_WHCI_HCD is not set # CONFIG_USB_HWA_HCD is not set # # USB Device Class drivers # # CONFIG_USB_ACM is not set CONFIG_USB_PRINTER=y # CONFIG_USB_WDM is not set # CONFIG_USB_TMC is not set # # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may # # # also be needed; see USB_STORAGE Help for more info # CONFIG_USB_STORAGE=y # CONFIG_USB_STORAGE_DEBUG is not set # CONFIG_USB_STORAGE_REALTEK is not set # CONFIG_USB_STORAGE_DATAFAB is not set # CONFIG_USB_STORAGE_FREECOM is not set # CONFIG_USB_STORAGE_ISD200 is not set # CONFIG_USB_STORAGE_USBAT is not set # CONFIG_USB_STORAGE_SDDR09 is not set # CONFIG_USB_STORAGE_SDDR55 is not set # CONFIG_USB_STORAGE_JUMPSHOT is not set # CONFIG_USB_STORAGE_ALAUDA is not set # CONFIG_USB_STORAGE_ONETOUCH is not set # CONFIG_USB_STORAGE_KARMA is not set # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set # CONFIG_USB_STORAGE_ENE_UB6250 is not set # CONFIG_USB_UAS is not set # CONFIG_USB_LIBUSUAL is not set # # USB Imaging devices # # CONFIG_USB_MDC800 is not set # CONFIG_USB_MICROTEK is not set # # USB port drivers # CONFIG_USB_SERIAL=y # CONFIG_USB_SERIAL_CONSOLE is not set # CONFIG_USB_EZUSB is not set CONFIG_USB_SERIAL_GENERIC=y # CONFIG_USB_SERIAL_AIRCABLE is not set # CONFIG_USB_SERIAL_ARK3116 is not set # CONFIG_USB_SERIAL_BELKIN is not set # CONFIG_USB_SERIAL_CH341 is not set # CONFIG_USB_SERIAL_WHITEHEAT is not set # CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set # CONFIG_USB_SERIAL_CP210X is not set # CONFIG_USB_SERIAL_CYPRESS_M8 is not set # CONFIG_USB_SERIAL_EMPEG is not set # CONFIG_USB_SERIAL_FTDI_SIO is not set # CONFIG_USB_SERIAL_FUNSOFT is not set # CONFIG_USB_SERIAL_VISOR is not set # CONFIG_USB_SERIAL_IPAQ is not set # CONFIG_USB_SERIAL_IR is not set # CONFIG_USB_SERIAL_EDGEPORT is not set # CONFIG_USB_SERIAL_EDGEPORT_TI is not set # CONFIG_USB_SERIAL_GARMIN is not set # CONFIG_USB_SERIAL_IPW is not set # CONFIG_USB_SERIAL_IUU is not set # CONFIG_USB_SERIAL_KEYSPAN_PDA is not set # CONFIG_USB_SERIAL_KEYSPAN is not set # CONFIG_USB_SERIAL_KLSI is not set # CONFIG_USB_SERIAL_KOBIL_SCT is not set # CONFIG_USB_SERIAL_MCT_U232 is not set # CONFIG_USB_SERIAL_MOS7720 is not set # CONFIG_USB_SERIAL_MOS7840 is not set # CONFIG_USB_SERIAL_MOTOROLA is not set # CONFIG_USB_SERIAL_NAVMAN is not set # CONFIG_USB_SERIAL_PL2303 is not set # CONFIG_USB_SERIAL_OTI6858 is not set # CONFIG_USB_SERIAL_QCAUX is not set # CONFIG_USB_SERIAL_QUALCOMM is not set # CONFIG_USB_SERIAL_SPCP8X5 is not set # CONFIG_USB_SERIAL_HP4X is not set # CONFIG_USB_SERIAL_SAFE is not set # CONFIG_USB_SERIAL_SIEMENS_MPI is not set # CONFIG_USB_SERIAL_SIERRAWIRELESS is not set # CONFIG_USB_SERIAL_SYMBOL is not set # CONFIG_USB_SERIAL_TI is not set # CONFIG_USB_SERIAL_CYBERJACK is not set # CONFIG_USB_SERIAL_XIRCOM is not set CONFIG_USB_SERIAL_WWAN=y CONFIG_USB_SERIAL_OPTION=y # CONFIG_USB_SERIAL_OMNINET is not set # CONFIG_USB_SERIAL_OPTICON is not set # CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set # CONFIG_USB_SERIAL_ZIO is not set # CONFIG_USB_SERIAL_SSU100 is not set # CONFIG_USB_SERIAL_DEBUG is not set # # USB Miscellaneous drivers # # CONFIG_USB_EMI62 is not set # CONFIG_USB_EMI26 is not set # CONFIG_USB_ADUTUX is not set # CONFIG_USB_SEVSEG is not set # CONFIG_USB_RIO500 is not set # CONFIG_USB_LEGOTOWER is not set # CONFIG_USB_LCD is not set # CONFIG_USB_LED is not set # CONFIG_USB_CYPRESS_CY7C63 is not set # CONFIG_USB_CYTHERM is not set # CONFIG_USB_IDMOUSE is not set # CONFIG_USB_FTDI_ELAN is not set # CONFIG_USB_APPLEDISPLAY is not set # CONFIG_USB_SISUSBVGA is not set # CONFIG_USB_LD is not set # CONFIG_USB_TRANCEVIBRATOR is not set # CONFIG_USB_IOWARRIOR is not set # CONFIG_USB_TEST is not set # CONFIG_USB_ISIGHTFW is not set # CONFIG_USB_YUREX is not set # CONFIG_USB_GADGET is not set # # OTG and related infrastructure # # CONFIG_NOP_USB_XCEIV is not set # CONFIG_UWB is not set # CONFIG_MMC is not set # CONFIG_MEMSTICK is not set # CONFIG_NEW_LEDS is not set # CONFIG_NFC_DEVICES is not set # CONFIG_ACCESSIBILITY is not set # CONFIG_INFINIBAND is not set CONFIG_EDAC=y # # Reporting subsystems # # CONFIG_EDAC_DEBUG is not set CONFIG_EDAC_DECODE_MCE=y # CONFIG_EDAC_MCE_INJ is not set CONFIG_EDAC_MM_EDAC=y CONFIG_EDAC_AMD64=y # CONFIG_EDAC_AMD64_ERROR_INJECTION is not set # CONFIG_EDAC_E752X is not set # CONFIG_EDAC_I82975X is not set # CONFIG_EDAC_I3000 is not set # CONFIG_EDAC_I3200 is not set # CONFIG_EDAC_X38 is not set # CONFIG_EDAC_I5400 is not set # CONFIG_EDAC_I7CORE is not set # CONFIG_EDAC_I5000 is not set # CONFIG_EDAC_I5100 is not set # CONFIG_EDAC_I7300 is not set 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 is not set # CONFIG_RTC_DRV_DS1374 is not set # CONFIG_RTC_DRV_DS1672 is not set # CONFIG_RTC_DRV_DS3232 is not set # CONFIG_RTC_DRV_MAX6900 is not set # CONFIG_RTC_DRV_RS5C372 is not set # CONFIG_RTC_DRV_ISL1208 is not set # CONFIG_RTC_DRV_ISL12022 is not set # CONFIG_RTC_DRV_X1205 is not set # CONFIG_RTC_DRV_PCF8563 is not set # CONFIG_RTC_DRV_PCF8583 is not set # CONFIG_RTC_DRV_M41T80 is not set # CONFIG_RTC_DRV_BQ32K is not set # CONFIG_RTC_DRV_S35390A is not set # CONFIG_RTC_DRV_FM3130 is not set # CONFIG_RTC_DRV_RX8581 is not set # CONFIG_RTC_DRV_RX8025 is not set # CONFIG_RTC_DRV_EM3027 is not set # CONFIG_RTC_DRV_RV3029C2 is not set # # SPI RTC drivers # # # Platform RTC drivers # CONFIG_RTC_DRV_CMOS=y # CONFIG_RTC_DRV_DS1286 is not set # CONFIG_RTC_DRV_DS1511 is not set # CONFIG_RTC_DRV_DS1553 is not set # CONFIG_RTC_DRV_DS1742 is not set # CONFIG_RTC_DRV_STK17TA8 is not set # CONFIG_RTC_DRV_M48T86 is not set # CONFIG_RTC_DRV_M48T35 is not set # CONFIG_RTC_DRV_M48T59 is not set # CONFIG_RTC_DRV_MSM6242 is not set # CONFIG_RTC_DRV_BQ4802 is not set # CONFIG_RTC_DRV_RP5C01 is not set # CONFIG_RTC_DRV_V3020 is not set # # on-CPU RTC drivers # # CONFIG_DMADEVICES is not set # CONFIG_AUXDISPLAY is not set # CONFIG_UIO is not set # CONFIG_STAGING is not set # CONFIG_X86_PLATFORM_DEVICES is not set # # Firmware Drivers # # CONFIG_EDD is not set CONFIG_FIRMWARE_MEMMAP=y # CONFIG_DELL_RBU is not set # CONFIG_DCDBAS is not set # CONFIG_DMIID is not set # CONFIG_DMI_SYSFS is not set # CONFIG_ISCSI_IBFT_FIND is not set # CONFIG_SIGMA is not set # CONFIG_GOOGLE_FIRMWARE is not set # # File systems # # CONFIG_EXT2_FS is not set # CONFIG_EXT3_FS is not set # CONFIG_EXT4_FS is not set # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set CONFIG_XFS_FS=y # CONFIG_XFS_QUOTA is not set # CONFIG_XFS_POSIX_ACL is not set # CONFIG_XFS_RT is not set # CONFIG_XFS_DEBUG is not set # CONFIG_GFS2_FS is not set # CONFIG_BTRFS_FS is not set # CONFIG_NILFS2_FS is not set # CONFIG_FS_POSIX_ACL is not set CONFIG_EXPORTFS=y CONFIG_FILE_LOCKING=y CONFIG_FSNOTIFY=y CONFIG_DNOTIFY=y CONFIG_INOTIFY_USER=y # CONFIG_FANOTIFY is not set # CONFIG_QUOTA is not set # CONFIG_QUOTACTL is not set # CONFIG_AUTOFS4_FS is not set # CONFIG_FUSE_FS is not set # # Caches # # CONFIG_FSCACHE is not set # # CD-ROM/DVD Filesystems # CONFIG_ISO9660_FS=y CONFIG_JOLIET=y # CONFIG_ZISOFS is not set # CONFIG_UDF_FS is not set # # DOS/FAT/NT Filesystems # CONFIG_FAT_FS=y CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" # CONFIG_NTFS_FS is not set # # 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 is not set # CONFIG_TMPFS_XATTR is not set # CONFIG_HUGETLBFS is not set # CONFIG_HUGETLB_PAGE is not set # CONFIG_CONFIGFS_FS is not set # CONFIG_MISC_FILESYSTEMS is not set # CONFIG_NETWORK_FILESYSTEMS is not set # # Partition Types # CONFIG_PARTITION_ADVANCED=y # CONFIG_ACORN_PARTITION is not set # CONFIG_OSF_PARTITION is not set # CONFIG_AMIGA_PARTITION is not set # CONFIG_ATARI_PARTITION is not set # CONFIG_MAC_PARTITION is not set CONFIG_MSDOS_PARTITION=y # CONFIG_BSD_DISKLABEL is not set # CONFIG_MINIX_SUBPARTITION is not set # CONFIG_SOLARIS_X86_PARTITION is not set # CONFIG_UNIXWARE_DISKLABEL is not set # CONFIG_LDM_PARTITION is not set # CONFIG_SGI_PARTITION is not set # CONFIG_ULTRIX_PARTITION is not set # CONFIG_SUN_PARTITION is not set # CONFIG_KARMA_PARTITION is not set CONFIG_EFI_PARTITION=y # CONFIG_SYSV68_PARTITION is not set CONFIG_NLS=y CONFIG_NLS_DEFAULT="iso8859-1" CONFIG_NLS_CODEPAGE_437=y # CONFIG_NLS_CODEPAGE_737 is not set # CONFIG_NLS_CODEPAGE_775 is not set # CONFIG_NLS_CODEPAGE_850 is not set # CONFIG_NLS_CODEPAGE_852 is not set # CONFIG_NLS_CODEPAGE_855 is not set # CONFIG_NLS_CODEPAGE_857 is not set # CONFIG_NLS_CODEPAGE_860 is not set # CONFIG_NLS_CODEPAGE_861 is not set # CONFIG_NLS_CODEPAGE_862 is not set # CONFIG_NLS_CODEPAGE_863 is not set # CONFIG_NLS_CODEPAGE_864 is not set # CONFIG_NLS_CODEPAGE_865 is not set # CONFIG_NLS_CODEPAGE_866 is not set # CONFIG_NLS_CODEPAGE_869 is not set # CONFIG_NLS_CODEPAGE_936 is not set # CONFIG_NLS_CODEPAGE_950 is not set # CONFIG_NLS_CODEPAGE_932 is not set # CONFIG_NLS_CODEPAGE_949 is not set # CONFIG_NLS_CODEPAGE_874 is not set # CONFIG_NLS_ISO8859_8 is not set # CONFIG_NLS_CODEPAGE_1250 is not set # CONFIG_NLS_CODEPAGE_1251 is not set CONFIG_NLS_ASCII=y CONFIG_NLS_ISO8859_1=y # CONFIG_NLS_ISO8859_2 is not set # CONFIG_NLS_ISO8859_3 is not set # CONFIG_NLS_ISO8859_4 is not set # CONFIG_NLS_ISO8859_5 is not set # CONFIG_NLS_ISO8859_6 is not set # CONFIG_NLS_ISO8859_7 is not set # CONFIG_NLS_ISO8859_9 is not set # CONFIG_NLS_ISO8859_13 is not set # CONFIG_NLS_ISO8859_14 is not set CONFIG_NLS_ISO8859_15=y # CONFIG_NLS_KOI8_R is not set # CONFIG_NLS_KOI8_U is not set CONFIG_NLS_UTF8=y # # Kernel hacking # CONFIG_TRACE_IRQFLAGS_SUPPORT=y # CONFIG_PRINTK_TIME is not set CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4 # CONFIG_ENABLE_WARN_DEPRECATED is not set # CONFIG_ENABLE_MUST_CHECK is not set CONFIG_FRAME_WARN=1024 CONFIG_MAGIC_SYSRQ=y # CONFIG_STRIP_ASM_SYMS is not set # CONFIG_UNUSED_SYMBOLS is not set CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set # CONFIG_DEBUG_SECTION_MISMATCH is not set CONFIG_DEBUG_KERNEL=y # CONFIG_DEBUG_SHIRQ is not set # CONFIG_LOCKUP_DETECTOR is not set # CONFIG_HARDLOCKUP_DETECTOR is not set # CONFIG_DETECT_HUNG_TASK is not set CONFIG_SCHED_DEBUG=y # CONFIG_SCHEDSTATS is not set CONFIG_TIMER_STATS=y # CONFIG_DEBUG_OBJECTS is not set # CONFIG_SLUB_STATS is not set # CONFIG_DEBUG_KMEMLEAK is not set # CONFIG_DEBUG_PREEMPT 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_SPARSE_RCU_POINTER 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_STACK_USAGE is not set # CONFIG_DEBUG_KOBJECT is not set CONFIG_DEBUG_BUGVERBOSE=y # CONFIG_DEBUG_INFO is not set # CONFIG_DEBUG_VM is not set # CONFIG_DEBUG_VIRTUAL is not set # CONFIG_DEBUG_WRITECOUNT is not set # CONFIG_DEBUG_MEMORY_INIT is not set # CONFIG_DEBUG_LIST is not set # CONFIG_TEST_LIST_SORT is not set # CONFIG_DEBUG_SG is not set # CONFIG_DEBUG_NOTIFIERS is not set # CONFIG_DEBUG_CREDENTIALS is not set CONFIG_ARCH_WANT_FRAME_POINTERS=y CONFIG_FRAME_POINTER=y # CONFIG_BOOT_PRINTK_DELAY is not set # CONFIG_RCU_TORTURE_TEST is not set CONFIG_RCU_CPU_STALL_TIMEOUT=60 CONFIG_RCU_CPU_STALL_VERBOSE=y # CONFIG_BACKTRACE_SELF_TEST is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set # CONFIG_DEBUG_PER_CPU_MAPS is not set # CONFIG_LKDTM is not set # CONFIG_FAULT_INJECTION is not set # CONFIG_LATENCYTOP is not set # CONFIG_SYSCTL_SYSCALL_CHECK is not set # CONFIG_DEBUG_PAGEALLOC is not set CONFIG_USER_STACKTRACE_SUPPORT=y CONFIG_NOP_TRACER=y CONFIG_HAVE_FTRACE_NMI_ENTER=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y CONFIG_HAVE_DYNAMIC_FTRACE=y CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y CONFIG_HAVE_SYSCALL_TRACEPOINTS=y CONFIG_HAVE_C_RECORDMCOUNT=y CONFIG_TRACER_MAX_TRACE=y CONFIG_RING_BUFFER=y CONFIG_FTRACE_NMI_ENTER=y CONFIG_EVENT_TRACING=y # CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set CONFIG_CONTEXT_SWITCH_TRACER=y CONFIG_TRACING=y CONFIG_GENERIC_TRACER=y CONFIG_TRACING_SUPPORT=y CONFIG_FTRACE=y CONFIG_FUNCTION_TRACER=y CONFIG_FUNCTION_GRAPH_TRACER=y # CONFIG_IRQSOFF_TRACER is not set # CONFIG_PREEMPT_TRACER is not set CONFIG_SCHED_TRACER=y # CONFIG_FTRACE_SYSCALLS is not set CONFIG_BRANCH_PROFILE_NONE=y # CONFIG_PROFILE_ANNOTATED_BRANCHES is not set # CONFIG_PROFILE_ALL_BRANCHES is not set # CONFIG_STACK_TRACER is not set # CONFIG_BLK_DEV_IO_TRACE is not set CONFIG_DYNAMIC_FTRACE=y # CONFIG_FUNCTION_PROFILER is not set CONFIG_FTRACE_MCOUNT_RECORD=y # CONFIG_FTRACE_STARTUP_TEST is not set # CONFIG_MMIOTRACE is not set # CONFIG_RING_BUFFER_BENCHMARK is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set # CONFIG_DYNAMIC_DEBUG is not set # CONFIG_DMA_API_DEBUG is not set # CONFIG_ATOMIC64_SELFTEST is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set CONFIG_HAVE_ARCH_KMEMCHECK=y # CONFIG_TEST_KSTRTOX is not set CONFIG_STRICT_DEVMEM=y # CONFIG_X86_VERBOSE_BOOTUP is not set # CONFIG_EARLY_PRINTK is not set # CONFIG_DEBUG_STACKOVERFLOW is not set # CONFIG_X86_PTDUMP is not set CONFIG_DEBUG_RODATA=y CONFIG_DEBUG_RODATA_TEST=y # CONFIG_IOMMU_STRESS 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 is not set # CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set # # Security options # # CONFIG_KEYS is not set # CONFIG_SECURITY_DMESG_RESTRICT is not set # CONFIG_SECURITY is not set # CONFIG_SECURITYFS is not set CONFIG_DEFAULT_SECURITY_DAC=y CONFIG_DEFAULT_SECURITY="" # CONFIG_CRYPTO is not set CONFIG_HAVE_KVM=y CONFIG_HAVE_KVM_IRQCHIP=y CONFIG_HAVE_KVM_EVENTFD=y CONFIG_KVM_APIC_ARCHITECTURE=y CONFIG_KVM_MMIO=y CONFIG_KVM_ASYNC_PF=y CONFIG_VIRTUALIZATION=y CONFIG_KVM=y # CONFIG_KVM_INTEL is not set CONFIG_KVM_AMD=y # CONFIG_KVM_MMU_AUDIT is not set CONFIG_VHOST_NET=y CONFIG_VIRTIO=y CONFIG_VIRTIO_RING=y CONFIG_VIRTIO_PCI=y # CONFIG_VIRTIO_BALLOON is not set CONFIG_BINARY_PRINTF=y # # Library routines # CONFIG_BITREVERSE=y CONFIG_GENERIC_FIND_FIRST_BIT=y CONFIG_CRC_CCITT=y # CONFIG_CRC16 is not set # CONFIG_CRC_T10DIF is not set # CONFIG_CRC_ITU_T is not set CONFIG_CRC32=y # CONFIG_CRC7 is not set # CONFIG_LIBCRC32C is not set # CONFIG_XZ_DEC is not set # CONFIG_XZ_DEC_BCJ is not set CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT=y CONFIG_HAS_DMA=y CONFIG_CPU_RMAP=y CONFIG_NLATTR=y # CONFIG_AVERAGE is not set --/04w6evG8XlLl3ft-- From BATV+4e56190538da5262d723+2855+infradead.org+hch@bombadil.srs.infradead.org Sat Jun 18 09:25:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5IEP0eA214326 for ; Sat, 18 Jun 2011 09:25:00 -0500 X-ASG-Debug-ID: 1308407097-19dd00bc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 671EA14F2AC0 for ; Sat, 18 Jun 2011 07:24:57 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id skICgMBRpWZpnOQG for ; Sat, 18 Jun 2011 07:24:57 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QXwSG-0007xI-RP; Sat, 18 Jun 2011 14:24:56 +0000 Date: Sat, 18 Jun 2011 10:24:56 -0400 From: Christoph Hellwig To: Markus Trippelsdorf Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110618142456.GA26419@infradead.org> References: <20110618141950.GA1685@x4.trippels.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110618141950.GA1685@x4.trippels.de> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308407098 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0084 1.0000 -1.9664 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=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66431 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Sat, Jun 18, 2011 at 04:19:50PM +0200, Markus Trippelsdorf wrote: > Running the latest git kernel (3.0-rc3) my machine hangs for long > periods (1-2 sec) whenever I delete a large directory recursively on my > xfs partition. During the hang I cannot move the mouse pointer or use > the keyboard (but the music keeps playing without stuttering). A quick > way to reproduce is to "rm -fr" a kernel tree. Does this also happen when using the deadline I/O schedule, that is after a: echo "deadline" > /sys/block/sda/queue/scheduler From markus@trippelsdorf.de Sat Jun 18 09:37:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p5IEbNhk214777 for ; Sat, 18 Jun 2011 09:37:24 -0500 X-ASG-Debug-ID: 1308407841-19db01840000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 23096DD14D6 for ; Sat, 18 Jun 2011 07:37:22 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id q9FQQ92327ChA9FS for ; Sat, 18 Jun 2011 07:37:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:in-reply-to; q=dns/txt; s=beta; bh=U9nZcTJ2C1LtkaCV Xd/wRHUWzsZT+0Sa9I+HDU/BT34=; b=g85dlizIJ6qhv5jA1+jlovIQNxlrjAr7 LL8UBJfPRQetUfjPKp5zJMCUFhJOsfYfGziikZ8qkzjcFPn1IAkb+XN8UV2ITYIS MhkxXZs9FbZZK6lIJAcoAfj11u7oo58DLUZMM6XYarvYdpWvpDfPFNM/4YmYZ1rh I3HsRpHQuno= Received: (qmail 28256 invoked from network); 18 Jun 2011 16:37:21 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.66.182.48) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 18 Jun 2011 16:37:21 +0200 Date: Sat, 18 Jun 2011 16:37:20 +0200 From: Markus Trippelsdorf To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110618143720.GA1703@x4.trippels.de> References: <20110618141950.GA1685@x4.trippels.de> <20110618142456.GA26419@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110618142456.GA26419@infradead.org> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1308407843 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0766 1.0000 -1.5348 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.03 X-Barracuda-Spam-Status: No, SCORE=-1.03 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ3078, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66433 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.50 BSF_SC5_MJ3078 Custom Rule MJ3078 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 2011.06.18 at 10:24 -0400, Christoph Hellwig wrote: > On Sat, Jun 18, 2011 at 04:19:50PM +0200, Markus Trippelsdorf wrote: > > Running the latest git kernel (3.0-rc3) my machine hangs for long > > periods (1-2 sec) whenever I delete a large directory recursively on my > > xfs partition. During the hang I cannot move the mouse pointer or use > > the keyboard (but the music keeps playing without stuttering). A quick > > way to reproduce is to "rm -fr" a kernel tree. > > Does this also happen when using the deadline I/O schedule, that is > after a: > > echo "deadline" > /sys/block/sda/queue/scheduler Yes. -- Markus From markus@trippelsdorf.de Sun Jun 19 03:16:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p5J8Gd6G024030 for ; Sun, 19 Jun 2011 03:16:39 -0500 X-ASG-Debug-ID: 1308471396-1d9302410000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 978E4DDC742 for ; Sun, 19 Jun 2011 01:16:37 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id KGk646gvNqwf3Tp9 for ; Sun, 19 Jun 2011 01:16:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:in-reply-to; q=dns/txt; s=beta; bh=VW3XjU/MWcDb1FfA henuUstMXJIEMn1jhKZmPJK8wDU=; b=Jm36ZYRSUO8ZYYPV64QNFgq6y62vGrkW 1ZD3idZ1Syrl2H6+6UeVWamXuccNRIufkQDej0nDnREBKOou4c86DYT/GlXzxAmO nx3vUfUmw3OA66XWjepbHu7oow6EwC/jwwewax8W0pA4PRLBFG4X3p3c3dbTw9u3 6eJASv7gy70= Received: (qmail 8072 invoked from network); 19 Jun 2011 10:16:36 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.66.182.48) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 19 Jun 2011 10:16:36 +0200 Date: Sun, 19 Jun 2011 10:16:35 +0200 From: Markus Trippelsdorf To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110619081635.GA1703@x4.trippels.de> References: <20110618141950.GA1685@x4.trippels.de> <20110618142456.GA26419@infradead.org> <20110618143720.GA1703@x4.trippels.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110618143720.GA1703@x4.trippels.de> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1308471398 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0070 1.0000 -1.9755 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=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66489 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 2011.06.18 at 16:37 +0200, Markus Trippelsdorf wrote: > On 2011.06.18 at 10:24 -0400, Christoph Hellwig wrote: > > On Sat, Jun 18, 2011 at 04:19:50PM +0200, Markus Trippelsdorf wrote: > > > Running the latest git kernel (3.0-rc3) my machine hangs for long > > > periods (1-2 sec) whenever I delete a large directory recursively on my > > > xfs partition. During the hang I cannot move the mouse pointer or use > > > the keyboard (but the music keeps playing without stuttering). A quick > > > way to reproduce is to "rm -fr" a kernel tree. > > > > Does this also happen when using the deadline I/O schedule, that is > > after a: > > > > echo "deadline" > /sys/block/sda/queue/scheduler > > Yes. I've tested this a little further. The behavior is independent of the kernel version used (tested back to 2.6.37). My SSD is also fine and a freshly created xfs partition shows no problems, too. Please note that the affected partition is used very heavily here (several git trees, daily backups of / and the Gentoo build-dir reside there). So it appears that the observed "hangs" are the result of a strongly aged file-system. -- Markus From quexuanru92@tom.com Sun Jun 19 05:08:06 2011 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 p5JA82J4029357 for ; Sun, 19 Jun 2011 05:08:04 -0500 X-ASG-Debug-ID: 1308478065-6ab202600000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from tom.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 877A11E4B0F4 for ; Sun, 19 Jun 2011 03:07:46 -0700 (PDT) Received: from tom.com (smtpr2.tom.com [202.108.255.197]) by cuda.sgi.com with SMTP id VtcFyNzFsBjG9sLx for ; Sun, 19 Jun 2011 03:07:46 -0700 (PDT) Received: from cufdqicaou (unknown [172.24.140.52]) by bjapp41 (Coremail) with SMTP id HIAoPVHK_U1HAIw0.1 for ; Sun, 19 Jun 2011 18:07:42 +0800 (CST) X-Originating-IP: [172.24.140.52] Received: from cufdqicaou([122.126.121.230]) by bjapp12.tom.com(KBAS Gateway 2.1 2.127s39f(2009-08-22)) with ESMTP id local28934.1308478033 for ; Sun, 19 Jun 2011 18:07:16 +0800 (CST) X-Original-AuthLogin: quexuanru92@tom.com Message-ID: <005001cc2e47$405e357e$88e95e88@cufdqicaou> From: "Liu Xin" To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Õæ³ÏµÄ¹Ø»³£¬ÃÀºÃ.µÄ.×£¸£ Subject: Õæ³ÏµÄ¹Ø»³£¬ÃÀºÃ.µÄ.×£¸£ Date: Sun, 19 Jun 2011 10:07:14 +0800 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_004B_01CC2E47.2264962D" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1807 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1807 X-Barracuda-Connect: smtpr2.tom.com[202.108.255.197] X-Barracuda-Start-Time: 1308478079 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Header-Alert: BAD HEADER Non-encoded 8-bit data (char D5 hex) in message header 'X-ASG-Orig-Subj' X-ASG-Orig-Subj: \325\346\263\317\265\304\271\330\273\263\243\254\303\300\272\303... ^ 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_004B_01CC2E47.2264962D Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_001_004C_01CC2E47.2264962D" ------=_NextPart_001_004C_01CC2E47.2264962D Content-Type: multipart/alternative; boundary="----=_NextPart_002_004D_01CC2E47.2264962D" ------=_NextPart_002_004D_01CC2E47.2264962D Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: quoted-printable PySrjHaqhi0jqzIYtlYLGmJH33sFb1gQpY5yt5MAbDIs0gghp2TUfqr6iJzjAGXNsSaMNM= aMfG44 K8901SK471YfynmYR7zaPzMqcK2hhV9RT9HIPfCM6qPsCZgjWGjz3TN5uGbzrag87MHNR9= nMo14Q O9ZBD7YwOCs68tvnrAjpcQ0RObt00mGFjt6MoU63mmZiFjtVJD8LhYqVXIJOUfj3xdDLXx= E8Ksef ByY8ZWJ6IXQwvpadth6Qkxp5VU1va6yzslxh74dGRT0d7Ygq5b4dwj8f10y1UXoc6Lh3Fk= xl2noX ------=_NextPart_002_004D_01CC2E47.2264962D Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable

=C9=F9=C9=F9祝=B8=A3=A1=A3=A1=A3=A1=A3


= ------=_NextPart_002_004D_01CC2E47.2264962D-- ------=_NextPart_001_004C_01CC2E47.2264962D Content-Type: image/gif; name="yFCdzHAm.gif" Content-Transfer-Encoding: base64 Content-ID: <005a01cc2e47$21af09c7$88e95e88@cufdqicaou> R0lGODdhpQFnAtUAALLR9Ojq722d5pKy8PTxX/j00rrn+ffzr5DP7Z5oFNDW9eKxmZG01d+y Y9Xt1djW1jgTDPnzlvXtI52W/OzWsqGglqZahLzS3ARg0BVxpGICkbfMt/fSftnMl72bY7GB Os2VO9znpWJieESMvNfebND4+gQChtDp9cH4+7y3+/ndxtvHrLW6y+H4+vr9+wAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAQAAAAALAAA AAClAWcChbLR9Ojq722d5pKy8PTxX/j00rrn+ffzr5DP7Z5oFNDW9eKxmZG01d+yY9Xt1djW 1jgTDPnzlvXtI52W/OzWsqGglqZahLzS3ARg0BVxpGICkbfMt/fSftnMl72bY7GBOs2VO9zn pWJieESMvNfebND4+gQChtDp9cH4+7y3+/ndxtvHrLW6y+H4+vr9+wAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb/QJdwSCwaj0hkIMlsOp/Q qHRKrVqv2Kx2y+16v9bAEkwum8/otHrNbpfF7rh8Tq/b7/gnPM/v+/+AgXVihIWGh4iJiouM jY6PkJGSk5SVlpeYmZqHZJx8AQ+hoqOkoZunqKmqq6ytrq+wjXmmpbW2t7i5uru8vb6/wMHC w8TFxsfIyaRjdQ/MTLHR0tPU1dbSQq/OdtuC3t/g4eJNoHty3ePp6uvscuXPbejt8/T19lTv 5/D3/P3+8/ncyPtHsKBBQAHZDDzIsKFDNgnVmHtIsaJFLhHRTLzIsaNHaM72vRH5saRJixlH nlzJsmJKMBtbEoxAs0CBAzgPyJRSgIJN/xVAF1BQQWGB0aNIF7Ag2aZcmpg7/RGYmpOmzqhP PHhYseLoB60JEkCAIHZs2LEimEJc+AUqVn5T406NUADcCrVzEjSgUFRrgwYfypolG1YsCzxO zbD910Km3Lh0wSVY8OeDUAocFjTwAELw2M9nITxAvHhLaXstGrtIvTLC48d1vSWg4GeBBw58 Mxvt7Nns2bSk8V45rU51EtYmXU+V8DrEt9mI4Yj40ICoZg9kPwwGfbZCnsRfiBcXYpxI6vLn PwaQwDzCAZvP8VQQcXhDWBB7M4PY7jn0hu/iURHgeKqVZ1NdxpVnRmx/rMccTgwGQkECd7Ag QgUXiCCCB4F98P9BX/gJVlZhEAAXXHjCpZNggefdBOEQCZIHxgFT+XHgAR1E6I1td1SwQQWj iQBBVwl8gN9fvolYlncAphjFgN+MwVpjyK3Wwk000YUclWfQSICNN+ooiAcd2BHABQoQ4QAE HizgoYcgxFnYiGX912QXUIJT4GpG2HSAVe6xyOdqOIEBXxqFPnGgFwqSkYCYbjjAwgVjxFbB pR7MqalvJUI6B3hZgLpOejL6CZ9qNln151UyFtiVk3/8CcWiXBhgQKNeFEChHSxUoEAALTwA 5BgOVPCBBaH1hlYfoobRrIpWkodlTu8JQS1OgQ4KowsU/HUVlgR4ykcBVOkoJq1anID/wLq4 csEjryJccEIoRVWwwqHCaijkZ/wyeWeoS+T5x5arYeneqnVdW9OgU1r7FwcuFKCCZg2Imwe5 BFQrBLpDcIyFAesiYIARpGIBwgp3nHDhCRc8ABQFl/r4gJ0BrOCBBfyOVYFbcTwrBRw+j0Pl lH8ebJWL7xWNoHmodvAwB381APE3GBNwsFxE2MQzFSGzCyPICDigxa5QlFnGBcNeqYJNK1wa WAIb+HTgj/NdeMEGsJ4RtB5j7I1Hu1YOjWrRSV/rYgHonddYAU5HzcHjEYBTdcZe1thxAVtP 0bXIQpTQ9chYrPBBFA2YQYiwo0kMFFEwe7Bh3RWwEEpqF/Sa/7fpAhOBjt9IeDzHlESvWvi1 7x1ok+KLh8ABCSTEZXYgqb4Wl7kWVwH2ug6ktrnYWBg1K2VlhCIEhxU0BspQaxdgVNsxL7CB A8XS96+Az/B+hO9fAF6E4Kxh6x7SSCuaqpYWMeVwgADLY9UfChCCDjxOeuEqwqGs0IITnKAE qrmeyFqgQQScIAtkc4IH7seX6jlBfA+olwg2UBfVAUV1P+FLKE7QK+7dwX56yF3EcpIGXDWM POlJTQARJ0TiES5hypGexpLQAQVOsAyPk5rUEHjAuZzLhEno4MhasL3NIUB/TugACKCgmY65 SVMfwOIRnLKC1cVuhVkDigOM5wAFKP+gBZf6hA7XqMNpReGJejiO4mQUuIId7nIB9J9OQtA8 6f2vCRR4ngvmiIaoRY0AzIPMFa+gLi+eoIObA6MTQECbJ5AtU5qakxqLAIqI9eQDHVjBzGLW jQI4gCsr2MAGLuACtPFyfqHqo9IKQJONeSxRh9JflQKXGgw2E3lUGiJrXJQlAb7HAcwLwQFC EAJN2tJiONKma5ZYBuPdBILkvMkVuOhFkbVzXSUIVQiZ4IHSNSAsX2kAyoTQgcJUAQ4UWAHM IlaBnthGKx+QWQAcQDd9wRGYWMChBLOUqsi5EpDIzB4hmRZELgERmopLJAAVNsArqYom3gSk BDmA0oytEgv/xoNgjrL2UpK9850nQF4V2vSECU0IBJI0wgISMMIpAHQBKsAO21SXS9c5tAIj uJSGfgnRK0iUCKvKUpasRj2txoZgLILmR8OqOAdgC0LEOxwAiTg0+LVgKiRQYBJu0sip1HQL cjknAdhDU0WpdDWgbKetPofBn80zCR8qpRMCgw8xtJECOHsUDA900CJVQCt59MNVQXI7a2n1 s+TcoVd1lDjBwaij0DTrwc460veAFHkLdUG5nqDavMYhr+RijwQYFNre9ZY8n7ypcG8FhQB0 BnxM6MDootBP5OpBbKCQmG0gUIGAWve6jyPKBw5QrAbt0QgS9ZMAPysmMVT0f2Ia/9ppFTS0 Erj3mSVQrSKHRy0iMnOa8BOCDZvgp88Wsw1zcWKE/pq1yrkUCS1wgHDfCbq5orIwRU1CAm6n l58tIX0ueEDb2sgVzD4AcxtYQQfclOHOPuW7rISSwfy7MN+u9qtjFVTJzuNeZ54HfuOFUAvO ii22bmlx8EumX8fb4jVQRcB9ZYJeZ2seBS/4nRpFQj8TQMqNhUWxRqgnFSochSUUQMOYC0D6 5BZQc7WpAP5iFoqJYL/zsriac/3WM3RK1inV2L0oKAFO3jutg8Vmvlp67ZVCkL1BzgphWNDp /vSnzrmakJgo1VFgnywy4h5hyh7Q0YQiLMHDPoE6P4tYzf8eK5S18WVtrOMLZkYXgDTrMXNP StGK32yVJCSKZCAFIiFb4MwS5Pk97w3ygZBT0bMKOmKELuQfEU0FaAILWKQqmQTlKkEstjRC naS0B22MqwJ4qEhYJgJjjwDqLe+Tb9GV7vq4ghSBFsVNWnEB3hASki1sdmNEpugUBA28GE/y vNzlNY3f60rCRYbOyRMb8ETZ6NLmer2wJQS/dcrA/SWZvy+CEYNvqr97hsW5QvX0CjxtynBD IxtD0LBAVXApdvtlL0SljKtfbWLwCvPNNeUfwsmDwcLiuJoO6LnQuW0w1/a7Rck+rV8/Cu0W GMLpTh/CsyUeAAsmgt8MhHa0jIn/ReOpqZ2eCxkou/02vkDS0wkIahRIPoWedMXdXTFKUYj6 Zapqtt5auLdoH7l3Alt84qhtJgoGD78833nwdy4Q0sRaVkIvvM7Ic0AIeH3nEljw8pi/oI2h XfXMpwbzlsc88rb5WhfAmgnZFlk8U+8ALTbqPlCYkBEAYwUKLBfde8CcizrQgYCKeCh8CYx3 RCCIl+Dj5nzv728RjFpu63zwhHeA4fGMeDwjb9iMT43kCx111nC+EJ9nYObH/8lPGmD8yCv/ +BVA/syTXgxOh7/pA3BXjiJHg0H34utBzoSRsxI6VfAuuFcptuQ/qhZQvEcBnaECLkB8gWB8 RrVHxERt/xtDScdRSICnODV2QdAHfdRXeQgnaBi0fQL3eSdQde6leeVnK9xkKy74gi8IADB4 eRLndCcAADiYgzeYgzJIftyEgpf3XgvFfcCiLW13ABvwORW0OQ0mdVJAYkTAIVdAJk9iekJk E+LkX8KjNS6QWfR2ek6gd6lCga7UBPwTYyFYeR24htNXY4DnfNyUPe9VQSYYhObHgiFgADgI g3sIg7ayhxaUfjvIg3rIgz14gxYEPxZkK5gHP0SoOCbGQJsTTxzUNftVBZaRNRN2BWnUZVGH b9okPNW0WkMAAd4AgT8jgcv3BGFlJW7IeDXWgdSHeLRYAgbQhjaWgpYXep+EAv+OaEGhZ3l+ yIfwI4OFmIN+aIgAkFNQdx5Vp4zQqIzFOIw5JXoPZ4ao4mQhMzTX04RVsIlD8BVYwHbgNX/0 V3T+g3Or4YAPiHfBVHP4IwUIN4c01l6+xoayKIvuZSuG10zAqHnnZ4vwcwGtd37DOIwAwFDG +Id/qIyFeH41GDgWJIPRGI3TeIe24gDVmHlNJ22spGs2kYTrskWCU1hXIEZEMCH1JwQ202X/ diBalY4sVhde+IU1l2LwuJJ80m8ugBPcR4+UF4uGhwK32IFFCX0uaIu3uIHC6IJE6YgF6YIU uZBSiYN3gwAVGY0nGH+wNZFZCY0b8AB6OIyKCHrMyG//9kceYHMrQLkFH3BuLlBuSxeFcEkO UWdWeyUB1pRvNOEcIiBKg+COEbVm66Rze9ZMPTdwQomPg7eUseiHTXmQjngBX2mMPBiWWGmI 61KR58d+J8h57MeDCDAAOIiVtwKWD9CHhnh+l8eagdiMsDlIOhUAAlmNz5QaNxkxISR7f6Qj j1JchOAneekeqmI1/mUT7NiOYEgOhElBhnkAvZaYiLmYjOmYeAaZGOmHk1mZDYmDmKmMmxmN nWl1oDmIADCapSmDLYCaqkmImOeazNh0HRl45lObdFiCn2gFupKS5NgnvqlGhSCc7EGcVzOT BZCcNmlvzVkFGYg8QxeLvnaP/2zolAdZoYWIACGwAeIZjQiwS6R5npszACKamciofp/5jDlI ojj4ocdYkeZ5iNSoebwWiK+ZawM3na84haUTjmrHE5xGDvNnPCw2nEeEZjN3d8vJWWqgXveV gW5YedRJlPz4gpU2pckINqWJoRpamV0zAB7aNSDaTjponicQmgDAADiIpucpmmoapqv5ogQZ lTO4i5dXQTUKUtAWnYnnkXoQQv2UBVTIN/N3UUM6oNWkTR6QmxIhmFa1oFAQgvw2hw86ixTq gu40WFU6WFIKMn/YNboUMimKlZsZMiI6AGhaqgs2lRakADxYpme6ASEQASFwAesyAKQKqrg6 pg55Af8MSZV2apbAmIuWd6P4eY1QoGVDAIBX0J9sZo47lFWgRWTvYSenyKhh4KiPukyAN0dE BKVFWaFVyoRiV2mhui6f2qW2iq6laqoAsK7uOpqoCgCUaaY6uJ4AgDQXwACoCq8fmqUk6pU5 eAECi4w9yIiHOH4p+Hmhp7DTeZvL1KdEAIUnOUbFNSj0VxW0FpMZCg6o2GXYyooQV6xllRNB 561EualUCjIoIFhrqUFhSpAbwACjia78uq5Yua4CULO1aqu2+pUDYKc5+K79Co2qwTJfaZDV +IIXZABK2X69JnBQOodGSE87KgTKagVv6ZJAI5zGmbHaNG9RYq3/9LFO8GP/E0dNWvJeh5ey leZOTzZpHSqwMquuPPuu+lqqAuCu76qiK4qMA3A3MXu376qqrHl+BWJ+/iqqyEglY+maTeuC oJeYT/uKhtYEfzoEEqufzKp0xEZMc5GxsoqE4dCxxUW2THB0WGdwBxCUHniLnHqp2qZtGTqi NruzOCsAuCuieqi3tqKvWMkCtMuzy8gAuau37BqfTycv5MGqKVqqfXiCMLKBHIQC5reItsKU eyqdgEkEace9Ojk+P3pymNMxfNlSBxOrBDAaHCu2x6eo8vh4V3ITx9MioshdlLqpsNu2CLCy sRuiA9BAI0qqqDoAeSuiuFu8o1nABJyzCHC3AOAC/+2ariIKACWQu8WLt8sIifCnXvBXpmMJ r6aph8xwg7aSGi/oAHyxkHUatT2XU1IghZgbvkb1mxVrDrP2WQGGLSHgvouapEmgdwxaWolk dAoDnUZppZjqRWE3kkl8U5fZSe56wXh7wFSswABwwOvKAChwxRN8pgDQAqfqwGn6wKtRgz5k PlHHMpQJAJ4JbRNZwhyUGpjxOHIakHt6mzxBw1arqLQHnIOKb/kmk9rUE+JAujnEw4/aKudB OAizYxhbABLquvyIAhuQxNezxLjqTr5GuyPZrg2cpXp7wVU8ynkLojZrqgZMwMv4wAHArspY AlKyUdDQkasKTUubwTg4x/+PQwFKK6NqK1ZQII4xrAWw5JJHAK3VRDjcFAKEPLrsG4GIDLLN aCWMjDBo5R7Sh5SNeYs0oW3yeoNMvKbIKAQgE8AJTMoWjM62CkQGELylygDwzADMYEdosgR9 k2jzd0fxRx5iwKoexEUX8DgC3QHIyJpCR3kzSpuwLMtFcE9FoMe1t7lSRxIY0wFGczRx6ADR rBHPnIobfbpoeCVbaDg6toauuwElQBPdeItd4144SM5hGsI5KAYzK8GkiQA5m7dUbMDqTCnx XKsg3IeNsr1REH9LAJv0hxkU4ACU4gIGoMsCzatK+8uIWdV8amVwGW9ZUMyPWoQbgTHUoirv wcz/H603He2xZX0EVfKcfmZEQcZdQSelWagq0vc5Ttk5MkiufGjK7iqD6KzTf53TCjyqPI27 v9QCdqR1Prw/EdmMCyXQAs2AAQ3ZdJyUt6KBmE0lRYgERqKJ38stEq1rUysE7IETR2YTGv1s 42DIYWi6rBhSinQ4YZ3MtuiLRJahdg2qv7KHlfZJyxiDAiyi8PzXhU3KC5y34VmzuMsyLSAv DwukSiB/sIWblP04B6AAA/04BL2QhSWybZkEDh2FMnxxnM1/pws4BWCodiW/bJXWb3DWpeve ZQtNQ5Q9QxyT2zReDZSpFUqUSmnCSamUemi7PH3OuMsABlAB+jrKPJ2u/6GquwJwngJQAjmY n1uHawgmn9mwz6ZX3Y9TALss0JUMuWQlqffZLroCl7qiqLxZ1DFSQHkpASQAqxNt1PINE/B9 yHXAP3Pkk+7V48STzDkmfTAo4DXmmJ/Ea41rkGOZuANMwAtcAqdqvAU8s6KJyraatwagpvbs hM26LeBlCD98AJBN5pA9x0vNiIYb0sBcbURVBJxBzOYd3c/tJbpFAhWwX7j5x8682Hx042Z4 WgEEPyUwLcjMXfyo0kxrVoSWzUUJlNwqONkZkC8apqXqIzixwFDOrwKc3Ma75Xu41vMZsoFT dRsMcVYSAJRt5iwl0Ax0gBpp1SXIbUcQJ7dnZf8mNwUtHobyty2QRhPsgQAVwMynZc+A7gWs zZzwWLbnTb/1hVazTbIdqOg4RuiN2ZYJ5lbRQsIwWEF7bbsJGQEkMAJ7m663Kqo7u7NrmplT dybyUgjZYEe/Yo6fadS46WwOsOoh7uF0DCzO53yNMlQQ7QKZi7VVy+tzlg1VwR66NFPZMHXp kOxKSgVW5J+LptZF1NbUYlZwTbIli2fwM8nV598s7JNyeB4aZNmEmLgIcAHblLPmLKZPFtN7 CI2hh6I4eNSHCH9Vd+/yuapQvdQozO8fjtDEWrm6yRWd1gAZRwW7boZN558HMhViIKt10e7H juw53tqdhTHu0SeryzT/2gI8iSTWHJ/NUfuUrXey107yUbtNJdteK22LDumvDMACONLO5t6/ yU3z4lmIAAsA9rzG47fB0BR6PbHL2YPCqubhQYnZzMS95t1PR2MFPAWcQURTUx9Bf4IgPJ/1 XSDxPyww5nQuYZ84MSZfwsNdq89d1SesbN+6jYmLURtETexODCUyAhuDIIoCCM73MZ3J4pye nGmIlQ6IdxpEQy/QFCAGUF3dFICf99UnwkxTIOABlY8PoW34KKdfxjNMbMbz6iD6SkD65uSf Q610+IbfiLP6EYD2QCmhHniPrvv6tW+n++hFAwA/qifgnQoEAAOCWDQejQClEsFsFpdR6dJg /5hOq6dTi9vlFjjh8CFMEZ/FhwC31Fq7Su2Wi173eOp5VyERiRwOCvQGCV0+OgoJA94GWwoe Hw/+HvMW1wISMzU3OTMDHhY7NT8xRU31uggLACUBC7gk/yQL4rhQ2eJKUFByDU7iUKqAteKq hKqqmgwcHEJYC06QjQGQEBiIhLCdtKWgjq7Ap8GFtE7WuiDPyM7MOFbFKBzOvUpL9Ro+EhdA IE/rVvJ1CjWnDiUXc+IE6leHyxY3/iBGLETKnkQXpCyqYkiHYJ1FXiA9AukH0J9atvK0yLWS ZUuW0arsklbFQQkHsl7NBKALwRBsKJQ90YaNaBQo1LiNi6KFCpVyJf8+dnwUAQ2adQe8eDko J9WgDgkEFTq00F8CCgIrFgx1scKGVQY9ttiyNmNdUxTtYrS7kaMtrQezzum6J9asvwxVunRJ 7GTDaL9KTPOJoA25yDNLKLFyTJxSLEs2OLhwQakxaVoClDN3KWpHOmCquqsaFmVHlIRWJEBU iE9GfKLS5jkggUCEBwwMJFozN/he54Pw1tW71/XfwICvo/Pzx0HWlIkVt/wFuXEJmNJ60nSw S8tMK+43C+Gs+Zhm09KYlSBt/op71PO8w04P2NB4pKoD+GpuEBV0y2QBPCTi4yxO0upqOAki gKOETMxxQ8HnQIwuo+nq4gLAwFBMsa9VALn/jqM2dNmFl5a6UKwL1eAzYJc4IMvRPfqo8BE+ B2J5oAUHKKAgBAceU201S1zMhEAxwjowLFP4gDCRD1awyIOANqnQFgcIkMBMTtzgAhQQ2YQO lA/vWlMi1uhsDUXsVOzLAZFcBC/GGVnChUbzouGxGGSAQYEYIetrVD7OhMQvFgceYIYZBZz8 hR6OsGQxkDzaOePKTrLcJAGL+BhVue+kIqBMCdBMU842aRXRIhIp9NCSXVOLys4UgRXsthRX kjE8rrKCrD0hnYTPUSzKyaLZcpgpaTs/QgiBNAAwfTLN25ybkgMEsUxAy0Q6ONefDxqICNwC nHGlJHJvcWNWWtm0/3XOe0exxKNd+QIMz2C9I0glg1E0NkZpggnUi1pyiWZGzHj0UbPLEM3M ADkiJo+lakPYLttsmZwLRUbYXGeMcsHMxIPdIFrg1FEScQ3eQFgJmV5WP8EXX30jwlU5S04Q pTaCUyk4q5VqXAk+QBtbOholEgPPiyad3ZhGh5aO+sg9LT0g5BA66MAZQaoDl1aVVZUygZYz mRkiCWlWpRVXDnotEpyu7MJfn9sEGiKhJwpAAQUuUFAu0oRFGGk88eSYaZUAzdhGFKdeImKm N+MKxmKEYPoEALg+2E/TLQ0727I72GASTg/z+S1R+IA7E9tF+QCEulWJIGTfrwwgJFaSlP/T C34Bz+tN5eFkaBHESStkWwAYcLwvpIE9duHOFZuxcbk2swYAGaGmAlk2qNlJDp8MQNHhqANo puwl9lwoquT9KbUTCtQVRWbeB7GKVxGHXkR6BiQooIIVTIgjF3gA/p4jOH8QDjqGGw31CoEU BlSvXkTr1X9StIaO6agXwZhGT3IBHmGcD3xMuMafegEFz3FhMiuxxjUC8xRCmYNjbpBfCJTA gAeEhA4KuIRr9MCrv9VMV0vkxFf6l4kGMLBcMKugRwIoiVcRIASYiB8rFIJABW6AIQ6EoHMk eAoKJtGCF9hgcEa3wQ0ikQ6pyVTpchgtrW1OGk5QH0tWmMPwbdD/YZPZSWCQQpk23BApvjhP ZNqjLBFqwVKk2SAAkoipUHzkX0qEUxNRBpjmuQCKp2hAl9aFuzoW5EKfKkgEzEScDO0hJFBi hgtcRYEVhEUeZ9xLGuM0yos4AHHUY0BwgihHg1ViWR0iFo42RqxcaPCPTtMaigYpAKjRUI6H zAr1UBiZS15NUzTMgtIc8Qg3XpKNhWsiHSsBSmESogHmWtcC/PG/iVwJXmba2R5gaabiXCQk kFjDLQlAggVSAnG+ZN48R4E8RWRrA8YkhCXZeYul3Ak7TFGC56IpKCtYoyeCSuFJEDM6Ywqg fVVrgQHkyMIWIEUON2TA+eSgUmSV85ty/1QAWp5nREWw0XBC/VcnPGDPde3OFLlBJXQIEQEu tm07YisoEYcHiAqsIBABuAA8HRpMiHpCooOQ3wbkSAhjMgCTiOECALaFxyUIywXxKV362sex Rp4kPMNKzUjHubQNIiBF6aMhEQKblfh4YTMt7cJm3riHSpAOOoczah1UmrhKHI6ymFXCKD+Q ALmdIrTlatdQo4o3PVQVXgi8KiRcUYAFLGAFRgrriJYnnbKycQMbGABbFbEW1wQgCheQaxMA ACCVAuCbRWhpZrBhNZMiCzHEpcZgc0jIFL3nrYhlK4poylht3Gg0N3QE3qzLAOjA9acpWYJm 80CaCyRxNBdor/8qQvu2iIi2bbzRL2olO7fXDji2K1iAW267L7rcareV+IRvgSsKBUzBcYk8 kWYCM9JueLdrJx2MG0Z3Q8IG5rvbZa5KNFhi8TYhMJkBxw0J86luQmc0SJxecvUA1/miYsJK MGJFcnOIBJz2FDJr0CZyE8WL5KEAY9XbgF9LgdgeYAUrcHKC65hb3ArzeevcsR4OtwVCtMCN CCgadgLQTUSa+WEryVyKq7fiYzgkEgdgEmAZIAAU3ZQNLT7xEhB7Yi9cV9Atjk8y2+qRtA5i wvetw1oT/ejOFkJXdrBnaKnIiUe87b+JKEBon+pgPbhqoLR7xCLqfFUwHiBJgLAylif/qGUG c9mCG3Q0HdYZ2UbM8Xp4RZH42jy5EIv4m07R1Cqccefr5hm8by10jQ4C6MR24bojJtgSMloH Beg6x8dMoo9vTQfqRVo5bgA1KUWb6U18gN2GSAA+FZHUD/R3yUwm9SxHKbxTC++AWfVUbMEK a+XIWsEUmvA6kSnHCKfEBUoYWGBS48I5Bpuv0J32TJdQDi4QKV4OGCQD8OgFAcT5OstFrGO7 4N2Qo4g04tODG78c3w0KBHoW5URSiWyu0XKinmC5iGhBUBH+iVbJ9WbyM+jwurx959R7kvJ2 oLxqFbwi4AJ304ILrgk3FHPmg1jrwhEz4ZOFjwnLfmHTUngw/5heElnI/R7HxeZxia98piO/ 00ulzeeHeRfkjzNmWjAInWxnspg93pYc4VTPD9jjKy7YuSb4MNs85PdtlJ/3XVhkEJLguhRz QPWpPTWJt4Qgq6ymANqqbvVKEDxoDa6j4YIY8zpitOvfIV2y1to+wMBZACU1KRvWftMUjg5c XmDGIk5Ae5R7Ic963u7Hc8h3tqOz4bWvAwNkf5EZv3yDAxhAzNPbzXDTQQWZNktvcoe7FXyJ 3aK1YidcxUqpEkAQGrNCALZjiSZD+fTPaPXpOUX1woT1Bsf1LsKCqCfcvArSkmgOKOtqBqvv Bu2SHMKY1Md0XmqwGqMKrAMdmqzL5P9o5WBKAJxPkKTt2V4q0BziBEhKzFJi0fLA2/Lg68it 4ZLp1iYM++ph3DShA3YnAB5PHxKgeb4kIuLPBfZEi7iox4hgDvJPePQNyv4NEKRMAMWKebQO 9tZJEQ5PBvniu7Dj634qFcYtK3JtC7jGmJaPcboCc6YmBH+t+e5EHICtuUoMME4gz+6QIzYo +7yw4RZhnciNuC7J4fJgdGQvzX5r/OhgCBtR3VThyOIGEjehAGJJAuhFFrpDxy6gBO4ttpqM llZNIYinCvvCCskK61qvebqMB2lsrcYsD62tIRSu87iACK4nD9WM+b6LKxoOuRihYPhj2VJE jmZx0IxC75D/kTL8ogUULs4Owqu47frsIeZgsI6wDeRyrAYVLvvowAfrQKlCsRBAgKmkSJWw SBViiQAyUSFaYAPaYHQ+MYwIagpxBoxOr29ST/WACThc73mWIBGSqTmccYOOC/vAzOEMJvig Udym7SCGgGqaMRUsYcLqMDBuiO4OLcK6ArpKxwUUTtC0D+yur73SrBoHzwbZitxmSr30oBaT 6BHDsfI6TQ9ygxPMwhMGRKoukf5W5TXWkVwWYf6KAxBUYBQBIcBOERUVgQBjrXm2zhAT4bJQ 4etORPdMxAXiSCTdYK52MJm+Ck9IxyGiMW1OwCKPcQKXT2AiIwoCBNdY7GqUQMy4/6DHmIsQ Rkfb4uvv2snrPishcUzUbtLSiA7eBiEBQq0QGqDoVsneBog46O3ogjIPSK0oV03KWK1tHoIp r+7KmvKTANIenKhw7DJ9GEAB8mQKzuwiauMiLgjbBA0TtGI0PaSYCi1vHJCwGK4O2lIij4YL pkdFnI2tPgQh6Wt6wlI5dMzH+qUUDoHJIpMOyhEn4WQt9gaMLjE64aUyj7Ag9sQPIuEoW+2B oENtOLMfBaLBapM0EOe33ot0eIWz6kspuuVw4uPGlMC4FMCRzvI18/NiFGUN+PM/UAH5Nuwa 5pIILqgQb689jCIKkOFBSceRpqG+RgNx2Gol4WoJzkErl//TQrlFiQ4uP+czRJ/EslbDBSgg CDNhRXmOMY3OHi/ETCLzSLRIoAgAOlONRTDTlRpwHwUOPSnE9bYOerZlPuVLvt6TW+QzSZFz SZXUQkvUvibsLEszF1DgvexrNF+vjTwDHHBkCvCTRDe0uI7UTEFUStnLsjirTKWgvth0OeV0 OQ/nb57TFCRROVi0k16pqg7AVXC01PIAPAuA1MRGIQIoCg1Kb+LJPFFRSAeQFYPKSDlRSy+0 TonGShsNRH2sHNp0PkeUSe0oqELHaawUSgqnqL5UNTPl0G7s0MahSSyLRO2rUtmUVzS10djU sipyVpl0V5+EDlzUFH5jEzyAyAr/pyAK4FoAAVAFigRmaVAj4BEMNTM/UFUKIB/hwiBkczA4 8yKcUo0MsFd3tVx51ZN2xUpVI8yexFPZ1F2hJF0X4yNAsyLP8j0eY8Ikw0mQb1kGtFkGlBz4 lVw1KVc1iV5xFVPCDF3TVWH/A2Do4E5JxedGYU+P6jWshScvUZZGZRUIdTueTA2wrqDqwFWm tSCW7lvBVRULMN8m1VzLlWGJhl21gF0z1WDhFWGRb14vIROaSGHx1Rf0tbEGVo/+FZpUQ2BV Y1feNTWANV4TVl1lFvkc9kmWSGI1jWI9wWJfj5ViQWN78mTlb1qX1Q9CdjRJlg5Mlp9S9lsh NaJobWrR/9UW6iRTecVDmmg1ykGJ8FaEaCR2WAWU7qhf+fVhivaOzpJwF4FQ5JZh86ZxobZu 71Y0uXYQPsAwMwEE3u+KvPYPwDYoOzYWpiIp9Q0QdoWfHmHqKCUA1vY1vMgzIehtU1EgTERy 79ZnI9dOdqV2I9c20M5hKI1puhRKvoUNTiRYjrd2nQn5+tZvGrcFGoA8U8KTcFeJCOFlTKHx NmFYPSEtytZPL+TedJQSCgoTyiTVaEmBOoADqqzKBkh8YTd2wzWYaNdE0oSTgFQR3tKtiBdw X8QlzNNPamHMsOdxsEdAJCInIahy9SBPtyQxAaxPmTWg/KA746cfrkp4zjdbHv+BAh6kAhZg XFRAgSjgMV0FQRxVAGV34OZpIvP3tgQ4F8YMgCnNhQlm6Xw3WOzCARh4Lx7EFIoQydDxYgfk a8nWGVD2yRQ1JDTWVR6hAUDgAzxgl0yWKCtzZ144rFZ4IgzwFAVDZXkTgKtDMTZBbbz1e1K2 GXEzizOhA4YYRLS2EhVYE+Z4aOzmWkY3gKSQWgcoAiigAnTHHfiYBLizddPRbefXH+MXjDXk bxkiPGKlbYuvOo4qhTPiDiDIjU1Bip/ojelAep+sY1t0jyNhHUHAAypAEPhNoMKiik84LBYZ cLb4MxlZImJYDv6XhstYYJapba+HgNkkjn0GazUhN6L/MxyPuTFZCS5GYepea4RDYh0bQJAv 2BIhU20Tav5IICzMQWVn+epqmYBdio7EOJdb4hRsw4vTmI7YeH88eS/QrxOG7IlgVJnp4E/N ZJsHQbVCGbZUxigLdTE/AGcKYOrm4JWxmQNU4J5JzwWo8lETOT1jOaxueYDDGHgrug2oY5Ld ilY8AHN9BpM7oVhNhcv0IAReRWyFo6H72Z/x8fQIoBz77wA6AABxyScTeqFpSRBQ05sjekgn 2qEy2qJj2Bb6yi7SeSnxp4frgg/miQ8g2CvShUJUwVAHwYnTF7Z6FCkpoBw7oKCnzpl5owOm OS2S8zx/OlLDuRG0hyD+NqOp/yNgfOmH8Qcckeqd+YuqA6g4/uCq6a9+CjofRzFJMPNLGoDV nLkf6GhZG4AAzLqd5Zdln3KtUUF7NFqAp2slKBsnk9kFRFoiuGR/hJkQ0qWe7Xmn06IEdJOW 5q/VSJEVxsUV8MEDCpVjS4ESZLMO1mEQzpopvzmJupgzh3qA34dGNnt739kF6okSszZ3kDUR wKKzR9ZH68AABODLlvWEkVJl3MGNQUDKBEql94QjHEC3OSBH9QCUfTut4fa4U8KyM9u43Ttz mXtAREsiProTtLcHk9vodJtjD7ECyttrUzdbYVsWJIHdOKCJ+aZM6mfAC6ADoHUQ1BuiJVtc Wxiyff9muC1bo93KkhmZAvrbBXLDHE+BqR24EOoYgAhDoP5pNTG2oMDIDzCznjzgAAg5vEWP RgtgvF1ABRZgwqcXjH979TLclwWOw/vqd+WbskdbE+TtA+rbK0xbud95v8OkImrbn7TTn+tM FkKlARogXv6Ur6/klQdcuRsgzesguG+ryD3CzQWGKeO7w+2csj8biEXLXDrbEKY8HP/cEJ5b Jx3TnyAvBAS7zspAysqmATz3D6pYEAThlcNiBaa5bViAkeE8yyDqaL5Vye08UGoZCCVitvac mAMouYO4YvvcvwuCr/+pEh6B9HpiFcyAKhacA+7gA87AT0XPx+mAA2irOcj/iMjZe3Y7YSJp BYk8s85D/ZxVdv0wDVWS6tQXABLzO0yefBA8wMT7pXf4WY8hYQAEADPPgATwQcHTYBY8log+ +dL1V9OPnYWNhpcD0CJAPNlB/dlTiDPdmCbvOyMi/Ev2XKnCUZjyPG42147HjDD6q6CvajvE gAQ4IIrZRQwcnbqZ2Qw6YP5UpdiN/cLp12gQBkQO44uZiN9VXsNppQDkzYq+AqTrIkkG5J1X tLOxPExq5gI4WBVeiypw/bxJoBxBIAymOQyYGS4ewIMlgZBRwRstPKjXqBG+ON93s2YeDnJm WOWjRnuYUt4gkV3mpBMkb90GnRy9vXsToQRYgJBz/6kfFHXKgp7i8aEcOWCap/ksNlNZOYAC WECVkbgSwnnTV1bffzkr/cEvHm5/EaPDhzuHTYcpjWzh6YCkDZ9Yk5l7TYXyg0sTeJL+4D5b +y91ASEMKJ4DQsvu735l1GaB7p7A8+Ch0VrkFZnk8wSJqq6AA1jJnb3fw7mUHGTEG0HTOCG0 OeHmgUNKytyJLdHMv/cAxByMjP5txBzvG6ADXIEgbD0MKvzpB3/euTjDbfiMtT5whdNbzfmo i1vUa5mZC2HVv1HmUYFNNJnsg7AUFkA0mye7nfhCoBUICoVDKBThdA5KJQcE+jQanGiDSCm4 WoXVisKhuMLicTgQIKPT6v81uz0OPMzuOfw8b5VKrT2/38r6+YX9EQYatthl5S0yMv416uFB 6s1VWl5agniMdSRgfqolYFU2gKQFNCR8vJEJoUVECIUQSEgQHAQMKUUsLUU8cXCQkFBx6B4E dyivjLYlgkKD1j1H11UGnEQeAgIadh/uZYmHi0lOLg5C8p3/Rbu/jxUkgIXJN8NbNmxmLqCl JvRjNebAvTCwhByIUItALIQJD1BgguwDh4TBolQk0gEjkiuVHuALyWYaPmtzThgw0AjcNpZ8 yr0cc25ROxeTws2sKXKnG31jPmhaQGEo0aFx1Oj85OnSh4AuOiVQVdBFogIKJcRqVa9ARCFe vfb/ohABaANYGMtOodKgg4N4BNfI4SmXahxq0Ey6QZnSwIlshwK4LORtEKFn5laSuUko59zG aESJ0Rd1MmXKHuiVc7egAyYPTT1QbuBmiK23aAKsUKHkK9glERt8iBrsopS0GAsWCHFgzVHH IknCw9vmBAC+2bQFTt4Hprg0y9EcptmOsW/HC/a5oLCUK4UFC6J46LACdlQP2KunkTe5gZmk cAehKbCRA1XWSih0gDUxAQQQHD6YJ4U+IDSwwmoDEZCgGgEogF5IwL0jHBt69XWcche+FA45 mLDTTnSMODgXZGHMU8kKk50XYjxYIGLGVAtekIYKHUxxhn2+wPLBBxAk/6BWFE9IwYsuA0Wg YBoPtKWiOxAu2VteKlXYVx+AsfQNhtCcQ8aHebinJDTmiXHdJQHoCFBzXg5CZUxi2EXVBkkN sUAyXuXiUAhWRcVjbbDpGORqBRi5FQoIwDfGBW2iSUddJTnZRgspHZfNGxgm586WJaAxU6Lu aCeGPJ+YEVVmShbQXnt7PNNmOPc4cIAHC7jKmhBDEbSjKsE8AYWfEBEEKAErIjBCoWWw0OWm ziwaXKMjlRBlHicIhupg0/5BzYaWXJpGlseCMqILH3AGygIJrECYsXKB4wA5iKY3CwkfUBCF LUJylRB/HygBgiqXedVqRG/ZIgQsZWxg1wMgcf87ZrIRLguXcX01K+Ue0MIkSEvG6nTuGFti DEnCmIDgVAerYNLOAz1uqHFIpUrbMmCfDMGQZ8Es9NUBshXggZ7B9OqAAwiV6kItuZEQQRsN fwzXwk2yS4YCFXI5mJUZTq3yJ1uysQeISc+xAskkvmhJAi8/5xuVara8ZnpeeerVB7TU0msA B+jIwbgQeADLEbIKYWMtQzt6KNeKxsVw05NOjJzFF28j0odWlz24GvaI0UGKmJAJHyHVmXq2 mmmyO8SdbH6VwN8dqBDGAlCAwCMT110hqwte/S1B2GwWLDmyhTNdSYbkKGeu1CJ5rDs+4I4x NijtvGrumXOdOuXLFa//QYRuW/X9bQJHlHJdmRBUUUpsANrRdy4H1H6LGwHEaLzSvFeD9CnQ Fha51DEJwhNi7rsDphgrXM4SoTrD78xWpXIkSQ0J4QX2gpYzAsGGR5Oxm2eA4oQGfMUBNrrK QnbTBg3yb0FLi9/hyuGXtK1JQ9dS4bX0x6UQRmNkZCBQNMyDHcE4Bm2BIIMcWuiptn1ldurx gGRuVQoi6mMBP2Obp4wAt4C14QINgiEPR3gX+UEnauAgTDc2hkPH4MFqVExDp8hALkctKCoE nJ4Yq+GNFpItVadgzexUQIHYECg2FRyfFPoVHyU8kQC3owoLpjjGMlhRGljUUiSqlrKyrfCQ /7qjXDxKBAp97INqjlGXtJxRD6qcAQUMGFWC1BXEevEnKuKrABEpgDCrLSRBHnTFG3InSbrA 74olTIeHtvi7HTrvebf0kjzKRQbtYAZbARgbAfMHPWAuKBE1QYEAFKCADRggDAnawAOw4JVu NgBvPUoQBVRzABUIwQEXOEE8bDSKWKpPiGQ42DBxucv1LdKLLuHiDvFXz6Q1hYxn9F07mgLN HCJiOV8sAxoMgAAEDGAACGCnCw6wzSV6swAqgAAU4NUVFagmP7SowAaWwDdf7eF6QpMAGS6A sFsyiYQEPSAgdMicfwI0gNlJgE7Z4DVQKkmH+WsGNRQAgIciQACECv+DRQngM1lBAHxQoBVI aXWVDWxAbydN0B+UQJVafDIALLjn4GKqy5nmz5ldxKnuAASXqLx0DpT0klAPmggqhYGaJ9iA AEpwUhtFNQrgQqdGibKV2SVIkA5ZgkrHYASixlWSZlUkWfuJv0f2so1sbYxb2TCuD9yzAAFF U13XZIfpUQVVLjCAAPIKgNixzQ6pXF0DYFtOjwixVIm1mS9wkRkhscmQME0kqPKppUJw8aaj 8uFmVTTaNugLBIZRg/8SlRw7vHIPJt1AkoRAWDpVdILmISxE7BjZ2eltF+ltKiLYsIH2DXOy xSVr1XjonG/4rrkiQR4dxnc4zwzSN1OqUg//CWG9AqirgUHUHk//891zQiQ+x8ARL9hbk6QE YAM4lS/mjJtcFrYXOhWLpH59w99rxMZMatCRp3oVHDoodItk04JFT0cQ9M2rVFigW1Tg1ZRZ RUQFDMBUK76in/XGrQDMpec/Oaywyt4UeFnzUInRI9pk5gNF4doCaM5DBFouaX1n40P0ltMW PjhgFn8D2kIaEobx+UcfsaPqm9YmML1VGMceVMMD4Btf4na4shde68YKvdwqN2auoAJNZVTh FG3aLsB3UBmIE2qIwu2hVYk1TX0cWEEBUYQDIC1v6gJAgQroSAQiqAALEDYE/SzhbwwpUjyz wIIEqqiXuqTv+y6R/5QUcuO+wUb0TjrxIkkfkyhhGxqy18Dc07SMk2TuAwi7oWlZYsGd3kR1 qGEjhaFUVQgbEEFUy21u86i3F7JOrO3YxAJ4QE6fa6WvkwXoYXlD8tmjIvZOYHPsnrZBBQsA M3rBailhLigLzdRgywbRvik5BAsluABrxNeBAoCHZ7TaArnNrSf+lFsEzNjFE2VdEJ8BdVjv uDDL9alZezKKvmp7JML57RjPrMFbmFABQJJpFYNDQ7Nnox+qpN0OBzQIVXjVBRZOgNECXIdA UOfIUL5QgA14vNwgIEA4PV4BZCSodjVjkwu4C0rU4gN4VLO0WnfHaxHKfIUtf7nN+/e1x/80 Gw08F0o8rnLwa6CK6IgwehiQXtOlH8jpX4k6Br9Tm6pfAetZ7w/Xs/51DoRd7IIku9nNgHZ4 Z3ZzbI+c22Pu6+Oivu7o6WwaoOCOkxEoI+yOhoZgHCUW4tUFFzizpZnjIq8sgEAD53oUkKFs Fkw+qiLwQMfNvT12i91og1BXscj8+ZUDk6b4zCVlsfU80etb9SLRzqPJABp4pAKCHUjsr+5y /QU5IBt9Yfi023GBaq1JyS0KgAa5HAUh1MLj8UzXJV8BRhX7aV4ZtIUDaJjnvJ+WeJLwqJ3C hVGz2Bv3zdfyZMw41Jz4oV8ChEsadEJTRMF3BMjAWULwpU+CENz/HRxH7o1ElFSI0Z2BGdxf OFBDtv0e3eiDEIxHbRlfRayAARJhVIlBLMVSe7hUaqmVZgVCM1kM/URCCaTEBb7dKdwbdHSJ 2nggPIiWzrXCZKRYo5VHCRWABDQALbBbC67PCT1gOWBDxDzLCaCN7l3A7lWLoXlenRARv+RM 8UHeATRfESYfSJzhvMBN+7VA9aHQXSHF9/mBHRyCNkCNAbRRvV1DFooYldFdF7aBd6hCG4Bg egxF8KGIGyQiAgJOJQhee4gYYThLlHBSGNxhHI1YC2jQGYCHMcXL1hFAMFzBEBIiEULaKLQA ryBYA9IP2iRJ+I1D4/SBHkgjpjxKCaCA/wHcEyYSTtBJoDN64hxox2RgGRmwHhskgL5ExSAF EvS1Gx1YyHPgHpnlgbrQYaaFAwO+ySxmBvvQ4Rk8wAUBXxomCDAWgPOZ244MIwRo0+a1wAn0 SgHcIVUIXlqh1ZRojnRYIBVSIUVt3xWexr1hGJV14DcKkL5U0FKoAWzMgQeYwheCYT3gmC2w 34EA3oBRwow1JCU25MQ4QMScwe6pCxsllDgEzRSYh1ekRQQYAUQUwAMYZLnlyTBWgAsoSIto SAUARvScik1NWZVEoxyqREOmRDYC2pN5H1WQpFx8Vnf02BpoRwmdyBiMy0vKh+axYN6xnTZQ QqFgQx/Mn9PFX/8eUMmbqBYcsomNYNJDlkJZ6E0IuMAg3osFRNUCdBzIGSBVGk3v7cG78R8n eY5VjuQtgsNxRMxe6MFYZiIGBhq2DFpavkPOqAIYLFN55JwxiSKWdcLlREADiJ1MckgrTky0 JE4fPE1DOgsuPlxVuEKpnIGrwEYvYFJEFEVBHqQFNEVUyUNUWWYBwqEK3WFCZaUhJJjKOYdy YMNeGMA15gFfpKZHVhGUeaNrzgFPNUNTRMU4vhnAiUHz+AMYTkFvMgQmWAjalEANTonEEMLT LILT9YUUkVkZ3AlzmoEDbMQH8EIS9CKsQARRHIB2RoUFdIcKiMAHCBxoVEARwiFeZZj/Zwbl EzqdJLqBL33lXqCARrIn4bjnG2iiynWifM6OXK6CqKTB6nTN3ZkRdpBGLZBAbrBfeXYJtOhQ s6gJlUDNS/CfDDZoZyaYVcjSn8TLBzBDkQSgFGyoFwzFiYrAUDCDV1QAM6CTdhBhnXgmIFQA tUWb0g1lzf3SJEYCxFyjSqjnJZblBXpfiPkoPlCOkIZhCS3T7VRXXeaYrwTKLWZKgUbjTn5D s0SMIcQiUNJfQrDgjVGA14iGF8AN1XXBF1zciIIU31SVCghjAXZTCCwHg8RIPerQVnbSJrrE y0DMs6BneqImjpqer/XoobZeP9yRkb5Z+a1YCLaebR5AgYwC/4LpVvuJ5q8hggzuKbc+qJUo QA3mQrV51ex4watwae14wGx0gJzYTeo8QAWU00l5lwp8wCB6XABw1fSwT1tAKdpopdI5inIw wl6cAApcIx22Z7HGKD8hK6eQzLKiAZG6QfCJIpHQkrVSJbY2x2Vl62gKph6MGdVUGxqUaxf8 XwFgXu3MBhK062ZUK72yhge0aayam74SQK1uADvVn1VaH+kpnOYQGGk+DMKiAMUQq7LcU2aF 5sOa4yiEY4qBgTwwKrOSAQCxARueSds1IYGSJsAOGIO4gQrYzcVBRDD8YhT84mxQwTN4xXct p0YdwHV4R9aJgAK2A/+9iVBNKZ62iP+zJUek9AWkZAPCIm1HMmyMcqHTXgIReUoJ/p8L0JAb wEsbeIBtro2wWYkLOADC1JUEQgyCdpJf4topdIcxDIEX7CYVEAAJsG0DlN8WwG0BVMDdFpbA JR8K8l/eRmSZlZnf+pBw8inUNAvC8oXxYuPCKq2xHqvTascgxWXF6ucyOQOiVNpTBENmxgSL XJjgBida+kG4Zq2a6kLLUoSAqIUEXMY8rRpr3JFG2RHtTp4HcNVQIgIeTmlded7iglLgEi8V Gi8ADyviLu/VMO4ngGnW3qczWC0ZWE71auEEdpUwsEdz6O0DWOm2hm6FoFALCM7kKNsQzMZu XpCP2AIGFUT/nbjv5dqRCuhM1n1A0QBGgiFCwVjl73ZwxjBtBBfCNFpjehrtAJdeAZ9e8/qo DLEBo6HkiuGnGdlmlwQNBKoQF3WABBADQxBD93CqxPzqRLrACZwXYv2iK1UULGQvbDiBbfyI MciTGMDq7I7qbR2AZFre3bKdz9wgLoKDrg7PcY0mXwQrShivoKqmWZ5e0x6wpyiPW36AejSw C6yAKbRBGWXtPVwWJwJg6zaA63LdkhqnX0phLC6HAoSxr3yBQbTsL6Sxj6RxbsXDqQ0cYV3B qHXA5KmagRIC0hldP4bn4CmdUMEEFL6RAmhNI/TFnyZv0hpOEZNnIg+pfpbIEIVC/wlV1xq8 SIxtDmIJpJI65mEykpSAMxSKbytUVVvcGduShRovpov9aMZ+hQjYDEJ6nR33LXdFotHp8aU9 y4WVVv2RZmlCzF4Qco6ySRbGpzOXwSKrAcVyLm2an2g4g0I3MxuC34YEwPoNQyLuGVI4i2Am 3R4IVxg8wG3F7BHMBlCcr1qkMU0y1SisQAVo1Jp6xQtb3lRG4jXtpF9+Zv62B4O+jCQGBrRQ IXouQkpspPIuM0LLxYlN8xicjFSIwVtK775J2CMOWwuQgBGEAAmEXa1xdOhqalj+bRkQhQrE lRC0rBNAgRoDCSAp1uzUwkFoVNxyAGjY8qqhpcKp0wKCbf9w5rPPAiYdJlg/GwKw/ung/ilZ FjKhMu9BP+wdWS5EO3WKdcAZjKIbWFIb0JK2ckM44Bn7BWhXbrBAjzVVgFvMChEy4MoFsbV/ uPVytlnMnhorXcddaxgCKcChgOcT1p+p+Mxvh2c3gkPEBDEg/+lAJ+7ATrFSa0lmS9iIZIwS R8UKbASW0ZIMvdygQWMWJEiEHs5oYtcuifBqQ8ETlQIIGAioKlYgbbQLTOYQkJsqyHPtalhh +IwN/2xD5qqa/PZvL6PwWtYcGmxKHK0lInXv5BfQMncpJHF4UDWqzKVlFNnsOHdFUmCwxUR3 a60fI9e6RJbn/dFF4NF/BiCBMFb/kQhB5nm1e0MAOtUyBKxAMJDbqolAA2YB0n1nJPqs9VFJ f/f3bjuSQq3nD0OKeu4lASf1HSCyfhmxGCTAeMaHonKg+YFAC1CAPorBL07rKrAga+ZwRbdA EQja78gBHPBQLr1aExiRj+TNESxBRdDOvDykzngAQZyoBwAfBKiaCLwS/+X2DOuQ0+l40fl4 /K2DcAq31ujFUBf44Q5xkjP38kSGB0jZGIQHtFIPVSRAy43BL5LAPPgKXnqzhtThHvDCYn9s 3obxjw5EMDCaj5w3B5gxL9BLJjPEQ3rHwBUAuX0FBej5qkmiOv055w5YTn+y0hX6b2ea4CW6 X6qEStio/4ErM4IrbqUrNQ6Oja6xiSjcDiG8CieaLFAklvTlF+L4U0zkAqjwzrJobUJIQFTE GawzgawXSUOk259oFAo6JUx7RTgmAAu82+DdoeAUO3h2TqYlu9E10p4WdrNAu7BKO5JT+8A+ o81lc9C1gD5IDX86W0Or0IxVjuls2iFf9SUjl7JI2FTECxqir49UhBnL+l1GBKz1CkF4BLnV UVVZQN5UwFTy38DnMQq1KJ4Cps9o6S5TDIYMbh7UKBUiNxHPVBceKy5+wOLUw5O/ImEk8HRI SRZwqbir4S3kXU2JJIgpHEGXgV0ADWuwLG2ohRmfAQWQQFy7eS8sATqVAQR8Rf9V3esDbIBN q9Mdqgs+I3zfao2PF31WLqheLgY2gzVKOP2By1SkM++kq11NUDJVq07Ve4hfQEuacd3bpCKn rQ9zcOLHo33aS9hqvMUhBmBa2Mas18NVwPy9b4Ec6HluVRXNthrgDzwu+4HPCEaPA+WzAPey 00QY5IEiIMc3+IVR94Xkn5WSLzkMnUsbsdyqfADhv4R2zFxnZ/sg/GqzVMuTY5wE0IcGAngk 2ohwj2zjRNarwUKXQ11UJJY6o253JNNFj3CFzQoQLFyuBcRVUCEplMWDtalUWK5L9RJwtQKO VtfLbYG9F0ep5EA7TqWWy1xae7vuk3x+D3TrhhN2+Af/BAx4CPALPEQMHDRMBJxrhIyUnKSs DGy7fMzqWvCw88py2fiw25Rr8NyEe1t1AfE46gAhsDz8LMyT+wsoCDXVKvy8aysUDDkgSCaI GFpZAOEgaCDgaLC2PihwplhZMSw4OIgYDy8oWBBygag4Mj/o9q54EHHZslKo98rVxwLuSgN4 BkwAVifqyGHz6dcmFwbZUFrEqJYgQpUwYZqYUaOlRxgxNtK1KUEBYaAakAIlLEFKh2vMnFiR YMgWDyoo9ZLk7w+/W132yQnmE9jOKi3MgSvHLdwSDk2tUSjABKo5FRSSVE0Cbmo2D0IKsDuK BB0heSIeuHBgpV+uLVr+tenC/6bEhhMA0dRtYSbvKr0Xh+X1uXMIsY+QIm6kKBESKMSNHSO6 Uytliw0NBvsF3MKDp7glGbdo6XLU2VALcEo6TQkoLtatXb/O4yCTUXDuji5h2pQD1A6mw1Kl 0CGrimxRV1D4MDVAVnMUNhcI4IGFFCobqvzM0vatqbplBKZxmDB8319eEuYRfLnSYceLHr+H DzmSJkeFPXO+LOxkwr6es7h8w4EENiCsFj8U88iOPGBrzaA+CnkwgAiLaSS15nDDzZwFVvhN BQ+rWoG53xb4QIUHVFhgKuLQSacCIzagwgqhOvoCjCzQgMMuHOt4qceDIvtLi8E2Yq8x9yyK L8mcFv+z6K8sVvBMjhU+eGMvwMqbySWXPqjghCGgKyySA20paUFgWDMIzQgdlJBN9BA5ChB3 PFyiuA1/i8qqqpjIcyoNPeBmBUCROIAJD4dw0Y8HrPglKLZ+/EdHNKw0aC9WSmBIsGF8yahI xI6chD4lR9U0TEfmq6+8zgDrb4MEErJUr4fscNCMzerYpB/VDDkTLn9ugdBBYYcldlhcKgnL w6MWgLFD3Og8a4UKBr2wm66OQrEDc1x4AAIP+qnCOp+4CIYgl/45SNKDWNkrvJROxcxUiAhR rNOKSMUXPvrk3YnGePti1wwBCUSIP2FWOeFWSP3gd6aZcPEJ4oh/0qKPYi//xjifLxNhBE8U V2gH2z2XUKEDClzwsDc/qRKUAyQ4SHHbCuiZKdwFuRCjTTVAKyNSgH7kC8AqO/LFvobFpPcx UPNlurGjh8zv4EtReAMFqktIwINL+7PS1y48eFXBdw8xBAvWJmYLNozXLhaLC3b5Y1uHBWnn Y4/3TNEq00LeBs8OKkiZQ3NADYDReloDpq4q1Ji08Cor1YPSNSAPBS75Pk26vXub5hwk9S5H Nb8s+GPl6hKstroEsDfY4NLMuO7iA5R02SdTTFp7GLYzIcTFQQV+Z3vtMNipR87UEjlnZWyD Q0fPJtrhhQnBwyL5zrAASesC0sisEdbBhIY8jjDE//+R033Tm8hTIjfvvP1T+4Vask9ON8OA qlM/HXVXE0jA/q1dD0PWohSSXkXMJyTZnWswBrwFsq067agQIlCknGRxQxvHWcK3ineEQjjj KmGRlgoUxQgFXGADpDmaqbawCktpCUC4ytSQLgI/e1HISOxzn/s2Fb+nwcsO+Lsa6oSIOv5l 7X/soowAhdEQfcBFYvwoRC8Y1KbgVZFYCmgBC7AgN0QoRhsioh5UjoBB58SNg9GrwPS0kYCT /WF79SjhBTySiDA9Ylh8Ac3kKrUQOn6uhvVKHw5zOMjKQY0xkLGPGYKoyNShLn/6K2IFTLe1 /RGsJJAqk6Om+CCMAeAEv/8DQChF6SAD8IEPCiBWCyrAiyQ0QiLuwVNU3hiAvH0AgrswWwXQ oYIPQEAIZhuEIAr3xtnwUFN3GRbjdmYf7tXHcpZQn0aWRsimGS2Gu7rMI+t3Ovs5cohWYx3/ PHAB/71hFPwTwyUVRDG3JFCBvSNWKE8gSnqO8gR8EBY+HXSBVfICOhxDgrJ24bc2AmIBgCPe ERSBBQpUoJciBKYN4cg6W7yJSQkagxzfxS9RpaeHu8jcDQFJTVJ11HOpqlxcFPnIIH7TpfsT pwem9QH+VQB28/PCQYLSkylKKFjxLGE9hVrPYVHmhEex6OHmpohkeSMRD9iWhXACmplM4Z/+ 5FX/IViwvZLYjmjXlI9JbfG+PypNkCQdVR05EjWVApGRLHXpEC8AtiLW1Ds3RUi52FJAiPW1 QWxTwFAFK8rAjvIC9MAdLiOxvOMZ7wCHiFMJGKDQfx5ucLgsIffaucRMLOSQnMrIR0Eq0fWN FK1O85Uf0ReqgrmUm3GFrdUcwLq7AvBgORWfJqHIoDRdLC2eHGxwAdCCw07BAdBhBGm7+ICz lMB+illAveIEDBHGiTWVK0QV2PoSACmkj2QKbUgMFFLMmfa00NwJenTxWY20Nbbvje0RowQw B81opwX0BzypOKyhGkS4oZSjC2YGPfPCqRcluEAoEcFcyHKxHhDdFi8o/xQxFrwtcnk0SCnr 6x/wglUyl1gPeUt7XsRExrPrLQVrfchI+LYYf/+zQ38qhbjNio1iyP3rPA2QjMKKMg0P+O9w 6yEC4iF3EpfdSQlhCAgcuiMbccNJWPxpjjOtEsP144NzS7llyHkXxPoSqytFLM2zklg1QJqM Z8YEEn+plMUufq98X4dETA7QLUGZCdoM0uNkCJUQDgDyf/1QXMW6srKzUYwfpDjlJ38pylLe ArkCoAAY5ZPLGd6yhqNU0h3OS7k1NDNHLCekeNnZFKCFjKzgvOoXyxkoDmviABuXh3BkQ4Gf BAA5g/zfP/CTBUeTcIENXA8AIIA2XKQQOMax7P+BEFeOpdRypqWdafF1layPCfNyPx1IYYca fkDxmqm9rFlLsXrVR7wpjdkpjMZpodaHQxMqg7rrwQ5gAIDgJzHh9LAwNRbKQyjlFuXWsWUv G4FtuAAWNXzPaUsbAOXEa5Jm6GExb3u83fa2qj5j51LIK8awerO5Xfs//0GKXS0ZWpr/8RO/ sgaVn/xdoIWbYMEO4G1u3IAChB0MSHDRNoNTtKOPIo5lU0xCVwiAw0sZSgM8fMtMH4+1USta bWPcMGXOOLkJyPH10rFg5oGryId4xJIXTC8oh115HMByvbp8zzEPMs2HanMm53znSW0wlItj ZIWGzB0FN/oJkK70pj//3OlLf3jUOTv18lq94ll3Ja84y/U0IxLsetCm2B35v0lmxi0vAY2b YRUkoaRtQa75XeoTLtwWzB0AAwAAA94oeKxfe9iOLs5MDv0boo9DYlsQvBYO7/DhZ9qT7lq8 /OATTVBDHl7qoTzXa8dM80Bc8/H1PLvyUCW+jP7LxCiGO1+T+hJOOrByp2ePB8sAAAgT7xmR m5Nz/2A8Sbj3tc7DJ4MfAACUQJSEZzhpQznPy7bFoDqksThoqr1Q867oo7z3c4QjEqKwMzeE 0aM0aZPHeYOkmqOIgbe2axDz+x0IST16s7dQYgEBwAdhopuJiKW92wURYY37CweDQIMSaoHC /2q4pmOAwmu4Oxq9AywV0lPABAwxx6OmyXNAUzNAN7u+2LKfNbAaA0CBUtKH+oIUzyoa8esp EdS53hGuHrO3MbQ3AWg/Z0ox1MCTnouwQBAHn0Em7Zonw2O6HwSN4tsyFhKvM0MxIpwE5uM2 59uFcFO5JewqIQGJlZpAsaMfIYpCLLuaDQsfa0stpTK9TRpBl6sn2AslUFI/MizDm4OiNKyQ WKqQ+SueLhAHgwiBVjQHK3ibOTSlp6PDLMO0pbu0LitA2+s69kJAJNQ2QURDAtI4Q8wO80mJ rdk8+KLAb8IyfXIuYvGeFMOMKNId2CA/l/tETgSA43IB9Qsl9nu9E//UODMpwEeLE8giOina iRKoQWFRAC5IMHwonBY4gBBwgMAqJQYIQFPqRwHsLl9kM/OQOk8DRrJZwPMixD70Dwc8NdGx FCp8sRZrxrHDMjZguLUBK/Bzpw/Mh/HTuS8sBFAaRzIEAHP4rbkbQwb4tfIwx1xQw3QMBGWL AJzoBzi4RwnxH0qTo9/ZCQo4gHxkOjr8xx0cQFIEr5IIwos7SEVISIXcNENsSPEyu6mhyIqs Qomkwjy8mL5IJ4Y4k+I5m9PrqZjzQlECRRTEtZpLy37IJIH8t1syjCyxGDcpoa1SBP8arFnc QWo7l10kyILcxZkYs+YTRqlETFK8A6uMM6z/RJ1y+sGLeQtSLAay3AfX+EDWIIQSREFQhL0E Qz+VFKUrKDW04bm8C5kvWyhhkZg9Q8T0uid5oic+AI2ns02A1EX0+Ysg3EPRAsSLE8ZvS8xC 5DDSYzXHFCIpzEpq0ycMzD9wizUPPJb86qnNJD8FYAEWUIAKYIC0/K97CKwvXEjeeSJMcDB4 SSpcYKCKSQNAQog6qEX/6csdhINe5DiAsZIibMrECM5hNEa2akiP6gLYyp8CRc7HtB+jnEM3 mUxhuMzdycwutE7VC6VCKEnvHCpU8sKE+x2vyYeIWRNc2BZmakJ9QLrrkAjQOL9cY9H/IzzE i8wsLEa5ADvuS4gj/9zP0RJGt+wXqexRJiSTkLNIAh2iUqpCKfxBAcQnddOky+zCJ71OnQMA FvDMXONGADsW/uuvUSu9v9KdcSMbsxHJY8GlwqEnBHBR42u6Na3DaWM4vUgp2OFNDpOE3yxC QVwiH/3PHy0316Ia+NLKKnyJhqsnAezQvuLCJ9XGMV1U8kPLMTSIMRzNT9IemjtBekq48Yyc NnmNdZII5goXpJsl95s0ocLFw2tTBFjT+dTDGt3TOi3MQAzO4STOqNwUs4uv+MqfS8tD2wwu PrgA1vQpNEm6t0O9kPwd0LwCemlU1aM5KmWBUJLUC/VMk0yT9/HUS0SbQ8qFtSNTw5CQev9q vTpkuipkOuc6V2k7BqcTVKnJPiSiIYM0qxzNoeEEUHEbNcb803OjwmckVMEqvNUDgCjVOQ4t LOxkLvJ7APKrggqrAgUgBGYlWGSlpyul1gHozmqd0oTbBZ1z0AFai8DIjmdaqocpHs4cJXIV LBT4v+U0AAQ4BiPVtKrsD9vyUHnVHHpVEslbSFrtOI7yDCGFq7fSsovcwV2rgnpKvTncRJuL VqGCvSrNNfNrVJg7vxIkSQCjUntjAQbIWGVgABPaAC4IT+B5onWzr5BYiw3Knd3BB/VLMASA vTVwAMFSVVMtJQS4x3vcsjTgTe5TqeT7w1gFTjz1WY4LFbCs0QL/HblGSp1ZjDZf/c4NUNqs RUu5HYDsvNTs9FoBIMPuzM6EQ72RfNiDLduBBUcUlNIBUIbfQQNCkLvAUk92Mro7K0SmWjT+ K1hJXQNJnS27RVO81dtaU1WqwZGUA6Cbih9YNUJPg7w2O9wlxNbFpUADncI3cImFmzY6/C8E CF6L5cRqzVhQ9FzPjFad64XfKKwBYC7UndgSWlH0BQdlkAAJiIBFUYAT5EaChZjcMRsP1Jic ED4di4MhgINiC6XgDbKl24DeK7gyEJrO4JqUW17m1dlpIrHojd7nixV9NVD6KVpGMgiXVdkg m9ZxfNSVBAABYAABKF/PLd8BYOHyjVYJ//sNJxiAFKiH7ASw981Gd6BfCQgB68hf2FM/rPXY EdSJ/LDM6/qSQliUhmU/jMVYjboA9gte7w0ldB0s77UfBx4HAlADOOguuTBjWUFKC57X/pwN Dd40j+qXgGEFiMPedqmfrGQ4p5PNLvbaYoM965gtyh3fzyXfMizk8n29TtQqAJg0jK0Hk8SC OILf60RdACg6fwLVgu3EHku9mfhCg9iesWwQffjk0PTaNQgycxUlBd6ADig4cmC24jOdwB2a /qjgq2vewdXZenXjqfwIzEhedKvPHhHAaKtFokrgVQ7eYEWDuPVMFh7kQY5hGa7WhLsAe5MC GeZce/Pagr0Ah/8tXUdVgFpbWAoIAaq10CidtAPRL/8VSSwirkm7gh5DsPQLLL2MPXoSx2Q+ U6ZzgHB45YLrxwkkHdKhRv1c48MsRofkOsW1MzMWPdETGO9Yg63sx1s01Tn0XgUmAwcIgXEI gQ64WG4uw2mmZhim5mr1zPH12ijYWgwlrEwkWFzxQuBJvQV5uT74Ht/BZ1GqYWUVXdQLzVjk 56HagBAgAQQWpWMYh+MCaQfQynKCi78FEhxN6KxjmDzt5X2Zr9EraOotgVYsCA072uDy3n0G gLElupDGXDKEZrd+4ZOW4bhW6WcOW+ZyYa/1Wio+4VwLZ/cV0/cdSXUunCjN0MH+wjD/ZVoA mycGUOChcgASCIHCS+BjEIexXQY02DIUiOCuWRXRwVmRcj6F2Or5mozyuCke+WrQcK5BRddb vE3KHirHLtS1bOsx9NwWnuuTjmsX7m2V3mtuloeoaOEJ8O2THmST5ETttOmYHljn7sTn/q8S tExwLdWK1eKhMiESIIGUDKVWnK3gNQDv0GyJbNfApUbfJNw7HW181WCv7tnPRm03i4vxSFB8 2t6hVOZ60mLwfWYXxljfRmkA/+2UNvBq9Vzm4oa5FnAXNu4MgOHk5ubC0U5LfVppdb1L1fD9 hbk6yOV6WOzvRGoSCM1jmK1VtYuxMwCEIO3BJMwPR8BZZche/1aFOZUaTGnxVeGmQaWa8U4D NZXt/U5g77U3NK3r3UbyBidwlObtA6/rE9BtATBuJc+AKs+AETBk3D5B/otWzdXfKsVYLx/D FODETHRiA2QLody1IE/gDSiAQp22rJxCFKBv29PlC35KtKrV0p7x9Uq5IBkdjKQaUkpQgCA+ 4dLi237mkn7hRhdw3oZhJXdyKoZwvR5wB3fhKx+BEbjy4x5wrs3OgsXyum5hBmiB8SWq1xDg BErdLh4qBBhbOI9zI00dS3ESVMNlPN/ltIq+hT5EhsQS6VPKOs6wfIIDID/Tx87ujVZpAUCA Bmd0T1dyAGfwSEduamYACOdmAp9yjP+98jG88gmY8kindvYtgGTQ9qj9XAXohgCoAE7k0E4V NRANVrkLcXqTdWmrwj+d06ix6pwd7ZRCTBnquIU+NY7L6t3kroKoaL7ERcrO7qLO7jFU9Gov 6YufdgKH8Iw37rn+9hFgYQYHRQbY9CvPAAbv9kwfge68gBAgABI4eVI3hweoAMBWdSS8QlBK MFlkc3qbT2j7841CaIA/TD5Xykq81wYMtxp3rvdcuDw2PqXuZ3rqgFbsgP8W+Wp3dAHfdBne +IwXcJPXdr0ew/A87k0fXwE3bk7H8hTIX06v8pXk4bTOCvyFcbLBqNxxVjad7V8ttlUtV1rf JjZAgwIQA1z/z/Wrfl4P7XVKjBKefWNBuNW4oJpgQBhbJLyIH6xWJIEOqHgCX3mLn3YI53QB gPuvn/bTN+n9/Z3QJ/nOFQAyl/IyBHl7O31703b37VDr+lYi+djBBjCADTJVBfrI7VfuSwME KqTQLq/+xCiG/ixhOIhC+lm4hHzW5mweuaOMpEXh/78OOOoQqHjcHq4WPm6RV/nT33SQp3K4 D32T7OGyJf1sF4AM6ONx7M6SJPkB+PYJsH8gACgCARfxGHgcXcym8wlltqbU6hQZUGgBXMCp Cw6DDQYA+WxAkUts9vQQiRzcrlb0blQW8fxnct8XKDh4Z2d1iEhVh7iYaPfkqIjX/3JCpXZy wpapiXmCpiYWigAQUkqCgDCguqqaCiCQMSIgoDprC5uRiyt7OzswkpuhGquawqWFrMCQoRzM IqYKMDKyCsswKwwAaIS1JFgAdVRJZNWdpRAqNipaZnamZqDZ9nZQ31ZHmEeUj/fH/w+wUKRI jaw0mVIwShUpBvlYKVGJCqYpnTqdMZMuDCouqFhVq5WLGqtbwDIImFayFy1W2V5lECIkWZYA F2KZfBmzC7plJlUtEwlswJAmSLj92ybFHJIWAVoMOZEMXcZQBkahubrJTQutDfP9QRrQX8Cx /xQNdFTQ0KO0JdQelKR2baGCELViakupIhp3Y9qBQQU41f8qXb+AXVsJoNaAYCZRBuM1AHHh Ac+AjYiJjAg6YNhGoEN2jIsvVdMG09Km1BshLH72KGUKFdmFqYmpXj3TZt5WvF1X6yFLVAnw 4YTQnk0rSUpCuXEZKTzL9ArTAHU9kbHejow6jhtZtsTVc1XiVbxCniS80qewAQxSwtQpLVd7 kwLegwZwQWRkYSN4FlOgR2pg3dFNAXvYgcV0WCRzwWxgNAgAAx1QsIGDYZSBVQnx8DYFhwt5 9dtwYgFUQD3EDYIQcsgtxMhaDRniBFqTROcIOZQ0RdFFt2mnkQCjbCSYeIkFk94A41VTUki8 +JJeLrUAoxl8WjDAgALASFPffe//tRchUE6uwsIFD4wp4ICtFQXOPmXGFht+EHLhwBekHOCA hX2hUZGHieAD4j4iCkciB4KCc2IfKSIE3SNduYhoivg01xsUZkEXACYGWKrdVdcg0E5Jl3WB AAOjLDZMkgN0NOpJlp0Hi0or2WTkK1VGeExUAOQihCyfoRMrC+zZJAtpPvnEwAXIBGggFoTy g2MVSHSiAFTvhSJnCHTaeScaXE3qKEBfETdiPgUIKugBhaKoKKIqpmsWn5Ak92ij8M644iEa ZrKjOwjkgoost9YHBnv+wVKaRyzZokurruqSAQNGnqdLVAosxgx+Ddc6HgvXxOLwfLGg1DGV FyyzAVJq/xq4bBQFpFxEdEdcEW2lWmAbRoOzdRBChepwehtEi7IrlyDf/mkmH+OSO+i5gbj4 Fot8tksUJMod1AhD3T6XKBWVUrKjdrMgcFIZsKwDqqe19BusR5xZZhN9t/xCX2OxCEAlA9og M1+WtzZsq8EOk8dYw75SdpICLqR86wWDrOyEOVdUeoSWtE2F4VX34uVujEEPMjRw4T5RDwcH pHwA0kkrvTTTHy6yzdWCtBsp1nsiEsAICNx1EV9i45QB2VxQvBg1s6y6Hivl3cQZk7ZMQ/A0 mA0x05RVSoXOS9LCZDArVEY2QgVaDM5CgFgso3gTKfNRhJrinBC5FpjQFuvk7v/gyaHSnZP1 ufmmc0Do/vyjzjkmAAIujJqaoazGEH5kjQoQmQVuNDS/9lTFdrEIxaksQzFiwEIxH4nbkpQX mf2kTSkSm82CksGCwWWvbuwhFpUesLI0dQMKNWEAExgXQwNxQxx5qYj7pJKO+E0FFXjqxLbe tQhvhchzgILC0Uxnrv2ZC4AKTJcBgQOjsiRqFh26FQJKMD807GsEu/sURjiyH2Fs0FMiKVIt sFENJkVmJbTwhbHEdw73NQh6mrFVhFbxt4/QbZBUCt/KiIBH1bjAASPYgBOWRahnQQ4q0EKH nYQoRMrxjH6xWx2zloi/JkLBf/wrF7nOR0WhtSaV+Wj/AdgGMg0q3OoEqroKLgRAhn31Th0Z RIAsiCeADWygAx9B0kgUU6Q62oIVz5OZFgLggGjmMQt/9Mj2HFZHa26gHmR6wAE6oAU8GuWG hzxCsmZyDjYBEX61mdwmcZMJTyZwLPejpyhBh7TS5VNQFEAlK/9ZKD/V4VYtCNshDICTKZSE AQglAwrigwszoOQMvlsVlsYYlFKE4EgjkWN6sjnH0bzNSBKbiTSRMLPstfCYtLgGAx7QgQ6M aUzfZMEQZlqgAJwzNT+UXDrWEY3xUG5HPnOdouwp0FAW7YmmbCr/6lEPxgF0qsCpiQCakB9K XOYQvyyPAEqghgys4RrxYeh5/0TFhf6sw3bOgxusTjWq7CkzhMt0IweL2VPoKQilHFUpXf/K ABakwG4RYkEc5DDTBzyzTEcIkB/lZ6RWbIQ2lZMHb2KUubCAEqlGg6JT/Xc+w0mNqgBsAZVO gIcTMAC1TKDS06pAt8vMgkpgRcEv1uCJaYh1X17sgr/O2B80/igVGwmkX5Vp17/WVRXGyoyA JuZXlgK2bnV7QBxq2lzFLjaRiFSCdhkkv9+JKqgZqZzl5CkpzSaVs33QZ7lW5l7QOiFxjctA 0UgbEB81jBB5Q8QIdiMLZ/XHZbpkKwB86TVh7CUjHWlFdDmY3GL2QjEAwNkXPtOm3z3YI9ls KXsqsP/Nw1KgAs9wkMT42McTrzO8Gp5sebEST0d9yHV9uq9vbHy4Ep1OxxEg5RNg8YQRlA+/ d7jASa4aiJ+wthDlo2UsWmaFE4wgAHa7jJTFegKxVkEXttOO3EyiuyEycxVBkmsxVYrcbDIg BB2wkDBTyMINc7gaHQtfKeJQAI3B+QJhep7ExqSA5hqLZhruQqxOZWhEU4ULn7hUROA1L/Xi WGj3dGJ8R6djUoouHExoEE8yEIXaTRo4qpXFCWrSh9r1zkeTkIULrBohI9TBRtJYxq0A0AIH vGQZu2HDSxx4hsNkki8MRlWDGyzn426PmQfmDqo8UmZrRphuHasjHEIQgAr/UJdK+AnTiW22 xxWHwWCoIgEJcraBqWBHW5jbXEA3q97O7lN0mt70Ey6wByrBAgB4eElAhiKIRgYAGzbsN64o eAcFxIIJt3OBlVowggQWdLZZxnUL4mGSusjDR+vey1WILQogQZsV0U623VKxEsD8JTCTja5x IwvIkEXmmx5QbCELOTIWZCFMfA5TCn1uwfGUvBUAMHcpCN0FT1hH45c1oLuVuN5434Gp8aX3 U8k1ujpcAGy4KLgLrsyMKGQZErgWBG8FQSVZmKQPB+4PakHtB55UShoXqETvIv6E09otA1VY Rjw2kRWLdE1HHg9i9pCdbHJ7RMOYFM+hVRrIlwts//IDaMEGaMFnyqjCV3ZrAQCe8fPQgz7R fSUzyStsbhJQNhPsa1EWz1VPqUeh6p61NxRQAgzROrwzd/Alal/BPLw3zkdyoZsgIjRGWvGh P9NwAdyd0J5r1K4FH8PGkJvwy/NQwvMZ58RdcqMheAw+XxY8/NCHnvjHu1DyK2RPS5fdwjhn m1j0D2zoCylYOP88Gvw//OKNrnrp0A6dIE/qYj/wBnVTR0pMdTpRMA3X5wI/wRlOoFq68HUC UATL4IAZcH2+tF99gA7nYTuTYF/ToHB34BlZwgyHAWrbkB8c+C8usDdk9H1ZAX4QoXTjt2DF pn4sd37olz1zUnp+9TfVhv9M2hMZRVhNSMgKwqRSKpRsxuZiL6Z0scNKsZeAKgNaDGh7eTcL TbAxEZN3wVAJQgYL1IdkT4AATRAfuYBjELVkeNAeviQAqBYFDRNxxhc33NYEoRIRFicRW1EJ lnWDnDB46+ZOQHUkw0VciKdSQ0cBIXABJrdhHZZ+TbgB1nSJkuWDk3MpjoZe/4SFR1FpN7SF UnQHhwGG4CEAutdaZAhxRsZ3awcFa8gEbWhfgQCHScZWdfh8T4CHLqCHBGc3fbhaUwCIFCGI u2GDN4gpO4KItNFyi3hgUrhhkCiJlPhglriJA+CETHiJPjiFAqh0j/Z0qTSKn2QmXNg/UHQH GYD/CTJoNwxQO7H1jnbwEoF2EknGABOHPrfEgTIofA6YdqFiX/gWZPBIfVQ2ZTKYCxBoNVVQ CYtQiBXJBh+nF5nCYGgEVwHzOwEDSHBlJC72cgywASFQJ5doiSv5V93YjQ5Tjc02jnfSelZ4 hQhIiksVVSlDAaZDAe9IBNewilM2kERhElnmKWYyMkxAS85XNJbRHvnBb7yGB2oVIYGTXvoW dgwXkAJ0IIcwa5QAfr1WiCiAg2vgaNZhHYk4k0EHKonhO4KBbKSwMpOoki2pXCGkl5DnV0No MH/xltXoOxihLWBJZOnYJ//AgFN0eyGhKPA4Zb/YBEAmlH2wDGm4L2m4/3zngVojiAf40Tz8 VilRoACaaSiREGO7UQXb4gZ6goN6cUZ+kRGENZgsNpIDQAIEMBuKxnjbmJdHCFJ3lX4XQAAE 0JeRxWJeUBGYgCNQRmQChJPqCBCXhgcN4gS+lB8aGCOtEoFe5wRDxpDfSYt84EurBWquVZ0L RRMHJDRoEU94wRV2YS+5MRHL2XHSWJsstg6jAgDFuXUq55JntpcD2o3EaZx9+ZHhZZ/meI4A hZg3FhDu5U8oOI/7eBDMY0PFeHvQN2Q19GTL5xjSMGBPcGrA4EsRVzv/JSLT4S4MRJZt0Zod 0msvynoSUR3PmB08EpjJKQo/1YhBAoRmdoQB+v+XKaBSzSY/mHABadkUzUJjpPWgnFOKi5N1 hNAfrTWQAcAM9eECvhQ0QIZVSBaVDjmet9cezfdqbugEliGMKvp1XYk6UbaaL+qiWgGjiOB9 coKIGsmj4eVi4uiXvimgRIqgLJaWeeIczxkcUZeFVBUtEVimZFo+raKVZVoT01AsbGiCkhIf EZKGWeadDuePjROnkcAb8SmjCwSjFTF3Z8RoOeqqfRqXoBIYoEKotwpt7dSnUAE50+E0iuoH U5qTipplEHkrgEBlqrJaFDgCqEVlIWE3DQIW7SEArnSlUUND/JZKCySj85AbHaInKwKjOEgJ 8wNyYaSjfdqjgElcuHr/iX3FEeqqnOzjpJEGrNDJqMN6r6iDiyZRNFoaqopKI4kSo98Krtun J4lQVAHgaLeBrl0jr0M0boGaeBoTXaQnP28CBtEyEc2pNQ36nPkje/tqP1zQniSrObOzFaoJ rqc6p2dxRIYIYzqYOxGrrpfoII5ns9ogJ2DAPhPxIigbrKMWCCIrtEcLrArLQN+6LSzresYB G2dpBnqhlvkimzvLo2NmMApQD1gLBg4gB3XCsfQqHY9QIoyJtCNCtKEmrEjrtlPVHAUREd6a sE1LQLSjFtSxGxuynGepg14LuMxVCoDLBRsQB3FiRM5xtm+rDwLERGvLuJE7FpMSL+lCtwfr /7SQEpGJSg7IQZ/2OX6EK7ostk67Ii3XwZz1ig/wdVhyMKEhKxyQy7ayK7m120qbaxAse6ct a7d3KyMJgbtt8HeWgqOEd66ji7xb8DyU9AWXciO/ejj1cFiYdrRRSmm0a7vZ+zpnERFNwRt6 m7Cr4xxB426Uu5oat5w0OwaiK24bC0TUswXIcGELqgCwIR1OdLZwcF1ShbLWW7Rtq70BXEUD QRcy6gK92xtMcyBU8zriCni4o75hpjtXu7P3ITHz+j7uAy3O4jo5tDLXFVXVC8AQKsAlbMIn jMIpPE7gMsIq7MIvDMMxfCL5OrIybMM3jMM5TCDY2w8trMM/DMRBHP+5PIw+PizER4zESTxV RFzETKzETwzFUZxq6GjEUmzFV4zFTPAAN+nEWezFXyzDW8zFYEzGZfzEXZxqVWzGa8zGAYzG afzGbSzHc4xfcdzEdIzHeVy7dnzHeuzHf7yvfNzHgEzIhSyKgtzDiGzIiwzINExFRsvIkSzJ RavIiTzJl4zJ6AOskJzJnbzIlQzHnizKkwzKoTzKp1zIpWzKqMzKeazKq9zKsczGrwzLsmzL X0zLtWwU6sNYvezLvwzMwSzMw0zMxWzMwZzEx6zMvuy4aZtYzwzN0SzN00zN1WzN14zN2azN 28zN3ezN3wzO4SzO40zO4JzLQuPIM3zOt2z/y8DMzu/MzgOiSPBMz++czvWMz6J8z/nMz/3s z/8M0AEt0ANN0AVt0AeN0Amt0AvN0A3t0A8N0REt0RPtikxQ0RY9CEIQANraOBftBOhgJhx9 FEgB0qEmBPhDFgD3D5+RcB5NyR/t0ucS0xB90R490/M1BCItQDNd0lGg015B0tpg0jc9xWOh 0vzA0qRJ1KG2DVoAUEu90AEwAQOQAlVd1VMNBYlBmhOQAnsw1QowAYYj1ikwAWHdBKoACFi9 1SnQBGWdD1XtBGQdAHD90RMAFnIdCGDN1rfI12BtOFK910Qx1XswAHY9CGT9TGWt2IotWuhw B1TtBIXtimadD8jw/wROHQVqHQ6ilQUonWoD8tOyhsQC0NWrwdVRwdXhENYDQARConunbdZT zQVIkdqxvdeYzQRynRhgHdp44NcKUNWFbaRCUddEsNiKfdvHvdjGwNHLDdbpQ9lN8NurPQCE UNhlHdipbaTSrdzH/dp7nQJaQNUTE9hRQNbHbaTHPSCpLdrc7dyiFd6HbdgOV9o7NNfzzd3l 7XDRHcS2ANWAjdrlrdzBPQGZHd6xXd2XfdysrdwcDdlyPQG9jQcRzg0Qrt/PTdlkfQdqDdb8 7QJcHQDVvd1G4OHb7deqMAgTM9fGIEBmDdkWPd9zbdN2vdHjjQxoLQhX3dlM8OJQkNpSLf/S fr3fE+PdLnDe3b3YCW7khm3VVl3RKP7hyj3atoDf/TDVTU7W+g0AbI3WIV7gPn7gRqLZuqfX Qv3cPK7kUm04RvLh/EbV+t0HBB7c0L3guf3lPp7gHV7RXH3SlA3YSu4CkK3VKG6k93XdyG0M rC3Z3O0aHs7jwL3YqKHmRX3VMtjiZI7kZQ0IQn7iX17YOMbe3E3Uv33FKgHnjSPjKEXV0f3c RkLgua3kmY7cMP7pRn7ek36LtY3kMa0F8Y0MiA0Aob7f26DhmZ3nZf3XbQ3XYH3ojE3rSz7g /eDXYR3WKr7lrM2GMe7owV7YQmGkkD7eIFgExWDpw77hp77fi03/5Dx+5zu+40wg7BYNFmfO 4/cN1TnsKq1Imud91VgO11Ld3c1O4R8u4GYt5LZO1lQtFIMd2AAvBHs98Hm97sAd3r0e34we 13f+BOyt57wN72iN2NDtit0e4mie4tQ+3dz+BMHe6Bcd4njN5rgeCAxO4UMx4gbeBMU+5ENe 2Ozu3s4O76dO8UYa3FAuWvG+80Kc77Tw2EIR7Fte9E0d1hWP4ppN8A5nOF8tg4bd4csd5cQO 5NmtrfcM5Vl+1fxd5jmv8V0v64bN1Z8+9UPA6lItFISd4DbG9hHO8lzN4rne8kYO6Gf+58Nd 5Qmn2Onj5hx95Jku6jzv6Xcu5Cyv7ERx/9WcjfR2DundfcRLD+iR7fTVPgS1Du3YbdxsbfXe zfeAL933Ldpu7QcR3+bQbmNlT+MhruS/w986v/HJ7eGwHexagPIbD+gofvCGP+2qoNx7wO1I PvZ8n97Dfd+TtgpnDdYKrq3sbQyb7t09H+iQb9aSH/REkQUZTuNQ0OHbAP6b7yoxLdwh39XC vuXRXdtpTuFwr+Kwv+QOR+IeDtiy3vlA4BIOBwNhapJSTozCQXISGLqQ0+kEIFRMJgpr0sXs bsnfIhedtlq36aI0qWhSJ8NAN+W1JwMKQLKITmpt7anrCIvtMCzFac6FTCEAIODJqU7r8G+Q UdHrTqqSM2CJ0/9lkzBVdZW11fXVRUB2tnH1bStPbFSM786Lac/rCfQPc0huEffR5S5rKDE1 ZcC0CEABSSE7UAsyaqpqzTdz8bkR6lP86nF7TZrzj4zJME1voJa5C3QqNBvQ31SOKUhIgNHR c2wRGBfsukk6ZGmhsTZoOClE6CVPAI1IBnlBNeQjLJEjSY6cJUtgOy5nPDLhJGfLn1Jh5oh7 sgXfvYnG7JXZ40wItDVt7kVshE3bsi2mwClCSC6oIZ/pnq1bNu6ekngagxYNc9BXMzvS8gEy wnFPQSJUqmy5OcWnQoZl4EGE2PCUt66eijHJVTRk3pQlCRcuOeugrYyR7HFJIeUxGYL/tdQu NZqF4MGjmORcAis0DFArd6C6FMSMYTemxqYMANomMaNPi6hGbX0VH7mM1qIMsohvlxc5cwbo uSNtGloivx9DyraU9MG4teYmIcuy2NhUv6m4JiWJSOLAgQ2XN99KgNdXbpu7O4Zt4ZzKTZ6c zfKkaBUA944bBw16NIGyQUSjP2raTy9kWDuiKNi+qEWca6Ci6bZUuFqrm972ei+NDrkQTYjj 8BuGDbgSu6YjLvTYqcNHMovPkphcsYiUs3p67po8QNJLCPLO+xHI8vpgxR5ILqRCs47yoCRE r+AbzQomnwERlkmOMeU4uHQ8xhpFeAzKv3q+dK7CVo4cMLxv/wiTZEArV3kJzSunoJJMO5a5 ixUA9KRxEYI6BCxBQwYLktBCDT0U0UQVXZTRRhFVojk7RMPF0UotvRTTTDXdlNNOPf0U1FBF HZXUUk09FdVUVV2V1VZdfRXWWGWdldZabb0V11x13ZXXXn39FdhghR2W2GKNPRbZZJVdltlm nX0W2milnZbaaq29Fttstd2W2269/RZccE0YyYRxXTB3FXRZUXddU9md4t1w5SW33HrrLcze fNk1V9144XXFX0ICFqLcVAY2b1x+z7V33m0PtqJgVeLddw2G/xUYYoJheTdijSk2uBV09V3Y 4nQrvneIhAl+uOFoVWb54YlT7ljjlP8vrvhmjuHVt+SZSUYZ45wHVrlmiWk+N2eklW6ZW6BN Dpnnj22euuiMd44a5Kqt3nrlqEVu9+uQuRbZa6eZltZsjI/GmW2q29ba7biNhvvqkZO+W+Kb 2827aqLpPrvZl9dVmG+ul975ZKwTzxdnxfWOO2yqD+73lYApt5lflgFPFma562b88cf9lTny fwk/nG6pVd8b9aff/hnpzDeft3TDIXe9dbgJ53h3uWX+3O7c8Rb7daWJXnt2b2sPXWupDx+9 bb+DXt7rrVd3XfPWdfbY8+Sb7l5455cW/3bmL6Y+aMmtZ31f6PU+vWPkvW9afuHH7zntst9P 2PKa1/5dfcP/S1/7Fkc2i5HNf/WbX7hGl730rY9kEKvf0BzXNf6VzHIKBBL/JLhAD67KgR8U 4QhJWEITnhCFKVThClnYQhe+EIYxlOEMaWisEEZMg/3rIMCcVroQVi5rNexWBelFxNP9DYnj Mx4CYae9qf1QbArrmRCRlTbcJdGCtmseFkMXP8w50Xi6G1sWiWe6lVHxV5o7YhnB1zfzXS53 BiTiyZ4mPcwpDo4C+18Y0eirzpVkjmPsXvuqF73BZQ6OXjyjFH8mvZgVkGd9rFXBOFg4chXP kuF7YLrW2LUtenKJvOPe3x45xuVJ0lWUXNgVN4bJIJJyk3OLIw6tR8sI7tBv7mMl/+VOicpU ajB2N3TlDoE3RQuC7o7BSyAyR2m/l53yj+/joy9nZUVcZi+Qr9Rk47o4zY+Jj5KRfKL/3Aiw xcWOi9R01zNxBzMAmnOQbJMd4rxpNXGOc5rkbGQeWTfOeaqzmvBMJ/ImJ81Yfm2CRfum4XqH uoaS74oIbSNAVaXGdK5ymArVokM3ik+OPq9fiMSoGZXotn8y1GdnpGiwrDnMmP2vkH27YNb+ GU5BAvN4JgUdTIHGxJOudFkNNIwuRSpBXe7vnjNTZjh/usGR3hKoFIViVKlaVateFatZ1epW udpVr34VrLK6YVM7eqmjAROWYeVcUovI1jUOLVNslWkPw/9oTLXGCq3dVOo7t+lRNqqUmefp pUa3SNa7jsqi9juoSa+20UQOUH9lFazJepqxTh6WVNFUrFGRmUc7HnWfgSVsLAnFRFDWrmx5 xSyjVKlAfu4yiG/V5kVtqc0D4hC3PBVtST/azKmu9lAtTalqtwdBh8a0mGcNbXGfV87XtrGz prwocBslXMRhU66PfaPaugk/TFZWewmlJ24hd6+cUrdTrcUmDzdJSLoudom4HG15CRvSuVZQ kR893m/Ra6gfuvOBcN3u+sSLPsY2s7mz9a0/vzjd/i4qsWoE4Gsh2lsseleQ5TwwaQNY15Q+ 9cEVzasO91m35NLMvtbcHXNLrDv/ZULXufdLYIh3JVR8xRaUjYXvZsvj2vBSDMX8pTHgeKfa 4A4ZyUlW8pKZ3GQnPxnKUZZyReml0kz+lY0kdiqHpyyqbPLQiJ9UsCE5G+YWO1WK1u1yoex6 5ZCelcXlW+81UUxm0WmxzSZusJHXLNB2ttK4Ja2wdmuJ3Nn6MHzifO6Gz9vnLfcTu8G7nGdt G9lAG0zS6Gy0PjGcxESm1tGAZKcl5zxgSpNWwqTEYH2HS0a58nh4uQw1YdTcRCDiebhvfrWh LxhY5Qp6ngvNJ4ghTVIh97nWlaxcdum4aNJ1d77o9KjgNG1PfUq2vK118KwXSWyDDq69f4bv T22J6GtL/xSjnz2m/Ep5vvhym9Z+BvDbChpPAuswcimWHGqtXc+JFlfW8AakvNlrZ0E7FqV1 3Ld5CR3g3uXXtAc2LZ8F3lY/F7qnul3qddk9Y9vCON2TCzIkFbriinPKxvEeYI6VOub9vTGD L55skI99chv20+Y51/nOed5zn/8c6EEXulmr7G3z/Qimt87o0EH1ZaiZucLb5uRuQUrXNFOc 6T2ute/0/GF7+xXnsOMgwxu+8sJaeel7zTqsF71j7Q5agCUv5EOVvfSZnj3RmsV6qPUO6FiD /ajQ3KuiOV13yd6do5eFajtrLuW+LzvTfnV2mWXOW04vksRw7vS6N57lxjtZvf/ivvg2T/3d ZYuRjzZNLo7FLO0Ei2TvyEZrnncsNLRb+sSWJfwqRaplPYKXsbKFfdaTbXRMy1yUk+cm1zEs O0b6Pn415ay0o87lnYee1AVP+CtBm3oC+pv3EtW1W/Nt7aaWmvgEh1qAi+1243da9dV2ecA9 vGBsS/3kjwe3wcMG9zsrfLTE78qMi5GsbI/o6eXW7uk0C+Oir8iSKsU67t2ALZhc7trqL90A C4MecOsUUOmIaeDMLn8kEOkKqsh0DwE9UF4+7wNV0AVfEAZjUAZnkAZr0AZvEAdzUAd3kAd7 0Ad/EAiDUAiHkAiL0AiPEAmTUAmXkAmb0AmfEAqjUAr/pzCGcOrEOtDrYO3ouGi/qFDrBi/5 vg71NmunrA9l2k2ehs0LQxCiNk2v4q7f+oqmsMx0FA/2TvCQ5IjmwOz7JirJOs+3KMzgpicL Ve3LCCq1KO6I7DDGGlH0VowFvcp5GKfXmKfXKo+k0M4SzZCCACsEL7D9ys/v8mmwQoxhyGeO +Cq/QMa+UI0T86YMSWLSRnESVe71IlGrEMm8tm8TG4wMS07B+CoTr8vdZDHYjK/rgg+7vg0X s6oAwchzJizayIwEc28OP64V2SvYTBCcDMvsplHJIPH37Op3RLFw3DB1/FANCS8bAa3tXs/C HGgR1bG/6I673OwW90aVoJGO/yxvw4oR/9IQ5DSMINkvH0EvmJ7LjmzHAZ9oYnaxfM5nHt9Q x5onwgDyAAuSFAEOILUQuCKObwTx/zzu0vwx5Doy5chpHzXRaAgpBdWui+Ds9/qxkRxvqcaP uUYmugQyDo/P17DHs5qRHmVRBmNvY4QyUYyy6IIEC9fQKZ8SKqNSKqeSKqvSKq8SK7NSK7eS K7vSK78SLMNSLMeSLMvSLM8SLdNSLdeSLW1O5GxxDAds/biuLS/pwloS95ZreuJvuZgpzupy HLewt0DSwizyJEuyzu4PMA8K9yJO3RgSFOer7vpvMe9wtxaSe7TtuJDPJKutC7+IEStzJzmS JzOwL/8p8Zkiz6cMyDSVMix/DcjI7bQmEh4d8d3IK4CaMi0dCRj3DTSfL/e+qbbkb9RY7SUB kzLTKvFa7bEW8YDc6BgTc9hccyv1DfV8iJ/GD8Ey0DnpK5kC0ixR825os9485hQta5TesSGn Eymx8npEMiTPK+DMUbGGkz0r0+EWbooyqCW9jjYTbRxfDT89clPac0APFEETVEEXlEEb1EEf FEIjVEInlEIr1EIv1FaEEUNxRUM3dIMMlJWcKdJKhTqF0PfAE9dCVEXTC0Rv8EQJNETLswU9 FPE667a8jaDy8wwXL5PUK+Uc0KbMJuOISyY5DwdXURU7KUdfB35K8ZMYcRb/HbLDqm88mw9F e670RpLtUC1LP04NDeqdoHT0EqyharBLW48BU+dMmbTbso+MyHRFe/HyYFTo1rQWww5A//HQ qI37CBHs7i9M59RMv20kRUlOMVIi97Q3bQ9Op5ShpJG3ynQGz3DkiIkcFXImmcqTNA5vEHHs bquooErSGujNWm4lmVAerc9DQ0U3V9VVXxVWY1VWZ5VWjbBDaxWEVBVX5xJTbrWIaKVVj3QA G89XPxGxRvEIX5RYddUuMwtZbVVUN5BScVRDDXWkrJDy8lCOjPRNb/LXkrHZEAinmCr6pgxJ 20tJq3W89NT9sEfiVFJL4fFOMa03xxXBWrSq7DTD/2L0pgTTmcoIDx/uJ2cy24QrSv9tX59M Xwl1WPvVD7vv+OQr9eqzH7OTFlsv3IbywRaWXU3PYbnQAqOxGJ8xYwsS/YSvR/11yDh2Gr/1 DfPNsCDVU83t4eK1SyeNNGWMJQcTX6OKUtvRAK1IOmHOJfnymICHJT8tkvbxUpHWLzPunGAy C5/W8HwuVdMurlT2WLHWRUs0s4IV5TRvV8eWbMvWbM8WP4sVbZuOWdd2Z6urbVewZ/+wYSeL azNUU+YWyZQV6eJ2kvJWBWtUWskLEV1x+nzUJweXkxKy5RBQU9cNzCwVE82zscC2yc6VSdPV cNVHUnmSN69RFGtrFbWw/7WsVERvLzQdjWVrMxil60un7cwE8rIOtjBbF5/s8HqwlGHRdExr 0fkA0PX0ER0bFWNtd06hT2ORbXfjkQ5zstsEDN208Utpl0rT8XaRKHd5bnWppw330hOTVqNw tmLHs8MKc0nBT2Cj5x3h7WePE0j16FA7CP6KFhIJE7X2cDb7kN3wN4KwLxmpLgavFtv0llYt N3LdFoETWIEXmIEb2IEfGIIjWIInmIIr2IIvGIMzWIOvMggAADs= ------=_NextPart_001_004C_01CC2E47.2264962D-- ------=_NextPart_000_004B_01CC2E47.2264962D Content-Type: application/octet-stream; name="Shen-Shen-Qing-YiR.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Shen-Shen-Qing-YiR.zip" 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 ------=_NextPart_000_004B_01CC2E47.2264962D-- From rpjday@crashcourse.ca Sun Jun 19 06:25:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=ham version=3.4.0-r929098 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 p5JBP0pk032627 for ; Sun, 19 Jun 2011 06:25:01 -0500 X-ASG-Debug-ID: 1308482698-736600430000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from astoria.ccjclearline.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AE126165E7 for ; Sun, 19 Jun 2011 04:24:58 -0700 (PDT) Received: from astoria.ccjclearline.com (astoria.ccjclearline.com [64.235.106.9]) by cuda.sgi.com with ESMTP id p8rR8oEVsG7YbCGp for ; Sun, 19 Jun 2011 04:24:58 -0700 (PDT) Received: from cpec03f0ed08c7f-cm001ac318e826.cpe.net.cable.rogers.com ([99.241.2.77] helo=crashcourse.ca) by astoria.ccjclearline.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.69) (envelope-from ) id 1QYG7a-0000QM-9Q for xfs@oss.sgi.com; Sun, 19 Jun 2011 07:24:55 -0400 Date: Sun, 19 Jun 2011 07:24:46 -0400 (EDT) From: "Robert P. J. Day" X-X-Sender: rpjday@localhost6.localdomain6 To: xfs@oss.sgi.com X-ASG-Orig-Subj: XFS Kconfig variable XFS_TRACE not defined anywhere Subject: XFS Kconfig variable XFS_TRACE not defined anywhere Message-ID: User-Agent: Alpine 2.02 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - astoria.ccjclearline.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - crashcourse.ca X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Connect: astoria.ccjclearline.com[64.235.106.9] X-Barracuda-Start-Time: 1308482698 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4944 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.2.66501 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 FYI: ===== XFS_TRACE ===== ./fs/xfs/Makefile:xfs-$(CONFIG_XFS_TRACE) += xfs_btree_trace.o as far as i can tell, there is no definition of the Kconfig variable XFS_TRACE, so that Makefile entry is redundant. rday -- ======================================================================== Robert P. J. Day Ottawa, Ontario, CANADA http://crashcourse.ca Twitter: http://twitter.com/rpjday LinkedIn: http://ca.linkedin.com/in/rpjday ======================================================================== From MAILER-DAEMON@oss.sgi.com Sun Jun 19 07:13:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.9 required=5.0 tests=BAYES_50, RCVD_IN_BL_SPAMCOP_NET,URIBL_BLACK autolearn=no version=3.4.0-r929098 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 p5JCDgOu040273 for ; Sun, 19 Jun 2011 07:13:42 -0500 X-ASG-Debug-ID: 1308485620-5f6b023f0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from cl-t105-140cl.privatedns.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 724F01E4B683 for ; Sun, 19 Jun 2011 05:13:41 -0700 (PDT) Received: from cl-t105-140cl.privatedns.com (server.mediahostingpro.com [67.205.124.75]) by cuda.sgi.com with ESMTP id MfDsWVeLTIKJO3Ep for ; Sun, 19 Jun 2011 05:13:41 -0700 (PDT) Received: (qmail 16932 invoked for bounce); 19 Jun 2011 14:11:09 +0200 Date: 19 Jun 2011 14:11:09 +0200 From: MAILER-DAEMON@cl-t105-140cl.privatedns.com To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: failure notice Subject: failure notice X-Barracuda-Connect: server.mediahostingpro.com[67.205.124.75] X-Barracuda-Start-Time: 1308485621 Message-Id: <20110619121341.724F01E4B683@cuda.sgi.com> X-Barracuda-Bayes: INNOCENT GLOBAL 0.5015 1.0000 0.7500 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.39 X-Barracuda-Spam-Status: No, SCORE=1.39 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=ANY_BOUNCE_MESSAGE, BOUNCE_MESSAGE, BSF_RULE7568M, BSF_SC0_MISSING_MID, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66504 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 0.14 BSF_SC0_MISSING_MID BODY: Custom Rule BSF_SC0_MISSING_MID 0.50 BSF_RULE7568M Custom Rule 7568M 0.00 BOUNCE_MESSAGE MTA bounce message 0.00 ANY_BOUNCE_MESSAGE Message is some kind of bounce message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi. This is the qmail-send program at cl-t105-140cl.privatedns.com. I'm afraid I wasn't able to deliver your message to the following addresses. This is a permanent error; I've given up. Sorry it didn't work out. : Sorry. Although I'm listed as a best-preference MX or A for that host, it isn't in my control/locals file, so I don't treat it as local. (#5.4.6) --- Below this line is a copy of the message. Return-Path: Received: (qmail 16929 invoked from network); 19 Jun 2011 14:11:09 +0200 Received: from localhost (HELO server.mediahostingpro.com) (127.0.0.1) by localhost with SMTP; 19 Jun 2011 14:11:09 +0200 Date: Sun, 19 Jun 2011 14:11:09 +0200 From: Google Tips Reply-To: Google Tips X-Priority: 3 Message-ID: <01cc2e79.404438bb@server.mediahostingpro.com> To: Subject: Prussian, a MIME-Version: 1.0 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit Forfluo

Google.com © 2011
From adi@hexapodia.org Sun Jun 19 16:49:49 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_28 autolearn=no version=3.4.0-r929098 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 p5JLnnaT075545 for ; Sun, 19 Jun 2011 16:49:49 -0500 X-ASG-Debug-ID: 1308520188-1549020b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from straum.hexapodia.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9C02A51E99B for ; Sun, 19 Jun 2011 14:49:48 -0700 (PDT) Received: from straum.hexapodia.org (straum.hexapodia.org [207.7.131.186]) by cuda.sgi.com with ESMTP id rfqGvnL5Nti99i8a for ; Sun, 19 Jun 2011 14:49:48 -0700 (PDT) Received: by straum.hexapodia.org (Postfix, from userid 22448) id 4FE2F444D; Sun, 19 Jun 2011 14:50:39 -0700 (PDT) Date: Sun, 19 Jun 2011 14:50:39 -0700 From: Andy Isaacson To: xfs@oss.sgi.com X-ASG-Orig-Subj: ENOSPC but df and df -i show free space Subject: ENOSPC but df and df -i show free space Message-ID: <20110619215039.GA17820@hexapodia.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Old-GPG-Fingerprint: 1914 0645 FD53 C18E EEEF C402 4A69 B1F3 68D2 A63F X-GPG-Fingerprint: A5FC 6141 F76D B6B1 C81F 0FB7 AFA0 A45F ED3D 116D X-GPG-Key-URL: http://web.hexapodia.org/~adi/gpg.txt X-Domestic-Surveillance: money launder bomb tax evasion User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: straum.hexapodia.org[207.7.131.186] X-Barracuda-Start-Time: 1308520188 X-Barracuda-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.2.66542 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 % touch /d1/tmp/foo touch: cannot touch `/d1/tmp/foo': No space left on device % df /d1 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/vg0-d1 943616000 904690332 38925668 96% /d1 % df -i /d1 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/mapper/vg0-d1 167509008 11806336 155702672 8% /d1 % sudo xfs_growfs -n /d1 meta-data=/dev/mapper/vg0-d1 isize=256 agcount=18, agsize=13107200 blks = sectsz=512 attr=2 data = bsize=4096 blocks=235929600, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=25600, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 % grep d1 /proc/mounts /dev/mapper/vg0-d1 /d1 xfs rw,relatime,attr2,noquota 0 0 Obviously I'm missing something, but what? Nothing relevant in dmesg that I can see. The filesystem started out at 200 GB and has been xfs_growfs'd in 100GB increments up to its current size of 900 GB. x86_64 2.6.38-rc3-00019-gafe8a88 on a quad-core i7 with 12GB RAM, on DM on AHCI SATA. -andy From david@fromorbit.com Sun Jun 19 17:18:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_28 autolearn=no version=3.4.0-r929098 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 p5JMIwPR076798 for ; Sun, 19 Jun 2011 17:18:58 -0500 X-ASG-Debug-ID: 1308521935-6de201f10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1CA7A171E051 for ; Sun, 19 Jun 2011 15:18:55 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id IEkPxWUsGmKqZR2T for ; Sun, 19 Jun 2011 15:18:55 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqwDAA51/k15LCoegWdsb2JhbABSplsVAQEWJiWIc74RDoYcBKFx Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail07.adl2.internode.on.net with ESMTP; 20 Jun 2011 07:48:54 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QYQKS-00056b-GW; Mon, 20 Jun 2011 08:18:52 +1000 Date: Mon, 20 Jun 2011 08:18:52 +1000 From: Dave Chinner To: Andy Isaacson Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: ENOSPC but df and df -i show free space Subject: Re: ENOSPC but df and df -i show free space Message-ID: <20110619221852.GH561@dastard> References: <20110619215039.GA17820@hexapodia.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110619215039.GA17820@hexapodia.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1308521937 X-Barracuda-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.2.66544 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 On Sun, Jun 19, 2011 at 02:50:39PM -0700, Andy Isaacson wrote: > % touch /d1/tmp/foo > touch: cannot touch `/d1/tmp/foo': No space left on device > % df /d1 > Filesystem 1K-blocks Used Available Use% Mounted on > /dev/mapper/vg0-d1 943616000 904690332 38925668 96% /d1 Problems like this will occur if you run your filesystem at > 85-90% full for extented periods.... > % df -i /d1 > Filesystem Inodes IUsed IFree IUse% Mounted on > /dev/mapper/vg0-d1 167509008 11806336 155702672 8% /d1 > % sudo xfs_growfs -n /d1 > meta-data=/dev/mapper/vg0-d1 isize=256 agcount=18, agsize=13107200 blks > = sectsz=512 attr=2 > data = bsize=4096 blocks=235929600, imaxpct=25 > = sunit=0 swidth=0 blks > naming =version 2 bsize=4096 ascii-ci=0 > log =internal bsize=4096 blocks=25600, version=2 > = sectsz=512 sunit=0 blks, lazy-count=1 > realtime =none extsz=4096 blocks=0, rtextents=0 > % grep d1 /proc/mounts > /dev/mapper/vg0-d1 /d1 xfs rw,relatime,attr2,noquota 0 0 > > Obviously I'm missing something, but what? Most likely is that you have no contiguous free space large enough to create a new inode chunk. using xfs_db to dump the freespace size histogram will tell you if this is the case or not. > Nothing relevant in dmesg that I can see. The filesystem started out at > 200 GB and has been xfs_growfs'd in 100GB increments up to its current > size of 900 GB. Ugh. Sounds like you've been running the filesystem near full for it's entire life.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Jun 19 17:24:51 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5JMOpmi076999 for ; Sun, 19 Jun 2011 17:24:51 -0500 X-ASG-Debug-ID: 1308522289-162c005d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 350A8DDCD0E for ; Sun, 19 Jun 2011 15:24:49 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id aOLhgX7MmNG22LWX for ; Sun, 19 Jun 2011 15:24:49 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqwDAA51/k15LCoegWdsb2JhbABSplsVAQEWJiWIc74RDoYcBKFx Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail07.adl2.internode.on.net with ESMTP; 20 Jun 2011 07:54:48 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QYQQB-000579-Sx; Mon, 20 Jun 2011 08:24:47 +1000 Date: Mon, 20 Jun 2011 08:24:47 +1000 From: Dave Chinner To: Markus Trippelsdorf Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110619222447.GI561@dastard> References: <20110618141950.GA1685@x4.trippels.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110618141950.GA1685@x4.trippels.de> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1308522290 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66545 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, Jun 18, 2011 at 04:19:50PM +0200, Markus Trippelsdorf wrote: > Running the latest git kernel (3.0-rc3) my machine hangs for long > periods (1-2 sec) whenever I delete a large directory recursively on my > xfs partition. During the hang I cannot move the mouse pointer or use > the keyboard (but the music keeps playing without stuttering). A quick > way to reproduce is to "rm -fr" a kernel tree. So what is the system doing when it "hangs"? Is it CPU bound (e.g. cpu scheduler issue)? Is the system running out of memory and stalling everything in memory reclaim? What IO is occurring? > This happens on a 4kb SATA hard drive: How does this appear to the OS? as a 512/512, 512/4k or 4k/4k logical/physical sector size drive? > xfs_info /var > meta-data=/dev/sda1 isize=256 agcount=4, agsize=12800000 blks > = sectsz=4096 attr=2 > data = bsize=4096 blocks=51200000, imaxpct=25 > = sunit=0 swidth=0 blks > naming =version 2 bsize=4096 ascii-ci=0 > log =internal bsize=4096 blocks=25000, version=2 > = sectsz=4096 sunit=1 blks, lazy-count=1 > realtime =none extsz=4096 blocks=0, rtextents=0 > > /dev/sda1 on /var type xfs (rw,noatime,attr2,delaylog,logbsize=256k,noquota) Is your partition correctly sector aligned for however your drive maps it's 4k sectors? Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Jun 19 17:27:27 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5JMRRNs077121 for ; Sun, 19 Jun 2011 17:27:27 -0500 X-ASG-Debug-ID: 1308522444-6a3f03dc0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A38DF1349CA3 for ; Sun, 19 Jun 2011 15:27:25 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id jc4bv8LFv09HG2fG for ; Sun, 19 Jun 2011 15:27:25 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqwDAA51/k15LCoegWdsb2JhbABSplsVAQEWJiXHBA6GHAShcQ Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail07.adl2.internode.on.net with ESMTP; 20 Jun 2011 07:57:24 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QYQSh-00057N-Aq; Mon, 20 Jun 2011 08:27:23 +1000 Date: Mon, 20 Jun 2011 08:27:23 +1000 From: Dave Chinner To: Eric Sandeen Cc: Christoph Hellwig , Trammell Hudson , Sean Noonan , Martin Bligh , Ian Baum , Stephen Degler , "'linux-xfs@oss.sgi.com'" X-ASG-Orig-Subj: Re: sparse file handling bug in XFS Subject: Re: sparse file handling bug in XFS Message-ID: <20110619222723.GJ561@dastard> References: <081DDE43F61F3D43929A181B477DCA95639B561F@MSXAOA6.twosigma.com> <4DFA2A76.6000104@sandeen.net> <4DFA3E7D.4030408@sandeen.net> <20110616175743.GA20570@infradead.org> <4DFA70B7.5080206@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DFA70B7.5080206@sandeen.net> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1308522446 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66545 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, Jun 16, 2011 at 04:08:07PM -0500, Eric Sandeen wrote: > On 6/16/11 12:57 PM, Christoph Hellwig wrote: > > On Thu, Jun 16, 2011 at 12:33:49PM -0500, Eric Sandeen wrote: > >> Actually this looks like it's a result of > >> > >> 6e857567dbbfe14dd6cc3f7414671b047b1ff5c7 xfs: don't truncate prealloc from frequently accessed inodes > >> > >> I thought Dave's patch from the "Re: drastic changes to allocsize semantics in or around 2.6.38?" > >> thread would fix it, but it doesn't seem to. Here it is anyway ;) > > > > It should fix the thing about the preallocation staying when removing > > and recreating the file. Keeping pre-allocate blocks around otherwise > > is a considered a feature. > > It strikes me as odd that truncating & rewriting would lead to > different preallocation though .. I'll let Dave chime in. Yeah, it's an oversight - we should reset the XFS_IDIRTY_RELEASE flag when we set the XFS_ITRUNCATED flag. We remove the preallocation beyond EOF when we truncate, so we should also trash the state that tries to preserve it at the same time.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From adi@hexapodia.org Sun Jun 19 17:57:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_28 autolearn=no version=3.4.0-r929098 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 p5JMviZ5079196 for ; Sun, 19 Jun 2011 17:57:44 -0500 X-ASG-Debug-ID: 1308524263-4fdb01080000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from straum.hexapodia.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 611BE51E974 for ; Sun, 19 Jun 2011 15:57:43 -0700 (PDT) Received: from straum.hexapodia.org (straum.hexapodia.org [207.7.131.186]) by cuda.sgi.com with ESMTP id NdTmq4w34CgxQrTL for ; Sun, 19 Jun 2011 15:57:43 -0700 (PDT) Received: by straum.hexapodia.org (Postfix, from userid 22448) id F3609444D; Sun, 19 Jun 2011 15:58:34 -0700 (PDT) Date: Sun, 19 Jun 2011 15:58:34 -0700 From: Andy Isaacson To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: ENOSPC but df and df -i show free space Subject: Re: ENOSPC but df and df -i show free space Message-ID: <20110619225834.GY21778@hexapodia.org> References: <20110619215039.GA17820@hexapodia.org> <20110619221852.GH561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110619221852.GH561@dastard> X-Old-GPG-Fingerprint: 1914 0645 FD53 C18E EEEF C402 4A69 B1F3 68D2 A63F X-GPG-Fingerprint: A5FC 6141 F76D B6B1 C81F 0FB7 AFA0 A45F ED3D 116D X-GPG-Key-URL: http://web.hexapodia.org/~adi/gpg.txt X-Domestic-Surveillance: money launder bomb tax evasion User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: straum.hexapodia.org[207.7.131.186] X-Barracuda-Start-Time: 1308524263 X-Barracuda-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.2.66548 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 On Mon, Jun 20, 2011 at 08:18:52AM +1000, Dave Chinner wrote: > > % touch /d1/tmp/foo > > touch: cannot touch `/d1/tmp/foo': No space left on device > > % df /d1 > > Filesystem 1K-blocks Used Available Use% Mounted on > > /dev/mapper/vg0-d1 943616000 904690332 38925668 96% /d1 > > Problems like this will occur if you run your filesystem at > 85-90% > full for extented periods.... Ah, yes, that's definitely been the case. I grow the filesystem when it hits 95% utilization or thereabouts. Hadn't realized that's such an awful use case for xfs. > > % df -i /d1 > > Filesystem Inodes IUsed IFree IUse% Mounted on > > /dev/mapper/vg0-d1 167509008 11806336 155702672 8% /d1 > > % sudo xfs_growfs -n /d1 > > meta-data=/dev/mapper/vg0-d1 isize=256 agcount=18, agsize=13107200 blks > > = sectsz=512 attr=2 > > data = bsize=4096 blocks=235929600, imaxpct=25 > > = sunit=0 swidth=0 blks > > naming =version 2 bsize=4096 ascii-ci=0 > > log =internal bsize=4096 blocks=25600, version=2 > > = sectsz=512 sunit=0 blks, lazy-count=1 > > realtime =none extsz=4096 blocks=0, rtextents=0 > > % grep d1 /proc/mounts > > /dev/mapper/vg0-d1 /d1 xfs rw,relatime,attr2,noquota 0 0 > > > > Obviously I'm missing something, but what? > > Most likely is that you have no contiguous free space large enough > to create a new inode chunk. using xfs_db to dump the freespace > size histogram will tell you if this is the case or not. % sudo xfs_db -c freesp /dev/vg0/d1 from to extents blocks pct 1 1 168504 168504 1.71 2 3 446 1135 0.01 4 7 5550 37145 0.38 8 15 49159 524342 5.33 16 31 1383 29223 0.30 2097152 4194303 1 2931455 29.78 4194304 8388607 1 6150953 62.49 I don't really grok that output. -andy From david@fromorbit.com Sun Jun 19 18:23:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_28 autolearn=no version=3.4.0-r929098 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 p5JNNiQo081634 for ; Sun, 19 Jun 2011 18:23:44 -0500 X-ASG-Debug-ID: 1308525822-4bbd02630000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 68F3A51EA27 for ; Sun, 19 Jun 2011 16:23:42 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id Lo7YvLWacJ7XTRoV for ; Sun, 19 Jun 2011 16:23:42 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqwDAIWD/k15LCoegWdsb2JhbABSplsVAQEWJiXHKQ6GHAShcQ Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail07.adl2.internode.on.net with ESMTP; 20 Jun 2011 08:53:41 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QYRL9-0005Bu-Rs; Mon, 20 Jun 2011 09:23:39 +1000 Date: Mon, 20 Jun 2011 09:23:39 +1000 From: Dave Chinner To: Andy Isaacson Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: ENOSPC but df and df -i show free space Subject: Re: ENOSPC but df and df -i show free space Message-ID: <20110619232339.GK561@dastard> References: <20110619215039.GA17820@hexapodia.org> <20110619221852.GH561@dastard> <20110619225834.GY21778@hexapodia.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110619225834.GY21778@hexapodia.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1308525823 X-Barracuda-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.2.66550 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 On Sun, Jun 19, 2011 at 03:58:34PM -0700, Andy Isaacson wrote: > On Mon, Jun 20, 2011 at 08:18:52AM +1000, Dave Chinner wrote: > > > % touch /d1/tmp/foo > > > touch: cannot touch `/d1/tmp/foo': No space left on device > > > % df /d1 > > > Filesystem 1K-blocks Used Available Use% Mounted on > > > /dev/mapper/vg0-d1 943616000 904690332 38925668 96% /d1 > > > > Problems like this will occur if you run your filesystem at > 85-90% > > full for extented periods.... > > Ah, yes, that's definitely been the case. I grow the filesystem when it > hits 95% utilization or thereabouts. Hadn't realized that's such an > awful use case for xfs. No allocation algorithm is perfect in all circumstances. The alogrithms in XFS tend to degrade when large contiguous freespace regions are not available, resulting in more fragmentation of data extents and subsequent freespace fragmentation when those files are removed or defragmented. The algorithms will recover if you free up enough space that large contiguous freespace extents re-form, but that can require removing a large amount of data.... > > > % df -i /d1 > > > Filesystem Inodes IUsed IFree IUse% Mounted on > > > /dev/mapper/vg0-d1 167509008 11806336 155702672 8% /d1 > > > % sudo xfs_growfs -n /d1 > > > meta-data=/dev/mapper/vg0-d1 isize=256 agcount=18, agsize=13107200 blks > > > = sectsz=512 attr=2 > > > data = bsize=4096 blocks=235929600, imaxpct=25 > > > = sunit=0 swidth=0 blks > > > naming =version 2 bsize=4096 ascii-ci=0 > > > log =internal bsize=4096 blocks=25600, version=2 > > > = sectsz=512 sunit=0 blks, lazy-count=1 > > > realtime =none extsz=4096 blocks=0, rtextents=0 > > > % grep d1 /proc/mounts > > > /dev/mapper/vg0-d1 /d1 xfs rw,relatime,attr2,noquota 0 0 > > > > > > Obviously I'm missing something, but what? > > > > Most likely is that you have no contiguous free space large enough > > to create a new inode chunk. using xfs_db to dump the freespace > > size histogram will tell you if this is the case or not. > > % sudo xfs_db -c freesp /dev/vg0/d1 > from to extents blocks pct > 1 1 168504 168504 1.71 > 2 3 446 1135 0.01 > 4 7 5550 37145 0.38 > 8 15 49159 524342 5.33 > 16 31 1383 29223 0.30 > 2097152 4194303 1 2931455 29.78 > 4194304 8388607 1 6150953 62.49 > > I don't really grok that output. It's the historgram of free space extent sizes. You have 168504 single free block regions (4k in size) in the filesystem, 446 between 8k and 12k (2-3 blocks), etc. Inode allocation requires aligned 16k allocations (64x256 byte inodes), so you need free extents in the 4-7 block range or larger, which you appear to have so it should not be failing. Did you dump this histogram while touch was giving ENOSPC errors? Also, it might be worthwhile dumping the per-ag histograms (use a for loop and the "freesp -a " command) - it may be that certain AGs are out of contiguous freespace and that is causing the issue... FWIW, you shoul drun "echo 1 > /proc/sys/vm/drop_caches" before running the xfsdb comand so that it is not reading stale metadata from cache... Cheers, Dave. -- Dave Chinner david@fromorbit.com From adi@hexapodia.org Sun Jun 19 18:54:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_28 autolearn=no version=3.4.0-r929098 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 p5JNsSn5087418 for ; Sun, 19 Jun 2011 18:54:29 -0500 X-ASG-Debug-ID: 1308527667-551700590000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from straum.hexapodia.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2336BDDBCC7 for ; Sun, 19 Jun 2011 16:54:27 -0700 (PDT) Received: from straum.hexapodia.org (straum.hexapodia.org [207.7.131.186]) by cuda.sgi.com with ESMTP id zRjpjToY4Qu85drj for ; Sun, 19 Jun 2011 16:54:27 -0700 (PDT) Received: by straum.hexapodia.org (Postfix, from userid 22448) id E52BF444D; Sun, 19 Jun 2011 16:55:18 -0700 (PDT) Date: Sun, 19 Jun 2011 16:55:18 -0700 From: Andy Isaacson To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: ENOSPC but df and df -i show free space Subject: Re: ENOSPC but df and df -i show free space Message-ID: <20110619235518.GA21778@hexapodia.org> References: <20110619215039.GA17820@hexapodia.org> <20110619221852.GH561@dastard> <20110619225834.GY21778@hexapodia.org> <20110619232339.GK561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110619232339.GK561@dastard> X-Old-GPG-Fingerprint: 1914 0645 FD53 C18E EEEF C402 4A69 B1F3 68D2 A63F X-GPG-Fingerprint: A5FC 6141 F76D B6B1 C81F 0FB7 AFA0 A45F ED3D 116D X-GPG-Key-URL: http://web.hexapodia.org/~adi/gpg.txt X-Domestic-Surveillance: money launder bomb tax evasion User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: straum.hexapodia.org[207.7.131.186] X-Barracuda-Start-Time: 1308527668 X-Barracuda-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.2.66551 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 On Mon, Jun 20, 2011 at 09:23:39AM +1000, Dave Chinner wrote: > No allocation algorithm is perfect in all circumstances. The > alogrithms in XFS tend to degrade when large contiguous freespace > regions are not available, resulting in more fragmentation of data > extents and subsequent freespace fragmentation when those files are > removed or defragmented. The algorithms will recover if you free up > enough space that large contiguous freespace extents re-form, but > that can require removing a large amount of data.... Thanks for the background explanation! > > > > % df -i /d1 > > > > Filesystem Inodes IUsed IFree IUse% Mounted on > > > > /dev/mapper/vg0-d1 167509008 11806336 155702672 8% /d1 > > > > % sudo xfs_growfs -n /d1 > > > > meta-data=/dev/mapper/vg0-d1 isize=256 agcount=18, agsize=13107200 blks > > > > = sectsz=512 attr=2 > > > > data = bsize=4096 blocks=235929600, imaxpct=25 > > > > = sunit=0 swidth=0 blks > > > > naming =version 2 bsize=4096 ascii-ci=0 > > > > log =internal bsize=4096 blocks=25600, version=2 > > > > = sectsz=512 sunit=0 blks, lazy-count=1 > > > > realtime =none extsz=4096 blocks=0, rtextents=0 > > > > % grep d1 /proc/mounts > > > > /dev/mapper/vg0-d1 /d1 xfs rw,relatime,attr2,noquota 0 0 > > > > > > > > Obviously I'm missing something, but what? > > > > > > Most likely is that you have no contiguous free space large enough > > > to create a new inode chunk. using xfs_db to dump the freespace > > > size histogram will tell you if this is the case or not. > > > > % sudo xfs_db -c freesp /dev/vg0/d1 > > from to extents blocks pct > > 1 1 168504 168504 1.71 > > 2 3 446 1135 0.01 > > 4 7 5550 37145 0.38 > > 8 15 49159 524342 5.33 > > 16 31 1383 29223 0.30 > > 2097152 4194303 1 2931455 29.78 > > 4194304 8388607 1 6150953 62.49 > > > > I don't really grok that output. > > It's the historgram of free space extent sizes. You have 168504 > single free block regions (4k in size) in the filesystem, 446 > between 8k and 12k (2-3 blocks), etc. Ah, OK! Now it makes sense. > Inode allocation requires aligned 16k allocations (64x256 byte > inodes), so you need free extents in the 4-7 block range or larger, > which you appear to have so it should not be failing. Did you dump > this histogram while touch was giving ENOSPC errors? Yes, that was before I grew the filesystem again to get back to a working state. I killed all the processes using the filesystem, unmounted it, and ran xfs_db. > Also, it might be worthwhile dumping the per-ag histograms (use a > for loop and the "freesp -a " command) - it may be that certain > AGs are out of contiguous freespace and that is causing the issue... I've now grown the filesystem again to get it back into a working state; it's obviously not "production" per se given my janky configuration, but it is more convenient if I can create files. :) It's a shame that we lost the chance to do more debugging though. > FWIW, you shoul drun "echo 1 > /proc/sys/vm/drop_caches" before > running the xfsdb comand so that it is not reading stale metadata > from cache... I unmounted the filesystem before running xfs_db, so it should be fine. Didn't even occur to me that it might work to run xfs_db on a block device that's mounted and active... I did notice that the unmount command took a minute or two to complete. -andy From kosaki.motohiro@jp.fujitsu.com Sun Jun 19 19:44:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5K0isUB094934 for ; Sun, 19 Jun 2011 19:44:55 -0500 X-ASG-Debug-ID: 1308530689-10f901860000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from fgwmail6.fujitsu.co.jp (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 22A4351EBE0 for ; Sun, 19 Jun 2011 17:44:51 -0700 (PDT) Received: from fgwmail6.fujitsu.co.jp (fgwmail6.fujitsu.co.jp [192.51.44.36]) by cuda.sgi.com with ESMTP id rNfPiDsSKLRWvv9B for ; Sun, 19 Jun 2011 17:44:51 -0700 (PDT) Received: from m2.gw.fujitsu.co.jp (unknown [10.0.50.72]) by fgwmail6.fujitsu.co.jp (Postfix) with ESMTP id 3B60A3EE0B5 for ; Mon, 20 Jun 2011 09:44:44 +0900 (JST) Received: from smail (m2 [127.0.0.1]) by outgoing.m2.gw.fujitsu.co.jp (Postfix) with ESMTP id 1D0E045DE72 for ; Mon, 20 Jun 2011 09:44:44 +0900 (JST) Received: from s2.gw.fujitsu.co.jp (s2.gw.fujitsu.co.jp [10.0.50.92]) by m2.gw.fujitsu.co.jp (Postfix) with ESMTP id 0044E45DE6A for ; Mon, 20 Jun 2011 09:44:44 +0900 (JST) Received: from s2.gw.fujitsu.co.jp (localhost.localdomain [127.0.0.1]) by s2.gw.fujitsu.co.jp (Postfix) with ESMTP id CC966E08001 for ; Mon, 20 Jun 2011 09:44:43 +0900 (JST) Received: from ml13.s.css.fujitsu.com (ml13.s.css.fujitsu.com [10.240.81.133]) by s2.gw.fujitsu.co.jp (Postfix) with ESMTP id 3CA9DE08003 for ; Mon, 20 Jun 2011 09:44:43 +0900 (JST) Received: from ml13.css.fujitsu.com (ml13 [127.0.0.1]) by ml13.s.css.fujitsu.com (Postfix) with ESMTP id 0D0ABFD0004; Mon, 20 Jun 2011 09:44:43 +0900 (JST) Received: from [127.0.0.1] (unknown [10.124.101.131]) by ml13.s.css.fujitsu.com (Postfix) with ESMTP id 8A8C8FD0003; Mon, 20 Jun 2011 09:44:42 +0900 (JST) X-SecurityPolicyCheck-FJ: OK by FujitsuOutboundMailChecker v1.3.1 Received: from KOSANOTE2[10.124.101.131] by KOSANOTE2 (FujitsuOutboundMailChecker v1.3.1/9992[10.124.101.131]); Mon, 20 Jun 2011 09:44:48 +0900 (JST) Message-ID: <4DFE97F1.2030206@jp.fujitsu.com> Date: Mon, 20 Jun 2011 09:44:33 +0900 From: KOSAKI Motohiro User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.17) Gecko/20110414 Lightning/1.0b2 Thunderbird/3.1.10 MIME-Version: 1.0 To: david@fromorbit.com CC: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 01/12] vmscan: add shrink_slab tracepoints Subject: Re: [PATCH 01/12] vmscan: add shrink_slab tracepoints References: <1306998067-27659-1-git-send-email-david@fromorbit.com> <1306998067-27659-2-git-send-email-david@fromorbit.com> In-Reply-To: <1306998067-27659-2-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: fgwmail6.fujitsu.co.jp[192.51.44.36] X-Barracuda-Start-Time: 1308530693 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0055 1.0000 -1.9849 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.2.66554 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 (2011/06/02 16:00), Dave Chinner wrote: > From: Dave Chinner > > Іt is impossible to understand what the shrinkers are actually doing > without instrumenting the code, so add a some tracepoints to allow > insight to be gained. > > Signed-off-by: Dave Chinner > --- > include/trace/events/vmscan.h | 67 +++++++++++++++++++++++++++++++++++++++++ > mm/vmscan.c | 6 +++- > 2 files changed, 72 insertions(+), 1 deletions(-) This look good to me. I have two minor request. 1) please change patch order, move this patch after shrinker changes. iow, now both this and [2/12] have tracepoint change. I don't like it. 2) please avoid cryptic abbreviated variable names. Instead, please just use the same variable name with vmscan.c source code. From kosaki.motohiro@jp.fujitsu.com Sun Jun 19 19:47:06 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5K0l6kT095123 for ; Sun, 19 Jun 2011 19:47:06 -0500 X-ASG-Debug-ID: 1308530823-173303690000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from fgwmail6.fujitsu.co.jp (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4514D1B3171E for ; Sun, 19 Jun 2011 17:47:04 -0700 (PDT) Received: from fgwmail6.fujitsu.co.jp (fgwmail6.fujitsu.co.jp [192.51.44.36]) by cuda.sgi.com with ESMTP id RYkBrSLUNCvaI30E for ; Sun, 19 Jun 2011 17:47:04 -0700 (PDT) Received: from m1.gw.fujitsu.co.jp (unknown [10.0.50.71]) by fgwmail6.fujitsu.co.jp (Postfix) with ESMTP id 36C273EE0B5 for ; Mon, 20 Jun 2011 09:46:57 +0900 (JST) Received: from smail (m1 [127.0.0.1]) by outgoing.m1.gw.fujitsu.co.jp (Postfix) with ESMTP id F110145DE5A for ; Mon, 20 Jun 2011 09:46:56 +0900 (JST) Received: from s1.gw.fujitsu.co.jp (s1.gw.fujitsu.co.jp [10.0.50.91]) by m1.gw.fujitsu.co.jp (Postfix) with ESMTP id CE5AF45DE58 for ; Mon, 20 Jun 2011 09:46:56 +0900 (JST) Received: from s1.gw.fujitsu.co.jp (localhost.localdomain [127.0.0.1]) by s1.gw.fujitsu.co.jp (Postfix) with ESMTP id B949B1DB803F for ; Mon, 20 Jun 2011 09:46:56 +0900 (JST) Received: from ml14.s.css.fujitsu.com (ml14.s.css.fujitsu.com [10.240.81.134]) by s1.gw.fujitsu.co.jp (Postfix) with ESMTP id 805441DB8051 for ; Mon, 20 Jun 2011 09:46:56 +0900 (JST) Received: from ml14.css.fujitsu.com (ml14 [127.0.0.1]) by ml14.s.css.fujitsu.com (Postfix) with ESMTP id 4A3569F6FCC; Mon, 20 Jun 2011 09:46:56 +0900 (JST) Received: from [127.0.0.1] (unknown [10.124.101.131]) by ml14.s.css.fujitsu.com (Postfix) with ESMTP id BE6519F6FEF; Mon, 20 Jun 2011 09:46:55 +0900 (JST) X-SecurityPolicyCheck-FJ: OK by FujitsuOutboundMailChecker v1.3.1 Received: from KOSANOTE2[10.124.101.131] by KOSANOTE2 (FujitsuOutboundMailChecker v1.3.1/9992[10.124.101.131]); Mon, 20 Jun 2011 09:47:02 +0900 (JST) Message-ID: <4DFE987E.1070900@jp.fujitsu.com> Date: Mon, 20 Jun 2011 09:46:54 +0900 From: KOSAKI Motohiro User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.17) Gecko/20110414 Lightning/1.0b2 Thunderbird/3.1.10 MIME-Version: 1.0 To: david@fromorbit.com CC: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 02/12] vmscan: shrinker->nr updates race and go wrong Subject: Re: [PATCH 02/12] vmscan: shrinker->nr updates race and go wrong References: <1306998067-27659-1-git-send-email-david@fromorbit.com> <1306998067-27659-3-git-send-email-david@fromorbit.com> In-Reply-To: <1306998067-27659-3-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit X-Barracuda-Connect: fgwmail6.fujitsu.co.jp[192.51.44.36] X-Barracuda-Start-Time: 1308530825 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0004 1.0000 -2.0183 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=ISO2022JP_CHARSET X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66554 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 ISO2022JP_CHARSET ISO-2022-JP message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > diff --git a/mm/vmscan.c b/mm/vmscan.c > index 48e3fbd..dce2767 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -251,17 +251,29 @@ unsigned long shrink_slab(struct shrink_control *shrink, > unsigned long total_scan; > unsigned long max_pass; > int shrink_ret = 0; > + long nr; > + long new_nr; > > + /* > + * copy the current shrinker scan count into a local variable > + * and zero it so that other concurrent shrinker invocations > + * don't also do this scanning work. > + */ > + do { > + nr = shrinker->nr; > + } while (cmpxchg(&shrinker->nr, nr, 0) != nr); > + > + total_scan = nr; > max_pass = do_shrinker_shrink(shrinker, shrink, 0); > delta = (4 * nr_pages_scanned) / shrinker->seeks; > delta *= max_pass; > do_div(delta, lru_pages + 1); > - shrinker->nr += delta; > - if (shrinker->nr < 0) { > + total_scan += delta; > + if (total_scan < 0) { > printk(KERN_ERR "shrink_slab: %pF negative objects to " > "delete nr=%ld\n", > - shrinker->shrink, shrinker->nr); > - shrinker->nr = max_pass; > + shrinker->shrink, total_scan); > + total_scan = max_pass; > } > > /* > @@ -269,13 +281,11 @@ unsigned long shrink_slab(struct shrink_control *shrink, > * never try to free more than twice the estimate number of > * freeable entries. > */ > - if (shrinker->nr > max_pass * 2) > - shrinker->nr = max_pass * 2; > + if (total_scan > max_pass * 2) > + total_scan = max_pass * 2; > > - total_scan = shrinker->nr; > - shrinker->nr = 0; > > - trace_mm_shrink_slab_start(shrinker, shrink, nr_pages_scanned, > + trace_mm_shrink_slab_start(shrinker, shrink, nr, nr_pages_scanned, > lru_pages, max_pass, delta, total_scan); > > while (total_scan >= SHRINK_BATCH) { > @@ -295,8 +305,19 @@ unsigned long shrink_slab(struct shrink_control *shrink, > cond_resched(); > } > > - shrinker->nr += total_scan; > - trace_mm_shrink_slab_end(shrinker, shrink_ret, total_scan); > + /* > + * move the unused scan count back into the shrinker in a > + * manner that handles concurrent updates. If we exhausted the > + * scan, there is no need to do an update. > + */ > + do { > + nr = shrinker->nr; > + new_nr = total_scan + nr; > + if (total_scan <= 0) > + break; > + } while (cmpxchg(&shrinker->nr, nr, new_nr) != nr); > + > + trace_mm_shrink_slab_end(shrinker, shrink_ret, nr, new_nr); > } > up_read(&shrinker_rwsem); > out: Looks great fix. Please remove tracepoint change from this patch and send it to -stable. iow, I expect I'll ack your next spin. thanks. From kosaki.motohiro@jp.fujitsu.com Sun Jun 19 19:51:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5K0pGGE095448 for ; Sun, 19 Jun 2011 19:51:17 -0500 X-ASG-Debug-ID: 1308531073-4510035f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from fgwmail6.fujitsu.co.jp (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 165B3DDE42D for ; Sun, 19 Jun 2011 17:51:13 -0700 (PDT) Received: from fgwmail6.fujitsu.co.jp (fgwmail6.fujitsu.co.jp [192.51.44.36]) by cuda.sgi.com with ESMTP id isCphxldL3sG1H3d for ; Sun, 19 Jun 2011 17:51:13 -0700 (PDT) Received: from m2.gw.fujitsu.co.jp (unknown [10.0.50.72]) by fgwmail6.fujitsu.co.jp (Postfix) with ESMTP id 9B0F53EE0C7 for ; Mon, 20 Jun 2011 09:51:09 +0900 (JST) Received: from smail (m2 [127.0.0.1]) by outgoing.m2.gw.fujitsu.co.jp (Postfix) with ESMTP id 73DB545DE6A for ; Mon, 20 Jun 2011 09:51:09 +0900 (JST) Received: from s2.gw.fujitsu.co.jp (s2.gw.fujitsu.co.jp [10.0.50.92]) by m2.gw.fujitsu.co.jp (Postfix) with ESMTP id 5ACFF45DE69 for ; Mon, 20 Jun 2011 09:51:09 +0900 (JST) Received: from s2.gw.fujitsu.co.jp (localhost.localdomain [127.0.0.1]) by s2.gw.fujitsu.co.jp (Postfix) with ESMTP id 476111DB803C for ; Mon, 20 Jun 2011 09:51:09 +0900 (JST) Received: from ml14.s.css.fujitsu.com (ml14.s.css.fujitsu.com [10.240.81.134]) by s2.gw.fujitsu.co.jp (Postfix) with ESMTP id 020011DB8042 for ; Mon, 20 Jun 2011 09:51:09 +0900 (JST) Received: from ml14.css.fujitsu.com (ml14 [127.0.0.1]) by ml14.s.css.fujitsu.com (Postfix) with ESMTP id CA84E9F7000; Mon, 20 Jun 2011 09:51:08 +0900 (JST) Received: from [127.0.0.1] (unknown [10.124.101.131]) by ml14.s.css.fujitsu.com (Postfix) with ESMTP id 53BF69F6FEF; Mon, 20 Jun 2011 09:51:08 +0900 (JST) X-SecurityPolicyCheck-FJ: OK by FujitsuOutboundMailChecker v1.3.1 Received: from KOSANOTE2[10.124.101.131] by KOSANOTE2 (FujitsuOutboundMailChecker v1.3.1/9992[10.124.101.131]); Mon, 20 Jun 2011 09:51:15 +0900 (JST) Message-ID: <4DFE997C.2060805@jp.fujitsu.com> Date: Mon, 20 Jun 2011 09:51:08 +0900 From: KOSAKI Motohiro User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.17) Gecko/20110414 Lightning/1.0b2 Thunderbird/3.1.10 MIME-Version: 1.0 To: david@fromorbit.com CC: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 03/12] vmscan: reduce wind up shrinker->nr when shrinker can't do work Subject: Re: [PATCH 03/12] vmscan: reduce wind up shrinker->nr when shrinker can't do work References: <1306998067-27659-1-git-send-email-david@fromorbit.com> <1306998067-27659-4-git-send-email-david@fromorbit.com> In-Reply-To: <1306998067-27659-4-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: fgwmail6.fujitsu.co.jp[192.51.44.36] X-Barracuda-Start-Time: 1308531076 X-Barracuda-Bayes: INNOCENT GLOBAL 0.3630 1.0000 -0.1083 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.11 X-Barracuda-Spam-Status: No, SCORE=-0.11 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66555 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 (2011/06/02 16:00), Dave Chinner wrote: > From: Dave Chinner > > When a shrinker returns -1 to shrink_slab() to indicate it cannot do > any work given the current memory reclaim requirements, it adds the > entire total_scan count to shrinker->nr. The idea ehind this is that > whenteh shrinker is next called and can do work, it will do the work > of the previously aborted shrinker call as well. > > However, if a filesystem is doing lots of allocation with GFP_NOFS > set, then we get many, many more aborts from the shrinkers than we > do successful calls. The result is that shrinker->nr winds up to > it's maximum permissible value (twice the current cache size) and > then when the next shrinker call that can do work is issued, it > has enough scan count built up to free the entire cache twice over. > > This manifests itself in the cache going from full to empty in a > matter of seconds, even when only a small part of the cache is > needed to be emptied to free sufficient memory. > > Under metadata intensive workloads on ext4 and XFS, I'm seeing the > VFS caches increase memory consumption up to 75% of memory (no page > cache pressure) over a period of 30-60s, and then the shrinker > empties them down to zero in the space of 2-3s. This cycle repeats > over and over again, with the shrinker completely trashing the Ñ–node > and dentry caches every minute or so the workload continues. > > This behaviour was made obvious by the shrink_slab tracepoints added > earlier in the series, and made worse by the patch that corrected > the concurrent accounting of shrinker->nr. > > To avoid this problem, stop repeated small increments of the total > scan value from winding shrinker->nr up to a value that can cause > the entire cache to be freed. We still need to allow it to wind up, > so use the delta as the "large scan" threshold check - if the delta > is more than a quarter of the entire cache size, then it is a large > scan and allowed to cause lots of windup because we are clearly > needing to free lots of memory. > > If it isn't a large scan then limit the total scan to half the size > of the cache so that windup never increases to consume the whole > cache. Reducing the total scan limit further does not allow enough > wind-up to maintain the current levels of performance, whilst a > higher threshold does not prevent the windup from freeing the entire > cache under sustained workloads. > > Signed-off-by: Dave Chinner > --- > mm/vmscan.c | 14 ++++++++++++++ > 1 files changed, 14 insertions(+), 0 deletions(-) > > diff --git a/mm/vmscan.c b/mm/vmscan.c > index dce2767..3688f47 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -277,6 +277,20 @@ unsigned long shrink_slab(struct shrink_control *shrink, > } > > /* > + * Avoid excessive windup on fielsystem shrinkers due to large > + * numbers of GFP_NOFS allocations causing the shrinkers to > + * return -1 all the time. This results in a large nr being > + * built up so when a shrink that can do some work comes along > + * it empties the entire cache due to nr >>> max_pass. This is > + * bad for sustaining a working set in memory. > + * > + * Hence only allow nr to go large when a large delta is > + * calculated. > + */ > + if (delta < max_pass / 4) > + total_scan = min(total_scan, max_pass / 2); > + > + /* > * Avoid risking looping forever due to too large nr value: > * never try to free more than twice the estimate number of > * freeable entries. I guess "max_pass/4" and "min(total_scan, max_pass / 2)" are your heuristic value. right? If so, please write your benchmark name and its result into the description. I mean, currently some mm folks plan to enhance shrinker. So, sharing benchmark may help to avoid an accidental regression. I mean, your code itself looks pretty good to me. thanks. From david@fromorbit.com Sun Jun 19 19:53:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5K0rPSb095750 for ; Sun, 19 Jun 2011 19:53:25 -0500 X-ASG-Debug-ID: 1308531203-1514019b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 743C451EBFA for ; Sun, 19 Jun 2011 17:53:23 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id dKRLJQqULRLGvZj6 for ; Sun, 19 Jun 2011 17:53:23 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Aq0DAIqY/k15LCoegWdsb2JhbABShEmiEhUBARYmJYhzrgePag6BHYN1gQoEmVSIHQ Received: from ppp121-44-42-30.lns20.syd6.internode.on.net (HELO dastard) ([121.44.42.30]) by ipmail07.adl2.internode.on.net with ESMTP; 20 Jun 2011 10:23:22 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QYSjx-0005K0-F2; Mon, 20 Jun 2011 10:53:21 +1000 Date: Mon, 20 Jun 2011 10:53:21 +1000 From: Dave Chinner To: KOSAKI Motohiro Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 01/12] vmscan: add shrink_slab tracepoints Subject: Re: [PATCH 01/12] vmscan: add shrink_slab tracepoints Message-ID: <20110620005321.GM561@dastard> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> <1306998067-27659-2-git-send-email-david@fromorbit.com> <4DFE97F1.2030206@jp.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <4DFE97F1.2030206@jp.fujitsu.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1308531204 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0925 1.0000 -1.4375 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.44 X-Barracuda-Spam-Status: No, SCORE=-1.44 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66556 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, Jun 20, 2011 at 09:44:33AM +0900, KOSAKI Motohiro wrote: > (2011/06/02 16:00), Dave Chinner wrote: > > From: Dave Chinner > > > > Іt is impossible to understand what the shrinkers are actually doing > > without instrumenting the code, so add a some tracepoints to allow > > insight to be gained. > > > > Signed-off-by: Dave Chinner > > --- > > include/trace/events/vmscan.h | 67 +++++++++++++++++++++++++++++++++++++++++ > > mm/vmscan.c | 6 +++- > > 2 files changed, 72 insertions(+), 1 deletions(-) > > This look good to me. I have two minor request. 1) please change patch order, > move this patch after shrinker changes. iow, now both this and [2/12] have > tracepoint change. I don't like it. No big deal - I'll just fold the second change (how shrinker->nr is passed into the tracepoint) into the first. Tracepoints should be first in the series, anyway, otherwise there is no way to validate the before/after effect of the bug fixes.... > 2) please avoid cryptic abbreviated variable > names. Instead, please just use the same variable name with > vmscan.c source code. So replace cryptic abbreviated names with slightly different cryptic abbreviated names? ;) Sure, I can do that... Cheers, Dave. -- Dave Chinner david@fromorbit.com From markus@trippelsdorf.de Sun Jun 19 19:54:18 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p5K0sIcd095823 for ; Sun, 19 Jun 2011 19:54:18 -0500 X-ASG-Debug-ID: 1308531256-173603b80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DCA96172B55D for ; Sun, 19 Jun 2011 17:54:17 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id mtBauPsOaB2tEGcB for ; Sun, 19 Jun 2011 17:54:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:in-reply-to; q=dns/txt; s=beta; bh=PVUsCuk3+nMH/OIb dvIjAlSUsNGJjz7pO00UlV4E9MY=; b=Sbs1UJT5dMTydJrH542LpbbwPILnp8QC aCQWa0BDePtE903fMVwEncUZGVpwqa2vK0LpB6KizT+RHG58s1uKayfpLo9zrMiu eQ0q0nLT5e6H9WdzCRsF98DsYcTC0cMnP7TlgpVqWROZAFD3DzTbv7+DlstNMvyo /F3nMUyZiuc= Received: (qmail 20578 invoked from network); 20 Jun 2011 02:54:15 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.66.182.48) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 20 Jun 2011 02:54:15 +0200 Date: Mon, 20 Jun 2011 02:54:15 +0200 From: Markus Trippelsdorf To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110620005415.GA1730@x4.trippels.de> References: <20110618141950.GA1685@x4.trippels.de> <20110619222447.GI561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110619222447.GI561@dastard> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1308531257 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66556 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 2011.06.20 at 08:24 +1000, Dave Chinner wrote: > On Sat, Jun 18, 2011 at 04:19:50PM +0200, Markus Trippelsdorf wrote: > > Running the latest git kernel (3.0-rc3) my machine hangs for long > > periods (1-2 sec) whenever I delete a large directory recursively on my > > xfs partition. During the hang I cannot move the mouse pointer or use > > the keyboard (but the music keeps playing without stuttering). A quick > > way to reproduce is to "rm -fr" a kernel tree. > > So what is the system doing when it "hangs"? Is it CPU bound (e.g. > cpu scheduler issue)? Is the system running out of memory and > stalling everything in memory reclaim? What IO is occurring? It's totally idle otherwise; just a desktop with a single xterm. The machine has four cores (and also runs with "CONFIG_PREEMPT=y"), so I don't think it is CPU bound at all. It has 8GB of memory (and the "hangs" even occur after reboot when most of it is free). No other IO activity is occurring. > > This happens on a 4kb SATA hard drive: > > How does this appear to the OS? as a 512/512, 512/4k or 4k/4k > logical/physical sector size drive? It unfortunately appears as 512/512, but because I know it's a 4KB drive, I formated it with "-s size=4096". > > xfs_info /var > > meta-data=/dev/sda1 isize=256 agcount=4, agsize=12800000 blks > > = sectsz=4096 attr=2 > > data = bsize=4096 blocks=51200000, imaxpct=25 > > = sunit=0 swidth=0 blks > > naming =version 2 bsize=4096 ascii-ci=0 > > log =internal bsize=4096 blocks=25000, version=2 > > = sectsz=4096 sunit=1 blks, lazy-count=1 > > realtime =none extsz=4096 blocks=0, rtextents=0 > > > > /dev/sda1 on /var type xfs (rw,noatime,attr2,delaylog,logbsize=256k,noquota) > > Is your partition correctly sector aligned for however your drive > maps it's 4k sectors? Yes, it's a GPT partition that is aligned to 1MB. -- Markus From lmcilroy@redhat.com Sun Jun 19 20:21:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5K1Ldqc098006 for ; Sun, 19 Jun 2011 20:21:40 -0500 X-ASG-Debug-ID: 1308532898-340d00860000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx4-phx2.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7E7DD190C5 for ; Sun, 19 Jun 2011 18:21:38 -0700 (PDT) Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id Jai64FCSPJh0l6n0 for ; Sun, 19 Jun 2011 18:21:38 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from mail05.corp.redhat.com (zmail05.collab.prod.int.phx2.redhat.com [10.5.5.46]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id p5K1LbNV004775; Sun, 19 Jun 2011 21:21:38 -0400 Date: Sun, 19 Jun 2011 21:21:37 -0400 (EDT) From: Lachlan McIlroy Reply-To: Lachlan McIlroy To: Gim Leong Chin Cc: xfs@oss.sgi.com Message-ID: <1716056921.90273.1308532897819.JavaMail.root@zmail05.collab.prod.int.phx2.redhat.com> In-Reply-To: <385532.69322.qm@web77719.mail.sg1.yahoo.com> X-ASG-Orig-Subj: Re: Warning: AG size is a multiple of stripe width? Subject: Re: Warning: AG size is a multiple of stripe width? MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.5.71] X-Mailer: Zimbra 6.0.9_GA_2686 (ZimbraWebClient - FF3.0 (Linux)/6.0.9_GA_2686) X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1308532899 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 ----- Original Message ----- > Hi, > > > I have a Sun workstation with eight Cheetah 15K.5 SAS 300 GB on RAID > 1E (RAID 10) on LSI SAS3081E-R. > > I am installing SLED 11 SP1 on it and I thought I will do a thorough > optimization right down to the partition boundaries. > > Since the default for XFS is to create four aggregation groups, and > with the reasoning that Cheetah can do double the seeks of normal 7200 > RPM drives, I have four aggregation groups per drive for a total of 16 > for 70 GB /dev/sda2 partition, and eight per drive for total of 32 for > /dev/sda3 partition (1011 GB). > > I have aligned the partition start and end with the stripe width > boundaries. > The stripe size is 64 kB, stripe width is 4*64 kB = 256 kB, in terms > of 512 byte sectors: > > 70 GB / > > No Start End Number > 1 512 67109375 32 GB = 67108864 sectors = 131072 stripe sets > > 2 67109376 213910015 70 GB = 146800640 sectors = 286720 stripe sets > > 3 213910016 2335932415 Left = 2335932416 - 213910016 = 2122022400 > sectors = 4144575 stripe sets > > > When I do the following: > > mkfs.xfs -f -b size=4k -d agcount=16,su=64k,sw=4 -i > size=256,align=1,attr=2 -l version=2,su=64k,lazy-count=1 -n version=2 > -s size=512 -L / /dev/sda2 > > Warning: AG size is a multiple of stripe width. This can cause > performance problems by aligning all AGs on the same disk. To avoid > this, run mkfs with an AG size that is one stripe unit smaller, for > example 1146864 > > agcount=16 agsize=1146880 blks > bsize=4096 > sunit=16 swidth=64 blks > > mkfs.xfs -f -b size=4k -d agcount=32,su=64k,sw=4 -i > size=256,align=1,attr=2 -l version=2,su=64k,lazy-count=1 -n version=2 > -s size=512 -L /home /dev/sda3 > > Warning: AG size is a multiple of stripe width. This can cause > performance problems by aligning all AGs on the same disk. To avoid > this, run mkfs with an AG size that is one stripe unit smaller, for > example 8289136 Each allocation group has some headers that are updated frequently and if the allocation group size is a multiple of the AG size then all of the AG headers will land on the same disk. This may cause congestion on this disk and reduce the performance of the rest of the stripe. > > agcount=32 agsize=8289152 blks > bsize=4096 > sunit=16 swidth=64 blks > > I am really puzzled since I thought all I am doing is distributing 4 > aggregation groups per drive for sda2 and 8 per drive for sda3. > > What have I done wrong and what is the flaw with my understanding? If you had concatenated the disks then your logic would make sense but since you've striped the disks then all of the allocations groups will be represented in part on each of the disks. So if you have 32 AGs then each disk will need to accommodate (part of) each of the 32 AGs instead of the recommended 4 AGs which will probably make the disks seek a lot more. > > Thank you! > > > Chin Gim Leong > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From david@fromorbit.com Sun Jun 19 20:25:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5K1PbGh098465 for ; Sun, 19 Jun 2011 20:25:37 -0500 X-ASG-Debug-ID: 1308533135-10f802c10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 108061C582 for ; Sun, 19 Jun 2011 18:25:36 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 12Q8q8p2RTHIvWfk for ; Sun, 19 Jun 2011 18:25:36 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAHyg/k15LChD/2dsb2JhbABSplt4xmwOhhwEoXE Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl2.internode.on.net with ESMTP; 20 Jun 2011 10:55:32 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QYTF5-0005ND-4N; Mon, 20 Jun 2011 11:25:31 +1000 Date: Mon, 20 Jun 2011 11:25:31 +1000 From: Dave Chinner To: KOSAKI Motohiro Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 02/12] vmscan: shrinker->nr updates race and go wrong Subject: Re: [PATCH 02/12] vmscan: shrinker->nr updates race and go wrong Message-ID: <20110620012531.GN561@dastard> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> <1306998067-27659-3-git-send-email-david@fromorbit.com> <4DFE987E.1070900@jp.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DFE987E.1070900@jp.fujitsu.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1308533137 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0003 1.0000 -2.0194 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66558 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, Jun 20, 2011 at 09:46:54AM +0900, KOSAKI Motohiro wrote: > > diff --git a/mm/vmscan.c b/mm/vmscan.c > > index 48e3fbd..dce2767 100644 > > --- a/mm/vmscan.c > > +++ b/mm/vmscan.c > > @@ -251,17 +251,29 @@ unsigned long shrink_slab(struct shrink_control *shrink, > > unsigned long total_scan; > > unsigned long max_pass; > > int shrink_ret = 0; > > + long nr; > > + long new_nr; > > > > + /* > > + * copy the current shrinker scan count into a local variable > > + * and zero it so that other concurrent shrinker invocations > > + * don't also do this scanning work. > > + */ > > + do { > > + nr = shrinker->nr; > > + } while (cmpxchg(&shrinker->nr, nr, 0) != nr); > > + > > + total_scan = nr; > > max_pass = do_shrinker_shrink(shrinker, shrink, 0); > > delta = (4 * nr_pages_scanned) / shrinker->seeks; > > delta *= max_pass; > > do_div(delta, lru_pages + 1); > > - shrinker->nr += delta; > > - if (shrinker->nr < 0) { > > + total_scan += delta; > > + if (total_scan < 0) { > > printk(KERN_ERR "shrink_slab: %pF negative objects to " > > "delete nr=%ld\n", > > - shrinker->shrink, shrinker->nr); > > - shrinker->nr = max_pass; > > + shrinker->shrink, total_scan); > > + total_scan = max_pass; > > } > > > > /* > > @@ -269,13 +281,11 @@ unsigned long shrink_slab(struct shrink_control *shrink, > > * never try to free more than twice the estimate number of > > * freeable entries. > > */ > > - if (shrinker->nr > max_pass * 2) > > - shrinker->nr = max_pass * 2; > > + if (total_scan > max_pass * 2) > > + total_scan = max_pass * 2; > > > > - total_scan = shrinker->nr; > > - shrinker->nr = 0; > > > > - trace_mm_shrink_slab_start(shrinker, shrink, nr_pages_scanned, > > + trace_mm_shrink_slab_start(shrinker, shrink, nr, nr_pages_scanned, > > lru_pages, max_pass, delta, total_scan); > > > > while (total_scan >= SHRINK_BATCH) { > > @@ -295,8 +305,19 @@ unsigned long shrink_slab(struct shrink_control *shrink, > > cond_resched(); > > } > > > > - shrinker->nr += total_scan; > > - trace_mm_shrink_slab_end(shrinker, shrink_ret, total_scan); > > + /* > > + * move the unused scan count back into the shrinker in a > > + * manner that handles concurrent updates. If we exhausted the > > + * scan, there is no need to do an update. > > + */ > > + do { > > + nr = shrinker->nr; > > + new_nr = total_scan + nr; > > + if (total_scan <= 0) > > + break; > > + } while (cmpxchg(&shrinker->nr, nr, new_nr) != nr); > > + > > + trace_mm_shrink_slab_end(shrinker, shrink_ret, nr, new_nr); > > } > > up_read(&shrinker_rwsem); > > out: > > Looks great fix. Please remove tracepoint change from this patch and send it > to -stable. iow, I expect I'll ack your next spin. I don't believe such a change belongs in -stable. This code has been buggy for many years and as I mentioned it actually makes existing bad shrinker behaviour worse. I don't test stable kernels, so I've got no idea what side effects it will have outside of this series. I'm extremely hesitant to change VM behaviour in stable kernels without having tested first, so I'm not going to push it for stable kernels. If you want it in stable kernels, then you can always let stable@kernel.org know once the commits are in the mainline tree and you've tested them... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Jun 19 20:34:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5K1YrUO098883 for ; Sun, 19 Jun 2011 20:34:53 -0500 X-ASG-Debug-ID: 1308533691-1f3a00420000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 395D515E488A for ; Sun, 19 Jun 2011 18:34:51 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id LNoiEhy6Iw62O0CT for ; Sun, 19 Jun 2011 18:34:51 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAHyg/k15LChD/2dsb2JhbABSplt4iHO9eQ6GHAShcQ Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl2.internode.on.net with ESMTP; 20 Jun 2011 11:04:50 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QYTO5-0005Nm-4m; Mon, 20 Jun 2011 11:34:49 +1000 Date: Mon, 20 Jun 2011 11:34:49 +1000 From: Dave Chinner To: Markus Trippelsdorf Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110620013449.GO561@dastard> References: <20110618141950.GA1685@x4.trippels.de> <20110619222447.GI561@dastard> <20110620005415.GA1730@x4.trippels.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110620005415.GA1730@x4.trippels.de> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1308533692 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66557 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, Jun 20, 2011 at 02:54:15AM +0200, Markus Trippelsdorf wrote: > On 2011.06.20 at 08:24 +1000, Dave Chinner wrote: > > On Sat, Jun 18, 2011 at 04:19:50PM +0200, Markus Trippelsdorf wrote: > > > Running the latest git kernel (3.0-rc3) my machine hangs for long > > > periods (1-2 sec) whenever I delete a large directory recursively on my > > > xfs partition. During the hang I cannot move the mouse pointer or use > > > the keyboard (but the music keeps playing without stuttering). A quick > > > way to reproduce is to "rm -fr" a kernel tree. > > > > So what is the system doing when it "hangs"? Is it CPU bound (e.g. > > cpu scheduler issue)? Is the system running out of memory and > > stalling everything in memory reclaim? What IO is occurring? > > It's totally idle otherwise; just a desktop with a single xterm. The > machine has four cores (and also runs with "CONFIG_PREEMPT=y"), so I > don't think it is CPU bound at all. It has 8GB of memory (and the > "hangs" even occur after reboot when most of it is free). No other IO > activity is occurring. Sure, the system might be otherwise idle, but what I was asking is what load does the "rm -rf" cause. What IO does it cause? is it cpu bound? etc. > > > This happens on a 4kb SATA hard drive: > > > > How does this appear to the OS? as a 512/512, 512/4k or 4k/4k > > logical/physical sector size drive? > > It unfortunately appears as 512/512, but because I know it's a 4KB > drive, I formated it with "-s size=4096". Oh, joy. Another user having strange performance problems on a 4k sector drive that lies to the OS about it's geometry.... > > > xfs_info /var > > > meta-data=/dev/sda1 isize=256 agcount=4, agsize=12800000 blks > > > = sectsz=4096 attr=2 > > > data = bsize=4096 blocks=51200000, imaxpct=25 > > > = sunit=0 swidth=0 blks > > > naming =version 2 bsize=4096 ascii-ci=0 > > > log =internal bsize=4096 blocks=25000, version=2 > > > = sectsz=4096 sunit=1 blks, lazy-count=1 > > > realtime =none extsz=4096 blocks=0, rtextents=0 > > > > > > /dev/sda1 on /var type xfs (rw,noatime,attr2,delaylog,logbsize=256k,noquota) > > > > Is your partition correctly sector aligned for however your drive > > maps it's 4k sectors? > > Yes, it's a GPT partition that is aligned to 1MB. Ok, that is fine, but the big question now is how does the drive align sector 0? Is that 4k aligned, or is it one of those drives that aligns an odd 512 byte logical sector to the physical 4k sector boundary (i.e. sector 63 is 4k aligned to work with msdos partitions). FYI, some drives have jumpers on them to change this odd/even sector alignment configuration..... Cheers, Dave. -- Dave Chinner david@fromorbit.com From markus@trippelsdorf.de Sun Jun 19 21:02:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p5K22dFL100146 for ; Sun, 19 Jun 2011 21:02:39 -0500 X-ASG-Debug-ID: 1308535357-175402790000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9B6BB172B4EC for ; Sun, 19 Jun 2011 19:02:37 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id YzWaxw8UH4cCkGaM for ; Sun, 19 Jun 2011 19:02:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:content-transfer-encoding:in-reply-to; q=dns/txt; s= beta; bh=M+17dzScJm5p9Da2rB9+pGgG8MraAyp+AhvUyeW2dj8=; b=Dh0CyTh I758XHgoPrzmsYEXB19PHBxwFpTpRidAQlVMl+mLynQ7vAy91GyTKqXF2cKMWBIP GRifbZT3rtJOtkSGJBZfRTleqVthpPldy1D+O4CJuAf9KEQK7+Hb0RqZl08JUsfG 4QvC0vd1YgwXjch4RTv5yu8R0LB4uJCg0FdA= Received: (qmail 26072 invoked from network); 20 Jun 2011 04:02:37 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.66.182.48) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 20 Jun 2011 04:02:37 +0200 Date: Mon, 20 Jun 2011 04:02:36 +0200 From: Markus Trippelsdorf To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110620020236.GB1730@x4.trippels.de> References: <20110618141950.GA1685@x4.trippels.de> <20110619222447.GI561@dastard> <20110620005415.GA1730@x4.trippels.de> <20110620013449.GO561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20110620013449.GO561@dastard> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1308535358 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66560 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 2011.06.20 at 11:34 +1000, Dave Chinner wrote: > On Mon, Jun 20, 2011 at 02:54:15AM +0200, Markus Trippelsdorf wrote: > > On 2011.06.20 at 08:24 +1000, Dave Chinner wrote: > > > On Sat, Jun 18, 2011 at 04:19:50PM +0200, Markus Trippelsdorf wrote: > > > > Running the latest git kernel (3.0-rc3) my machine hangs for long > > > > periods (1-2 sec) whenever I delete a large directory recursively on my > > > > xfs partition. During the hang I cannot move the mouse pointer or use > > > > the keyboard (but the music keeps playing without stuttering). A quick > > > > way to reproduce is to "rm -fr" a kernel tree. > > > > > > So what is the system doing when it "hangs"? Is it CPU bound (e.g. > > > cpu scheduler issue)? Is the system running out of memory and > > > stalling everything in memory reclaim? What IO is occurring? > > > > It's totally idle otherwise; just a desktop with a single xterm. The > > machine has four cores (and also runs with "CONFIG_PREEMPT=y"), so I > > don't think it is CPU bound at all. It has 8GB of memory (and the > > "hangs" even occur after reboot when most of it is free). No other IO > > activity is occurring. > > Sure, the system might be otherwise idle, but what I was asking is > what load does the "rm -rf" cause. What IO does it cause? is it cpu > bound? etc. I have not measured this, so I cannot tell. > > > > This happens on a 4kb SATA hard drive: > > > > > > How does this appear to the OS? as a 512/512, 512/4k or 4k/4k > > > logical/physical sector size drive? > > > > It unfortunately appears as 512/512, but because I know it's a 4KB > > drive, I formated it with "-s size=4096". > > Oh, joy. Another user having strange performance problems on a 4k > sector drive that lies to the OS about it's geometry.... > > > > > xfs_info /var > > > > meta-data=/dev/sda1 isize=256 agcount=4, agsize=12800000 blks > > > > = sectsz=4096 attr=2 > > > > data = bsize=4096 blocks=51200000, imaxpct=25 > > > > = sunit=0 swidth=0 blks > > > > naming =version 2 bsize=4096 ascii-ci=0 > > > > log =internal bsize=4096 blocks=25000, version=2 > > > > = sectsz=4096 sunit=1 blks, lazy-count=1 > > > > realtime =none extsz=4096 blocks=0, rtextents=0 > > > > > > > > /dev/sda1 on /var type xfs (rw,noatime,attr2,delaylog,logbsize=256k,noquota) > > > > > > Is your partition correctly sector aligned for however your drive > > > maps it's 4k sectors? > > > > Yes, it's a GPT partition that is aligned to 1MB. > > Ok, that is fine, but the big question now is how does the drive > align sector 0? Is that 4k aligned, or is it one of those drives > that aligns an odd 512 byte logical sector to the physical 4k sector > boundary (i.e. sector 63 is 4k aligned to work with msdos > partitions). FYI, some drives have jumpers on them to change this > odd/even sector alignment configuration..... No, it's none of those (it's a Seagate Barracuda Green ST1500). Sector 0 is 4k aligned for sure. The odd 512 byte offset was present only on some first generation drives. But I think the whole alignment issue is a red herring, because I cannot reproduce the "hangs" on the next partition on the same drive. This partition is larger and contains my music and film collection (so mostly static content and no traffic). And as I wrote in my other reply to this thread: »it appears that the observed "hangs" are the result of a strongly aged file-system.« -- Markus From david@fromorbit.com Sun Jun 19 21:36:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5K2acxf102095 for ; Sun, 19 Jun 2011 21:36:38 -0500 X-ASG-Debug-ID: 1308537395-6184000e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 10275172B696 for ; Sun, 19 Jun 2011 19:36:36 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 72rLrF73zdx7XdGy for ; Sun, 19 Jun 2011 19:36:36 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAAWy/k15LChD/2dsb2JhbABSplp4iHO9aA6GHAShcQ Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl2.internode.on.net with ESMTP; 20 Jun 2011 12:06:26 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QYULh-0005Sn-Cq; Mon, 20 Jun 2011 12:36:25 +1000 Date: Mon, 20 Jun 2011 12:36:25 +1000 From: Dave Chinner To: Markus Trippelsdorf Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110620023625.GP561@dastard> References: <20110618141950.GA1685@x4.trippels.de> <20110619222447.GI561@dastard> <20110620005415.GA1730@x4.trippels.de> <20110620013449.GO561@dastard> <20110620020236.GB1730@x4.trippels.de> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20110620020236.GB1730@x4.trippels.de> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1308537397 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.2.66562 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, Jun 20, 2011 at 04:02:36AM +0200, Markus Trippelsdorf wrote: > On 2011.06.20 at 11:34 +1000, Dave Chinner wrote: > > On Mon, Jun 20, 2011 at 02:54:15AM +0200, Markus Trippelsdorf wrote: > > > On 2011.06.20 at 08:24 +1000, Dave Chinner wrote: > > > > On Sat, Jun 18, 2011 at 04:19:50PM +0200, Markus Trippelsdorf wrote: > > > > > Running the latest git kernel (3.0-rc3) my machine hangs for long > > > > > periods (1-2 sec) whenever I delete a large directory recursively on my > > > > > xfs partition. During the hang I cannot move the mouse pointer or use > > > > > the keyboard (but the music keeps playing without stuttering). A quick > > > > > way to reproduce is to "rm -fr" a kernel tree. > > > > > > > > So what is the system doing when it "hangs"? Is it CPU bound (e.g. > > > > cpu scheduler issue)? Is the system running out of memory and > > > > stalling everything in memory reclaim? What IO is occurring? > > > > > > It's totally idle otherwise; just a desktop with a single xterm. The > > > machine has four cores (and also runs with "CONFIG_PREEMPT=y"), so I > > > don't think it is CPU bound at all. It has 8GB of memory (and the > > > "hangs" even occur after reboot when most of it is free). No other IO > > > activity is occurring. > > > > Sure, the system might be otherwise idle, but what I was asking is > > what load does the "rm -rf" cause. What IO does it cause? is it cpu > > bound? etc. > > I have not measured this, so I cannot tell. And so you are speculating as to the cause of the problem. What I'm trying to do is work from the bottom up to ensure that the layers below the fs are not the cause of the problem. > > > > Is your partition correctly sector aligned for however your drive > > > > maps it's 4k sectors? > > > > > > Yes, it's a GPT partition that is aligned to 1MB. > > > > Ok, that is fine, but the big question now is how does the drive > > align sector 0? Is that 4k aligned, or is it one of those drives > > that aligns an odd 512 byte logical sector to the physical 4k sector > > boundary (i.e. sector 63 is 4k aligned to work with msdos > > partitions). FYI, some drives have jumpers on them to change this > > odd/even sector alignment configuration..... > > No, it's none of those (it's a Seagate Barracuda Green ST1500). Sector 0 > is 4k aligned for sure. The odd 512 byte offset was present only on some > first generation drives. > But I think the whole alignment issue is a red herring, because I cannot > reproduce the "hangs" on the next partition on the same drive. This > partition is larger and contains my music and film collection (so mostly > static content and no traffic). Which also means you might have one unaligned and one aligned partition. i.e. the test results you have presented does not necessarily point at a filesystem problem. We always ask for exact details of your storage subsystem for these reasons - so we can understand if there's something that you missed or didn't think was important enough to tell us. You may have already checked those things, but we don't know that if you don't tell us.... So, is the sector alignment of the second partition the same as the first partition? > And as I wrote in my other reply to this > thread: »it appears that the observed "hangs" are the result of a > strongly aged file-system.« There is no evidence that points to any cause. Hell, I don't even know what you consider a "strongly aged filesystem" looks like.... If the alignment is the cause of the problem, you should be able to see a difference in performance when doing random 4k synchronous writes to a large file on differently aligned partitions. Can you run the same random 4k sync write test on both partitions (make sure barriers are enabled) and determine if they perform the same? If the filesystem layout is the cause of the problem, you should be able to take a metadump of the problematic filesystem, restore it to a normal 512 sector drive and reproduce the "rm -rf" problem. Can you try this as well? Cheers, Dave. -- Dave Chinner david@fromorbit.com From kosaki.motohiro@jp.fujitsu.com Sun Jun 19 23:30:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5K4Ud4M114161 for ; Sun, 19 Jun 2011 23:30:41 -0500 X-ASG-Debug-ID: 1308544237-13c100730000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from fgwmail6.fujitsu.co.jp (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2CA18166C0F1 for ; Sun, 19 Jun 2011 21:30:38 -0700 (PDT) Received: from fgwmail6.fujitsu.co.jp (fgwmail6.fujitsu.co.jp [192.51.44.36]) by cuda.sgi.com with ESMTP id BOjGaryYEwuk8bfV for ; Sun, 19 Jun 2011 21:30:38 -0700 (PDT) Received: from m3.gw.fujitsu.co.jp (unknown [10.0.50.73]) by fgwmail6.fujitsu.co.jp (Postfix) with ESMTP id BEB0C3EE0C0 for ; Mon, 20 Jun 2011 13:30:36 +0900 (JST) Received: from smail (m3 [127.0.0.1]) by outgoing.m3.gw.fujitsu.co.jp (Postfix) with ESMTP id 6FCD845DE8D for ; Mon, 20 Jun 2011 13:30:36 +0900 (JST) Received: from s3.gw.fujitsu.co.jp (s3.gw.fujitsu.co.jp [10.0.50.93]) by m3.gw.fujitsu.co.jp (Postfix) with ESMTP id 593A045DE67 for ; Mon, 20 Jun 2011 13:30:36 +0900 (JST) Received: from s3.gw.fujitsu.co.jp (localhost.localdomain [127.0.0.1]) by s3.gw.fujitsu.co.jp (Postfix) with ESMTP id 4D6371DB8037 for ; Mon, 20 Jun 2011 13:30:36 +0900 (JST) Received: from m106.s.css.fujitsu.com (m106.s.css.fujitsu.com [10.240.81.146]) by s3.gw.fujitsu.co.jp (Postfix) with ESMTP id D62161DB8038 for ; Mon, 20 Jun 2011 13:30:35 +0900 (JST) Received: from m106.css.fujitsu.com (m106 [127.0.0.1]) by m106.s.css.fujitsu.com (Postfix) with ESMTP id B193E5B9227; Mon, 20 Jun 2011 13:30:34 +0900 (JST) Received: from [127.0.0.1] (unknown [10.124.101.131]) by m106.s.css.fujitsu.com (Postfix) with ESMTP id C3E665B90BF; Mon, 20 Jun 2011 13:30:32 +0900 (JST) X-SecurityPolicyCheck-FJ: OK by FujitsuOutboundMailChecker v1.3.1 Received: from KOSANOTE2[10.124.101.131] by KOSANOTE2 (FujitsuOutboundMailChecker v1.3.1/9992[10.124.101.131]); Mon, 20 Jun 2011 13:30:39 +0900 (JST) Message-ID: <4DFECCE5.5030409@jp.fujitsu.com> Date: Mon, 20 Jun 2011 13:30:29 +0900 From: KOSAKI Motohiro User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.17) Gecko/20110414 Lightning/1.0b2 Thunderbird/3.1.10 MIME-Version: 1.0 To: david@fromorbit.com CC: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 02/12] vmscan: shrinker->nr updates race and go wrong Subject: Re: [PATCH 02/12] vmscan: shrinker->nr updates race and go wrong References: <1306998067-27659-1-git-send-email-david@fromorbit.com> <1306998067-27659-3-git-send-email-david@fromorbit.com> <4DFE987E.1070900@jp.fujitsu.com> <20110620012531.GN561@dastard> In-Reply-To: <20110620012531.GN561@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: fgwmail6.fujitsu.co.jp[192.51.44.36] X-Barracuda-Start-Time: 1308544239 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1973 1.0000 -0.8422 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.84 X-Barracuda-Spam-Status: No, SCORE=-0.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.2.66569 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 >> Looks great fix. Please remove tracepoint change from this patch and send it >> to -stable. iow, I expect I'll ack your next spin. > > I don't believe such a change belongs in -stable. This code has been > buggy for many years and as I mentioned it actually makes existing > bad shrinker behaviour worse. I don't test stable kernels, so I've > got no idea what side effects it will have outside of this series. > I'm extremely hesitant to change VM behaviour in stable kernels > without having tested first, so I'm not going to push it for stable > kernels. Ok, I have no strong opinion. > > If you want it in stable kernels, then you can always let > stable@kernel.org know once the commits are in the mainline tree and > you've tested them... From markus@trippelsdorf.de Mon Jun 20 01:03:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p5K63teW120716 for ; Mon, 20 Jun 2011 01:03:55 -0500 X-ASG-Debug-ID: 1308549832-370003630000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E32F6172CF95 for ; Sun, 19 Jun 2011 23:03:53 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id AwQOvA6BXKVbyTBC for ; Sun, 19 Jun 2011 23:03:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:content-transfer-encoding:in-reply-to; q=dns/txt; s= beta; bh=UUDKIlLCNgaoYcc0MYMT37xwj8b99DmQHeuzIMLE4cU=; b=DXKIY+d cgI5R7j8Vx0ZoV+f33STiT09vssMq6BQEZ8lBhuygoSUxYnx2YOFAFbooSvTKe4z KDOz83ZhtiW5pY0CXXBuOcWbcSoErY9G+EqZSTR+s/Sh5fvAWi6k5loAFgpXzCEr G0cP6W+KQGZbMr6XRwaWXC46b7gVjojCfO7g= Received: (qmail 17533 invoked from network); 20 Jun 2011 08:03:52 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.66.182.48) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 20 Jun 2011 08:03:52 +0200 Date: Mon, 20 Jun 2011 08:03:51 +0200 From: Markus Trippelsdorf To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110620060351.GC1730@x4.trippels.de> References: <20110618141950.GA1685@x4.trippels.de> <20110619222447.GI561@dastard> <20110620005415.GA1730@x4.trippels.de> <20110620013449.GO561@dastard> <20110620020236.GB1730@x4.trippels.de> <20110620023625.GP561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20110620023625.GP561@dastard> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1308549833 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66576 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 2011.06.20 at 12:36 +1000, Dave Chinner wrote: > On Mon, Jun 20, 2011 at 04:02:36AM +0200, Markus Trippelsdorf wrote: > > On 2011.06.20 at 11:34 +1000, Dave Chinner wrote: > > > On Mon, Jun 20, 2011 at 02:54:15AM +0200, Markus Trippelsdorf wrote: > > > > On 2011.06.20 at 08:24 +1000, Dave Chinner wrote: > > > > > On Sat, Jun 18, 2011 at 04:19:50PM +0200, Markus Trippelsdorf wrote: > > > > > > Running the latest git kernel (3.0-rc3) my machine hangs for long > > > > > > periods (1-2 sec) whenever I delete a large directory recursively on my > > > > > > xfs partition. During the hang I cannot move the mouse pointer or use > > > > > > the keyboard (but the music keeps playing without stuttering). A quick > > > > > > way to reproduce is to "rm -fr" a kernel tree. > > > > > > > > > > So what is the system doing when it "hangs"? Is it CPU bound (e.g. > > > > > cpu scheduler issue)? Is the system running out of memory and > > > > > stalling everything in memory reclaim? What IO is occurring? > > > > > > > > It's totally idle otherwise; just a desktop with a single xterm. The > > > > machine has four cores (and also runs with "CONFIG_PREEMPT=y"), so I > > > > don't think it is CPU bound at all. It has 8GB of memory (and the > > > > "hangs" even occur after reboot when most of it is free). No other IO > > > > activity is occurring. > > > > > > Sure, the system might be otherwise idle, but what I was asking is > > > what load does the "rm -rf" cause. What IO does it cause? is it cpu > > > bound? etc. > > > > I have not measured this, so I cannot tell. > > And so you are speculating as to the cause of the problem. What I'm > trying to do is work from the bottom up to ensure that the layers > below the fs are not the cause of the problem. > > > > > > Is your partition correctly sector aligned for however your drive > > > > > maps it's 4k sectors? > > > > > > > > Yes, it's a GPT partition that is aligned to 1MB. > > > > > > Ok, that is fine, but the big question now is how does the drive > > > align sector 0? Is that 4k aligned, or is it one of those drives > > > that aligns an odd 512 byte logical sector to the physical 4k sector > > > boundary (i.e. sector 63 is 4k aligned to work with msdos > > > partitions). FYI, some drives have jumpers on them to change this > > > odd/even sector alignment configuration..... > > > > No, it's none of those (it's a Seagate Barracuda Green ST1500). Sector 0 > > is 4k aligned for sure. The odd 512 byte offset was present only on some > > first generation drives. > > But I think the whole alignment issue is a red herring, because I cannot > > reproduce the "hangs" on the next partition on the same drive. This > > partition is larger and contains my music and film collection (so mostly > > static content and no traffic). > > Which also means you might have one unaligned and one aligned > partition. i.e. the test results you have presented does not > necessarily point at a filesystem problem. We always ask for exact > details of your storage subsystem for these reasons - so we can > understand if there's something that you missed or didn't think was > important enough to tell us. You may have already checked those > things, but we don't know that if you don't tell us.... Understood. > So, is the sector alignment of the second partition the same as the > first partition? Yes. > > And as I wrote in my other reply to this > > thread: »it appears that the observed "hangs" are the result of a > > strongly aged file-system.« > > There is no evidence that points to any cause. Hell, I don't even > know what you consider a "strongly aged filesystem" looks like.... > > If the alignment is the cause of the problem, you should be able to > see a difference in performance when doing random 4k synchronous > writes to a large file on differently aligned partitions. Can you > run the same random 4k sync write test on both partitions (make sure > barriers are enabled) and determine if they perform the same? > > If the filesystem layout is the cause of the problem, you should be > able to take a metadump of the problematic filesystem, restore it to > a normal 512 sector drive and reproduce the "rm -rf" problem. Can > you try this as well? OK. I was able to reproduce the same hang on a conventional 512 sector drive. The partition that I've used was the predecessor to the one on the 4k drive. So it saw roughly the same usage pattern. This is the output of "dstat -cdyl -C 0,1,2,3 -D sdc --disk-tps" during the hang: -------cpu0-usage--------------cpu1-usage--------------cpu2-usage--------------cpu3-usage------ --dsk/sdc-- ---system-- ---load-avg--- --dsk/sdc-- usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq| read writ| int csw | 1m 5m 15m |reads writs 0 0 100 0 0 0: 1 0 99 0 0 0: 0 1 99 0 0 0: 1 0 99 0 0 0| 0 0 | 249 354 |0.33 0.58 0.38| 0 0 0 0 100 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0| 0 0 | 244 228 |0.33 0.58 0.38| 0 0 1 2 97 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0| 0 0 | 559 614 |0.33 0.58 0.38| 0 0 0 0 100 0 0 0: 1 0 99 0 0 0: 1 0 99 0 0 0: 1 0 99 0 0 0| 0 0 | 341 426 |0.33 0.58 0.38| 0 0 1 0 99 0 0 0: 1 4 95 0 0 0: 0 1 99 0 0 0: 1 16 83 0 0 0| 0 0 | 874 796 |0.33 0.58 0.38| 0 0 2 50 49 0 0 0: 1 9 90 0 0 0: 1 9 90 0 0 0: 1 23 76 0 0 0| 0 6400k|2803 2073 |0.46 0.60 0.39| 0 25 1 29 70 0 0 0: 1 1 98 0 0 0: 1 9 90 0 0 0: 1 53 46 0 0 0| 0 6400k|2047 1414 |0.46 0.60 0.39| 0 25 0 4 96 0 0 0: 0 0 100 0 0 0: 1 19 80 0 0 0: 0 80 20 0 0 0| 0 2048k|1425 685 |0.46 0.60 0.39| 0 8 2 1 97 0 0 0: 1 6 93 0 0 0: 0 5 95 0 0 0: 0 83 17 0 0 0| 0 4608k|1624 849 |0.46 0.60 0.39| 0 18 2 45 53 0 0 0: 1 16 83 0 0 0: 3 20 77 0 0 0: 1 15 84 0 0 0| 0 6400k|2420 1984 |0.46 0.60 0.39| 0 26 1 19 80 0 0 0: 2 8 90 0 0 0: 0 33 67 0 0 0: 0 33 67 0 0 0| 0 6400k|2694 2134 |0.59 0.63 0.40| 0 25 2 7 91 0 0 0: 2 1 97 0 0 0: 1 0 99 0 0 0: 0 49 10 41 0 0| 0 8269k|1865 1571 |0.59 0.63 0.40| 0 363 1 1 98 0 0 0: 1 1 98 0 0 0: 1 1 98 0 0 0: 0 1 0 99 0 0| 0 4778k|1509 1639 |0.59 0.63 0.40| 0 410 2 0 98 0 0 0: 2 1 97 0 0 0: 1 1 98 0 0 0: 2 0 0 98 0 0| 0 5318k|1663 1809 |0.59 0.63 0.40| 0 426 1 1 98 0 0 0: 2 7 91 0 0 0: 1 0 99 0 0 0: 1 0 0 99 0 0| 0 5446k|1659 1806 |0.59 0.63 0.40| 0 432 0 1 99 0 0 0: 1 0 99 0 0 0: 2 0 98 0 0 0: 0 1 17 82 0 0| 0 5472k|1572 1837 |0.62 0.63 0.40| 0 439 2 0 98 0 0 0: 2 2 96 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0| 0 397k|1058 1049 |0.62 0.63 0.40| 0 36 1 1 98 0 0 0: 1 1 98 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0| 0 0 | 617 689 |0.62 0.63 0.40| 0 0 9 4 87 0 0 0: 4 0 96 0 0 0: 1 1 98 0 0 0: 8 6 87 0 0 0| 0 0 |1234 1961 |0.62 0.63 0.40| 0 0 0 1 99 0 0 0: 1 1 98 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0| 0 0 | 391 403 |0.62 0.63 0.40| 0 0 1 0 99 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0| 0 0 | 366 375 |0.57 0.62 0.40| 0 0 -- Markus From BATV+ace79a25b605642ce9d6+2857+infradead.org+hch@bombadil.srs.infradead.org Mon Jun 20 02:23:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5K7NvGX123631 for ; Mon, 20 Jun 2011 02:23:58 -0500 X-ASG-Debug-ID: 1308554631-4f5703c40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2D0C815E5403 for ; Mon, 20 Jun 2011 00:23:51 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id wi3UJC5XeoImyioe for ; Mon, 20 Jun 2011 00:23:51 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QYYpr-000596-0t for xfs@oss.sgi.com; Mon, 20 Jun 2011 07:23:51 +0000 Date: Mon, 20 Jun 2011 03:23:51 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfs: fix filesystsem freeze race in xfs_trans_alloc Subject: [PATCH] xfs: fix filesystsem freeze race in xfs_trans_alloc Message-ID: <20110620072350.GA19765@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308554632 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66581 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 As pointed out by Jan xfs_trans_alloc can race with a concurrent filesystem free when it sleeps during the memory allocation. Fix this by moving the wait_for_freeze call after the memory allocation. This means moving the freeze into the low-level _xfs_trans_alloc helper, which thus grows a new argument. Also fix up some comments in that area while at it. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_fsops.c =================================================================== --- xfs.orig/fs/xfs/xfs_fsops.c 2011-06-17 14:18:52.185725030 +0200 +++ xfs/fs/xfs/xfs_fsops.c 2011-06-18 16:28:04.557624784 +0200 @@ -626,7 +626,7 @@ xfs_fs_log_dummy( xfs_trans_t *tp; int error; - tp = _xfs_trans_alloc(mp, XFS_TRANS_DUMMY1, KM_SLEEP); + tp = _xfs_trans_alloc(mp, XFS_TRANS_DUMMY1, KM_SLEEP, false); error = xfs_trans_reserve(tp, 0, mp->m_sb.sb_sectsize + 128, 0, 0, XFS_DEFAULT_LOG_COUNT); if (error) { Index: xfs/fs/xfs/xfs_iomap.c =================================================================== --- xfs.orig/fs/xfs/xfs_iomap.c 2011-06-17 14:18:52.195725031 +0200 +++ xfs/fs/xfs/xfs_iomap.c 2011-06-18 16:28:04.560958118 +0200 @@ -688,8 +688,7 @@ xfs_iomap_write_unwritten( * the same inode that we complete here and might deadlock * on the iolock. */ - xfs_wait_for_freeze(mp, SB_FREEZE_TRANS); - tp = _xfs_trans_alloc(mp, XFS_TRANS_STRAT_WRITE, KM_NOFS); + tp = _xfs_trans_alloc(mp, XFS_TRANS_STRAT_WRITE, KM_NOFS, true); tp->t_flags |= XFS_TRANS_RESERVE; error = xfs_trans_reserve(tp, resblks, XFS_WRITE_LOG_RES(mp), 0, Index: xfs/fs/xfs/xfs_trans.h =================================================================== --- xfs.orig/fs/xfs/xfs_trans.h 2011-06-17 14:18:52.209058363 +0200 +++ xfs/fs/xfs/xfs_trans.h 2011-06-18 16:28:04.560958118 +0200 @@ -448,7 +448,7 @@ typedef struct xfs_trans { * XFS transaction mechanism exported interfaces. */ xfs_trans_t *xfs_trans_alloc(struct xfs_mount *, uint); -xfs_trans_t *_xfs_trans_alloc(struct xfs_mount *, uint, uint); +xfs_trans_t *_xfs_trans_alloc(struct xfs_mount *, uint, uint, bool); xfs_trans_t *xfs_trans_dup(xfs_trans_t *); int xfs_trans_reserve(xfs_trans_t *, uint, uint, uint, uint, uint); Index: xfs/fs/xfs/xfs_mount.c =================================================================== --- xfs.orig/fs/xfs/xfs_mount.c 2011-06-17 14:18:52.222391695 +0200 +++ xfs/fs/xfs/xfs_mount.c 2011-06-18 16:28:04.560958118 +0200 @@ -1566,15 +1566,9 @@ xfs_fs_writable(xfs_mount_t *mp) } /* - * xfs_log_sbcount - * * Called either periodically to keep the on disk superblock values * roughly up to date or from unmount to make sure the values are * correct on a clean unmount. - * - * Note this code can be called during the process of freezing, so - * we may need to use the transaction allocator which does not not - * block when the transaction subsystem is in its frozen state. */ int xfs_log_sbcount( @@ -1596,7 +1590,13 @@ xfs_log_sbcount( if (!xfs_sb_version_haslazysbcount(&mp->m_sb)) return 0; - tp = _xfs_trans_alloc(mp, XFS_TRANS_SB_COUNT, KM_SLEEP); + /* + * We can be called during the process of freezing, so make sure + * we go ahead even if the frozen for new transactions. We will + * always use a sync transaction in the freeze path to make sure + * the transaction has completed by the time we return. + */ + tp = _xfs_trans_alloc(mp, XFS_TRANS_SB_COUNT, KM_SLEEP, false); error = xfs_trans_reserve(tp, 0, mp->m_sb.sb_sectsize + 128, 0, 0, XFS_DEFAULT_LOG_COUNT); if (error) { Index: xfs/fs/xfs/xfs_trans.c =================================================================== --- xfs.orig/fs/xfs/xfs_trans.c 2011-06-09 11:51:01.000000000 +0200 +++ xfs/fs/xfs/xfs_trans.c 2011-06-18 16:28:24.970957084 +0200 @@ -566,31 +566,24 @@ xfs_trans_init( /* * This routine is called to allocate a transaction structure. + * * The type parameter indicates the type of the transaction. These * are enumerated in xfs_trans.h. - * - * Dynamically allocate the transaction structure from the transaction - * zone, initialize it, and return it to the caller. */ -xfs_trans_t * -xfs_trans_alloc( - xfs_mount_t *mp, - uint type) -{ - xfs_wait_for_freeze(mp, SB_FREEZE_TRANS); - return _xfs_trans_alloc(mp, type, KM_SLEEP); -} - -xfs_trans_t * +struct xfs_trans * _xfs_trans_alloc( - xfs_mount_t *mp, - uint type, - uint memflags) + struct xfs_mount *mp, + uint type, + uint memflags, + bool wait_for_freeze) { - xfs_trans_t *tp; + struct xfs_trans *tp; atomic_inc(&mp->m_active_trans); + if (wait_for_freeze) + xfs_wait_for_freeze(mp, SB_FREEZE_TRANS); + tp = kmem_zone_zalloc(xfs_trans_zone, memflags); tp->t_magic = XFS_TRANS_MAGIC; tp->t_type = type; @@ -600,6 +593,14 @@ _xfs_trans_alloc( return tp; } +struct xfs_trans * +xfs_trans_alloc( + struct xfs_mount *mp, + uint type) +{ + return _xfs_trans_alloc(mp, type, KM_SLEEP, true); +} + /* * Free the transaction structure. If there is more clean up * to do when the structure is freed, add it here. From BATV+ace79a25b605642ce9d6+2857+infradead.org+hch@bombadil.srs.infradead.org Mon Jun 20 02:44:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5K7iWoY125464 for ; Mon, 20 Jun 2011 02:44:33 -0500 X-ASG-Debug-ID: 1308555872-430c00870000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7E8379CB7 for ; Mon, 20 Jun 2011 00:44:32 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id tKhtAGpfMmaEEO2u for ; Mon, 20 Jun 2011 00:44:32 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QYZ9q-0000tq-Vi; Mon, 20 Jun 2011 07:44:31 +0000 Date: Mon, 20 Jun 2011 03:44:30 -0400 From: Christoph Hellwig To: "Robert P. J. Day" Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS Kconfig variable XFS_TRACE not defined anywhere Subject: Re: XFS Kconfig variable XFS_TRACE not defined anywhere Message-ID: <20110620074430.GA2651@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.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308555872 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66582 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Sun, Jun 19, 2011 at 07:24:46AM -0400, Robert P. J. Day wrote: > > just FYI: > > ===== XFS_TRACE ===== > ./fs/xfs/Makefile:xfs-$(CONFIG_XFS_TRACE) += xfs_btree_trace.o > > as far as i can tell, there is no definition of the Kconfig variable > XFS_TRACE, so that Makefile entry is redundant. It's part of the old kdb-only tracing implementation and now dead. We left it in as a reminder to still convert the btree tracing code to trace events once the technology for it becomes awailable. At this point I suspect we could simply remove it as we still have the code available in git history. And xfs_btree_trace.c itself doesn't contain any interesting code anyway as the interesting bits are in the macros which we are going to keep anyway. From BATV+ace79a25b605642ce9d6+2857+infradead.org+hch@bombadil.srs.infradead.org Mon Jun 20 03:18:04 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5K8I3lg130834 for ; Mon, 20 Jun 2011 03:18:04 -0500 X-ASG-Debug-ID: 1308557882-0fd7002b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 30F4B172D308 for ; Mon, 20 Jun 2011 01:18:02 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id CuiA0Tm2u9QmaspM for ; Mon, 20 Jun 2011 01:18:02 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QYZgI-0008H9-BI; Mon, 20 Jun 2011 08:18:02 +0000 Date: Mon, 20 Jun 2011 04:18:02 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Wu Fengguang X-ASG-Orig-Subj: Re: [PATCH] xfs: improve sync behaviour in face of aggressive dirtying Subject: Re: [PATCH] xfs: improve sync behaviour in face of aggressive dirtying Message-ID: <20110620081802.GA27111@infradead.org> References: <20110617131401.GC2141@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110617131401.GC2141@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308557883 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66584 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 As confirmed by Wu moving to a workqueue flush as in the test patch below brings our performance on par with other filesystems. But there's a major and a minor issues with that. The minor one is that we always flush all work items and not just those on the filesystem to be flushed. This might become an issue for lager systems, or when we apply a similar scheme to fsync, which has the same underlying issue. The major one is that flush_workqueue only flushed work items that were queued before it was called, but we can requeue completions when we fail to get the ilock in xfs_setfilesize, which can lead to losing i_size updates when it happens. I see two ways to fix this: either we implement our own workqueue look-alike based on the old workqueue code. This would allow flushing queues per-sb or even per-inode, and allow us to special case flushing requeues as well before returning. Or we copy the scheme ext4 uses for fsync (it completely fails to flush the completion queue for plain sync), that is add a list of pending items to the inode, and a lock to protect it. I don't like this because it a) bloats the inode, b) adds a lot of complexity, and c) another lock to the irq I/O completion. Any other ideas? Index: xfs/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2011-06-17 14:16:18.442399481 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2011-06-18 17:55:44.864025123 +0200 @@ -359,14 +359,16 @@ xfs_quiesce_data( { int error, error2 = 0; - /* push non-blocking */ - xfs_sync_data(mp, 0); xfs_qm_sync(mp, SYNC_TRYLOCK); - - /* push and block till complete */ - xfs_sync_data(mp, SYNC_WAIT); xfs_qm_sync(mp, SYNC_WAIT); + /* flush all pending size updates and unwritten extent conversions */ + flush_workqueue(xfsconvertd_workqueue); + flush_workqueue(xfsdatad_workqueue); + + /* force out the newly dirtied log buffers */ + xfs_log_force(mp, XFS_LOG_SYNC); + /* write superblock and hoover up shutdown errors */ error = xfs_sync_fsdata(mp); Index: xfs/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_super.c 2011-06-18 17:51:05.660705925 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_super.c 2011-06-18 17:52:50.107367305 +0200 @@ -929,45 +929,12 @@ xfs_fs_write_inode( * ->sync_fs call do that for thus, which reduces the number * of synchronous log foces dramatically. */ - xfs_ioend_wait(ip); xfs_ilock(ip, XFS_ILOCK_SHARED); - if (ip->i_update_core) { + if (ip->i_update_core) error = xfs_log_inode(ip); - if (error) - goto out_unlock; - } - } else { - /* - * We make this non-blocking if the inode is contended, return - * EAGAIN to indicate to the caller that they did not succeed. - * This prevents the flush path from blocking on inodes inside - * another operation right now, they get caught later by - * xfs_sync. - */ - if (!xfs_ilock_nowait(ip, XFS_ILOCK_SHARED)) - goto out; - - if (xfs_ipincount(ip) || !xfs_iflock_nowait(ip)) - goto out_unlock; - - /* - * Now we have the flush lock and the inode is not pinned, we - * can check if the inode is really clean as we know that - * there are no pending transaction completions, it is not - * waiting on the delayed write queue and there is no IO in - * progress. - */ - if (xfs_inode_clean(ip)) { - xfs_ifunlock(ip); - error = 0; - goto out_unlock; - } - error = xfs_iflush(ip, SYNC_TRYLOCK); + xfs_iunlock(ip, XFS_ILOCK_SHARED); } - out_unlock: - xfs_iunlock(ip, XFS_ILOCK_SHARED); - out: /* * if we failed to write out the inode then mark * it dirty again so we'll try again later. From BATV+ace79a25b605642ce9d6+2857+infradead.org+hch@bombadil.srs.infradead.org Mon Jun 20 04:08:02 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5K981BA136272 for ; Mon, 20 Jun 2011 04:08:02 -0500 X-ASG-Debug-ID: 1308560879-428402dc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 97B5B4E2C22 for ; Mon, 20 Jun 2011 02:07:59 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id upu5eRYUNksIqOWC for ; Mon, 20 Jun 2011 02:07:59 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QYaSY-0000Px-Nu; Mon, 20 Jun 2011 09:07:54 +0000 Date: Mon, 20 Jun 2011 05:07:54 -0400 From: Christoph Hellwig To: Allison Henderson Cc: linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Re: [PATCH 2/3 v5] XFS TESTS: Expand 252 punch hole test Subject: Re: [PATCH 2/3 v5] XFS TESTS: Expand 252 punch hole test Message-ID: <20110620090754.GA27583@infradead.org> References: <4DED63DE.1070000@vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DED63DE.1070000@vnet.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308560879 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66588 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 actually broke 242 due to the new output from the new tests for me. Next time please do a full xfsqa run before submitting patches. From BATV+ace79a25b605642ce9d6+2857+infradead.org+hch@bombadil.srs.infradead.org Mon Jun 20 05:48:14 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p5KAmEB7140331 for ; Mon, 20 Jun 2011 05:48:14 -0500 X-ASG-Debug-ID: 1308566891-3037025b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2BA311D30D for ; Mon, 20 Jun 2011 03:48:11 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id Gx6vZI5Eq1BiESef for ; Mon, 20 Jun 2011 03:48:11 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QYc1b-0000gr-4N for xfs@oss.sgi.com; Mon, 20 Jun 2011 10:48:11 +0000 Date: Mon, 20 Jun 2011 06:48:11 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfstests: update test 042 golden output Subject: [PATCH] xfstests: update test 042 golden output Message-ID: <20110620104811.GA1925@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308566892 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66594 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Add the golden output for the newly added tests in common.punch. Signed-off-by: Christoph Hellwig Index: xfstests-dev/242.out =================================================================== --- xfstests-dev.orig/242.out 2011-06-20 09:05:09.000000000 +0000 +++ xfstests-dev/242.out 2011-06-20 09:05:18.000000000 +0000 @@ -47,3 +47,14 @@ QA output created by 242 0: [0..7]: data 1: [8..31]: unwritten 2: [32..39]: data + 14. data -> hole @ EOF +0: [0..23]: data +1: [24..39]: unwritten + 15. data -> hole @ 0 +0: [0..15]: unwritten +1: [16..39]: data + 16. data -> cache cold ->hole +0: [0..15]: unwritten +1: [16..39]: data + 17. data -> hole in single block file +0: [0..7]: unwritten From markus@trippelsdorf.de Mon Jun 20 06:14:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p5KBE3IV141338 for ; Mon, 20 Jun 2011 06:14:03 -0500 X-ASG-Debug-ID: 1308568440-3488006e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3AF1F172E722 for ; Mon, 20 Jun 2011 04:14:01 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id pWzsD2c0MFuiaND2 for ; Mon, 20 Jun 2011 04:14:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:content-transfer-encoding:in-reply-to; q=dns/txt; s= beta; bh=Ofjz8MeTIfKgMWSKK7tvQ9BF/w5kt6kYR7lQb3ZbrqI=; b=K8At5j+ SjhDG3DboinK58ZkTTDUprDXjhJ+XeZsJB80kC+tfo5crHYtMzUfncvsPegH2vq5 +PBrFD3HKvzvgqr1NWyxmFzeU3nftTNSf0paaY/sO8xNwkNhhhlebU4R5ewiZHSZ 9h84YWXw441nBwjFE2EzB3j1kGrwv9NCJAZo= Received: (qmail 10850 invoked from network); 20 Jun 2011 13:14:00 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.66.182.48) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 20 Jun 2011 13:14:00 +0200 Date: Mon, 20 Jun 2011 13:13:59 +0200 From: Markus Trippelsdorf To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110620111359.GA12632@x4.trippels.de> References: <20110618141950.GA1685@x4.trippels.de> <20110619222447.GI561@dastard> <20110620005415.GA1730@x4.trippels.de> <20110620013449.GO561@dastard> <20110620020236.GB1730@x4.trippels.de> <20110620023625.GP561@dastard> <20110620060351.GC1730@x4.trippels.de> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20110620060351.GC1730@x4.trippels.de> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1308568442 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66596 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 2011.06.20 at 08:03 +0200, Markus Trippelsdorf wrote: > On 2011.06.20 at 12:36 +1000, Dave Chinner wrote: > > On Mon, Jun 20, 2011 at 04:02:36AM +0200, Markus Trippelsdorf wrote: > > > On 2011.06.20 at 11:34 +1000, Dave Chinner wrote: > > > > On Mon, Jun 20, 2011 at 02:54:15AM +0200, Markus Trippelsdorf wrote: > > > > > On 2011.06.20 at 08:24 +1000, Dave Chinner wrote: > > > > > > On Sat, Jun 18, 2011 at 04:19:50PM +0200, Markus Trippelsdorf wrote: > > > > > > > Running the latest git kernel (3.0-rc3) my machine hangs for long > > > > > > > periods (1-2 sec) whenever I delete a large directory recursively on my > > > > > > > xfs partition. During the hang I cannot move the mouse pointer or use > > > > > > > the keyboard (but the music keeps playing without stuttering). A quick > > > > > > > way to reproduce is to "rm -fr" a kernel tree. > > > > > > > > > > > > So what is the system doing when it "hangs"? Is it CPU bound (e.g. > > > > > > cpu scheduler issue)? Is the system running out of memory and > > > > > > stalling everything in memory reclaim? What IO is occurring? > > > > > > > > > > It's totally idle otherwise; just a desktop with a single xterm. The > > > > > machine has four cores (and also runs with "CONFIG_PREEMPT=y"), so I > > > > > don't think it is CPU bound at all. It has 8GB of memory (and the > > > > > "hangs" even occur after reboot when most of it is free). No other IO > > > > > activity is occurring. > > > > > > > > Sure, the system might be otherwise idle, but what I was asking is > > > > what load does the "rm -rf" cause. What IO does it cause? is it cpu > > > > bound? etc. > > > > > > I have not measured this, so I cannot tell. > > > > And so you are speculating as to the cause of the problem. What I'm > > trying to do is work from the bottom up to ensure that the layers > > below the fs are not the cause of the problem. > > > > > > > > Is your partition correctly sector aligned for however your drive > > > > > > maps it's 4k sectors? > > > > > > > > > > Yes, it's a GPT partition that is aligned to 1MB. > > > > > > > > Ok, that is fine, but the big question now is how does the drive > > > > align sector 0? Is that 4k aligned, or is it one of those drives > > > > that aligns an odd 512 byte logical sector to the physical 4k sector > > > > boundary (i.e. sector 63 is 4k aligned to work with msdos > > > > partitions). FYI, some drives have jumpers on them to change this > > > > odd/even sector alignment configuration..... > > > > > > No, it's none of those (it's a Seagate Barracuda Green ST1500). Sector 0 > > > is 4k aligned for sure. The odd 512 byte offset was present only on some > > > first generation drives. > > > But I think the whole alignment issue is a red herring, because I cannot > > > reproduce the "hangs" on the next partition on the same drive. This > > > partition is larger and contains my music and film collection (so mostly > > > static content and no traffic). > > > > Which also means you might have one unaligned and one aligned > > partition. i.e. the test results you have presented does not > > necessarily point at a filesystem problem. We always ask for exact > > details of your storage subsystem for these reasons - so we can > > understand if there's something that you missed or didn't think was > > important enough to tell us. You may have already checked those > > things, but we don't know that if you don't tell us.... > > Understood. > > > So, is the sector alignment of the second partition the same as the > > first partition? > > Yes. > > > > And as I wrote in my other reply to this > > > thread: »it appears that the observed "hangs" are the result of a > > > strongly aged file-system.« > > > > There is no evidence that points to any cause. Hell, I don't even > > know what you consider a "strongly aged filesystem" looks like.... > > > > If the alignment is the cause of the problem, you should be able to > > see a difference in performance when doing random 4k synchronous > > writes to a large file on differently aligned partitions. Can you > > run the same random 4k sync write test on both partitions (make sure > > barriers are enabled) and determine if they perform the same? > > > > If the filesystem layout is the cause of the problem, you should be > > able to take a metadump of the problematic filesystem, restore it to > > a normal 512 sector drive and reproduce the "rm -rf" problem. Can > > you try this as well? > > OK. I was able to reproduce the same hang on a conventional 512 sector drive. > The partition that I've used was the predecessor to the one on the 4k drive. So > it saw roughly the same usage pattern. > This is the output of "dstat -cdyl -C 0,1,2,3 -D sdc --disk-tps" during the > hang: > > -------cpu0-usage--------------cpu1-usage--------------cpu2-usage--------------cpu3-usage------ --dsk/sdc-- ---system-- ---load-avg--- --dsk/sdc-- > usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq| read writ| int csw | 1m 5m 15m |reads writs > > 0 0 100 0 0 0: 1 0 99 0 0 0: 0 1 99 0 0 0: 1 0 99 0 0 0| 0 0 | 249 354 |0.33 0.58 0.38| 0 0 > 0 0 100 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0| 0 0 | 244 228 |0.33 0.58 0.38| 0 0 > 1 2 97 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0| 0 0 | 559 614 |0.33 0.58 0.38| 0 0 > 0 0 100 0 0 0: 1 0 99 0 0 0: 1 0 99 0 0 0: 1 0 99 0 0 0| 0 0 | 341 426 |0.33 0.58 0.38| 0 0 > 1 0 99 0 0 0: 1 4 95 0 0 0: 0 1 99 0 0 0: 1 16 83 0 0 0| 0 0 | 874 796 |0.33 0.58 0.38| 0 0 > 2 50 49 0 0 0: 1 9 90 0 0 0: 1 9 90 0 0 0: 1 23 76 0 0 0| 0 6400k|2803 2073 |0.46 0.60 0.39| 0 25 > 1 29 70 0 0 0: 1 1 98 0 0 0: 1 9 90 0 0 0: 1 53 46 0 0 0| 0 6400k|2047 1414 |0.46 0.60 0.39| 0 25 > 0 4 96 0 0 0: 0 0 100 0 0 0: 1 19 80 0 0 0: 0 80 20 0 0 0| 0 2048k|1425 685 |0.46 0.60 0.39| 0 8 > 2 1 97 0 0 0: 1 6 93 0 0 0: 0 5 95 0 0 0: 0 83 17 0 0 0| 0 4608k|1624 849 |0.46 0.60 0.39| 0 18 > 2 45 53 0 0 0: 1 16 83 0 0 0: 3 20 77 0 0 0: 1 15 84 0 0 0| 0 6400k|2420 1984 |0.46 0.60 0.39| 0 26 > 1 19 80 0 0 0: 2 8 90 0 0 0: 0 33 67 0 0 0: 0 33 67 0 0 0| 0 6400k|2694 2134 |0.59 0.63 0.40| 0 25 > 2 7 91 0 0 0: 2 1 97 0 0 0: 1 0 99 0 0 0: 0 49 10 41 0 0| 0 8269k|1865 1571 |0.59 0.63 0.40| 0 363 > 1 1 98 0 0 0: 1 1 98 0 0 0: 1 1 98 0 0 0: 0 1 0 99 0 0| 0 4778k|1509 1639 |0.59 0.63 0.40| 0 410 > 2 0 98 0 0 0: 2 1 97 0 0 0: 1 1 98 0 0 0: 2 0 0 98 0 0| 0 5318k|1663 1809 |0.59 0.63 0.40| 0 426 > 1 1 98 0 0 0: 2 7 91 0 0 0: 1 0 99 0 0 0: 1 0 0 99 0 0| 0 5446k|1659 1806 |0.59 0.63 0.40| 0 432 > 0 1 99 0 0 0: 1 0 99 0 0 0: 2 0 98 0 0 0: 0 1 17 82 0 0| 0 5472k|1572 1837 |0.62 0.63 0.40| 0 439 > 2 0 98 0 0 0: 2 2 96 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0| 0 397k|1058 1049 |0.62 0.63 0.40| 0 36 > 1 1 98 0 0 0: 1 1 98 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0| 0 0 | 617 689 |0.62 0.63 0.40| 0 0 > 9 4 87 0 0 0: 4 0 96 0 0 0: 1 1 98 0 0 0: 8 6 87 0 0 0| 0 0 |1234 1961 |0.62 0.63 0.40| 0 0 > 0 1 99 0 0 0: 1 1 98 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0| 0 0 | 391 403 |0.62 0.63 0.40| 0 0 > 1 0 99 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0| 0 0 | 366 375 |0.57 0.62 0.40| 0 0 > Here are two more examples. The time when the hang occurs is marked with "=>": ------cpu0-usage--------------cpu1-usage--------------cpu2-usage--------------cpu3-usage------ --dsk/sdb-- ---system-- ---load-avg--- --dsk/sdb-- usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq| read writ| int csw | 1m 5m 15m |reads writs 0 0 100 0 0 0: 1 1 98 0 0 0: 1 0 99 0 0 0: 0 1 99 0 0 0| 0 0 | 411 498 |1.14 0.58 0.27| 0 0 1 1 98 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0: 0 0 100 0 0 0| 0 0 | 580 649 |1.05 0.57 0.27| 0 0 0 1 99 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0: 1 0 99 0 0 0| 0 0 | 297 353 |1.05 0.57 0.27| 0 0 1 0 99 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0| 0 0 | 322 393 |1.05 0.57 0.27| 0 0 0 0 100 0 0 0: 1 0 99 0 0 0: 1 0 99 0 0 0: 0 1 99 0 0 0| 0 0 | 301 382 |1.05 0.57 0.27| 0 0 1 16 83 0 0 0: 1 21 78 0 0 0: 0 13 87 0 0 0: 1 13 87 0 0 0| 0 2016k|2169 1495 |1.05 0.57 0.27| 0 57 1 10 89 0 0 0: 2 38 61 0 0 0: 1 8 81 10 0 0: 0 64 36 0 0 0| 0 4476k|2378 2010 |1.12 0.59 0.28| 0 146 =>0 0 100 0 0 0: 0 1 99 0 0 0: 0 1 0 99 0 0: 0 100 0 0 0 0| 0 0 |1237 283 |1.12 0.59 0.28| 0 0 0 27 73 0 0 0: 1 0 99 0 0 0: 0 0 47 53 0 0: 0 56 44 0 0 0| 0 5812k|1596 857 |1.12 0.59 0.28| 0 182 1 5 35 59 0 0: 2 0 85 13 0 0: 1 0 99 0 0 0: 0 7 28 65 0 0| 0 6263k|1789 1835 |1.12 0.59 0.28| 0 555 1 0 99 0 0 0: 0 1 99 0 0 0: 1 0 99 0 0 0: 0 4 6 90 0 0| 0 2664k|1074 1155 |1.12 0.59 0.28| 0 286 4 1 95 0 0 0: 4 2 94 0 0 0: 2 1 97 0 0 0: 6 4 91 0 0 0| 0 1189k|1628 2106 |1.11 0.60 0.28| 0 137 1 0 99 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0| 0 1024B| 491 438 |1.11 0.60 0.28| 0 1 1 1 98 0 0 0: 2 0 98 0 0 0: 1 0 99 0 0 0: 0 0 100 0 0 0| 0 0 | 583 524 |1.11 0.60 0.28| 0 0 5 1 94 0 0 0: 1 1 98 0 0 0: 0 1 99 0 0 0: 7 7 87 0 0 0| 0 0 |1148 1823 |1.11 0.60 0.28| 0 0 5 3 92 0 0 0: 4 1 95 0 0 0: 2 0 98 0 0 0: 5 2 93 0 0 0| 0 0 |1374 1678 |0.70 0.65 0.40| 0 0 2 2 96 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0: 1 0 99 0 0 0| 0 0 | 913 635 |0.70 0.65 0.40| 0 0 0 3 97 0 0 0: 1 0 99 0 0 0: 1 1 98 0 0 0: 1 5 94 0 0 0| 0 512B| 898 697 |0.70 0.65 0.40| 0 1 7 41 52 0 0 0: 2 11 87 0 0 0: 5 6 89 0 0 0: 3 1 96 0 0 0| 0 5856k|2771 2751 |0.70 0.65 0.40| 0 177 7 26 67 0 0 0: 4 1 95 0 0 0: 1 37 62 0 0 0: 3 38 59 0 0 0| 0 864k|2904 2806 |0.70 0.65 0.40| 0 33 =>2 1 97 0 0 0: 1 0 99 0 0 0: 0 1 99 0 0 0: 0 100 0 0 0 0| 0 0 |1725 639 |0.89 0.69 0.41| 0 0 1 1 98 0 0 0: 2 1 97 0 0 0: 2 1 97 0 0 0: 0 71 29 0 0 0| 0 3968k|1793 852 |0.89 0.69 0.41| 0 123 4 1 95 0 0 0: 3 48 49 0 0 0: 4 18 78 0 0 0: 5 6 89 0 0 0| 0 5120k|2920 3050 |0.89 0.69 0.41| 0 159 3 54 43 0 0 0: 1 8 91 0 0 0: 1 4 95 0 0 0: 1 5 94 0 0 0|4096B 4160k|2705 1936 |0.89 0.69 0.41| 1 132 1 40 59 0 0 0: 1 3 96 0 0 0: 1 13 86 0 0 0: 1 1 98 0 0 0| 0 5984k|2312 1568 |0.89 0.69 0.41| 0 187 1 23 76 0 0 0: 0 5 95 0 0 0: 1 16 83 0 0 0: 1 13 86 0 0 0| 0 6976k|2310 1751 |0.90 0.70 0.41| 0 213 0 1 31 68 0 0: 0 20 80 0 0 0: 0 19 36 45 0 0: 1 22 76 0 0 1| 0 8645k|2364 1773 |0.90 0.70 0.41| 0 578 1 0 98 1 0 0: 1 3 96 0 0 0: 1 1 28 70 0 0: 1 3 96 0 0 0| 0 4506k|1520 1358 |0.90 0.70 0.41| 0 374 2 2 96 0 0 0: 2 1 97 0 0 0: 0 0 100 0 0 0: 0 6 94 0 0 0| 0 504k| 877 726 |0.90 0.70 0.41| 0 92 1 1 98 0 0 0: 1 1 98 0 0 0: 1 0 99 0 0 0: 2 0 98 0 0 0| 0 78k| 907 753 |0.90 0.70 0.41| 0 17 1 3 96 0 0 0: 2 1 97 0 0 0: 0 1 99 0 0 0: 1 1 98 0 0 0| 0 0 | 894 710 |0.83 0.69 0.41| 0 0 2 0 98 0 0 0: 2 0 98 0 0 0: 1 0 99 0 0 0: 1 0 99 0 0 0| 0 0 | 901 682 |0.83 0.69 0.41| 0 0 -- Markus From michael.monnerie@is.it-management.at Mon Jun 20 06:45:35 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5KBjYOJ143033 for ; Mon, 20 Jun 2011 06:45:35 -0500 X-ASG-Debug-ID: 1308570333-303603b60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv14.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BE37E1D0BD for ; Mon, 20 Jun 2011 04:45:33 -0700 (PDT) Received: from mailsrv14.zmi.at (mailsrv1.zmi.at [212.69.164.54]) by cuda.sgi.com with ESMTP id uJUf9mHuY1QDSCRu for ; Mon, 20 Jun 2011 04:45:33 -0700 (PDT) Received: from mailsrv.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 mailsrv14.zmi.at (Postfix) with ESMTPSA id 3B83917F; Mon, 20 Jun 2011 13:45:32 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.72.27.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv.i.zmi.at (Postfix) with ESMTPSA id AA0BD401C3D; Mon, 20 Jun 2011 13:45:30 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Date: Mon, 20 Jun 2011 13:45:28 +0200 User-Agent: KMail/1.13.6 (Linux/2.6.39.1-zmi; KDE/4.6.0; x86_64; ; ) Cc: Markus Trippelsdorf , Dave Chinner References: <20110618141950.GA1685@x4.trippels.de> <20110620060351.GC1730@x4.trippels.de> <20110620111359.GA12632@x4.trippels.de> In-Reply-To: <20110620111359.GA12632@x4.trippels.de> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart6937668.O5YjFQhyis"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <201106201345.30271@zmi.at> X-Barracuda-Connect: mailsrv1.zmi.at[212.69.164.54] X-Barracuda-Start-Time: 1308570333 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0203 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66597 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 --nextPart6937668.O5YjFQhyis Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable On Montag, 20. Juni 2011 Markus Trippelsdorf wrote: > Here are two more examples. The time when the hang occurs is marked Could it be that some sectors on the disk are not easy to read for the=20 drive, and that it simply retries several times until it works again?=20 SATA disks can show that behaviour. You could try with "dd" with=20 seek/skip parameters so you read 1gb at once, then skip 1gb and read 1gb=20 again etc, and compare the throughput over all 1gb areas. If there's one=20 slower, that might be the problem. Maybe a check with "smartctl" could help, too. Just an idea because during your hang, no CPU or I/O is done, so I guess=20 it wouldn't be the fault of Linux/XFS or other software, but more=20 hardware. =2D-=20 mit freundlichen Gr=FCssen, Michael Monnerie, Ing. BSc it-management Internet Services: Prot=E9ger http://proteger.at [gesprochen: Prot-e-schee] Tel: +43 660 / 415 6531 // Haus zu verkaufen: http://zmi.at/langegg/ --nextPart6937668.O5YjFQhyis Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) iEYEABECAAYFAk3/MtoACgkQzhSR9xwSCbSLLQCgkAMc1l0dAvG1Zqfu51d12KzJ CysAn2fBRYzIZTlayXuhY1h2Ox1QPxx1 =yuN6 -----END PGP SIGNATURE----- --nextPart6937668.O5YjFQhyis-- From markus@trippelsdorf.de Mon Jun 20 07:31:35 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p5KCVZ98150958 for ; Mon, 20 Jun 2011 07:31:35 -0500 X-ASG-Debug-ID: 1308573093-11d703120000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E70271578CA6 for ; Mon, 20 Jun 2011 05:31:34 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id IDEl4ZQpyNMCXbOL for ; Mon, 20 Jun 2011 05:31:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:in-reply-to; q=dns/txt; s=beta; bh=hAp4Fjw+CYg8u3oe q9FHfNxrc6hOJ8ULQzoa2tUJyDg=; b=NDqsvnkZTLFxyMmmJbY4lCIsyT3e2Ci+ KobhZnRzumYPtsKEP+pETT6qT5TQcN/bkMXyqB8W5hsjOcYv5DkMuC8iBg1bGBs4 jDq6kPxyF6AAVmh7IiGgDCpJgPJqKY9KnVBPvj0PMDqyYia8XhRcMImZdHnkxV5T +Hl3j0L+r18= Received: (qmail 320 invoked from network); 20 Jun 2011 14:31:33 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.66.182.48) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 20 Jun 2011 14:31:33 +0200 Date: Mon, 20 Jun 2011 14:31:32 +0200 From: Markus Trippelsdorf To: Michael Monnerie Cc: xfs@oss.sgi.com, Dave Chinner X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110620123132.GA1717@x4.trippels.de> References: <20110618141950.GA1685@x4.trippels.de> <20110620060351.GC1730@x4.trippels.de> <20110620111359.GA12632@x4.trippels.de> <201106201345.30271@zmi.at> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201106201345.30271@zmi.at> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1308573094 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1392 1.0000 -1.1629 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.16 X-Barracuda-Spam-Status: No, SCORE=-1.16 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66602 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 2011.06.20 at 13:45 +0200, Michael Monnerie wrote: > On Montag, 20. Juni 2011 Markus Trippelsdorf wrote: > > Here are two more examples. The time when the hang occurs is marked > > Could it be that some sectors on the disk are not easy to read for the > drive, and that it simply retries several times until it works again? > SATA disks can show that behaviour. You could try with "dd" with > seek/skip parameters so you read 1gb at once, then skip 1gb and read 1gb > again etc, and compare the throughput over all 1gb areas. If there's one > slower, that might be the problem. > > Maybe a check with "smartctl" could help, too. Thanks for the hint, Michael. I've just checked the SMART status on both disks and the 4kb drive looks indeed suspicious: 197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 8 198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 8 The 512 byte drive appears to be fine. But I'm running the long SMART self test on both of them right now and will report back the result in a few hours. -- Markus From achender@linux.vnet.ibm.com Mon Jun 20 09:49:46 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5KEnjVM156672 for ; Mon, 20 Jun 2011 09:49:46 -0500 X-ASG-Debug-ID: 1308581384-10f001d50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e32.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0F0514E34ED for ; Mon, 20 Jun 2011 07:49:44 -0700 (PDT) Received: from e32.co.us.ibm.com (e32.co.us.ibm.com [32.97.110.150]) by cuda.sgi.com with ESMTP id N79n5TFp2zZWaXrT for ; Mon, 20 Jun 2011 07:49:44 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by e32.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5KEbrco018680 for ; Mon, 20 Jun 2011 08:37:53 -0600 Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5KEnQUL157076 for ; Mon, 20 Jun 2011 08:49:30 -0600 Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5K8mrYi032633 for ; Mon, 20 Jun 2011 02:48:55 -0600 Received: from lc4eb0185863151.ibm.com (sig-9-65-4-173.mts.ibm.com [9.65.4.173]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5K8mqL7032532; Mon, 20 Jun 2011 02:48:52 -0600 Message-ID: <4DFF5DEF.5040709@linux.vnet.ibm.com> Date: Mon, 20 Jun 2011 07:49:19 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Christoph Hellwig CC: Allison Henderson , linux-fsdevel , Ext4 Developers List , xfs-oss X-ASG-Orig-Subj: Re: [PATCH 2/3 v5] XFS TESTS: Expand 252 punch hole test Subject: Re: [PATCH 2/3 v5] XFS TESTS: Expand 252 punch hole test References: <4DED63DE.1070000@vnet.ibm.com> <20110620090754.GA27583@infradead.org> In-Reply-To: <20110620090754.GA27583@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e32.co.us.ibm.com[32.97.110.150] X-Barracuda-Start-Time: 1308581385 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 06/20/2011 02:07 AM, Christoph Hellwig wrote: > This actually broke 242 due to the new output from the new tests for me. > > Next time please do a full xfsqa run before submitting patches. > Ah, sorry about that, I will remember to run the whole xfsqa from now on. I think I have another set I submitted last night that I need to do that with too. I will get it fixed up and resent. Allison Henderson From kfr@sgi.com Mon Jun 20 15:56:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5KKuNXB186440 for ; Mon, 20 Jun 2011 15:56:23 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id D61FEAC002; Mon, 20 Jun 2011 13:56:19 -0700 (PDT) Received: from [128.162.233.20] (cabernet.americas.sgi.com [128.162.233.20]) by estes.americas.sgi.com (Postfix) with ESMTP id 9568870001C8; Mon, 20 Jun 2011 15:56:19 -0500 (CDT) Message-ID: <4DFFB3F3.3070606@sgi.com> Date: Mon, 20 Jun 2011 15:56:19 -0500 From: Kevan Rehm User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) Gecko/20101207 Lightning/1.0b2 Thunderbird/3.1.7 MIME-Version: 1.0 To: xfs@oss.sgi.com Subject: question on xfs_vm_writepage in combination with fsync X-Enigmail-Version: 1.1.1 Content-Type: text/plain; charset=ISO-8859-1 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 Greetings, I've run into a case where the fsync() system call seems to have returned before all file data was actually on disk. (A SLES11SP1 system crash occurred shortly after an fsync which had returned zero. After restarting the machine, the last I/O before the fsync is not in the file.) In attempting to find the problem, I've come across code I don't understand, and am hoping someone can enlighten me as to how things are supposed to work. Routine xfs_vm_writepage has various situations under which it will decide it can't currently initiate writeback on a page, and in that case calls redirty_page_for_writepage, unlocks the page, and returns zero. That seems to me to be incompatible with fsync(), so I'm obviously missing some key piece of logic. The calling sequence of routines involved in fsync is: do_fsync->vfs_fsync->vfs_fsync_range-> filemap_write_and_wait_range-> __filemap_fdatawrite_range-> do_writepages->generic_writepages-> write_cache_pages Routine write_cache_pages walks the radix tree and calls clear_page_dirty_for_io and then __writepage on each dirty page to initiate writeback. __writepage calls xfs_vm_writepage. That routine is occasionally unable to immediately start writeback of the page, and so it calls redirty_page_for_writepage without setting the writeback flag. When write_cache_pages resumes after the __writepage call, it continues walking the radix tree starting additional writebacks on dirty pages, but nothing I can see will ever come back and try again to start a writeback on the page that xfs_vm_writepage couldn't writeback. Eventually control bubbles back up to filemap_write_and_wait_range() where wait_on_page_writeback_range is called, but that routine only waits for writebacks to complete, it doesn't do anything about dirty pages. So it appears to me that the dirty page will be left dirty indefinitely even though the wbc contained WB_SYNC_ALL. I'd like to believe that I am missing something, and that the code is correct, but I do have a crash dump where I can see dirty pages in files that were recently fsync'd. And I can't believe the problem is something inside XFS, because I see other filesystems also call redirty_page_for_writepage, so I think the same problem could occur with them. Could someone please describe to me how fsync is supposed to work in combination with xfs_vm_writepage? Thanks in advance, Regards, Kevan From markus@trippelsdorf.de Mon Jun 20 16:16:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p5KLGAhQ187544 for ; Mon, 20 Jun 2011 16:16:10 -0500 X-ASG-Debug-ID: 1308604568-7bff02600000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A9B96123BE7A for ; Mon, 20 Jun 2011 14:16:08 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id 18lTYvgimkmcmOZr for ; Mon, 20 Jun 2011 14:16:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:in-reply-to; q=dns/txt; s=beta; bh=GmAI6ueeecFUtofz T/dBAUMXnwKTX0EXuek6dKinLsM=; b=afAhW4Tz9DU05Z76ey7eeCmhOt+hEuZL mDi/T/SAZmncZ0PmV13b7IxfZlkglIa9zaSaWo7OjaJuGWDl4m7M3d/BWeF+3/sK yjAwAbI58yqDUO3Fg75oRbLr4OhZSCS4N8oRb7aE5GSebGO9kPTvix2HouymwPv5 tCwiC1ua+CA= Received: (qmail 28765 invoked from network); 20 Jun 2011 23:16:07 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.66.182.48) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 20 Jun 2011 23:16:07 +0200 Date: Mon, 20 Jun 2011 23:16:07 +0200 From: Markus Trippelsdorf To: Michael Monnerie Cc: xfs@oss.sgi.com, Dave Chinner X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110620211607.GA1722@x4.trippels.de> References: <20110618141950.GA1685@x4.trippels.de> <20110620060351.GC1730@x4.trippels.de> <20110620111359.GA12632@x4.trippels.de> <201106201345.30271@zmi.at> <20110620123132.GA1717@x4.trippels.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110620123132.GA1717@x4.trippels.de> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1308604569 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0204 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66636 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 2011.06.20 at 14:31 +0200, Markus Trippelsdorf wrote: > On 2011.06.20 at 13:45 +0200, Michael Monnerie wrote: > > On Montag, 20. Juni 2011 Markus Trippelsdorf wrote: > > > Here are two more examples. The time when the hang occurs is marked > > > > Could it be that some sectors on the disk are not easy to read for the > > drive, and that it simply retries several times until it works again? > > SATA disks can show that behaviour. You could try with "dd" with > > seek/skip parameters so you read 1gb at once, then skip 1gb and read 1gb > > again etc, and compare the throughput over all 1gb areas. If there's one > > slower, that might be the problem. > > > > Maybe a check with "smartctl" could help, too. > > Thanks for the hint, Michael. I've just checked the SMART status on > both disks and the 4kb drive looks indeed suspicious: > > 197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 8 > 198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 8 > > The 512 byte drive appears to be fine. But I'm running the long > SMART self test on both of them right now and will report back > the result in a few hours. Hmm, both tests ran fine without any errors. And the two SMART attributes above are back to zero again (must have been a temporary firmware hiccup). As you can see in the data I've posted, the disk workload consists almost only of writes. And I don't think a disk retries writes several times. On the contrary a write to a bad sector should fix it, because the drive can then remap it safely. (Current_Pending_Sector would decrease and Reallocated_Sector_Ct would increase. But Reallocated_Sector_Ct is still 0 on both affected drives) And shouldn't I see these "hangs" in situations other than "rm -fr", if the disk drive would be responsible? -- Markus From david@fromorbit.com Mon Jun 20 18:51:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5KNp0Dx197086 for ; Mon, 20 Jun 2011 18:51:01 -0500 X-ASG-Debug-ID: 1308613858-25c5007b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C0B6A1E4AEB0 for ; Mon, 20 Jun 2011 16:50:58 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id yb7OIsDrWU0iTDbM for ; Mon, 20 Jun 2011 16:50:58 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAD7Z/015LChD/2dsb2JhbABTpmZ4yQ0OhhwEmVSIHQ Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 21 Jun 2011 09:20:57 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QYoEq-0007Vq-E5; Tue, 21 Jun 2011 09:50:40 +1000 Date: Tue, 21 Jun 2011 09:50:40 +1000 From: Dave Chinner To: Kevan Rehm Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: question on xfs_vm_writepage in combination with fsync Subject: Re: question on xfs_vm_writepage in combination with fsync Message-ID: <20110620235040.GQ561@dastard> References: <4DFFB3F3.3070606@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DFFB3F3.3070606@sgi.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308613859 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0028 1.0000 -2.0024 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.00 X-Barracuda-Spam-Status: No, SCORE=-2.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66647 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, Jun 20, 2011 at 03:56:19PM -0500, Kevan Rehm wrote: > Greetings, > > I've run into a case where the fsync() system call seems to have > returned before all file data was actually on disk. (A SLES11SP1 system > crash occurred shortly after an fsync which had returned zero. After > restarting the machine, the last I/O before the fsync is not in the > file.) In attempting to find the problem, I've come across code I don't > understand, and am hoping someone can enlighten me as to how things are > supposed to work. > > Routine xfs_vm_writepage has various situations under which it will > decide it can't currently initiate writeback on a page, and in that case > calls redirty_page_for_writepage, unlocks the page, and returns zero. > That seems to me to be incompatible with fsync(), so I'm obviously > missing some key piece of logic. > > The calling sequence of routines involved in fsync is: > > do_fsync->vfs_fsync->vfs_fsync_range-> > filemap_write_and_wait_range-> > __filemap_fdatawrite_range-> > do_writepages->generic_writepages-> > write_cache_pages > > Routine write_cache_pages walks the radix tree and calls > clear_page_dirty_for_io and then __writepage on each dirty page to > initiate writeback. __writepage calls xfs_vm_writepage. That routine > is occasionally unable to immediately start writeback of the page, and > so it calls redirty_page_for_writepage without setting the writeback flag. Hi Kevan, The current xfs_vm_writepage mainline code will only enter the redirty path if: - it is called from direct memory reclaim - it is called within a transaction context and we need to do an allocation transaction - it is WB_SYNC_NONE writeback and we can't get the inode lock without blocking during block mapping (EAGAIN case). None of these cases are triggered by fsync() driven (WB_SYNC_ALL) writeback, so AFAICT fsync() based writeback should not be skipping writeback of dirty pages in the given fsync range. So for a mainline kernel I don't think there are any problems w.r.t. fsync() and redirtying pages causing dirty pages to be skipped during writeback. However, the mainline writeback path has had significant change (especially to WB_SYNC_ALL writeback) since sles11sp1 was snapshotted (2.6.32, right?). Hence it is possible that one (or several) of the changes fixed this bug without us even realising it was a problem. That said, having dirty pages after an fsync is not necessarily an fsync bug - something coul dhave dirtied them while the fsync was in progress. I don't know any details of how this occurred, so I'm simply speculating that there could be other causes of the dirty pages you are seeing... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Jun 20 19:06:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5L061Ms199849 for ; Mon, 20 Jun 2011 19:06:01 -0500 X-ASG-Debug-ID: 1308614759-148802480000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B724F134B78C for ; Mon, 20 Jun 2011 17:06:00 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id MnJ2pEVVUjyQwS3y for ; Mon, 20 Jun 2011 17:06:00 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAL/c/015LChD/2dsb2JhbABTpmZ4iHPAIA6GHASZVIgd Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 21 Jun 2011 09:35:59 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QYoTd-0007YU-QR; Tue, 21 Jun 2011 10:05:57 +1000 Date: Tue, 21 Jun 2011 10:05:57 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: work around bogus gcc warning in xfs_allocbt_init_cursor Subject: Re: [PATCH] xfs: work around bogus gcc warning in xfs_allocbt_init_cursor Message-ID: <20110621000557.GG32466@dastard> References: <20110617131214.GA2141@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110617131214.GA2141@infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308614760 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66648 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, Jun 17, 2011 at 09:12:14AM -0400, Christoph Hellwig wrote: > GCC 4.6 complains about an array subscript is above array bounds when > using the btree index to index into the agf_levels array. The only > two indices passed in are 0 and 1, and we have an assert insuring that. > > Replace the trick of using the array index directly with using constants > in the already existing branch for assigning the XFS_BTREE_LASTREC_UPDATE > flag. Ugh. > Signed-off-by: Christoph Hellwig > > Index: xfs/fs/xfs/xfs_alloc_btree.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_alloc_btree.c 2011-06-17 14:16:27.929065669 +0200 > +++ xfs/fs/xfs/xfs_alloc_btree.c 2011-06-17 14:17:22.145729599 +0200 > @@ -427,13 +427,16 @@ xfs_allocbt_init_cursor( > > cur->bc_tp = tp; > cur->bc_mp = mp; > - cur->bc_nlevels = be32_to_cpu(agf->agf_levels[btnum]); > cur->bc_btnum = btnum; > cur->bc_blocklog = mp->m_sb.sb_blocklog; > - > cur->bc_ops = &xfs_allocbt_ops; > - if (btnum == XFS_BTNUM_CNT) > + > + if (btnum == XFS_BTNUM_CNT) { > + cur->bc_nlevels = be32_to_cpu(agf->agf_levels[XFS_BTNUM_CNT]); > cur->bc_flags = XFS_BTREE_LASTREC_UPDATE; > + } else { > + cur->bc_nlevels = be32_to_cpu(agf->agf_levels[XFS_BTNUM_BNO]); > + } > > cur->bc_private.a.agbp = agbp; > cur->bc_private.a.agno = agno; Looks fine. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Jun 20 19:09:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5L09Nos200418 for ; Mon, 20 Jun 2011 19:09:23 -0500 X-ASG-Debug-ID: 1308614961-25c800b40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F08181730B3C for ; Mon, 20 Jun 2011 17:09:21 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id zDACk8abMRSMej3L for ; Mon, 20 Jun 2011 17:09:21 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAAPg/015LChD/2dsb2JhbABTpmZ4yQUOhhwEmVSIHQ Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 21 Jun 2011 09:39:21 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QYoWu-0007ZD-14; Tue, 21 Jun 2011 10:09:20 +1000 Date: Tue, 21 Jun 2011 10:09:19 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: fix filesystsem freeze race in xfs_trans_alloc Subject: Re: [PATCH] xfs: fix filesystsem freeze race in xfs_trans_alloc Message-ID: <20110621000919.GH32466@dastard> References: <20110620072350.GA19765@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110620072350.GA19765@infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308614963 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66647 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, Jun 20, 2011 at 03:23:51AM -0400, Christoph Hellwig wrote: > As pointed out by Jan xfs_trans_alloc can race with a concurrent filesystem > free when it sleeps during the memory allocation. Fix this by moving the > wait_for_freeze call after the memory allocation. This means moving the > freeze into the low-level _xfs_trans_alloc helper, which thus grows a new > argument. Also fix up some comments in that area while at it. > > Signed-off-by: Christoph Hellwig > > Index: xfs/fs/xfs/xfs_fsops.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_fsops.c 2011-06-17 14:18:52.185725030 +0200 > +++ xfs/fs/xfs/xfs_fsops.c 2011-06-18 16:28:04.557624784 +0200 > @@ -626,7 +626,7 @@ xfs_fs_log_dummy( > xfs_trans_t *tp; > int error; > > - tp = _xfs_trans_alloc(mp, XFS_TRANS_DUMMY1, KM_SLEEP); > + tp = _xfs_trans_alloc(mp, XFS_TRANS_DUMMY1, KM_SLEEP, false); > error = xfs_trans_reserve(tp, 0, mp->m_sb.sb_sectsize + 128, 0, 0, > XFS_DEFAULT_LOG_COUNT); > if (error) { > Index: xfs/fs/xfs/xfs_iomap.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_iomap.c 2011-06-17 14:18:52.195725031 +0200 > +++ xfs/fs/xfs/xfs_iomap.c 2011-06-18 16:28:04.560958118 +0200 > @@ -688,8 +688,7 @@ xfs_iomap_write_unwritten( > * the same inode that we complete here and might deadlock > * on the iolock. > */ > - xfs_wait_for_freeze(mp, SB_FREEZE_TRANS); > - tp = _xfs_trans_alloc(mp, XFS_TRANS_STRAT_WRITE, KM_NOFS); > + tp = _xfs_trans_alloc(mp, XFS_TRANS_STRAT_WRITE, KM_NOFS, true); > tp->t_flags |= XFS_TRANS_RESERVE; > error = xfs_trans_reserve(tp, resblks, > XFS_WRITE_LOG_RES(mp), 0, > Index: xfs/fs/xfs/xfs_trans.h > =================================================================== > --- xfs.orig/fs/xfs/xfs_trans.h 2011-06-17 14:18:52.209058363 +0200 > +++ xfs/fs/xfs/xfs_trans.h 2011-06-18 16:28:04.560958118 +0200 > @@ -448,7 +448,7 @@ typedef struct xfs_trans { > * XFS transaction mechanism exported interfaces. > */ > xfs_trans_t *xfs_trans_alloc(struct xfs_mount *, uint); > -xfs_trans_t *_xfs_trans_alloc(struct xfs_mount *, uint, uint); > +xfs_trans_t *_xfs_trans_alloc(struct xfs_mount *, uint, uint, bool); > xfs_trans_t *xfs_trans_dup(xfs_trans_t *); > int xfs_trans_reserve(xfs_trans_t *, uint, uint, uint, > uint, uint); > Index: xfs/fs/xfs/xfs_mount.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_mount.c 2011-06-17 14:18:52.222391695 +0200 > +++ xfs/fs/xfs/xfs_mount.c 2011-06-18 16:28:04.560958118 +0200 > @@ -1566,15 +1566,9 @@ xfs_fs_writable(xfs_mount_t *mp) > } > > /* > - * xfs_log_sbcount > - * > * Called either periodically to keep the on disk superblock values > * roughly up to date or from unmount to make sure the values are > * correct on a clean unmount. > - * > - * Note this code can be called during the process of freezing, so > - * we may need to use the transaction allocator which does not not > - * block when the transaction subsystem is in its frozen state. > */ > int > xfs_log_sbcount( > @@ -1596,7 +1590,13 @@ xfs_log_sbcount( > if (!xfs_sb_version_haslazysbcount(&mp->m_sb)) > return 0; > > - tp = _xfs_trans_alloc(mp, XFS_TRANS_SB_COUNT, KM_SLEEP); > + /* > + * We can be called during the process of freezing, so make sure > + * we go ahead even if the frozen for new transactions. We will > + * always use a sync transaction in the freeze path to make sure > + * the transaction has completed by the time we return. > + */ > + tp = _xfs_trans_alloc(mp, XFS_TRANS_SB_COUNT, KM_SLEEP, false); > error = xfs_trans_reserve(tp, 0, mp->m_sb.sb_sectsize + 128, 0, 0, > XFS_DEFAULT_LOG_COUNT); > if (error) { > Index: xfs/fs/xfs/xfs_trans.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_trans.c 2011-06-09 11:51:01.000000000 +0200 > +++ xfs/fs/xfs/xfs_trans.c 2011-06-18 16:28:24.970957084 +0200 > @@ -566,31 +566,24 @@ xfs_trans_init( > > /* > * This routine is called to allocate a transaction structure. > + * > * The type parameter indicates the type of the transaction. These > * are enumerated in xfs_trans.h. > - * > - * Dynamically allocate the transaction structure from the transaction > - * zone, initialize it, and return it to the caller. > */ > -xfs_trans_t * > -xfs_trans_alloc( > - xfs_mount_t *mp, > - uint type) > -{ > - xfs_wait_for_freeze(mp, SB_FREEZE_TRANS); > - return _xfs_trans_alloc(mp, type, KM_SLEEP); > -} > - > -xfs_trans_t * > +struct xfs_trans * > _xfs_trans_alloc( > - xfs_mount_t *mp, > - uint type, > - uint memflags) > + struct xfs_mount *mp, > + uint type, > + uint memflags, > + bool wait_for_freeze) > { > - xfs_trans_t *tp; > + struct xfs_trans *tp; > > atomic_inc(&mp->m_active_trans); > > + if (wait_for_freeze) > + xfs_wait_for_freeze(mp, SB_FREEZE_TRANS); > + > tp = kmem_zone_zalloc(xfs_trans_zone, memflags); > tp->t_magic = XFS_TRANS_MAGIC; > tp->t_type = type; > @@ -600,6 +593,14 @@ _xfs_trans_alloc( > return tp; > } > > +struct xfs_trans * > +xfs_trans_alloc( > + struct xfs_mount *mp, > + uint type) > +{ > + return _xfs_trans_alloc(mp, type, KM_SLEEP, true); > +} > + The only thing I'd suggest is making xfs_trans_alloc() an inline function now that it's a simple wrapper. Otherwise looks good. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Jun 20 19:09:54 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p5L09slR200616 for ; Mon, 20 Jun 2011 19:09:54 -0500 X-ASG-Debug-ID: 1308614992-14f502270000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CE59C134B808 for ; Mon, 20 Jun 2011 17:09:53 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id KRisfVqTCwRUxIG8 for ; Mon, 20 Jun 2011 17:09:53 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAAPg/015LChD/2dsb2JhbABTpmZ4yQUOhhwEoXE Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 21 Jun 2011 09:39:52 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QYoXP-0007ZK-JR; Tue, 21 Jun 2011 10:09:51 +1000 Date: Tue, 21 Jun 2011 10:09:51 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests: update test 042 golden output Subject: Re: [PATCH] xfstests: update test 042 golden output Message-ID: <20110621000951.GI32466@dastard> References: <20110620104811.GA1925@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110620104811.GA1925@infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308614993 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0013 1.0000 -2.0127 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66648 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, Jun 20, 2011 at 06:48:11AM -0400, Christoph Hellwig wrote: > Add the golden output for the newly added tests in common.punch. > > Signed-off-by: Christoph Hellwig Looks good, but you need to update the subject for the correct test number ;) Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Jun 20 19:33:49 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5L0XmU0204751 for ; Mon, 20 Jun 2011 19:33:48 -0500 X-ASG-Debug-ID: 1308616426-1b8402850000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D6583134BBF2 for ; Mon, 20 Jun 2011 17:33:46 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id vA8p5JlZiOXruK15 for ; Mon, 20 Jun 2011 17:33:46 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAMTj/015LChD/2dsb2JhbABTpmZ4iHPABg6GHAShcQ Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 21 Jun 2011 10:03:45 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QYouV-0007bw-I9; Tue, 21 Jun 2011 10:33:43 +1000 Date: Tue, 21 Jun 2011 10:33:43 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com, Wu Fengguang X-ASG-Orig-Subj: Re: [PATCH] xfs: improve sync behaviour in face of aggressive dirtying Subject: Re: [PATCH] xfs: improve sync behaviour in face of aggressive dirtying Message-ID: <20110621003343.GJ32466@dastard> References: <20110617131401.GC2141@infradead.org> <20110620081802.GA27111@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110620081802.GA27111@infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308616427 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66648 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, Jun 20, 2011 at 04:18:02AM -0400, Christoph Hellwig wrote: > As confirmed by Wu moving to a workqueue flush as in the test patch > below brings our performance on par with other filesystems. But there's > a major and a minor issues with that. I like this much better than the previous inode iterator version. > The minor one is that we always flush all work items and not just those > on the filesystem to be flushed. This might become an issue for lager > systems, or when we apply a similar scheme to fsync, which has the same > underlying issue. For sync, I don't think it matters if we flush a few extra IO completions on a busy system. For fsync, it could increase fsync completion latency significantly, though I'd suggest we should address that problem when we apply the scheme to fsync. > The major one is that flush_workqueue only flushed work items that were > queued before it was called, but we can requeue completions when we fail > to get the ilock in xfs_setfilesize, which can lead to losing i_size > updates when it happens. Yes, I can see that will cause problems.... > I see two ways to fix this: either we implement our own workqueue > look-alike based on the old workqueue code. This would allow flushing > queues per-sb or even per-inode, and allow us to special case flushing > requeues as well before returning. No need for a look-alike. With the CMWQ infrastructure, there is no reason why we need global workqueues anymore. The log, data and convert wqs were global to minimise the number of per-cpu threads XFS required to operate. CMWQ prevents the explosion of mostly idle kernel threads, so we could move all these workqueues to per- struct xfs_mount without undue impact. We already have buftarg->xfs_mount and ioend->xfs_mount backpointers, so it would be trivial to do this conversion from the queueing/flushing POV. That immediately reduces the scope of the flushes necessary to sync a filesystem. I don't think we want to go to per-inode work contexts. One possibility is that for fsync related writeback (e.g. WB_SYNC_ALL) we could have a separate "fsync-completion" wqs that we queue completions to rather than the more widely used data workqueue. Then for fsync we'd only need to flush the fsync-completion workqueue rather than the mount wide data and convert wqs, and hence we wouldn't stall on IO completion for IO outside of fsync scope... > Or we copy the scheme ext4 uses for fsync (it completely fails to flush > the completion queue for plain sync), that is add a list of pending > items to the inode, and a lock to protect it. I don't like this because > it a) bloats the inode, b) adds a lot of complexity, and c) another lock > to the irq I/O completion. I'm not a great fan of that method, either. Using a separate wq channel(s) for fsync completions seems like a much cleaner solution to me... Cheers, Dave. > > > Index: xfs/fs/xfs/linux-2.6/xfs_sync.c > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2011-06-17 14:16:18.442399481 +0200 > +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2011-06-18 17:55:44.864025123 +0200 > @@ -359,14 +359,16 @@ xfs_quiesce_data( > { > int error, error2 = 0; > > - /* push non-blocking */ > - xfs_sync_data(mp, 0); > xfs_qm_sync(mp, SYNC_TRYLOCK); > - > - /* push and block till complete */ > - xfs_sync_data(mp, SYNC_WAIT); > xfs_qm_sync(mp, SYNC_WAIT); > > + /* flush all pending size updates and unwritten extent conversions */ > + flush_workqueue(xfsconvertd_workqueue); > + flush_workqueue(xfsdatad_workqueue); > + > + /* force out the newly dirtied log buffers */ > + xfs_log_force(mp, XFS_LOG_SYNC); > + > /* write superblock and hoover up shutdown errors */ > error = xfs_sync_fsdata(mp); > > Index: xfs/fs/xfs/linux-2.6/xfs_super.c > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_super.c 2011-06-18 17:51:05.660705925 +0200 > +++ xfs/fs/xfs/linux-2.6/xfs_super.c 2011-06-18 17:52:50.107367305 +0200 > @@ -929,45 +929,12 @@ xfs_fs_write_inode( > * ->sync_fs call do that for thus, which reduces the number > * of synchronous log foces dramatically. > */ > - xfs_ioend_wait(ip); > xfs_ilock(ip, XFS_ILOCK_SHARED); > - if (ip->i_update_core) { > + if (ip->i_update_core) > error = xfs_log_inode(ip); > - if (error) > - goto out_unlock; > - } > - } else { > - /* > - * We make this non-blocking if the inode is contended, return > - * EAGAIN to indicate to the caller that they did not succeed. > - * This prevents the flush path from blocking on inodes inside > - * another operation right now, they get caught later by > - * xfs_sync. > - */ > - if (!xfs_ilock_nowait(ip, XFS_ILOCK_SHARED)) > - goto out; > - > - if (xfs_ipincount(ip) || !xfs_iflock_nowait(ip)) > - goto out_unlock; > - > - /* > - * Now we have the flush lock and the inode is not pinned, we > - * can check if the inode is really clean as we know that > - * there are no pending transaction completions, it is not > - * waiting on the delayed write queue and there is no IO in > - * progress. > - */ > - if (xfs_inode_clean(ip)) { > - xfs_ifunlock(ip); > - error = 0; > - goto out_unlock; > - } > - error = xfs_iflush(ip, SYNC_TRYLOCK); > + xfs_iunlock(ip, XFS_ILOCK_SHARED); > } > > - out_unlock: > - xfs_iunlock(ip, XFS_ILOCK_SHARED); > - out: > /* > * if we failed to write out the inode then mark > * it dirty again so we'll try again later. Hmmm - I'm wondering if there is any performance implication for removing the background inode writeback flush here. I expect it will change inode flush patterns, and they are pretty good right now. I think we need to check if most inode writeback is coming from the AIL (due to log tail pushing) or from this function before making this change.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Jun 20 20:22:04 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5L1M4rd207864 for ; Mon, 20 Jun 2011 20:22:04 -0500 X-ASG-Debug-ID: 1308619321-5f6c02840000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 098CD1731D5E for ; Mon, 20 Jun 2011 18:22:02 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id 24Djp0JeFcAzDTfG for ; Mon, 20 Jun 2011 18:22:02 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EANvx/015LChD/2dsb2JhbABUpmZ4iHO/cw6GHASZVIgd Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 21 Jun 2011 10:51:51 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QYpf4-0007gd-Jv; Tue, 21 Jun 2011 11:21:50 +1000 Date: Tue, 21 Jun 2011 11:21:50 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] xfs: split xfs_setattr Subject: Re: [PATCH 1/2] xfs: split xfs_setattr Message-ID: <20110621012150.GK32466@dastard> References: <20110617131519.GA2822@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110617131519.GA2822@infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308619323 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66653 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, Jun 17, 2011 at 09:15:20AM -0400, Christoph Hellwig wrote: > Split up xfs_setattr into two functions, one for the complex truncate > handling, and one for the trivial attribute updates. Also move both > new routines to xfs_iops.c as they are fairly Linux-specific. > > Signed-off-by: Christoph Hellwig Looks good. A few minor comments below. > > Index: xfs/fs/xfs/linux-2.6/xfs_iops.c > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_iops.c 2011-06-17 14:07:57.059091534 +0200 > +++ xfs/fs/xfs/linux-2.6/xfs_iops.c 2011-06-17 14:18:42.495725522 +0200 > @@ -39,6 +39,7 @@ > #include "xfs_buf_item.h" > #include "xfs_utils.h" > #include "xfs_vnodeops.h" > +#include "xfs_inode_item.h" > #include "xfs_trace.h" > > #include > @@ -497,12 +498,452 @@ xfs_vn_getattr( > return 0; > } > > +int > +xfs_setattr_simple( > + struct xfs_inode *ip, > + struct iattr *iattr, > + int flags) > +{ I'm not sure that xfs_setattr_simple() is the best name for this. It's not really a simple setattr case, it's all the "all except size" changes. Perhaps xfs_setattr_nonsize() and xfs_setattr_size() would be a better name pair... ..... > + > + tp = xfs_trans_alloc(mp, XFS_TRANS_SETATTR_NOT_SIZE); > + error = xfs_trans_reserve(tp, 0, XFS_ICHANGE_LOG_RES(mp), 0, 0, 0); > + if (error) > + goto error_return; > + > + lock_flags = XFS_ILOCK_EXCL; > + xfs_ilock(ip, lock_flags); With a slight change to the error unwind stack, you can kill the lock_flags variable altogether - it never gets changed in the code except for here. .... > +error_return: > + xfs_qm_dqrele(udqp); > + xfs_qm_dqrele(gdqp); > + if (tp) > + xfs_trans_cancel(tp, 0); > + if (lock_flags != 0) > + xfs_iunlock(ip, lock_flags); > + return error; If you change it to: error_return: xfs_iunlock(ip, XFS_ILOCK_EXCL); error_free_tp: xfs_trans_cancel(tp, 0); xfs_qm_dqrele(udqp); xfs_qm_dqrele(gdqp); return error; And jump to error_free_tp when xfs_trans_reserve() fails above, lock_flags and the conditionals in the unwind stack go away. > + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); > + > + XFS_STATS_INC(xs_ig_attrchg); > + > + if (mp->m_flags & XFS_MOUNT_WSYNC) > + xfs_trans_set_sync(tp); > + > + error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); > + goto out_unlock; > + > +out_trans_abort: > + commit_flags |= XFS_TRANS_ABORT; > +out_trans_cancel: > + xfs_trans_cancel(tp, commit_flags); > +out_unlock: > + if (lock_flags) > + xfs_iunlock(ip, lock_flags); > + return error; > +} And here we never get to out_unlock without lock_flags being set, so the conditional can be removed. I also think that the goto after the commit call is a bit ugly. I'd prefer the none-failure case is straight line code so it is easy to follow, and the unwind stack has an extra jump in it. i.e.: if (mp->m_flags & XFS_MOUNT_WSYNC) xfs_trans_set_sync(tp); error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); out_unlock: xfs_iunlock(ip, lock_flags); return error; out_trans_abort: commit_flags |= XFS_TRANS_ABORT; out_trans_cancel: xfs_trans_cancel(tp, commit_flags); goto out_unlock; } Otherwise this looks like a good improvement - the setattr path has always been a mess and difficult to follow.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Jun 20 20:22:35 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5L1MYUF207902 for ; Mon, 20 Jun 2011 20:22:35 -0500 X-ASG-Debug-ID: 1308619353-38e201130000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5B34F1E479 for ; Mon, 20 Jun 2011 18:22:33 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id wN6ocsR1kqSm9Ldf for ; Mon, 20 Jun 2011 18:22:33 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EANvx/015LChD/2dsb2JhbABUpmZ4yGYOhhwEmVSIHQ Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 21 Jun 2011 10:52:32 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QYpfj-0007gm-LS; Tue, 21 Jun 2011 11:22:31 +1000 Date: Tue, 21 Jun 2011 11:22:31 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfs: always log timestamp updates in xfs_setattr_size Subject: Re: [PATCH 2/2] xfs: always log timestamp updates in xfs_setattr_size Message-ID: <20110621012231.GL32466@dastard> References: <20110617131519.GA2822@infradead.org> <20110617131556.GA5682@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110617131556.GA5682@infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308619354 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66653 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, Jun 17, 2011 at 09:15:56AM -0400, Christoph Hellwig wrote: > Get rid of the special case where we use unlogged timestamp updates for > a truncate to the current inode size, and just call xfs_setattr_simple > for it to treat it like a utimes calls. > > Signed-off-by: Christoph Hellwig > > Index: xfs/fs/xfs/linux-2.6/xfs_iops.c > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_iops.c 2011-05-23 14:29:07.815944904 +0200 > +++ xfs/fs/xfs/linux-2.6/xfs_iops.c 2011-05-23 14:29:26.067946531 +0200 > @@ -776,14 +776,16 @@ xfs_setattr_size( > */ > if (iattr->ia_size == 0 && > ip->i_size == 0 && ip->i_d.di_nextents == 0) { > - xfs_iunlock(ip, XFS_ILOCK_EXCL); > - lock_flags &= ~XFS_ILOCK_EXCL; > - if (mask & ATTR_CTIME) { > - inode->i_mtime = inode->i_ctime = > - current_fs_time(inode->i_sb); > - xfs_mark_inode_dirty_sync(ip); > - } > - goto out_unlock; > + if (!(mask & ATTR_CTIME)) > + goto out_unlock; > + > + /* > + * Use the regular setattr path to update the timestamps. > + */ > + xfs_iunlock(ip, lock_flags); > + iattr->ia_valid &= ~ATTR_SIZE; > + iattr->ia_valid |= ATTR_MTIME; > + return xfs_setattr_simple(ip, iattr, 0); > } Seems like a sane thing to do to me ;) Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Jun 20 20:31:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5L1Vu0j208425 for ; Mon, 20 Jun 2011 20:31:56 -0500 X-ASG-Debug-ID: 1308619914-257901df0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 954A41E4C0E9 for ; Mon, 20 Jun 2011 18:31:54 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id wW0NZySyvFXHyDH7 for ; Mon, 20 Jun 2011 18:31:54 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EANvx/015LChD/2dsb2JhbABUpmZ4yGYOhhwEmVSIHQ Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 21 Jun 2011 11:01:53 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QYpom-0007hm-9Y; Tue, 21 Jun 2011 11:31:52 +1000 Date: Tue, 21 Jun 2011 11:31:52 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: kill xfs_itruncate_start Subject: Re: [PATCH] xfs: kill xfs_itruncate_start Message-ID: <20110621013152.GM32466@dastard> References: <20110617131301.GB2141@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110617131301.GB2141@infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308619915 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0244 1.0000 -1.8626 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.86 X-Barracuda-Spam-Status: No, SCORE=-1.86 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66653 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, Jun 17, 2011 at 09:13:01AM -0400, Christoph Hellwig wrote: > xfs_itruncate_start is a rather length wrapper that evaluates to a call > to xfs_ioend_wait and xfs_tosspages, and only has two callers. > > Instead of using the complicated checks left over from IRIX where we > can to truncate the pagecache just call xfs_tosspages > (aka truncate_inode_pages) directly as we want to get rid of all data > after i_size, and truncate_inode_pages handles incorrect alignments > and too large offsets just fine. > > Signed-off-by: Christoph Hellwig Looks sane given that the complexity is necessary for handling the XFS_ITRUNC_MAYBE case correctly, and that flag is unused and therefore never needed in the Linux code base. It also means that xfs_free_eofblocks() won't get hung up on IO in progress needlessly. Well spotted! Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From achender@linux.vnet.ibm.com Mon Jun 20 21:48:35 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p5L2mYTC212380 for ; Mon, 20 Jun 2011 21:48:35 -0500 X-ASG-Debug-ID: 1308624513-5e6c03870000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e4.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 66BB6134B705 for ; Mon, 20 Jun 2011 19:48:33 -0700 (PDT) Received: from e4.ny.us.ibm.com (e4.ny.us.ibm.com [32.97.182.144]) by cuda.sgi.com with ESMTP id hQYmxwRTIbC38fMj for ; Mon, 20 Jun 2011 19:48:33 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay01.pok.ibm.com (d01relay01.pok.ibm.com [9.56.227.233]) by e4.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5L2QsFU010614 for ; Mon, 20 Jun 2011 22:26:54 -0400 Received: from d01av02.pok.ibm.com (d01av02.pok.ibm.com [9.56.224.216]) by d01relay01.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5L2mWI6139086 for ; Mon, 20 Jun 2011 22:48:32 -0400 Received: from d01av02.pok.ibm.com (loopback [127.0.0.1]) by d01av02.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5L2mWEA014275 for ; Mon, 20 Jun 2011 23:48:32 -0300 Received: from lc4eb0185863151.ibm.com (sig-9-48-120-95.mts.ibm.com [9.48.120.95]) by d01av02.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5L2mRRb013963; Mon, 20 Jun 2011 23:48:27 -0300 Message-ID: <4E00067A.6040004@linux.vnet.ibm.com> Date: Mon, 20 Jun 2011 19:48:26 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests: update test 042 golden output Subject: Re: [PATCH] xfstests: update test 042 golden output References: <20110620104811.GA1925@infradead.org> In-Reply-To: <20110620104811.GA1925@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e4.ny.us.ibm.com[32.97.182.144] X-Barracuda-Start-Time: 1308624514 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 06/20/2011 03:48 AM, Christoph Hellwig wrote: > Add the golden output for the newly added tests in common.punch. > > Signed-off-by: Christoph Hellwig > Thanks Christoph, sorry for the breakage. I have another patch that corrects a bug in the fiemap filter that 242 and 252 use. I will modify that patch to apply on top of this one. Thanks again! Allison Henderson From Betsy.Davis@montgomerycountymd.gov Mon Jun 20 22:09:26 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.0 required=5.0 tests=BAYES_60 autolearn=no version=3.4.0-r929098 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 p5L39P4H213581 for ; Mon, 20 Jun 2011 22:09:25 -0500 X-ASG-Debug-ID: 1308625764-3169031c0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from MCG-SMTP02.MCGOV.ORG (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D99851731D4C for ; Mon, 20 Jun 2011 20:09:24 -0700 (PDT) Received: from MCG-SMTP02.MCGOV.ORG (smtp08.montgomerycountymd.gov [208.76.112.244]) by cuda.sgi.com with ESMTP id Hic5E40QwfTrALas for ; Mon, 20 Jun 2011 20:09:24 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from pps.filterd (MCG-SMTP02 [127.0.0.1]) by MCG-SMTP02.MCGOV.ORG (8.14.4/8.14.4) with SMTP id p5L2qHwL030193; Mon, 20 Jun 2011 23:09:14 -0400 Received: from mcg-exb02.mcgov.org (mcg-exb02.mcgov.org [172.29.21.31]) by MCG-SMTP02.MCGOV.ORG with ESMTP id x2dtq8jn5-1; Mon, 20 Jun 2011 23:09:14 -0400 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: 99.7% Subject: 99.7% Date: Mon, 20 Jun 2011 23:07:59 -0400 Message-ID: X-MS-Has-Attach: X-MS-TNEF-Correlator: thread-topic: 99.7% thread-index: AcwvwGxJ4KvQ99eeTYCPyT/P9oFQJw== From: "Davis, Betsy" To: X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.4.6813,1.0.148,0.0.0000 definitions=2011-06-20_06:2011-06-20,2011-06-20,1970-01-01 signatures=0 X-Barracuda-Connect: smtp08.montgomerycountymd.gov[208.76.112.244] X-Barracuda-Start-Time: 1308625764 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 =20 =20 Your mailbox has exceeded its limit. Your webmail is currently running = 99.7% of its Quota limit of 100%. You cannot send or receive email until = you have updated your webmail account. To update your webmail account, = copy the link below and paste in your browser to request for upgrade. = Click Here: = =20 Thank you. Webmaster. From david@fromorbit.com Mon Jun 20 23:25:19 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.4.0-r929098 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 p5L4PILL223076 for ; Mon, 20 Jun 2011 23:25:19 -0500 X-ASG-Debug-ID: 1308630315-416501ad0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2B468134B6FD for ; Mon, 20 Jun 2011 21:25:16 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id s7DTCn9XJ68HVmCF for ; Mon, 20 Jun 2011 21:25:16 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAAscAE55LChD/2dsb2JhbABUpmd4iHO/KQ6GHAShcQ Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 21 Jun 2011 13:55:14 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QYsWX-0007wQ-6J; Tue, 21 Jun 2011 14:25:13 +1000 Date: Tue, 21 Jun 2011 14:25:13 +1000 From: Dave Chinner To: Markus Trippelsdorf Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110621042513.GN32466@dastard> References: <20110618141950.GA1685@x4.trippels.de> <20110619222447.GI561@dastard> <20110620005415.GA1730@x4.trippels.de> <20110620013449.GO561@dastard> <20110620020236.GB1730@x4.trippels.de> <20110620023625.GP561@dastard> <20110620060351.GC1730@x4.trippels.de> <20110620111359.GA12632@x4.trippels.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110620111359.GA12632@x4.trippels.de> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308630317 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66664 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, Jun 20, 2011 at 01:13:59PM +0200, Markus Trippelsdorf wrote: > On 2011.06.20 at 08:03 +0200, Markus Trippelsdorf wrote: > > OK. I was able to reproduce the same hang on a conventional 512 sector drive. > > The partition that I've used was the predecessor to the one on the 4k drive. So > > it saw roughly the same usage pattern. > > This is the output of "dstat -cdyl -C 0,1,2,3 -D sdc --disk-tps" during the > > hang: > > > > -------cpu0-usage--------------cpu1-usage--------------cpu2-usage--------------cpu3-usage------ --dsk/sdc-- ---system-- ---load-avg--- --dsk/sdc-- > > usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq| read writ| int csw | 1m 5m 15m |reads writs > > > > 0 0 100 0 0 0: 1 0 99 0 0 0: 0 1 99 0 0 0: 1 0 99 0 0 0| 0 0 | 249 354 |0.33 0.58 0.38| 0 0 > > 0 0 100 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0| 0 0 | 244 228 |0.33 0.58 0.38| 0 0 > > 1 2 97 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0| 0 0 | 559 614 |0.33 0.58 0.38| 0 0 > > 0 0 100 0 0 0: 1 0 99 0 0 0: 1 0 99 0 0 0: 1 0 99 0 0 0| 0 0 | 341 426 |0.33 0.58 0.38| 0 0 > > 1 0 99 0 0 0: 1 4 95 0 0 0: 0 1 99 0 0 0: 1 16 83 0 0 0| 0 0 | 874 796 |0.33 0.58 0.38| 0 0 > > 2 50 49 0 0 0: 1 9 90 0 0 0: 1 9 90 0 0 0: 1 23 76 0 0 0| 0 6400k|2803 2073 |0.46 0.60 0.39| 0 25 > > 1 29 70 0 0 0: 1 1 98 0 0 0: 1 9 90 0 0 0: 1 53 46 0 0 0| 0 6400k|2047 1414 |0.46 0.60 0.39| 0 25 > > 0 4 96 0 0 0: 0 0 100 0 0 0: 1 19 80 0 0 0: 0 80 20 0 0 0| 0 2048k|1425 685 |0.46 0.60 0.39| 0 8 > > 2 1 97 0 0 0: 1 6 93 0 0 0: 0 5 95 0 0 0: 0 83 17 0 0 0| 0 4608k|1624 849 |0.46 0.60 0.39| 0 18 > > 2 45 53 0 0 0: 1 16 83 0 0 0: 3 20 77 0 0 0: 1 15 84 0 0 0| 0 6400k|2420 1984 |0.46 0.60 0.39| 0 26 > > 1 19 80 0 0 0: 2 8 90 0 0 0: 0 33 67 0 0 0: 0 33 67 0 0 0| 0 6400k|2694 2134 |0.59 0.63 0.40| 0 25 > > 2 7 91 0 0 0: 2 1 97 0 0 0: 1 0 99 0 0 0: 0 49 10 41 0 0| 0 8269k|1865 1571 |0.59 0.63 0.40| 0 363 > > 1 1 98 0 0 0: 1 1 98 0 0 0: 1 1 98 0 0 0: 0 1 0 99 0 0| 0 4778k|1509 1639 |0.59 0.63 0.40| 0 410 > > 2 0 98 0 0 0: 2 1 97 0 0 0: 1 1 98 0 0 0: 2 0 0 98 0 0| 0 5318k|1663 1809 |0.59 0.63 0.40| 0 426 > > 1 1 98 0 0 0: 2 7 91 0 0 0: 1 0 99 0 0 0: 1 0 0 99 0 0| 0 5446k|1659 1806 |0.59 0.63 0.40| 0 432 > > 0 1 99 0 0 0: 1 0 99 0 0 0: 2 0 98 0 0 0: 0 1 17 82 0 0| 0 5472k|1572 1837 |0.62 0.63 0.40| 0 439 > > 2 0 98 0 0 0: 2 2 96 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0| 0 397k|1058 1049 |0.62 0.63 0.40| 0 36 > > 1 1 98 0 0 0: 1 1 98 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0| 0 0 | 617 689 |0.62 0.63 0.40| 0 0 > > 9 4 87 0 0 0: 4 0 96 0 0 0: 1 1 98 0 0 0: 8 6 87 0 0 0| 0 0 |1234 1961 |0.62 0.63 0.40| 0 0 > > 0 1 99 0 0 0: 1 1 98 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0| 0 0 | 391 403 |0.62 0.63 0.40| 0 0 > > 1 0 99 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0| 0 0 | 366 375 |0.57 0.62 0.40| 0 0 What is the resolution of the samples here? Where did the hang occur during this output? FWIW, Can you capture the hang while running 'iostat -x -d -m 1' so we can see what is happening with queue depths, average Io sizes, etc? > Here are two more examples. The time when the hang occurs is marked with > "=>": > ------cpu0-usage--------------cpu1-usage--------------cpu2-usage--------------cpu3-usage------ --dsk/sdb-- ---system-- ---load-avg--- --dsk/sdb-- > usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq| read writ| int csw | 1m 5m 15m |reads writs ..... > 1 10 89 0 0 0: 2 38 61 0 0 0: 1 8 81 10 0 0: 0 64 36 0 0 0| 0 4476k|2378 2010 |1.12 0.59 0.28| 0 146 > =>0 0 100 0 0 0: 0 1 99 0 0 0: 0 1 0 99 0 0: 0 100 0 0 0 0| 0 0 |1237 283 |1.12 0.59 0.28| 0 0 > 0 27 73 0 0 0: 1 0 99 0 0 0: 0 0 47 53 0 0: 0 56 44 0 0 0| 0 5812k|1596 857 |1.12 0.59 0.28| 0 182 ..... > 7 26 67 0 0 0: 4 1 95 0 0 0: 1 37 62 0 0 0: 3 38 59 0 0 0| 0 864k|2904 2806 |0.70 0.65 0.40| 0 33 > =>2 1 97 0 0 0: 1 0 99 0 0 0: 0 1 99 0 0 0: 0 100 0 0 0 0| 0 0 |1725 639 |0.89 0.69 0.41| 0 0 > 1 1 98 0 0 0: 2 1 97 0 0 0: 2 1 97 0 0 0: 0 71 29 0 0 0| 0 3968k|1793 852 |0.89 0.69 0.41| 0 123 ..... So in both cases here the hang occurs when there is -zero- IO occurring, and a CPU has pegged at 100% in system time. That's CPU bound doing . It is possible that the CPU is getting caught in a loop somewhere or has a -lot- of processing to do before progress is made. I know a CIL commit can take some time to process all the objects in a checkpoint, but I haven't seen anything like this. You've only got a relatively small log (100MB) and you're only removing a kernel source tree, so there really shouldn't be an excessive number of objects built up to process per checkpoint. FWIW, I'm pretty sure a CPU getting stuck like this in the filesystem code should not be causing problems with X or other non-filesystem workloads. There's 3 idle CPU cores and you are running a preemptible kernel, so I really can't see why system time spent in XFS would cause mouse or keyboard updates to not be processed in a timely manner. We really need to know what is consuming all that CPU time. That is, you really need to get a profile of the rm -rf process - or whatever is consuming the CPU time - (e.g. via perf or ftrace) across the hang to so we can narrow down the potential cause of the latency. Speaking of which, latencytop might be helpful in identifying where input is getting held up.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Jun 21 00:09:21 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5L59LgF229629 for ; Tue, 21 Jun 2011 00:09:21 -0500 X-ASG-Debug-ID: 1308632958-563900ae0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 344A11DCC2 for ; Mon, 20 Jun 2011 22:09:18 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id MmdaiZ77NyWELJ4g for ; Mon, 20 Jun 2011 22:09:18 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAKImAE55LChD/2dsb2JhbABUhEmiHniIc65fkQEOgR2DdYEKBKFx Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 21 Jun 2011 14:39:17 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QYtD9-00080H-0A; Tue, 21 Jun 2011 15:09:15 +1000 Date: Tue, 21 Jun 2011 15:09:14 +1000 From: Dave Chinner To: KOSAKI Motohiro Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 03/12] vmscan: reduce wind up shrinker->nr when shrinker can't do work Subject: Re: [PATCH 03/12] vmscan: reduce wind up shrinker->nr when shrinker can't do work Message-ID: <20110621050914.GO32466@dastard> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> <1306998067-27659-4-git-send-email-david@fromorbit.com> <4DFE997C.2060805@jp.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <4DFE997C.2060805@jp.fujitsu.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308632960 X-Barracuda-Bayes: INNOCENT GLOBAL 0.2202 1.0000 -0.7228 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.72 X-Barracuda-Spam-Status: No, SCORE=-0.72 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66667 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, Jun 20, 2011 at 09:51:08AM +0900, KOSAKI Motohiro wrote: > (2011/06/02 16:00), Dave Chinner wrote: > > From: Dave Chinner > > > > When a shrinker returns -1 to shrink_slab() to indicate it cannot do > > any work given the current memory reclaim requirements, it adds the > > entire total_scan count to shrinker->nr. The idea ehind this is that > > whenteh shrinker is next called and can do work, it will do the work > > of the previously aborted shrinker call as well. > > > > However, if a filesystem is doing lots of allocation with GFP_NOFS > > set, then we get many, many more aborts from the shrinkers than we > > do successful calls. The result is that shrinker->nr winds up to > > it's maximum permissible value (twice the current cache size) and > > then when the next shrinker call that can do work is issued, it > > has enough scan count built up to free the entire cache twice over. > > > > This manifests itself in the cache going from full to empty in a > > matter of seconds, even when only a small part of the cache is > > needed to be emptied to free sufficient memory. > > > > Under metadata intensive workloads on ext4 and XFS, I'm seeing the > > VFS caches increase memory consumption up to 75% of memory (no page > > cache pressure) over a period of 30-60s, and then the shrinker > > empties them down to zero in the space of 2-3s. This cycle repeats > > over and over again, with the shrinker completely trashing the Ñ–node > > and dentry caches every minute or so the workload continues. > > > > This behaviour was made obvious by the shrink_slab tracepoints added > > earlier in the series, and made worse by the patch that corrected > > the concurrent accounting of shrinker->nr. > > > > To avoid this problem, stop repeated small increments of the total > > scan value from winding shrinker->nr up to a value that can cause > > the entire cache to be freed. We still need to allow it to wind up, > > so use the delta as the "large scan" threshold check - if the delta > > is more than a quarter of the entire cache size, then it is a large > > scan and allowed to cause lots of windup because we are clearly > > needing to free lots of memory. > > > > If it isn't a large scan then limit the total scan to half the size > > of the cache so that windup never increases to consume the whole > > cache. Reducing the total scan limit further does not allow enough > > wind-up to maintain the current levels of performance, whilst a > > higher threshold does not prevent the windup from freeing the entire > > cache under sustained workloads. > > > > Signed-off-by: Dave Chinner > > --- > > mm/vmscan.c | 14 ++++++++++++++ > > 1 files changed, 14 insertions(+), 0 deletions(-) > > > > diff --git a/mm/vmscan.c b/mm/vmscan.c > > index dce2767..3688f47 100644 > > --- a/mm/vmscan.c > > +++ b/mm/vmscan.c > > @@ -277,6 +277,20 @@ unsigned long shrink_slab(struct shrink_control *shrink, > > } > > > > /* > > + * Avoid excessive windup on fielsystem shrinkers due to large > > + * numbers of GFP_NOFS allocations causing the shrinkers to > > + * return -1 all the time. This results in a large nr being > > + * built up so when a shrink that can do some work comes along > > + * it empties the entire cache due to nr >>> max_pass. This is > > + * bad for sustaining a working set in memory. > > + * > > + * Hence only allow nr to go large when a large delta is > > + * calculated. > > + */ > > + if (delta < max_pass / 4) > > + total_scan = min(total_scan, max_pass / 2); > > + > > + /* > > * Avoid risking looping forever due to too large nr value: > > * never try to free more than twice the estimate number of > > * freeable entries. > > I guess "max_pass/4" and "min(total_scan, max_pass / 2)" are your heuristic value. right? Yes. > If so, please write your benchmark name and its result into the description. Take your pick. Anything that generates a large amount of vfs cache pressure combined with GFP_NOFS memory allocation will show changes in -behaviour- as you modify these variables. e.g. creating 50 million inodes in parallel with fs_mark, parallel chmod -R traversals of said inodes, parallel rm -rf, etc. The same cache behaviour can be observed with any of these sorts of cold cache workloads. I say changes in behaviour rather than performance because just measuring wall time does not necessarily show any difference in performance. The bug this fixes is the cache being complete trashed periodically, but none of the above workloads show significant wall time differences in behaviour because of this modification as they don't rely on cache hits for performance. If you have a workload that actually relies on resident cache hits for good performance, then you'll see a difference in performance that you can measure with wall time.... What this change does have an effect on is the variance of the resident cache size, which I monitor via live graphing of the various cache metrics. It is not as simple to monitor as having a single number fall out the bottom that you can point to for improvement. Details of this is already documented in patch zero of the series: https://lkml.org/lkml/2011/6/2/42 Bsically, the above numbers gave the lowest variance in the resident cache size without preventing the shrinker from being able to free enough memory for the system to work effectively. > I mean, currently some mm folks plan to enhance shrinker. So, > sharing benchmark may help to avoid an accidental regression. I predict that I will have some bug reporting to do in future. ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From kosaki.motohiro@jp.fujitsu.com Tue Jun 21 00:27:51 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5L5Rp7j230650 for ; Tue, 21 Jun 2011 00:27:51 -0500 X-ASG-Debug-ID: 1308634069-561801570000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from fgwmail5.fujitsu.co.jp (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D49E21EBA2 for ; Mon, 20 Jun 2011 22:27:50 -0700 (PDT) Received: from fgwmail5.fujitsu.co.jp (fgwmail5.fujitsu.co.jp [192.51.44.35]) by cuda.sgi.com with ESMTP id q0GdA8qO2raTM9Ni for ; Mon, 20 Jun 2011 22:27:50 -0700 (PDT) Received: from m2.gw.fujitsu.co.jp (unknown [10.0.50.72]) by fgwmail5.fujitsu.co.jp (Postfix) with ESMTP id F34CB3EE0C1 for ; Tue, 21 Jun 2011 14:27:47 +0900 (JST) Received: from smail (m2 [127.0.0.1]) by outgoing.m2.gw.fujitsu.co.jp (Postfix) with ESMTP id D5DBD45DE72 for ; Tue, 21 Jun 2011 14:27:47 +0900 (JST) Received: from s2.gw.fujitsu.co.jp (s2.gw.fujitsu.co.jp [10.0.50.92]) by m2.gw.fujitsu.co.jp (Postfix) with ESMTP id B638B45DE69 for ; Tue, 21 Jun 2011 14:27:47 +0900 (JST) Received: from s2.gw.fujitsu.co.jp (localhost.localdomain [127.0.0.1]) by s2.gw.fujitsu.co.jp (Postfix) with ESMTP id AA4311DB802C for ; Tue, 21 Jun 2011 14:27:47 +0900 (JST) Received: from ml13.s.css.fujitsu.com (ml13.s.css.fujitsu.com [10.240.81.133]) by s2.gw.fujitsu.co.jp (Postfix) with ESMTP id 73336E08003 for ; Tue, 21 Jun 2011 14:27:47 +0900 (JST) Received: from ml13.css.fujitsu.com (ml13 [127.0.0.1]) by ml13.s.css.fujitsu.com (Postfix) with ESMTP id 387DFFD0003; Tue, 21 Jun 2011 14:27:47 +0900 (JST) Received: from [127.0.0.1] (unknown [10.124.101.131]) by ml13.s.css.fujitsu.com (Postfix) with ESMTP id 97D6EFD0005; Tue, 21 Jun 2011 14:27:46 +0900 (JST) X-SecurityPolicyCheck-FJ: OK by FujitsuOutboundMailChecker v1.3.1 Received: from KOSANOTE2[10.124.101.131] by KOSANOTE2 (FujitsuOutboundMailChecker v1.3.1/9992[10.124.101.131]); Tue, 21 Jun 2011 14:27:54 +0900 (JST) Message-ID: <4E002BD0.3000003@jp.fujitsu.com> Date: Tue, 21 Jun 2011 14:27:44 +0900 From: KOSAKI Motohiro User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.17) Gecko/20110414 Lightning/1.0b2 Thunderbird/3.1.10 MIME-Version: 1.0 To: david@fromorbit.com CC: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 03/12] vmscan: reduce wind up shrinker->nr when shrinker can't do work Subject: Re: [PATCH 03/12] vmscan: reduce wind up shrinker->nr when shrinker can't do work References: <1306998067-27659-1-git-send-email-david@fromorbit.com> <1306998067-27659-4-git-send-email-david@fromorbit.com> <4DFE997C.2060805@jp.fujitsu.com> <20110621050914.GO32466@dastard> In-Reply-To: <20110621050914.GO32466@dastard> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: fgwmail5.fujitsu.co.jp[192.51.44.35] X-Barracuda-Start-Time: 1308634070 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0440 1.0000 -1.7374 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.74 X-Barracuda-Spam-Status: No, SCORE=-1.74 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66669 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 mean, currently some mm folks plan to enhance shrinker. So, >> sharing benchmark may help to avoid an accidental regression. > > I predict that I will have some bug reporting to do in future. ;) Ok, I have no objection. thanks. From michael.monnerie@is.it-management.at Tue Jun 21 02:21:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5L7Lrsj235762 for ; Tue, 21 Jun 2011 02:21:53 -0500 X-ASG-Debug-ID: 1308640910-2e36010c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv14.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 85CA217325B2 for ; Tue, 21 Jun 2011 00:21:51 -0700 (PDT) Received: from mailsrv14.zmi.at (mailsrv1.zmi.at [212.69.164.54]) by cuda.sgi.com with ESMTP id ofaOn51pSKGDN2W1 for ; Tue, 21 Jun 2011 00:21:51 -0700 (PDT) Received: from mailsrv.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 mailsrv14.zmi.at (Postfix) with ESMTPSA id D5E8217C; Tue, 21 Jun 2011 09:21:49 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.72.27.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv.i.zmi.at (Postfix) with ESMTPSA id 261B4401C3D; Tue, 21 Jun 2011 09:21:49 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: improve sync behaviour in face of aggressive dirtying Subject: Re: [PATCH] xfs: improve sync behaviour in face of aggressive dirtying Date: Tue, 21 Jun 2011 09:21:46 +0200 User-Agent: KMail/1.13.6 (Linux/2.6.39.1-zmi; KDE/4.6.0; x86_64; ; ) Cc: Dave Chinner , Christoph Hellwig , Wu Fengguang References: <20110617131401.GC2141@infradead.org> <20110620081802.GA27111@infradead.org> <20110621003343.GJ32466@dastard> In-Reply-To: <20110621003343.GJ32466@dastard> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart1333210.oW9QmaPcvD"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <201106210921.48657@zmi.at> X-Barracuda-Connect: mailsrv1.zmi.at[212.69.164.54] X-Barracuda-Start-Time: 1308640911 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66677 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 --nextPart1333210.oW9QmaPcvD Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable On Dienstag, 21. Juni 2011 Dave Chinner wrote: > > The minor one is that we always flush all work items and not just > > those on the filesystem to be flushed. This might become an issue > > for lager systems, or when we apply a similar scheme to fsync, > > which has the same underlying issue. >=20 > For sync, I don't think it matters if we flush a few extra IO > completions on a busy system. Couldn't that be bad on a system with mixed fast/slow storage (say 15k=20 SAS and 7.2k SATA), where on the busy fast SAS lots of syncs occur and=20 lead to extra I/O on the SATA disks? Especially if there are 16 SAS=20 disks in an array with RAID-0 against 4 SATA disks in RAID-6, to say the=20 worst. If the SATAs are already heavy used (say >=3D50%), those extra=20 writes could bring them to their knees. I'm not sure how often syncs occur though, maybe that's why Dave says it=20 shouldn't matter? AFAIK, databases generate heavy syncs though. =2D-=20 mit freundlichen Gr=FCssen, Michael Monnerie, Ing. BSc it-management Internet Services: Prot=E9ger http://proteger.at [gesprochen: Prot-e-schee] Tel: +43 660 / 415 6531 // Haus zu verkaufen: http://zmi.at/langegg/ --nextPart1333210.oW9QmaPcvD Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) iEYEABECAAYFAk4ARowACgkQzhSR9xwSCbQdJQCbBZ0KRaCOLmj3RJzxFlDb2s0P uGgAniNek6eSNccaJzI1gky+P5yLRB1S =VZNj -----END PGP SIGNATURE----- --nextPart1333210.oW9QmaPcvD-- From markus@trippelsdorf.de Tue Jun 21 03:02:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p5L82N0b240631 for ; Tue, 21 Jun 2011 03:02:24 -0500 X-ASG-Debug-ID: 1308643340-0f34039d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 290D11F25C for ; Tue, 21 Jun 2011 01:02:20 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id SaW9kuGW3OtjtEgo for ; Tue, 21 Jun 2011 01:02:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:in-reply-to; q=dns/txt; s=beta; bh=d4mPT37fcAL3w6Mr uVpon1Paro2Yer6/WuJu0b5e7lk=; b=RS4105mtvw/7IBpxQkFVg6Uagx6WB48H I8wyh6Qf0MLqk8n9AuKnMvd8spjPbUqX+ea86EpU+7l1RHfPW8amysQLZck4ya/E uO/ld6YfjY99KgZnrfRYrJqV5vYR8hxtJqj+GvsKgxfOyGHoEMGoYdbjoMLCg+am Qha5bIbcmGk= Received: (qmail 332 invoked from network); 21 Jun 2011 10:02:19 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.66.182.48) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 21 Jun 2011 10:02:19 +0200 Date: Tue, 21 Jun 2011 10:02:19 +0200 From: Markus Trippelsdorf To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110621080219.GA1684@x4.trippels.de> References: <20110618141950.GA1685@x4.trippels.de> <20110619222447.GI561@dastard> <20110620005415.GA1730@x4.trippels.de> <20110620013449.GO561@dastard> <20110620020236.GB1730@x4.trippels.de> <20110620023625.GP561@dastard> <20110620060351.GC1730@x4.trippels.de> <20110620111359.GA12632@x4.trippels.de> <20110621042513.GN32466@dastard> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="SUOF0GtieIMvvwua" Content-Disposition: inline In-Reply-To: <20110621042513.GN32466@dastard> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1308643342 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66679 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --SUOF0GtieIMvvwua Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On 2011.06.21 at 14:25 +1000, Dave Chinner wrote: > On Mon, Jun 20, 2011 at 01:13:59PM +0200, Markus Trippelsdorf wrote: > > On 2011.06.20 at 08:03 +0200, Markus Trippelsdorf wrote: > > > OK. I was able to reproduce the same hang on a conventional 512 sector drive. > > > The partition that I've used was the predecessor to the one on the 4k drive. So > > > it saw roughly the same usage pattern. > > > 1 29 70 0 0 0: 1 1 98 0 0 0: 1 9 90 0 0 0: 1 53 46 0 0 0| 0 6400k|2047 1414 |0.46 0.60 0.39| 0 25 > > > 0 4 96 0 0 0: 0 0 100 0 0 0: 1 19 80 0 0 0: 0 80 20 0 0 0| 0 2048k|1425 685 |0.46 0.60 0.39| 0 8 > > > 2 1 97 0 0 0: 1 6 93 0 0 0: 0 5 95 0 0 0: 0 83 17 0 0 0| 0 4608k|1624 849 |0.46 0.60 0.39| 0 18 > > > 2 45 53 0 0 0: 1 16 83 0 0 0: 3 20 77 0 0 0: 1 15 84 0 0 0| 0 6400k|2420 1984 |0.46 0.60 0.39| 0 26 > > > 1 19 80 0 0 0: 2 8 90 0 0 0: 0 33 67 0 0 0: 0 33 67 0 0 0| 0 6400k|2694 2134 |0.59 0.63 0.40| 0 25 > > > 2 7 91 0 0 0: 2 1 97 0 0 0: 1 0 99 0 0 0: 0 49 10 41 0 0| 0 8269k|1865 1571 |0.59 0.63 0.40| 0 363 > > > 1 1 98 0 0 0: 1 1 98 0 0 0: 1 1 98 0 0 0: 0 1 0 99 0 0| 0 4778k|1509 1639 |0.59 0.63 0.40| 0 410 > > > 2 0 98 0 0 0: 2 1 97 0 0 0: 1 1 98 0 0 0: 2 0 0 98 0 0| 0 5318k|1663 1809 |0.59 0.63 0.40| 0 426 > > > 1 1 98 0 0 0: 2 7 91 0 0 0: 1 0 99 0 0 0: 1 0 0 99 0 0| 0 5446k|1659 1806 |0.59 0.63 0.40| 0 432 > > > 0 1 99 0 0 0: 1 0 99 0 0 0: 2 0 98 0 0 0: 0 1 17 82 0 0| 0 5472k|1572 1837 |0.62 0.63 0.40| 0 439 > > > 2 0 98 0 0 0: 2 2 96 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0| 0 397k|1058 1049 |0.62 0.63 0.40| 0 36 > > > 1 1 98 0 0 0: 1 1 98 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0| 0 0 | 617 689 |0.62 0.63 0.40| 0 0 > > > 9 4 87 0 0 0: 4 0 96 0 0 0: 1 1 98 0 0 0: 8 6 87 0 0 0| 0 0 |1234 1961 |0.62 0.63 0.40| 0 0 > > > 0 1 99 0 0 0: 1 1 98 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0| 0 0 | 391 403 |0.62 0.63 0.40| 0 0 > > > 1 0 99 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0| 0 0 | 366 375 |0.57 0.62 0.40| 0 0 > > What is the resolution of the samples here? Where did the hang occur > during this output? Resolution is 1 sec. I think the hang occurred when cpu3 wait switched from 41% to 99% (but I'm not sure). > FWIW, Can you capture the hang while running 'iostat -x -d -m 1' so > we can see what is happening with queue depths, average Io sizes, > etc? Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sdc1 0.00 0.00 1.00 202.00 0.00 6.31 63.72 3.90 19.21 19.00 19.21 2.57 52.10 sdc1 0.00 0.00 0.00 8.00 0.00 0.25 64.00 0.15 18.50 0.00 18.50 2.50 2.00 sdc1 *hang* 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sdc1 0.00 0.00 0.00 116.00 0.00 3.78 66.76 2.25 18.66 0.00 18.66 2.45 28.40 sdc1 0.00 9.00 0.00 210.00 0.00 2.25 21.92 3.96 19.28 0.00 19.28 4.43 93.00 sdc1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 > > Here are two more examples. The time when the hang occurs is marked with > > "=>": > > ------cpu0-usage--------------cpu1-usage--------------cpu2-usage--------------cpu3-usage------ --dsk/sdb-- ---system-- ---load-avg--- --dsk/sdb-- > > usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq| read writ| int csw | 1m 5m 15m |reads writs > ..... > > 1 10 89 0 0 0: 2 38 61 0 0 0: 1 8 81 10 0 0: 0 64 36 0 0 0| 0 4476k|2378 2010 |1.12 0.59 0.28| 0 146 > > =>0 0 100 0 0 0: 0 1 99 0 0 0: 0 1 0 99 0 0: 0 100 0 0 0 0| 0 0 |1237 283 |1.12 0.59 0.28| 0 0 > > 0 27 73 0 0 0: 1 0 99 0 0 0: 0 0 47 53 0 0: 0 56 44 0 0 0| 0 5812k|1596 857 |1.12 0.59 0.28| 0 182 > ..... > > 7 26 67 0 0 0: 4 1 95 0 0 0: 1 37 62 0 0 0: 3 38 59 0 0 0| 0 864k|2904 2806 |0.70 0.65 0.40| 0 33 > > =>2 1 97 0 0 0: 1 0 99 0 0 0: 0 1 99 0 0 0: 0 100 0 0 0 0| 0 0 |1725 639 |0.89 0.69 0.41| 0 0 > > 1 1 98 0 0 0: 2 1 97 0 0 0: 2 1 97 0 0 0: 0 71 29 0 0 0| 0 3968k|1793 852 |0.89 0.69 0.41| 0 123 > ..... > > So in both cases here the hang occurs when there is -zero- IO > occurring, and a CPU has pegged at 100% in system time. That's CPU > bound doing . It is possible that the CPU is getting > caught in a loop somewhere or has a -lot- of processing to do before > progress is made. > > I know a CIL commit can take some time to process all the > objects in a checkpoint, but I haven't seen anything like this. > You've only got a relatively small log (100MB) and you're only > removing a kernel source tree, so there really shouldn't be an > excessive number of objects built up to process per checkpoint. > > FWIW, I'm pretty sure a CPU getting stuck like this in the > filesystem code should not be causing problems with X or other > non-filesystem workloads. There's 3 idle CPU cores and you are > running a preemptible kernel, so I really can't see why system time > spent in XFS would cause mouse or keyboard updates to not be > processed in a timely manner. We really need to know what is > consuming all that CPU time. > > That is, you really need to get a profile of the rm -rf process - or > whatever is consuming the CPU time - (e.g. via perf or ftrace) > across the hang to so we can narrow down the potential cause of the > latency. Speaking of which, latencytop might be helpful in > identifying where input is getting held up.... I've recorded a profile with "perf record -g /home/markus/rm_sync" ~ % cat rm_sync rm -fr /mnt/tmp/tmp/linux && sync This is the output of "/perf report -g --stdio" (Just the first entries the full report is attached). # Events: 1K cycles # # Overhead Command Shared Object Symbol # ........ ....... ................. .................................. # 5.32% rm [kernel.kallsyms] [k] __memcpy | --- __memcpy | |--90.77%-- _xfs_trans_commit | | | |--62.41%-- xfs_itruncate_finish | | xfs_inactive | | xfs_fs_evict_inode | | evict | | iput | | do_unlinkat | | sys_unlinkat | | system_call_fastpath | | unlinkat | | | |--19.50%-- xfs_remove | | xfs_vn_unlink | | vfs_unlink | | do_unlinkat | | sys_unlinkat | | system_call_fastpath | | unlinkat | | | |--16.70%-- xfs_inactive | | xfs_fs_evict_inode | | evict | | iput | | do_unlinkat | | sys_unlinkat | | system_call_fastpath | | unlinkat | | | --1.39%-- xfs_bmap_finish | xfs_itruncate_finish | xfs_inactive | xfs_fs_evict_inode | evict | iput | do_unlinkat | sys_unlinkat | system_call_fastpath | unlinkat | |--5.44%-- xlog_cil_push | xfs_log_commit_cil | _xfs_trans_commit | xfs_remove | xfs_vn_unlink | vfs_unlink | do_unlinkat | sys_unlinkat | system_call_fastpath | unlinkat | |--2.53%-- xfs_btree_insrec | xfs_btree_insert | xfs_free_ag_extent | xfs_free_extent | xfs_bmap_finish | xfs_itruncate_finish | xfs_inactive | xfs_fs_evict_inode | evict | iput | do_unlinkat | sys_unlinkat | system_call_fastpath | unlinkat | --1.26%-- xfs_btree_update xfs_inobt_update xfs_difree xfs_ifree xfs_inactive xfs_fs_evict_inode evict iput do_unlinkat sys_unlinkat system_call_fastpath unlinkat 3.85% sync [kernel.kallsyms] [k] xfs_inode_ag_walk.isra.7 | --- xfs_inode_ag_walk.isra.7 xfs_inode_ag_iterator xfs_sync_data xfs_quiesce_data xfs_fs_sync_fs __sync_filesystem sync_one_sb iterate_supers sync_filesystems sys_sync system_call_fastpath __GI_sync 2.68% sync [kernel.kallsyms] [k] __rcu_read_unlock | --- __rcu_read_unlock mapping_tagged xfs_sync_inode_data xfs_inode_ag_walk.isra.7 xfs_inode_ag_iterator xfs_sync_data xfs_quiesce_data xfs_fs_sync_fs __sync_filesystem sync_one_sb iterate_supers sync_filesystems sys_sync system_call_fastpath __GI_sync 2.56% rm [kernel.kallsyms] [k] xfs_next_bit | --- xfs_next_bit | |--31.60%-- xfs_log_commit_cil | _xfs_trans_commit | | | |--91.65%-- xfs_itruncate_finish | | xfs_inactive | | xfs_fs_evict_inode | | evict | | iput | | do_unlinkat | | sys_unlinkat | | system_call_fastpath | | unlinkat | | | --8.35%-- xfs_remove | xfs_vn_unlink | vfs_unlink | do_unlinkat | sys_unlinkat | system_call_fastpath | unlinkat | |--28.93%-- xfs_buf_item_size | xfs_trans_alloc_log_vecs | _xfs_trans_commit | | | |--72.71%-- xfs_itruncate_finish | | xfs_inactive | | xfs_fs_evict_inode | | evict | | iput | | do_unlinkat | | sys_unlinkat | | system_call_fastpath | | unlinkat | | | |--18.18%-- xfs_inactive | | xfs_fs_evict_inode | | evict | | iput | | do_unlinkat | | sys_unlinkat | | system_call_fastpath | | unlinkat | | | --9.11%-- xfs_remove | xfs_vn_unlink | vfs_unlink | do_unlinkat | sys_unlinkat | system_call_fastpath | unlinkat | |--26.33%-- xfs_buf_item_format | xfs_log_commit_cil | _xfs_trans_commit | | | |--70.10%-- xfs_itruncate_finish | | xfs_inactive | | xfs_fs_evict_inode | | evict | | iput | | do_unlinkat | | sys_unlinkat | | system_call_fastpath | | unlinkat | | | |--19.91%-- xfs_inactive | | xfs_fs_evict_inode | | evict | | iput | | do_unlinkat | | sys_unlinkat | | system_call_fastpath | | unlinkat | | | --9.99%-- xfs_remove | xfs_vn_unlink | vfs_unlink | do_unlinkat | sys_unlinkat | system_call_fastpath | unlinkat | --13.14%-- xfs_trans_alloc_log_vecs _xfs_trans_commit | |--60.17%-- xfs_remove | xfs_vn_unlink | vfs_unlink | do_unlinkat | sys_unlinkat | system_call_fastpath | unlinkat | --39.83%-- xfs_inactive xfs_fs_evict_inode evict iput do_unlinkat sys_unlinkat system_call_fastpath unlinkat 2.56% rm [kernel.kallsyms] [k] kmem_cache_free | --- kmem_cache_free | |--39.47%-- xfs_trans_free_item_desc | | | |--79.98%-- xfs_trans_free_items | | xfs_log_commit_cil | | _xfs_trans_commit | | | | | |--50.02%-- xfs_inactive | | | xfs_fs_evict_inode | | | evict | | | iput | | | do_unlinkat | | | sys_unlinkat | | | system_call_fastpath | | | unlinkat | | | | | |--33.35%-- xfs_itruncate_finish | | | xfs_inactive | | | xfs_fs_evict_inode | | | evict | | | iput | | | do_unlinkat | | | sys_unlinkat | | | system_call_fastpath | | | unlinkat | | | | | --16.63%-- xfs_bmap_finish | | xfs_itruncate_finish | | xfs_inactive | | xfs_fs_evict_inode | | evict | | iput | | do_unlinkat | | sys_unlinkat | | system_call_fastpath | | unlinkat | | | --20.02%-- xfs_trans_del_item | xfs_trans_brelse | xfs_btree_del_cursor | | | |--66.61%-- xfs_free_ag_extent | | xfs_free_extent | | xfs_bmap_finish | | | | | |--50.15%-- xfs_remove | | | xfs_vn_unlink | | | vfs_unlink | | | do_unlinkat | | | sys_unlinkat | | | system_call_fastpath | | | unlinkat | | | | | --49.85%-- xfs_itruncate_finish | | xfs_inactive | | xfs_fs_evict_inode | | evict | | iput | | do_unlinkat | | sys_unlinkat | | system_call_fastpath | | unlinkat | | | --33.39%-- xfs_difree | xfs_ifree | xfs_inactive | xfs_fs_evict_inode | evict | iput | do_unlinkat | sys_unlinkat | system_call_fastpath | unlinkat | |--31.56%-- xfs_buf_get | xfs_buf_read | xfs_trans_read_buf | | | |--49.95%-- xfs_btree_read_buf_block.constprop.22 | | xfs_btree_lookup_get_block | | xfs_btree_lookup | | | | | |--49.98%-- xfs_alloc_lookup_eq | | | xfs_free_ag_extent | | | xfs_free_extent | | | xfs_bmap_finish | | | xfs_itruncate_finish | | | xfs_inactive | | | xfs_fs_evict_inode | | | evict | | | iput | | | do_unlinkat | | | sys_unlinkat | | | system_call_fastpath | | | unlinkat | | | | | |--33.29%-- xfs_free_ag_extent | | | xfs_free_extent | | | xfs_bmap_finish | | | xfs_itruncate_finish | | | xfs_inactive | | | xfs_fs_evict_inode | | | evict | | | iput | | | do_unlinkat | | | sys_unlinkat | | | system_call_fastpath | | | unlinkat | | | | | --16.74%-- xfs_inobt_lookup | | xfs_difree | | xfs_ifree | | xfs_inactive | | xfs_fs_evict_inode | | evict | | iput | | do_unlinkat | | sys_unlinkat | | system_call_fastpath | | unlinkat | | | |--24.99%-- xfs_imap_to_bp.isra.9 | | xfs_itobp | | xfs_iunlink_remove | | xfs_ifree | | xfs_inactive | | xfs_fs_evict_inode | | evict | | iput | | | | | |--66.63%-- do_unlinkat | | | sys_unlinkat | | | system_call_fastpath | | | unlinkat | | | | | --33.37%-- d_delete | | vfs_rmdir | | do_rmdir | | sys_unlinkat | | system_call_fastpath | | unlinkat | | | |--16.70%-- xfs_read_agi | | | | | |--50.05%-- xfs_iunlink_remove | | | xfs_ifree | | | xfs_inactive | | | xfs_fs_evict_inode | | | evict | | | iput | | | do_unlinkat | | | sys_unlinkat | | | system_call_fastpath | | | unlinkat | | | | | --49.95%-- xfs_iunlink | | xfs_droplink | | xfs_remove | | xfs_vn_unlink | | vfs_unlink | | do_unlinkat | | sys_unlinkat | | system_call_fastpath | | unlinkat | | | --8.36%-- xfs_read_agf | xfs_alloc_read_agf | xfs_alloc_fix_freelist | xfs_free_extent | xfs_bmap_finish | xfs_itruncate_finish | xfs_inactive | xfs_fs_evict_inode | evict | iput | do_unlinkat | sys_unlinkat | system_call_fastpath | unlinkat | |--5.27%-- xfs_trans_free | _xfs_trans_commit | | | |--50.08%-- xfs_inactive | | xfs_fs_evict_inode | | evict | | iput | | do_unlinkat | | sys_unlinkat | | system_call_fastpath | | unlinkat | | | --49.92%-- xfs_remove | xfs_vn_unlink | vfs_unlink | do_unlinkat | sys_unlinkat | system_call_fastpath | unlinkat | |--5.27%-- xfs_trans_free_items | xfs_log_commit_cil | _xfs_trans_commit | | | |--50.13%-- xfs_remove | | xfs_vn_unlink | | vfs_unlink | | do_unlinkat | | sys_unlinkat | | system_call_fastpath | | unlinkat | | | --49.87%-- xfs_itruncate_finish | xfs_inactive | xfs_fs_evict_inode | evict | iput | do_unlinkat | sys_unlinkat | system_call_fastpath | unlinkat | |--2.64%-- xfs_trans_del_item | xfs_trans_brelse | xfs_iunlink_remove | xfs_ifree | xfs_inactive | xfs_fs_evict_inode | evict | iput | do_unlinkat | sys_unlinkat | system_call_fastpath | unlinkat | |--2.64%-- __rcu_process_callbacks | rcu_process_callbacks | __do_softirq | call_softirq | do_softirq | irq_exit | smp_apic_timer_interrupt | apic_timer_interrupt | xfs_btree_lookup | xfs_inobt_lookup | xfs_difree | xfs_ifree | xfs_inactive | xfs_fs_evict_inode | evict | iput | do_unlinkat | sys_unlinkat | system_call_fastpath | unlinkat | |--2.64%-- free_buffer_head | try_to_free_buffers | xfs_vm_releasepage | try_to_release_page | block_invalidatepage | xfs_vm_invalidatepage | truncate_inode_page | truncate_inode_pages_range | truncate_inode_pages | xfs_fs_evict_inode | evict | iput | do_unlinkat | sys_unlinkat | system_call_fastpath | unlinkat | |--2.64%-- xfs_bmap_del_free.constprop.18 | xfs_bmap_finish | xfs_itruncate_finish | xfs_inactive | xfs_fs_evict_inode | evict | iput | do_unlinkat | sys_unlinkat | system_call_fastpath | unlinkat | |--2.63%-- xfs_log_done | xfs_log_commit_cil | _xfs_trans_commit | xfs_remove | xfs_vn_unlink | vfs_unlink | do_unlinkat | sys_unlinkat | system_call_fastpath | unlinkat | |--2.62%-- do_unlinkat | sys_unlinkat | system_call_fastpath | unlinkat | --2.62%-- xfs_difree xfs_ifree xfs_inactive xfs_fs_evict_inode evict iput do_unlinkat sys_unlinkat system_call_fastpath unlinkat -- Markus --SUOF0GtieIMvvwua Content-Type: application/octet-stream Content-Disposition: attachment; filename="report_hang.gz" Content-Transfer-Encoding: base64 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 W+P/A4XzriiwbAYA --SUOF0GtieIMvvwua-- From BATV+03d0cb35b38f74171788+2858+infradead.org+hch@bombadil.srs.infradead.org Tue Jun 21 04:15:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5L9FgfZ248207 for ; Tue, 21 Jun 2011 04:15:42 -0500 X-ASG-Debug-ID: 1308647738-4ebb03a40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 120C01F580 for ; Tue, 21 Jun 2011 02:15:38 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id gMLgM2DC0wkGqehV for ; Tue, 21 Jun 2011 02:15:38 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QYx3Y-0005dM-Q7; Tue, 21 Jun 2011 09:15:36 +0000 Date: Tue, 21 Jun 2011 05:15:36 -0400 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] xfs: split xfs_setattr Subject: Re: [PATCH 1/2] xfs: split xfs_setattr Message-ID: <20110621091536.GA9475@infradead.org> References: <20110617131519.GA2822@infradead.org> <20110621012150.GK32466@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110621012150.GK32466@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308647739 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66683 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Tue, Jun 21, 2011 at 11:21:50AM +1000, Dave Chinner wrote: > I'm not sure that xfs_setattr_simple() is the best name for this. > It's not really a simple setattr case, it's all the "all except size" > changes. Perhaps xfs_setattr_nonsize() and xfs_setattr_size() > would be a better name pair... Ok. > > + tp = xfs_trans_alloc(mp, XFS_TRANS_SETATTR_NOT_SIZE); > > + error = xfs_trans_reserve(tp, 0, XFS_ICHANGE_LOG_RES(mp), 0, 0, 0); > > + if (error) > > + goto error_return; > > + > > + lock_flags = XFS_ILOCK_EXCL; > > + xfs_ilock(ip, lock_flags); > > With a slight change to the error unwind stack, you can kill the > lock_flags variable altogether - it never gets changed in the code > except for here. > If you change it to: > > error_return: > xfs_iunlock(ip, XFS_ILOCK_EXCL); > error_free_tp: > xfs_trans_cancel(tp, 0); > xfs_qm_dqrele(udqp); > xfs_qm_dqrele(gdqp); > return error; > > And jump to error_free_tp when xfs_trans_reserve() fails above, > lock_flags and the conditionals in the unwind stack go away. We'll actually need a third label for just the dqrele calls, as we get references to the dqouts before allocating the transaction. And even with that we change the order of cleanup even if that seems harmless from a quick audit. I've prepared a version with the suggestions for QA, but I have a bit of an uneasy feeling about mixing up such subtile changes with the simple split. > > + if (mp->m_flags & XFS_MOUNT_WSYNC) > > + xfs_trans_set_sync(tp); > > + > > + error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); > > + goto out_unlock; > > + > > +out_trans_abort: > > + commit_flags |= XFS_TRANS_ABORT; > > +out_trans_cancel: > > + xfs_trans_cancel(tp, commit_flags); > > +out_unlock: > > + if (lock_flags) > > + xfs_iunlock(ip, lock_flags); > > + return error; > > +} > > And here we never get to out_unlock without lock_flags being set, so > the conditional can be removed. We can. E.g. the zero length truncate case (which is removed in the next patch) does it, as does the xfs_flush_pages case if XFS_ATTR_NOLOCK is set. So I'd rather leave it in instead of hacking around those cases. > I also think that the goto after the > commit call is a bit ugly. I'd prefer the none-failure case is > straight line code so it is easy to follow, and the unwind stack has > an extra jump in it. i.e.: Ok. From BATV+03d0cb35b38f74171788+2858+infradead.org+hch@bombadil.srs.infradead.org Tue Jun 21 04:29:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5L9TN1i248783 for ; Tue, 21 Jun 2011 04:29:24 -0500 X-ASG-Debug-ID: 1308648562-060202f50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EA87E1D781BD for ; Tue, 21 Jun 2011 02:29:22 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id lghF8E97nkbVj673 for ; Tue, 21 Jun 2011 02:29:22 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QYxGq-0007YE-Hd; Tue, 21 Jun 2011 09:29:20 +0000 Date: Tue, 21 Jun 2011 05:29:20 -0400 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com, Wu Fengguang X-ASG-Orig-Subj: Re: [PATCH] xfs: improve sync behaviour in face of aggressive dirtying Subject: Re: [PATCH] xfs: improve sync behaviour in face of aggressive dirtying Message-ID: <20110621092920.GA24540@infradead.org> References: <20110617131401.GC2141@infradead.org> <20110620081802.GA27111@infradead.org> <20110621003343.GJ32466@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110621003343.GJ32466@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308648562 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66685 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Tue, Jun 21, 2011 at 10:33:43AM +1000, Dave Chinner wrote: > > The minor one is that we always flush all work items and not just those > > on the filesystem to be flushed. This might become an issue for lager > > systems, or when we apply a similar scheme to fsync, which has the same > > underlying issue. > > For sync, I don't think it matters if we flush a few extra IO > completions on a busy system. For fsync, it could increase fsync > completion latency significantly, though I'd suggest we should > address that problem when we apply the scheme to fsync. > > The major one is that flush_workqueue only flushed work items that were > > queued before it was called, but we can requeue completions when we fail > > to get the ilock in xfs_setfilesize, which can lead to losing i_size > > updates when it happens. > > Yes, I can see that will cause problems.... > > > I see two ways to fix this: either we implement our own workqueue > > look-alike based on the old workqueue code. This would allow flushing > > queues per-sb or even per-inode, and allow us to special case flushing > > requeues as well before returning. > > No need for a look-alike. With the CMWQ infrastructure, there is no > reason why we need global workqueues anymore. The log, data and > convert wqs were global to minimise the number of per-cpu threads > XFS required to operate. CMWQ prevents the explosion of mostly idle > kernel threads, so we could move all these workqueues to per- struct > xfs_mount without undue impact. That helps to work around the impact of syncs on other filesystems, but it does not help with the EAGAIN requeueing. > I don't think we want to go to per-inode work contexts. One > possibility is that for fsync related writeback (e.g. WB_SYNC_ALL) WB_SYNC_ALL is also used for the second pass of sync. > we could have a separate "fsync-completion" wqs that we queue > completions to rather than the more widely used data workqueue. Then > for fsync we'd only need to flush the fsync-completion workqueue > rather than the mount wide data and convert wqs, and hence we > wouldn't stall on IO completion for IO outside of fsync scope... One thing I've thought about is abusing current->journal_info to complete ioends in-processes for fsync. That will need Josefs patch to move the filemap_write_and_wait call into ->fsync. At that point we can do: xfs_fsync() { current->journal_info = &ioend_end_list; filemap_write_and_wait(); list_for_each_entry_reverse(ioend_end_list) { process_ioend(); } current->journal_info = NULL; which means there's no context switch involved, and as an added benefit we processing the list reverse means we minimize the number of i_size updates, which will be especially interesting with my changes to always log these directly and get rid of the unlogged metadata changes. It does not cover ioends always pending before we called fsync, but I hope we can live with that. What we still need to sort out with the workqueue scheme is a way to deal with the EAGAIN returns from xfs_setfilesize. From reading your changelog for that change it seems we can simply kill it once we move to per-mount completion queues, as the loop device would have it's own workqueue. If that sounds reasonable I'll respin a series to move to per-mount workqueues, remove the EAGAIN case, and use the workqueue flush in sync. Fsync will be left for later, and I'll ping Josef to resend his fsync prototype change. From markus@trippelsdorf.de Tue Jun 21 05:18:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p5LAIeEr251486 for ; Tue, 21 Jun 2011 05:18:40 -0500 X-ASG-Debug-ID: 1308651518-3d1c00b40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C30B41EE89 for ; Tue, 21 Jun 2011 03:18:39 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id H3AkjVMSRwrtgQzg for ; Tue, 21 Jun 2011 03:18:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:in-reply-to; q=dns/txt; s=beta; bh=vTxFGx0fx85Hl3sW fG7YF3GBDCSHqJHvG5guLhDTKBE=; b=H8a7Q+ac1VyOIFG33aY/ZOKS7xwiz213 pCKqza59qQJWnRTVNGDuXHgV1yJdga1HvNSHTqGFbWkY8eeH/b88hkCgpW+08HOi I+pppfl+/vo6cOCfEq3fFgEqNp731pCutpnulAedWirmElm039vm3Lq5ZdIaifwI I0/hXEyrEL0= Received: (qmail 14404 invoked from network); 21 Jun 2011 12:18:38 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.64.57.18) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 21 Jun 2011 12:18:38 +0200 Date: Tue, 21 Jun 2011 12:18:37 +0200 From: Markus Trippelsdorf To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110621101837.GA1733@x4.trippels.de> References: <20110618141950.GA1685@x4.trippels.de> <20110619222447.GI561@dastard> <20110620005415.GA1730@x4.trippels.de> <20110620013449.GO561@dastard> <20110620020236.GB1730@x4.trippels.de> <20110620023625.GP561@dastard> <20110620060351.GC1730@x4.trippels.de> <20110620111359.GA12632@x4.trippels.de> <20110621042513.GN32466@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110621042513.GN32466@dastard> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1308651519 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=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66687 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 2011.06.21 at 14:25 +1000, Dave Chinner wrote: > On Mon, Jun 20, 2011 at 01:13:59PM +0200, Markus Trippelsdorf wrote: > > That is, you really need to get a profile of the rm -rf process - or > whatever is consuming the CPU time - (e.g. via perf or ftrace) > across the hang to so we can narrow down the potential cause of the > latency. Speaking of which, latencytop might be helpful in > identifying where input is getting held up.... Just ran latencytop and this the result: [xlog_state_get_iclog_space] 2104.4 msec 38.1 % -- Markus From markus@trippelsdorf.de Tue Jun 21 05:40:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p5LAetqv252410 for ; Tue, 21 Jun 2011 05:40:56 -0500 X-ASG-Debug-ID: 1308652854-4ece00e60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 806F31F630 for ; Tue, 21 Jun 2011 03:40:54 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id UAmVLBvCAVrednSp for ; Tue, 21 Jun 2011 03:40:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:in-reply-to; q=dns/txt; s=beta; bh=j8rOyFtK4sTzobwQ +YDmK4ElLeTJbwSYN0a4agOY3YI=; b=R94XR+Ozrk69P3BGtozlV08QzapUN8DL +hHkH9ucbHV+jNk3McfreyEaSya/ttyPFy0SZOUaECxZSDGdUnk56aulf0+QFG4x eBkeHWnQNp06h4wSLc3yQt2VCAaMUa1K8kBjq3UaHCpRlD+CYSALBuGWlVmfaC9R ICLRVRGtv20= Received: (qmail 21376 invoked from network); 21 Jun 2011 12:40:54 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.64.57.18) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 21 Jun 2011 12:40:54 +0200 Date: Tue, 21 Jun 2011 12:40:53 +0200 From: Markus Trippelsdorf To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110621104053.GB1733@x4.trippels.de> References: <20110618141950.GA1685@x4.trippels.de> <20110619222447.GI561@dastard> <20110620005415.GA1730@x4.trippels.de> <20110620013449.GO561@dastard> <20110620020236.GB1730@x4.trippels.de> <20110620023625.GP561@dastard> <20110620060351.GC1730@x4.trippels.de> <20110620111359.GA12632@x4.trippels.de> <20110621042513.GN32466@dastard> <20110621101837.GA1733@x4.trippels.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110621101837.GA1733@x4.trippels.de> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1308652855 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=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66689 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 2011.06.21 at 12:18 +0200, Markus Trippelsdorf wrote: > On 2011.06.21 at 14:25 +1000, Dave Chinner wrote: > > On Mon, Jun 20, 2011 at 01:13:59PM +0200, Markus Trippelsdorf wrote: > > > > That is, you really need to get a profile of the rm -rf process - or > > whatever is consuming the CPU time - (e.g. via perf or ftrace) > > across the hang to so we can narrow down the potential cause of the > > latency. Speaking of which, latencytop might be helpful in > > identifying where input is getting held up.... > > Just ran latencytop and this the result: > > [xlog_state_get_iclog_space] 2104.4 msec 38.1 % And another example: Cause Maximum Percentage [xlog_state_get_iclog_space] 2098.7 msec 38.0 % Waiting for TTY data 1953.4 msec 29.7 % Syncing filesystem 723.0 msec 12.1 % Unlinking file 25.8 msec 7.7 % -- Markus From markus@trippelsdorf.de Tue Jun 21 13:24:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p5LIOGmW020415 for ; Tue, 21 Jun 2011 13:24:17 -0500 X-ASG-Debug-ID: 1308680654-582601d10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C271E216AB for ; Tue, 21 Jun 2011 11:24:15 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id wwN5pPESAjSvJY6F for ; Tue, 21 Jun 2011 11:24:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:in-reply-to; q=dns/txt; s=beta; bh=81X3CSxutP9eFSku ef2ELOhnOuxiy4u/nnNp09ndc/4=; b=TE4+WL/yWjel2ZT8g6yNNxIyFLlerYGW Lin7hc/3uke6dDjDH6wbLiPcFlrjmcHnTE9XZoQXUwOe40lqIFm/G57mMJ7fljcl ZyZ8Uwfp/fbnsoq+7IasqFIhLtN5Hpm78NrHsvE9BkmdATjOKk8aq2rDTvixvc9d cNSu4B0Hp4o= Received: (qmail 15554 invoked from network); 21 Jun 2011 20:24:14 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.64.57.18) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 21 Jun 2011 20:24:14 +0200 Date: Tue, 21 Jun 2011 20:24:14 +0200 From: Markus Trippelsdorf To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110621182414.GA1723@x4.trippels.de> References: <20110618141950.GA1685@x4.trippels.de> <20110619222447.GI561@dastard> <20110620005415.GA1730@x4.trippels.de> <20110620013449.GO561@dastard> <20110620020236.GB1730@x4.trippels.de> <20110620023625.GP561@dastard> <20110620060351.GC1730@x4.trippels.de> <20110620111359.GA12632@x4.trippels.de> <20110621042513.GN32466@dastard> <20110621080219.GA1684@x4.trippels.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110621080219.GA1684@x4.trippels.de> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1308680655 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0207 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66721 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 2011.06.21 at 10:02 +0200, Markus Trippelsdorf wrote: > On 2011.06.21 at 14:25 +1000, Dave Chinner wrote: > > That is, you really need to get a profile of the rm -rf process - or > > whatever is consuming the CPU time - (e.g. via perf or ftrace) > > across the hang to so we can narrow down the potential cause of the > > latency. Speaking of which, latencytop might be helpful in > > identifying where input is getting held up.... > > I've recorded a profile with "perf record -g /home/markus/rm_sync" > ~ % cat rm_sync > rm -fr /mnt/tmp/tmp/linux && sync FWIW here are two links to svg time-charts produced by: perf timechart record /home/markus/rm_sync http://trippelsdorf.de/timechart1.svg http://trippelsdorf.de/timechart2.svg -- Markus From markus@trippelsdorf.de Tue Jun 21 13:57:04 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p5LIv3qR021480 for ; Tue, 21 Jun 2011 13:57:04 -0500 X-ASG-Debug-ID: 1308682622-5822034f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6801B219C3 for ; Tue, 21 Jun 2011 11:57:02 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id xhcA7lTsRo2ebSux for ; Tue, 21 Jun 2011 11:57:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:in-reply-to; q=dns/txt; s=beta; bh=l1zN2FO6logWq66Q ix93thD/zW8+cDuUIpmdE0RjKOs=; b=BTteXcBTRXrx5v16ON2AC81vIVsCamFu WOAcsYgxGKtARLlPpHQLgg947PBiy3pz7A5gd5f4f7T7bcVxePX3l9xlY48kRt3P ZhCwOmzTaVMZxcqJTxKtU6cF8t4Qso4rviQUodA1xpwMRt9VSNWPJdFh1Ngy50z2 5fvkTpwtDSE= Received: (qmail 21961 invoked from network); 21 Jun 2011 20:57:01 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.64.57.18) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 21 Jun 2011 20:57:01 +0200 Date: Tue, 21 Jun 2011 20:57:01 +0200 From: Markus Trippelsdorf To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110621185701.GB1723@x4.trippels.de> References: <20110619222447.GI561@dastard> <20110620005415.GA1730@x4.trippels.de> <20110620013449.GO561@dastard> <20110620020236.GB1730@x4.trippels.de> <20110620023625.GP561@dastard> <20110620060351.GC1730@x4.trippels.de> <20110620111359.GA12632@x4.trippels.de> <20110621042513.GN32466@dastard> <20110621080219.GA1684@x4.trippels.de> <20110621182414.GA1723@x4.trippels.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110621182414.GA1723@x4.trippels.de> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1308682623 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0207 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66723 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 2011.06.21 at 20:24 +0200, Markus Trippelsdorf wrote: > On 2011.06.21 at 10:02 +0200, Markus Trippelsdorf wrote: > > On 2011.06.21 at 14:25 +1000, Dave Chinner wrote: > > > That is, you really need to get a profile of the rm -rf process - or > > > whatever is consuming the CPU time - (e.g. via perf or ftrace) > > > across the hang to so we can narrow down the potential cause of the > > > latency. Speaking of which, latencytop might be helpful in > > > identifying where input is getting held up.... > > > > I've recorded a profile with "perf record -g /home/markus/rm_sync" > > ~ % cat rm_sync > > rm -fr /mnt/tmp/tmp/linux && sync > > FWIW here are two links to svg time-charts produced by: > > perf timechart record /home/markus/rm_sync > > http://trippelsdorf.de/timechart1.svg > http://trippelsdorf.de/timechart2.svg > And this is what the mysterious kworker is doing during the sync. It's the one consuming most of the CPU time. 39.96% kworker/3:0 [kernel.kallsyms] 0xffffffff811da9da k [k] xfs_trans_ail_update_bulk | --- xfs_trans_ail_update_bulk xfs_trans_committed_bulk xlog_cil_committed xlog_state_do_callback xlog_state_done_syncing xlog_iodone xfs_buf_iodone_work process_one_work worker_thread kthread kernel_thread_helper -- Markus From markus@trippelsdorf.de Tue Jun 21 16:22:04 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p5LLM4CT026600 for ; Tue, 21 Jun 2011 16:22:04 -0500 X-ASG-Debug-ID: 1308691322-768701d40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AEE455B8C for ; Tue, 21 Jun 2011 14:22:03 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id 2imX6CQRBEMN2YBf for ; Tue, 21 Jun 2011 14:22:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:in-reply-to; q=dns/txt; s=beta; bh=p8J8eHNKAtI+YoLs qWhqYi9ibbZC0RXTotksGgtaolE=; b=kDt+ANpbmmUXkIOUVKplDeBj/dAd1iCb KIGkEq7TPu8u27y/uDPd5bzknYfq9ZTkZwyZ3Buw01QlSBdH2JItLk049STccUAB /z7OURbPiiGyji1KCgzu8qB5zLqC8Pr/aZOEv8XdcDfJ80Ttp4RTnRDaftwsIzZC JhhpkhAKR3Q= Received: (qmail 14773 invoked from network); 21 Jun 2011 23:22:02 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.64.57.18) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 21 Jun 2011 23:22:02 +0200 Date: Tue, 21 Jun 2011 23:22:01 +0200 From: Markus Trippelsdorf To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110621212201.GA1755@x4.trippels.de> References: <20110620005415.GA1730@x4.trippels.de> <20110620013449.GO561@dastard> <20110620020236.GB1730@x4.trippels.de> <20110620023625.GP561@dastard> <20110620060351.GC1730@x4.trippels.de> <20110620111359.GA12632@x4.trippels.de> <20110621042513.GN32466@dastard> <20110621080219.GA1684@x4.trippels.de> <20110621182414.GA1723@x4.trippels.de> <20110621185701.GB1723@x4.trippels.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110621185701.GB1723@x4.trippels.de> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1308691323 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66733 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 2011.06.21 at 20:57 +0200, Markus Trippelsdorf wrote: > On 2011.06.21 at 20:24 +0200, Markus Trippelsdorf wrote: > > On 2011.06.21 at 10:02 +0200, Markus Trippelsdorf wrote: > > > On 2011.06.21 at 14:25 +1000, Dave Chinner wrote: > > > > That is, you really need to get a profile of the rm -rf process - or > > > > whatever is consuming the CPU time - (e.g. via perf or ftrace) > > > > across the hang to so we can narrow down the potential cause of the > > > > latency. Speaking of which, latencytop might be helpful in > > > > identifying where input is getting held up.... > > > > > > I've recorded a profile with "perf record -g /home/markus/rm_sync" > > > ~ % cat rm_sync > > > rm -fr /mnt/tmp/tmp/linux && sync > > > > FWIW here are two links to svg time-charts produced by: > > > > perf timechart record /home/markus/rm_sync > > > > http://trippelsdorf.de/timechart1.svg > > http://trippelsdorf.de/timechart2.svg > > > > And this is what the mysterious kworker is doing during the sync. > It's the one consuming most of the CPU time. > > 39.96% kworker/3:0 [kernel.kallsyms] 0xffffffff811da9da k [k] xfs_trans_ail_update_bulk > | > --- xfs_trans_ail_update_bulk > xfs_trans_committed_bulk > xlog_cil_committed > xlog_state_do_callback > xlog_state_done_syncing > xlog_iodone > xfs_buf_iodone_work > process_one_work > worker_thread > kthread > kernel_thread_helper > The following patch fixes the problem for me. diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index 5e68099..2f34efd 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c @@ -1856,7 +1856,7 @@ xfs_buf_init(void) goto out; xfslogd_workqueue = alloc_workqueue("xfslogd", - WQ_MEM_RECLAIM | WQ_HIGHPRI, 1); + WQ_MEM_RECLAIM | WQ_UNBOUND, 1); if (!xfslogd_workqueue) goto out_free_buf_zone; -- Markus From david@fromorbit.com Tue Jun 21 19:04:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.4 required=5.0 tests=BAYES_00,FAKE_REPLY_C autolearn=ham version=3.4.0-r929098 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 p5M04uLD038744 for ; Tue, 21 Jun 2011 19:04:56 -0500 X-ASG-Debug-ID: 1308701092-4f5202c00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9EF701E4D548 for ; Tue, 21 Jun 2011 17:04:52 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id Hp5ruNy6psmHfHEv for ; Tue, 21 Jun 2011 17:04:52 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EADouAU55LChD/2dsb2JhbABUpwh4iHO/eA6GHQSiBA Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 22 Jun 2011 09:34:51 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QZAw5-0001TP-41; Wed, 22 Jun 2011 10:04:49 +1000 Date: Wed, 22 Jun 2011 10:04:49 +1000 From: Dave Chinner To: Markus Trippelsdorf Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110622000449.GQ32466@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110621212201.GA1755@x4.trippels.de> <20110621185701.GB1723@x4.trippels.de> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308701094 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66743 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, Jun 21, 2011 at 08:57:01PM +0200, Markus Trippelsdorf wrote: > On 2011.06.21 at 20:24 +0200, Markus Trippelsdorf wrote: > > On 2011.06.21 at 10:02 +0200, Markus Trippelsdorf wrote: > > > On 2011.06.21 at 14:25 +1000, Dave Chinner wrote: > > > > That is, you really need to get a profile of the rm -rf process - or > > > > whatever is consuming the CPU time - (e.g. via perf or ftrace) > > > > across the hang to so we can narrow down the potential cause of the > > > > latency. Speaking of which, latencytop might be helpful in > > > > identifying where input is getting held up.... > > > > > > I've recorded a profile with "perf record -g /home/markus/rm_sync" > > > ~ % cat rm_sync > > > rm -fr /mnt/tmp/tmp/linux && sync > > > > FWIW here are two links to svg time-charts produced by: > > > > perf timechart record /home/markus/rm_sync > > > > http://trippelsdorf.de/timechart1.svg > > http://trippelsdorf.de/timechart2.svg > > > > And this is what the mysterious kworker is doing during the sync. > It's the one consuming most of the CPU time. > > 39.96% kworker/3:0 [kernel.kallsyms] 0xffffffff811da9da k [k] xfs_trans_ail_update_bulk > | > --- xfs_trans_ail_update_bulk > xfs_trans_committed_bulk > xlog_cil_committed > xlog_state_do_callback > xlog_state_done_syncing > xlog_iodone > xfs_buf_iodone_work > process_one_work > worker_thread > kthread > kernel_thread_helper So that is inserting items into the AIL at transaction completion. That can consume lots of CPU time if the CIL checkpoints are being flushed quickly enough. Given you are doing a rm -rf at this point in time, I'd expect to see this trace present in the profile, though maybe not at that extent. I have seen this before but have never been able to it reproduce reliably. If checkpoints are completed "out of order" due to the way the commit records are written into the iclogs. This can cause extra CPU because the AIL insertion then has to skip over all the items that were inserted out of order before splicing each group of items into the AIL. I only rarely see this (maybe once every couple of weeks of performance testing), so I'm not sure it's the problem you are seeing. Adding this debug to xfs_ail_splice() list walk will tell us if this is happening and how many items it had to walk when you see a hang: xfs_lsn_t lsn) { xfs_log_item_t *next_lip; + int walked = 0; /* If the list is empty, just insert the item. */ if (list_empty(&ailp->xa_ail)) { list_splice(list, &ailp->xa_ail); return; } list_for_each_entry_reverse(next_lip, &ailp->xa_ail, li_ail) { if (XFS_LSN_CMP(next_lip->li_lsn, lsn) <= 0) break; + if (!walked++) { + xfs_warn(ailp->xa_mount, + "ail: ooo splice, tail 0x%llx, item 0x%llx\n", + next_lip->li_lsn, lsn); + } } + if (walked > 10) { + xfs_warn(ailp->xa_mount, + "ail: ooo splice, walked %d items\n", walked); + } ASSERT(&next_lip->li_ail == &ailp->xa_ail || XFS_LSN_CMP(next_lip->li_lsn, lsn) <= 0); That will at least tell us if this is the cause of your problem. If it is, I think I know how to avoid most of the list walk overhead fairly easily and that should avoid the need to change workqueue configurations at all. > The following patch fixes the problem for me. > > diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c > index 5e68099..2f34efd 100644 > --- a/fs/xfs/linux-2.6/xfs_buf.c > +++ b/fs/xfs/linux-2.6/xfs_buf.c > @@ -1856,7 +1856,7 @@ xfs_buf_init(void) > goto out; > > xfslogd_workqueue = alloc_workqueue("xfslogd", > - WQ_MEM_RECLAIM | WQ_HIGHPRI, 1); > + WQ_MEM_RECLAIM | WQ_UNBOUND, 1); > if (!xfslogd_workqueue) > goto out_free_buf_zone; That implies the source of your X/ssh hangs is a workqueue priority inversion. We need the xfslogd to run with WQ_HIGHPRI because we can deadlock in IO completion if it is blocked by xfsdatad/xfsconvertd wq operations. Hence we need to process the logd workqueue ahead of data IO completions and we do that by making the log IO completion high priority. This thing is, the CMWQ infrastructure only has one level of "high priority" - we can't define any other sort of dependency between various queues - and that queue is simply a FIFO. IOWs, CMWQ will process anything that is high priority ahead of -all- other normal priority work items. That means that if you get a high priority workqueue with lots to do and consuming CPU (as we are seeing here) it will starve all other work items that are queued on that CPU. So what you end up seeing is interactive process related work being queued on CPU 3 which is then being starved of processing by XFS IO completion work on the same CPU. By setting the xfslogd workqueue to unbound, it no longer holds precedence over any of the other work and hence does not starve the queued interactive process related work. That's why the patch "fixes" your 1-2s hangs while log IO is in progress, but it will eventually deadlock and hang the filesystem permanently. There are two different things you can try with the wq initialisation that might help prevent the problem. Firstly, try this: - WQ_MEM_RECLAIM | WQ_HIGHPRI, 1); + WQ_MEM_RECLAIM | WQ_HIGHPRI, 8); To change the number of concurrent per-cpu work items that can be processed on the work queue. I don't think that will fix the inversion, but it may allow more concurrency which hides the inversion. The other thing you can try is: - WQ_MEM_RECLAIM | WQ_HIGHPRI, 1); + WQ_MEM_RECLAIM | WQ_HIGHPRI | WQ_CPU_INTENSIVE, 1); Which marks the workqueue as one that will consume a lot of CPU and hence it is scheduled differently and hence should avoid other pending work from being starved. We use this WQ_CPU_INTENSIVE flag on other XFS workqueues that are known to consume lots of CPU, so I suspect this is the right thing to do here. Hopefully one of these things will point to a potential solution. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Jun 21 19:19:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5M0Jg6k039169 for ; Tue, 21 Jun 2011 19:19:42 -0500 X-ASG-Debug-ID: 1308701979-13ca01040000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6617C22D3E for ; Tue, 21 Jun 2011 17:19:40 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id tN0fO0jdCW0ftGRy for ; Tue, 21 Jun 2011 17:19:40 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAMUxAU55LChD/2dsb2JhbABUpwh4yGAOhh0EogQ Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 22 Jun 2011 09:49:39 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QZBAP-0001VE-Lk; Wed, 22 Jun 2011 10:19:37 +1000 Date: Wed, 22 Jun 2011 10:19:37 +1000 From: Dave Chinner To: Michael Monnerie Cc: xfs@oss.sgi.com, Christoph Hellwig , Wu Fengguang X-ASG-Orig-Subj: Re: [PATCH] xfs: improve sync behaviour in face of aggressive dirtying Subject: Re: [PATCH] xfs: improve sync behaviour in face of aggressive dirtying Message-ID: <20110622001937.GR32466@dastard> References: <20110617131401.GC2141@infradead.org> <20110620081802.GA27111@infradead.org> <20110621003343.GJ32466@dastard> <201106210921.48657@zmi.at> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201106210921.48657@zmi.at> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308701981 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0004 1.0000 -2.0183 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66743 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, Jun 21, 2011 at 09:21:46AM +0200, Michael Monnerie wrote: > On Dienstag, 21. Juni 2011 Dave Chinner wrote: > > > The minor one is that we always flush all work items and not just > > > those on the filesystem to be flushed. This might become an issue > > > for lager systems, or when we apply a similar scheme to fsync, > > > which has the same underlying issue. > > > > For sync, I don't think it matters if we flush a few extra IO > > completions on a busy system. > > Couldn't that be bad on a system with mixed fast/slow storage (say 15k > SAS and 7.2k SATA), where on the busy fast SAS lots of syncs occur and > lead to extra I/O on the SATA disks? Especially if there are 16 SAS > disks in an array with RAID-0 against 4 SATA disks in RAID-6, to say the > worst. If the SATAs are already heavy used (say >=50%), those extra > writes could bring them to their knees. We are not talking about issuing extra writes to disk, so you don't have to worry about this. What we are talking about is how to efficiently flush the XFS IO completion queues for writes that the hardware has already completed. That's almost always just CPU overhead and doesn't involve more IO.... ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Jun 21 20:09:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5M19Jjl040762 for ; Tue, 21 Jun 2011 20:09:20 -0500 X-ASG-Debug-ID: 1308704956-147d02540000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BA05E2055A for ; Tue, 21 Jun 2011 18:09:16 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id 6k8WoruMpFjHMScr for ; Tue, 21 Jun 2011 18:09:16 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EANo/AU55LChD/2dsb2JhbABUpwp4iHO/Lw6GHQSiBA Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 22 Jun 2011 10:39:15 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QZBwN-0001Za-Kk; Wed, 22 Jun 2011 11:09:11 +1000 Date: Wed, 22 Jun 2011 11:09:11 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com, Wu Fengguang X-ASG-Orig-Subj: Re: [PATCH] xfs: improve sync behaviour in face of aggressive dirtying Subject: Re: [PATCH] xfs: improve sync behaviour in face of aggressive dirtying Message-ID: <20110622010911.GS32466@dastard> References: <20110617131401.GC2141@infradead.org> <20110620081802.GA27111@infradead.org> <20110621003343.GJ32466@dastard> <20110621092920.GA24540@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110621092920.GA24540@infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308704958 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66747 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, Jun 21, 2011 at 05:29:20AM -0400, Christoph Hellwig wrote: > On Tue, Jun 21, 2011 at 10:33:43AM +1000, Dave Chinner wrote: > > > The minor one is that we always flush all work items and not just those > > > on the filesystem to be flushed. This might become an issue for lager > > > systems, or when we apply a similar scheme to fsync, which has the same > > > underlying issue. > > > > For sync, I don't think it matters if we flush a few extra IO > > completions on a busy system. For fsync, it could increase fsync > > completion latency significantly, though I'd suggest we should > > address that problem when we apply the scheme to fsync. > > > > The major one is that flush_workqueue only flushed work items that were > > > queued before it was called, but we can requeue completions when we fail > > > to get the ilock in xfs_setfilesize, which can lead to losing i_size > > > updates when it happens. > > > > Yes, I can see that will cause problems.... > > > > > I see two ways to fix this: either we implement our own workqueue > > > look-alike based on the old workqueue code. This would allow flushing > > > queues per-sb or even per-inode, and allow us to special case flushing > > > requeues as well before returning. > > > > No need for a look-alike. With the CMWQ infrastructure, there is no > > reason why we need global workqueues anymore. The log, data and > > convert wqs were global to minimise the number of per-cpu threads > > XFS required to operate. CMWQ prevents the explosion of mostly idle > > kernel threads, so we could move all these workqueues to per- struct > > xfs_mount without undue impact. > > That helps to work around the impact of syncs on other filesystems, but > it does not help with the EAGAIN requeueing. Right. I wasn't suggesting that it would. I was just talking out loud about why we have the current structure and how the reasons for it existing weren't relevant anymore. Hence changing the workqueue context is something we should be able to do with little impact.... > > I don't think we want to go to per-inode work contexts. One > > possibility is that for fsync related writeback (e.g. WB_SYNC_ALL) > > WB_SYNC_ALL is also used for the second pass of sync. Sure, but that is effectively the same case as fsync as most of the dirty pages would already be written by the WB_SYNC_NONE pass. Regardless, all and extra fsync completion queue would mean is that that sync would also need to flush the fsync-completion queue..... > > we could have a separate "fsync-completion" wqs that we queue > > completions to rather than the more widely used data workqueue. Then > > for fsync we'd only need to flush the fsync-completion workqueue > > rather than the mount wide data and convert wqs, and hence we > > wouldn't stall on IO completion for IO outside of fsync scope... > > One thing I've thought about is abusing current->journal_info to > complete ioends in-processes for fsync. Oh, now that is devious. I've never considered abusing that field in the task context before ;) > That will need Josefs patch > to move the filemap_write_and_wait call into ->fsync. At that point > we can do: > > xfs_fsync() { > > current->journal_info = &ioend_end_list; > > filemap_write_and_wait(); > > list_for_each_entry_reverse(ioend_end_list) { > process_ioend(); > } > > current->journal_info = NULL; > > which means there's no context switch involved, and as an added benefit > we processing the list reverse means we minimize the number of i_size > updates, which will be especially interesting with my changes to always > log these directly and get rid of the unlogged metadata changes. All good, except I think there's a small problem with this - we have to process the ioends before pages will transition from WRITEBACK to clean. i.e. it is not until xfs_ioend_destroy() that we call the bh->b_end_io() function to update the page state. Hence it would have to be: xfs_fsync() { current->journal_info = &ioend_end_list; filemap_fdatawrite(); list_for_each_entry_reverse(ioend_end_list) { /* process_ioend also waits for ioend completion */ process_ioend(); } current->journal_info = NULL; filemap_fdatawait(); } > It does not cover ioends always pending before we called fsync, but > I hope we can live with that. That is not a problem - those pages will be marked WRITEBACK so the filemap_fdatawait() will catch them. All that will happen is we'll take a latency hit when there is a concurrent cleaner running. Direct IO is another matter, but we've already got an xfs_ioend_wait() in xfs_fsync() to deal with that. Perhaps that could be moved over to your new DIO counter so we do block on all pending IO? > What we still need to sort out with the workqueue scheme is a way to > deal with the EAGAIN returns from xfs_setfilesize. From reading your > changelog for that change it seems we can simply kill it once we move > to per-mount completion queues, as the loop device would have it's own > workqueue. Yes, that was the primary issue it was intended to solve. per-mount work queues was rejected at the time because of the thread explosion it would cause. That's not a problem now ;) I'm just trying to remember if there were other problems that the requeue also solved. I think it was to do with blocking IO completions when memory is low (ie. something it holding the ilock but blocking on memory allocation), but that, once again, is solved with CMWQ allowing multiple outstanding work items to be in progress concurrently. > If that sounds reasonable I'll respin a series to move to > per-mount workqueues, remove the EAGAIN case, and use the workqueue > flush in sync. Fsync will be left for later, and I'll ping Josef to > resend his fsync prototype change. Yes, sounds like a plan. Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+b467f25dd58f5e55a0ba+2859+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 22 01:51:26 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5M6pN9u061661 for ; Wed, 22 Jun 2011 01:51:26 -0500 X-ASG-Debug-ID: 1308725479-0d8b00240000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B2C8215E6632 for ; Tue, 21 Jun 2011 23:51:19 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id JWNN7rGWguM4LDap for ; Tue, 21 Jun 2011 23:51:19 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZHHN-0000bo-5g; Wed, 22 Jun 2011 06:51:13 +0000 Date: Wed, 22 Jun 2011 02:51:13 -0400 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com, Wu Fengguang X-ASG-Orig-Subj: Re: [PATCH] xfs: improve sync behaviour in face of aggressive dirtying Subject: Re: [PATCH] xfs: improve sync behaviour in face of aggressive dirtying Message-ID: <20110622065113.GA30411@infradead.org> References: <20110617131401.GC2141@infradead.org> <20110620081802.GA27111@infradead.org> <20110621003343.GJ32466@dastard> <20110621092920.GA24540@infradead.org> <20110622010911.GS32466@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110622010911.GS32466@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308725480 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66770 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Wed, Jun 22, 2011 at 11:09:11AM +1000, Dave Chinner wrote: > All good, except I think there's a small problem with this - we have > to process the ioends before pages will transition from WRITEBACK to > clean. i.e. it is not until xfs_ioend_destroy() that we call the > bh->b_end_io() function to update the page state. Hence it would > have to be: > > xfs_fsync() { > > current->journal_info = &ioend_end_list; > > filemap_fdatawrite(); > > list_for_each_entry_reverse(ioend_end_list) { > /* process_ioend also waits for ioend completion */ > process_ioend(); > } > > current->journal_info = NULL; > > filemap_fdatawait(); Indeed. > Direct IO is another matter, but we've already got an > xfs_ioend_wait() in xfs_fsync() to deal with that. Perhaps that > could be moved over to your new DIO counter so we do block on all > pending IO? Splitting the pending direct I/O requests into the one is indeed the plan. We'll still need to track ioends for them, though - and I haven't though about thedetails for those yet. > > If that sounds reasonable I'll respin a series to move to > > per-mount workqueues, remove the EAGAIN case, and use the workqueue > > flush in sync. Fsync will be left for later, and I'll ping Josef to > > resend his fsync prototype change. > > Yes, sounds like a plan. I've implemented it yesterday, and it appears to work fine. But there's another issues I found: the flush_workqueue will update i_size and mark the inodes dirty right now from ->sync_fs, but that's after we've done the VFS writeback. I guess I nees to order this patch after the one I'm working on to stop doing non-transaction inode updates. From markus@trippelsdorf.de Wed Jun 22 02:06:54 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p5M76rVO064847 for ; Wed, 22 Jun 2011 02:06:54 -0500 X-ASG-Debug-ID: 1308726409-0ec3002b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C9C351742C03 for ; Wed, 22 Jun 2011 00:06:49 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id dU1rSpv5GzC99P1b for ; Wed, 22 Jun 2011 00:06:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:in-reply-to; q=dns/txt; s=beta; bh=dbpiXzy0Qirt1Zg2 NtSIkvOrOmJxYUDQ/c9q6jA8VrE=; b=AJdGMohrZb7Y/KE4VyiZN2QU/wuKH08T j0EAxfmuCMWSo3XZ+FSysXjvM9HT6FQjEeMA1Yty42rTuXp5b1njE/MwvCGorKMQ Q9I+FrO6AYS8Aflszz1SW+3YYogomPMVcklLFKgy6F8sNKRXbZHJkc7RlmldkH4j zFpz4dDkSGU= Received: (qmail 539 invoked from network); 22 Jun 2011 09:06:48 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.64.57.18) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 22 Jun 2011 09:06:48 +0200 Date: Wed, 22 Jun 2011 09:06:47 +0200 From: Markus Trippelsdorf To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110622070647.GA1744@x4.trippels.de> References: <20110621212201.GA1755@x4.trippels.de> <20110621185701.GB1723@x4.trippels.de> <20110622000449.GQ32466@dastard> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="gKMricLos+KVdGMg" Content-Disposition: inline In-Reply-To: <20110622000449.GQ32466@dastard> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1308726410 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66771 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --gKMricLos+KVdGMg Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On 2011.06.22 at 10:04 +1000, Dave Chinner wrote: > On Tue, Jun 21, 2011 at 08:57:01PM +0200, Markus Trippelsdorf wrote: > > On 2011.06.21 at 20:24 +0200, Markus Trippelsdorf wrote: > > > On 2011.06.21 at 10:02 +0200, Markus Trippelsdorf wrote: > > > > On 2011.06.21 at 14:25 +1000, Dave Chinner wrote: > > > > > That is, you really need to get a profile of the rm -rf process - or > > > > > whatever is consuming the CPU time - (e.g. via perf or ftrace) > > > > > across the hang to so we can narrow down the potential cause of the > > > > > latency. Speaking of which, latencytop might be helpful in > > > > > identifying where input is getting held up.... > > > > > > > > I've recorded a profile with "perf record -g /home/markus/rm_sync" > > > > ~ % cat rm_sync > > > > rm -fr /mnt/tmp/tmp/linux && sync > > > > > > FWIW here are two links to svg time-charts produced by: > > > > > > perf timechart record /home/markus/rm_sync > > > > > > http://trippelsdorf.de/timechart1.svg > > > http://trippelsdorf.de/timechart2.svg > > > > > > > And this is what the mysterious kworker is doing during the sync. > > It's the one consuming most of the CPU time. > > > > 39.96% kworker/3:0 [kernel.kallsyms] 0xffffffff811da9da k [k] xfs_trans_ail_update_bulk > > | > > --- xfs_trans_ail_update_bulk > > xfs_trans_committed_bulk > > xlog_cil_committed > > xlog_state_do_callback > > xlog_state_done_syncing > > xlog_iodone > > xfs_buf_iodone_work > > process_one_work > > worker_thread > > kthread > > kernel_thread_helper > > So that is inserting items into the AIL at transaction completion. > That can consume lots of CPU time if the CIL checkpoints are being > flushed quickly enough. Given you are doing a rm -rf at this point > in time, I'd expect to see this trace present in the profile, though > maybe not at that extent. > > I have seen this before but have never been able to it reproduce > reliably. If checkpoints are completed "out of order" due to the > way the commit records are written into the iclogs. This can cause > extra CPU because the AIL insertion then has to skip over all the > items that were inserted out of order before splicing each group of > items into the AIL. I only rarely see this (maybe once every couple > of weeks of performance testing), so I'm not sure it's the problem > you are seeing. > > Adding this debug to xfs_ail_splice() list walk will tell us if this is > happening and how many items it had to walk when you see a hang: > > xfs_lsn_t lsn) > { > xfs_log_item_t *next_lip; > + int walked = 0; > > /* If the list is empty, just insert the item. */ > if (list_empty(&ailp->xa_ail)) { > list_splice(list, &ailp->xa_ail); > return; > } > > list_for_each_entry_reverse(next_lip, &ailp->xa_ail, li_ail) { > if (XFS_LSN_CMP(next_lip->li_lsn, lsn) <= 0) > break; > + if (!walked++) { > + xfs_warn(ailp->xa_mount, > + "ail: ooo splice, tail 0x%llx, item 0x%llx\n", > + next_lip->li_lsn, lsn); > + } > } > + if (walked > 10) { > + xfs_warn(ailp->xa_mount, > + "ail: ooo splice, walked %d items\n", walked); > + } > > ASSERT(&next_lip->li_ail == &ailp->xa_ail || > XFS_LSN_CMP(next_lip->li_lsn, lsn) <= 0); > > That will at least tell us if this is the cause of your problem. If > it is, I think I know how to avoid most of the list walk overhead > fairly easily and that should avoid the need to change workqueue > configurations at all. The kernel log is attached. > > The following patch fixes the problem for me. > > > > diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c > > index 5e68099..2f34efd 100644 > > --- a/fs/xfs/linux-2.6/xfs_buf.c > > +++ b/fs/xfs/linux-2.6/xfs_buf.c > > @@ -1856,7 +1856,7 @@ xfs_buf_init(void) > > goto out; > > > > xfslogd_workqueue = alloc_workqueue("xfslogd", > > - WQ_MEM_RECLAIM | WQ_HIGHPRI, 1); > > + WQ_MEM_RECLAIM | WQ_UNBOUND, 1); > > if (!xfslogd_workqueue) > > goto out_free_buf_zone; > > That implies the source of your X/ssh hangs is a workqueue priority > inversion. > > We need the xfslogd to run with WQ_HIGHPRI because we can deadlock > in IO completion if it is blocked by xfsdatad/xfsconvertd wq > operations. Hence we need to process the logd workqueue ahead of > data IO completions and we do that by making the log IO completion > high priority. > > This thing is, the CMWQ infrastructure only has one level of "high > priority" - we can't define any other sort of dependency between > various queues - and that queue is simply a FIFO. IOWs, CMWQ will > process anything that is high priority ahead of -all- other normal > priority work items. That means that if you get a high priority > workqueue with lots to do and consuming CPU (as we are seeing here) > it will starve all other work items that are queued on that CPU. > > So what you end up seeing is interactive process related work being > queued on CPU 3 which is then being starved of processing by XFS IO > completion work on the same CPU. By setting the xfslogd workqueue to > unbound, it no longer holds precedence over any of the other work > and hence does not starve the queued interactive process related work. > That's why the patch "fixes" your 1-2s hangs while log IO is in > progress, but it will eventually deadlock and hang the filesystem > permanently. > > There are two different things you can try with the wq > initialisation that might help prevent the problem. Firstly, try > this: > > - WQ_MEM_RECLAIM | WQ_HIGHPRI, 1); > + WQ_MEM_RECLAIM | WQ_HIGHPRI, 8); > > To change the number of concurrent per-cpu work items that can be > processed on the work queue. I don't think that will fix the > inversion, but it may allow more concurrency which hides the > inversion. > > The other thing you can try is: > > - WQ_MEM_RECLAIM | WQ_HIGHPRI, 1); > + WQ_MEM_RECLAIM | WQ_HIGHPRI | WQ_CPU_INTENSIVE, 1); > > Which marks the workqueue as one that will consume a lot of CPU and > hence it is scheduled differently and hence should avoid other > pending work from being starved. We use this WQ_CPU_INTENSIVE flag > on other XFS workqueues that are known to consume lots of CPU, so I > suspect this is the right thing to do here. Yes, that was the next combination I've tested after WQ_UNBOUND and it solves the issue, too. -- Markus --gKMricLos+KVdGMg Content-Type: application/x-bzip2 Content-Disposition: attachment; filename="kern.log.bz2" Content-Transfer-Encoding: base64 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 U4UJBiJ/3SA= --gKMricLos+KVdGMg-- From carolinecv@hotmail.fr Wed Jun 22 02:19:45 2011 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 p5M7Jhhr067933 for ; Wed, 22 Jun 2011 02:19:43 -0500 X-ASG-Debug-ID: 1308727177-13de004e0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from dub0-omc3-s1.dub0.hotmail.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 92B9C14F4493 for ; Wed, 22 Jun 2011 00:19:38 -0700 (PDT) Received: from dub0-omc3-s1.dub0.hotmail.com (dub0-omc3-s1.dub0.hotmail.com [157.55.2.10]) by cuda.sgi.com with ESMTP id 9xZflYlBPxHbiPPg for ; Wed, 22 Jun 2011 00:19:38 -0700 (PDT) Received: from DUB103-W38 ([157.55.2.7]) by dub0-omc3-s1.dub0.hotmail.com with Microsoft SMTPSVC(6.0.3790.4675); Wed, 22 Jun 2011 00:19:37 -0700 Message-ID: Content-Type: multipart/mixed; boundary="_ff3f1f67-d6c9-4ea5-aa26-28b867e61995_" X-Originating-IP: [90.44.41.49] From: Caroline-Christa Bernard To: X-ASG-Orig-Subj: =?iso-8859-1?Q?Lettre_=E0_F?= =?iso-8859-1?Q?rance_-_Ac?= =?iso-8859-1?Q?apela?= Subject: =?iso-8859-1?Q?Lettre_=E0_F?= =?iso-8859-1?Q?rance_-_Ac?= =?iso-8859-1?Q?apela?= Date: Wed, 22 Jun 2011 09:19:36 +0200 Importance: Normal In-Reply-To: References: ,,,,,,,,,,,,,,,,,,,,,, MIME-Version: 1.0 X-OriginalArrivalTime: 22 Jun 2011 07:19:37.0392 (UTC) FILETIME=[BE685B00:01CC30AC] X-Barracuda-Connect: dub0-omc3-s1.dub0.hotmail.com[157.55.2.10] X-Barracuda-Start-Time: 1308727182 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 --_ff3f1f67-d6c9-4ea5-aa26-28b867e61995_ Content-Type: multipart/alternative; boundary="_7d3d1a77-4d2f-4dbd-937d-d1b611283196_" --_7d3d1a77-4d2f-4dbd-937d-d1b611283196_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable =20 =20 "Lettre =E0 France" =20 Polnareff =20 Acapela : http://youtu.be/kIkeTl6UzdA =20 =20 = --_7d3d1a77-4d2f-4dbd-937d-d1b611283196_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
 =3B=20
 =3B
"Lettre =E0 Fra= nce"
 =3B
Polnareff
 =3B
 =3B


 =3B







<= /SPAN>
=
= --_7d3d1a77-4d2f-4dbd-937d-d1b611283196_-- --_ff3f1f67-d6c9-4ea5-aa26-28b867e61995_ Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?iso-8859-1?Q?Lettre_=E0_France.jpg?=" R0lGODlh6gFnAeZaAKKKblAlD2ouDHWdlWsxJ4pRJq/KsEgWB3NHMNXq05FoUU8wI4xRRqDSy4a4 sAgBADciEpN1ZDURA5VpMW5xaJGsjII3I3FSRa+qj4tFFhMFAMncya+WhFdKSKh2aMTRuKppMTMn JXRAFY6VhiUQA6R1TnVmVLC4piQHAFhDMejw23KKfcasmO315iUWDzYYDaFUTaBWJRQRBjMIARUR ElRwbU05OGAcDdvw4HpgNFxhUiEbIm17fWhcXhEIC1RWXYmhol49GIw/OpfDwIx/fD9ESAgQBp1M HDgzOr11WWwfH+Hdyx8hEk8aGhgWHZBbVwgICaugoT8+MqlhXLZ7PSEICZVdHzwICapiIAAAAP// /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/ C05FVFNDQVBFMi4wAwEAAAAh+QQFFABaACwAAAAA6gFnAQAH/4AbDYIbhYSDDYmHiYyNjoqQj5GT kpNDiZeYjUMOQ56eJ5xADgYOoacOpkAVQKugqqxRqqutIwOtrCsrtiO9PBTAFEQ8OsXAxcjGFDU6 NSvOugPSKwMV0p2lQyekDduhQwYG2ifkpuTkFVHpUVEAIxwcAPDxHgD29/MREQAlOU85CABeCIIg RUECKYIsCEIAAUMEEB0+RFAAAQERFhgG2MiR44GOHCFsJNBxAUkBAQQIIKAypQiWKzFasJCBppCa Ly2I2CkCZ88MGQrEKCDkSAwYQ28iyMAgxtACGTDW9ClCAMYCRwoUoKlVa1WaVVXq1HmR5tSZOC1g hRqV65GgQP+NOnUKYi6Iu3djgKDCF8SEGBPqBvb7tMAEoTm05thJMcPSx1EZSjapkADDhZaD7Kwo IkeDBA1whK5EWlImRqc/YcrkaXUDAw1UJ4KN+pODBp062dbNKTcQT6kctAIibVrxWw6sURt+6xau 4awGUNO1S/ovYSuOASNCwUSwYtmBZadOrYK1AQ6uBWc16gSuVKBaHXd+y5auYURGENm/PwIF/xQA sJ89EZiggAI5JFZRRApJRsACAUCI2QICBGEhhAythNJGTQRwwAEvfPShhyKBZCJHG6akkkowrbgi SxYIMNOMK0rFlkwZzBVDBkfAcMQRRRElVFMXSSWjVTrtFFf/UWaB9ZJVAighFkZhzYSRjD/FiBZQ OAnA5Zc/vhWmXD/OpZUVgGHRVVeFOSaCVgiIEKdmPdW5WVQtRcjRAnxC2JEAC1mIACOihSbIZ46A Vtolp7mGW2ua4HZbbJCqxiglq+mWSiLBdeppb+kFh96o18xn6qjEHbcLdSNQtx8wJsRqgg6ympCD DjnEiisFu5bwDDWmnjdKKuiNcg0nFYgaKnrpnTrNM85ItwIA9xERwQXYXgDRBZxpRqFCgPIZIQHk XlZhEBsFAShJJ34UQIk3mJhnAB2ipJISLFHYIksnieXvkRawRKVZXwo1VwY3zZRVUDTpJCNQY0Fp VY4/nrUV/5VhuXikxkg+zOWKMX4JVE9mVczjTTweobBTaK4ZgxVQaVXYmpxVBFVPcAK11E7hZuYn oBGqa2FKgiKaSKGjIapoI0tvctqksS06QCPilOZI1Z9YSqymkibr27DsJWtqKudVI401tFjT6gCt kkeBLsuYwAyvxiSjA93L8Ao3NNKd3Syz7g0nXLLoaJOceRWMkHjirPbSywr+3WPPBPtEoECsCeag 7YIPjmvuRpRZ9pKFmXUUr4cbpYjSRyjF2zroG7pOEoUq2tuSxjBpGSPAV2U11I4Qc5nwTEQ53CLH XNKkVwwJA6WxijfcgCXHIANMk4tgcflWXEtuz31cWcWMFf/MWgGllVkFWAHzYVpNQH5Q4kfFk5wL MiannBTtLELRSfePtNW1aUQnKOUI4HAKPauB1KMsRcBM5GaBnGBWcm5TiuGcIFm0kM4IVvEstgGB F/KxBXPYJg376KJt1PkFM2pANx2sABlveyELdQEN6lQgGsGSjwXlw4peJG4VPnTcCN42oBHcQx8E OlCuSqCAC2hOWwlKAb9WoqIFKIFDgXpQuQClEJB8yF2mS0lKrng6lcTrBrQTY+o09LoAuK5GuxPL jBoGF98Z7EZAGR5NshKjJ/GoJjLaUk2c4rydxLFC9pIe9tioko/JcXcQa2SYwFfIhlmgYmaZGM3I 1xXHCKX/KzCj35quEhRD7oQg95OIhTizPwvtLwBBOJQjkPY/ADoCao1qjQOnhggFioM1lMolpG7T G1DBR1LCARvZhrWNUCWnGst0TtmABSwe7KJVwZBVDy6gqxR0AFvIuBWuipEDCtwqB7/ShTXKForg DKs36AGHp5oln1uUTVVnkxZ5ZHWBJ0BEXRdhSQAIEDBysYQhD6IQhCwDktOBMXUwceNGznhFiX6k jE2Inr06dLqOqqQqVYGRlkYmAiFspSZmSdhLrjSTQLb0ozmRo5dQupMWSU8E8TqAvdy4Io12rHoa c1gcM+AxgmnpX3QMXlAWhrMYLGwoRgEBDNrHPpgNxXyf/3xKVOIUJ/uJkjMXcQgsR1OoWpImNQDE pWwihZvY0EaXWYsra+IaHGMqSxrQEY4H1dOc5dQTrxm0Bdt0Yc23xZAHw4hbC3XlHVq1EJ3PyEEN qWHCaTBHcBNEnHQ4+CzKSmuw1DHBtEagDxPoQ3O20txBWKShKVJRId8yUYk2MqKJgiRKEhVAR8+I OomeMaNfPID0aqeiQyZ1RgzDSYt051I6kgVLTUJpw66kW96acY23a4lGd6fI3R3Vu2eh3iED2UiF ZSV8XPpJ+WLWlKcApn1PWYrMyveYijgmTpzJ3+gOCqgUEMp//TNN1DZRQLrq0lFRQyuBa/O0TWkt N6kgDv98mrVMzq6zhMUR7Ab7Rh7iUGeGcNNFM4DBDClIoQbM0EEK7GaMcoLHGXzjhQaHM5wo2FNx vahGq4TouHjIAx4eYKICSuCBA01gAiU4coL+mRCECsAiBkXJAuIlIY2E5AUvKFFt/7SRK7IoAFeU kkVz6joy5tRdb1SRS2JEgO7dpCsNC2ojM6alkFJpRSj918ZuIKKL2jZ2F42eh97oUz0DdZG6dZEi iSrIPioJZ2zBivl2xKYjvywGDMiqU2AQSvgtqCuZhgicJJMRkgyqlmVNRNMEPOBLDBCtcw0maqqW wLUmODYQzg2j7DpPYpHKbMX5G7CvoRxTAaE6J4RbY4v/0dgO0MpWK15xgnBlK1vhagWQpQ7bZOwc HR7HGhN0Vgcfx4NfEAFy2SytE7UVkZU+1yQ3aAJlYOendx1AAi/wUIhoy5F8rYQlUhpuIs+IEikF /AZSet0b4WhICwwvLQHlGHVpRCMXHe+l/xLjF30r0Yb21I18NiP1NCa97vZUo9Hz6Vf0/JOeLGwt OfIRVn4HSvJZYaqdlG8BGCCE/NXPAgjoeUoCiq5BHS3AtkQNb2QtwNYcM2sNlHVcKTUp+MxV173u 9ahCJeH5AKtvwP66jLVNnWD8hzs6uEDadUXOWZGTVuN08WQdB9pgI6c45imVr/FanBQStuyGnVV3 coAg/4BEJOj5Q4llTsJQ0HUEAvfetxr7DbR7rSTMBtctTxNOrihZnnoDM6T5+niRkUtpX0jKc3Ut HpND83nLp+vtGYXr2+rylORm9GmhFVlyRcrZjJnco/lEBpS59Ggub/5LYZxSPk9nmihxAnpXMQKR +1lmUKs2KwB3LRvuD9A1u4YNcGyDGqpDjYBUB47V1b+ecB9ug7g4zwh4sMHHOe6D1/w6q8ITDBbG 8G51w2IrdjduJ1rHMAEhdkKDJULXxEG1sAqJMwIYwGP84R/6EAEegIElMAVDxkSZkyBHVgCGRxE2 gwASYhkSAiFahjovIAEkQAJgREUqkSHVhXLxknlihv9bUhIjmedaLDIWTyITNNEiuaVbFxVILEVe u1M7MCIWLJFy7hKFtZVTtEV7ZDZoHWeDuidyvpd7KUdy0kNUeFYjUTF8I3MyCBM+XvEma+JpMaNz NaEZ99UTcXIRUHETYVEAjKAosoR0prFrTMd+xHQprjZX4IBrwNQoUdMptsEJxZR1EWYqgmUsXhcN X3cL0WBCbgMNgvcdOiAFyTCAAygrz+Yd2QYg1pQftoA42tY3H2QdlKU4+EdYiLUC3MEDEfAqFmgg H7hkCQERqiVWmNFFfnIAEBAiEoBvyYhvG2cZlWc6uPWFAXd5Tyg9AOcvUyQwVhIwradovHVGX/iD HHP/cLjzJJonIq/3UCkyUejoRiMycl7YU2DIe3L2XV5CR5JUhkzFFVPhVESRARehM5vhFY6RXkny JjsDJ4zBjSsFS334X6KhfZhwTErndOCnawmUKakBTBPWKbimaw7UkZCIKtAEbs+EQcWRKsPWHBw2 Hv4HK8jQAc6WAqBYDB0gTimgdk+UK+K0K4YVQ21jT9NQNno1NnnXQZ1FQ8BQILFyOQkigiJgEAyQ GP/UIHpibyLRgsuIZVkWIRsigx0BEzhYcp7HRkoQPbpjAUowFgS1EmMRMNSlXSWHOgvXOvMIha6T Or0XXHxJW+sIPbT1jfSYcr0HcifXhYWGaIcESHFE/zJF9RVTIQQ2kiQMMz8HWYbyNT884YZk0SV6 2AgS+QiOWH7BRExsVSlZs36lySi3UXXBMWBWB4me8mvFgjZ951ceZiqt2DaaCDdm1x3KwCu3MoAq Rm2zQoqGBTnTwh+IdW4nRHc2pByx6Di2aC13g27ZlCu1gi0mMAEBwQARIZnVZy5+IhIi8UXKuGXu QiEcZVAqwi8zASMGlZa7Y3AzIQRHBV0v0YSsZTs7hRJz9CKeJ2gEenuGuSEb52diZJfUk5iKhl0j x13w6CKqR6Hj5TBeAiUgtZkb+mg8A1NJohM6wxmIRCdvElIbEyGCEJGDsGrbp0CR4ojcN35SB4gK pP+ImmBAkpKI86R+veE1rBCk7xE4o5B357EC1oSJ9UEe4aEDPcB2zjZOUpAD3gSKKeBNN0ltpVgr ZnduXroLiGMe1YE4ICSBjpM459YL1FI5pqUPl+NEB8IACEKCCJARFmEhF9JbHgIiIcKnI0EvYZQ6 FIIv1tNaYpFwPFiWCrONbkklU1RRHachQ2dGhEqY0SNcH8JnkXqF6JmpVWhbI3JmtCdcl4pye1qD ZGmphHmYE7qqqwePYfGhPGMnbEFUXyF6m5mZNYU/CNlyOhEAIoAISfeH31drVhdMxZR+M+pAbVV1 E7l+nPCRn5Jr7NF1xfI3zEEN7gF2HJaU5WaLvyn/DETAdm/HYnE3Kz3pWEv5H+JKnbzZN4mTlOpE nQGiH+zaHaa1nQzwBN55eFBGELDVOe+yEZAnAVcAIhLwIR0CIR0yUQkHS4onI+TCXfxlcKXnL/TJ SP25UwVqO8MVbyXXBFaIqRaFInv6IQk7hVXIOlkIjrl3crXjoDaIe/cSjtN4crinSCDlIlWBJ0Ql P5o5PxoqPz5RISslOjVVIUD3JOgSBMPKVsj6anBFo8gKddFaKei3KTvqiEsno7wGHIRzV8PGWcdx bvWEQy1JWMHApPpgLcCgkzrgbDkQpWrnTXGbDN5xnN4BIBGAWESUbIqDbJeYHfT3OP4xLdnBlE3p /5S2ogD+ikrkEif19nj6toz4ViIN63gC2nmnxyKd97mvChOuJboskoMcJ0Z5GXvgKGgH25eFWVvB xYx86bpVKGjClWiJdqne6I2quiI3Gz0Jh7sYy4VdKHESt7OWiSQYgyUkoy6IZLRV4bwZclBjdSiG kCi3VGtO16McuUAa2WqX0lYERqNw9ZFyJYjJ5H4SlBxEShw8VA0P+Iq9yX/4qgM/AHc90AHeNLdF UATOdgH6G8BX6mw94KSx0rcWGAyIJUQRGKaKgwEnMIFG9A5ue277MC0G0qaXYyDsJoILUqcO0Xh6 coxceW/peZXkMlD3MlADJRmdm40AdXmTai9ief9dqWMifqa6Cuqp6ciXHbWne9qCJGC5yzgDEoAC ltuXG5dy7pipmTqYvSezXriq0nOWHBMjvQd6I0ddIHWZU8ETB+kwo5O0XXVQSJtKT+sooMKasckb xTSarLF0mdKaUOfGvWF+sum+nJVMxyFjHjYM1qR/A1Bu34qkhnwf/EeKP9ABwNkBzeZYs6J2bJe3 e7uU1sIf28F/rWJNvJls5SYe3cGuW1orSmR4OyeCd0ou4jJbG6GVEnCMCZtls2US6+KVFSWp9kKo uLVQpAu6P8xbBOA6VAhGZ5awqBNcJ9vDmJqgHLGVy3hvyKyptkWgs2epXHjFIrcxDdqqI0ePE3r/ Z9UjtBmzsxhqO0mivKW3nqvjtIUgrP+VvbUBknWFTD7qtYVomqlptROpS3VFTIzIa/3cfuZBC8PR C5dFY9ZhTcdGHuZGN24HnG7XAUVAK84mkwGsv1iqdjL5AxfwpJUsrufmDuPhC7tQC/XhrozjOBGA bgAQASUgOREAniI4lRWBLp1njCQCeQibjCTSlQGQb4KqElZ0OykcZjt1W8/IcTy8ZR4xuycLzfw2 u8jsZ8GFZS5IAigwxMuo1cnYqVfwzCm7zD5shMXLqtVlcOE4xcKLqvI4cmrmJRkDohKDOxMafcpL MhZBJUX3Xw8pmpxyYNHqkQv0mq72dINofnCM/5Fc22vom3WjoMeu+Ir450HHRshIOgBEUNnW9K3X cW6hHJxuZ5NRWgyLrHbY8k3FYNpb6tGxQgQAgB37cU36sSrPiaT/YYuz7R+yUiCWQ3gTYGShViEh TCFAc8z55srHjW9YCdRORkXBDEv50gTFXW+xQyF7mcO2G7tSqMTH7I60JbtQLYVE/IIvmIzkjcQJ e7BhjZ5hvbqqunvbXIOaJz3jtda563tYDDJxTYZ4srPP858fistlwTNFcpD8IlBO684KXgkU+ay6 YaxSy8/8bMdYd75vnHXxBCqtkBwqiVdlIx/TudnSwAODjNnzR8ifvLbACXcAyOLI0NEAfNrcaf+3 22QCHs1NBRLKkVOdnn1NiZUfPOAdvykr3XGBE2AglJNkT6CQcjI0SrAADQsiX+TKfAp5rDwSgPKV IyEhN4zl7AKoHNEhoyqqI9Jn3C0ixyzW4Q15+vbUW03eWk3l0Jyw6W2wdt66fJaOPBWOrvre1eOg jYRn9R3ouVsjVjGrdSI/hzRF+32QAT4wA25IULafC1AAfb1gDJ5LvNG10Hp125trm64pmhK+xrTG yyQckQg2zPLhejxCqZLZtRAeflsD3pFYZme/uB63Mum/GO1NV+rrUvBNHVDja8elwiAg+VGdtvhB /IHs/XHJzW5ElVMC+lACTHTKXUU6ftIE3I7/sDv91R/B5rD0Lgu7Egt1lQsqqP1GEmcZ5nuasKLa utA81bUbqlLd1UBtjFIu5W9eBVVAAv8O50NswjNgxDOAAgUvAUY874EGhUvc51QMMkS1cIw2UzPl PCGDsRlDU4zW32DME2z0JOUsZ46qJECXXNHXEDpBEJLgoghWtXRVV2s8dQa0Vva8frLJ2KJSLHyH T9y6AtIJyCKO4oh1HcDgt2bnHT2wDOaKDAX8TdmC2gVBKzUeK9xUKwfMrtxBAUtfboDMQt8arjpe IJfTDxOwZHFSE3PSRfG2pyL7RdzeIU3A5iZhUO753KDz5D3TJ2AOIW3/EWKejK17suudoFJ4/8zp mLKKX+Yh0viunIwzgNXlHedcDflXUPCYb8R4HlwoV12kSnCvClQVt2g96zwWb49fIhYjA9esTzJX UiVWUXrHUzsxATE8A5dXElAN8SQUMiiH8JCyZKPod/OfYuGseb4wL6MyP60X3inDkh6UaK3zAeL3 B+IorrZgb/T+cTeL/APePysz6fQAbNG/jqUyCcDbBOO7bYFruh9FPwz3cR20TR656NoXSO3W/pRb UYcWAggCCwEBB01NBwcQVxKNiU03EE0BC5WVAkFKC0qEg0GUBAEEQQufAZMHhImrEC8SqwcSN4Ww Lwe2tqm1q4W5sb8SEIovxBKujcgoKCTLVf8kzM8kVVUayigz2NczEtuw3t83B+HiNzcC50rnAhYC 6RbsGevqAhnx5/UZ7Ov2+/Hv8wJEqBMhop4FgQQJqFMY4FxDh+dEWBAiUYTCiBcDEhCBYBQBAgga iGyQYKTIDSOHNBjCsqVJBzBVqlzpoGVNmzNx3rzZ0ubOmA1gBoVJtKgDIAMGEEUK5OiACkAqJB0w YsUIqitW8CCygiuRATx4aN1KQSwPCmUjoDWBlkKPH3B16Giro4PcCz8u9LjAN0WHDn5zXPjLt4eJ w3ovHGYbgS0FtkTColVLRO1kCpWJmFDbeLOJCZ9ziEaAoGLCUgsQIXpx6NCBK6eaCCAUhMD/Akwf FXIadHuB7U6kThEKYOtKIkbIbhH/lcjWK128dOV6AaFVsGG4XBW7LuHZMmbYuEV7JuO7syrWsm0z 7o29uFXuYZUTB3CdviP+8NF7l88gO30W1EMPPfYIGNE/AuVD0EALOWTORRZsJIBCEmWwIDsVTbhO KaMIsoAIJjWAUogkAsWSSEPUFBNLNa2U4oss9vSiUUS5BOOKLKqoFI0w7cgjUQNEhdRUSWWVVZED rJCkkWOtQEENbbXFVg86vFUllX/pcEFdfiX2VwqDdZBXB3yVyZcJiinGGAWUnVUWEZGFNQIRUW5F J2aHRaCACXuOVloQBFmEyWy0DGfoJIQI/5KbRwrdxlBuGhJKiyKJICMBcts0Ykshr0DwynOUEqMc dNpV+goumsayXXfjMbOMMq5qgN6r0ESzTXqgNsIIe1cYt2uvxo1DTjvE/vPOP+cEmI999RyBnz73 2BNggBEJNNBBFiY7T4TnZGStOstGVJoFBRxkAQIYdnhbbbMtIFJJJKYUr4syuRjTTfbKqGKMOfZE b4oq/gjwjzpO5ZRSRCYlVVJXKZkwD2AZadZWZ0m2lmFu1fXXYX/loCVgUvxll19ZAnYBmDp0KZhg ikWJGZxowRknEXOuoBYPavXAploK9HxYDiYwkMOfQdRW20ezIWqoIIQ66tugHhndYdLCcf+qayyW Zp3cLcbcckt2uHitizDPeWqMI66QYEx1aVdRXjQovG3NNLKOl4wyjUBzNtbrAXvprpc+F0455bTj zjrpJMsffs46qyx++Rw77T7yBJTgggx+222AFkm0jucbKQttEJhUdNCEnzAtStEHBDEivCONmNJM KbXokwMo6vsvTzi6RO+++hJsVFMwAWG88VAJWcEIzDfPQfNzMi8zxW5KJlkNJjjJVpg9dP9XXnUl tmUHUqSgscgiDwbmBQiQzJeWi6mJWWcR4BxlBJzhT8QTnfHfswJCywEDGFCA0oyiaBdRAkMMdRtD DUcJtRHFhBZ1jt4MRxhYA4alYBEAsmX/zReF4JSoujadDAYOa9wIHDJkMI1pjIdW01CGrL6jtu7Q sIbdYVUj1vM35JyQg4kg3A2UkI7EEas/+AgQfggkusjxZ3L1sdYsZiEAcxSNaaQoGqBEoEUuFo0j XAwA6QbREEFdJHW+SV0HgzAveZ3oRPaqUb/i2C8Z6QtGMokR74TXI+MZpQIOAGRSmjJI413FkIYc ARAUeZWqSCwsUCqLk550PzSJrC5aChOYAPMlwJAsZSM7GZhSQEpSmkkHh3kMm9YyF5dRICtciRnM +KQnBejJBAKcgNBIg4CjKUQh7HIU6YwmCFJs5CMWGSahUkHGVtjCg15zjqp0oTVHcLAX/2GrZnie s6tKMcI70yiPC1vYQhRo4JzVuCF67oYMaTgjhTNAwRWwQU9r8sJQVDyHOezzxP78Zx+QixxAwlWf KaojALNoyBgFUkbcDFMgpDsH6RpCUUL8cjaCoKjUyBgS2YkoRLTL3YzkuK973a53OiFpjWg0MAf4 aHg9SgqQEGawhNlUSQ5TkliUVIOeoqUGrUQLKh/TAzKdT0umHEyZRpkCBAzGqUslpSe7xBcxOcYx FJCLUIEK1KC6pQdcSSX+9vQzBAytgKSxyEGAOYqGqEtRg3KobxjowOqwbVUkzBoKSTADvm7tU6sQ lSt8eCtm+Oo12OgVN6whjWbICj3oqf8VClrYqspGo23O2IbarpHC5HRtOKmgqD7VAS3JUU4f/vSP EStXxX1iNIrdiq22oKUtdbgWomJckGgz6taKstEkKPGoSO1I3J/gq19F4dfAcsQT5ibXpTBtCvF2 ZLCjEA8qQSpSw6riyLCY5ZFQmoubMIlKE3QvfB27QPlAZj70paAI6y1fKUt5sgvkgEzri59hDoNK tWxmMisAAP0qM9b/9WwCCigAAXlZwBwouFyDKKZHyEgKDzXKgXU9Bg5dsU0UNMLDt8ph1uIDn65Z ahuFfY41JYC3eNLqVbCCMT2toYwZ0/jGOIbsZEGM4ufkghAJfW3h2vGfY6GDn/aZhzn/hMhkwiEU oZICchUDApCLTPEhhIryQ4ZDqCCTMVENGQQChBtckAIMRc09Eb5ogq/m4sjNvMOjwPq4FOu6tKaD XNgKFsk8q3DFTl3pipva4iQn3UkHNaifXMprAi0V1S6YTJ/J5NKBRnvyfFNVql/Wp1QzpUlLbBLr YSYgYPzd8jBPuMAAc/AEARbgwbxEAAMilJFGYRTD7VJFaA2Viu4Qoxk1pDE0drxDTZ0qOpNCTjGc kylNWc1SMWYxM/LmnWFzg57YvnaNgYEpFW4wFowAInR0geVyJM61SU6WQQwy2tYSrrW23eeWDfra KiYqIFgO8633fcB26fMhV1xdolrX/8Y2qvm5MpEjcVtqx4All+H3mmnxjgeEFEVFplK588WJ5DAi DQlJTeJBDbICJTrJZTFV4mSkxzfVFMi3lO2Tb/uYSsqXi/KTi5YSWrTypKxcRZI0o5OpccmnnolG Abp0MAIKaMZKiBHDDvwyJTKaCuccwzzkdMZkZ9WdTGVwFVe71HGaXcIfH2ABroAVNcxZDb4O252M 7SurnpG2y5JAO2tzhQvw+lfBTeo9hSgHlPe5ZHibY7VTXvI4hBX4vycCoauYhTckD+SGyHuZUId6 QlNxYaYdNAAhOclHC+47eg2lpcBr+BsX7vDlon5HFrfu8e6ssItn5Xg4NRJVdqrIyP9IbAVQut7J s7roxaBp0WIyKvnk2/IvkZJL65uvKT3Zl08bf2eP0YF/uxIBmeXplgxQANAmIMAYMID8Q+OltRS6 tAZCXWmEcM4z+qoMulHjseaMbLNJyDVwc+M1ueICZ3MFI3QMuOBOMXROkSVt7QRs0WZPXGN1X0Nu wwEq3rBBvuIeTIZQU/RuTVZF4qBrzZEK4wB5kBcdkccLlOdADjF1mfeCHfRvClVMGoI0oFdwszNc wTMUEWcUzHVHcdZ69/JSwyNdTKE8UqEkfcY8ixR0TkgEAAAn3cczj7EY/nUYP7BoSsVolCYyRWAX l1RV6ANKRkUy0gcmgkFVYIIYirH/J40RAaKRAxFQAo0xAfhTAgrwBLbUM3qIh0lXAEJQAK4WaxEy db3BW5mHCBeYDNmQdXUDWe8EHt1AHSh0YroSONtBAgS4WPE0dxogDSTwNmozilrjKmozA4f1DaoY guSAgrDAYq9AYkH0Hir4eOQwOPIGWqrgQI8XDk/2ZAJAgsNBRcB4a0UjdRfUQVE3HKbgVhjVKBE1 NbNBACTxUWVmcPwCFCJFRz2RZgq3cDYCXc5VZypCSNT1FIGkMB6XXUWSFTulJBVAcisQjz6FVY02 GKikA/cFGBqzaS73j2cofS8XkNNXJp7BGP8FADvHPABgFVEoMwBQanhYAgBQAn74/2ri52AO9mod YRtj1AkgGZKTcmKm6E6ygk7UEEM15FeOAFjGkSqWYoASoHWZcmMneX+UFQ2W8gzU1lkl9kOVooot eQDxtE0s1mKo+BrA4kMrFpQoxBxO2ZItiUNbE5SNMCmSZ4shSDiLOG6jgmEvsGVbNo0PsUAggoMm 8UYr0iJshlI+gXo7AZepBzAy1SOyFyRGeDwKQ3sglyREInI1AEmA+VNP0lOIRknE9zF2sSXjEzKQ Zj43R1+mJH3tgwCZhl9SsACjxJiIwYWpRAET8EqqZHydsTKtlpEOxhGlQRqAQhoWMEZRxjSDoJWB w0PhMYrP4DY56Qxv11nGBpPG4f8KCyhis4JjMuRCOrmSODRtVHk1sEBiIaSLsVBDscBDphKLi1Vs K1aVrDgfr2iBVgkqtPAKuih5B4VulqcOs7h4IDiMLbhPqZMQgrIuaoRRTfBbJXGNZpZHrudcq+cS JfVwqDdSNKIUrjddFBckFbAwC0oVi7Q8vzcnYUEzcxJ0bcEVEeAkqHQWbNFojZYDpaSPKWM+90WQ pTSQJiqQ9GUm36ePEdCQJcAmdmgCdLgnGYlqPVMATzABOmp+aBVrElEaXCQCEeZ+0skcKpZC1iAD J4mSxekqMFZsPFmTM1AMkzUe9GeczJBONzZtHyYe34E2G6Q1r8iKleJXNVRPmbL/HrFgTnjjHZ9i Qx6WHPExTz2pYV0TCyE0Tfe0NNGpiw4kKmQDAYTQCtWhjMNRCgrFEIIydUeTDow6eiA1O3JWegNa UhAnMHrkcMIzJJ5qXUHiUlmRjk9hSFjxjnIyAmGRFaLpMjmnPUSlSV0yMh8DkJOZol0yX5pZSpVA X5mkJpZ0fa+UoaT5M/8zGk2VAxPAo6wZBL10QJRQNLxYCMJgqHFqKjHWKuLEQtGgdXhTbH0Vrnwl dyU5kxIggMywdnPTpOdBDTz5rmdTbcvJY1JZTe20k+BxlF6KDH3VrsjZraAIr7CYNzr0QdH0eLtY UcOSledJKNm0KdH5CcOEYREl/0YZARG4ARG0gZZpWS8Nh3As9Z/LdXrPxak8Ukjm+HE2lTA4hapn EUldNXKJmZiL+QNk0mmatmlSUAT/aAOk5LMd0D6A0T7qM30BGZkIkDJlshdeMheNpo8fmn38ZTJx 2FRW61SxBhLOigCGMlHIWKiqIKY5tJJz1yrx6qWo6JsehptlW7bRgE7nxKRwO7d18wwu4AI8SQzS UDe0Mmx6y5tn0x0sxJvUQR1Zc1lnU3cyEIokgLd227h3W1mRayuoiHfbQAx7KgvFOBskKES/uIJ8 CmazkVASG5sTIgK7VW+iy2sEIDs4IKlp+S8AM45B6IOnFxSze2a4s7s/UpfFY/8UdTkVDIoUPkcV jrRdqvpKREAlUDJJrWR8KbcXiqk+nFRzQGsD2OsXUuCzAbmrpKCruyqZIHqzZ7IlCLkZBLYzAsYy RxeH6Ccaf/ijpZECUfNL00opt4BB0hQ2TukpE6idpShZcNMqvCm3GvAAc4vA56TA6MRCi0sCCOyv KDltcmdiNVR3N5Sbd9cdkFUNvAmKvJl156GT2XANNWacuPJtzMEp3oBP0RkqyKAdvgCxMDiMyIZP WkYIEhAA8SJcK9GWePSWK+WDuHNmcslSQFIUCONSxGNdDkO87FgkO7UkLSsWZbGqiOm8i3Zy5iVp mzZVIrO9NqA+NuB8khm0krn/oi4Xvkylj4xJJtLbocb3MyKqj2g4NEGQAsoaa6TRVB1xjMWEjFFG qIW6axMYWvhriyxcTcvJKjtWK7pJt5I8yQpYDUx6f3CLHui0DB/Gk8Ygw3njYV/THZ9YdwSsm0wq rwVLimt6K+mRDXo1KZtCbgjLZavbQcqhCocaf39aUbp4a5X3i1CGeQn7AgIweq+Lg3nkZgSqUnp0 O3DZUkPhIzKFMMQDBEqil+a4ssbjl0khFkuyqpBEcofZVYtGJVsCNJEZtIDhszybAtjrs9kbkDbA xqTkvbeqx/rMPsDaGa46VMW3GKJhx0AThxu5dKw5CikwUS7Ma6BFyL1AHMJg/3YWKJPF4MmV9Vha h5KUXMkHPMkM/NFzS06ePHfURrY6qbeMO7mhKAMuLQM+YAQawKSL+8Ak8ImMGw0v/dJG4AMx/dKM 9R3E4EzU4SkyXNRs41mMfMFDfci7KB27Vih76otAFtWg9VvJbHAk0o2068y224NFwYMnC13ZNSS3 dzALMxVXQRVJ4l0S40ju6ErDl1WSxklVdYae1AHcmwKaub0EuQCZCc+7GtgEuTKmNMfASsceszLw MzR+4tikkX5b20tXREZX9ouc69AOLTYjiZ1i57YDnJse7TYz/YmXbMBx26Qj3dHVgH/SIGIEG9t8 1yp1w8Em6QwPXNOyUtOk7f8249Guj6zJszKu15YquEDUxPBMilCKAbw35OmViGzVLiyMCcWCquAu PjypvrOpzCUSQzy7PaIScPZcREiXv6sUepnNU+FzEGoVVcEVTPJnTsihl5F9qFRVfGGzuWrX84W9 5SPGC4C9gN2rvOqzu9qrJxO+eTxfHjNznibQQMMnOdAnBq1qZsWjDnZ+C0akYmRAacQb+lZRC+Sw mi020FGb2tAIT9oMbsPi4dTAvo3aKFkeqB1OW9dC5+SmcxrDhZuJPE6JnvzIuPlC7gTC5cF2dHOT 7IrCOAZPYDqwlPjJx8Dc3nFDSp2n3yCeshxaWfnCwshrqQBcaNmfaeZ6Jcv/IwPKXEQyU9d8hAm6 1h3HcRADxVSsFW2NxT6lVUCVhUWAXplUSnv9s/Bcz/YskAQufd/L12us4DSXJmSiAG7RoZihSlJC Vgbdvs16QJRNCZoXzNWNywfAk8pRDFl+YlqXrpAYNw2cyTRd2h0dyRqtgCBWY+Ihd3i3bDs5tr/9 2zW90o3b0qXd6gs8t3JrwA+AwBGcdaHYwJb1uHaLt7wtA5OLtzgdN2qDHI8HnqtIgS38ZCtoy4ng Lg2Q1bAbL0EMPHwE1kO87idbA9X8cXp5SB+ne0zCJKsacoGpFV31U1scaSLDVPUsfT4rX4C94N1b 6IKu6AvNvVJQNA2vx2ZC/yaIbXxy2BgUXuGjUTQJLTVaxOmezuWB1RwF+0GuUIkuBivpqoA47k4s 5OqrTsktr/J0862L9TUcNuWJa2xDnnVvE8kO3PK5Xdo+4PKsrdoKCPQv7sDh5PMhjJwsDoov8B00 9B3dMHmTNzjfEJZSHULmgNkQkQi/VY3ZvY1oxnByad4npe486N1KXEgIo4QMg5emyjDuWBUTyqpm MelvUoVynCbPJ4ZTFc98rZmWANiDn5kNv71sXOiHbgmZaQkLXQqbJFWe1jP2hXQZaZF8GNnLqmC6 9Go/6qxG88cLsGv21oIjmFdqs1e5/nZh2gz5R0MxpOpyO/QPAAUJTLcp6f+AF4wMu3IrITZZbqvq 1CC3IizBmJzjRd/RNqnjrT1Oj0W3bKfyCJivNOab3USUQcSV286LqRCMxPgQiZBlnHvM5R4vu5uN dlkUQwJTwnPE1KXEdlnn9G88uXf/PBeYkHTF1gMIPDw6JhQmOoiEHR06P4uLKZE2KZMLlpZSQVIp C5mRKZ6foqOkkZqmohefHRcXJqomrzmxs7MmCgo5OQi6uDkMCMEIQcQEQcYLxAELBwEBAs7RB9MS 1dYH1hIv1SQkEt3dVeIoJOQoKFXn5eDoGhpV7vDuGlDu9fMaMvIy5N3W5dVeCKyGYkbBcyi+mWsH Tx6JfO/w4ZPhjqKPiBL/3T3Q8GCjvYzzPIIcCVGfvirr/LEDR8KFSm/atL0IMG1agBs4c+oUcOPZ TZ/RBEB7Bk3oUGdGh25osHRpg6dQoQ6JOsSB1atYswLBWpUr165Zw1odsHWAAyBAVgwgu0LtgLYj 1q5tC1ctXbsreNDVm5eC3xV+dfilkOgRpUmUFkyyYeOSlAWcIGDS1LjUY0zJIl1+zIlTkFEdUoRm 9SqW6dMRIgDwEAHXhBITFEzYtQsBgWTBjulOFkTAAgLOmgw98AKbNuLbsnFjCa6KPhLpoL879w26 uJEds3ecB+95P5gDv4m3ZrA8iRkGUWhQT5Ijx43w32t/cI9jvfnaoWjP//KAP/+O92QnX34awUef RNedQ5E4zEHnDzfY1NRTTQfgZBNNSGEoQG9FHWAUUUX1xiFNQURl4olROTDEiiuq2KJYZm0lVlhg zTiWWWuh9dZbea0VF15tCcKXkEQIUgMFNfBQQ1+DEWJILITo0MMjVErSGGME2BCEYpNB9hkpm0TS AQKfqAIKZKV49skmUoQm2gU5hNYKnK4oYMIsdspGWwEXFMBAAcGIsEAAQYiQAjHHOLNlNBhiGKE1 xSn3DzsMitMQStx1c053EsU3Xzz5rINSS+uYM2pK56VnKnvuhaSReyK19yp2s7oanzusZqTePs6J Y5Jz5ZAjnjcwGXecsf8R1sQoozdA0yxRzjS7YVJC9UaAUdcKIMK2HwYgQlNModiAAw2sCBW55b5o 1VYyXmWWijZaVWNWNcplr49r6UXEAHHxVdcKI4zAAwVDCgIYwUQQceRgUMbCSAeOdLCYJIoxdmUk mHVySgpkUkJMmp8sEMKXlx162ZdlRoLAnK3ocmcJEZSQiy5P5AJoDgXUhoAIwxwjjG0iRtMTTTVJ UHRA2MzATT/VoXDSdfFYitF1FGHEnYEeXSePpeh0o4GDzzWXDkIg3WogrLW+enaraXsK63YeiXQr PgBKVPU7J0HXz9jCeqO00cUFLpAzzWwzTU+IIzU0towLQIAI2Tq+7eP/FkzOrbfiisuiVeW6CNZa 8MYreuhZVWCvW0DwK9e+ao0ABBF3ARxkkEIS3BYFP+jQVw+D8V7IlB30cAErbo5GcSWYmHzJ8p9d EnIpyXPSiSWdYUxAKq6wfEtrt+ASwQR/TvDELz8TYxvPwWSAgAVB2LbADU3EH38ATdBPdBPVEHfA 3+T1gxCm8ogIPKBjkfpQRDtq2whKNrUedGyKbFWTAQl8cA945EptdJMPPTRwkQpmBGr4qI993HGR AeFnHh2E20b04x4o+MAHRuBgPnp1KUsxqBoGuYIOr1CTF0Dghz78IQRscoMK7cQoOBFABqglFBE0 kQAZEEEGphjFY2hL/wAWEAACMkeVdJUrXQ5417xIJ5bNWaUC8ZJLGHNkL7SkLi95EVK/ADawguVF MLdrkl9414MeDKwHP7gA8AQ5vNBYbGIW4xJnLtMJyXwJZR2j3vPItCWOZeZQl7jNbyp5gZXNiWOu GJ8uctBJ8wmDZ8UoBjSOcZtnDCoAxVFWE/R3heSg5woSUNpBVJWOk7wDhHhzyEMyEqsPSueCWvMV RWTATIhYzVUg8ZVzJEiCZj5Nahl5oTZfSEJtymoeC2JmNUPFzGWWBFgNYk5CsqFDo1EIOT8Myk14 Qq0sJgWKIrBABiqHRW1JUVuVQ0AU2Qc5LIqgfRtIKFPAxcWqdGVzYP8Zo7w8V6OIds4r6zpL6shC ltRtNEdwdB1cAgZHwPiLjjwoUiEIRoEI9EAHHTBNHwnpJlEwpmKOwdj0NMZIyCzPec5DwKB+mkmf JqMxK/tFKzx5gVx0zxcM+IUCYKMAYOQGaOvb2eNScK0FQKN+84slNfiHS0mhY4HlsGGCAkjMs6kQ gQ9gq1rfMc58vNCav/wmPpzzNZewlSTxYSELQ/KpubUKP4itm37gxp0ajsMb55hBWRHSIB8KZCY6 SaK06JlPJjqxcvYEaAEqVyjJEbShVHloRMPI2qugMSxoHMBrR4ejrNxrAILYURxlJwjY9aV2fqnj YIY7sCIwoo8vXQT/TIVHJcRArzFo0oxPD0VdkIlCCojhTPUYeZvrXZJjkRjeyjw5XlIOIwXoyw0x LqGo22zoWs4YFFiTFpCB8DBSkVpaPNRhqVL5F5jQNKxEShjOuprEmy68Gz7OIZELcpCvwxzQYUly kQ6aUK8XOdAIt1lCiPSKmtVkzg2toUNw5E9/FxJaEplIrSgKRZ/2lOISjTJFJxaKWyJSKLicYqKp SOUq4xpLu9xlI3WNRXQxkssbdatbIIzALUGiwF3qSBeWDkzKhPlBYPpoGuI9omOUkESYpTc9VHDi ZGjKzHc/sSWghiDNyzDqb9TUyfAGwxWeJOUuALUzBAAKNwd1XBAs/9BnY8Q3WgeYJXKOA7htCMRY M1iHBBZijmBZWlPwMNt7No3BWvnAJBzkZn6285G9PpOtbiNs3A7r1nkstrATftt8/iMgDX/a1AN8 5jxUojR2ZINChJOQZlnsOCReUSjZelw+ncizyTmOUAuNCo+folpzyasrQSbyGrU9IyO7CF6pG4tb 2IhbHriu3EUa2G7haLuDYXm4w0XEBQgBJVbooBU6EPNNIYOYymzGSz3tjE+1pKXlBUAyyBhqm7fU ZjRBspOsaKoCLhDV2vxiAsPgBdCAcQzI/abPkLOi/YIDS+XkNxvBmjRB9HaeeASrUwXaNGKfWdjE 1lrDe73b3FDNWP+4oo3VNn9r0DtCa7gW08PlkOAMf/Ud9aijOjMwDoVm0gwjHnHFxDaKE/25bMex TxlDKVHmnGKuL0pFXVWpwBAqMFtuv6u1sJ3RXHK0xrbgNklxFBKVpSzcIy0MSU1KBCKm1KbkFrIV hxmzJaB7pYw95s2X/BJQfdpwS1SeqJdAGcpYRl44MaCTvLBqbnAThDhHwxgEMAY0DgCBCTXBh8gx XHKUoxJtQBYgZ1WHgzOYNlPXKrFFrzXQZW30mht/6EE3IX6Cvx0XOjMfzBwVNU8l4l+eJyDXOFwR ozVPoyjB2FhnceQM6s8sHtQn0JhJQnUcrhNZuyrUvsq83i53rND/37W2vdca86WWtPBAdXahbiQF GLfjL38xGIBBBE0iJ/c2GoiBJqyQGIohgWtSeY/RcM0DVBJoCZo0VJi3AJLxXe3jCp/HMgwwM34W VXzGAJBzUIIiOY+TG75BALZxFLCEHIsmE9i3cg+yTsTCIE4XEbtHKxOGfCqENp7iVkGXBcxnhNnB hE2IWP7RH/3xHzJ3INxUNXyFNwREQniDESKhHg+SS+7EQ/qTE98nFGkoFIiDRJvlRJHTWU0kFMvA KJIhbScybenSIg4lf2eUf/DSdoDoLmpUiP0nF3GUL0KSdzVwJAcjCH6xMO6GgIYgGIJxCI8AU5BQ Co2BXSEzMUHQ/4lmJj3QRT2m2GalmHlEFWfU8yVM1QrjQ3G5UErBQFBA8xvulSjtYwFBsSjNQBMy ER7eMHvDAlm2RywKgWk2NH0gJiqohkGtxjZJSHxXiHxQyHxR6ISzBoVVyIRUCCCktkHi6EzL1A3m RBHVhE4pQR3JUVYSQiFHpIZsCCL0hGyh1USftXWrdBTNwFBPwVB6eC5kNARo8YcwkkbfRn9qtEYf dVJvYTDApReAJ5GANxg1cImJ4BeH0ANQQgg09SahQVQPiBmccQkFJ3ClKD1b0hjXc3k/ZQwQwIrV gwBj0gq4MHEUF1XAIAJ8xjMFkHqFQoMHlXo78xuEAhw3UTjYAP8BA4GM1QEp4iEQ6YQq1rF0XxNA DfFNIIRNgAWNWLMfUrgf3tiE3AiWwEeFZRl89yFhB0JqR9dNrjIq00EOC0Qdf/NO2ncDSrBi3Zd1 RVFQ+miD3HeHTrFjXfQUX1E67yKIcHd/6nJ/r7WQSrYjc4EXeqd3gLEwjRiJ8NYkKwVTTnII99aA o6EKYdIBO+UYXDIZWmIK0RWKGENmRfUbllCHmZGSHUODZFKTFKdUP9NntiGUqNdxtuEtpUcoAYCU v2gsliUBLhATL7EcAKEpuocSY0NAcilBHTZDfBMslBYOLHFWGaEPP/eVs7Z8aOkf3rh82Th06vmN 9HFCCIQP2wn/Td40KxHEYHSVVteXfUmZE/OIdZtFj9QSmENjE6sXAP+Yh51TdiziUA+1LkN2kLU1 oZJpFlUxmWrBkBu1iJfJmUdCkQbjiISBCICBCIygiZkICZsIJpIkm6nZUyGQAqrwopT3kh+YJQcX XavgSU8wJ8LQPh0nBECTi0hZlMsAHM3wSsFmHMXBlCYmnd/BEgphfdb5EA4hTtS0IJpiYuFZKuPw HbiyHlpYNatmnkR3jTY3lsinfNoonzeXWPqRYVjjQqImElXDYGEjaU7pThHSKNyHEz8hoEiRFEQx NIQzIWIHFQHpYyZybQ86OpFpf2dxZPYHOvv3UZSZFm6hFx/6/3eeGokDgwhIkpEoygiiCZrDIwVt MjzVQ2aj0ImZIEnNowmTlwytGAma1IEf+EM8SqMsMyfmFQy6GihW5FXuRYNIuSHL0gySMozM8QLG 6A+WJa3VQZ7OmBHg4BJT2Rwr0TVASDbcESrS4WkF8oRVuKZoaXMfMXRv46ZoKnRuaSuBRQ9HCCoV cVancirXcGLTQHXKgjhtuH3P4ixAUXW/SBML0H4o4qh96G2wtVGmE1uRGZli9HaYyi73EoCY2TqZ SYl/d4AHSG+mEUgv9QMrhYmGQaNxsgqL8RiMpAnNkwkZ6Iqw6prB4F1ydgkxWZu4ankZJwzDWmeg x1Vc5V61Gf9fCkc4jNIMQ2R7k1YQ3PBYJscNzsmtLuACTvM1UwmE/rU3lmISISYDfgWEo7IQWVkp aSMPrRaOxSd8bFMPrxZ0ImSesxKNbANzGSFCz+dyTtMg4jQej6Y/RANEEjCoVoeoidN9NIE4RgRt /qg5o2NbZbF/2hZblDpR78IuZ/EjagE7BhNHfhdcAxOyUvaxhgBvglGiFIBchWQYixAmGLMJW8IZ nZiay+MJlBSCP0tdH/izRMVwHEMmdxasxGobw2twtrlJSpqkjWIcTIlDUFkNTwuV6fSc4cC13gqm UQNgYtsNWUsq0bk0osIPDpKV7lCV+Pp7RTg3cgOO8mkPUKD/HyzkhO96rsi3WPwhYSRxN8AiLJPi r/n1ixZSRAhLNM2QOBOSsM/ARV/EhxAlUZRaW5hquYQIOl1hLxqFW22xL2ixAo0IiTpQAyZwkSXc iBd5kYKhwkcieJhYGMo1byt7Jm+WSJ0gCraqMc4js5p3MozECQlnCSEYiqoYvIfiipQUm8TLVYlS h00Qk9HgVTfoDEMUHjNRvTs4hsnoXyzBremIdNSHICBhjmTsEkwDtcRCl9YhTHpVNu0hN8oHEjLA TfNrHwbCTRpUNozVVhpmpxbhA1t4D6DGV8ASvuPxKBESOPSVl1Y3qEExFDwRqAewqA5sdmcXqfRS kJyryQV5/xUbValupKlvtIgAAwRGgmUUubpPopGsrJGvwJEmIDyxTEin8VKi0aKyazGgEGYaoxmf sXApkANHbDLEAHnLk4pExbuS4Ug6xTGk1ElLlbO6anBPTD8QUM1ISTTOECk0EZP5tQ1r7DfB4rXN Yb7lGkHaGw7kOa6kBmLUxK1PyRLUJ89gE0BrvHToK8cVMa5fWBIS9GHj9ELzS0Gq9nPw+qbHd7+2 0lhcow7IWCy2pDTIciEH2ixExCzxxbANOxU+Bi8GIDoZyslK1sllocG3VVJB4ncoPMIEQ6qDATvD FQGsfAiVOG8qq4mEAEgsOm+t0KIhg12/uss4HF2hgEmzyv8b68WzBpd5y6yKvwxe4wVen6BJrvTE rFc/HFh6xdG0T4oNMDEpDDKd5QAqWvMpEYHOf5W9wHSOJhF9++y1/JV0W7g1Wpi3CjaenJJNXzhN LRRq9jq/9UtYnAaX9yG39nqFnFYFb3nXv5QrYZ2+yyEp2Zcs7/gTdFiPkTwUPRF2C6rRVEEuZJS5 HdXJGbWQhHjBN9JRD8kjepfCEtkIGikY6paZIzzCLGyqKdoBRSAYiyDD8/YmOgBm+sajrxkKmddm NHuBFxib7IV5kmHMMqmrKpObc5Z6kOEbgzJE11yH7hXFvkEcyHkAJPDNxGG1MUEQDMQd6wwP9+lq vWc35Mn/2FtoamATTH/VK4LNlXkLThWx2O4QQ164TfkB2C9kBDIQQ+VEQfQLjgI90ARt2C+0EXNM v7c2WAS2zxOxTA9ALF/91ax3DUTjTkybwDbRDHS4ONACuZ7tfubSh2KhsTkSyhLqRtuWwZjKUabj I6ljME+2mQwTGIeQsokQ5IERATlAbzatA0fuCojwCvdmAiyaGIdxMWfCJRBQMs0DAbaa3Mmg3Em9 PE0Ngko9eS05vL+pCpp0tBy4AE+s3VG8KFIc5zTxpENkLJHN4d/xWBEWDxaBheP43iUE4HYVEnsu julYNQ/RhXSFKfjqth+Eznd9ERRxD863EZJODwteH1sD/3Q991ZxbDaJtd/z4HRB2EAObWmSfTQl nmJVFxQVkiE+QclS0WMtAkZhYRY5jogb5VG8TpmgI8r28mRvRDulTNutK5q5g+SLACVHLsxK/gqi AazP3AHTHuVvciaNd8ONceWO53DTQwxHDYLI7bNg/rviznCZVF2hGAxFdRv1Q8Ws1wzV/Eq/+Er0 flnA6KXemh6YNh37QI6vQkHTiISl5kyGLY4A/gC3pmALQoT4KyDnuEGUzt8cJLdyu0IbJAOATR98 e66iThL6eqViMzUv0aXemca192v+WjTUgLASYtkGO6DQcC3J9i08lgCZA8HfdpDtEuMe5ckZtX84 MneICP/CEPl/wGUIfdRSJZqRhKHCghclOiAFUW9cDvMmiFdTq5nti7flT70lYf5vV47uIBiCvvpT y7xwrfkZd8YnRus+vFqH0gDFQ0UA8j4ty7LNxGi1Js8ef4UgCpZqxRQ3ckqfeHw30RdBvtLP4XhA pNZhFBFD9zEfATL5cFPHB5LpZ3mN3NieyXdCE49CMQf4WxNizJGMv2aGCCuwNEGHP+Eh9AhtqOVj EHtGi6kjbnRbo62pJ80jPNIWm2kkKMxSOQ3LuJMCyR71KNrkgpcCiXDkqxAamwAJh0SKkkTluJvl mSAFWp67B9dwvJvM5A68WS0Mu8pVtMleB2dZ1/xKTcD/pL8YKSXOlPQFnRw+aREmD2elQNUECCga MhoPGoeIiYqFD42FjIaIUBo+hIRGMpkyVYNVVZsyJJ+Lo5E+Po+nqFCNra6vrRqsrllZD7a4tbm6 t72zjquHqoqcm4OImySEnccao85VJM4k1NHUEtgkEtoHEAcSAQfhATcHBzfoN+PqAQIC7eo37u0C QQEBQUMN+0P6+/z9/vXTN8SBwYMOKhgcsGLFACBAHEKMOODhxIoPKzB0yLBiw401VoSsQVIHhR46 fvQwsbJHjw4pLlzQMfNCjxw0Y5owcaHDhRwmclxIQTMHzJsdkqZIYWMpTKYLFtiQaqOq1BRBFkiJ CiEq/1evXcF6jRoAQgCwZ8eGHbuAgFe3CJa6bRvVrduzTby9kPCiW5Oy98Tdu7eXb18IL7zxXUyN Gopqnjgh8jStsTRkGgRJhrb5kCFYj4RZ0pQo07FloBA9uLysEJRTkCA9+PUKV6/bt3Tp3l0LN6zP sYg50yAtGjNOxTYjf1xFkCBnmh9vmyHhygHrEqifK2cucPd45MoNNufOHTsC7ejh27fhn4F/8AcW lI8wocETQCpOzG9RPxAH+fE3gEYOaUSgRw0lKFJDFNSgQ1I7sTRTBy65pMOFFyb1IE067HThTDoQ FaJPPaUAkxROLZWCVFEhEdVWU9kgxVZaBbAVBBAEcf8jWzWK5dVZISxwVldEjhVECggsgCSSCMS1 5Fxk0XVAYRLg2I03eg0Wjjdb9hVOX4Vp85goyJEJHQoofDImCcwRF40naUJTTWqWNJOIIaN9wokR lFhSTCI+uBJaoK2wMotswNnSiG28Nerobrnxouhvs702ySSUwBYLpqFFssidh6x5DTbZSNDdN+Zg g2o86YhjjmDqvPOOlloO1EB7/MDXQEEODNRrfQ74t99DHeXHEUcYfeTQRxVVcOxIC/LAAwXU9kCB hEll+6C2SUlRk1ImwgRTiEQZBa6KSk0FlQ1BBslWVlplFQSRUtgYlbs8CrlACECWBQG+abFlV1sE IEn/QBB23YXjX3kVhgI2hYFJ6mIQdzPlCxLPoM02bKKwSTTbPLbmIZEdYpkyaKYpyGWK1CmMaqEJ gwojqnHqGaWRCOrIJI38ImlukT4qNKS6AQ2FpUf7gAlpp32ijJ6hGJOMnJBR8wKblm2zGMbd8CWY l3+9Kk466NwTj6zlzepOEPWs9w+uuu7qz64G9WNAQRUYOIBB+SV0kUZAVLCfRiMAMcLhh68wQoIb idQgtR6atNJOPdgkk00dfJhUTz4tJRNPJpbIeUwqmshUU6U/BRWMK0q1lRQ6tr5vWDiuRftXa0U5 ZBP5trVUkxc0iQABTabglgBg4ZgYOHk1gXFiGCPG/xdiiZUFfTZscjymyszNqWb3zwyS5sd2Dvfp zZ+lgsorMSuiM6KOyILz0PTXL+mki+rsKSvnU3b+ZJtxTmRE0bExUekbphKbq7JjjnJw5xywoocA RGCeechjVu+Z267iIx9f/UpAwcJIRzCikWJV4HD5GcEAEqe4FW6EBwlqkEl4YAIMpSRbMslWBxDw IJn0sHNAtFzoxJW60rVuRTQyopKUuKKpHGlGWtnXAsySu9t5hV9mGUvA4FUXJRGgYEwinvG+mJWz 3GNhz4selVQFgbxAbGt7wZoErJEy5pTME2QiRHPSJIpD6JFkx/HMnXDGPkKmTzWOyFksKOUz+zly aP+96A0seDYbWfwPkCTD48mc1rEBcmxjEKMexkz1gnF4KVWvCkc6yPEOdkhwHuMJQCnjtkGBBGQ+ fONb3xIiwl6K8HArDFwKVUiExS2uISOQ1goosMwaUIsCJoEmTSqXLXRpqCdD8QkQh0iipVSlKioa ylBS8LonKmkq8WrKWNy1laWwJXdfwV3ytNgV3tHFLXJR0vCMN7zhLQBhC0AeYaSnjSoYhlTRC4Ab rzQl6aEJYyiYwR6lU7JQtUaPFfWjJ1oDqvQREn4ffYRHY2bIVjzypI8K2kcNMYlTvMYHlwIGIkTx sZpGQzoFvUZfJjY96mltL2CaEgnWiCpThUOBp0r/j6sQCIEGvEdXBOlVVKX6K17dJ4T66YiCNuJC FxpTQR9JJrWkJUMHmeQHD6ocNoloutGFU3WlQ507Y1S6JSqRRjRSJzqn6C534mgr7srdkOIZlbyk BS8BY8uKjPc74WFFSAFro09vOr1RPg9HfBlM7faCAqBKAE0TJZP/OrOIi5rvkoh0XyJLWtJDYIpS ikKpbFOKP5y1FLXO8dgdidMYrZFqSt2Q2MQQqCpTkfJqQ70aTxNIDu+oo4HeCQc2IKBBqNrKqnUD UH0Eh5EAHShZjFvWCo+pOMWJVQfTguYzbfgSzo2uAwQQ14lSNE5vng51MVLSkZC4WKjIDq9YmatX /1BEI3xJEXdrGewUAxCCvHylCViMZ+kQELy4DOwsQSij9STgAmwY1LJpxJKIuQaBOZKqk5RJk/8u 6alFjDRnnQrOaoEjUpEW0qPxm01tZstjR/kGpKBBxHOGnBk0nWxUGBvVcX9r3OogMFWlYsxQP6mN 6I2tuewQzJbMURjqsoeWcqMPgAryH4UECEDN8k9HVMhmZXUVmR0hAhHSS61oqjdDJEoKAjanOrim SEVyZYqg3blEr8huKUlU0ouiuGjYSbErr5uipK34aK7YM2CyzNc+kVThFcHr00JSHsUMOjHLmgUw WEojh7XmmOcgh7TxQ5+NR1pjmHmqkp2Kja1vXP/jniGqN0XrsbBri7MY0+wRo40odWZAnStgY9kP IyWUF2MOxfzUMi54gQuuMVRt9FYxSVXlUYGrl+kWxLodrFs/6jaRhVhEmAJinAqX1RAYJkhayoQh D+S8zGmlBEMv6UARwkVEcIYLAU0511PUFehBq8jQrVNnViLdzgG/aOKMppGPJv3gKTrYjIXl0WL/ uUQEIAyg/8ywvkSdtSl3eNXVE6X0gPq8OdYxEaQVJIxnfGtB9vpTlMSxImn2G/hNahfDTrptWivI yHCCj6BU1RWsM/WpKzAw2Bg3UpmcjThS7KCGmZJRxx3dG4yy2lWqpUBsuQ91r1s/7iZWdxnHn3n/ 74ciYEXmnEcg5/S65AI/APyDbNCBqiglKqazrxHd+XBFW0VdTHxsoVmE+Egz2tA8MrAZQ4AjSTO4 dmbhPMiNZNclUVh4Jj9SkzQs6q971rIWG7ELNEZq7e3R55+6cY4P+eIaB2ORwAcNz2FLNKUnXaXE PiQA4bTHN1bHOtcR2xUe+FxVvYpUzs6O9j/LMSpT4wC9HS5xU3n94VYp3W7nFS4R8h+IiNBYwayI ve2doHmHlwchWQG+KfCDZ1brBz6BEiYAE3JFgAkHeeSkFQ/nTVcBFSzigIfGFjYQBOrkgBZHcUik FRp3RR63MP/yLwrVRqEWcvkyYUOhenHBRWfk/1OiAFqPQR18oVNpNEre9jBvAlordlqzxlpEl0i1 NgzDV3Q0Blu0YHxGuHS11T7T8CYElDWqAibhQXbskEAPhFTl51vdp1zLZX2/hUqoIjajInZN9VRy E2YdtG6/UhHa9R8nwEvEYjgYoUJcZTgU0TgKgm8OQgE84BIsoU2QwzkEmHhNhCJ7hXhNtFeos0Ry 5XiUl1+LpiSWtyOPCBaaxxb8sgB54YGYmEX2RHqcBjyoJzwqZw+IQT0aU0ckoDGGMUpLZlm0lw0q 5nR+ZD5BKHyxNoSPYDO1KIRAFkmRdIRHeBuH0j+XMSbFBUfA5SrjcCq/pXVNdmKfRGUhIx2fJf8y PEVc5oc9E0MC1HVdBCFmwPIfAOJ+/MEsJbQCRLACQEB/+odvLcQsYDUt05KHK7Eh1dQUMoKPCsh4 5MRfcaFf6NRfspMvG8gWG3iQk6gV8GRgXfF5DRZ6/rKJoSdpUrFfcnUkIoAV/rRyYnc1EwVa2LMx yfVGOYUNLpAysmgMOYc+M6ZrO9drhqApu7havRgpQQOMxndIM0MMdHQy2diF0nZUR4VQ1wd9FBN1 2PAwMIiFEwOD0YeNTMlhNbcNL9ArZRhmdFMf2LWG8XZvEgERRGCH0rKO+NY4+NcQJEESMnQtPQCA KVAEgcg6U9FOHcA6CVh6dgVxrUNxl2d56wT/AXh1eVH0L/cyRbajFkLSYPuCFwuzAIkBT6X3JCcX FWwDWdJoYgXkCVl4MaUiCnMkkiKDNXqCSbn3kh0VG0WHmobEkr6xKPeDk/Xzi0TzCpziamUiMkb2 k9bnhUt1VDt1jdeHlMuFQGuEfQlkXE+WnBdDPdTQVHEjVWaIEB40jhcBEQSijmC5jsRSfyKkLPhX AwyBfzqgliexIVJQTWxVeFqBj4uoaGMxkBIYYCMnmOt0gWMRmEESaUWSmETSFaIXJAq2Ik3QiYa2 XwVTYRUWBAggAvAiSz91NdFWRx5mGA76U9W4MZoZWm1yGS2mg/8jdDW5gzyHSLVhUsB2k7BJ/1so 2po0Rgo9mTLZs2zYAH1iRyowyoWfxWzaQVyjUoMR1XVxRALYmH3Rho2pSCrZRoPciJVoiIb18RDj 2F1Z9ULzh29WWm/6xgMMkZYO4kz6Z0MYkhQ/sGc9kXCuIyNMoXFJdCS906YM2TtScJhrkVfygnkr dy+l+IGGCXofGJGUSXrwUjAHEyVkURZR5m2QYYyuBqG4GR1sciattketgRyo5WK2yIOUYnSsZaKx haJC46m8IZsnWnxL16E+txxG5knfpqSWYWXjhh1ik0B6kYziZ1lf4jVBWmVVEpXbuKS05Cv+0KRr CKVS2p1cVRGJA0PlqFUe4UzpZVYXghKZE/8uQ8GeeTVwkWiIXJQvkEmR8lRpgHWfkqZxexWn9zIk fOqfbYRF6ep5f1qnCLN6xqMvg4pqylNz4bcYKeN8uFllN/qZRqZifUQNJnNaOYcCwBF8glKTmbqp xId8n4p0w+aLFLtIx4ZzT6cIcYI1mSGS4bcxr7KUw9kXNQoxYXJQG+N13tcYIBNtiwEBGbRu3zgf TqpL4ggR4SVeZqks7Xil+lcD6ZUgXQo5GbItBWOAq4OmUIEvYXFEbspx/nlg7fKIYRGngXmYlOgu nCdpnFc7XNG1hNm1f4ph7/pPhJZFKgcYX3I9ogkn2YMm01hAEWpkpyi3jzEcejIKeftHoQL/Mz6X sIkUdK21UoWUfPlDP0BjhLdhuD+HW5lUR3CblKUGdlz3KiRbocvVW5xZJVDWW1FXnNvQjVK1lQex NyGEVQKipfIHnuL1EfOoOFaKf7GLf+vlTHWGVjoQcD3hJDARRVKQj4UZrl7BRa3TrfnCYPoiTwXJ reD6I167pyEAtqAHtse7rf90F6Q3GKxIZXEiZI0KuThFWRqqYqQwHI5BPh7qtwnLsPqzvsUWa6xp oqD6mr4osTkJY0KGt/8jA3hyU5pkDd6maqXWHUAFXKfkWbpKlD/5Dd62hcbFjQEBH8ACLE7qS71E b9g5LYWTTDwQEdIyALPLILaLIRdAOWoF/1evIyOu406O1qYbxyOCdWCF6aaEuadVxBXP67WZmK7P KyRcFK8KGjwaaXJYoWGy5Fkh86iTcaG5+UYdJppxGyc56AyEgDVo8kfN4WIx9r6Xiig96L6GFFsR e7j1O7885rA9s0ivIT+nQcWNAQpHhlAIhcBHfDE0d7KwiCbUoWQJhI01CgEHUbOlWx/t1379oY4/ C0OLo0zoOFZzRgFzNmdWamcRQLsYApfVRIhRoY+vQ0756bvwWcPu+oiSqHEGZsMzzLUuvLW1EyQf yHntMpHS25+H9S6iWMQKSoo0eJRYY7e5xX2e6WG5lTKhMlErRiYio1Fuknuy0YusyZIu2f++aMwo 97O4krRjPwNsocqitKljUJAFR4MLR+ODHYpRAtuEluGyu4lKJGsxlkucVba9UNmF5HB92nFigKwP DtAAgTzBIhSl2BkRxwJeeTde6OiOWbpM1NJv/tYBuFtNCYhoU+QiWsF5CEm1P/JPYWEvqezChAmC hmlghagWt9OfsYy8oOet90Byw0tyGSYv2zoerPg8R/Yw0oBTi0F7YmLFBtUxjXHOJrNHeqJbxnE+ ytdzxQZkPMO+hJQLNlmqpUoLN0nG9bvNv4G4+ENs7gNIZeKEQBllb7RGQbqFbMJsz9hkzgaDaY0C XmZVbefPe1MQ/4wgBF1v3Zlvswu0Qov/IeWZOdSkQ+r5u4UZAp28IkGyIpBmcYCpvBzItBzHVz6y tS9ctQf2eXqqrmE7vUUCmQqKFYPaFWx6RlOivQgMo9+bJjZnkjNgg9lTjeDrghybSZEBWunrt8ys mtF8SPzDi2hcoklYSLNQW0fnmrXwzbyQxt8cxrvxzcx9NM5tqm28CUbm1du3x9A4uVsTdad4jMcJ g8x2Bcz2GPm8zwcRZk/6K+MYQuKFswiCb3JGBI48Z/f2nWlpEst0ITX0AzWkVtkkkHxJeZ3nl+9k mHuqkK7syhRJad66aJ1HWN7Kp6icF7Dcn/tJF3VhPEcCakaMJdVG0wT0MNvTSaTyYZ/5/1kbc9py i0ej9SkZW6moBbiDNJPkPM0OiymURBu9bbH5k+M06aJ3ZA03lc5JudqrDeJwi0Ce2cuIyt1cx33Z B4MLoM/8TN7ZhRCmG0ITscj7pn/qyG+R3Hc8EAF9l46L7DjQqofQhBLSymeq800MCFhbG70Xl4EK 2ZCPXUWOjZhQK8MJ3nkUjiP8Irazo6c2nKcK9qcsDa/DSyvBpT0/3YKoKMz6msTbsEcFlOIVRanm M8WZ0ekuHuO7N5NM3dRFqD+AAlOA29siGsabmgjPMRmhQKlkIlodw30as9pFBoOghWLGOJzHWOSm oh28I8h0s34YwTfvF54eobp26BDKBP/Czqpv7fg4JiE5AAiA7lWmCReIetW17GRxlUZpkQbLhGVF m00kZbHgEvkVitmuH5gYcZ6uAMoWmJbRWiSUVxKSbRIq3JOqM3Cyubk9r/3qm+50kWEMr07Mn04J QYZ7XczjsMC4Qrep1BzVkWTcZuwbijILv/DclYIJlRDdk+HLzlFk4Pvoa2LTWPibaOJszmYOCwCd Erx+wcJ+Fqysrpt37Zg48L1vH/yd6xVN0brmJbLtaRoCVSEFLoIvBYbgg+2tOvK1Hb3R5X7nhDXv 7gIkoPeYYAvvDObtzpu8RvLSc4EPoWYxos2oduTqEsp9q9Yc2QPpOEi+BL98nMHpCl//9x2V6rQm uO+7xXwv1ZMy6tIs+MfdqVm9C9bcKNyc1JMBSMXx2j4dJ2jSsR7r0yZrNayYisLuYMCihudt5RPB nfsG7Xq45WA+5kQQAXXWA+lYQ0TrEifREtk+FUhgIl8LAS6CTsKrtf8Sy5T9TlbbyvoSYep+9epu O1n054A+vai8tbVcqJS5Imc0GHlhuaw6QFncr6EZDXuMknWUbMQQiyv2alNc8nqvvkDGCK+1sKYe 4yR11TIO8StqUvS/sK+lhBrLGZoBCCQog1UkhoeGVYWCKBooMxIShpGSJJQulS8QkS8vMzMvTQtN og6mpw4DqKqnQKZAsLEDQAOzsDw8/yu1ugMrubi4KytEub48RMMUFDw1Os0mPSYd09NSKTYp2TYL 3NsLUtzhCykL3twhECHhIezq6gsBCxDy5/HcEPP0+OHzAfjzAP8FQAdBE4Qm/xKmU6hQXDcC5saN IycuXrwXEjptQqFIQxUNIB2B5ChBkSAJLjBWGTTIEEtBM1jKnPnRoyKONR0pyimSY0gNUDT4GArl gdGjIR8kVapUw9GnII06XRoV6tOrWLMazcL1QRavXb+G5Uq2rNmwYK+eFZsFCtmrRbVe/anUR9y5 P20K+rhopaC/kyhxkjDjQJMAmlg5GGJKcarFtFTJ6kW5WC9ezGrUMIZLcw1gvn70UP82uoezGj90 pNYxLUWHbNOwaQtnbuGCd9/OgTt3+17vd/NCxBNOnB8/CP7oOTQeLkATgwsZRmcCgYnGfPIISqQY Lhu3AODDHeh0IGPJRDs5viRx81AkQixLyow585F9lukZhWzE0yPInA8EBZRTWVUloFRKfRVgXnTh JRdTCBIol1hgoXXWU2yZtZVXRsVVFBQgulVhWwGCWCIUdg2oIoP/ySADSC/mtdNOhuiFwl+SPPIJ YTFBMpgmoTxXBQRDDNFAkUWi0oorrrwSCxDGDDAClJd1FkwxxOBCzJa+KGOCCRQ0o4MO0Zh2QWs2 SCHFNmw6RJA62EkxUG+53RZcbwH/KSfcbaLgM5CfADUnzz92BuqPcAcpRFB0+FyXjm+0cZMCAghk k0IQNgShnEXgjWceIyvd2JJLODFiiCeichLqID3qSB+rMt3EUk8s0jXVg1pVVaBQSRH4UxUQBovg XLnexeFaFR6b4VrMHvWWghtCGyFSTNWaV1Mw2rSSIzjx5Z4EKBDGCKsk+CjBFZGU14kERCa5mLuL pVLLk5HZctksVe6CS2TCCBPMCssMw8MyA4tZAwWsTUNmDx2AAw5uve1W3DoUw/nbowsR1wQ6vN05 6KGEBucPQ9Al+k/JjEpnckHdOCSbpN4toCl4fgZQnmAlSRLTuC79daMl4FIC9M/1/8XE7Us++dXI f0sz2FS1uEYNla7DTkWCf1HdapXWEt4qYbQjMiv2WM9yGO3YaG1IrdfETt1gSDktMmq4SP8YCSgS GLaAJkYq+W68DjAZOC3C1NLLZvpWVssvwAzAeGee4RJmmKlppkMRrI3ZsJrq2OANbuB4g83n4rhj Jzrs2JndcenMmQ/HrcOJ3KCi0G4ydCifTDKjmtxjDzyQCgoPcjYfgO7dGFkS6tUjWYLIJOFi5MIM 7IULLn1H9xRqRzvB3Z/TXFMrtfjXTmX+Tz7YCrXWURu7FdoXKggthQEq+GFbIYJ4Vv4gGgGFET4A IABRREAfyGAoRtCAi3jlogZWQf8G7HGBAR/oAhcUYhGBMQQkOqGJ8XjiBYaBgLqMxJi/NeBIp2AF k2DhuFzsgnD+ioUxiAAlItgQGVoagQ0pEIEVRIACYCoNmEyggzMZ8TWeK0cSy8EbN91GHVIwHZ7w YbrUPSoEG4uOPvJhG27U7lHLQchBBoXFRemuUSnZR+18x7HuBGE3mZLZzOBRvJtRAhIyGUkVMKKz KpiHPAUR2iLeE6um8YUn/OFerdb3tKWMDykKrElTquCDnByQao+MGoXgx0n4hU1DmcSVrWplyJt4 BD+HzGDQQnGQ52jiXQYoUgWa1KTB1csWt/DFLvwFDB70oAY96OXAQBOmMelAGUD/XNgPltkDz3XA c2t6puiUSCd3WBNP58AOnN4BHGy640/bpKKfZPedPTnkH8VRFARcIB3o0ONPgspHNvbRnPB0yjl2 HIy4TvmSC2aEj+YRTBVelR5tjYSUitxP+c7HqxSFElt8Od9HgpK+DmVSWs4yW0Y7+az4xQ9Xb8lV 1rD1q189sCYfcU/PMMgeS3Sipd/iYEHI4ykPvuAESEoSLYAAr1rGInCGI5zhMBOlfbXQcY77DDOA 4RnN/KAZPyhCBy6npjUlEQnUbMc7tiHF3Owmiqdrom+6OcWGwG4hWaRiobwonT/hwzqOMtmgHEIR S2WjUpoKgkXgIQA6HuCvnMgn/x6f58cb/dNT4pJEJAThCMZai0E8yckgemUrCC7QfVbBC2WxdrX0 DeWzThEQgaTVrGRpdH4cTa1q3cIV1pLFtdAKLVBQRBS7BAVFMljQi15UFwMCxbLMO6VfArOuUBgP I69EUixLaArG1PIV+OLBUHsh1F5IdwA0BAIybBiMLGnpGKShQA+Wycxlnokao9sGEj6HHaxWEQJS 0CZvqvjEQl0RnRubk3ICkqhR6GMgI+MvQwiCu4QgxJziuGs2CBAzQYVHAE3IG2D56DxwneRGkCgE J0DoKUhQLxKrmuxjf5K0iM4KfFJx0UfsIj65cM1rln0gSNL3oY1+kpPHUptqd/+846gx9LHYqtb3 fsUeGRDNVCRAbt5meoUXsPMVSMKpu540uMVpSbu+8BfBcBHMY3CZy8oY2GjE66UemJkCy6SGET2X RGz0xnPuDUec66SbJm6zUOHMDhXTqo+5xu53/NCOGKVjxoI0yskGwSJADOIbQHODAN/h1AKMB9i8 YYRuzrNEuIBGvU/w0cPgUs9kG7G0UjOoaYmsz4lFUpUZOxIrvoJ1hGyyQKAECEPJ4rGuybZrjY5I 1l7Li6kTaRISvKjYM2LPR1KNI8Ji8J+dIIUrX3CFdh0JSabAKVCrbLigLq5w/SqcML1rpV4Gkxij wQV51x0bqbL5HKnjam/mfJv/+Ma3mqdD56Ayxij6Zoxj6Eir7PDxnHSgLiGFTgg7CXWP4PjpO/Tc xoK5EQQCzOyvE0YsYd4DNElwUMlNpoRKYrWtEJ9YxOrRCXzqoxNJBjnWvhqxjBiUW61YaNc9xnmv 6Yfro/CPgBbl1YFmnS0FgiQRPzFESjo4HjG6IATKde4sUOGKbg9VurRgRpZ1wZmlAuOX4wVGmH9J ZjMvswg/6IBUpfpMJCrxTSEwB1Z/8w0u0h04b4K3OPN98IOj0+AHsZjG0DEngCfErW9tlEI6gUWK kaON3rlUODQFjyb81fIZ+StGdpRYkWdkBib5hI/uo2pRjStU3DLlqLNH6hmB/+/1NG5o+gZE0qH3 nH4d1fWN0bZ7ne8vpCb60IAoCtoYHXAoDAxJjP5Da7khGQXHRoRGxmPTJCcppzn1m0/pRRleCAMI uGghDb/rZV8ugwhA/KEJlqmZ8aadGtKU1OrcccV2YNPeer6mwS8WO/qGs+8GFg+Bh00bg2cqk3Ah Q3DLETOVYld3BWn2EAA3QAqA5SnoAgk943EcBHqfUC7Udi54lEdI0zQ2AR8dQWoidjSoZHQ48Sui 8hNFwStU8zVq4yxj03s4tiy+t4M5xnOyVi21snzWUgj+gVIe0VIh8TxJdi7QVgUu4Dfw4lytgC9M YnWUYV3hJ0xeFibGQDBdCP9VojEw79cDZ8JmndMyFBMR1hQoEjNOatUx+/cm//Z3fYc6roMdASE7 9Fdo1EEd1cEQy2EDBABpgmgpkEYpCDBH8SAANgNCxfNpi9VxIvcC0XM8ACUYgIEerDYS/LF6ndh6 pqQ0xSYIMiBjxlaKL1JRE1Ja79NJXlEUOxiLsYgVmLU1NAdZHoGKpyhjSUiEM8IRh7B0GXEI2KYY ktFcTjJ13VY4VvcLs8BLwOBdSrVUmoEwqVF2PYB25zU63BA63PFV68AOVxRfuGE6+gZ4bZQxqsNv efg6pbMPXaQd9KcyiadWfQI8DoGIFFFxFQdpMgMeAGkzAKl5doRcHPRPn+f/YeYiNMB4I0a4iUez LaVWKkX2QJOwF7tVijDyWchHg2ohi2UDkiKpWj2IISbSNV/DIrO3W0ZnLcdmUjhREoXwAnCldO/C XA3gN/GiCjx5S9/WL8O0Jd/FXUC0DMpwAT9wAWb2BGbmS2aWMM9kVSkQOhTTjeeEJ/R1bwCIleg0 jwe3bw2BMfbHKNnxXgPmdzQZHQGXHNgxDgjAAOTAYJOSAhZXcdwwHvZ0ADYjQgXhQX4JSMiFLseD M4s1XOxRUptYaihVbFhjeksTI7N3K7W4STo4kpZ5mallNvZTIC/HIrxoLfyBNSlFIysBQYjmAtZX JDlpCtfGXFVohUPFjLqg/1TGUAPkZpTghWbjVRqlIRqmQQ1FkCYLsF5oeCfuWF9tyU22sShThDp8 x46EtocOF1Z6KB1+mBDUsXCJskbi4I90KRtvmYgygwB0FJB66ZcHIELksZ4gRB44c4GE+TOHoAil +EA4UUg+0RI3kouRhDWtNj7yg5kCOqA5SJm3pRTuw1CQmT5C+FjBBTen5xOH8FJPmH0OkJPMFThU F1SPsQvTxQvLeBlcF2798hmfATDiZWZq5xqxgQ27QSdgdIZlmTrk2JxcCYBq5Xf8tpVgVDriIGCL 1wnXeZ0JsRwTQZePZimIuAAEgAAiwIgBYHECoFcD6Q/pWVMZ0YgelC55c/83C6lPSNceP1MIpscz LhEjAMI+WOFJBNqmbsp7F5JZAYJ8NbYgP/dzAcQgiSAqGLR0JMAEjXEKKKSTsCAv8yKi9yIMmqGo K9BUmpELjmqiwNQMpDENaTeVNvAaljJNTMQNSKBNFtON8OVwL6qj0mmqZqUPAFdvqmN4fTZwCmEd 4hQye8WkDUZx2ECeMuOPC8CIdKSeV0p95WFHWJpPTQafhFkJSngI3UIj6PGgcQFzt9cslPmm1nqt HJKgJKV8Q1YrkZWLuqhsy7p0T3YKJJShz/WaVWc48rJ1u2QMXRduYlZ2KWp26CUb6AURtHFFvCFv 8vCiHfOvDbcocPICxDH/q3pGKAnnd6sajwBhRotCpPTEneBJDggwiHd1AU4aBEEgAATQV71KAI0I kMDKRy0hGCAUCVfQZOUBCehiR8uKCN3aIKIULPKze8qCg9e6syB5Nhi1NVJRPlDDSJBVivpJAqip dE/GXPCiJLRAdTuVqP6yGZvRqFRrtZvRGb/kDNZodszEMGx2DZp6DbnBDgXoqW3ZRKOaf1y0D+Yo jgAIq2pFh+b4MPYWKPCYEL1DsHSYD9zJYP5IAB1QKeNpl31lnu25l4FFCanyHoLhI+UxmHfkM8TW Pb3yUBOCsyOpszzLs3ZKg+YTgzCCoEJhQByJfCyZQC2pi8BoCOtUCBDA/x47cK5Mq5O10Bgs1G1V GwyHgzgD8KhUKzkDMzmTwwPvJxrvd14sGn8Tw6/btJWpcxzXdLByaHjiiDEqM1bruEVA+nf0iBxp Kw7eQCmGiFci26u/eqWPqHmMOwiMy6WUcDw7EoJHuC0sAoTC0nNp8SA327n+i608FxTDAhcweC20 FXsK5CKRiYt0g5qFUEFDYiQnNKhNCziqwBjedoWLyqhcV7WNygxhUo0U4AtjhmYd4JsXAA0XABt2 1SaPN38xKqpwopXieKP8yn/6NnAESyelKrB5CJaGxhBMALFMWsSScrG2CmlKPClKDDyd8gIAuZ42 QxgvcTcnobKgtnHwCf96FyRzarqmJfmzOlaZ/1vGmIm5+SsVB3pb5gOE9Zt0JgHBO4AK2LYKgWqo hcNCvAAlLlQMJUo5P1BMp/FUzqAay3Q50xCcriEbnOMw4ns6oHMP5Ti3CTuP/Ma2DKuWl9xGYBU7 +2YPYpQ76kRPgcir3xEOFhdpxDOQKZsun8Yqjvu4Gzd6PGJhqqdQ95vGvoYsGeWz1cprHmXGwqwh m9QhDFJJLZktJ8WSSchbqChjxzYjZMpPz4qaTDDBqnlC7mKhjYFLMpS7sKBL8IoMCPMLknow6Dw5 aaeir9EaU1mqUDRf1FmO15ujeetwfCtO4aTJs/q98MhoiyfE3js7tjr/KeTLYJRSiBdLKaZsEXqJ GOABQshxAB4WGAHVpThzMyGobEaWUE6zphjFijaXa2XBucN80jcoxmj8g410aoRwQUhbBdd8Qu+i zba7CiMQOOLmQiV6MLigGj49MGNyMAgjXmRCXu7XAWDLJtngMFA0jvXFJ88rz08NyWLJKDvgve1A hwYLnXN1VqPQOraDD+wksXq4RpB2Df4oiBdLl00KaZTHKYgRCZ0Cv1a8QRgtchgnmI67aTRCaveL SZoJzCWdFcXcv2SM0ordFVkhwLJVUgICWq4GEgmUugmsusz3iyWYtIcgA0RyJK2ZoY+xrqqgC7mL L1IiDCMAr41avMgE/0xGiWZpRl6Weiba4DneISdtqLBhZXD0V6PuqMOZPKuoyrer07Z5C7EqI8qA ooBHjKQIrbEXoLFuDR6HcRg3M2GZF2qdRpg+Agns27Lvuxc2EdhD+5EblTYAqiyL3d6uWMxQ4QO7 IlqYLSAqpkAPKprOalkNJANMIMHajH3XV0IqZHUrQC9AMAKrreDIoGXO4JTixX5jwkwJoxrY4HYT cQ8PU7b0gDrvRY55x39yuKPOeb1m9DHEoV+Iog5/cmD+rBD5pWgEJ0/6iIjSzQAKcAEWB2nXjRCZ ty6eF1AApdGU8FcBYGnCStGMW4JC+8WZ64ONDcaJ7d5UntLS4pGiFP/YJAZcDZTADUQDSELTOjnm IWo4vXTOm6Eag4zUqJEatB1VDdPU39Am4QCwPvqG94bPbtV3z/mVOcq3+azPRTocYol4QVwyouwc 7zCXcxkEKUDdBj0zzzGsGic03s0jPrJ5XNqyOyK/392sB0VSbuzk+ntRPVjlqO4Wqo4/ITKnB+xZ KmJ8RaeLGrnA3tMfFdRARiADNHBtEww4jFG7ot1tDtCoPyBd/mLakXMlzJBu1ujmaba84GApUQ23 VbQoPXwx76U6HY5wO5p4CKiwh+Li8/AcX3kbBgEkhxZXBF0OkzLdF8AAOXABOaAACpAD9a7jkeYc jVhcHXSQyYoRnsL/YXVECXVUaTmiaabkxWCMxnEx5SaN6opdgz5XNcMiwLfmNnCTijByQC8iQL4+ watZxzplhS5ECzVQBNNYDDygGsFUZropGrJ9wu/XMLIBTdTERDUKt0/Uo1pFnWTktppcwyST1d4+ j2F1yu/ocMuNmo5yGN1hKRqLANKdAyWQ4wzAAIkYD0qAT022l4A08EJuHpxnaZuQEWfviDNFYc/T oDP30Y+Ee7ss8XQPSmADa17MfLiImMonFAL8If8D4LRbwUnSbaTdzfeyCxtMMMCE1OM14WlX888E G6LjDRJTttGLb/y1b4WGo3CHcEavKHCYDoNWKCo+YLvzD6U/DoNL//U5YAL0Tu8KEAETIO9ar8QQ +FerLNGIgVzpaXka/aUYfZ55g90Y97iaNqZ5r8v8G8a5V/d1PyIYj/G3BhSn69h2oYodIlp9b3S+ 5XMhYgTZHOAVTKgdmgq6YKiG4xlY61QyH+EnbKlFUATTnQLr1QFn4u42oFWZDwghEAshIQuHC4OC ihAQgomCi4svkoaOl5iNmYiOiZ6cIU2IkZCapo2QTYuiASkIF7BPJgoKOTm0uAgIQQQiCwFNwAEB vxLGBxAHxscSL83Gzs7HB1cHN00HB9jXwNkSyjMSJCQSKCga6DJV6OwaD+7oD/Lz7/T2WQ/4Wfvy +vP7AAMKHEiwoP/BgwgTKlzIsCCUfQ/99ZMHpaJFiw8q+qh4j+I7KPbg4Zv3EMqQBihRnlQ5xIFL ly0HOAAChIfNAUBqDOCxoqbOFSt48qBAgYeJHkh7UED6o6mOHx062OjQI+oCKQtSdMB6KIWiREyY GCrUCdKosofIklK7g9KpRi8aRdL0aBFdQpcMpQ0wNi0qQUxOhYoLocmgrh1epYClIIKJFLYUPCmA QASBBQSGZdMs7UWTYNgkXGkGLtwLbctOv1idDEKAA8SGBYCwurY4DVVkkMjdjt07ePKAA7dHT1/B fA2TK1/OvDnDfNCJS68XfJ476sRHjpx4EIrKBkPCr2Qp3kHLmUD/BqjHGXQ9UJs1gvKoYTPC0qRN oUYt0gFqEa022FBICikgwhVXZBEyliJrHYKJJRASoqAqcmWyA1xvdTKWXlwh4mEIxKyViSasmaJX VgQQmNgrtyiAQIuU6UKAAL8I81oTV7xQTTbYFLbaAdF8800y0gQDG2yvySYbbKctM446VZCgTjv1 CFdldcN15NyWXHbpZUP/QLedddZpAJKZ2E33Dz9hImTSS+GBR555570k03oD6KTeCuvFV8OfgAKq A1NRFUqVDlEFmEKANiyAxCFIFGiIFCcWgpcldz244KaoODLXg3CFcGGGaD2alocfOuhIEHaZ4gJh jhh2SIqYEQAL/wMXIPBEDhfcMkFlFiCQmQBLAomNsapho2xnzUSTzWk83nCNNto0Me03yixjDArr VMFbb/CEa+WVxSGH3JfopqvuciVl0W5GGV1Ukrz00usuQecmBJ5MKZ3kL0zhveSATEAMjOd68w2w wk81LEVUBErdR1TEiP5QFaONHrhAo1d5GgKCnl56mCSMdAJqJCjTVWGGi0iIVSEbntrXXK1WWCKF eqWoCwIMPPEEAwgoAEMBDDBQQLAEIEDsL8S+BqRn1Cb7mTbOaBPAN6DZSCOxTTc9TDABOENCNOOA a3Zvv1153UT5ruv223AnFB135krnj3FdirdSS3rDKfDANPUZH/8PefJEH6BIIYrUBUzh10ERARYa oKNp6XXJVZZP2uCkfl1u16cwU4Izy6RfhYipGp9qel8QBDZiXIYYJgpmNghBQNJCIBAs0JUJa9nt QSghG9iiGfu0Mqclk21q0CCTTTI2yv5abaqJYz0KMqC9dnC+xdN9mmLGLf746appDxQ++GDm+hm5 AxJI8IrZT3P91h9neX+7pF7BeOop359EGYoOBniUHlhMP4bqT6I21igbEOhSgpACpdQCASnkRUMU JIvK5mKYELhlRC6AC6waYUEMeixlkRBFoyqxslMYRhNdkZHtcocAITDAdjyzjAW4pqSvAYlq0CDN D1ezjKgh6Rf/YFvA1mIDDGJhI2zaGkfZfEMmNK0tXNyz23LaRr4uenEg8/uiQFLyHb6ZsQEuQeNL 0nMw9fwJKIJq2KAGVaiq7GcqkuvAokLwKD0eQkB/ScQgNEEpSMxMZBKimaYgsAMUtq4RF9pBCDMk IdV1LhQwwwup3iKI1TyCdgSwwWVul8OkESBYFrhdADJjI86oRkfO+tErbbOaz4ANGJj5GjBcwyTV SNFb68jeuM6mtnKFUYzITOZB5KcdirAPfvd427/MQ82WFIyadhqYwRTGp50AaigO+4EOamBAqfRH P3iEHBLwuKgVbgxmZXkZBEsxMxGpRZH3dIRbUnahELgOVjSr/2QiP8kxTVDIMLXx0Qhhd5hZiVKU Kbgd0CxAUQIIoaLCm1E3upE82GirWc4jUvWaMZvZNOMQsylRL59mjN14S32/AZf60AY+LirzpsnU Uj6gSabq0OM6EVmXvwygN5R8QG8B+5s1DyYfcNrEJkUxoMWYcsALIBBAi1odqjZWQUcUUkOtS4QF 15JBT5kVZR+8IGAYSZtP6VMQ/ZSEghy0gyaMCgIuQKhnIBmXuKiiCS9YwOwiqrOd1dCGN7SA7bam hBohyWm0+RGQoDGMF5DjBdNbDTEIYEvQLKCxtqws9cQmRWG6TwPZU59pqZQdhNgUp7AV42sDMlsv mQc80zyBNf+vqU08DQwocFzYwngwQB0Q5SlNIVRUfhC5BDbQEAJylMckVBavLuiscqlkPU+WF0rc NRIfDKipHmWpr6iqvIXxIGEQWhi4tEUSs5vdxmRESgswIAYX1R0BlCAA2DR2GASY1gtmQAIgziAc z0ABOcRBjqdFAzRVC80MLLvgZoxjHahdx0ask70z1bQ4+ALIMWNLYi+tKSP3qpeKV1wRdG1gAx9o wAde3IAT1PgDBtCtbum02/SMALgrIIKQhTwxiNmxB09onB0TmAJKPSpSlVwhWOEpVpFZqqwwuycK PTiXRsLTn7CjhJhRRk+1QpJCGBJhXyfR11g5tIaw0AXQhGD/wwLQOZUC4OwwBAA2CBtjaqsZzTeq 15kh1tI1u/xFZBNq4d1MSQarnSlxxsWdu1l6xCXONJfMNSbztVaa/uoXUpO6xm3uySZ8es9QlJKU czJlKniUigQdiLF3XlmQIaPLhjb0FZXlhZ7wvKCwgz2qL58QL5p8ECT2ut6E1lWfbW3oxpK2Il3Y kKI3vOiMNLpKYVgL0EO8gqCrJgEEH6NJ4WBpM7BBxEVT+JfpMBsU4lHT7bWJmZjWtL7BND98hyR+ 7oum2xyAW/zxmOD50982dRIfN47TuMjNT1P4w5/HydoGUiAQxueayGRfwnVk9QuvFVQJfO4TZv3U 9XdPyDpN/1rKL4RQRShMkdB92tWvoZh2RGUkrMPaOXepzCg3hmctYEBLRxMeojFMU+7U5Eg0Ax7N aHTULAm4wAVSHAf2NEACemdRTfbWKT/2TXZ0zYte7UM7it9GRqIiFbe4TThOduIeqE7MYoZiCn8u EJUmS04KGXNUljvxsiubCFTZrQuENIgywIjZRGV9ZAhdQLN8Kl5kb3lhIxBaV/VS4o+h5HmualhD xWbAdtvm9i2vYaRvSH2IBw6iaQA7g8jShuajpbDVpdgOI7ADftfx+k89LWK8lf34zwEx2/K9HfEZ oMbh0e39ooDNvx3sxzbpAQ+IQIGG8cCOfO8A4x6XgooDXv8KUmmy6chbQStnV0HYbTx3SUYyvLyX kaBzRGAq/2X4V1cvJzIimdcWa/YCrxICoYQZidEBSbMzdPZzeMZfq/REwpANFtgMo4FgT1duB2YO KGBu44B1VyeCWUcOJMAtGoA93hIPMOVpLtgR+VJbyDeDtMU28/ZTRoA+6LMRFWEEGyEQQeUl9UNG 4lFwBBcTvcVUhDMfPLEC93FA/mF+UoAEgNdkG/cxlDNBnwJyibdBJvNIKwNPkaRWL3AhZchWY8hW XSgXFCRswoZmJMIacXF1hOFJoLdztjJnuUNnQmBnqaRKN6AZX3MDyPNDonGIhhgOKFBui7h0Jqgt 0qB1xlD/BdyCYeACgy+oJsZHg5yoHO2yiQFhEeIzagV3Ag6wY9YnEwYjXH/ChOQUMUhhKAhkA0jw ZFSIBFhYSJYyVpmwCK6DF1zIhWEobIERQinDSIThOpAEhpCXT134XZRAMhjSVwYYFwSYcw9VOyuC K7hyUXaWWLcjAMKTNZphgd5gDKMxWcsQe+XggdziUlAiRQp2DmdDRfBjaQJRLs0ncJ3Yj66FD/AD EhJBHNAkkHBThEgVBUOgkNRHE9dEE9v0P0HxA9/XFFThXLFGfhf3KIWEi7ioSV5meL42kq4jFr14 CXG1CGY4KjvABN6lSJ7yeBWCKW7lFmM2QnRxc2UIWJ33/1BJ4wqvUENFkzsMAANCkAF/SCPCMwy/ QIjUcjU8coji1oEHVpXuuIIycA4Xthu40Q70SCVhJ4MGwWli6Y8z6G+ZyI/rkhIxNmowAR75sydy eWo7UU4WqUCQc0ePMxUciRUStCFiIVeLF2z7h5KCoTIpd2UadFcr1zqfYnOF8Fdn5RfFxkgIFUJo 1lcu0BbvJTrTJkodIAS5wo1GQ2f4ZTt/GABOVIHHsktGoo7OUJUzUAXhMAMfWA4nyC3uWIlf6ZVo cy+blo/4aJb92DbSEVSfCJzdsSXj4S9xUnAnkYp4AmR8AlUGVARTZUdFADmAt04Yx0e4GAIcA0/7 p3hdCP+TJfdx9AeTxfZBiWlWJmJX6RVXKuNysSIqqyFJBmh1LsCftdEWqjBt1WZYRfNzdKY7+pUZ 5EgtoGFLQDJ1V2CbtXlgsbmbldiVZ9ObwldpWxI+y3Q3ZUmc5MNMIrYmQAgRyhliWwKXoTZq51En vfVbCqMw9OGKyVVOjyMFRZBxfvmXfklyYgg7IrN/pVCZ7wk6jlSMj9RP7rmMl0B5cOUI4cl4njJJ gpletOECVTBam1mGnjQ7oPkKF1CUUwADuFCUIMA7umAZNTItQOI0gmiOLVUFVWd1q6F1JzhFw5c2 1JEl9zY3Y5kcyweiwymiORWDbXIcH+olAYNUMLFjFSD/MBWwP6a2MIFSAxN3TvtBhXspQZ5aCFoo mOBVmF/mAiA3Zk+6jCyZFx4UQowpF4/nQctYeZ4Sqp0zMpHAF/JZhlfgQdfIGq/yeYZAAFLxCnRW ND1TAlNANDfkC6t0Gd0gpz+UWR8Vm1W3G9gqARhmicNBRT/lrfpYfOjCaWPnoYYKWy44EugTP/dI ooxKRnJSVM9nAKeoVJX6HoGSHzj6ODuKFVSYcTDzMtNVCG1xdXWhf3jlqobpiynHVuuphil3f23h CPeXFymJcp9CcppQsK9CgF+6k5FEh6ITeq9QNDyDrCWQBEITA0CTGUqUZwHADYFogapxgee2n9Bg WQom/w4oeIk91VMaMFN+GkYh+iVFe65fdLRww2Ok9hKmOATpsYrdJB/A1YrIRU4/gATOJUGO4q8T FH9mJWYHmGVR2kgXlIaGiYblubFOin8Uy7ZROngoVI0wiVc3yZlX0KWaSYcX0gQYE5RCKSwXQBl/ +AuwYRjmuDxFJA1NZ2686YEp2LPdY2/bE3wxFVNrU6hIu7nKES/vEi9owq6eixGguBzNiVTSB6kO EKn600beBB890DA/UHHqdItPRil/ySkSSxYTWyGN5BacqYYqCZ9zYaqe0pJLqobKOypXJ7xkO3gt BG1X15khMILVuJl2+2xvditjCgMwADRPoAD3lTvQqv8ZymOO4SBoipsazsCbDHZh5nCCligdlNun PhUmSsu5+vuPyBQnz+eWMOESvCXAd5IewzUfEje7tEiL/+pkEyQFgQkzxfhe97cIlKdPkeSl/dS8 F1KY2MtITGC8YWG8vji9jYC9cHV15bllmHAhhGCAK0OfHKulkjSCIfR5ioIAifEzNvS9DDABP2OU FhAEXnMspPEj68i41dqO8UuJU0SJUxKWxhR29tZ8+3vFJvZF1WQeBWOKAuyQ/DOj7jFc+Tq7E4cE 6rTAU0i2YSHBcjGGnHmGwVvDm+mrXvrBF2KMjWCScqGkI+xWTFCwhVlsz7tru+ggjDch9+RJqxHC m0n/h3+EADaAAEBJSsxKuLejZ69Jbutrbk3nDJQ4j7npLeawrdhDj2mZlli8ysvpLi12j+rqEfDy PvBSusrBlt+BEkQ1r/hzJ5U6OEPxJ1BoTpCzo0/2Mf4UbPDUpZIUvArLsbRBx8gLsWgISZEwwiXJ qpMUwtEMt/EXbJqgjIeXxzaspdNrgNarF2I6pt34M+Ervnb2O1sDWBaYDMwTRFMHm1GUp6XMrVeU ysSnoujKygSdBY2KigoZMA45qXfiHjR6ON2HqROXxgHywIXQxv4UFi3ZTzXc0WXoqgzVzNKssMKL V3v8SMVojB0cGO/ZpYHcOissIFmGbJmzawuwweXs/y0j6MhnqEKi4AoXQEoMECwIgMmZQS3KgDxL TAIT9gzlUG5MTacmKL/AhA7+HHzb02mdponm2tXkCkaEmr/xkr8FPRBB2B30IgM82K6hyBwsAZ0t IX3l0bSmpjAILNH5IRVFsE7gedESzLsgPILVO4Zy7MzljL3KGLFstZkhHBaBwdKNraoorbBkO1fQ y1Cn8AIuWb0jWLBVQIemasODwDG1M3oI8L26EL6ptEO31ASDxr65FyQMZj1OTJv8vA6/hGFf10yb iIn4K5y0tUViyUwcYYP9Vsu1XNacuDfQ6XYFA6NIqD/B5YTkJMz+IRW0CKprjHIRzMHTS7ByjIwa 3P+8jyxJCdvBarjNof3YLenIJhwWeBXCayW39C0IzUsWkwTanOkCMzCCn13OJGCwfyRKsJAriGVD IOAimRyI3IAtseQZQUJE/bktlKitk6ib3pKnuk1FGhBi5yJwYjd2h1p87yOQFMHWyr0lZy2ujBrX UBseCokeEOm6MxpcNiFx27mdsOaRWFjI/rSZLekCNHCGnS0Xj/zROxBJUarC3XzebBXC7W2q7Q3f HWzejm2SPp5JlXBekmCMGnwFO2B1/y3k1osIxCoslSy4QEMswpMNgsZ06ysOdHqb2qqbtnmVuHHV aWO5xmGubMLbdGN8XETWWRyDtpziIu6hyZmiJCH/L8nt1vH6nG7nnHSdhHXXMBLdAVpbKLg4haGK ciOYsJ1tw/oZxx2L5OcM5extvHvs3vCNT+FMx8bYxmBbCCFUCpNEIof9Kjb83zJwztAluOzsc+HL ALeTSgxOLTcbRAMG1VHy1LnpgRpOypToPfSWuRLR22R5aYIu0IiOxSsuVH0DkfkTta7LcHD0J8i1 nbNbi7Xo4y8tKp2t6h3t3k4wvYEs6+UsSS65A59Nsfq+wmhIeSisqnaB5am6axiMfxos65J07zQQ 8UJeBTQwNp4hCrezAIp1SoqFmhSlBEpAiNOyI+JG8qIRe6FsDk5SiRkuv5FLU1J8YiaqtIT+7TcV /+5ukmKiiJxe4naTzrQwKp19YqmYjlx7WYvZPaWFvNGMZKpi4d4Ob4Du/cj3zuQdzNjk3MzYG0mB zMHnjd+u6k9gyKTgRSJZOoIBjs7/TfFsv/Y+QPGfNyvCcjsXpVgdj+zH4ubitjxRUw50+gKhjK3y eNtOnHVRLC5XFPMk+uE23/iBCtyQnxxumdBD4MW7JcCt2z+YiukTvcZUqGXJ7E9jGNo7Pe8GO+r4 HtjTa8JwZYBOYJLIe9gbHcI0oMdJHsiP7bBsuAqdZIbB2uufHfzBP+o6PdqjNPcJakN0tl/SkvdV M1oWr5smqGBRonUsD0wZrmAXxq3dcu3mY8V97v/44h+o8QOiPM8Qct2odfKi2pRNB1PGs4ud/cpH hdw6HV3DtS/xLlD1rgoITDtMLoWGgkwQg06GhTshOy6MLoouIS6RmDuKEImdhpyehCEhC6SkEBAh qqubOy+QqIY0NJo7Toy5jZYLCzYEvykWQhZKBEJHxMVKSjcHB00HV9DO0lcS2BIoMyjaKN8SJOIk KOQkLi/hVSQa6+Ia8PHvD/T19vdZ9PkPWfn+/QD1ARxIsKDBgwgTKlzIsKHDhxD59ZMIESCULFAy WqxI0MGQj0A+enRAsiTJAQ4GqFypsobLFS5//ChSRKYUJEWQIAmxk6fPQY4wHWLCJAShoJQkEZr/ VOjoIUxEnS6ltMmRKk6uEhkdhFUrqqsvNl0VS0qUi6O1NLmgRUuGjFpVMDUpRWABAQIIjlkgYGGY smZNblyZNnjwM8PXsM0g4Y2ct3LlqpST8IJdlSoaxr2TUcXtu3jwHmio58/exNMUB6bmyLq169ew Y8ue/VHkkChDgJy4DaQ37t5AWA5wSbxGD5k6aBbpQPPmqUGoBj261HRRp0xM1+5yMlV72uraoVrN BKmS1FWJiKJndX3sC1XvX8CCIB/dCxeXJeB3oR+/u3VV0IAZOqXYFUxdeeWF115NRBPNMwdIYFg0 iRmiGQkyYOgCOeWMg8Jl32AmQzuaXYYZZqBB/zEaaaXpIxFF/MC4z2w01mjjjbHFeA+LLwrEUW0f NQDkECMRWRIQKQlXwwA8xHRcDTPR1BMptzzCXStLfSeDeDRsudaWcaVFlHZb1rIlI2m99dYujaxi CFBnjdlUJ0bJYombioQFi1iY3FcICQH6EGAVPgjKFluECqqKLykAc9ddQiAgxKTEEHDDpYJVI42E EkbI4WUjwtPhqBx+A9ll4/yXmQacxUPPigK9+M+sqAWE46245qpraw9cVBGSJIkE7EkpJanSCist ORxxMskk5U1ITLcVlYJs5V0hNBDCRFpdhodteN99exaba4UbVCabyDlLUFqlskp07rJySiedyP+5 LXdO0JIvd7SsFSYsvTTqy1587dXXXs00c5g1V3CT2AyLfcONqRJHLJk4KHB2GYnusDMiiq7CapqO MR5U8q4op6wyjRphlNHLvmLk8kUX9SpzQUM0IKSQQ3602xAnBIukSiUlG1OzNUmZ0047QNfUVtI1 tVZU2HZ7bS21MMFdeNpOrW54TUPwZiJAEfXJIfSW5Ukqec5X2YZ/onMOoOd0ZjegnNFAQlqq2IBA BykskAIDCQrBwOGTItzgDUpEKEGEMzwuXzj6zX2hhySkg3GHmV/4IciuirajjrOuVpDpK6eu+uq6 jnRkbw70xlJvKwRndHFQRqnc0qRMCYl2iGT/4l3WZ02yprbbevstI4JIUl3X27FpVrpPqXfVu6is AhZ9u/gJV4D4+UCDD24VEhclpdiQQqMpIJAgAhbAHykBAlB4WMOOcxrOONhUdrmJVZDP5lQFD9CB ZjQiGxk+TKYa1jnwgbtCHUFWQzOa2SxmAwnJkEJiEqIVy3YtWQGylnW03d2kadGazi2K4hS2qOkt hOjSmgrBPG3JQGtMcEuXxtQ1oGQLTtmBEybOtgtt0asorXiXn6jCibiFpVyHypcRZOADI4ivULUo xfrc1wH4yQ8GMGAApYoRAExN4wCaIszDKKO5b3zKjYzZH2TIsQ5WtcOAoBGdyPYhQVv5EYKA/wyk IBfykQ80wABDQCSQilSSIaBkAMha0gp4QMmjOYt3z0EE80KgC71hbU0yLJMh1vSW73SpXzEcV/Ks tpZzCOWVhPiEOKTWiRekZ22F8NP5lrghQW1JHORzARXFF6BhcoaKBLKB+i7ATBMY7nBgnII0wygE AjCDGYy7VGActD/GpOpEBYQM5+YIKMyI5oDoDE1oSLMjk/FokPCMJ8os2Efg2BM4whkhJCnZJNzl TndL0wkTorWv5l3LebVgxJlWibVQvjBbODwL1lKZ0FIqbxfCc2UjnKIK9GVPXhAwBX2UaAhQ1Y2K 4BumBmRYiAIxCgHtcx8CRHC4AhSAYNYMgP+DGoSNA7zAp90cBzzcUgUonBNkADQgivB4QD3GyjQG gao8pxrPXtHsZgRpmcssolWESFBnQRKSA8BKJCOZpGgq4QGTiMMDpBUBWj5JoXQi0Um3oEmGpnSL mvCqQ6nRwChdmgQhvLS3vdVCiFsyKLkQQbZLFGWIVRFKJMYXJipSUUDj00Ch9mO38fmAQC9FwAXc dzjSJgEAhJMpwQLQC/os7kHYGJUGKIaCeISqHa26Yzt0m5napjN0rxrdO6lK3OKy7iSPRO4jhcOS ShYnaTOJLk1ssBOmNe26NJgsQhvKluJhrXhHyYWaksedbZXvk3qbRLim8h0T4ecoVZkXvOb/VRWy iM0/5xOQxjRmokJtFrQGAsYzR4sABSiAwBfIQV5EUJcFBAACDWrQYExkqt/uNrd5XJE6M3xOBAqX R7IyrohHfJCYYZA1wzqrio2lVibxE0oxgVIPpERdJFCXSrnYgb6gyN29cquUMcxWmYIszHGR0pTK 61d2GJFfcp3FFayAciUa8Qrz+aekSU2qoC4Tghc0wS54MVwBGACDJxyuBB5QAAMMXIIwPiEHF1if gx3cBAGag6noPOZu4eGDoYYmVH3+rehG90cSG9q4q1lgiwh9EI/obMUiKdZKHKBWtdagnz8ooXKQ YAoqXfcWNNhal8QnQ/FZ9JR71euRx9WW/6llqy2wPnVisdXDV4rrsC9gRHmgIrzzoSMTcQFVoN5C vrYUilVV/CtPbNCBZjdTASWIAACmTe1pc4ADSUgCB0pgZgQYQwkUekxtQ2QqEYnItwdEajyYGlyn StVHh463vF+zYpYYi7mXdkk/XZK03dXY049o2r5uUS6EljKUp4z1Kc3LvC854XjYesveyLUDUAKP Es3zkmChPK9UuCIsqqiy8PCj8IRblgZWJMEjOK3MFDQ7ByZQQARKUO1ql0CaJVCz+8At4RdMbLa0 lUwB0dnhkJ3T3fXQcLsV3cd5O32eBblqPzBoYqwSsjYlEetZUXLvAdjuxdFtNnN0Ul2A6/841FUr pskLVcq9lWmGqdyWkEk5Jrw6D19T+5acspM8L3Glvn1CVyMCiB+NZvnw/W0HJQJ8ASE8IQIekDYG WMABFrAAAxwAwLW1Pe0IjLYXAQiAfCoDj1TZtoCdsTCsNGBU0bQ+gaPbY6KfTvvaG4QktosdvpnL JBcXJ0o6kRLTnoOLQxnfhQc3uQtRLdhU9yvhqM5htuJUPIcr5TvZ6deTzaOIS5TnEVPWxH1GXlK4 hO+z2tkET3xhgwvEPALwr/a1R1BtD6T5Ce5bQIQ1R8cTuTFEd4QiegRcH+ZhHyZctpeACggQHrR1 RDNpLLEkEvh7AKUTpwBwkmB8aldsPLb/Jc4HQzAUayDYFrMWd6oEPeWDFjl0UD90H2TDCRdYJ4gg g4PAQiyEC6VkBFOkg7CGREggBR2gAz1gAtIGABXAARWAAUlYAUYIAEngAd0mRszQID4HMQ3zDUBH W+W0bup0dAi0Yen0KuvUTgtYhrY3abEDO0nSdclCQplmSc0WUD3xaQKHdoiCaiWXanQnSjrUh2gB Qzj0amjCcHLXV19yXkUGX5DFHhc4HTMYg5DQNI1AbMNkReLDC4zicjBXhJlXc50YAQfGTHkReqmQ DvxReAZUbiayW0fnX6zHeoOWdDsCe+xkhrY4b2poT2zYEhJIQpYUJR1QY3NIh2d3KKV0/0U+JkMB YnIPxxbSh4c0FGTmFYIHF4J4hS8vtDXpFwrdJ1+ddgpIFIO6FCaEkiiaVShxsSgtlwLPVoTWlnnX BgCRFwEmMFoEEHpNwD2NYA7lhCoACDp6VChGAIv54AOtd4CxKFXFdTKncYuBBG+nUxoIgXsUCSwP GIG3gzszgRO8E3CCgCaFkhGHsowIp3x9+EJ6hWpfknfM04x6VUMvFIgQJVGr9CWH1R5c0QqsEBXg CIm/83xtYQQoZ0VCmV08IQVSsD46kAP0KG2dOAIcQH9MGHk6Z033GAA+NXryETkTMzEf8jkZtk7A RYCzmJAjs5AuMhEs4pAPdGIcwXuyg/+RJOSLz7U0RVBjAXddWuNZUEBqI3lZKOdC5GNqKVmYZ/GB QjYmD1decpdwgRgVryZ9hukUQ+ST1SUFdQKJLLQW3PEWQhmSBolKprAASMmOJhBzRAgA8UdtoKhz AsNzpTh64UAx3iAqH4JOt/lhB/mF9yAyK2IrTcc6CclHEMmWuOh1SBIcQ3NvysISMOESOlADNdEs Yzcl1uUEiZIvxUZsnuVjpdQZQQkFxvSB59VXUQGI/AJkN7SYRAFr+aJqaUF+HCc27yIV1Nc8mXCS VGSJxKQ37yI47ChzBuaONQd/8Ec4d+FgD+ZgpSgO2FAFs1lbIHKb6naQvTIa+aAiraf/Igi4TsBZ OiiTGux0oUtHnMFpnMXlnF7XYhNIlxopnbsjhzwRLdWyl/hCC36Jh2snA83YLw/1UELxfImloxal UCtZSmXSLYcCPNJRFjN6gb7Tk3bCWQIyKIliKIKifunTPsyUYEQYARQAf/WYYAkGU4GDlaz1YD+V DpThGOKwVKpngAg5pzPCkKmDD0nXZ3hEhigqb1x3JFwXqMsVgf4EUAHVO4zVo2/Rl541PjIwRS80 mDpUUQ1lUXMFceHFatpxVyYXZH1lNZMgPHgXFaRaqpB5WP4ymJqlX1hKTFWwCZwGoBewZgoQedQG lRwwcxGQA3CGAAzweQQQBARwADql/1OaA6H9CEDrdiJ7OotdmJC/yUe0MhsnaqJJNyI+sDmQwZt9 6nQq2nttuCwuGhP9Jnw6IR2aFFgHZ0Xj41lCCZ9qcondJQnVyB10ZZ47REN3J0wkqJLdclmbKkyg tHGj4JMyaBRRIXgkZzet6l9ZlD42sACidTgMgJqnWQIxZ2C9ClN5YRcKClSx1SGruIV41lQeNoaw mEC0CJEMaacR4U5H1zEeYw6nAjKD1q2H5mKVBq7KMoH+RK67Q3YC1TQ45ARTdEpCKZRQQAN9mRFV ZGrko4d+eRQWR0UqwlfhdUNKqnA3RCZtoVkvZInvqhSPMDWPwEI1CAnhqC2S+BYM6/9fcOtfv0YK ASOKzWSxBqaxBAZTwYoAQaB/OuUpNFt6u6Vu8ZAxRDdoK0toeHo6jRuRUdUiExSLpWc5/IMxbwpO ComzxRUcrgM7vNcSLVEElgQlcphCkHCjqMaDVrS0UKCDj+oWg8l23Skmxjhqyea1IJiSn+S1U6OH quZfsouk6EUUBYWNRXtK54BqqnqOBulfhFILsBACyuQ+zPQEMidt0TZtOVcC3qtmOcAAT1AA7nOV otc/2pAq5ZSsdzQi7qt0X7i4CkQ6qFEyj9uQa0mcUdVhs1Qf9/EeDwYBB0Af/EdHe8S5xTVJabVv 40ocNCGdwCe0ZMcTc3V27zqUKPf/MrSQtI6aspJ6WD/WJQ9QRZrAWIUgSgu3V84zWKj2o6rWV4wQ CVRisD6Jts3jo7jbuqQmKFk6FxGLBATAPusTZ7NqYDJ1xH7rtx6rU00QW29KInGaR7Iovwj4TiK6 aBK5vz1SxftgR5eTOfGRDZFTThmDbtXqdD1SXL6yEsrpdfh2aWulb88Zo3J4XUZRfDj6uhtsBH3J rkcLt0aVjE0hpLmbCzbYLeTFr78LUafEr/CJh+TJV6FkqlGRL3J3iMXWGf61tA4bF4+gTBHbfr+a YLyqAE/4hDdnYGZWWuWboGqKDZh7OayCISBjoR1mD/GLkFj8D6RTnGp5lrJYovWA/xniIED8wTYP lpUCzKYR6qFmaL+GdizgKrrE4YuZRroVWAQDda4DtQjFeCg6yMfiPJSPCqnBSwuBsnzDC5Rm8knl 2ciqVi4qPGovXGpH9l2YgLCMmbCmiiZXk3yehUWePBek8GXBwLG+Kr41xQAxQLEyFQRNgI/MzI8i wg6CZnRzmtEZ6iLtlNEj2pvwi0Am4qBxRMA+JcD0AbLpsK3OnIAYukBn7EAipG++F8ca+YaGumlI 0M3e/JHGJ84a3LSwOzzBZGxR+6OVCskn2cguuaNJvZ2Q/F20gAhngbBqCx0HCxS6IM/HV6WDMrch 8GX6pz586z6TgjhixGDxIwChV/+sAzybHIIhFh2WckrFHr25Hk2ctPis8Xu45pAN7zHAEBDAAxwN j+MNPwcrCkgRBzmt8gQFzZUsLTYca/WGzEITukN2FVwlxVeUOggzFdTHJgeYlMjU24VebZFKiCjV FsVjLXy7lsWorc1dobYtRWvCUS2YgWlF8XpH+Uy3yhTEZi1GszpNMFBNeIGgddHWxsqmgJJnYEjX jTvd1mo6dz2nJ3tUIMIhgJ2PaTpnAuBgxBph0RA52+Bb+YvGGUEPfeYDmytP+3Zp8X3T0ZXTOJGw RLsIuCBFbBHOejwzsAupTLuDsIZKs5CkyKd9lxxkDTWY7GpqgQnhSct2bBew++z/pCyE4egqFHWH tDh6RYSieH0S1l7WC73wKI+iICheF38buATMfwB5y2aJy9f9YY5716tHuX0NGuswGd3ARoUdegsA YQMMIYd9hVgIe449Yr1yQfBgosQFrjtbHJWUaZadzcG3A0zzkfudtK772TCzwVX0MrFLlNCHcLwN 26ntFhRlk3u1w1fUtE874a3bl8nmvsxrBPeyz8Ybw98igkurtHHLrD4wHbAg1gsgAMcgBAQWP5Ry F6x1F0oAuMQKAbCMIqESXLxp1zUOzPXAoSGDsjIeOhZ2Md704ygd6Sc+Z5Ee0Q0CORBjxopmaBmh AZaY6R89VYXKLJeN2eVqlwJF/xRzJUUZ4eXFDtpM28djbs4GebRFmWrFZlgtbJOOrKM4yhY7zLr7 uZ8ox3ZUZOuFzJmlyufaEhZTkS8bnO6WyIWrugNX4O7v0SALYAxBXBd3oeKszloRPcCTQw4bpulH R7m6HBAHuGhG9Yp27oqapWFSHPAHNG7jpBiU8QwRHQAEIO/FKukQIg0zcA3cQOp4DaKDdKEaKoZn SVXzzVbkmju/HlByWBS3UHx4jO7H7rQ277S3Ts7Em3wH19T6UpKTqtvVOD5J+6gZsZ9zXuZ8TD4C /qkzFGpOQH5/Imx5E9CFMsX+hZ1N858GzX5+c8Tzo6CAGw2j9/FjSeNj2Okdbf/yq2dHfJZ6fHZs q2h06NQZtMwYDeNlgv1lZH8ADCrkOkXA2RAZ6J3eTF7rA6kizwtiVPWzmYZpzWLlORGjZPeR+b0v 6M4WoC3noEmU4G7OsfbsPaijjVly25LOD/7gVaRXU/S6zzvnTyueZk6ComRQkogf9wFAcHMZ5+df Iwy3vy8gr1DQPNFgvkAAHUAAjdfKDqYEEv1TPtUwG1OA8jsatqzLU+yFQ1d0Q0U+rAJOFiYaelVA JHAN0ZDSIUVnD5aPL8CgqQBUdNMhCRRv7D2QwwTIshLTqfOzvwcINT+DP0WDSEWGRUiMO0g7TE5O kZFONJdORjRQnJ0+Rj4aoD7/nDKgGpw0RjKspjI0TK+vq0yqs6xMuZaRr5GXoL8+PjLDxUajoEad y1CfUMmrNKyXlLWTktiWljTYqpfEzqScn8I+NFU7O+jpTSFNSEo2CwQEHQQI9PQiAjf8B/8AD0hA QVCDhgcIExpU+OBgQ4NQHCac+CALQigIs2hEeLDjOGWelmmQYXBhlSoGURJcqQEFiYIEZ8y4ckUC TZtNmvwLoERAzpwHrvyTMHPGwJcoSk7UyJRpxY1Om0qdSrWq1aocXb5MWSWpQ4tXw4odK7bGgBpo 0f5Qu7aQokSJGD2auyMEE0iSLnGzdKyTKnHlwIFq1mmVpsPKZnkz4qTV4Vfc/2rVinzJhV7IkL+Z EqaMHLPCz8RFc/XKcmZppjFLkwa5Cg1zwlAJa/agnJN06K60Q5JT3oLf+e4RsIBAwALjAf41SW6T qFeJHScqLYlKIsWMCacqXMjRoUEfHGPLUKnhpPmVSV2iMN8ShcwrMo2+WP7zgM7lNwI0yX9TwgsJ JARYBUdPgVXRgU09hSBZDDJYUUQakCDDehMKaF2DGGZIVQ08CMKWITXABZdccTXiSAjpoIjXYZj8 ksox5JAym2fCyNDMJ6ZIo4kssKy2mgzbTLZjLZbppZcmr51myo6fgPTZRx+dM14VLlB5kgsu7OAC CVVw6cILL3xJggsSVGmeD/9VhLLQQuWcpE4Vt13hjjsLNFHnPPjQs0AKv/0WAgR/QhAmmVutuWZD D1E33XWMRueoQSylhx56aZZHKZddsdQSCYpOehIJ/gUAwagQ6GfqcgTo94J8o25ZzkFQOIWdgVBZ dGCBGuZq6wPEPNBMK61EtKCuxI6FVodpJTtIiG4xMqJc6UR7F1+bLLbJM1ByUlth5SRDDihL5kiN JrUgKUMtsqySGY+XSWNOkseE21lhgz2JmCyYIWmkXtvs+8km9Y5zYznCrLODnHP+ZgMBC9+DgBAI WGBBBsMRwA8/+v3zH1FdrqcoSuUpeiijJF9H3UW+fiRKjRF2TBBS6skU06T/8c10hXu65XTDzkoE p0QTPSuhhH43APUCQV0pNeutS5EMVrEN+mppgFRvySl3UGd9FYiEFOKWiCXK1QgSKuJ12zbPWHvJ Z7DK2MwosjkJhSlvH2MNi6pNJk1jP9JQ5L6v6TjYt8s4w0kWb/ul2I6TYFLJbelsc/Yl/y7m9jjC 1Fawm+iAOZ+dAfQ5j8UWiGCBABjvfMNQNoEpwUAgl4TCeCKPjCjJtYsM7O67U81S0u3JPGlM8dH0 HkA/BU3Az/v9VLRyQQ3PXcnU7/q01lg1NN5KvluXHfbga9R114IYQoiIYp/ISAhlF6kvtX3Fijg5 F3Hi7dvE2D+LuuOysqOP/0CyRix0VA4fTeYVxnjGMZLxpAZyogrjOUfBxiMDEtDAJV0yj3kwdaY0 VUpNBwGP5mzTuTmFYAEnBM49UoCAFLjwhQsIwp5kCIHVNcEmSOkKShIlMkRNbym74mFBZNeSIg5v JRAM2cvWg0EIauVLTHBBBQNElNe9AAJNmE/o5hEEBuBjdCkgwJ0I0ARSgWlLVtPAMBjiHQIt6iAb +V74DISQjgXoBVSUUMtEOMfwtYUtXYPLD8RGyBRFawf9Iow3sLUMjYTGB7biBCryV4q+4Ahc0dDX vs61mgH66BstolzmmvQtwzUQcU+q0SjYdY5WUskyrkGTv14DHodkrjYjRP+TebC0gysKCgJ9EmMY g3APEYjxNzIMgqjsc4CNcZA7jrqdr7YjkSBSxFDPQQnIThIykIXiJQNZIlLGCaqXgOoK/6lJzvTT M3oEgB4WEEJwlreAoemkmRtDz3QUxcPaMep6WqNmhFDgHEopLSN91JrXBpGIry2CkIU8ZF5cgDZz QEEVDnykRUQosJTFaIGr2RGLYuFJAILyRzVajdtqsxn7NRKVjYyVTOmFmJByI3LZQKQ28qKjtMkt hCPMJZX8xktBXdFOC+DJPJVwA6GpTlQQ8A+AuESSjuyzZBHByDRvtatSxGYYoiCNvFwxEkhxiWoB Qk98uvIemrj1HzvbT1P/i9ZUiQntrngFiltnMKlH5S531JOjrhIyDCe6R2Z8fQ4QE5o1HgzCsYQo n0NLNKKypYMGWtLLRVOR0XFME6bleBspNnMMW9jCCOjSSzVygS6+6eVvqjDXJZ0UP7lldJrDAMcl iWGmk6BJl+ZBYDlwORERjpJgbTqJE17QS/YpLJgIQMAFpBtdPkVXjMhp5uu4FE1pYic7TIsK0xrl Q6saqnZd8k+AyFSll3jOPvoBCtCUYIF8xFMIDMhvfiGGX4jlI6nJ+U9ikdap3PX1UNbxHq4cJMkx hWljUg2THhfCWPA1lKGIcNYiHgotR+g0Wk6gqIj/5hfEwEhgmCNMbnOU/79XhAYyfQFpK/Y2Ldbg 613geC3lXEFbumXUtrVZRW799toq9bKXV8oSllzjSgmODLlfDUUBlUulK3xJTqJLqui2KIDkQEBj U93ho3yoVa1ex8wU2VV0MkUdmCTFd/p0CaFcMAMBS6AKr6szM++ZE57kRAAOm2cYhfMbo0W1oM/5 a3raE5NC/bWNgrVKcYcxpi0N9M4viR1JEFrhrI0vkG/JcIcPGYnM+utwnS0zKVI2txlhVLSxlYb9 pJHaH/EISBStzNo+2a0lgWSBfYFp4ZhhERXPzV2a6EaLhBE4wNGSYITNZSiE6oTcNNdOOYmHEkZ3 XXrgIwDJSY5OtusVN/9OBM3WC2+tCjReipCibW0mHqjC1FaaNIEmQfnHFciYbaFJjABCEAIMnvCE Cxic4BdgwHS7Hdd7wic+GCzwEQ8rvfNK55/aERkVN/YCfBtPn3DsNNSgIAivNRR96TskIu+yAyMx W7PiaCBgOuErVE7TgaU98dxyblpQpo0a7coXOY6U6k4gDqY2XwaSWEQ5bryr6T7ol14CYw41hnaU AxvYb3WppR204yfBDLsY5WtnlxwU44ireRzTTD2JEzHeL6jCWh/ucX1fgWdASx7AA/4wGDCA4PpN +HWnq6d6atc//+lKDovYnrRO/MD8VDAQv6t4tHoOwjUhKNK4GWmRawj/Ec8CPYdNJC1EgnjqgWPg 4ZpyW0bOlJGm3K0CY2sYwDFukzZGdjRUwZSZstro8uv9TI++DJfzskojxpLf6qIl5cMGyjNfxq0u aqQsSaIddfkJ2IFTp5+sSibhHOI/V6/VtZssUQ8ZHl8hzteR6PAkM4D/TNKZ76DQRHX7+Rk9IObF 6Bo84f8HgNFVXd1XJ/CBeBKyeVqxHmmFFHkmPFqBFCUBPItyHUEUERmUQWOyXr4zHtw1PZ4HNecD ahtGSCHQCFGESLnWbLNxSkUXU6mkP6blP/+DJJaQGZNwGkkCL4OxSL/HDPcjU8I2fDL3crDhL083 dVeHXJrDDNihdVGH/yXM5Q690ScLYwN8V09iVDTjFn+bB00EAhXBt1hpRxUE8hChVRsj4TGM5h5s VTz4BldMJTTDEU/5BQNTMAUR4AEeAAAcAAB82Id8qABT8AQMIE9ixG/20XEbM2DukWeQ+IjNYRTx gWhD1EP7dF5GQRSV2BwSIBBSRTUnsWkhCDUb9iwlOGp3gSK34WzvQgrXUnRIJ32pJDdClnP/ImSf VFrcMEvukiO/ZiMOJBqyKD8foQnDUH26liVGAhmwRUtpIiOXIzDgcUu14RrV1jm9lEU5YYV6QjRA IRBGYU6ZFnlpJisJcSNlJhgGQRJJJCFVNUUCsh6Zcljg51Z1x4VAk/8P/PV3TzAFHqAAERABClCQ BVlw/zd29OF9dyZVzrGJREEClEgQr6NOVbR+SJRoj/YxKmEUKzGR20VuVUVhC1aKDQIFijBZozcX TIAiLCd1lEMYnZUFcsNqNfeCtfgaPpWEgWMOmmQOxNBsAOOTxPgZaeeCqEZ80qdGE7g5m2Me5+Aa HnQmBDOMo2QrL5clTeB1SBVMKRBP+NAzPBFf/2BOrwMgbvZDnBZEI9NmBkZED5F+jGYeVRSHB9BU d7V//PcEgegBHNCHfwgAe0iQCJBfCBlG8gBVEiZhaEUCeDRvoHI8+VYTNeMe0rNoPJQo8DhFD3ZG WIIlRvUfFoI1Jqn/K4JEWRClcirYL8jIDDEnhDKFCkgJfC6leq4nWtDwGppEfYqEerfmDYvRUcSm lLOJSsLmK+DRDMDJbDa4gjsIjVX5mlp1S3HUJnXxAiHwAvNwJ/PQMNhVJ+AGbll0lgIGgRHHTxd3 O5G3JrEDQZwCMu7ITYwWf3p2E/ahGz1TX/unX/8IkH0IAAAKoAOpAAzQAdJFePlQH/BREzZBM0ZR E9CDPEJhkRA3ce1hRJDSho7pOYJyRwCyXaOJNSVZmmOBkhomeqN3Gy3JPi3HU5olk6YUfML3gqhk GJ9RL0s3dMAQk2vDbNT3ip+0OMRmlI4Em0NKnLRZoy6iDL/QN7tH/wzRmDmfcRHGhRAFFHUp0g4M c0xhNIDeZjFKlSqu03GvY3/vATufInnXpDSiUB31YgzvNoH1SDw2kW8SsBz2AU8Bh1952JcKwIcB KpgA6gERAIAISg9OFY73SXf4CBCrU38AoU7iKDxt2IZHxFdnGZKvQ1Cvg2eNGTtfQaIZAgUk8lBh QxfS4qIvSo0vpS2pJmzCJp0X9RjJYC2akArUolkPoC+tkFsL9BkAg5NGSYShQVix4UqwJJXnAEsE E6UzghGFQzIFpJXNdUwNkwLTxScEYEzfiKfMVKY6MROTOBATOD3R5E+jkFu/UiOsMGHpIXco4AIQ Go730QR7F3AMAP8DHpAEgBqQfumHgTqQBEmgBsdCg1ZoAXB5o+I58/YCB7BMito8OqFOxlOhjsgV IINWn4l4VnR5m4pWYtZ5ojoWp2iq0PIIIaCikeOcGOU2r0l8xPeDRacMQfgRnuEtgwM4FgWLtpBb yWgjthWswootcjOE01kjzMaTlqF8THYJyopcU0o9zMZ8WGQDvmGwXkoALEQPgFZPWlY04iYQzASK 4cR5bWRetcM7I9EKVhNcSESfM5FF+Qa295qveOifScABHFACfqm3ASqwA2oC/XewZJQxDruwHttM yBMQY6tvAlGxNcOJidWAMPMSZFJF/wEm/yAoDCqRmGJeIzqyYRH/Fyh3spCQDpXQi6j3mjdptDL5 qrXZJLbVGTBCs3/xc9UCnEaSrrNFOEM7tL9HszSbNjrYsrzmrOVnflZqTQ/ADdmZfXaCrQvnRQvw MN/2TvCUDxlzT4sYFHlmTpfoXQpxElZaDFZHQWBVVvHmhjZRdw+rBAEHA/IrvwCZtxxgv3rLAoE5 qAF5kIZ4iP+GqELTPFzIuAEhsXSlqJ84sQ6buZSJMw83E+LIoJ/4VvbhcEKBR1OllqKLIWJTIunw CKqZDiu4DbaFYsbogq7rqrFnm9eyNrPao0L5F6EkSuCySLfrQCssrGnnUTcCDEjyjOcQYk7bSlUp fbhEGOl4IObQ/3wuwD7A5EI2gK0IsJ3u5E7LIZbPoxw54bBCQZ5oeYntiBLx6H4bKCBVgyWV1rYZ BLfuux/3KnD6hbcAeb9+C4iA2L8Gp3DZ+kU9o3199mUOW8E78bD2wYVb3ExCoTFB0XGUKDMFVYmg AsZgLHfkVo4ns5YdTLKmarKiRjZ3wXKq6w0xGlNHV6Qp47rXUqTAxxknHBq16hdGwpt7QTk3vGu8 +SQ7DLPGqJQxSxvQOjBB+Vsf9LTOCrU0V42aE221gVl1wT5WmwIdcAE9cHALV5gXADF5kr2pMjRB 42fwdR+imWmjCKreczLUkaZrm6EZCcHKAWj9xQB5OAX2ywL6a//PessB+JzP+vyHAfkECiC4Bhoc 4FlGBj0qy1EqCt1n+dHQ9KG46MSglIh4nuOQEAYqvyQqvsShV3RFG5zJobvJVHGq0YIETiDCp1fD h4FiiPGyMnVzr+eEMY1qPQisuqucewGkOG0JLwfDRBeLQ6rDwYdqsOm6h9EvSxtiFKUlSt3ULLuz aEZcyPkut/EnfrInHdAB0mxwA40PYbSdShUATXUq95Efp6KYmVpO5Pwp26XGXbKBrzQmTIBHaERQ G5pFOaMzxBExESME/bmv9Xu/edy3/NqXeZhf1GW9+bBtQFPQfZYq4fmwp/LH9AFuitvAN9Qlkese ZOofFNy+i7z/yPZHE3ikWBci0px8qqTHBCh7WZiQF0gCy9NIcyEh0ylzk6kWDDoqlNSHNrOMevvy DJYwq5wFg0JNrEbLypxVOc72jNk4VCy4asp8btK4fOxzQlMszVttiP9XXV+qJ9u2PNibPALwMw+L bfh0Q5k6AzCTkRDETfF5VhNWj++X11m8d/Tbp0nAr3mLv4CIv4IYiATJ3fwFcPO0PD9hKvZ03gp+ 1vdxwd2ruY1YZ/4hjg2MT1bUTPL1rRIQVVRzUKhNFhqWiiHsYc98WTwF20BtyqdMbPUT0zscEkno o7LWpPrCInkx3L8AUre6WX5RjDo8FTdafO7S06fBZNBHS8Es/z8wHRE+kCUnhAQ2IOVbnXAA/b9e BDFd6k5e62c9sW09U086A+bcO5lFcUSMtinqQVXTATIrkdfYOxwCd7f8fb/6m8937pcswK8AkASA OAV8qwAwIMcFvtjdN971Ua+NbU+NDcgGDciK28iKfOGHK9lHdQBfhkUNbFRhpjQhLhYnGFGoqpq7 eyQw/LtlhpOxRzC6VUBMZ+OxqFkvvOOL8coxLouOZLT7EmKRIGKoe7qfqdRE9bQUpEYNMW0OsXzP /CchYLXOLl1buqWhgypJtRyOrej2FN766OgPXn/jebiZTiriLmHkuTHh/Bv5ia98OgV4uK/7nQT0 XL/7qgD/KP/oBIrY/XXgA+zNfcboXNxn2neXfHbBD45OYELB8iETrtM6DfyJdmbwmBogI3mOn14V JqraY1PiIqzjTZpRM9pAyBkarwuE/3JRxMC7BAPEuvvawJkJ1bJ0TIokpfy7vFzURA2sSmJSonTM xvodbyRlmHXdNpDV03wBJkBwABkBhvi/1zyA3Xbg+ukzWRzwemUTlXmJBLZoKZHOSCQUCa6XAicE 81zH/RyI/OznHsC3fppf7L6nABcxB748iSj37XRXY7nYffYb8UXW2odFVP85D30fWESWgqJeXrFD FS8WZDM2dKEi2YAN1Je7Pl7c2nKUMm5sQzfyl58Ki+FjDAT/nK+uupyQF7ypL4TRmjxMmzef21Kn ZJnVdSJ2DbvQL8NgLsQADsZupX6Tnc61AFbr+9M8zdha9C3kG+AtRvoh3mGen8HBThXz2OwUXznh H1nE0Zf3AkwAAVHkYK6DAoDfjfAUT+J/iHY7vzAg6H5nmICXX/fuRRZwiD6DqFqI4Nkm3qki3tKf xfnvfd0LCAcvgi+DhYUSiYqLii+JJIokJBqSMhoPD1mZWZydnp+goaKjpKBQSKipqqg7rU5OrbGv TjQ0RkZQubq5ng+5Pj40u7rAUD7Du8e6tsBGNMG20c611LYytbTZwtvOwVDS0cjiWeLl4+S5wunV 1S5O7vA0/y7V1zLAPvbFPhrG98AuO0KEsLHAho0OBA4yMGFCQcMLEBEgSEGAIoEFF5VgJMCRgAUC SgggEGJBCEeNHZUEUKJSSZMmAV4ekDCo0SMSKCTpJFEFJ4oqP2kegLlgQUgCQpIyYKB0KQwYCqZI VcAA6hQFMBgoUPBkKYORSUd2HHuSwMqzGtPGbKISJIEmII0SELDg5domg5oMhfkCJt5CgiAMHXxg KARHLgrhlFTl0iVMpSJLnizZBpIiqwKmChGQs0BXs5zRUmeOWD9jp3898OGr9DFm0WRMozbt1bVb sqOx+8aOWS5n4kibQ1daF3HSs/FRmzdPHo0qVZ5Dl/5cA/8+ZceKofZRxUUTJAVtVLSB4MKTJwoi RNjK4MJXiRPhW0TKEcFHjmGRJuVo4X7KlDfIdAgikuSUE1AoaIDCggvO4OALVxTSRFFujSUEWEIw IJVVTz1RggdOYbUUAu8ldSFS/oG0klEvoZTWWzcYJWNIAZxU10twvaUXjgdAEEAhAQh2CAR+HRBT j4YNWCAJlkC2CWVQRikZFEVYpkosWMaCxA6zhJYOLt9AU052UKzWT3bK+NJamcYIg90vxnQTWy3O GHENbbZAQcs3uGxTCxS4AKcOaegIZxwUnfBy6Dm6TPNNNs3JswMTk2JJKQ1OMAGLprW44EIVMvAk A3SjPlf/S2dIGKTqQR3owJAJEKWQwgUdpEAQRxgtEMBGuaL0Uln1lSTSR/71JxZHOcYU5AsQHPaC p57uxKwELiTiCLN2haRthR555VWGMOyXoUn2IeARWf+htJZRManVolk43sXjIMoeQghNA+ZLU0wQ OggJgQxqILCTUhZssChQdNDBKle2sqUss3D5yp/COBGmMqgh82Yz1wSDJpzhNGOEDyNLk1tvNMig 6Wi7/cmbxdsAWpqhipKDzs2KLnqcMHJGSs1oMtwJW9AphymwdQIDUwUw1tEQkEEK19qBeSaoR4F6 r5qQwwXlUWSu1yIFi+JYIYFln0hJ3WcuSPHi6EgVEhwI/x2oGjTWGCUC91TFDNe+pKtKNW5ELFNJ ZSXEU19daOLiYllwNq4gaRRgSzCllS3b3K4VU13yFjnhrk0QWZfoawnSY+ihv1Bggo8d7PrrnKwS wsOsYMlZNrDMQilw6QzjzTBrNir0a9+gVss97NTJTMl0OnMNE5rKwDKddBafZ57DhFMcL8Tt0r05 unX6iqeZtkIptJ5CBy10PnyKD6mgRie/CxG+JJ6FXV0Aa3vufUVRCgjIFYUodBH8oAtDI5HIhdb2 LXORBHIXiQmRIMAImsxgQRK4YE5mYC1r+eVITbjBi1DUHyV8xEQpIol9TFIWjYTQL23LlryUlS22 6GUvev8xRGHWgi8iDWiC2CrMX2giAcZA52iYeBLslkiZVKFidp/ZjMO29ApK0UI0E7PYL9xkGn+E qR8jI9nx4JSdbSijGtMYWRrBYadaBE15mKqG9XgTjphhbHvb+94u/MQOocnjHTuAxzt6A4xnBCNo rPGHqQAyO1ZBpAfngWQEAKCerWyFa+7hWtg2sraw6Qc/YVmciRIYyrX5ByO7kiAF9caTniQIJ42B JYM4KIHCDAZHbGGJLvtTksWVxD8sJBuLlHADHU3uLnGhnEtWwhaMtO0uOCQEYJqlrFRKMHUDcoFO WNc6JTLxm6SQXSqytIOHRYxLtJlYnwxJJn+UjDd8Oob/GtFkSDd9LHxwpB4bc3MylFnvGXXkHR4X NdA95rNTO5BUpQACEEz5DKApk8E87KEBRAI0GANZ1dR6wNGGYM2jDNkaJv9XkZIW0EIeuVAvmXIB IbR0KRlKILpUdKNmqY4xrZyE3o4GHQY1iINXEKIQi0lMlpDEJCkUy1HQZUMe4TJbG9HWjdoWIM19 0C+A6VGzQic6IoXuR0JyBLVm0EokQgacaCXFA1Qxu4ZxphVvhUUrMMWy2YSJnWjymPXSSLJ/PiOM XhSZzNSYPNrcJny94U0x0Dgo7+Hxe3pEVM3oaIvRACSQ76AUE+YRSOfMIzp3+uyoQMWdpbEPOi8I QUGa/yCeDngFIpW0pAIyCZ+JFBAj83lcfUzklSkQ7lvCUpwvO1IUmDjLEavr6dHyBhQFKahBEgiq LXPJksgt1YRkaxEzn3rDW+7IJXBRyYRcEqOWBOiFO7KL30Dol2b16EeFOC6zrqVNbfLErN5Ma1o3 sdaBIKGtVooiOeWqDTzpqR/YYKc9lcdgMZZMHxTz2Mh+8xrq6Umft/gZY6sRjNEor6B5LIfNJIsN I8wCGy5ggkMJ3Nk4UiM6hVya0uT3HO5IKqMQeQIkI3kB9UwSAACYQg6WwjX4UCi3JzoXUkjJW5gS TrhKCSZxLzI6sZIVBUUESmN+IgNuHm2W0j3AFUK4rf/qnmSpKqKcvGx5y8LkJSYqiuF5O3fVGL7E vRP06iFCV8u/OIKDPHmAY5Ko30J/Yq2b+S8rHlbOLcWVSxIbzctmgR2X7XEZfbr0LuxqiwlPWBpg Eo2GM1yN6cHMZVwUKIiREdkRG1Qbo+kSObF0Yg27EWU/m6INftADE/SAAjwggquuRgEgr0drs01B hloqU7Tlx5MLNFcCSTSuJjNlRCNhwEnfshYIQSgRPjVQTxdUN7vl5ApBfaq2qhuSdylBAPA6UmGu UMvoonvehQhqunFEXn6vSLzPNBIMvRq6HeKFSLb0kZhfgu4rOIjcA8uvofULBSu5tdFamvWJWTax u87/kUzDuAWYirdHfVKssZRNcGERCyY/ecxNMVs1zkoT2WXQqZAo69If3QeNi1pnOkkzLWifdpDy PGE9EagakJcegRJY8itekXZYSnIs+ESkyE3JkLfGxRSzJRlXAJ+Jw/e25XErqLlfXhAJOIjDELJN hGNZALx3NWd6O8je0c1gUPMuxHi5cEJNoIsL2xWAAAhAAIWHCb+UNcG1+Ejxeb6WWBXxk4hPvNBn zYIRFN3W2ZUTrgGZNWiwsQ52KKMbF5tjHUtf8t9Qg+RifNQrGKybK/rJeOu4h/FoFuLHSrZQ2MDd OV8RC89Q6nbzACRzdvCsT3WnO9B6QUAKghHyQIQB/09gSGy34oGnS+QrHVnbi5a6gFlNZD6e7OVR VZq2/aArVzIZIi0NFO7623sQfddWCNnFknbdQN4Oh3fRJWYQQoB70XbglSNXRUN2oSsBEBj4ci00 YVOIEYGqUy1FpHaNIWiEdnmuk0QguBrA8ABG4AKpgBkWtyUq+Hn/lSXT8xqCcjx85Cd7QhuZFjOk MSh5coPsMDEQRSe1pnopB1BtIhy8V1CGwgmSVXKIpXLBBxrTQ1lSKEbPACd60kiswlE9QAREcDUj AGQcEIaU5HQmEHX4UXXkgiGLUyIKJEqjdG1pQxaolEOIQG8IwjocOGgCkxMk4HBjFn9v124yUiRi Z/93DnJ39NZw3pVeQ1EXfUFMOCJC1GUU8DYX6CWJYvaAL1Q6Q2EvYpZBD8dNEueBr1MmSugDTMAw 4yR6A2Zr1AANTgANMQiLmDIbM2hpjoIyH/Yzj4JGXeIDPoiDHRZzqmZpq8YoyCAasgBpcmU7lQIx EFNPuAYNJqgqUzM12Vc1WLN0ALAVT3ABBTAiCzRTHWERa9Ns5uI42RZl31Jtx3JSzvQSEEJvjhAw zXWHkpB3ThVCK7FM7VZV3ZV3AYhuA7gjezFDLcIu4bUS3PZUZ/GA+CcTMyEUEcJmboYvcaNBopgJ o0iKk4EJZXIJ91BRACFObyV6uRMLdCV811OEuMb/DdRjYpjCJz8ze6i2Tr3YhLYXR07gKDFIDLon JrenaUdYHMTxPa64Yu/QjM0ofZ/yKaPlfHMzA1VwBVUJHTNQPxuxODAgFVPwBETQfR4wlhviFCMC Ux2xOPVxfrIiK53kNWkzbe3hhqNEXOwSQX42dhpJbmDmh9PVEu2mXbjkZgSZiPZ2b20XL/A3FBcx IRGESpwDeT7SLJR5GJV5mfNFmUxQCAliIJZwDJzQkR7ZC0k0aILmZT1RNyTgAhDAMJyhiieJJZgC hcIHjHLER6emG3XSk3hiV0N4i70BM7a4DSxDRwhGcjTzenN0jEuIDDxzPMzTYbHGkx23DL+QD21S /0iwCAuXATUcRQFEMAJcyAFgKIZA5gHq0RWvlSElgZbjInUr5C1Mdm0lkhWEs47pCHYsEn8ZxE0B s4dqR29iNl2Vk156IaCFOIC1NG+JaKAwdBR10Svc8hYtcZeFJ28HaRc38H+EoRdC0QQOx0EaZFaj +TocGZr7kDep+F+fwYq0NjHAOFc+GGuxiIMts1fMAzNCaHMX9pJ6Mp0uxmkfh3PekJzWiXKaNhx6 VGrER04sKhCfEZsuWEWalVA6RynlVARV0gG8xoVEwAMmwIVfSEkAQARJpzXy6Un8sW1ohhJh00ln I20UsYbVZkByGH+fiFw8wSBwk48DKlRkloArMf9dbCaR+6hexqQr8TiI4tVvuBQgf2qRkUoYIdpw tKRBh4iHJ1qiCAMoIvepgyVylhA00NJWqIAZq1hOnvdWWJo7BeaK0/OSu3hgJ+coXxKFNloxCQak LvZ6wrhYJJc95YCkRmkOgSKTtdaD0zgP7zM3zno3jcEdAAEX4oF96CEVHlCeLMAC5nkVUlECUuEU hvNkEgERsBIRSwYW+vFbZ+ktXbds0ZYS+3mAIXpBh3iIiRghYSaRtpSIWamvQhRmhSEB3HVeC8kr rCWHu2IWERQAIbArxXWZlBkkNoVnzLJZnvIsTWKKnBoZHBmCILhcgqYgPpFoLZhxWSIQTZpQTqj/ rBYTjD3IG3Z1ajLLpDF4csbJRnX0JzXoDdoJT8w5UJD1T7KWkq5KfAx1Y8nHHJ4SSJfFHDQGEBAA NTmWfUkXlhGAngBAnkkAAEmwHlZBFQt0VEomEQAEQBsBQaYkbSRCIu0aU1rXhvLabguHF4lYE1mZ QRF5gDd0Q+k2oNyVgPGHFm0RF3LRK7yiEZpjVQcXGEYiJG4mIcsieTclCfYlspnXsaGZCyELBdaR ostFKpZLE6wJpYrWMCg7MS+6cT9jmzTKcV2ym6JhPTu5kjeam7S6Rr6qcvCEPDxalHd0jDXXg13i qpAGerHAKRFTvLWgvOc0fR3AUdEbAV1IvT4G/4Zba2xYoZ5i0YbSNiz3wUmdZCLr6q5aZ77ZNiIp oX+FcRgYmS8VyV0EiqdC1Dl0loAYgWYEhADiQRErQVRNNWeK52bdZUuJMBREdIjSxBgbmbmamygg OVieih1GwA8S5SlU2ZqqSDsoe7yhN6WV1ashzHEaNp16ImpM2mmvp6MzWTGSZnvDuRvpoFcUExw7 GrTJiGu5w6TEF2ssy2H2cA0wNipEDH2O2QFC0BVPMJZhqa1h2LUe8K1PYJ+EEy5R9n0SIRLU5lJR B1Mkgh5c4RRfiR5EthTn8a7owhJTlUN/+BeL2HcBYrB1y13xBxNkExdIwRQQxBHoZyMitC4X6v+A qON4zOIsk9lDh6FNlRdxosmpIdgJH4sJjuG5egMUL8CiyOuMs0adTDmjJGy7QcqTLYvCvuknwAEz qNzCcYScOHtRbbJ76nAcxUM8OAh7IgY+smY7sRmlLdoZrtAK0OK0TXtZrRAeNiAEx2weRzcF6DmW YRiGZJkeX+ktLwV+7scR92MudRF+4Xe+7uoVWcE1+WM2YfMR7IZLa1E/8vZUBguJgjmYGcoWDKlk FQIX4ocR/Bs247dd6TWZ89UjhkBEPWItnMmHk7Bcj+HAHbsLI1s3QSMwnns0ltAYo7KaNFEFlzxO AlE7r/l5Jxl87oBONbmSxVtrsNuTJ/abfNT/O8nKg/5UwzoatMSTMRnzs9oRvMN6UJMGhaLsDtqp i716J5rhnb9GvURAnh4QhtsqhmPZ1B7gdF+ZSTH1ZF5MSgnUnkzhIV3hjeG6FFfRlegRzrUlEhSh qPwHZ/y2xnFMx3ZGZy/0H/SRtnFXH9y8Im9hFuJVTFZVOobKrweaQTdx0CDZyA/cC5oAspQ8N/dF AivoaJ3noh9cRSKdlME3GsAgab1agzNI0wc2G8z7kjFDs7eoHRqzHRlTha/hs/aE0+PQKLsKhbOm KfCAWfDwtIO0c4B0Y6wFNTp2dFmbrUnNAdx6ngDQ1BFwFWFMn1XBrgqkxW6rFNLmLVs9zV7t/xVP sGzvkcUVEUByzRYcAWcfUSPKJAAuQd5oQQAGa8f8PEI20s2dRI6Kh9ds/YASBLgFOLAV+QJ3l0GV UAUKXdijALK+gNCx1B2T4AKdp4KMBldSGtmn0hzAWNLCV4PJWqO7W5w6uCemhqs5+09CKIOz/DE2 fEZkdCbF4RvZ89q0GWnQIg/oUw8XzLQ0NuOdIR5J0QHn4dvc+MxPfJ5N/ZVTAAPpS9UxxWyhdCHY pnU5QMZd6VtmDM7U7FLlgcUOZM4GxN5pxiJoQXgvAXduoS1oEVVycY4WsjZwgUpqgSzKsgCTGSQD 22emE1ZuhmWQ0BOM0ToArlaacNiS3NB3U/83B0IJp7tojhZ6J3mSBeYzyxtpdMXDJk2rlA1QwajT M9hzu2fpVViFZNROGqN7Y8LaewRyy1DSdFWl0JMp2aBZmhV8zkELguQOmLLRl8FrXGoCFFA15Fme z1zcxR3FT+Ct6vkUVKzcLVXsu9V17rHVXQED6ol9QV4Vzd4eZrxA6tlS7uc4KIIRwkIW26KADFkj JwHuZJEiDuTe750RZqErDPt3LxECoeOA8TUg8phwiIAgkoA0HZjnkgGS/BAnecMT2oTRivbBpotx GteMCdVhmPUMPaxzPfrZLpaTPapyWqR6MLfZ23Gbpg2UwngaH0PaySDqxfE7PYfqKta8NFD/pSYP PZMSjCxT250S81g6O1GjMD1gvVubrbmevSWQtczslVIxxc9+OIeDbVXtUnCLAMx+HsntLcwOdUrc 7OiR4/kDhxiSx0elWzOVIhMK1yfEH8FkjlJ2LLkyF1S2n6nUValjOt42TZNX5yhgCZan72o12LlQ UaMaKt3RfAB/ulqC6L+8sse7lABlpT78w3TVc7abC69wYR0nyih8chr/inYUrLU8Rmb0RZlOy6kh 4iD/O5xtGtxwDfNw8imTKdDjKZoZLfW1Pq7/fE/JSCGgBAahdegR3EuHAc883GOZBGMJrkAv7IUT zt9MbczmtgowAWCMfcyPfVSxFFyx5Aww/2RgfMZQJ45u+31Q50uO8/UnxPX8YR/Y/ktkYdVfl8Vr s7DpviKfMyGUWRSFHHnVcgj2tZoFIveXQPelELINDQgaKChVVSQuEC8uJBoQITtIOzshIZGSO05O kk40mpObNJc0nS6ZnKaco6emnZk0PqqurKO0oz5GNFCjUKmxsLm1ura6wru2tFBQsMk+ybnEydHK yj7Nr83Mz8Ta0bCoTkzhO0wu4eIhTOPp5OQ0MjQuLjulLvBO9fieL5VIBD89PZ5EIOIBAEEALFhw 4MACgIeHD5N4mEKxIgwGDGBcxMgRI4ILQjgiwPiEZEkGTxSUXGlyI0kFMGAqYHBhJAMhCP+EhLyJ U2dOnUIIEBBiAWhRAggsCFUi9GjPo0J1RkU6NCfSoEIRCF0QhMACAk2aLAjQhGyIAIkgqH0B4cDa Ji8kuHhBVwJdF3JRaNi798GDLIADCx5MuLDhw4gF+128mK8MEiSqrHVhyEUkSpAwb7rEWdKjHbTu ic5UBROmWbFQqeqk65erWrhW8xImDJeuU7R+1fq1LZoxbNOgdZNGfPi14s6AV7sNqhWTUUwyPW/V aZQR3EaEpdL9qlamHU2Q2LDRwwSFCBQeAgDAsP3ChR4kxn845YnFixo7qhw5k+MUBQC+BGAJE5VQ X0r1KfAfgAqUoFJKDioIEwMU2fefThz/4ccTUD/9JFVVQEWV1FBCldhTTiieGFJQWmn1VYkLxChj jGqRBYFYNtK11gskKAIZZDL05VdiRBZppGFDQpEFFH4xI8OTRhwCwSKQpVPJZ55h+ckmnnBJTyal dMLlaa+tVkt1uTiRnDHFWAcMDbEV0wt3Z545HDbAtJZnM3zmwmdxsCwXHHGvTPOMN5Lgcs46lDBB SQgQIPEopI4y8cI88lwKwTycynNJJR2EekFAJigQwULsvZcEAEksJB9EE1VUX0w3MaDSBSqhdBIC H3F0QUo5kCTsBbqiZGyxDIz0xBMxMavARDBRlKt9+eW3YVAcEmABTxiFqBRWIl7Fa4nk/1Ll1bkB jDUWXXSJxe6770pglwQzDELCIHzpJQOTQx7p77+E/QWYXxo8wJfBe+mFwiGLVBGPo5xRgkQkkmrJ pSqc9VJKKqiQ+VovZ6pZ6G7GsJanyHUO48yaay63C57WtCYzMD7MaWg11+TZnTOF9mloaJJEx8pr JMATjzz41FKF0fDA43DT8ewwXqihBpSeQw69p6pCHBTk0H8pQUsRDDkFGJNKD55ErK3PRvAg2inN FDeAyw64oIEAxteqRApG1J9GGk0B+LU/XbVht0AlvmJPN4FkE68sIjWuVhbYsFWMaKWbeVlkwdVE InXFFVkVg1QRZMH9Aqw6wIy1TjBfGv+YToIMVWhAwqaPVLJlZ7x3fEmY1K32jSy4mXwmnSWn3KYq xCxzKDTHKPNa8zv7yYwyJV+v83I4b2N9NeDz6Y2YGVf33Xdjckk8buCAeUlYSAjRgRCjPmHCE0Ro rZBCrbLXatcPAdCCphCrKbANbQuaAIQWNLcSuC1uYKMJsZaFkbQhiG4oIaC0LqIAiRgwI9WyVuJy wpOh4OciK+LIiW7SIpyUK3JaIddYbjSWskDqRgEIwAs+14QD9DBeEiBBEO+lFw34AHWpW50SE/OX JGahMRp40l5oFzsNQMFhnjFNFiPGxUuA6R6tcMLShued4b2mZrzohTB4wzydAcM2bKL/GZ56k708 JUc4MbvT9azRHWv8qRvg8xP3YsE73uVOM+kTxzrGETRGfiI8VBuVCSIgEIEghCFcQxUH1gOACBQk gB7w5BQMVDcPMMiUoyQgtJ5AILc90FamfIIpORKsjPQHltASYAli8h+KiE1w3QIh4E6YEW4JTkOK ywkMiKIVF7rwRVspkea8IhYbfu4AL3ALNu1yAAls8wrejMsMJDAIfO3FB4xZojqL1BiDPQAKBYNn 7U4Xxb74gAS7u4QlulRITCytFhtrhWk0sb7ipSYW3ltZ9N4Epzd5z047W4ZwsjGc5umJG8Txoy3y OKjWLANnOAteGldR0DKRzBbvoEU9/5SmiRBM7QL1CwgRTqW193BtPZt0CKxMqRFWEggApSxB2J7V ylACSJTP0mksn4U2DxCIgASCyKr25gEOJGFvFDHQMQEnq62iMCT3sVYBMlSAnbBwRS1kIYliKMOv YM4rSlhAWQ7gw7DYFZvglBc5y3lOfq3zr0RyHRRjR08pyuATn3EF70LxiS6pxndVMAUmUma+kDU0 GC4LzfLatMZsqBEZI9NT85z3JuUAZxc80x5wKPon8FEDaJtBbMUmhRnafiIdu5tUliZlgw6MCiD3 8+RBalrTqnISVgmSENhO+SxTvo1BAMJVg9x21GktiKimXCUBJXLVJHRVcMes1TDHm/+RFaHQJRoh yoq2xS0XTs5cQrHcNGtoVxyGJZv4jQs2xRmXvRZRSK0DrIAH5lfBIqx2lTkdkGRwyIy11IteLI3H zjdQfpK0FxzrRWx245rQMJRnpaVZdZzXG9Iy9KN+eobOsJfiiO5MGh+1aGsxhuHJwvaLK63OSunh jh4DFH2TEE9vRxWBgTyEpgnBQE2PC8BY5S2Ad/MkRBzowCcT6MkPzIFAImQrtsFqPdy16hS4O+Yy UwQjxERzCMELXq5WS7zLLMpX1zbCcaWArdF8kZ7lukO72jWbdomLoCGzMBS4bsCIHsyhX/cYFwTp SSSAAgk+YzFDckag8zifZCH8paH/hWJjoAnUhoMhMmKUmjV8TKhD3TiMQu3ROCv7k/VWHFrx+SZQ cgzfMSRL0IC2dJGbKEewM12Pf9bjHqX4lHhCZYNRUWAKRS7yQhKiECWjKn86jYAq1QMRnWKtf18+ ciidG0D7Nde5toqbVAHIqgJqaHC16ggCxnqSYo7XJcniiQWKghX2agtF45IhVWZEgHR9JYcLUAJZ fNiuG9VFrz0SIiNMVzskJvriTRQsYQ0xuwfc89H9fMSxt0QP0HjCCbDARCkiq2mCjgbDlM0OmnjR M2oUA8RspCP1HtrRO6UYez3Hxmpfm9E45oah1CnkZ3C7dCtNIh2eGkfUSp67T02N/zxPCIhAigyA KCwEAxjIJAdGwJ7j7rTbXcOa16z6ZVYp9dwOiZCEoOtUKU+VPsj86uIyFMwQvnlwSunQUEKSlBDh 5L1ZOVcKCh5XzTU+LDbCpsN32N8ZRCYvha54wSx+8XUOSWCts2I7p3hEKUKBwUoPgRidgMjOyCIU ZvRny1l+dO2kjGNtdOPP9gR0jeriOnRcRqlhNrOe6zE41vOernUTqGqgvLJiyvGOSQFGWsggH6OY /pdCIbFmAyQgRa5qTcE+dq2VfadRtSqqHOg/VGEt7V6Le0Qc0re7KxUibMd7rXSSH/WGhN9CkF72 BjhAoUIqwjg3ASIbYVYeMTmIV/8uBTcjYSEjYQE68/IC9TJEmsd5ndeBTxR6RjRFQfIAUZdPAxVs otFYYUQmk2VGx7NRtldGtmBQundzewJa1IN0tEFi2DNHEiV0xOdHNid0yOBRGxVSQNZSDUZbh6Ql lDYJtQWF+dR9o+JbPeABMyUQaeceS4ZT6/EQaadTm5QEEcBJqcJtXzaGD+FADxE291dlTkUfFMQA +7ZeRcEAJiIVALhMilMUSuGH30Iu3+IT2rIiEMhW6mJwkCdXNtJDZdEu9/Vw8oICM0A6gqB5h+aB StQvBrZ5sPNoP8IkmyKFmMFPXuQ+hbR6pOFysWA+IOMdaLIKaKJZKONqpaVqtKH/YtuDHKo1MzFT PSb2i7K2DSgHUuFTM8TjRQdVPDbmCQ4TD0bjKUfDCZ7yAstGNVdIBALhAV6HSVrTjWXHHmj3SeqR UzkVjpuUjmboENrWXH0zH+QIEaOUEijREyHiIYXIh4pDFEpBAExRIkrwj/84FYMHImh1eIKHZ5ID IwenLhJ4I54DOlfQX6VTCP+1GJqYaKFHRUBiOvGwF6onD/xUcpxBkry2irhxCbTHCSz3MdB3eziI a78IdLoXUqPFe63VDXb0PDsnUTdoHM9TM823fAK1CqBAjSnIGbjlSCj4O6wXMY8yZFpHSU9AARwQ BV7ndUrGHiPwHmZHEPEXf+tY/3ZjmCqqwnbbJlSpVBFQlisYUVZ0yEx/qIfJxCH9uBRNEJABGRZK 0AQACYFRAS6Qg2cusngv4iJjUXB+9mc3AjrsQi8z4AL1Qgh9gUQCk5GsExif5zpTFEWHMDs/YkRT wjEtaIqOJZI7wHLIyAoX42mzSFm7cGq3kYs2qGKd9WJsUnyrFijJMZPKERy8CWO3BpxrFFLcsZpa BEb30IJQiSUiiSad4glV130dYDXaqI1TsBDdeJUsoGTg6JXlaIbqiFPp+D9faFXk6RD/I49rWSH5 dlZnpRN/CJj0OZCMl5d8GRb+2Jf+mBN/WHglEnhs1SIyFAAwIhZyZV9qUYFw8f+YcVFO9gI7FYeR mPlX8NQkr2M7oPmZj7YALud6JZgxnkJQkSUmqrEaJWomNdOKxrBh22FHsvl8OhczOdc9swZ008A9 zLBaP/kyOukbgHINuNZHKbcJElZyooE0WbRpWtRPSekJ1wgQWYc/xMWdLACORMBJ6QgfnZSeY+l+ BcF+5CgRVsVdHmAfsfIEE5AshKeHI+KPU6EEShGQcCqQAcAUeNqXcaWnZNGXCfci4FIVAXqIz7R4 5+IVZEFNPgSRZRGJn4OBQsQjHAcZsMOBFbo6GTd68HQI8/SZtuMCUmCKkhCiozoaEIZy35GisGgm 7AObq4lGh7Jq3fEbMiOEu0j/WkP3asQHa7/YR8k3dLbmMoFEY03aGZXWT72zaSXoUr1VNeBXVfmj SVcqdmYpfu43fluZKgphll9odlflSx5wQuelXtoCkHqJn3uJp3l5A0rArnp5A2HhQ/C6mBNoVwm3 FPRZIpZziEjxIpoDTWSRLp9zI5CiI/FCF0RURKeTTpfKRIqmmQNDMPS0F7PjmY/mAgFgAshKbEn6 RafachgWshnGqrb5MTsHWjNpmzQ5ayS2Yn+URzDbgyK2R78KY87Dm641pEMTWxDTO53BWJeQDptm MVHZrPVjZEQQrVcZBVzDtObXNer3dd3JAWGnZF3pfquSKmrHKh5kH3ijj2h1/5fnalfzSq9NAK99 ibZn20Py6md9tpgxAhZ+mafkYp/n4lZ3G7clYpgGWkONOBcNGhdVMJH0QgL1Ugi1Q6ENy04fODCa aTClp2AVV7G2EwJSkAPJ6XotyHKl+g0TlgmryQmhu6KiOzKsITLD0xu1GIQyk1B/oibDOLMsSzN4 FHQK5VG+MavH0Hx95DGjqnSIRYpB+ymOFIVQGB7j0VsBoXUBwY1Ku0lZyaXlaK1eCQAYEI5KVYaf xI6mEh/1QRI7wVZBMZB5egPmGxZoa75KcADzOq911Zd0xZedQ3l8xmfV5ENw1agCGbd4y5Bjkag1 JFc+xGfwMpGPOQgzcLgJ/P9fALa4R3KZ78Qv7+QD8wSKkQEk9wQBC5ACoqpy0UkPkVUzkTXCq1cF rgG63yCUJmVHOVo9qXWEtxtjq8ZzPhNRxChRNJnDfwRIwSCrpGtQuiFGpxEL8VB9J0d9pRAdofEN QhOyQZa8MDWl+IOFmJSVmfR+CiF+Zrml5iieBZF/8nEf+0cUcuqP+Nuu8epnDNdNPnQAV/DGdHUF bjzHbvzGcuyIDPdnfeZNZrun+7unMhRXX5EChtkVM6KICxoCbFGwc8EjEucClGlEEuzAmMoYIcgI FhsPkFEFLxAjKTCinKZyHdtpYeRyKBnC3/AKrfobu9vDtylatKabN2dROVr/yzPMqxnFiza8PcNK Wfz0hOhAabqFDo7SKEFDtLv1KEJ2AdVpAj0wBUmLhQ/htJg0tfoDpmH5SZ7kbTrlQfVnQC4RqBZQ xo54p2vLvmv7Z3TVxm7cQ3Jsx3UMTndMedi0X/W8Q3C8zmZrtlewmP+aoDkEATnkFmxxF4ImuAtD OoireTnqRJRcGIo7WLIjRbKjybKTCB4KyqfhwShpCiLpAjWDNDTQkpgwuqjaCchjdBA1w7oXyyt2 fDHMDT4TYzCmDd3Tey28DULZHWWyonXClBnTSNIhtI7FlJimbDZQBNVZHln6xfljxd3ZnWBnze5H lteKvZukzVXGVMukb/up/5cBiVd0JQF2nMBmTdZu/AJlbdYJfAVt7dYZCBmOPKlzIRfsYsdv28d6 ip/4CcAB67eK2TlwsV91MU7z4l8TGmAP/cCW7AO08xiys6F8wRZqAXvnA3unsTFC3JJfUqKoQMIj fdI7fQxxBA2v6JuGotO4K6yAhLsVtcPXAw0zKQ01SBu1ujw5c1JL7CnANg+MhWxFTArD1iWh4HSH hAQp4Fu/YioEYY77wwIfMLVTfVPVqh7rub3jFlUTwSz950JLQRbu+8Yz4NaUCKHlZNYQmsCCQAgI zNaTGRmWV06kk9DyjbhU4jAGe8dqPIF5OyOYIyNqEeA34gIDqwgG/SOMcP9EydC4i+0vltyZjxEZ C3tFBZ3RHSPEK/cdIgkmLXkKFCwao/2av8AdM5qbt1tiP5fiKF6EQSnbwpmT0iMctgknI85qpM1h IHXUycyEjuAIj6IWk+LjQA4BxbwAUiAxCzAeH2ECuEKVNGVTVwof8YcqYOi9zTUF7fYsZDg3CnJm ixNwQmHOcQxObmzWa33Wkiov7EII8uLWdrzWkWHe6y0B803XlMFxjUwX441fhJ0WAq4WC/DnasEE U1IOilAOjobgCB4N77QkDY4YTaQYGVp6G1dYKNDIt0N9ZoSSqalpkcVjqaCaq0C6r/mC28Nhqe17 I+MyNhdasyprOExRyZf/2r+3kyc+4mtk45ywPB02CinlYbjwGht2Gxf+JhQmnZWg1Es9SU+NlQlx AtQGdhWgNVa7ZNt6rTlVhux4ZW7p3UJRtmOu1mwt3m8u3ug9meutMOc9mXqhcYmbL4JQRbFTGS4g x+gsx/DKrugKgYkZ5vTFQz9EuIcdRENkqY8O6RoHOxOXuJwc4IiwnKm6imOkipttCpwbJqd80p4G xMlDmyyj0j9JYjzYsqilPbQcs9rw0spn27sWDCzmJowlcjvuGbNVW9NJ81k0MTrPD0hQBL1lAkBf ZElbU0z7ne9BdpuUpdreSUal7a5UZNBlAlqGETXxpkIxt2iMtkxxvu6q/75g7a59Ga9j/ubjjd56 QTr3soH5UgieCO/tbeZwTOby0qhtAXnXBC/9VQX0svd6VZF7MckHr2jplKmos3m1MzsctxeGQNk9 4ozFavG+mwojGnUgHtqg64qW1dK7vlC5nosrCj2jRdu3O+u9OSgsixwNJfq7ODOhBWLXIBqj0Bnp QAMM0w6fEQ/o4ClELg+YsSmFvgOXQgkbrNy/En5m2Y0JIa3/8x7d1iqgJI9xiEpjc0I6kQLe7Zfm mqf7BtYBuW9zWqedAxZzDE4vMN/4Yk6kgzAIczCVysBFlN4S0JhssQCQQv8aLAUADuiBfkM3BAgQ LhAQTC8vLiQyi0ZQUP9ZkJGSk5SVlpeYlQ9Zmw8an56fVTJVVSQkpihVKCQvghBOOztOtLSyTlW1 VTu7tFU0wE4uscJONMbHyMc0ucA0UM7QND7Ox9TVz8DSjtnbPlA+1ODd4N/fjujc0OeO5urkz+ny 2uLf8fXowdPI48vGssOY7HCRzAVAWQJlKQyhsGGsHQllMURio0PFDhGIRIgwgkMUFiyicABJEiSH kRySeOAAwAOAly09RHgpc2PLCB4U6HyiAAaDnz+FIBBiAUFRCwSMClnKFAYMpkuVWLAg1QJRJViV NLnR5IDXKyjCzggbVgPZT2bJojCbVq3YtzOuXPF64MWVF03yBligJED/kwUBICwAPDhA4CaH8EJo IqExCQmnUGnwsSmT5cuYM4cKBUqDqSpo0z5GBGuWMVyxeg1LdiwXMtS4gP0K5uP0vmC03knDBuza tmnt3AEP984e8eLQyr0bfrzduuTdntnjpg14tGjGdlcLp29HCIYCQ4T/Dl4WEiRFzodQj+S7eobr Ja5fj6RDjx4XdJigQIQ/gCgYYOARgCzBtNFGJihw4EYKmhCBggyakEOCOuVwAQIX/ITAhkINNRQB QgkBYlNNPQXVUlZZJdVVWSnBVV4vSHDAXHJdEZdcN86gY4026qgjCjf2yOOQch2QV15G0mVkV3jh VVeRcknQY1irsALa/wNYZqbllppwEgmWnoTpSSminCKKWSSwkiYTtShTCzPIzDZbb64R5Mxpv8w5 zTXVTdPbnbz5Fk904kg3TnKFlvMndOQkSg6i0fWZHKPwaKdPNs4YYQQNjdRGyzEDgSoQE+KNBx95 Dj10Cy0uRORdCB1cgN8FDmoEgEclCXjSriy55MGvwPqqAE8KAPvgTjv95BQDQjCQYVBLMTvUE084 JcRT1pp44rZETSWVizfccAVXN7ioFZQ0zjgjukESuaOUcxkJgbxe6fXXX4MNJtgC+/J7yAGLQQDZ KYvI4EhlXCassCRgatBwKRCT4LBZVSgW2Ash2Fabp7X5E6g/rt35y/9p1yiTDJ/OUOMEyr9dR2l0 ulnHDTXmYMpONtMBB87MUDTiyKby7PbcOTJ3AzQwm/ppkEIJkUoefTZIIQV79LXXnnunPk0eRbFe QCsFMxHx360h7QoTTRGUoKBObA+rgNfEsv2EhRhqyGFSCAAVIlR5672tU9piey1TU6XYIlUtSkVA 4oub22ITV2wFuZFc1QW5lFLihZhfSDaxWBN+BewKBIlpbleMiZ2CggyfULbw65iBWVnDaI25OsSf qImx56/cdtoOPvwyDEF67umxn22ujJsxfNp2XaRQvAYdo4XG4xz0O7OjzqHa+4lOzs4FTV0jhg6a jhPp6EOdPg9lbBD/fEzEr/WrEskH30LivWr1RbH2sB8ARBgBAEYQBZFEoSO3KhAAZsLAA7ntWBAa VgRMYIILWTBvGwLKBToULaHoDShD0dZSRGgtwlFFCEpAIVa8RZWpoNBwiYthDPNSrrxo5Ug4zOEN OWckwywgL5+DEZJwJIFVSIZ1soOdErs0O0hwBi2mkIxnrIQCzZFuEMpD3pvgtAzuKCMXVegYLlxA vE+x704oa15vTMan6RFtHcIRH86+Z5xtzKM2zymaO7qHKEZJg2bSUN6mBpmM0yytIVk7Ff3upzX6 NBIJ3uFaByhIwYwAUGy7EiBMTnI2X7WkWA8KFk4YxAAF/MRrGbwQ/wKSokq8bQhDqHzlKy+At6Yw CyouXBG3oJJCFKGocN8qXAu91bisNIEAyMShEn54pNBxLmBL8pw0F1O6Q0hATVJM4hK3mYlOcMaI qpMBCRJBinGODmO0WRktaObFP9nmU3GCTTBWwxtlvAxT1ZjUoXBWHegcTTk060aiuJc+b0BqZ27U nqNSFik/SQcb71yIdyDSyPrhT2tWa+R3pGCDFMSqa7XqiEcwIBIW8KoCBeLkS1LSyWB5oAQySVaG ZsqADaUggwi4aU6TkoKe6lSWG0pKTYWalGYVjgDCtArgrDK4vxEFl09lSlWQiVSqEmAwyFzAVZO5 gBAQghDSfKbnfv/4udAhJnWQWQsoEMZNbrLViVkKRRRPYQoXiJN1df0qOjv2pz1xhzfsa4bIUBOy S2HjN9OhDnSOA7N86sx71svHOvyaj8ROb1DCOYdwDGWphrYRfY7dh0TlM9HvLNK0OzhPe0qLNUd6 lTwLqIjXamVJXH0kJAAIUIB4xdskcNKlOAHWsHhCLaAY11lCZcBPCXDTFGwVb0j9EIiQicsTppCp UClhdqN6Iuyy0KpU1apWfrjMq+bQXhAIQWAIEQCv8mua1kxEjMwEGoe19b5vdSIn5BoZ0IRzEVGE QHvTa1hs8ElleHKeYGsjWMD29bDcC6g4EAVIQyXNCD7AMNDQB77/xSo0Zgh1DnGkYw5HTTZlv9nN QJfhj/olcmtbU21qVTsRR1rNIlOTwtM6SquNjKA/GdHVSEzKAV0JmaUsTSAHXPqrmEzhCQyAQXGP 6ywO0vKVyAxqlkXkIWQihaq7hMoRtotdwYl5zGO+Sgu/pQSr5gt0f1lmM6f53nzpy3OuqGaeI6NW h+X3vq/Lkn7364nIoMKI2CTjKQbh1RcswE8l22IXC2xg2cQGsChjMW3CwWkHo3g4O/NeHNnpDjqC GmYhDrU+J2UddtgjtJflWSBt0RCm1ZohtYak/V71NNVeLQQc9WiPxTYCDNyKgCA5AQs+oGwWnEC3 LMBASTiJEiKv/4QmLlHJFLb95GpRiyd663KzhFJUEWV5RNztVopOKMxepruXZpYqU1tIuOmCF5ly 1uoP9w0YIOqlMHZ+719CRwhr9netgE44wwrtghdERgIOR8Ug0vvVvQji0ZCStEMZ6unBbnw7kA55 ylRWab8+dLIIzTDMJvw9zoZvUtpLuXLCF9lMx/qy2UAGNST6NF7T2NdA97UNipAeJEiB6FMDdtQm GQGwEUFsxC6ygABUEmULOUBErjavVuqSjQBrCh548pOjXC1l3XJv0hoRUtaOIqQWTs0rfCFWUEg4 d4e5W7+sCpup2uZlvjmaiJkR7wI2TcTgOc96HpjqavdnhSeMrf/e9EwrEoECiJPOnEyYuGAEcwiM G+qvH/9Y8ahRCmWQPPSYdvA1SA1ZQoZ4jkUrBzu/B/NUq8OyPNMszvNZM0yZUYttmkWtR4WQ0poH xo2Umkc7wPz77OfpJykgBpT97Ns229lGNmkCpW3SrG/dJS2B6delTH6fAG5ZUZ6CT7BLOKieaEXX /aUv797dpwLTu152M5zxJee8BPz/zQQYi2EYhkE6h5AmBGNfjrdEkLdfGjBOqGBoiUEIiUBGAWAD gOFenNJYJMdGNGN6xsMxqNcbEmYyf8Jpqyd7+LBH0oFhQnMP8kAc08FytGc+M2M9KnM9fWRH19NP /MA+pkEDt9D/a1XjHhRRBBVhAxQRNefBfB1QBPbBA083QSYwhUTAASPQEQASIFbnbMomfQGyUrs1 ZC9BEr3iEioFANv2db8yBVFWAurHLOl3fkwVOCI0f+ynIohzXS6ES730dt7CInu4h222OE3QF3AW RJxzL57TXoFhOczkF412To1RiWmiCoy3gIGmTU6kAS5wJYVWeaPzVYLgCvmSXo+2eg+meiTIHXwS RrORRanHUJm2MQ5VMqooDYSUYSoHPaK2WKymT3XUHC/3RyP2guizPtHzg+sEDapSa8b3SMhXNVLA fBXxA/ZRhU33dB2RhVoIIFFQAQdEUiTlbCAhbVInINyHAVSQ/0ArtXVLxhK9smTD0mRi5wE+EWXn 9xRIZSJmhi1rVl0qInd0t0LBBEwy5C16lxWNYy/48kOGcSSAIWfqxTv4clUBY1ZABDClQ1efAAWN p4laImhw9QCrgCWt0BiLQRj8QorptRcLkAL4NHIdB3JppIqpt3oBRYKol2m9EWu+cTSYclmcBlAu Nz0xCHPes1jWIFCZ9oO+oTIKUQsOARGLRGNbIzVFYAJZCGQjUDYa8XQvEUAnkYUHFEAsUGzTR33O 9hFYB20mcWTyaDbgN5cqASxLNgU68WSAI4fW4kKAMzjakiLd8i0qlBVrdjjzhjjtNojfcoiFiIgE cIgsWRhxpv9v/ecX/1cYArYXfgEwBhhxEqMBICmSDOiAubMKEmBx0EQIlvdV+kYINvBQxhOCIbeT IEeTHHdgGydhfeWbJ/iTdWQdm1I9t7gnKNccj/IcIqZqMAh7zMlxkfKMrFU1SwiFFkF02tkBP6AD FPCdATQCFXAC5ElSBeQRJzFBTQc2/MEfRLAC34kBFRBA02eOVpeOaahSabhSLxFc4dcS2CYTv9IT w6I351ci/niHB8lCwZRCiPmgcidDLVJMDHle8zIvTnIIR1IvZ6UYpaNX1tQYBwBxjrEKfmaasPMA IIkl4ABFLnAX7AUwHOlwmkcI+uIKNuNXoFdgskiLwfMxx/n/cbjZMcB5i9mDUM8gA0EKaeNQlEV5 cs3ZDpViPSd3cvUwKH1Fa9CISKdyHgjhHlDonVJYAWt5AuF4QN85QfjxBD2gAz3FfDrQATrgnfwx AuU5fcz2AR9gjrq1W8aWW+pIBQLyjikVEwtkE/0ZUxHAE25YAMoSh4GpbnVnFdSFVAYpoZgqQ0ei FX3HkOQSAIjoF56ZL3tRXv7HkjCZgRYHkZHoOXVhaFeCoviVO3HhAiopMI1ROobgCjBJOqmokzoK aUW6o6QnctQzpEL6m7wZUMyZcuTTpBUmg3tEe806D40SDbpBNH1yGlQJjT2nWkN3hEg4dB3AAysw ACdgAHq6/wEGQJ4nUAErwAM8QAHzih89ECtP4DUXMEkUBJ7FFgXuyoVsOSDpCAAVIKgv0Y4AQAUV ABNiA0DvOBMLRElP4CALJDfg9hNld6Dbgl0gsnZVMUyZCi5YAZlY8SKbmkNcwamg4yJdIU0Ac15I QnGIQU0vYCQ3W3AkGiPXlAp9FpKyehlvJVdVMBaqY4mvWXAVBwEkAAH4xE7HyVcbA3ofSGn00KSr 2JMoyJvIubW3eZukVmIAhZRBkzON4kY4o6WIxGusZXz0A3RQ+AMUAATpqqd62q7vCgQjAJ8UUAMU wLf7sZ5PR2wBoqcnYLcbYLd2G7DyqZZkCqi5ZbAMq7Bns/9AlTsTL3UsvwJBjGpKQaGPnztu5hYi RUVVhMhmWREu4HIklQOZNHSIoPq6KFtDNwQ6hAdEhIFDEEk6MnsvpBOadFUKqECSQft4X4IlZlE6 uQpx8xVxvCowvDoI0sm1X3ubIAicymOCwXmCO6p6VKujnSZhriiD5UNHNbhq1fox1xAqLmZRBzEQ U1k/RlcEcmunBrABCbAE+LsBiYu37loBADye7aquirsBS3DAKqACLbDAS4ADCZy/B7wEhuu/8imf kbtbm6RACmS5MCF+ACB+A8pteqk2xeUhSzEUuHRuq3Rvlvqgq/uyWoGyXQGqL3IDfBEAk3lDlBO7 /ieq9gL/qnwBkaCzbzhkwxPpbwJGigfoAqBQvIEGVw6jCo1RBRKAZ47BZ60AGOulLyFQm177YOGb TtWbm7hBi8IKvrnpk/qwtWHbaSJ3D1Qag6jWcsuTPP8wUbw2H3oMHy9wCwiBHt1ZA+cqwPy7v/mb APiLyIWsyDjQyAmcwAuswC2QwAisAhGsvx9wwHoqwdEGEiJhNg37EgJCuS+RBABgyiWQyjqRymoz BTClNq+sl92WLAXwBBi0SiYsXSucVSxcsltRQ70rOZu6ACsrOVzhw4CXiC5JioNHil7FXstsTUts aKEBtE7cTahpCiTaCiDqcGHxGEn8u4VAAkxADyK3k1z7/4FpFHqyqMYj2HHd24peO8/McJz5UB0x Z3tIeh3u3JtIoykq+KNCyARS8AM1MAB0ewKFzL84kACN7Mg4sMCNPMmOrAIJcNFL8MgRTckqgANL cMj5m7iZrMnMhn0nESBkKnVUUGQptcEA6hKvnBM7oTY6EcLIckogFCIoXBS9HMT4Npmv2xVJcl4v kszJPGdILWCFtxgh8JCp2lVdpV4ACGdkVXCRIQNgcs0p+gmP0XDWpJqPcWhzxbOj2LR7wjy36Iqt +M7+jM7f65PwpDwoeMZsTM/Bs7W/4MbGww0uKIPpoNbOSAzcGnxWaZVuItiC3RBMAMgrEAWZ/AEG jMgO7f/R+UvRCezAFt3RIA3S+su/F73Q/Ku46moA7Tqe7rqFAFK5K0UFJXDKldvarY02DwJle2lK tU0tpvRK4RZUvP1c4bVMftF/W6HDG9pDOZQkSvKyHOpDOAzEBDc6FglWhLdehLAkTWKzruA5jcEK pIBE1qzVk9AJKxoKdOXVnrNoV60IZqIB4nTVGsAE0dMPQ+rG44ubS5rGt9ijt8Eaw8GTI/fFsgG+ 4QCLbjwP+0yM1tpF3AqNTcMmVjkeqyWu9Euvjs2/+nvRE/3QG53ZDv3RHg3aBlzIkG3AmSzSJv4B o+2uylbSnyx1qt1kKRHjL1ECaQN+Ma0A4lcCQFFcUAb/Zc5SZVgW5Pfm0wTgF6173EgiI8ot1HRx F3Wx3IaXQz58GNAsgBk4VvzSkgGTxDiroXUxXwRDGd8N3gsnOyo6RVK8Z4Y2mqHB3rkjTgRhHG38 tczKvXS8vW+iivbNins+i9MQRnWNxmUrKNXwjLiGfEAnNecxNdrZ6FpZBDm2nT1ABECwrp7d0BPd Ag48yR1tySEd4okb2qRttw3Qv4ZLnoqL6ip+jma4dTRxEiqRyu94l02WBK29ZDkxoMlSSgyQA6UE ZaqEyyfMXEmxVavEF/jGTIi4oXrhFzcbeF5xs9LeOc8eTWXVOY3I1BSnXt9BcS/5VVL9AqnaodIO 5h+Z/9VkrhlZDSYRGNYQZyaRMTFR5BnlJDEkcByaJeB6PZQbOFlqfWBQS7VyTec+qcY7mtfMMNd3 /aTakGLzEAuo1WtBV3TpcXSQPr+QfnToAYVEd4Q28AM8ALBDwNAOjeEa/sgW/dmf3tmQrbgoTtqk XQEwn67kOdowD/PjSY6fDBPZBqA1vrC30p8Su0CwTdtT4OtyoxM4zQBQBlS0pFU6xcK8nExdUdTP jiTT/rJnFbMzAnFwZuQOmUPzYkNav38eClZYz7t10RgzkDqsU5pjnu7hTWi5owpUHNZrrlZq8oBz 5RnZg4IB7d+/2Gn7VIshGM+saMY0iazFioKAHrYNr/+Moba+pmWEQXceRYfxkF50U7Po1zl0SAiF k15Ah1vIOJDIEd3Qj4zRF/3Zod7yoo23pE3zOC/AL/+uBmDaGKCWQpbBse5JHawTBnIsP1EsbFMC Pu65p1QAeZMhfRPsVyb1QSzDQ7QknynU0o7cTDIDYa+yKBuRK9lviqiZWxyR2T0vHGmrqVAKpSn3 xssJndEWCMgK9I+AELMIdHVocBS+rAcINII+PjSEhYeEg4aLNE6CjJCMiZSTh5KSlJqGmoqIhVA0 oVCkpJyFTk47IatIriGusbFFSDa0RVJFuLu4SLo2Nki5tkUdPz1EUVEnHxvOzgnRCUsqCdVL0tMb H83/3dwfBgYn4w4VGBjjJxgf6hgs7+oG7uccHhz3APceAB5J/B4AAQCYUiJJCQUTFJToV2KhAgVP Fno4qIDBhQtPcmRkwAABggsdPXq0GJIAAgImUapUGWDlAiUBmjSJ2QTCTJlNDjR58ULnzgM0F8y8 0YSozxsHDrzICQFCzKY1X0CQGqBqgKZND2C1OfUFCRIoSMioogHKgyxo06pdy7at27dw42Y5+6Cu hrsP7qLYW6UKir57UUgAq4Hs2LAoNJAolYlQKESTIIECZSmSoFSNGn3ixPnSJ8ifT22qBJlzKVOj GKtataM1K1auX8sOAYt27Ve3acuKJaUDBSIjogwZ/7KhQQIcyKPhsKaiebVq2po9e9YtXLgK2E+Y S8dd3AcWJ8Dfw3CvHsDzAQVOLKF+38T37tFPeUjx4cMn9p9wvICAJMf/IH0khEhCrGQgAUq8tACC CxClIE440dQEAU28FFMAMClRFE4+2QThgkLJBOICJNJ0YUxJMfGCCy6IdZdZcsUo44wz0pXXXTje 5RdZOZIwWI53gfXXYlD4UKQijzkWWiGNRcYkJp05eUpnoHniySKenWIEIVsuaYmRo4hySCiO6Lab L7foouaaunSgpi25FGGLK3GueUwyQJxAXAN8GrdBAn8u8ac02GCzgaDdbOPMN+KcEI6jDnCXDgvy gP93zqXl5cPBPwp4EEGn+5RgQg70RVDCp6MyQCpE9lXUXw7+iQSgRSZ9xN9F/HXE30kEWNArrygB a6ASCK6EYUwJZvgShQjKhGwTAkQ4E09R6SRUAD7JxFVSB1whwQESeMuiiz6UdRaN6Kabbl11+VAF CX1JgNhYPPpFgld99SUDWEJKQEqVRR5J2iBO+FDwI1ByJlmVoElmGcOXVCbwZJtBdiQnAYcZJpOr rdYaa60hYaZtIttGsskoM8EEEkxIEScFPCjDDDTIJbccc85lozOg0yzh8wdLgGOd0OIYAN537yD9 TnlMmxdQqBGYaio/Agl0agTtzTeFBw+Zat9/DOD/px9H+nkw9hNid8SRgEK0fcGABw67IEpKJMtg 3csmiGAAIBLQEgEkBr4ABIIXvkAIJBIuxeBbTSUBi0y4wIQMZUGh7uWYu2UjuzoGFhiP+8L7Fbwa UB66BF69cJoohgj8mGgGY9JwabQz6eWTUDL8cJGsV0KmIFsW2aVjv4/i2GUel7zDbrfMKUswrkDv ipzTx7LyLD/wQAQQy+xZHM+HYoPzNNGIL+h0fzqDKHXfcPOo0UgrzUKm8QFkKkAIdR21Ql6byh4A n8JP1HJwAfvkwAQYqQhIbqWqsD2hgPnxSIA+srYBCQslvlLJslAyt7lxMEF/02CCrjUhYhWOb4IL /0AIZnKVxvFEKo4bHQnwAqPM2XBddZnLuXSII7+E5V1VoFy+vhIW0Y3uhfcK2CnI9CQrORERj5hd ZmQ3CMociXe4+4wiKnOJx4zCCEYgBRifdDFQTIwUqfBYyM4kJ+rViU1tlAIxfGEDKdCpF76gwAqA wEfiPEM5gCSf+K7Rs0VJBxrTaV83JOWocLCjHeTBB3vO8yn6eIAgUwDAQUyggAiYYAIAtFoEnsDJ h8BKI6V8CAIVYAJdWUQ/F4DVQxoIEiHsSiQISAGvPLISYHnQWAbCkAf/pqAShegmEKpQMl9whSZI 4FvMDNe3JDADz+ElhzfMpozORRe13AgKeoHXu//2IqS/aKCIRPTRYEgAgX/1zkhRktJlZncl25Um Ya1rXT03o7BEvJN3GqOBEYAnUEkwphRGAhOZVNGxjzHhYyALARMkigTXhIw2sVmFRFXG0ZZlL0/L QN+fauackjJHZ9AplCB1VihFulQeHHDHpjYlkAi8Zz4KmQioFMLThjQkCZ6y6USi9qkI4BSAXWOV fSjiNYig7alTgOUChWARBLQNWLwiVtzidhKPwI2rK0nBAsRquMSRyFk12ckLXzADee1FAzvUplwx x7nCgGUsoyviOmX4Lha9KwQJJV4ZK5aJyGSGdpoxbBUBSs/FegmgGGMdGMMIT8eeJrCESEXIljf/ Czi6yRi60MEP1GSMH/zATaYdrZuKMFpd+EIHPBhAnoZwSGfg4FDhW6mhwreNoPl2G+07FNCGa8hx GM1ol6LHTAFAhaC2qlX4wWmrGpIfVLKSPvcBiQJw9ZCPQGRtICFgePVDIAmK5G22xCqvFvA3rAKO gxUCJgdBlCBlaqsmjXMhT1zAEwnEazCJuWZc50rguJylFD1UDDq/0qIi8uQrK7rXC3awIheEIGAJ dV1lnYglw2axioo1LJleJ8UkDQKLGWaE8KAwUBYjNBH/wjCXHMGERzjhoThmjWw0apuJ4qYWJXvN K86EhOwNYBl6aoBtN1Az5OTMpNhQwW6jcSgq/08HUIhEVPusIw50kGceVfsH/nTKAAVMYWtJMIhE /AHUTp7KHvjgRyXvVx+udWo+FJEIRdIWtrWRxKpetSpY46ZVC2SQAClASaLfayASqSSZEPLQVvY7 mL7gpcCYrtGNgiThFzzT09ScwQy81dZnesvTM+jLC+CJYRlXLGIL60QTp7SkK/1OipMBMYYnETzW udjXYgooiS+zA4bqxkxEphORXSYM6tECTbdAEwVGAIThzOwZTV4CclSqDUF5O31/xLKiEAUobyjS UclVRz7cUVMAEtUhaKtImUuAU+qy51T3kch8LlmRpc6yU/HGaXRZ9VTyio0/BPiPVakKt0CbpP9A 7z103OLbNwXpjW/KZC9UrsITCGilK1Jxq6XZNeBMm3wtRQodv174zBgKBnUwxMpaXVAF1SE0xhnW BBapVIl+boLWx9sYYW+Xc0R8kcVhLGivmTTQgfqg1whTxY87Sws74uKNcMyFaXXxA2K0Vk084N4J GvABPqEPUMmxBvkS0Iz1/WzcuG37NIDm25d+Zxz0wIBAYgoAItQ0au62pAJW5bWD5CAHb7ZfQHDK 78Gvyt8D/1rY5M2RAYFkbYEe0IAq/3COrIRYEN8q4EDEt9HHpJhOIRzjQN4V1GmlCS4IsIDZdfKT 2yjlVWhRzUHdcgh8ZTCe9pFUhr+DKuygCTv/cMEOiIdZJam4YLImDYdtx8UvgSmwZ+RSIWSA/UNs SRTfb3ooBgqJizXd+QtlKETXv2OJmkxkQa5NbioqiyJor9pt13aTkdOCFpS0OdSwUuWjUlVWKNCQ DYECXMP1AeiAd8kVSe7mHp8yBaMEQQDBHo5nH1hDNfHBgeexEA2xNehxgQTxHgoAA2DDADCANgxQ IAICaJwXLJqnEichBBaAAL4icb7CS4t2IGRlOIBzFRwHQyFHOnBFe7WXhGjRLjLwac/0hBKALcHX Vt5yBUkBap7WEx6HOq2mJFfkT1cCYlYihlqUJfukJMeDhhMzPF/oCS0WRufndKJgCi0mJpU1/1G3 IQtY1ybEsCY20AGAGIiAWAxwlFrC8QF+xGQ04zPUIGXkU2W4pT7elihAI1yReD7nY0jS4T6MQg8j EFMcQAQb6Cla80ARMV0+RV34cRBasxBndoHUZR+XhB8wYGat4kD/UYvzkYL/QVVWZRE3yEEpYRIS NywaZEwlciEl0hRW0RSDE3Og1iJfMXtKWI1LOBb81V+ulxRVgWptVWrQpBVKoRSeFgAHBWNjUn34 1FgfFoaTMDHUh44UQwPct2tMkhpJN36+dhpflFCGkEbqFxv0N38lM2SvIAUtk2zQVgQ9wD20hW1M 1mT914j/J4CMeJE+I1wYyVu+xYi89Q0s8P8d30EeFUBTfoc/3/UEW4OCKjgFBrEeD/GBOaV4EjER JahTUYVJrjg2ZiaCu/gfJ1hBm9eCgqZVXoVBovdeHuRogTN6iPOUqhcCWNFCLxA5YlGPOlRy1lhg DwAF7xIuOiGOM/Fx/TU6n+YUg3MVgUM4L9Z9JmY88tQJtBYJtQY7iCADkUBZXlhPSVJZAgUmYFRQ vZMaTwdsjgAyCqmHvuAyzOYyV8eYzFZkq6Um2YNkDVAzf7RtONACOGA+a2coGQmJ39ZbCfgM59N2 wBU+3MAMIbmaXlYBI4ABI+Bun3IBs9iSMEBVMDABtShADnEQIMg1/oAe9MY1+NEpSXBmZ1b/ESuo NSjIkiwJNv2xNsGSEhB3QVqlEhoyeiOCQoOTlsyYX0PIX9JIOTU0F1uZhOCkATwxAy8QhFVxA9hi FeAChUrhFHzDN0FAIinwL2NSdGUYfaOhMLADdEhyJXiJjsNjfXbYdOBXhxpjRgEFCatxbMemkNJj R8JQR3bEmMDQh9iTDLQlKMdxHDajmdpGSCo1moh0doPybd2WPtyAW0HzDT9DNOkgm30HQCYQASQB AyhoAQXAEbupEAdReMF5Hi85HyrpVGZGbydIb6UYnUPJkprnVQWgEr74VUhpjFrFXguwn/uZn4lj FXwDFEDhFPjVIuNCOUagAd6UnrUHTj4i/2rZMp9JEQQEIADYkhRW+C1AEQACsAACsKcBgABdWHQX Y331pFiNSpcM6hk+wH3cZwjD82r/mXNb8oYsVlDaF0alsKmFWaEaBX/LpmzCoIeQuQu1UEfNlgsN OQ5KZlsn2gJLMJFS5ohU5m2YSKPfxojS8as0qpqqCazD5UgGAA7qMJtIRUqrCDaUN12oKB9P0Jt3 Rh9TAAMgkK1POh8oWK28WHm4ZEEySK4YJHF10wTEUjeDCqZl1RS0QSJS2RRS8YxeMY1HaDlyWo2T +hVW6BPcwo35aRU9wY31WhVhOjhBsJcASmvulEVbxHNSEo+NAYaf8X1PhGLXxzpKV5jBo/9QSsQ7 h2lRBpmYqTpkGioMkGl1dZIL0zYO2LZ/OKACM1uR1xCJvVV3wKqzONsM2iCahhQ0vbWAwMUMmMIB I9Cj+wOUs+QRpPIECVFmObVmOWlmF6iS/KaCK0iklNeSU9CCYCtoWtpVBbJBcwMsIHQ3QQimAaCn 7BUCapl6+tUV0vgi2LSvtpcFULAvnyYTQLGnQ2Gmgmqm7EW4erqfC+Bq0oepcgmGXEQJVSCpTQSP spYxB5VPYAJ++1iY0hcmRnBjsMEK9MdZuZGHBJlskBkLP7A9UTCrnTmzNdsc/fdk0QAdIlWju6WR 4YO7OCtS6OMNCsgOyqoO2FEB7mYCnJT/KqqSSxbQgkPKAEN6Ziq5Nd56gjAgpSc4AdyKSROgkiXw nBBhpZXXiwRSnb+knS0RIkJBekzZvmSqcRu3VoOxL5RDcnhrcpYDTvvSEwVrFXsaqHz6AghrFQLA p2YKFIW7AEryAD7AwGMouU8UJVVChvIUawKKjhrWaowQfqEqqj93GQ+lG882CwupC7ngmG+UAoRY BCqcC5NZWhSQJ66LM/9XkdQgPj8ro79ViYuiiadZo4oiUt8QvMrqSOwgD152vKz0QGsTBBbQNlRF pBNANk96vSj4ENV7ZtpLb/RWrVNMpLVIpb9oQU/cVY0WX4AjImh1E9fCXiz0FNMyEx63/1YsF0Q8 Yr/3mzl325WkcISK4QLPFKhV8caCyl6CbMBV4XFasVZaEQBqGH1zWU8HM3RU1HMOe8EQ7GspFibA JjxPxGrwtAM19lDr9zEoczInA3/zFwJSwMrTgwxRUHa2RcOy23/+5381vDM9k4nqU4AYaShUhmW/ THc1uoAvhcQQeIu7wnBW9bwc0W/LaRAn6K0FwcXe6r3/MaTO/It+BmjV2UsuQTcKksZL2b7s653r +xRdMY3ghMd5LFc5BFdQcC9TIcjzObiCm8/1iTrdGIUtJI+V27gPAzEV+8ARg4YDE6B7KSYExTtw +HQU408U6mPVU8KuddFtQoiDuNGfBf+IrWUMMNO633AczWENuIzLsmtSOZMNGTmjW+ZSLh1cQpys ROw+RcNlGGAOmBJ4XRvFXfXM/Qa13qqC9Ka9y8kA2fofU8zNYHtVgOaC1Sm2wlJMIARp2kITakoV aoUTa3UvLOICOGIW3fTON5QXm0a/9FwVheo3BCwU3PItEBDI4qhOgcqMAfACiYvQozGgoVF9ECNr dGmGckm5rOZFveN0m6pElNBrUFChpBxReajKpdvKdlQbHaqyzMZaMXMoSkbSKmDLoA3an43SK612 jmiA6TOJvDWskChuvjujNY2jlzIOHBA1AJGtT9URtVIACHBKuriLtliLZvbMUzDFDAf/vX12eej1 NuXVcAs31X6TQm78vmcVODMRIiiiEw/mVzJQv7SnlWQdI91k1jnyLmmdjGNJn3f9LdgSyFWxz+xk FQl8oA7cfJkahvbEcwbdMASq3+yYaxvD0MaDGv4J2KHgMbAgMpxlsqnaoVV3srxxCz/wG0CAmk3m HKEd2ild2rVrUoEyd72sZZm4PiL1s+sT0+DAid/gZXpXNV+7XRrBH7pkEQVweSw5pCjImxxh1Lx5 grCiH+CqNvvRHwgnKzTIEi3REvGljIJTIaRHOIAjFfjVEzuxzmLhGDkE3uEt3lmZYHZFr81EqAd8 IWgqjk7Iz+99156Wei8QBDj3nwJT/6A992oSLKk0UAWM2teNq0Vl5J+KnRoIVUX+eGOtwDxpAkcm nNFtYgwe/VnFUFoTLna0SlK1fMs1fOm0e8Pa8Ijf0EhFzCgwHeoxnazW4eng0Q6wKWfbBeOu0tu8 jQAFACu7qTa8KdxAWhEDguPQi4KvfhLMzUsoYQPCQkwmci02IRQeVxOvd9dccSFd0RVXwHvT2MCl oOVbbmB8bCRdiSM38i5ZGCEnIsjc6HF3PY6ul5+LzM+eltdtKGN2GcF2ntCZrDuYrHOUUODBllBj 5HRySWw3plmlrGMgM1EEbzI6Frryx1p8NB2UPruWjukqbdqNWLuEUj6726uVeJHEfP+RQUwdmmhu jaIONMUP92FKa5MDNS4rHDGk0UXc8latT+DMCkfkuNSD35yUTIlC0a2UjiZWo5fGNtHV3a1Q125D JCfWJFcYKEAtAtsS0TK4gRr1/JvmAyvA3YjXXdl99r24hE0lXzIJeM64f13n9671KraxHuYJB77g vlDCo3VaGs1ajK5aXIdakJ5apqVHrftHTEbDD/8cl35Sz1E+chd35uY+xrWanm7Eo874Kc5lj5Kj 5gCbszmbSiVvKO+0CCACNAg2WVoABMGSXzydI2FV/CEEiTY3qb8ghZrkSc5efJqW8FsTqCO3HzcV rMdy+NqVfKyvRQ8XXZkWCLXtNoL/F4URL1Lut2bKp2zNp2hK9VcR9al3Fc/E7o9ssZBsl3L+yRNc 7++eqX2Jjg+a5zTQGo8d2fFnqpKd/qcqCz9QA0TwkIPS8Bn+2RA/+B3uiCVd8ToDCBtLHxsfhkuD hoeKG4WEjY2EkoYGBicGGBUnJxUjAJ4AEREKpDkKDAUXCKkMCAQECEIIpwgMDFMlpzAKUxNCqLUF QqoEKa/Fx8cLAgsBzs4Ezk3PzS/NARAQAQvc3M7X2S/iLiTlMhoaPlBQWe3u7/Dx8vP09fb2D+0P +/waVVUSIDSZpuTZs2gBXlULIC7AAYcGsTnTJoEEhAdQ1PnQuLGjx440fISkEfIj/0iRKEluHIkS ZEmTLz/GNHlynbqQGXPS9CHDyQ4mO3YgCRo0RIgdRpEkVYqEadMQTaNKRVKEatMiP3hEGQJpA46v LXCowNGirNmyKlqoWMuWbQIVb9+uXbJhbYIESxIIuitIkCREihYdcvSBrqFIjiJRqnTpEoZMIyKD UvAkh61WtWrJQsDZgjDOBRj8QiWacywEFjjDWg3L1StjIl4xQ6iEWYAmELxBeLFtwYHc4HBnGy4O ggty53xo4LfvnvPn0KO7Y54vC3N0VWS8ENiEmwCD0b4nFO/wgIQXEs5Pe6jtxe8XKCDo5DhfpkeW MGPiL/mSJP+W9u1EE34d6ZTTOv9GbJRRR05AhYQUURUh4YQUVihhB0VgqGEHP/zQwYceeshhVlE8 gsNdX6W4lllihRXWWG3ZBZdccM21hF1LnIjIBnpBEtgHJ3zAgpBEKmLAj4T9WAkGlmyCwSYnZMJB BQBU0MkKJpiggGWXYaZaa5wNs1lmnF3mypmrubbMAq8EsYAS10wzURMH/PZbAOcJNNx7xG0njgQo oFCOERoc2Bw/0iWqaDzswAMFRlk8at2jGKGjnAwuMOGCQCE0gRAB34HKZhCgGtREeqjyxt4B6GnD 0EXzLQjTfSu1NFNKtf4XUhW6KqifgDRlpFKtGi2oE4H++YQUUUENZVQITDwrrbT/0Ub7rFJQOegg VkRw1UgCKYZFVlpnkauWWzGudWJbd8EY17s85kUXIoANYq8i9BJimI+BHXnkB5VUAuRjBI9gJQCh kELZKaUJkdpqqaEmsWgEFDBFLLacKcsrrsyWjDOhzhbRN9hoc41u2gxXsjgkvECCDPQtR92iNNc8 Tz6IWsePDCQcJ04TvBV0zXjKbPMMq+6lh557DPG2kLH7KChTfTv1B2zVIt1aoEc24ep11jvBXCAU NCRIg7JIRQWhhFIU0XaFb8Mdt4UXStgDD0B465VX4Y577orpBh44iuDeZfhddOll2I8/DqmI44wr csmQJ7Bg+eUscMABBpYDwAHC/5/n8sQUU8AgxOmiiWaBEK84bAHHaRKw+umyb6yE7McEEUQKxpyc kDO/CXTbz6fO4MJ5f4qjfDlVlENCduhQl7M+Nlf/jvT9FIr9A9FzL7M/zlehvDULNHHDQAHACXIz 0/gm/AvTIP8nq6xK0MQ6GUUtdbFX998/gR+h2q/+57+bZA1tSIEWtLDFlGwlJQQQakoEJTiVCFal CDUgwgmG0ACvgIssYFELWsgluBKi6y0n+srheISXHtGlK4sAzI/sVYhCJCJyhtgECyrHOcthQHM/ BIAHRKEAEyAgBafZDAE2lozWwI4AonGYw46RGgE0cRkG8QZuhIM05cnPT+N7Af85SCCof6DjjNuz jhqtV71H4U9S8GCOGr0nPeygoAouGAj8psHH9sEpGrh5z3Z244yGFGc39QuATh7gA4xsjWpXk9Ws Jqm1YuGvJbJiSSX9ZxP/nC2BU6HggyAEwQdREEJSSOXaimADuvWACFHYQAdzlKK+mVBGt5TR4U50 OL7opUcwTBIOFdMvSgCMMVByUiYec7BOeGIFEchSDnSgCiQiQBXEIMCbnniMWLCONaA6hkFy84z2 Ba9O0oBf8pQHNJc573nPq8IZ55lGNtqzOpF64xsjxc915NOfWehe8wACv/INpAkFUZ+oEGInCDwE aNhwTzgGGdH7dS1/6mCkRrm/xhFanQRrAaqksR4JUrIB6z/4S9YnEwgVJiDBpS51kClRqcpUjtJt bWtbCnAqhR9QIG9dwQHfxEUWs6TlqOn6WwnbVbgUrdBwNfSRDWVor3vdsHGPA1Iyn/QYhAEAA171 aglE94QiMkAVZWKdK16HABs08RUPeyuoBPAd9MlpZBPJRvlusxuWIa9572weCs4Rve5Jb434tCfN mOPGQlFqe3XcBzp6JoE8GnQZ07AiAdqnEJL1phm7OVnKcGONQAAAIfkEBRQAWgAsAAAAAOoBZwEA B/+AQw4OQw2Gh0OJhw6HDYWNho+RjoKDlZaJmJeXg51AnZ4OQJ9AA0AVA6mjqCutPCsjrq88OrW1 HTq4Jjo/trUUwBQ1rSupA8VAJw7KzIQGhs+FH44NBkMGzyfX1wYOFRVD36fjI+WwHCMAAETqABER JfATDPQFCAQiCPdBBAL4/RZEEMgQ0F9ACwWEFFgoBEGGhgEJSERggd+/BQIC9AvAsWOAJh1vdMwY 0qPIACczqgygUoAAkSJdyhRgQWYGgjgJirCQ4UiBnjEyiOgJIgYIEEdiKD1K5SiIplSaMqWSpOjR GAWMUjFq9SpTq0uLcs3q1KnRpU3JTji70KfPhUL/bzoUsbCulbr56CLIMcFegRx/A+vLhyCIiBSB UwRZvHhBkMJBFiwgkEKyZcsQFkDY7OKFCxcyQvtgQkNRoUynE6WWRImQ6teZQHWKLbtThdqDBjjQ bUpUKlGjRvFuxfvYMR6vWgVbIcxWLx27OqS4YMtEMGEUiBUzVuHU7e+EKMFW7ZrTd923TxkrF4vI inXs3lEwMcFEjvsM6lLkJ3Ajy5r+uGRBTfgQRMCAAwohgkEL9jMTSixByNEBBwRwAEwcwVRhhRNW qOENIL4EIktKyHSDSxC+xNJMMg0owE0w3sSTjD0d4VIGMSQFQhJHWHAEDGU9BQIWTlVFZBJYCMET /1dgKcWkk075xJZSC12FVVZKrWWlWXfhqNQRR9w0lAhDFUCmCIYhcKZhdAHm10JqksnYnHQuEIBj AUAQQBCV2ZmZZJvpCcELmxE6qAskhKbBAw9AYYQM4ymCiGmQNDBba+Thhgl6hIDC3W7G8LabbKWY 8skA3RkXCyyxIMcDEavqEIwJPehwwa23SncrAhfkYMKvv1IQgXvFoPJNd6d4I0imkZYHRGykfNId KiMMwB5zRLBjwjsR1HffXgjAaYGaB5LLkYA0BaguTwMuKMBODgpQ4rklSQghhSdZaC+FG0oI04gn ojQTwCG+JKKJM91EU000wghmUmEmFZRWPR7hlP9UTWHBJJFNHTGUUVU5KXKTOhYlsVVbFUDkWlgt FRbLVN5UAMQz4xWXX2fSZSabBdwF2M8FGMaYnHVGFhmejkV2551+cuRnoIV6psHUockABRScsDbp I5GKt5olnV5iKSi3DVK2p7qNqtsnnQpHCnrHEKcKMUQkF0wuznWgt97U4f1LLTUIw5zcoX7XzCjL qKbNEItrkzjibCPrzTHXtgLAr9xGQN99E+RAEbkEPEauP/gAWNBBNDloQT/xnigShR9ZyO/sGXoE e4QcopR7TLyzOG9LLAb/IoAZ3HhjmAMCleOXTpYcJpNHETlkWSCDyWRTUFJ/FVlFzRwWlCIbNYH/ xtxzRSVWYmHZ/UJWtB9YXW6a+f4EE9xFpprh2sOYAEfvSefRdgKUZJqAmTwRilCfIUGiZPAZGTQK NeWZTSYQUR5qjCeCnPBUJ1JxG2OgTVTGQJwoViAt7myHONWaBXKUkx0K8KIWJtCbrTrQN1z4YhjM qYEOtRPC7wTHG4g7QTOGEAUiOqCIJxjFCablNmqVwz3AiMB8ovgO++TgAgkhF5nKJRCM7EQmO6kJ ghZ0IgeBiHezO8mGZne713koQhjKF0yA55ISyWRFwnMXTcIoIwS9iCBgitHDIKY8pWABCw+DAZHO skivmOwIWEhCVagXFrF8CUdXkdhSFjKW8oWv/5JbytFbqFSXnpkpZzor5ULo5zk1AeZ+aGLMnpiW NMkEIU9OE1QT9PS0Aw6KBIhSoAw04AMfXC02y0pmJLhGntUs84LL0pRsfpO2tH0wbcEhxXYqcEJi 7JAH2HFhLW7Vgx5coAMISAFlCJBOPk0nBXrz1Xysw8MRHGscbFON18qTTGS2xlriqMAIYBWLgUox Agqwz+YYABiKSKQ/8HIJ6yTqIok2qGD/EkkT+NWh25GkJGyckL7wSEc7tuRAJjrRTFDaonfNqI8O s94ghWCUHlkgBhozCgxuYkggWSWn0wMBT6EnvebFAAbLGxn4zOey74FgAkWxglKk6rK1JAUuGf8w JVxKmYP21W8hXbUCX+jHVbHaI5aPQVPS+KcPyAAQUHfazC7zBDUIBFNRUGiUD4wAttdQIxKu8Zoi GAFY1xhWmqC4RKhGpbbckCqbHIysdmrwihGAszm2KKc5+Zar6UiHhraCoax+wUPiqCeEbAObJUjh Cd0kohSoMIUTVxWMzFmRAW0dnQAwEqCNxKsfAjFYujLSDyW4Tncc5dAa9YWhN470Brs710QPNCCA 7OSLE31Xuq7bLnYdL0Y8EYJMPxmDJYkMC4DEqVnMggWkWk+RJVuqyH7CFU227GRXioFUs6K+8K1F S+dz0k/wQiY3WYF+CHZfATrXF8+9Ca1Da0z/6GxZmFo6zYBQo2uhICCBYFZhalDQwNWgoInXBFaf f5WUafpZ2GkOoBBmsw3ZHGvNtkWrVKhiBSqy06pZAOOygatFEXjxA70VQTpHToGSb+ELFwaOGNYy TrHeZorDKSM4SUyGA1ZQgSVG2Z7eaIU9AQCM9xxUc1dUwAUG46AAlEgivY2zcNVVojOipAkgYmNK JBRSDqFIpCwJmEQHXSLTEUSMAgojTWAqo6EcukZgYleMHgLJ5YWpRl6KgZIwWdT+hglLovwkUrBi PZOJZdTL42T3zMfJlj2Velji71SvtBC6iBULfVnwV8maP7D6zEyQIQxh3Go0di4mBenUTJ5A/wIB kEgmAL58gQIRVbVFNYrEYYuUPpl5mmU6gp/9jKYlLMVB2XRQVGqrpip2E9vtoCpu1lrBZa9jghpE Rwc90JuS963kC8ATAdKBzi6uo51qVcvdg0gt2z4hbhH+RhnsPi2X0WG5EVQxoQzNT1unG2c4C8hB xpWXikSEEuh6CLojOgBIPpqvDZ1kIygSCW/xEdx4KUEnQiCIS3fu0pll9UdBQUh6AXnpntwk50C5 tBgD+RPk+QhK6G3LT3iKvC/paL432V6OZH2Wref3KS2jagEsiZWsSlUoti6l+9p34KdClX4KBrYq wQrLs4Jr2BNW8mSOBrWnLW0zJECgAlEgg/8qDDOvWcA2sw6LzGWlWNudUm3WHCvjaqabsTQWYWxz HNlWhVOctuhAkfUNTwLYgAC32vc5+yYrIgRjhVAOVY1du4lMnApUaTuWPYEg5idmh1v26RUDbiUQ fRzE4/5wF55F/maUNkHkJcdziJTAko2oNEX7OhdISJQhlWQX5ADaI4LYxRMBKUW8k875kpIesSPk /GEPOXS6ZuSW4kksRlOn0VXTS9/s9UgESpFVAfhzzQNqsSYzAVZ2NXN/AogVXdIzB5ZrX7Vgd+EX ViACQLMX97MzGKgPopNbEkYAlpEnB7AZyxYC0HZACkQCELCCwjQ1IvZA0ZRMERR529Y14qH/KRnk YtO0QT7og6iCe+2WCsTgKuBUA4BTC6O3N6knBQtgA8jGb+ikN9ZBcLBHhO72QwknCpUAHsdyLO8W Zdy0AgTVQu6AUE/AULnFZqXzff1wA3hWcgJzZyAifRxFfWdEABKihywXaB/xEhWycv4wEgGyIkog RquDOjhBfjvxcwfREwzQI5hmAeIVJkiXE2IkJuV3I0Ghc14SEGQydWeSVZNWdgH4dEEHMRaTI0BR M1sXa1PnMmQxYCAgVWKnMhN4FxGIYGqXaxe4YO8TJ2ySD2wyGI9xjLYUQM0mKMvIjBvWgoEnbVUg TIliBCKWeIfVV83CTCUGG31FeZjnDbnh/0HgeE1rI3uyV1ry5mNImFm5sDek94TTkSv+RkM9sC0E px2xt1hU9ixDIEKlkgixRS1cRgzl8Hsr8A4AoAATcAG4ZQ9tFQSk03ExF2gbhXIpBxMbhS8XAhPU 91y1g30aURLqEiHa5WbpcohjJCAH0YhTVwCPmBX/hyPI00fzhy6LlhPF8yKX9hIvRSZo1yKaiBOX FnQfs1RN12rM0xZOIoBQFXYK6CRSxTJrwT5QFRVM0RcIRlbwU2t5gSZoEifEeGyMkQK7xTQaJleB 0gQhAAEH8AIS8AIHpILAhCigUQXGBAVZMBsS5EyNFzaToAkVVAmVMHuaUmMu5kHUZE1YSP85ZPgq 8yZO5QSPNrAA+2Z6yCYd8ARPugB6FKBChONui8UJWggcoGI2YChQ7hEB60gfAFACCvAXDOU5eZGI cVZ98nJGGnJyHNmb+KIh95IR+cJcuFMhH7UShahShVYTYbQT7kcQWYFUOeeSYzQQM7IwX8QiX+Qj MDIjPJF/KjUmeuQSQBkQNDIj+deAnUYU0NMy+sUVMMNJMNOeVmIUWLBgr1Y/YzUBTfFVVhAu9rMm eREnniM0aaVO/HAZBmQotKSgmlGCgyKXEeoZwjRMPoCNJZZYM+iNzZQ1/jQ2uIGYp4l7s+dBpYJ7 kyN7q+IqwYCEP3ABL2pOuaIrNCSFq0f/ThdAKz9AAa73Y8kRNyTkGyuQcKpQCqIwCMhQCqsiUAWV kBYnLO6QAzpwH2tmd3cXEaETIAE0EveCXPpyIcJpISJhXOdyMHWmm8Q5IkrgICBxIYE2E4gmRtcF Iz9BU0onFMTjLt4VfsM1POD1UgpDfipVE2dEnuTZnUPhnfpHdO0nMRpDJBHjJIsEVGAyJF+yXmah X1QVM3PBPqYklnQxNMJIoBB2NI2hoAuqlh6RJ5dxKIHiAr8EGqKhl9hmCJggQbURbqhBmJYyeZgH oqDwbejGg46VWpEVKtUSNyvEA0HGZLjQAy+qmTTkb1CoZJ81HeZ0bzyaHcQBC+u2Qcny/xu5MQ7f 8Q1cJlAC9R6xAAAWZwIJqQD38S3h4oGtxA8BojQdcSFN0KZt6qUAI4cxUXIq4lwupzsQgiHC6Wck hS7cpXOMCIqgCEY6t50uEkY88UUNE6gIkgGF6hKu07HvspNxamg8oYqPJjHWc0iiBBQak6mKtDyZ xFSsBpVBkTPA2Bdxgj+nlBdpNZYQphiWaTSOIYLK6DQEhIJtSVeLkZYbRm3EdDUYCqKtYYO5Cm6b kI2RlzaZglglKq6qADfiugLDYAzJAU7IAQxMdk6gdU6b6W/81m+4Yiu0YgvMwa0FVwFRAARR0B3F 4BvTUi1AMALJEAXsUTnZAQDvkZDCUv8Cl+Mt8VMYFwAvdnKWq/pGu/kRbxSmgvYRMeGxBGNnF+Ih GeFyeSYwLTV/cloQeKqdM0EmzLkgpsMwfoqIRzexA6ObuIuTPHe682d0mzgUhJR1omQ9hrQjOZVT P7Ij5GVJEFiBPwGUPYOzWXVWZ4I/wjYY+LMYaIURjnEZmjFXmqFsHLFLgYIZgiJtK3h4iJcFe+mr 48Y12phttFG1sgFj6jas4biF47hu32oc1mJZRXgdtVAr70h6mimPqWetNMRZuVCFU/SZxQALpRCk pSIOpmIqghu4Yva/5oC4rHmGFAAAExAB9/EX8wCR95APpLOq+dohsrNcvBNob+im8uL/LyqCIbWT sCa5sLC7czpHnoimneHHp3G6MIcqad21kynluXmmUsIDpy0lssUzqC+VihpDvKIkPTCQsqGWUzFQ laA2VT7hvNOri/nglX4RLnoBbBj4lWkCGbU0gmjJSwE0gnYSBJmRlnJ5V8VUTFBLv+HheFMreY23 ofPbg+NYG+lBKqFApGszwe+GHO5xWaKFb/p2rU64AE74tilQrf2GbzBUZmWmHRPcCuOgbmXDRDmm e/Y0ZhWgDvNUH50DrxMAA36RA2liAXcyiBPilh3FRvwSR8Q1iDFhR4F2XK+DsDe8sFCsu4n2xM4c PNu5Ryy5iOMpInnWkblLEIX6L3D6/8MVZRPghSNXfEleEjEqO1ShFj5KyUnuk19zpx9ppzNqbL3W mwP3Q2yRIQLP5r39nMeWYTRLq2yFAhrFpAGhcW31Gx6EpVqI9W2BjBoQjVg9WBwhRKQ3Bsnp+L/M cbbX4UK/orZy62+a7Lb8Jo/S+it7IyvZAXvMmhxiK3tCWMFA2nvMgbjqsAIKZQLwCq+AkR94lw96 SC8u7CHJdTvbdwPUx4fWpy4yES+eiyLQTJF6FFFTPWdYDcXhnNUeKyInd7DajLto+rFQHHKEmpOS dhODREjrp9aBJF6P9DCq1DLTWz+2SGs9Ez9aJZanhM98LYyL4VbJ2D+2RFe4ZIK4VP/HUOMZElCh wyRiUOAD36gJvSoIOShuJra1uFGYfMmDIqoMveE2RQpZEXxZHn1ZRfaOtmLSnFyt1SodUEgdSGYd VdjRxCAcyGAcqfyP3vENq5wOh6uuJIw5OaAA8LqG5MIPETK+tPPLEtAvKFfDKnEDZnQu1KcuE1Vn wsPD+LBdciY8Ttyxc2Q6U01SH3tG+IJcwWxyweymv4m7ShDfwRN+RgcjIWs9DnOeRPkwNPUlpiQl 77l272kX7iMCEbizGOi8GPgXQAOW2csYSUOWSsNLQmtLjXFLS7Oge5y+w8RXGppYIGoaVkvRIlqO I4qiwJEsoHIqxmBaF1wMZesqgQP/eh1gAn2TA6RnoykgBQrMtjYAWjL0HJP8mTBdUNWSKoKbt4Kb wVFAuAMFC5rzHsIS0r5iAgWARW0FJxIx1CCxfRTyAsolAVfw3MT5fDMnctOVXWheiE9MJtqVaDwB XIaaESYVIgEjaOF9ItfszJ3rsQdbcrDT3oCuzYPOIWId3ydiaDtZ3zgJqPZ9I8XDMOLFijID4COD BRUY4BT4i2QlVvZjF/nzSmZSoPfzLf/TGHvSNLV04RbWEYEil77EBIjCBBqK2YMw0Tu40LlO4jq4 4iQaKsFBhFKGHPFWts0hTr+y2jR0RQfM45ysZFC4wKm9C7/wY3W7rMWQwa7wZYFb/7ixQHER4MHC ojnBlx8XABEONVEj9aVH/dxuet0k4nEcYUcO8oZOHSBlxKdfdCbv0iB3dEfQdS4Fg83BM0cppVJO HKYDW7ruzd6hG7oSQOYod7BifSIlEnItYmi8G+nBw/Hd2RNIPL1UkhRSFVWmJJWmlGBsxz5d9RcJ blYIYD/43Ma4HNh8os+sfsenvrSzxBF1xRkQUI6Tp9nze7UUrVr4G3kLNyr9eKTBXsoGeQyfiR2y Ak4wJNv9tm9PeDROaAOV6fWxzVnW4TczLguvEGWmEDcZbC3kyqQjwAGv/B5nqA4IZeO8Yg/sVBG+ 9cuz4+734mdwxnEfGSB2RH1vZv8wIBdcLbIg2TkwprsismNnIcLMNiz5JQeyYsruLwzMgb4hEiCm sDPWh867XU3wV/0iLVJ09d0TWUGKDeiAoMa87PNUu+jpuug+fOEzbUx3fv3gyFYYEXlLdBKRYxnY aoLqdbUAG6S1kXer9Stunf384gqEIhpbImSa5LjkxsF78lbaMq4DNdALaDtku5D1z66ZerfJ1noB +ZYCR3YBQ9YDrwfTrtCt/lsqyQoL2Z4O/A8IABGDESY5FxcIQggEjAGPTTc3TY8HEAeYBxIHAZkH NwIBN48EoQICSgIEAaiqpwujp6yxrqcCowenoKWhoEqPoKKsj8K9spKiozeeysL/uMucs53MnaOd 15zMmJvWkraS4OFK4J+247fgtuigthkWpxbv7u5HMUcZR/X3+fwxBTFYQMSIAQJGgX8HC0xYaGUh iAkNrRyckMNKw4oHReQoUHGjRo05RCAQGaSkSZMLSiJYSXLlySABgqSEQDMATQgVHOjcOUTnkJ4O gPrcSVTngKJHkSY1WhSpgwE5dw4AMqAq1alAsq6oOoBH1RU8eFAQS4GCjh46zHa4oCOHjhQdUkhJ QbfuggVS8C4IscCGDbwpEHUY/KPDDwomapTlUSPsiq1UH2MdMAJIBSAjRlDOnBnAighEABAhZILB BQYMVhIQsSpUshuXDrzw9IkS/yZRCwRQGrWK0iNUw36xarWOeCtk1kTxatZM1vBYyJw5w4WJ+qds yjJV2rSJtvds36tXQ1ccXKpv7HSBSu9Nnft27uBZyGchQ4YC9/EN3A+CikD7Ax0xARYxNPRQQxM8 tNCCEG3EoBUVIZjDRhNOwBICOayk4UkjpSDShBQWoCECL9lk0wIQLMDUTkA40EADQhEVI08OUNWU VE9VdWOOU7HYogOXHXXVUVZpxcNjknVV1lhhkXUYYjqsRdcFddUVxFx4BfHXXCn8tQASa3WggwlR nlVDDxQ8tuSRlY0QVlUjPAZEFJhxllkFAIwgmmgmKFCIAoggIKIFvJAyyShNyP8mQQC2bZKodpN8 8tsv5fxiSiuiHAOdNL0Mg5wot1UDzDXJgfoJNOEhdx2opnKCaneZXKFNdeDRNo2r4Xhj3nnqrRPO LZwIIMJ77MRXnwDy8KNsDPXVsx8W/t2TAQjUJvFQDAsqRK1FFhVg0UIHSdgQRxCSSxFIHgVBkggl gbjSRhyJGMRIIZkkQgALPIIiBEGs2NRPQ/EEsE9A9fhTwU/tiKOORCVFpFFLcfXVVkiu0NhjRCyJ 2A86jKkDW3FVSVcQKdxFl19ddinFynAN1kEPF6BlgswRgOUYD5pVXEFmOO9sZ2YZgzaaCSZQEIEC gGbIEgEyuUZqJZocMMMMElT/TfVsL1wDCTHE5LZAKfkS0Jswo3IdnCS00oYLNtNwjap3TxejXdu1 Rp1JdxJcgfc2tk7TDK65Br5OOb+upwuy77xzizqJ1zdPAfzgcwR+zu4HkEDUUgstFf4NmODnEGX7 z0I5JOggReSCyFGI7lI0oaClUzjBExRNwBGG8p6Eb0kpKux7TwMH5e+MOzLM440SQyyxxFsN0NgA jx1JxAplzWxWYWl9DBddUiAgcpV/2bC9XzZEOddcUb48JppjpVlWxZJVQP0KQHOW5whGEzF0n4Zc cIigJnFaJQJQNVnprWpVw8RsohGNARIDAsQQQNNy40CzlU1U2vGErPgWnutA/4psy2DbAD0Bq20g MGrcQWAJPTGbTkhggcwgR65uMQ5ynKo9OHyPDhVnH3nYZ3JApBzk8EOQbVELIhGJCOgytxBsKWQC DJDIQkqwoNLVrkGkqxBFIIQ6hSigiqi7QAEUkKH/vSQlMoGAFJbiL4URzyc66onxEpajOhqPK3Rs kcT0mLzlQc8xYKEeBdAySI91TEwfixJdQpYC7y2yS3dBGcqkoMiWDeYsYzJLWRTzvorFKU73y5No OKO/QRBNASZARKCWFgQJEkM2B9AbbbrTQgvachgwaaAAfTOMV2LDg7Qx4ArrRiu0uepWmbAGMU+o CRWmkJkJvFt3phFNVIXjhv/muUU1xLOeZeSQcY1DVg8dZwER2Mc+VjinOu9TgICAwFtYiEg8vfWQ I06gBArCwgSwFbonMmhBVPznPe/5RdpBUYuoE9SFFIohRpiERCbpXcIetjAcAeVHDWuYw3TEMIdV dKLH45EfReq8xhxJLOxDy1kQ47ILMPJ7J6NLJPuispWtzGViyinRiva+NMHvMXrijM86oyfRFIJo TzCBI0kmAnaVZBUjJOAsbaO1W+orFF7z5dYqqLW7pQ0aVzBg1KB2m7KeKhRm5eAyYfVMFDiTaidU oQmrRgLuuDWZ2LxmXnWVw3Sogx31EYHikCVOaanTnOoE4jn9YYUCNdZAtsv/ABIP9DmJWOGIMcCn Zu9ZghJQAQBU8GxnR0vaKxq0BGRMDe42IkalMVQlLikJX3wnozcGZUZsjJi/OMoUjvLWj3gE7h9r gCSNDbIHRUOLmFKQPruUTCZ9ie5M/XIXmz7ykmMi2pIUo4OfAtVO9yNlKU1w1EMkAgEpYRrYpgFB 8DxKlpMgm28EQEGz5YtrULWNbUJFQhh6Z5gkbFtXk1FWuqm1mQgkAVyrhgIFS4BqbkUBChbs1hRW eK543esMC7e4w+kQPhkQAD7sg6x8zAOI/YiBfvwxj/s0NlwJ6hYSufU5GDMRBFT07Gd3/NnRhnaK o/2ikCfwRRGJZHUMiJ2G/ygU25LcRaIyEpiUhddG2v7ktx/FcsT6yLwkRS967euBmMX8A+V+LC5S om7JFvBcL/2lZCiTC13aIoUOUNKQadEYkkYgvzRFgM8csB8AAi0IQhytNIFKAcmeWt8BS6IJu5mv 2H6DLyXc19ICrKonrgFDZ8pGqtyxVai4VuBtUsM1CqQmCiVAAhRUQcIObvCDEdjgGZCg1RKmda5L 2B1rajhw7GhPh/+aHnjIJ8SguEeJhyityOnjHhY4CLYKRE+IXIufl+Xcgh4S2m53G7Sc03FARwvQ HHeWQSCaUAEYQOQcMGB1BWithvKVL5ogb8pUBhgbQaqU3vq7jhW9o3CdB/+9rhwpemJBafZamshK nozN4ruLxN+spTcz184Xj0sRmPsWj/FUz8VdQXg9k7HQlPKoqFwliUaSXphoFdLKoEQqxFYKqNJ3 OFm14AtoCctnslqul6DmNFmVjQ3yrapvk9StnEnrBFd41rmmGoSdLgEJP30Ts0hmrvK6OA7rYrDu iUc4U6EEXhH2HaBY5zzq06wA2acA1PKHCOCuLYsU8Z7aTtCNOUeFgQJUoKT7YuyI3O4Q3W5EiB9R DlwOQQgwAQI4qjJtm0JRIGU0ox2F2Iqsorzl1YArxN0KYxRDhJUOUkwcMwwjueTmFPBlzRKPvcUZ uXFEXpJMeo5TBNznGc//BNXk0xu0IIgWqAlRaV5PHQl9b1424tScUDVfvtgabbZmKorpdJXrNDvI fa/+N4EJ3DnTrc5gqzcY1q3GtVtnMGFYP72s1PHmDT3InrMGu9i2iIeH9z9s/YvzHYK1TuTUYpPz dm/3DwIBd0akbd9yLTDwOZnTdxsRWqXTWaBVOgAAAFSUA19UO2SUbvFSIUpTRhsiE7zzAi4weTSC b/1meZa3UZT3WxxlGToyJAMHFiZFFhozZmLmUjj1SNwDcWwmU7HHF3oBGNzTMmWSXR3DUzWjZ3ki ckAjNH9mVINARn3ygSMSBCKyCkGwGtF3KblRCqzAGuolNhJ0c9lQCS8w/xvPhGCelglu6H3IxFbf EU2z9ELWp0Lpx2q3pn51BVfnd358eHXf8TbeBGx+NWw6pARgl38flh7+JyzDEoD6Fw/uwHb4gB/n ZE4I0Vj9cSDfonf4RC0wYAUwoCA4NkUAFVoB1WOx4y4YkmQcoWiw5VoZchJoFAQQ4AKQF3nBM2XB 6IJzZEfG6FsBxxU2uDzN04wWEz2KERZLYgJiglyXNBjbg2ZUIj7hA2d9AV1sVl1zQT42UARrwTEX QDSJpF2d1HufQQEmJ3KjoT+jUV6G4FqNxC6qIUEiwRqtRADnEX1N4ApoeF/1BQEvQBNteAnih0AN 6VU+B02YICt5I0t4yP9WcQWHcEhXFdZgdeVWdaVCIGl+hAh+3vdf1FAOxfFhj8g44BR2H2ZswpI4 6tBD53QPCREDnihtBlFE/pAQDlFPR1RPDmE7CDJurqNuFaKFGOIuJqFoE7JotogS9IWQvrhluvUv toU8UYEUfMQVl5EVUpF5whV68BMnY0E9Y5IxUcIWbVlJ2AhJeWEDRmiE0lVdkQRJ4tMyc7YWmYQY RhOYNSNyn7ECobEn+pOBGfgnTJkhIrIS8iI2rEGQBDmZpEBpFgRBO7eZbVg1DYl9EZlAeiNLsRJL APZfsnRA2PeHrfZqrml1VeCar2Z1GqAB5wdXdjNLbRgA4ucdyvAr3xD/k8dBWGY3Do6IdvznHsOi Tj40Ym+3Hy62HxKhHxkxd9gmEf8QAw/4D+xmOzlwblNEBVYkeBu4OkrWUN7TlK6FnlNpEzeRW8W4 IjESXMElUjrxlVOhjMJFMV0mGf5pMdBTAwJqMR1TA2SSZy5VBCCDceADcUgAcV7CFxEXXSWTFynz SEUgBTaAZmKyU3nmPoEJmLsnmINgNETjFjmQSnWhbiNiAV7jGmD4jzVHam2ICQzZhp15a3xYdYEo AbMJa1QnkUaXN3nzHQSUQAQ0mggEVyHZdKzZYFVAArE5pVE6pXVlCRoZas4kfnW1c7l5G8BGWDI5 WPp3nGJ3Hmd6A2iH/3+nMCyO02I/tE5NlQEi4ETcmRDS1i0JkQEjcR/UJiJwVwIFkkUVqDoYQhHe QyG5OC+L10gZ0kiKFqko4Z4I+Ys7ASPF8y+bR0dEUQFJoUc/0iM5glHM6IxexjwBGo08oAOHcUiH xFxkwj0bOhh+kRchgATUJQV2iZe8WiU+KGd+yRbqWDQT8I5lUTPImj+iERq7VwgpagJJiTsashr+ +DVk2CkNVH0MaQkJxprpd2sSNpuvZpslmX0lZHR5KE0IJk0L9nN+qKN+KGsoYJvqF5u5tmt4OJFa 2q1t+IcvtJm18ilcB1hsqkNp15KK05IiRmKncE7C0omIRadz9w/30P9U3jIueJqdDDAQE/EQCuFZ HcEgG3hPr5Nui4eeJhsEr4MhU3lfNhECv7OVReGpd/SCP+KpoUokfjQkWVFwzHNwSDKgNZAWnNQx LNWh1CgYSbiXDwdJQ8irKMKrEVcXcQkXbOFS68hTRVM075iBn1GPhVYCETABRzMB9/guI8IuTEMo oQBV1pAojMIo30dXtxabUqoBVFoFtUmvslZ1TEeH3qGksuGGJ4Q1VjNriAuuTRqv86q4Umq3f+hq UXqloNmtdeWv3EECfRNC5ZAp5IE4PNRh8SGc/2cLTeWmJMZ2IiZYEWtY5TSnP4lO0hYuBTCxGYst UfREAWVFHDiyH1j/Or+rniO4ZCQylSaYRimybzFIZZyKR0bRlaDaUVWRE8gIXFThFc0DehdjMRQQ jWZBJsi1Uy6FCD0AU7Y6U+E4cbG3FymyvutLMlMyJW8prDulXVv7joWQSYOQA0fzu4e3EZBJIjQn NpJAAIQiHbhAkXCYfnq7t3mrt/Pqfg7WpHnIVhsUVg6JkG3oAiSQkFbph1PXrR75rnULklLqrZar o5fLauj3czqqCTraCbXkN8bQpuaEOMbmODjsiOMkdpgYYg/rsEGsuo2TsPBwTm9qHzvJThmrp97y xBPREKnIioRHqN9psiSYbgr1UP2oizEBE1AWeZrqvJ3KqcSIRxVA/7POu1FYcRkklZ/8GXJgZhZ5 Vgg9WL6LFDJYsr55sRdH6L5e0r5ecoRrQSUZd3v1G5hBw6yGNghkWwIaSEYXgDocaCEc8W4IoAoA GQBKgIbE0Mlyqwl6A2HpB6V4WwUygLenPKUd+XO4qQlUI8pFOprehzWW0Jk42pmg+a1/+Go6Ormt Vpveypos7Mp+q0JUE5IwfGFgihzAGXY9hDijS7oLu7oM27BNJWIuyZLC0rAhVk4H+JMICC7eogAK sm2qSFpUpADn9p2oxYHsLHhmOwGJEC+QWUYiMRIvARMLoLwuQltk/BQ5UTA2chVd6anUy4x+1IyM 8WWBJI2blGcrJf9mqQQz2FjIcQEYttrHedHHdxEC4fO0gCxxXFIXWEsX9pvIJRqizVpeZPS7ZHTP jvmYA0wcj5AKsPBe5Wd139rAk4sCMmC3k5tgrAZXOyd1JrQNpKkJhtvBt9yvubyapdzLuwavgAiv fgiaGylXSf1LZRWTl+iwRjxY8ZEe69TNaB3E4hSJMilOcJof+SEEk1MAMMBY3kIQ+ARFMWDOCUJF BSBaExFQhLeUWDyVEIW2+uxkdyET+LIjW6lblacTNFsjlK0jkw1wIkUVOcMVQOsVQGsxo9cxTShm g2HRcYEIdcG01SUTUgBdtmqEXtLaewHbKbElWjIXLsVcSkhe9fv/ceSFGI08tkgzIUjDzvQ8iwcx IgZcc5gmt7GRNzNwBVNTyr78uLUZrrBJ3bW2wroGfhjpTCAZpSRMzDzqt3nrkXWL1ZugzMy0TBtk kpugwC7Ua7dSDcEmpscizUjs1kdMYvuNiaarDuY0LGld4Dns1gR4EOeEH5AjzkDJbkDJTxPwgBPw WUAGnsWNNEQ23Biij48JwPlcEsYLXZWXlTdSMMkTFTpb2Ta4FSuyjAt9JF9xUnLMqkZbSIOhtFYr FzRVoeFYFx7txz7+x+s75PC7PR+DCL295CZqoqZkCEkjeEmmqABcEmaICsGQKJ1WdVMzNe/qkR5p t65mm7YZpZJb/wUsXMoj7JkV9pkKRLdhLqVAHaUacLnn97hTHZIOpn1vCAyo1n3oeiqQoh6FU2wK q4lsx0OZiMNt/R7ZTM1nJ4D6Pddy/ZMc6w8b+8R86i3vNjoiy1mkQ3jrPNglCzsjQSL53GSMnS8p 4M/Iw0bBuBQJbRWTwRUrUCPSixWYAT3OaOs5OKBBa7TKhVMtldtVsjISZxfI7sfSFQIpcj7oS6El vUggk45LvlPIGgElQAETQAHEPdzB+5ivhYbC8QvUAUPSHVZS02ru6q1mHsywJtSytsLyCt5Pt2s7 h2uXO6WnjLe4xqM/ba5/y2kkBEytUh3GdIjWwVeFTliG4x7X/P/NinMeaEp2K0ksbMoKhUJY4zQP HA/XMTAFIHAEdW3p+4TJCQFZ+PRu95Q6gy3YZISoGnHqp76e+rho+LLYWGZRQwCfUUZRn5qfy9N5 y6MVcOwVvN4VAhp6RyKg3SvaZFLtOl61NgDtHf3RT9bHfAEBuyp71WUDVzKEVBsYHZCiSs7b9uus ETB82n6P4B7TrvWYyUcAk4AKvIQNjyJNIZnves6RQBrMev7vlWth6E23J4zCrPbuUAqkL8TndjhL rjKRMdRBgR5L2vCbiuhXFt9hLdlNhgMOmcIelIYcAu4eZpe6b3cEQqAfMOCnCMGxUBwuDwgC7IYt 5yzPOfa7jjn/vIhXLuvpxSqiggGjszC44vq5RzUC48x4FdmbqsR1Utyllk3YMTDjg9tItSHN4ynS vh7N9R/97Eeo9e6LhHOhjcuF9vVbCKSh7Y7cJxQhZEzmWmorBK0ACxFECbuBCZDWc+EHCBKCEi8H g4cSJCiJEiiKgySQiJGQkSRVmFWXmiSdniiYipskL6WUhoJXhqgHBwGtsDewqweyqQequRK4u7iz tag3NwHDwrK1xgI3AkoCysLPxtLE1LLFAdTOxNDKAc7OIhYC4hnjFufjzuUZ7BlCR+xCMQX09fQi CAVWDFZWMBMxGEyYIBBEiYETSihEOCFHgRwQrTiE+PChQwT4/4LkCIIgSJAFAVIMGOCgpMmTKFGO dDCS5MqWA4DIHLBi5MyaMGECwQmTB04eNWqs4OGTAoUaFHTU0MFUR48eFzqksJFiKlUbWBeEkBJE ygKvIb52/ZqCq1evEBaoVQsWQtiwXj9WRZDiQt0LF3KYULDXBAUAEQIDGBxBL4ASEUoAhqigIYMc +XLgQ0AAH4EABJRca/LqBucmrji/KnWgUGlWqBEJokTpkCdLjlh/0kC7Nm1MKHInypS7E6EXjATx arWrFyzhv35dkTBjRqsZzIsPRz7LOPHkxKIlm3YNG7BjnV/FCi9N2bfz59sJaCeCnYX27Aqcy1Ag xrwC9K3gp/83QX//fxPAAIJACQ3UmIETHOgQgTkgBFEODDyEgGQIdJSCR2u5VBJJQ5hEUkosefjh TDbFBARMOK2gIk8jqUiTTy8OEBQPLQrlU1BKJbWUXzpc0GOPVUlVVVY2kIVWCBCctcCFKaylVlpK erXWW2tJMZWVVVWVA1469GWCCYFFACZhE4CpmAJoQqQQRA1NWGFHGGVGAAECNDGMN55hEwBoTYim pyuvvGIdoAe0xkhpriWyiSaxWeJJJhpUUZukkl7ySSa+JXpIK6pIV11ywvVCnXTFFbccp8kRt4t3 1Qwzi3ixWPPdd8W4io2rrQhz6zDdmJeOOO+Nk4EI4dA3LHz/7LRHTwb2FSDPffbMY98EIExQgEEG VusQQwrQk4MVFT7ULT1vTmahR0Fgs8CHG57UYUnveijvuzHZdOKJNZ1I04o5sUhUiyvU4FOKNAbM lFFdJmXCD0zhBVUKHUQ11QJFUnVWkk6eJcVbIYSF8QIQuKXVyFQumWWWHZiAl1588QVmBBQIRphi gCWIZmJoKgAZuSJwFCcBFmTmjRJzEnPZK36yCqh3x+1SiG9Qo6Loap1ogkmkVchgtQyRch3ppFrf llsmVTT62iKULLdcqK0IKogthqgi9SC0DKI2dDOs7RypdKvat6fH8CKB2hIE/qorbRuOzJ3LaPON OOi1Jw6x/+6NA58AxCo7bD34ZJBPPvUI9A8D2A50UGONNTjRQJBF1lABbkK2UUcYhpQSECDmfpK+ MsnEUr0+3cRiSy4OQFRNyLf4osBECaVjUw1HLD3KValVsRTYW3lklWyJFSXGSCL5pBQBSElWlnal /OX6YkYAwASCNZbY+woU1pDqsFcIWc+UCcHM/0Krk52ocYAmFIJppjHOqlLTCEcwomoaMBsnKBU2 DUDBNlnL2m2u1jVHYKpqlooNCvAGHV+kalC/KEQhVCOI5jRHEaDoDXN8AxwWCicXw5kO3VB4uECF 51a7EoA3hugNzEFOHSIAxzeS6IxgZQ4/k/McschFnwJEiP8//Llig173us9NBHb58xmFepaR2kEg CCvBnRp3VxLcqeRDNMkJiZSnrxQRT0U0etHAYLSioPgRKUuBXlM6QEhCTiVLC0CC9arnlSa5BUpO ChnIJvkRkIUFJEpyklggZpe61IUveoHflwBjAvjhLDE4y0GaGBChChGLMkGoDJ32lA0lUIOWiAPO ASBgiBmQADprW9vcDNGJsUFqgxlM5tc08ADb3OaZkSLBpMhGtg06YhGDKKFwVti306DCE645myhE MbZr9saBVINaCwfHnBGOcAYjXJtqaNG2Vpgmca3i1XmkwUT0WO48SQxoEzcXrMpMcVn1aFa09KMP gTTUQRX/eVPrJjKRCnEkBbRTCxoHUIET/c4BQBiCSEGakpe4RCf6GoHwTKQ8gAXPeDWICYxowrzm 6QBhSWnKDwiJF4idzCpOIkBVCECxSGZMKyFjgls6hjGRTfIrUK0KltBXlZWBKZSDgZ/NVKcQ1E1g CuSyAALEOtaxxvIymamTnhC4S6edphDNaYRcFfWaTXhwg87UQNUkxcxmNjOvGBQbYG2DgmiyMBKl +A1puMlNRVSqrpSKYG64pjXekDMUlmgEbDQRzWtGIjfYvMIVXEiqVfTCNAfsjj+doYTWttZX3+CG efq5WoC+xwL4kZwI6gMt+ig0BgNhaAFYZ5EvYuRzEjou/+2KFoB1xcRdbuwQu0K0EhGBVI0nymMc VYSvPA6lRTzo7k8GdhSiACVHCNMBIZuCl/YO6ZAVoxgBqCLfiRVVLRO75CWhyr1Mdu+nEMtBVU2g F4iYADEGVmWaGqSzIFiRMrIEWpxEMCchOgM0TFvFChGl2dWA1oMTLJs0nVlYvtbGa13joDP/Oljc 0KawH/YlPGeQWEHUkBABqGFiawhZThTTEzLgWtkkSwKtycCunmWUOGNDtmJ+WBHARNUvRPUqXjFO O+dpBjN0VQxnQIOJR8RcE1fLRGKJ1T1VzMARCqCse1SRXPSQSD0o5KbJeKSM6cpzANLixuiOdLog mm517/9lr4GRaAUnGgFPkvfdkZh3KOblwVEo0ANK94Ap6utklqgysSI5ab+aBIkl1aJUrYTvSUxN iySRmhaoYmlLOmBZKQtz4MPkTAGIKQFjuoWAxlxRCHMaK50WUBkBFG2Af/LbW6GTzQ9DilIcLOyL TZxXrYFYAygGLLUlBQrcPIKEhGAFcEoBgRwH51Gh0KCSgcxXaqPAB3llMaasZikI1saxVgOt3YC5 i04dohC83OWd2oZlzUjDGEzbRnZ8tZ3aBuvh7MBIbnd7n2blpz/9kMi3KiqZigahZxzxCJySmK4A oNEka3RX7lqyoX7FkQgvQt5Ljwdp82YXKECZ0QqOkqP/g/XgB0An5KU1jRVOHhKRRWrSU6c0vlGv ZamrRpKUpIQxRp7MLgYmcIG1/qAH9Vp2T3AWhYMQNHwIYAHGPtplirE08YSbm9hMBDylrddFTVPa izIxi+uu17AJ+ZkZxLcoEFFDZi+H2ZUgBF0tdeSvLeo1XrugDzK4THjntdt2b/K1fYwbdLJTbcIk /D2BmONcHVzKCGccnor4OC/LdonFSlYGbqusg755P/U4bv46Qix0oYt2vl8AurDxgjPirkP3YuPt BL2SCuikJv/al4mOJ9OB5WtfLloRBRgGSEtfmmE8DX+TqCKk8dtAqKJeeqjVol+4HFWSb2n1f9HX yQtw/30vCs7ZY54AGYJAKHQYETR0MoAiABLNYEuiARqwUENvtSmJ8GFMZmKcEEOPRW3MVBss9gB+ 5UyPBU6IVQo3Fhzr5EvptBsQxFdeM2J/Rxt+pYEseGLYFlkRNCkvOE2X8DUTNAqcwBzaZFqm9Ru7 BAtuIxzHsCm5gjiB4gp34jj71DjOQCdJNCyeM3vH8h5plltptlv2oB+7JQKt40qu1Hu9hyEfV4BC FBIc8ju+0y66cxIV8DvX52jHgy81p11DgUc8oGh3pCJHUWk9gBSSVgPfV0gAdjJqQRfj93Tr92nu NzLst1/iIwWtpiTlYzJVdQFBYH8ts2Cq9BgQsiVbkv8gbwI7FBY070EAZyVEN1BhmIGA3nQFKoQ4 h4B4q1FNnTVihHWDF1iDK/ZXZaM14NRhhgIJI5QKg4NOICRNmUBZtGF5tnFBLKiBf7WBtrF3HDhY jkcbe9Vu5USLdHNPp6FYrsBLITgIi4Aq8kRwaxUEDPcN5YAedEJ7w/Ie8DFxCHWP9nAPDkGKYyRy dtZ7JseOeoIA9+JRKOcA8ZJyJ0E8OmE8BSOHcog8NYeH40UBkpYUFomRJsAUlZZTHdAjhgRgZLEk wudpTmKSIRMASBIy7RcyS8Vfk3QWQWAxJrMkeMEVecF1ApYXqpQD/OeJD3EBcCJWEvaExkZhzrAA N3D/gCABGipUY+G2TtkkClaDNRGkjNiYlbvIgZhwZJhXNUf2GhMIgTDmWFq5Yn0ljX2Vlhnogru4 gdYIWGFZV43ygDbGQiD4G1NTjsFYeDskhMtARNhgHpDjhF4GUMQCNPOILFloLAi1OZxDRsf1cRhB mZPBPwIpAHnmUYD2XPHShmkEUi3ROyq1EzIxkXq0InjoR0bBA0RgFE8RSDd1U0nhIznwI+VXPSS5 Fia5FkrHftbDaiv5SMTJFo/km0HQJBOTiVnSkwUGEY+BJjazVY8RLs6SD8BGYXMiS8ZWJwRgJ03Z JwFXjiToGl+Zbrpoiy/YgtIIl7ZRWcloKViDWUVm/5VNVjZDxovVOI1w6ZZbeZbTCIPY6DXJRKBD Vja68YCZQleL9yiW4mOsESpG+ENDZJjQQCewZ0Szhznh0DmUg1D3wSz56C38+BA9E1FemHv34BGY 4xHX1Ya5oy8w4Xw5UTA+QSM7YV4jQQTN82iQhhRGQQErwKOtSQEbCXTgh2nq9VOISDEzqUm9uYjW 0zGPKH/GKUlTB5xOUhcIkJOg+BgMoDO+9gQTwH8VpVwU1qFBgznbWScFJAsqtCpNAAE6RlpxhzZV k2S6mGIYeIEu2IJ+qpUZZGSUF2TVRlhWWY2ARY0Y1AmNmp6LClhQwGLwFnnY9p/RFIwPVFd0SU71 Vv9kr6F4aTMI4OhDQYRw6DEfR3ks4LChmQMO9AAtuMc5GVCGPaOZu4URmaOrIKdEAYAAbOhG8BIv IvWZLCd9NXqjkeaQzDqRQ5qaR+EXQTqtz1NIP5IDuamb9+UkyelIT6Vqjsg9LEl1rCZ/H7ObmYgX EyKUPJkXApEmBaAAnlidbyIEFUIAwjaARgRErUCOxUd8IfhLM+RLrfEJD7oJihqofxqN7cmoMMht wFifzEigh7pM01SVkTUKofoosRE2FsiebtmCF/RX0MiwW2lZZ4M1lyBknEV5k1JXoroI6SiEv/An gdlltrVEwNKhmMMexCItj7lm+ah7vIcA+qF7uZr/OcPCjhxBUgt5kICGO8/VRtJHIjAXXsoaaTxK FKcZaSMAFK9JrRv5JUxxkTqwU+J3MvNFbFRBVCeZAm4rfE+XFiFQJGBxauwHSSMDFkvnaVVFF3nB kwzArr3GAF0aIZ/4hfhwimN1ikbJDMTAGW1lYyGTl9EBHXgqQdSki2r5p+4JqArLi115qRVkqVwT l/OZg2JJlT+mZJVQb7kRg4rasLRbuw8AbyPLgZAFCqV7qb7ru36XNaDqgTckZcTwKqwymMfbOIZJ ZhbWHkobq7j3Zp7DM5GpD2zWhfmQOcTiDOwoAr8DR1NbXfJiL29IEjjBEjKho5G2rJLmE187I/sS /4jU2gMb2SU6YLYfGZJZIlRwe36b5reaZIhLt1/HuZKlRnUfIyXJ2a2Aqz/uKjsTIooIMAHsCjs+ Uxlx8h72Kg5ol3Zbhg1zKgj++gKkMJWfhW/SJoOS0p9sabsLi5a0EWQuK8MvaGK9EXh1FYOX0Bvb KGJHpp4Wu54amAUPYMQwXLsPKwMoUFnXpG1neRvSpIzg5BzAcEILxCqqqCfR4E8iwHoW1qpS6Jhr ZiztkFugk72gw6vcK4YtCqwsJ6MlNbXCGr450RJcm7UC45DmNSNEQQQ1J7YIc2kfmVM9sL8S41OU cTJtK6Vy8ZtFQqWSiLeOKD6gZj73hVE9tTKPkf8XFXIBZJoPYecmrnRWEDaAAniGa+UZIbNLxUca ihdOu0F30xZvRJzEb2nLCasBPtBMkyqgHTQ2nSBkQew1FJu6EhjFs5vEzPxXNAx4vhvDyoxtkLWg VxA4cvMpiLM0QuQK2sArFWpEkcO9xwK9U5QslLO9+ECKr8S9xzVF3cuhBfCi7fJcazSaogmHcYTH 7Btp0FcDP+CaPWpePeCalTYUQXEUggjQDNMUOdUURcAURUCIWFEx+bUVIGMlVJJ0mYTJWurR68dp SqeuXboyW4JRE4UXBSCU9moZHTEnsRRLwoeKILFWewZwL7AnvVQcuuGpV+Ni0kbLvViDLpzL8Zb/ BUjtudBYqaS7lbhrjRo4qQ/wy2zJ1OuZlmhpu2yZsJ2LqbRRsn161ZNCd+1mbY3nY8EBDNmshMKQ OPi0hKw3mN18A90r16+6zuX8SqT4cbAjRfBsq22cOUfEtAXQO7wTIsinvjZBUi4nc+OV0AIzFBhZ h+3LA5WWc5P2FECnFIHU0B850YVkJfcVFkPiiElSFSVzJCxJMm0hMsf5JJDUSOOnyZq4JQrgyV3a OmAaLoYLSxr8Jj+DdsQmwnpSbkEYAMa4NvHZlaAwg4QF1VEcl1DNzL8MsiQLw0iNxDDsp57b1c28 sCAbqNwNqBko3uYdWFnDuzDkeXbTNMYhHm2t/4SrlS5MuHC98g0YSgDGggDlnNe7yr33gA/tzGa6 KoW66mC9c8cjsoYJ7kYMaSNyaF6tqZrl1cd+5Jqv+YeA9Id/uNlL8QM+MtEQXUgdUNEiPSSehhbd Y2pMhxauHX+WDH/rVz1/S9uQIZSjiNK9ja/3OmzbuZ2+fXZCPtx06q+xTKrAkSmj0MRCLdS1AWMz 6OReHW8h+93NbMRJ3Z5Y3rDabeVryZ9GHY1T7sKg20wWKFndxglzebnIcQuzEDjX8AzKa2HKu3pt Vw1gXGZVlKa42r22yrSBHdiaaYVdKACF3UZUWxMOoOhtNEe+01L+QgSS/r6BKK0WGYh/aJFEWv/Q RPFzP1BpgrS/+6teHRDRS3oXPBXATNc9rcZUsP3arY5UoaYx6FPSdJHbQnnjKdA6HAE7qFghQfMR roSKMW1sTdlcawWCIWNjw0SqioJZzf3kZIkbInZOEAhYJUZt/nnL353l0pjdSAzu2f3t5D7u3/3C 4A261Y3LqCu7KhufktBOOyRa11GztWCzy9BlzZsN1vDNYibYabahfY4RHHqrWnjw/P05AO+hCI5d 4bshiCaaJCGjAGNH7Tuk1HpTRHHpRdqRP9eRH/7pZ/vZJI5pop4CSzo9RbfyrgZVessVSDV1ThV/ TyKlypklXVrrwA3cQvXSEhZL3kBsRIUZZ4f/7KWXbHR6Y08ZTqsLoeXU0xKENp5lTuW0ucd03i+M 7lxOu+IO7kds7lr+9V2fxF2usNLNnl8e5kamjV45TiJInsZhDAuYOP7+zfmuK0PEhN8wmLR1lBYw j8WG35Rzq+zove4c6IPvxgVgRwmOkDR6x/mimnrU6QU96Tl1+fUraZcGpLHZkd53v0yxU08RFR2g PUIyVbxpPXZL45ZkpR7DFs0liSDjkrMvf37bSLyJUR1QIVWRnHTh+xbF4z1u9KiIGcMtwqWhJ3O6 NEmfknzpQEu+ZB52KWUzd8MYHY7S3MyNw84dqVZexOXOzNq95bQr1Vqe5V1u3d/vsCcmKWHj/1mZ RTVx9eYHdyd44gyA4np73w3NCwgCgoMCIoSFFhmGhhYihoJBjgSHAYWLj5aOjo2aBSITA0ADo0Ci QBUOo6ShpQMrr66hPLM8FD08RLMUu7s9OjomFES9PbY9PSbFxhTByMq/OsgmHb8d1h1SHSk2Nts2 C9xIC9spC0FSC+kh6RDo7gvoC+vy8hAQIffs6fvpUin/CFJcuBAQAYIgKYIYDKLQ4EECQQgQWEAg AEQCIioGWCBgQZMAID+CPPACpL0XEEpKWEmChIQXMFmybElzJcsZLFHQRGFTAgqcPWfWpOnSZ5Wj VVCg0MC06QOmT6E+mPogS1WqWKlazVo1i/9Vr16vWoUy9StYs2G7buXKtu3TtxqqxCUho2lcGUiV 6t3LU8KBAzf+Ar5B+IaASoQrCVIs4EYAwo0fDzLMuNAhTRYsZc60WZAjzxkzWVJ0SVOhDJ5EFChg hdUqIKlGrRgQe7bsWbZHrKhFi1awYLt+/JB2bNkxZ8iMHdNxIdqvH8yPWdORosi/FNa+fQPHjZ72 cvLiuTu3z969IOrMl1/PL+H1FAbfu0cY0eBFiQxBgqQ4Uf8C/QBCcICAKMUEU0wtvUTSCxK4hGCD PrWEwlE6KUVChXxlqBRSFxKlU0sc6qXBUnZpEJVTZbnF1lZrXZXiV1yl9aJWMqrololQ4aj/AV5V 1OVjFSQAWSEJMyiFk2AHBACYYDdc0aRkIDV22GKIQWYYIVcKkKRlh10pAieNcElIJYgJEMRih3h2 mSKnISBCJKqJ4lorqrhWp2u78eDKbhTU0ucyzFAQHS/SHYecMyb8Il0HF/hSDaM6XONPNhd0wM2l 3Wz3zTopoANBP/yoswAETHwqxTqofvrpqKHG0+l7A/2DUHwiPOTQRRFNwhFFAaDX0WH/AahfSQPC 5GBKQb30AlEOypRghzodBS2JQ15Y7YdFNbiTkTZRqFSJO9pFlYlToZgViy7GiBWM6Gpl47vwkuuD D1LpOOKIRNr01wskDfjXY4X9K0hhWUqZ/6aUWZaJ5iCXhCkAmKVhYkglGA2CGmkioBaDJ6itVmuc QNACy52knAKLbr3pqdsKFPzwJ3I62EJNMsf80MExNPuyXDTJNNeBzc9h90Ol1FCXDTbccfNPN9nR w2o8TqM6qj2sqsfPqquOkw54W8OXUBDduIkAASncV59E6XRUiUcbCfCRABWJ1MS+JCHrIIM9PWst kEVJuOG3EzIlbYkWFg7ts8senuAMjFsIIrh1gesUjvDeyJYGZL2lYouVv0tuuYJzeOFKf/nl179J GkbwlQUfbLDrmBDyyJeLbCbxZmEq5thlGTuiSAYX0/6mI5HQOQsrcpI88vED4JZny8VEwP9MdMkw l3POzti83HHMDQ1NpNg92lyn/nSzdNLgbHO1OfJshHV5qpr36TxT67M1qOa4F1D+ZB+EEET8yQhH 1BYs/wSgCbyCwEf8RToGuaQoDnxgtPgWJArKJUgYWgqJ5AIuvnnwcBBi1gyI1CEJdegudBEcU+rC QXBpjnKXG1dUXgg6HbkrRelaUee48jkN0At02NKXvh4DksI0xoiqG1OaWvewzgyiEhmbxJcykAiL 4U54T5wSaBbBJk0AbxGegFMk5lSK5IUiNrGYjZxEkSda1KAGx3gCBZ7Qg0Ylo2eGOoYde2CNRjmn jt6Lxs+oU0dtTAcbIcDO0rQDjqixJ1T/kMQaPiBJv420ahzy8VpAGDIRjtgnIruqSAH/IxEABWEk AYCAkgQEAaGshEFJSQqIKhiXEl1ILobDluiC9CxtMatvzNKLTxxHk1oeBS9xOcpdwiU4uJxIcuLK 0Qw1R5XMpYtzOmTXDTtXIiD5kgQxkcAVkPSv1R2RiY75jBYfJgDgZUAQnBiEBTzhmQzEYDMZEAIV p8gmS0iJNA/jou/c2UVFiFEEeipj8l4BGzaq4hXMm80K3qgLOB5nIIX8mc0q1Sii0dFSjOLjdC6w UV90oAg2uwY2UgA+G2TjOttppDxCwKlRoSoAUEvHdvIRKnvMI2s93YcNECKrdNAnHf2Z/0hFJqER /YhkPwcESVP/IqAGvsQmL6hQMnWSTBLEhUTJVGYskYIUwZVwLjRRZlh56bikTIgvQVomC+VS1hVC s4Z3tdfkpMLDB1hThtnsiljQYiO9ilUGRJGAC8BJztQxJomvw1LsGJYIKp7GYYgghAUS8aUjVHGK tuOsIzxLu3pisXdwIx5DzGQbBzjAFMljYxlfkacR5IIII+DBLYiRx0XdjGgZ1eM1GmVS4RqyjpG6 Bna0sdx/yLRTMhXq/ax2D6pVjVXpAWp33oEO9IwjPvvz2kQUspGJdKST6diI3ChymKeOpCR4e6VN 9Gahuu5Frd2EZi2TOSJleois/r0l4P/6Oxe5RG6/B85vjvYargP/cHJRqUIMySXNzwX2LGHJ8GCx STm97oiCD3TJv4SlmMoIwrIn9t0jfufOenqmsosIqGUbsdmH7ZOKOCYojDmBsYzRUxKCqEgQbEOn UNRpZLLZTS6OoYvdHgePx+mjzZjWR0YRTaWGZJSlqPwq8GUZpuggB3n88Y94DHV91nUaO7KmKim0 437wwOTXiOoe97CPbN61pNrUq0B7QDWVUwIJgwQ932aBCAV48WpS7KJB/UITrJITUgUP21VZcoiD PRIcC3kEFxd2uNN89SteX2jhT1u4LWjB8FlySKMJd3AnNTldkqLUJYClaXY6Jqg7M2b/sXdm7HeV pWJnUNxO4GUGeA87QgyQjdnYTSK1gQZJEFQhpxWM4MgSTWMbb9EbWwynGCLFckptMFwsE605NrCO clW6DWsosszwUN97vvEe++kUfviO3/zS89M470NW13EIfAwyDrTlqrzq/Y9H7HGAJqgyJCVB5UtS El8IaatCl+Zgo+2C33ttHNIdbEpcMX1MkU8wrinMtOSeacNangh0nsNKieYV6s2p+uarZhc2Z/hq jGdL1oDRnRFh1wg26froGTjCEXJcRWPLc7Od2ezSTxxsYQe7tKWBhBaVNO3k8UCN1bZNkmeRC1zU Ysk9+LZvscxuLCsyy9ww5JWJlo0i/zBtG1JQ2jiGOtQwgwdq9CvPPPChKnzQdB/rKPw+xNNI9CBg IAQZeP7QQzaFB0AJTnU4K+fWhAXOOpVJCn04nWXCCW61lhpcigwaPSG3ejxwTAF55ICE39nPPqyJ bkmJfOTopkTOCD4U1w5FLfMYgUUtOE++8lukV5BDS1+N3d0R13mw2bXz16hZOvCUjQVkE/QQVa9x sOUp7HeeeJ/NHhMRR7KAhY7i2q3QEyt2k6fdKucWvZVOSrGstI66m9zZcSlL83ba0A3lg3fYcQHk AF3gEXjxFmdSQw/VRVOEh3iFN3j8EGbjMCsGoYDycREJoVQUoXAOxy8P91QiEXqrVP8g8hViISQh PaIhG5IXrYdxexFW3tJ6TdFxu8dxO3hCvncXLRRNFOZD8+IDfzV852J8x7d8yycWgsU5C/ZWsfdW KwEUSMIvjhUYkEEI/cROp0EauyaGymZ+LSZPxQZP74Rjm+VOmVFFTmQxYkIm+nEY0iYbyEMEq7Ab 2FYDuMALujUcgRhukFdlbadSlfJ2CogpzmVI3CAFR4MN3+APSCMfnvJmjKcqomJ4rBICAUBTVNMO omhToiIFYJM/+TNw+hMQE5EQSMUfvOJwAyIgH5GCqiQ/oNcTDKITIzQTE5SD0TJp26IUw8QXgqMX AHZgymgXCWZLcsFzHlYuzzRh0qj/LjaSFqnmhE7Iajg0LuCSem+1FxBkOqRDTgDThbKDbJdxGtiH Yl+ET2YYddc3Y+3UTrjjOg9zJiVGawEgAUNGWwOAMmA3CrjRPK+QC7zQCxYlHcuFZYXUkLHiDVu2 bghQgORgKa+yNJbyDl1TDg1oijG1ePAQP/UwkuaRKvu2Du6AU/gjZwUBXpsEiwQEVazELyHRZ1TV LwHALw/iQB/SIHRFS/w1JP4VSzK4QXlBVqGjQr3HYNVIQ6YGQ53DOdmojVapfG6xc81HLW/lEkAR FEwyGIlhJYbxhlVkGbjmTtonh+y0hgfzhl4IT/V4JeZ3RJKhRABihwtAW7sBBHly/2RfJ1F6QgTD oAy9oHZD0zQYeQ2YAoDasZgXuQ0EIICYAoni4FL4Myn/llP+lniTVF3s8FM+VV35kHgiKZKq+HgC ER/l0BBlM4ISoREMhxKppCQDgkqsVCwyERM84UB0VWCEwyO351aLdi/3gmnGCTkMJnzUdGqnBnOm Rk02d5XUWZ0ati6rJkOPNiKFI0QHIGtceABaAhjn5IW8JlBJx2KW5YbnB0+bcSVwqVlyeY+uQybR FiX6MRsJlTL6WZD0pwsJqRwpVYhKQ26LtCmN6Q2ZcinokzQhUD7chQ7zYIr+hnhQEw8TKipMYIHq wYn7xpHj8V0AIXDzgWedtBFONf8gTaAsKDGLoUdxFMeTrzR6WaVBxwRy+hVhTblyUelMO+Sc2ilN WYl8GmadRgojXJGEbeFh4Dgk8wWWYTkYukNr/GR0lrFr7ah0dclOcZgmFoCOkXVORKSCwiIgn1cS K+CXA0AEQFB2yNM8uMCXvRCgNWOIBQhSl7JlOnWg3KFINsAp6rOgkgIPBlgO4uBcccaRndmSnkJ4 hFcqVOOo9gZJQ6VJAxEQdVYO/RNK/1GLMNoEEfdUKEEgBXIgJBEhMAFWZQVpoFZz3uhMHSaVrUpD PwpDpcZzTHikukqd3Og54HJLshQhCaIv44QkROQYrbMJxaaewvNFW6qOXSqXS4T/Ja+DrEW0fmS6 ShAgUaWQpmzaPGMHUU2mDOBmDIzJNEqzZebDoAW6oOTWHenTmAZ6KnnXKQYoD5OIZhJYD4XXqPKT eD7lZjw1itwVZ14DHxdAVI9HeQy7D/vReTEKo6XKkzH6neH0AjPgTT5xnCtHatYIlbA6TXoVss9Z fNopnSabq7u6sqpGpFCIpNLYoyH3SwniQKRTjuXERAzza9h3pYoAGWY4ht8HhluKTk/0GIKhH46R JBG3IC+gJ7iwprgRMs7zn2+kHMygduH2D//3f9rRHZeZrt1RgEiwoPeWSKeSqIR6oZnZKqboZpfI bz41U9ZFeBKKXToFNvQxoq0Z/x//k2ekFFWzeCAzGl8tCqPKIgFVsBLEuLE4Gk0nu0081HIVxqMl krKyWrLXyLKci5U7V1iwqnIaQBc7kSzliLNKUhmx8whewmw2Fq02Jp/vFIcEMzBWchgWG3qfpyRN +50twQMjUAq4UAp6GJhSG5h+0jLOQQ0/MA2GiB3dIa/okyn7cJn16g3o86CQ6A6dcg7qc5qDx5Eo aXj+OrClObCLt2/wwIGPF3kCAXkIgFRjU0A3aTcTVywwkRIMF6Mr6iATolhv1ULTqLnrsqT2QrJM 6WFCGp2y6i4tUpWdm2G7SqQ1sqQg6414sWnCxLgSgBPFOmLldJdc8kWyg49oWP9sU7SsiiCPkzF9 truPqesYqUuqr9QbVMumtOWXKZO8xaF/4aZSmoJJzJU0eucd6yoOIWC24vBvFVqK5GEqQFWSGGia oqK+8hOpphmB9yMrqtkQCME+rHJAqqR5hGshhKsgFDsgysJW4fi4pNbAU6GkMUdhsFphrWrHqHZ8 2BnBfIyNLWs5C4xX3PkTRdIX5Iiz5fQXyBoZJoyPBfOe0mrCE/MXkYGttpm0qcu7JBFiOjEbbNqm ZRS8QBC8uUULfeInCykcXeu1jQSvSSwqC7DEmhK9sXxvm7KvqyIFLMmokGRTb/agWMyv6iE/vvyh H+pv1xF5l4pJoVKbs3kgNnv/VdA8o7tZejoIVmAVssP3uVJJx7jKwLSqLhhGwX1czn+sIqVGhNzZ OEXyc9/ZWEgrpYHBJHeZJYkhnuU5dPBZl21IrZaBn3Qow3Yow8JCjrC2MjrMA1SLG7qAkH9SA7tg USYwZfJKy410eBR4eKCCKutQtqgiDkiMeKPiKU9zmmumD575NKI4SQAbitg1iljjKpi0SbISK6nY zCmxID3hAtKMVQzy0xGkLctSg9TiQu+yFlT5qp92Iz1EsuF8LuNsztsIwdVZOXz1jRnCOFCqgqFn rfPsWPQ8pjkbGZRRnnF5YmA4MPYZJQStgktrmwCCIBIyul/Xpn6o0FNbdrTA/2RYqxyGJJHk8A1N kMS3LDVlG10YnQ4hTQ8qyZmJypIkTdKRaoGJdw6rksX8Zprq211a05pnVg5hg6mumF6pVFUV14KL ezd48yB3Yy1/03oC3JzSWcFKGEMxW8farLJSjXPXRNVPqJVRETl45UEacoUdjMjGGsOoUzqqs37W 2o9+sRhINDCH0Dpbqn52qB/74heo5C/DEmJ0IWEaYG3Ce7yjDKdfR5i0QAQ1MBx9knb8h5EwNUnd AQFhi3g01R0dvYl0m76Kypn0c8Wg+WajqGaDt28nOTVR3NngIRB1xsze5bCgChODayB4M44QdOF9 Uzh/03HfDMe13Vcwd9uQK/+VOrfbT4idZYGVTF3iohuUF4IXjdvB+eITpkNONy4YyK0kyCrPYF1i YumlLCzJVIJKqRvCAL2TNIFM5SKubXo8I1DKUTsLxeAnwuFtaZdRChqSgSc1HC1dtazYmxipbUY1 4oGJmliBWQN42RU1mniSWGM192ZUW1MQ/4Be6OHMqWSTummzEbQ4GsvTQfISGGSMG6JfQ1gvI145 eozAMWurKDsjKJ582dToUzEvPsJ7PlQXpEuzE7eTPT16PaHjiCxi3xkUxNhYg4HJXF1rWxKmjUwJ dKi7BGKsNmkmJuFLdTEuVKtQX0d2rlB2p0ynWpuIGNnLh7fEGe0d6vDl/H3/eO5w2b6Mt0DVoZ2Y D6XpmaQp4PqW5vwQ2iTqNWB8NbL4oqPH09VyheiOsc9CjNbi2gA2hF61TBD2lEdN4tGZ21M56by9 4jxEczKAWIhFE4vVEgNf8InVoqbaWMYNfdBXOqY7TF9pEzwhGFrI40rC3bNGGfoc67Jek8JCLGYa IHL9jG/hAn3ZpsdbkLzhJ7Xg3nw0HCFVKXGnPl3OD0gMihma4BE4D/m60W42kqIZXZb0U/GA7fOz 7fbABC7gAqQ5SexhSQ9uPv3jXOCBomK8IMiiLYub7vGVFIrlS0MyQjwxgx2SwSvUIwYGYUWYFQTc 1Fdt70uIanuM4lDowDKH/zk7Et6r1xIuUCAIXyBbz1i6izpHTuqnjuOn+3Oj3vjlOBIbn/FBZ05D dzBJdI64q/GosxIkJmg8+Tgi5wIB4IfBezwh48k7TK4uQwHWMByJ+bXQJVMZytHbPngU2OylOZIb nb5qpuDVPtKFp/TFnHij+pmfqL73dj5GJR96a3nBUjr8Quh5E0RXxdNA2YvRkhPD5NrYkvaRw0I8 Ok0+au+3+pwl+7kFrHMb1rInzv79DrNuv4N21SM0WyD42y85DnSnDnQPDwgHEoMHhYOHhAcBgomJ hYo3AZGRAZI3ApMCmJqclyKcIpKVoxAHL6YHpS+npwKjrxAQLyQkGlVVMv8ksQs8PCu9QES9K0C/ PERAPBQUPD01PT0UPT8d1R0pNikdNgvd3iHdSN3g5AshL+DmEObqIRDu6SHy4O8QUgv36gv1u97d 7+P28WPCDx6/WAb77fOWIgWChhAfEuhmI4i3ABAwQmiSStCLQSQk0Ao5EpEEFy9QoBhJAsXHKigk VAkJc+VKDThtaZBRJadPnw9wBn0wVANRokaPKk2atKjSp1CjEs0yNYvVB1apZtWatepVrFy3XqUq dSmUokxx5lo5k6SEjyZDmrwiYYZIR4zkMrp7KK+jvoIeCRZ1yRWnw5wCdEos4BOlRYVYdQzwgrKp UUFIYVxF61auF7tGrFj/gQwIkAHHTBsT1qzZs2U9OlCzdu1aCCnpuIGzoTsgOYDw/iFEmK+dvnvI +yn8x3xdPYHDE5pLGKBJCI0L/S0gkMLiAogWK2qvjpEjIrlxRc6cUQUkivYzZ4JsH1PkSFw+ceH/ yT+n07JIBRiUUUL51xSAAkJF1lFhddUVVhCKJeGCCCJIIFA53YITSzPZZN9KJUkQgEgqSWAICTO4 1ZdJJg2miCKLSIKJjIhp8gliNyo24ySLZNRRKa9UIsACQ2YWoyydhZTRAgEsMEIvUEY5ABGj9cJM Lz00o4M01cTWwQUQZeNPCuzo9o487JSD0HT1uLPOdOTAI8WZ/OyTDnSx/+S5kJ67tJmnO3i+0+Sd 2nXT0HfcgccNk4xiFJkEV3zkFkks2XVITYO4cBdNMg1S03sbakACTzj11N9PSDV14FMEptrqq0PF WiGCDYo1FYNggTUWhLPy2qtSVKVVi3+33PKefqLS0iKLB7S0IrOPiFIIYdMukkmNAliwmAg3usIj JTC+MqQAQRBQbrlMarQKXBJkZFGTPNTwQxE/1EsvM8ZQ8MwxykjzQw86dABNbdvwhg1v5jQB3Dug hSCOPOvI8wITwpnTMJ1zZmwQOMWtg5E/CjvnXKB+ukNxCATlGbI3b3qz6HffkRmzd900uZEqqKwC kn0qZnqSpz+vS0KHLf+1xJZancmQ06jx9SdrgbEKtdSAAzJFdVpSraqgrro+6CuDZGkVYa6zOuir g199jSsUGrBd9dK53EcIpHwZIlhggN19w7TTRqKIJpZoom22mNyQgbY3RMKYKN46qpiR6ZoruQhB VF7JR6sA2WQl64w2wAA11BCv6KhFqYwyWQI8zTQC03ZwN/eU4yY44kS3MUDj/Kl77rJLl47u8ECc UCzrihwLRijlqfJyQTTUvEQLlPsQAu82Srwssry1CkzsqdQeu+veFX6KfI3EltHF6sRTLTJ4fyqG 758a9dtHQe301mJ7FSGFD07of63+2xrZxLYrCyEFRCR5z9zqE5hovcj/FCZ6EWQm8YhLxEgSB8CW Ji7hiQ124gDfkpFiiETCIQUgCAhIYeXSdbnMVSJd/2jCaEwzDChVqRc1kAYzlgEb1lnDBtXIBhJw Iw9uIOwcaDLHyxbVpji1KU0LEIduyoEnlgkvAPTYk0F2QLyLKe+LoAEN9gplqENtJwUTMdc+PjYK 0KTiEHZJkV28B8e3aG8GH9HUzpTFx6LRAgXr0wkuhgYTDaAgfgUqFSIN5BT4xU9WT1kQAceGv/9Z 8pKT3FUmv3ah/rRlUyExhIkgg5cYoQIypCTEBYMEiU4kzoOXGBxjNkiY7YjAXOSiXuUql0IRkJBz koFRDCHQrtF4bgUD/zhmMoVxpdPxUBm0sYEUbFCEhkxzATagHTZ1gw40ZRNNv+FdQMYxj3I8DAk2 qB04LwLFeZQMIatwwRfnqbs38ckbFuHORLoxEc5xThanQFJM2AOfKrDHLi5gD+bsSAJJyYUlLLGJ +W7SvqKJSkM4OeRPNJqfC1UBLfZ7VatAOtL6RSV/vwIWADHJUrNN8lYL6s8hvUcpZ7GCBCAU5d3s BhkYGWIGDMRg4lDJwcS9snCL0YQSNEEABFDOXAHgVncsgsKHNK8hKgyCCTkXrpphRCQvKB0PkjlW ZPZCrDuExur8VS8vVSMFUpACXPFBV2wahx3taKJx4MFEJJ5pOoXKIv8V7VTP250jT2LM08e00zIy 7oM7jdpcujqSuVn4jD7HOlaKXGJHTXlPJQmkxUWH1hKYxKdYMOlMsTjKUZ+0lj/z6+SF3garRKa0 V1pTaUt3GzZbQSWRHS3WH5W1F1Ga6BQmSu4hVjEYo6FgMJXYmyX8Nt3CYOtxAiDALblFgKbekgAW QIC5pEc5p3pnFENi0vHKI4uV+CKZnzurWKPEQ3/pYDbUcGsHpgnXufYuTUjkHcSe6KaIzW5h5MQr oHyTkAID72bKc3Cf9ORYfzQ1BU1iDqMUm5GMLFQmQ1OJiGPSHkSYVsSUSl/7dFIqDZkKtYKMsUwN 2dGQOvLGtpVabnv/lbYdw1STvJXQ/rbCNbHNVrZKQy1J2mMpRCCXRXzBnCCAigK7VCunrXAFJIxa 1Fhq68tfzpYQCmCB7nbXArfUanfFKwLqsbBJRtKMG0GcTNWg5pjDYA2U6utD12VjmnHFRzyCp46F tazBGwseoRTcznUubHbDY1hirxdGepIRIli9gERSmOGaXcZHAIULTdhCR/QlEMUrUc9OYMKTmmQo fcLtiYtRqyGNmhajiDQVbBFZtQG57bdSoZCAtNYgsAX52GmLyqlqsVqIkpYlIKGUSUoUwWrzDYR7 yymX/XYJAjSmANyiXJsLkIPyUo6XVK2qLk8YverVbMMKmwUJkEkM/9TE14asiQbqogGb2fxQmnSN Hez+8ZskCm+dshsO7uLUG4P/Ka+EZVN0rqc8eSZv4gseWfS6YRGJoBGNHO9neVJRCmK+IFIvgAmI TUsiubyAfNGezy3Mh1ERx/qPPTmWIHWdE5vs58gkpa1sa8zITk5txxTy8QAliWwhrzTZUmFbf5Sm lvMJ14/ODpFe8HbcDBq1Etg26ra0KwJwb1e7vURhZrZjEQGoUIXp2uqbNbLcmfwCvmcdhjGt1Bpl 6CAaavX3wRqSDf+aozhuUiI2CxyP3DEMHuj4a5zsZNeHE1Z4eeJidCbNj0mz49DfMJRdoccd8fJz AU2oROqzty6hff8KPssNX/YksBLO1EJZH4pJaCXKlpmz2BamUokhca3j/wx76Is0YLCVraCwLL3p x+4aAZOdFk8KMsQIvMW0G3Htvm3bujUSAZg5geYyW+D8N1gqAQqDADQ7VY0nfFcA+gmaeA/iPS+o EnwHUIxfIJNKUKJW0vB30FAv0WRXuwFFgFVOCYdEilYykbdwDegbCUZ5B9EmlcYwKYNYDRMcWVQo WPUQ/IRGIucKTaAwj7AKHMEKV9A9qQViz9YSOqMs7PJsPDNiRkMpNgEiIBJ8jyQ1AQI1jURSyVdS JnVbFeIfQwZ9TOhbWUOEObE+ShZaiNBAg/F1hXF+5Ed+4mcjFpD/Ad1CLt6mI9GzXdRDLrt0Lpvj KLHQBOFTBfl3d74gXzd0OvEyDRRwX/fVJdsQROgURYD4MOWkYBFzJpFnMbazgLLDDuJgJ//1HAUX eQWmeWJkcRuoHBSGV/4QBDaAANuxHfu0T+mSeqoXUKZAFx+WUNo3NCDGUB5iWbTgUEUjfCMmUR1S ZUUDaxuFIcpWW6iCfLLGc6gShEmIFr14Uk3IW9I3NsJ2hFCYH37UFn8UEy4CI3szCUUlOJxwOEt1 fjciAmAYbpQzJG0WBNySVQVAVZJTJJtDWamwCpHSUMZkVvZmDMrwA6cDDc/wDNPQVn1YMAgYDlE0 HBSIecEDAS4g/zwLWGgDNmiQpg8HyXgRVg9h5AIWOTFfJGELtonekEIyc0ZmJllNgHoK44aoUBcz YBcG9YJt8T3qIR+4Z3uzODQZNXPeE4y5mHPE94uQlCq9lmON9BOytmv0wyq5ZSBI6QNSw3TJ2FLS NxZm8yvVxxNUd1qGhB6McDeWUF0cdBjgd36Ho4XmtwnaAl7hFl6GoXZMQlUsFGrhE4f653/z5QzQ 0AwDuAwBIzAX8I/YMFfikA/r9DAFuYA7IIlnMmAXqHCISQ4E8RsQoHnuUJgHFoEWKU/zJGECQUaJ EoqgOBFKsABKEAChWR0HwBGleQB0cQUGZUfv4QLTCIfDFW0gov8ehORqQimMhbRIxXeUxrcU7yNr zPabVMcfSmkUUtcfvwaEkdSULIWMzFiM9WN9tnAfuIcXFRR2hXNUNxCGsjQ4YaaFIiAEaAZeGTBm 5zZecXZCTfIjrFA8+8d/dzYMpbMvWaIv/FYv+cUb1nAwuCFo/TlE5AROCAZpj2kdIWAdj4aYwBFp DRZGB+YOmZMnFhkLKGGZf+IOvaGJmJZCF4YANmBmoDkRqVeSkGEekdJkKSKNbTELqcaiPcEhwJc+ ugmEGSI/sGKMuxmE/EEqtBaFTLMTu6aUPgAFbHMWAKI1B8KcTvmU03c2t5KEPzFc75FqebNThXAt mwAK4nc4gpP/AV1KZuIHbmhWAObVVE5FPVC1hgtgCiW3ES/ghhDgf1Ayn76gZ6ETOn5XgNEURHbV pyPjJg+DEL0TJ5KIDi9gobgTMZ+nD4JKJxNXiPWEkBZ6iYl1HYSyaJvpkWbaVJzKKN2AgjizgjN4 CLnYKbRHpcPVbDs5o0iZmzNFY4rEi6pyfO9TlcZSCyPmGUDqA7zaq7yqAUOqnPizP0uopMbKNUaa nEK3ajPXR1bWIjlVQVwGSzVyftoSliJwBGA6ZuUHblpljuOonkSSEVzlYRG6CjXUC8IgOsegZ3eY Q2rVj7LRh7xxJ4tyJ7sgkZJ3mI9XDygRgfGQr/RwOxa4YLMD/x2NiTLypHnYEwuXCBDPwQ5k0hBm ekbiNREU6w391Iaoyaam8BKd0mSrmRKWQmU2YUgiZgsaxVo913Mj5rK0+KoZ9VqzFVvxc5MwJmvu w3NKAwXBSqQ92XzGOrTNORZGehRGmhbBSDQhMVDJVVxXKq00UhjWJUtd6qUZkLWfoLVkN4bnslVB 8k/qIkar8AsACAw9IAxEIAxZ0gyrE6/6pZ+LMrdk9GCPuoDdFJmTBigZWYgHmSaOGmkPK2H0pDtz Qldk8hAOAXKS84lp5A/VsS4csYIoVxdVNgii5hIiC1ovSWssS2MsS2ovW4u12LJCRz9GkbK3qSFD Qyqx6hPF+f9rkfScRFu7TUdJDyC7ywaTy3UIK2E32rZt2OKdWigAWqu14YVm2TWOWkUu57aGL4QR 0isLJCdPvvB/ppO9VyKvgfdv2+Ayh7KIKANODckm7nSIjXqZhQsoGxlphftEiTmR+DAyUuAdmPZx pZdC+gs9TRIy1eGGzOWmcIE5OjM3rOm0QFVaw5dzNPYpKFuLn3KTpPvAPEezjAQqufp7PMprJ8Wk tvvBTulSRJG0iaQhVNk0qAVaKFalVzqtw5u1yuuFjcEth6GGRLJLjXIRHYYns+AC9lgMARglbYtD Bkgb1UANvJHEFNEcn7cOuKGoTuRgfiUxkHqwJiOJhUYnD/r/qIupoPPEqLkRMxHhkSl0AQxwAZva TzA0kqR5GRoBQdrzjir4ESlZF4NQsrNocxx1i7laSDu4WqMLfLtIixlFYw8AayasFrYgA0rTyPej Uh4MwpL8P5EMdUa5SNLIg3/xNxNEOFmKI4dxI97mClGlVZWwQvFnETvcaeqCkBCAQ6YzxKmjrm6L X0acxHSbO/4QsXEyDwIBMVw0mRAbHGvisIp6EMNDDwr3RRsYMhj5vulQv4XHHWDycfvLqSAHMk1C yqvnjphLWQsVKXc8zuPsXArcc84Vs6R7LAxsczW3zuzsYlGISEfLKrgCyZOcz0GWK0RapKqiSI7c E+sDKlcZ/yKHQBdbBhmIcVSHYbXZZRhCQgD+ZELHwydz8juyUKFxim9RomdEUJepE68XgMRym8Qy Y3nxAJjh1JAQeg4J+QKF+QJZvMXDbFgFoQ4usA8p42CFqTwdSE9oAhEwEzMc2h0Wq79plGFN8pmj 0BE5gwoAJc5vCsdxZMeXO1Mhlh/G4seg61wpPLN9vIM80xaAZCpJxotSVxarQmS9Vcn6/NZQmT/1 LCDHSXQIFEpVWC2iICQ7okGGMcPmsl2ZsSQrFARvYjPC4RyHSgIoEQL+9yQdDQ1P0Av/8i/QIA1q FU1GlM3sS3kzzZDswARMoLeQl756kniW+qjogFcQQBBMcP+ol3gbw4Goy0ywEMDY38ENEws9nwiK JLgdrDx31FtykUFMhMAKKWkXdFHHdzxHtJiDCryyLisTtlZrNielpUVIsOoTw2k1ZeE1ywfX4h19 WUCkbROd/5wh3X2VJMJAERQtmaA4fw1+mtC85uht5ULKp2wkEPAusZAcc9Lah7rY8mS2UxIvpvPR sxzSfVYw2bRN/nAnidfahiaoDPl4easwUkxgWbzMj0pPsX2oEnlgD2cy63C/mkaC3aFP+MtOGWZC hVByi8AKkKEKdEMXdIOSdVwfEpUiWd1zuZlRpxqjxnKTEIVRwoi6zricxVZJxcrW463PyzjCSEpb AzKUqVX/xyFxBR0LQtaiGGCuQa9k3zWsCWtZOUWyQvlAYRR5qBRqkdkb51hC2fJqxA6OMIWCzAgh TQUxkX1+DhEaqfqKcfMU2wfRmLEQ0w274cFhAwDhENWMAJpWxkgtXuLFuEot0ZQBJJJxXJbxEZHC CJaC4ymJIohQH7QHfOesayWytMdCWqsljPajFHNdSS7lhD9mK0wZ5VGuNr4ZlDYJWnbREsptIlyO ShJUI2CuI7j0S2l2w5ZzyuQKHQIxJ6/N2BTK2HIOJfWyj6FjL1/yb9ng4C6jD+OARXRlTyOuaBEo mYZZcMpjvoQYzDTt4ZSoPMGcmAkIDhBhLp24v0j9uN31/6kjGrkBtQjKddzIhQp0gQIIPWVVbRKS Mpul9XrTCUjJMizyQytc08FOx6QwhStsnSvOx+v57OuNpGupEh+mfuozwOVcHuN6Xd9gXhjdEm6k vB0IYEJF4lXYocp5QhAVytizUAU+bI+0jCX7AiXfHq9B1IfaUO6ZGeG/rMVP1HCAHrDx+076/uF9 a8yJTrbu+1cBubghuGkIIARpf7GmJ9GMAqqp4IYHzSzHtdxWJggtaMeWgur2QXvTaIs1iixKY8/B tlLMiDaZNCEiT6yatPgmP8kd/ISuopQIJGKj/vAxAjjfSi5/fUtpiUs6YjlnTjm78E/ztNiM3Rk+ UAXXm/+97IpDd/oDoqNfUA9EGaoOoFF5XN9ggPuYMN0w1iFP5sCwgatwXvTnQU/hhu5XhvlFaZIN i6K4KfShlX6xSU2Sk0tyq7dcqCnxom5lp7DcDY+Sp/qyFyXdREk1v3JJIe8VX2H4zTi7jZ/4j2+7 KJ+ESqOUt1o0dw8IBwcvLwcBhwECiYcCjYqOAQuNQQJBC5GVlwtBnAEQEIcQLxKfEBIuLy5VJFWq rjUUPLKyNTw9PLE9PT+8P7W6HTbBwik2NsXGCyELysshn87Mz9CfTBAh2BAuLhA71zsv09PU19fj 5dbP6uWl7e3q4e8v4NDrygsp+QsIKQsECP6CIEBAYB//AQIpCkY61MRTEwgHQImSQLEiChIkUEiY IQGFx4pXZszwmPEiiioaNFRZmTIlypYPYj7QMFOmzZhZHuTMeVNnlp9AgwodutPnT582efZMqrNp UaNGiUqdSrWq1atSm0JZapOmzJYaoKhcuYpExYqCAqRFhEiSIkQCRIgQsEnSoiAEAliyBMrTp1Hu tpGQUYUGCRouZNCYBYQHEVs1elCQPGvXD8k9OgTrUGxYsgU2lEFgJlrcPXPuqDHhlu1avHWwPykL MO5cqRAvrKG63dpb6na+yz1j1q/JvhSW9l3gx2kTwuSXAjyE0PAFRFETz5pFMcNsye0aO3r0OLYK ipYy/1LWpOmVa1CZO9/jnBo169H4R7ku3bo0vlOsAAYo4IBU6ceVS6uYdNYBEhQCiiHStZWXW4fg ZUkinChCAF3Q+VUKCamgkoo2g8kggxEmnijDLLNQ8EMutugy2WTAbDZMPqExg4Ro10hTCjPWWMMM OvVkk40L03iDmzXaCIeaOwv8JuVoVPLmJG63VUncAtbVtUkKCOxFAF4J+TMmaQ0dQoh1EQ1SUUYS bHfWRnOSNx5ZKrnklXrt9fQeT0Xlh99/VTWFE3wGJtqfU/UR6Oijjh76AH+KfpVSeiphhBFaaHnS IENsJbJJJYdcYgldG+K1QEQe7vZXiNuokqKJRtRqBP8PteCCS2Q06oJZjUWEZsywoYWw4z3qLMOj Mz8ye1szyXbDTilMxmbbM0wGWaR17jCxzjvCcRtlNvggYIN1+aQ7ECcDhdluu3lJR50nbV7n5ijb kcDRnCCJ59EqZBGGIFgz9bkofEMxCihUWRmoVKWHJuwfpBRX/GhU7t0EFoLmmUURg4RUVIhaEKnF CFxBhEqXJJpElNqasbpAQmJVpIiiDD7cSkEtseDSQ2SR3eJrB0UgYQwSRhdTDGigCUvaMlL8CC2y 6ET7pGvgYBOtkdNOCQGTXkvr5G2EkDNuChcEYR1zyO3zbgHvEqSQcaH4JQibEIVMJ0X7jjInRyNR dBL/nnm29BJMiyqFX6BANUpfFltFbmilFldu+eXyISppT+xtvJLHEggC4SCD1G1yqGylnDIiq3vC bSkvYLQNE6mY6APORmhgRM5Q3NrDYxQ8Zkuvvu6iWbCeaZZMCKHtKMVpzD4TNbRd94hNtc8o+Zo5 zmgN7vfuTPM62eKEn5qyCCiQwgsBqAvmuzkoAPdABWkSStkOiX73IHqfVUjoc2IQnVhBgrEUbmME u8lTrGKoQDmucQ/zjwKRMh8ISgxjmMugBu/DlId1DiwoMQ930CK6vI0uTRA6RApLdaFSeahssUuF pmKWmBMh7Cc+YJHQbkE8XfygAz9U3mZS0AFp5Kh7/+fgBjtq87Umci822FnSNoTzLWdNq4q/oR0T aJcl8e0AN+MgzfNSYIL12WA5CGBADhjQLrhNgAFshFte4mXCT+jPEIP4RIPu1SYH3XEUH+kISjBy OJjwKWOLIwqhBjQpqPiJUQ/coCQnubgGIsqDfEoJK1axEY/1b2QRYsjoUhcdF4ZCFLmRISoEkx4Z JGZ3l/wJFGwhCxddhkY04kUHiqcZzaSLiEd8GvXOYbXaqKM05vgiNWL1CW5YQ0khoM35ogQNZJ4v Hu1QYvVGk48LMKCbCliOAsY5kBwMRAQIKAAbLUAJhaiFfYYwRej+mB0AgjKPAfifyPxGwJJo4DwE U//PwRpFKIUtkoGAgmDiHBdJSjo0UgtL1AcNNxKRXIFffQHZ6USHuuhoQiKiIMFqZCbDEtVQBlCA glSgMJla3pICLvLVDy5wGSH6kljGeN4ybKCs0SCLmk8yJjW9FwIXVEtsSkJq9WyDTB6Ny3zYhJ1r 2kGcFDzBBBe4wBPkp9U1MuCNDCjABdQpBLltQoV9CRlHb9AEirBpj4Rok1wLIUDSucljJBkPAhFX EwUKpaEKZaTm/PTQwlKykTyhlMYK9oBC/ksjI6zrxyYyshWibiF+8UuIMCKDwQzmUinygUpXSkuf ySiXxuul8oQxrHuIkWlUq+a3UGOtJho1Fdt7DWz/mPg920jpqVCUFlPx0U2sdlWNYUXAE55gha/C 8QgIsIAINoQIPObzjg0R4JpKlxZW1auPgnhQg97UHcEBdGPrYYp7NDi59laQcYaNL8Uq6F79+MCQ /6qCSM4CEdI5qLrdLVUp6YVKmXFWA5hKiQ8WLNqUVmUWRNjhr1TbSxsE6xit1Sk2FrCjDb9jqMmy WhND8EyjSgsc29Ceb7KxA3CEwzqzbQfYwFW+pULDE5HAxwKkgLasZjWNaEwuHMPKACGIwAIbGrDJ AgyhUbCKZBACKenUJIg0xXUUIaHT4A533piw55HwxdwEIwZY+ZoZov8Z88O6QhJ+ReRjdLUu6uiS /1nYcfazuTMRghec0tFWJRe/8uFlMiOMzNiIWEqD1obFsehyNGNc61BmkNJBDRSjwhvgyFo3rPPF JhjJR/UQ21+Ak6V2bK+a6QLNj39cgCcgdyDqLIAFpHuQeL2lvwG4gXX3R9dQTIc6B3hIRKzThCk3 odj9CwlJyMKSl6zHYGQWFHvnA8kzW5tA1I5cn7W97f1kMiUk8ZhcRWYI68BFVJjNJ+wM3MqwiCU9 fJ7Utv08lMf8jIe7oCkvV6u8ph1Dp8wAuIcfLQ1sDefTIlZmM+exaWV+MRwK5+2zYBcc3CCJHNXQ hjXm8YKHkEYfaMuMNxHgzQk84Y0FSPlAZr0hAf80pCBv6bXoJHBd9nmoTTi+TsmkM7KGXAfLF4Xs 4DaJOIEqyrAdvLbSLVefjFlKQWb5nz5pzqC1XFZNa9IUYeDd5wXnzgjbtoq99z1TXhraGJ5R1o5L A72rediYVEzWDm7LBCVBsxze4LgosBSYJoINbDV2TYxF/axj4OMJyxnrP+CYxiEXGQFHPshbUAVg 0cXZQQ1JE6gQkfkA5KUhSgBVsQXYkYzgaSUJRiAiE3k5Rx506bAv1JoH1TgvawwsbTaLdsdr8yeH CjufCMAMZ4hgPfdZd32GnPKnYtpdXsDQHXi+jTpAgGAAs3mwfUY4qAbqiWORitXgOGtoCw9Md4P/ xJjOXpOgscXfzFbTIUgqNpREGtLASwhltQD+LRBdIRRACPxHAEqgIfFyCKE3enJmMhQBEWwVSk1w A9LxgIcAgaG3ALqWeeHVSRJgHoUUQt/GV+/FehazOX4Veyb4V/QFOZOSEiolbym1ggtmIuNhJ/+E VwG0ZH1xWcH3Ia4UM0wwKw3WSA62fPcxFPumC0KwGU8wDKuFU9LAYU51TDwSatpCDrvVGk2UVCu2 RBkXYuVgVFhILe63aWLjPbQFGvnwDwiBAEJQZAfBhvgnN0gmAKEXetWVa9JRQirEeezTEBDIVgIA gdS1IXMkAJ+HhxD4TviiVwElUIbkMGVWOa93/4ImiBQJpTj5IRNi4RIF808tER6CpBEcxRbGAQls 0RfNZGJbtA02QykiSBWD9nyE1kuEhlM5siO4GCWl4WnRwGhDgkXB9YUuIH9Z4hvBoUy1BU0k5kRi WD3GuFs9cgwJMRA28A9pFIABSIj5lxcHGCHBlocBsEenw3n9dWyHMEcUaIC5dmwQiIHBZh2CI0Ln pSedWHT6UYSTFImUaGaWJIQzsYkruBWGhGAosWXyCDpwUm6GoHmiEi9n5TKEIFJfw4qh5QM6oVIY GSDF0wNPMItJuBnDEgwd9oRshyzfokTNYD3yp4XgV2kn9gn0wHDSskW0w3dThC2A14x7Fw8VJ/8c 9yCN+FA/AwGAFuCGBMB/QnCU0VVroZQWbKU/JbOQ7yQdjzCAtcaNhEgXivCHebiQd8UK5HEpeVKP XwaChLWPaGltkPQVXrZXecJsI9QdZqFH5pZjC9E6Q0Itqigzs3IiFskfGYkVQ7NLPXABNtIDwpA8 BICLyvJpQMUO2lQbpQEPjMY9tAWTpWCMV2ItYASTztQt3JIO3+INFxdiTeMP71JW/4B/B9GGFrAA SiCAiVCA4JhdaVFZEPIQEdKAV2mIdBZ6DeiH0gGB/sUgJ+E5A1mWffVIIZiWzilJ/RgWndiJHviW n9Mx4fEC+/JOECIJDPl7rSJSGIEifKY7onX/kZBDb1WxC4UJfWhnUztCAMJyLK7VI3lpn9u0mVZS VNSgDklVd5jJn75BaVpDVH4Xanr5F0kiCunwRXyndtWYmrUWXXCUlFc5gLG5UWqBgADWc+zTjsPZ BIoQeoQYAMBposOpFsbpSQA1j0aXXokibc85o9C5FYnllubxTyeBEXmlKaJYCFeAR6PXjol4A8RZ XXkTADIjGAjWdTjjA+kZmFfBC5lRmJqRhMRCfcPSYQVKcCkpGwZaJODnoFmyDQUKRUlFCEliYsGR meZQhRmXTQ3XDbQzoOenI6Ahn/RzEHNIAEIAAzCAZNlolXSWJk8ZbByFc6TDjg4YSjfAjeq4/45C qhZvch7z2FfQ9qJJQaOceli1ZyluCW6EkREgYhF9s105iFmXYHPiUgqzY1J96Zd9BnbqORWGVqVC lKWeUX/L0CMQ8Dyg1qvmU3CzpX7mF2PgAKcviS2aaWlXc6Bdww3WoUQDGmIYloaomRAEwABvuI2r SV0NQYecp0LEeUcL2XGi9IcH0I7BlogRYo6JSnqCRBZdlkm2B23N2an6ynSK1RV7BVCrAG6aAh6T FU+mk26g8JjVEDOwSiu0wjvJN6WXIYu9JJ+2SBpc6pjOsrFWCFRb2CQzxjUmpg3md4zsQGncEDPC MWPMaFtzZ1TU2rFOI58IUWtIaaFIKagWaP+HDCGctkk682SbXfmuKdp5EsiueFRX2smjLIFe9/pl y6mP+zq1AIIxoMoxdnIRNUOvZmEegBOkgkCkmWekoQSOryIBIzUYJ2U7KDVvABJEFZaYNtAEwxIC TTCSG7Ysvwg+VvgNy1qy6od3boo9wiUcWggr4/d3umFUTCKt2pAbK/ZMO3C3ruUPqMmnbcitRwkD miubdRhKl1BsDSgI82R5cVa63TW2KoqoVWacF2FeYdkS99UeEwW1ZzmJVJu79GEgLbGJzZYpLnES 3TFCbqWoDzKOhnAJ7hAiqzFSsaIYJLA7tEqEVgG3OCUEOEW3SGAczWADO6IN3bN3f8Ea8AD/DRyX aViSafHADco4kwFqvsVEDS+AGNdAoAyqTVn4kiQbaotGGjU7lK35f2/IcijqrohworYZZ3cTOsWG ukGLh+baXQdwBZbKIAVpqU5rKTCKr08htY+ju89JQUuBowimEiZBvG7lVv0VfPF0Hb/WTCM1kSaS GDRgMycSsVO6S6p1sd4LhY35RObgaQ/xDMwUaSfGcOjbDeM3oPHwTJiZmTAmuMdKxEnVjKvRRGoq hnnnLdwDhWg4EO9joWzIuQC4lARwtJ3HeRdIuqWbh3QlAWDrwHeEumA7EqBYerGrAfe1nJ0TtQs1 MSAcyLsrFgYCkHqyEjOoEfuyIHIFbIoI/wrTYR25sUW54UoysBo1fCI1PL2yVBVwW4usNQzHsmje 03YhNg9myg4sKS3bM4y3cZPNBJNX/HBl6ETpIBrjR2J/Z2obF3/js2IbZjSg8S5riGR+GlZxmI0H 0Y3fKIGjxymty8B1RXoHADisKzoNTBEUTKrm9RL/0q+HxDmEZVAOJMjmDDH/GBPMJo8jVAUN4jd4 s2sQ4VY5J8laNJEwu7a00jthRxUUZotphw0Z672Cy5NKPIywcXdfky2UhslAXLKxvIXHapnr4MQV rX5GpWmEgGK4gVsu4GkvUH82QHIMcAGLV1bqNBAVGl0E4Q8R6HLmqAQIOHpXcFFwDFfvvP8mvAci /DNefLMRdpzIbpleExWj7rVmk5OJEWPOz6metxeqH2HHVbDNDSJPDwJSMMQtmTe+qHDFNKnPJqJS tVKrQxG3RmOLxWK3SNCluJE186AOU7SSL1mFdkrEsEzEqpzXxFjF7PvERdXXs5MbUCx+a0IPpeBp 9fe//qCarsmGe+rSC2COxnFsxxZsND3BofMCFzUIWaadGtExcUInFYUCITHaeuWitovOf7yWloiP rs3UJkjWnCMWm/iv7LyB5qHTbEIvKux7n/Br1tG8MqwYfUmrfkbWP1EEIEm3W7rWHMZTdss16osN WTx33uPEc+cN2hItXOzEwhizXii45DD/d0cF11OkDa4Msy4mIpe20eHAi7BVjW4TobX2eGXlrbAZ CbJJ2fxdbJd9UTMA4NzhzqQ6HiWRyAiOwfWq2h18SQ30qQVVzrCtr5VSlhvzL5uU06FTMhOBig6h vBExDrByGLITq8aNw0JxYZ5hNNubi0jwRKR518OIyt6j3UqMxH49Yley0IyrDpRWvwsqoJm5JNLi g+3Xfmz6xKjMab/tv9X4PtZYbJ7X0rFpVgVB2f31jYjq39cc4A0SdIIjHp8j1HqFJy7qxyF4QxwU ba29MH/S5hPeqTYBmE8LQt82dJtiCmsyCviDSof9KtzCLbFyGDUzK7Yy1sidBcqNdnWr/zU9XKCZ lmJvfQ3bgFvegySppL4AmuMV/UTa4i2TDKDPFCTYor9KvLCzg88u4AQLrXdLLunmQFxgshxC8GPc 6nkMAANy49gFcRAqhOVVxlZsVdkzd9MdMbx5ZcI6uuyhmsGbmjmKFGb5ekFxTrWsvVhd8WyfWBKh TREYUQjmljdlQzfA9zqE8LwOuzv9LBUXdjQszovdw5OYlmLOgL7x55nNKmqkecUGSt5OZH6Ci+Tb jb/zPjuxsoo0ZPCx8rIku9HUwQwdwIYRX9IXkLlTUKEYX6HLDJvMIHqicM0MUtlwrNl2rC+bchIy cBKW6s2Ho+2a+uzTbkF/JR+vWO3WPv8oFb5X3jGweoNKe34d8tIEIoId3AIOnJUi24YinDwUF4Y0 zG0MkN7Wmabd9OBiLmZxM45UCc8ONIAa6YDwIkVis4OM1MKseBe4MbzvkzyRNLlxsTIiu0EP6vDk xxA3jTcFJQBH/8cA01VroXtskc1z0xw6Qdovnr0RJtExzFY4heSItQujZMacFORAsVRJNW/z++gT fTYpDT7CnnMRsSOPme3T8hTuD0EID5H6Hefzq7AaJXLD6870W2os3ru9xgLSWfOyrjx3qIzQvQ/w Md4KqT6MYNgk2p0bgS0Yk9Z+mknqT4xiI9W8utF+sey8CV/p3kC31dcuJT0QFZ/rUzD/BYA6ZBZ6 ldIRuvICbNi8P1eg2aTnN2N+nGY+kBq8V5DvMKOlMJ0v87gLCFmCg4SFhoeIiYqLjI2Oj5CJD1mT D5aWGhoPmSgoVSgkoRIvJBKmpSQvEAcSqxBNAa8QAQuyTSEvLy65Li4yvkwyMkbERlCJRUU2C0hI Tc4h0dLTIRA70RBMOxAuOy/bO70u1uTg4r1MLunjIb0Q1enZ5+jV5Ezw2eT6+dYvTP7j7nFzIW3d vIO73i2wkcIGAhsEHiKYKAIBAxgFEFiYGJHAAgI3mogUmetArpIvDqh80eTKC1MSWJmUQMKTpyoa ZFTZyTNTpk2WfGj6SVTTJqNGL10S/zSJqSGllShJJRTVadNIWLNq3co169WmD6BogAJFaFENOzN9 KmUTFYkqo16qCtAEgiqWdgPgwpXL2zlhgI0II4sIiQ0bhp+FQBJix61q3r59u/btYL8dmJlwY6J5 R7pw6jjTkxdNNGd5nDU3zhdCtLp3mq392ybPM8KABkn00i1ZnLUQCz52QEDgAgLjDBhcEHKRAXPn CIQIISBACYEmB2CZNPkqQHZYTeS+cCmBPMxOadWqxenzKNCxSIdekg8VqlOqU5eCXWr1q9SrXQUo 4IAEamWJWJhsghN7aFXxVikvgdKKeBAsEAt3dd1Cyzt2/dULYIFlcYwhzThT4i3XeP+zTTfzaOMP aFWIEw5nmKHzmWieedbaNTves8498HSmGY2upeaZNeMARJs73MhAg40GuUDDk7eN804TCzmUwnEE FJecEBOBGZ1GHAWgRBMhjRTeAbLEgpJJuZjy0ilv8YRCJiQM5VN7QIWFYH1J1VcVWINEVYl+lNhX aKKLFujoo5AOeOiBP2HiU1p2iiKBg62wGReWbqoCwah1kYrNPE8KI5gxIh7SDGLQRINZipedQyU4 JNx6zo8/huPEazwK1Fo36ZzmhDbZEJmPOENmQ5uL/7TT2UBQqtPLk7odlC1BowKXAgEOgbulcQR8 aZFzHV2nJprYrbnKeHGdNJ4LV7j/MMO9NYFSE3t5niUoJVAIKnCihDLKlFIEf8XfogACGOnDEDvq cCGGWkJJJjK0p9ZbGoQSCgpx1ZTKqPIGIC/Jo/ZzamjiBDYMYSMSchgSzETThGMqvlOZr9f2smIv 1fRy7K707CrNO429xisNuhWbj2c+3mhbPNb6Zo+U5yS7jgw+nKNbFb8AjeVhxA3X5UTRMTDFE0IU kJxGXRKghJlzw/JKqWuKN14uM1QxgwR/zyDyvuq91yfCAAcssH2GEvwfwpAnPPEhk0ds+eUPH7rn UXjuBMpNpUgg4QsBeDeLLN0tUCqHdr3jjmkfAkbW7IUgBqusjTU2qwu/xghaLzGy/yjjW8KLQ2U6 NEwrkG3XaKYOQAjRmOORu05LDzzC61qllDoFz05w1nU5XdzMEbcRDEJYYEGXsHjnvndwmrLLKKOE 10R5V8yAQv76o3Cv6BpAj6UWR8DFFUo/CVKU5Ag1qMdZbFKKqhzmJkjBRRwjgXvqmCdIoL9MBA5k MZFTLkq3ClrgYhx2E5VddFGKFbZMVS8jjCBOxBjcJe0eoAnH7w5CJayxLBw0EEYPdegzJJFDacmS R9g+gxrY5CgfnMFH1QKyww8ZD2ziqAINvKcQcMUtXRaQzvqiI8YuKeEGc1PJAeCHnZPQL04ncckV +Ae4TtjxTurJoHsgV8D6HOxgev863HwEObAHOrBi/5lKBRfJSELEbD6XEobIdhI6toAQJnE6XSyC 4ybWKSRlo7KSLpgVGGPIkDGPkcbunrQjHvrsHFp0QSxZZJBbRemVzLJWs4YELG34UkfbGFaxVNGa W2JmlMYjgQxyBbYtSilX2bpGcCASPvJJJ31hFKMFlLBNJZxRJd7RDrzemJJcyJF/V6jjHT0RwAxm LJB8VJg8LabIgy2uUpAbSx/3iTgJNvKfkbpgwPA5lFDkJBVxEsWc5JULUKIsZSrUxahOk45QgCiG tMtCiWy4u1+BpodPiuVbnkSlVGELHcGqRmN+aSPQ7DIgrDmiP0YFjiNO7x62Yhb/E35FJSEKwwfN lOUWfaeKhXjRI18kgPqWGkb1ye0GUFXjDbJDFzi1sRUkKc8L/pdOU3RiPZ7TI30W1qhBxbNhZxVL UfjJ1gMVEKBwzRylEKRWCUnobwulH0zIydC7wLEu8orXPIQxltmNiDGMoUyKeGe8KQlVqDrpoSyv BbZY0uBouTtNMH25mV0KSWk08tkOc9RL2/zKWqe1opSCyDTWZiuywVNIcOSW1PQRYHzZnI43QzLV A9wgAL/FziriBy843msGc9yq6PB4k/TIJ1BlfVx+GEextoalkGftoyYGShTF1TOu4OXKPcXioE6g IiV/u4JMMLlQON1lhZsSVV95/zFKEPnAsMdYjGJkpY0p+ZeyjiXpkz7K02vlCh3q+JWTWLSjVjrB WagBljx2gVNczuNXxdrNjWz1JAV3WJZOGirTiBqCZcy2trZN3zVt+1T1xkSNKzHnAcjDwXL27V52 pMlXL/UJjf2rYtclYD3vGai3KmyBAjMKWSiFFER9N7xQXsR+EuSTjAlFkqFwAW88htCGcgOisbHL OhzqvCjJIDXvNIIPWAWFZkwDM7oDIvdAirUn7VQcqe3hLZ0gjGpFKbVV+sxBqmiQDB+PsadN1Yew xTQpNTNGCmEIUuNmkenYNptK3eY2ZwxjNb44ueO5cRyPa97PLUg9DBprVRhmyP9Erho/QEYgH5/s wCG7+pBOjrKuG9FAQGWQJzipSbwW+hJXtE48u/DyQyGai239IjD3FcRicqfDzBCxzkK7lp6xtlOw LfhaGObMh88xtLBpS5JVI4E5ijcj0hLLhx5iLZ1jtEVhBC+YWbptUsXn1KYqdbc3uEJvoYqdK7QE f+XxWxVS4gLA3Vh0dDI1x3xcZEQdihH0lIQiFRgpP+7644/gp1q+2onApQTirNjrXufb0PCsXDwe 88WHZKjRm0VDtDtwLBBZO8stfhiIYXOSEB2b4aLbBsG5zGWfq+bRKP0uw6jC2i9SxbVnC91JWowR UCENnOB8JG5fN590nAMDp1r/Z7cq6S2n2yUXl+xtqze+l4M8pi/zpnpzRr7PVhiod4zvHeSADxCg LOUDoYTCQXPXVCh4kRD5ispKAwHlXXTZ58HETL+MEWqNaPArJ/iABkD1OfAk62juhRgwdhaNgHfV +e31ORzQ6xmCf9f6oblmwUGceu4r29qdbNEbHApBEzyiBNXFzTob2Yhtz8Rb33Zaq25PLv/89pbj 6i9fH8vTWir7zlRnF4GBD7/4Bf9ASLoz2Idfi1s8Roos7yJrDk1Ih3QhUc7ILmZZkEZiPco7/7L2 81nnX1rkTIVHA1W0aHbGU6jHBJyHDoomNCTAU96zPReGbY7VesiTe7n3eT5g/2/11j3dEA21MFvF hyVmdFthEh1dIgDskh2epkbjlE7ItSmC4zeCgy92ZXflpS9vsUxo8U4VFznjN4RE+HcKAoQB5Dk7 5j8qFxc0ISd2ISckdDrHJhegFDuFNQhtFg2M8Q6Y4QROMCVaFHqgB1Rbt0Vdg4a+w4DcJnSpkoG+ UFLYVjxadg7hMIEIcVoFloGAkQ5nNiVuiHrN1D06kRDAARzkczbX5Bwrtj5PpXYhoRIjYRI3Rh73 olzWx0Fs8TGl1jGH54MPwCBKYRSM8mpFeIqoSDmWEh8bgx6d8EbsJRcjowutQDJzQTJxgTpKRAw0 p1Fwpkq8E4b+51iOJlnBU/8FhYcqfcaAgRgMdpZgwcA7UZIOXYNL5oCHPrNTxZIZpqdoPvV/HahF OsE1QAU0XfcREAEm4nNpzJFb6rNbcySJ8pgS05dOV+A5N+Y35iU6HKRjIqMvC4ITRyEDg5dxqXiQ CEkV9xSKPEF3pgABIUMKWjaLoWAXFXkSDddlyOQLXKNmNFdDOwCGXziMNGAMU/J5oOd/RjCMYciN YfhugIFhcSgaQpdgc0iMu1IjB6F6PZRoPoV65PhTHVh4ahGOPMIQx3EBxoE25tI2MPCU1/SOZ9Rb aCKJITEnp0AnMOExdMJlh7cee8IehGRIHgdl/pSQaFldgBKQNAEXchI6Kzf/Ki1EIQzVOhbJZe2h hXEWkl8ojMO4kitZFmQxDIQpbyQFhgvGGcL4C740Jb7EbdxGUsZjjbGXWrbxjbC0gVU3lD+VQUJx ZezAECmQAktJHGkDJtdUAEIQA9ikBAIAVVElj9kRIXC5lTQhCqnglW25MYTDOU32L/2RlsJJhBBk KaeGeJ9ASU0YLzQBkYHFV7ygGwaFT7NDbeHQGGA4jCi5kkNZeENpmPIWYh2YaD3zIzayWmfmhpLJ MnYIb+epgXEYYtzTnVUndGbIfZGlDsABEeMyHWhTaW2ziOvjiHJzRnXhgrPAJrohAQ0nJ1vplV6p Ez/oMXfXJ0W2cbc2nBoK/3JE1iCH96FuRJcNZ4uCNUqMV4eEtV2CAAUygAQ8Mith6Jf+hZIneV9r 9lMLpnv+xTVBtFq8w5hS4oy/wGe4921DhDzYSG+5BIhz9myaeWXemQmFR44aMKX6KQULgTZLWT7J 4TZeqmLrMzfBJRJV1S73g5XE9hLr55WUlH79okdjGTlnuaF0GlejaJwyAAqc8jHLOQopF0JPyFCj cJcUCh/3FRYtSm2dR6McWBZTyplX14Eh5l88BYiT+ofJU2eEyZHJI5PPeCvloA45Elq+lBotQ1K5 IqlBqQFqVnXeVo36uRheBBGm+Z/G4TbJwQCqCTfVQRcxoSYq4aBd+aDKBP+hEAo2aKEnPkZdZVmn zhpeCPJcYXknd1WbMPGne6UpTaimdwSEGVMWLQqjvDOGKOmd5kqunJkTJkWSKMk93MOAwYA8RcqR q+WMcRgapQoOnYGvj8lnrHV1VbpdOTEURlClazaljhUCWAoRw3EBypEcCqAAExCxClACFhuxMPA2 YDKa0+R1K4SLuMllt6mnefogJpusGcQnP/ZjtPasLns5UMGKlDSOy5RlXEk80clCybaREyYOypQT hAUYsxKS2Vmj5rqjj4qjBShg/jeeFviNMqBgU8eArOWH/6oOQyQbxSI1W3t1xKiZgdiBVVqfkhqC 0cCfSUmxEVCxAOABHtD/tm5bsU8wAU/AABNBLqojEi8HMnpaJ175gz84dylbZXhHSP1BVi+buBN0 p6vYMQySeLqpUGraliFbuRSaMQ5Cs3DGMyFZhoVXFp5rsJt5ZVNXgDT6YX4ZtZyKeskztfLZukwK bwZxdKaqgCAViK4VRN65mUBLD0ZlAxfwBGobAREAAADAAcibvACQBCVAsSXAiLploOqVXLdJOHjC MT87ocg6sIGSQYrzmwZpkIo7vosLKDVLrXy7jyC0Xtfap/y4KfmyE8tUs8okA3EWo5w3o0urZqFn rpJqmKfbf1NSYKmiYPW6aD41Z/+qYBh2WjTpwFgbn3x2RUJpro4qAwgi/59AchjAawImQLzGe7wY wAEYwAImnLwc8LZuu7YXwLEiMWP+eEfImbKPO7j0kQnRmkAKNKfk28MdFxZ7AhieaFExlwoZuXgN 1X7GKp0TyWUTqQ26g2hhyIGma67kKBYsiqOTOoxbbKmM6ZhntlNX5yT+enomBa9Bai3JU6roUMaR SpRL5p2C8VODGTY8shAdcAE9oAAhLMIYMMIjbMIsgLzG6wFrawJK6RF0AVikIDiiYGqO+04SmhOc Y6H4VJDi68OavEjzkTGcI8Qmi8TSaV5dJp2m7MTSWbLz+wu645ef53kcmJK6W3geOaVC2cXe+V+A KKkyKUTymqPMqIGnl/+YjNW6KAWNbjjHkFqljjqUc1ywgmFnIsgQSqkAxdvHyPvH2swBfQwAa6sA dosAzEcSM4CVMowpVTCQKhunSQZdPLzJ8PwoUjpy/xi5D3pJe/U32zc4o9wJqywDHVWG/kUWSyuA n9eRgLFmO0qS/BeGboi1mtmjJIW7FxVEbDjBwWxnQlfG/uoL3blmOSG2UDDH9dmj93AYKZDHxFu8 3Gy8JKy83ezNCvAEHJG32JGVSpiEfLI5RMG4g7SQiBvPQg0xbgW0ygS5t5mtT7gvuLnUTM1lpUZY 3QCjJ2lYVey/K+kkq/K/ajaMUmK7Rop6qvqvwUy1ISYY1pKe/8rVU0r/0hU8thmT0GNxX0FkDAir nyh9HNZ8vCiszX7NzchLvAqQA4lcOrDAeOeBFpDsL2dRKWURhH3UKEM92QUyihmkmw06uXQHIQxq s8bKg/WrDZhBA6DruTbqqM3skZMazSs5wLpMqQd8LEUqb8xYmBYNiJJJdUCJnhK90G79nbsMzfZ1 oyFYIYeRxybwBCtNBCwdwtxcAjKtABdA2Op4HSphj5viiq+YL9TK0z0ds1S2ztRF2eT9KLOzCWIB GGDj2VzZftWb1BDKg+VFoRHYuSU5JQR9qGHxuVAAeq3d2rRMkpxXtB32X0UaDJ66xX/IZ8fyr0P3 gbnnk+oplM18wfXJ/6qFt98K7SL7mcczrQBEQMgAMMglwAGD3NLEG7xv0yWL/MIvkY+Aw0F21E40 rjE9rWo6PN7lveOVDTBmIRTI+CB9u8SloGVP+Aky/CB98xaTEYb9bUoPcLDHcF+CSdqAqdAjvdAN WGAETlLRKJl95n/JnHthO9YUjdtQ68ySmt7/B82FxapV1w2R5rBPUOcrvbYl7tIp3LYRUAImMCZy A1zYET+bslw2cUft1BOFC6c+/c48/uiCp1Zhyd3/aEeT9CBIDrlOTBPdkJ2zQ+X4hdqCaaNqVuoC 7tqVGmIEfGaMNcdCuqPDwFpSJ0TcM4iS+p2nd+tqrrQHy6r5XZiO0f91eVzndm4CEXu8hlwCbwsA JbC2dmu37GPYK0ETSy44MtzdDeIv6lxkOO7ocAVkiQTp4VcJRMm9KKATl46cAek59C2dezqRIukE s0PaSyaYoBvqUt6BgNjaKekrMgrBsh4ME/6N/8uRtD7cVefgo9vMu9uR3jnSp/0AxIDBn5cOwucQ DGDnbksEMm28yi7ihgzOKx4Agc7IpuCWJ8/d6AFsd6ftVGZAgBdrHCfuMX9fAcu9ODHJ3ItqLK/p Nhsj8e4EgInfoR6YBP3fCs3vsjzVAuyYAvbqsq67PAqUXpwTtQ0iTLtasJ7QBD8MzgzxD6DVCu0E LyANh6GUSmnsxh7/scve5yEfAUoJHV9kIS6HlQuXviBDd801uOxcHwhiMFE2T/FEMTQfV48kIgK7 CZ/pE+a604S77n77oQMekqBuWCJCFvQ+O+o59Fk9wFPdgAVekwkMiM7o4Adt+ll8UTi6gfRJy/77 +vdV6rEv9tEcTIcREUopvMW7tte87C3tARE7BbqqqxxBAOEUHnJBP5+wXPGLhO7R7Yx7oX0HXmRZ SME5/YXPyaWICVisTz6RwzyGuUArv/IbgQNN71oY6vj1Mp8H4JMajN3g2gHmUx2Y1lL/tQetqqqS ExYOCBpQPjQuNDQyiTI+jIg+RoyJGpBQgpM+iZA0RjKUPi47IU1I/zYENggpFzkmCgolEa0RJQAe ALBPDAi6QggiBEoLAQtNEigzEsgSJFVVJCgoJBooGtTVDw8a2NTX2N3W3A9Z4Vnk4tzi5ejp6+zt 7ujh4PLz19n04OTj7/v8/f7/AAMKHEjQHD543Oxxq0RNRjWG2ajRgEIRyiYa4ipqDFfRB8VHhxCF pOFkpBMXJWkQKpTIkYxDnTS8JCnDiZOXOCNJ4vRo0SOPlxb55JRTaCZGPTt1QmTkIiFIVV6ECLFg QakUCC6ouqAgQoQnrjzIatUqFwILZxEQIBBACVtiM6pAeyHX2bNp1PBWs7Y3Yj2F9AxeU1cuXsF9 g8fJiyitSt9t2//mET5MubLly5gH6hN8z9LDeTU1GrFYDsoDj6ZNP7DINGTTQ68NhbQJaiQTkYkw 4dyNCKdrI00VCe+EiahHpEgFRWI0iJGg062Vvm7a1AczFy6oljp1gUEOBhE8lOjqobwHsgpgMFjP S4iQtQKUBGjy4sUxEjNIFLN7d9o0x3tpE2BCgcVjYGKbbZYZPOn81d+Dz/gVmWQLVmjhhRgSdM9C ltST0ESopZbaah1RMshrI10EU4opobRIITAaoggihnAiEnC4bbKIjRbdJNIhyBHV0ow/QXJcTzpe BNwjTUEhAwrMVAFKE1RVlUIKBKB3HgPo4cJAAbycJYIFv8zXRBP/B9jnjDLK3MWMNNW8qQGAfnWz 4TkHHmTgZOwoCNCB1PggDTSEPoPfXX1pcw+fGTbq6KOWUaiOYgY1V1EWl8YjIlIfBZfSay81EpJs Jrkgw22nntQbJ8B1YmNLrDJVXJE9ebQacjphstwizeXWSafHDQKFERFVUUgIUjWxwFo2BMGAVmCR BUsrU6hXwJdprbVWANwS06YzJCyzTJRyPvbNN3fmKQ9hfr6ToLvgDEJNMxLUVwwKL9SLDJRyBThh YpAGLPDA/0jazmDkfEQRpsIi6MNq1wyyCWrBraRiqSmpepuML3G8I0zAUeearDwJCwmxlXjy05FI GdmSSkuORlHM/z8tI5OU2GW3AJYL6ILVBbh0x4CXYLqHgHsWkNmWmRAc8K0zc0ZdLmQCMsbXv+uu lo1q6YID2DkMFsYuxJVU8qR+9eVLQn1p2gWuXpEpRPDcdNeN2DslLZwwFAzzPaxGTgKJqY05qjTT SB0zYWrHM5mK+JC9rfhScJTIzNyJDzPMHIkpY9IcJ81FEvpoK0dyyFQQQKAdKgSgJcTQXjIAgxAF IJBB0hb4spZ83DqdDKHMPHmXuFHq5c01VTiErmRdN581QnhyWA24aB9TH331NgHBFflyL8EVMyA6 IKN2l2++3YAvnH7ff6NIUU2uvnqI4j527ASqRqDEUkgvMbEj5f8wScSJZDAs1Dzibz0xkZOWRCvi AGuAzGHEySj2PhoobgdSgYBVfqGtMDHAPTAoQAEyIIQxaYsAAhjGMNK0ryjJwDH8Ysa4yAU3O9mQ eWLjTLp06Dyv5QUFEjhGvepzhQMc4ExoSuILjniAKwRxBvmpIcLOR8UqEmx97PNb+ixiQMp5pHEn ud+PcpYkJtxGVjA5Eqt+FbIDGrAjbmTVyUCnMI0Q8CfD0sDK/lYRT3yEBiQ4CXamoiwbuIUAWEGk 60hIwqQJQADais98IKC24aFAEm4qF53q1Bl75ENdzOvh1za0F2NA8QqoNOIRm1BEJCKRiWkC3zEi NCDDWPGWuLT/0ETYtzf1qS+LnZKfbxTxEzDOpH4p2lFMjESzAiqwfcHC4+UOCKzRkO5zguoiNU2E iUPkTCpVaUIpTIFIXaQlA2A6CwrX2YT5BKBpEEBGuKBUyiiZK1GjHGUonccYRdlDnz4c1CmX6Mom KAGJ8imoQY34Au6FT4oAy6VEJ1oQjTAMUxf1WxY59whD+EhWkwucTxJxP/vNxDeQUMSSFjjBHYVI WNQU1qZkJlPpxFQokJiETHdqzVGBYiqiUFZVrNQLtZjTqCcMBiUpKU9w7cUxm4QMXzpDj3wer5P4 tJo3/hmxOcklKtfTnjCaQICqCKOsZ3KnKxkaPmbg5YYUjau7/3AJuNJg1KIWvevMSrSImwgHN7EK 4Pz6Z8EVOYVWM2PSBE3EOcydaIs8ZcRqKldMCb6UjwUsIA2MtQPVJQsJVTEFlnTROiEkzbTaUoIA znSApSKjGZecl5zq4RAB2ZCrANVT1+75GAL1sxvPmMESUZlEJAbgF0pQApnIlNzdsTaW9+IX1cAm 1+padx18A6ZGs2jAQ8wMNpqYSXB6o5s1BueMmxidRzzBqmBBtkQHfObJTGap0llKZo2liHe5YR3s YJCQQl1AEMp6wrVYILk3SG4TbgCBALQ2X23SC53+UturLiYh+qwExAAqId5O1WqPQQH3mniFJK6y uW5BsUGTe//Q50LYTbWcokTb1aCwXfeWeutlOdrbxy8qqWMX2Q0hToobVH3KV0SZGXViapos4FGL BRyHRtxrGgXqar4lsyZe4UgSF1QBg1Sq0lARSWa1EHgtKegdBNoZgHw9dELn+td0e0hnDH+4allt iGNkQAIXvGCpwthZMJZV4LIuKwA3WDCaihhECcB2wtQ1CC4BZphK5/DGdcvudu2asJlsqsc+XhWv TIcSJtxEjH4Via4w5zKezFdENIVYRli9XmoWqVM7xfV7BdMIKe1gB00A9pixtBYzk+mEwOhW01j4 Zjz7a4e2zJoo7SRVf17iZn15Yb/ucgzuKUsYSkg0in+x4kT/r7Wh9rmXW2OcjxlDb5+YpltdL7q3 Xq70VgwUmeTS67L+zQhkS95pkXjkR4rcSljY5ejJlFmyWk+Qb0yG7CdPYx0p1QfYohhzgd/TXA6y xcFLRDf44Nbb5dWZqh6qk4er4ZBEyMmtUOL2KVuJxAQv+KAsZrGiYVlEKC7jGZss0KR5GJh4C+S9 2T36PuBL0+akiH+R601LsFOSmZgavem1bEuBs0A3QnnWr0ZHYkdDNsAdZzQJW29FSBQiiGkNKaB4 QWeTpSwCm5kX2lLLsbuVpib+juTz6gvJT77PeYC4L8kTlGxpKJeYQ3EGND/AfBRsboMiN+c3qHxD 9yW+GNuy/4qgbJ7R+wE4mmIUIHXNbsQMbkcR9fHppkMRjKQOuaVMTFQBd7VLN+J6xHKzgC+NbzEf 3kYtp49lD3vAdbwMVlFkvNDLAgZbBNA7IyIjTWqi5byU59U4UY2TQscHgezMW2Y454W1FXx/Hirc 1q5ZoTdwLnITrUpUPpE/zy56u+sW+q6N/h0aVXo5RnpGUBq/VBockQ9/wzBlVxETMwm8YQgkkCPD 1E2QAB0Ft17tdU1Nphp+wzn68D7W9GQy5UUj+CuOpYDIdw1IsVlSgXF1d0JJszuHRAADFgQONh9H 9GfRRXL+AXRTY2EqhyfmIDZVJSBwE1uBFyfNYBePN3NFtP9KBpVgKcZcbmGFOKeD9OFm/bE8VPNJ dqMYzmNj/2eA7XAp/jAsFpQwp1dvZqgwjRUxNOVq3RQd7bUUOJFSl7OBNDNfIZJRFpVfiaVGZ2cr w/Jqh3hrl+J6XENxyOMEUREKVDJUw0AAZqYtQXCDZWUmypYv+RJDpYRPtnWE0pYuEpJy0wNV9kQN 4SIuyVBiRmRiB0CFBnZsB3ZgOtdiaGJEqPSE4oOKc0ZjjgJKp7gu5FOGm3aMDaINfJYdS2dX7zUR C9cqklMTOiJedQh1KjUssJJkfNR0UIZXnAaHZKMczXEaK4VAU4ZZAYgpFIcrm/VroZA6KqRx5mSD mhgMyrb/hS8QQ1F1T25nYc0DGCV3PPMCdIZySckTLs2AHdezZmZyJlSIi4dUhUmTc+HGSkeEShwJ RZ1HDfJSNWBzEI1CSsszcWUIgE2GGBFjHa3oZRBwhmwYgH30XaMxEoQzOYN1EWZkG5OTCYajFKI2 gs6UenulaTm2V/GiNSt5cOHYR4t1gArzMCwTj/41FRt0iWgWBFgyYNtiVu9EHwwZNc5mcjdEXXsC SgbRYQICIOMCRC/gDHXhDBDGREmkWgtwhbhjAUijBO7hHsqVcwXFiyMnPjX0fbk1jClnkACVkpRx GjLBZ332AjkTk2zYN3elV+kDGyoyRyGzFD1ljUKyRkwh/xyEswkyQzooaJTbtWkd0SuWJVkWwXWu 5lhrt2V19JpIYSy+BgHCZhVIpI+DtgCQJJzC0GZq0y8eRop3klsiWYyC1xj1Ag364WjIEIUNdURt QZwsdmB/6Zfg6ZfHRgAGxVpo8j2yhCh4MQ14NooeEmkVQn5XsyiO+SdphwkkwGeS2YrLYJnpgIbs kHo9dYg99l0TEziIcEagco27QRTpWDkC+J+pgV2ZkhGc8hy9p19Ip1275jcr4V9SEVTIciZjRpwC xhYmaiZpQ0+85X+FR0rPiWc/CCX5oR/NIEQE5UoaFFpYQibu8UHr8UF/6R7IRlbPlQwPBSHet3Ik uSB/Ef942oc1Mlaf7sARZiMc+amf1Bk8L3CGSZd0HKp2iNAp6XWInCl7OYIjKiVH4HigUwaOrtlL XLOOuNIkGtqhSLc+XGYsPuAEwTaiaRVaeZmi3DJWTHQvV5Mo9NCIxjilVCVVP2Qoy/B4KOACj+dE qSRuZyIflvgeRvOjQSoEMDA7f1lgebmLTbR5SCqpzQBz6zlVG3IYAQUgMvRW2SAoTUqlB9MRwyET WfqSfuYC/ukOeZWn6dMkHnEIN4EirUIdSjEcRFGmNWmUryYz48gwllMJuVIiEjdvHNqtUzYRhfBr VHImNiCohpZsm6qi+fJo+WeMGYEwn9cu+hAxWHWQ/SH/F704A0x0BZlneTX4o+ohqrIDA1NwsNUy qgOLd9pintiHPeynDHIJW9WAF5C2mFNaGAoir9SmAVDzg1EFn7q6q4XYcg2hRzIBDX4GASQAAZpG rGD6rWZHHfr1EnnDrK5xOADXh3W0TXnKaezDgpSQEfawRRPBjk8pp6w5rYcgj78JDOhKYMPQTgXV UFEajNHDNfACo0RXNV0oYrJkfxJwYuRJaFmBHl3hFbVACwibsB0QJgVGtcigquFzHzYDRPzxJusG kDz0boa3VXFiM1CFNfs3sv/JUVJGQHpkGj7wkpTZZy8rk0hJrUzGJBRTdeP1dAFETNV6WX4ooKuR me0I/w6XYxqCICLAdFmi8bPf2rR+liwlSmaEthZ5iVY62K5AV20K0ZSO2n+myJjaQKN3EbaMpp2H dFyWeAEwEC3hUR4AwAEAQAse0LZP8DpGoy3EiUT14nd1i7fg0lTzlJBXa5bR86SQsUnbJpfL8EK1 RIa6Wo4Vqhgy4av86QKQe5kAqJkza7QVobMLGmRnNDlMUiJNp7pblJmia3CVomEwtZnG+kx6eriT pYY74ATyaK51dxXkVGiuFHLfQqvocjcHErMHY3iQ2hgPZakcqUoodkiiOqpPcLAekAQAkAQcwAE2 XB5JYB5T8AQ+fAGFZiap6j0eqR/hkjZrUy/hkh/7kv8XADmEuouv63kM+aGKAKJhEWW4czVr5iAJ icCQMuQCQLsOnMMgR3msqDExTfEpIMGZrGFqoXJHohFHxpp6p6dRS2mvjXCnSFvHvvSloTsYDihI gyROVjFUV6GVtKuDUuiJ6mY8u/sc2MAQXjPJCcE1/fRUURMnwztzBGVEyOsWRyM0XAILalsezfu8 OLzDPTywlzi1rJU29hc+Svy69OIC8pQM/ZiQKxeKFQsnECJEQRRz6xvChavFxIoa2GCyqsi+JPAP t6lwx2cRBmoSZ+pdCHobFmhrWBZxddyGp8eCZRMvBryIWQSIk6s3L2ulFBwKwDZOo/Uzr9MdvJAL 70H/nr+wQmdSSV2oqHcycZU8fu/5nhVbBd9j0DTHLcVmiV7yBOFxw0Swtjd8w1Ew0Rwww9MbO7kw f5VXXAxlxBKAy5U6RPYCYT+nnoNCS/4BzClNKFQsc04UROAShCKLzAejgHrECMkzJwz5zGnYMLAW jfqFmheDrE0ie5wrjQOHWH4MoA0C1INwK4Wob6yBzUuLv/h7DppGA7/mZcoyClWxHVhxVGlhvXH7 fg1Vt0k6eLcFGa8JkpbMVX9RNi43J89AF3PBRMcFSQRgvT7cCh4Avc470ap80UnQtq38QUejFjhX tWyTNiFdHwb9unObDBE20+u5fhCyflD0RKYEeU80/0tBR4Q2vauaUg8M4RCb5NNpSCL5hWXTSrP6 1SRZNx2cGRJtHHBNrad/PGtmd5uQBY5FAjMg0a0YhTAiYsGgsAPnisgXQNZH80EX8DofdEJr5TTg 49n/UQXU9reqwRkALQ8hOQiuCkRVMGJHxKl9LQRPsLwKUB5T4LyBfcMsEAUscMOBvcPlEcO4sNgc l5fmFpFSiH3cM2L2Ily6DA3IEEXqyW2HstlUPEuXWpgakB+KqoylnXAc1VsyEKAkrLQaIa7U7IBK cs36RhIkQdtHO9vlvEVGIIggPjN9I4h/nF0iLuKw/c0kHOK/5nxWca5ZgSWhGqRGZWwWEB8Z+Uq8 aP8fX/sv76axLyoOkuwgQNd+rRR/p1WwDBDf+c0BLHDf9P3l9O3lF30erYALeHfP5JnkxnXdUrho 39M9QSRDtFyjrdiqM23QSbrg91Kdls3L04XhpQ2mWnQaqnE5BHSAotu6s7nionGmB3QxKF4SNhES vy1wi2is+puncLqZtz0bI6Ghjm7HM+mAV3nIVnElKbAAb6sL17LR6sTX5Jl5CMZa3kPE/EJLNgQR GGZtWvM1TzWjkJejbeEWoMrlNmzDN2zDYi7mE20e4REBPcweai4fjW1uOfpKTqRK2M09brbgl9om Elura/LnjSbh1ylEb8O+cpOxGf6fy/ieodPhHx7/oAa4jrkGEvpm24jzKRdhrEeCdJ0OrulM8Kt7 wO3Yjncsp33qBOCU6h2QFdPdHd3R3goQOwXgOuOZWmsOckYUF47GnoBBhmkZbTIGKINi0AQVf1f4 wger316eBM3+5TRf0WMuvVze3kJKu8iVlwk1mHZJtcWlRPSRJt2Wy0ivyyzkNEs0tnWJ3d8TPnIZ wsL47lAe0CyICV6awDQeLCCCa9YEmpPzmT8i6SrBiJf+2xFkzghf41k06uJq6f8urQOfUZf5R1Vg wWB9rjbQ932PALlQ8UFqFmgxgylm7dt5UI38Yts9hKYIGFj8TylvDOh2Jif0wjBgHjNs2DJ/3zQv /+a0UOamrABTkB5qXia/cANLw2YdXVz0J3m27tG7mPQLjh+WfQy+s0S+c53Z/VDjMiFW3w+VnMlz 8gCsPcbQyHswRQjRZF6oOfZ4iCI2URKy/Zoy1eLcyvZuqM67DTg37v0bmlcMo6yhIAqgNda6QMpD owBD4x3tgTR9vfGoT55CD9l1waIj37W7FbxABAgSLwdNAQQEFkIMME8lSR4cHCyRLJWWl5GZjx4e UwowDEJCCIelBEpKhwFKq01NSk03sQGuN4SuTQe3uhJXBxLAEr+/V8G+woLDg7/CVzMSMzMoEihV VRoP2Q9Z3N3e3+Dh4uPk5ebn4NrZ2Osa7iTjUP9Z8vRQPkZQ+T77Rj4yNDLs2ZNhhIYRGQih4OsH BSGNhwdpODGYr58PgfvsXRSYr6PHfDQ6lhOZb17HkB9TKlyJD6XKj/NiksznZEeIEAuQLEhhg0CH CwQuPHnCgMETTwoUFC2AoECoREISWTCV6hQsXAdevABGgoQ1d9qyqBsbVqzYbGKxudNQZYZWV4YO WUAAA8aUJBzwTrpUSRKmSEmSAOCkYMqURaFEkZpKtVAtV7BWEbghCxdWV1kPXClmTJfnz7yWeQ7W azM0FNWugd3GjTW617Bjyy6nTq3tKijYkivJDeRHfzT2+Qi+7x9AggYPslR4sOBEgyGjE89oLyT/ dX0coTzI7jFmN5gvU5o86ZsiFIMbZZIc3/28zRBImuDs2cGnkAsXiipwWhSBfwJPRSVEKVKVUtUp tFi21VaooSCDO9pp8OA6PqgFxWpjrbUWClsRsoBcijAyhQd64ZXEXn5lUgkAAGzCyRRPKFUUKKJY wJhVAgSQIC6yoNJKLAIUUtkggxzzWQCgeeYLaEhuVYxmvczgDAokVLNWWK7NpuWWXKZzVm0aVlMl Cr3JxF49vmlX3UP83DPcP0YUFCdA9uBzD3IP5SlnnsFZNNyfbJ500UbciffSmeGlBFF0HeFTkkq9 fbQdFDXdZAMSSBCQwgX3CcWAUEkxkJSMTpUq/8qpo5xaiiiHNLEALRAQcsUL0qCmgQ9lkfXlWF9q yJYgEDRBIF113ZWXJCqeyJclmUTiQQmFzQjKU1NNJcApp1AWi7CsnLIAK6m4ckoug+Ri7meF6IJk LkkegOQwTzrzTK25XblNll3mqy9s92pjm4RUzjDmN2imxJCd+uR5nnAPNfqcow0BtGdBfC6KHkrW FXSeRigRmmijhCIaHp8gxemmoy4dGt4+74VgwwI2xIzAT/j9JKoCJsRIVFNLncoAY6xiCxUqh0QG V1bFvAABEy6QIEMV+7gjnAYRPkC1vxU2iJogL7hKgH+iLGIXiSbmhQmKxwamdicxMjAFjYqZUv/0 tUV/W4gSC8jSY4IELNCEBJale64u5lL2LuGEHGCLLr74Mu8zX6lV1r6UVx5Ov61ZvdaDVAIjDTz0 iDxpPqMPV2d0F6FeEUAN30MxxdBVrNCg9xCH0cIbZXTRA7t3tN3vanr88UfQzVRR7Rqn/Gh7g1b3 XhMx2zBzfj18il+MEUQwqlIX8BdKUahGhQhU4htIgGOYJf1C0155ZfX76uzqrzuoVaE0LR9+/f0i hpFt9okA/B9gBmOiRyQBFG+DgRAKUCO5CeBAknmFBGFRGb3Bomt9o2AhkEQLDt5gFQGwRS4+KIvE fQYa8/KKauBnuRa60CxjuVAVnlYlEkjAhrn/IUGigLeRbFRHUHrSk0IgchHYQWdPi7JT6hj1G43o w2O4Ip2a5LGd7wxvZC4J4sYMFjKVbIdqw3GBTZAQM58gAD+feoJQTDAqwkCLKQyAoyJGMRfxhY9o pWgFKzCzINRUyVcYIss6LqQBKk2jCcEKwALApgixFasTdylbYEhESU6QaESGKcGMQHAqGzGGbql4 ICrAdQNwvQIVlcEb4RCEGQ6+ixYkTNAHY6E4d5mQM9GwYeTA8sJeUq5fmtNcFbrSFWrYSgIF8109 MjKphs0DdueB3UYgsjo5RRMiE3GCD5xwnuT0KWUhkYFwnEg74JVkdGJ5yTiFF56JhURj2OmH/6NE RjWOidEm9OlAp9QolKFob3uhQkAcfdbA8NWlk1AxX2WaMAho0AoF0WiQ5NCSIc0VsgqCaIILXJU/ G6GKWHUZGyQ5MZRPwIgRoHCKIviTKhuNrxQPXIAArjXKb6XiQEqgDCpwQTRtCeBVOipEjhwTQloO jjKj8VxX7DU5Xzo1NlS80BdVYw2vNAiHKIBApDzSw9uBxDzdDCI1o5M8hV0TdnIaTsfmtLEj2k44 bfLYNiQ1POskSmEQO6JHmBg6Sf1uH064CczqcwGb9WCfCvhnjBRAlALkpyiQDZ9kayRZxqSilN/K iquyElHUBFOQ7bgoCbYCjK69Sgl0W9X3hP8wFMi2lihJmVYcZ7Ra8VWrWgSg6QO9tbe7WYUWVYEF uCRTlQ4W4lu0cFcstMVcwWVFEDf0yoPYga+nWhcdENJQVavhR65tZQHyEJlKFrKxe3AzdhLZATcZ JpHgsCmJc5oYxcJK1pItjDjTMZ1ItgoeQV1xiw0jT5pWksxl4mofVdhBE+ITs/oMyCg9uF72speU CEDrCTnA2ROcggBUKdCjqKpj3MpnigUQLgAQIK0Nx1QvDQXTV8NsyzNuAZe4kEJ8HQZfI/XzNsju 7wnh67Dc8OgtQxi3CTG9liGEVbQdcYtvgXPy+SxjQsItSBDSxdB1t0yb+bnjK358BnQloKP/FL8A AeFFUxU9MqndoVc69GWvE54DKHfGdyFZ7CZDOkIo3sE1Iy45k5nGo7yPBXh5fOWNSQatHd5lwwdj jJ4NOkBpoVTvCWxMLIs4MRgZMVZGiLGLAoUQ0lGfCgE3IhABgtq1JpX2BWNSTSDb0eJCokbMnoFM kLxVFcX4jAEChey0wjaKryFiyB8irmRACELk7vFA51NFk18RJB4Z7QaTecxCTaiVrSyVumjhsrjT EVoNEHO0WomVK1MQhAUsIAfLSxRBCKIPd/IpefvI05zx61Z7tyTPbeUqoeAKqYoYzyPn3Svx9tpe inHT4IVW54EBCx8y0scnNIvwBUyQvcFY/9IDSgk2AnLQHx+DDdijyLGqBoRbbN3tVQyNFWmBYSu2 XAmQX7Y1RHFNY25hCxFRQXWqdNzh/xCggVTBW2QQ5DdmP1tHN8ibq4ILXGw1/RV5a4WTAxc4zfzt hlX1ipbHTfazqMUH7SsmBCCgI0UGQUdBiHvcGRC8fC8sYWpFT+pe194j5l3f71Ur3x8yEb4L+KsW 2fPt2Emeef53ZHcdcHjH4w1HCySw8Jk0pXswlB5EmI0RYBEAODAYCm/PkaQOKalXL9nEzCWhljXE t2Il82l4rtarAbe/LNogMQvjFSCENtATgWpSyEXV5lP6jkwprlUglxam2G0pfFs04doNb/+GwJve SEhCxxDuNH6sBq6aWvbr+ksGXVkQUWV/CBEEwf3+8Y8C2DPN5rmpdhuZr0SeA52/u7dibxZfCsMo cPZVd0c72EEoEVdgKpFovgFNDHdohyYyf0YDOxBpldYDJtADEYBp2UMEoSd6/6Q9GEYUQnAElLV6 piYgAxI+R9dhAkIKkjFlyQU4iMQMWoN7uxcm9CNmvmAZSldKwsdyqSZ8prBkXBdlG7QtAfBTyrdH d7MjRsZ1P/IYWLEkyEAvskZ+5edCoGU16ac0B/Aq7iZTQXAtIuAfaThyCDB/5uQ727FOAKFWc+Yc +9Yw71UxeZdvQnRvZkV4ZjU7AgcxK7H/TVvUX31laC8hO1gEEyZRgTWhEw1mA/hxAZ6XPRQwYaEH ghOWFCZgAjnARpziH0VBFKV4iomgYx91dANyCgjgN3AxOM8Vfr7yPjhXL1sTJVdQONsiXNDGKi2X fHaDC8l1LrG4LkwGSs7HfK1COD5yFa3AWzsyS8OQGUq1hVzYhb/UGmmhIV2xdmwHAe7WbnK3AHPH FCOXAyMXKcGhDz60h3wYO2F1XnwCKPyXh7GDRBbDEuDkOqmDO14lHvwVb4/ngCrjiN+gDYPiAvDh MvRhA5zHeRHAcSEoepHAIh2oAJ1QF6EAIBy5P/zzYTvmY6f2c5GRCiaGOOAnUTe3gzBW/w3PsCRe Vwvf8i28lj9WcVOBs1BYgTjssm2zdAgyZZMZNINNJjcGQpQaZFTk8gveRiX2oo1PtXsPYkPgGAS5 JQBYKQAiMBciQADvZwUTwBQkN3IJ2DG0o1Z3QgMu8E7dRCkACICAAigWUzGvUyh7BVd7poCHqGjt sXCLCJh/2JfgoTxpuU02AT2T5hOY9okTyXEcZ5EYGQE5YIpHsILfQz4WEArGd2yTNSB4Q2LGBhcl FAz0gntgMVH0Y0jCwDi7iAunECT4A1w7dRlUxjiumRmM4xiLw1NFNVywqUeKBBlbR4zHyC7MUAwC QyWq0WhS6VTugH7EdD9xl1oWcC1cmf8BBWABXdkUCCAC6hgECOAmXCUQfTIogEgyc3Ye/EeXwdGe YnVn+kZfL7GXAiFPfMZ4BPl4V7SACDkeB7YN+/AC+ESJlDYUQ0GRANBxHDACC7ppCpBhEfAsn/AE 09JjiOFjNAJZAhVsHQkgQSM+SvBJrhAlp4lzFhUm9VMaSwIX4XKcyXVC8fICmxENxeAMmuELNKpc QYVky7hkzvZkqzYurbBQyydCxjUav9AVM3QrGmAWz9lLD1CVTXM/OvJTMyUCaXiG7+edBSACBYCO /hEEOWB3zYMdeFUxzzFnE/GWcUZ4d2iXdSk7GEMykIcxfHaQ/BmBEHePigJWinYv6Jn/mItpA0XB gU8gkSDIIiOAAQvaiZl2YbJlFNNiggIFCieXGB7ainHzgn1zfJgBJc5wBVqDc77CXTG5DLEoQegD i4mTCzfaC7IqL5sRq7hJjKzAbEn2ZC8HhXHxhNuCPsm1OILgezMwXVcTpb2UD+aWfmvXdm83U1nJ ld+ZhlrqftcqnnGHZriDgKrjD0aUTfvHpnQWly5wh9uUd/QlVnh4TXn6MQOXO3takIsScI1yaMtz YBrhAwlmcZMWkSZABCBIBKI3ehxQAQ/KIqAoKjAAasB2ipFlFEMHPsJWFH3DWsDmqbDgcuySC6VR K6Z6qvXjgzSWICZ7ZGMGDLYaq7V6/6u1AEKr5qsG8qtKdz5XgTeTgVzAR4zqklS+RwJrIVVQqqwt xK/DpDRs13Y5IgDXyZ3X2ZUikAFaqpXuJ3fiCY9tJYFBBDvZxKb6OJfiKpcEGJd65hIFQTuEmKf2 55/zWh6K8ngJ2WbDsQOS1gGJKhRE4AEAQLAWGQmOyiKkl1jQIiIYCgMl0LCGYaGTqqEoxQCH4Dac KWQ/t6rpEyUsyYO50XsQJas9F6pY0TWZ8Ti9ACWcq6OYYRlG1mzBRxVFpn0xC0Kou7HgolxJ9QvR IA33QDXYQLTLyhaj9axtRxlMO7xZypXZSrVWiwCERx0KiDJ7Uh5du57ndY96mJ6EF/9WAHa9BDgc +hdgbok6G/FwDfgbjJdnZFuPgNl4+gpXF+ivdmsClgiZEyZ6CjB6Hbegp5ehOeZjoIapc+RjEvu4 w3YfxdZkqGCTmAEBs3KaDYIbWoMbbTEroHsZv4ALqoo0KCQlo9sM6EKFFGST3RJ1D6RISwZcuECU PIlcU5ZrvICDzJld98K7LWQP1uACSCuGIUQZNzBTPMzDU/t2ARB3rwIBQcAmA2fE+baHAxin9BW2 /xenazpn/rcxTlBWhCl58mBX2NtE5PRfunNF+sURPEQ6bUYTFTdplqhGn4hpfIuRozeZg+EJhqEf CpAfSXEYpUKxeixsIfW4h7FjO6b/KSXGqqDLWQ1yQ6mRg25Bo8DwqsJQLgvSNaXBoqN6o7OyGT35 crxmdQbiNZ4sezQFfTvlU6u2hDcYLIx8ey2mHTL8QlAwQ+lXWrowCG3XhD1sy2cYxCKQIzpCAG9V HWoZj/glruyZJ2pVBRJRBWGLzFGMh+s5nwAIT3D2Tg2DMs1jHcIjr4xnf+b5j3g4gN7MEe2Yrwro XjuAKWhciRcwkR+4t29Meo9KGIzVNosVW/0Rf6kyCtICwBkLuakHPqMYf63iya5CCw1Fc9H1wDMg Y49cLqebGQ0lGiy7GbdEOOgjLKtwUzVJZK3gbgWN0RnUIz0SrMkFc7kgc5qxFRB8/w3rUF2trC9G kHadoxXBYEuudKW4fKUfhCRFbMxqGSjxOBxs+mbSkU10uE1GDadRLK5tSoAtkbUSeBLgdMVri5fc HMbXzB3UEcNrliVva4GZV2n4AXrtnD1+W7ATBlsg92mmCMCjqM8jyZkNO7HSEjZFdwid2Sq9zC4H bUMvsLnQ4BUOdck+iTRacaNFQgxQQmM9t1N6lD/O5y1Fk0Gvsmo2+SGs4GytAoW34DcplmKkQQ02 R10vnS+T1xvo9zQ6F9qDIHNsJ8RcmstAzEHGLBF/sq/u2XftGpd84sT6ttTQLB0E+IDKYxKoo8Up o80/1ESqEyjN7aZ9hh3dPHkeY/+HlhIzlvaJnFiwHIABF1mwa62RhyEqbe1aFrrHGarPh3GpOcaR HpoY4GN0S7guWbFiWyElJDAvNHrYO9o4ibMMh53SLVoMtukYsFiTUSdtShdcpeBuQplbP0Kke9RB 7hJ1B4DKM8cVQAtupT3Durua+V3T7uJKPZyVcScCbTeG96iWHMNvf2cEzwGXcIqPul2P4+qn0gFP BoivaJI8i1ee5BFxjPKPV92uHsNfbYYSAhqBY2Rx8UvWBEuwzfK3oucB2dMJShEjPVYXnzAB541y tNUfQhAtRjHedvEJZQ5knkJ0cvMhQPXZEABd0eACKpvYUMLIJtSxsmLRPMJ1Oiv/lDhrkpiNkxnU NyZrShlNnHhjLgbdbQtiDV+BJR3OJaedORY1Jr6XDDaNy1qplU34KhceAN+8prSDj/7329Hbd/5H vYDX3HxVp/NFPIaZl2d6O4XmzUskHfL6f6ycTl2lcHFID4RXoJpXidqdsPCcCeB95ZxwuItVag/L WPrMzzOiSQJlGIVhGG/TP4fhv/kxIB2WAm0eVCjNULPyXLKInA/dk4yNunBRk8LyIcZnWUNmlHlk 4HoUhLBpZV0D2sEAtBbFK5PeJfSwFmPSFTN9Q0iLYuAojmVYy0gijnW6f8x76jPeXmvKlqle2zcO gOVVl8QjzYKpEqajMHYXYP/4/0PhPNymQ+ReJMb6BUXpRUYdMGkQGQEUoACZ6M4WiQHeXbAAkBSN QFJDYRehxs+MAMAWWhhM8QSPwFjaXlIjkvQjGX+k4G7i/vCWESy7oOdJuAt87u7U5jfwLntGiJSt Qtl9o7Ml3OdASC46et/5zWKRno0DryUyxKQHz9prd+FZUWYR/6xr9wILINwbT/H/19uA2MzKrF7L ax3j6l5vOc5uhaev3oDOPd1h5a2+EcZ5WZ7bLMZm0euWPlcdEYn/GjMciPMK0Mbv7PPJTnqecBTY DlmfYBdToEmUGiNJf6lKoZGapJFJIMclkLi4zzZEYYr3QQopIO7+Ie4PLoVbR/8IerNcVti5Uljo bY5sx4b2VkeUKjzQvlj9CVKNqYxCNSfwd2/aUlNMY0INNiQMh/NKWfHZSrMghV+9dFiu7wUIUFA0 hE5OhIiJNIeHND6IjYRQj4OCj4eCNIOSgp2ERp2VmqOTpZOaPpmWnamjiqSOkrKPqau1pT6plLqa mzs7SDYdHU3BPSbHREQRzAAAHBwsGNDOSR4eUwoKT9oKUzAMMAriDAzb4woMBQjc5QolU+bXT+JT T/T3U/rb9+UMFwgCIgAYkIBBAk0ILCAQoEmTBQEYOrzRhKLDijeUNNF4ceJEg0oUGkQg5CCBggtN hlxpcuPCBTcgKmzYUEnDjR3/mxy4cmDnFQkzfs5AgUKDhgdIH2RZyrSp06dQo0qdSrXqVB9GNVRB QYIE0a4SSLiQ8ILsi7MQIJx9kXYtWihGRj1ydGlRrlix4BL6RWhuJB+R+kLCa6nVpl5xXfVa3CuU pF2eNlEyFcpwLV2sVikedAvzqlCZM9H4BcxGMGEmkJlwxiyCM2jSWEDz8Ix2Nm0ekgAQB2OCOW3i SmibEiEbN24eSjy5JtzbNX3Qn3vjt+3fhQv/BjIQgsDCQe8pD9pUQv6GeZwbAyi5QeCGevULQoJU UnCkSQQnS3o/eX9/eAJKvBQgQ+Sp18R7Bzp0QBMvzDCDBEARlVVSSlll4YUY/2ZYFRQaYLWVV1yR UFZYL7hwlolrqcWWWi6YaGIumqFCy125zLWIYoocctcrPCJyiiONeEJDXHGJIhoplVRWGCmU9KJL jZdV0ooinXEG2i2gPQCFlg/clYkTv4QQQjAd9PBED2aaoAwArlHzDDQcAHDNNdZ4oABtHCQx3TlP mHMPctnAo9wEwjGwHDZ35gbdNtAZN1w3TwCEnT/lWEDSdiZlCiB5nK63EUgIJSTfQRFpil9+JJnk nRDetaqQfDQRIIBNAcCUk4I6ncXTFUJJIOGESGko7LDETsWlBl1VYVQVJEB4FoRmQftCs125IFZX 1d6IiI02vmIIJpb0SBcti/9EEolkQwK5iZGfJKLXYplEyaQohsHCLr3sxtLkJFHSwhkqlDlWiJhk omkCBQe3RoQzzzwzzWtyzmnnNd0wp8AE6ZgjTjvI2VmCnQgoYE02zxX33BTScfMxynb+0+d1/rAq hBAFlJSpBTiHhDNIGR2Ukk2q3nfSqfx1oJKqqQpNYEoLJOQQQjfpBMEBa10xoldZGUVhsVx3raGW RsmgFQoPVMEstWSN9ayJYWHrNgm5kPCtYH3VCMnch4BSiGDcxmJuX4EZ0YgRvBSpid6JieKuKpqd ImVjn7GCGWT2gmZ5KFpmYTmXgmjpiQ87jDnMBR1c0AMFy6zZ8GvTxCkbNhH/R0DbNnRyYGc3j3Lj jXKJKhAybdjwrs9zEg9H8Zy4M3Bpn9uR1B0BOO/H6c5KWMCSd6MCuJCl++EnEAEXzHyq8ydZUNLM BpU0/oAGwbTQQw41BFHTae1U1gtVSKCs2RRW6PX/AJQKh45iFBSc7StdKRFaEmita8nggV0Rmwwu 8a3AFKIRUNob3xgBmArSrVsf1JePGjOZyEDuL3KxEsBsEbDCmMIRmzDE3Tgowr7g4kkt5NcpdlAM G9jgAj+4jpmawTA4OUw21IjAwiRmJ+Os7B7b+FhzbvcE4tjpAtwgGcoicI+SYcNkFOsixYhzD+xg o0+Xmpka17hGAtgsIOKz/xSrDLKfg6Avad7T1BzTZzNN1UoAEHEIRGpFkwCoyCzPCpFROISUo/gv gJCE5CSWBcG3YctZlnybDKoAQRnwSEcarMK4MrgtJ9DICaIkRCoTAcK6kWsuL1TSvmDppHo5rkm0 5MyUZCEXGf1oXzG6nDBtUYjQjUkYpesBA9QUAQUQsYgYwADEVneN4uwpi+mo2O2cGag5PcEE3ASj M6vpAS4mqplgnAcY+4Qye5hDH9uBwRq3o8burDFV93SjG+tpTziSL33mUyP0zoc+kwjAZwqJD00O BIEmqIgtI2JWUZTVv0dG8qJdA5sGNoktsxmwKygwC7U6ii0JcvKBhyFlIv9kWErAuNSU3OpWIwLz yle66zGRc4xkpFQKgMGwFfXCpeVcMaV8EWYzw8RSZvZCmiYgs0xoekIEwEkE2jDsTUWMEzWQZ6eO PUp2ciKZM2jHRalWkRuyo1hay/kn5MnOihMbYwkKtZwSyBMGeMUrPUmiPu54j698laMQYsYdN16q eeVgYx/1yViDAFJWUaMIRRbUkYZSLSxEMVuHHBksjHrWa2Hb6FGYNTZmMWssLSLp2cSGlU168kb8 YuVKvbU3l0LCbhfUEZRoZFNYRilg+wIYjFDh088A80qKi6EHLQgYGAZJhDqshbjANKbTYPE6EaCA Ej2wsIZxYBqtY5NrIgb/vNtx1WLJicDHbGePcl7gTto4TjOzYUVvoHVOxWEG8KRaTZZlzL56ves8 YbBPeoZjsIpFsPiG5sbw/dWvI1mseEISEUI2LUEJoskBHnoWEBkQWBb9rIgx5LktbVRZWpFBiEAK lrGQwLSude1GJThC2YoLL3bJ0VxkWgWazmiUXsIpvjTTLxWqQrih+RxQdWojxR31Fja8nFIr84gq /MKpHUCm6bhbTmYsDE7RDDMA1MRdOTEsrky83W0ioJuJ2Y6/JSNOa5az1mtETBvbZU0552S7ZuKu UXktBwz0wR0hBFivg02sgWe26JiFj437TLCETRLIAlGkIVTb8P18pVmt/yklxCMOdVUaGVof7M9s L0712bzCSbOJDVms3SheGIHjG7USSM2dEQhpwdIbb2tHpmhyUTuDY7vh4jOyOHawk/2KQdDa2ajo tbsgE67YFpNMyHxCB56g3daAVavfnaYzqgqNJNhuTs4o5zhlt1byAmAK7z13fufEsuWcm8/gbEZ3 5aRfOZWAGR8bThKSMAWCgwOvU2A0OMIRD4UnttDbUUc5EJBY/AjBwXZ8nqZMEgALX+Q8uNoJ1X7i Aq4YsKKiTrmFlDLAE2tl1WDJpAxI8EBOilZsUJDBIOLStx3n6JMibKUpbexrWEj3X0YKDVHpZXR2 TTleikMhvng5TMqksP8wVgZGln+Iph5wsTXcJQKYjQiALxfRzun2twJMUIJ0Jwe/+DXBFGYzsaqm WWKzMYGXgfcadMtpnGH1BnTwOthBf4OeQtBHXhev6IcruOKVirRhC5opoGkvQPFZj0UW1JMXUG0G XnkxipOi8tJPZUuoz8rMZx4ia8HcbRJ9YIewogEOQY63oNwRBn3UiqEDaVtBB35MqdR0ykXX+Ede 1y6QBNRe/ugwoxDcY4jqQSuBMFxMulHokHCaMmHRTNqVquygEYVoSoMDy2iY3cvJb/VadbxpZz8A PianQxUvG2tlN1w9cG6IlZm8ceIxc2JXDLd4CJcEBhYOg5ZXiRZoNMP/HYg1WHBUaPuUPhtHabWC eTYRHxdBNW5RFgfkaaBmeqXXOaVgFLnwcsuyYmZjWjTHSTT3arPnAw/gSTG1WxpUQ8nWU9rCIz/W IzY1L023dEgHQ8kFQ06ibDhUL70kGMumQpyAXKAhF3fhAmBSDFhWOmViVtulOtEQTW5iROWVbvAX gO/AfwEYf/dQZ3bCRXeXVucGJ2JIb+ZmDd2AMsyjVwygeNART98QaIKmYGokaBXHV4VmKflhH9/h MwOygQiSHjqRK2XxE6ymWaRHgpjoFJ5jFDRHcyjwaq+nSRv1gq/GWjVYTDtQbDvCN81lJf9CJbT2 g8EXhKpgGTdkL65w/2xNshi2WG3EdYQsBX2mQGvEVUIlJEw7FibG0AOkw23bxQxwInZjV3ZuEn/y Z1Vj5Ux5YmbXAA3NxH/zIDHkxUUkw0Tldm/6kA/7QA+MEg6BuIfytIcNB2gKSHji01cPGHF+dSro wx11dBD48RKvshABEjUdOHJAAS1bMXqdlYkOuRRdMnPJYlpng1oiYi3WMmOkaHMyiIp0IXw5+C+n xEo+14PkAoS69lM9NXV5EVRKci+GkSS2CHw52IM2iYtUEltSJkpX1n3e53XcVUXSKI3QAIZvEgVu go3VeFVmxo38xwIeoHevg3f8N453VyeN8g2GZg8L13gzE494hR8WMP9oX/mHC/eHjnePh+UPqUJx E5dohUY0IME0r2KQkeiBENIs04JinNWQD0mCHCKRL5hJYuEiEdRqEoQVWCEIGtAuhGNtH3mSozRb zQVKNClbu0UjOGVLNQKTSOaLwcVTvGBUN/WLrjA3fuEkhfCSmdF7o1FdPjQMQlA6T1BVSiR2RImU 5/cMSIQnViWHcfJlLAAA5hYnaccBT5ACFwCOdweO5LVny9EoVbRw88RG5iNPXwkO57NXMkNPAVVP jBaekCc+yoNgzuOPcpkp8bGeF1YRTcATkugW/AMsf/mQk7R6Z7Nqp6VALbJJMyZ7tVd7jVQ3x7dj r2QIl9FBuTBTqNn/SiWZkuSiQ8lHXPYyk6+YF00nJZ1Zaz3SaxZEfEiYJDl4CVaGBMf0Q1BlOrUJ jlUldiNQlMY5G1Vlbtb4DCPAJty4VU1pAsopMVWEDWnWTGaVD11plmsUUHWEpOApEPqxHwG1iKoy MzXTHYCFKoaliHSEACIgEu1jEA8RETZxEbzSEzshAT8BIUWhNY5Unw45QKCYaihgItjiIg0kWjZH AqK1mK9Fkr+2JCtlSjBFkzKlW0SVbLgUoc6nU0O1kpezQtU2dOiSfE2GQqXpqJ2gOS3EC+NCXaWR otsmVVMgdtwlh1HAAsPJAUhpO2/ijXcih0wJbmHYlM1JJ43yVhnz/wTWqQRqFD2uAhK8Wj3RsxLs AypIcykFoI9LWg7YcXHnMzSFVT4qER7reRMvwCBr0TaYxZBbM4JsilH9M4qCWS2FOac1V0mduEin OBgjuiMzMnS89lJ9U5OVGqJy4QQqxJkwslQwaWRVYksXaoQ49qGDwQg+llI3eUG/wH3C0AOlYzoU EKp2RwTEAZxR8BrUIIZwkhtXlURttzplp0Qfy18skxsjM3jHAZczYz4qKwTVQx7QAyrT07LAChIO ERIK1TOZIgIC8U/6JD7+hKWagnk3EUgZlivRMi0rlqYi6JfdGmqk5loRNKfXEoMOlGKdSHOMVIN/ I22IsAOg5K64Bv+o8IojO1e2zEZ1wpWEo0lsyxdsR5egR/eL64ILOAIvvLQ4pwAKlrNbk6AjpHFM w4AmDKBExTGUC4OUUZC4FCsbb4KGSLSqxjlNbdIwXbZFxAFo+KBo96SyMkse2GM9oNsposspAXAA 7hGmGzErB3FQQ7MzK1ulEJgfhZWeXEorjhg/B1KtulIWLKa0a9q0pZcUsAaDJQWDM5c1ghljNsdZ MhCoLyV80oagMLWg1DtClWA4ubg4uJhDJvRCQ8gvRVYlzPc5TmYjxOhkzeZLUMe3C6qMsRm490AE h9KiwMm4sIFEcugBpgqrraNVWEW5+sUMZMRwRso9lDdhwSq6GZH/EeVhHqZ7HpJlERFxIDEREQJg wQuBT/xhiOqzT97TPBBGaQkFPxhGrR74LGChtBX1acDrtJNAile7eilWisSLn7RHIS71IxuEmba2 W2ILtsmVGJthqNHVmkZMTEYyGY4ak9Z2bMVVY9oXvTeCCTcmbX0DJsCABMMwOlgkvy2qRKgKJ4pr sXEyflqFdpDrsazhbQJcVv2AAIRnPgMFPa67KZ4rrBrhKT2BER1hHjdAppxHWRehHgTCurJSRzJD R5lCu3KZEpBYtJFYNZPIu22jwpfItC0MSUkRmKuGkaQoNsYLazSXFVuyyZrTbM5LN79WIz9sW4pR VIzRZEjImSs5/y/Edq8v1HwrGZo+hSRM53yqrGyyVBidaTeGsH2xSTqmozBrGMZiV6rgFV5vcqrR ABsYgL+mKs1mjDzs1CdfmbKNxRIhcRGb0oEe4Z4LMlkesccHoGFUcyDr+RBIMxJytMEFEXGnsle0 OxMBUrSYxiA/8Syg1xX0mckphxSTAIMN5DYS2UnLm2IiWMpasjfn8pHCByUw1cruWhmnScXA5zhI VqEuxArT1zi5BAs+slQhSkuXSWsyJApBcgqBES7mwqknmmWlw8a3WZXSaL/+a7F4oqr/m5SswY3s xjxoFGl1FBIMzBE60RNX0IEBwBOUNVnwOVmAnNUOASHtfCAL9f8eMAsgYn2BFzitRIu78dN59uMs eYlZWYPJBh1Jm9whEpmRMqYsMoi8x4uujYR6gDprq5yZl+BSrNxjOewZ0MZsTFcJ9pqhU+gvsxAw nykk90IXl1PRinAYNKXYTGKgMvW379uwXke4ylC/SOkw5Jeq0SAb+7uq/VtEZNhFZ2UolOeyXuo0 CgLVL3AFD4JIvLIrvLLbP5Fpv32mZup5DUIWiNQTX30Tw9ofGRyQDDas8hFIsdIRZ4GQ0NI2sscl 3BrXXkMhHFItDQS1ycuRHHW8YoPQgnDKtQR9ukclusbKhC3YrgAKtLxklmGpjuOLjOMlt6R0S5LE rPBcR+Vkzpb/S0wsOTDyg8YUm8ppOlR1lKmNqkgkDdd8fqutm0ZUzZHbMGt1HJSCPuThniW+KwcA IbwSFA5SBQ+yFSEVFEDhIENhQEThIAnpIF7R21eQP2bRFhtmzh3BES6bPWQ9wlHzPvPTEQvygXn5 1nAN3gBEIRoZQaIVNsSbNRqZNRK9FFDQ2E8ChJFJF9Ob0bfGGElMy53dU08nvrZkhBYkmkKydNoi Q4xAGmAyN6PhteXypz4YQi6QsD6kZaYz2qUtjRUrh/3b4bNBTat6Zmyybi+jYCrhnjphpg6CAplO FBLC6TZ+45vO6Vrj6ZzuYaXOFdLieVOjFoJ8KzULEQHSz+vJ/z6xHkhNY5BZ7XnGHRavFuVSrslg c1IwLHudKHsmZXNgEywVAn0r1VtQwi9m7sOaWTebmb266Mv8bVzFteDTVsuveNKwdbfN9iVC5rZL iBe4FTqmkczgpHdEGcaJm6rXDIZgyOhifLGuugzG8Q8SSHke8ccrXuOkXhQEr+Ua0Om/oqZpSvCa RfCZpWohNSJnwSDWWq0N9SnaEx9H3qWlEqZR0+rWCi0vZorf/etcQ+Un5p+rN/IbeeV5/QAC2t7u LS51Idj03cqBzYQbmqGFyuZKVVRO/DlGqFPfa7d/quc1trU1xux9DpJeKyaDngLJZALfdJtE8KLA qVUYcKNYFf+5VQUASASNy9AazvQnb9kSnoLOv03jVzDwmi7qBY/wol5ABl/3Wg7zWWFAvS0BauMW gyxI8gMqBNk0oUJI8APIuFIWDwJ6n4gVvm7yJ58UWDHKVCtBEB3Kr7aYjoR6Xh4Xcb6KxLegZY7R doODdpt8Mlnue/t8+jo5kMPRNInEU3J9RKwjOkyh4GIJuWdtYRIC75saaeLuHMD1icsCiPtdrVN+ +H6xtTFefeZtxpHUJZHHALLOlm66IkfV2s/bNC7wCW/3MI/3eF8UeK+meN+C6F8FKOICVxACfw81 CVErTGP4E4y7//zUTQAhOP6JfA0IWYKDhIWGh4iJiouMjYL/Dw8aPhoyMlWWmJcalBokMiSXVZsy GlCbWVAPUINQTjQ0TlA0PrCvr05OtLSvPr0+rrS5uby7xD6yx7OvsrI0zbHOzNHO1MfSzsfJUNbb UM293tbUzN7N48uzuK63t7i26uu2tr/F87c7IUhINh0XPSY9ehAZCGAEhygcOLBgEQVDQg4YMABI 6PDhw4kXOQAgsjGCiQgRFDx5wqDkBQQXhBBYQICAkpdNbrRU0uQlzJcuYzY5cOXGlZ8/UcxAQVQD ik2bICmNFAkpJA1KoSKdihSUixdYXzTZGoBrkwA5CQRQ4nJB169eD2zd2eTKiysSrgwlIQnqgyx3 Hendy7ev/6Kom6pcykTCk4YqnlCQEvwJKSmopiA9OjerHi958tzRq1y5Hi1kvi43MyfLiLdx5ExH S3aOXLZu1JaBC4et3GV5xeDBWqeOnRMXruK5exfsNo0Q+ZB06NDjRw8KA4lEGIGQBYaF2CFel2hx YsWJGDuCHA/ySYSRF0imJNmSgJCUQuITsBAfgRALLudbULJfyQ3/NwSoBE8/DXXUVE8tpaCCdjVl V2BVoABKYSRI8NZaW5FFE1hKsNSSVyDudMUBPL311gwzGHaMZH616OKLiURVxSRGjDKKJU0VhhiF olDFlF2otObLkMXooswvVaSjy4yc7aJNZ+DM0g0zRixjW/855ISDTG3d+ILMaacNeWVrmGEWXDvq 7KBbcMHtoOZwZWaGzz789NNDBEREMQJHEDUUBUPWJYSdQxURGpFFCrGgEUgeeADSFCI9kV5JDJBU nxCUxseApvHFZwF9931qE4AvBbjTAXEZSNRRB1IllatJTbWqUCjOANSIaq011gI0ddjhSmiZhdZa JO50IoqISZLKXXnB6OyzfUEyCWOccGLJKDuS4AIJionC1IJ3XRPnuOz45mRnuOkS2jaffdZaOEYc Ey8N8cYLGzPZ5NuultZ4SWY0ttnSSjxmwnMmLC64qaaawFWBy5sGO+GmPvz04A+eBu1JhEHXQbRQ oYFChCj/oRp5gJEH0pF33kgslzRSpVPAwAAMNJc0RcxCIEBzpzvf12l/o+I006kE3lqgXHDJtSqK tNbq9E8SHPCWWsUW24RYX3XIK9ZdETBsrmplZeEMiPW4LLRop93IU4dRIgopj/VYNoWFwSrZUrm9 Y1yTnN3WC7qhKSMlNrpIY3hl0vjb7uLqGn7vlLTh+5qVWMYW3Ghm7lZmcEkaDIvDCSs8Z51P3Bkd BxsXdJBDf55QaESGHkqRQhqBB8DtADDqwRORtgzDEzR7MIWmMGAKwxRPxEfz8kL0rLyn8fEn6qf7 1eSfTrliCBOBRW+FK/e4vkCi+BiulVPWYvFqlq/CQtDE/wJoQWDhCxJIUPckSqmt//6EqCLJYJpA yo5QkK0JUegx/mNKKqqEmyNdxki6AEaRHBg4Cnrpb5QB07teo69s1EZfU3pNOBTnuFr0xoTvGA48 FGYw0Q0ndKJTWAjcFAIb1MkfT6BABKBDBA5kTGTXWQhFYCcyRBkRACjDkwcUEAEknuc8ClAA8p6A vJvJbGbLO97NhBcz5zWveM3r1H2UIAT+BE16GsKJf4J2g5hcbyttjGMbs1e+r7SxK2Tpyq4yZL5h sSVXAYAA/einI1KcjX+ITJv/2oYJG0WCR3TjFt0EWAm6yMAHMpgGkTbpt3Rhhkj2sEfjShimxHVp hJsEjf+7sASOfg0OXxokGMEywwvhwMkWwLnNb3aQsF7yUnQUS8EFTKBDkAykT9oJ4gesMygheuxQ HXuIdG7nKEaV5wmNyubNFPC7m3nTm1pMQhKmME7mZZF50RMjffbzKXWuc3rUkx6ogJafNd5gLAIg i0zGMpP29NOfLdkahtRylq5gRQJVsJ8o8NesRDrURd7gRBW25YnC4AgFV5lQRnVEUVAo5oCSkME2 BNbBdUBwb04KnEr7ti4OjoODI33p5DAoOMixMpR7e8ebWLhCOLnjYS6MYVDxIVQaJCwfKUhBP0zw ETxt7CAjqADsWHCCZZ6AqgYglHVeN7uS2S53jYoA8u7/VE2STEF4JZFZ824mTise73jjjFkXtQjG 5h0hi2EU489EpVd1unOMZGmJAMziTw0FVCYuAQuvavKhDumKJsbKCv0ksKoeQeWhmG2RKkwxiroF ECo7yhZFr5KVbblgW5WshAs0ia7M/K2CDTwSBC0z21Vi6ZSQ44ZNOZgMd60yp+14hWlkkSbdwMJN vWkTC2kg1OaGAAK8dAFyFKac5TC1iRzhiEEagoEoNOSqVA1ZoY4YniM2ComOEsmjKkXFK9ZseXM9 5/LKKV/l0cyK9u1rqH6m33bSx58CAGh7grCSXxnWa9YjwA0WsE8ljKWNHepKriAgNQkY6DCGbGhm N8yI/81CYTFwE2BgCCgYFLxAkBBIcYoDGciOovaSGlSX4GZswXTMIkm/aK0FMSgukp5yNmHaJChH atOAGQlgAYstb2a55N68KRjAIeoOIDDDFyDHhljuADHxhKfbjQB2GHBdRK5a1fCCGTtb9ZhGaico hHCgUUTIZpxDEkWS/A54b4XBBIpXAEr1+Yv2jdkRvkizuxbvvmA0dF292KlBOxp672wJfj7VHrAI +NKFncnWHFwTtBwgAFITH2UFkxQNc/jUidiGET6xLU3oaBMSohBWVhwAFqeYfhBgwmk98WEpxVRK nDzpuYZNY09+KTaYO+mW1CXkT6JjHr8u05aU+9Pd7P80hjMUarYXJrEZIkcf+bDBPpjjj4AYkwJe 9s4JXEfmda+bmWKOiKKuA96HyK52JrtdBKp5Vmrue3dTwGLMYoDo4jEgBjObWV7x+jwwwmDQ6Azj w8W4s0c3OlTUk7SG8EOAwQogwP90D0AdXJaXLPZqNLmj90JtIcpugi6mRvWLyvGsTfhgbnI7DAEL I9kTrxgCgZz1rmUACXJU44OwdeCMgx3BeVwQ2dNIXEs5KVsiaUlLmGGXB+VhjhTupoXJXRMujroD cOejCDbsQNrt1IMcYqwgsHMdVd3tbhZ8wKp3t7tV0eyQiWSHmhzJdzYHT8VGgdOKaa1ZwmFAcILn l2f/et2Z5PEq+S9CvK6g8tk6bUK9eHZc0v60AAI4nsd+GpixMwkA/IxF4ZavqtQyj70h7kYJHb0a QoVp+YoXYBbemwXoKTYtXTSgmmXrK5TCdrotcPzaqqvycMlmtpdQKf2WmvI0seE6Lb/ObYlxm4Yy nC5Rv72PIiynAz9wzg5zaJ5/BEQg0tnYCMDjw4J4J+70DpREDnW7hOSuifMHVrUzZ0+UTSMhViTB APGVRXuGcAWQM36lX4O2TvrVV3U1aD4zgZnHTp3HeS6hBCDXEgFAYAL2KyrxFe0RWCjoK1xBIgcg PxVCWa2yCrLnLDToF4tECTLgAoLxWUixc1oBdKrH/3uqF0iCdGKoRQk+8ADuIhuWIUqC4xnGIWNK t1KWUSWqBGS5hSV4kQpemC+3VQ6WEQukARsCY0Let21SRn7m9wPo5xw9wAMDIYcD8RxE4H7+MBDQ sScj0IdEsALyF1XdJVVhFhEIwTG1Izv9p28b4QG140SM8n/YhDzpEXB2FjMlgSmABoEMMD0VSIGe wh+hQkb9xU6jOD38kR/z4RL9AXIgiHIekoIeohKZ1hL/4U961AQUNlmIQUClFnM1GC3Mghdr04XX 4lE9oiM7YiEQ4HsrUYQLAHQ95wKWwFBExmxQCCVROEFJYgxVqAw4pnSAg2y51UoiZA2blWPAxi7k Yv9cyiBBtYAw2JYcdIJ+FPB+z0GHc7gRFEBMAOGGzHGPPECHfbgCfViI6/ZdCcldybQdhAIAFYEo GPGI+vZv6RVFvSMSabUpmJKJfUU90DNGqBg9HBhPIElGZsROL8FOqhhYI1dgKaiKn1eCLek1DgZZ KpZi9SODwweMwegISyEVRXc3xHgIedEUBxIh3BJrWbF7vLcSvNeMOmkh3EIKDKUK2OCNtPVAwLWN oFSFJ5WNQwIlW5lKIxUxQNVczeWO8ZiG+lB+aod++CiQ90gBFMAD9+gcOtAD52d+RYB2cDiQPAAE A9GHQOBdFRAFieluYeY6Bwlm/geR/XcR50VNFVn/Z3XGXi4zEs2zKR55RRDoKe9kkma0kqUZT6PC gabJeWfUaTdZaTWBR7wSBGDBIfjkK7WZeiAyFjuxi/bzeknxk5rlIJPgFD5ZlEEpKyjwmyQgWSn2 PgHwXE3wXCr2AnQjCjOyLFi5dTTlNzS1GRMkfQ9UQTdXdX3jdFtSS0z2MGgJHN32JprjdW3iCu7J Jt32lmsHh3OJl/yZl3D4A1KwHOYnl3sZh0RAmIcZBYfpbgbAmFX1AQyKAYTITPM2kUnAAUmQb+Ah eOBBZ1G0RAyQAwnITQnnmZzCkSSJRirJmkGzomfkoqWZRhxSTxyyNZuGi78SYAsQYCEYUCSnIVwh /0j1Q0i+uBTCOZw+4g3HOQhsA2sSUgWzdmso5j7N2AQn5nPBVxiKUQq/qArc2XzIJ2yzBEq0hUHJ 951dgnS9YJ8rxEu/sUtruRswpJbO9ZZ/mX4BUQNyOJADAQR+ugJAMAB/OpB6ugJ4GR1f1l3rdndL cHcfsAGQugGP6qiUend1hwFf5joigzuLeF6O6H8mU5kAIBJSpACOAikvk3goCoH0YR/3MR+nGaNn hJIsOqu2+hJjsSvssxavqVgumU+yGFi9EgBtlCG5uIt0QxTesqRHipzEuCClVgpEaWqA0QmnhRUV cmJWWiHZiqVYcVrgui3W0qVd+KViyVIoRS86Fv8a4nlkzbdKuiWGoPQb8egbCuOeMOR92CZU3veX PVADesoDBgkEDhAFJ2CwJzAEjiqpCzupdwepS5AACbAEKtACLaACFWuxF4sDS7AEOMCxHbsEG9Co DOuojOkdigIRi4gRJZBNuOOp6RUSvLNEVCRWkbKRoLkp9jF6o6eiQLOatvoft1oqNiEgfqQrR6t6 7OOSIthxLDFYK5E+EQadvNIVR2idtveLzcoXQ5kgCvKs+dM/jsFzEkBRL+ACZdtRZTtIkiV8BuQJ xbmEeGGu2ihbXNlApXFkfPNa7Lq3WJeeBdOWYGdUaamvdPqeopMPP0ABI7CgJ9AAH9AAkJoAG4D/ A5XrsRb7sS2guTigsZ2rsaALuhmrAp3LsaTLsSNbshB6VYV4TIroEFSQEEmAXrljqvvGRB4qVo2i AAxwATDQOwmYiZSiswjgHqICq6KSmmxEKilXtEILID1RR0irPmdRYLWGNSwRi4RVa6q3YCS3WGeB FgEwSGsLCuS6tXrxFJHRpcOYP+0bCZjUCZCkjExJWtpCAldwhFdBUYjhAhBQN5UgGdUgZLX1jq0A fQNcJH2bfINzDMPwC10HDF+3JqDTfe75SzHknsxFp4p7oFVVuRuQAB87wpsbup8buiicwqGLsRjr sRErsSLbqJZKd+Klso+4Zm+GRJbpb9VUAjYr/ymaiQAuwwD2kSlE3B4IULyrmJJMzEZxlCFxxBMx EcU1MUe4grRfEb57VBa5yiuDpbTtERMekr3wo0fPqItH6AkIxKzoy6R4sRQI1CAO0iCD4BgCtHPN uS2s8rYdlVBmm3seZVrgKlLX6FLvSmxbQhoeNGwyxq70kAtR8mujcZa24Cb4ap/1iTDq0EvwkEuE O3b3GYeHOQQnEKmVO8KonMonrLmby7kXS7oey7ETO7GpC6kO66gGkMu5PGYL4WaRyanhocMvOxGO UgK1a6ogisxPIMRCnBJEnDP24U/FS2lptLylYiquOVDRuxW5Uqxg40dDWGvvgxZaMcbfS3LtQf9Y ASUWudgV8LOLWBtiLNLGa6OdnOUUSSEKMAcuVXEJsna/oFA2SkliPVhAzSlJ9+sCTHC2l9RbzbZ0 YWqmdsvIXsk3UGIbrJGNatI5uBQcq/WmEuN9bxplyCVD1PUDPICwCiu5kWq5JPyxpKsCsQzTOCCx NS2xtDzLEWvKkVqpupzLJwDUDVqIs8OpFNkdkdmyuwsSCuDDqDoSGPkew5sSSlzVSkyLqQeC+fTE xcrNYOOCV9AWV/w9AzVhBOUVVis178MSRQi10NgeUOt7qjedQ2ilhHQ/QELPe7EU92w37JucAY1z hiG//twtEXLYPUgho6UtgyxSvjXA58mVf9P/dWOpwMJWnp6hhWDSdV3SyBadGQ6jOWxyXKt1XDSE BHFIHZA7BC2tyiMs063ssQmgAjodwjzN0z79Abqs2w1Kd0Hd24ZYRL8MAMaMERkKAFRA3P4WEuTB RJlpEsNbEsWbxNN9xIXFvdjraURDNacyIj/BEyTi3VbzFaH2aZ82pVvhPu0ctbEYtenM3rlYR6JG UZUgrXqNg2ArFT0CLslJSaFwnZFkexFCYsXZv1gryEyga4SsdYRT2WfKjsQmhbP12ZNNOfH5dWhi bT3FQnTa4TRkA4uboCsNqQ3g0iFc0xH7wjaN07dty3dnAD692y8e1C8O3FK1bhGBiP5XAV/1/6m1 EwHFDRK0S9whQbOZeQGV0rsnAc1InM5jLM5TK2HhDd48ERc8YSv1AxcmIjVuwd3i45xUGt9UC421 tqO9V+Zikeac5mlSU2GERAr2ckj3XZSI4L6Abb6khp09eBiegJ2S1C2vRje7RiE7VxV5zL87eBVM QMitFGPVJ9lLN5biWMDhWeHM4ApGlmOyRC56k8mbg6/4UAR2GAUKy9qS69oozMIUK9MTG7IiuwE/ Heu5/OK6XeMMeuMGYB2qgxC3IxGSOZk53OslYzIqYwJRxADO/QQmwDtAPLzQHM1PCdfqkz7iTDVW E95wMRRugSJvETVyMQMWYixtnhW6qK1E6P/OSxtQvbdPAQW17OPNYA0Xh70icj7nPsksQ0kVyTLH TyoYdIGdn0A3x/hy2vKtFIVQRyHo12kJ2pLgLhBkVkeWCzzpUZguj+7gn0EalGEauxBl9ukwb7ow O6DJ9AmfaJgm+YB+PEAdpMzaJH7KpwzTLDzzLIzTEuviva3LQb3ztr66O193EEoy31E7PryIXoU7 RR9WUQTkIXEBzi2ix967Uk/VxXsSTd7e7S3l3E01qYIiFqblbvECtRLu4kNhvTk+L1BQXCEseqQ+ EeZ7AqB66l61Vlr39APudSOtbLy1+O6FqIRh/o7YsRIYh5HYin1AjBEhcGPQPCI3heFiljT/UbkW AsCmJJPOONsI0Yxc2RctJg5dbHrTDrkE8m2KXA+jhvuauMqB0oNJ6o966qkswiMswitO+zdPuZQL qTCu8zqv2779bsukd1kFZjnOARXw4/0Xql/lREu99LdDqsc+EjlgAr2bA0jezM1MxCehxC1RvL5y PlpBLJEFF6GWFSQCz2E/pOPOFtI7115RtU57k+g+hL23ALP2rdaJtpqQCnMOCFlZD4SDgw9ZUIOK D1APVVUaKCQkkDKRGpkamA8aPpmXlKKQmJmYVZeXVZWkmZQulSQukJ+rNC8hPj5QULu9vTS6NDRQ wT7Gw8fJwcjMw8vCzrrTuka6vMLKPjLM/9O/2cfTVc/jz07mNDsuO+fPuk5INj8UPCNAUQ0b+hs4 Gwn+OFoEFNhChcGDCRLiSJhw34YPED8YODFxosQTGD+cgMjiAwsMH09gGImBA4CTKAFE8KCyBMuT HmKaXMnSg4IIUyJEUPBkpYILF24qMMHgiQIGCC4wUMpgKYMUQhBIjUpgQVUCAZo0CbAgQNYmLw4c CLu1yQEJVyCAFfvihYQXZslqLXujbNYASghgXbBVr94FSqxeDeCXq2GwbROL8qTBkaDHkCNLnky5 suXLlglpIsVZk6tNoEnIEJ0KlQwNqUqjjuWiNaVVKKrAai27kovTNFqHCPGNGTBg4Y4BQ/8W7dmy bs6gdaPme5pxJ9Bzn2s3bIf16ztCYN+uPfvu7Na7d8+OpEcPHkTuNfiQj1+Dfv8WLkwwX0UC+yqW 2F+SgD/DfRAZENFEFG100UYdhUTSSCxw4CAAJqGkEwAeRFBCBDCtxIFNL1WokwIggrjTBU8wYIJR KDbllFIXSNUiAlEh4NdfBOSFF19lzdXXAmPBleNaWqm11V062vUjYVUFdmMAAmi1ZBMQqJUVBG5R IgEJk6C2CyKYdenll5U1MpkjUHi2SWdmgmZmaWyKdsolGogmyytzwvICBLDIWcsnPozjAm++7CIc NeAYE04yhBZ6KHKHKuOOEcqFI8M2Plj/k5xxNDjhQqbWTWcOdKCGCmo67JD3w3n3DMGePg0wRB8O sMJqX0A4qFDrrbbGigN/Szikz4AGBCtssANigBFGHzn4IEoeYniShRK+tBKFHJpUIYgmKHBtiNyG qGJST5SIQFNU+SUjYVYpwVVgC/D11VwH6CjkVu4GhlUTXS1ww17s3tCuvXoJMOMCAhOsF1f0dpXY lVh60ogiYEYs8cSREaKZBp1grFnGGXOCcZm96HKaaTKkIkprKLs2mwttwYIKKpl84slovGFTjDfO OXdzNI3m3CijwTmhzXHuIOcMN8NoqrQLmm7HznROr+P0ddohUcSpPEQxxBAntLcPrK/a/yr2fbQS RKvYS8CaNq++SjSssAUe+xFJJpVEIYQq3YTShc6WoG2FLG2oU0wURvBEUDyBaBSIUyjQeOI/MQBi UyW+SMC3M2auV2BlWdWuV3dxVRW6SQLWhLp8XZWX5lYZ5heOfd35QgBUSiDBDJOgkIkjXFLs+++S QfxYxiRIUsrGpZx2msWIPCxyyXKOprIsL+S5yiooV4JaKZ7p4gIv4Av6TcjSIJooc8Fls5xz7ghj Tcg8Fz3Mpkhvqo7S0Klz/9RTjxeC1UXowT0woqr3vAc+ChGbfHTFwFwFRIFpU9sSJgggiQQIbhsx wEhGkBJmPUsBLgEA30qQIQ9Y60Ee0v/WTkSELRH5RHE3iYnf/BauElEOKQwQQrkIIKOBYWUvV/mL XV5nL4AFMXNI8ktgljgjdQ0pK22hUltmgDvdaQx4WMyiZB6wjTNZUWOEEBlqQPGJ5i3iYb0o2Wjo BIk6uax6LKte8R6xu5hpwgffCx/8rhGcYOwMHPAzFHGkwb6e8fGQhJzUpIyzjWHUzxmgup/UOnW/ 6uQvPFfjQaqG4DX3MPBWtVJBC0ZJyoKU8iAFQZuu/lHBAFFEQAaY20kqMBMIES4m11qJs0T4kg1Z a1sx+Ym2CncTneTkWk8goQdcgpMQNa5ENqxcVMrVwxkhwIieO5hgNHcVGJkrcz1s14z/QOcVI9Eu Sm2RAArWqQneafGdwCvTZkDTiXqCrxC8MOPwLIYNI0CvNXJc2WxEIbs8rfE0miAEL943PvFdw1CE Mp8hIXqcn2mDGpZaFNOoMz/9Me05kwwPePjXv6r9oB5ROAHX2IODVvFjgQUBZSgPQlOaLqEFa9NP fnblH1au6iLE0qBIKgASDjgrQi/Jm05KQMLBcagmIiLcCmmCS5uscJkgislOVsg4GhYlBwyYAgwu EKMY8fCIR8zmX7bJTQLssK3pIli+vkKkKUGpLev84hXhydeI2SwTGZNEQhtjsS8pVGbSc2NBWQHQ lqkMFghthMauEbI9fiMcvLiU/ATZ/8ehUUNoiSJGZzG12WdsyrROeFokS7WOpm2UVNtBwjzSo7VV vZQhusqV2EwpSlGOkqalHOWuhksf/zjkbccaCQdIchJlqQRDWsWqhYZ51cLJxFo00WWHWKKTnUBV hVm1SVOOMt6mwGiaMPImD2VkxG/miwAWsKa5qinftr6OSGVBp1tiM9hC9PW/YJJnxuAERv92qRAK nVkoVhELBseienB8wWtiwZgyGaExmPWjQ8GRvvalD32MGuT5dqHZTGHqtJhKLdMmCZ0VOy21/BOP 1VClUtu651WxcqBuxaZAXD0Qp6iMYNr8QeRfBfUEHRHJcpcVoQhka6k+8ZuFcDk4av9pyANG6VBU mbVMXFKomDbRVgnGqqKmwIBc6aVKeuFLX730UCrtFcwO28xNJQ1JL0YyS4/a8pqEFhbAgMZMyNJU YH1epnmdQOxrsscaF0gAoLOQRWuktwofSHZSlRUtzvboG2JA1Gc+K9+HQ7xh0qKWtEpLGtM6tdrU Nm07MKYaEjpQg/RsZAPtaeknc6zj3OJ2pvkpyE1VuSt9NOQhrswgC4iq3GeJsLvFtNBOmOqhW5pw JsGc1t0AZ8ukdsi7KgmzUUpgwzIjZZo8pKZfUqA5GVlFKuAUwuvcXF++AGZ0B+sLkdDJsNiUiXmB Dnhm0lTPvRrWYpuZMAnkyGDZJAb/wnei0izgZIRE6yIRxNhZQ28GHEGJmGcdvqijeuZH0ZZW1alN saeSVp3W5oakr6ZaJgeY6wOCLYGg1C1vTZlKg/y2pgYh7j9YuY8lQGQjGBmBsTbo7OdC23EglCFN qFXCalu5qlU9yYW2BUIMTUFyU/AbDBxX7hyad5rUfDMB2D1v9c7Xmmvm5jb5IjAjieUKcmQnxjAm CAML/O+HMFNgG1No5hXW8BeLBCRoE8fXXE/SKJMiZGH2CTIp4rKCOqT6QBypTzdDUUIzuaGAc6lj IG0HJjbxR1ne2uvEmqQi3cGsKUAErQ3BIbB6Kdh4jSug+x6nwNfpfGr1H1Ye24IQ/zGWkk0yAgpE YAUqyZZQor7MrXJLlyHc0NUztFVnbfVCRqGJDacwBaOE/cxCOPe5YYQUGZ2Xm+7mprzl3fa/2Iut gPFKV4a0Fbc8mhJWZHiGAHiA1zyEBhrcg3iGt3eaEBsLF0duwTJS1DKK8WiOFWnXcxq8QyYbRih/ xGERVSifdlESFYKZxyjcUByoZhwftTTSsWJK4zTaYVI1MAIrlWu6BysEQUq95Xs+x1s96EBD9yr0 YSvHdmwPgWwRgQEVQEsjEAEUMBQm8GSNI21aFSLJ5BJgBgBTEF231F0e0IVaRX7kBwNkSENgNS5Q h0PppyJklUMykn505lYEcDo6ZP9NZgVObeY5BLNESqAVXUE7j/YWVxKAAEeABHgxB6g7ASh4npE7 GvAWEjY7QRCIEBAAB0A7XNEu7QIlEBACtEOBs8AZGsgY1iAoXMRFmTdiOQM0nBVyy0FRIghJJ6Yp KyY1rQd7MUY13iFbWXMCuKYPqxQrO/hAPud7OpUfyngQ88EQBkE2rlJ8RDcgGiESzJUSzWITJmAh T0B+PMEAfqM4VGVVWqVd4RaGjYNL3Uh+zdR+41IUZzYubThNOeRmd+h+9Cdvq9Nu1VRNOwQYAkAY 6iIA6kI7+AIlWBIL/HWIiFiACEdoVcCIB6h4DkgCVyIBl7gAEJCJfKh/oJMvnJj/L3cVAnzmMqjw CRqYBadYWSFIaiMYP+cjSO3DSIdEPqZ2kzi5eumwai62UTF4HeVhD6ryNfSBY2UTXEHog6jke/Qh EMTnKvYRjf2xAUZndNSoQSMwAg7iZCECFN8oOWMHIuE4FNMSTNl2S2IYLmGIjt3oAeP1lSUCA2V3 dvLofmuGj251TTxkAfCmF+pmLvSXOXN1L2VRJbERG5zwZw3Zd3+niJwBCXl1gI9ACTMQJRlZFZXY LkGwdj20mSBZFZ2oXy3DCpZAGho4KTjDih5YHOFAHaFFHB/GkuSjDNOxDi/IKS/GP0zgNLs5UuMR Hv9zUqmyKrm3QEcJhMhoEDrF/ytRKZXO6Zz+MJVUOUEfYJVIN1RMCADFFDlHoRTdeBQhslVYd0xT djdQZ37kZ0NmaGaN441nZm7pp2bodVbtViPf1E0zEl/255kC0BXqUod1ESQHAAG243iewDu9s5iN iXAdQwqReYCZgAJucSdQsgAIkAJBcC6aSQCZqX9dcYnoVDvUw3CLNimoIQNQgKKYF5OhZYKEpD6w 2Vky6igsV6M3+UgvZx292ZOXFGM/YGtdY2zNSIzBVaRJiUo8SFNPKZUz9ZwJwStVGREHMlQPshPZ QhSScxRgFS7hhY5Z52XaGYY8kRPpKZdd2DhN0TjvqSJtuGbzOJ9yt49+ITBAlP9ebYYXpHMwCCNF V4IJZaSYCrqgjulg6hSRnkGRC2eZnJihbpaZoAk6nhhxE9gykghHpBA9WpKiwtALqpiaI/aisEij L2lys0lajYSTzzApkfRR6wCDrlqbsVY1RWBrBpAPEYRjO1ikv6WrPQd0oVSUCWErPVWE0lh8vpKE G0AsGkE3MzEUFzCFSzEuLcKl6ZmOLnGF43imYmqG3qimZ7ae7/mm7lePeNmX9EYjSXKu6iqYWIGn 5RQktsMwG5OggSqoD9lGr3GYnmElksgVmegVBcORH+kVGzmBAyo7UlQ7LMMybiQbMnAbjYFpq6h5 H4Y+rVixFfuSq5gpqXZi1yH/HdbhYjvQm715HSXLHbH3P7NWA1qDD8IYncQ4EDyHlDTLlP1RrE4a ncZGdMf6AUqYbEtXAQBABE7WA0BhAhewAEpxFOmnAGNHhlXFjuSXBBxQfuuopt1opl9JLly7FDqk ZuhaI2zVVkl0MAGzF0iSf3YXAP43CQy2d35XrwLHPIear3olCShgO20xoD0iiRsZiggbOuSkiZH6 cA+3sHAkaaKhAf5kMxP7uKG3HLP5qRarsYgUDIu0KDSAmpAyKJuLuaCLNJnSgq/lajAWAkXAsjX2 NQzEq65bs776jNE4rE5afL1yu61EIBWgZEILhVM4IimghjDAfu+5jmElOGH4/wQxUX7cWgLVqiLf uqbjIo9gm5f2da5jK3dki7ZxMRYFGpHaU09yi4iKSJpY8qB5NQO2cwVjgYl7+xaaSLBigYmamJFc AaIgek6Wub/7Wz1MQD8zEyibxop7ZIIT1ZI3E4uO0ikhpT8hq4v905viMcGmglICkg/9MHzDt6sz +7q9SlP3YVy80hBDp7NEx7Nt4xDAEixMyIS9212HY25vyAAwIJfpNwVJIKaO4547TIY1TMNzmUN8 iV7mOof4ckR3oVb3RQD+ghX2QhjvmhU9gne40woGN75/N2jXY8V5u04WaTvq+xZscRZnIQHeazsD iomXmIl2QU5QAiUEW7/6hf9OE0dYKYoNHYjHfLSiqhlqm5cowyGqz5GqN/mqMDi6TYPIUyNbK6Ae rLtrPlcrO+fBp8TBIByVtJuzJUyVnKzCUnoRSzcSQ/t0THFuOmRmRWG1Z8i83Yqmb1lmBWBeaeZN 7pc5b4W99kWnA0On68IVN8C2YTFFxQNYgIrFgKaKDDh4m7Bwesu+/mfGYyEWfEu/ZDy4Hko7AxqS 9+uJ+huidHwalaepeAw/BayalvvHnNVpKoiqMslRS/POttij19HAsvcDQLARtxeMOSgQvmWkHtzP SXkf+HEfwVrCtWt8JNwQH/APUqqEwVIgLBAFzfVlTyB9ZIV+bYh+YUWGT1D/w05bfmVWdu+4flIx FWoHTvOmF2yXOXRqFXz5FwT5L++iFWcRxgwDt8VszACGeKbgxXmrFukUFvEazfM7JIFozVwRkOQ0 V5+4FfiLvwhbPSYqT1BgBOOseXwcqizqxxqbNKGyauywYl6NixBcsr+JHeNhNTXoso/cugTRWxzM g6k010D4c8+IEGyzyUW20PuwyT5lbBGRAMCCERpUAVnJARxEtHlzIjQMA6dMwzhktWbY0e4Z0k2R AyXtjulGh98UTjSSp6ApGFAsVwBTTm5c1GdxBRZZCQspgDpNMcKDGQhHqP43OwUr1GIBzWxs2h55 1INrv3P1oft7sHTsGpWg/4Egw1AUW86U28cWFRy/IJPOIbrmQ92gi6ocNcjc0QEUMAAppc+flKu6 2s/+fIxLCXQE/Zw6G51DxzbHytD7ADcEIhJZGQVNZqUnkn4YfcPp19Hw+HVhpdFuWGZJoUOzTG9x SJ+CATDitK7XCxhqqxZsXKgNY6gAR6+v/V+gsMzr9HAb2RZ6Nr/SfBe/XJBJDTqZKBZ/O7DaXLD1 q7+jaRof8wBWfQ1hJD7hQ7HOveMCjA6IzHqph5vz/Hph/XpgDR5nLXupuwIOwElUmcG6V4yUbMl2 jd6aXMK90tc7e6y+IiDHZUFwUxIlwUHhthJfB1axbODxKQRHAAMxAAOxXP/DIHBmBaBDMfC1OmQB X+uXZzWHNSIAN8BEgV4Y24Sn7SpXhhGg8QIWb8HopAE+A5jhvyOAZAIZmrENxYMKWBIWXUHUXiHN 0RwWn46J0mzGmHg7eisWRnKJoNO/UcS/xq0LhOcIlGVptt6pDQVqPM6KzcDOpqYpO9li7wyDP4kd roYdTKDWA4ARONi6MlvJU17lCIEfRhiNJkxkQ4jtSDh0C+2zBqAP345sAiIRLeyETyhtY/kEE8AA BVDnBUC8cB4VMUDD804uQuDY8anndDh/9DkjAiMAAoMXSjR3AcBuq8MkQdCf/bkXv/zpZ+xoWFIy vhDbkg48htY88uQKJzP/oYaBzU+0FWMcL5g4JHsbzfT7RIv+t+6CMKFIJVESApEqCqdxYe/jUI1g 68yt4zp+zjrjKNk9yGI9uqgn9JuCPxuVixBsNT+wAhUwBOG+ezp4nDsH17wahL1K0AMtldf+K9he ZILd9QAC7skKS8oqEhhBVBzkfM/lNxPgtAVgQ+8ey+yOAHHO7jQ853WuQ/gub/RFX/fWn0oQkPso +ETUROgC8HLVJDnivTNQBVWECZBe8YCGoKDwCpY5FvZrGL7N6ijO+f864qCj1Ab5FSD6OVRysGFh mRL2GmpUMhgmwKl447s++7LIcppLWjopHUnDDvOzNKUCwTMoBTUwAE2+qCrxEUFSH+00O9c1ld5a 7ypbP4QkvNDZjsKCTY0aQVSF3YQjAH0r8CHeogDrbu89JAQT8AQwIvemvOfeNH956O8/BOgCrySQ uolL1Ift0p+CCyV7BggkKFVVGj4aUA8PWYyNjo+QkZKTlJWWlooPUBooJCQuLxAvLwGlCwQCAUoB TaUBB62lB6UErqWxrLmwuS8HEK0LwQsBwaUQARAQLiRVnjLP0FA+gQAh+QQFFABaACwAAAAA6gFn AQAH/4ADDkCDA4QDhomCQw6NQIKIho6IDhWCjZGIK5sjFBSbFDU6K546Oh0dFyYXFykpFx2uqbA6 Jj06PEQ1FDwDmxVAlsAOjIPEQ8jJjEDIBsmNx5UVlYbA1kAj2dlERBHcEauvTxcIF0/lCOjp5QXp QhYiBPLwBCIZCPDwCCLwQvsIBILUq2dBoEECAgIEEIBQ4Q2FEAUkvIFQ4sKFDxdanKhQosSGEi1k IBhPQIYMIk9aSHmkwJEjMWK2zBCzZoEYWGK6tBmDChUQMY5kuFmzaFCXLkXOzCC0ANGnMUBInTr1 J9AYO4tS1RkTi1OnMayEjTqWKNWrX60wmGDF6YQCb/+/kkOQY126IEEQBEkRZMGCAH4XQAAsuDCE wxBeJHYhg7GMx5B9yDDiA4rly5gza97MGQqlTJKgRZp0iZIDQUBSF4Lka0XrTaQ+xR5lwhSsDjla SVnwylWKWMBNmfBEAdcKHr1GDLAUGhqyE8mgR3mOrAEyYgYMQKv0qEIF5dlycSPCg0IPE7ZYdUBn I1XedSLwpotPwIK8+gLs548n4qP+jQl11FAAN3AUIEQ3HHAAgTckyGCBBD4I0QENPvgQhAIU6FF+ GW6Yn0gpoXTSSyTCFBRNOo0YlFAvgVBABlaAkFMMIp7EVFAxXfWSjUwxdYRIRGUgxEtRSUUWTlMV JRT/jEka1VJMNsYwAVdcgSCWlWF91ZIIInzlZQEi/GOXCCncZdBffx0WAGKJveDmYYpB4MKcMmjw mAZGaFDZAw9k4eefgAYq6KCEAnrJaYgcQgiin50mWmmITPNIJq75UgNs5X1SXCmnoBKLK7z15ttt qdRSnA41lHfpCspFSohq0QwxnTLQNQBddc4858AJ1FgygmsjILcCNxTY8sQqsLDCgA3ppECAXgg4 a5BACzBU30AcWiDRghcFWGG1EC3UxEUZBdCQgwtSiFGGDUqU4EToXoihRw3Ku+EBG2qr70n8oPRi iTBdlVNTLe2YY1cryrQjTD8eAQMWJiqMY1RH2AOU/4oxwAAUUGJhgcVVSc7401hIhjUUVicDdZNY UoIwpVhffsVlmAh8VXOXdtWlF3149TXYAgcc1kSbL0hAwptxujknCXr64LRlffZZ6NRUEzppJowq wpqj22VNDaWRbOILD7twKooOKRRxCtopSNG2b64ki4oOF+hQRAfE8QLbCMy9Kkkxiy46xK1RHFNM BSdM491yfLvGqnhEkNLDeavEIgQrz9rAbF4BCcSXPAIIBProDE3kbYUbTpgRQwgG6K1HBG7Yrrvu asRgQrDTHqHsGnoET3419jhiSjVFTJRRRlqBRVtFFu8wjSaSWHzCOWVVgBAZGzUlTh43H5VPU80Y o/9VQ1V/k8rHcwVzAWK17xSXN8dM8zry6RVEPH2lyWZiiymm9AskCCBj8GSnPWVBalVLYAIxEYlD mAZrXftMorQGmrDBJhShMIUGUVG3un3KN7xxWwpOQYsOSAFvmdJbq1oFCdXwqhHXmc6uGLEIY6AG GJEAzwU9QawepKIH6mGFENbTAQIsQB7OWsCZBFCthjThI6WTHbdu0IRycUtBB3giR8wVoAVRRFux K12D8OOhMkpECWXs3Yb6s5J8oMQkKvERSkpElogVyWMgE5hUPrYxmRwJYhM7wpBiMsioECViV0GY 8pL0ko9ZJXxj2SNYjnKkmLQPKzFiXoyMNIG4xKz/ZmC6i5nwckRSBqAvAQjamgLgP/69wAUBjCUJ 6nSZB0DhgArMZdUceInUPPCBDHxUBSUottYMgAi8KMUuTNEBZnoqFR8UIdtmsTZP1MYTsKkUcxwR OGI4IhrG2NXXvPMIbZgzU8hET7JYMZdoIdEvAQHIQe4TACXU8z6/69ZfGEQgLB7gBQpRkAS45ZCP 2FNBGkFdRULSH4Roq3e/Kx0/NqJG33HIHkJJSYgYRiQ7GuWONeFjjmQkI40J7GEJw5FQKDYiI6kM JiiNyQT2yEcjReVhH8vplJxiBfcxCStEYZmU4CKlsFhhSp10WScLkAMRNDU+8ItPXu7Xs6qikpQQ /0BTm9oESxe4iQSwvFNloCY1BCJQl7qEFGsSxShM+PJQhzpNpSiVzQsipzw6KE4HivAbWcxNFq6Q JmBpMRxTYDNynJhUN7/pTWbwihC30o7ivKMcVukQmRGgADjoxk5XMCuJR7RB6IyIJsAwkQBcrJa1 EFIt1WbEiv4U6AEGmkqCkiug3EKjRfejrSgKgB8T1VZFdJsvDvlOozVaiY2EcCM/4qQmRsIjyEaG BZ9MAWI1HZggTzIkhrHUAkQiyyBNCpScSuUnH9MYHqOChZkury1O+diLbCKWlnzJZVJ6GVvE0sml 1syq9+PLVJVIYIOsMjBpGpqbFixAAM5ylhqAwv8DIizhs6L1wn56BKJOw0tMQEPDam0s1iLlC01s gjzEqcFwToWKu3mqbbyJhRRE2NffCMewpKhrJHiwgl2lBlaqgRUxeMUrxPFKOZaw7K+QQ4TJmSAC QFRFK1xxHxsQwAbUCpARAXMRc92HdAKw5w3AdaEup7K26TpzhLoMrzDGrrcr6c+HMsClNvYroh7B T32A+zsQocTPywWYTFAKg4CBLAlJIGn40GsiLMBgRSQKUY8ivaOhwIS7JprKTfiIxxnVpKcgoIJX TCaCntKIfVixpI14etSWgaAEWHJLJ//LJbyErmcCVmLPmBiEVf7M1206mleVxjTIyIBPUDCghTH/ nNZHhfOXsArNogoBYq5d7TXHIZsnVFysWpiwr27bjQjFLUIOrs2wyPQED34lNtf8OFGBM0RqhmAA 6AAjGN6hLN+0MazxmOAJQEwFA3ITLQQEpi99YSKXW8tlcy1ACQhB7bjAZeaFoBG1XURQhB6CuzXT K+Ih0deH8tEvOu9LX/yIc29/68Y3cklEkq40HTm9MZcqmioeE6lHIc3RISUXRUMJeo0KSROhOhoo MKkeksprhZPc5EVOcfpT5otqs7wMvgyA78z6g5dT6trWSgyIrg9OYL+0SQL/S4wsAygDyzzNlsyO +6JG02FfugZR0762IJgDGtj4Ili8SGGxKAec/xfDeNzltnFw8po3Hvt9BKlx94d/TIjrDCE1JwjG ChD3nX1vY1gj8EY30sPOdUiLACko+z5L+xeJj9me4yrzxj3OcdQ65CJeVAjGI0Rc4/rnQ8Hls5zj XB+na1Tl3KUz8Ny4XTn6KNMlPQv3Ei2jKdh0Rp4W6fROZCPldr/74G3+ymSy6e4FrHoxOgLL2gKj VKNsKFGnySThizKewqUtNbtZrReCpq8jvFr/FxhcBgEK1kqvJAFyAlazZEvKFnfMNnejwVbTwCjT IAkQCA0T2He9sAk8dlfIUQOTcwq3sFeo8BsyFlhv822+0Sm1UQt5xWOIlQ2a4AvxZgiX5wCFk/8a UQAEifMrQBAFGJANQRg5yDQeHhABT/AEDMBO5DAX72FwSsRECAYY8oAmsBcA45JFE7JmFUJF4bJm qsN/HadlUFRc+eA79pABDPFG+dCGIQIidcZyMKcSK7Ej4Rc9RFJTAoMFiSZSH4MjfYhTSaBSDDOH dCYUJpGGamgSS2IPT8EULGNHStd0NlIwT2FfPAJ1RpUlXmJqcPE+TqF/QRA6XDYtPQOA+dNr/Wd2 ATBsazdLj+EDfBJhtnRLDnhhHeZW3lQJ1EANr9I1r2IJflNiiKBt5HFXIdgDP+BBz/Q2fWUDUgCN KWADbfNMpvADGsRDsrEC5eQ4ktJAjnCD2XD/ApmHARUQBdpwAlGATAAwAuMBAEjYAwDHAM2CDqKT P62lRA3Helc4LlkYLlmUEPZ0ZmmWLuriIPzERPJicXmWLXBGcsIHZynHDy8iJCpxZ26kURLBIz6C PS/BXI2GUtHjaOaFdCCQBDkBMQ8jPcwVRzwCIkDyIvqSEvYgAu9nBUtiaRGjfnTGJS4hVBVpI44I f+rnfmPRXjqhFmzhJfNRawi3F0v0lAEogGnySg72ijJQGXvCJ7d4YRJUGhMojMsQeZRXZBU0jAPQ KrGRC8hoTbbQAzZ2CtMIWCGwAO0xY77RTGuDjYaVN5sABHsTKashbzw4OL4UBedoju44AkFI/wHc sA1EAHDmkITttA6dY0SHgUoMt4pK4BdY6I8AWVsZIWYJglARsiAZpxCxhyCvpREWoATaEnzw0C8T NZEkNyRIMYciwUYi8hIipxQuGWg7SUfXJyMvQQWDODBBgT0QU2kjklFCmZsMFTw9NSIFAJw0UTA0 Qmc9UgAzwi9pOJQngxRXYiRgoVSd1BY+qZ5SpWt6MXZnkj8KMYVwohiwJEtMwBhjJWFZcEvL1pWF MmKD6TWW4CiLdZaRx42P8IEdqG27AILFwZfAgYIztgAn9EElaGMj1JemMCzlwQnGtBxlOQiQJSvW gGSI+SvdsG5E4I5QRgFPAKPqpER3UXYNB/8BB+CZnjmfWKiFYLg7ZbY6AVVbTRBbClKa9UIhBYKk FYVG3tdGUNpG74Bcf1aTQleJM2kjwPNGy9dGcZQSLuEjlEQxSadSIbUxAzOHvslbMCFp3Cl09oUj cxQlUJKGLrEUmViJq0YU2wMzQ9UlX7IPoRQmW4cX8RGF+Lh6BCY0iMFKYSVLxzZhGsAnXAmgCuQo qNE1WVMa4fRjmHB3JPoI3GhiHOiBqqJB5/Zi4xZjNVYqJXhCfVkckfOhaZmWCpoa5zgImfeDQ3AN aZkNndeO7thvnpBZUDY55FAmdnFEYieA++iZqHQhC/JEGCEg9NIu/fQQuaet2opQ9bKkatT/Rro1 kzD5Z0IiEszlpZJGmyFxEtmyH7zJhu5qDzB5cneGFOnTFXioFZDGfXEkZy+nhvDAL5Z2p0GShgN7 BFJRaVbKL3VorkI3SUgVFgwAVKDEVEwlqFH1DzNza1XldWtCn702GHACqRCmJxqQsrhkqVUTYjaE qY3CTdLGVpQ3AL2AHGNDNg56KjqAjXqZA68aWAsQAuUWY4gnBaiKYygGerWKDdzIKzuog7uKq9+h ZACwAgDwHeOhWZoVcJ0VLe/hF5qJWvv0a/MZIAPJceaiER6RthJypLOXEbOlpBrSLk4aEmG2Emc0 cnobpcoFpXG4dWXUt7/1Wz3JWzMJXAD7/zs9KTzPSUd09FEf8yNU2pOVBiVMsRNIUTCWhjIWAwIV I2dz9CIlZ6448hVZIhX2x1RWsA85oHVhcj/7AD9MRaj2056EARia+Rcjy1VsVwVsV0A+wLKXepag 4WGQYAyKlamLMlc224HPWwOpUhxnMzdo00zAEW5tU5fR2Dbh5jZyib3ZmEzbCCw2iwvBgA2euoPg 0XnakG4AkG7eAA4mgAoIkApg+56ik3qAMTRNkGCAMRiAwXG483Bj2C2teZoch0a7o2bsEmYdgkb1 IsEjh7cfQjt8O2cSUWcmF1wcwqW/2VsTtR8OuZFvOrDAhaUlohTh5Tx62i9LUpHnQ2d3uv9qlhgw 3BcUwueI3Cdpn4a67od/YAImOeAURfy6T+WUQTDETTUf82FVEICPp7QmvRtsDxa8KUupxDs1jTJB yLupxzsJ8dYLvoSz0WuqFMCXzGSChnd44FaNI1SNG2RYuaBuwsIqNpsqjgMehhAFv4pv2xB6xcK1 T2YeATehUMkXhFFKO/q/WNhwjkwAaKRaIMc6IEdxEjGKsWN7D7FQoZMhaETBYfat7dJGZhjCZpgt XMJyIyxy7xqbK4dnG4y3tclGHlG6I1KJ4eWbuky53Ekw2ykUdvrLL3ETJnIy/AJHJud0MiGUMAJ1 0AxfnsTE8GXE6vlU90Mzg6oztguVpPT/f6ckwGzySrEkA1XgNPtpi1ssKKZBGhmIqWDMVgbqNcVo s3msbY7HAze2VzNWgioIY5oDjTPmNqjQz53STC1IHMgReCXmvGmpvlSLDdlwtQCgWd5wLPI4Dvc7 RAhgA4DxOTu6cEPzyGtSpDgaLqDJEODiEaNYRqCTEMNVOr0WELWjBBpi0+zyrcU1rrtlRr53y+/6 04ULPEKNtytXXL+1ym6om7ocRz7nnL0pR5XbnSRyI02BMgk7r8P8puBJuvDHU0tpxLXbVGJNxO1A xIQaJkbcVDlwxAIGYB+rEERTzhG2leq8zoayHRO0HJlaDKzxVqPxYcOUbXc1vcNiHqVQ/3jX21cy ZqGpx1fgu1dxmbSIfRwcqDclpr5/iaKIAwQt+r4VPb+TwwBRdgEEsB5X1jPutIr9i4Vo0gT/2KNp FkUdwUVrS4afXIYOxdIY0S6z4yEVhbd3a0Y8PbjHFdQ+ndz0stwbfIb5AnPI5X0r/H0ZGd3Ol64n ERTAabBc3R/gGbBPx51DHDP9hbHVPAGvy7rpLdZOSRcYi8RtLVXyQVVwvSZXKVYU9p947WHcpBrN Edi/GIEWOEzF6IHEoQM9wGKpmqFCG26OPdAQboKn8AMr5qGywWOAySqpAXl8g46QdwKK+dkjEL9E gB5IqCzyuCxX1ixGRFoLR4ALANuPDP+af/FPBaVaMB1FC0XJJXEfrLMQAQEY+KMEqBnBLt0hR33U FqwtxQ3UcmbUPv3bOR3cqUPlG+kR7gpocXRphhjVW8qRK6IShRh+KHEiQwkP9hV1acGeXdIl1Vwz R1XE731U6ckW5R1K2Vw/CGAFSMzndbEXY2Ko8p0mRvMYsyQZtIjXgzJ5foN3ONRAmTpivGTPrmGq HVgKP8CXPnQ3poCCv7EbfhHQRBvhkn1CnD4cK0Ycx9GiiPArfIMNKWpO7tii8VusEXDrSTgOS1hE RWRlLr5P/TvSoFnSAgzsEGcRzPoRmgzkElUSJUHbIPHs9QQgviXKS6pbN9B7e0s7K1f/D0Vdt/Ny e10o7mU0e8n9txqFy039uFYtsFJ9BDlRI0SS3SgjExi1JOqnnuwzzW7B53y+7/2VnnAR8P2VA/vl JU/1VK57xH7e1m0N1z0j1/ZNzrNUBZFhGYoOKMH0bqAB2OAo4PIGGg2aKsiRDZ6Q4Od20CVIja+6 AEhgl96Ll9UI4bBaGwiNTclkq+Wxbu7Lb+74CZEDDprVDVOgAEp4AfR4H6Al0n+hYCNNgAL8yC0u EKuFcQnR0t3CtpXMOqxTLl9WOggBcczethJCyh2y7b7l073l2/USt2iWrdv6rUOKrQ5i5d69fGra rxnFUb259xrDIhy1ywprnksBVKxm/yU9ReczRfCdRAUl4PglwPhLxT5tfdZyPruye8RMBd/xDfFf KNeIwXaw+BgYn/EcxmFBVqCP4kC+pHfxzKBovGImwOk/4M9tQ41zaQNDa6Ga4xfkdkKkftCMh/PZ tAubZ04VEDkqilnfkFlGT5lLeGVHlERqItf+yD/+OxhPP9J+gTvenuMRV9s8yn+6V1q3d3EZMu0U 5SHYnv5mXyA2Hf9oXy+mc605nUpWhGZyi/+1BQgBAQc3B4aDN4WIAYkCjo+PIhkWAhYWGRlHR5ia m5mdm52cmjGlMVgwpqUgq0lUWKUFRzFWObVYExMgE1a5uVQlVLklJRNUAMDCvla9tf8FtlYMBdMF CEFBIkEICNXPIiIIOeLZ1tbX1wFBAQsLggsQ8C9MMiQyMj5Q+Q9Z/P3+/wAD/hvgYAAQIA4OHjSo sCBBh0AeOhxAkeIKHgYp8ti4sQaFjSY+6ujwQ8dIkx06pEjRwUYKGzBjroS5UorNIimKFOkgJYXJ nyYpCKWwYsWAEUVXjBhRgUMFACMoLF1BRGiECBRMRFDAlQEDBCkIEGDXbp07QU0gBICQNi1btQvS Clq34EYARwQEELir91EQAkEE8F3wiDBhtHcD5N1rSK8gu3YFCxIswC6jG48aVW6UKK+SyoxCT4bM mdEBQYdOGzqdqNDq16tdh1bEOrP/5keTJGGaRMlSpt2XMFnYJATLJgulNIFIwgoLCBBUnkufDn2X ruvKrPfy9atYsWUFej2zUoCXrQnUEGTTBi5IDhHvz70vBz9HgXPZFqBrF8+FCwgukFDPPfjss49A CCbYD0UIJaRQBREd5ICDCiFkIUUTZZQRRxxyZIIOPehQUkkXpJRSiSlI4VIHCyDh0kwLhLCAijSZ iFMHOuTwoUkmrCBUUkqtEMEIUAEAABEAKEXkCEhSgFUPPZhwgVcXbEMAAu0sMNY7bPH3QgBNvPDW C2SqtZZaZqLVRF+C5CXZXJPBOZcAZbVzQBOINHGIaHxCRkhljWHWGmeD3qDEnKCR/zaIIYWetigi hkhwiJ+xqQbZonYRMukjfEFCiQC7aZJBJZ+E4skkomaACqqePBeDJjA4J10SsDznynPB+AKdLyXU sh13wJ5nCzTj8VINN9zAV94E6oXzDTY5nKONONV8s14Q7agDDwQvkAAPCS7Qc08+/Byo4LkAVaRu RBNSVIEDQ7RLEEIYysugQhp1yANVFIQYZZQpocRSSiks8OJLUrDzEhIxspOwTT2lODBQIQmVJBFF /chUVE4iuVSRRGxlAgMmPHFBlVVaqeVYeOIJppjxwLwomYg1UdZchBzmjmSC2XWzOnCqBilsmTIa mqNCEzLI0qxdxqdklh29KGw4w/+mGtWrmeZ004yyRlplYGcGiSOW+DYJJ5aIWnYlw3kSXNuhvEoK CLBgEoOr5VERHS67hEfessBOkIPgz0zjC7X2ifPeN4PPl8M223wD+TkpXGtNCvvJiWbM/tkjgxH6 oCt6ug8RZLrpEzrwbkQGZehQURUZNcBGsGe8EQU/lARlDyaqhGNNNiFc8MM2sMNw8TMusBJLI5lI sVQY8+vjUkRUTwSTHh+5lQImc1+ilTaItSWeZL2zVlows6XnCwe80LI7N58GtZwtRy0n+5KaZsgV B0jgMtZI05+laJOpx7xJTkjLmmokJanXNLB/VsuabFzTNMxchjVKE5RtBuWI23j/6lOV8FRurCUJ EQRnN7xJjhDs5qojWKE66GHGsv7WjMZRAxzT4AbhnJG4ArTnGfGhnDkkR44iUm5LdFnLXPrDhAB5 DnTkMtfo0GUUexUkQ6djUBbVJbvZ0c4oSeFBv6Akotzp4ALNI5hPbFI8FaXIYC0yGMOQoKKEzQhi vTsjUHQgRqz4yEc8wNj1kCSk6wEgAheQkgmklLKwrExL67BZlpIYDwiwA0xgctn5snTAwzhqLoqY y5qqJoEGoqaUCoxgbGYzKQFeKk44g4AqHVhKVNZyNVd4oNIgCBv2PWY2AowNoUiDmbFh5lMg9OAj KCEJAejGmbsh1SWOwwnnxCA8/8/BwjREEB7ucGNY5TkWOMjhq8Sp53HheI86zXENzOEHG9uApzUA E09sqYMsljzTC5w4ICjuAwpSnGKC1EVQ1GUxIVuciFGAcJGi1OAiNeCBR0riETLurgMlIphKaPSw GdnAji5qmMGGhzwVOQ9Ei9RBVojiJKq49GPWC8khF8nIk30vfARwZCQnKSazmOmSmpykzSKZGASi 5jVHPY2e2idLXwaAf6ac5dX2RKkJTg2B7csqbB5Yy65KdauGeEED2ZfAqU1KU5gq1GZaw6jNdBAS rSEb2UQAKkyQKgPfONsJZ8GKVxUgBhOgRQZ8uJ3y7EKGzyCcfayV2B7aZxv2Kf/cONAZDmxIiz2Q rYY2LnCsawDmGlnaVrcGJAMNGAEf+YACP1QrUASVTiIOaVfqGlQ6ew1goVwsyr468oMeDMUkZAwY TyKmIo8mDybHQ27yEpaiFfUORyGpWAT+SJSLMQl7VzFByBapgEXqqEodAEtY9oInOimhLHChS/nI Yhb2XrIdewka08yaVUmJ9TTcWhQDV6NLqV7KMqmJWmrC2j8yRWq//WNgV7nKy/72r2irIatW6StM tBKTgpYCVFzhesyxjcqujjgbCncjN038lRbU6CYIrMBNYwiOFwhwRjcKlwt1TmOyynKs4h73OGmF gxsKmABnOQu5bWAOMOjl1j7//RMue/gAH/ho7bkKerorVnlCErKtRbZ826TcVqIqrQEZs/IDNBKs CC7ByRuLGwKYtKh4cBbpi0y0vIHRtGJVme4KjoSkqvDZSVm5swm6ezKwICCnWxrLWJIoyb/8RUuG AdMkb3aWWE61qQe2JVkVHFVUIvXToLyqKhvY1U0veMEkQAEKSHDLA5BgBqXMJVQliBpBoPK+SbWa ojTVYF0nuFNrLeYHnenhDwMnE5c44V8LkAFmFJab5SlsZAvnq246thbwqY8VvimOHzdrPem0QpC/ 0m3IaRa0gqikkpkALs+5G6CpJZeUF3RbKlOZdVSWXRdr8FB+r4DfYtSBmClQ/wMRhagDB+8ATnoS PJpA7LjItUEIEiYjN7/ooy2JmElyYBUfhcSlWInAIK9CcpHVFGVFFoth9qIlR0N6LOoQX1zmgl5H HXAtEZ7aLfd7ak9TeMB7kqp9M73zWoq1lALqqqqXvvRaomAGsIb1gWltNVQS8xGaSoSFtf7zoxHC EoUopmaEPSoQjqquwznbLFB4ifBMw9nigTZ5zFOfG6cYnMOqhTrJ02MECE5xP+axZIMsDmnEcxv3 QffNRLtkAblbBvKW97z5QVDbWhkj61LolhtqEYdG9N9CESMFULKTkfSEJ2pmeBtfYjyGVbx4MuoJ O2DSkpXkMQc8Gn2PAFDdEf9MN2QhCzRNFaAjHqfM3IcGjPKRrHz20sUxi46ky7aVmkHgr8ClRIEE vsTLoz8wl2dlWiqv1l9PSyDpPc/++WHtdBRUoem1ZPWqtR9rT0+91Uf3pSIKVTREjD3sl5Epg8II bjU2BhhiZVdXwhEcR3BCnDANgwV3KZZivGAskZVt1yYOilU46WQfKaA47hFOgaeBT/B3h4dO0qIf 2vIlZ/IfARIuA4Ja+QA6/ZBaU1R5FWFlGkFQYDQANeCD9aZbDdVv/sYDINIvQKFwF/ADqAcxbBQj DJMwDPNmUOgwygMTzHUwGLWFOaIDgrYCMpVnSGIkM9VdXGECjzMl6JQCReb/WdUSX5CUJWOhBARw KJjUBHjYPrVmYEqWYKdGAqlBagfAP4Moaw4WYanhS5w2iOmXfiSgAaomAdqXaqsmIKt2fvOXaj0n dX5YagS2J1qTCAGYQYPyJ5txQYSwa6l4gAZoV2d3QnAjYi7EbM3mdtSwWD50Y+UkWW4XWfbBADXW WNzUODumgZT1OEA0AQpwY0VmDipoTwtwAJsjD/XgRJ4DBaV1WpBng6s1OkGoLlgUhKzTg12mWxG1 W/vybwUnFCRBEj/xA6WXRjzRRsvVE1FoA3MkI7E3IythMFrIEj6RIx2wSKNnFYskJItkJEtyFQpA cuJQJTmAcm24DRZAACIQ/1/tRSeYpCYtQ2CyxC2NKCDsV3SkRoiEuD+D6IeRAkHsc33X14g8l2qv 9n5LR4nuZ5NMx2oSMJISAFU7uWAJFnRMw1apOIAH0EH/1UFHiZSXIRibwoqQcHakooChgkKzcE1+ gwt+I4HhcR7jwUPBMjiJRXw5QAzMMgHFkANB9nc71oHiQJYTwACPVS3vFH3pthb+AS5NRlr3YFo+ YARQ1I2iU1BVhEWYt3nlGDsNdRG0E3BidHAl8RO9sxNFEDzE01EJA2dT6HqzRxbMVWc6wBJm5oU6 ohUsxXtXUT1XcUgiQ3xkeQERiYwX8BfxhJHwhSfiQ16ZNAh6wi1ZRSb51/9V7Ad1tUScXjVL4JdL kgJ+DERW7AOIBwZrTxd/rKaT2ad9qlYFJECTllidSTcDr9ZqJgmUK/lASTUZAuA1wlaK64mUHHaK RvN/w8Y2CGhCxzZNpEALtIALMuQrvkANYCk428EVggOMCsBZ1OJ3xBcOXPGWCpCWh8Msb4k4PBRP 4IYOaoGhYrJk1vhEptWXgMlaWSB5A2VvBIURmJeOs9NvXRZR5yhRHmGEHkEEJgAl7giPlXkTOWET PEFHcBQCQJo8LjKFUrCP+miFdYYjaIRGuBddK1ACSTJdUUpy3MWWgEdZ8+RyogQmSsUWYCIpS3Un +HN01Xl+mEiJkviT16n/fiMJG1fAPyfZYDyXaX5IiTq5dDR5nTqJk+iHdGo6klFXdLx0F5+EQb9k G8aUGXxhQsIGlW/FiiYUQmVjCQrogKyyCqnwV4E1d9wRDP1pHr0ADbryBNWgjNWQA3LJAEF2qsoo OA9aAoMTZBFQAhGgga7pi9VCWetxM/qxDtvCZODSbtmoAU+mDyLqjSaqIRqxAhFxmBaxL1/GEUMh FEFRozVqEkUgmVJgIjoqhTOCBCEwR3E0R1MoIw0Te0EQMXb2IeyKhk7Ccbw3ARQAACVQSFtBcgqQ qm2JqpDjTndBAFHTMh3pnAbWktQpIAiraprIk+BJfzNgiNsXKew3YA2k/5z11YnFKZPTaac62bDT WYkIq4llymqB6rE9aUu3VDSKInaPCjaCokwgdFeQEKkz20ygEmKgMqkjRqkjJgqfEAvT0QyGYx3d VAy1YB6+QKCPo4yoah8XgJZPgKpyGbWKA6UTEAEvtpYPSnytKlnoMU6epYLv1YIvqJcx6AOfQy7c OJhdFI73MjuxMzuMWTuMCWZiJmYgYnA9EJnZKgU74YRsBHvHc67GEyMhAAFBmrjJ4zDLo0cn04Wl KSQchxXyGgGseRXFQJZAhACwaXhWcpFiIbB34jJhwhYvcAXsEyZiBZ7eqbGrxp01mYn1Z387qWpx SkucZqY9V5MyeabV+f9+Cbtq0omdTEe8MHlL/HNUovEmjkCAYjOzBghCa/M2kXCzH0aVIjZNnPAJ mSALsrAJr8IJqxAdu7BivWAdMVAC0kEFgwMsa1mg9lFj5GZDisO0BDoB9AoAgkOr9NqqhGeMk9NO 2oAtk/Qtedk5n2NaGlBaMih5xyoQBYVQBcU6GKFvXzYARHAQEiVGNfADHiEUBWcSTKgD2aoDN2HC 3Zo88BAxhxukRQqkEICZMhKFcPSZohmaaOQTgxNoJeAkg8aQs4pITKuqy4igVgI54rORetKRd8KI uUSm2VkFVUAP2ykgwJuJrKuTjEic/NVqRIexSCcgZFJqkli8Z3p+IRv/vDPQdGv8dMSpalK3iV5s Vf2HGsVkAR7Unu/pqDSLdgg4YlZ5lbFwBCeWAdlEDXcTHVaACxUIAuoLHd9RvtcBWLkAjIdjyYmj lhNgAmyJtTmAtcJwDPuLlmbZqrFqgkYWBJjjr+zALQESrI6HDxrwAFCgAQA1efY2Ec2KEUTgRY3Z mHXbAzwgzD0gZrojIiKicCicrSlSpAxnhRHDDuZKce9gR5YEpOAKzTWCAGdUmrGpUpP7pAAwaGfY kMRHxMpYAlVyLJGDABU5FuZ1h5n0JXmIusrpp2lcxVIsk+EJa94XqDs5A03cS7UEsRAUxhIAAX56 dJXYVUmHsFWgAQIC/4mQCH/SyX43ebxpaksRpH/OW4CQETYapFbB1rJR+WH42QnMNguwIMjXdDfj u2KzoAuAxQrTIB25kguQbB1JW2Ok7NPdVpZBRpZDjb+kDKXAMAxoacrG2HeV406Kl277FLI0QAME 8mQFsrbI6rYbshEZAUYVrC/F7FvF3C8Fpzs40rc/kRPDBTEf1TD0SHH7aEc2EcPJc6QvojwYlQMY tUhoRJCfXHIM+cMiozhyuaBEVg1Xkpt5AV8CcF6DsH16cgVRx8/bGdESLQPaKcX7rLA8+ZPG+ZO9 dNAny2Dxl9DeV0rdwrpoXErgeX7aGbKVGIkXvZMhC5OXSJ30x2pi5f9LA6R1kUEZytQzw8R/jSpX ZINshDwLoGBiqpAKq7BifbW+m+rI5yvJerNiuuAK/1kApfy+OhJkJkCr5D2r+tu+aHneTP2/5VY5 kIU57AA0ovXK9OACU3zVPnAgJCo6XVRvO6guPBARYO3LgUQEwyxmEgUlY0RGuYMjUoCteGQTE7c8 DmMDiCvNDoO4HfUOMVKkU7hcypMCJYJG4vWBV5EDKyCvHNddaMgVW5uvTnuqBSAN6CQWhyYCZSEW d5hVk63aDr2dVAzkUzzk2qmw3enGw5lLn31q7PfQaEwCYgUurR3Gdgqyvot0s+26ZWzZVZzGRR5/ Rq67XqxAIR0aBxj/VyONlFqH3JSabJNAlQwYC6pgTdeEBdk9HXsDHdFhWOQLDOUbDElADGtplkFG DOSdv0ZyDImOtYHT1B0oWeCgTgMMWr3KJVMtIP5R1U5WWrY8og9MRf3933CLolQx6gSOwRshzAcO JbkTXDjCEw7OE838ZgijPNTcUfpYpDEMpIpLzUjqEyejEishaGVohlpBfOQctQoAWZzLzuqRm22i GALwP1lF2XFspiErLtv5uqmm2Xh6xQF9ibk0nWUcidrX5FYMvLGdxiCbibmN0KgG2/SH7SB72Zz9 fpDYupr47tuHz61WQADmCHQFV4kKlTErV29eV/bJV+BrCjDgKqeQ/90wTR3ZjR3qqzcYHwzJ4B1J TcrHEAxGAqWGDqUAMDgQWpZWioyOpR7j9B5QTSe9Cg//QSYu0ERNhrb20Omffi6hfqL5ki8XkS8S ZeBi9APD3Fu7M0a9kyKyvq0jAdfL5RIujOG8jrjwcK7FBc0epRIlEpEd4M0/zMmCjUgf2KBckU7P gHhveJHwhQDTfgMdKUuMeGutre8I++SXLZPvJ4lQ97E4ueX0d4nduc+bbcUaUPh636enVp6nHWGO OLJO99rYPpK8/eRI5QitFNwD/1bBsVZgs/lwBWyPagH2WTZnowoNLx2wgAWygvE7zQw4rTeP7MjH kAzI4B1IHfK5oP+/aGiML9a+pfx3vKge0wK2bAha6qAt3AIgNh8uaIvzGmDLqiWi068gXsaDFeHV GixRdRutH5HqrN7qTDgxBMOjFxdHE/cO5trCHW647g+kuv7CDfNGMrI8JnIyWhEB3pX/+g8IORGD CjkXFwolChc5EzkICAWRkyIIAgsEmZlKAZ2eTU0HB00QBy+mEi8Sq6wSJCgkr7CusquysiiuVa+x tLG8sLFVu78yu66wMxIzr6u5rasHrKanpwEHnqLRotzX2gdX29rQEqir1aIBNzedBwLvAQI37/T1 9PPvNyLyB+zr6vfwCdj3ToRBARkSKsxwJEOMhxBBPMQCgorFiyD/CoAoQQXERosTKnK0CIAklRIT SqIsUSLChAglGhXKkWOlI5qPcpi4aSVHAZo/fyIQ8QhBkCAijgZZ0AlCAAhQmZBwQYMqjSoyZBiB AiVLV65ZwoodO3bFigFoz/JIi5bHCiBARvBwC2TA3LtzKfDo0aMGX74/OujoQDhFkRRSbEhJgdiG YxsLpCxYECJyZAiVK1MOEUIK5s6UpYSAOnry5MSMOzC+0OGCiQgmDOmMAKCQCQUwIygoNLPAk5uS gkuykElEpkvvCFwKQCDAgiYBoHsqVepFgBenWJGwxUrZLFgokgFDUQU8iV3DYgUTxmtYevCzZsxq 9UxauXLWsGXT/4/tBjdu/v0n4IDdiJIfgPCwYw89+2SQjwAWvGOBgwveY08/FVI4oUIbCpFBATEU UMARMXhUgBUeVXQSSBaBMMGLHoVUwkcoTcCRSlQAkFIJOr40wU47uVSjIz39ZMUEhTgiYg5WBJcD UZJUAglSCwThXFMLQPCCC04wwQQNMvhgjFY+dBXWV2SlmYVZNZyF1psDnLUCD3DNSScQK9RQg1t5 6UUBBYD90ENghC2mmBSoMWZDCgsgQdlpmm0GgWSXfcZZZJ6R9lmjCzjG2KetteaaCa29BgAAuvF4 akuKKMCAIUhOINQkQylHgFHHaSJAc0spgUkmTHkibDv2lSONKf/F0hceLbQQo54xv8RiTBUavGeM BuFli4J3zyizTDTQXMdNfuwQu45/ARJY4LnoxiOsAJ4omE88FdYjEEIZRCjhvhbso++EEuo70Dv5 MpTQhAgnNGIBH1oR4pEuvmjRjDE6vFHEFb0ocY5U2AhSSqsCUMJOP2pcowIv0uQIyjm8GtQjLwvl UyVKKTUZVC7kDMEOYfogplZcBe2Vmmma9aabbM3Z1lwDEFEXD3sSwcOfVAP6w9U/XKADoR0Y+phk oEXqaGScQTVZZZhhliUTnY4WgqOebRbZp6ldkILdh5jgWg64eaDbboDz1nLLSsJcAFJDGRdEJvEs sOuVyjkHHQH/wXYCHVMLHFCKfceWwooq2wFziwTmnUftMNj+groGrKdHLXik87Jdd+QwWw12yLbj zX/pCnjFFQCyK7w6/dArzzrwMkhQvQhBqK9C/OL7fMEJFRShgxsajNCGDX0oIsMgeoSFFRCnSPFI VDykgIsxoo+SjqdyfGPHMLHEpI0vMqCxTPvLGknKQRERAp5klKNMxko4owpVegYF1mXhAWIxE9HI gjQ4LW0tUruLXYgwJwqsgAh/MgHV/nK1vxSqMJ+CjA0yExnHWMYyZbsU2Mq2A864gG2SodSjOkW3 FKBwVHq7AAMu8ITAtWoRBSgEAxggiZxMAim2ak4n4KUOTnSC/ymgkA4ornEd3Z2Cc9FQBX5awYxb tAc8rWNdtaSFldO5p1rv2dYtgrEMbz3DdsZCx+7Uha5+8O4GwOMd8YgnigD5Ix/4AJiFInS9hkjo YM6DED3yRY8jSE9fBKEQhwq2oX596AgM+9AEmqSwAoTEIyW6yEkecsqIfUxiEyCJjm5UkvjViCU9 YQmSGqHL/qXMJ8AsSlKUcqWouIAEYJKBBrLiAw1sRYITLNpa3FQDu8zJTUC4SzbvkkFAAaoHIhyU oP7SA9UUQQeGYcxpGMWZT53tMmeL4WbexpnRuCCGEHBhCxHTw7oF8W4mGGLgYKLE3TARARcQSgFE sNCkCAApVv+ynDo6wQ79NOEFpBAFBDKqiheU4hoQOAc1WhGt8ewiPGpEgRrV+IDWUWulMF3pdswD iyrM4Kbhmd3sxHgO7OAHO7gbkLEIpIxwHGuofOxHuTDEvINRaHsC2xfyHiQPC1UoqhISQYREkBAh WCB7J8oAAhoGAodNoEThS4JEPDIjGWnsIi8qScdqqcoKXEQlJ3tRIlI2JJQwqRE9MQhRiOkcqECA BDKggWKzEiYNCC2aRMvTnvY0lz0tbQDb3OZcpPanHnjzT1sb1F8Gg6h+8pBSi4IhC0Vztk2NZmwh YAIEXCCDG8ZzAYr61CEYoxO9tYZvgYsN4FqWiCdAAhJPKsr/UI5CgMVR8RP6aQdHNYesb12ho9II nXZs8YuaqrR1Kv2ueGNKXjW+dKXZMt0w0ptTV6TCvdDYDjbECEZocG4c95mGugTUR39MFZFWtcfz BCYQdgW4wBmix1YFmxARxGCUJxpliED0EBGlKEUd0Rj+UkKFFchyYzryMF1Ngj9FaDiWee1JynpS wJo55SlMOOYNaeszZYIFmpAVy1zM4qY8vWnHcyKCXfACtRpQbWoU0IEIdaCDcqKQbonJ4WRSO+VH gU1t9UwbCw17TBKkTW3qxC1CDyEbnMjmNi3RW2/5ltCDzgoSScFVlRznrlBggz/XwF0AohFS0i3j CswghrPc/xMt8pCgvIhONKKzVR5tOSs8x3hv7Xp6DnBt9708DQc5qotUUQRyv34813ONl7x6zeNe pZ5oPNg1UVTfKwOC5Sr5RknKEYUoBjOKAcT6+qJesmQksYzlClIWV7t2jGMn6bVNfn3iQgSHicM0 4FOCgBmpTCVnytRKmJ554xyH5S5y2vE0zcInHhBBLpWtbNVMwOSrbY3JUggVo8IMmXfellJhu9Rn ICC30aRNtjcLQQAkwyjI6Ha3h2AEThJBEwUId2SQYAACJA7n41YiBcj5VTaIxUWe2sJbspCPfIah zDealzzrVbQGWtrS8n4XvdiKOetezjr12LzS8CWjdu648/9ZaFcCmlZGsa4hjk9zQxx8vIZ/pjis /oj6eMwjdT1afVVPKuREJ9I1KY9gBSzEAAsZxlivPTaSWnK4JHalq9pVSZIaJdtkJkaZUAwCZ5tR O1M4QyxiNeAznwmtKxD0dhZ2HCeoxclORObTNieLlx4wWQdJHtQJVfOYTi0KMpK5fJWRoJnK5DAz EJCtptzG77KBGbeTYQxCEcDbHKSgzLtxjW4MUQgh+oTiNDtKAZ3z0F1h8QCVc9dPzeHxbeX0POeZ VntQZ/LVIfq8Mw+v9CGtLWxVfz2zo3Qv8ktSlG9rGektaXiUIZ87Jss+nwb0t7RRVAJxsUBcbIch vZFIeFD/ER/LY95XGQlrrnovlCLSMA9mYTByJG7FESsBbCsSbCQWPx42MTZSEnCnYUPiP3BmEDUT LE4xKaFnbYzlTGUSeEODJjkmbkXmFuSmQXZSAyMwZOqGZD/AZKDFZEUgBeekGoyhQ5ChGSlQby+U GVmWZaThb1hmNp6HWz00Zq/XeozACLXHN7qhcCgzRJJwK81VHMrhOExhK1bUBDfghd4gaZdmCygF aeoBR4NGXi23UuXBhucRc+VxHtqSXrSgLbhQC+TwAtunHTplOuSRU3+YU+sVXieFR9kHLuFAfrWj UenwRcVyLIU0SL0DEJQ4LwWxPPnnLwqhVQwBgLoGayLi/zBep2se0SQhcYofEzHKxmG9JEtUYGw2 whFv5QiraBMso1y7NxkBsBR4F3qz5QJYsUwNBBaCpyZ8gnjHyGNHAzUfBDWV5RedpQM10GRNFoNd 40N08xg+qE+UARlwQxlD6DY3Y1hoMxpXhnr9xHqu93qu147AZRsxcQED9CpMJAlwRjmVQDlaCC+R Ex3sAB3QQQ3UwFOqkAzhpzroYXIrR17Q53LWN1O84As8t4fcxR2xw13rYWjCAEfVsh5u9JHuEQzH 9wurIHI6Nx9HlUeOyB331Q3/MDz+oGoCgUkHoVUNAkkKEyJcVWFZFxLjMwEUUVYQc2KneFYbFmwS 43bHNv8Bw4ZisxiLREmLklAz0nZFT2FYHSgtylQmZQIFDyA0IuhtyKgWe4J4ZslBc/IDe3I1RsYD W1MEV0MYMagD8UYYi+JOUxYppkEZY3NlkSJl4ihl/KY2PohbQZACq/cp64hQCzcTNPEEPjGPCGAB k0AA+RgEl5CFneArnBAK0tE5HseHuFBTGpB8CcmRbJiarLOGC/kALVcezjBTFrlTfoZz3VVTzoKG L+V8p6ObCplGJ/UKJfdSzaAejBYMzmKRJMV92ZV9BzAD/xEQ6aB0AHEvE2IQBoM9jJQ9H1IipURh PgkxWFCUqtgkJeJWUUmB+zNrutRLv2RmNDFAj6AUUsT/FNSGlVx2TDKAWNrmWA+wFUNTjINHAWX5 jOD2gndRA2wJNX4CKG8pl4JBGBLag45BACpkGpfCQmRTT/W0oVgWcPwGNlmyl/O2evKocE6EmDSh cAqHXAdFK5VgHFd4FAGgBPDyhQA5CqHQUdeRCmKEC+CHC+/RkCoXU6w5c8cQC2VkHr7AHbf5OqhJ pDB1XuqlmjO3TOdlctPyRlCKLagDiCXVXSQ5DZMWDcPSau4CEPVwELCWL/6HnaDUnQ92a+HTEShS ERjjIg5TPqd0Sj5BbCuhMsRGlB1Diz5RJFKSFNE2Z1eSJfgpejHGnwvJFYFHjAKaeHSSJwlKoESm F5SV/0F8MY3TSBiDIaGm2oMUann1diltk3nvVBmOoinkCBWeoUOm0U+r8QiKGZ8I4JgowwjHZY+T QJlTsjiYyThK0BwA6Q1EN5CUph3kxx7uEYwwRXMsp4atSV7s1WhhGqYJKaWK9pqt84YxR3MrpUxq hK69CX3m6lLcyq0l5V7JMjvIcgrUgQ3lEC/YUCFS51QWQCKeCCIO82AgMD4ngkpGGSMECwIwcFYw YCIiMnYaY4CDCmH4cyJNQiuIk4E06glMYViyFbKz5SWH5ppn8pUCShaceoLZpBdSQ1mENxc90Hji NFqhgk44mFuO0QH1Vnmn8UKdIqIiSnpuEzeTwoumYf8DS4GYx4WYqqd6j3AIu1EAF6AIRaFcMYoA zWUBi2MQjPMJWwQdp3BRM4A7zOKkscNowFkt5XWtLeWVq7lyrrmQ2rp8puOtpxMLaAhT1xq3Knde 2dK22VakVxpTpFk6YbppuANUjNtn6ZAO/hVgxkMQDNV/XCWw4EM+3zOeC1MiMeIRD0uw+ROxMZKe MAID33MkSyIighUEQ9FiVkJt04GfURF6OkMCRuBYYfGVYZmyK7sX5jaz57ZZiedZUyNOgjKX7Tah heEplecYIaBCOdgpjdKhRwiEO8RCpaGDU0YAq2GiwMp6h3m1kMk3MQEUiVMrlqkJi5MJmDlR8AKQ F+X/U4coh9I6rdKnci3ntnS7hn1bXtPakG2ErjV3aGjYrixFtwwZwI22UkfKmkeaUoVrXgGckfsZ LZdWr6mwHYyrZwASLwriLv7BINZjk6XUpgEoIjypESUwYQ/hMDDgwhHbsBoDAyjSVhebsZUQJYlD lRzrsY5KuyEbqVKRFY7llRCEY8WoJygIvHfRoM9IoMIbjXPJbo7nQyf0GIrSKTzrQooxvYixl0fI edgrmP5WGrdKN6zHek0ojzmxopDgCAiwS7PiukmxvoqjK1LEHMshHcv5o2L6rdZXrnybra45t9fq A4eswIU8weRFwAT8htdSmuD6fG1UmuYFwH47pRSc/0aFi3LoUVIXfMG9QJHupV3YUR3vl69Lt3Gr tqZR1S8TAkpH0D1XR8vh48LsUyIhoj8TYMMwojEPNkov8j1RgoG958MdG1FasoFb4lG16yWHpZ9b CQVd2bsCSqB6cRfGSwE/oBczOzVMHEJUY8WeJULM+2Qp5MVajBhv04ONMkOWMYTg6G9XRquph4Te y3qqN0C8JZ9yjAhFcRMDtFyYOZn3uL7t6wkCsKx9piU7RZKygx5lKHOr2bdue8gaLbf7a8iv2Zut Q8Ax1UzlJdKZXMlRqmjXwproatKMDFPT4lJ6V5p6S9PdKgEyNhU6vQph+LiFZEgDUxAKtiAJUctx ev+5H5LUGSAELvwQDIBW4RMxMYC6KhwDTx2xyMXDVBRRuxgPEWUlD/UUQAUVW9KBXhJjN7R3RqDI EGSyKTsWBPrN2xzOxivOfTIXJjAoIhR5jmeNpjoYhpEYl3ehjuIYlLIYkcIZ+MaqpUEaWRI3lDJv KeC9dEPZS/spA5RQjcAAldAy9hij7WscMmorxjFFUqQ51bGBPspTYnq/EuzA/avRiyzbchu3LCeu MbXSETy3m2ykMD3Amby24erbrUnbDDnSrDMmbtitJKCH8TpGSHd0/SHCzKNgC/F/cSoioFRhR6Jr BVCPEzAFv2zM31OPkdBQx2wUvbccERUsscvMWuL/UTLmAluSM8cUYz1TJm9NNKH6F5wls34iKH/S luLUAcpLg9ZYqh1Qg6oRZamlT7bKTh2qNocNjpNSjkaYtKkn2ayHhIxxmJCQAlT7ExLXXC+KK1q7 i1dYK8Z6hV3do9bhFOYgDaH5DBlZrigF28Wd0RvNyPv7vxHMUj3etglc5L690bxt20rOv7Ld5MZ9 2xrdQI4FwN5XUm3oc2Notkb1wX4kSSOsVVmVqAz1PQx11SdCww2LBUyEP0NhSlYQCYcaFJEQaw2F gbH74sT0YvcZeh6VFTmjdzmD31lhzY+132HxJ3shKETgWSBUNQ7qWR/kzaPleO82GKVaWhKKKJQ3 /71woxgw5OmK4Y2ccsZZIkMWrkMliqt3k5jBmlBaSytauytL4XtXqI+7Qjke2xRirTkdJWmh6QI0 deXUB32n88Czzb+FfNvJ/tLYeuRM7tE73uQcDeVOXu1tbe3S7r+vPa1vuF4Qibg5F90uqab1QNqC FbFi9T0eknXD/LC/PGFGcj/f4xPCEWv2jplLsYuE5Ql7jh1dZt9TEWNFjK6Uis3YHE1QI1o9sOjf nOgLD0Jz2VnJS+nt9nhOtuAS+sWHkSiSoTYDd1t9OU8Yjjb8Zhkdbxk95L2U3UOue7XHdVyZkOK/ UiWRE3xn+mI4H+PlUB0kJQvOAgxxaB7pgXzAif/ASk7cPE7biLzsRa7sGF3c0Y7t017tDzQWgafR D4TIT97bidZoNDWHvOAtlnZfxvOSyWHvY64wXWXMuvbLshKxxbw/ATT36Y0UivPVNXMlXW1Y/q4l aK2f1Gxjh2zoYnFkngUYnhWDU8xkVmw1g/J4ls5kpFpOWBxlDR5mifFOOaRlHCryQXyEP4vq7sQo SIiEa7x6NPO6x6GFXp2Fmcn6lROQ1HEdYuRRqUD77gU6iMsM5cdeyEctd3ua5ep8/6vAST/4Tj71 2L78zJ/8Wo/1B2/1VX/ts+23T8/bS49e4BGH27cdYr9p+ZogyXMcdi9YtbbUYlUw5G3V3+0iRjL/ 76vbJPROd/SP7/pOo3l/lRtI1kwACC8kLiSFhDIaPj5QWVkPjZCRkpOQPT08mE+WPxQ8FJ8UOpag PT89Oj8dPzqsq6kdHZY6NlIpsDYpuDYLUgs2tFIhC8O9wsYLIcUQEMpMy8jD0SkL09Qp19dBu9jX CAhB3wQIIkEEQQECAQELAufr6OoL6gFNAQcQ9y8v+fr9LxL/JAj8RwIFCUECSQhEwbBhFQ1VqpCI WAhFlYYGUUgoxPGhho8gH2gQSXLkg5MoG6FcybLlSUeQHjlySfOkyZU3aVJ6yRIKS5AfRQIFarMl 0IsUFQpcyrTp0gMH1N1QJ6CqAALtRGgVUSBD/wauGboWKGBhbIyyE2IUiDFhgpW2cK1YySF3QgEr Y/OOzTAuiN8AfgMDdhdgGYSDEAhxJCGjMSIoJilJntxIlaVRFEbxIFJKFChRozqr0tFBShFYsHSk kNKhyGopUnTtQrKLGDQpEIT1KoYshDBewyAAx70beLRhQVIg4JYtRXIRzs1J10pA3rx4AuQtqBfP HoQA+/y9+K4OX1N9GwGiJzgDY8GkFqskZDhDQv2l99OTAImCqMn/LalU0yMD8gRTgQiypNJMkzzg k0iQPeigBj4lMlRQQ5Hk0kgf9dehQkpdIVB9UElwwFMmnhjVDVexEwABW4kQllciWJCBBRbIGP+W WmvBAEIMDMTw1gRY2PWWXEPiNdaQBXijVXaBkXPOX3/JA4E+VxpSyEcPrUTZl5Ok8oMpl41iAgUm mBJKD59cchkqoxXBSmu2dLCaLcXZYGcutv3WCy3Q/NLbb6stkJuhuEUjnC/IVdOoNdU4l5w54Igg DlbsZHqddescUA93B4gn3nf44POPPxJohKp9I9o3UUQSXaRRe/Q5JYELAyWUUEETeVhSTgTOVJKG ARJoIEzCJphgsgcm25JPkBn1q1AZBmUTh9RKpJBGrF5RIlQnmmgPVOhMlY5VMW4lQI4WCFBjjQUI 8ZVXZi35VgFc3QXXBFxx5dZYbiHQTlXqBJH/FTwFn2NYYoNwJMN+HpEEZkzITlLKmKmUGVoHJnTW CpmvzNnBnLWgxpqds/1Jmw1I+IZML8a1DE0IwsFsqG7CMDPcMNNcQ000Qfji88+SSgeOOepUd906 Siytzj1RrbfqQFC/kJ9A8gEEUCH10VoRrEml2lCrTHG0tXrpBbSlRyFJq+yBL1WsLErYRnbsgsEO mCHdQlFL7YUX/m2QRLN2q+K4UdljjwBTNQ6PwVt9pdWNlO+oVlh5xaAWXEvmUMC/SoqQQ1sA87uV wQNjZTBVCpN35TIvEOKRDwpODObFqF1gCSw9pBnLKaOReRnvvPdQGmqv2QKcMLNR4zJvvfHi/9uh xhizKDQ62ybNAsk5ynPPCywXdDnkK00YPd1x+nRh9zA1nqgl2poRehjV319EGWnU0Az1qb1RIWlb CgD/t5GLvCpiRWlbgZw1tw0VxUt5i6CxBhQhDCWwblyClQY8dCGwVYRb/LuCt1I0lQBMJSqJK6EJ HQc5GXUFczTiyhEyp7m8gE4uIACdvWR0JL2IYBxXWdeTrGLCoBXMOrD7X2MUOMFlySQSmzgNLJ7Q AT3tLjWlYYXGxqQnWLwCNbCoxTVi8ydB6ekXgtrNb4bhMiSwERnCOQY0jCMFbSTHGnekBi6uYY4U VGcY2SGAIF9knSYkLmnzQOK4rqQ1QQDQbP8FsU99MlIQjXwQBbRyCKx4hRHCla0ij1zMYggYyvcA zoLYIlYDIcjAVaYEQRRK5bCqBTYN7GeDmHRPITZpkPbwDz8pOuSKrMI4xpnrXJObV43YFZYZxuBH adHcBHI4zQlQAQRIkstdkjQWrQQhRu7SSo6ehI6/zMMw+lDMLYFlE0W48yMS+hLuOqC7K+rOi6Qp AicwhjEvlqI1YKxiLWKTi9gIijYLcKMadTOo6sFxN7nRmTKOow2edc8vuuieDZJTJQIARpCa4k49 spOdJmTnaVAJT+z+p633WIQE7cGfRRgCEfvlkqawasgu+8MQEFVSlKDk1USCCtRdXmSDSAX/3LBc ydSlurJZHJLltUCCiKFoq6dCHeAk6SOi+4DrkCZcIYuICZiqPEldNvpKWYQgFrZozgogwOZb4vqv aibJLXhJF4zWBaMcISBHVmkdqWB3pXSK8mGIZYxjNCCDlHzpFV9UBRiNF4vUkMYym5DsF21xp9jw 4k6CEkbLfEPaQPUmjsFwGc3iuKhlMLQXPXOOz7SBDYtSwxzcq44gPbod9DUhGh7tDj3ycQCFEGQi G/mHCzwE0/1Q0iK4tClDkBKRDQo1PoTzKSff8yqjgi1WBhFqBmVF3uqeMpU5Yecq/eNUt0HIQTgh Ct84JAO2VVciklzIQ+rnS0yyah/gmceK/1ZYlbEGdmAiqEoMZ7SWsHDFrdvE5ufqUhe6HkmbbdFm uqhjI8BS6jruWNjrXsCEWy3MGUxwwSEUWLFJFOE0r+jiZO2UigukwgYwjmwVT5OCIpARFwQFMqPc uAvmsfF501NtbnoR0dPiZo2QWk5tuaccRzmqOkFLxwKq86l1cKdF6vtOqOwjn/fkVFYdOup9HyLT o9bvqEfZZHVBRMmhSgQiE4GIfbkEkjVzqc6L4eB5A8dO9SYwvlKtSSojtAigyMAHwDrKwz7CGIo4 pacYmQFMawWQUHl6XCYkplXapQ51JVhGCS6LC9fSFR4tyS6Y05cVikRNHeqrADkQpxBqFP9OGGGF YFMqWHnGI+JiQyDFLmjMIoIFJtSI6RZnDKgq6lnFgKLR2lIgMhqngQuZMQ+NNqMZ9hyaAprpZhm4 kehFneMN50RZOeXglItetKkuy+MGBKhH03pbDwgMpJfbiqT+HAIUD/FUz2w276CHkpFa3teWbG4I LgldcKTer80QsWXDO2TwPrPNWtWKalQ1ZK1r/arkNEFv3/6TwaDidx8CCZerFiJAhjwF5jEn1w1Y tHNRo8us4XTXVwSwo664sIZHsIKQ1gICLDwzhyWg5uhwPRd8Re6b4FzdPNxxPqcBpjzHLoQREvEg 2z1A2kVAAmpkjEa2tz0Wv4D22mPD0IT/+oI3IXAjG2lhbjbmxqF+4sUzDMMLjipHytzILTgEBtxM VUcJvb2Sb5ughHx/yjBjRk9TfnpdmvLn83oGveeV2uf41PSlGgQbBwW98A3+7ZTm3W/G+1zViFF8 5HV74KFzr+hZhgRDpRdlip5ygK6iKFzccorOxWpMeAB91OLcsF54BFchac6ZcWU6Fbaf4anjZRwb Dj9h2mGw8XtzSsG50iHg+0TbAXTtRZAxGFnWRfpXkf7Xvv/KWCa9QEFP3HlnPX03PX83bsJRM00W AkFQC9bQbt2TW7JFPldhMC6iHZ3SBBDQBCKlgRxYKv0gAf4mQM21EZk0XRxXcPhTXTyF/10L93oU MThVUF8ecXD8oXAXQoMrN2gf14Ln5TeohEq6ByB6M0tECBEyMFM/JQH2IBDeoiJfBS6tohRMARWN s3M9xyLo4HORIzkuRC8F8CNKN03SBAJM9yPSRAVRl2F45Tl3sSRGhwBGl3VZQX5+4S59cU7LoFiI 4Fi24whxhxqnQRtyZzz1FwJW1AG+8Ha3kCcNtTN6Z27VszDC8AKrRVoEuFrLoxvrhgAXoA3VsQtB o1tbNgzvEFxNo4H40GX00GWl0j6hgh64omlZo2mD8yrxcYtIMV0yVUnQdXCjd167JINtJlMegj8W J3E0OGjUUlWtJ3IhV4TQKIRNNV8F9/9cF5EiIvRVOxdWX1U2AhRMKHQDB+A4PkdMOjI5cbgjbqE5 aqE5ZhhXP1IASeeG0mQFDDZXdqEVYwF+5JAVffEkWPcN52AojsQYN9FitiOIvxB/95d/PWB/HbAy Dfl2v+BGtKFQx7ELvaBQgBcMuUGJNLMDEeUycXRk0WAzzZEN0jA05BMN8dA0vrWKXcaBGgh2GPiK /iMrEkA4mJZTmKZTP9lTmaSCGMFnVmVLE3GEjEVdlESUDmE/0VWDNqiMv1eVhcY385UghuZK8NRn G7RfJFB8M0CF4riNVLhCKhJzuvJVaHmW5ZhgZnVq+fIV+MJgscaOZdiOeEEveLGXXvj/OTHAj5JT fljXJALQFwNjToWhWIxFIe3Xh46wf3pyGm33h/dXRb4gd9WGRnbHmW1XUMYxR9EDR+b2kadVmk3G DD5TR9jggN9zAQiAZRv1R/WgHR71KRiogeQyXBloSBnISOgxiz+lU981nE3JX72ki7LiUmyTLcLI Z3CGlIOjcbwYlSuoQTxYLT+BldPYnVx5g5KEAk0ojuMYVmJFnt4BHieSjeBCno4zD+gCl/HJYOi4 avRyOe7ojk53F1igdEmXAXupF1lhdagzoF1Rh12Xh4VQVV7Sh8yGf5WJY9dWmStjkYkIoQb1C55l UNGQd3ZXPcaQKNYDkg3lWq61M1TG/xzfg0ejuA6E8VtX4WX3UA8ApoHjcQ+FgYGmojUA4W9lRlM4 lXFyNoMpmIIWh3DltYPN6HGTpme6WD9H6h9WuZ1zIyDeWROt1EQpFy3VyDWSpI1SkYXF1HNL84TF 157h6Hzu0i6ili56sSQxcJ978YVx9UxOFwNYEFf+2RV7SQ5bYXWnkx0/1I+EwQ/qBE9x46CJeqG+ wTKihX8T2XYWqaFCQxtjpD2FsjzQ4Eal5TJ+twOVeDOSaKIn2RyTMg3LYQMEoJKkuA4WKA8wuQ+G JKuLlIHEhoHr0aNN8ALcMlO0F3qN2SXQCTjFmFQ7GINL2kEdhIyERoQNBDfGEhPMRv8xedMs1aog MuESWWoskCFyByQBIsKeoGYPVshz6aBCUkGeJdKEu3muoVZg6CCXqNaGS6ckGWCnanEEILB9z3RN efqv9pgB8/inPgROZTWQ6VAY4OFvjoRykNkIjCAT/FehCWWReSeZ9JcLlOqojsooGkkMtVEMySCA M3Nk5kaJIEmJhjGAmlpHtdA9zAGb04BbrkqK2iEPu/o++2Aq9PA6r2gqAZErYnNASqqdyUqVbZN7 rXdBGIRyW7lAj/mwD1ut0HoSEqKlRlFwEMOEZlqeisMiSgCvBHOu7blz41iF70owJRR0ZsWFDDZD M1SnNfR0TwePdtufSoIvtxY6p1P/fu0QFWKWJRxhLVJLMZBQkUN2oZypkArVdhz6J7yRPbAVbqp1 DEiWGwEwPSJpbiJJeKQamj3TPcuxqnZyHMchiuaJk/oANbtaWDnLD/oQSRvRcLlIcSvXXog2pUpr QXTzeyZnaLL0tAOCkAtSuMabrckCBe6kCEqVgzfIVeDKll9rFWS6OsV0rgJwtui5ts43VjZyLkEX r8l0dEW3I/b4OXibQ/CIJNuUtz5Ufi6SsN5xIuuUE1L7CGWXBYKSUDZgiLSwuEKDuMXRqP+7v8eh d0X2MsTAsnZXkubWBJaIgaRFPaFZRxtVGzDrC39kuq66isP2Dx64s6s7YjeqeY+E/12xUrQkd7sp J3J/43vOmrRZeaVWaiBUa7w4vBM9wVjM+BH1xVj3cxRGaHNcCy7rY2DX+5YJZoXpcDhiqoUZYL3u QkRsS3RtxWAxwBX38mqcU2EMEBZ5lRf9CA/WgR4LykSF6yBQ4BONwH8HlYi0ERsWaaGcmncaSWTZ tjPFET0b2aF/16nH8HcQ/HcrK2K8sQ3gMwwEUBtDo8g2Kw8zioGN9Iqv2KP9ADsfGEm3ZIxSenLO ihLdOlXPSHq4Ny2qxFTNYqXbmsOsTK08cRKQFoMPY2fEeHF2phEiIi5gRWA9hy4FSnRjS1YD9sRB N0RBNESoc1YZYMVioRdu8U1s+P+mbJFDeuEOT8IpYrYrNsiHkNmgWTAMv0DAeULHwGGRuQGhj2i6 fvwbbUSaBYiJOSOAEXVizICAu+EcG2UNtWENj9zBw3CTOyofUnPJ44Gr+rCruqJJslfKfXNoBOKY xtK0znt7QLiVdoOlN9xiiVq8rdzKjhVfD3GEPJk/2LUlRJxzu9k4bXpq5djSYWWOPxef6mKOyWQw XnHTTSI6BQAOY5ED4zAOehE6BSAAEhEA5HAdlbxLBhlLBzkxK7HGy9YIlhg9dWyJHupZN/MzjPJG lVtaReYb/2coiHJkxyZiq+UCziBihnI93AYpVLbV6vxbLlkYhaVdByEqIGjQCIH/XAXRIewlvNia cq9HLDfhtJ/8yhFkrYptuB3d2PfrCNDyET5gQEUFSjZ3Nbs5YAfQpkO3TO0isGxKdMushakzMICB AFFcFYT5JDMyRNKXLuEbGOR3MAUBAQSjDmas1HcWIGZXFPmbBUhAPbNRZG/cJ6elPSWLkQOYwOw8 R89zgHA0koaB1sX2RsVhwQ+IC3fkPcdBkyGAk2dDCC4gHoVAbFjyD1lDXWhWladcO9pKpYkWOA7N 28Wy2HAjCVHr2PqN31WLE7MMSUCVEJitc+WJxFXx2aO9LsvcLjgiak9cTlgXqBEOTvQZl/Laj0ed DudwLoTZdQUG3g0DKz/ssF/i/4PQ8kRdbXejdQzBgAx6l9VrlGS88NWWSzMtvlqHcoAtzlo43uNq vUYwg8hVJrrctsjdvR0h0G/vA4LHNQi4wh6jEoK4MpzV+XG4i9jIIkEO1Lu+m2gYrdj53X753dFj 7tHUWrVCOstNPkBq6VVfy8SjJtod1uA4ctM33aYb3kLqYjD4Aod8AU6inUyj7bda53VUIb/XkQ4M izb/41N7yM2S8QBL1JWLSuO+8YgEPNWAR9YlaZLR03eh6XfJgCjHwASmXsiFLNY6/j3MkZLRsAsc KJM5ismMpBiCMN4FZMkf+OQ72Vyd1Ky4W7x8OMMPVMq8296tZN+Mvew4XOb73f8g2Zq19cUR4h0Q XWvE4hhqvbwuCn7TCG7nXjHFcSnTfnpqVgeoNJIOqHaO4YfoiL407QCfAoYlldyjG8FY3hzpjflo j5GoK9MbeiczRfbiYe0LBBhHI6taN+NQ12099Uw9NENip17WkvhGJ8nqjTJlipKBOBt5mBy7wjfl qgI7soM120I4uFQQtQd8phw3BXKV0uKMuvfeYM7fHE3m/O3sjY21ohyDwkd8aIo4VFhgxITgR3AE 4B7unw108jnFZVVO4YR1CJbg6171Y/xNiQnvguG3VIEw10HeZwxp9P0APkACTLDU/Z6tmzozLfPH mo7wpgWJzk09h6Lqa9RazsD/ZKMZAs4wHjjuDCx+G4vCmtWAC8vBwfwW68uQ1FnFEQSRK4Iri9xS SV9pSktpu1eqSoW9ewhS8/f9mDo/GRJkrRut38WSQB7BZnhmNuC42WFarsTEIg1uFTetFUgP7go2 dOIOl4QJ9eGkFeig+25LI5Iz7mJK6OIe4TD9DoWBKg1jhPTNWCqmTsr22yGwuQDfUJ7Kqc49KMgw Hp++snPkWkmG4/U8Pe5MM2lt/nUv1sER5CzpbnB9s5MHu7qiJeUdu7neK+kNCCQSEiQohoaFMlVV JFUaj5APjw+UGpKXlJmVmJqdmZafkqCgnlmUWaapD6isqKusr62ys62rtqqn/7avD1A+vb5QncG8 w7ibnqKQjI6PiyTPhRIH09M31DcBN9oCFtw3AkoWFkoCAhnn50fo5yIZIu0CIuVB5fX09e/57/Hy /PX8+gAKCBCAnj4RQdopFFFABIF3QQjQW0CQ4IsXEC42UjTpkgYZJCCIdBGSyTMZPkC5ChFiQQgk LZG4XDCzJUuXNmtCcAkhRE+WPX8G5dmTp8+fC0QqPcokqNOWM2sukBJUStIFKVLQxEpxa9ImAZo0 gSCWrEiMGQW50FiIxMUXg9yyfSYBbqO2KPCicAapr6VIkwKb0kQKWai/nAoXzqWK1qxbjiPTitVp sC5JUGRolqHByGYSIEmCBv+5+XPfZ4s0pNaAQkJeRILotpY2jeCBbAe2gSsnjps4CxnUrTsSo8AR 4evclesXD98+gAffsVsuXR+7fO6sF8iAoEBDhu4IWEDgsGKAA0ovEnr2kdnHkErjvzhpqViWFyFs GGXJ0gb/o//htJVN/ImUlE9JKZUgVVY9BYEUPgEIARNMHOVCfDQF1dJOGQZwlVcLBAEiQU20FNZY ZR3wFltv3VWXBIzUlR6Mg7hAoyFVoKDaIjkm4ldfHiG2GGKG/WUkJ4a5kollliUJiytQXnaKZFE2 aVhKpZFGkgsyuODllkysxcQLY0LjFiHruRVjmrHRJc0g1MR5mzbbkLNbN+n/JIdODOykY8UR3+XT HD4D8WOBdO6sg2ii2aFjhXFW/Omdd5FS6l0Gl4pwKAEDVURNABnZhZpqzcAH6llscaaJKUAVyBJ+ //G3X1H/iRRCADfllKCCNhVla4ZChUChSE2NZKuCVBHFIVRbaSXiVrhC4CGKTaC3IprPvODlXdDk taZ62cLoLV458uiIIyT8qG4yoSB5WDJEGiavlaXcwtgujcVCJWXGrFqJD7744FlpoD1D0pjxhboi XHWhNcjDcUEM58PT0FZNbrnV84054ujJKHHotHNpyNL9Q2gG8RyKqHQFFNcnOgVYEUNxR8hssxUT FFcppjELIQICFnDaBDbn/516VpqMQMMIRmipaCYkxUBhFE4wRWgrgTVFOGuuNCG4q1IMSvWghk5d 6NMOEKAdX6tRgeh2VloR1BVYC4Bl1sLgqmWmjS+ut9YgOb6GyMN5FcJMFSAhru6P7CaGiZBGxivv 5EnaO5gsU15GZZVSZt45FBqkhOVnoZ2V0elMQ1DXbRDcdoDEF6m4XlyCQCwnnbibw83L6gBKXAw1 e5wcc/7IY/yi78jscgx/PhrzzFjIjEUMIOQcwwTTt9zQdpcKkQGn33BqnrSqmykIXKdLS1BGhJAW ySpQvPofrK4KaBTZIZQY7IEcJjiTr1cBytrSFqa0TegiA0xQS6wyE63QxP+BQUhBBD1EkybQJCxm QdHd1GOjbZ0JLjbC2zNmEI3BaWs93kIXI0i1OMB4pF2Pi5woYki5etULc/qKUi6W5JjO9SsVtZBX MACGpaSBJFtvkVbsRHIb27xgGi84j4peF7GIzUZOTWziP/qRnN4dxwp5aoeilMMPMjanUdn5nTta 5jLjnIONxXkeCOY4x0kxajy9CV83xAeqAKhndVE0z/hAZRf3aGAYD9jBC3YQgkXiR23ya1WAXGU1 AEnlKh4K1gCt1pROjsRLivzV1ZbiNq40S0QEIEAFMRifsBByPvMhhI2goa0XoGAuKyIBCRkWQsDt hVSIOBwLF7cJxSADSDP/rIRf3FUZZOSLXrDwHA8jY7kl5TCHh0QG6ALzkfdowHy1k0bsnihIOUGM LlS0WG1qYx6TlaNPyLmOOsS4HUWJ8RzAued12hFH49QzA81j3hFAwLyZzZEK1QMBFaLnPDvKI5UC SOWhglCRJUZRJBSkybOMVj5HcEYlD7gJTm7SkxLlKidYk5X8cFIU/hHlf6Mkm0jQZra1oCVhwNoK RkvJU1AlaCzoQd1cwEkXEj6MYUiFC8MaNpfXPGNciIsq4yR3pHaNYoZAamFHFtPMedVwSpsLaw/7 1YmsAuab3GKY685Dmyc+UWISo8bq5lSx1+WGThqjjjlgNjwxPscCbtQU/8y2Y46R8TVmlIpUcZhH UOtRj6BvlFnOtnOoGLzDO/JICCEFKYCIxINTFLFNOlEgg7yQIgv5s4n+Upu/nUzypPuJUGrHsqGW WlKlA7pfas9yq6PodCfA1WkpCZACVY7IbkoZy8IkMEsYGc58fYMGxETVpqcSlUekVc1Hh8nNyMVr mZDziyGRKSQkKYleXwWrWNc7mcqh9xiq2Uvt0rm6otk1Tm+6wsTkpFZ24m5jWxRjNwQrxhioTGSB sgCgZsYo7HCvoZi63vNyJinvUI9PLZsjht84WcwGYSIVCQICJvIQiHKqUxmRnY7SBdIIlQg/LdXP SzSkUgL16sYsKVGJfv97ta65FrhDAYpJg3IqXBnNKxYEkVZSgIDi6vRUGlzfwmJDEjYx7Ezm8xYK EXEI6z41NR9dTTc5M951dfdIfiltX8rsQlJwNb3+ghJ754w5IE5Gh1biZiPQWrvYYdFib1JnXbGI DWz8A8AmUwg3jMMyf2YAOJg6x6PeKOmW/Wlmj7ICHbdjMzhmGAQWJuikZmbQ73S2UyH6cEI+7BB6 gFa06iEhanxxCtbqGAk7jgpu68c1F+P4QERBkFOCUiwHNdJ0N8WoT3D1P5rohyaqJAACEHDcPppF PmwyGDijG5u8yLpw4L6LudisiDBDgiNanSq8+qKjdMNLmXCeXGNw8Uz/Ou9LX7q43DQzMQzvxuh8 grArbQhSaHNarGgDz0YA3MnwlK0s0vb0K6AwdQSR1SyOitXeGq93jgtv58IxwAIVSI1p7n3H1fQQ 8bQ/PO1WS2ThgmQfi1MyjPgtQMYLqBp+TIrSXlHFVcampI9bWiwBJgwtx05d+nxlIKj0r1nFZbKT VRmWCtYtYWfZFpt+mbQqkgQFJIRNtwwnXh59E91of0S7062M7gaJ7e5+c+dqaKV559DedYYMvdUb TXiv+YioeUbr1FMbbKxTimvFmASyYY1slMPxzemHPFSWHew8/DqOsmw7joAFEEzvsTKj1GNDLWo4 0lHDoc9HdzKbkO7k/6AAIm79qiO6PmuJqgo+EEZ+ZEwgntMqVq1SigvGJNscswRXVjvWsXRrwFDO FOkKitZQ2nZzaDeZydS2gXF36sqxnGpFHkya2gunFmzR7mHdbkSOTuOM9ZMqqmI+K9zR/Hatrntd /or3vIDId7zXgnPRhEOEsWZdJl0kwDqy8ybrtIBYhDEEZ2gCAIENhzLRoSngQXGPBlD1tB0IZmnX wzwZljMTMEfK408fZz0ZtljFcVmBQh4iVgAXgBAshwCvZhvpgRqqAjqUAAU9IWNNgARkoUgXUStI AXxHAUkjRRMyYTrDFlOnY3QucBQGhHVKQUHMUn0PFHXTBm0UQTdgcf8rYyEf2kIColEFbPEiSWMm rtEaWNYtgXMIr5EaitMe5sJdfrF2xBQkWDV/6mJI+kc5T8IY+7JeUiKAnPMJh7MI4XY+6DFFntKA TXRwBxCBjOdOC8dwz9FgyMMzbzRxxhFyVoAFnXd6CTWKI4h6n0ZQmrY8oRdHmDKCE+AdDEAeBTAB OdByLkhRhHQ0ZNcRUwIFO5ZrMGFSM+EfjJQfbJM1jdQrtMJSMmV0Z5MRG3IhEPAlGOF8TNg1FMEh WcEVcJMV0uZkddOFYIFc0pIUuSQahJAX8yEXbRFObvIiT7WGrqFLe1YuTrUjd2EI7DZV9uddfNhm j4BIlcND1pRvcab/dz10d/53iGXlXXsBh26iHn5ERen0RIPmOnVFNDBXaA23ECHTcYYVHBsIKMpj UJ4ngo+VUFSAUDlzeiQHWR+ognF0PSDgPC/IADnwMyunagHAVGyRGrlnkC3BezcXjLvGUgBSIDyx SE9RSbAyFEE2U014QMWGIcDiWjdnAylgA0GgH0yWSgSgfeDIhQTRWkf3FlUWeGaCFrS0joTQjmoI h4LDZWnoDHtRh2rXQliFJKNgVoujCH5YXl/FJHN3QwwZiA2Zd1/lb+0HXXA1Da0jDYiHeHBSDYVW aJW4HIcSD4wyai7DM4ASM6MZPAAVcjNjPadIigR1UI0FkwZlUAjV/zIjqAAxwADe4Xqwp2o+GSp1 AQ0f5RHFEFL54RI8BythqFI/UUm/Ij9KAUnDJlv8I4XKh3UFIkqW9Gw3941YATfRVlzEZVyh1QQY oSIZYVPMhRrrWDgtEo+FY35uQpdcto6KSGZK0wh4uJdtVkyP0ziWkJ/nphospm6FeZDwBoh1tpjU pG/vVUzcJAmcoQigkSNwEjsU41YLSDHnMRAbow2XSIFoJA8RZoIdNzPEISnME2F1FIo22ZKqSD0j R3Ix4KKs2ZqnVwI3aQUMEAPTVgC3yJueslQncRKeEAyokD/64R/GdzWSJFv4E3RsUyBoI4X/4xPX SGyjFHxU+HRW8f+N3kmDWBGeUUd1F4QqShUbJFQFzlU4aWgm8oVCsfFvOnIIAioIv6R+O5KX8Wdm 3/UuV6Uu7aYjHmVmBTo5hNlM8/YkCqqo12SglHMkehpOg5AXFCOJWKRwHAp53OAc1pEdh/JG3DNx EKc8EXaKoBdqGJaqIEAcrLmSIICjsYhYCIApufhhhGSn5tNNjnqk+YNrvddIO1d8wrqcyygUv/dj zClbN3Vs1UiF1GmduvKNF3B9TdZk4plKC2BcFuQhthcxjGBUsjakgvdUlPqOqMEIOCJmOSKYzXBu qQGgWfV2ReKgAck4zDSvO+QJxoSo17So5yVnmsOYzASRBUipg/D/Vhr5KU1kaI63DcajHAthPJ4J HP8EcTUDKaPJMyDYUJPSiidZoyipYd4xARPAAAwxYgIQIhRBUTKXJuUWOr7IC7bQq7n2q0AxpUkI IU8abE9ZlTB2hDJ1LAgjQFJ4nVFhA1zppdMmbdY6dRe0jaHlm+ASl+oxhovQJWlhCFtHrl1XCDvy I4YEoO2mTC40tsdAGPVHTOHVDH2pr8KQr8ckOTv0f4m5qP36f/oGt2cmqD2SF1NkV9bATtVAcIOL aN1QPPXwEO0AHB1jcmwUPZEVepPiuKcJo6K2kiCHkv00M9vhM52ii+YhO4XkTZoROr0ABUNkY05X K9FYYyO1FECH/51LEbRqs6wTohRhMnxROLscoiBRIXVZQa3TtrTYl63VVi1K9TAz0DfrWAit0Z5w Km5k1iNsdjheq5/16ot/Sq/1anZs94fytqD+6q+GmgyvgSYLg3gKe1eUeImEshyV96l3FJLswEbc E5vKI4o6M5OWCzwjmLmUIoKTSx4/gxAFsT4eUntCaiaMgBK9wBk+IAP8sVrJGCvEGmwhoEj8oS3H knzPiR+wAsJOqTZYekDUyEhbqmRSJ2LTigAX0MLWOm1Om0rd97dupV9w8W31eLAvIpdKA7ZsBgk4 olVzCndkyy4AOX/eK6jclRhyl17jG8ViNa9C7FRHZaENSCdFg/9oy6E7AvEOkBZx8XCi3NN502Mz qBdyo0iKMQmCkzu5ECEiWxhzUmah0yUaoEG6Eux7VtqctEIhTjo/N9sTP/uExHKNINx80ni7s+sT wxch0GcgXvEg3QmWLizDY5lKxWWtxputJxIW1FAt1RJokwqX+qUi7SmX5SaHivgja/fKd8iP2Qte rBGvrrxm7fp+gcEJOghn9SbFwDxWaAsvYkcXkhongYs7mKobW+SZz2F5lYcohhWq3uF5JllQdLRY m5bNccQQ3hzHBGGrglQRrRMqCWgXWwINJKEZymk1U+qknVR8N6dJU5o+XrKlTjlA8VFsPtEURwFj 6eM12okVIpL/FS0clmQ5vGMKLWJxIkA1RUv1MGo6TggUFxqRrnpKvWE7p/zI0XPqvHmJy7PMdkM8 f05MkAUZzCo9xfRiJClEfl62X9ewDe4bgcysV3plPCpjDtiBedXBM5DSedpMkwTFuaQWKAkhg3JD zuRDzggY0XGpbekMEqw7SigsrGeDEVJKrFrdrEE7bGjjlI4shZ7k1RkMIMnmFUEgBXCTrSkwrQcd nk0mAgsdAEownqAC0XrNNEnUBMy7HnnjVIHzjofzyiBdl1wWX7WMvYq92LnMdti1XbT8bs5kZ4q6 0pgdVofZDHJYzINjO4xHcJfooQ3HcAPmzBC7T/ZEkhoHqo2C/1nSMauZ1Vk+Cbp+1EdBZXvl+Ra0 Q4bgRNWpFZWVZISR1BMugDbv/BMcfJW829X3PGxFV43DlzZFqyBcGiLfyJUyDKZMa1xi2hUkIkVu dR7Iu9dttUt2Ea7gFG5xuEJq1xZXe7UptCNm17eLzQySbVptJ9nfqxhcldkA3pD3kmeLg11pGJmB u8UPyKH2gIn18EYRiykHwSiY8ieNck/wSzyDUiidNc7kcxtL9CZJ9DpElaskwBJVA3Q1huIvERM4 oS3H7RSKZFMeLFtokxRfgnXTLd38jCG+1T9g6UDE1WTdqUrTZgMUFG11EwAEQCJkUS0n0kRu9Udu dbB/hJ9dxv+G5wrf6JrlrJyuPGKfpJU08OoX7OGuj2AE5UXLT7wqAf7mc1aIl7HmkJAu1jsxDyNF 0pKw7ksQ89DMhKLhQbBP1SHNKMMbYNzTEtvgKQdzFKWLgQQqPMzbeCNLvh14LvARNyETCHLWxBoh w3JSUSiEx70Wpn67Hox1NEWVxPKcrl4gyea7SesV4MhkQqBK2KfkxlV1NExOtwEWeU0NGeFHcHEF B6BcouJUXiY4img4fevsPKJ+e9Z258JCsqy2y5RMZzskdBfnAp6ocJ53h6gknwCQV4tObwUnCi5F iIZomppoOB2xe3U8z+EPD+4Oh9KZHN7hnRJiffTvSbUi6QP/S01FHyfe4sNN3NTdSMfYpEExpSRc W5uEFl3NyF4d3dZpZE+HFc8Wlpt8AeApw8YrngTR5OSJyughFqxTNHAB0RV65e8J31qLNJxdhz2i foId0ooTxHz6QuArb3UrvuG+0vbyqPeHOGo4X3LygOehmTB3iTVtMgZRgQJBHcyhHBK44f8AcwOh i7bdRHVsLbqddblkMNpC1S/A6fIcfBa8A/f8Wg6ydK2ebBdyz7Fe1oqMU1q5FQONFReQrREUjpmM 6yQP7EDV8seeYhi554gPRUx0ND1sFyv2ZediSNWufuey5SZ9ZvFqTQ3qTPkGsJc99KT/GPkSt2mG 9FsORX2D/5mauTF+3pFS/+cQ0Vn6sNMW+MyPV9rl8BC7bxD0cMAJbB4XYW0IlB7p8SX3zASIk8H1 bMEZXCFVAwEw0XwvHiEaTMjVGI0drOOtTrsdTMJA5hVeOdDYt8kiNqZR18kYlNflzDRiDyetQ57F jvgTI/C8HQ3P9cM6AggyVSRVGoaHiIdVMocPGo6PD5KTlJWUWVkPmZackpmfmpiao5+Ypqeoqaqr rK2ur6udl5uWhoyGhYMkKCQSB74Hv8EBNzfEAQICAcvKN8rJ0CIiC8lBAtbY0gIWIgIiGRki3NDR BNvd5OfJAdIiQcsBQe8BEPT19C8vBy/1EP7/LvK5GEhQBv8NJCEWIAwhRQqTEBAjhlgYcUEICBcz 7oCw40VGfhBcXPQ3cuQ/kycxkmRC8p9KlwtixkxBc0GQmEEIIEgRZCeBnARSELBBgMACevYOQGjS b98LCRCCSZg6NerUK77y7ZuKgqpXr7tIiEWBokouDYVuQToERdIjQ5Miyeq0CZTdSbTw0iUVqpSp vrACCx5M+O8lvqdqJWIkgxevqfuCaT0gwJizdcgqp0t2wxq8bM+sJUP3LVo7b+LapRbnLQMCdDmv KTt6tN4LeJFv23MZ8oULJgRdyDAIcQfEf0weRmQp0WLHHSKPa/To8aVKlNZdYncRsuVx3v4WQFjA kyjNFDP/eyLImWInAp/ojzJVqpTeAaYS9EF4KmFGrxleAXgFgDMUiIIGjoU1VlhVlLVIIYlEWEkk FFLSFhStkAKLXodxiJgod9VV2IgkllgKYhqKYgkUtuDyYC/ARBZMMOts5g05xECDDDOygZaMBRnY mBo3QHaTWgYFIFnAkkAiAA02n8EDTz9I7eaSCyT4NhANJNDgw0MdSfQQRscZN6ZxF20Uwgthrumm mhxdBx5v2/32G3MpfQfTTDUtYEN8Qrn3U6BDBWXUAk0EwBQ/SjGaD39UzfDYVAT69wIhaCGIC6YH loUIhI285cionMhliV0ghpJiX6x+eGJes6T6l4kZ+kXr/62DjRLXWoyhNQhkMwZwwDLFpINOMuaI Zo0IP80TjzIB2CTAUaghw+wzpiFpgQAEfCNEATEwcEQB4yL5GjLypCuPTUdJOaU/wPkzkG8kEESC DD5EFxGZ0skZgpppepSmSGxmFGeaHOXDEXcbwetPwyEBhyeZLE38j0w19bmTn+3R5JOhhiJQlKJN NPHCoiA1sQ9WWE21S3+U+hcQpoIkYhYucCGyFiSkznVqXrB6gqonq64KtK56zYoKYLjWheKrTUdt GK84G8ILgBJcEayww2bWjTnUcAtNtz2+Y3a7y6A9bbTMOouMEt1awI04CCzJADgZhBtOAe5481oQ 0mCzbv8//QQhrz/0iqV4vSRoIANEFEnX777SFcwmRgX7i9JGG4EUJz+eGzxSxS3JG9B45P2Jnurk CdUeAkS9F5RPIguFaKKJnqyV7vpAWiCMVPGSuFnEK97YzaDmzLOoPnMSdNAfIk00X0Qf7fSsGjJt a4nUhyh11K26xWIiZP2XtTDBFsNjNdh2K8JrgcezjNvutnvbPPcwA7bYIhQghDTgWJJqAPced7hj Pev5SbQWeBPECUQsWFqcIGQgkiZIpDgkkQhGoJMwNfmGc9UxjkoAFrCHgYRhCfuNd0iHJ4ih7jzv SYENRLYT18lOJwi4wHsYcIELEGCBiFqKEJmyKJWZbCv/MMvPVgDkD7HIQHFmIUQUG7eLqiWiZ9Or XvNA8TShOY96e3FaF0G0NDJyLxUp+p4aafEWCEWxKwAKVteKMQzMTItb2kDN3+LxDpv0kV3vYlT+ 4PGMzJjDAgUg0mlyIo26FeA9kHwP4NLFLpsAxAUSwNJAGGe86BgHCRZJk+j2tQPOxQk6lzOlSrjz ElY27CLciWVvSAcBWrJEOzKZSQ57qBMd0hABDGCAToRwgWACswA6NErJjniyqAwxKkec0VOwcp9f QOUpMMKm4hwUoQPpzFRZ1OJcZKUqVHGxeZUgZ4i0WEbtrfGd4JuQr3wlFqoMY0bFWt815CENvvUN cO5Q/5c8omUNtOWPN4SskTmUEbduKKsdS3pkDh6JgBxEcj0yGY9LxAIS4NgLSxSMCCgp4pEwkQkh ZEolR9Y0EISxBDooBI7BVMIE3/BmYswZ3SsxwqeO0YSHDBAUAoTwHqIC8z3+E9kPFZWffwjyPlGJ zFKk4gtF/QIC+ckHPb4ilgZFSELgPBU6EwPGoolVFu3kYqrSaEYTuROea5zE+HBxiwbZc0ZyrAxl fqIMdfVvj9dw6D/hQY12+WMZzlRYVKR0jWThUTSjoegFIlpRiloUkjdhl3Zq+YJb/oZeERRJmygn kdH+62AeCUgpL7emhnn0lhmxCECuw1p/raR0F1tAUP9SoMMe8tCXkCSAEIKJzAIE9YaIPZmi9APV ku2DmVF5VH0W8Kh6UDcs/nEM8TwFoVExL6wTasvPEoM9EUHvrW1Fo19cBdf2wlUxivjV+eQYDGNk pq/p2mfgrsHHHu3oWQbtBz/cpQ9moKuxqmmkPyX5nhyo533quUk8LmIR2Q4EXiy5VAQpyCbjeFiD EUETmUY4HQ66YCPcichAOIhikJREXvyoWHJk7DDVXichQYmdb3dJzN4G05hJHdkPY7Iopaisd859 lLDu8RTlVkkfSvQKpMJClrVckXnoTOfUksY0LZfzFdIDDHrdW0Yyk2hFLnqZV4KhtWFZJjN8nAdA v/H/T2zsMyd4dtewuta1ZfT5HeZIlvsS/DcCBvR1mcVoTOZEkIopbsOibQKaRLlBg5WSCSD8CEwh wqbfQMQiwQlOSPQUEhujJDm1dFhGEvKnobjOYzl8TzF5CEwGUJSoFuArbRTlzCS3WYj0YbKS8RFd fTgXq74InhTfAlYsZhkvWw7ziQ5Di/K6YsxmznbTVAVfeiYxRm3OEbrkEdgEq6ZbgNufOeTnLmG5 q6+heQce3+Oav73m3gLlyVEk7BIZO3ogw1lc4zSgr0+TVpQ7wDSmjZNKWK76cKu0k51Uwg8Uaikl FQtIcjr36dRxLIcE6G0Pc/gEXvIYARbAdVFGhpSS/ylKWEY8NlLuQR9+IIpRLw9GyV7QFf7swptW A3qonP3sLWZvFtJOr/awre2m06rbaOkKpYCFPnfZGaDP6Cf8XDMNaPm53VLyTDzc0ay2NVI1d+6J QKOlWcQ6rJYzrmW9KEjB4NzLBZHDYGlFW5yLsDa1q2aTTRGGnFTDsjsxLvVDSGcn0qnJIjawgZ9m l4Lf1o6YSgWmUXWS66LMI4jDijnJcLdM3NUjMomK6lJejpuvcEUCZCGLV7+Zs0bQJRNyOS+s1qqr c2ZvvU4P/ju5TYlu8gJ4X+FzPaCFI9S04ycICEeypNTndn9eAPA7+/semeCCUtImS3V7vzGsQo/K IP85MujsQIBDAxqEQNJ6n/TCMOjh1T7HcjAttaUfzspLVufCt8RC5Yc4nxZ5QkEUOHRRDDBcw/Qe FoByBNB5QwYPKjNVzlWB9JAorJcoRqaBw8A1ewZlktEy/RF7VSApQvdVogJePaN7rFJeR5c0sSB8 NCg1ukIhPlBXb4R8d7UMBUYO3WAtS1Ju3/Aa3LJu1eBH6pI2P/E+koRnTpgNTlhn6xITM9dknIVq EjNj5ZccwUEDTEAcpSQ5arIQ9VdKDXNiqIVi89IRB3Njs7UfcjgSXZhqA7gfKxYCkpdLNLFyDShc QgCIQzVUnZdrdyQfVoVXfqZzuOMuKlN9B2AOjVj/VSqTNcmGgp3iKZrCbN5VIWJle7enCmX1RenE dLVSg6gIClDQFhqQg47zKQuSfNVnYEAoAEiSAcsSfQXULWDjeQJlFAKVfW3TLUZIDfykLvsWYPhQ XeXXaMlRL4tXSsIBhk4Ahqt1QRURYrW0EZiWMCwFQtCBYg0jeF5YSyiEMCj0dg5TUy81av4ASqwm FEXRAX6YeUUlMkQlBBKoBNOigYk4DMvEDy6XKD9UFPLhjxrYBMagc8rwiPnBFbGnKSloZTxTfBbp M9d2Xk+TihwZTw/AirYAKg0Se1J3Pl+3ZHDGGd4wN+0wN+HQT+7DdZAUOD3xSOlmQKpRaAU1G30k /35T8SgBsX4SY45PBBzDIZRbCIZgeEFxQmLzJzBrUh0hMC8XhzgX5oahdo5T+TBXyUqn1RudswMW JB4UpkuS5zrmIQRCcQGB6IcEoAQLoARySRvGcIF75nKjx3ZwaRQrp1sKSSyJIgAD+YjIhjWYmIIq qDxuQXSmGBjTAzQdGZluVQk+gAu80CAFkplYcz43sGdzlA7OECQ3sg1ygzdI8j9DtSTlon1chy2B A2GYZRSItQysFEGNczMQdC9O9ET3cpRPNBw0QEHBCYYGYQRg0nfb6C+mBDERYVOoNDBZqVoXZzCY RocP05RqeJ3VIVsjNRMxATILAHI45JZvGQBKMP96yxQsHMhrA6lb7smXusWXAVCexJAoneluVKWZ mSl7xHMWKrg8jCk01eaYYnQXjSmZCCqKbuE4D2IWJNkVUnEA1KSI+jQahRQN0mehK1mERjKFIvNQ 8POE6eJncmg8T1QFa1GZw7Giw6EBLGIEjjMcOciiKxqGRkAD9rdBsJVKf3cw9JCGDKMlWtKG+1FT b7gm8pJwb7hi17kfbmhBrFZhNhAE5nEoQ0UoRaFURQE3y7QM6XkfpNelTfCdBjky7ykAcMMt5vly f8mB1oSJmEh73jWncOE8alROB5qgesoKrRhfxIMgKDAD+sBm6HMbXWMjl0EO27ItYxM3gMM3APX/ N933PgZESe/gFLYpA6zoA5UJIS+qAUbgA0awii76kVAgo4xhBKOqqsPBqv8yhmSihvm3nNkJU5dz OhBQBXfSaAkTJyk2QubolallQiQhEAYHSjbwaYAiO68jMmTqh3F5A6U3epIxmGPaiPEZE3C5QDdA DeZwnscgmDAnFViBghCJPFaUmItpp+o1Iuy1p/C6IVlwqqDKqX56NQJSqPvANctHSP+1UEIiAv8T D/7UhM1SQK8BqWo3UMsoAU40cJLAIj6winK1iquICZo6rxYLBaIqqhQrqqqaBUbAaaN1nc8REAFz lTZVcc8xCEH5WaUWHDllOvGCpE1KHa3lERUW/xN7yDFZKju/RJ5bCpdKwIGklxtguhTtOZ9HIZvb ep4TWJ4/ZER4dQCHyZ+IUDPfNKdiZU7alqfxWoMfyamV+YqvqAsC0mb3NEgJZXXR8CTc8C3JQqnH +GB1Ew42EVD4o00R5KKsyIoCmgkXKwobiyHzqrEXCwWqiiFQQH9kEpa+ako21h3h6BsVRxCo5VGi llJ4orkQ0xGCh4dQGhGSp6zmEWuFQkxqCTcGCTfzWbT/GE1K1Ez7uoFjapDzqSjFsFR/uZCM2ASw B6iIWTUAKhcsOG240kVdFrbMqwks4gjD4UYO+h8zQIIy0me68Sz3M5rqAFkPWKmUelE94YTV4P82 +7E4G+Y4nIovlck0g7s9qGC4pmC4jSuWp8VpBGG59qswKEZxmuRSTbkwAfxZI9Ewz2E6gscPoDta TYCspYs63wlJ8YmPWvqW59kE21qJxjYswDC7pKetiFiQYkMsa7qmX6pzsBeRw4sIKIBF4KSRYFtm SxPDzOt0gasiLuoiNtMLgQoZwLBYfqYbXvduzrc/76MTepsu67Eu/oU2SZE4IHUvwEECRvAAouq3 ffG+JPIvfXccqSV4bpLANRUmwTFKiqdCD2dK7WiOkUsdL2u5S5EQehgTCeEntNEePkSm7xGXK4fB ClmezrVkknEfJ2NEhIUMiOhy3CKtvZuIJLP/FeWawv/ZbGE1be+avDRcw+6Fp773kSH5RC4yvS/T MsFWfUJMSPJ2I3mEYBAmD0ssUIV1R26XXFlid09kJ7fACBdyCvK7xf9yYdJhQfmQs/oLY/4nOjK7 HzN1OB3RjoI3L9L5si4ApTwbeZHXOkM2nhNMVFz6lrgzgY9sTVxzG8x0H+jJa0a2pgzZpp35iFdA FpRCFptIe1e2rlwGv9+TyZrcXuFUKoaAKRogRdMLz68HLGD3LPklOO4DFO/zvVHIR4eyQBLtTE/G BIwjHCzamxMrXvqsCgznAjTAMCjrEZKWD2EyzAujSm7IjaKWcCwhEmoYL80cMTHb0qCjJg1c/83n AZ8IKI+6pVR8zKWMDLu4U01X0DtHTcgm42TkHAAFBpDjmnMSilcEksL9mTyJOXRets9cbYN5kcOL ySK57CKO4bBe0XM/WR+ozF/7JBuBJRvMAn1RiBPsImHu4kzBhoe7iS9jawgcrUZcvGkehTm2GsZu IoenZEKaq0IGPNjrB3FsOHE1xR2Xsx8WNKZ7WCjk8Z1r6R7O+pYrZ56lN5A65xRHZtr74QslsxS3 o7Sq7bsz8ogSehX9kV1/mtUHUrzs2tW8/XRc9Ly494oTBHTFswub2Qv80RX5kw0FJT9ufWDeGliv LGE3kVluVxWeU6R7Xapy1dGu4GGsNZVsIv/MuiqWHRGUloOkNoVh5ghbNNZiZ3KdsHRhBHHeKDum dWzHVRoybAm0FbylCumm7rzBSq0VTXDU85EPO1cynQkMsl21bEYpJCApN7PClIxl1bM93t3bzQsr MXq2oLwI/xwWJJgVZq1EjIUtYjfEd6Sm6nJHmVXduIFNpZwPDyujzytecBXYXIyHUDkv4n1iwMyj z/l/V8lZJmVKlc1Biw1TGvekCYHfMkF5/v3Zw3VDoe1cz4VkumMyR30FR707W9FMJ7NnMSIMlqg1 kewYsqfDYBUqK7grHiKKHF7nrIB0jqCitqCbUkRlU/eTkHLm1rc2B4bQ3IJnQ8YuzSKbs1n/G4oF lPfSihPryW3RXpv2HDAFuoKnShzxHK3V6QPhBC6gqxgRHJmuhkLehloSUrD0WlKJOnsoefs9Q1j6 hyn33+g5mE4xuwDSZI/yk2adDw/JH4P6AgMCM9oFRZmiPHG+oD2D4aWIz3Y+7bHgyWU7QWPhoLV9 iTw4TVVrDGiqI/PDV55XFG2DDbwogYT1Ewbl1PTSqhtNv9LeNGgojZyzYgyXcJ31MJZ2YtTx0bLq Yk4aEk4encLRjC1NEjxbKOYRHzqxckrFgMKlpbSRKLeTH7kDZb3zC5tp1glymQVSgmRRKb/TFR/f bLtSp7UHoIw579T+8lPTim1Btmgh0IEa//Ixk1UDNqhQ/XJis2+EdC3wwO7gdxNHaFhsZw/vQgIT y6laTGaXfmL/4sbQDMxO+syq5SZTedIEUyanVN9ZeZR2Ui+YuxFNIOuFEijOagM6JBRXjnJF1Xlw OaYZfGQcOBm9IwFVoPdZ5TKwNxYPGvj8OZIRubX27MKHHytT4z0wX+fiJF7Mpgg/93MC8hT+UXNQ UdR9Vn07+Rnrlig7KRNrI5uHpfS8gSWOw7ETe7hmNoavStib3mmPbfBODidTz6SnXvC/vH4FIXGm bnP6XShATUM/G4gPOFwPyHLuWbR2TzLGFl1L1PcOS2UkycJeVfj/GaBFF7jKe8mN37w6nv8XgJu1 vtIgE97rsNdUjZJzg1R96/ZDsyHRa5OM3GJY++BUiINVtonRkw4IUFmDhIWGh4iJhUwhjTsuO49V kC8hEI8umUyZnJCdlDuWL0xMO5Uvni6bnKabOxCdk5idlQs2NgS2BCk2CCkECB0EuAgIBMcMDELG x00LNwsBTdMvBwEBC00vL00H298SLxIuEiQS5yTp5hIo7e0k7u0a8/T19A/4+fr6WfiE/g/6HQpo KGA+RQgTKlzIsKHDhxARPRBEcJA/DQ/oydBQpQq8dO1mzDh37gCEFychSFsZ7ZrLawsEBBEQTaaA ly5jLojW5CRKCEBJbDupjoQqGTJ8CMr/sjQixBChQrig8eqTVU4QGkFgAjQEqkyXMpl6xeTFK7Ou GD1yFXbHKhpGOU1ysfOXDV3EjHVYVmwZML7HmC1Qkq3JymkQsvk8KcGbuCvg0pWDh6LKSAlV3sWr Qg+FPXsH++3zJ5ofv4QGUSus6LS169ewGVbE97lj0RkoypH8BrSaSpjRgrsUkCvnNcMrsb2E4Pgn 0Uxxf44ikRTKxNgNIz3aHsoU1E+kVLnYihJS1q6szI4ym8rtpfCP3qtym4nGJPs0MoXYaWtBCl7D AIPABb78ZQwCy1jATC6GDcaTYciZ1Jw425wjDgmZgdRZbuxI8BlHnX2W0T4CjSZaaSWm/3jaP6Wx VhB2MMYo44yizZORBhtVIYNt8awTTjjOIQdTEAQEsRNO1xBHE0zKBQCUNCkBtUBv0LlgVEqbICWD EUpB0RSNhbgFlXaXmOWVWJqQZ9UlbMKClSWefKUJfZq44MQqq0y1o307QtIIfzakYEwvAxYzqBDK IKAggggeE4ASh03TE1A9fUMhOFWck2E5lc2jWTrzcObphyKOto91ALUI0EEEpcYqi6kJBOastNaa yI30eLSjbZl1lNsLQjnH3G9CLhAEkjhF85tLKj0ZZWKWcAWUVeloKYOXtoap1iXagRVJnd66MJd5 YpU5SyVuzmKVE5+wa6cLMvCpY35S7v+HS6C4XHABA7vgEhgDjFoAsGBKNFHwg475VCGF2rxwmTkg gZSZBp6ByFHFNmJEKkb7cBwaiamGXGJoI7da8mzZpqzya/lozFFHnHnU4zgSROmckzgvkAuRxMWE ZE/GQeBMpT9NWZa06UBHHVIaQNH0l7aWEonUq1RlFVdVh4tmVdvBkudV7G7iyic00BCv2WItsN9O geZCAKIM/AfML4wmuOBg0kg64cJAAnnSFS4ATlJR8HDmWcWcyVDxjSNmfA9t9XwsuamqovhqrK6u rPnmEdGG6zwY6jhzOqjwhpJJxgXXUpM495ZYLsomBtRJqySttFHVIqWUEdZBTSsTZXv/EolZYYkL bp5jpdKJW5iEh6YmpZRbitjsujuVuFXkRxe0O8G+ADOEFnNMYEKMHxNheR8wzQGQiUOOhZaCg85k KERcGcyiWqxx4yPy77nLrCIZ5UIWKxVlLkWcS6ACFdEyHzSNHhjqEQrIQTgXLAwlRcPGspSwJJdY AyY0id3sOJGOTZDAhLizko6SspFrDcJ3NNpB2WgQPVCwR3lWUddV3DQeHYJleXTCxAzNRsRy9cQZ OzHY+AIzIL+MLxlLfFA3GvaC9p3DgruxlOA8wqn6FQ5m9wij/zzXv/+1zET/MJGrSKOiNspqgXCM o0VaVo8I2g9iSUsaBJK2jfEkhj8t/8nFTZTzR+FMSWFXicserWQl6ixNA0a4FraW4qIYMYFdzLOe BR3BQ1ZwAhWY+Jb2ZrGVOcHlKqtgV37iVZ8d+WAuXWnCfpyxRCWEz1DkA9gS9aY+b1zhR+IA5qUE d4VMuUNm7YhZ/mImRlOR0Zk2MghpnKnGVFmugG+UozZXpg8oODBHmalf/TxCOGBZ8CTnnF1WsJGN axQnAN5TzhFhoY5OFEUGuItLPeGlJS/50zq0kiFV5HSVT0yihpGAxStMwQnnbQJtqshPflQpg3e1 0mwV3YgPWEmDrKyNAM4gzMHK97ZjCEEIFkgpSo+hhIJBiBreaMIVZiqBmYpkBoGDzP9MLYMb3MQj mbnyGDWHqqrReExVQt0fyNI4wGySqCEuwiaLtglHox7Tpyi4DG7McYADNIYoQiFKzZxlSGOlQATF KQ5jJAMscmKogoykDj8jKUmA2moHTqiCE9glixvSQoezGBt4tvLQpYHnLZmIl2J9QMSkbJQTf7pL Em1AmCUSwALHsMBJNZvS8U3xBi/VxhVEW9OaWgYyNb2CSGYakqwesx75E+pQX9WiokITcmWcrW4v h81KUvW3UEXqT9tBkg79CH7AUgdSisafl/gHdom5BmO8CKz6cYpieWwkPqnTpd7ZtVY02GsVXukE 71yFodfjRH7UZb2jQSA/06vPfMT/9q4iaklPOqqCJRqxNkmJ1G0EUMISNZtZC7Q0wN0YraS2IdMq VvGXlqmpw3iq2hlYZridAg3lLFeyotqWcUlN6m5nWzlpkiyBUgWuU/RBsZ/CTzeWSqfCwjG7Jj2J ne9UJ2POyccX3M8oX0nHCuvqJTbWygllY6wsOqE99TZUok7OxLjSO5/3bEKTzosXCRq7Ucf6ab8L QEISBzM+kr6NpCvVbPmUANqu9nK029Cpg2cKOJ1a5s4YTmY4RSRbpg4wgEVVKos9JtsRm6rQ1SzE UjEHm8upmGWecoeFRVLaX7q5MaVTWFi/YUh2YsNITkIJIa9UOqGoo4/6VOG1Nso7/7vCMEZTCZ5e xdVk+W5Ur/G1KCecsOX0HpQs9JmFJomoPYzeuqJAecUsszEYWwp4iWYu32YN7FL29dLBouXGTl9Q hV8W09sXnvRPQwWaPlvkZCea4xtNfGhD7/ZxZ4QcPVClWw779iFoTPGjV/M5iqk2U41pTFdLkpLk ljodKTlAcNTKzp+w03WzA3JKSEhC6uBoS0ohxKthhGSquEuGrKyeeunlljzlZ8pMFo/JcwgviBqb ha/Mj1f4G4KhGYzM0DbpSi+LYNDqLduQEa1O6dwRyPA0zxkCY/6Wms2FzGZy7jaV00Zcj41Ach4O tBG9TYPA2DB9352TN0d6ykW/Df9lKLAQliN5gw1BCcdJOt5KvdJeHlQYBZ/b1R1du8uUpsdIhoy1 jw+udpVi67qIxa6oJyaapztdz/Bl0xINfEB5VkaivzUfzDQqW+bMFjjALZWU3uQ8jfa17851nkEx e+ra1mJIfwBMNMpQVpAVrbHetS+xrNg9ES890IHWKXQaUYSde4PdIQAZVTyKGw5vYBqDwfqGOnRT M2MV4xeHhHvcZ3f2KuVuvPPw5j/9+SIjT/UheKU8fu4jNuA9vj7AM9v06NMnfgZP/u56aGLRZvhY W+uxqpAVt2AD04AL2eBZOjdgaxZgbbY+3cANDDZn3QY4mYJTqlVhkrYZGkACfIb/aJVzIvdWb7zH RpUUVSuGe+dmfBChgsfndDVSGYdTGSPhYCVhIdznE0AWPyphLG4DanHnR5ZQShHHSI2EI5SHEf7E JUuBLfjgT751YguxV+XlLsFzeDQkHu+SJ84zQywEF42lClT4hZDHBJLHQqzEX7egNjrDUv7iDI1i WQbmc7w0RRAoU3UGYTnFbap3DhbWWq3XYqKSYRkjgn7HQLZ3foUYI2qUiC34W4PWYiHBN2cnHep0 agpzY1OSM7IDFEfzE5vgiQ2VWFYnKkVGef+0e9NUEFBjfocgUOGVCT7QaxaleJ0APPHifpfUck62 SlCWJfWxZUhBbBXVWIsVLxCA/wQhcBeSRQDCAFLHgHNwCHoN6GYx1TBDJw4ikSniUHQScFNYtRke YSMdETmIRoK7ByOswYIs03Tq2IhV1TGQOAkzED8vAHfa9xtg9RMSUmOUYiQpYCT7gU4BiBU8VEpL syNa9wDd5QO803e9Ixp2dR3tWAhIRnkxlz1EuGX3oWWqVB/aozsVJUOP11hcmHhmiBT+R4xnKAUQ MIC2UFmUtYbkQ2AnxVLrcwXq84DqA4GmZ2GZMQ6T5jDixg7mIDPq4BnjiCORwzgjco7Ip2iwwo7u OJUqY1QvQzo/Qg4MFgAYVI+zMyUGp4/MYSns9B+AFISc2EnjAR0tFFv40F1QwP8lTDERq5KOtKcQ M8RYtOaRUyGL8yID1BNR8AKA+idRJCl5erJRlddlGBWMwagKjSAFHXALw6AzQmADToQg5YMgMIBS mBV6XeWA39A+e9iNfCgSJEBpmQJwHzEDHzFOvAJ7JHZuVFmbtulnN6JMmWJBbBddsNAswAlkqBNq wVQz4gABQZACUrAAy5kCajNCjTQKqnCQRgAPjONNPjARDDl+TPFPqQiVeBleeqVDe/J+e8KFwPNQ IWdRM+R/itWYG4VR2aNYJ1l5mhACUgAg/iIEF0AAybAMiHJSiDIFnblSLsVLVaQN2TaPQGIZgfM+ xyUzmPEO4eQR44iQhHYaB3T/mxzqjqMRjhTTEZZinIUEAdUXJQjnaQuwDR+BDh7hm3WxnCPkSPbU QvgUW5RnBBoAl70TEEWGiA/RcXk1RDN0STTgTUYQXiUpjENkPVc4PZEHZRjFf7oDLxrRQqfkAvZi C02kmQzwBMmQDAiiDDBQoJ95A2jKPj9nh76kUzc1Uw9WRafZjSKBlBH0MkEFbxsWQCZIK9YEpJoz kR16K1b5MvfTEX0DY1xpEj7hJDC2ifR0kE5jBDqSJrYQBGtjAwVHOBCEIzpiD0mxo8AnqkiIOd/V hHOpCEjmBIwVeFO6pElKpPcXPEh2NpE3eOHBSqwUf475ckxjdYrHCFnRPeNz/wH8yQAwMDDFwAAF IATNWgCfKSk3YG1TFHQPFnRzGqe/ZGHFVachGiqxJYjlOFWzly36Nqgd2m4W0yseEUzuypXhwJW/ UQ31KF29wQTUoSPetF2KlBjNyQtGEg23AzoSs4GeyjTfJKqKWWQ+KlWr8mp2sldD5J4dBwWyaqu6 qEpRaobwRVEy4C7xMmQbxREISw+aoDYf1QHLCqZfWgAXUAAIUAAMAAL/qSjjEwA+l5MOmJPXWkXz aHouMBLWhY0kwRGvt2fk1kx9tqG0ORCCKiNPi66cY0aP6Cl3dinNR5z02jrGgUFsaYaOhE9WkhiB 4pz/8Y+9MQ6Ek6/VolxKqf+jOkp5EtmwENkqTXgdgtAUEnuxJRmrZVORS0qrVZiY8aklvEqMkxeq WjKyvldRTCBmbJMC/CkET/AECpAMCqAAOZC5JVACUzABYmoBaCVgkLKz1HCtpaV6cxZMHjGPFwIx XBQ6obN0z0RUtBm1Upu7jdY0uCJ2gAhw1FeP1qASQzGczPINt3OQopJ348E2OxEERqJj6pA4ILEj uMM0oGqKTfijc/l0D/lCLxReGmuY72mRrlqS1jKrQ0Sfwbix8OmYuqOUG6GjjvsnXLovF5C5ERAB ClACHlACAOABHgAASeABnxu6z5g3dDhaOlVaFch8JPGTunGUEgNGSxl1xNf/dWCCu7oLXHc7iPaQ TOZQnPRKr80SAKgDnN0XF/iqJZV6O+NhCf7xj5m4E3sEKm5Fo4+0ERMRfk6zdf+AKnOEqho3CLLK hbpjvjSQpK1aNuPlWIHHWGfznlPaq/GimEkxeVico/NwX8PqHwPCABdguRHgAREAAGj8v2jMAQSc uZc7MLswDNLADaRlYUYXYb4yDhUSDmsrGW8VWyQLIk21bi8yKybTwVJLGw7ku8lkXRYScMFEvPLK lfK6G2qbCaiwXTgSF1ayXX6UGM4JSNzXSBWEFJ/qQAnrWADhhHSZbtfRd4SQl/EpUTCnflGcZFCc xWazmBw7xY71nsD8y/M7/w86iiPw9cUDUrkKQAQDPMAAwMZsnARs7L+dqwCVmwwEYgyFQQ2rFziW gSG4cWeuWRSN7EVexIGwtYEW54GrciuI/M6G3MMtM473k0zNl0WoU6/42BwjLH2fwIHX60ibgE6F ZLaiDFZhy10Xp5Q7uqMMaxqtvHu+I7GBp7GLpX74kWQWecUhq8UWWZJ6MhGxyiVTbIpG2EJOc19g Ebn78gT7e8YDzMZovMbPPNMGnLlPoC+ws2CYsZowWKHsoGehkq85/BGxZXUPRFTS1LQZDM9OzTIf 3Di+Ek7tsMc1SJZMgjML4xNgsRUk4NX2BBZ2F1ZSsgAX8I+BErDT0sm/Wv+EGjWq29tNJLjUhTBE 53s2U+Gqel15RPTRSYbLUVo2TeOYXLLLXFJ5pEq/xgyZyggMJjDGChABzAwAGDDTzyzTMi3AHmDN 2dwMp9uNviIPMZgxp6wj+QpOLWSEXcwx+yNUCHTIgPrUsv2ULNY4nTF9lox2JiFqyILC8RNW51Ql P0jKVsIVtnC2Z6upNhxXY5tcn4p1Sc0qFGFiqdoUk3fd6heMW6bRfq2Y98fX132rVSxJDLklu2y+ DGmER2ijqsAIbMOMYuzSZewBFcDGIwAAFVDZlg0A/Mu/j319IFUY2wAzeibCLnO9x1YPWUeqFsmU /SN85+p1s43IRiXVMQP/JJfiVfW6DR+U1dfgDYyBdjomJ7NzNKSsR12RnMhdF0aTQm7yeg0tfhHd IgBFb4ZgsRidlxgrqxhtq5K0vrgsxef9T4ylhEphkUZO0iRNL+69EwNyASYQ2ZM9AjL9zJXNAVjO 3yawv5crPiC1YHUWOjD4WptspdoZfrzrMt50deX4VBP+5jQSb5AjKrHbz9sgXbzd29YwvCksLGm5 1in0NcW9Nt9jtmYZLScUFBY3IlNHl2vUoxSRbkxh19kd2Dwe3hjFJUnKxJaOxKYYl2WjhArpNAvb QkgejMYdKMEwxpVbxhSw3zQt0y/N2drcTpXSETjFI3YERjtCb6tdRhbp/3vFHE3CB+fGDrVnFCK5 YpQYTryMyizKQY1OMpzbt9Y/9EmYjK8I98V1YZaHFIB2R7usDem98zT09l1ZIL55ucTtezbobbFc CAUYx+lZHJ+Fy5DbeTZKKH5cDLem6EB0JQPDSjcX0ANPYPCRjcb7C+sccMb8rS9C0IyeLVr446B/ bLTrrJQOtEIm/e9ISqptzsHHPvJO+z+Cdtt7vNu+EWq/sTrIAUhniZZEOC36dEKZvMnQUkhBsJwy yn3q4DikrhR0mZ3+RPRI2CVGvLd/6+6xit5JYQR+Wzbix4Uef+SlWB2aPu/wC/VbooR05QKD9wK6 sBf70gFj/NKwXtMKr/8A+rIvJNUSpeMw4oIZ01sFn2OhICIqY5QRqBJ7TwWFJB/4+CbXfb8hueFV bsYc3oDCWf123WMkAesfz3keXpNpBAUvaUL5XcEfQZhc1TJv49ejTGHu49cy6h6rFRl4eY3v7Uts ZtNqRAT12xmX+M47Xd8lXWbe8RJJsg/1vROfdlJzuNABHSDGAxLZJbC/ye+/aizA/KsAJmD8xlAw 12Apq6lCFrzsSbl00WRGSuXadsuKgj/+CGGqd5ub7oCTmLbnId4sDnfC7HQky2nDhSQKOgYu0EMK KMEVJwsIIRCDLySGJFUyGg8PWY2MD1CRkVAakpOQjBpONJ1GNDI0Pj7/nS6cPqGhPkahNJ+uq66d MjJGo7a2UKwyPlC+q6tQq6y+usPFD6hVLi4hCzYENggXF08KERHX2dceAN0cACURJtQIBAtNB00Q L+0zVfASVRoa8/D29PP0i/z9/ZD8Mgl01CiLwYMIEypcyLChw4cQI0qcSLGixYsPCzrKgmyfBhQg Z1yRcIDkgQMQTr5IiRJlAAgvAwRYMDNIkAU4B+HMOYjQICbMmAgFyoSEDBLMjCKFMLRQFUTzFElK yKgSpUu+HF16oOEVDV+fSHUay0sUra/CavmSheoTq1zAcAUrZqxusWBqhaVdFqKvjb8ppl1QYOKJ CQUeInTzhhgAgHE5/y4wuECAQACUL5q8uPJiBsiniGQ8fYriXj3THj0K5Mp6NaSNGGPLnk27tu3b EQX6wqSoSsgZEmaUvCzz5YGVKVe6fElzAcybOXdC2BkgRBNBg5i5YOoCqCKkLg5pB2+oNIl9GgtC klRp68FMUDpxktVp1CxSo0JV+ZUr2Su5ufyiF13BGIGLXgb2IpcxBvIiWjPWOWNDYBccVhg2HnST hAcKIBZBCYSVI0RlOL2UzgsSuCABIiSg0OI9MMJ4WiL0KLKIJgBlcmMmuPXo449ABomRbpZgsk+L KAQ3AwkmERcAiiixsxxNMxW305UlXllddT0xAcEO2oWXVHjklWmaD/83bjTVeshoRdAj8dHgxJxj 1WefKPXR0ossRqTlSS+33NVnXAT2aegqtdRy6C+wnLWdIM+kIKlgg3WYoWIfYoONAjlMhsCn59Ck WTqcMUmaIfWkug88p6WG3qus3bgjI7AJSRVCj9SqUK629uprj6u1R88DioAUnJLHHeBkEyaiJMEg MjlX05WhygQTTqH2tAB2LwjVnbdGJeKCDOMlhc+w7FU1CVa76QqFQXHSSZ+dopkFyii6fDXMnwv2 goxddAWsSygAG8jfKKi4sMOXOE1IIQMKWLONNiU4ls1gDHyKQBAEBBFAOpqh6BuLUMUIGlTnvZoa msO2jONrvxKkK8z/C+WqUcw45zyRa0ZqcAhwwb1wUkvWMsuOBC/ERGVzAjSHDgRN4BS11BBYx84g YAYFlFG0GHJUeEcZhR5A6a6LySUNfSKvV2PhJwrCMgwYS1t8xkXogByBJfAqkcBbV5+gpEVudyEw 4cwCUhAwzWQQT9HhNRZP/ETGn96kBDqaIQ2SeYeYPBoKNboqessBzXpzr7y+R+ubqa+u8+uw15xj jqv6JsHtyrL08UwHUHm1lU5jiY501069QDuDhOBCty7QCN64R4lGy1HDusY6ra6fflCcxdTp/b28 3ALLf/y6kigx7NG1aIADtxuwocKgUpbhVSOewgLTaAyxAo4rIM42/5MrgMbMwTECMCtkSxIPIswD o9LQA3Q0Uo0mqsczHr1HSKkzSAVfxqOpxO6DOgPI2PohAxclCWlDO05xZuI7l0jrOQsQwE0IcD/m mGgmUxOElyCgHe9ogBbQo0VXfhi6rfDqETbTVUNcUYxX4EcVeAIFL9wyL1s0Cheh6FMjmni3Pr1L b1nJ2xcDBjca9KV+0Bjg4hjAgBw84Qnb6JQAQSWCFFSmMk3IYyHkcYjzwANVrTpSiwyhD348ZYQV xBX2lCgbCwrEdPko5CJ20y4QWhJ1E2TZBB/IotvhjiQwKQ6zrBWT4oQyWsS72nSm4wyfeCdM0yOX nnjBHlSYjpFwsv9Z3xTCva98r06tyGIsWmE+QgEKF31rj8ACxpEAiXFvd4kPmHbwgsPZYAGBIYBk qAGxJ+SAUwwoQMbmqDESGU1kfdQHaFZFutRwxVWz46AuN6Ke29RTPe/cx3f6+KJ54MuDl2yI9gK6 s03yYoL7ZBLuhCY0US4NeKRkjnNKBLVtqbInPNzhmGQZS4QB6hf+osQud2XBhLxre51Qn4F8WcV7 xQIUn6jLXO5yFV3QRYx9ypvBclqMZ9oCGPHTzg6us62GRWNECBACG6lxgU8VQAhzVNwdlfCxdayI ZKmCB+jgGUGPHHJ0pNvgQBiSQQ2SFZ868ll4nrK8QjAJSdPD1yL/BwrCshJUIutR2aoO4cmhyQQl U2MWTU4Jk1O+ZDrOOVxi2bEdjHKHGbGkxW4OdEyg+mCkF8RVROQ0FiuiBagxnUtKKeEvu7FPQP7K ShNVmlow6iJB+ALGKJYBIQmF6o4EEIIQ8oeAcH5KBBy7SVU/lhJ+HsU0rEKNO+lBSFjJqjWvsV5J NVtPmbFuZqyphM8MQaalvKCtfVSEIoyQJrpexLwWQe9dHeIaj4SNuSjC3WVWsjsrhRJavCts1QQh ISnUT4dVSx4PuwM9GjCBFgEyLS0N5MVb4TKMCmEpWUTBPQWV9nylHRR5f5q+jw5ItVMhEC1XC79h eHFP9lFYNfO4/4Db2hFUn9qtECxgAdwqwYBVbQeKCNnPBo7ON2BdLo5Mh0SxGvnIsSIN0lDUjpCh cDNXLY8+oMvI9Vp5Z1nQQH6YOw9jHeskxMmdDVc4Smm9BEXLW4oqo2NRAT/Wa+L9YWwT9FN69DQi AksInqAwHy+O5S4UJsX5AKSg8EliEQgT0C77VpVfyKCmgioQaKNIg+VdwTpRg0Ya7ag4BFhACCKQ Koksk8d1hOwKiFhSjAL5kdqdq52xgu4Gr7eafxB5R7TWRAkPkSQdS+BEV7jCqI7TDqRJwIFjc92V l72zYtSIVcYKtjpakrRBKKtKNKmWqJzDjnYsbybXwhJGuQ2U7v/SSE8IGuItRpyrL3Lk3Xk2qRP4 LAyYUjrDn/0EumGKqPCtCxXtEelJ2ZRarvSUjAcCqS2qIKcdULMvUQtVixVnAXN8isY1JpESbmBq X8tDRsmN0VYLCeSAiFWDSKZdrF1m8rSuakVLFknIhKbHUueR2ExGEUiSnUS7MvvnVdHn5qoAnCu0 JFnWupYMm9a0AAiXSmdG3kSFFzym8DA7ZKIFjYTRFX8NyqbJ9NswZnrwd3MkpWup0ysIhBb17WkX +v6oJYCarnfB6Zns6sUzx+7FSHiUBrRtK1F3EgRO37HG5sBtVTFTbN+Uxh4hn1E+9NpyIhd5g5B8 58o37/KsoiD/5yO5wkxojjkc2hxqvl7SVi0PM/X+/JJ5zcfmWiSczCRLWUK7VgE9FsMFQIeih6Wv 1IZ3pVa6eTzRq1GgBAWw9yHYwjcNo1fy1VlPIPxgVIxbftCH2pDCe3sa2U0yDk6XuFFSbh5dxjIW hqXb4rYyN17A5Yg78xX5BrnqjCQ9fDCPd65+5TyXchOUT6pROpUXSUgiAZwhbCCzEwf0gAdUVSdy IrezcwEYXa+XgUFHXiNDAktSeySReyskE+dwOU0zcVpCHVdDdUWFE9hhfN8FNlzzQ8pkUx7WTMCg KHFzWn6DUmqXUv9RaIgydqgAC61FDF6kN0awRRB2Z/8SCScm/yDQFAlzJxaV1laHg23vRwA3ZmMH lBztMDKsoiqFpHnOFWuzhoGsUzqx4g9naHJ7xSIzABwyl0csRBPWwUKCVWomYnO34xlbJWtqmIGw dytkkw/cdTucASUNtUI00TTBFVwtxjE4UXhsphNTxxwhcFgYtR2Q9UOJIBWvpSDLJAyDAijLdzMn lS+c4BZW5Ba10Db6dmK4cFqGJjcedGdiJEbrwh9SSEuYUBVlRFsLUz/tBw1bCH/oQH8ocgWlYYGr x3IiJI2sF11zJYhDBlbZqAksUw8uUgVKAhxQYzzthyUfow4QGF8W6DI84nqECDurM43giBQeOBKN GC1V4jFBIP8AHdMxkbgTKXATvzd1xJMT2IF12yE23yEVbZGEJ6VTaGILscRheWNSccInnDBFZGEo nmAJAbIgy6RBYRR9NuVatMJMzJc+jGAfvaBlg8MMARZx13RHI/J+TXADl5MOx3EFgLhcYUWNshKU bGhyb0JPPDOU+dSGbfgRLmIISMMZfMhiJcKF2DJxBtQEVKWTpBIcgdhyi/SOhXhWXNEbbLWIKnRt ASAAVkKCVdli9+N7UuAcUiApLrgAO4SJjhUmXqMUQhQ+z/eQOtWXkWUJIQkvBtJn1WeKddIWtXAL H5VadLeKWvRMfvNFAud3ZJQ+mtlo8RM/gVdN29EEM4mMydj/hTW3gICIbG5ohgNogDqSSGYlVgY4 SSznD6ADEoQ0A5tBc3kUbjcWcaUJf0qgkwcwEhIgZLNDT7EJG+4IluelnBioG0+RIgrIZMqCljLB j0zne4ozib4XkEEQl4WXAlIQlxOFl4QQHt6WddEzgw2SF7R4FpEVVydpU4bSCnOSn/riCmrjCWXB IE20g9DXJrqgAe8BmLv0RZZAmA32LwEjcCCVfqbwcKI5IZ32fhnHhTanDiMxh8pFgO3Ejth4jblW QZS3D9rlKtBmHiBxEtIGMoJ1OTfWhVxoY/DHccWJIjNARMg5EHPlnLbSjtZoRA9wMrrpSfQlSk5n E5LIpIUX/wQXkAOSMp7kCR2Hg1iO9V0DlnXfWA9dw5CsoGXrNp9oIl698ACGwgqoMG9qswNMUD5S lJG0CH3jY4olGU2AmaffpxfHlBWUsIulSCDpVwVOEAI7ECGHcw42yoUzkZN6ZJyEJEmjE40+OaJp +Ege4VFocputdg+bgwKAWAWcgQILSHOZYXM3iZV5ZJo4SQAcp5M8OT2qIqLShT00A6S2oUto1UHM 1SIwVxLKMkqCRQAyZBkt5pYIEJDg+aQCKQW/1xM6thI6Ro9KQUTw0Jc8KqahU6Zy5iB9KT+gAAou wJGeYD6d8Kap0Jg8ZYpqymF3Chbwo1oIsYrIkEwjpZmBSv8X43dZyUAKVbAwZzQ10VAZiYdbNHE5 rxqtzMCplLo5BfiTR2ZdqtMaK5MfO7d6DAuqm1N0ChhsRgcyHMdxSjCcNyCyq5qqsHo71IMIPXpy zYmrFHE6u4qpJTR7C3WdAUAAImAOx0pDiup70FF4yRoYgXETq+QTWRomeol8LomtNtKSWvZD08M1 XVNpsuQCX8Fg85JF8omnwQBwZPc+8BJ+5DdGEDavNZVwd5aEHDF+q1gfTqAwfvEMLQYNHeBpBWuV euRtY+gRW/W3t4mxzyWA1qhyHlEJo1Fyk/cZgKib9YeOMDqyIjuyI2tzr6qTCjgDWlezLSukl4c6 hFhdKIf/Pf0QuAplEmC2ndPie1liExuDADsbBBpzJePGid5mdVsKSwnTPNFzblJrC1LrraLxR8f1 ptRHPkxQi7lAZ1/rRacFYqs4r2aXp+2yRd/HmTcFb8ykLlqBMKWwXwKLW4lnlccaNZqxQC2iMiA6 qxREuLL5AJQqOqyyQE+Rc8OGjqSGlTRGuZSLlfy7cSBjdCWBJJ9RqV7JMygHszFTZFG7XZ3kScyi LL3XNP1oE8DFpOdAiZVoE4NFPNXxXcghrcvDDCfjVs+jkLzgKmETHl66DCQAATHlvKxgfSbGrgBK KA6Jkntqd++WoMvUd3hXtry4JiopDFzBf8ywMJmBDgaU/4LnkLMeMx0ic1XP5Q+b1L5Gdj2jW2va uCooUCyD1FbFthJ2GADxR7n7qwQZN7JcSLkle3M3d2y2Y4GSasVD1hpFCSwKzF5aET82Ug+GADT3 OBP8uLOV02kE5KSV6DRQMx1TQ8bIgzzrwGRL9jxeMi7j8jmmO8KDREgQgBagLAvwaZ8AYp8FY7by apkPuUXJBBeo9T6kWIp/6iZMeAmkoDDMsGKlhgRZcjnyRx17uyIOZIYtqS5GdkuKZKu1tr6p4UDl gZskoGM7WWryV6OVUWNqbAHZTADazIXYnEevqhLOOIee0WqiY4bwhMA+lxt7nBtUWAkskwgKdUJE YyUy9P9bsutUA8TBTocA5ig1XGK+ptZxOkYmQfEToRCpnRzNngjCiPDJVHS8Sei8c6G2d6OLKGmZ ZlWRUggwcJLDZju2a9K2fdyvlcYEWXMd1HwOUZOzghUtpVZsgISiC+qj8Wg9yjmxmPewC/R48FAI Q4dCvcmHVHXNbaxbSE1j3Hxj2gzAG1oS5PypzwhPVK15ibTOYjlQ5vWyIGSZkxCHX3YZKUGCNRG7 QWDIBZADAlQATXUTn/JidgQNO2FAhbU7opKX3WIIQ/E8SBPNaBYeRdE5GoC1YPFSbgHLy9Ra52d2 lUlJjB29vLgaRqmZ8AKoCbo9qjwKcZvEmGZN5it/1Cz/KjmmOe5EScGIS3g1s0c5liUzD9TqlLbX BJbhy1OVW9w8Y59Wk96cxpIbskMTbKmZmg4bjYrrVWc4Tz/qYBudzFUGlpfnXtMJHOoQALjziNGy jwsQu5XjVLLbVBsTGAxwPyxNIk1jh1/oWDs0FFtDj+q5ErmcFMz1IL4UH2uBC/ymtvladtS7PY/d g217ediDN/qNd/yNyoxSqENlHUjAYix9rMQn0I/6AsUdsUOizOlRa4lwDwo0nZlRVU2cs1uoW7md W0it21MF2qV2En/oGccm1Z+hVVKdXDtnD/8n2UW2nNlzMzfezriirT80SEgDE1PSezXRMbBrwWqU AwMk/xlDi91PPEoRFYG2G83cpR0gnB3eFoPLAwEvzERtF8rletjNl9HZy0uA2YNPmAzB+M5c1KDy WuDRd3ZOcKiHimkLbgPmW4IObnM6NhJlKE+SzcfLnVmE/iZCiYDP02Qefkc5q1ugolQwAANIzUZs hAB3S7AkUpUfsxnG2aHP6OKg8amdQ8Dsm2y0VpQ0E50Si9UaGHBcoWQoFFFLahP9XDnc6VSdggDf NAFthADiNEe0jm1L03QHFKzIcxwwCcLIseXs3RNI0T0xBcpibqf5XYoEXtlnbrbrIYzCaH6rlcoW idnnNxaH+gLUNFQLji2KOrB2BOGa8Q6f2r5YrGw1s/8rDgbgnXcPzMBHQU6CNMlGSsUAusUAU1Dw k8NGb5TwTXUBdmRHc30ZIBNf9ueB5Hw75yHV/IQkpe5OLofAJYrqPK4VAHEUNivkoTSJHWPIlbOP stspag0xIDIBINIhOTABOaDkTsrBTxcT15J0KNJtyIG0apaeJFDfWcsnfFLY+RrEZRu9Z47t4pdX ZbP0If19lZk39OFw5R4hzzBqAwsqdzQ8p5a+F4jTOa1ESZTTqa4jDWQqwIEcM6GoSSXwBD85bzQF T4D3eB8xj3PwF7Bb5iDXT74OJRFfTALcQNPJ5nFVMEfADtS3zlX2hBvyRpLhvPYs60BKT3fWnG/k vj7/QGk9Abwu+qIf8xPwuq6ryPg4HavvWD1xkK4/JvZdrmHORNRugyDtkEyfp6q4i2bzhPmtvbw/ vdDeCWCCqDsxk8+gMQwvaiytR/IAOimqzvQem9KVx1ucjTNyMh74LKGU6UklGTBQ8AbvOJgyBeLg Af3zRkuFVD47+LvJZBCA+J5EnS8Ccypi8SZE44ELCBqCg4MPhoIPhBqGjImLjQ9ZkpOUlZaXmJma m5aMgjIaJCgkJBIvEAGpqgupCwQLQQRBQQgFCCK3tAi7CAy2tTnBOQg5KbTHuLNBAgGoqKkQEKcL C9EBIRDU0dEupFUkNFA0RuM04z5QUD5GPg/i50bp/+no8vPpWVD49fn8+P7++6C4q+fOnb56APkh lKTwnrxw5naEmBiCGhJqrwikINABwUYEBIQQeNWkSYAm0iSQAFWl0CNGWSJFoiRTZkxDMXPOhOlJ Q0tBVYKiGFplxowXV5pQcwUy5AUGQp5M8TDVg1UPHABYBQAgwtUpUxiIvUCgKSuTBw40ecGWbdor VyTIbSthhty7cklUGYqiZVANQwELVuQIEeFFiH8egoSTk+PHkDm50+BDxrdRKExJcBaAVecAQWAJ gJVs1yxZtHAVGCaiwIQcrwuIyDF79q5hx4I0s9YswCnQ1bYJh8BEpV5BEMlBUU4DnXNxPpqrC0h9 3/9BhwzzATyYXd91ed4bSooHvp93feScONkhcUeTizYw2kBw4QJ9+wiE2B+pdOQClC+IEtRehG3S 2E2MJdjTJ37xlVkVpqh1ACuxjFRWLwxINVUSV1mVlQdeKXCVAgo8IdYuG1n4X0lNvIVUSW9d8cIB EKwlI1Km3ChBZqI4iMIMQwHpoyJEFolYIQlGpuSSkDGijk+klMKWKWx9Rk0Aoy2zAEjKyIJaECLM IhswCICZA5hoolmmMrqp4qYqwwnHxAvddLNSFeEsl9xD6zh3TnUBsaNddtYtlFA/iG5XHqLaNXTP JeqYs54TEzURAnzU2FAWAfPVBxJU+mXk0Vk2SrD/V2CEHNjJTAjupKAnhwyyFwl2SRDXCyV1toAA FjTViwJVVXWVVxxwEIFXVoEllVigNkWAEiexuBauM7YIY7XSvpUWUnTVFaRRQjpolF6nGomqS4sp mJMkrDLprpKNCCKKlCqdcsALnekWWiyzrLlml2ziIkKYyhDMZmrLuMkMM21CU40UEEC8jZ0//UTO ns+Z4xw7gk43UEDrLISQQyJP4qjIhX73XXmHPrTDehMhYekC8WnaQQec3tfLU2JdOJKu085wxako DALFSzatqtOrr/rEF4R2YYulhSIRkOETwArbIQvFgth1slk/YZ8Qu1gILYwtHpCUWi1y65aEaaXd /1a3RtVlFF+0DiVg0UUD5iNf6L767uCEs+uOD0BFScop0oDGDGhemuYzv7mEafksAgR8MJgCECDA aAtjKbpn2VSzADYQuFCFDKD0RIMT5YgDXXP05MkxPQINhI4hgIKnqD+RJCoeQ+H1rmg95JH3EMwU TWTD889vNJ8QDNB3NbP5WWDhK83QdRwkL63KEySTME1kkDei4spIZDMr1RNbEaFVVlFwzYH88394 bInVC6GphQFQgknQhq1sZesAAbiXWqr1grvc6wrgAtI3opSZGfQIMBH8UWBa0rpEJCJ37SqcCN3F uwd8o06/sYYrAvAKV6SgbAEQgQX2VbYgpMBgy//IYeZGI7oYeo4AIvAcaJTBil21IgjRQB0T9OKD JhZCBhczhzmgAx3cqUM59HgOPT5mPIUkhBKMGhnJxDjGllVnPeyJ2URoxhGN2OBm9xHLE8RWPahc QCTa8w8BfOO9vhgGJo5JWiVqEq9BEOUoMioJ+/LjvidEAH5E4IAHAFCsSnJtkpXs2iNLREchkG17 BIDRSaJ1FlyxbZQ0utcp5tbAKQlpXJhRCbjkEiS7gWuDf0TaCHc5ON7JywV0YhxKSmeSFvqnM52D 3GlySKFWZC4VOtTNMz+npc99iYe6CQ4TXNANQSAuVTKQlBRfF50mys6KeZpOn6YjkN4t6h+LGpT/ yczjzuqs7FHpeF0aYwa9N9pgIy/kWYY8dcc7IiCPm7KQUlIBoAD1DRE4sUljIgpInayrkIY8Stw6 YyFGMgAGUjkWseRXv6xwgGsAkN/XrBKBKfCPF9tTwh5ZFC1pWasVuRolQ2vkmxpxy1YSOEBe8HKX Bt5lli+o23FSFT5eOjUyvtSADLxxQrbUqEUM7Uw0EIhAfMHJStBMxeN6KE3HITNfz2xYK5qxxDtp 4GieQIcM0sGcd0RnOuTcRxbtYUUuWtGKg1qUESyBqIK0sx7P4eI8x4hY9qSxCdDjCALeiIAODHSO DKgP1qx30JBYwJMjsUCvnhUtaSgOohVt0tJ6/8IXobGtCTLdxVPm2CGsUJIrJ7UfC1iAga5VUiuT 9ECJyAZahd4AqyY5y0loZFN8EXAtEnKLW66gSgvWqi62aiUtYwlBC46CMOR7qngz4UvEHe2tghgF CexlVd5s46s8/QxoVDHW+WKpTUYUq5ZmMUT5SsNOoDiSB0Ex14ydMxzR0Rhi2SmPvy74sPaQJz5Z JryD8I6duNsO8Uz2HRo41nnP4xTOcNapp1xAbLM1US9EUlxQjuRs3TPONxQTXorupHw29kRrhZar jmKIth4gAlYyiVtL9ra3lQzuVeb4SWc14VkrGiBso9yZs6lllNISIHSttS2hxiWotooLjahk1P8p dXdeD0VtasfLZnYZ7hOK4yYJXDAXtgDTGQjsqVef8Sa1QkOsgHYTv7Tkmd1AYM4kSFWsvBnOd8gO do6WToP1SmkGl4eLZGwUdjZ8MkAZ5FEbXqw6fMA8JDyvA/98I0c6YOIS1ac+mYU12fLjyc/mEaG5 qlE0VNJNJE2UfCFs1aLRp5YbyLQsrybRFJBFyawUebdIPimRhxUB/mVWJM7aHqlMAi0BQutZUpap Eo4707ihBEZqC+qMgkrdu5SCqHIBkgUvCN5gt7nNjRAIg+rUDVNpZs6r3MyUWgkBVTrjGW1JhQTk q7A23cIY/OUjnaJkmEd8gsAba456SA27dEb/CsH1QPBdQZ5YdbozO8oLY0BiUk+WMcSvaIwZfGwm WSGw2j6aLZEJMoshWlctJC1+Vgsb2kpRCJhpOFYQYhwEF9h+lnpyFFGHKhkFDmBgt7yVNtd2K21J eqAEUzARsz6J0O2l4mxTVgK0FnCDk7R9LU9egAAVOEBbzUCBMxKqtojKI804yOhF82Aj7k14mhiW MrICygS9gehRqFKoM2pcwgseeWggMIfLyIgsbEMw0k18JYeRl15cEGGImH6vECknO6WT+uo8p1C+ u2d1PoZpe9KTZE30sERM3c8R16cHsdasSElUvZ0RNz/I/zkoz6LrBgLe14wxXNPSK2/qwpZ9/2Ob o9aGnMnecr3rxUrCSluaIRj0ryzaU4LcAyh3uZNWgAEUt4pOoiIWkSpuack/dfOvGelaNS6xlGaJ gCCFV4A1cTTnhV6y4kdQ0hLv5nymwEeQBw1ukQozol/ckzmhQQC4AQuewRak4BKfIFVR8g2RIjtT lE5SlEUgh2Gxo06qBzITJk/XkTz0cB0yQR2YdjzpEDy5xzz9ZDNRMUc9IDb0UW2PZAJPYAIKwCw8 BxLIVzbbg3z+sSJTYiqBgXSEhFHpVRQFZGy70D5SQRVXkUlcd4b2E37h1yFhBxZi4UlB5zmuYAFq F0AlUYfjJncCcIf+MWU1dVMmkUD5l3/rlv9365YWRzUDLXEuPFGABigQTRSJiPNNIvgTU+VumzFm c4EKXBVonxELDAMSoPEvobEbARJghQFnpTAruTdOr6Mx45RFdwVYIpdPKEgDD7BXjAVq2fExN6gP uegkDJaLOQFqO9GD9eAEVZBGSMB7HHEBrDZHKHZiJlBtSngBJNKEH/WEnpIf+6FH2XYWOoKF0FdR 8bIYCwgh2OJ+LPZRMAAWGyJ+HCCP9iN+9iiPHVIiwKIAMGB+1FNr2pNH7jcSAqBlx+V+StA56tdt 67d+NlVM3LNccIF/CuRl8VY3Q4I0a+aIbLaFBeFBFjeCE1RUqdQWfFZwWOIZO7QrVzILHtj/GcYA DYcGekDBF1MlZ3pBAgnmilKkHurRYLNIaUEZjARBlDdoi+HBYdYBjI3weu3QThJlEBamD03EjL1n czb3BD3wakuoANW4P6/mhPhBH2RpUHo0EpoidzYlAS4gJEQygKvFGIowCkHFh+wDh/34jmDhAUkg j+FXj305jxziUsr2BDDAj6AChwQQkC8GOnJobCfxbet3bPzhbdLydmrBQ2ihNnCTNpyJiLbklr7G kaQpPqk4ggQ2L/3HXgqjChGXGrLgOBSiG6hQiqbYa4ChFyiwTRQXCrQjiejgBO8wRbJoTuaEV+zw lCCUiyAEYdyRlNwBaj3YDozgHIagnDcW/08N4QMScSnNiAQidjP6oR8XUI0eQAHH0hXVllk8F2tl aR88lyLKtz6uUBKU15b0VgjSBz6JUBmPEBSmMEDyB4ee1I/wCBZ9maAKmgRaA3ba+FEESqCeZTYp +TPt9woyxUNmV0SecX3HhUBogQpNcFw0VRI3kH9NABehyYj2VpqkCT4jCCWk0H+Q9wzP4Bm7wj1B lDBFtAqGZg3bQApTNaM5qTgcRJx4xVcel3viUFcjd05b9JHNqWmEwljRCYxQaWm7E1g9yB2+2J0X wXuaYgNCAHxbOUf7s4T7U23ERx8KQFBOyHNUwz6gJFNKURJTshduGX3nmC7URyUsonYhof8EEZqX ekkVGwIWejkFYIdZYuGPo7U9xZWQcZeQDfltmtc529MfpDVlI6pTVkKiojqinNlutgQ4EOWiquqR jDakiEZmuIKSsTlfoIM5rhALsOAlpCMNKQSkAYJoU0IK3NQNoAAO5JByTSScr7d6w6kcy2GcInc4 9nQeS/kPLwd7D+Fx53EdYNRg6/EevXczBFCEYlOEnLSmVqGPY/eGQmB+nDVr/wh0c0oSK6I2EGQq R6d0IGkYfVErryVTQqA9BGp+zNKPJqJ9j2qoEVpcvVI1lDmQGPpiLyZ/6udilPkzNyCxsDWiJnpA +CcjQnU3RfMTj0CDqlp4FDUdc/UAQ9r/DVaVFm8CTXs0RJ13Gq5ADTykChdocIxjinJxVQ3ETdvk DnOVJ7hDnOiQepGIgvFQDqZHHctKRiqjcthaT1UKHsEzDzAzczdzMyemlZZlAlupAF7hFV2BNSRi Ihfgj1AnlkCnfBKqbdJyBfh5GT9hTiEZeg5iKyhaqVTzj1ARpwQLKqDydHBIh5/0YhAbU8/SbdzG fpoqdFD2YnYIW3/4kCTqIqoUFyI7IEhisidLeIRUGSvRsmS2Cs/kJnk2RDi6FGdxJd3TXngXDR/I FvYpcC7ABExAYMuhJ3kSDsJJOxARYY6GgrUzangVtSvXRV/UaTzYECn3Hdxplad2AVvZ/wPk+pVk y1IhQiLCZW2E20hP0AFQR6BkGhIqInR22ja/GoLl2DSO8C11ybFKQZm1BodxurBvG4cUqr5C13Z2 uIcZy0LHhSXqx36CClsFLECjyiINnKKmZFQ7woA0piqha4CHsDouOxy9caOwyxn54pJrRTpYBgFU okovqz5YxlA0Ig27yxIpmGCRlg7CGbxHm09TBJQINrwmFxDHKA+1t7xC3GnUIb0f1ow2YGpdW6ZP QAFNjJ4RoBVsagI5wD85YCLtSD1qO0c+90lweEdBp34l8R//4VMqwYAV56cvYUitFVRsw5DHdmy2 BpALy2IIJW52yEILOUozxccBFEDMUP+nQqeWlStuHDtu8Ee/1tI2pkoUUoVaF3XBKHteN7lKnIFA nLi6qQCzbkLCp2ASIXBu0YASKEwlBXejMZtA/+UCrAMKKShFUBC8sAy8w2mLKIhhDKZFuew7lkYQ WdpOsme1u0jDYCqmZMpqRQjFX8kVa8qmVwwsBYvFuzBQniR2gPuP4ykS/yFAFhLKQkVLARY46Lgg GWUXcWG5eKh2sdUrTzehAntr2gZlacdCJkrAT8ZCn7FHBJCxyze5dkqZbad2cjdulstleKpuxrFU g9eikrxLg8Kywwpw3TAcKKHKqssb99LBNCJMC0UtWCbBkfcbulJo0ECsrCMIt/y7KTj/O7H8yjlc yzK8YH+Vw/igvECcpdHZO4BlrdXBjMbctVrZxBGAnuhZLMwcxWkqjU8QFWFXWQgwR09RvtQDxlip mHFsUychF0LVF0anZo5wmuk1FGFmfYHqbdvzzuln1mYjuQLkfpfbCtCiCoH4bfhMmQJ9sca2mI3b uA+ZNm78UztCbwvd0G1GV1DAOnJWJ6KAKzoVHNmgVdHQQJH9Gz17yp9hwhKgFKxwyiaBCl4lVjzU idx00kYgA+bUerJ8VxsHEcFby02rYIBFvNThcb5sWPEUzL2sCfLAPJfyRuIJfNS4hOjZFeo5fCTC hO8jFlMwnifGAFYDh+QLKmCcUBJb/4UlqkoJLYBrDNZ+Y0FiNogMLKiCKsikFUqhtMh3GC1xQ6Jx fRIsyUKgiKEs9DOS+2LHlcAkqsiDCMHZtV2YoWaEPclSNazAZCd3xsEdbIEqQSV5EXkbLQ28uhl8 1gqw+2fOpBstPNqmLVWvHClPWsPD6XEibstQC5QPNnu/nGmuV63wdB0wswM0c2o2Z6ZL2APVKD8i lZ4RwIQgUiJhB1Luw0l3xK5j949kQaC09mJ3CiOUJxd7oRiIAaOE0Fo/Ql37hzaWi5DqdwMOmS3V Ym4wQtZNsHCdnKEAVN5rjZADXdYMbKKDqH84AheBIYAbGeAO7RCIzU2nUOAmGdlc1f9VgK5uA0fZ bXEvJNkbulJfjaM+PGTCJj1XWaABKy1ptKxgrzjLKdfLJz5q6OROA7GDmtZyRVyl+iQRkJXEx/wU PeBqN34s8oPjaqqPYfeG9AHV9BEV7ClHQ54hcEhroLLW/HESEd4j5zKX56NBKDCRVy5mLMI90qLe CiQjOaJ39gqynnmnKyyHqrCQ5w1lC4l2xaSW9Bs3+2foX6bdkGzn4gXEPnBCw7rKjBNM3JA6dJI6 EO6yKezZm3jKn80KabVWYSVf7cs6RmAI4dQcgsKkPOxokEbbtK3LtKhXuIM7JSSlThLEou5O0eEe 38l7qCYEP5AhFGACX5meRm2NaYv/LECeIa42W4TbthnyhkwWElABdFAIQLeLhTsC5SAJ1uKiblyW d9ZSr7mCdyCLI3GebkJT7on0x7myUBvr9LkixlvuwNfn9JmbomoBF5x7N0iiS+o+XgkYJcDEOMPB Sn0O4ZNdJYheDSLdU30Gux4YccMhpJSBT61YTqR2V49mD7BTV+OUvM1BckDpHLrM6bkDQltUjPUU 29WKWLoXytCDal7bAdKoAFAcxcUyfEktjTF/jZ4/ntF9NUvthFBXUIcLEivEIhJ8xg/VE6nIF9k1 I2SNojDLvoVeZoYOZlZe7bZiLVfg9Dplp1n1xxQrdIqsx8L/oZ6JIyLbN4LH0GHf/0ss98hBYSes FNm8SgK82l7wJbt4BifPQESp7Jo/Gg2gN3gxIU7CyycnCLxPisPIOg/HiXo+zFf2QIzXSZ0YDwhQ goOEhFlZD1mCioM+Tjs7IUhINpUdHUI9Tz0mJhGfn0QAEQClCgoRCk8MTzAMrBexFyasDAhCtbWu DLi9r0K9BEK3BARKCzcETQcHVy8SMyRVKBrVGtTW1yjbKFcSLwfgL8vMTU3gEOThL+wQB9/h7y9X 3u/1V8vm+k03TcbHAZQEVGau2AKBC4wdXGAu2bFj+8hdaeYN2rYq2R5oTHSoo8ePIEOKHEmypMmQ GzVgrFJFGokZz2I+OwCB3Td27f8g6Nzp7oU7CAGCBtApNEDCIEEICF2wIAjToEx1vmDiwoUMaxo7 aqDB1YePQTQEhR3rg4YTsVDCFir09SuNr2kJtRX09UHbuYM2Qqn7YK3fvXAHdTTEKO2jEJIoWepw QdMnBUSIgAIFgAMAVB4iPNk8ZbOqJxcYmNgsJPSTzrwu4Nq8+VVqXAwuuCJWrDZDcy9mSOC2rRo2 37xRwHR24FwTesXDRfRZvCe7ePaagWNW3FyAfQIh3jhYTMD1JkoIHARfLCC/JgsF3riefGJxCd6u zOCGVUPWk/jz699PUqM1Eii4JEEV30hgIE7r3PQCCT4BtVODDvrk1FJFBUDAhEX/NbXAUDxVRYIM Mjxg30aHPPDWW414peKJZp2Y1lh/oRVXWkYE9ldfMeaYI4yFHJJiI1BEMkkINlDCWA89NIYkBRRE QIEnkZEygmQAePDZE6c8EUFnq7Rm2iubXYAAK1p2CVpoW7JmmpgJIYDAMbc1M4M3M2CkDXC9bWMg TODgYw4z4zDzUz/6UMeMe38iWt13AQUggDHXNVqbEutNGlR2DKV33j43UIfPO98EGKCd1WzEUUen 8qfqqqoKooEPMrDU0oDPuICTTzhJwOA7DBYlgYNB1QSVUUEQO+FTEDAVRApMRfVCVRBYBaIMUMhQ 10dcvXVXV16lVZa2UJzF1YyE/6i1Vrbd0rWXjufKyC67isDl1mGSVGKJkp2Y0GSTVHJgGQBEeBBw KpulEtrBq1zAGmtXKjxFlgpY6dkpCsiiQGwIpICAeAYp8Wdyu/GG50WjzjDnO82kXI5y1uVzKMv5 zFOOPv1sF9ACj94MqYUChFebUgRZqER2hNb853HUgWMgCtNgI6KpH6XK6tRUj4RjqdfISgKDDSrI DgkSBPCOUMAuJcCGTSGldtrNos3shA+6sHWI1ea1iEfZnuiVE2Wp+G23LBpBLo9+mQvYujYW/u7i fvmoblmPCGnDJZc0hi+TqIhSWSmlgPKEZGqCtkoOoMUWGplkrvIZxaCpcoEqY/9mebqbPyvjcRPX 2dQ009xAc6CBzriX8jLPgaMOdcsgF9E+AXnXaHg3+6xUeD0T0POjk+KuzM3g4f7x8c1YFGBGUFdt /vkkQaHRVSJmHSDY34B9q643SUDTTxkeG4Sby16IFNpOSVazePK1D71qXYroi9RO5IS8lWUv44Lc iowAo3GRqxCGA1JYEicXunxFEYXp0eIUYa4SqStISEAMJVLAGMt1gBOdiAARIMM5UYzgMQVLhSdk NzrQlEZhsMASw7DEOtJpSWKnENPpXkG7n6GNHAZaGm90cxOT2Y8cSJPOOVZ2HJfJLCIDid5Bbsaz 8OCsY9gTj0BsAz3rUKohhTL/1DxCxjtqPI0jUkOfHqumPlNVQ1bc2Nr7aoKTnYjtBUWBQLH+p7YA 7C8pSFGKUYyygJ1ERSe2mpsGoKABa9Wlj/c5RFfewrdu/W1dKPpWBfN2QRltEDCv/Mtd1vW4teCo g+/qS2B8ICRJLGBySopFDCNDBE9sjgiWiUAnnmACVGhGAc0czSyyNEQzXWk0qriSAkqQGSKWzjW8 GIabNuYPgXhvJj2pyHDgM6dz9Ek50zkaFqvTDCwyb43Psx70iqGENHZHnzg7hhPNcbvvVCd5FIFG 01iCFRLt8aHnE0Qi/IMRabBka/SLUE2AIraObggqAGxbUI41SaPwRCdU2ZoB/6vhg2qoLzAThQKq Ggi5cfGNLtryG43UMpaexsVc5hIXTw93QnXFspZ5QcRfQrgIIK2rL2aBxA4Us5gjQSlKpfDXv5Sp imcyczSeEaI2E/a6hD2hBElkAMWyaaW1mglMw+iFBQySEEkegCnEC4dwxAGfd6pDH+lYXj7k+Ubz kAdoFqodpAgw10fl7Ge4S893DtIP5CUqN9HgXawaOlFEQPSzq1Kgj6wxDZboSn4QKBA6ekKTA5At Q0IJILB0UskIPUtu06rCVazBSa8oMKbq8xGMGtjAnLbIgTzyKVho1K4HIi4uptwWBGVJS1wuVaZQ EFx1vRLVetmLMUd6QpNGEf+BEVTmX5z7hMA0MxplKkwWpvmMaTzQpYhtCRVsxS/FHkNNVfyCiRv7 mQDQM+CaXPagxEsUbpRTnO8IVh91XWPtEqtYAZdHwkpZCDJadrvvvYdOL5GGNdgHtTyC9sQlyYp/ WioDEmhApfKzCfx09Rx3DCUAzNnoUL4BlEoOBUIcipbcPgSiTlZjt4e7ikQ5ebeteAuCNOWu3vqm ykFo91wZpOVc4NKVn4IFL05NF5A4qKPAcAUSk/glC4+kTE2YQDKkoAwpSpGZKgmxrPJVa2ywtOcp dFO+p7CSWiPQVsx4IDMRU0BnYLAKcA6DAAG2DaP+FCgEs0cClE7HddTTMn3/mNNn3BFCbarHs5/N tTz/pLAT4WROBLvsHAYi0NaqYIRSldihKM611fRijZZWQ6VRxOjX4AGOQ9IEVzl5BiEbFGNMDnnI V9ktkktVrZb6QER2kwENtPtKbZnFbzr1aZYJ52XAGXXMG3wgmYuqPna/a8t7OYxiLkA5hY0GSaEg L+e26oEqeY6IqZgCoembC4WlSa3ZJHTr2vqwU6RC0ZmR2MNsQXFbQPrituHnFg2FPIY0WB9GiUg/ PNbgn0nvZ6pmbIVRLlCUa2+McDzaOrzRkq1t0tamMrGud+4RjXDyVTcP0YujeNpf4bhBriUbIody 7JMuCNkMIsGQpdHiuUkb/+crts/NYUoteT1ZlVtWUXbDIq6/ZEssZEHlc22El1SOGd6zZJzPl+yI SNTrEjZAQOWQJF44y7AUogj8oYkQVhMojIiqkFgsHnboMxGRmxB7eMInw00PdMby4HyFalQzzgl7 D4wtuw7aKGkMAhCqNgMRBj9rM9fWQ9oCFhiGBRBwatoLwfWmf5Q5GcK9MUJK5vIwkCY52T4ShZLn yEcVizfpA6lvzQXhICT+gkIT6tuYQsGC0IJIUBMYf0hWndQtka3t65b6/Gmw0kCtBaHtwz2QRcZV Ed+Ke3YM8nRcV5YRvI3qFrEjLuzyYkojVFR1JwlNUAlCUDmW0xifI0OfcP9eliEZ/cYBX4VNqIAl sXBnDCBwjUcmW5IKD+cBJaAlCWdfI3hoVmJ52aRo/tVo4yRqkxKDc8V725NhAhVhuOMzZsRYMMh6 tLcxP/h6wEB7sxd7kTZh2WEQSuFpBhUPwRMNDLVJOXcfUqNzyadHPmdkHyJ1cuMCG9VawXJj7CAU rsVRJvUTuNJ9XANjm9WGIxYrLNYXN9dH9gErVQAXDyADTkB/L9IWx+Vt35JdglhBaEFBY0dmc4Ei bBF2WrZ/d+F/OhJC8hI5IXCAl0AANqAJmtAYnkAKoqBVUdA5HmAZ7QVNoCBNfMYKEaMxpxExKKiC 3ERorggKKBhohwZxJTD/BbmYTUIUG6UhaqIGe6LGHaf2HcpAVxyzcqWnWKcmDLencsVwC5HWeghw PYoVKQAhHpGyD8lxDvKhG0xjJ/6Rc1dYjsQnIjLgIVxIFK9VITdWIRz1USdVEy7wK9s3dbEiK9H2 YiDyIeWHNfaxFwe0F9pmFnzDLVIWZayEFtv2ImjHbRbkF24hkankiHAHGGK2OPtHL95VCfSmJJvR JOYFMAAwAslEaJIRQ8skRIZHOqaxGU0AAQjQTQK3VrcYaP42Z0g0ipbnAUmQiyWwiwJ3Z6rBC+HE C6U3hAsRjaWXAsVwas3Yg7MHjMQQVzBIe8XwjLXxg80Ie4w1V9KDHsXQ/z2gNxF0UloNNSLGV47J 126wAm1SZ0hhiH1mCIaTVFvRR0gMoobPoFJ24mKxolLTcmRGJiLmBytfYS0FSX/fllMZOWbV5ZCB 2EGmNC5phyKK6HXvooiMY0uCEDmRcIBFYjlJwkxP4AE3RAFZxTmjAGfQdJqaMTGsoUwkyCw2QGiH 9xmTIWePMRmHNgoRUyW1mHi3uDDZpFZPUJWi1nl1VWFNVDsB5pSQBoTiBGk9CAxZqXq4B41Ao42R tY3wUBPfAGL0oZZTyJYolnMspX6/1o9AFgJB9hTKUklOIVsRcj/zWBVT0YW4FW26pRJXsRLkY2Re QZjTUpARhC7vd0Hd9v9/qNRTMBJdryQvGzRUftiZ64ahUTVVk2AkHWADsaAJkOGAmsOaneMk6tVV PWklD1cwAHB5HtBMmOFvpzAwDuhMctZvAPOKaXJoBIN4a6UArlAAvIAAB+MmszedcWWd4iSNsFEa 4ySNbkKVwACM2KmVzviUqsdyqMce8fAM8LEn0wAgI2Kex4eeEOVHI0ZkIiJ1OSEVYzh6Ydg2TxEs thUhTDAVc2N1hGlkpEIqvbZ8VuEVB/pT4KY33lJBbBeZDJmghgpdM8JTHCRmGepunektewgJRPJd 96KJCqCaNsQBI7lV+ZYZ94UlW9KTmjGKwtl4p2mj6qVvPkoZiOYvrBr/cZnBgX/GooJGTf/FZ1Ia jXF1C6oxlbfAREykpGNiC75Qpc56pVvKndhjFGfDKB9nE3MkKkyDNXfUWWiapmoabd9XdfpJQD4R FSIlBZaENk0hhhAiFV5IFbjlYkbmp+GXDX9kLW/oSelXkJCKkcMFQRHpZebyfg3qbZBaodM1qWox mdRFZp2VCDFSd3ZHCUYiC6b5ZiRZGRhgGSbpLzYacbHpirx4RA3no0ekGQ94oqIgMCg4MC4rnFPg Z7f4in5WJcCZA2vFaK+gaBTnpHFVpLggjcKAlVEqpUJ7C88KjLUjaieHWFABcvsApvazG7uDEef5 rSemngAqbbZiK7dV/0jvyhNnmCw8cUnStxNMAAHyahVEFiv7WGT42p5Bd4cqAiKwoqjqJqFxQUFu F6H892SYKbhcJhYTCS5g4SIetHaMeqk4palUFQt7Bxr68nccy5r/kpIB518OVyZ7xhkDh6s6pACb o14BM3goiLO5ekQ8+YqpS2gPh1bbxDpZUgtPYJW5YJS/sKxNukSuMQxIqbTH6qxZGo3NmBAAkQ+R wh7ekCvbACCkMoVWqLVTo6Yvxo8tZit5+nRg2yBvKnVry7bzyCHeyxPPZ3VyC7eECaj+uY+dxGQs Vi2WySLclahANTiSWUsWOqEW6lwKO6HLtbDTlWWOmzeQWwkXeyQ4Sv8KHNCx6PV3fgeCOgS7NMuC JMgZqKteOopopjurLotMuNq6rttvKxtna/UwuihorzAFzPoKMAADx8oArgC8medoQmuVv9gLQPto 0dpPx1BgkzVPMTEgALKt0ku9aYoICnRkW7iFVfG1tkKPuNKF28cgTHDFV+wCVHHFmLS24ets/WlA RtBi0qZbGAEiZwyY4gciIlJrPlBrgqOIeTNKlnm4qLSgYOYimHm4fth/hPtcgQvAj7mIz3VLGEQv HTo5LYRvoGBeI1mi5CVDLquyPuqKlXwa3aQln+AJEwicONRvAQOzL+u6HHBopZyqqVsKQbmCm3Fo uUhxQtoKroEauSv/w+AUGmNipEPLCsBolMRbpVo6YabHe7jThOYgHzbRG+JIjiWCxFj4cwFKxuLn heoIxVyoUlMnNylFxlvTttESviHAtlhsFW6bveVMxiqxhXKrzszHnn3RfikCf8pFiBP5XA1LsDg1 I/W7v4ZasIR4VIyLF5rJFizCofZyL4zBTCS6OaJakv4CeA88ipZhqr5JwoSWkw7HAVFgJSZQJTMk Q6VsqpFhqiM8ygJjqwCQBCK40iL4MJXHwrrLwsDAClPgCrsgw7LMADnws797C6twpUO4lT1oav/A ew5WKBNhMvMxH1FoptPrzNWbhVfRfOLahd43ZGvrttV8oG9Lxun4/8ReLM7izAQkgMVZ3MTix4a6 hcZAV2vRlpiE6zcQ6mUvEpGFa26z1KAZCrgDrbdapr9PxjjdlRjfRTk9AAr80tBaVZKW25t0BoIU HQqQvaO9qVUo6cECp14TrcEo+IE0e2ifbXnclARVkgQzq4IzexovPMNCAANCusI1bcs1DE5OipTL iZ1ZCczRmh7GgB5BEUdmqVBFDKhrCdWfpRFeYcZoXHU11xJGZs5cWBXp2NV4S5CvcqDpOC1arMVc nNXV/GxT931EtsZe3UlktwP0x114bMcOGqmIw9cRxBb2LMANCzj0PEuJ2LgS+UCI7KEvJAubDCVZ 1cAPnW+7iWhQIv/BkwFnrAmzGrzAn6AldOay9PWBrCFwnz2zDadoKq3SM5uLp5GLM7vaLyzbG3jT 4LTTGEPbTBpOWzqESVo7HpNYyft5FEEn0TAfv1Fixg2unPTWnbSF/zlrFdWP0t2FLUYD2D0tfmMt Y9xJT67dW9zdVdG2T3zlz+Z8uCXd0/Iie+iYCxpLhhOI+O3eR3VUE5nX/ZeIfpzHlBnY+s0WiCwJ L9QB4rUJhz1MJXleGFABoiownyicJwrKVBJ4G0uSD+1MIuy6qFzJoG15YcUlskzirFDiMIALNi3D JW6Um+4aFyO0rvEEKp55StvCTkqst61YBxGWhXIcYXoFVcDU1GD/R07tWT2OPhjpN8r9nywRzW/7 xEnuAjSgztltLYAx1erXUnDcSdn9IVYNtlBszWCN5dFNzn0cgKN0bvd7z/ANqX3zz2oXoZJKiCc0 qYCskd/SS3d3CXe+CZ+6sqLgwA0MgVr10KxpkhsLZ/jOwBxAChss0aXcqpYsMStqeZ1By0oLG7wA AxMQTlXqy0fZ2gr/pEMbtESKrL/7i0VKnVupjApRDITipQmF4wPyG+apxE996/sxUUu8fEE+ZC0R bUYu3TQgLUsOIu1mF8s+xjWSXW9s7GOs5c53vk98zbfFhd3NBDLABORyqHVdXS5SuLSkXAtquGiB iPqMduXWf2SR/9+I25mRk8h4dwlOEkN/p9gY0LEYEAWLHTCreUxpXwEl6cjmRQRTspoBk0xTwAIs wAEe/uiozRkvfBqxLdtLawG8EHuw4ZWxB3uK76zLmrRDOAw7vUS1nazR+JyqvoxDowyEcszhoE6x Duso0D5YV9wqbz5yqN1OXPRdKK8gst2xr+TZfd3s4yqwYgS6n/s+MhiGyc0wBrZkLXUSoJ9fW9b7 Ka9McKjZ7r9ksW3qpmWAq9d6zahSlqhNr7Bel+aRKdDWhZkbOgl4NzmauBlwZu8c+y8jsP6Ad16R sW/ohf5vP+C22rqd4YqLpuE9uzr+BQgMgkKEQggWBBZCBIkWiv+KjAQLBIdCj4WOioUIhAyFmxac g4WJi4uRqKkBAU0HTa+vB1dXL7QSKCQSVVUavA+/v1nAWcTFxsfIycrLzM3OyA9QMjI+PiQuEC7Y EEzcEBDXTNMu0+LT5+gyRjJQPkbu0dVQUEbRx+3r0yQ049r+2kyYvNB27ZoMbedo0PCx0IlChVBo RIwoceG8ihN9zJunsSLDiB9BXgSpcWPJjxLlLeyYceRKkRpjwtxIs6UPJzt2hEBSxIbPDh16POmh IEIEABw4HAWANCmHChg4jOAAgAgRp1eZUkUalerWpFOZMvXAwYOHKR4iKHhyVgEDGFOmwBCU4wkD BIIEcToVCRH/IyUElCi5cQNVkwWA/wZW8ohRY1OENO0lQIjTXFKn/KZiNIkAq8+wYs2SMIMEitMa UqcG9oBYsGewY8uevaydO3bXEGa79o0JiYDmpuVLd27dvAdGNNTDVxJK62K2U/uQoYH6dH3nqhsk rk74w+9OUGKUyFEmy4kWPzppN/7iR5Yq0ZefyNF2u/spF5KvGbN58/rsKZQTEkjYUGAHFzzxBBFP mGAUUw86xQEGI1QwoVRiWUUWVURoJaFXVW1oFlkjotVWXHLBJZcQgtiFQCWEJKJYJIAxhshgNQYg WGeCLSbYjzT2BZkllBnSCWamOCLjAgEw0qRnTYAGywGyvCAB/y0o3IICL6o59xxrr9Em5phkCsPc dKlRRwIJ+rjgm5tMkHOONOdcp847RtDkjkbvbPScmVBo4Fyg8giqAZo+HFrdotXIcxwUWUizUjUr eSRSSvbxh199Flmannye3lfSfvXBh56lNaUKoKrs4bSTTz/1IGsPRtXqIVcUAjBCFF7xysFVvnqY VIdIAVCrB8YqaNYUCkYwhQLPwjDXtJWxyNdmgRHQRI8//njDK9++ogQriCG2rY9AMkZZIntVG6Mm mn0CCWBPCjCJlK3EUqUE/G7py2pgtjZMmQQX7Ixy1WUHRRXnsKmBC2selM47xeHT5zzU6LlOnu7c 8+ig0QTzZ/+khobMmjDQvXdfqRmRR6mo7ZEa0sujyndefizjjBF+KInaEn//6QmRqzsQaANQCApl FBFGOVisWLrqioGvWzU1LAdRhFVVU0SMaJazzNrFgIIKeuKJJTGWkgpg5zKyLWIEfEvYDQfIHRor oTVxgxLbggtkZJgYwoghCFB2iGPrFo7tJONOGUu+B9Ry5QxVoADwya4ZrPnm0LRDjQy5aQdxxKGj Yw7FdXJMkxHvQHdxO8YILEyYKI8csMC0Q6dQR592OlJ8mLK3MsstZ9SoTZfyDFPNm/p+kjzmDQ89 RTflFMKrR3dgwwU9OFgrBUdNvXVVI+j6K9NXWRXsVmGln2H/BF2P5UHZT7AIgyUWnN0IJZr9hZiO nFGCuQQjLr0NRm9RuhssnhQuHf3IL4dQnJHe9YkYXUsSkhAABlcRpQC4wnGykICVJLAmLmkATLEb GedWKKZopIZhPoCYmkD3DwgMZDvkGE5x3JEnjvQpZZAihnOa8ScVDuwZpyKPfoT3Eoz85z2k2s95 mBe0mCGvPTGBCKbi87LgncRlWqxeCIqWvaQlyCrwgx8HTsACX0UBKhiIYxSiEoU6+moqGEJKWH7l gQ6lpUTOqp8nOIEtbf3IbwlsYOPwJsK6IZBKV6BSLF4QmgMIBm97q1FfUoGIU7yoMpRY12bsJcAm NSmBjmuC/+RmUBpd/AuFsWOhLFv4i0MlqjpVYNOa/PENbgBEBgFBh5zYsaea5Mk1QZylM+jDO5ux JCWOGol9SKUn+vismo5q4s82YhH0ZNGazKwJprpZKpxYLwTaAwr3TMDOCICvQ+y7UFLmCBYOFQtr TgmRVaqillox4AIAvYBeFJetuBFwga2gRd5eYaUXvCByB7jSB2UhiytciRYPzajkHtcEbX2rR6hI TCQsyAlEhIIviFjAYfB2GAGgUpX5qgUrq3ALEpjwhKnxUu6UyVMiRkc1h2IY6MLhj4jBiTs9xMc8 ImUPnqqQGVJk2Te7aBv/SNMkJtHZ9CAyqm8uMYrCC8nOOP/iskypilLkcYI5safOC5igeyaggPnK N5U6UuiuUsHACaJQlauEpXz7ZFoEvvYEtTzhApT4hAT/wrcpzSKSF42oRUM4gyxZdAb8yuyVJHcl foXQoQ5l5SxmEMlWUMkVjW1bQQspSm59ZlyvVekHVZnRyF3BNCVclJeg0dPeLuMXiaKOdGzasKIa F5gIEY46BNWci0XKt7E5CahWZqpnBo26HfEq9abrkfV4cXfVXFmnsisSinyHVRVpyBiNhjTuwZVW VpEK1uzIgqjQUY5TO189MdQh9AHAA0VZiyAEegEh2OBaB6VoKyp7mgY72MEaaPAuWFlZBp8Gs1eg MGkwu+H/y0L2sbWY7bYI2C1NzohGTIpSij/DigNAQJWz4CwJG7wmgEH3xs0IVHIWxbBcjg5iPyYI d6YxvKTSpKk4XgbHHqKpZ04Xq9S1os44BRIpCy9VptoUQ96zZVRpanc0cFUIyngBM/aAAu9kWl3n O6GoWChrUcNj+obFz8EKVgF4PmzZLug2fUGSwqyEMGosF+HUSPg0lTP0lk5YuUbvosGAjjRpaCHJ vPHNkEESaWBeirfPuAK0tqjCDFxwmjWRQDonNOJTkyzLjSQHOzbVpS4bZmrQDZkd+MC1qli9DD7t 7HhJlC45rVo8lTRHi80b1e6sa1b6jHN4YzVPo5yskLUS/6i9snJrGokwAiLUUVd2jGMcnzJuO9Zx nvrVJ1uM8oS1HFYIiA2pucL1iscGetCFVg2hcQpU1Tyg3/z+d74J7eDKUQ6jCn0xLMbF8MDALRVM KiVoqORByb1gBi+onIRvulNeQ5cei5qGNUDHMFnnhiC/FGZx5mRMmnjcY1d11DeprKmwSm/YyFZZ VJtszZ5Vlyb56dl3qk1WKLiKQAXKHjvZiWYK+FW+u2qjuEcwFQxUgK74xApZmNZHs9w5AmxhFl4U lLYcHbQJk80wadVuYdQAVeBvh7u/AZ7qfmcplw0FLSUPg5iGA2ZvqPDLKvjW4g/a0KGkIeGaFt2l jr+8t//RKE9qCvLjk5MOYr45R5zQwcOgqUMjKHt8FsA7H6Ir0ZpM3mY3yfszajcvnNy8FHm1KBGH bJkh+QEvQ2x/E9ub02g/CQr3lmYV9e3K3G00N6+6DSyvJKUqZdFQ1zpklK+BnQFCIdsTOFHSTI94 MfRO6IPz7W/W0P38dt84aWvxAoWL69JA8lFgTukKvImY/aHNrGnifkTR9zQeg3IQJycnAHFUBxEc DWNr6HAxqNMc/udEXUQDSXV67aEqZbVF5vESz1OBziZNp8dd0QQ9+tEft4d71SBmB4I0QdEDxVd8 u3J8dXQCe2VHM5g13sYr8DQi+QQ1tVIWzpIWhQV2Ajb/F6OgCZTRSYtgATiSWiN0AG0HMPwHJnMH DDj1b4OGAqTFL6XVaYOxADfQdwaEQfPXUZ3GUHp3cS5AOft2ObLjf071ALfBJ6BDA0QFJ27iS2yy eeXAJj2WMMNhJ+wQMv7HeqOSJxJhZEDHKtgke+WxZfIhTq7mQ87GRS0xKSQhbcsWIJSCgmWUNBTw BJ/Ygt4GBDS4fPMVBTeIivLlIXj0K8aSRnaWFoMFhGrxLNCSItJSCNJyNpeRGYmBI3rjCrLAYBY2 hVUocLdDhZZjOaJ2YZE0Cx+EI6zQWJqkUn2TN6zQS4ineLxAaCezam64OdVgSxyBSz7WJr8hQ0K2 HaCD/wIKiDrE4QOhJ3q4V1WPSE2KiGWNaHP98TtXBlYuQQ9TFT2Noh+VMm1hxnu4p1Y7wIlAMStC 4XRWsSB2RHW7UoPxxSt25G0fwhT9xU+veBTWV31GYYvLgiIpEhfSAhe5KC9oExncwjeVNoyRRlpt 53aroW+F9mBYSGHQiFp+oyM64oUL9QoB0H5NcHiNhmi94AsiE46yJDAaISjzEHL7ADoakBsCERC+ RA5scg7/MEycJxwaAJWfMm3SoxEAODyrgk3TBj39+IgmIRNbNE3c1TIP4RBDV21qRTQ5oRPXg3Q2 MCugOBTw04JAkIoxWIN11W04uE+tiD4fKRZkESLsNv+LCnAWaIGSKokiKoKL0/IWQnA/9/MJ8rdp 9LY3I+ZYFVVRj3UFDiZaFIYCjyULqcQ3AlQj4MJS+QIB2ah4pRZ3ruF4UEkwJvML51ByQNYPd9hL cXJyNNRL3CAObjJM1VCc7gBNdLkpeiITkaePcPmWbwlNZjVl8PFsMXMTCdmXDPmXDekCOoEE1xOY KZhOtHJmotiCdUSKMtifLJB85wYs3VY+EkIs8EOZ1dd1TDMFs2gWeHaLMJAEEooiE5oEKrmSGNqS mBBSMaku6UJAqombIyaTrXla0Dgu4UIYCGR2QxkujUMlDvVih2clpmFCKDAM4FicZYI7QwSH2OEP cbL/DdLpDdVZh+03ncG0gIKCnSUobNklbGxJbM9TVW9ZPC/hHqBiKk5kXg+Bey7gBC5AA+6pE+4Z mDtRIEXQAT8AkRJJBGmmPi4YBTPIRh8gg1nzKzgYoFZjLHVWK2tRFLUShHGRFgImCJ9poVNgoRUa FxaaoRhaQSblCPjDGJQaf0ryknzGWCLKWPTGNzegI4WBmwP0hYIRfjJKSTRqar2wGjqlo5zTGqlG DLc0DVWADUDmDb2RDW5yQzX0DclFZLYxj244Hv04Vfk4H3FJKSVoHwiZVVQ2VkzUVXnJkA5hTuc0 n/MJmIKJNGvKghPZpndakce3V3bKRm0EFnN0bvZl/z5dYSze81/xI4tgB3ZPYIvthmcqIi0oKaGI mqiJ6qgXGjiAUwiUqoSZ8AhKmC0g5Qjxpxj/ky+AVyMNJ5QMh1AI9FCqlFkFV36146qvqpa/ECi2 VqvaEKMz6gIDAVphyRsQAymt4SceSxKvl14EKRPMSl3MKnO2saXUdKWWwjthVhHhAR4JGZ/rtRNI i3RIVwRGk6bdSis80IJY00YscAJTM0f9mbVVW1/0JE90tTVeUT4HOiJ+Gqj0imcC5W5EWAAY6pn6 miKEsJKduSIaCqkwKQRKgD8Mqy4G+wiAQSR/AUC4uT+MtRh9I0B2I6KnFTn3tob957ErBAyEElTo iP+y0ulQKIu57VeyJGBDJJAqxPl42nmz0AplbTmXaOkz4nkzASJVZHVe7NmeZKqtSlu7NtATaWog PKGmsoJmLVhXeqVXVZu1BrBXFUCucyRuHRIVWGcs/fV8WaEUyCKLmZkWYWMCh5W2DFAAeQEDE+Co bwuaMHAEbZuLpPkJ51tB8nKwmmAJNhIZ/bMYnUEjHbVpg2FQnto4HGUlGaYlJvSNkBu5teQcikJD ppa5M4q5QDYQmTsQREYNT+mqT2qPkzI9aGVsqyueOes749Wl1dZlYEatazVGgHmmSGfCgommt3u7 HcC0SLCCTgc+Tsd8VJeucjq8J1CnxVunbBRH9cX/vOM2IVQHNVpTLLL4XwB2tsyCvTmgvYaaF6MZ t+TrqOiboVM8xfeDxStZCEewvvCLtwy7vibFob/YNp7aNzqyLd9yWpTELyRQWf+baqEbwGQSssDg AwyjDRKAsmtypEP6De2nuRFzJ2oZwOlBgkHnReFhwch6exUsnk4UM2DWZQipl9Z6PWQamLornwRi wrfbtOkEFGuKZmcWV9s2FXgER3qVtTL4Afblw+JGIfIkIR45vchSfUgMYAyaxGqBZ//EAAoAAgoA A2y7klOsi+e7xV3cxXErxXE7vkLQxVnMxS8JCQbLGNWcCYmhJIObCCClSap5uPqSsZjFYP/7lDlK /8e0JMdpgnegBQEL8A1NEALfEDmbm7mDLHJLlc4vR17Kqqyrxx42q7pUmrPH4zwcTFbK2pdBa62Z XLugnIK428JH8wPcuqY8QAGyAorulJ9xxhRUp8qrLG5JIW7CYiHylU/95aBG8aAOKmDtphYm4Mtj 5713UQAxEDiSOrDqm77QXJrMrL56y74mValKaNQ2IlL3mxh6E7gklqLB2EgRhQu5VX78rM5jUkuq QUMC0X4BsABMAtZgTS69tEs25YePctUeN04IecGiMj1siVUVjLMFeV46ox99ObsonKYuXAR+7dc/ ENiC/QMUkNFoFrVRW8NA4Jh7ZRVRaxUDapGRXf8BFnJ1VieDVie8sRxHI0DSGMAU47Y1g4XEMg2o P6gAAPVPaesWeMG9d9Eu8AIv+IOpQg2psb3T7KtpJXbUDySpN9I/gHHUhctwufmip0UaWMh4Vo3V LESFJQfPYP1iYj3dknCq2ihD+myzap1kVupNaBmexUrQAl0q/+yIqfc7DGnCRaDRFt0DPDDYaxrY OnBmhc0DK8BtNCiDxTsEOXwC/P3fJ0CK5kZ1i011K7ArQAAVrKy1GPCfPlxfVitfFhIVYoHLt5wD M30sbpEgBAbFd2EklNAuApsJQ22wFVSwSkgIKH7Nv0jGgnHUfhHcPqLNlEojAvCLGoS4wkglnXX/ b1G43cxNRMMpcNhwGHzHd9It1rR1cUd6pBBjS6ozRDqaRY9MVSSYugRtrHRZkHVtPJ2CEzwR2Cwo 4Iu53x9gAMVrAEPwAWz+ARvw5m+OA3GOA0vw5nV+50tA53W+AWy+4Pwd4P2J5gtuAD/sK8HbZgCw AiDtvMZSvbLITgHmbu3GLGNjFxeAF2YjCIywF41xzdqc4i/O2w+0293C2wV1I6Hu6Qlbqb/YIzei sE69AAKgI2xsURtWGoyHOUFeMOaXSyRASSGAlEqe5NHd5F5NpNSwMcqRTFOu0FBk0JeI5V5kjz6z bFBUjx4RZjtRBPQNBOV6AhuQ5xsg5zhA5ziQ/wDnngBwTu5w3u7u/ubovgTyfudvzuZ83uYGcOY5 XLzBi9nJCwAWAiFioeiKzjQQMov/ZSv/lWd/6m5ukRceXjjwsj8M6+m7LeqiHuol9iMOVNwFG9xK HTeZdCM3wLARGwA5XoaFxy+BVoxsCOS7zlsCtwu8Ac9JmZRfrVLfwCSHB91Jublr4htCVTHMDpVZ NJ5V1tbLKlUbuMF7yWTpVSlFUwQ/wANWL6cfsOZxvu7l3vVe//VeL+90Pu5gr+divwQqcOdjD+cf sARtzsrBu9kVAPCfnSvs6nxUccQJXwLPoiAJ0m5ikxd4MfgvEgqIo6l7u/GKX+p4O+oOBxjmIv8u GN8tixEYN76EgQF4X11KHdT5GVtTECbHcxzzv/WyL9THRzrWIfDVM2rdvhndhwekw6SHhQzzvfVF jhhWiDyCBIlVGdzWk0J7twfmNvADRBC1ciqnQ9AA7c78ZM/1X0/25S795T7v5m79aI8DKlDuCdD9 CXDn3e/2gr7KWSvSm211WtGuVVMrLe0sNK0ghfrh3Cc4hzNSfTHqi5//L15iaQwIBEoEBE03TUqJ ioOMhImCggKDBIcCgk0BAU2YnE0HL1cSohIkKBqnD6mqD1mtrq+wsbKztLW2t7CpUEYaJFUkJC4v wy8LEE0QARDDEBALC5jQzcbNzS9MJDLZTDL/3VCsrLji47U+UD40Pubr5+rt6ujx7udQ9fTw6eno 5/rw/Pn7aNDYEQJJkR9EiET5cOLEkA9LNuDYQBGHxYo4EkhMMNGiRY5LEkRcgiOixBYkSy5ZubKk yIwbEmjc8KHmCQMnGN5siIHnCRYYOGAYOnQEh6MAABzl4MGDAgURADRtquDJhScKpjxBwACBEK8X GHxFgIBAWQtlyzpaxPbGFUM32t6IOzfuJiV3CSwIgNfQIkGPJkUSnOhQXAGcDmk6wPgAhE8vSJWq gmoVucuYM48DB0WDDBfCiEEQReyFMmSaqD1bVq01EyYuXsfG1s0cuFfhNOt2BYVGPXf44AVU/9cP OD177ZK7Ky6cOL18TpwU/NGDBxEgC3MOoViRO0mJEjPKnMgRvEju4LmrpEhSpkmKMj9QrPkBp84T FRoaIEpUaNIKSAXFAQBRKZVUBAhG8NRTU0TwBAMmPHgBVwhc8NVYZBGioVoaWsCWIobcVVhdc22y iV2G7IVIACoqwZdffC3gYiKSDKZEjUrIqMQBM7wFV2KejPILZadosEoquyWpZC2qZKGLZ8BECQwK v0ggGjPWSOCMMi+w5kJr1lRzjQvZ+ICkk67ktuRl+6zjZjvF9SaPcebYA5xzzckpnG/58OMEQUhQ Zx12UTwkX3fhqZRRRzKlN9N89c1HE3f0bf9gUqX0GVCTAZzu1xALDVUwlKj8DcWBqACMAKCAUXEQ QQkHKmCCCVk9YesFYTEw4YQEXFhWChxqKCxfSsz1yCF3nWhsXHghiyInhSBjoiYr5jgjJDLyhdiN a81FCGPFYoKsJweM4otnGvhwyjdnrunubuGAo64MPnQz5SnAkMYMMl0mw1o1yIApcDOwgYYNCZWp +S6bv93jMD96Mudmnb+ZI7GecgKED3QFdWBdQlFEwcJDDaA3UUswLRqTeI/SxJB99cF8X000aRpz QzcZkB/OROE3ws8VBI3BqkOfmtTRSEfQ1IAKXKVgVVZFrWtXZlFtVgqElBUAAVuzeAOLmGj/Qu0B m2jiI7Jkm6i22sewuFchmsxYtobWYoLX1o7g7SIBiKVddhORkYICwqh809k3CyeemS6poCuD45Sh oKUyjjWxVyZ7Za6i5c484/lqzShTjTCggQbM4006ibjis9zz5sT+EJencBBPzM+czaEDkD7RTUcB EYOe0MAHD6HHkUUrSRRSRBOhxx1ODuiHc6c461dfzDhlj1MFnfbME4CkAgD+fwBgMELSBCp9tFMK OGUVrgxIPSFZXtlgVrBc6zUjX9Sa6Bhkn0gbY67go00cIBObeEzoohE3RBTiEIkgFv+uNQhLTKJG KgoAYx4TmRnMwBePY1eT2sW6EsqiHg/o/8zjTtENbWTjFyTo0uWSwSIBpCAIIkBAEHT4uWfoZS+d Ex2LnAEm0C2DTMHIxuNksDoTtqJhsbsHn+bEHCjqaU/PueIUdScQgfjgT0iwwQ8o8LEoNKRkJTte TI7nkTa2cSSU2onN6JMTnFRPjpy6Xqc4VbSenIAoFVDK+IQCvvMlZEBRQZBUPICgpzgIK1YxQVhw RRb7ZciSGrIE/zohtiBZ6ROkIeABCCjKAyIjbS/YxDASuIz+IaJseLnWDWSUPws6Qi+cWIAAhgGZ UXzQFEYykmWcSExYoDCFGjhckbQhDLcF4RlBIEQ0d4iAHJDlAnpBANaAdUNoBgFYnwuCOP/FuQBx piAFz7BBDyEAmtqkroR2iifs5km7OrHjnlP0zXKa40WN/Wk61SHCAEJGvCGgEQcNUNmiUuKSkGxE I5e6XvWAcMecncABnbpPzhhCFFD9cWdBM5rQkjKg8ykyQVJJ39MWZCuoTVII8yOA/QiBta9FkGt3 I5tOX/CJKwzDpzNAwRUGGIqhAu5/PO3S5JohrWnF0oFNKMT+ZpSjvOFUbEqQQLlCMQMJhOIXKxxm Mcf6RBEmk4XMZELoMhcAaqZFBEGwJv2uWaG64qoAubLmN6+ZgxRI4ZvnPOeEAgu6g9GriaxDzpuO ww4oxuM4ir0TP6kou356cQc7QEKgAor/nSHc5ANp1EhHPAISN7LMJeehiKY8ix+c7UxTduTUTYKm H50JbVRGGQEGxGe0/5yqtxSIABESqUhGrvQpEWJprhjQFbVgjUMLcMTlOKFBExU1lZGRXFKv0FUr JdWrvExlAjs5N/7RMqqKuVGOJKG3rkFjMcMQRXdRAMwHCJOs+EVTZ+yLrygJI3TJ8GGG5rpDuca1 aQyoSlhykIOn5IABDx5sNbUZBCn49RlSWECGC6vW2tzXhK57rMUeBqd0QNZNGqusc7xoz3fIA1BF COgKKMqQSsUEPhcxrUcYqhI4Ps8AQ6DeRWFbPRbsET+cClp+KqCqUw2lfLvtT1BIeqCj/0WAArCi Cq0a6cimPKEAXNEVWcQ8V0t6zm2cSCrggsSYwHl3FKDwKnhHqVOwWQ5uZZNRdLmWQWFpcmsCyNy0 RueLyRQpmCRUWH7X1Lgi0VdyEugqfb/LDMxlDoc6JEABGADmqs21QoHV5jnJgk4C+LXCAytYwYLR jcogNnF2op08kVOPKSYnOSam3RZlh0XidBFQHSAj8BbykCAboGQxKRmjNOIemTg7JOdJ3ntsZsfo fdai2csZTjAg26ENLZBBCSSUl7JbA3HApKmyMlQIJKumRGDLCiiBB6Y2BQXAlLnNpZ+paUqIPXOC bDlasycik4yBg5IxnvjbMTAhiK1l8P9uGtKzYPTH5xx1MgCp5OALpuQLYCL6SE5S9KLhdY50QQkY LxAGMI44CsBhLhOW/jSFb3jDZ/51ATZ4ZueeMcTWkOnnp6sCDVxAgyrU674if1eI90FiO10sd1DX Rz6hzsWBZFYKYxwBEChabJdVZDw6tkgLwj52HKigoTeez5HzOEe2I5khQgNfb8WNtAElZbcotXJU 3K0+Rj4lfgroSoIDHxbCk1mbaiH1D++2OU40Q6tkw3hkPiEthGMigCrCKTTe5m8WTTwTheDzLIco rWGUwtCHBjmaRv4u/mrj9dlAeZf6JZrUsOj2BNjhNLtZzs8R8ffVsNIR2RmlJRIpmKf/UFeRkJR0 d504itDPnYtHHLs97SkfUu9iOjBrkB4QQetcP2OkNoBsjCSqjRwZD0lUQJKQNK9lXgftRrWXR24b uT67JZW4hfJkpUzZ/3aHNFaGNIwkFQrCXPUGNYFnKxLCXJRUIfOjTRF3VcPCQGFjcZzkclHVBBKw CRUXXYOQF3oWaOulXtG1SY5XOW5mCr+wfMJkGc3HepiRCkZQBa0GQ1KCcij3CcfQNmETXRQGTZ4j BSGAYUUIJhunDaSwRIfWhIhmJDZYGatXQhRjT9AHJxaTOwCxdLhzfV2kDk6gfQRxEBSwAiMQBTRm POMhWjuGWhnBYxzRAmN3douSfs7G/x0NkEd5eGTck2R/NCriMzQCKD4khRQRgBQDCABEkBRNsUgq BRVPc4A5gBUs1WAOKGb5hj+0lDXREl3PsAmfSF1/szUG5Hn5oxd8pj8SJwAxAmjUtRchsAyRERlX QCVOeCQxKIO60TgyQBk5KCVWQgJawlQ0VA1u43sQUIRS4AzLWA1qBQGr5jhNiIu4mHwJQ0wn9hx0 goVychz9EGvWhzvYJ3XxQAMhEAIxZh1a1xCehWyhpR4pcTwMpQJntwRnd48lUYfHs48182Od0od+ GDSBCIgrkG7kU4iDWCB2V1wKojQeQGUAUAIr1Ui0MokLEnhTcxUPwhW+ohYnyHB75v9DepEaoTeB wiJd/WaS/TYIMWI5CASKQPRJEvBoqUeNuqg4rucZonB6gxNDpCB8jmGMynB7PQeNRQQBzWg6p+MZ VdA46vBx1BiVYxVr8fQNLUZ1kxWOG0N1xQEd0tEBOsAD6zgExUN+3MFszpaPKVGP+UiH7cd+atlQ IgF/muIye9SH3DYqT7Z/hAggg0ggd1d3jDiYSvGQS2F3xpUgC3KAlFgVEdaAviIEQrAAoJA2ZrFv qHiZJ6mZl7lnm5mSm+lwsyQJ0wUwgRNUVLJCUPlON+kuqyBMUCID9gUMSFQKn9Ql0lKMYCI6AlOb ZMJCRWIPUqkm4MCaJnRP55BCyGn/heWYhfrUJrymlVxJHJiFdWSEHTkhPBSRRmskWuuHAy2gAmM3 nm0pdvTIljyGPA6lEfVRMjEDkPvhbURBPudzd3hXIIBJUhigSAQSgH23bkkBielzIA0JAAvCPoYX P2TxFb1SFtx1AEAoBKV2glmDP5+ZmRxSVZ9pCSdocdIQQM1QaPR1fPYVlbnYmuTwmspXBTaIAo9j g8BQJf1SjJkQAjCnQQNjlMQXe0t5VimUQuTALlNIhRUDjtH3OlmZhdYnMV35a5hVBMLGdZ7lPGp4 PPTYfnGpKPZ4pXAJnlgKbXOZAIeCPbP1RzoTZVNWkEejpgNiAvyJNLsFK+WjFAPy/5APmSB2mncE miAIIm/s8yAPQnj0w6C4ZBYWoJlYo5kZYhaeKSyN6hXB4pnPYHFcEzZiAxmyyJPHJ0K4iKKtZ1/z UiQsOqoawKI+8AvMEJT+0oPEGCamF0NSskQrRC/JZDiXwXzFtEVcSCcqFhBwgoVamCe7IxB/klke MwIrUCh11ADlh5bqVxJlh49j537Qio+mVXZgmnZqZ0c781FBAYhJcT4lEFx695dHgxR5ykgPuT4D qlIE4qaKeZFT01IPIhYXIhZlQaio6BUMsGeLWqGcyYkB66iEgECkSC0aNItKNSUh9ILDdBueuiS6 MC+UMapUwqKngIMxpLCtgSWYQP9wKaeD9qKavJBC7AIFWYCyKYomJ5okttMOD4CkUDd9EpOk8mBZ NBAd/4R1Zoidw7MdZ5lsp7VjZxeeX1qe7OdsYGdaYNcoNWNH+NFHpmI05yNub4qfR0MFSSGnVIau dOqISaOYCGIC8pYVJWB4TwED+DYWDKC2QmAWkilTGyIsavG2CIAWvbIh+jq3K4k3d2awmvAYoyA4 LWgbNgmxEask32ByK0QlF1sKVJIvURJfxNgvmNCDmWANpiMDg8OEvJBMJLQ4Q6o46mAE66CcE/sO uPZYfSI70yc79KJi2ucELsB9B3EdynoTyEYeTQt24ok8FkGHdDitdIh+YedGzEb/Kd0mn4HUvOZq rlzLrl5rmEzxpgQikVCxmFORFRiJFV2xXEKAFpn4FRaANTMFhPl6PwKrIb4CtxbKIhrCF5V6SqAk Gbb4lMcUL2mSJi2buK1jcuiiQoTjQsGglFoye82gqvwyDLEoJkl0OtngGfNgOKljJCKEG6NLTK+T nMkJO3EiWdWHlVv5hdGRs5n1A2E5ll33dUrbRldqduf5lkuAEglwnjVsdsd7vMm7KRwFiH5pZUbB p0gTvUlzFCzAiIeIrliLxNjbp4tUr1VRFfiGr17xtoTAXHubNQxaxVo8txZKce/LPwhENoHDoqUQ TJx6ov3rv7FwVulydMw0sgQs/yWyiCWYu3ExJIujE7KxF4Ur5A+gazhvTA8/ag/5ZRxUGRxVeGv3 VE8ivKSsi441wAMzFj3HJh+7m1Br+BLthxIocZ6gnLT2WMN2+BGlzLSk9Shiin9xVwIrkAOvfGXw mndOHJFfu66IuRRYu67s1khZxr0P9gQT0LZ/xxUWYiFcAbd2u8VdTAi8QgDMlRZzxYmNepJ71jVl g3EuMJOnd3wOG7psrCQTiy5VMDg9eS5mLCVXMotb0gyg0SW0mUQGYzpOqJoVY8H1YARG4A0pa8ix oLKkOw9XeWuMpbqPfNC7Qxxg9AM9G2TDYzKjpWP3KIcUfaXheZ4XbcM3zDLpR/9aTKu0d7gpQCGQ K2ACFDDLKtWQe1cC0duIg1iABni22fsqtOKnUvwUD/Jggqe2YiF4cUsIQkDFBJu3egFT9JNDaMEh hzrUjoAiARQ4IkokJSpW4ex8nbFM6jwMQFebwTB78VUax7DNoZGD2pByv7lMwGkmoHqy9rDPKNTP +dUbBb2cAw0PMfu6ZnLQTmB02pez6EgdKzBQJANaoIVjDSBaK/Ol7LfY6zfD9hgS9RimpcxGbJTK i6ICIO20H8ACNSGIBVmQw5XSTyGRr/K1dscBLBCAHoCIienSEsmI9ZZgZ6vTgFqva4vFvTLFknkW +ZrM7ks1FIK3aRFxrNi3mwT/StucXcvXOJ1a1RJ7Di0Eo/6l1RIQGqWzsdbAscxADNYNdPH8Qi+q mqqwX5CVz6fAC95wOMVkO9u4yPWE1yAswv0gEJlVA9dZKPJxKGd5vBTd3/7t31z6ETiMfpltvJWd 2SJBH/WBH4G0ArIcXME1ywrQYFvLn0vBy6xtXHbKPh5QAoOXYO6D08yFkfjGrwyKFu07YHBLtwQg Arl3t5xZFgxQsCeIGJ00GgrrCyTa3M7NaMjUC4VGmyoXJaSAx3lcx10iOqlEmfqC4/FlOi6gsb24 LoyDTKZrsrL6er2IOtj43u0tT8Bx17kTs1j5DyT8J+l4HdHDrGZpPCvThjIc/8qLHcMwTI/uYcoe beAEro+ZnSnxyWQEEuGz8m7IdQHt866KtBQE+NJ5CuJTsFxTIBXcaxVTjMVBzcVdnL4cQiH3M9z6 9pk5MkuUenmBk9wvhHwgt8Y9bgtP0ovn/Ivm/IvexVOtBHMLl3LCV8cOHOUFHCXrYnIqpAGmaydo 5Rmt9mqJEzvKOdcNE2JkftBciX0+YLtluHXa2eYmYx5uJJ4x/NhyPudYWsOYvbSLomMdnZbBS8rx oeCw9TM/ExURjlxPQLaR2LVSUb2MOBUbHpFZRolPIG8lUG8lYNs+rb6EsNSEquLRdenuiwA59JkZ AjbYHLhvpoOEs5rGueqagf9M9RIlvzA4VeBdpxcl5+xmenx7YlIaVuJdrMHdxRfA6OIZ9hVCJgvd ydRC9GIEqpAuyL4bDqMOYm5F9FTmB+1iUBAdJ8wD2BE9JIMolqJjn8zt9JjR3x7Knyzg7VHuyIvg XO+0M7EpZ1oBKxDhFCArJtBgiznvkFggfKogbkoVCuIUJZAETTEFMIAVsV3iQT3FVYzpd8shy7yv +poW0SSSBLDU+iPxi1HHDEuiRpLBGr+LyGSDv4BEkbGxB3ybgzt7QUl5nhMNKajrKTd7SMSUxb5C V03et5EKrSarShTBUpgkynknzd5iRv+j0J6VDUPff10DWudZTe88PbZ+MVz//Fvq7ccP7g21PJLN 0S0M0s6vyk67ATaDMwPi4AAwK5NIK1XhIGgPoOeKoHeaFRzuAVqRYFMAAk9w91g8Zh0ZZhbw016h t5u+qNHk4lpjCcOCzZwECAdNEBIvEihVGooaD42NWZCRkpOUlZaXmJmamY4PVTIkLhIkL6WlEhAH AQcHL62lEKYvAaUBCwsHELQQvL2+sbEuLiQkVVXEMjKKyopQPj5QGlBQD9RZUMnKyRoyiczcjpEP WeObkdDTzw/P6dTo6NPr8s7P9fb391A00zROIUU/eACJcqLBhoMJGuDYgKOhQxwtVLSIGFHiRIkq MGakuFFjQxUOWzhM0DCB/0mSJnGcPLmBJcsNSxIc3PChpoETODFUADAiAgUFJoJeuMCAwYUnCpJG WAogApGmCiIA8JBUQYmqVIsiZVCAgYInT4oKMSoEgRAhBAiMLZsWQVoCbt++jUtARNogaW3JDdCk SQC+fHM1YWVIQqJFDxg9Mse4sePHmBwtQkTsRazCrlL9ZcXrbypXtRYEgDCoL69Bun6VIhaKNYls 3xgp86Eo3LhFz6RJi9apE2Rx9KCpc9aOeHB2PtbhW26PxjMj0PrtQFKkBo8RQIacGLLB4MyFMHEs UbEER0by59OrX49+fIL0IkGqHDlypUz7Lk3OlEnTgP+bFWAgIAcAcEBEBP9AmYAAUV/loNRSEDbV FIIKeIAgDCWUMAVSCkzBAAJIhVXUiAys1dZZb1kwl1wLyNUWXAQEYUsALP7l1wI3DNaEKVcUQwJi jChWzm9EFmkkJI1MpgEKJKAggSjESCClBH/dwFkAQci4ymaizShaar9c9gIxw7gQTJnfaGNMN9og lpgyRjASjTvUSBbOb8kRV0811Qin53H2AMocPvrQ0A91AQ0AxHYGGOQoeDAt0cIS41Wa0XjsZarC e5tu+t588qmUEn756Ueqfi3R9MEGBnzw3006YTACAAciOJRXHEZQwlImSFUgAFBFQFVVST0BwxM5 fOhVUUQVZZZZF6w4F13/dKWVAoxw4YWXXm/RqIRo327WipRNIuKmkEMeqe66mjTiw2FLMhmllKWw wsoqgmn7lwAyEtAii13qskAvlsli2WWvadONa4l8sowGz2hDW51J9nbnb336qXGffw7qMT7O+WCo Ef4AdN2iDXwwxAfeLeRyeRBNJHNFFmna0Xnv4SeqfTufaup9P+8300yuvprTCLMSQQFYxeZggoNV PcEUVFFR6NWGMCgwYgHNkvgsAm496yICKspVLbVpLSDAv2qDy5eOgxXyAmXGBEmxb+zmrfckib2L giIoBE7KmPWyIgErN4w2SxBqBwF2W2CXFdctKdxyy2i+FOxCKcNkQ+aY/3UrnI0R1dRJzunprptn coE608if6ciz+sf3hMyPE0gEtAIQDmy3naPdIcRQeZRWail6NqeXs6ckbVpSSSRB7/P0+Qm96n84 nYABByMICCwRw0L9IK9VmyA1Vch6lTWJI8KgbImRl7UWWtOOTcC3YFfb7VsLfOtXaYMpDDGY1Iwg WSx1e0vgkRKjAXhVIXBOOoTcpnSvG3xGL/lzXFEs8DXGxahyluPL5XgxDFMMw0etKQYztgEdaSxG HEhCoJHW4TqO3UM5ymEdoATVHOGIrB79+AcPVoCd33mnJdFzSHkmNRFJcUQjmcKUzURSkfmcRFT1 SUnPfsafmRjgIDVZVf8Yb2KAWOkEaSNYgdIoEIGgBIVCJvDKUpSSlKFcIFnwkx8CnHWBry0of39M m4v+JUi5CCAAAiBA4ggggEMqwS8E6IsgSjGDBz6wGLSBRwwvpsBOVgIKSIKhJJIUjYY9UHBSmsGU DncvVchNF46rS/4KgIBkTUBrtASbjBbgwcsNLBcEE8YwuKEBI0wjGhPjpCclcUxHsE52NKwHPXLI OtoB0VDPoAF1hoidRRWkOwnZj0yIJxEpXqo9yGPP8nBmnpiBxHkosSL17JOqLh7ki2BUlauyhwHt aa8CaaQABQCwgjYGJSkOukCFgEKspnHNLCMSwlAi97UPXcst13pR2Pj/lzYa+et+TRDAtxK5gL7w JXEBvAKUinGMZiTHNo+Q4TI7OQ5QxhRdjoiGjxCBCAmo0qf0yoVQMZcLW2QJLwgQAQIK0BUF3DIH ueQXXngZo4D9ZRWxIMYytlGP2ryOT6hbpp46sTrZ+VCHgaJdyGhQBef4I3dEGEAUCDKElTUgIVqU iXjEw0SaXWpSyVuPeTLyKflEb1TSkx5+kGiquw4tjGB0VdH82c8zruCys6JADigwARNMwEFIWQqH opKg9JGoWYDUY/5i9FFpwagJ/2rCXg4J20OKZjD3KqlPSTCKU5rrpS/szUyHC4m7kWNO7qLNIlhj jGOskoJbKupVNWNU0dbCBWxMzSUts8TayvnLlwITUyhOmAx7dIIa6K2GWOMhHGfy6axj3dNZBxUy kblgOh3gwcm246oGGCQhDWHIXiU1HsDCJ7DqMU/OtNjOvCZxni6p59BowqqaRHaMADoBQCvAYYIC lKC8yoEdk2KU0FYlWV0DG1H6SFEYYRRbLpKLEvjXNn+F6y9d4kshCGMYJskrdF4dRzliStzh1ulu nXjYJ6pwQso893CzuKoqtIS5vxw1RkGQKgKOqkteetlfu/SlLQaWmhNyIzcUaybFlhkIACH5BAUU AFoALAAAAADqAWcBAAf/gBQUPRQmgz2IHR0XHSmLixeMjTY2HZWVipE9JiaIhDygA6BEI1ErI0Co qagjAyMrpxUVK4KvERQKJhG7nU++Fww5vgwMCAhCCAzIxszGBM3GyCLPFggE1xbZ1dvT1dfU0wIE CwIBBOXn3+IW4QTs7tkI2hZCBRkI9xYZQvsZ8/4ZMtgLyE5EBhHsAmYQIAChPoAK/RlUOLBAgRgY LcawYvEixhhYYhwB+RHjkZMhjxRQac8jxgwnR6r8qFLgyiMBLxawEgOET58YgQYF+hNEjAkfO8bQ CEKnxglQqZQAAZUq1KsFoBbIATUHAq8IghgTG2SB2LBlgwRYwHYBBLYh/+BCYOLihYu7EHa8oOuC hgsZdAHLGCyDRuHBPmQYWQylsePHkCNLnky5smXHnp546sHoEiUCn20gWUCpNOjSjhZx7vCjgyAe REDVIDWCyCkgUYDoHoHKFe/fAHgTofCE064IPRhEIgZ2QYprC5pAb9IEQYogBNJm/wY9wFpxAZqY GydASRAB4pWQK1fOu/sb3tkHYM8+HUNxAiwQcKgNoUP+2jBkQX7+RSQCgQOK4NB97GSDkEIGrWTP QxTNtBFGWGRI00hJgRSSSDHkVJOIKwUkhEwijRSQQTgpdIQVAV140kcfGvVRUUVlxOFFSGWUwVE8 TUCVFVZAxVGRE1iUpP9FOTBZAFrZiYCWWWF5B8ELLwRwJZYQuDDXXS5UocGYVQxWpg8a+KCmBkb4 0NgDWTgWZxZ0ZgFnnXjmqeeefPbp5596buZJB6tFokhpojWBBKIEWGIDI6mppoMOPfxAASiYkkKb Kq+wMgAsp4wAwAqjEkFEBKf2gKpmFzwRiTEXjEPAcwQ0sYAS35TV1q5pmRVEWWvpypauBMwHXwDw naMEssw2G4B6AiwAX3nn4Fdtfvk1qKC2CmI7j7cCPmjQgfdN5E9D+pAbUboFRhTRSfbwlOJJMG1Y UosKfQSTiy6aVG9LI9a7FE8wcjgUCEmEeGJJBxt1EQjy2riUT0hddST/Rx1l3KQxXk3glQjY/YoA yGKBvIB3B3Cp5QsS3MXXXSRUQYIGZcqQ5gOOaYDzA3feSScUgAYt9NBE44nIIT/8sBomiFJCWtOL 2NBoBwgoUrUnhwhSAw8rxAZb17CAcgqoodqywnGn6vIEBZFE8oR1QTyXgjWyQrfAN3dfg50414DX HkPnPEtfsczCB5+08zHk3bTnleddtfZZO6B9AzKEUEP3ZS4gg5xrns252QiwUH4AsZN5gZdHNJCC 5gaEE7wcxoSvjiRO6PoR/MRu0owkkRSQvEMlkZLBDwtFRYgFOKyRRz4pCWRWGYsQfUdSdmQM6yOP /CTJ560MwZUkkOCC//guMMFE+DKQYLMMiaGppppGaCBDZG7+PCfQReevP6CVaqZIaz2whCIsgQRF LWA0IYhLXJ4GNUJdYDNK60ENugYbTJFtALoB1W90AQtTRUAXtzCBq1oVievM6izYIc/dorU48VAn PDdQggxvcLJoQYsAy8LVsgzXhAME4ABNuIEPDwBEZPnQO9BanN8YogTAYety4AoHukI3oCo+kVzZ YtC2DiK6KIZOc5ZT0EK6dSByPQgmMXFRS9BoMJEcRCAqeR2+WtRGhvUkJDxZybyOAAMNhUQoQ8HC w2IQoaXY5EZN2ckEirQTIm3PItJ7EiQR8CRmVENKmBzZeaKkFggc4P975BvfXewSMxmcSWdQ0AAU 0IQzKPDMTvhz5f5mScs/bYZQhHpCawbYQBukoDQdOI0lHMGIC3CiBzr4gQ4uxbUV8MAQFLCN11aQ imZWQFSCMM4HizPCC/hSORewztxAYw2pgcZuKUjBsNqSzril8zrwjJtz0pJC+xDOcEJ0z3wSB575 NBFZ9LnPOaD4RNOB8aDYusENMFfF1GERoWE06EIPSsY3EoRCFBJYHF/SLhGhcV8MM9iMsAAUngxv JFiISQxgILGJNa8nIYpQR+AIUyUZiZE5sEkBFLTT640MZJHcXvZAlp0gYM8tL/heUpPaJTCJT33y Qwz75pdKxDQmTjj/w2ott8rVW/4vgI5y1AGb1hbT+PKsAxzg0TI1nK+N7VKvANWohGMCHZhAAXjl DDDC2QHlNOM50blbdJqgHulkxy1maYusLJCWFIAsBeLIW+Ac9yxmHfGHPjTc4/CzLIDyk7Plwk9o u5U5ymUuQaTzHBgVep+JQvShYeSigKr4URelMWDjymgaXfchknhEJkcgacSGtyGRlgSQhmRdTnS6 kYspMmPU214miWqBAkjDqJhkz3kSq6VPNvVlT4XZzXTGM569KZZ5wh9X17u/QbEmEZgIqyUYeMAQ hAZRivhlpAhxiBpcShCxoYXYxgYLQVCAF3blRDgjoQAGzI0B15Aa/91Otqu1hOduSlBohmOIQ1xZ oInwoIcOsyFDxckHPc66z+L6Nln4gBi05RHttSB6jspVbnM3hmhrwYjaHFO0IbBlCEEgchN+WVR1 NaEjiGYEghr55CQ2skKGeru72/5oIx7pCEntMa7l5gQpGcMY9bBXvXtcLzuXxI6U7iEO7JADWFb6 3lySej5Ris9mqcwzm9SkXqBBxmf2o9Mr2UvoPCFCMwCsVCZ4KZpFLSqYUiMgAytRNdUQyhNKO3A0 pUmBUMFiBBEA1S0KYQJjdtOv1wCsWWhFHcPWSlbq2VVbQnYNBFDJOtP4hjXqaS35LFQdfZvPJpWF 0CaeWMcQ1Y/ofP+MbAG41tkHde1DCQpbGxdEH/R6yEMkhGQ26o53IDGKhkpqxxkBF14wzYi6ReKw e+QkQhxRECU7wpEc8JR18qakgvZzDGZI6afYTctaTqYlpYJXZjJjn/t0lqbHZNXPVwV0oSfeJ/ey RhKMpkRcRiO10YyGLYtCDSUWAUDWTMrAqAJb117RabmOehcJbls4nSE3CwuWOruyFc7Z8hZZK1ZX v5J1WbKDuXRM40Dp2A86DmQO0frN2E2cqLH3WQ7DMaRxUTf2jLG1Y2ezVqETtXrhjOX11X42tMwe HUY/N+Q4VuR1IIp7G2Fgx6VgRF5YoPtIWCp3Htld3RpZyuqq627/7WVyKzuVHk+HqqCSyYPflZQ3 JssSLbW4Rc58oUvMwucCNI2JvHBq5SofE6c35alnFE/9LSMIVl5OgqxsgdovJ/GI1DxwEIXYtKl4 0zVBnGJUZzNB8BVsqOuwJdW7whVbWh2dWr2wWG4ez7PcwZ3JVn+g+2GdE7tFHr71mgCsjU/mWGuW Ex9Lc/ERf9WfPX5nA1TF7tcsshTqWdaWY4gMOf9BbYwuiLhryANRXbxzEicCbnUnL/IyEsiFEQWI E05RUyuyE0thOtoHZJjEU4l3b86wHdeQXb9yFlLCb0HXK2pRcC7zPS6AAlWwguiTJp4Heo2hSnYC S1klcal3g1lg/3G4NHL5dQkH1BYFFIQ/iBqHIkA/8EDIRAi6EE0rJ020YBvBlwOGIIWlVkzvdFiC 1RZroQTS0Wo6t3MDd3wUxh1kcX3qwDoGJVBS5H3zMVlNAG0xFnULZWzkkDieVXVBlEMxZmILtVDG Mnbu90OCSESEOESFcwCGM0T5BB+ZRXY/Fi6f01E5oQ8DQS/7gjv3End3pCF6BBTnVi8O2CIXkUcK MhNchjlXh2/yloGsg11E92aM94HNICUf+CsD10mYVz5MIAHhEz5lUgUv+IKuVF7D6EqmZ4N1gow4 mD+Hpmj/I0Bp1RkjRwkcZwMKNI2NMnIXoAOXRimboGkpx2mdFv9qhWBXOTAp23gBjtBOcNNzbUFY zGcr0cGF8mgDu6JOzqGOqxYWcENhZxFbpHUe29IOVOce6AGH0NaHfmiQxsYei2iQ7fGHfGhEivhD iYgyQ5RZjIhZRKREVed++fd+H9Z1AuIuQJYuAHES2nAEFmCJMKETaJQiGDEBeIRSJrFHELg6LlER FlETZhRJ/8ZTTWJU2DUy2/GBz1AADLBTjmUMkcePtRgAahEEECAFBccEWIIlYZJwZTImNrMm5RWW 5iVLdaJeyriM+uNVGdc0ImePCtQEjeZxYwVMF2cI32hgthFqw9E1w3ELuWACOZADFwAWJgRYBacl JwMB4QEBtnL/YRa2FkXkHWaRHeNxWFjIQtvRhn8zWfx0lE50K/1Edc8mdpoFdvTnh3homqV5mhZZ iIxYiLBJiBIwm0QkAQdgm7Z5WRdJROzXhwh5Y6FzUQRxIMJJeCSyUQZYbqaIbfRiEVz0Ix6hU0Ti SPj2gfJWlNUTFtNQFv92Fs0gi5QEnmGRWFTpFoeZi4PxF1MFlu+TSjZ4VXOClqpXCIjwQJHQGpSw jvnpCMA0jaKBGikgBb4UKYrQCZzACblnYAp6Kh90oIM5mMawALY2DokpmWxxmI9pYYo5cGQIHSE4 mdhhDe2QfdcyWX/DT5JZLOzxT8ciRG8IiJalmhq2T8cyfxQ5/4iIWJuxqaO3uaM++gKEaJEWqVCZ pTnstzmqlS2VAxD9tyJiBBADkYn3wg9qRBGGtFyGBF1aAUmtmEkiM1RjYQ4o9KVjgRbMEDIj+IEU hphW4haZJ0p9QQNtQhiJ0Sbw4wNGcFVyQnry2VWdgHFp5ShkZY+N9p+iMVYC5EtSECmOoAPbaFeT MinQNBzRNGqcIJgLxgx5MywWWqHUwZhaYiWhmli8cqGmKljzUSXxoaIn+h7NQnD7hET7lJEduZEH kH9ClKv0h4jeIR5Cqk85uqO5KUS1mZs9aqxBipEpk5tCqqtgZ2LtMS3MgmwGpQ8J8kb+UUZdJkYl cmXcVhOU6P+kP0IwXCYQObFT02kRGJNvF+h4X8GUsviBjuWdZno91wF0nKqYcrZUc2Y+XUKnCodn D+B58ZOnftanOJgI0AiNAVoak/afHseWh4oo6ZQJ6dgBCIqgL9dpB0p8xiA3u0KhYZiYjbkAIdAE b4Gy+hoe7nEyJXuh33Ghe6NP5HANNBqr8qFPgrg4O0qsvHmIPsubx2KIPkqrPQqbHBmstNmRP3u0 trmztFp/85eruApQvomr9nc6XGc6FGguCSGuIvF2B2EQ1sqtHGWu48JIGIMV0mNvI/MxPyU90DAy 18EMTRmY33mmI7hOBKdULxBe5fMXd2YEiPGC7MMmelqWEAf/n2SJsPkzKWC1GoG6CL/kNHPpsEzj NG2ZCZeaYOCYTdDUoA5KNVe4qWtKcIlJYS9LYT7HumVIea/LQidGdOmns7Y7REBaiJg1iM2KMlPL m7x6Wd7lu7uLtLzLtElLiK8Zm0BKkUH6s8Sqmq31rFh7tZ2TY5dzINc2tqLTLf+nRwMhEIQ0ttJz rm+kJIy0UzuhvpBkb1vRtu87b2GRHXOTA7LYJIP5WGd6PbVoHW1xJXKGF1/CF07ABIZRM+qDp4OR p4pBuIwxGXYSeo4rNMp0KEyzjvpJjaSBBB4XAkjgwY0WAlLAcb9EGhW7jZxhCLxwYKhyCyHUuZhq t+o0Dhe2/6aK6ULfIx6nejeP+UIVhjI8fFniEZm+6h7Cq7NM60m6m5E827O/m6zAmjLLiqw8KpvI urSwmU/KWrxSnLtESpuWpbxgN7WLKKNZ22xhVJLaaq05YRIScgTbqjoKEQQ5UCQcMW9X0SSBKQL2 9jH2RjLJMBZ1OzdzwzHWAQ3uFBbGN3RaGGd2MT6cp5404D6U7CbwY7DweT/xOcH6k0zcOLmu1wgl fFaGKrH2uKgVe8Ka0LEHCroH2qCYqo7PYU7LZ2Eiq8Msq4WKJVnWsIHVJ6G29pgnekS+elm2yzJA qphMjLS8GrTLXIgS8ENZkjJZksxHG5u0OZvaPAPavKOCuP+RN/pJWZy0RgR2iLhjp5nO0pts+Rda liNbCTIRJXIRBtLGYxu+CtIVfGwFdbxI/JwVTQIyW2EFaHEWlSROhiyY0IC3cxM3ZPEr+EiewIJ5 b2rAJOAXfyE/bKIYhMHRDlx6f2aMr3SWnDy5lKCOhHpWCeQ0HDyEEGtfNiAFsbefqqGOi1CFKnxX oevCHRsrhTwrFCqG3TFrgmU3RV03Nnu6kmnExqyjVAzFQAqkYPxDtqnEnoSRmMWsRHQFyJrVt0nF 3RzWuPnVs4kCJIACuWmbxIrFS0zVzwybuau8wOvMusuItPl1CzU6R4pQ5JIu+hC26HalWXq+B+G+ 6dsV/8z/FR6DFm3rFQdNSczgFeEUmGBB2RyTToosAs8hFoAFLH1rcN8TGH4BjKdEGG1isAq8p41h BBLMyUPzySbNlnGhuRq30h5ssosSe2wh074ECZDQCSncscfByngVw5g9YbJCeYLVT3fzHNYgN7LS yDq8pkhciEp8RD7EMsZqzcmcvDyqrM8b3kz71WStzeY9mySgzelt1rPJzbN5Bccqm/Bt3szbo/rk s1xcOLnKkZoltETaiLtLkl3kzqcztm1cdy0ReDu5FVfBx4pE0IrkMVtB2YmtxwUwmJRdyAgwmClA 2QrwFYWs0IIMWBFdcJiHguZDF2qygn9BsHjqJhzdwHk6/+Pq5dpDU8Fp9Sg9qF/VaF+HEnKlsSj2 9U7v1AgOVJ/GRHzCXVeBCZge6wzNgNTREi0cmKK7VixAfaEQgIVAnaHAGqvVLcU92ry+S95EFNU+ 6rytWbxYjJto7d5lbd4oYNZznt64mc3dbMWyCZvRfM7xZ6uqmaMymn/nrM5NHH7PVkYNoden1aQu MRSGFDFD8c95vBNcwc9BUOlGYuFcsZQXsBUYjreULZiUDaGj/hV2OysFbRZrEQJy9up0UQV9ASay fhgdbdqKQXoivTM27icdUAQCypakQV+5bY0JhEAg/MGuvkBmcVb6tWiRoGAHqgC7AAA5DZgKLXNR Tmvbsf8e2eGrm1osjZxUobrUWXkl4ry0nnTnEoAld04Ct6nEWb20mNW8scnFxTrf7I7eKEAzMmPW Z92LAB8+dD7naG3wM5DwV9zut2nvUsxPiLib5myjYWd/Fo/Xt2p1CMW1AaE5UPQ5lFgPR8AAdfdS ecQkSOIxRdLHHqPHfJzH/DwBCpADDDABT1DqlO3kgTnzo/6gW1GmcjOeFBbAoe0lL7OC7nMYckq4 bLIYeIrJgjaDvQ4ovz65/EnbJlsatw3kx+7BCcQW6jSgJxwpSd4JVJh7ADABFBCYOvCxHPPYUM6B VK43NhuzUnlCIvvDSOzWSmybLHObKCPVeT6bgr/dZ77/zF1dm1yt3rJp52dN5wRfBWh91pIP+dss 53kOzdfMxMbirO9BpGb8fkYq+otDdQjJUN1SEFc0IG/EdvwgIUTxE3ZnBUdQx4q9SCJgMVCxz4F5 FV0xASVQAgog/MXt5BEg/DKfAzPP86f+6YGZqWNhi//rt9+z7DtwF794F4BBA4bR0alN45IhwYnb 60WQAkXgeoRaub5ksi7d0sr+gx+n22CfnzJ308R9VzDH9s//FfgLCAgIBARBhQsBQRYIAoQCjwQC AZMBCwSVhIgBl5QHEC+gL54HLxKmEgcSJKesEqWlqKwHswdXqKm4twEHM6a0vVckvaYkqxIoKKvF yFUk/8gaKFXR0MvCEtLGKKa2w7TeB7vgATe74+PkNzcC6eQH6uvq7OoWj+njj+v4+gIW/Y8ZIjJk EADQgkCBFgL2AyjwSIaFBWLEiAiCCggsIEBInJDDygSOInJ85Ogxh8kcBUROKEGF4wQFJUAoeGky QokSJnKYMDGBpwIFOS7kzJFCUA4GRwXZsBRkgVMIIaBC+MTkBRMXWF1UqUKjigsaNGQYkRFWhlgj PqBkgQLFCJS0GqA8SJulrt27ePPq3cuXb4cfHQLbICDYho0OhjtIWYDEcGMbIZAwNuzYRuMUNjCn 2JziglCdQXMqMDE6QoSdPU1cAJ0DQVFBCIIYMnRJgP8l25IoaZrUpHcTSrtehPMUzhWpU6CIqTp1 PJZz5rRayboVK5ctbtKJFTu23RkJacmcQWuWbNgwW9R9gZsVrpy7SeLUmWNXzx39ePDS4XuXT8Q+ fgEdJJAIBgmI0EEiJPhQBgUsmMERBTRYwBESVRgDhRNYoWGGBXiUoRUiefihSiOV8NJLP5lkQgQA gHaaikHFuFprrQkSRAo34iibUwtMJdVUV3Xlwg5ZOYEVWDSQEFZZbqH1Flo+PCAXW3g90NeVWGZZ F2AXIJYYZWAigURkUoQghQ1lMrbYmIuV2cRSS21mGAKeCbWTTqStaAJOOVAwAQU56GBSB0UVKoKN thX/QoAmAvj226NN0BKpe+pBMAsEkYriCSg+vgJBK8ZkNwtz0NWCyyyl5JIKehIM06oqxXiXTHjO qCKNKrN6VyuuM2hjy6nf7MKOOO69Q19+6LiTj7H51ZPPIwRCC61BARp4hAVHZEtPtgUUaNBEDz44 UUQXSmRFRRplZEWHGG04UoYTgPBhhB+xVO9PN/WkkwIv8qvABfya1JlJF8Am28EH8/hUABBIMVUI TETsghM7VEykkWDJ8JUMJJhFgw9m+SBylA9YqeXJKGMZ2MqGEVCZZJK1CVkIaEa2gBRISKGzmGMu sJTPhHLW2Wqr5YSan37eGWNOBRcMW2yEGIIbcMTu/xJpE5ZaPaorXCNnCyygkPJpKKJkJ0vZqfii aXSkpO3LFW6bMowzyMTqHXjMKNeLNjP00qs2rfxK3Te0oDPOe+TMJw84w8qzzjnPRq6Of9AOpM9B BmW74IWZx2BgtQxKFPpEnheA7oXrikAvvB7KC+8EKY3kYb432VQCUKKRFkFpOBF9kmuu6bhAwsPz GFXDUC0QQghZLR9kkGC5QIILHIulgRHXp/WWyCWzVfL3KYefZQ/ks3xYmD5bZpjOjN185s2G3cwj nAQIjeNmngU1IwUl+Hnai4IimiA8cygEiIAQi1qAbSZBgN9QYlK/QRXckgM36aAHbK+ABSs0SCpg pf+tbcI5QKRyoRxWoGcG20Ehrb5TBRlEYyuyAlyr9oaMGkqnG+rxhrDOwZ5JoEM/i+MPOSRxg8Lx Zx/60Qc9+PEPb4mrIdmK4oWe6K2AWKhCEspIhGKgoXUV4F2zW5dHQOQhEL2rdjcBQAletDvT5ABf QzGJoIoShNgE737F49HDHhaVq+yACSEgkgsidpWIQQArZkmkIkeGPRnEJS4lE58kr9QDwRSmMpaZ jPLKFBk0tW95MAtB+3zmFMOkQAqbcY1nhiKonPwpJ7szGmg8Qyc7Qk1qC1ACJ3hDNUs14QVX6Bs3 5lYeYuTtE6t4hScslbayVSc4pWKOM6UTqlMsg2//3uGYBrbCTV3V8Jt76xV3zCYLHc6iHe45QD3u IY8hPoKdw9lFPX6IxH0s8R8EKpBDyoUFCknEn9yaiEEitEXPhQ52XwSBiCLUkZR0qCMo4dAXScQR lZjoI2r8l+74BJQ1AoUoRhFECmrkmqaYVI9S6SMTdgABljKBBkO6CvWw0kJFjkUsMngLFOKiPSpN 8qd7QYxQXWaDShLKS5k501IWsz75KZUyTSBlZuyHv6IxbSiu1BNpRkPLVBpMUYsKwiY4AY4Itm2E cLuOOHuhDFY0Izmh+ISlIBAAsMXNG9D5FCqmucHlVJNu1bhGC7eyTQ1855oagEbdjrHYFeJKGLEq /yewblE4c+wHH/OxrCTWUw4fZvadQnwEPSzHj4VQKFvlyki5/nmhgExIXBeKUOoSKi95MRREKEFA R8Zoki/GbiQkOgkAADCaN9oEXzbpSUVpVFKEyQZHP+vR8noEASZU9wV/zMogDxkWRHZMY2RhAlkS ib2bxsWnawGqesGkPspMBpTLM9PMlDddychPlKKEgMKEdoGhFW1pMFoR7pgWvKcNgjZBUAIDL+FA +ARAbWW7DmNleNgJsxCGpgCcKDYcN8GNqm2msNRzkGPNZGQYsLWqQmFVzOKt1A0F23SxYl/8zVnl ChnHQEUFnRMszR6rnutcJzqIGA4i/+fI86BHP/+wdQQsJCEjGqGQaikCZSjHS6EToAIAqNCSd2X5 IyYB0RdhJ5KIrmQlNzFRDrQMAJvYZLhvVuMEIlBRHJ3kuU0ZHvFQmtJAYle7E5sp9RypSPKa5Xo7 ZYui1VIX9KpXfB14DGDaqz7GJK+pbbrZ8jI93f2msk6+W6X+ZnTVoNCpYEVxmgER2JRK5GbBr4ag BOC2KmUiM5mgsFtkk4mcUTSHOra+FKratjVd+5Wx5JlVYgub2FitkLCGfeE1ZQWrGNJNhluLDgno yjhz+HAflh3yOzOLTvm4Mx73eJy6nQXFKLo7BqqFN2rhbeWPVITLI9FylyuaEjF72cstEYkatfz/ EjWmWc4lMAmYcxCE1tyI4SbFkVPwmLxM0xe78R2kTAFt6ETSAC0gN4ujFX0XRj86S2BCqnvPVKbG LGa6nHZKfDsd3cx04NQX0EGd3iijN/7EqjEaYFBEUMeDRQ2Bl9gl1X6ztuokJ1YzeMFUXJFBTpVi V3FrhTZCxUFW2K3axvDmtbGhaxNXw9nQqHYNp42MXnnThtIZlQtusbZzgsPI60z3fiiRdyJPQh9H RDITl8zkeWMxBjCId5VdRwWWtMTxjV947GKn5jKbsaIlqugaN59lALzLJA3/XcN1lLA8K0x5QJqK IFvqAtZj5SrT67gRPo7TmxrBLVRSC8nTe3It/4WpCTyzzMzxuzz9sq9N1U1+VBSWmQUIrY47F8qM 9tW7PX2UYCYxIGwOCNZCNCIAse5sb0Do9WbYyhjN0JVfX6yrFGa4bm6/sawOG6tuNgMbs2IsW3Ud dhP7dRVxswp+M2vSUUynwCqtwCm+Fh/gB0RC5iyAh1n2EHiYJS1H9h9K8CBHkHhYkFoXkhEdSG8W MQFYICIfoW+e93kjMWb/1oK1M2clYHBztmUxOFyf9zsGQ0emNxVPwQTT03o78AJYIUhDMiQQUAzg hVNi8XFPoj2413snx15iQhmYASZnsjzxsxg8ooWilALtEycpUD+c4Rn+RSejVhP6QxoE8zR1dP8o RLcJByRWibJA4EcJtbEbk7BhIVZXEjAVcOUKnyB15NQK3MQ1/Dd/tAIryeBi+GdDvQALYcdr/qce ObQNBEg4CEg4rQBC7EEL5+BZdfh375QbF/h3iXOB+hAQF/gOmUMhDQGCAnEhqKVQHjEuwPVvFHVR IqFmZ6aLZ3RwL2giw/V4aKZmuNVwspF9XtgU+vUUPhJfOxACUsdSx1N8WeExhBQxNCBehXZ7beGN i6Z7JudoUFgXlIEEwOcYOcNJNBM/8UVf+EVdUSFKp/cmhZJK+tNzq8EAMLE7dHJ9upV9BQAbiiI1 rvZ3m8B3m2AJvLQLVEdXk/AJ2vF1ygBZKFT/YnSTWOk3kYvobNFQDYQVHjZWK73iKh20iXT3QZRF a9+wYxWkkqUSNukkDpIQOXonLf5BOeA3ikdGOZFDIAAhAP6hZErEDwiBLSC4TxViZSDoEV3GZWxG g1vWeY2XZiWybyNhcMOllWm0ZVSwAlTpZaCnW8i4Iz1CXdaFX1LxAn4GaNaFSDIgXk4AFreHe4vm Fmuxe+WYMi2DPkhQhaEUX5AhPw3jVKIEM01Ajz7TGXcEaqvxjx/lLwDmGr+TEglCdI1gCZGwSwoU CZoJfkqgCU5RVwIgVgyTh4EodWTzClR3HBqkQrpmfsWwbGsHY9TgbPVXHm3XN143iMbBV7NA/2ss GZyrcgrAgJLeIAoOxjh+t3eiGHiiCH4+iZD6sJOVM1qiRTlLxA4DAUUWMosaAW+y9WUY1RIENwGe B5UXJYNgRp5fZiJpRmcx6Hjp6XkkEnkuYRJElyNmeXrGw5ZsWRVvOUhWMUivJwNOwARzaXu3Jxbf WJfimHuNtpd6YRlTWBlK1TNIoBUukBnDpzxO8XKilJilNBicAX0FIyMXwI8/gRQKwAAXMJBlplsF UDADuZ/ep0DA4Zm6MQmIsAC+8UC7YCnC8ZvLRDbLsSkBOCvcBG0xFmPkoWIz5gxSiivjcWM4Biso SSrGmSqxwJJpVQubeB1uQzie2InncB/1of8sQYaKQqkPQeCmb3pP1bIPB5I54YlaEAJvEzAu7vIu +6aegdp5gFovAYeeiIpmkbdlU4lRCOcSIMFwwjM8UtAU1QgkRvh61VVIiMSNcTkWbpFIPnB7PUWO JkehfPEyFwozIBpIXkEzyhMA1SiY70hKLgMbY8iYZmiGT3AUK3oUKPFFBlRAbRgbTXEIwNEIStAo vNQblaBgvaFLDSRCwEFXn8AwyFEryQF2xdCkTbpsGhkeUqqRT/pNGbl2Z2cMV+cLB7g1lJULx8mu 2kGAvimvK5mmRSQsjiOUP1aKpfmvcXpZPTlaBUEPlJMg+KCBEQIhAkERXtQgGlKC/2ae7pn/b152 UZhHnizBEunJZWAplicRsr1lrEW3GD6yqdk4aBpDPS8VFtxoe21BMhogJd6TBVZiMqiqJR1QBIjR GDy7PkshGUuxA9u2VE4lc1LFfE6BAB3QNEYRakjBADBaowiAFDUqEsaaIMZaCHHaFHSYkK8WAI+C CJDirGIrtr4hNgqYmqqwrdyaK99hWPc3Hvankd66TcxgY9JgftyxHcshQ3IznHsFCwhId11TTfPa Vr6JV++qOO0kOY+zk3VYnZGzDzmpZAJCIJorlAXSsA4xIX1KUFaQAWLURSQIlU+JlWfmEhiblVSg cI0Xuxt7gvapcJl3EiBiI3WEI1NRqVJh/13AmxUS81LZKF4Ro4QyMKog4yRTIiU563urKiZpIhmg ZAMQ4ANVQL331aq1OpoT9xq0lD/52KvA2qswigAOpX2IMjyHcAhfmzhlJbaegDXjNwu9oSkOSWKu 0H5mx022CWMuFrfbJMDgSsB2+wwsdmNT+lj5Zw2vQoCCY6/1GiquEkMGuBwmNAslKQvFsR7tZFmH E4qdsJPv4JMUSBABobmZWxABASEu7EUMsi4QAsNOCWbrcmaX154gC3ADx6haZiItIZ9rNGcVZUYo kVuxgSO+ezNQETEQs6kGygR1aRagCqFuMbM0S3I3+7xa0hiTMSb2ZXGwKj0hKnObFo+Kqf8w9WNg RJOiMXoUUTsTxioIA/lVs3HHC5Qb5DBC4BBXzERsbSNiyAE2y3F1T+dCgEVjUjq34NrI0GC3tBlt KhYNIikBA/wdDXyAx1DBcpNhGFyRxmYe3MpYq5ClDnxiXkdh70oLJGBOnYi//SpEzPKmCeuKAiKU nktQunwEVgAhERLDIyEvN/wRIpIvrGvME/CxFQCV9emVnjeVtnODJHHE+1lSDRMEe/Qj1xW8ThCX ZVF7bfEAkJTFzSsXdnGqXHwXlCFKLdc+MYcEEFAFyaO9hwmPouQyYjgIqcQZBvZG/HgUBfAET6Bq BgY1BaQoPxqazJo45cBhrGkcD/wCvfD/VqWQftPzAt3RrXaziLbpyMsmzh7t0TD0DIr1WAGcf3Bn YTYGt6VcfzBEHvN3iOgKODJkCzeGkRicdZoiTbJAT+lwd6BVk5zrk6DDIA7REOQywyXYIebCIBHi Wh5hWxpiZvbyb8icZT8MeRigb1zGi7ooEg6FxLiqxNS1AICUUhKDFd81e4bWJIvmA3GxFjhrs+mM JV7sGOxjXzDnfMwjA+xMX62Kes1oCWHYX4OAq/31GsDKAHWMABPA2DGKKHWkKCLwo6OJCa/GHkRK daLwx5/Ca23lAhgN07G5yDA9ruORWCAd0qytWP4rkux3K3VzbX9jron4thp9YdJ2iOAB/9OswJvK oQwf5jYXyViiEh2r3InD4qY+OS0DYtQUIrq1FQMYMS6/3CEb8rDrQlEUdYsjsQL7dhOoa5W7uHC9 hRKykYNBYLI64yPBq12HxoTfSF5urQHJOyWMJiVzfc51bReT4V7rmDNlHD/xLM8vBxXTVauLsiip Vku0BBu/GrUkRSc1WscEoH2RYEBi1ZmuZhvE0kPNETahENzW5BWgLAMttGwsRAJQ2trkOsmOzIjg QTfQVkN4qx0ytHaTrIilnbezfbePbLfNoFiYvNIo4Co0lH/1Sk3TccqdTGs7ZJ3aeYGgMyGvFTpY kCEgGAMTsKcfMRGqs4LAhVuOXXm2u/8CvGjVaAZcZaYS+hkSuhU8sqGFDqMzECNTZvFd39XNOYW8 IOcWInNeiqbfVoLO/W0X7KUmpJRpngQZ0rMDn1SN8sMjYXgjBY1qRoESMWq1VGtgcXjhioIAiGAI wMHHVON1JBBXqXB1FVkFppB+MM1s3+FIQs5NjYziuO6RgbXRfgtY3LFC/leR71fKL+at3upChIXa kQyuiLy3/gvTTGp/8wcq2TGJtMAqwM0eDO1OJPwf6oAgAxLdpMunEqER8TIRVoBFYS7MKkFG3C2y OnyLF5VmFzUTNJJbsrGfCaOFvesw1gXFR6IkKM4kyWuXbAEl3qN7cj3Xht7fmCG0Qnv/X3/dqofU eqK0FDZjX5shhhf+Gl51ok+z6YLAAAU9G6CuKLgRp7mkCeLwG3SFpH2IpKtpClpxDfR3WPY9WAZs 6y9+fyrWfsJubCW0DH/bfsEd7ItIHii+YiwU5C7O2tKgWI/8TUHe0d2k5JMoKtBBr+zqDQxdLA1o uQhLp9xyLhyS7umuUOheUPFiEbVFEmw+zSfRnrbr5iViIvaeA4eSEhpurDyy3ut9PHs0j9WVFbG3 JJ7qoFMMJVHCFtozs+E4oQ1PoQBOMwKeJvGVzUTyqmZMfKO5xgRZCPts6XGOvq0xkFGLvoJw4avW tQUZCXWoBCL04URqdf/H2XZzfzYv/65PquyF5Ui+f+uymfWoPq8T+X+5QnZ489KNHPytvdofvewd 3cgv9MgtVDcwxH+9Vh3qwSovqSrCtjZJJKcsnAFc5DkIcP6qde6k4zr2toJlBmYpIbL0P/fxvnAc YZnGqvfOBQgLghCETIUuTC8ui4syMlUyUEaTRlCWl5cPDxpQWVkPnqAPlp6lpqeoqaqrnjauNguv C1I2KVKCtyGCNiEQTCG6uQu6ugGxBAjJCCkpCMjNzQg5ytQFEwwFyiIE20ECBAvf3sYBTeUBB+hN B+wvLxLu8S8Q7i7wLyT5JPfuEvr/VSBVyReQRBUUKB5pWMiQIQkUDxE+lIBCgr8Z+/8yZnxH8GFE EhoKDhyoASHDKg0bbkqZcpNLDS9XsixZEkXNkAFR2vT4z6LFfe/6SWBH9IBPi0YPQDDq7kDQF+jY BQhwQ8CNG1StCtgqQESGrSK8hvVawEqMszFAnM1QIIaVtxPiTshhZYKVHAVy4KWbQ4TeHEH0zgV8 d/Bfvdis4UUQpLHfxkEWBAkAQUpkKYQWQHDxwpAhRvkciXZkRDQlDT58yFBtaZQmT5g6yWZFu/Yp JAuQwNINS9cwXBB+C8I9DEnwW8iDIEu23JmyFEGiIbhQgMG1uQiyUVtOoLtyAZLBTZU6njJlpUrj 0ZtHCN+/fCgG+oufcybKmfZlLNT/PzA+xP8SVfSeP/4YBNB9+CUI00IytbQgQys1uJBNDSFkE0Io 1WfQQfDxVCBQQ72TjlFI+URUUE4FRYJ67wxVFDtYTcVVVzOOJUIBWJh1Fo4gUKFWDBOUVVcBZemV V17SLPZXY4eF9ReSN+Y1TTIFQBZEWFZCJhkhvvjCBGgkyBAmaj5oIMMkZ8Z2SRZQaDLKKaKQYtuc dHqChC6u6IbcLTbQMoxvwODGCwTAxFKLK881c8EyzFAzXV4XPEmNY8wFgcA2YXHDzTZTUTViOezc c5QE9szjHgn2uIBqgQUOBN9B+PGnIEsXBpgTrPcFFJJBCwnU36wMPhghTJos6Kax/8YWOyywDSHo KkQGvrcPPBa1OJQEM4xK4qjUilritte6ONRWWGHFFVlusdUWkUcQSSSQVggZ15BWZFeXYH0B5pcI gQUW5V571Tspv5ZmmSWXvuijqgyIQCIaDWeWVgkmk/jgGhQaTNyanHV2XFsKr/BCC24h6GYob67g 8hswt+QWQi0XgNzoosw0mowIkebFgKMEi3DpZNuE19023YFXThNIdwpBtfxwRKC0K0JN0K4gNVR1 SiiJqQFIK2XY60i6KggJ1mGzFKGbaB/rUtprF4vssGoja9+Dt/ZXUE/6XHTFAVdQ5BNHTk/L7QHZ HhXqPkVdpXhVM3aFaQEgMKDuWf8g/PjuBCDEe9dbdNUVbwF+xRsWkX1Jcxfp2e3lF5I/F6ylZocg rCoNLtAAMcQa2K67aZRo7IOabJIiSiifFO9xx7yU/CduxJX8cm55FkrMb4LGEg0zC9TMaDPRXZkC 65bqxdiVyXwXDgHieBcAAQEI0Ol59HhLbUYfvidDQmMjeCyEbwfbdrJYCwmt8IOgXoGEQippidvM xja1uU0mDVSWsoj1EgruLyX0qVtEUDCD/3yIVYK71raMsrdQJcVELxoKVa7iqfZthQBssQACKFe5 zLnFLfOKCxXiQhe76MVzdNkXX0h3lxvtJXV5wdLNItOYAESGMl5yjwscJpqFQOH/d5bwgcaOx8Uu ngJPNuiAK6SgC95AL2UmC0afsgeyQ9WiAzSzGTOi4wzuWap8dMwGZJZIAG+wr32ANNr7muCOpUCA MiiSwHrkAY99qKp+U/uas+pWnwD2CieULKAAE/QIhcxEQg/a5CUlWEH8gDKB/pPbBJd1IZxsUlcW stBDONSTb3FLWydK4YuI8j73fUMEXVHXum5YFyxgbgI7nNfm4iUXuBCpMKHby5GQOA0RNCOJTCTY ljQDO0IA4xc7YII4F0EDNEmsdxI7kxbXGZtSgIJNqOiEF1mhmzLy4k/AkN4wCDW9lpGMT65gxgUW xag4Sqd80pjOpProjUv1cWh9/wyHIDr1R/MohRCIHFWH9BGSR+SDamWDUATTJjcHzWpZldRkgk5p JgQlJFgiTSAp0WbBkdr0gqkM5UpPAhGf9O2WhuPlUqJCFBNlZSudctwvxWIBttxwAkCyixVKQIUd 5iWHyZwXXrR6JCRN44gEUwYTtRQECJS1PYxARO1kQAMSaLE18AweJkrRpnnadRWGCpkNBAULvfqm N2Vc2SxSwMbpxCx720sBAbjHUJ8xBjr88tk23OfC9XljAeszBngwa46pHBKKTqkWuOYntX/c7z4I NGVJmeU1ArZUP7DVqbAWpFKWIEg1/Mst3GJS0wa2yW0YYxawloUThIQrVCjkJf9VpnIVqxCVPFxB x1REYAFggiUsGRBmDJ5ZFmTucKs8tMIOkxmvHMwlL3AZjJSOKD48jo+JmEHYZsKkVtxFok2YSNMp ZjNXjt2Vi9XLXm9kEeBCIeEW/AwBQGFhmVhER3s1U+wy+ggdyFTYO93B7FS60x1ngAd95OjURD0L xXikyCL2+AmpPqQqfYyEJiXJlklcKVPVFlB/sm0tQ/SjWtoyq0xXJBOxMEZSChIrWTeNE8aWbFL+ xWSBqHRILHtqwvfFqFyANBe5ouJL5n6DK0H4ylgygF13PXMCJcihVOWiVWZqVS7m1YtfDtPeaTRm S/Ll0peYANtImGkSwCOFPIn/F1fY/NeL+SyZK4DRhHwaytG9mYUgVBYM60FjGdubsITLx1BwLIBo 4KHsH8Xzvk6ZA7MLKCQil9IUobhDWiP5B7TCBJGD1HpCOmmybGVbQSgDsMm9Xq2TheWm3yb52J+w KSc20Sb8pNZsR26bhDCEuBHFSEaMA6aMHOcNpNJoKwcAiwC8Qd2uWMBxYwGd6K6EzHbbxbtxKQEI 0sxDuyiGzgDTozVf181C6NkFq/ktmzgxV3jKczaHTrgndrELNP6p4Xn9TcpoUWlYMKMDjEoG9piB jOVAptML6KNmu7Ph9lVUaeVoDz2cQg8ulbiQLW/PqfLhnnekeB6s+s9IAvRs/2hDsH8P9N8qgQ5A 3h776Mme6U1/+1sjz024xMVgTUQ4nmv70htYb4z7sA5mX35Z3DZCN5ZEFwARoLku4Y2LAuYtlxLg RUrqNZKcAyNWJkrGs3n2xSK+NJq+X6ISgMbEO+kKV4Ujrzc7wFMZQ9Bo5RHjBXeSXi98kxw2NirC HJewcgqmWMWy79TsQ/U3pqLhBXSWECliD8sDoPpCtigeLVbYzPMmAVsDaNZPk0BJCkghKAfb6NIu ctyUPVJC3zTZxWNbb5O8a7DN5EK1pRWFpoyUdLhwK+HAOr/GPW6uj0WpNLIuV6obzHQDUwRv4Zfn fGYFEMSFAVZQAL23GucfAv/m/o+582SMERz5ipMJoQFbmiAJ/GV4BpgKLwMLw+EyTZAbkwZYgEIM kzdGkwYd0AANbBRyi4UMypEC+8YYn4cVEiUASoBqU9FZ7+NqMDcPKAdF7UEgsbcip+IPTzERPpEP N6hi8DEfEZFrP+dkSkd8DjR8SZZ0R0dSNPU2SChBMHUSuXZJHMIhsTQhtUKFU2hcKrRt47Z9VxJ2 3WZyXAFiYPdtwMQWokMkZEYkkeUueBEDicFmJZBmRDIXhnF/TLIMBrN/CJMIXxImsPU7ZnJw/rUK g3iAdIInzPNwkTY9gtBo1UMMtUBYujAN2JOBGZhhjCEZHbiBf1R6mzVIg8T/ahwBFC13Uax2D+vR cqfCGYqwIo2kDxJRP0yjYtwyNVljSjR1hEbGNmziGkm3ZGmTfMwHfKX0ZMXSdLllWyGFEzyBIXez QVdoIbuHAsoVSFjiWFiyhTOyPkhlXeIXfgWQhl5hFmRGZqMTFvFyKdlxJBOgAFRQAkQSKaozFleS JRPVGP6nd6oCcH5IGr8TPPFkiAn3PPbEaLvRgHgiCGDkMoYyWFKQApGicTawWJbneRpIYZERUSYo YpQ1FUqAgunQBIskRYwULrLoLRqxCCByKlh4FNZSS0wDNf/xSUMohBFkCoMmiMEoCjw5UkjGIMW4 fEPGW8oojb3yHxpBez7R/0FTFks5oQ9EYVaWElk9o3VfuI3fJgBNRV1kMTrlaI7ZpYZUmQ0ZkDo3 wmZdtRf+AhiNgYcGA0UBIE796IdAljEFJ5CG+DIk01eBsoDVQxyJKGnTE2EKhYGEhT3gEBlCk5GY xT4EsA7koGGlJpJOUZnyMF8qGUK0Ny2w6BE99UjTEos3KDghRIsfxJkd0nNAWZNIlwqd8CZHqHzC l4urKZtrI2wn4YQG8hOcqVFNaSuoVRHUkg5NBBk2Qo/cl31b0W3fV37HeX6gY47XCDphkR1UkpZH 0hc+4zr90jrc1H9dAnCOQAK4UxqO8I8IV2h4eVd9SUZIkAK6cScQcCckE/8LhcJguUBGgkBYD2Yl 0DFpkpE9TzRpi6UcG9lZJZhZ52F9qtgiMfgPsScf8YCDGPETONEi8MGUTnkhf8ObMCkqs2cQ0diE DVJ8aONORugawSeb0VZ0T6aEIjWAMopkQ9gsYtIReVNChnNLHSRjJoGUSJFUYPde20l6+9dtM8JQ 3UcpYeUXl0KP6NMVRHIzPiNNeNSFbWkl4ElGm+EIfOYDuuMEtrMxg2dw6rmeXnQnCygFZBQ9YGRG koYcgokLNfNg3IN5kfGfyqmBGpagxtBZofcprIYe/YAPz8gZndlTPJgPGOEq0QKNspRBW2ODFOEh JCBz6OAe/tAfsjaFZCP/SirBmrFJfDRKjLepojcJU3BDNgMyESRUfco1Wj4xY7JUfYzzZQTjGFbi RNfXkdalfdygjtiInFHKDUJgndkwpdrAGGFVnI0hBS64hwnzMOeZGmWSGpnwGnIlaGc6aGiKCo4G DN5EMomYaOI6PQomaTVDUOUzkXRUM4JwZyEnUaF3gqZ3guSAgp6VHv1QBSF6oyAhEgYSEP4xZZi0 c0aJQDyHlJyKETTHg7XmQTzoo9IYEPzBY/nDQEvIk0p4U8tnqh9LqkJnW5tZbS4CI9tWLjeQQtii oZ6pQs0lANOUREvKfVrXdRvWOtdId5F1dcpRndVlncv6XlriPhfFHvSw/wiEwI8usBBlEnDBdZPv 5K3f2jFghJ8uU66CFae5QQuRKFCGhWmSMZHwCqChFnL4ag5qew4LoASlNhXzgB7rQSo4CmuvQjU4 WAXzg5QB4hEO6zcbBS2zpiuu4qhPaRGyNAMdJBJboysBqxBXwywsOqrCV6rBZ4TCmItFhmu2NquF A6vPlYLvg1yAu0HZUkJOZCWSRY/dNg6VNRX1iD6bl6tap1mAZFnBWp3bKVn1OBmRURnBIU6VIQX/ V7xMoDtMIKa9YwmApzGCxjEFmJ5VWwryqTz2iU/mmmj4JBy3sK7JQDMURljxKghnm1mNmK9s21mS qWH0wHrUwhlJa1odJf9JA1QTkUohthcSNpFJmvRi+rshhWt7scSUt7IrOnGxFvsQNDG4AKxjq0S5 p/qxyTfBPdlAFoQ1irqU4vIpBxAj6eBcNyACWKY44eKZnysBvOoYY4EA5ngl3NdlSRUOlLWkWacc nfLB2de7ugoZpId3+VgI/Tgak1BOkzCAhja9h1Yo2Lt4+RQcjEhpZER5lge+0RBytZCYfGo0bnuC SqG+p4Y09Sq371AR9QA1AjGpuRJ9tRIfmDQhc+NSUjhLOHhAFQErP2q/bkxJG+JitqYTU5YhInEf q0qbRDiqxDM8boJ8w3dkThgQFlE4hVMU6GAuVTHJWXFuiqME0UVUj6z/uB2kasZ5KaCTHdIpbh0Z au2jibpLZudjtICUh0/0Phv5WZTRYvZgWo7QEFEbo7yoCtKLxKawvcQwnwr5cMSAGy2Tn8JxeZe3 gQRqkZOhxW17r+sQkmrbgPkKAeZAqCP5alAjJvgjSQQhwHzrLE6ZK7m5H47awNBCEWv8m/yLzlLG IFVYwHVzsJeESoN8hKbwTmVawUVWJrdYEEj5uZIsXctlfS/wwV6hFUg1IkYhjTuxIknVhcfpureb VG+7u7F7cj08bk4kGSDtu3fXb8XrCOJpGqlhBOXEvJUwCloEaIDXXwTYTq6Zk3gJDC/QC1wSAi+w Awm20y5DKAnWC3KK/6c1QwATqYDZIx6odgONia9dfA4ouABYAZnxUy3y0GL4UGsKEX3NgiH0EUls fBPAMhCdpCv3I7jxMUtVCH0Hq9YVUtatJFyg+kkdG7K86M/Gk7k2NTaPQNAkUDh7gxUdnNBD9bYQ EMJfMSOVTFR906Nbg8KdYtGjo4bow5VXVx7moom6+g3h8Lawm7pM9D6H5CVeYhoRIwmU0E5rAswG GHnae65EnZB/4k2zkK5fy5+V2HniO6/G4Jj22oAHIJKQedxHAyqoV6gT2qpmvMcy6Zl8PJMWQrBl nZsoAcAtlRO1RrBubb9lXTf7m89PCGM1Bko8NlxC15p83d7M90rcLf+cQRUV6AAB4JYOIxyz57aN EM03BCIPLkQ+yhoWFsANHfm21wYZBcA+X7hcos2rnjVRGHXazf0eLZbLPCYaITVTl4BF0TsKr43E tj1pRZ29w6xGhPWQEYZYh7mBigWg5MtZGrbNWF3fUs16hnSZGAprAjGe2701s5aarzJL+VvdNIY1 nrQfmCSiYON81a0TsARjYL1Ts2V0VmSMJkrBfc3XKJqiFrxj0OIqyUUe1terWCYA1rcVXyGdYeHY 5MEqCy0jo8PC1gA65Odt7lMVnwK7mcIp19Y+WEfLcEkZhoAP3hwaYQISfVatzgtkifzofR1PmUC1 SCzbTrwAQE0ogzD/ebUtPUddpw+5KIv14jCOaiF3aglqSOuANE7RWcZd3Jn6eiHKUQUU2AKU3lbU xwJEzgULwLguNs2yc05IhahVIbsnK1C3izWl1zYFJ1qOyJgrm0SWhLtOS7aUhWXeOI2zbdm1FdXF ld/40LkX5+0TWeuYHULQDcA0DgcOu12IVGdus6ON456FKgAoTmcyGusU02ni0gTovK5daJTe5bDt CY+n6X/SaLcdgcExDJjhJ1+728zsDCOGtlSNWa0GFYVUmca9zXMbFB5aWo7AxgqhNWLiURvSuFYY qQaySbjOUgH06zCRWj2XWjC/orHp5TaFX9raz8xXJpxAJqlhRcHu/6h+Aw9SIclaFkjfpmW3Gn4W cG6/6j45jvTk7hjVQSQwADo2G11IlbpOFKWNAw7L6btOdEj4yB6mkugBODZGQCZGkBr5DmhAFhu+ COKyIRtlWnir4IuGVzKNNg+90GgJVviTJ6e0kOL7aYE1Q7bPYAwwfg5U3Q+51A4LbQ4vsM2MNIpS MzYOIhP6cUUoUUp43GOfr0q7Ztfn3T+WG4yHPMH9bDx7He39zOxKHluO4DDFBS3WIlrjkQ5LESPa fl3D3zjUlV2/mtEnZhEywg3ZIAJnke6bMlmb3EQmhylFg33d9z6Twb4lduE8RlPGFgrDA/sCh5MF XyeMxwuN1wSJx/+IvSAcxKCffXILusFxF9kdL55higkICwEQC4UBhy+JiokQTRAHEC8Qj4sSllUS L5kknJ2dGjJVGlWioqAaqKmppqqjra+pD6iyGrK2qrSztbq7PrMPwA8+PlDBtcHIyVnKWc3Oz9DR 0tAP08nXqqSkoygSnpYvB5bjVwfiBwE3AQKH6usC8AIiGfAiIvHw6Qc3AhkZFhbi2QtyaNA5czcO CAhij4AICwUyFJiYQUQQhhcXWsTncGAQQQQviiQYQOShSSghuJCxUoZLDb6g+BAm04gMHzZBDSMG BUqWnlCMAB36kyg0n0enKV0aLUSIJiFehFgQAoLTq1WzTsJqVQr/1ak2UqRYQGBsIbIEChGwcbYR hABN4gYwt0jTiyaMDoSLVMmFNxQoPlXpFEpGKsOGW91avCsZLMWNIwPDtUvyMWDDNEA5VmvZsmvM rDEd/axaNNPUQINGVaoKisEuOWXSRGKcuYPq+AlQh0+eP3oWMhyh11ueb3/1Bhace9vcoYbzCgiZ SFEEgooM7W2UZw/BRYshS44sGPLjgkhMVJKQsR5mz1+YieGEqdkZ0mb3STNFrb9/FquFPPUUElNp VdUOkyC4gBRWTRWgVzbYQMBHaZG1AFsWnjWII3tBsghei/CVCIezjeNaYJxo0Akr9EFG2WOVvXIL L7TUGGMsOOaS/0wxoDUTjI/K8OffkD5+ppRqjt3CIgqpyDaOJhI0d05C6bTzjgAA9RPQP/9wJ9A9 8ASE5TzKHcJOcy8ckh1EBRwxkXZvcqfdQxY5NFIQC5lUkngjFZLSJEy40N5OvszEE1CaFTPUop6Z lt80+fVE5JADQiWVgQ0GWFVXIXjVKRILXpgChjYEUZZaFZ7lJ1wi1uVqiK5K4AKUKJIwCgmDvcgY ZSzCOGMuLgILmY0x2gKMopf56BN/P07q7JA/VoONMTfKMlhtsmki5W035JYOP7r9kyU+ANHjz0Px BJfcQHmyUyU66NRTbkQSUVSAnNxVxG6dCyGAwD0ZXWQmngIXlP8SJ4btdJlM910DVFHL/iSxT4/i J00xz5IGwQ5XQUVVg06FGvJVXzkIYYQLULhACmmlWiEhhDSxgCOQ6GVXIuB8GI4kkWRSojfrDUYK J6IY1utiyHDGmLDEwjJjZFAbY2wwDCfrjJAZZ60fklJfZiOwrnXijW1ROpcQt+CGiWW5wwXkNpfF rQsPwe7uNldBAv2GQETUSfSPdvpuxJAAC0RnjzwB54nnISkLIiInKLykmSzDAEWMLIo+vBTF9mmd tcdQObXxViWLXhVVnn5aSIRmXbgyAmcF0bohghQS1yN8+SzobIpAkImHIvYsCQmB9XrYY0+7GCy1 lnmdtNRIdo7/teekAeOftEc2yvVkxqrCJGC1SdCNOWWjA2638HSrBEDBAce+2/D4MxxwYNZDMEHs xGNQO+RmEEMMIABgDPjmDwtYJ3ACI1hDsrMQeCwgHh8hj8FwJgGXGIZqLkHUAxRVDUlZzDMTK4p9 KkY90iDIKVAZ3aa0kh6sFKgQDAoVylYmO7EsAAEsw+Gq3CIXlOhlVpkQ1Kz4Iry6+EwCVUgECQT1 GlQk5hS6+FXUKvO150EPWEhznhU7czVnTa+E1BiNkFaTjaGpggQzAExgxsHG2zAnId1CH/rgoQQs iet9dpTf/M6FrwZ6qX68yU38fiMRAAbwf347V71EsA7tmCo7/9aZk+Dy90BBGEwvCHOiZtwzn8ol ioRgDGUzUHgVnqnQKqjEFMmkwJZWnoVlKfhICnDIMttFZRJwgQuIFDErTQyxEjkbh18sscTZQM4T MggMjpRHrKVdxmnHg+bUVNNFL4JQlEQao2NWoSKEDY2NM7BEYNQYPjZaglv7iKP6lLC+LHWpH4RU pJwOZxx61k9/++gHdwjgPxAccoD1ysC/5qHAf/nROBphF90IthxEoIcTTFiPBS0oUVC4xAg4OZR8 doKUDX6wc9iUxlcSsYMXIOiEEGCCgVYqMtdhqBA1fGVZXqZLmc1sErxURCf8IkRi4kxsmCDBC3j6 F1KEAhW4kv9R87jnvKbyyDHF2ORmpsq9JDUrpPvRJjKMdJpoYW5yv+hmUkeRzE6gCGh6+d04ylm2 8m0rnerUDT/kR8gj2PU39rJC4OKJnN6IKW7zACAMBliA/xGWb9cRQd+0s7cCSFKSIklZQ9/ygohy oiUZlYnXvKaoRj3Dg1j1D6hCgFJCiA5kpmOpS9nilVeaZaYwVZXtmjAInLUKV0JNhAt4OgOhPo6Y QQTaMT3RnqQazRXKK1ZjNLtJLG7mWDDxBVO5VsIvigZ70aMaKjajCvZ416jrCdp3jbZGcDjJZnoR hznJRjbyubU537JjlubhpnjOg4/3pQc90yWme+qmH20SjkT/jjDA//HNCgVAcGELkFjFvskic2Iw eBS3nLegxAURfYlQNpMZQvnAgjw5FH5ksOGPhnYaJY3KCqdyyqsAKJULGK3rXEeIlGHIPGrR0E03 hLMXLPHHuRXR2PziS+J5gonjHK5ZiYZcXkCNRvCpxVOnxdQobs96p+kPlqH1GaopA2Pc/bB3XbLb 3bLHyMUr67XE9qRz7gwdh0CHItJ6zvbCN0puTUc8dHNfBPNVkYTML6Dj8ZvdhIlLwhGgXWHgzwlY wQqOngB1IhLJSdvDsROxwr+yMx4LD0Ilu5WoYTAaiw2aGhlGgdSJmbIDjpX2llsBkAtlTZVQxXjG ZKmlhFQV/4DasaoJHlqEEJcoREVgosi1GeexgeyJyF2rCk9sMjRh1Jjn5WhqU9weCIPk2S1bF0jW xa5XvbqsDa7CgjCKHK5Ese4lO8kbdrkN7t56EPI1573wgldy8JrI3wxnfnsUzhGCw748pgtLdhRC DAi8cABSAQQTiEHEJwDxACYYwYrNgRVyMGmO58A7OUgBePQkMJQESlCBekliEnaMqUoVYxdbtVIO dClUmpQrovsYycBSawepaiy9PtVJ3rJjR/guZ8Wc1ZHDZxef4coSgtJpN2YTambn6qhPjHaOrPzM r1XbMtOkprSidbWrliZ7376maZiRtMl1GXqVSUyvBgMYDf/UnZy1Ue853btec57D70/Si5nmRibt tC/giG9buf5mQOKkL49CYDiB/QnxiVP+fxu3Tg4yoPECcNyxIhFBDu7EJ4JAIAiTcIFKmMB6Jgg3 vIjRJFXp8yhQyvw/JTVpCg8UCRcgaLcnLBBY2AKqsISqtTAt1cxC0GuZ9ZpVvVOibIzMO0nURaje OJG7VRQKTvh43dtoXqmrXNWwd01XSoPPNcq+VdSUf/3ftt4XsUb/Zo2d7PLv8o188QpbaePde8cc ZRNne6cOejeAUsIPf6UldRUDViB5dSVwitcPdyVfh9Y2AmdIIPBwlPdwGuhoj6Zg+vImb4JgGJc/ fHISg9D/CZpwZmNlRT2STViVewISFa1mFSWVg7OiSi0VAhjiFa3lFTb0fDNzHo5QWzglCdXHgko0 VGIjVNMnK0snKCsCOdpQCqdgPDpSbda2K0oFdj2ydthjDdTUVWwnGtVTTW83RqVxf0jSf+MkAeEU TuqFXlGSd2+1d3UIV7phQO1DV3okP/dASGsjL4M4Jojmb4algSCABf7kgBJHcSD4YBXBN5+3WGDi SA11EooghUyWfpu1KJyzH1ilex2TYllxcxsjFQ0CMpoSMgvyEa0VUxryfEbHIUKGLWPjfUCjU7k1 VDcDjMPzfc1mZCliNMaDPOpHRltYLbiwfux3TWY4bmRX/yRjGFJjJw3i1m3WuE2rQDxqBDSZwBcB kAjlqIdzYRv0xg+FVxHncg/3VQBYMBz0VVdv82ft8xCJVlhYYFiOWGD/U3mSaAWERZCPdmD24g+J dSekFwl8sSJYyE3mZl22l3YZMyBPMSs5iINSYVKZ4mIhM1qEACqzUwglKTNu0Qg9No7XB28+wwgr CSW1UWavR1zEpUxY94VR1FTOVCPYNizLiGWhMY3cOIbud3tZsxq3gGbgc1Z1EWdQaTZ7OBdnM3j/ FY+KiEhZ+W/xNBz1oF/vhFcFRpAbGECOWHEfKHGYJ3EHWViENUBuMhCOVDAnYTM/tW5HpUmTs0Gg JTFI+f8MsJiDQ9VqB9JqrHg6UiB8tfYVK9OYsaMhhPBrKeFjs/Fb2aJTnahbzeZjvHRZuFWMTJaX yCUKwvIiW1eay3Q0VnZl2LWG2bh22+ZZf3ldZ+eGSdIKTHJG2fINfqcPA2iAcFYQ+XRo+FVfx0Fg AXdf+TJI8UQvE+EmMXCWWIAFHvhoE0BxBsY3fUMdDkgdimUF9qBghxMetfVpvpgi3eRdmoETRmAE FoMUfSmNoRQVHbkDTbADu1UVJjVUHYNzmcIWhBAWNSQWsGQIPFSeRUQbRnYtvON9QAQlsjIDa2aT NVkrr5GMUHSa1YINYEdtp8marpl/3OZVRSKfs6mNn6H/RbrQRIcBbeyGLbmli7XBHGZDJXHmHHuW N/SYaAQmP3olPwvnb38mpM/ZnQ7oiGfpT1ZAeUrqZwlGQBc3aQvGcQfpSAsxCOVICWsVPhZlUS5B DKfQQfA5m4ZZgyohmDkIFSkUICmxOos5FmMhO7AlCMx3U7h4fWYFPjF6WU34i1AyVJ7Ip99HTO5G GKWAnsrooTqpqFXEmmHoqLIZRqvWmlkGGtzVf6TgbC5ok91AAny3h+oFJXdjPsmRN5QmYO5IYBFh V/TiD845YG3ynG3ygAQZnUkKAgaJqwf2owmZX0/6pBuXYJpIOOtAEBB6TlS4dBo2VewpFH/5FBzD irlH/1JSETqNECABUCAAIlsZkioaQluOwyEwqaBWqCJAc1Y2GYU45Qncd6iQAz5XeEaieVzL5GRb R0U3IgpqBJSSAam2GaLyNz0WST1bthRKuRj8Fwr6+m5/mm/OwS00KiXxdXD28BuNFwPuOGCGFat6 FYJH8KOP9o+LaAVYUFgP54hU8HBLWp0TULIHGYKYZoIDBGnUIZ6OlDJ6cgjgoB6EgWEuAKYaYASJ UmLxyRS2x2r7mWIdKTqJ8BQdWWOnc1MB4giNYxav5SeNkEu0ZX0/NUwrskZM+A03KX3EVRjHtA3X 4mymcC1QpHWMqlyKWq+U4ZOO6q+UCiQnarDbwxmtkP+pnsCZiaB36dUt9mY++gAvV4IPQ1pXD5ix PvqxRXpYEkGrk4erR0B5JEt5WLCkJQu5H6tXCUZYjlazOfCdjjVhGdFQ6JB6S8Sz7aFyUiYp+TGw zmKDIaB6+CkgJKV6VnGYkpAVtYYhPKdDOHQqM9N8dcpDlECZu0VO5wpvVLgJaASj6ZqsoLmgERm3 uZlc3eN1uGma99o9WgSi23i311iiJ6pVXWNtozChvFkb4RAlwjkOVXI2EFscf2ZPQyqritSqicSx 03mrTDrABukmtEqQJSsCCialCzyX7CAS7GBhkylEZSYop3AomtNl6GuilFJSo6MSILOKKqamI0M6 bvr/SrQkFsXba7UzM7S1IUm4O3/RlOnqkk5CXNZLocQDNEMjNKxBbd/ztjfyGNvroV/zXHUrdviX f7HJhrenvm/4NIZRw3PWVud0N92CxVXSG4/1jvqyuAJWsRkgBPUSqxlgkCjLpAL8iP60uRfngKMr pZk2aQjGcQWTszj1OEtEtq9bH7NbsCWUg7cUKEyQtA2SQjCWFSMTIKyjQ7NUvKgiCCh5i5SACS6g DRbqfcQljtN3WTUpVILSW0uGttrwXckVt8lDxHH7oeaXxHVbm9pDu9kjRmRIjVsEVj/8TcCFZ+WT G4QLlXKFUHLyG2Tyxa4qlnY1HNyJeZ+rV2epgRJX/5aXp7mPNkCSeLo1S8eP9nne8R0WoYKoh0tE NAl7qnI4ARTViLfKonZnJw2GeYOgNlS75ZEphkqt6CA8FxZi0QG0hACnUiEEENDNRwlu8QIz4BfE Y3fuRlR/+ySarHREg33HBK8YGk0rmgpFHL6pTAuZuspc6MogPZQAm7etCcVc07fE4xp5tg/vkk56 djcIV6pifMxf3KOxOhGLaFiNaFcOSJZwKc0pm7K4GpBKurlLiqsKZoJ0LKyep3HgAXpYShIGM1nW RxgkFrRB8R7ldiyfMRSwWXZJ8R8Acp9WsVs04AK3u4P6idYjQzLFd2ME2pgAXUu2A8OOAGzAOCtR p//X3oczRKagUXczhDrROzxOhp2b25sLyRjE9yp+MNIrtsK9IW2pUQWDMZhlWYV/kao14qYafIvR dqfQbNV3NcocVzJXhDbTYkwR+iInheWq8zMPCPyAhrSIj/g/o5vUEfdgrE0vWInNp6svGeEuwTnV BmNhTRc0Xio5lnM5oCW7IoRi1UpKKsEeNuiRpvOKwbvPVltLs/TdYuGtL3wAtyOuwpbXRPaSSxYY aVQFafQaanShr2FkdgcYmVp3Hh0sH11ljxF+TrRy0jZ+VHZlWo3E2ma+HNxFJb3Z1QWw/M0ahl3Y 4hQ+2wKVE4suyZGPjivGgsZXIvA/H9uPRH3b0Az/AnJcAHEcEZiXYI6rnd75WPtFHlItWVjKidmX dYbxXDyCFM5KJElLUlCxEmh9Uqkka4g5FazEFnAqOxdiKizTMrXYfKxC3vSpW1ZOVOs1XK+hCXPo tUkWNgldPGpUBdYCCqxQ0VGzRaWZCxeaDa0gmrnp2ZMxt1HGrPx3RWEIy7PM4Fglhsy4CkODRuLD 3hR+GwhIlfEFJn2oHfWUiYQ0q3zFj/8znQBpYCPuT3yj0yJes5AIUNX8aPWCcQ9WsZLUQJaUsyUh wcRIAjkhH6OGwZ/VH9B6nxpZ3aqXFUS+Ui+Uz6OyMnD6yDrkrbbTCHFx11zbS59pXrICDuLDCRIq /6Hu3VtiTsMpPZoX6sN6yb18O11zvoWo6d+rkNGLwWGbNMTFYm4cxl3cHoNHmbdb04ZttwuBTsPh 5HeGTheGG19ZTLF/BDikHums6iYhDpCH5JYk7o//NKvDQasO6A+QuLmhToIvvkioi7MIoCZXioQK OmYT9Ul+SSQqpFtVkFLQptb76WKks8iNTKA45C8tD0tQnha0RTMO6ZDC9oRZ/q72vfMnQk7X3r6m 0OasoNioEOf92qFLk8qsAe5IxfSqwH9RZe47uZepMGV57u5JGcscCo5mBXh6iO9mEke78V8CYRxf PCf41eGAOD+zCok4HUAGycyz/bGfC5cNXy8rLv+ll8Y3FUtpE3I/EMxQC7C60ifkZuYeHhUNRwsN s26fO1AFPgsTt05arKhzUnEeVtFK3/06KdytOVYhM4/XryJkTddmhNoNr1HvyuYJQsP62tBdAQ7a Rdw0WYSvqMkNKL0kuxBmUoaajDEMXmbgeS6ifC5zFmmUAHsruBLf65VWbiQOL5DFciT9+DBHxQGP mXhf7fgbetXhzrmIyJmBIs5wWrlg8nPTc9yWfT9Qc7IQZPERGZ8nFSYJ6eGzCINRNtETG/Ywiw8I WTsvIRA7hS4uTBA0GlWHLzsQhSEhC5SWNjYpKZucC5wXKQgEnAicpQQLqwEBTQEQBxAvtLWzty// EgcSuby0vBISKMPDJFXExShVGszMw8tVy44yyzLN1yjXGg/N3N7bD+Hb3drZ19LXxo7O19xQGj4+ 4NzM3+L04fnz+fwPWf4A8/0bmKWgwYMIEypcmNAfw4IOB/bjxwwdChIkgmnU+OJAgButPIK8IaCk AJAHQJYMYJKlSREiSsKEmaFmBhE1j9jMYKVmgZ8/jwCNYQVEjKNIsShFetRKgZpWsMT4SbSAUytX rTqFWQDnTQQiwIoIIiDIggBkWZI92wqWLAguMJJwIcOaDyM+oEAxojcLlIcHoQyq8sLFpEoQFu1I VGkxIQiTJl3KxMnGAgSiQF1AwJlzCgKpVDVZ/9VktKsms5rUWv0iloQrwIJ1XB0so7BixkhcxKhM A29rutUxI+Eb47Jsw7QprzduebNoz9A5+r3OXDsN7+SB2z5u4gMo38OHAy+R3z+AB8Odhwi4vfuI 7g0G7Nd9OHQSM3TtkhAg5UcBHwVo0kktDeiSADEh+JJXNyUoU4M07ZTBU1bEIFQBSBkVw1JHHXFE hzn9VOFTRz0FlFUTOHWiFTBZABQCQQSBVowLlIXgWK3UKCMsTLQ2Cwl11ZWXXn355R4UkezgWCGG ROaCJCEkOcljlaySiWUhcPKZlilcxtkqqrBy1pivQIBaa6yhqdoBs+3HC5ts0qKbMtHchx9vVf/w 9owxdWKkgQx0OlJnNM4tR0+hg0LjG6B1OncoeNh1451686FHXqXmoQeReQjBF997nzZE0ajbmFOM fmwGc4BHIrVyw6smvUrSSavK5KCtM9E0IIIWKHhTTQxOOBVTxBaLoYgFCCXUTRgCi8BTCDCLE1Az TSjWWDEGAZNaY5WFFiuQQfYCkBjVpdd35/4VXyS0PJlYkyEMIm9k8j52iZULWLZAEJ+MgooNX4IZ ZgCqgCaamWaeiUsscHYkQX6+iPuLBMbQaadxgua5zjrRWHOMxxl7TGhFjtbHznODmiONdMp5Mx52 k0qUnnx+fUdQpgrh3GmogEXkaXzzNfdNRff/6dLf0awGyNKBtsZ69KwL5nojTib1apKEDf464YgT +nQsUhhOlezYXUNFVIM/5doVTCxODVMQBGSrrYwIxt1WK0HAVQtxQcLMHs3uQYnYu4VIIsmThDQR ZbiF3LuKvquswu9nC5QSeZgEuHLWK6iF2/ksaEK2KsMQbNRR6b1kJFdwqlPM+uq6VUHNyrPXSY2g MgApe57SZDNyoc1YfBHw2rg8aT/r3Qzfz5XKjKlD6P08s/QNycxzefm8Q5E2x0CsEZytAAjgSP85 7RGBLpWP64O37uqg1AxWi8CyP0144hFeBSvsUyJ0BeFM2soAWW4Uo7KMZV8rQYu38BajcMlJ/y4a MMI+wEPB+LjACZFIBFyYgAh5VeFJlYiX4sxkiSuloANcAsUoMEMKMFFuAa/YXMJiAZkzsYaGHpnN bGIjgSr00BgUI8Yx5iSXixhxTr6DhsWiYQyRNQpkviPO706mHGiwDBvkMJ531hO9mxFkIccLYxeh Z72e7ayL12MPP7QHBR8AKhneM1pbVvISBe3qjuJznwBu4raY4AQmA2rfgrJmv7RlIFoXMuRO+Ne1 XHVLW49MUEwGGIB9yQgCaAlfjFqByR39CHbEyYsP1mizwEgvEYN4DGTilaQX0IAwJSQEIUKgOMU9 jgA2mFyXSuGvVZCCcrCAIedUEws03VB0Sf97QVtSJwEXzKAWvHCB66TZwyEWg4l5Yp0ygnOx1aHM Eb3pjXKG9xzmHGo51umOOMAzn/KcJ1MCYYgY9TGRdzrviw/R1Bepl0YutjF4RryIqlZ1vvDViFcx sYnVbvSSpd1xJiWxiQgskIEbVVSQjvTKUwjZSGBVy6MIkugAIQlIsgxQfGcx6Y7uxkC83Q0yc0kE kILUN7yoCyI3RcggDEEJePXUBVWgwSxpyaRVdCJyRuXlCl9YOabG0BWiowXCaCNVWciiCR7BajFf oJqJ5YJ3+RkXn4xzjN1w03VHNKvHZpe7aWgsncQD3qHOWZ+YIQ96YnSeQMJY15j18688217/WU81 0FXdTQAEKAlFf7VH+DmyQAMiC03eB6H/QZShk82oZjObUZJiK0Zvy5a3NpnJlXqSk6iFBQTYIjGx 5q5cdbGpegrCzoQ8KRGP0WBrohQCmRomBAEoRHCR+rjImaIzZqncKeLGWtHNQhY+CgBtZBOnK1wV h6iJEy2ugJ8ZVMF7cVEHWVMmUCNCJ6BSdOIUr2MPc7J3H6Oyx13rudcxbvF5E1Gn8eDLT8ACFq/v 1Ec2MUIxVanqIyqxI0T796vQArAlbSlgtgA5Nfa5TXzvc2SDLGoBSUJ0bmP5rITlNqMdASh8L+Uk JsPFYsi0BZOwEKtcZBCPNl6Ktjk9SGFQ//kCJrgggx9k1yx2CtxwrWK1/vqEClNgFrMQgIViQthb puzAvV3kF1eohWqwSgvtcpWqzQxGXMApF/IO4zbAu2LJ8CGpe+h3nvSFs17hPM9taC/O/s1z9Za3 vSgWWD+FDZ9KOpzY/s1kbbkiqY1Uijc8ri9Ct5IsZi/rx15F2qRlUancMq1AGZn2xS4OdYvD9ZZR Q8a3M80LujylT0FEgsWJiHWs6RWZyFRyyZsx6r4+s1KAeUY0UKWhsM0ETcK+IMvHNl2ykY3s/Hg3 GDOYwepeyyd0NMoZat4OPrxhHS16m550ps+3x41fcYe7H+zsr57zzDz6sAMFhTWsSFTCkv8/hvTQ YeEKZyQ6yQW2hcKY7aNXrCDpBTl6V5RcoElduqOGs/ThNGwNLFTbYluY+tSGYcJMiTTbm8IHCr2V V8YTsYhZx2uVLDbqLkeha1Dw63Kb8VeYODdVNkU8FxfxoS+y/JoX5Ac2uZgB0Hv4Q2n/EJTlmg7I 1pvF9pL73HGGupvtir15Vh2e45nturfenvxeQxdgJ2jSEkwAmJT9bY7c97X6vXBY7OpAGQZgVxCk 0jrm0dF387RLWQrjvKu4tbmQeMVJ0AvILOJd4eqRj2ccD1VXzyCC+fFOE2MYWiOiSUbO15ZCkRnj coaXpAAN5cqUXVucSTVAhPePYZNl2ET/OxhZlnZZj1OxJ+pOaBtbc3cgJedy4yx68dWZd+pBQXhy 8a6bst5e8cl8rjsfjPpIh2xkExKPsGQkIkhsI9MmAhUhQEXcD+1oZRLIXTVIRomGZElOivcEQpzv OXoxalecJsKLGgJzaZePWHx4jS9+4+eSM4ERL4MQQqs0CIcXAj5GeZLhQl1yXEeVCqTweafwGTMH Q8TWVTYETRnhQ87kbND2MLBHG0TEOx/jG8zRDGVWPC1DT/xVT6JCKXiWPfMVYO5GSpRyT/F0RvtU Rs/3g2YUfSpIYL3QH3BifecDIH8EE2LBGQa0UcByfplWfuSHK3OHWZjGfuLDNO5nfQ+X/1qgplry Fzo+Ehf750CJh3jv4mNxEWtJJwOyZSR/Q1vy0luGlxg9hnmFg1urpXmfgQAMEHOqwC+B2BlPJgSf RxrSVRrERkOo8Yig0wtVABvdQxjcFW3fJVY9NB3L8BtVoB3qVA/iIIpCczwvuHxzloPolj0wcyk0 aG6vCIP9pHVA6F/q1jNTN4S2IUfWFxMukVh9VAATwD/PUj9csRWIxn6aVVGQhGkl5S1v9yoCEhJ8 V2oxdguqpUPRRXGhE4mz8GNouH+HdwuU54Y05TeQpxCIIy8+JgntCBlQwoCQ4UIdgBmb8WQxhwCI 2Bn62EJKwArZBTpdNVVpUgtXABs91/8LIYh00BAcwEEN1sAddMVmr3hnx+NOUice3EBj2BEPdhYp 4GCRFwk4+XQ9t1iL6zaKJDNERJg0kOUS+dM/J9IVJoIVhaQimxWTN5GFF5Y+4bMSICEgW7h3KQY6 kdiNLKZ/P+YjUkWGJQcXscaGsjaVQUIe6agQj9AY8HhqcIF5koB5fZgvnLEZF/BkDBCIiGgwT2YB LXQajMhVkagaUbKBxqSBXFUaxzYb0rQ6MrY6ndiQ16EBvtN0WQcp78AM6SZG+3CK45Bu7/CYehEp hnkPtYVfPghGzYeSmtl1KskMEIkRRidVd5MSXrh+fgQWxXgtHmUiOGJ3dmR3DsJ+DjX/jSMxEicG caKWja1lauMSa4UhLkspLuGiCIVRCz8mF204U0ZgDenyF0SijodQOO7oY0zwlRx0GPOocrg0lqXA QoWolk8WegMDQ1BlVbR0ejdEC1s2TBp4Jq4TREX0J8RDkW9WXwFhg/YJbnB2imKUmGiUg59CRpvJ bpkJKod5DgB1ZgNFb4FULUBhPwxQP8hyFVsRQBLiRw1KNVWIoa4SIEE5En1XamjiC00ZcbHBlMWZ f1IZiXMRU4lAbeFFLrkzo0JiBHxxkoKwjodDnYoQGSUUQpagnQjQAbyES5VjMJ2xj6rQCqUBVW6B MF1VkKmhnoz4iKXxiFT1C8FhMRvD/3RNx1/sNEHiUXzBl5HhhpkyOKBqmpI1E6YgKZjIEBzxdgB0 ZBJnFzeg4Uc5mZMK4mGS1KevCZR0NBKrokyt0BpvEWOBd4ZHeYY/1iP8x2IYIVWnJqPlIqN18Sdw aKM2ZZVyaFtPYjiLYZ2UsAhAukq3VI+ggRmp0AExJwT7aAFwYzBscRqYFKU+50OU6kBb9mUHMBqb M5Du2QvEAE7FGpjFk1/hIZKckjMymJ9m2qw8mEY4uqYoGRAHChxFNAPJYBsEhWLrhyBd0WHRsm9Q sVEswjZYcBMeEoVLyEdxhytamEc3sCqEF2OykI0ZMS4Wd2quM6mFgREahxG4BUposv94ECk7sMUM jTckzvmctLUQQFWAg1B5i8CjTDCOCzCPnqAKltEZo8AAQkCk4nmkoFE55IkarlALDfMmXParWqZl lcSIV1VJ/dGo8AlBUwRXWcSfYbQpO+gz8kFf+AmDrTaHR2utSjuHXfcPnvkcBPYwROQ9tHBYXNhh 0HJIDGY/x2gFw7g13HdhCVJwVVineUSNbQIMSOdbaAJblnqprxVer0VTQnIXcEhjyylKe0EkfMEX z6luUBBrlZBBGYuHCyicfdga/mIZuEQAm8GPn/eHT9a4AwNcndMRBFUabIJVW+YKwZaor+AWWMUq mMsLsBAMcbpNvNNtLOizVAcQNwb/fGR0X8iDpkE7rdW6tCZJM2PkHsNxO3kigiFoOvnKUltop0xo aNeyNiKiWRMmWiZVUuyXFtc3R6M5MbqDqS/6J4pAF+QyU3WRCLJDAzRAAjRAU3QRJMtpDXe7qX5L JOkih87ZHqg0CVG5hkxSONi5A02gCZADCvooiDYggWk5Jhg4Q3g5uoX6q/3REaihiKFbJjbLOa5Q qL0wMRAzJ4ASkYXydMPnwcDnRUb7eMvjg7TIu7pbiyWcuxChqUw0JwYGdqoimi7GhcAIN/3zLFzx EznAIlrRw+DHhAXAGcn7NnkEjNY7PkujYrYQo+WyG6aiG9fAwfAAiiTgA9VQt+QA/5nw28WfmkZO UAWGkEGP2qM+mnIb+wLE5UIIMMAFQzlqCSYY2DmnZyarosC5YFWno7I2OyYh0aTfqqilqxGqsxu9 YyhtNimuC63L18gkGYQ9KCoFmsKUnB4HSjQwvBECtajI5B8CklialGmeBVqGlgMAlCvXIhZxc2Jb aGK+CCArJcht+KKvhQK3Qx0dw5yQ+R3yKQOHGYDf0Xh728Xv+8VXCRhAdVuotICmaqpjvAMLgAQj ZFwSiDmSK7mVA6zBRnoM47mc86u/ihpXYCZ9TDA22xY38ApJkyo8pBHPkHuBSZHyNRF/ERF9Mb++ B2Az07QnLE9ch0aV/FcBQQ7TQf9Eu0jIrLHOtTJRi3Z2+DYTKuLDpowAEx1iqlwgS7w02nJi2UJx GKdxcRFbdutGmxpBw3zPgQGxCQG/CoHS/nVBZPyoTVK4UOJjVUJUQYoKACx6qWCBtKo5EKyeDEPB Tco5wRoASkAwN7AA/3hiSpA59RqULxZ0DwMx0mbLq1syzWFO+3WRzYOK92lf/rzPjzw9bBrQesaK zTFgRzR9tTGpGyF2GX1QXKFZM2loY4GaIZZot5nRLsUWngRrJKBx5xhXf8tx/0BBo0QpKu0PKr11 O6AYqPQkzkydhZCAikMI+QImm/BLK6QKoRd6MCRMwURsrTG6IKHOXLW5lQNVMfT/j5qD1ASQ1DcA GlKtkNwqDEi0MtlWirBYn3m1M/ipV8SdtJkprf9V1mhtkrzsmS9cG99zOmySf2BnXYYl1WqBFvnW LYZ2fmgHQDBiQGLBFluIhA+3sYgrU3PBhnUhHXS1DdjjivdAu37B0lwX04oQJdV5xpdNCZdgS6AA Cj0dnk9mgSh7GpoDiarBcxV8l0RtGuxZSU1NMAJQI0+NWChxqKvyMPBGMSaITV46Vy7YHZ/q2J3i 1fYUwgCtRvd0dcv94ie+Ke/A1vuqparCogfAerxYmoc1SQAEYo7kWd1iI+E6Kyg2cWJYZXtTF7Cl vnz75F18UzmGEM+ZU1OuZ4sR/2uRDZUX28w+FTmWMcADPAqh8dly7M00B6VdBs6GVcGcm1UFg1hq WeEC8NRJLT7qnEO9kNu6HSiKMp+411drpEaW6TPGp4p/007TE8Iw3uhD2wyvlU0bwRFWBTobLnZt brydtn4j1VkTJn6LlhYAglVfmJS8oDrhFdLKKUGdamMPWyQrbSTze+VAWBijaghSaRiKUJ0ZiwmZ gEuf0J3LlQooazCmQRpcpmVYldoEFQta9Qr/+NQFA56tnTlPndqctAvRtie6Dc/M0duCPt9l2l+Y cnzJoymKbtYC6ugwvk4qiBsFVlXSNRuigyqogoTWx5MbHUkWPbbaAhZrgVhE7v/Xf4ezhDdjQKKR wM3LkYnixo2SWU7Zssbr7pgYClgItRQC+mLNCLDGSFowVyrIeFmz4bzAv0rOT1UjKFvhs30DSX3n baHavMCtQqS6fk4ywdPBi7k96NaK0gPWXGRP/DzJY83umnkoa7UbV50RCwzd0LQLbgJob2K8kZVH NRITNdJp2FJ2dE5HbWF9znUANU4xMkZtdrEXNCVKd9F4EpQuMNOKsh73sA6EEQ+VNFC/UBnZkd0Y USIJa6xc0/6HJisao32lUja6o2vHJ3/y2VUatXoW3gLtdB66nFTVNI8cZEZOu6Nm8vyzVBdYynO7 TWvWZP3wRp+S50RgB3060uX/ETRUfQ4D9dbXEXN0m3UqAp2WWHUHWgb0NjOyEl54qMUkTX3pJ5pa lVGe/OFx+lkgaxFvOIYQlfldCQB+Ly/EL6pA5rtUMBA8s55r2peuC6vdwHASuplDwUyqBE8dBElt fWfRZc6mG7expX9+RXPVgi6z1fNs+kMPCFmCD4JZhISFiYqIiosPj4aNkpOUlZaXmJWPGg8yVVUk nyQkEqQHAQcSBy8HEK4QL7GpErQvEKUQrTcBATenqLwCAgECQcJBvMHExgsCIiLExMICC8m8rKy0 q7Auoy4uMiThMuQyGkY+GjI+RuUa6pyP8vOVUFn2hfiZl1BMLjtMmDhx4QTC/w6D3wb+gxCiYYgF C5BAhAghwAICFwkQSKGxCUQCAZQ0aRJgJIQFTSA0iTVy1awXqmTlmkkSosVq1UqWPJXqgM9bTQ7M mEFiBop3SN9VSaqBBNN3DzhJfQAFadR4WOcx2qeJq9dEW7+KHUt2kjymVVCgmEFLwgtUPg/s2gWM Vy6XuWAGeKusorVh1poNoxbEmMVhBEQUG9zMLixXsdza+uZP3Lhy5dBB2bxZw2aqPnxU1SqvrOlC AZkgdCHwm4sqNEh8sxWiycOIEG1MnIggxUUEGJUIFznSpquUe0mRhCwrlq1XJkf20lltZNBUV67E jXtl6NC1R9FKfWeOKWnSUP+0GjoU6bTXsO7jy5/v6OlaCdnl6r8h7IZ//9bYZUsArwzoWEV+JVgR MxAFMVE01SATTTQnEfgKBJS9wIQMTFhWHjlLkeOZEZzZYyIi+tzTSIr0YeJPaqzt8I2Mrv2zwwsN obSADTak4KNuGWk0kZAjEddKS7aktFJzTNrSikw/HVmNSjbxIp1PQalCyxX3GaUWCmlp8MlSSH3y TnhJRVXVZqKlOdV59LDX3iKRwEeJnC3mqedY8zC11lBaxgUXKzz5hM1bBSLoiguwwNScK3v9YleA E+4VgIS84ESghR16w5oM3Xjo4Trp+AAaFKGl2uaapsZj556TpAYQQK7R6Br/jrbZltuOKQCJEUc2 aKQEAcBpRABxmb6FUkWOMllLks7JEhSUfhFK0nU8dYefd2E+BdWbaaq3FZykrVcarOimq64mZ0Wl 1lDZ1cKTNb/wZCCkfh1o4ab5JpNvkvliJACkvBh2k4WxWNYOZuSU6rA86QliD1XpQVIInhKvGytr /iBEQ40JvbDDDrbVVhtOuwUXZEY6KoGSdcilFJkES0brKCxuXeHctMxSaWhJ1zWxy7Or0ELCl2Z2 6y1T6az5SIlUUXxPiZupyCImGM+p8dZcN9JnWn/CG9d/+snFiyq/SGbLgBfulSgrrhiKF4K/GNcv ga0Q+IJr4nwjThXmBM6w/xGEFw5F4YgbbjjVV28NMkAi2yi5C7TVputDt11kU5AYGSuky3Yt18oq LyxJehNqOzfDFTk3l7q0PqEN0ywzVCEB2EiTmVQVVz11HmdwSmJx18QXH1+fGnwJqDbb+QQgXJI+ BtmFFTXomNvXBOBWK7cgmgym1jy3197fkDMqPKG5Y4Q6PshAIuObkWi18ZQwQYMMH4M8Y+Q26jqR bhsJoOeEZCzgXKQ40lFSSbIRC53FolFriwW8ntUWt6jNgmxhSwWP9iU0fWt3uktKVTxDQtCI5gEe JFdUVCifV9HvhWJB3rvcQgLnJIpulLKUotoGAQcho2eIGl3cIFBDVDzwUv+TugbbMOQPzHgoHZs4 R2iQUh4VHuI8K+KaP2rFxW9UYX8MydxHgpUCA2qkWAMkktBWcgDpwGIVS7Jgs0ghGdS5gBa1I0oo iFLBPmowFUUpBQo4qJalrdBNTEGVZ05YsXMZb1wwjGQMryIKthyAddpp3n+AQboCse05F3qgJ/E1 PZupjYcW4h4sKoMZwAFOA6Fpx/oIdzjFlWhqJsrY/F5ovy3Wigm2+geOSIYEj/wvgL05oxCEUEDP XWskcAPaoUhnsxeMooa2YN0nJMAW2w0Sd4TsICg66EGruOkqvQMXVUjYyKdFTWIu3JMjJUnP95jj mzPQ5NgEwJ8ceo96AM3/lN4UhbDnwISCRyRYQRnVRHcAThyiiWh6qEai90mMMyqqZyEI4pr8AdOX tcKRboAUrGAhoAMasQFw0NjM4LQkKCpRyaMe45xnzQxsVYBJKG5XClLgLmlL+VLyzuStQ45nhVZE HjrfdEgWHk+jUOXKCGXwpVG4BTJu4dcpYoE36XVPNhoCaKNICam1uaIUbSFFtFABxLCqZosMExE7 3OeJpJiDM56JGnuw+ML8KaRGwfwio0LAIyDtiAAXQEAyFUsAIaCxWAtwmQCs08bKBoV1D6RmtLhB iy/RwgVEGaRozyRaMoUnnVFUIbhcldTWBi+eMYyqbC2RTtGioC2ESgZg/yZVDbNak3KsCStNp3ch ITrprJK55rPG5xxGaQgcDHuHONCRPuqKBn4Tm20haDAQkNLArxydUUQ2MqQyEosAHSjWShHgWGNF FmZtTMlWWbESCNpwbaWwnQW9ebSegkm0tAjqKDpoSHOy1rWIyJrXtMvg4n3tXazbjtAARBcdWqRC IVgU5QJCRNeEcibiOyJze6pcOR60RuLY0DrMMUVzzNLF1yUcVWiJ0alFlUO0Aodr/lqjHBWWADxS 7AUSq1jgtJdYzIxsAAiwRsseiXRP0myjJHNbnuY3LaQQLQd3atvkHeXL34KTqw6sFTK31lxYhG2D 1/yVs3i5yqdgHi/igv8vC4nVFaphzWxcsQAI4uwUJDnSnCNDikLXArfXhK6IVtyw9klxilIJDcUm qrVKw/C7//hGbLYYTBox5LALKCMCTIqAC7RUI8w8FpNbEhf52sy++B2FNY1WBT2OaRTj/G8hkfZm Xh8VwU7lKyOuCIkEs/nY84ki7rbXlhxuil9iJZ9swApQ44I4GaOb9UHbIopu8A0z6ytP+hgmUSlC bdLtaRz9dkADH2QaNqAKiAswjRCR9uqwHRBCekttamNZINUWENYNAt1Gt9QMFjV8BeWi9Q0JUE4U uB4T7oQ6VKWEY0xHCeFp43SudjnV0lzRq5qRTXLhOTp5Wsqn8/zjPMD/xC4uN4tMwmQjvcxWpI1v QU4ydHrog4bi57L5tjo0w5kpzvJwSC86LXcpW3bTQLD5+xioKMMEHD2kpLwRdZH9nerGCgu+DcSZ TsHaXIbvjZs/FwWYxlQm0j4lhIjMCrGLnWZHDnuv5qItyEvO9zs9YIqgYLbzTuGfxezWJ/5ijkFh 7VUFGtNKrSiFzE+M62vG1Wmouu5nJn3Lw113zQMZyNMzzWjWhIA1EJDIjlZ/2GBdRKXL9LexYAa9 Qx2a7I2atk9nQDmH9zRUA9ZyOAspJnMkjTTm0cpnsmLmcuEd732Pvmme5pm0MI87iKeUKvWmoVgs HJs2XduTjlOR5bgt/1rbM+i8f06ehn2mM9TFrvwzKluCOH1GDZ03oygnER/rCMgYARGKtUzF0nXI giTYcAUL11NrQzlpt1O2s02gEHFikjxmUmBQkVpRlIFMtQkeSC51UifPJ30keBpP4wODtD2E5wvS sFuUMiWQUXV+E0GghC/yRX4zUUoz433dADihwSaoglHPNzwkuAN/lT/zhj+aNiNh5BGG9XoBeEZe 5zku4xEvpTNYaFOz0XsNdEfb5BZfdE0TqBZjuBS4Y4FlEkJNxVpWQX0ZuIFJhWbFpjV4MnIlWHIU g2XXt0859AtO0n2y4XCeAlz3NVaPoVm+VYjSZhlDN3SaNwm5lEv7EP8xLzQQIyMjH3M/M7KETEhY 5NUEwRKFonZezCQSGIFAeYFzWLiDpXBHtXMFRfFFCng7twYmyXM0YSJgYPZB4wFpSoEV4bJUSnVm VxSCexUnd5iMgzAIYkJHPaEKc4FtAbINhJZo12RN5FNNNoc6yoVNofJZQWcZHjIi82cijJMxkahd AhF6Uadn+KOEYYQ5oPYR7aVeyxRwqrYsz7QSDqQ2s+iFr/EJCthNn6BrGBcm5cSBHtiGEzUeq8WG UxF368QJpgJsc4iMxaiMfXcVVRYo2UcvAVI9C5BhEFAZIGNNoLCFCAITrqBWzoFNCeNF5gNR5IAO VGE1VaORheB0TvD/XR6FiSDyDbeRYQ9hhU0gheo1QNbhcPTVRgq4iv/4AgNZBVcwJrVDlaFwaxMY fFU1Wr+oFGayCY0ES3HHgUlxWkcFSyOUV8zXVMSYdzqJh2dCR/iBePNSKMCQUFLwVqxxTd5QeQ74 Cjx1M9yQcA+0N+RBAvczbuTgeeggPzmpCOYoiaCXiS7gA/fTXeAQGvNWBak3krsBMwTEUsYycFKZ H4dyBU2gM2yRHcDlcLzHTV/Ee7WGU7tYYE3VTuuRd3cnZsgTZr2zluHyQUZ1YM03T3HZYBx5Wz0x L7pVFy7xFg4iBQ3xCqnBYYVGCrNRdtjwJNiYMLbgFIGTVxLDDp8X/5lx2W49eZnpk4kr9houQFg5 UpQH9DJHGVkE8G9CYAHCsZqZVDpBAU1SSZUu8JQAqYASKJsusHZpMXFDVUhwVxVQNA/v10gSWpFX kR6rZVRRcVePUB7EKXertZZq0obHmJzaFUUd+ZF9uFWpUIMliSF7UyAkNgqPsXDOMTqSUaPiAA8y EDElQjiflwjq1nc0kHmqAkvtKQMD8QI8AppD4kwZMRyxdyxKcAOq+VJwxI/4wToON5u1dkd79BpD UZC4qGu5szSjoR4WWjGdQWZvOGZINWbn1IG9Q31B6BlI2iZ90kgXs3coujUqWmWsoH2+UCjRiRea lWiO0ookoHDOpf+CeVGNlsc+6fN55xmoWdBuqtI+J9Q+gsUQEoEET2oDLpNG7MWfw7GqwjFwONdA pTOQDheQOfUCXwgTtSlxBak0S3OcEGMIFSOHpeF8feKbc3qscrpCwEMxi2QEC7l57aFgmiqoHFlB LDqNiTcgu1EgwVVTosRZbwQ3s7BBo3A/gWOeOUmZuqSRPfldpEICnoqZ+TMyn9YrhsVkaSQcVioS VyoSppmA+LEtrfkaO4WrtnN2EdigaxcK4lSBXnaByUd3enoIfppgw6pUg3AevvqBJwoxnQEx7kR3 Igio06onKqpfqZM9wPAY/CJKdtYozmUo6mdNZJcNPWVBidYN46n/ee8TP+zAGfKzrpRAafpgh+ri k9+lpPiTKkq4Az7WIyWFXgCYTKiWn8fyXlmKOizRgF80gbcTCgXaoKAVgd4BHrwWHmhCfCZKjPRw MRxnkUTod+LyNBY6aWLWTmlWsnlCfeEgPhRRF3hTqLKQNxdGXKo0RDWFTRjiN+DgDeFQQ+IQFaLh tr3ZtsoYGpyKDkvLqZ8glCEgEVDLI8RiahxBLKQJNPy4mtr4ArVTFMF3O6GCAsDHTRm0ZQxKhuSU fBHpWiGIZiJokVgzh8Yoh1XjccX6WnorT1TxRWYVPv6ybadEVrBgZ4c5R3vDg34Tjo/rFHlFie5E h9l1uZjZnkkY/xpVML5VQFi40SO9kVhT675G5l5KsEA1Y0pf1IqD5JdYlrBSWUG3dU2lhbsJaU4I tpsZ6zXDaozq0UJg8btlZkW9SyfSmrzsEhWy5iTOtheqoD02RD3fenbhFxnZ6yl5Ngqe4KGa9xkW Na3y2m6Y5pOpAhvpO6q8whGJZVIMQGSOJQQMgEb2Wb/oB5uzFmASACZfy00wcUcWhFZWtXZO/JUE DMHGtmB/GnLqAmwOfAlGS8Hm0hSKi23cQyByxIAP5FybRUTe4K2Ja1U30yEiQqFvK6yloa58h7TV 5cIyLK+f2wQS4SNldAE9zG8D2MM8bIBM9qqI6HttIaZ66JKuWP87RpO/RzN8ZNirSJW3EbyMDRxP w6Yxc8dCxCY8mazFJKuMfZKCfEESFnENeHFQMOpniod+0VJircg33CuyYRHKnXyHMIykdvx0TpC+ PiZqQ/YET8AAyKzDy7TDxkIcSoJ+DhQLtTpraoVWrVO7RYyLBSlOCmtgl/zNvFnFlha3GmWxCRyC lOgeJ7qR+3AWg5QgSFQtwTB210uIfuPBwyV2FXRifPMOGKrJkFhjklA1dCxb7eqp7fBdMfx0TusQ odYBQ8YACjDRCpADOQzIO3xkqyag/SuVphRgkKydTJmARQET+XvSaoGLA2aGvtN8I+sIJDjB9JGR ybsJomAgmxL/BHkxPpLBRB+Gem9DU6zoc94GDlYRrBYzhJJJf33Xru4ar6rC0A+BBH3cviYw0R4A ABFQAgBQAlMwBccMAwywzMeSQFs7ebQYWoGnxDLXHbbDFil9FAwbwOZxThyHNXe4xVzcFVqsbLYT XwLFfXrDKGf1VheSZ87FQxAkO7XgN69kQrl8seVC0NHn1O5KKqoCG/9QG6QK0UNmAk9gAhEQAQpA 2hHgAV59zMgcyFX4zM6hgLg6ydaXnbOLR0tsNAMm27ioDgnJsWcRrO+x18Idcm7Wt37xQz8RADXS IctdknzzDcNVULgleYx7TZeKD+Qc0JRdxy5MKkHYqa+xA6Ta/yMpcAFXfdUAkN4RkN4AkAQcAAAe oAAwoABgPdbEghKWsxIFKqatCyZph2UDlkG2jWtfZltgUldk4pbHi5zD3eCZwB7pDBYb2BSQUhhz trLdt7i3kmd82ZIwOj6FlsSk0CnidldBqNckqNCx5D6whA6whD9VcBCgaQMdYAImYN6jTQHpPQLs Dd8KkMPH/ARDJgS+sRIh0IWfgKtXmZVLIYY+lWU01FO5tquiAHfMd1R4XbkOvuXC484oFwsL8EPZ 2oAm3DeykWcdnIMz4XvAFY6h8uKkUpMaIMfocY6WUKTG026b8V32Y13+rNk5IgUL0AEKYAI9YAJa rQArkN4UoP8AHuABEXDjxTxkpYYAEGEdIrPktNqgXvxQVpXNbHyzJ+2Xlgd3Cv40fY3AXL7qGats zSgBrmDh2CZzNbqVElAZYMVWhgieQp17PXpXq/JO/IBLAs1m+JAeJNKpHuhumNMQKWDjok0ERLDe FcDeHPDe6j3aCvAEPcAA52UDtbEDCIpxt+mw6kAUahcKJ+wJwcfkFQixC87gpMzq9N7qSuGXC1IY x7ApM6O/1sjGdQZie0bYvi6e5iDsx4bn+/BdFPUhPqoOwnQSNP7ZDGDjpT3aWj3aGk/aPVBqzGSq KOF9uvoU4gYP72Jbsj1Ie/OApF6QbWicm3eR0VrKpAwfKF7/77KVFKQQUznhGAnjX+NgwlMX6h78 nX8ZdJjRPj3L1ApPpBTDDltzNU2/qfATbuShtAkXAj4C0U9Q2hMdAUQAAESQ1ZCe7aBNZJAFEVIJ Wj9XDk5BJnclIgTWjBDnLSiQDiFqvNGa3TdvFjSP89FXJu+cDD2/c8yle2XOqDMYSis/bYw7OCmc bH9fPEbwXT17OFe/JupQBapxdSnA9cZsAlMw7Rt/8dAOyKHoUraRxGD4N3+zNGorXUCHkKAwThjX 0nT3TiDIwICPomCZ5Am1ICEJGRt2NBf37zDpbX6p/KPiPjU29QONk8Uj9ZRAA+/zs1CwaEoKqtB9 Gz3CAEJu/8xjv+0RMAUXv+0mUPH9JiQvww0Sx+64VoF1RVW1f2vZu5VF3fLw/oZ/BwgPWYOEWYKF h4WKi4yNjo+QkZKTlJWWl5iZhA8aD5woL6EQAQsBAQemEBAHEKGuLiSwJLMosRKzsS+wsrG4JD4+ MsLARlDGxoRQmsvLyozOi1APx8hQwD7T08EuVS8hIQsLKR0MF09PEenoHuzpEQomTwwdQggESk1N L/pXEi9Vs2SQAEhCRhUNGqrISHiwCgqDVQ4iRBjR4MOIEid22uipozRBiZiJHEmypMmTKBVx4sTQ H4RSQcLJNPWilShZLnj58ucilM6CCjVIo+aDGrSUSJsZPf92zZq0YBFdQABnwwaCFFcRmDNxwdwT c+9MaL1gD8GCJgEg6AuFEaDbhgcNJhw4kOBAiLNyBiShSy8sgRoWCkPYsWPSw4gTK17sqCPCWiRU kQoSRIAAUwFqHnghAYLfXiQg49KLSxUToDI4WStqxIiPLMqORorNuBFt2IxCJoNiJBls18CgCA3m o0rPEFU7jCPQoasCBeeeQFeQToFXBPYIBMh3li0KFBFDw8VI160GH3XpygAWsKHAuxoKng+M0Een wrprb9LPv7//TY7FR4I/LwRAQBAElMIKK6HwtcsLvsxyC2QXzcJETb445YMRGhRTzX+IeRINFDRM Y0wxG6b/uJ4RChm3ww7I2bCADSmQdUE8JuAY1jvwkGWPDdoZmA9nDkUE3ncMhQcQLG/RxeSS6sWF i0KC1SeUYSBBkh9JiWwJ4pdgjlQYRQC5hFkpq6QVij+xSMVLg7fMEp6TOmlInGvITGLYIPiJ6Mht lchmGyXHwHaMh6ttuJpALnxDlQ3NNdeVdBFMgQ468DDAgBAJJpgPWvnYJEEVo4KHUS0AofAkCnPN adxfCC1E5UIFCTRMn3uGaEiYvPaaFEiePFbFFQUukKApCqqpSk7MQvgTXW3KYtAw2BiTYjGGJkZN bfkttZSJKdr3gAw0NPrNjClg1UEO0UUQXTwXMICAECkc/2vKkK6EMsNAR35X5JGnKlnXqwWREBho swYm7kfB5npYll3u6qWvFFfcGCcOSeAPK5htZ5NmpMUCgUF0QUYQacLEdd5QHRaK22K0AYrSlrdN 05snTmmzYazCuMAEBEygm66kDJxTTjkX1FPPgQQce8DTnM1yxQypGukvkhqgWl54Dwlja0HM2ur1 QtPct5LDvxqCZWEWt+12I8FmXcUMEnBMSmZpraLKC0y48B43CwWW0di1jr0eUzJg6/IiWaoNsUiL Qz6IoJPHVo0x2lADXGBel8sEOEiIky4BQsQrDwJFa6rp0vZY4OlaA17hUL+zz56kW9+ZOsvBMvjN s+GDYf/Dtp/7pdSn48MT//byvsb9Hd01YTbKKXvzvQvCgcc9kdeBGbFQUeAi+mWek8SMm+Uv7zqi t1cagmfi6xHncwhTUYUAkKSz7qMQrsdkrHag0kcrpjaDq7HqagETj3h2kRMaFKxnqBlM4oDRCYap 7YJIwZUGJaY+5nnwS8HKHShS8QJUlKImnvGZz6w3pSrgzBrwW0hrdga+p2wLNo+TRvFGAo3I7SZ9 k/ON+Qr1oU1464aVywZxaFAuGIWAO0ACUgeaRg9ONU0IpRNB07aohHs1wSawuEVEGOIvgbRIPoLj 3ESAETgOSUMjhGmYBhtnEvwQBo7Woo+J0PbBPkbCIz7/1JLz6KIKVEwPMwLIV04g9DO/cSgjv+NQ MbrXPmDpkE+QoBxjejiNQuSpkyISkTJMNJTLFcNDKPIBE1XJRBLsoCZPXIASkKAE5lwxO5zCTtMW IAAlnCUfmXGFLxpyNUb5Qlp5idB7ArJMhgSOPhNZyX04qD46WsKOdqygfdYIDD768ZuMU5uHJpYb TwTDYHyRzCoOULcSaixqterF2ILyPfskrjUcEkYxspENTTpMUD08iiZPcghBOOOSoMzT5Sx3yn6e qAo0UKVBXvREcOQDCUDKZf6EsCl7aLFp2/HYmlo4xoN8B3AqC5xg4CMYeh5MZXGcozfFNKaE2NQh JJsS/zRX0kFw+vFxgHQGOVUSLLxEZjNIZedmUKiK0SxzWtzbkCTtWaVRUlMlz3jEQA8zyk9SLpQL PdSJrAWcREX0OAuoaAiUEEV71IsA2RFBdrr4qe7oQoFVy9pc7mKruChETrgQ26yCckdpjulsyGuc NfcDseNpjyGhiRC0CHs2tvm0j8AyTFE+0tM/WsMu/kgLOzW2VFdIgFlA89tAykUCGlRJn8HQpzCQ kTw/Ee8QW1UE+Uqy1UvaRhkpWsr5TuQaRFnLGuXKyQ6aIJP/bRF/spSlAH7ZBFZ8EZ4Dic8YywhN wX0tLyH7yzDlBFM4skSmtUXvHDVSi++EhjOwgMy0ov9ptst+MyQ4C+VQc2OfVA2oQE+r21JbcYue qCKFLkhugr0WDNcCbxh4OsbxqClQgFoutyUxaG5LSdbNHrRyTKHGA65RHOOA45cz6lTTskMA193j i9VthU3amyRhVQSmKiWBcBQWq4kIhyVwtNJ9zFZZ9epXphuZyOzo9t9QLNUfEhCNeKJpWfsuz5Jl w09nHzGNCIX2FKhQEytkHK1elKtc6yGXmtNsKzxVs49I3M+GjSEDa6DoiCfysFGu8aqKNiGW4WBu Le+xRQAe4Lqiqh1cWOVXwYFmLwQDTZUku7tnBrmwRiYykm3q3hlw5p3VLeEVDp2vqGGtvju0csXQ eyX/5WmVIjJ45ylK+DR29gRCj2ZU7xLMoW2Qa1Zji7CIMcewoRg0k73NzZaB+DLZdBLDY9WhUzxp lPMVJTjAiEqjvpjiXSZo0FwMKahCgYIoh+amem0IujXiQu8Slj60koi8OQJk+hq5spp2TIAeQ7UZ bIZYzP3Upw5dWo2dOqbLVjWICtonOBoM1ZBAiIRCG+YSiiJv1WOWz5ywYPtc4zy+1qdVP2JBoj5s kyEmJZ6hgVsNjbhc3ZjKPmQi6Ogq4QZ0BdV29DWq0JgqIQekoEqTzO5LJ0QuQd53TJN8XsPS195D vuNjnveCUedjM00ggMCxfl3TFpBVMfWmYhXOLbA+/7a7VW4MZNdEa+rV5O1vP3BqmdA3ubRUhmOj LQ596xGaDVRmg/KtYpzyraUYd8+J8jhEX+WN5hqrFL6MvCxhXPUX9Nt2E2F0FYpjJYlAZa+2Orp7 lCxxdjvE6EJOunmZHuTZoWAGxJKAwNGihJyHQh+bKWQ/Tq1lsvcKv3FTtzQRknAAfYJu0FMqlCHU oJwArS8ptFVxUiYYJsCvuKvBHGw8nIiA9pDaAs3qHg0BeErsF8R0NFGzz8d+plzDgVFhbji2aCxw g/Qs2/l3qcBu+ksP3+hnR2/1pkf3dlgcIXUDCFnl1g9XYHXMlSA3kA+RF0DAFGpRJhGVhQhw43uK 0f8nO6Z5RKcQoXQxj8EZAPcpH9MXzndgfcMssfBXALEQUOA13sNy1TSCfOJqGaZswNJB5/cnhMdy 6odnhrJnJHYeVeBEknE3kad1s6d/UYY1CYiB/scJ30N62zNvG9EieoV6ZsN6rPd/FAFZpOIP/ZAP Efg/tSeB+VeBTSABUxNlGpGBQMVBP6iBd8iBjwNHWugQEcZHjjE3LhB77uQT0cIsjQQashCDxtQz XuMtpJQNxocJ+uUbRkRy6UdNP0g5m8Uh5PdCxxZ+RViETcEJqnQcolAKBiJ5BrId1XUAxEIs/AJH 4JF0caN0YvgAkER0YjiH+daLT8eHuuMKr9gE+ND/Rb70bY/nS493Xf3AGagyh0Z2VYq1NvmhgxzI WPpFiyUVSe3DOMenMbGoMaeVCz3hgn5xaygVHzkhDNZ3T3qXg5mlGnzkQyBhVbq1UMqDJbjRg5LQ SflYhIqDPhcmVpfjUB6mSqr0KjuQVqXwgND1KfvAD1+HNQdxXrwYR+Z1NhuxY9kDZPgmRwHohUEG Ef5CNRsDTKUgE7Vkf7VXezh3dcJELUSWWBuESdloPI4TdWSUO+/RXhloCErmLxpza6W2JiEDXgYz X4yyC/oUGJgjFFTWlAURYXh4DMOhQ/pFcga5LaSEQ0FEKL81XEVERId3Q6VkMwmpkC6ghKoQDvgA /2h/xg9VNzenN0baY1jZQHRvpBHC8ZfdBZjqJZUkeWkHNHVAR4770DELgHMw+ZKOeXNXtxmnJRjd NEc2GTF5mJN6covsJkK5805SuDZKRiD0c5QyFjVQUmmC80YyIF/bU1TGxI6mUSse4oN9KZXFZoqx ojmsoThDWH6z4Uk/xFBDtHLVkDlkZYSnuAPHEXAhUHVrJSOz1wSykzu76IvSlBEFGHaZppfetTt6 xX/CKFmdcWD3cgM3cGhNcBkVeAOz1iABoUcH+ItU1jD1NY8+eEH8uFi+V29cmDXPEyemlTsbKSw8 cWAuQSAEMhpAsxeBNR8P8UAagQs1AQs/c2B/Uf+DmGNJbyRhQ8FGVcJGHTJDxFZt7DePNAOEzeYt h9d+hccbSzEcTCQVqoAEfwZwTzSXEukPVGMk/seHY6iR2XmfpOlY+JlkcIF03Gg17YV8EjADdKNU ELCeTRCBEXilV7qeBBd7f8GkTddwIqlBDNOD/smZ4WSA7PV6/6UxA+KmBppkz8MvfEEgNjEQwpRM v0BVD+QewgAUAMFUCyB3reA3h/OUh2eK/YQzsRIMnGM4UFlDcZaZODNcoRhQoyijRdiVwgWiL1Rt 1kIubZkTfvYpOFpXArcmJlWYQ7p0UtlPN6iVciQxnpmAqAdJrgd7DThqsPg0N6eewKqeN/erVgf/ NQ1KH9kpkvcxFPIYRBj2j8UHTo9laa+3LxNHjtgqh1P3pgTKGRbHfG93jot4aX86CyjkCof0EqQA RrWSkIejcid6JcIhGF4znzIUHBxWRBpInOvHfpWTLUe0qSsHRNvSVdbiYAk2FXO5ozz6RdblHd1Y JfWZevURPEb3cR8hgIeVpDwJSbUoLIBllGphXQ/phgZCXVpaa946If6ierZqb0X2i9PYWP8JcsJh TxixVxLyaQI2Wj4HGUyWF0f5CraAaxQKobnwluGgruGQFoOaQr0QFDPoPTS4WZxjZwpzDdxzFyqD opcTRJloifpKnAeFnGY7IpZqLSlSLt/QBMtF/0vUuXU1sRaGiEYHWG9lIy4+lpFxRKlj2nD1eXpg ZySn0ibLgkJoIROFliC6JAAgFYG19k4TIh7kKXWZV5hOV4B2mHZW9mM4M30SMTATV2u1RhPZOmCj kC82cWC6kC+gcSGoNRnpkgL+EwQktDe48BAIIRzAQa8rwmAP5l2c41JeC6Paxye79WGZtKkwKrAg BqpChQh/SQxGQAOvtFz5sKOnGp2f5mQmaKhV8EYsUYrLejzHdVyEiQ3auV6FVXraBR7QYqHi2KsC 55g45zot+avCqqX6IGBRBqdIUrlxkTI9tjPFlZUn+kN/NDwKZ0eX2SratROk9TTTM1oFIgoylv8W LiF3cIeurKu0QXAVlHE3l4EZ4doTyjRbsfVg8QO8D1SuSKcoenYbFUZ+QiE+AKtVxQm9PIxnkagz MORaL9IESIBROVoFAXcWO1oT/RAnBPiX1iAUnJVfyGtsRdVjUIefBjiAJaVu5IEqRllC1SmBLeZi 2oGM9xBdrrgKKzsg/rKqWAgR7GZp29R3dixTfotV++k2+LFjdzRfXMOtpHVIbRdmaiI9ARATMTEK H8y0CxAEKSAFIUwZi3w3mDFmYMQLw+A1OTErhso5jmofsOBaEBVYDDZWp0SE02tni1OQ6JMFt2m8 mPohKEqKhTJiq1G9TMC2DIujEbEPBAAkZ6H/FnTLDS2yTfYhYbeFkwzDdEW2Xs+MgBPxcNOiNXyh C1MRzIn7P/iDOrpUL861S6qoFqqwfCSwLx+LnZkHmpfLe8+sxe+MmW/2OG+DK083LVNyzlFKNwSC VAWCGbabyJMRDpRc0Ir8yEEgybNLu9hBGY+cLNJTqCksomLTM31ziJ9MfV5DJS1SXCLHrGRpbBym W8xGsCBmXDA6kMjpUJrDG20JI0McnSGwXAybVnNZdf0wZWXzl1pmUM9mKEO3Rl9IZTy5xQNoMG7B L0XCF8VYnYNWS/xjAS7WRQHQRZ5CP4XUvQPCZAHMzmP0GEoWIfVBQVl8xyIyZBtUW9HKK7gy/4Pa 8D0EIUICQVp1I2CHZAq2i9AyQbu0KwD+88gMTbsIfdAx0TFOy7oalxOnYTgiEwIa14K7EB5MUq7M tMJnuRTXEJyd6jK9EZayjLYxo1CqfFwy8CIQcL1PhFHB7Esn9oBnYQNrIUYxVaZZwlk4mYO0vVj7 aM9xrF2wkC8UuEVWhEXEzVGrAwMwoClSDVcyMhNZvSYaI7gi1BB14V6VtovgE6aOddvxjJkz1TaG QXjwthPlljUDwq0cY9CUIVcFjQA5kAPY0dAIEMJYQbtSIAKKTLsOHdGF6oIk0Dd0t9FUEgunoXER tHlysU12JxHx40ZG4dMe0UEBi0ScOrA5TP9cRLQ+RsFEMPICOOooIXCqUcRccSuTBsedlqWfEF5T IFfWuX1kSQpkRTIDg1hCEKAEO2osGRXMzEEWDFAAPy4PBRDf82IWMiEZXRcKxEI3DiGlBfR1Ts6A LPuzJiMrXw1JmTuSFaS5m/kfRoF9/WXe8vazb7ogqTvQ/vMSlHEgDl3QkvwS+i3Jch4Ecodxe5PY AN6CKbQsr3LMUVHd0GTlvyAfwEFBORPFxBeKAOvKBRt+jD5cl/1h0OtJ1duWM922Z5FWNsBW8hdo qaoxBRRkL55eYwcgRCazWxy4DkECxDKRKxldpJM0QiAPqnMOCsAAOXA0WrHrCTJ/zJUZUBb/3QMR ha/XaeIopa+HrQUk7BSSux+LuRn5zI6Tah+klRrxmgBhre31HRsTPR1TGbxU0I88XbzUtHp90KlA 56YBNBnaChnagqfR7qZxPcvkN4jYjilTK5yj79dyLTLqFCsDorvl2WX7yi16y7GhKN5Clv8almTF cU4UOlWh401Te/iTAsLsipuB7Adnz4URjzvU07w9mBI3EFI6twZixkKQ3JryBJbyFc/BI9JhNOXg VvTnKV0aJ+Ihpeesz88opXA4kZbHz7fgpsNOXufWqqg3gGOqlZelpqnyekqSOwvCMap4JgSgRQhi LJWRyH69koWtimiSFrd20enEwT1xIfJe/6ipJWnuiO9eY32mbKj3RLXw6GF4IlW8ofAZjj7B2fDO Colf2+gCS8skwkRMsANToQqx9ERRRAD1gj+9nlYBwL0QsnnGYKQ3iWW0gU2i/qoTy15NfvKHZiAr RgCqMy+mkynx0vrPIS/yYg+PdyyhBmYFCodOzq2iVnnEAoWgvu1aU/RR6AvYTrjqZou4gkH2dY+O ihdOCmVhtjekMF0GUtiUQf2WHNBiv655A3cucJ6E+hLhv+4saD2PDdn1OjZfCmHBdm3ZpyEeElx9 f/A0XGFoScvM6zILVYQyAAhOLjs7IYYQIQuKNgSNCAQpkY1KCwGKARBNL5skVTIaPj4aGv8Ppaam WQ9ZqautraelqbGypqSjt7gouiQzElcHTQFKjkIIDE9TCsgeHgDNABEe0c7SygwMBAiPlAEHB5kH Epsv4r5Xvb6+LwcvV+svTeHm5BIoEiQoVfX4vCgaVSg+VbmFopMngANxPSAFSxYrVxAjSpxIsaJF iw+gaPg0ioRHjzPWHQhAUgDJAAKCEBBBQOUjBCJgBkkZZEGQmjgt6azEExOEBRB8QhgaAoILEi6O MvGY1CjTpEhfMJGatKqMKkhlaCWhVYYRIzJ8GBGr0YiGsT6gQDEChazat1mgxH0rN+5ctXNd0ZWL ty/du2oz6v37loYTJoVCvNjx04aNBYz/FC2AlC2FBQJKhsVrwhnYpioD08JCpYpVab6ySEFZOHo0 rtca8pGQMOMX5yZKVGbTduyJgmjPIkRQYOI3M2XIGBTLxnxBEwjA2JHb9OuAu17sgHHepB36lV/U JdDuNYN8eRTo+OmKrQt0e9i2NKw2Xfqi/fv486dSG2qUjIIe6fMCdEFZwpMABFSi0oItmWTJTCop uJOBNlUo2SVADaWhC0Mt9dFHMjDlFBNJeeiCDEdxFWJWXXkFlg9hafViWvx9lRZbhN3Vyl921bXK XqgFCZdfef2Il5FQyHBYYjssgMQCKXTwGAGMRILABVcK0cGVCQblnIYh3JNPQrecQl99/3Y1lNGa qrTG0JuxISSBN5wJ00gxQghxjDIK/BYBNMMJ12cEyTxxjHIvNbKAEgHEE904TVQXjzuNZpJJOy80 qok31dFD23gvkKeLBFjNoF57uhSUKmiwtVYfmvrFKitFbbalmg+e4CObeCNZklJLwAKLAIQKtpTC TTgNC+yxN2mTgiIJXqjITxt+GOKKSHGYIhNGHaWVtx61qGJXMJYbFlqrtWUWW2m5uJddSCLpI19D wrujvUPOq1dcRtCAWAhMGLKAFJA9q4g2CGx55SMdXOCwZM8GYEgImryAFUCvkfbQj2mSNhotp4zC 2ii7rsPZDZgRkOc1DCDwhKEXKNAMB/+AAuBMNMP5BkPLCCuaIEmbBbDJnNFp16h2FdepKZ3WjeOZ OFeIhw5W+NQzQ6r38KNrQBm3NuvXYE/Uppu5zDYnSQukhCBLM1E2U0oxiSBCCi3Z9EgQViZ4UySS 1SSZhhpSBRVShDflFIcdZgsBV0lptZEnLcZobrlpiWW5WmCBNR+OR/rYI8d74VgRvUASqZcRTkxs iGOOpWBDJI5B4jACdOeZZyMEXIaZZs4Nnao/Is+ySiylmVnrfsSPXctC/+ADGtGc4X6BnkIgIzMz z9gss83OOKNAzC9fgyfuuGsaDzybFQ3dc908x9kldbrf9CbnT8eJR+KQRxsvvegjpj//ZApeQzYW tgLKynPJW15HZrOOkzRCAJNxibKaFYRhISsmNanbTfqGoUpg4h2bMMoLDOeCEYZwEySaCrcgILil YOUojePKuDISirSc5Sw0EgsOaxiK0n0uXjqiC4089zkh1atzgPFXCBIjLSttyQbawBKWckc+Kg4D M4vq3SZmAJB8lOljxTPemda0mpCNDCBVQx9uECAEC7DsZcywmQc4QDOa2YwDzPiTNIajAAZgSRu4 U4KjbpMdkXTGG41Cm3Pep6kAKCqR0IFHCNnxnHKUUB3liBpA+ne19SjEa8IzoChnVbwxLgQr4mmg I1GStsnITQQqEYEiFhTBWv4tCATj/0mGPshCFr7gI5tISjCD6YKlFLMpKYRKFWBYFY/QgFxekdxa bggKco3lLaIhnZHkZUQfGhEw7wrnXFCXmIkhIQSsixIkXEc73nQgEvCEFt0UIUjORHIcBvmHQhhC PJH1UC4JLIVGbFEKhqDRadFrhAUucI2XCeeh3ANAHWkmHJtFwAQm8CPPHoG7G3CmnpyCXmeCQVJG 1QkzjZpMFiWTyDpVwlLPGYc4vEGPXqBnPKkaRQAJqqZR+jQ/sHJFLQDEq5Os0leVMIlNSFKTAGzQ QEGgVlRzWYlvFKiXLCyhVn/pyxF6ZITN3JYMq8JMGI5LBs/USn/M0p+2iIKHN/QBOP+H94r5dDNH qOmROPE6FxkgJjGPScQCOvDOC7wTkFHExm4CWUUCBCOLt6FHgAYCPFehwiGWNeMpb2qyK6rsjdO4 GQAwQEeJcoC0dLQjRfsEM57dzoqEvI35SCpbkhLAEvFrVKbs2cjtfCOm5riCJqImtfJcrZNdW54Y f8pcjIRSqCPbhT0OgCC0QVCpD1JqK3/m1Ar57SdR1RBJAjeUAXHivF7FhzDN+omrbKRw8CUBDTwB I8dtRDVqImN/ROGXIw2GdKXrC+j6S5h81UUt/iKEwM7ZhETYQEqu25LCGIq7R0wGM5fxbMoqcZuu bq1M8WHNLMhSOVxwhHm5qII70Hf/Jzb60WG+8ZMCIgpR7nGACL8xQQQ0+seXPMKRjvWobHt7gBsY tQkpm0QVVcrhG3D4NpGFgDsw2YvvkMO4v2vPTgVoJgI298umkUgtSJZGo/bKqCcpkJkLBJQgWGIo Lw2KnAcEuGEGDp9RAevgwpUtcKGocCdKK0e0EsBsrkYUbE1XkDgGGHDSAMACztddHj2vjABYSf9C Ause3DCHOYxlPPb0BeiWAoRZgKO6S/Jt68SJLPMTlA8RaBlH9jhdzUm2KtOGnqbgG2akNrU2wwBq hU1a7lWDtddgY6II4FEhnyQY5gNyypCsZEWSlMMtJWl2hnLIqEWNOu0w7nk8mTGe/14WzOgWakUy wh7xzGYkiDzJTFiZNpzYJCiPvQTghEKtEPaS35j44C8l4AIJDOUpBumEMvkM6MZ54igawIc+/8GR W7S1oDkSnSoCY+C55jUvAT7wXkqBVsaccxGM6LRhbQBjmBljdnTjKPkyQ/OZo+1o9MCKF199irew SS3yKegtLoYC2+AmMyr7rG+mAJyZUfRPFjVtaC/6MkM5y2cXZpRHhaGpJzObABAcRiIZq+HyBcDJ Jn1yJm4zntqkspPoAR58zK3udNt93SjuIq96VVU0+z3NN/cg2rxkIPEOaLwBr3M5SECOggeTcIS7 VooidyKu0IArEb+K5u8bTRxyvP90D7jmgAsMF26GvMDgpKETFGwITTsGyZEhgMqf0IOF+Zh81G4E yphz22zX7zMfuS/zxjzQjXwCLPfVCEf0YbQk285lT2j6cCQKDQo0wwMzxmNFhWOCJ+RAATmYIu3I lzbHNkoAtBUyo4bBfkHmTgiNbSzvkAxSb9AJ3Cu22O9k6JHg8RxNs0A8ENEmdHV3PkUyoPER4nB4 fidnaCZ4V+WAQzEhS+UTPpEpvsQOEJA1pFIb4+BVoJErVsEEMGJ8XXF5gkYubrEWmYM5pVckPbQf n4dEkcZoQAJOi3YkPmAYrfckjiElsnclotYDL9N9VQdqygZ/VJQNeWIB8McojWD/ICT1gRL3f+pm Cm4lH6LgH/kgHgmFO3pyDFMwBdjjayzwa2f4a3LUPYQiM9aAJXiyDSaBdlxXTyklDM5hCbeVIOyX Mle0fifVBBwGD9oRDpowXKGyP6oCYl/0MQb4iLSSd6ryDvK2ExV4Ej2hZoLnQT9hIFB1LCylZuU1 HSABEo6HFKDxVpGzip9QX6BgLhyBOWfBOTxSRKcHYHp1i6eXi3HhA6uXGD74GFCkJQRgWEIoaogV f+RzamYniCkliF+iCb7EQB4BQGQyaCZogiK4gPCwKEh3O8VwDTDwBMYQY6xFhlUnM09gAhfAjonV M7gzGc+WW0gmDHVCCXvIe45Q/0VtJHNLxg0fVSnfQFO0URDiERAD4V64oGhBtzEECIl31yZDl4AM lCndgGZs5iCAF3g6cXMdaSEWUhNrRyCcQHBX4AIz4AInCVa5IkMoQiInwgSs2F4z2RVs8RWl9xds 0XOCcYPelIsHhoMjlwWhkDqrs2myJ2p+VHWCMj2f5kfgmCccpWwtZgGpRn7u01Xj5kkj0xoasYUJ KBsspjK2oxwMAANo+QQwUALJUALY4wwvQ4YKwGsvszO9gSjLhjsmEYVQSAlO5oxZRH6544/xB5CC CIWEJBL2dw/1UA/+gI38VIAQOZlCBXT/4B6MJw6Ih1RuhizasCA4gSyhKZr25v83oslBWFVe9zBC pJKAy+SSf4aCJ7KKmeMiltOCungvimZpdMGbpNdfQVQvQilENEAIrveDUqIloiZq6/hi4vMIUDQ9 HbCPjcVRLvUzT2YJ7OAOAEEqcvcaXykKn/Ah+NONuTcMUxmGysFQx8CehuKcSJiEyWhhSmASnIEg e5gb+IifVXRqVslGS7iEuiMM+JgguKFt3ZAd4UBcjtk1r5YuPUlElJlua6JTVCMe4gAdJ5ESergg 1XUTLVFBEQKiNkGaockTP6FvA/INjSdTJNA8TIEVIQI5aBU5hwFNMtIinDMWO+pfOckfuihywPmC tnh6O6hgmqZpDcNyFyB7KdD/A55WHDsWaruhJcXwR5CAWDLnHCqFj/S0SMIVbuKgKwphK+zmHzMK GiWkRn7IHGFYDMYQRY/AULr2EnqSa8vhCFu6KC1Fh3U4DLtXn1fURk5IlVdJRYLYCNRGUjfQbMFA JwGAoaZSEDvFPPPxXHQVVBM6SpZmcTqHPxKQZiORNijhdz0xSx9JIX3TVJgQXnU2ioz3ePlEcdcC IweRo11BIpf3LfJFAiU4RGvRF4JRRNzEQ5gDrLmJi0F5V0e6A0hwnA9Ge9J6AQ41HEQAAN/zYlfC AISllKM2GT1WjNiQl0qoqIK4HaSif3JXC7M2fK+RKiFxG0rwCDHHM6DWUGop/z5vSj1JV2HxWAm6 V6AIIrB/iH5nt4QIcKhgN3MmhVsBeTKNcgPecDVaIwGt8lyauqkUWnxUg0rTYYFo5mZ8B0EPUiEP IqIbdJpx5iXT4hMxNSDNFHyapyL/UF+hkKOCBhYuEk020hafZ3pBFBe+WTl7JWnvwotFCqTFWQhJ yjqGdQFE6GnraALhB3NZMmGERRkGsxt0o49YFH9Q1g4uUDGzIRsuaXG3oJAIsUnoo1KMQD4Iwxv6 +lrK+LXRQlKrFAzrV35hZyeNVZbKoTu6g5/SZn4aprdC5g2OqSo5dbE8GRgZq7GjxB9geTEDt6Ia 2iuPymZG1UqYGKIbVKKd6f9mcjaB5aWaw/RLKcIVt3otf9YiMskETOAEWvFMOtuCKwhpBkYvvnmL emWLupm04OSLwMg6KtcBxwClPSBj3WeEDgOlx7gwdNpO9EolVEmdCqWoivA+W+QesSFAQSdiQjdx BmkyOqEoV6RrZMl7dEtF5aoozghl90gSq4aHEPRAVQRIynhhNmeggNqoR2N/FJtT5Ca+YUSADym5 zbUaoOAfnYA/s6Fmf4cSvRdw3SW6IJqyUIKqbEYtmPAN3MhCMKm6kzdWmreKs2mToOCz/JV8tXKT wfoWtBikR2Qvvws6gjE2EEoXxdmDxjuEhtUwGDXEOvYEo5YNsSMl1Tu9V0f/DDJHmFVECZF1kNWI C54wdwOBmf4TQoCZv2CYdOWaGVkkxfx7YQE8j82GNmDHE4qCIAlLwdkwuNmrhIuCGXobsY5iHQt6 Nd/LHv4gYu2aPBL6NYumwPuxhWFBnhXJQhd5do5cgValZnjjZrpEgUu1sqc7FAvYS8IEVn1mFZFz VjWqs16hLiroAxHqFjNMw94kYMELUEJbK2SkVz18lN3KpFDqMMRBtVLanBPWpFAkPgmiMn8kBMVs O2BMlUlooEi2HU2wgN6ZkF80d/qENTN1Uo6kUsrYh2KsbbRFW0cDZWOHMghCqqZan3uIIJeBINXl UVg0v4yCNPbnbXBHbm/i/4jDg6kXMciGHBHja6HlO0mN/Kj2Z5GJ9w1GxbmeOF4ROIEkAcLikVUl NBV6NhXFRCJZUSKNo6NfIQPY9BVaWEMa4Va52zmh4Ju9W4M1PGCsAMs+yyY0srRH+YOcFqW73I7D gVEM9WnGHIaGAqcVxjJMCKBODH9E7TPNnJjuFkAiNgpbuBABwh5f9VuUdG00JwTsd3SZAWUDSSDu o0a2MRK4UapQyJ9+W5/8iTtyvLB+WMfM1gQAnKDV8R3nQMCv5pB37WX2wc/9DF1YOHRmE6sKmqCI xHeYOF6bMHgMLV6vOg6jSA/pRVaSXSK5SgKyiyLXorOv6BVEWzn9MTJPTf+LP4Ksu9jK3aQjjeab PBgCz7pp3Qq1UKtjGJVjgRI+xqwcQmADtqMniBWH8GfU/RqHsmelUbxIXZU1UZ22IjN0/2APDJRI kBI/Wl1P8mteQ8Md5cAr5UE0wAA0JJEZ/ImegqvWVBR2gdRIYldPEpvHIbWVBXxuINPXFEp8gP1V GKqg3uCAL4WR/oZVH0he/GbdqVReUAFWwwRD4oLZNRkKieZzDDzSGDcKoj2cRcvKAUasilbLDgZF uq1ysc19OkYc62jEDlM9T6CEcfsIyoGnTDg9LkY9TVoMHWDM7WQwHSkU4EKzzf1JcSKpaiS/3kgJ Qh62XT00n4Idc5KIIHT/ZOaDMiZVduzHp2KHn4oQdotyn2xXG4qLHhLnD43LZcol33bXqRlRcSsi DjCEgf8mwYBTukOBOASy2DBbZ9btbymypoz5S7xaeTRr5qMwUDTUVj0SoXShAdt0F6scw79p4UFK vDNd09PZaVNbHBjlG+wIlTMu1C9RzPqYqBX20zBO44vVtZHRiZgAzdX4olrmPJTVHrXhDu7wPvR0 G5BlT9phPwfZSefBReiQiN0Nb7cRhbihZFCol7ghAOvHdVwqSLO1GY7yKdLFKsO3EMt6WR8n5j/1 16/xEag0Z6f7gXR2gV3FIY7t3xKwQt1S56cLFSVEni8ZOetym9ckwzmU/+gz/BCdg2BQQGn77rM/ euGuXIMUTryEsGm6zQBEmPA9AHUPFeIj7pTDnWzGAJW7radQqVi8sTMMJQQpcKU0Pn4ieYG/FC46 lWJkgh4pCevfER325OwtDw+XAs1SM/NYNicYSj8f7OxZXbhQbsYeNcaIO1LscOS7EIKtKDKujO2U yW5mse1mM+CHh4EJ+sH+RmfnzgTIDUzp9WedDNkjz38yK8o7yTkel/SKfoMQ4SM01O899GjAaiQ0 8kO+u7s8vNqu7eHPO+lDDNskLnN+VIxTRAxN6qbkkyfvyTIvxzKBD0h5SPUd6OWs4h7WDOs/Lr+R VVtrpwmpVA7wCnfbff9lvbAOmftYibS36MvWyP7WXHcytUUnz5w/WkOpjptZPeU1Yhbfmar0AsU8 V1EqqQTu5pVVHWIU3BK7x7S6/fcULxAiZiVT7W5W1pJ5ZyXhTt1WuLCFcPJP2EQjpsAWNszCNNAv aUEDREs6pH20IAcvRCLDv8jayHkNUEt7IC4c15rTIs6txixFPBOuugYIQheCQh1CDBcMikKHg4kM CI8IBAiRkwsECwFNEBIzJCQoKFWkGqamoiQzLlczV1cvTbEvLxBNsrK0tLC0Ei++vy8znp6unsEH L8kBzAcHmzdNAUqb0AEEN5vSSgJKC0rU2uK3B03OycMSEqFVpw+mD/H/8ln09Q9Z9/VQ9fz9/v8A AwocSHDgAygHT1VBAUqUhAMQdEGYOBEixYsumGSU4YJEFVAeQWp0kZFkR5AgO8qQoWGlD1M+YiKM B0XDQSgIZ85MaERDTp84s+wTinOf0X84YxrxgZNGUaZFo0qdSnUqPalOdoQIgcRGBxs2LnTocOFC D7MRIphICyDCWRNPzjJ48kSIDUWVGC0iIASBoEoICjBQsCgwgrmKECtK9IjBXwKZMsmScKWThFSY R0moMmPGC1i4PsfidAtXrivJeqkm1rnzL1jlnsUOoIzcNMgEquEmIK2JJsjclJQeTjzZlc3DGI6C F5Xo0aH6rgp1Dt3o//OC2LNrF3hQ3ruWDDsv9AUswMUDN9AfeNhLnQQmHGWAcvGC5cr79jX4aCeD YUuWpqwUIFTUGVHUdM4RZYSB1i0oFYJHIQVVVD44VRUUE15o3YUF0qAVEkhw5VUHCIxlolk9mKDi Wis+wUAHiBRCSSIp2ECAIZVQMgklQvCYI4+JKdbYYhf8iAlupelyGQnq/HLZZqJ91gRouhA33Cy8 KDmlOsbo4qREEAVQDjW3THMNNJlQI0AT3UwjwAJsDpeNOeY40wqXl6XSTjzw2OTdn/FwB+g8AeWz 3aGI2vPTKaZ8VIV7TIJSHgSp0eICBCQxodFK8JEAYBUsYRiggD3VFP8gKCzF9FKqLzEYVXdP4UTT TT7AipOr/EQInT4YUihTURYCq2F01AVlHXUe7hBiVymQRdYFT1AQ7RNpEWEtAG2lRddcgwjxhAeE RYIXI4wNYkgi5LqY2BMKuKjuIHO56FeRu8G5iTK/MLmQKPxyRhksr0T5GWhXXjElbM7QktrCdSZ8 AGRvnnkmmW9SQ01uuGESzjbVNBENOQegBjBlM/QLoDt9DnqPoQCxjE+g/6hMaKI0tzyTfgp9tJkn TAYzETMLUMQEBJoSramm98H0ElP/+dBTT9+5052fM+GDkFDz5EOozH/Ss7Khhu56VVJkQ0FDsGZL lWFVxXJIFA1MOMH/lRQjitVBDz/0oHeKFETQN1wm9PBEIobYaMNfNmCSo415pXAkYI4tkghdhD0x hboKTNEuXS5KAtlvkqVG6S5ejnYLLadbOVw5uciyXhOU1UYaBB0Dzczt3rRpcccCVNMxmbeAow1q xolGcmeM4mxqTQ9u+GCuNUcvvUHdRd3oOqSEEql7teDrpDodlUICFE/r54NLMjAvg6stme/nnznd ZFVzY2toP/0IEgWVTDQw5f/+SWGKU1zVvPttiAZZmdtYUKQiva2ob9eyllueYILLbQtadCmLuCL3 l0oUCRFBChK74lUCzrGrXe0KEiP8kjEy/QIi61EGLFxRuiyZhnUh/wsZOWqjsFywrmOa2MRvjnSD BQgAMtfAGDcyYabSMMOJxckhav6FHBRIzU8+kcfVprcyfGTHZdOjGZ/k0ajsuWAzJCgdLSg1EU6Y ZyIa8ZR88AMUp5kvJ/u4x074NJQuzixCvCJWQcQ2yP9VSFX9k4kiMTShCVGnbQZ0AhOUBaKwLDBF Z3lL3yJgLSIEbi0RMCEkLpDCsiCiXIkpxCFEeDlFuOtylZvLFMC1rc4xwgI92o3vOOGMJrhgFVSi EupMYzDV0Wl1pPFNb56oiSAyIxu5UwLEjtSNZuamiaX5YTbXc5xilEwUKFOZF+0BM695UWuAetnX 1Ak2dqYzjIey3v+pSGAKEtCne92j1DIhEAJ+bgVpR4PPSpgXFHVKB2veuZp3DAo9MF6Faws1JzrL 2Y9eqcp/TlGkRntlwI4+ZQcgDYEUQtCsFJi0A826JAVNQAS/XQAuZynL4C5wo1MChhI68ksHIFOi vhxCXTDgHAwy94ShMkBzJcwcA2AwhSnAYBEWIIA0JRMAOD1DmcOchWmMeYti3sIWy4SiNBbQTGlU dU60w9gRr3HEJUbMd7lx4seicY6RkWxfVtRAO7L4DljJz1bSMdZ08sgPh/ojUDRhJFQOkj94FoSM p/AIgObzgnu+sBYJI0ktiHYS+Xiqfesb6DlZZhRTME8DDA3UgQb/64+hUIWxukoQawPyK/+VDSqJ tK0BiQLJqSBwB0wQ0SXNsiITQJADALAWBIkQl8FxDoMzhZYgHBEJb8nrp5e7XFCZSpehOlWWChhq 5sILg/I6BjcW2BESpZEbW9hCq6KrEldV9w04SeZIGcMNAoJAgKge8Yi4AXB/d5TE3JAJeHT9DDc/ U4xR5FVqXTSnYwkSYefAdsLa6Wvy2kEK+uxgImASU2kmErSJ2BNVqDKCfdYnqwr342s7kTCGa9ar 3KqKoxRCG9kWi8e1XYgmZwspWL5yIhMoIHAv9duR02ICs5RlgRdIASJScBhEIMBGhujLjDwYL85t jnLfCiVdIqCA/zI/oQRkNvO2AJOjH+HUG7f4hpXgVBrgBY83TQBHN4BzG6lqYqwFJsB/caMbZkAm CEc04u3ieosiegxkxKtTK4bxTVHs1R3nnE718EjYgFTHWH3MtETFOePHescmLwGFXuVzEiYlo0kX oYhKPiuDKtTkJu2Ln9dyYrXZqjMofrxJYrXo1/dBz9fZiUn/bGzRADrbtr/68f0qlJVlDdlZZQGc ivyWrbSk5chlMeXgCCDTzpVrSM8lJbU4N4UItLvdnEtzmRXggSmUAKlTAGFhtIyAqB7JG97IBJzk /I3ISHMaF9PGN/r8uanuJr9VDQB/J/EmiPE3Mp9j4hOn8ejSiP/MOMehYck08GCb2CTT6yzsOEuN j/cZluUS3cn7NICSj1DES8tgYz/7GUdP0fPGNFnby2PGUJUX9mvpdHH0oH3RCjU7VtDGsdQ5rbYd O0UrIdDKiEz0LLQwmZPZUhG7mozBSlA5EWzeKWIYwy7nesBd9E4LvMvs7bSUwAPgCqUC7u4uWx7C p1HNOGTyDHA4eaPgwFEinG4g1Yc33vGCv4Y0+SsCyIjgTSKYRAAEfM0grk49sdkSZRpcCkb1FbFa LEp32LlyLrpz6DAvbPL0Op+PkGBoE5HA6GjxRn7CkdbK24nqI/rYcXYt2IhF+csIGb3+Pd1Cznc+ 1Gus26ljjSr/ukUgV0IAFrCkQCzhTjIFAGBcTqpFRfMeXCQYY+UXESISGSyXCZ1LrcvV3dt4BwDe wUXLWSogByMUI4/ACLkEGbmECfgVaJC3gAy4G+q1G/7VXw9naJrQOwGQDdhkJbCAHOrQL6V3egul Na0Xe14DgiNIgi+mV6VgeylBArFmHsrwM+aRdZjiAjLgA59lE7JSFFkUY2HUTtyxcsy3HRbSSBYl fRRSY1PHIVMRbdS2FSLiFeG2NxSUFisQAdnSNwrwUmO3hZNTS+zHAD1QCOU2OWK2ORHwdnQxBUSA d9TiAfqXFvtHZppDGGqmLirEAHzhGDTFgPgVcDrSgDyFUw6o/2W4IQJCEHgR+F9FVA0LF3GLl2cf kzDHEQz9kjzfkXRZ406FAj3QAXt61DUo+GKQpVem6BEMcUb2ZFnuRSnM4E8TQRKkUGsAghN11GIU 9UUo10fllHxaUzWtlShN8RROh1v7MyHRV4w76Gyq14Q3BgUJtAML0H13IzgytSI5YIVqoRaZREF0 AX+nhBfiQkEYtDmTkzlitm49EEru1lJk9m1YiHfvSBjQogBphodrBy80ZYiDqF/p5YA6omX8yFOT sCOTMJADVnkCMGicF1cTQ2e+EQ10tSXGY2mkcGkmt3osQ1Gk5ljvNIqHFQ9WNAochhKtlkbuVQsR FwBbAQE7YP+D+XGDqFU9wrZ62KF02wGE8CQsFXI2SQhAUQdA9iM/VdcUIcV91Bh+gmNk24YtnARK XmgCOUB20RV+RHJkR4YA6jcX9jhmHsBcl8Ncb/iOaYiF3lZm4DJLb0dLoxSAMXJKhDAILIRTfpEX dekjfXFTdpmXPaKH/dZvidhvDxdwgZcbRnSYF+gbwqEN6zF65IE9ppWJLieCIyiKpUZ8IElOCUFy jiJZadQ9HUEf7uVGZNWSR2OD+nFrVnM1CgV7seea2/GTaSOUsSJ9UWdAPDYVWRFSC9AVdfMsKVJc 3sYiKhJ+VlkkRZIChbB+4GdKIMQ5ghNmzfUE1kIt9weH+Zf/hh5AZvL4bTN1h4OjGIvxfnRJCeJY l+/nU8g5nnLpU3wxiIWJGw6nS7nTG3Fmn7HxGk3iEaXXJz4xmSHIiTKWR3oEIRmGmZmpTmVke40y H6poT2skEbUQAiMBkythICsTP5sYPUiXoK2lNkU4m74yjAK0hFXhYxSSQL45ZCUSbt7YNwAwAsi1 ScUldteIlqLEhWTHlW9oj2loLdsZF2UJj2kmh9iyne5Gb0Fad+nnXIjQOdtCgD51GOzHQlNKl2wG GIdwlwUYeF1agIRmOx1jDmDVOr+AAt/0CfxxRQn1TiK4kTO2NR76Mv8JKvZkp7TIgvZ0EZtFERS6 KXQkA7OS/3JzGntVIX2JJBVOsaiziaIe1RQ0YAQq2n2/SVwqsklEcGQ1WpzGmQhf9iKIYGRVyTnx ko7r2FxfuZ0+qqpmCYdHGofb6apx2HeipEKr9FTrMi7juZdUOqWpJKU9wgjviRuJ6Hhr9RtV1Ruj szDfsw4oUGumiJF9FWPINzMV5YtilHweehBLox+g0g4NERIgAZom0adwNEehwjx+9TKiRnS58iqE hZMY9mkFJRSH9BTQlzY/yaiMqiGOShVBtqLYBn6CkyJp8TdqQQT611Kieo7eaGZmGH/i1nZ0IUHN pTdPIKOpeqRYGIdpCAAcwAH7h6SuincoZDkWpF3d9VRBFf9CeJFK85KHRVJlKuQXAtkj8RmfGcNW 9ZWsyXA6ynBGH6EcGImJM5N88TorLXOCX5SLIPkTK1EF+5GndoqKVSCaNbincGQ0cnSDOjErX7ty sFmo71q2+tA/TmA2/GNbzvc/TXGb9lN9U3c2csMVTdAVXJdJD6QWEJRcZkmWWHmPZNY57XKPXhZv ofSVLbVuP5qGIfuxIMuqeBey2Tm5qrqdallvR+VUs+RUuApmitCyuLoIeEilkFAYi0CABnhLBQim udENvdN52lAnEFCJ6sAZ7LBXgyJjQUiC1pqgNZEq3lprepo9KWESQ9NPRGM0NmiDXzts1cOufsS0 wAsQ9Kr/D9Tmk8vGSBmVUc84bYykrxfSk7+1FUigLJRKsJtKASyio2URSokAFy81Sp06OXCRQV85 QT0Qli0lOG2InU7pqmT5LZqDd+02sga8hi5yCNvlueU1VC2rCJnDskslwbjqF+KJwXxIgBbgGKqr ug6HgUG0cPYJMsGwDrSgPRwWTg/wK7QiFcM2hD8or6OYEKoyvKU3Ciphe0wACr6nEUTTtQKyE6Wi tG9aUbwGSI01r8dGEElxNsumvXKbhE/8tmpLxePbFLtZSd3XLA1kZPaILQobshKEXPjHXIAzdmO2 UljoSfTmjj7ahiIrhyL7LciVqkHahvgnj+3ihmqZBPXG/8d0R0spxFRNVV6EkRhq5krx0n7QkgMg 9EF1UQmh+3eHgEsSCBmFWXh2FhG1MBkzMLQeCA8BSrYtY5k1DAXrExPoak9z1Cj4QQOZwk8LoLwB RRIDBRTyY8oYpq30UKIXNZs6VsU7hmNr43T+SrcJZANIMI0m0mQo9VLbRgESpC3WyS6h1GTO1QOI IDiaan5n4W1P6m16bMciu3//+7/d2VTpp6SZMwWA3FQAUAIohHcldG+EIQSGnG+D8WUlkBiP8AQT sBgAzQCQXCQjhMGJKKWafJCIBxx7Nrs3wEbm8AtnxBDaQ5KnwCoxoUVEQVE1USpb1MvH97QY4hLn gx+eIv+1SnMfNHBilwJHJbESFsoUqZcd18HL0QEdJxc2AsR0Ioo2JRqiU1x1/0o+TlBtXcEsUvhk PVBm5Wd+2iI41fKw7EiO1LmdEKQWXidTbZFk3Dmyb4i56Iyk36Jm7RJUa+i5ikxL7PJdjPDAEpzI /RwksVTQ7PdBiRyQKwSm/YZfn1NxfPZVsRARj6nCRWvTuqZHQ6iTJB2gY8uhJ60BBvIS9SQgLAEq LXE+oMIRGjE0LyDE97EUqke91ivDOl2CMobMF+W93ttsGaWEsV2U4Fu+S20iKaA30AKVnEQEHOCO LaUALQXcbQFK7AiHxM2O6Qh2aeYB5yxm2uluZe3HJuv/IuGVuqmrF6mrwQtNgIehLt+tOZ+rCABo 0IhQANBC0FaWF5aMl1oG2AXWO8qaDKmxGQ7mEUbrctYb2RP2kShIKz0BWvLBgrVmg+fTEi8d0zJN 0wLlE4vF36l9k7w7jFE81Gkz28AsQGcDlCaKfUidQFvRxc9SnEYmLWrhjVzNInW3lNxo3Od34iYO F6uaqY67f/ZnQSMLb9llby7SsoCJS6yLSx4MrEDuU6tUl4IRJIexQfTLlZBgulvq3X0ZkAt4JBBp HqRxwijBnxytg834KvJjBMqXKNMbkoOamTSx0S3R2bPWKA5+Ci9Rrh0hUPdBxaTFxKhN0v6gbNwb 290b/75/jiH8WjaEHrdmo33WZgPNUhYsXi3V2UnmN9yc9NtwOAJi7AEjoLCWfn/WrLCSrqT594aa g7JN1V3qUlQcJOV9gUsWAOQWAA7S1Oq3lF64BJiqW5DouUqQIAgSXNC7fpA8sqXvaZC4EQTYtAnu BRG08AkowSihMqgOBeEeicqveWMtkYOs5gIs/R0nQ3sxPRL4MVDFHOETNtL1kCHkKyyDDtSMOsW0 qSG/hXUCezdwwRbu6OJMZlwu3obVTM4M+0lX3bFH9oZ04Ybs8nabS+rZhat5yQA5m4hK8Oqt3upS BQ4Uj14OqLO0jp4YLC6JAIDqwpese14P128XFw6za/+farTloNDZ78OaVgFYNby7/62uUAAqlk1z OEjK3LoyNrGnraZiq/xasJnn5C5R/bA2iVqMf67hF75jyIzF92MEHgKFSDkW37ci9jjcyQXpYNfv Cptciuvo3WaWY8lJQRp3GfTWRfXATCW6FTzyHAwcEW/xSnBLsJ73mrz38am6QG6zAA0YQ7LrK7T3 w+p4I9wwYLV7TtLypuifLSYdjCX5vOWuNcORfKKDINnCMgcgONjtKePzD6C1cuQ0MkGTpn308IRb SGiMV5yoiwq34btI9lOESX2UXlEjUJZtFEDNXt/7kA72Ul13DFstctiGY8k5CP+F2rVUDDzkgVms hIj/Xon46tJ0/VN1/RVf8Q4HDrsxVbVe60/OZZbw5HyByXwh/dM0aGYyDrPQC7YHINCqRQRSoEb/ 36aX+o6VPLQICBoPUFVVGjIaiQ+LjItVJBAukiQkRj5Ql41Zm1kPnJ+goaKjpKWmo1CcqVCeoZc0 Tk6XPpeYmDRQtre4mD68s7a+urnExb1QNMlOOyFIITY2HdApHRc9FyZEJhQUJhFEI0REAOIAABzk 5BERFOzu30Tf6xFP608mHh5PF0/9DP/+GAgRYmGgQQRCCBQkQEAJQ4ZNHDZsqMShkiZNAihZcDEj xiY3KlZkaPEhw4IHESAgsBIBA5VCEBJk+dCCBZMM/wUsEEBg54IAGIE2gdDkxYEXEiihIIGIhKFE PjSwarQK1KJOVVOd2jpqEFOmUrmKJfWAFq1DlBLJYPpURqNGGlxAiPRVhoxauUS1Gsu3L1+tqjh5 0prLVyyzxXjRoIUMGV5ckAsTA2as8rDFO3YsQIIE2gJo1u49ocADHjgOHMKJozAuHLl27uLBnuet Xz8TTzwosC3k37+BCB/OvEkTJ8MFxzGK5PjT48/mHoN2lDjxJnGZFhCq1A4TwYULK09aD5+9p4AA C5CjDwB0AUajL+JLSEqJKaJEiaBIHZQFsN//n/A3iA9GkCCJC4jsBeBWPshghAZVrOXUVy8wgSB+ +P814sNcLoCFCF6sdLLgiCRuUtUnhPUnYiu2/ALiK8I0xstkkQlDmWSzgGiZL8w8g8Rn0FSDTTY8 rCaOOPLEc6Q83MS2zmy4ifYdPwzYpgBC/xTH0UTUTZSREuz1pIRO7AEVQE9CPUcAehm5h9ENQXnU 0JbGtRSTdi8hBN5KDhEUHk4rBRGAAGSyF90LRcU3gwsSTHKfIlJJRYykKvpX4imsFGZEU5Lsdykp udiFFiVPNTiJWpk0UoVcnSKCiBHEeKLgp7RuZamKqoQIijHAvIJMjb/+qmMuwAYj47DE3tIjNNFM 2YMJCnyzAjgjjBAFB+KEM0Jq5JTTGgAjgAtAkt7/xCPaPvzsllBCx4kZUUUffXTAvBgdANRRB3yE 6AFEzRVfv/wCnG+9GK0ZL0bMNfFQSynExBB3K61r3ENBrMneeUAhmnETR0lQBX1pYfhWKyzmVatY g0AK1qwnm2jXWhbWt5ajiEy1iSM7QBBCh2vdBYVdsO4ltClXtVzirTez3Csti9l4S2OvuPh0MsHg IgsuOtZiI2SZMcNZNB0I2cOzTS7ZzjiyRWDCNt8osPaT76zNQJT87GPnQDYQYMNIDynM8bsE/z2v BPFCYC+9+QoVZ0YBQNB4v2aml+8NISlXUpcQPUxScBORxJOZFh9cL75XvFA6UgZ6LEOEj0KIXy2w /xYTmMkBIi3YKZp0oiFjjBi9yCEzd7gUW2m55enNncgVAl2u1uIpMbVDbxlXJLNsNFmiFEbL1VjL 6Fhj3n8Pma++LlYMZVEvtkwIz4QdtjVrv31ktqnVX2065qBmTjzqpBNBtP/bDT8uIIQOCOECenvI RToysCs48AoHeOAMZoACCqLgghhEQVIoWIULzmA+E5TAFWZQnw4uZT4kkEB8IHgFjs1rYMr5SEMQ RhKcWMQhC7gBRyaXw78dLIJIuYIIk3LBpyiCFYIQRNGuV4rqjQwrKetdyx6QiFVJIj7x6RAlZnaX S/RHVjKAwAIgYCEE2cUHi8gUViqFoiYy8Y2qYP9MMnzgBGOhbxi+Cl/TZkQjqgkjMjQwwvqaEaQL VKMa3mCNbIiQmvmhrTX6m4c7vDGPaPXjOy8hYAcYsjcbxiuCLHRgvkY4wRk8kJQhnAQlXJBFSryA USQYXn3mQ8taHkV0MTwOc7q0QJNYRACMA9MNFJevCALxdBIgIQqeUgUk6icq+bmKBhgzFUX8rlay +iIV9YPE/eTuZFScGalU+EpJRMhRIUrFIeQSCZ6JKkS9GwzyshmKbFoPjrU6X468hxjJ+FN7ujDf +AQ6xzk65hXLyAwhwWZIbHRjG/OzH7i+BS50yANulcSNCRhwAd8woAdCsMFAOqCETpbUIRHBSAv/ XwjBA4jQgROEqQU/tpRHLOWmNcUpTusTSxJcoQozQEoITYcoXCpnSxehUw0ZAqf1yMuHRlFh6RoF sghNMyq5UGIaV1GZt6zoq9i7Zz17px9LMGIqYgUQFR8hCQi8EouvJEEiKuQzBUFieUzgol1yQTK1 4hOO+jxGQM93jO79sRc5YlovkrGYOfrisYYhZGfeN7YePEmR27JWFDAQhftdixyowZY5RjuucdGj HrbpxxT6AVICjjQhEoEtSODlQ2OOsIIZvCCGdsvb3voWBfjBLQWFaEqjDOUj09mIRThyno+wZ5gf IYpxTVfLqmIoVUlb4l+/KqttTuZBsUqrWqmo/wEDzcVfiHKBFSWR15dpRQMQkMIYLfSyvaJVRKDa rn5RRNhadA+x/CSW08r32PExzRcFZSzT1tcZZlG2BxQgWzu6cSRylGY18aPNQ6EFLWyklqMffQKI QQrSgTzMIAwRAgwGAq+R0PaFTRChURyIwQlWkLjA1UBud8xjoMbUBUONl1CSupGfrElMZdqIxe5V L/gkk5aoA8shLLEf/GRKPxmi4luUyF38puIqUtQLFLM6FckMQru0oqKBXhAJLLKyPgd6gX28CAXl xay++8lLprRrz+5qFc37/ZQ+bwRIqE0mWH9ETK92cWAEx0J9CiWk+75j2Yh2FpLWChcGtrW/Tv/v Lx4X9QA9FCDAKk2hB1Xqx0B6wJveGAQGsF6xEKhjE5JURCP3wvGOs5zlkY0MUlVc5gVF6MOgEOBg 6AFTwpqbnve8Byko5Olu4/lN3fm6u9fTj4M0YIQC4dlm2HwAJfzFSkS5Vb2QYIKBzFiLMKZACsyr LzDOrKu02jPQ2eYVHw09vsr8wjGONYuCnQCLHcSiayHIDBI68DVp2MAa1xjbExYp2mo98ltIQhKT LrqOaF2A1CJmQAROLQRW+0MIT5jCaqfgAZVPIdYwj7mKYW2QmfzJI+iFNk0xSAJlZlDHGMoxcHEL IRmLEE7IHhhQQhcd0R0F2lEu3iGmGSv90Jv/GLCKXWWoJxjr8VnbL8srgrALzrKYl81s9peBVmmf /GiACewb44EcBTy+9odS4DZRrvSMX3wL2jL9rZGLuid4gsPi0Yw9eKS9xr7OFAFslSXCEyTOg7E5 MlzgQFu4qvWNbl3UGxxeGzb+Z4LvsDa1qHe56pOgehio/uUzr3lM1kWcjyD9PUcpHQShDUILYlDH uk1Ebiloyhc+HeccI4q8DDUwuDoZKbK0qpXpLSl6Z28Q0OM6Pa0yz0w1yC5MCL99wvwpR5DgX1h0 axbnDpZOyCAE8m2nC8rIM6rDE61XprbX6+l3AB0aWf3Wb/7VNDASCwbYNZHWDJyxgF+DBEUQ/zY/ EGEZJw7YwgFR0BqbZS0YgAH2Y4GdlQ76oz/joA7rgBvRYoKTl1qs5nIp53Itt3qtB3MvR3MwQRAD YR0KBBIaASeJcxGKwzEQ5EIOpFKldEG3RUWm9ED8Eh1AQRSGYiYZ0XwsJB9ElGO/403YphdgZm3k NyJCk0aX8DLnJX5o1IUj8giu5FYqFDBpl3Z0gUbuBm/n5VZMwDxMUQuacG96uH39RyuFYT6Ad1gt 8itUc3gEl1AK1SPOwIAKuIhf84CWJXGsRgQe4EhHoi3Vcj/TEi4TpnEcpzaihw1TEhqnlxuo5Q+q 9XpJsIqsqHKs53ozKHM3iBIsJhJKYAG2eP9DtGU59cKDKyVKM1AFVIQCLBRU5PQvhuNW6jcvhiMf QgRCSGFTHSIyulMpWyhPWcFGtuMX98YKBBJ2X3EI0MRlJOIJaJhChnN+bDYUctYhcfUVTLAAUhAE czhGreQUZ1QMZ8aH3Nh3fWgrhIV9h+ZYxJB4BoiICMg+jSdZNsCADtlgHdADPDBxlYYtjOSBmTgC m8YBFcABGNCRFXCBFKgOGfeJ60AEuwEtozFxKSh5qPcEpLZasPZyqjgFrxhrM4eTsnaDBkGLuGgT t3iLXMI3N1ERSAcnHcExMVUvEJSMTdgmHtGETPZ0pRNCJhQykVJt/1g03dULdqFFPXMXWlX/Ip5Q XuooXUZxXnHFSpEwF+mRAikwRukxRm1WQtzmIHh4jf+oX5VBTS0SI7xwkAeIgF7jiA3ZDAoIDV/D LA/4A45ZWZP4DaJGgamxLVGQgdniGpd4getgWpT0mW7jAaX3cftgG6iGLiYnYjDZgrHmcqz3mi/3 ijOncq4Hc7KnYrKnBLJnE7Q4i7BFEgoDnBLREU04l+zxEwEQAk04L2xGlabzQSmkFNOnlbjSdX3m VfmFMgpyVt/oM1X2Z+IlFuqoQnNBnj/hZuXGSg+XA9+RHjbgL25VHzm2bTLATd0lRdd2O2Dlj3tp CoEncDFyPsmweEjADIrYkA6JoI7XAY/3/wMM6j5hMzY/AGEQxgNFQgGZdZnVslmctWmtkXnncIGs IS5KIkm40XHnYlmnhXq78QQw0IK06YouB4s02ZqvR5s4iZs0ZxM9aYO8eZu1phBFKaQmxlQKgWQS gTBJWUz4MkorBGRFGHxaZj268hfleG1q8TL9BE9E06WMMDP/MhSG0oywlHZBgADsuR1wuQDLszx0 IWV4yVckI6fWiTz82Z9+gSPHcGDm8xjIgJCLqJCIGaiNaANF4HiG+oBF8IAdMKE9UAOkwQPcQAEr QKkrMAKbqFlAYIGZlRoYAC6cNS7e4iTioA9REiX1MAUjV5ow2VGqWZv/QKMzOoMueqOxGP9zOikE R1BzMLCrQOqbBvEPP9qTnTMxN0QRYCIv+bJCcgZUhfB74Nl34flGcKFl03QIKCAqWsciTcQfYWV+ 7DQX7LhCKqRCAYCmJVACOaCmcKkzc8ghcqVtedYf+nid0oqnI6KnmECvZuFohGmgO8AECsWAUiAF i+qgjOqoEEYapEEEFlokRDCp3ACpkLoCFmupmZqJnJUa14I251CSK/A/8XCqo0YPG4Ub6bIPDKAA mZQDVeIbvQGLuKqTNKdiMzibMrdisrarO9mjvZkdKGEdOEgAN4gTxDFDw3kmKOVCUBWMUQp01gRW 08pEJGNNalEXPqNGW+GtRIMJbOmUASD/VBoUAEFQAApABahRAgrAngWQAzkQl2p5XhcCPPU5DHnR V3aKr5cCUHZkGDvggI0aYY/pmEXgmDXAA4droSvAA5eakUAQBY97ApI7uZR7ApcJuUBQASMwAJrb uCOguRl5LRkYDhbILeDQLf6DNvdAAay1oqOYsh21UaS2GzDgGyJWswPRszmps7qbs7q6Yr46czw7 izaBEDfhMH3Cm3xja8e6QEiVVLcHlYlSBT8FrUkEaHuZRLxDRVHhKlBBp9UpZttonealjE2QHgEw Hy9wrlMAAEnAAUkAAgzQtgXgHWuKHunhppIgKlGhI10xvnrbF3qaWMnQDBUKDo9bLUAw/wJA0MBA YLmQewJDMLkN8AEGYMEXbMEaXMEV/AEabAAGMMEOILkOkLmbWwEonImVyWnZQqIfmiSmFQGsNg/9 oDa7QQ8pq7IMkAMwuRupJhAMkKOxFsS1+7s0t5PDOxC+irsr1ps+KrQscbxFyZu1VhBBqkAKpBG3 NhIg8RHPkTHywUFWKAhd5lcAjDtqQWVqscZZm0bUgzRCw01r5lZHwR6OwxMIUAAwAAIlMAEKEAQL cKYqEQSADMhrKndhKQjNc18rEk8BvLeT0a+YsAyFq0hRYLkfcAIe/AEbsAGc/AEN4MmdPMobgAOd zMmiTMqkvASdzMqjDMqeLMEgbACSu/+BHGrLmsaBm3cOJDpaGkeJoDZykqkbqQVyxhxyRSwQt2kQ BWDFTgykTqy8FYGLtwiUxWqsP8qbNeEwFKFASuaDEaERxcaORbEoz4ofbuHIW4hvv3MWKdO9UWEJ XMp9Y+UfTnSF5SUXZbLPDDG/Ozy/eZwChEzIcRkC6SFfccmm7qpucjV1WZt/klKl+vnIf/F/AscM hSuRRPC4kHvJQxDCJ9AABiDSJB3CQzAEDSDBKv3RH63SHzAEsOzBtGzBML3JIEzCtZyJm1UBnRYu 4GIa3iKq9DDDAWRJESBqotaiJVDUJbBaHfUbQazMNVcAUs2TwUsQ0fyTPVnNKOEQOJj/EEfrzbOG i1wSxUNrQ8D5LhwRJ0+JOiRUTltkCQQy19JjjXnbMugslld1Fl10ZuFLFozsZ9VaH/HBLwFgL2eS HSLgHQhQyHJXh+86hwYtBezDIQ59FwKZKUn0ZQGCX1P7yHzbr07wDBOKwJc5wSiNwRysyqTswaGM yq0syrDtyqv8yp78yR58AhuIAbrNkbvNkTwNACtgDtuCDulAiZJUicr9PyOXD8QMkyurAFPgwwLh Wq5W1VhNxdRMxbNGEEGJi7MmEtT83ctbEramMEAZlN0sEUU5nEOatMnKtGpIVMFoU4cgWNuUMrSj X2q2RZnwTATCbZ7CMtXKTVRXrSID/yHoWCZtQgBn2htpCsiPQ0aRIAPhFzMHMhcG3ab1VzNcuc5x zJ8STdGhQCx92jSjndFFwtGXzMmvDcqwHcobwMEj7dou/smyjdua7MG3LdMnAMIaPLm8/ZGbxy3o UNwd6ZEcWFqoAWpJLUkB1MMKoBsb1cO2QUDVLXsIQIskod3jHZRjbYthHpQV8ZsVkTDpsRFfMpQV IQC6+N5H62LCqQQ8mGvyYUJPgX1Xh33aONHXkzL8KwhghwlL9HXofK1YVYZwASE3pY7reL46wRAi kB2NDchyu251YR89YyB1WIcVciAPjVbbSc8B8tl4ymgKRkedMaEQu8APPMEgDeswDf/TKj3LLz3L E1zrmZzrlJvJmTy5UVABJyDsKKzbQ14BG3g/AJDC4NKR4mIO8+AB1yJqasNRVqKytjFqqynd0p1a KyZSIkYA/1C/Yf2T3/2T5m7u4m2L4z0R7vEQRjYxPNHmw2kRZI05W9wTDQGFUeVzhlAzfJV/AU+v +shVslPi2piN9TRN30YVfu3nusPGVlVN1oofj1BL0AZDxXEcTTgXbLdFmo6PhtAghTB3+5tGVMc7 e6ZGDz9PXcaPp35of/i3jSqRD3zJmszaCcDKPJ/KG5AACSDbPX7Bt53BuO3rm5zJN33TlMvbxr6B Hqm5qLHLo3XUlIjU4+I2APQ/9+D/w1SCSSEHs78hEwiw2NwspMybi2q/9nT+LvDCHGvyHNChEcha 7wJw7+bN9ra4JgOjvi/wCIWgVSPen2rBTmKZRvR2jfyBROSl4E4BbEmUCLFUS3OxHsjBEgDt4Gjy E/MtZzKzOojAOqtDAy/DM2Z0VSYDhgRu6iQOUDkCC45X2h39uCet0g2A2j8OyrOs0hJ8yY9bAQsc kg4MBE6/aRuIwpumucqP/Jr7kb59Pz5N3OhguhEgqqLWD4xE7dDecfmgAJjEsk/9sr3hUb2B5f68 ElStzQpB3rYYEiHR/m6fMPp+vumhS3S/VA3BEwo07+sNCASCAkqFTUoBTTdNBwcS/y8HL48kJFUa MjJGPkZQUA+enRqcnZ1ZoFmmpJ2fpqiur7CxqFAaPhokLkwyGg8PWb29sq+9vBoaVZTGvMDEGijO JBIS0S9XkE0QAQQLATcBEBAv4pOUJCiYl8ZGypgytjIku/HtRrvEm+6kvlA+qsG+qAAKG0iwoMGB nWj4WLiQBo0dIZD86MEDyIkTQ0402LBx44aPIJcsAbnhg8kPBi5erFBBZQUMJwykPIFhpsoTLFni rBDlJYYKHDCMADBiaIURQH1iABABgNMIHog4BcDBg1MPHiJAVaDAwxMGFy6AvYCAgZCzZYWYFdJB iCAEcOFaQGBBEAFChfLmPdCkr/9eQ4uU9GU0eFvfBYibLFAcoFDjG4OUECJgoVDdQoTwKiGg5Mai RY0iRXqBDIUlWqpi7TvIunVAWvCYxDMG6oGMVcGGNTNWRQaySsqaoaA0jcSMR+ACHEjURJuABc+b iAsn7gXxSu3c+cCkiZSx7C6yi3dHb1O/Usxcq1/vup97hgqdIOnQoweREUCiRMk4BGWDDxx94BFJ JZWEUkwXOcDSCAMghRRLPyXV00s5HbXCChDSVNRQKwCwQlAcTNWUU0RoVSJUHISogFZaPcGVAi7C KBZYcYWFQAcIsAVXB28RkAIBcm1jlwCCLHLIDZ0poggifRk52JPLBYCYlNwsYNj/AoY05hwiXOJF WWeNDZKIElgOxtcB1E1ThSXB5fZLegK5AownvwR0UJzC6POAMQuJooGceKrmAyW/lWMoCcHdMs0M xiEXgDQSBPCNlEEs9k04JFQniQuVVAEbO7to4MmexyjjiW80kEADp7O9g84monbSzyfA2MnerbfK yg8pPtAgX30U8UAEEMTyl9F/Q3TE0QYGoHTggS7ltGEFQODH01H6cfDSTS3RhCBNGERYAVEpcjAC BimygIG64aqbbopWYRWvVlwxwNUUT3w1FgI2CnGBEHHFJYhb3Ehpl5CVbkMmIgY/OVjBVS4AATbZ LGaplQsrIkgTBGiJyF2FCNLN/2ZkCtBcx9KhqakEvrVci3afeNcLnbrNycyoUNQpEDNuypIzLZ9c sssqOhe0J6eFHlMOCkw/YwwK0ph2nHLWVSEBBBIjxg11EBT3AjgvuMBqPMj4hl1vT69pyT1ir4nJ bA9sd0mfo9JKy5u45n3re7v64IQTO0hE0QhR5HfCfjIZQOAGOODA+EcjiVSgSc2m1JIDK+F0AuYq hXtTsyeZFBPoJ10U7umoB+UuByxURVW5HCQBL1YwKjBFBDAykO8FT4RFFlw22PVjwU8mwpekzTHS CHPGQ9mcYFhaGs7EiiUvZSJIaiPZ9o0REj2RSD4nAJGJMMeIJDNUYZoyyxDjy//OesefCi1y55Mb KwTtWQ4yvS09nDnPGM5vJGA1cHQtGtmQVJXA9rXpQYAJYWOC2AgFD1xwKlVI4w0vquCD/mGCVfDI Ry14hTNa1Ul+KDRI397jkMBNJFjEIlYUHLAfjAxhCAZowH8aIBMe/id0lEvJECpUgQFcqEHXmtC2 PnAC0aWkdDH5wBKgaAAWnIAF7jqdU1i3FA+8K0RYoQoAsiKvEnjlRVz5yowQACS4/EhId4EON8iE vGy8oC9nmtiZsNEX5CWiSs25ntZOVpiFcYMzkiISybTRDUZKqnlnGocAKXEOUY0wZ+/jWcyINrOe uaKE75PTQVSRDlt4Uhjvg0L/byxxKElQ0jRrMk2n1iSBSGAqU18ThwukYcAG6lJswIwHJSYITGAy TW3swMUwy4EOfqRDEz64majwlsJqxoIfCoGP33Zgg8ENKwoYiSIPc7i4ci7OJMxKiYJawk52IgWc NzGJFTHwARZ84HQXMcBPwNUumoAIXSGCXYioIjt5WWWMuLOdQqegABPkKwdkEQtZgETRbUDGYk8K h2gkoSlxhIYvfbkjJCARseZUiTlzPNjHJMUlLGmPAIEsXx/5Up2uSYBTTrNF++KUnhOeUJM9jd8m a0Ebnw6EZ9v539eG6UpLNE19TCMgCo5ztW884moMnE42wOGCB3JKBm3rlAUh/+CCBobApo/4agWF uUyxYWI7VagHbYAhKp5Z866zSAh8fBWCIlDgPvexCH+ahUN0/ucj6DRQ6CZ3ksptTp2b00mGVGJP JnbrJzURF4Rgkrp2oQtdW0zRFsUYr6t4oCsRYKiMXqQvBjCAjT5iI5a2QSXmJQ9KEEDTaKwhgUA6 jDGAxKgCT+bIg4kPOh2TFMoe2Y3zjbSpydhprYZhq1F+shSoNGooXwM0oG23ZjUzRjm6CrZMFQdR aiMUAanxiFxSooG9nF7YphO2NU1wvOEg71knZkBwmEOYZQ2b2CAQghDkApjtIKozd4rXu2Jzrw8R HA8YlJ+MYA5AO0QsSBS3uP+RhA50IEFJ4m6Ck33G054y2WeKx3WuCIVLKetaXbmmwrrYjRErUJFX V077BNWuCHetRUAKAtZG2NKWSsT7xvGwMdIr1BKP5zOpxQSZvEO6tDFWssshRdbS8nEjedVob3HQ NqtO4glO1IXFz3I2P73FTKd1U80/3uS+ZcL3OtKoxKGQ1l6tQmCYyQkBk3VJiekVs6ycCjB5wXHW L5evv/CtqRSkwAQJunUeu2BI3QLVYL2dp1cNgYgUfkABYeGnhscqCYfLCSDEJtbVIVZ14mSSERKX OIr3FB24aJITb/0kKJ9NUbhexxQUITQrLopAVWiXFTTGqAQK4Jdr4UIjuKj/RRBvFASZtoGYbWBN SthYMh5ze0eOMeaPFqsSk6x0PeNmGY5EmtKllCeJ/yHKVJaszWrobFc2u0+Tam4FLL5bM5vZVZQA oasy7D3fXLpyGsXJ86EgTt8/77JrZZ2e1zBF6EX39+NYq14AQvACxGBNYvHtLwQlyNZ0hIpUsWKz KDu9Hl4x5G99/QEPVkBhwWKEsM36yGE1DLmQbGAksC7Jf2Y9k4zMxCYyaWJKTtfOcW0rXOYCEQA8 K9qpXGUqP4Y2GeWV0AjEKHdcEUsOGFDkt/xOtsPD9sWmZL3FFC96SIYYt58XvY8d+S4w1UbHoJMI O0biETOAmtv4dJ7a/KwV/wCX8/08KfM0c3q7QN2ZJnljqPZSp6NXvY51hlkcqPX5ULisTp4h0Utx kPzzDvw4H/mLjaxdyoDhqXSiZ5Pgt708ZpymuXrOk01fMUEiFOA5sWyoEZQYaEBG30ACom9OAk0/ QFEfsQFaEnVf8xonAKjQuYDyT2EDNERQObYYbwwjMxqUjEDOce5yECMbWUkscPldbFPQbStNyWIH k1zbtjH+x23aMDzgxkgdM3jHFXhWohiJATZXVW+UFCq7UiuVFxChRHC4EnzUtYEbqDN0RSqFAike hXLhgBySkGcTKA0cBTVUlUt95mdpUlP5RYPy9TUhIDGaMntgA2mudBv48P8d62BJcWMP0yV88UNC 25RzpYYf1hJOOMQfAtJDUtdYQJSFQBR0AtJqmdNO2qcT4AIULdY6qHM6woZFAQU76UcVXnRjYYRj 8WIVLIJjEKUAJQBtumMjEmUjbJQCb/Qjb6Q1VmJkgvBunGElgygkWqNtQoJlJEM+fmdb3zAOeSZL pmEL+lYKp6An/AZ5nwgQy/ALa4ZJ7BGCmbQbT0McHlU+lQgp7BUN5XBT62UojBJxoMdRK3hVLkhA AfY1txc2ycGD4kAxfWRAECRx4XEe36EM0TQqdZV5/4CBpKCEeSIroYYEOvCEFvFzAlJ90ic5CTB9 I5EAS2CO5Yh0Ryd91wf/EtOHTpQTE9yXOL2mT+GXLkJBFDRGY8M2Ywf1OmB0WqUFh183RgapAPTH FSaQRrnDLxElZD4CiBIpWxAYgNFziJzBbT6CbYIQBGSSbZsBeB1TMsmFZSDFX5ZISW0yJ6AoCwln japhJ7WSintSGsSBHMsRSIiQVV+jMhxlKL+heq6UKQzENTLogh1VckjAZPIFDiYXexSTVawySdxh gbzgXZmHlTrjeNgFk2qmK77iQjWQfC0BBJiDQwaAljzUHzz0AWxJOc6ihXI5awcyYhWQfd1XRVfk LTCGhsB2hgClhuViFbFjUDfWFFgBLywyIgBQAgn1IgCgAGKxkL8TUT7i/4dtBEfCg5EBqA3+B5EE EDzddjDKZRcBMBljEh2zJw5LUwkwZwx7QjOfNJszeUp5kgoCl4FGc1QayHk3CQlRshwh+YNf0xzg 0IuwOBy7WEtEmVtWhZT05XA22HpaJSX9xVy5lXK7JFW70A6tEkK+0Yzs0xs6pYmoUQvdkRpeaQru wQ+ito3Kh5Yy0YWx1mHgWE7qCBIbcRIaBnUxES76hFnD1mLmVy4sMBXrYqCwQ5hhdBVaMZB0GHYH hTtaUQIO1VCulS+u9S9Cxi9ExkZGlmXvliNuYRdspA1u1CMVtTC0dYhz9Dx1pHqyCEDsczMeqIHT BYJAZVQppKPFcAvDAf8pkSAlAhAEQfAc3IAmrigp7YV6KGCJvBgl5EYNo+GT4nB7l3J7FWNy80Ud iHZTo0cowDEzy2AqN6OV65k3u6IQD2EDP1AD+AEEaPmNhyUSUhQ5eCo5kGOO+Ck5S9A45yh9RidF guosI5ZPVfQTW7QUI5AiQ4F1sAOQArVshIl+64d+iEk7OaZaelgWX7F2GgowBHAWJaoWJRqAAZgC oiqIZUEAJZcjIPpaFGUDQbAN/Ecm/udS1jNoodc0K5mEuvFTwIp5O7oeHFg0qbhw/+OCQ7ocRioC ImCkRRoEzMVuSkpWATYNicZRj+BbxjMp1SkpW1UxxjkpVAIOTPBAlfb/QGSFrfsDHMVAKs1Qm/cz c2mqHmv6N0hQBD+gAzzQIMTiAIOFQyrxYUx0sHAJl/M5nwbbhV3YRPz5EQvbfZ1DhtqCLo2KdesS bGkYBRygHyzgsa0jWiRrqUzhdUxhFY7ZbPXCWl8RFwBTFmZhbTALom8BF0ASsyCqFghQiKKKsxsZ mnDUfyLTR9hQeJqCejU6M6rASaXYtOrZPlc5Z62BMziKis2gPtFQVtKwHEp6pNIaALVKrQUjtpLS CNoKprLogo/yZN/6SOSGJglkQGgiMZNiQCiIruj6ApYGQuwgNJlgijdTNMMgm/datQnhECGgc8oX RatGjkugApErEuN4/44iITk4YLkJkLnjaI6ee3R/eo6NA6iSe46d+xHXJ2IqMQJEsAJSIRUdMhWN WmwKQAQzJqlVkSJJcFBdV2xNQS/x8iIquyIKYC/zN21C8COwykYxO6o5UlGwJTB/SG3RezBGBpoF GHdXFkhHCZS/moqtoJvVhUoz2YHZRWdv4gxBOh3Lc7ZiKwDQCq0IEARsJL8MUAAiIACnabcp6Hnk ehgGYzBTUikLUKvdVqvKuzV3WylSkLdcNUGhAptmdrheSQp/QwMSsXMrMABm6QAKckPeCLFymYWk s1hbKGIAwp+tdrqnayBRlxQOQhRFQRUYOxUe+1kgmy0fW7IDhbIpK/9aWUEvFXovuWMvrfUEAEOq JOq81oYWy8u8OJsWsPpGP2uzBlzAG1mrtHVbKVgolIAO+XaVPmW1+iBd8SqNGHi1wCqTgEKvu7Em 7/UCShYliXSkCtSAR1qSSno+LCi3iXANMsVcCkQp/0fAhowYDZwCRgpyXKVMvKdB7CNdN0rB7AEF NAAFO5DJRdADK7B8hdV8rQZEk6NYkVN0rcZqp1xO1zeOqLu5OMDKIYYgWDfDHdIh5SIVt1uyDHq7 owWQWeGGIwJtTQFt9UIWG+parqUWyByzsnoWYOEWzZuzb7ez11u9CVOAG8luMjU9B+ACjPIMZQZw eMJmjye4b7IKmJT/cGs8cDzKGjzDeZ7XHFHCCKc5Pkc6rYjxHARQKY+kv+zWF1yTDcT1iFJCRxUZ BD+CwGxEvx46ZA4tkUHQwJD2VWQTcyekJ0FFyUtoyYGDBD0Qp5jTQ0FHEq12uaBr0ni6jn6q0tRn fZ07utP30pv7p+SoAqrGa+OyAn81uyUiWricIsqWu5JKYwH1dSHimGPEFY7JFaf1WmJRxLKqOzDw WkksqzRLbTkrMBMlMFgsW9ncfwS8z4aRPP0rAU4TyeLcM+IbcLMgcMHao20sHNFwNUd7Mvp7mvdM ANF6pNxgx6f5SMjFXLrVNXeEZcgTSEpKJQlDwAWMGJUCiIcMiIQo/1+ywUyxMgrV6NbHqtGVbMlO OCxAQC1nOTrz+R8XMcJyqViGyrCVw3TW18ov/coy7WFMZDpHMQIRUBQcgMuLuoYGOrLuUmy9LIdu yBURkIddoS9PgAAairzJPLNuAcU5m8RRHLMvK71zwUZ1IdYUpcW5ijx0Z9YaRCiRXFegpAqcgNlo PI2EK3mAIoIZLZMKpzRQU5zI074HcAPjY8/cLciPlN+S4g1kLSnlFrfhVh3iCtgLQMfiSmAq55Qo OExjA54STK/tzdl6AwVGsAObXBH6IZ/NAn2gq9J+itKXi6d8mp+o646CCtuyHdOd68oyXagGwmus SwERgOMLieOva/+7TEEEhOnDRO2gXSE7JZAvrIV2xesiy4y8sErd1L28OhswxozMcmGzG9mh++x/ CcjHNqkmkkwrqHjhASFdZL6byDpwHJisJMheCSQyf62/AmAB0CoAcVEACCAChxjnLGXYYut/JoUI WXZ4tTS32Dmul6I1jFxeuxQeYNUb6LDeaYbhuAIF8kFqE1Y4ZmlDIsawGkaoJDFFI8xYpK6FIr7K Md44MT59r0zSKOE5t00EJ6IV+/jTPUxs62eQ8jJGU2AvZjTVtRPsyEzV0J0j0J3MSdx2OltkAtMj dUFkBXhSSHuJNwWvaF1X5i3moJAaUDs/3D7pxvpT/AZzWsuC9v3/SHdRx/BbpHsNW34t2EtKJR1D U32UXI7Qk9YxgXKsZPAFcqNXVriENGizC3FlBAb/7WtN6ewBOH6V6YiTliGeyiE2RRRPqH5q8Sx9 n6MM2yws06s+jq+MdOo4n4fjsbIOuxGwAhEgFaEVqSTrde8nkLbjAdAGAy2rO8Oe81Qts1Ud5Uw8 sxfA7PNrotAr1hFzPa+oKX+2NhH8vcGAGzHj1ggRvu18itXFDN+htXH8CGhCz4In5/ALrRkwv7Uq Anm+DXedk8tjPVtqPNfA5ea6VeEKt4tOVhbkAl7c9HyS7aOi8NXkQjwgLBWWlt5In6lMqFJ0pxVf 8acs6hhWICGW/8Ic/+Ig//Gbu+rruI7xeDhHkesRYAIjIlDBrXUiYlBHXkZTMAWOqaExgsxTrcxS 7txPTlHLu9VxoecVNQhwMbZIX7afx5oukFPlTaaeUFci2NYFF99ST76TjKzN0EH/lXq6GBqnORfU ur9hP7/Sq+dhe7aNwHrhIHh/rFtRgvaO/UjAKK7VMUH9Tl/RhQw61Yy/d8bK7/fqcXz+empSCPE/ BAgfHxuEhIJLH0uIiomNhIiFkYaTG4IfDRsNCYUJmxudoJ84oKOhS5+GBgYVJ60YHCMAshEURBFE ABERABwcuby+vLklEcQKTwoKU08FDFNTyQwMT8jSDAgIDEIIQv/b3twIBEIX2+EEDATY4Snq4Qgi BATwAukpBAsLAfkB/AFNEAAhkCBRRYMMgxo0PFi4MAvDBw6zSJxIEQpFhhQzatzIsaPEhwl9yBhI 4sULCAcgmEwZ4EYAASJEwBQQJMjLIAgKgAuSLoiFefj4HUhpEgK+BU2SNum3dEE6bEEg8FN5MoBJ ky5eDNSK1YXXgQkTFnygMOEDKBYXQtEA5azHt3Djyp0rEUmRGitGAIlyYsiJBqoGNRhUacMpRYgR J0A8SFGhw4UwYSJcydKHUAlKbcBRilSnT6A8gSY0uEGrEwZYROFQoQKAFbJy4dolbFew2AA86N6t DMAUBgpKJHv/wuCCtWzchEjrRm6bOG/itLkrl+6pumvxsMWLZ/Pl0qkHTEp4IYFgFYIHE7ZluHZ9 xbZo48vf2HBi2o90O0J0uFBDlZEobHWSVC8c0I8A/NATREwi9LNgTgUUQMCC8rwjwAI2XTUgP/k0 YSA+Tekz4TVB7KMSSlSN58JAK5LABEksVuGDBiLRqB578J2133759ejjj1kg8QMPKxCxAhB9DTGY kpYYYNkgh0B5WJSFJVKIJZGlIggmqKCCWWehYcaJJF1+oIoDrJxQAWytjWDLbMDk1oswvOzWy226 lbBMcdcgcAE20hinjTZCWMBNPNCl41w2QmxnjnbabXdPPEpI/7pUUv6ERx5YJIQ0I1nt6bgeROwp 1BCP/D2kaqr1AXkRfzRWIasE5610oj4l3uPPS+p0d6E+2IjwDj41lZjPAgGdCMF3/QRwALP7sINA CkEFQBVVXq3Y4kgydIvejD6IJAN8UIRrro4XoerquuxmoQMPew3hwF9DZGLvY4nlq69j/H6yxCan dFlmJJuExhkhnYH2WcFigsalJ6pEbICarWEQSyyzyKIbbrnpNkUxHpSQm3DKKHANdu1c0EwB3UjX aKPJPVVddJFq14GkTkkaD4KXemhSE+PNMAMKKIR1o1rsIU1qRDyelWNaD/EXUbv6hSRDrStd1VTO C/zqFE46wf9DYUzvBFuTCDUdm09ALywVgj7NNvvPAQukwM4FOUyLbFEQMNF3tkysOBIJ3dIYnw9o SSSfW1Q37ngWNfAwwF5AAOHAEEMYkHlplzzp+eeeO2mmmYBFfMkGBtjL5b2eaBJmaKNh5vq9pls2 MSsYAFABxgp4MOecHmjcsW697+ZByc8cgwxxgTYHXXIWdBMzzOIoKs6f48xsg847J/Wsz+SNF36A nRpdhRE0zoj+WjqqxZZC8GVhURbwm4r0evBjRPVaM8pIwhXjCeBVUiIVfgRBAAiaEAEulA4RfA0n ZHNgsayVLPFdJW5xkwrdjoI3vCEAWSWBQFZE6AISDuQgKNT/gBEQZwQjyAdxiJPP/CaytMfZ8C0j 0EuShnA6SUBmX0AM078Ww7AhEoKIAgsTZz6zRIVhBnYJ0EQmMLEJTDhpYqhpBSsMgIHWxEYXwdvN x8KomwgM5xjBUcAEphEN4FCjOJDChqEkBQ5HHYqOM5uZOQhgg6QsQAn+8JA/VALAGVSBaGMxi/2U hi5UnYpVjiRVq2ioLnZBJCT/kdULhDaD8XzvUhNqh7DgEQ5hSagm6ijABBSgEwR0ZyrJoko/1Ias qcBNKne7gC6j0hWSaItwCJEB+lYoQ4vI8IbI/BGRRnCCeV2uAdCM5mQEUZhHGMYwjbGS5ybxudRh iUyoGAVo/5bYCc4kbGFRbN2VUCcxVahJFV0cQQVeAcYIeEAX9pyF8Y6XDH4eYxp8Is6fpmW9PJ6j UduhjqOqYw9I5fGP3+mZP64igRmQIEAFqQL7VIURRrIqfiBtmiRPFTXHnSUhVzsPAK9QIE096yUE uAl3FEihCSGoa6iMUA4KUBN9AMRaRZGABVnSrGXFEiApCEJS/8TLF7QIRsBEIeKcVq4WooWq80mm VuGilyj4BXMGAMxkKkPNRkTJEogwKyQoUyXKULMyRzxYKMQpis6Qk2EFoyI070UaQ5hJi2nqYgU4 wILbdCw3GrsnyDgQsimUIGQkiwYCgkMNBcBAOjEDR6QWyv+97EgPZ5O6hxJu0DOUCJVWJPkPMMvV FvqtJ0eTZNpHJrmqpTXthv2pgleW5b2VfA9uuAqlKzHkSlcucEEPcmUB8laiYgmEBFIpj1CrArdq SSVZuKpbB1NAwacSLoUGiQ9WZRDDxSnOLSPdqnqjgKTB9FBhRwSifP9FX/o2jL6GEY1nRsFfc3rm dQBOZ5a4JAh3Tux2rakYBnIXDHxuLALIMGNwdPEElU3jN9Y4WYav8dk7cha0oY2HU2ygBBAhBSmY 6q2mBhKgooVlITEU6Y5omJFKyriS6iWLD3RbwoX+sUM/5kkKRDBkqAg3lanUiSonkAMm2wQgG7qu VQYklaP/VNkoRjnKAhCQgyfkIKnHEghWgBku91CVVGb2SGzVO0Oq5SVeYM2c5g4siBN8gAV1Bp3t RnfFdl7RTKLLksL6S85CB/gTs9OEFVF3CT+rok1dxAALXnEnxAZvZLEJYzGU4dgpXPYJl1WONGBA DVF7do+dzVmqS/xjEUf0ZygxiUXPg4L/oOAg4ooxa9nC2qfdz2mnem1Hk1bbxumYxyFoQnYktaul xJQnJQouKkn5DrTlAyc52WkOagJlDV1XPEXBx1GThY9cTstYAWDCSVqE0vKixSA+MEK30DUqYK9K vcmcl+jY6onFzHe+KlhCwFUQYH45xpyiIAWhSwGmAHdC/4qRcJJ7Hc3Fiik4FpXGp4TLqIAImKDL //zGcZATDguQAzuIQnVnQXyPHzfhxElpGwSERoJZD+Q8BTEajBv5yFfJeGr4jkt/ZEAD3b6gbkIo HvGkgY1+5KRE2WZAKyGkDrQFYblBmACTtb7tgBhwH9YKu5XXdl2vY4gdSU1qVFQEo/QgpD1lfmRJ gR70rVbAq6jp3DTf+ogo/RCbi4AS6LTE9yNuhr8KN5g5F39OhoGTEIExcJ8ntuB55hAAIzDsLjZ2 PI8nIxmk3vDJxlGO5UiPHCs3aGdZDUikTLlAmxIqCb5COET+x2jE3OhDRgVJY+pvtj0HOo5dBZKU uiDZTv/JhtJJ9kGpYONY2M7bKINVNqvHpCY5yL4rgfqCqQQhBMgaN9+gHBC1pQ0gs5+9U2/Orf84 TYU3kt9VW0vj4dedXfOyMw8zUVa0NoIRaSV4/oclhKFn38QJmaFwjLdw/uVw+mUmkDd5qNFO82Rx GBcLt6Ax9qQLxnAMMLBG0pADgXIyA/UoNaMOk6JqKchqrdYhvBVzFjQeJXEe7Ccr/nE+4cIWPvB+ ctcfiRM18YNmZyY17RN869IfsVJ0NFAUAZACF6AAF/AEl3Y8xZUDCoA201d1VWdK21YsWJh9Xdgd RmEsanNUVHYtsYQhZNdtWpFS6YFCxBRDkER3sdVm9+f/Kk7yeJHwb4kxcIqgAgEHCqdQME4UGoO4 eJmxgIm4gA34OmSSOn02gaiRYBSTYPIUC0SAifhkC7qQDCbwT1Y4DatkMuogLSiocg6laj92Az8W AICkFEqREikhPkLVYocEFrjWH+2TI5AkSXQnWxsBNXeYW1cjA7v1AuBHAEk1WZxXAiJzJ0kQMnnT DhGSSjvlSjixbSKgbUyWfVZHhlLAbQERAj+1hlfxUz3FIbCUfjJiLlNFLlOlNPghP/R4hzbUF/i4 OXb2AXa2j5ZhZ4ZwCmZlgAXGZwX5VvrFgIq4gE6EA67zGVcCaBPYTpPICgkWTyOwYJjIMbkRHHky HAWA/wx/YhzZYBy6RA4qxz348CtNwYpw4yFzE2saIh4kUB4k4Sn+kZNh0S3ktULvIyo6WGbvA0NB 6BCwJVtGSDX9sWOy4hV8o2U4wQBWKDJJQAUlsErMBxWjhFzYVm1cWSzZp3VYJwUUBBBSYIZlR2UD Mn4AERRQBkzpUy5wGG+8tham0mtGABF2aI/ssiWT4Bj5dU2HQUR8qAiE6SVPVE4EV04KuIgLeVcB BnGMlgkU2UUVVwGrsAqYSTEA0EWskUMjsAIUABseZwKmORwdJILYYDfK6A4EcAF85GoquCv6EBRL gSKaQh4aUpPkcUguJis5ZzRh0R5lgTSmgpQkxVG0tf9myYSEiMSbMNkEJRYAk+InulQCVJBpX+Rx 2bdcVhAhImAF3/mdGdArwhIE2mYFE1ACO8VTr5SOJvJTXkdB5UEVVYFlz4VCrSVe/EEu5lVjEZE4 fImHErMBAKmHewhOgVdNBUhWUIKACWgwKoADBDehE0qhjHhoC7NOjIZFaoIBEVMBDuBOrXECghVp rpGiuQAbJhABVmgCXsYAMPp5AjUtJWmSrWkPKSdi+NByUsaGM7l+NcliwKkB6CGcL8Y+bFGE/Ll7 yqkW8vNr89icZJEQRIMCsNc2gZR8pkgAU3mVETABZmSaOaAD24h1pmQFMREhD/KVwsJlWsdk21eO a4j/IrpZdipRk+VxhgCxLbwGbK81fzgiUsCInPY3oBmhCvvXf1VCJlLyf5BhJX8nmNfEMAQ3CotZ TuZkoRRqoReKiGEyGpEwGaoAGFmUmZr5aGtykYMVC7AhT66xAiswARQwAR8XhSeJN29UgiZpndNi D3ZjD1pmIs+iLFMWg+LhmwRxUSxmHsJJFroIrRw1Qxy1SEDYn4dqUlV6SOcxHsvyPUcRm39iNwUQ HKuETyZAqyZwAcj1hd+ZE1YQA8u1XNeYjcuFlVyHjS1nLQbSDxAgAcoCZTIYQsmybt/1p+jlPmbm n/U2bMWGqG8RMX4VMI4KCYaxCIEHCRZ7TdhEgJdRrIiIp5gY2qkY2gKKCGAOcyWT52cWKaIJVqLw 5EUrkKLyJAuxQAGm2UEDVYLuoDIDJT2GglA48ytGQUEzKQFZYZNjxmJEc1FFUz5Iqh7q8SlXlTTv xj52qZxMM3dalVuI5Ekn8UkvR53AqoxNpgsTgBsr8HE6YDdK9bZnk0pSJ3XgWY06ZQVqpHXXcCzO citGa7T26VRrGRDZcrDwKEMiRX/GRI97iR9cC7EUEQgAIfkEBRQAWgAsAAAAAOoBZwEAB/+ANjYd HYJIh4KJKR0pKRePPSYmPReLCCaPCI+PKQuNjZWWFwyVmhempwiqBUIMrkKsQq0EFq0MQrUItbgE CwILBAIBSr7BAgQEQQQiBAHOys4BzTcBx9YCFrTB1QLW3MHGx9Xgx7QWxxbp6OngzO7dIgIiIhbM 2PHXwfT16fv+5/L4pcuQ4QhBgkcSGrRQMGGMGCAUxjCY4aFFLCAsZsQIoqPHjjEKZHyIJaTJAicL FLCCIIPKAiIKuFzJYAKMHDhz5lBwIYcJBSae5BA6IceEoxNKTFCQFGnRHKqiakpBIIUqq1avNvJk Y0HXBSHAhhg7lkkIs2eZuFDroq0LGS7/aMiVIZeGDyM+oOjdy7ev37+AAwseTLiw37FIFiAhG1aQ 10GgNJnQIWmTo1RVNXXo1TjF17ALFjQB7VV02F4LgiAQoYoAAtXZwNVzTW6BswPRugm70aRaANy/ ovUO0KQbNSUCkDfTHYDajQPPm99w3nycgBu6s+tGfi07du3Zmxs3Tn36dd3nvqvvBpD9PoJCMghJ OH8gQ4YTEeavqPDIRIf+BUjSQx49ZMVDFBH0kEoLyjSPTAephIBKDMwk1YWqMPBSAU51aFRRBTCg impBkNhLEKFBkFonynRi2wIQvAABBCHMCIFbJLhAAglMkCCDBj/KsKMMVciQlwZQPICk/xFJZuHk k1BGKeWUVFZp5ZVYZjllCIsp5mViSCiCACgdaKLDBZRd8IQmbCIgSAc9FJKIIYgcwuWcY9lQRAdS SLFIBzow0gghCKQWRAooohgaMNw4M1w1xwlzQBPUQVddL7/8Ypswqe1WXnTSHYCbc711o4R4wXCX HDbImecMc9xc51t512En3nfj5QqedgMR1OtBGQiQgQUJNtTQQgoV4F9+/U1EYEkIKgssgzO9RJBM 2IZUwIQwZWBFQVZQdMQ5tMDCoEdWYGGFsjHkUIBR774bVYklikBvEAHgW2+Jqb24qI0vBCywjDFK sGOObQGpQV4MG8nXA1pGLPHEFEcM1v/FidmQcWmQ2ZDVBR2AvEklVfVCQAdCECCIyo+VFhpqTdiA msquXciaVKxZgAAyvSFTHafbRHPDqepVN510sgpz6m65TXMbNaJCh1vU0UEnTDdGY9fqdueJh3V4 zmAn9s/aTYdrreC11x426rCHELAFDctQgunYdyxFc1cUAxbQoqSstMO6dISDCq67EoMxTKDttjpD lZMpqqSSoVNWTLBtvEblhPlVVR1aIqKhoTjmVoqiSGNoNTLBBI1k0bjWjW3J4HBeUOClVxZQ4F7x 7rz3nuVYo+3wQgg7iKVIyJflECgjm0S+s8xUURVjADES/MKkTWSvfRPAYFrzOOGgg4z/00pM0xs1 voR99anqe8fNdMgZrbSn0pntnP3V/WYrNfKvP7+s1LmNpfQnP6NlrVb20w2uxLar7DAkWNgIXOAY oht6+OqBElQI3BzyEJcI7m8GkRaEsHWgda3LJCCYAAOsAAPLTQUnPQHFBSahCpws5SiZmxBO3mU5 nEilRDZozaIWMKbMoMYTUoARjU6Xlh2sZXU7UJ0ThSS7hdFOLw+4ne+2yMUuZuEQi0FMVzbmlU54 7BGMOFTIxjSVRX0mBF0ZywKSOJY+LaZPfSIEI/yEiUF5poxXuRcRDzWm0FxtAewrn6eUMLRGMpKR ZqMU/MyDNupcZ1S/gQ52LGXJ+NkK/2uU3I37yFYd4FTtaPxDpdgYCJ6z7Wpt2GCPAwEyrAjajVjK Ssh9EjLCaxVrcNcKF0oOtKEDxUABKTyKUlRihRxYoZkqQUq8OFSUZlphmTzEoQ9rCBUMjWhEiAJd v5QIGinUCHUzWp2NbhQk2d3lig/I4l6y6MV62tNKYQzjDhjDsak8QnmfQECZGrGzl4lmeAH4V41q pCIbDTE0LvIEQc1YMoM2IzXJQIYwBPibjhKtOZA0WzDsFx1Pimdq0QGV1DqKG6OJ6ju+AaUlm/PS qR1AAlErJdWixlPpZG2VoVSg2RpI1HPUTVgPxMZCHvjA/xxkIRkQAdyeGrdgEqSEhv+rnOKc0kJn etVdl9uWKlTo1QloFZrNtKFOHpcV0NErNa9xa2gSmiJ1zoihsHNLW3zkox8ZQZ5Nwh0Wc3fPwhr2 i3cKoxwfQ4jLXKYShAiFi6gCjINyTzShaYKKmkCM8ZUPkcjIRonKsbNuaGNVBFDCI3lDDUpFI5Ms zdoBp6PJ13KUpZp0zkqfA7WxfQ05nkza/Z7DU6nllH8v1akmBXCAXdE2gZUkjyuTw0qAwBKCv6rq Qe4DNwx6ECUTGeHfouoSEx6lIwwAQQmUUpOklMBd793hKhBQlPp66Cn4fYoP25qoQ3UOUaOTqBlT xLqFEg8CO0CwXtfSV4ftxQgygML/XfZy2Ap7MTFcUkyeHuNH5pVpoBMt2REDEALNahY0p3MjxzzG CEJUBXoVNZkvlkYc4rB2OrZ5LW9o2oTi+vilxKVpJnMajd3S9H7JvaTQfMpbUQ15yE6+aU5rqr+j 7ZSktapyAoFqP9WSdKjsqds5CJKcoxpVN74K1n2kOjjEjaTNBRlvMZ2ZTGWu1yY5UEp9V6gAd+Wk JkzJplPujEP99gQn/FLNhQh5r0QtcZ0zCtiNArZXHBXJnXjJ9BUpDDELe3p3XGJMmLzUGVPkgBON UIbJdkZZuhL4rjAKTWKSKAWPfcLWVHGTERfFvfIRR5LV6Y1rhd0bUfW4pjUl7kuL/11cqOkPyEj7 FHNtCmXdxjZqOJWaBLIt5Sg/GclUux8An4tlBHL53NB1YC3rdpB51IO83J0W4iyyrDa/ZHDErJxW O8QUpBC6KTzUUA4E/qEOTSAC+mWrJjzXplSkQlFDbKgSARbptrzABRe/eJByZAQN2G7TFP60yCkW FgznyQagyVjIHnEmyRURGTsjQK8T6gzR0HxRylBNRkdUs6iMDxmqRST7bjMcYUP5x5NqqbOPntsv 81bZKQ1VAGur26kxHds8vUK281dt2mKSk2Y7spVRWb/eqsfpzf6yUdWxdnrIw1cRnKpLQvJUbAFz 7gfy6r6V4lUGfIjQd/77WnWizf+kAMBxOrHKwKOSiqy8xmX/EstYaKS6ylu+8joikuyM5IPOM8x2 fNHdyEd/JTnyEzRdUcQmTn2KU4gYGXPltWhU9FAURa+t0SsiVb4ie+7VuMhRhkDwb4rTK/R0ytfe qU2pDHYhV12ly896t7O97WzPAKfKjjLyvU5AS2ny+04Oe261bL9RRb24226uLAciD3gkdczv3i6E 5CZVqXqwcC9xpsEzx6E7E9rPCYcTzeRvOcF3RkEBg3dqcfUaUoEoR4Q6E0cjLxBFNrI6FnhxOuIW RuJxRtJxoBd6pBeCVbIYgrBQh3AxxwNZhPIJJtMV4/NQMOhGnzCDofBhi9AIqcf/MqHRUq91AMIn fNdzPVcnKjhVhE6WfMhFbU9TSsRVdWHjY1CDdQdgfFpHfFFThchHbd6GbM1mftnnY6FSP1pINTSF ddNxVEiVHe5WQf1gARBif+sWVTERA9eiEi4BVvy2FO6iAFRQTdUEFRKiQzDxVU5RgCUAAPHlExEQ Ae6CKIr2GiUSFY4IcQ41FjJiPZCGgXu1eZwoOxDGJDLAJKLnJIQlgqTHRGCRYKGhCJ+gR4+ACc0j OS4Ie8dAWYtSFd3jc1gxJjJjUDfHKC9AHD94AAFzU9dTfdsWhFd4BVpXhCjAbVxoXEhHbVXzY+lH faJyjBJwfdtGAtvGjciYfmAY/30/VoYo9WRSY3bV1nT4s2VfxjYS9DbAYlTzeEHxcDd/I176Vjl8 h0P9V198VwD9VmiBV19pZXgTsAJUUAFIwYgf8hMwlAMpcGozKE6vBmluATsxohY7sol0QRc+wHl+ BSShGGG5czulaIqjFxZwhHIhMDwSVUa4FlkjcwpYUVnS8HMyBlHR03NSAWK9oGsGlVmZdD3CR4xG SYzEl4zQOH3MyFNf6HXgd3zo121KWYRYGY7PGI7gWH1EuG3G15RTVo5QNoRNln1lSEBNiDbmBj+x hB7vwVTu1x5k9ivzZ4cPcocbgjkFV4gIMHgeklYiYEMEmV85IAV/GZEXEASHZv+TnbBEBPZQsPZo eWWBccEEMuAEcfGRnLgwocgkIaeSpEcWozEWxbMAgjKDK3eDZdI8GfWCLzhEJmOLPYcaqUdXjmIb ENAbMdIEAaN11xcw4fgCyNiMRohTx9aUV3ADWBh+mRSW5ihlRWic1TcD1zcDJDADKPCMJIAC3Zmd 1ded4Vh9KHB9SymWUCmF2hd+7Oh07ll20tVKbsNdTCWXAsEP5FVvfrOXGbAaCFA5AIgUO6EUTAGA eaZfyvSH7zKACIeIAHBwiFiAJpB4OJGaEbVOkYlXlJlO6dQWmEkDdPEWIRmSnAhhIJiSoulpJWdg oHGDLuoIp4YJAtV6NgkMMiP/Drbhey8TY90TUTbqLzMyezOiWdlInNYZlkcqjsVZhDPgY085hcZ3 U1eAjtH3GxLQjFLIld35jFvpjdX5nRLgndzpjecZjlY5jdxGnFCplp9CSaoEn/IJj9YlLPGoXXKX ZglRECFxBCYEAlbQEd/CGikUTQJKTXomoB/iLnaGQ4OZVnlGBYh4cO6VA5D6oDgxoRKJE1ixFZHX qQYGAauDV+qkOm4Boi4QkhrgmZ7XF6B5OxDTaSlqWIuVYamnmmPiJ6tZkT5nGz4jbL1QPuNjFSUD YFoRRMjQi4vyazOilEpJnMnYBMh4jNZIfU8JdVMojWvqY9gYlsTXjNgZpt/4/4zcuJVmGqZeqpRH 55VEKJ1nilPXs3zdt1Jl145e46ZgtioO5Da2JDdpgx7DwkvlFQMnZDjMBBWDeRQTIog2FHiZU3A5 UV8NmwORagJHgXARcGcmcLFFcWifcCifMEQuEhYqAhoiKxYV+ERMEEUu4ESx404m+YklKWHxlEX0 FKuFNTyLwTqJAbKWMZETmgmZwEaUhYsxKJuyRxw5OhbUY2JBKDDmGp7iuZU35aXC6ZXbGKXseqZY aoVVWGxYOp7b+I0GI6bbWbbbqQFVUAVl+53b+Z0HU4Q74p1meqZWN43hllLm0Y6hNF1cRh6xRI/y qEH9kafb1RATARIgQAUgwP8RSUEFjtuHlZNC0KSoCXqoevZvi6pNefZeEQCph+i5ABC6ETCRi6ip PgoWtAcjCcVQLHk6HNojsaOBl6Z5ftV5EBaKe4EkM7u7NmtPXUIWSJBEvOcnFSlZkdEaOxNzwKAM oxM9ntAayEAVROsVhfIimiWM1SMqECC2QciUW7eu4HtsSaetPHWNUYaMVwmW5LltYhqOcSueb2uu YpqdYHowXmow7pq16Bs173qE2lp29TMeZ/eOfcsduGJd+Fm4cGdLeQoRGfESlSOwkWtwlpN/WpWo D4uoHpLBBWepoVupVHCpT1EJHhuTqesJi5JEc7TCdARpoHoWLlAFHnlpIan/FyZaO7r7AD5As04C q73rOyxpYCrMFSjiJ80bGc2TvMmLKTv6gsQgm72QUEE6V75ZMJdInMJJjFX4Aub5Aj2WjM7Qv+A7 vt2alcXYvdootteIjNfnjVwqAWlLtiigtlXAtmTrtt2ptl66IxLgrOP5Y8iFW2CXfXmrSvYan0I1 VFvTDdgVd/QguIR7EPvqwCfkwA9xXo5Lwf6WuQk6AY57ue71XspksUfxoCBcAaF7iA6ZqZJ1KCjs IkGQRBCgwhxqI20BqpVXJFVAA7tMA0Biu0ZSkrIjsxCjATwMMSj6wxVzegtQBBDlsZ2wCMabxKeg aj93c8RADNkjDS+SUNxT/8WaNTB97LTEWQXaOc5XGjDW2Rt+7KzYhrVGKJ0S8BvFKAFACLVge53X x6Xe6cZjSwJ6vJ1xLJ7sS9DY6Y332433u5TrWbdHpz+JjH1WBmS10p6HTMBERacbdCxUBV7MFLkH 4hETkLh9ONKQ2ofUpF5UoBTrdbn+d6ilfIilPAEfTNMnfdKR6hM5EbQVCVEoPMQMtRYEsxab2BZp e6q6bBeb94m2kwWdxsNP4sPKvMwsShorElCOZQO253jKUFndAwydJQ3l81nOcFGo4WrDETDUIzCR hsXNelPByZvM+q5fLL5fa4zaG63Oqp0JTZ7imp1t27bgyrYILbdgy8ZQ6/+NTvvH8VxcWNuF0hgq 36dsYhfA5haf97oeYTZBdOgr41JVKiFV4KU4B6I4HNIRTpFCdaZMK+3JjesUfRipK8DSSHHSNG0U fbgCNE3TAKDbmgoVzbOp0dyxYUFHqNO662QWCmbUNJB5JAphz50XOhxPSRJYU907O5AjJUYWq1hG n9ATEzo6ozAmIrKrKTDERZtjvnk9JtZQMgLHKBAjZevH+Hu/CV2kxMht3wuWSGmM1EN8fNyN3tnG 26mdZnvgqYoCGuCddBzHcyzQWyrHbtvP9qsjAW61VhmdxaVliWzICJStextUCxRUbMnIcTO4WLAs i7sgIT3SGTHSiYPaJF3/OY+70jXuyTZeAq39uQ9qyjatkBUAwqH7wQ9q00WBqax3amUitP0SRxgq qjECqlLOBBi4y1au1HYBBUiiF3kBmrCazNdNMRO4ol7iMVpdkY7lCUGrCsyADIlStCYTxTlWczAY AGrtm33sg8ro1ts2jPUsxtkmvlbp1vRt2G4bpgdenometow+xwCdtgAN0O07v3K7xwhtv5je10p6 nnSLUmPTW2GYW+n4dG3Z4QAkLBkdZoQrEQ3CTBZhEusyqCNtOX+60utiZ5a72it9qLrtuEG+kL5O BRiwkEHOkBJ7eBOAqf+ERqPTvCwcGn0SBKw7cWSxskZdqps5zCGJF+90/0Vh3kWTd3KC0AgqA6Of AEMyxEbWTBuq9gtj/XMokpMyl2Oms5trfcUS4ALsm+cv0Iz9DrZKub2P/djCV33EeehpqwERHuGJ HuGMnuCpirYJv+Br++iPTrZqS+F8len3K7VLaoVpp0CJzFzkRlLkV+Lp4R24IlVvmR6U9EAC4sAY oS6JI7AO3BF9mDgonRSr/doJWjn/eBS6bcpBDgDAfvS/fvQKmRQIB0Mjc8ScusKkIeUuPHls4QJO IMNaD6IgOjt3seVNjZLfvjumAYHkDgqsx0Y9cQGZwUbJ25ND69WeNU44V+c293vFWDD8Tp6H3sfp BwFdedj7bjBbyrZqa/8weoydbYudGS/QAy3Qjr62gf3gc9z4gU34la/x85vx6deMWFqFT8bh2lHZ 92PZCJTR+KBu+aorDDEfBOIsNz8SHzES6RLjWGDSyaS4R6G4I+EUPm7TRm/0Rx/8SH/Sul0CpXtq jmOTY6IoUuCxsZw6kEaqanH1axFFNKCZcSGinth5Eraq3m7dY68lYVGaq5gIUzFRVsEJBPAIrrEZ 5O6CFnWLqLF7rjxEN0fnNOebYQwIBwEHBy8SEoaHEiSIioYzhySMjCiLKCSXlVUSmZiejFUol5yW mKKSnqGSKFVVnqKLEpChohqit6KQMzO3tqanqKOHhMQHEsWENwc3AQH/As8Czs7M1ALU1AE31jfc 0N7PFtDaAuHQFuHn4OYZGedHR0JHMfMgMUcFMVT18/gxEyBUrBQAGNCfFSsgQEyYMO+fwglUAFCh MiHHwhURqVSQWAHDRAASQQJYSKFijpM5EKgMkoJlCilBYEpZMHPBAggzcUJgwtMJExcuePKUwYSG C6M0SNCQUWWpDyMPoECJGnVqlgdZskLJyrWr169gw4odSxZskxA2F5y1YdNGircpEHRAEDflgiAI LqhUSeAtSwIL+gIebDOAksCDCSgmEIRAgMZpGwdZ0AzCoBcHmkA4ZPmFZ0mHHkXqVIoEL1yocf3C 1OoSI06UVr8e/ekX/6RKpmy59qSL9S1UtBZ9UjTsGKFBxJhli5at+bNs1bxx6/ZsnDUBSryls1bO ejly7L6Xs5DhSHkYWGIkpLd+IMCEEycU+DdB4MH5//z5W1gCYsWRE6wwQUgZVTBRBQaCNGAJAJhw koM5XKBXXHTBRdOFM4UAAVo0bRiChjv8FKKGQx21FA1JuSDDijJo4MMDLr5I1VRWlWXjjTjm2NWH TbAVgg1uLeBWhXmlIGFKKRCQl0oXtHQXYIElGViUjjWBGGKLNUaAAIx1CVkzYEKQWWaDQGBIImcS 18gmJLxwyi1VaCCnLbrNGUprb/5WSSykQaJmLIfcQlwmKEDiiSJ+dv8yypuzKWLMFY4aVwxy00Sj XHTQOHPdNtVp4yl15IQqnTnjmfONNu2IUN489rAaQz8EJZSQfFYw5I9CB4GAUEL2LeQrRQJSgVEO IBmoUXzBgkTRSW+d1GRcRsLlV0wx0VStThBkK9ROP/0EVFFAGUWCDE6tGJUGRkxFVVQ6tuvuu1mF cNZZQnbwFl0qGZlvXhf0xe9egdkA5Zc2DRYAZZQdBlgzCwhA2cEMQwmmZgE00UQhV7zACyKJTGLJ Jqy45solTKEwp5wwniwnLaCNlidusKhpDHEzw6LLn8RhQspuqJDgiivCOQqpLMcYdwylBzD3zXLi WKPpN9dZN512nVr/pw447GQgqnTkvbMqQwXgA58+8Mn6EAgl1FOAFbc+VOtEVJQQ34ARYRTSSMcK 6+sKKJ1EF0tBBE7tZNRKkW0AMHWo7U4vMLFTtt8yQQK4SSUlgw8rYi4VFBrQyO5W8IYuulgLvPDh Amh1QIDA0LbuEgKBr7QXXrDb9NeUXV5ZsO2MJSkZwr8f/HATFWvmGZrZAurCISMj8kstKs9psvRx 6sboKrAp8hqaoTWCWSI4a689o8Cw4sonrkkwtJ8yI0PMIPA3Fz821Xy66f34c1r1/eiIKoII3lDV /0SAj6y5amwTQZtCsECQ+iwkIXLrT38KdKyQQIQjExHQQihSkoX0/y0FOdCBtEYoBWmJcCY5MVy2 NsRCDT2uW0EBClBWpJQVoety6YKCDzYnldH50Ic84hCQpCUhvRBpdrJDYu0GMxncLeYuEHtYwxAG prs8rBkHsIzFKkaIz4TmBdhjEyt85jOW9UJ6dVoZ9GxRPUGVohGVSFMjCgG+LAoifOJ7hR4JlT5D 7AlS7kMGmI4jjWhIpzn0E8SooKa170BtU9QZzzmypip2FCADBDRgDCwJt7ElIT6y4g9FbhU3uFFE bhKBG0YOBKCMZEQkJShBBCZgAlrmoCVOSosuaSKTC9nEhY5zHAR2cJQYxlAGKnLBuFrEomZ2boc8 /KE0fagWJAiJLf9u8Ve+FoBLlQhMYAhYnTjTYqXJgCl3iXFMABRzgCk+xmG5cxiYAtCZLRLPTF9k BPhewLKeAcdndJIeoVohJ5OFTI+guV76YvGaQxWNFJQQjs/4mJo26pETQCMaHic1KeQIQhDOac5x pmO1rX3DkSaNZAAF8L8MFMA8mHQpJisptk1mQFYJdAhOxya3DU5AbvEJqrI+shBlWWRuPz1JRSqU A5i45JbTAhzgUpAWCNxEWzyBXFCEMjkVjWuGKlqKEXJohKewSytcAd0010qW0/2Sm0TUi01wORkl GZF1hDmYlHA3PIZFhmHzjCLE5ikICBjPM/T0TLZAs7zZdKIVkK3/HspUFgoNtIZOeLpTJV5WPp0d ahWOXQ0wQKuozvqzoZAYGiAfOoyZcXSkzcDGcT5KSE2NQzyP9EY7UFodaABwgDF16assCat9yKpt BwHqBh/iq+Z60CIMGklJ5Ma3iLRyJBrs20mo1ZLAgRABTQVhTKwaAmrRBC2Ly6rkmNA4byETrCpq Zg6fwsPNsfW+NpKXvHZgJRvsa0J+eUuUECCEcAYmnHj1HWXySjwrLawynXnB4TBTmSxK+HjGmFki RnHaSWRCA2WEbPRGbCfqEVSNcILsK1oBWtKmgoyPJW0uCgWb9IFmNqJhH82M1sUuztNS8gOTcmb7 0WtQ7chXE1U4/7SW5JYCkKVhs+Q8LHlcVkFkInJTiHoeeJD6zKc/FbFCDsT804oM6LnKWkEqL2iS fI0Qrih8ixTmzELUvSRbIXDcDvY8TBkGk1syjO+KaGCEy9VXrfhNdFt1mbq3AMbRvmMMYpLEFsAI 7EoOQ1hgJKMYwVmxiQwLnBSvGNiKiclMiQXjJFARNIl2eDcsNlllC4pZUcTJoHm67ClC4WpXR3Zk tkbfKnIhC1b37HwtG9pDM0yIY2CmED0epEeZTUgiCwJTuU0yS9uxjm1D7cnbztolocwPl4YtbLXS FTsgohCFWITMbiNzc8Hc0ytfWSQZKYFStQtVfjMLqrADXOIEzP8WFW7oJh/aiTJnOGgmsGisLIJC Wcdq3ywgWtFsTQtbhEShveCrLyxBgJAIzIBwKiac+VqYFCPWGKo+zDJhsowjCuG97gXKNGUkgWUl 8eufWVYDTJHBJSR74p9PL6CybmNkV2zR0TLUw7H+xM94Dmwa76LDZGT1LtSnUZy5dhgUpq0gsUgI Mc3vkeEoqToo6dtnsOMbIvgOAIPbUktKOQYHMcgDceWP/nTZuYAP/K82CDe6mQRJ04IqS2Cig1ua 93AutOoKJz95EsWQJ0dZUaFzWF+LoxXjoM+CEDc+JApJ6WCC01Jj+KISxJiz5fIMrBK0YYEtKc1p WDx1xXY/CM3/2PEzyFYm1oHD4p5ZtudHn56tlb9ZNhJU1pP4GZs8C73IHp/Fzy9ULq5+2qAFgxd+ 0vEhIDGzmasJM86m9gvoSdvYxjZ/R34yJqGhtd/2tu0B/C079K+qcxcAASKAABmwK72yLPixNr5S KxFQAg4SAdKVA7MkIBokEXYTEf2hXXkRBI0XQhwoBSgxQhViOxtXE1Z1E46TcC3UEyiyeekyVi3I eZ4Xeol2OtgEF0pSIVDyAk2gJC5XenQxGFQlPFBSGFG0YIGzTsITJuxnGWZyJlpEc+ATCePza54g J6zxa0whYsfnGrjwfCOjc9HTGr9wPuaTCT1XWb92fa8wWsM3/1HBkHNSuFkQNRuNgkeS8lrL0A1q l1v6Z1Is1Xbz94f891uVtH8udQRskx+XpB4KgYDoRh+1UmaBlwOmdGUUUUoeZBItkRI5IFUx0YkB Bl7P4hJUdTpokROU9zgK10yZYwToAk0XJ4OK1hZJAi0eBy1QsoNKAiQEMBdzgQCsY2C7pBbykhaP oUvmxIRiUgig8RmY4BmKgBvEMQOmEGIExRQ713OWpShi6E9V0CI/I2tHdzKz5gq+YD5uKH2QZT5F 92tDt3P+ZFlMkXO1UXxkRI08c2OgQY3FJgysRW13OAgkNQ7WAW4sZX/nUA7lQXfygEkK+VL1Bw6q smQClAFTNv+A6pEe9MA2W1YfWJCAgydKrpQgP1Vv/oYSQdCJKZmScHFLnWgtLYGKweQ4BvdnmPdw MlBWmCMDPdQVF9eTskhN37Rxf+NUkyFyFqOLhLEYi8ElXcIlzAFYzPBpqWeMUyQmEtaEHHMAOrYZ 4oMbOveN8dgiIMZzzGSGxwYc87gKcYJ8K6NZ1ViGI9OWWhiG1UOXb2mP8zh1VMdzZTkuHMYn/hQo veaPRXMFqxU+y4AczMCHaOdkcScCDQlucReIFkCZbGdJ9wBTr9IPr7IQePdADuRcFAF4pblBYGYR ++ZvtbSBCpADDnIB9vIW9oJCOoEWGoKCegYBQUFMNIA5rlj/aE9RVofmkzEYlKJzTd8ULd5FO/li MUqiTXzBaVqSixWzAMxgPDAHWIFlGcawPdAoHJnwJ5jgC2V0fJOlASmznur5ADASligAjnuZdR62 aqAlfYxyWdZHYuMoWSUWPWFZYtrYljwXlrSgjgllGjX2RkSjbEajmK0FbSI1DU9zNXG3bZdkkfaQ NebxZE+mDS11mV3DKlljSRyJd/ZRKwfxd6KUiYBnEb6ymimBAAXQN7b0IBFSIQImBegVeS+kcDJE At8yQ+hSpLCIaJ2HnNK0cdf0FiKAF7EDO0qiFj0SF4IhJXxBaUNoE0npe5ZhEzAHPJYRBJdxPIoV ns7GPZZg/4ZA942T5Z4rM2I+J5+s0KZCBzQcZmtxQpYno3wk9qeAip6UNSdCZ41tyaf+eX3qSIav dnPjJwvsk2FX0GzjkzPL9j55uIfhoSrDZXdMxnbkQR51xw4kKly3sh8o6kAqqqowem9I1VxKVWYo oQAKMAG1ym+eGASTR0+7moovJBSC1kw9tBVbgRXRpKQ/ZE0/0hf3MqOxs2BUmhZUZQMhJwLd9WiK MSXCUxjKqIz0xKvw04TQSHOO4Go8J2s/pzIpE6cnAyPrSqhuSpbfeD4rA1DRw57t+qfu6p4pM46B SqjymKhxuq63Zid3mXMH9U9c+KiRWgz/mD12eIfdsBwFyf9SIloA22GxGhpchlh/BZAe+MCRWrYf uEIfqlqjXVZKl9hTYHZ4fQNeH+R43VU4kvc4KhQULMSbj9M4LtA4koBMrNg5iHZWyLpWNhACKeAW qmNEnoh6gKEZVNkXIsAYsCM8hBMXhGNFzYBYEHM4WERhAWCmaKo9VAd0ssZMc/Ku/yonzDSv+Qpi JgMj1idZ7qqub7qu+EpialtQdYqN6bq215d8wOafKraNpqAIkKJsGXYMgBRIpAAoxXEAk5oMmOop nfI/hiQAESmqlVSZ/3OZBrQe6tEQodRlAoFuMJoDNeqiEtGy2gVC2+USgQMTMZkturpCUpBVH2KT ecZeEhb/pMr0m5eTOT5AX+zCr0BZtEKZAnMBJKW3pbpkMZpGAFO7JdZrewcTDY0BlYzxrV47TzBn R5TqPRrDMYvQCllYl4ALsG+bnvu6t/+Kt3WbnnIKuPC7tgS7jkcHbNm4loridaFRfkeDDI5SfuMr uQEsUuOLGdwAHVuDueFWf+UBUxbpHkkAAmLzEB/ZiAe4olYgArH6os+lkp5WwhBwLaqoLYqVijfh GYHGXu41LstElu6pQzZMrNEUi8qbI877FrxYi6uTFoBxGEmJGCbHlFuirQYzJQ3DfpUhYbxaCE3w PY3wdAoaCdh3qElHt+r5p2WEtl0Mp3XLnvPbvv8qsOt7/78q469n3KdohI1BN3S/AKldF7nFQbZ3 CG3j+6CzlQ3L2Gzvcym3lX9/WKL9xw7HhTb68A8qioC4ImZhM2YQIUGneXhPmnqyi8KTJ0za4gIr 5MmbDBRCKnyowCIybENyQiNP4SLpwhWtvMPvck3+Yi/ixKTEKL1JCU6LoTDZSkVMrGmjVmqecTEa lSZtEoVcKAMGeq9p+6fmeFnMPMZdjDLSrMYq47fre7dpK83NPM3TXMbR05/yagvguBuo4VA40zKI sLWIYMDD4FEeJQDVRmFDphxHQx2Wu211N0D98A8JFIkfmW7MpaKqSYkh4bogDLMB52klaDi4mbM7 sDgJx/8EJCIU7LVwkkDKX6XMLeIDLvJMQCe0xEq0sKwjzusWRXRpQ6gZmmFYV7VOFEK1XlIYVDRY pea9YbuM41coiSIJ5ftYd5qFYuzN79ue78qnzEzUYbzU4LzGgArHe+qf2AynYbyvTG3U33zV7em+ 0YPUWxgyunEokVrA6BfAYRdtQnYpvQVAUmMdAskcy8CH5BHB/Uwru0IQhQeSIZzXkkzCVQmmYOqr qWg4KoR5n0zKyjzD48K+QMsiTzGcw/p5JW0jQBIw/AK9XKpFWnsXC90wogZYm10ZzWBOYEKmg2Ux PWZzY0sbcqy+OufVV13UZUzGS63V4RyoiWqObWuOerv/1VmNr+tp1fy61WTc1ChGJ+ioYuochcSB YR/VznYEHY0JNdOtwIrUwNPdNAGESUEwU+a2Nu1mSkDFXIAHIDGaA08agJgsOAY3GTWbLVd1E7dr JpOXlS+wcKKMCiDmt2BsWcJpXz2pw5P9FSXoFvdilUT4peu0vdSLALX3DNkhAJMRDaSGRd35rRgO McSgJsI3A1dwM1IXCkzhimTJOcVbvNbc27GNt1ndzXKKxgEbdCOmtsKN1dV8t/z6vtWc40PNn+jJ howAbWYHUkIWldqrKZT5ucB1kNXBNEDWwNnmWwAUBFDmwb4yHwgEq4RXZq5bAEd4hCWYwtviLdli cL/6/95mIkNa9bNBOq9kyYqaJxWcl7wDDha5KRjYNIRdi+FMzDCGNEWNMVjqpIQ2HVhkShnEAyZo cjxVrFiNcGzIZpZi+ZbT867gPL/CneNcbduB+q5czOK/reM8PuqkXupGTerEXb9viUbnc36CpBxA NioeyuTPYJBNTlJO7tZ8+D8F0FLnZrKk2VytO4kB2Nlkmor2Dd9XJdjs5av3LaRC6i2L3dgyXmiG hhVZQRV1PhaoA1c+gtmUkS1W4st+FUWGdNP0RDyUkUUxFybLni2M/kVnssKq1rMY1WIwVqcg1q7D LeqlPuo4zuPe/KYDezKcoy7DPSfqsuL/3vBj3O+n/v/vnA6oetozEaoME3p7zpDkBKANBMAOQfCk Ti4OVgMdFu4cz/EMgcPPXoZuA1HJzXWaCtAf/4fe630Tg7Wdo30XuvoYXbtCWcmr9D3KJEDfP8Gz p3zKHQ1NVSHg254FquNfP3h6SYg6Lf2lmaat5U5qtGWmWqlYxmCmYatPYgtGsDGYjUq2bhiPSR3x Dv/2AL/jNi7xqA7x/g73Ou72pr7j3GzGBnsKEhDPUK4kGYAAoQJchk+j/kBAl+S5sx7lhfQc2CDh lxyAvB42C7Giv7KycVPzNWr5A5R6Nk2mx75Ctzvfk2dhOU15F52VEf0T42IUosxMxds5/Pr0YSEk I8f/pOSV7svO0iWYaZNRTg7DHMQTlctYYaLtxAxD3/GzQhZmR+LqwsnDPavW6sf2t9Ss6Tx+FXgP 9zYezQIf2wT/8ALf77Tt4uDf9+Rot3/6G3U4wItp4YZEvQF4kFQeNdKN8uQACCICAgGEAQeHiIOF QYUCIkFBIiIIkyIFBVZWVCUTVBOeJTkFCFajOTmmBaiRkQitkJEBAa2RCxAQs425s7O3uBAvL0xM wxAuTC4uMhoazM1QUA8P0lnW19jZ2tvc3d7dNh0ICAQp5gvoBOgQTcHAvOkC6IjovQsBTYgHLxIS LxD9hPELKKzfPn8FSfSToJBEQ4YOZTgkIaMKiSoW/ydiRAFx4kWLGzWgaKbhQUmT01KqXMlSZZYH L6fFXHnyJEqbKFnWbMmT5rSSQG/+7JmSpFGRSEc2U0qSKdCjGjAuXHig6qCrgwhcslAJU4EMXysJ wjrIgoUMFiwFMaRvFiFDjCYJkGRpUgEROUDp1TuqklhMOSahyhEkBaVaunAFgbB4MYQFsoDduxfg HbAXypQlUyZRhgwfzjRA8WHEB5RvqFOrRi2uAwEbr9HJXncPV5NZtwNMnoWoVy9ClAMIy3Ug4D6B B4IVfJGc38CFHBdOROHRIQrq2Kk7ZJjxogzqGzUazUm058uZ0ngGJUl+6ND1Rd9DFbpzPHyVNZuZ hP/KP6nI69cttZ9/RwUIYHRVJZjLW3NRgoAQR3h111iDiGBWWpNkQKFvbvHmyFyPTAiWV1bwpRcV VASGV4kTmDLYi31ZQpgtrejWCjqN+KKbZZcxcUxmz3imgWnUFBlNNKslqSRrCKQA2zm6tSMlLgLh otuVtek22T254dNbPsH4k5wEB5HpnEEDFcRQPw1N55ELHSnUEUgRfWRdFdh5hBGe47Xnk0wwYZPS TOX5WSh++8X33qLs6UQUe/D15wxGUfUp6VJJHRidmVW98FshIgghYQyYWFDAWWhBMgkCd921iFtX /XbVJZewOuFdturViV6A7eUrKKaIFVgkschSI2T/skAGTGU8ukCCs8wY4Yxn0fqQ0pFLZqstNua8 hsAFCMhmmUD+LHBbEwuoo5s6BKxbCD69NKdmnAxpJyd3eE5Hp3UkYEeSRPXma5129jpkEUQAVocv pVXo12hL2axkzaP6/anooYhajPFPRkFhlFPNgNRdm5qWjMIMAM6AssnXScDRdvz0hiwBBJhaAAwx wACCVwxMMOFal3hlySOPUFi0VjVLCNjSq1jRlRVN56XrBHlxAkpemdwVBAKovFJLLfUwxhhk61gG 7TIUefYstDJQE02R28atpA0XpPAauLOh045y/+htpZZYuhtcclXdJoxwCE2V5pqJP5s4mxq52W+/ /3lSN8PkHlWEL+aUUxcnCs+E3F81MLFEqKMVb6z66htDxSemzWzH+ESMq6zyyTNIkLumbLKMlEhy VnVDAAQ8cpYQaCmNa9CYWAJWDBFqOIiGaWmYwYjMZzJK80FkAnUmwEotNdUt+uzVKej7hdc4N/ry WABSMOvjMdSmTS210ryd3mly94/aBeCyW93SlQLZVKYgLvhHMJJzLsrsBl7wKk5yDsic5zAuYCGr CEYc4qwX3GkjG2zYRzaYp9xBjl8ZaZhFrtOwylUnKnuqQmcoIsPUZYw+NLEJTljHw9U57CgVoWEz noGCBFYpIAhJIEM6KJCJmJBM/dhdwg50wRkcYP94NxDAhQrAAC7qpYujwsSIYkBGMYqAANQTAVjW +BXvFSB8bczEK/CyCsDAiEXg44sdcVWJwHitEb9YjBR4xIQ6yQBa9huSEWRQjZicx3+Q1EYHCmi3 c6TDbwIZzj54wUC/deldh2BHciBwnAqqqU0eGckGO+IyO10EPKEJ2YH6Va/q2NIiFVGlyDAiEVku JYgS6RczntEw/iSqPjkJCsRKdx7TMXNQRGmmDw0WsmJa0yMIyeRAEgRF6QDIZd0kkwQZd53OpYxM V7hiFm22vQKAYAI4yxmpSCUhs4gReZOwgKhGRAqv8KpE36sLXiZhioHW8Y0TeCfVVEG1VRxGEl// w1Eu3lFIZCjjWWu7n5Dw98hIejQbs7GB3fL2i+FUiZS8AFxu0KUbJcyCOaMs0z+mMrly9qNgekJY TVkIQxjGkITakaEtabgn7BTzKB9hYWckMrLp/Od3xsTJDnkoqKqWDlATa+bpWuK6i8BQgzJEgVCz +Y8A3OAGV0yQWiVwBXFWxUNmNWtvinNTl10HZVa8gsqE1wi6JM0r88TZ9WKQAa2oUYymQt5dwGIX hJoCFJ+wxIQuIYlUBCYvUEsFCEqAhcxeTRWV2FqN+qoss7ngR8k4pEXrp9Ej8W9igfpo/0RqA3Q0 CTZha4cCkXMb2ziwCSG4TT2utI98/GObbIKc/3Ihl52LbAeFkxPdej4GVaEygyLN8AFIxMonkEVl JNSJime06yZ/may7fcLhVDH2jas+E6sYMwpIfFqp+h5MTL4R3hUToVa06ledZ0XE8PgrwbbqLndX 0OsT6TELC6VFCDFgABlxxkXCPi8G+ywAqcbosxJtNgbAapEmymdZFQVGFdtjkc9YhbW+5GCOiGkM siyzmWcVUiKcmda0qGWE0bxtGo2UbdxEyi5LToZKmZTAaaWEG3as9FwHuE1vzuQPhPQrX5fjyKam mCfJ7bS+TxmQgIYowzIb5TskYZjrftcwz+xJIys8kMqASqlL0ceG5slqxLQKqGduVT1iFh0zWv9o sDcrZK5tGbBvzspfLA6C0W8ZsCGGdwATpvPAC/HUWwVRvOuNCCwR0nAMQAADTByBAaHWcEL18k6E iphFpoB1EE5s2YOWKAaqwMQ4HEqKYbUiF4v5xbg2sxlnGTJtQ9JfkAMVWyEvKQUIgE2T1DXcJixH d8jJxZTYwSXmwCs3nQpIAi+KuaBW5LocnEhFNMCvPL3OUj80M57AA17R4YmEVz4qEPF07p/WVHYr dK69wXwUMauOG+5N+KMMlUygtBl4BOscCfQhQXX2ZniPvgpaBZBFjjui42R5dCKoQlfGkdJTH7KE rbKGCSuQEQT0vBom9KhiyL5axZrIuc5ZvrT/7Y2CjnaBxFz6qgtm7dYhwcgMRSIiXmf4gBmj6TGS TvNaZz/7NeVIVzqiFKaFVMEftoHXJXfj0iu1y0PuoDKmT2iva3u5ISwEDwnsCxVixnApdfbp3fuj b/lW6jv/1lTA3X3vSvU9mQx3pjSXufiLWSx2oeFlv9cdu3sZRB+KngXIz/roAUt6EW9511kD3JtD TIUqcY2LXaBWRjKOep4AHZ/5ZN8iy9Z+xDsnEayVpqrex2IutHDMRKmEC2NzRm1uBg1oPuPjaJim 6lbfFgALqI4FFLDJ+3DBDLRPghmYclmUOZeWbhAc5LxAy9M52SzLSTC5K2XQIZvcfGs4xEul/9kp KtyT/cn8lGrO/aiUAiCZIlYCuHehAxU+kICR0kN81kNQsXTVEUzOAicw5SmgByLTo0aCYAEVkgEh p2iEkEUiyHkiV3pqtV8dRxe2knO4NmoTQEYTsCu+4mrhM2LA8lh7gXstJzQsdgq9FwkgUnS9MHyE dFE3RkOdMSSfIRpSB33RtySw8SRjZy7sABByohBVEmX4MCXiB0G4QUGZQW7GVh2IlDZ1wi/ORSf7 El7z0X/714aBVnBptieU53f61nd/Z2bwd4BvuIDR9F6skzpLUTAnIyffdBBz9XEhl3FYoYGL+IEd h1agBBcCFi+gUisa5nIgAAK7pwksxzyXAP81mpAKIgAsImAFpzgBndVyq9I8dcE9lSUXleEbZIML xbBbRrQ2c7duT8cMpmEaWUB12OCET5garmF9WDcbe+NBIOEsKOAcJzVR52JcYHIcdKVuUWEde3hm 9TVoqTR33EhmR2VwkSKHgnhM6iUp41gf9gEpOFQUcghkCTiPoNEfAxKI7vGH17IReIU7T3R5HWJW azE91nMEhCUInqZGR3A9FVIWAuCBZMGBjahxH+gWQCgJLVcimVg+t9eRj4WKkxBiNxh7u2cXqOBQ A1UsNZJSWVIblkECxRCTaINIyzAankEN1sA/VEeMxdgNdvMk5YBbRicMIQQzmWRtU2IuXoL/C/Ii AaRkV74DXlJJaOAFjk3nhvHoMPHRfw13E+6oQ16plY0yXXFoH4m3KIWygMp0lhzzQ4hHMfxhTRgx A1WgDJYhM7pRNNdjBVhgai53PUcQmIC5kIDpaRkQmFgQmIKZkA0pF6AXC5CgITNHT2/0RlCzckKj PQx1gz6TF30ZkiAZNKpCF8UCfH1FIxRli8SQWsggA0zgmou0UdAABcxwHjzZk6rhJOayALglG8so DBzERFWiQMI1XCjFHJnmQeOGUfiGXWl2bqHRS/SHh21oluSYKF5pEnnXh4hnlmv5AKAxKFkAluSx Xj0UltiJTPn4nagjlkfRQuDlVt4WgkUj/1DWo5CGuZgJaZiHGZgWdpjOQzSxAhek+Yq6h4oZeRdQ c4oEJSEIqnOSFYoq+TWnGXxFxyOYoQxLZIb2IyThiSTMhJv9A221pXXikgvCoAzdIVbZxIXsUBm6 hQ/KoREzlHz/QhKg8TZDQo9jGUtuGZY/upZqGYeB5l0Vcx8SoxJvIyj5yBOO5KSw1RNSVZ5i6R7m KR8EB1WD2DLcBHId6Gmi1oJYAD0GiQUgsJiEaZhnoZj8mZByoYGCAAsChYnNo3MAZafeowkh2SIk kgqieAqT1QqmSXQcwiw8QiU1FkzUQhIeoz/BiJMiui24VX2+SSXKkKKZYRFVAlz4EFy30P8OYjcL KNV1p7cyCbMRBYheByhM9pedyISVUQWk9lilOjSlaHmPROExScpnW5Ue8VWlC7eVd/ZDvpSNJpQg GEcWdXGYFnAEzaqYZ6GBbXohD2k9hXkEViA9Q0N0jTAIdKE0AEUrgapyBbAWGKkhQTchtCAXawEZ Q0cLhTouSWdIGiUDRtBjPWYtQRapHkWiBDBtBUSFTeACFjGBHyQMLFVS7OApoFqFKAU5bQaA1Ll/ 6HgfYcaVF3tnGluOr6qV57lMsQVNHaUN4nk6f5ZwanmlWzldeDdvpxdFVUFyZtWBarSmZIoW/amf hXmY/CmYhJmtOZcBVpCmP9MLA0maCSr/inz6PSQidLbCKi0SdMQCFoIKGUWXI7wwEEg2r/XqGff6 fD92LTAhjPyqLZOEdeMwUuJyEZiqoSZFJdZWhf8wJYZaJfQaO9AZGsq3o7+YlbiaMQXnqhxzq+ol FIyishJTVVEKpUlqOtcQsh2VcA3IVQ/zqrL6H+dkYAdwaekUs251CDOrrGfBgReCKuianz3LpgZp mAWArWrkNELHCI/wrRjpoG4kIZIpCId1K61CKw4yCUGALBbqG1YCEFaGUaFTGgkYDSWxpCVbtpAE G+giG8ELqgugnLhAAimqZAgbXEg2t+/AUgcEdjNqbPMGf9y4btBZj1BxHccEKR4jGuuJ/zrlaaXl gbghOrLSRCgk62f+y6Tb0hKjQSSK4rHywTGDd3oJkmCbS1dvhUUP7KUQ2aY8q5g6q5CCeQlCm6Z1 MZAYSAsN0lgSIpo+47ukoBYRisLmCnxGi7Wi6nZC1AyloWy3Cb2RZAMlWg4EELy7eQvPmL3N+AJX IJwvYG3HtRzH9b1ItB1GSpbsCY9hdi0G/LFULBPZArmQi3Ba9YTUUKvG1JZxmBGWQ3JuRXH79S4c 53lYMcGetpCKObRDm5iG6XrX4zz3GTQLWiF1EcJzasK9K5rAG8iUALyEYK7wmiMccpzA6ZzntrxB hi02LGSyUVshsABScH214Tj8ACfilv9N7BACL4BJwnAFTWBc+7APbYXKT5SqARgg0vXKgVsx6ZFe G6NnhZJVzbYaQLYkVpzLq7Gv+otw6uExdzhvg4i5mEtFrcQQZTVBwvBW+wC6WESCVwGRapSzObuY pkvB11zHKtkg3voIrCJZ1pM1e0wJEDl0Q2csNEK8hqrEE6F8PZa/cBPJ0bcASDDJvKkOlRwMz4IZ CLR93CsQSqRNpWwbAzEDnNtWK4MndpV/SGHMkBca4OgnulrFVgzATApN+au4cdPRkQtJCudD2ql/ IXHMJ807JwR2nVIcMHUIL415jIiQ22yQbqyY0FOQGZwqdyx0KxxyBeo8QnPN5zy7IEL/oYg8LuTC DzQ6JKIxE/YsoiXKm+hQybcQACHAN0ytfZxMVmQlEMDVDv1gYEKMYC+wO7TjHfm3nT31cO6I0S6R y8z2Z08q0o/ry7CFy/3jXieLpTlUTSIBfxB4hlTkOQ+RJoh4ggmSCGZFacm6xtuckPpZs4z5kHAK UUYDr4VMFxgCp4xlIRApu+ZKoSmFCNmERB6UhkNEwFEdqThs1ZbsN5dxWphxEUpWl0utHFWoW/8g U5tbBXR5Oy4zbyr0yu/GnRhd13q2uH2dGiLbgHu2eMvtEjnJbKSzxRzNKPdoQ+dYICIxb8+VXGvi ORAxOy8LU4sNuuo9YMIzeldBug6J/yrdPCsMSbqErLuLKCuzUjSP4GlEI3ThPNq0wBhDGCYTYXxO pYCikR6tLaIhVVtSUDZJl6LKadtVkEnBEAJD/Bi3gLDBYGAqc9YHtlPcFRF753eTMquEy158zavP rXDb8L947eLwpbghCmQ+5jZxTTE34THLZx/UuX6aQku6A07g9ESy8xAKbMb6FVci19jUTBaGORYS 6ZAROZFkAUqPrcd77Fe6C+CnmSOAVODuoBnM6BGiQcAa0OC4GVywvQCVvDeWupwqitsvsAMZCgGg nMRxa8SjLBC2MxC5KDJzWGe89JzmaHCGa7IwflVQzb+AuKuR7md3nd1z/V6PGxPS8P8Mj6edPlVo hddUawJ33SWAB/KcTSU7ZHxBYkJX6G2Cja1OGheJZ6UEj2jl0xNytq5Ft/4qoAQq2jo0/G00CwAX OkLgw8YZzxJU2OWLJeEDORmMNczm20LV6DDVWC3nuuhcB25EF+69xAfKfk44CW0Rpipxc+dVdzex F7teUeykNw7dk2seMo7LIuvoNr7FHh0T8oulIlQp6vYQqPRc3kY4AXBCnbOlV2Ygy1XGa5Xei116 oxfrXhrlo+feZvGI6VwWtH7xXmo0k1afAiWgWPHrYl4ZwjccyKBubjaWJsHg007t/cObUw3ncj7h BH2pE/gCe761eh7WDpsPfi7izEX/OWM4VA4haH0Yj+VB4zUOX/g+siwe0nO93P0LZEWijiYeTLZE L8txyif3subEMguRO7kDzYngX2QiV9IcM1DOaFDucR5Pglc0PRlvmLlezdSKFSSYRR8yoH/P5W/6 wd4afL/GC81yUUfPdJ9hLdRAGkgi8x+Fw5RqQHpet0e/Lzr/D3s+nM+RQCBOl9zBfulXTE387m/5 jo7XuH22447++n3N+k/vPyONH24om0PU9WtyJjOFHGIvf+FxQpdjEJfnX/slPKALYCIY9yN46x1X 5c9PFtTspWns8aF7gaEXzo/4LvcAfC6Z+KwlJP/yDPWI45LvbDg8GxweXFgNDGPo/yxqeFpUktX0 fxm8HWXWVmVVhjmtBAgkJFVVGigaVSiEhYUajo8aD4+SkY6UkA+SmZubWZyfn54PoqOlpJmnoFmr nqyro66xsrO0r6CcUJG5l4+MiYIkEsLCBxAvwwfDwMCFgyQowcMSB9Q3NwLW2Nk3B9wHAdvZ2tbX 2OYC6OkCFurpGRYi8O3rRxnvIgL46iIZ6foCAdCJGEhQQBCCBAyiW2AwyIIgEB8uCAChIgQXLphk ZELCxTIZGkD6cAQFyiqTtVKqXMmy5coQC2IuaCKzCcUmFV94rCKoioxFHV3ofAEBp0VjL5KikJB0 2IwZwniigKYIEiRFi3xa1VSJV/8lq13D3spkKVIoVKZKqbrVCpYsty7jtnXbaROUTWANHZr6LFoy CSSoKVtGQgY0wsH8UjsgQIm2btrGnVN3bZu5cuXYuUP3zt46zwIFZDhC2h4/fvZSZ4gnenU+fAX1 wSZAEKLBALghUKzIpDeE3hplyODIrDAJRyJ9lDS5XK7z59BlLbAhM2YKmQEWHO0pCIVHYBiFWnRh LGfTYE+foZhRRcLUX4nAHsrKKG/Zrni9UuKlidP9/WOpNVYqdbUVXXSwwMWKWgSCAglPx01FlSDC AMNXhYQBJs004FRDTkCVASROZOiEWA46FqTYTj/lqKZaDDEUcISMVsRwhI2kWbH/Wmed5WhaQfn4 kw8BCTH0EEVIWvQCExW5IENhwhXm05TAgFTIAyXRdeCWXKYEU0w0TTdTUSHk5JEigmA01EUSQFBm mW66mZR5L0A1Awl2QiWVer4oIiFhhVh53IN5eQXWJVz9h1+Ac60VICddthJXgrWs9YotX2Wq11Sb birhYd09I8EMS10xAzUB/PVNQLiNSA5msM6Doqyi1dOjFVYUsFoMWGARgxUz1qirBS7e+OtqQKJz EDq0idCsCBBFi0BEFGnH22+/JeVReB1VKYMPPgj3rXLg3hXpudFRR11MBKSQAgHYVSTITz8RkmZP EghFVFJXJPVCEwcck0gVLzhz/y8i3T6zSC8PggSJw/YhahYmlpBl8cRcIepoJ7E8qiClLCkYqSkp qaUpofUR8iSoiFG4YTKLUXOFh6/WHM6K6WhGbGnzFFvjr0dY4avQWABbQAG/6pqaCCBQAcIEMP4I bTpBAIQbbg45dJRGGgUF5SPfOtKI2CONZBcqryjHILpssxQTdV9OJNNROt3rjHhqzllURTj9W1RT +2K0DITLUMWTvVi1/PBWEd9HccZhieWxJHdNXmBal7ok8rmQvgIFuCeHpIhh87Z8uF6EuzzMFcKs J8EVsM/cjc03y3riNf2EJhpqGcA4I69D94oFCMSD8KvwuOrKD66+K1/QQQhAO/+QQxLFJIW1R1nE UUa/bXTRUBo5CaW4wvlgRPlZot32+rNQd90CMF2XXXVmCo5VeP6Wp39OdJLg73ctg8bhemKvRTzp I8dxmJXyArFDTQJjGLtYfx5lFssxCnObY99bzoKlTNxFU1pJHTAAMwgIHQIRiFuGNKDyupm58FWz s1nPdLYi0/gDNaiB0c+G5zTjGc8KEyAesHI1kAKA4GdLG4hBCnI13EzEIlLYGpO4piauAQdKHbEi +bYog88ZYTnMKUkWUKJBtrkLAe8LgrvgNZHdJKUji8CKIgpGx335a07+GkS+wEMeAB7mjwpzhgiN M7Z6bYU/jJPgLexTwQpa8FH/lStQGVsiIFh8Lhegw0tIwKYBBGaIQtzJEDE2hIzZYQMcqBwRivph qyPQUGfxwIdqZlQAXA2veMX7lS6Ll7wMIM0KIPDVjHakRNsYKQBEcWL2xqMTCICndNt65r24qAEj oMUspJDUJNE1HXfJ5H3wStId/cWTGejrjroxyt5sQqe6iceZhIOQCSdEGETYUyuMtEQuxJLPfj7w kWNxpAcfpU1aqG9BBX0OpbRUSU0mKp9jYyQ09hiMY2goYERB1TdQBY52sINHxGJRO1BDLN7ZA1dB zFUBhgc1IGJhAkUrGjCxcDSh2ehoyjvI9BoSLYkcBSLV0k32mLCkZVIEOE26/8hFoDQS4WgAXFBd DiqYs80DdfN9KbgAAYLAxpggRSc7kVB7xvnVOzbBX8MAYMsUZpWsqOc4xinUJPLTyIztJ3KPk9zk BPoJgQpUFAbKXFU/llABZQokZAkJJUYCthM+lbGNGGAwFuONalSjiVbDTc5smJqd1eMfquHd0WKk K6Ed8WhYcBoVeAW1lRLveESzUY2SR5ACRO8hQcANUXjDvRCEgEm/6U1GMlIYjshAcE5iwnHF1Zst GsF8YQSjK8i4kgxWNQtfYmO7sNNGo9hRAocbp78wCjCz3rFlHiHhpzhlL7sBqp8Wk1heIUix0D2Q rxN0EFd2MSC0ZM66132LpP8gBYrKmYW/B3Ycwio6jcVMYxovaCIqNXtDFIUUaUn8h0BcIwKl4TRX uHptLVX6y1z5UlipOZovCTKQrW7VIdkJQBAgMGPrLUAKWgsqtrbGY98AR7jiem6QldMcz4EswC1Z AAHWtS6udnU3xUArniqalL5FWbxNYEoeS0cvExrmU2M7RE8M85N/chK//ukPPzNlKDNDLr4BCt0F SeYKOgd2fRnEoMf4C2fIWcU4JCBqk3arm2KsCpX7YIcsiSUEewwTWQLBYT58uaMMEK1GT5ttjOwx 4p8BSzW6sq0IolcbaMm4Ig/RTRudKLfdLFN/BfOecD0yHFqDRFwk0UDlGrT/NgBf1wY2aFe71IiA aRFgfm78KmCkMqdi4OTZSNENHuvWE0TUKyvvceyDBqFAxpVlkWr2813b+qBx29WCcv42QbVJMv8i uWQDpqB8H/qLUW5ovBBYFa3gQZuS8kNpsRkIh/99YhCPVpe4IiKnYzABE0sNAb6EeLG5Gq0Z72Y3 ZYqixiEghY2/mjfC/TFwjqtcLhrhuV+UbpFn4ettEinYxU5BEIodzgUcQDv7QgqVj4FOowTg2d4d Z5VKGNn3RPQq9QnJ0fE6sci9+c0Knve365pmsuzizFPvb53ffSABLSjOa+ZLNAYDSv8lJVUBQUfa 20GbSSNLiQoR+Gk6jJpa/yatl76sqdJwlWEWT+8gCSESUFtNkSgGAccVQfzhb8zxOPVY5CV3bjWJ fPKUg5GqszBJyzUI7CVLZH5PTBXfspc/OkZbf9oBk5J0DmhAI85PiBDrL8ocqKzc96lfYSx++PnQ ryTK3FmP76JuP9/8ZpOhbLMz5+Ltn0S2lRlRMo6GGoz2VoFo7fmABzwyHKTX0H01BehwaXGK0x31 spbKMw08YFM1rnb/NQepuIyzFhEIpJrG+JfbULlHnvAdF4vjIxxGEBLLMYBoxjGY924zESahB3pP RDfqlHNC1XPQxjd6Q22FIUCG0ClGpzCE8B5i4wuGoTJVAFWVwFgfdDG+p/9gU7eC9/VQAKJfmvJ0 liJY7bZ5AuZ1I4M5BEJfbeUTRvcIArQUpbQYTXQDHZV2zbJ+BMFpb/d2dOd3K3ZiyGIaTngaULgO SzQQFhA9pNZ+V3N4FrF4i/cQcPJxvAUcGzFrw8VF4lISA2hNWOIIaqNrHjRGXLcKS0YTL+YQW4UA AqAdxZA9P5dR5dE3VbY3zoZRL3BlGCgIEhWCYLMwVwFIg4JYuKdIduWCM2hmL+htvhdubbYoBMZu yZdQXFJJPUh8QugpG8he7cE6yEAM3VB96RAAgXdD/+ZS5Ics4TcQtLU8dadiO6JiqGErq2EBTgZ4 /UYkArBVAKEbrvYb8AP/RYk3RcB1EWr4f4Jza59DPk/1OdAlXQnSHFgiRgjFdeyyLtvVRl6Vb434 L00QAlGWPU2AEzH2c6PXN/lWHuexJ2giR6LSHfMxJWX2IITgTzCoKHf1AEvnQL8nin3Ve4eUHxfE a5ajEjy4fJZCQRVDkapDIVvGIUjIGNegWSdCUrrod1vIYlWIhen3SzhVG1u4LEHiLM8oEBV3G7kF VLmFbK1WEfWoVIJ2EciFEUTFLd7yLTJwPk7VVFpBCZi0a8rHNtr1LikwLTGBbNlxj9J4VnpjFEBX EYWITP0YMEwhDROCFZ20QNfWXkrnMA/pWAXJgg5kXwp5gOBWdXrJQQQG/1CdU11VmY6TUklgpGu6 MFchURh5EUcuc0cUUYtIKCsapoWyITVS2IRKk0S+dAT/5jtLoxBAlXasAhCmWTWn2URoSDePiEUH BI4hIS7lYj7JcUkD9UGKOYfmAljUhYeRUh1ddWw2sQBKsJX3eABemT9783Mxdo/aIZbMyU5RpmXn UW1KJzZCmEDQgBwJiZ0bKITdyYretk/w1ZcARYr+BZiPZCDtlk0C1jGoSEnp2SiNtBdLsV74SYSq EjMx0yrkkA6WwZKo6XdSyCOO1llLgyzN8oURIRPUw1VKdj1SADduAidT9FtvMkU7wAQ70KFq+KFO wlzL5YbCwQROKYDPZf8+JBBVl4SOsZCAv6lk25Ud71MeE6FO0IaIR3GPNKGPPjo3isgUV4YhhOII xyFPyxB7fREf9uRYTHoI4fadj6B73lko6gluTrcxaXGlbMFyl8KDGIRnlUSHIwGJlYifZUchMAMz 1JdKkjFSoUGgAvcalZZErZGM/OB9xWSaVxOIWyVhSTKNZPlqEpgUgqZWxsEtT+KGsSku89JeWkEu PqCbA4Ul8RkdCCATwmYdqfeOTCGUewOPc3JWqvZs2YGcN8pzFsVzGHIYYMFtS/qog9BJ3ZmQYeYI e+FPkICbzpdffbZXcKZuaLE5gNkoHFMpx8eel6pQxmoLWEKbt1YvzqD/IS5AQn0xQtTJFFejUSBy IlQTJOyQIvZALClCLN6Xd3O3fVXoGmqHmn2qdqS5UaqCTEnBiNoiZYhxQITUVg1UpXb5T1rapXcG HWDigDShBAcwA1cQAEoAMMiJnDjhiPs4nEAZYzOBG8WQKnekIWsVKtfaFyxjpraakJxyQo2gH4r5 ibz3qwEbZ2eBkcVaimEab4SZgyGDUNalPs2XKfDRF4CRq3uSGO4hDCw0DdaAKtyAhJpFYXDatHkK G273Du2AffOXHQ1KPdUBP9oBE3FSjY73JiAXXL2xocDhBExAAyKHts3VG2abEeRDAzQgA3H7XFDw LSdaeSencr7JCr3p/xxZSSTC9i6AaxM0cVb90i9NUa2l1zcugKpjQrGKKG3xyLH1dJBGGipi90c+ QUAfGJ6gmG4U2ZCiaJ6TY1B/aTl2+JfLel0AliAO0gsiaVHCYFGPWTBCS4tGeA0meUpMaxCQVmH+ IA+isRmdpYUlkhCZZXEUEWGGNo1DgZTdsxHD5X/i41ROmaJwOC7iWBJExr3nsxzkYpu3IF1j1Js4 GBdLFpwysS5nyD/H8BS7NaozETDpdKMh8HOEh7HZekfRNC/66rELViVSsUD2ATHnhp6JBSAuGIMR FFDq+XUdlGAdNMFbOrNbMpgbaVDM58AOCSGAUbQvUyH0pKoNplHfUP+SrNIqWqgZ3korlMmuVINZ AHFoaHdoGetGhKY/+jJoQlGtY/ezf0JPBuMMVFGywLCBH1gYZcNYumeRjpIu6atk7MJqBNCw9wg4 4JUIWvap/Jgde/MvXdmPSiJe/7NHHtGWhXPE1XZrp9OvVtpnENSQeDVvE6SXGEm6kVQXA4WzhHm+ 8Na6YaolfOzASjoVozKL0qA6RfhggoFR3MqnHeXCrOHC3tcOVdNEubWaaOhjP7aG0osRJBceyxV5 I3pcISqbuPYkcSu31ltNT3Vy1US3anMXu7a6ctEBQkBzbMSwTaAEDHtsP1de/aIwiusviHuc41St d0KEadnMiUEYbjz/JZ30DG6sH2o2V+pZV7zXdMInsM56ul0qs8oKn+95wbZ8swySZgjJExXSpiX5 DcQQAMiQKvy5UfnWp/qWWaIZfwPakxYrYxMBEfGAvAlxNdJIEb71W9jYGwotHG4bHKQMrU3pRVBw cigKhxX9RRoNRl9EZB1UvhiNh2LkonuLhwfVNm/jeTMRExlbHcuLVqtqEc5mfwGgL6TqiGR8DNKU r0kKH5uUayORgupMwY+kzQfMzeOmV/pVunTmdVU5mMtnzjgrs3t8nYJwdstrDJ8KAYBRr0RBi/RM z0g4mSmMhJesdgBhG6WJmrcRhsoyPW2kagetW4UmrwcgFGaXc0vC/0cJAx5g9R3/23rGESX6KhwG 6ca3pmvcqxyEUi4aIFhc0gEEIASSTSRSfBOtJpb8whTpRYH1qmyt0yYiXDiCgjA8YU9uHIqV6jEw 65d7uVdTurIfebqtzccBpnx+rMFOfTn+cdWfDagHLQzbqrEcxbRUq1lg+JNY09bKDaiY3NYXx5rj NLu2u6iDvagkCo4ggUlQFdSSAC6yrNi6MKmr3UFZkgskbdJWl467ySUMcAGSXZw4IZwPy6NF8Wwj eU5gHJlt1IhfVRFpWVHFESokaNhgcXTojWan0ApSNaw6m1gL7JEfZDaf8EHbm7q77c3w1jYik9vo DHZfsRRruionPP/DNTzi9GzD3Qd3IvKTNBaGyv2g2JMbVxPXqjaNwTEckBc+cbvKPc7KPx4uPf7j q9yUAqjYD3C3FX3RlofRFR1G59PkKCGH+wHSL7pyzgHf7bIuReGO7KSPzXYMc0Sd/hIm8OKVydCI aDl9z1xCVREflwAxnuswoAOwdtFIB3aDwHpuRQ3OpVhnl2Pb1cWsgMzaGy6YE2kI/tOPzv0NCgGP kmsMG5V2bK0QNC5j8/eTPUUtg0rTVmvQStXpOv3DZCfAtxaim5SiIQEuIGGA2DsSA7jYHJ1yY3SO Ur63lUPLX0oK3k2O0xUdF3ABNpAC6yIFoEcTxjCPzeRdY9Vz9x3/nT8XMNSAFBgSkkx6sowE4bjH qxFzkXQ1fDSIwK9dwRlcULhdzqzbIO45yFDdMQHVSedEltpR41z10oM2J33qri4GVAbBEAHR3LqR W1t56RSh3E+UTEdBEaXuP9aKQEZaewNot42a3d8ijnSr0cLx5OcN0ihBVaWQx+UdwXmcJQwOHTbQ AQhAHai2gH3zbCEwJyFwxST8L4+LHT0KMMeJlhYlQOqxHkFYnrF9KJqIblx6pey5pfDZnoIO2Yfe dbQNWF56zls3pjyRw6qm3NBtJubRp/9OAKSGD7mFDxhrEVgzeNWTerkh8LmhydEbosq1PWMWgA6T t5VX0eYT5Sna/93k4sqWFy7kbal6a1AjX+GIaYeRxCUXgACbGgAxX1YvEPMvzz/RRqpfLI9dyaPI iYuRubHQcCflJFaNc80VtE++WvpUXfRswdp6zvSSNOjkHvVS7/rjvHUX3HxVrz//jOkxlsl0U2jS 6PW29YVZ79xI8nlbOe89aX/jIThBQR57HU1PIj4d4ahSghw/vUm5cGtQdT60GYflQ7e13qIjLUYY zDFn4+B7HPu1EGzBNjfJKb8z0fik6l1bjY/PJsVFQiRN5JWhDQgoEhIzEigkVSgai4yNjA8aUI8a kA+WlVCXlZqWWZydl55Zo56fnKWlD6Kjqq2tq6SxrLK0pKqor/+5sLewtb62oqC9v8TFqZAaJC8v EM0QQQHR0swBC0FBzdEQLwEHEgcHAQIIIiJBAtfp59FBC9Hu1e/uC/Pv6e7OEC4kTMsB28skkBhI woVBJiRkaJDBkGFCEhqqSJTIaKIGIw2N+ICysSOUTJ4+cvQoMpJIWq0yuXpVqqTKLCBhGquFgMAC AjbdNYHQpOfOnyEghNjJM0BPntt2LmtCLwABpwuaGJUa9QCEAwEFDkp0yJHXSZssUTJFNlQnVLNm pop1i1cwYG6HqWU7K27auXiB5d0ry9UiZcyy/Qti7pqAAPcg1JNmNdwCEQgIlysQhICAw9CkNQvs 7F8+wfgU90P/6ELCC60ECcoYqMHHQhk+YrtuZESk7du1oazSLRNtLlW6zaq1C1cu7702cNr0iZTo sudNhha10ZRe1KQ8mSrHKQCnVKMvwAWcUWXQQBlVZKCQeEiRV2SVKE2ihAtUKLl7dbV9G5flW/wz rVSLf3z5QmCBfGmyyGrKfFZNZv9wBgETTGzDxD/fXIUYAeoQhg4012jjWTYQSGMiYtdYo+KIAYQQ ADPU5LPMPgPts9qNCTGEkQxGYATFjg1l1GNuP9YGm3yLSPJAJhyNtNFttr3SZEdLimTJSFD2hldN OCmhnU6nPTfUUAsghdQgLyiVZjU73UQPTkbFCd4gdJLQnp0R/yHylXuNKBjWlWUBSFwxBxLDC3H7 7SKXXYMi6OijeCm4mgskskNYiOyUiY0zzFglDQLklBNEZE99iBinV20jwTYAVfqiM2UGRQ8EpgG0 zEAvELRga5JopKRYl4wlLCS8ASpTcC8ByihwwOn2kTEsAQdpLDgl95RPPb1wxVIwPudtQMw0ERhT 1Sjn1HZxHrCTN7cKYmdqiKiWCFcauAfsIvCNVZZZZwE4LV3/DdhXpIr+a/DBqSBZUD7uQAjiM1K0 A6Fm9gSRQjqQibDAhxCW6PGJDJvYjnVlsroZMwYdZFBqCimkkWyuKdTaIrNdZBKUzzLJSUwyfXKs LTrn3C/Csv8soIQSUf2UqrjaZhcCdEorBZBpTBnt5nY2TXVVeFfRaZ4ENC6UDLzwVlTFfJJEgoxK ZwkT7YCNEux2svz5i9JaROdtsH0PMEhCZyaG9sysJG7tj6UpcviUiSW+g1h1JWYGD8nzEB5CUBNO SOHmFJqW60MuBCl6Qz74+iTOOG90Cm9M2iZLcEv6oInOdj9qA3XLLfVTti88/TRnVJWZ5nMSlPcl 1jg1ZZWqpqEpkCLpTXQ2exHVa+8m+gYL7H10cR/3wQIeeleB3+tt/nClJEOpYO2IU1iKEYOImDYf g3hNxvL/IyI8/1D6XEExisYymFCyz8yIZX47D2w04qvWsW3/Lf5Z0vkmaAyj+WQZPEmTmnTXHJIt RycZXNObuMSlrLnDKt86jQvI8647VQERdzrERNBjkbPJrDWz8ZMm6qYXA+WnLsFYiStqJ7DyUfCI KAmW39AUnnB8xhkV8gyMatW4/J1IcoGbn/7ox7hmUK4eHuPUAPXhAoQwoYyhG53oMHK6J3kkdhwh EkhKp4HeSIt1zxqFs3YTl+MQLQXJIVwTxPOcK7hgRtG5DrmiwqZmiKtWUiFACW1iQm2AaxAoyOQh 7KTJ9WSyIl2xSJ8gkcNPZG+HRgwQEBP0r6GZL5Xn249YVhMYdjglMymChmIc9yLOWOcaNbElyJ6I Khg9cQGY/5MC4T6jQIa8BjZQkMFHSmc6N36EEmyjm36QSMEO2CSQvLvCFSSwLfI8Bylpsk4jeXKT o/RkO5PM2rpO07xECGQGMCyeJu0kkYHwiSLV+4p8UOm2tAzxbrAUGEKnJUsiclNvQxRLvQbyjWjY BB3V0FQzMtOZgDTIiyFyjAAmV6JufRRsnKFYU7yomM8EpSAw3YeNGrIQH7TsmSYhyUnw4seHQup2 SrBB1cQlrivMIE3bWgbmiOqmnkyFHsmJRiS3U5kuCQ5cLyiPQMpTHnzOIJMkEMi7EDE9eKEHPQk5 GyPY5kpbbNOtbZWbQh/1Vp8e0S2/AWWGKOaZAsLDVqgJK/9o2jHS6gjQc6ehaKtaVI+/nqgaLM1c hTiXMhfQIEc+cEF6aJAetflqLE1yVkLt+iioNoE6F4yOUoVyOaGoiXdMSee1mHYASkqSACkgQBOW gxWshEmsMNQkV8BKkH7qSU8CdcSfUFmXUwAMUozaWw9Jy02+IYMRmTRNua5xsQXETwq8jFBBtEJF ppgjHo7thnlSs8kGcbEZKAzMObchU7LdqAqxoRmS8CVRlZiEuj4dCraylZ2fnBODWNlJnOjh1DIx zam2LSG5nEMIxOZKuO8yRFgTO9b2yJBPAe3TKds2vvHFtZUOJRiAKXgofgWrPYilHwSUqQ8M2rh4 pnnhUbn/ARVptA+D3dgMcAXbuBc9lmKwysdB9HFGG6WHIZ21qTNv6szT9eYjzVrxwVDL4OhcYcA9 +TLUmpOdrf1EXU49XjuUEACkgSmrMhzyJjuppxciYjUAhYQzd+VcLf8ign4ONPqOcQu2RkQQq2rC ZdYBossIABzhEI/XBoEVW1pjHVt0xpAnVSH5lqhMETIZFJuxOYOIjgYdURuWq/Qj1+mRZ4LOm1B7 Mus0ZSeFrGIK01RICG9VzSgLuMHkIskUpE2DEF8tTVjDquE42wmtFInXet71QlE+Yl/CGS1DB7bK WHsbr6wQVr10fDgU+RhT+fAM2NCUDYcdeWpDpqJnzN2Z/ycyox+kTkjoUiO2mrmGlEm65pXy2FNv Qyo6p8XW5YLygkM2PGVPk4qvoSNCnxjlKfzzCRiXQR53xQuGnHwePxdi3Gl/dT3SUwSIB4rt+2j7 h90L2MsNjkQhWm/HkdPlM9rROFgVUEbsS0emu5FY4jXcHyErIP2YUSMqfg4hD4FIWiuSvWENXI80 P1jSCJzaA3zZ69pKagjXRFSjFHgqPdHJVLxkFDTDG8fVZg9Zp00QFDBozlN+zb//ZGIgJuq5dk3o ibOO4rYsSXv1KkQ0LiMNxh9mpOLYWDQizY1w+Jhj8yPmZirLRAmN6JBNPgjnKDShhjiBRzTgUemm maWTwP+a8JCKypgQbuCkcoviGsyoVARcFDOjvURIu4GCzT7I08Rdn3CXtmnIFly1Ru89rhSfMFJ8 1xL7cOawlxv2FlEIgRRZAObgmAhMqE4kW/5+5+VoPDR/MlEn2YATWlkZSc0EHsGGdFNiPUgKnv1/ oXb2sSIU2/A7AmgrRaFrZSYVFzROXKMuWzdIbUc8JEAehkAviTCBY1VcnLQe1qNynuSB17YvfndQ KzZa2Nd/w4F4i7BJh/Rp6EUyKTArGbUAMSiDORcZGAMhh9ENAoQV2xAhQ9dSI8IqMGIQgUEhCbFf IYhtWoKCjsIc2qJa6BQew7Nry6Au0uFORKGAccIUhTX/FTfQhfCFFcUTci/USe1VdwTxPDJEQ2cV EWo1Yi1XUE5Yh9UXEsDCFQPROBKQefM2bxPzWBtTGeYAKoFYb5/hGOsHK5vCTGf0iEiYRlM2ZR3h EaIQHKzAf3Y4E9QxFEn1E2hHVL6lLZ5DfFlBile4FL5FhuK0LWSIQkY1gWi4cnBIdV9xUwLlPW1j H0E0eJv4iwfDEVSXHn8jDQRQADiIKSKDIiECIU1BiIZ4aY3lgqBGMk9EY6yyMvxgEDUVTc7kElai icD4KBcUhdEBdN3yLb61hUe3DF92Qd8ADrRyBas4SKqyLeS0gZk0XJ9ENvvUT9JDEShHEdgmhyc4 jggJ/y2cIB9+4xjQYB2LpT+gcWQLUBMp0B0poj+VQw8uQg+6JEW1JGoGwSoI4RA3giOiwyv9skMJ mRcP6I4GmELignNKsYpLYTiUxjTN00S1QoYTyFUdN4uf1AjSQ1YUcUNpIxE3RBbHMF0t+ZTgY2h/ IVjoJXRF9lhF1jgNExmRkQKQcQ4ckksrUjlD+ET+UxAUYiOvMTPe2DIKUSW6AJV8oVvYIk705C2D YHthAjVUKGbhQitMhEkUVRrlIVzT1kn18h5goS+MEBu/8momUShyOZkTdAkqkQmUIAgzEA43AH5H gBnqhw9BNm8qcmmSBBkEkDEc0hQPIjg/pzmPWEZIeP8eONSYkQkTDoRH4kiZvuCJRbWXDjcjGESE ufZpP4EPUnOXWbEVxtdCF3hyi8AVFJEI0Vk9cRidb7h3kyAJAsdW+HGQvBmex5An2sU/ltQqKcRL IwVMNVEZ1pA1VblM+VAhMtIPKEMjqSFTCuEaGqEj/PkkhxcTO7WbT1kTPjEU6WgyNhYmRzGF2yIu vuU89LQe+jQv+ziLcQgf96JDLDeHsiQWL/Fn4jmiefEAG/EXL0QNhIEAQtCe0gBqJMJjFQNMl/Ke mNJY1fgZj/gCUJcjqqY6+MJflikcJIoXA4Zm4zQD2yJOXoekkARmPaEuEfKXHjUDyuYuF6qGnTSd BPn/FQpiMy9TEg10Og80fX5HfUUqnsGyghR1AJ1pGFL0h60COFs5KpLTPjg6g68ZfzIgm6HzMn1q BDW1QEUyJEPianvUhGmaBclBVN/icIilFBZWFLrjgyn0PwMRlPvkYWe4pco1Ysp1XQbJiyS4UJK5 qIt6TWi1hstQo5qBdGIEZDOaE+iAcTP4D2AkOIeUIzAlO2KhOiBqolh2HHtEoKh6O50IcQ+3A5W1 A0GxPnvaUd+yFc5zhuzRHtGpSdkKUMklYkJadT4jRG41MHSIquaKm9zJEEZIKR5piGUJXoclIi4o DqBiQtT4aaAmRfQFAQSxD16Rodc1pCBBSr64qAP2/xyFoC0zoKRi1orYkh1tNkhp10uX6lH+uE8j N5To4aXLJVEt1wvlEz4Bc65quqZp+A3fAH4i8Ghh9Ayhlm5VtDEc8qIfA0Yjwhk8Con8MDpGcAlP UhtEgptAexukYKyTuRzYUkgrpFnuqC1UGELYoi5SipdhVR78NBHuwa1wOD3zITYys5Cm0FyGRyBx yW0ke7Ymu2zM1g0HoLIZsGjp9iqhZkyOMzLx0CYfw35kVBBuWVP5BZ5nSzLPCgE7ULguwKwpw1k7 0DvD6XOQ5THzBC4YKENGGZDSU53XGaQc27HbE7bierag+wuYuZZTuWTPkAIx2Esfc1jecpU3sX6Y I/8hsisjK5MM92WLIyZwfMMKBRueAsY0ODcj+yA9N2lrZTdgMsIM5tFe1ilQohQ9b2lKjOmh4QoX gBu6clkR8BKP4OA+haE/HzmlWKWVeJpRydtwppEyk9UMvIqSS+lKiYq9taBBYWaXxIMmO5Z2u4a8 XIeenwNDNUSURBmHNkQzNXNtAzW9YMsvdXO98puQEjU2ykYI9FhRK5uaGIVk6TicL/pFMHpARghF ZUQCNgVTJknCf8s6P4ObD0wKYNY0ZLQynFUFQrEA8qVgBqYuSHdgpSFWcKgQmVudjZA2BryY+YI9 8aE9gdIodXWqLQyMm5BAJAAOe2WM3HFpHWMr/7D/PC+6Pz+njUtGn/PHozM1vATJPbzrcvL7kuJC RjNSVsrQgltow7szp5bKYSPHtVS3sYzwtX7CX0GKxIEsbnP4H+KqH078xHW4pjETVgtLJ5bXHZZB FYdIhj3pOCXTIi1FX9pYEJUlU5rzEPclMwpRcCwJE1cCulGxpEtaVA5HI+vGNe5EfGK0PN4CL9V2 Z511Xc6XuaIagprruQtpxDoUQdSryC0pFptUBY8MaRXFIQLQmdEchjuoXhuWURIpSC+CKw1Xd2AT OrLJp2fEEKhzGw4MlXXptMtQBcMjU8TjAlewDaNIccsToWRzuaO0pp+6fadkdafMu4TGuaNqCpEg /6REes7I/EqktBpacYVsewOdSQAWYAGWIc3REIa9dZUjUiY2eEAtBFY35KcNUX/S5HpZktBZUIUH Sx6HtDLG6zlWaLzUcLO3wl4ZuLHxMRBRprl9HKr+3MBpTFDUW3WSsHdpE0RAjdIGJxbR08PcCw6K ZhlKoLKOdhiRxjgqVcPOIXVj9UKm1qdNNs59Ss49Us5YpsgDtgM98TtvHMcbVhpGx0E+eDKfo1b7 2Lz9bNCfwFaFPKS7eArUy7naSSwFnSRh65RKTVpVogEpM9NheANuKgAUPdEWcBkrW81x64KAQ19J iIv91hpqZH8+4gtGe66604pVcAXsvK4OhwjkFP/XvJN7r+pRaZgaR7lJESEzRPxvHWpKzBXUywJX ge3XZMGdp2TIie1nSyI2L/TUkCbNVY2VkUaNL8u+Ou1M8WJDoiOJoSMJOhIL8ZvQL/JlQ7G0tqZZ C6Mq3sKAvCOl/6AmBwDXxudhW+sI2cSWoMXXA6ss3UYoSfQbCqIzqCQsRS0bS+i535ncRNNilnA2 zNa9kNYNnSkCJ7JoR6YZHiM8TtZZL3QkCxLaC+QrP+NH4Y3YeVPa5wO12+ICR1GULQgjOklOpkGP UYoVrkiFheCp+AKwp/QrxP3fZWviIircZcHX2LTchzfcaKrgDCVRm2QalhcAYegU4FfV6PAhj0f/ kRzdDGq5K9nDEQwRG4Ja0ie2U4oMtdzyNEqJK8VpYOFBTgM2FWinsF+ltmfoT3F4Q/uZX9fE13uN KEs+rm4zhwJedYC8XCPL5DWnzBR1zZxp5Vd+DqYyMR5pjfqgQBBhCY5ZOqRDUxlROmSaM8icUWMS Lg1XbX2aoui73i+gpN/ApDJulzL+SSg3lI7gxx8Lbmh8N+SjfTsz3IAd6Iouorx4DM1NDcEm5Zcn DpG+eFnuKY4Tq/j5ZF9uH1hSaD1V4vKLWr6m5ikTUzKpQU3kihKbZjZOCBd6nVzbFUUcFnrNlHlj REEe0Eqs5H2GzOApRCR2XRQF5SZS1ZLOaNCA/xkmYsut29I08rXRtBBjen90lBuxIEe7qe2UWYME liv9BMoj6QxRU5c0LrVoFk4VOHcD2cs+jU3H3ZQIDVHAjuCLIr8vZ10+A1fRiSvqIuk+JgIZsLKS 7ngnEg7rcr4JP4lSZn969ySKGrRqUXAonn1PwAAEgKwcmVWVJcbGZOPhMUheN0gMGCbnXk8k77zf msDhOvOGEmjCfMw/tPLflh/Ajrm48syNJxnlwPOPdxlU8aK/9rjbcB4zpTqrlgo8cxwPMLR5ZAy2 AfFQaQIM4E05sRMG8UI+oAz9IMe1h1RoJh7qwt5efytmDFZDeYHTCRace+9CrtzkWr2qn4K7jv+9 Y1sWY0FowrIagtC9jVf3qVkOllENO7iD+SoiNiZTKzOJYW7cAxtHIlHWZl4LxCq0y4+QRBABT9AD F9CJrfXJ87cDjvSbw9O0xgQu5NF9qu1V0xPEJ3qiGtry1qXcAlJzbAHgMB/gt+5cCmJTKLCwNN4E N0AASgAIBBYWCAgiIgKJAYuMiwuLEJGSEC8kLjKXPlAyPhqcmg+holmkWQ9QUKWqpamkqKinm0ZQ p6Crt7i5uqupr727wKQ9Fx3EKQvIIS8uzCRVli4vLxBN0k3U2NcB19fS0hISM+ISzzMkKFXpKBrp VTIa8JwaUPD1sA8aoqMPwf3+/wAD5uKHi2D/QVIGBSpcyDAYP3306OXDN1GfPngoMs6Q0KSjACWC Dh0SEIRko0YQAjyaNMkFBCYkSMiQIdNIp3nwIoby5cvVQFEzOdGzKaNnQ2C/UGVpdTSLiWIXTCBI kYLAgmovrqQbR85bt2USXoSd5i2shCsSUMyoMiOj23MZ67HL6cliqHmn8oYy1bSv37+lHgIeTJjh Q1G0aMmteJGiBo1XDnS8kYikCAKISgZZJCDA5kgBJE2jRAmmC5kzLc3UYOSu4sSxNCll6tMUFB8z fejGHVQ3z8JKlwqnfTSCiWFTkUXawYxZFR9VmlchS8mbdetjv4ET5xacuirwwGvo9G78Yor4/+zu tcu3sHv3Cd/Ln39Lb+J6ne6ZulsvYxUJB1CjkmVBjKRZAJ1tFppoo01SiSUkeCKTJxSShxNPr+iC ihFBycDhTLMUJZtRgAVX219EmGACMcqFEAIlzc1UxQ4Q7JDdiwtEU9110hyAVlnmSHDOOVWgI9c7 5cFzlyj5NMleQoIFRt+UVFZpJUCImRePbqMgxCQ+GZEQ1gGclSRSSYsUmOaCAVIXiTSWLINaauXJ 88lteGaYiyybMNFhUb7sRNxfgw5m3IrHHPMijXI6E2eci0KwwIuSSBCNpeDENMOPV7iwFlzoGJlO hHJ9OVEq/LTSi4lXturqq/TFt0qWj7kVl/+TFTWpjpDTIBhEgSIAq1mwKKXE4zRhRRITTRN+guQ7 ebImm0HBQREhbqjh1kl+82jYEImrAqZiD8fYoNwy0TQHjQvRvehiCMjEu2ATL0qzowtChgMXkWGC 50495YknnkXwtIcQLXxBKSusDDfs8D+xUEQTszJU4RjBFMkU0wsqiXQImmiqxCZpk2QXiZCWwDTx yu4E5ckrp7CyFBQcfihiYhuOKLMrhQaD4Wwn+kUEBYdekIK51TTXDLvpuLDDC5SG4BJZ9sIITUyO quNWrQIz5qRdjKWnz6wElf3w2Wg7vPB+ofA2ExOn5XaTkkpKBE+caZL06696e4ZmSpBAkp3/WKet qzGduOE3z8+bBOVnUB8aITmInswyG1M9a2j5b+9BZfSky72w1X/TSRMNvMiYC6+55sbruqSUwohy 1s5UTGGp6rG9k2xB07Z22sAH7+pF4aEQ0zr1qMefhGKWaVLImwkAwQEvUO/mNdTPflq6y87Z8oQw 42mTzUgaIe1tuwmFcE+ZIyXccPOZoINxRlN1VQhNMB0NuvRC7SLoLGFJunS0DNNh7Rn+SlI+6KG8 +gjvgRCMYGDk8oxvtGUdDFwSwUZlPc/4TQCZCRmZFtSg0IjFeI/i3ifM8yfc3IZ8HWIGtB6QuD91 a1VAa58qjEADD9GMc+85zgV6gIDWuYgJ/3CbiQuc0BwmUANe7gLgAiYxRZJFggnoKtx3/KU483zp SbpLmJf2sRcJmvGMhGESPWLyDAUqpkmL0VhYTlKZkAWATNPzBmhEQzI9JvFfzKtdbsiHRBk8rmaM 48QsYoE5gGyIfVTqwTA60DpkVCI6zkCgjmrUhAXYoJI4miLqAOiuSCijUWx0h0yqQI/ddIJJ+ZBS 7hyIRizVUoK/IxvANHA8uCgvjqNqXppKorfOMCJAB5CAgwKUEkmJZmndo8n2UvYnPxUSRD4Yn6pe iKRszmJmrPIZhuAnnxQN8QkMsIFVOrIjBJZOdC7AHwSY4URJWOJN03QGu5jWtfQkT3kQuf+lQAfq l1ySjT9FshVA4SgXMdkLQXU0JmXuSJqV2KuTVVTWnGQkTRfADYkgDelLXvK4DmnCfCb14c/etwvG hbNzR3tdCGj0NHW5gxnypBf+VkeASrruGPGi1FekYavHiOc8GUwYwg5C0KY6VZZi9AfNdPOOL65n d8+6Z0pW4rfALYJjoVHmmwr4pjjNE2tYK1xMtudREoS0Q3SrCDj1BDRHNuwJT7jABRigV6BOalKV qBhNsDiNp9GLEpQyIWnsZbp54us/mdzaYjzhDovQElYGfapmsbQPLHVoQrebiO7wQR5m7S8Sm/lV V0/SqzdZyoDSwGJa0bouZljRaoKVCyz/aKEbm7zim47U08ysBIUOIIAACNjrMTCKlU6h9XR6hB1G F+SgTY4VgeRAB5HEoxvcCSazVNoJYsC72fIGRmydldJAbuMJGYEHvXaRiCpjAhpGkEQRXl2QCcUC JxIs46xYk9NpxjqWfInpeOsAjwLlsjnhtpSblnufDgmTAs8palLv2mdtq2NK2L0OowGEQL0oYRZn oEPBitvWKxmzH4QkLLNlXMhVw2jeGveDvPU5Ba5AEbbDLM8TY6nvMB+hIJFJok39TaucpqFW/yqN NLNdpYU0kU1v+pZnEMOTJobzUvlAYRjI0UEKLvBJT4KORiHF12kLOBrTWQdCKXzQM9hx/1QFvxKM BlmPKvKs3r+QsYE2DvRBogSM3em4u62880NwdbfTBLlXjggcMiBhRe1kqjkNCqATN01SGa4MRH/y UIMdnAvz2WREOawSFBaghOkuIAhXgcAVXlANtGAKHPtTRmInLalksIRS3sDXkO5WsbnpFr5jMxh5 cVwQsOGFFskWtGbN1uIujZHP65nIZJPX4/Q8IyZjuWNoTkImYyq2mdpZK8qqtlgIrNXNgWWekbZN kXHS8iHZHE+eWErcTyKXAPY7Gr06qQwbKe21wWZGm6fGEtMxA2XPQIHt6EKXDEpEvGOLsXwac6Tz WFvagf6unq/654zNZWDdZlIwwYFME/+O+yTFsp5YLp1WSj/zTfikLWpQvBp9k5rftUDFnVDdZfp8 0gaUtAFVjoajFymNBk6wjm2jS11nWr2A+RK2sJ2BH2gTr+t5gVnZSD5ahfDHn+mQgXZj8k9mgxx4 E+bZD1GlY68zlFt0J7mpeIkCcChz3NVhBK8Bd+5viAll1uVjgwgLTY8aMtSSkxy062OiUyjyhlsG pyqSwm/AdIQAoF8AwJWAjI40l10zSJeAJxEAZaQkBKHJ6I4iBNkhYa08Vv2xTixL6ME4hoLGM17a B/bxt9/yu2IEKK3gSJGj0rvb/dFI9UKTzK9KAxIlNJbhv70xxmYaNFUTy4ERmKR3KHr/qZuP2VBa qDOfhMt9ffm8EEzP6quYntYu0Mro2Khw1U8jamPVThuRULbifKXCUBjXWdGmCxp3Y79HZ29hK/4h Wm5nfGozWofxYhxHcRQUIevwgc/3dRoRDgByANRjfSZYdX00cwfUfdbRciSUHbPDRvFwVGr0EIzj Nr4RKATRSKxQKLQRd7pAA02ABJ/kIqD0RFDDHJjUDk2DSS4xVDj3DfzldxF4DhXzLwr0gOoBbV7X QBnXgAfVfASoFtzRFtkFgkqiZxZ4RhOWJQxkN/FQPNx2MaeSKxRhK7xSHWJFNSNDNarXZNpxfaHh Im8CN5iGRJfgIbgxavrhYlyGCb3R/2Odh2VCuBBQkA6m10lVsU72hz/L4IT+4igQcizgsFjfMGto ESZukQ67xFB0syS5gocZ92JRxYB5wUvHQw4bkRViMWsXdCss1oa1BCUYyB/QxlACk0kUNBdt92Pd kRHgwF/VQzXthmQF1AxxQoXTwwh8pGZh0Qw9pxigMF62wUgbgji74XXot0OX8wsK0T6ZmA5XQC9K MGag1xFXoYpOKCpX0zSKx1/UgBVZEQ4bkRYoE3zvAEgoFlfPCBG8l2zxgXzfVTygggJXkJEZaZAX 5F3pdYsDYTDE+B7IJ0tgo0GwyA4ohDwQKIx4GH1uMYgBUD0pIXNVE4jsMlszFxbVgP8V+fKTVoga uOOFPuaFQocJNPBseCFeOZQY8AOPmweVvCBhdfUKPkADOxACNkBEUwFwMaU0p7GMzKgRYfltCKQx 7FIxq5SFB+iQXbSGsph7yjdye2YXZnkW1SMZtBZrQ5UWwreAexaSI/kqYceUYZdBDxgefHdikrVL K1YkFxkm00iFPTI9YpI9flcWvKJH1jE9lMBMZaWNSLI4s1ELI5JvoeYnNcMajMNvOMRl7egtQXML PEEDTJCVV+E6KqE0WMMOqeFObLE0bdZHMAJgzvEcz8F1NigRC4Yr6MF8poJscxkeRcIOm5KRmzKQ 2FGA78WG6pWBgoIYsDCYaCMozBn/HgspgfPmm0upmCpJgOBWYGORTMmSTPyVPTZZhX43ONOoc/Cg CaQZhMNRd+PRiLOgTavCSHtCTk4Jiba0JzSECUzQBOrUAT1VRbblbqRCHu1wYsEUlrTTRrTVDs/X YwfoTyiqbbIYV7lDMC35H9RTj6ZHADOJPTvJdmFzXsdYmIBJnht3iwmYjK1EWa7ohHTmiqsREXNY K9qVKcpkePvZI9eHRzOZPdRReHn0ZmwnlN20CfeQGIDCXqFWE76lfpzHC+8YKJcYENkkA1hJoQTQ AVRhLmdVOAsGHqFyYpn0DDkZcRFnOwYIl3unY9zmnM4JXyqaqBiDEf5lDfRHAPrI/1wyFzcPuaNj N0s+Ojx5sR92txhdE6h1Q1o1CIHg1n3VQQIyh5nNhExiQQkzSX2uOog/uSzo6QlUpS2oUGW71VFx A2qb85Sp8pRzFT6DoSo01AlGkHpQg1GGCGe146l6Cmduxj1sVQnswktn6YruuZSJmaLPiV6Mdh7M x23oAA5oIaM3UA2SsQ02egUzYDujOZektY4Faqt5Ej4VmKkM6EAK2BiJWYdydanaxkt+51CtxTHG kkfzuZPU2LCaWWJhsUrtBVq5wROkeRd22iHmk6Y8oX6w6WD5qiFl0wo01DRZmQJT0ToBAFpu+RgH +B1xkWA2GIvyijFi85LO9q/byv+StUIOHNEEAQASoBd6Qxt621BWEyedFoGY/lp8+goffAEb06mz a7iUcsgO/lWqblKTJoSZ1mMWk0kagdNMgAMB/akxtDqaHDIPVNVebyNijpUbMzEUOygboOBSv5EY uipcUuk+udoLohodHYahYbltJ0YOkCl1mJIuEJdQ9aCti6EYuaeohtqyTvIvkMukbjFrkiEZpucj nZtMaEGDmRudy1Mnvtky/7mOYvi0haEX6hGLHFidLGaHWPsMmdkrvWKCkzmNUeoNMkdi1KhMmcJ1 3UQR23KvO0gP0rQs6lOYu7UUjISOP2M56CgcqXKm/VBXCKElNBBPIdBTzqQu4ur/L8KnT2y0px66 bYpas7/0YykJsOybUL0IukB7AwvwEY6gBHckGZRwPBiBO8xnbM3JGF/ouiR5XrHrGN3FCbhLg1XL kFgjmYcHvJaGMpNJiC9XttfxtbMjIQ58O3ajYw+AUm6lLhHyDhsbdD+zOKzBmpGXq74FuPAIhLjg gzFTCnfWCTQgYvFyDWN1GpOFD9wXHVqUSQdEoiyack1rois6xIcav5pbJBnZuU0gAEDbBEogAI/Q EduQPa1YhynKvh63opOHwPMRu7tkPtSprQaoc+dAgsfCu6WaL9VIkw8VOPaCmcWLSjIhcTuXGywk Idp4OH/CvLxhr1Q1moyYM5ET/6Z50n6zecOpthRU1nMKJwmxE5Y8S52Fo3DZ2H/NQKKg6r4LbLvs 60/zG7Nq4a4ZWT1NYIKbGBa2diu0O7/kV8RoNWfggRvaOmNonEa/RCGjeaT9+LhOaGJqsZ8LC8bg 0Hf16ZkIO7bVmCnip3M0cXIUO8jt1Qy7ZCciYhOV4zK3UT51+zM+IL2coyqa1zP2hkO4IQmiZ1xy ei7zlLkspEpGDKIHRCHOp7SmfJIP0JDtsJBkjBHB13dWfEdNQADpChL868VNMI3mMIGhddAn97iF Gm2t+7ogKW1q7BgUo5L7ojUTzMxcIZ/7OSQ/qX3Ug26EB3hjBSf7Ew1rddPiyP8sJ1yny6KFobYa oUbMP52Oe0szHlIUEVaJGtKaS+GmThNPndRr7oIuznAT0BIPa8WbbLXLSgzQAf11caU1FXMxv5dQ DRvLZxG0E72JHUFrYpE9Q4KkWoNCOteh7UB72wpfIBmyzdZ7bxeGeydY35bQP8kdRSIkCd13G+Ok 0Cyf09dBZVt1gEc1SXbTtyeUNahEPT0xAOMyQS3O5gc5kDM+vTVVkcw+Qlgtc8cKbapwo7QAUuBr 6AJI9+E2f0JbC+nLxvbVAu0YFrNtXESdkxUmDkU9nisANArR7Io9lDaTaTEkCzkqrni+CMSd2OqQ Zzd2ydcXZZSBFuhjT+wYpGj/PBtxrqBLgs9sPLPzIH13kOg2fcLrciLzcoPXcPhSHU02MWhLT2iL VkAdQ//9LD8NaqFm1FWmTRHGvYPCKj2RKqFAA1XgBPTiSZW0XyBaqJ7KDijFURy1lmt5VUy7E078 NRIDfKRyzDA5DpERyycBesh9A8vNrs69ktJNyr1ke3XNRszCoiNXi37NWSLpo7A0WQmF3szMzAjW 2I3tdynYv2RigikYIDCHIDD3CM6dwf+7MTNNNVtKKtGEGhDy3xNLqYvotr1hoAd+GzsxoO8jKwwe HIexGzuQlczqOt0AonHhGG8UDx3SQxz6HBX3hQ3ovgOrJW2MzHjKHRlRxbTm/8XI4OINXbRY/MXU ULAJDRdpVw8T7Kw3LVicvYWA/eMBYVmuO+SURRPkndL0OYPOgNjQrN4lyHIBcAMjBOVRHtMwN82w OnN7bHjeVxZJTIp2qjGB5MvucOw0QAI9RKmeTuBHLXm6qqC+E5gvhSpzdZU7QC9IsO2uYwNwWyNM I6gZxOcdwl4HjaJPYrPI9ooWWSQJleQj+E4Ckr/xshlD+wiktw1H+9zBR8p0xqgboXNCot/mU8o9 6hAOiMZ7d+xqZ4ZM7ndVyoIjGp/3GQltIuWSoIIqYXV7BLw4540MEmz4TYpZnbEALljNwRvKbgnf MzFVpsIgQtq+NS3C5dfsLP93OLQJTvM/NjBwKxEJzYG4yBO7Yv4sx37Rhq6AGpiz8Ltye7pWEigO nNvoTQBroFcIxyV6sCZ6WRxWQlLR6hlxKPTcB6bY+X04wkfiendts+JiC+PdT7toqvy4knnkxm2C 1/zM3MfMKViN4gbl2ocSM1mTJkh4IwTyDhJ+OjfscBzm+61PSqOYnw55pOlboxaY0rszmNOxS/G9 WYkEcIoAome03YD3EEezQzqJ3CbzGBKsu/BFAwtI/XEOFnkOGlnFknEDSrD7BMAAhVAADPAEWY9c heCJXm/pF5lQ745CcFJiXMrw8iCoNQtVrqBxJVnqWbAYibNKcTw70wjlAHL/FiSoEcvM5FDu5LNO JrQ+6/3bCCaoCAIwUcakCDfQjVQaeDdasGopWI0PCC4kLlWDgi6CGjIaVTJVVYqLMpOUMkZQPpaY l1CdnVlQWQ8PoFmmpqGnnquoMk47ECFISDa1tSG4IbAvL4Q+DxpQwQ9QDz4+kZQkk49VKCgkzyiQ Ghqj19jZ2tXAwZjV1c6MJM6Q0CQkM1cv600BCwEEBCkECwQI8vX59QFNTRISXkhAh27gDAnPAAI8 cCDAiwABIERsAkHguRnRok2jBk6bx4+iRoUEKeqUyZMoU6pcybKly5cnqxULpohEOIIFSUg48OLA zgA8febUuXCgToY9gSpt/wgRIgQIPCNCFIFARJCrAhYIeOf06YuKvHgJIjjW0CBHk84ikoHIBQ22 hBA1YiRjWRUfRiRNiqRIgw9MUIz8XeWpJLGUqVCB8kTqAVtZsmx0sGUj1wIkIZrgesHExbFrpkZ9 q4bML7jTqLt9XI3NcDdGhSANUjjWxYsF8HDjQ3DhCQMGT3wrUDDlN3AGQvAtaHKAYlgXA6vMmIFi OoqAQb0GDKsQ4PVosDlys8a6POuS6GGqX8++PcttwrqhK4RTZ8GARh/hxM8roESmSjX1VFNSQXTV gSJkFUQAV3X1VEUPvjCbIRAgQgIEnVnoAludMZFhWzLQYIggadW1TDWT+P8w1zKVWIIXXoSFEgop iJWyWIyZ0OACLJktZw8/7vjDEEPMhYWONUjyVc0yNoXIRIt7LXLMX+Q1lt6MoVlJzCjhjFOFBIVM N90VV9zQhBJoKmGBBfdc4CYD9FzAAG/J3SMPPAdA0ERYAklwEEMSXLGTQHkSCFRPzSElYX12dYQk MJA+Cgw13SzSEUiguafpppyudA15wyDZSCGLTAONM/bh1912vPwnIIENBdHEDU0JYKutQYhgQYIE 3HqDrb8GQGtTeeY5KEAFCaQTL+iYmJGyhRASbVskIMNiXdj2RYkixygimCcwJpYeSoQZQeONxejo Qiy0LGADAe9SllkTuIX/EBFuFQ1yJJdzSRKOio6Qwwhql3pUjGEpcdkXfdJJN4N0zfnThDxCEGAB AzpcwJsJCmiMgHH41KMEAUH2k2ef2JEZ6E4LNaRnPw8xp2h/z2Q0F8HjPUqwpZdWSVKnQAfd3kfk CdNXko6IU03N5KQaFbFANbQVRAL0GoCtVAdBgAhcdy0CAUEIsODUBuLGFVjMMktCL2Ud0paGIw5S BSIekmgXk3qBQ6IMmfT97V+LlWJljYtpKZIxLuAyCy0dND4ZZbbgdtkCuewQArOQbHnaTBqg0Lk0 qWHjczanDF56N/olFOieEEhujw0f98ZABABEQAHtEUTgQQQKPJEDciEH/6BEP1zxedAVPgnKkMmG El+kBDJfISZG0nh+2muoQWKpDMCUVrA2IQkt/vguNUb09iiCw1H1qrO805Dw03oDrVuRPbXYtzbI YBALLNhUEA8K4FcqtC62uQ1DbfGQAl3goUnQLUNMICBblrEhu+HtWpR4S4pkwJjT2eiDiaHR4a7h Ax1Z7ik9Wk6PWicxfyCPHUQSFFmadEES0IAGjaBgWSDxiO9hQ0Y/NNynwmEqdfgJBWTyhxL8kY8g dOACGbtAClLgJgSkAAHvItmZFmCmPTnnK4mSGVOq9o476UNyEJEYTwZiFIJ47hkE66EzpKG0QmzE UT8jnx73iBLReS9nKP9qRELOQRSvSMRQ/suN2LSiNUYm6Cq4IePVrGYoeEQEbV8RCFi2M4iKlGWA BhSEukZkIWyx6Fp9gcLNMsG3KVGpGDJSSSrOlbDQ+MBytqCix6pID3rs40z+eIfEQvCUBUDgRDTx y0w4JyXOQSqPJjFd9tDBCyIpcWJCyCYBhACDKXgTAODMHe08oADdKYABMIABcuQxsmDCwznwG1LJ CiS5IDUBeTxhx3U2Ip5pxLEZ7AuoP3k2OpHw8aAIHUkxPHKaRcixEEuiz9qecyFDNcQd8dBa2K52 NUvWyqNVQ6MlByQQPhmJbb3Q19tS+raWmgUnayFIXTZ0LQ1S4i+DCWL/KhYKCvO5hhiY8MGOchGC WrgrBTaQXFIp1zpixiKAEnkQLiqEFrQ8ImBNm2PnUhM+g0bTq1lAjb4AIijkSYSJ9LrHbxDAVo/F LjkIgKsQ2DQyJQhgif3AVz9mdSa8amUe/FvAFFMgOQIMD5iJ6lNGahbQ0ziDOtAAyJea9oxm+BCs CR1XZoH2EWT4a6uwaRo1+YOo5RFoK7/62q1WmxvXBbZ/rpMK2tA2FooaYoIzZVIpnUWX+mBrbxrA oBEigYxjvGW48cFSLD+xkuU+gAavwAwucGODKTYOqfUUZgtb2BOMwiNf0WCYaE9Zl9CRjpYqwZ6p loUoPRmWYrKTk5uC/yOn3jGgN266wD62aVjhAeUKwRSePZuQlXn0cjf7+NE7YbZGo4AJGhDeiDQU cpBVAQQjAsOZzzbLYfEJcYilaQYPM+LgoPgkKQ1JMYDq99GtWPIhXOEfV5xSIKiABSy2QWCzGEWt DeUwpjOtYCVAhLcW+c2VOQUhlm5ELhsFhglSKEJ1U+C4xuUXu0rATZYJILz5KWF+EstylilSpBeI mBqQyEteBoMMLkHzq9jTgG14QS8x56M3vumNAsiZOw+QczhP2LN9d8PWBSxRSA0x7HaZaEmR/Sgf ZyLZd/XUYCNBGB3QwIhCBFLhF3TaJwiBMA+vZ40Om9o96CUaMVA0Jf/TfC5VBOkOUg51yOYR6JCW 1EpuEjnSiOTJK5mUUNvmE7e2pJSUI5JgJSiIwQ1lELrHDcxgDlaKGX0ilh+sdieM4AQm5AJyU6yM MYnqbW9TbqqGTvcZWacnPrlgGp1U4AQbZV5PjeQ1coOOZlp7DysiNQUcM8F9n5DftlZxHwg4tPBI dgN5EC8fj54HWwnbJriytd93CpJFFLvYVfXpIAIR1LEECglkLNR0JzFPa069WfNtQyaeBUesURYU pdTaf7a2df8g+Y6sEMijA7LxAAXRi+e47RCk7LFKGdgZGTxplOR1NiWMoMFv/e3aH/SBtrGtGE9A lwlIkEJ1rZxfKYb/WwopkMJ0l/oOyW05wXndk5kfYT0UTf1oODucp4b4CDr/aDfACc4TTEB42hEB AETws+J154Hg/CY5ddrHwsU8MpJlxR728CVu9rtfS2ocTNvJD0DYsWmEHAvkCnlGhetenj6y/PUJ U7nR/hjZ/vSE5jA2VFRPezam6LrnZssNVwrlEAmA5UIoFctT4IZ0C+VQX2tret2gDxe28M1FRqB6 iATDicIUptqqyLZiQEEDb4dAClLoAJUdh93NH9ZMN4jfoSfmLtzQ63XLkTvbdlxKm+ysSu8RZ1UA YBKzefJwRflFeCbQAyYweBwzHA1IX2w1J/pgJxZjMYbGefnAVpCH/w8Vk01swiYWWA/0gmi2N3p+ QmGyVmlI4SfTU3eSwhjiEhrNBX6wh1Aqlw2iQk1Q0RNQ8RMAYlE55xAVAXxN4VHC911S0SpFt3yG wARfQSJ3oS/Tckq1sRZCxmzoIGRSwn2X8C2EQTgmwVzhtxjld35FUGUdYAIX8Di4IXZSQDlySGb3 By8QVw+ZpxyasYfHZiK5hRbacj1agh46yAgv0EIGZnAKQAG3I04LSHgK0IAMYF8aAzL3IAQMoIEQ l1b6ADv0wFb48C4hM4KK1hzaZVJhsQ7IIyiHSGmg1hMUJiZwZF6tVzoIg3I3qEce8VOFGFrGxwsO 4RNMYWMMMoTNk/9rR3g2skVjv+ZuYiEBVygIV2UWbkMqORRkiPAWpJQhlZAJVMd9gRGGTTaG2SYj nXBDlhN2jVMEVNaG4bYARYB+Yad25xd2TFWH70IPC3BxWGSH9odjnpMWONEI2GIipUE6KcclxqYn 1SVxG6OAFEAERBABCsgx99U7vnFfH1MxH0OBFaiB7/IjB3ZFn8iPCLZXYSYkJsUTyKNGTJFP3bUn KSg91pF3Odh66JWLmjKI5zUuLqcwhTB6PWhaUCMgQRiEvdYVuidbUfUUxjIIKJUvZXEicYON1TIq zSJkSLeFqKQBl/AiRpAF2TdtZFiGXVeOnsBt3paGaVhlF8CG17X/AHFoTLtmTO8QAv5oh7BjRfwF cWj0FNA4FsGVCEuSNChgKUSzNM9AJgCGJvXwLnLiG2wIRTlwAQzYgDlAcE8Aih0AeXMCigh2hwiH ALhxRdvkgRVDMak5ipB2A4aGkicjEIgWMXoym/9RUrZhR6BzGuFjjqcTRCOUkzqJarC0JSfXk7/p ZjcxerbmMkVIY9AJdGERESVVEShYUmFxMrTFLBryNlzpfD4AfdHAFsfULJJgF2nBQBuSDNnHfRwU IzM4gzbIZOcIdmzZATqAn5fZhv5mVEzlOvbnI5gnD/1oh/CCf21HEdAxH7FRE5biOeJRUOBQWUkU afZgcAnoJpAY/4ly8ju8gRwgegGR55kdaCe6cXHJcUWY+JnblJqaWFcmc1HBeIhEIk8uo3FBAYsp aEffc4v3NhKuAaTDySmiESMMBT7nojATOigvKRXEd0hJESBGmUn5dJ0og53UiUkSsqVEt4Wjogik smNhSgKdoUOlBA5BlkEuEhhrulPeN37ht1zo8mTnh37r90Q90IbVJQVh16d8Kgv1EgI+Ei8I0AH5 YKgGmnlmZDbgRQ76QRCfI2KglSR+cQxzQw7QE0wTkw9XNIkamadS1FZx1W9zAnl1woEoiolCoF/y 0AEGNw8FxxsfGlcXJw8iGA+Q9k5FYk2m6DzOUyzPYx0wSB7Dqv8zBXVvoDGIQ6oeW1Iel/VTjhVZ CmFaYAERDGFjxWIowAgRPtiDfGIfsemDXzF6ajOQAeMINxEOW0kQ9EEtn9WN3PI34Cin2CYujTFL onBtUEADO4AEaWgDPUABhSewbah+/zZFpImHeEhdBhqao2io+biw+EIzEOpPOGOxOEN3FLpFumEn HxNoeYZf9wWijxdXxlEnJ3sPFsCPekkyEct52VQnLroPjlmzewUVzCEkZHZW/eAqiQIBgQJZdSce z3STCNlhwtkpQLUKf0QaBOVmSooq3nFp09onD8EnAFIsLuMQtnZIEsEnYMETEkFaymIzNBQbzFAt S2JsMnVbX1r/IqzELZuAF5WaUzsVgFjHU8TgCt4WZU80GeyHVEZVgsZUgP7QI3XYmZd4X3B1RbIa mvmnpeSAAqR3EOxqKuoTGxo7A+zwFbFVmgZID0v1ke/CifmAHHKFHCIqJ6u6qhMoJ3PyG473eDGr MaR4J2PmPBJDad0FKy8jd2SlMtTBCJcGKgcpOi8HPpsVVJ3wk5oFE0VKGN3TLYDYtOHgCJcWDULL RmwEjCXVPLWmlDN2a4akndSZSaoiIfA2Q+VVE+QQnt4ZLeSwW6MiJeyZI3xDDH8BKeISQnG6tB1U Qt02C5JhmZZpAhRJeG7SOLXQOARgqI4bivgAsa0rD8jRmRg8/w8ajA+EVYL+wA6TWx3UIQ5vNKF+ wQzh8AijRxHwcIn9trJs1ZmjGFfaRDF9aTH4wCYcuIEak1RNEC8XGsGj+DoYV3nsdANL1EW6yxxQ kUbCFDX94SeLFaGpUTBJ8jNJSz6BkRcKpGPbUg0tIZxQ4C/DZXcEuYV7oxfMIFEaIbQ1gyr3wSfW ujyLVIwzBnTZmqWtMhHnayQBYRaxYRPjBX2LsnRyUVUbZH3XNyU9RW2H0b9bsnXNC0vbBl24JBmN k6c9sMnXNRlIBS+j6zrwIgSI2pkVTMqte1+XKKITt7Dt5icOIybIornwNjDR2gzk6g4DusuDm38G +F43nE2jqP9fJquqG5gcrLyiMmuSkSeCv8Rl6dazmjpgeEJnsekdcJxhjoJHBbVymLVHxpCeHvIU TDAf3EBt6fVVwtAJyDBckxJaXLljdDFi0YAsxPYlpZcq00qMZaQ1XxM28HB5EOFRxDKdEBJsfJIf VrgWBJk0l8ok0yKFiNyNJaQJmNCspKCv5kjJRjqn+wp2tCBlHaDJBSt28RIvWqRE9ULEHyiipNyi LdqBkEeSmpd/gSI9OP0wBzFHctMMjipQROG5ujzUPvLDhOs6/jCgM0urkMeqMK2aH0i7xQyaoLhf FiB8eGhP+QebwSR0RocT2UJQyTREgpjFB9U9WygBEZRJ/uf/OYORztF0b9ygpIpwKs6yYzJgParH WGY7rUzKnNZpIFVDRlrTK1mBNa/VdsLnFEwouWANDbuVCfpBCI4AMD1kQyPCN3b3nlQHGPDJdZNc Eqwgn53gBCHQAT+wyZtMBE9wOwoMqvnFACidRb6kuNuEHE/QooHnugRKq48bknvFaRAqRwOTOeNB xdijE4pNMaEYbh57hzZgxB+5D7CTRRFnZ/ngzBvImgS6X4eFkjnrqy10Vtxhz0cSOt2MKbBnDG+B IQtkzueMi7GnGg7qqD8tSNhSv8U9YacykPfRHThhtSkmEf0jNvyDcwQdQJfkFUSnKuw1H36YFiJC kLAhCJ4F/zDI0Agisi2CsReb8IUxEqc7dQ2f/dn8qjiQA7joJxn+6cGHeLgKlg+qKgQ2gMqw27oZ +biQy2X+gDYAYRtuQ4WHAFBLI1abRmf3t2g9jpIvXoCGRahVrVZwZTGqirrZdAEry5ElWTHSrcvE s1dx1+MX1YPWGcXQiBN2jXeKEGemMRP7a9bgvGrL1Lw+FcYJKTo6g+eR8kwEU1k9dBNBOXrFsh2v wlEHcugHHnzGZEjhOyBOBWz9QRbSGAnOluGPkAlyc67MsEGViiPZ9576Cn5c12QbvW2mTQuprdoR cJkLWHaBG7H+NhnwMl9P0AOojMGu61aVeHFZZEYwY2ZXCf+meeNQsIEas7gkhJ7U+SBm6WZP4E2A i7ZEaJKBigZMkcZOEWdGCWZYGYhXSxS5ORvempqjKCOp5jXXOpis33xqIhQ4zRs+64G8AGNVaMEi /WK8GS5h0eHTROFx/FEosVJJDGI2xggh2oFJczaV1Oc9FN4MVoVDb+FZNlUJXumVZDltIIQugsPR pU4YljwLj2MDF5DqVYbJ4UZYAPp3Mp6a2WTrBbe6WHQcrBxXrOyXX5TwZ8Gg7GrLdPQ5lcUL7eDB i0Y8zXGIYeFFSp5u7QRM7+WYCMd53M1OjtZw/fDd7mRPEMCK3ME0GDvX1sA5xykaGR3Jy8pZqBNz pNEtaFr/De7ci1d1DoG8HyyTewVCIF9hjGWze0wJbANRWwQhbGWRPpseLVdFA+GpLupyfVOHF5Sw Ct2Xt+WYr5P82TfCr/1qAyI90nmanx0Qj9YluIUVkvsQszNLcIF3X/NVTudEgR1Zolk9W+6aVTOU ej5tRySwDkcvMbCJTwzxMNJRVoEygF/hHAFKMiToDiOzcMBMqyOY7YZVVyQzPNI/MdPME/p3MlKM YXNkscZQXEHVZt8vvcpa9vHOLwvDQX2RCXzRSt0sc1QLLftBfOALjEzhg1lDvsXUOgueSXMGCC8v JISFhVUyhIkyPjI0JC4kVT4aPiSNMi40jjIaUD6YjEYy/zJGRlCoqVlQq6uorlmuD6m0rrVQRk47 O0U/Pb89RBEUESYUJh0/HcsdFxcp0NDOzU9PzR0MDD3aDBfd39lP2QwIBELnQuXpBOwLTRCCLhKE VfUoVfca+vf2Gvco9FAIEtSkibsABRMWfHHghYQZEOtJ/AeRhIQXChMeKKgEYUd2BBYoARmSpMgm Sj4GUOKOJcuMBTc6lNBk4EwS+fQ90LCz54OfP3kCHcrqQayjSJMqXcq0qdOnTo3OqlIokYtIkCBd 7QSJlNCh+3CSGDTvkEUJaCUcgBAgALy2EA60hSsIgt0Xdu+y3Zv37iCb8QxhJUEKUSINhV3IkOhj EihHm/9IlUJlxIcpVbBasdoMi1XSn7RehT4KhcauEEiYLVPGrEgKKbCjpbCRYkGABQsI2NDdAWQH IeMuPBHuzdkTE8OBMxDiLRsC5SQNIoQ3b6BFQYYkRCq73WI9CVcIMhy48cCBK2ivVJmBor0/FO+r gL+ItwlC2wZHktwPMjdJhCClJBJCBLp0g31NNJQgQxDURF9aOC2mjz6IaFAFhRNOuJMntBh1lFRQ hShiVB+OONViiCgiGWGdtOgJT19tCFAhaFlk40VpMbhXAHLNxSNefQHpVl4L+AUkPC9s51Ak8gw2 mCIsJvJIYfVY2FgmikU2ypan+PCKZp2BGZpnUMxSpir/s2hGixNOIJEaM7+YIKcOJuhgp2odQIPA bAsg4Cc75wAqxG/NieOMN9UwkAMDT8BQjXLMrUOAfu7UdEV77UmkKT+SUDVWPFU4JEgIBUFQaUxN 5PiQJJhmOCGmM1xxRRM3KEGrrSsVdCBK9vknEm746UdgQgASiFCCGy2EXk0O3SMBQBLpxFOZD1ym CmexlPnZiNwuBZZPQ1EioYvaPrWTIVll8gITV2lFmD4y9ATjTlTNmN1MaDUUgCD7zsQQj3KJWuNA fQ0JwVV9HeyCINpph25VD0vJYrtUMWJVZJKRYorGjGAGppjZkjbmtaOhQoMuSNhQhA02wNmDDni6 Bo0N/wvsZhDLutkw6M49DEoANoyOIzQDCkwxhTjhLIeO0kKwoyxa8gFkLyELW7QwXgPRV1ODdYWH HngzoDUDPpjCl2HZ4V2UbEG50ipSRwX5F9JtCDbRjq24xk032wm+0/cBasODwjz41FNIJfqAUgko UHzVOFCNU+tht90+wAi67ZFg4SJeLVaVl5Nvm8VPliCmAWEpPtmJtEOBZQ+NacWeFuACC7IW4Go9 eBZa/uZ1dcJJXjcIVoMtotUjVVylWIqGWYhYJhxraVnGk3GGrchJoeJlybacYqYRNIRQRBGrXeDL MMgso8MFeabAfjm77QYNO4QO2s0TQjSKdNDjVKOAof/ZgEH/piDApu2nUgyTj1j+IgGqaMcm9CEI swbitSuEDSL/KJt74NOe6tTlHffBDa1QEgAC2I0dK7HNr/AzIGGdiljvkEuC1GKfF4QHAs8i2z1k ABDETOJFG3IV64JCLcpVDkuDqdcOEYOuwkCvElDZSSIkoRUmDUIyKRIiWDLkwLJUR3Y4AiPucAeh Gs0DQgtTXpKSdBUGFoJJWPFcVhQRichUrFOkkATnNmYETzAOFIwTjWdAlj0afGJMtggN+JwQApWp 5hfou9MyWIaz3xgQN7oZFAIusDOg8S+Ajgql/6ohjlDCQAiOygahyhESYDXBgvjwB07k48CrDaQJ pAr/gV1qwksbCoI962ng2DKoQVgxJCG2uhVHcrUSpzVIOr8a1toWhKBjDeuVNLQdw9AiNXpcSCez 8JLjKCGv1o3OiFEMirsIIbZ52KuNTHiXPt5Vrqacq12QWFfwDgcvzbFOKK6aUVnY6cXrgDF26CHe HN/4Riahq2rYEQzqFsMVq0gmElgsjB5VpAEuVQYVG/rol5pyvUOO7EwoNRMNTCM+1RyDAr/oAMwm SZufCaGSBEDAb3pDP5t6QzlDe8LRYPA/UgqQUUcVoKOAw9TdlKRUuHuBAyXxQJv4jWupCo8Nw5Og 8FQkU8UcG3vCdsy+IfNXI+nISCplLNwcKyblkcna/4YVF/s0JDwNEVgDW8VFGGlIWvoo0199gs4o QkFdTnrYp5Snos79xFxUwSc+DbE6If5zH7LMjiEAUkaHiIUEYUuLQik7tSrm0wVBwk67nkQYFqHu eYoR14QaZ7pOeAkUlfmjZThEplaQxhZIGZNRTmomk+0gZeRrxjHiBLMe+KIH7GtZy2iqm5/ZdBs/ y8YFEFANGHhDARN4ggJK4CihioOUiSogA8rrHAJYoJUJwRrDJOGCsHFVWbNKyKy0qtW0KJAQUhOI 2GRV1oyIZFImTKGtBpQfEzIYJqjym3jkWh70fO1ZOBmce94jxGJa1lVAiUWIC4uUe9JReUxIMbuY YP+dKD2vE6FjymFZnGI6jqVqnyUMIGMUxBQRFMBUnNGTCOeprBRZsYRgItWqmJe67NMQ+FhRxipB 0VBUBjGN2MSO+7i96VkrdIN8yknHnIqTHXdlcPqBDl42SZqybDbVrW78bHrebACVHETzwBSKVo2h ile8/1sv0hI1Dj+xMiQZsSF4fMlLCCc6bRBxZ4AxBVqIfM2XtnN0QgiAkFodOJl7Q9ba4oKRhTRk bccsj4Mcgo90SQbE/vgrj4My4jCHmcTqRISnprjkZ2VOc14JbD3tyeuGostTOQEnrQOa41m+ykYM dIGQkUwPHlIxE64VDEbXqbnWAptFTGwRIh6TZRL/bGITiulE4zoh0ttaZpC3FjOZhWsylK0GksSg wHJ/4Y1mOCMFOr1ATnMaKeZ8cmjpgEEJ9swAow16z3/uczaORo7m5LQcKXGaWX1pwa2WGsJ3BRx6 QisfM2bYIXidJt8UcpIbvO3A/8nPCzPyzGfmFUFXOA/tHPJV+JTitrhIhVSGErIwE53E9gzK6Zp9 lp3PbqB6JEW8l3I6FtvELg1BUln48eGAXsSg9LDQkY9tIUV8uB6d8PG7VLTk1Jld13kMtmQASYlG PIYGV8GY4q7MCECeAjPD9W1Jg+vuVATypD7QBWrcZAMpqK8D44v8+FJjAzc1svIpo2QHWLaMHlQj /wfiWBToFaAAD5TAA6gXatFIH3EYTCEbgebucOz8HE7qxh27ccczS50bTb9yPKGdAWgfsh6yDZ93 eVU5MjnCNpe0rfcrz0h5di9BB+XchubJGtl8HeRWcXDDF1KcrM15dKSvgnqt5fVFKWsKUyjusWKW AbuwzQQIpNgF7FIMsDk09NYFZYqcBWBVYm3ZgRWGgzpIRoAVcyGdgwJW0Vr45CKeUxiPIU+UQGV2 lwmbwBPkpg9c9nMmpS3XAxWGVxpAtz0jw1JIQD7AoAMRsAJEoG/AEFP/NhvNUF071UnMcQGkxyji BXt7tmeoFwFToGd/RnpHQ3FEFQ4K8A22tx8yx/8sCxE3KIFW0mdqGKFNwndB4+E1L3QfLIFg+sEO aWVCZ2WGvAITz6QQDBJhacNNfPVNHxZEs+Z/I2Z+2fMJp7NaTnI19Vc1cUQK5DZsMlZ/9gckRQIP duFQEVIJdigjC3UIMxKADwMQKOIipuND1fYuU0Q8iZV+FAUvFdJ3WAYvPvAAmBAKjBBO4tIIlSBS oxEyv+UUZ4KCoUF3tGBmbtILJvAyPXAMdGICgVZx5ZACA9c0FpAO5/Ac6zVxAtQor9dwRuNwHiBU EQBoSKhn0eiD4lWNgoYOyWgBFpAS5JhMvJdMZ4WO/NI3x3IeFpYeGHFXbKNCa2VC7UCGBpGPavX/ K5qWN3zzcXk1Hi8AETPgWZhSIe82C6j4CZXRfwqpLWCGhyWmdLIkWm9kF+yCUDUCYPcAUlGhTtSR L7eTNVDDV/PiVygQaRtpgNT2MFUiT6vjRHmkD+3SifHkFfKEIRfYOBkoRBe4OILoiqMgiLY1PR1j C8N1a1NHeGMCdGOmC8eFGo73eKzhZm6yAJlHM1o5MyyzSc6gXYAmXhHgARHAelMwlmepAET4P+X1 jET1luNwVAYkKZh0aPyIaPzBadaEIHUVE/GYhQqiIAmBH8SCjs2UTLmBjgqhmH7Jji8xTQ2BIyQJ dZwYihSiKSBGa/4nkaMTTq3GdMWWY4vjiuoW/2MyRgLxlE/2pzCEwC7+9IiduSH5VAhP1indBBAU s2TplyIUhSIdlUX95E8Z8lEdVQmGd4E/OS2L40fvx5NByTiLA3irYJohUhq3OG+fgDLk4wv6FgE8 QAREwAMUUAMwNYMxtQwXAF3GgZ6e53kmgChqqQDC8QRjOZZkeTSkx3pI43DltT/N6ISHsifGiDN3 oxD2mEz6gSx1w3y7goZvlRsw1x9jmJdk2A75KIYnYTcvVGoIsRELEJlp4x1cJ4eCBS7L9oiwCSLn VFjaczpZ8zt9gVoJsxVxJwOEyBTyh5EJ0xd/CG4dVS5gYRVtpFpzNHaRpQi7Bnff5JuV1SIYBf8v i2GUjBOUDJk4kqN0irNu7IYJNKCKHQVIwuVb3IKdY7ZSO7B4nKc+MBNdy0AAxpgbNmAQJYFJ7OAn 2oWf1WCEjIJ6HsABAFCW/hOfE5d6TBiXoAQDiFpAiKo0fqKMrHRoFNoW7dA2bKgQ03Qfe9lMCDYp KIGGGppMysd8ZvhWGYEQ2zQIhqAl7VcZp3AKHHhIKCgLI4WHDil2/3UW7DQ4mhUltCUU5qJOOKE7 MpokW5ch5USRFpI5CjU8xrZRWqF23lY8McmJUyKBo6lbKMh/KDotgPQTtsWB8DItHTI6S1mdJgWm 8+YDulgE6dkBPWAMEYA+0CUO0EUbOrVJe2L/aDZwKMXBjdVwjcOxek8AAKknlnxKhEWYesJRVEUT hNPYKEJjcOewGzwlKezwXihUQiuhsSFBjhm6HyxRKSI7oRQaIIf5aboyQgeysXAFV6LyhkE2IeoW ORkSOf5Xh9RpfhRJNVdnE2txJHnhmqTQQ75aYhNJAncRQfyiF4agbHYodoQAJE+Wm8HDRPhUMeHa Ik1Kk066FbO1E6z6R7D6OLPGgTvxGIjTd58wd6CwkF4SJjlLUu6Gi116ndoDlSnjruzzri8FUz9Q lXiCnpvnb+/jnsNxHOJ1AcjhAURAlhEgDAZLlnwqVKhXVNjIempZjf8zn8ORnuLwHMrxHKBb/7Ik 4bGTkkx3EyByUxL8MaGd6jS4MRIKdrqUOhJwVWFvKHwONCM8VDaxZjYfBrzGqqKc2ZmNgX/3N0Xq 4hek9nUq4imeAH/YI2JVx0ZshH8YeX/vQk5XGi6hYEWoCmWzSVmNkH6ZuDo/WVHhSrOUkAW4KLZd ZlmN0aWTsG5f2nfkVlxfaj2B5yEjuBQliIvYaWY7IF20QRt5kgw9MLiDmwK94VRzplMD95XGEXHC YZ9DeJb1mZ9GOEr5mZ+AKlTTqLkAe177AynmILqguxzJCKmfBrJlOKes20KwS7L4OCkLUCsEcAMo 5BJmmKEwEZmAERhVQT2VRU4bIjm+Gngixv+ZQFF2PJcpFJIdA2UYxLk5gQV/ZuIhP3FjB9iabhFR EhK9mrlsVKYVbERtyrNtc4RRhjGKG8I54apsKEUZQXfHgsVj1wqdgnWKfQw6oBG92YNOtqg92AlI Z7qvC/yucvJSRNC5xVENAWqn28Wv8zmf8UqfQ6jJjFuW8cl6CPs/wkif9enJ/8OnqHw050VxhHYO nJQOFiC6sIwAybgfBjS6pJvL5tA0BhSGIPFWCNpMHnEqFZZ97URFSTZbWRw5EKmQKxq3xRubFrIw kaa7ACG1fsF+jUAVytaZh2WjQZE8iygBimgXQWAw4ftNdChER4pknqKkvCl378KA4KSlT7T/pe9X XIa8z7PwFUIBCo7Rdx9oGSf4viF4JmI6IqDQpQK80Ld4W7rIeMygZiagDH8buJSU0ZQUcM7wnsVw AfEar41rAiLtuH8almsZcQwwln12jZqbhAmbemqpyqocDke1HMvRqJzEjI/aNM9hA4cGqZvaukRd uiZBKQIQTdW0K10FV7JyHhi2WQcZLXO8OiIFGlgtvSWCdLJJNfNXJkaAvfmXQ4njFQwZL1/hzYSF isqTCHhhiBi5Ll0ByOHkGUHKT85DFXpdFXvIUIuQRbIFWIgwCj/KzLWQSIoUwEKH2AgNi4stWN1b rlBBdwJsnYWsPabhJnn7i428b3hyr72x/0rl0AzdcChl2dHXKIzxqpZj2bgEu7jX+D8Ji15CRbB5 erCUq2ekV7CsbNMC1Bx21g3KKNy156gF9xsprA4+jbEUGsvMvbq34WCc5nzVVB4M0V+X5oAsciFy qCGPY8jTktXTGc0TuTntUrUumohSa3al+cQjFshF9ACQsJp2kYh8AQ/J/BV1F8h+BWXcrZsU84Au 8MadE647KUX7KzmdeU5fwj0IvRlmki2UYYs22mWH5Ed9VBQPKYsKDUgMbeHwW2YshRrT9QvB2IvM 4MBtBtQ7ZV3Fwa9qCV3IISck3biuTbAEm7kprcl4esoe4ON8GtNDiHqqLHH6E5e0vRycxP9JSn4O v1HcTy66F9eox1gOz1HLB3RALFFCiMZCm9aOGBGSgfFqPDQuzLnPJBOL5C1iXV0IwAu0ECCAX5vH 88LFicMTIibORJIXbtEvz2JZO9G9GUI10MqIE8VYxnMYif4icPe2TUyd1nMtRacZxQV0rIoLhYzV PHmlkv0UhmS3hly3tKCuireC/LZmjSwn76qe7DMoe7vA7PkyikvjwqgAcsLaAJDr9kkEuv6vZCnb Y1l6RB7kGewBBHuWB5vBIqw/bak/DofT3LgcnwspoMtJT57CU/6oA2cOFPorZOgOeukSJ7E35ZE7 FhQ2mcMPUoOZgA6bK7rm4VxsVmEquKH/SwfTHi6SvvJEFAceCxrgAqgRAgK/APauo/YndUTBf1ca lMhMRcnDJFjLmwsYis3DRV4BOiKm4JD+WyB1JpWO6V2iPZc+rpDTON4seN1iSCEe6mj+CSdD4u76 XBewZuWZntC1edPQMunJPg68PjIlJ8dh68VQljUuucKQuWSZZyRcVAnLAXxKsGT5BH3KAZRLhERI 5KWnyq5nXkKjP0ZlZ83BHOIQKYbCHH6yXX/SAYa2Ds+xH1aOQhJ6NypUTf4oV+1kL+xurDX7V92r 1eStdGqHWgsADbjBmpKQISuSia3zIoP07wIfAoVP3yuWvM6cUgppFOGmiVS0dG1nW8Yz/1FRsqS1 JSFGQBT9++7xBuEeX8ftxqoflekKGb1XSmImk4smWLdOidmZTT7s467MBevNIF3+JsHusycEoLj3 Y+vHEdKsHQEESwR+SrDxGvX0mZZG8z8YfJYJSwTa7/T/+j9FE+QwDY0OdzTAUYS9jdODhjSRol2G 9hxq//ZvX6cg8Sft4O1zI/e2exCiAggvgi8QLy4kMi6JMoxGjRoyRlCTlJVZlJeZWZucnZ6foKAP GhpVJCRXLwdNTQtNAQGCEhKnkKQyVTKIMhoPvr4aPhpGPr5ZD1UvAQsLELAQ0AEHL7OnJKSko9ij v6OmVaWl11U+JKbmubwahy7siKeMMv/CvOpGGpeYUJn6oaH6/8coPajkw4ekSb6gdFPIcOCDTfz4 9ftE0AcNGlAwTrpYCUpBiztC2PjR4UcPExQiUKCA8qSJCzCf9GDQ40KHDhdqUoB5wYTPCECDBiUS 1AMAD0Q9eIigYIqCJ02XRnDqAeoTpU+eRNCKNeuUrGDDgoXxhCzZrwgYKP3KQAiDJwzeko1L94KQ C3FhIriAoC+CFCkQEBAiRDABwwQSK26iZEGAVkoeQ3b1eNU0CdQOzJpBAoVnFOcQocBGelu3Tg9R T1zNWts5CMxSMAsBDVq7Q9Z0MUKULTUwKBoUcnrgYkEKG1IghKBdG5qhQ7qEAQ/ei1v/N4OQqoDT UMsUrlzbdacj4cIUDXXzGJFiSJH1xNQQBwbsyFCgD4W9FDrkJNE9/0o03BcggBpREiANTuywAxJF 2GDDTT/ocJOEEN704E03SYGEFBNO6JMJQpmgAIhCAbWUVFptZVUEaymg1ItrTTWVVlcxBdVXYE3x 1VlmXaUjXDr++JWOZMF1lldZ0XUXA3bBVBgCdxX25GF8KWZYAIkt0FgAjSXWyitfginNAWReccVm 5nzW2WeeYTPaNr1U1w18/tUJDDimQCBFCAvsyQQETATKBCPb5UIKeHMek5Ax/Mmg3HK1CZoIedDJ INwlCU1yzKYDeWTNoeBpJ6p6uOwG/wluiMyTHS/FdFrnag/9EytAm/J3H0G9nfYqKAbeZ1FGHnlU 4CS3Irjggz30QAERRPAQAQ8rqWRCTTkx0MFbel2QlbYKMMViiSB2SwQAJW4l4ldPsTiFjB5wAOOJ NIoVFpNxJQmXW09M4cGQP8qVVWFv0VUvDEritdeSfDGwF5SEHQalX4olJpiWi4nJCiuryIKZIGri gsI162mjn0PG/NLfrih78gClLoSQQhBBMLNMcxK4QMvH5J3SzjvglCwyahIYF3MzAThTCDRMKMLI fQPdp51pcY7yaSm4hAOyobZwx8so8kQCSTyMIERnyrzOF+xARhADBTGSsO2RPZc6RP9rygZW8gBG AwZLkEcgLYhESRjqQCGGKVjo4IM2EZACT3uB9VOIJgJAhFHusqjUUe9+q+OJL+KoorZJAgyXwFEy AAORXrGVFl1Q5huwV0XmJbDsALfVllsK+yXYw1YmtkxjF1vchCrTUGPzC9a4owuq5shTEEL1yTc2 2a35oJ0LhDhHCPLWnKKd9/Asfw1wcya6yQMSQNCEbSQIwlzSTKRaUHBvhxP1QMF8DY4MH++fizm2 eAehBvg1sMkjOL/YB/X8k6mEUIRkD2HUAi/xK0w0DSPP64hF8EaDkBShJD0wibIEd5If2AAmPegA 4n5gkw74pCYfElG5giK5EwHgKDj/fJHlYHQjuFylKtrCFr14tzq+QMkuAkMSW9oimNvhZXZgoYtZ 5AIDwsTFLYR5mO52h5jDEKAxXZLMKgQQvOIJ4kwz4AybPLMmzzytZ72RU/l0NUFRlKIdL2BOpHSD m0TMYhDtSJoicuUNOXFCA39aAJ+YYAhBFaKPpeLFdJwnJ4X4IB7COMcbn0aa6GCjFqRwBCPaYSmE 8KeOn0iNpmIFn/oIZCHV0YQsd3WR5xVDb7XEIAcNFBIk+PIHFNCBslhCzGmhBCzJ8olNLjCixwGl WxEgCovGZZRxpYtcXHkXjFQEF23h5ZvfXF1bJJYYG0SMMEJITOmuyDsbCCZKD8Pd/8AIRjAlYfF2 VhSMEaMUMd9paQEEwFIAbtAEgl5sGmeaBS06A8pbwGkhEEQl2R6QCAicojaDoEUVcGYNCZgie9iD Tqu6IcfUkGAZsqFNM5oDgUHSQ2nAsQd1cnVJ9YgDPOo4FD0gwRv0UC0RSnOe2CRaNulBRB+s1A/5 TBa3k53SPQbBYEE0ciCNCEhYvFwOgyBEksGp8EIWwomDAAMTnDzhJT2ZoTSNghQOVM5FHnjKDy23 rqeArilvSRLoysJEwXRASkhkUhYPIyUoCZZhKUgnlGyAO3zBoJ6ms90Vb0dYiPVlSryLWBMIAFAC 3IAArIhMExAqiKI95za50QVO1/+Tj1sR61JE9UcpcEoCj5ZmtmzSQP90wxv8zJFOGsgeRnFDyngM Qx5GUOUv7jeKguiioejAhnc+eY3l8dEFg1raK+cW2/NJpD8CgV6iVOkP/wTLtVO9Kn0o8bwOIsFB P5BWBHpw1nKd9b7TyglKiJKSCJAomhyQXOSI4FajPPPANlIRXZJkun9J6ZyIEUIHBpPOcvbTBl1K jBLMmSXFUEwxim2sBQozGAUc1jBQAnGFu+jhgErmFZUpXirQxJkZqGk7zP2tb8rX3VBQ9E8tPYUh Ono02/xJELVpRjMO0bPUZKNWm3AUbJgRswDwKVJJAxskgOOR9QRDGFnDBSJwzCr/uRlkafHwSDxu Ux51mK/Hp/wHfW6Fj/Nios5OfdUG8WaRqfJtzrjsJRIKZ4PC3aSFGMpJBwiNk5ukgL7TekJ/aTg5 oDALKTckl1CWooBugeWJo3tiZNFJ6grfhcIUrvBfNdzZflZ4MOpEZ6qtuCSFMcDEfgkxYUbcMAoL phUR0xIsAAqL4LGiEILIGDW4Z42Njko7OQVzyBZ1PjgPhxRj1m33yNOc+Am5trTIXqpO01zYboIE jHTBcJG2C+cxDXojU5QvwDwPkH3Nobc0SE1rOspAQYc3w5Cjtf8DEPocxBLtqaMRDjRVjmA1QOjl m0WcIJJCL/rQyaIJCnOCaP2m/9DjICLKuAIszclJEyjk+u+IbPQEvMjTLoQldYrTOWHOtlgxE1YC GDf7YQwTAMNA72fEEPPOvOju5kJPumYfwyUwWUx9l8GMQjeaWxzfNsc8jiCUY+sQ/pGCo0ieMqCw iz3M4MY5W+OUdehkhEh1uxnZ1S79XvuRW1ank6uFdgE/QoyPpGN58QMbmOeUZ6Le+WTrBe8+NEW9 YaU3WHgDFgYljiCtIssnkn4Cs2SSLJmcNa3+ne9JtHJpkx9lKEsxAVs7zSIF9IVJls1sq5W+mA3r HIys1hKwwxQ8JTBG565gzD+VAGLF9NWLHbY5rDWcGAu0GKCO4SzTR2sZCBRPAv8zoEYVbOxGq5NC GCQbmY4HDgpIsDF90Sha0WzTHECCFBdxQyCdoCBllrK0uLcy2Zltqp+QYTun2ACAliIM82MEJIA0 gGJc9LN20zNwiWcJ5tZdv3Ir7SUgV8VnEjdxvbQAYJVMKUQ4N/GBGNJoHZAsQIF5JnBW/1UUp2cV ofZybYFEVqJYy6dOq5YYN9hPLFYxYcIMXwRarDB8SZdZEIYAztd8tLdZrAZGyyBQwccKgjA8UkcN 7bNt7WZc9tB3DDF3JbN1PRYa7TMIQ1aFu9AOG0MNjGRR5PZmlyBIQkYNC5UbGeQRncJl84M/M/UA 9WZ1uJCF+cMQvIBdtOFvQTX/UvrhheSnQO/BeLHlK38GcecVeZLoKx1UcTjhE8uSEkSAEtLCEv51 VieREiexFdKkAP1VctEkOTc0Ip/HE4BhA9CnfJxle6HFGMYWPBSje8b2hBfzAqnQBFcwPLc4jBRj i6Cle0pHfIzxg7cYfMvgdKsQPC+wPjdDDWzkbN4HDAzIhomYStw2jQswNOtXCDoDZNGgZHAXS+cz CognA46ENIQYKNplNwVhD/IwHTMFZqcgbVnzhw2RP47CHJiUf3KjdYkYEfkwSxT0XZrAiHTjiO0l eRwxkRAHcSDxXsiCE8lyEim0kRfAQhtZEyykkdMSTelSFJbGOSxnMBDDYRGD/2G62AQCMIsYs4td 4grTiIvGNo2/GIzDKIw/qYxfUoy494P9pIyucIysIBlM5xiVsZTQMFoZ1Ww45n35c3e/VSsNuEAm UwXqpn6cJY6w0D3CZX8WNVIRRD6e4I4tFUjIM2TWJUkQlRAfERx1F4C84H2XdIeZAglMcGVZdo/h NVTd2AkRUV6e4FSFxxqTlxG29HAcxGeUmCBgVYLJshJEUEwU0APCZEwh6RL3ZWlEIS5MQRQmgC4+ BBcaBkZA53sX84Sr4HtiNFrDGIVnJAs56YtmMgMScCZXwJupEJw5yQpmMpy9t1nCR3yR4SXLSHxA +EVP+IxL2YupYH3JBgEKdf8zVzd3a3NwqiFBiSg1B0gIAAUzL8MMsIGd3OYc9qcIY6OHxbCWfIJk 03AIKFAzglCIlCB/wCF30tFcVEMOCPR9W4aHo9AOejIou8A0JiMfhTkRh4lUR+WQEEE9jkksF7gR r7URkGg9fnMhObESLsGRL4SJKOETOqBfLGGClSZNo5giQtEtU8ATh8N7UHiLNzAmZDI8VzANPJqT walQxmMmv3kFVWCkM4CkSJpGSOoCV2AzR5oKg6A+IWBsiyF90/maWwImYEQZGDON0agxy/YCbNQ/ eHJ14EdunBKezSVkB6A+jsEMThkL7CBc4wgoJBCf69hlCdSGfWJRqIVdz6H/HqsEn65Eb5IUJ7dg lfQQnwlRUYMYVPTxoKhEoXWEVY75K7t0ERfhBE6AIJyaIJZnE8rSEim0EihqTCXaEpHWAxGQchEQ YE/QAZoXev+VgpjnTQjwVxNmTkmZJUowk8zoe2UCjES6GU5anMGZRk66fb+pHUm6faKyRkw6A8na mzfae6IlWo/hCq45Ga+ZpcXmo8OzbH/kUddolbc1R0plkIjIlctFHoQAC/RqWoLQPNx2G4SQZfex jtqQK+cjAyEgBUmTPGxmKfEAHwb5G/MjAySlNQHYUyFDf4nwlwsQmGHDHpRaqYl5qRnRoZA3cZ6K ICNLsqJ6LDZQE5fJEp45/y064Jkhqar05aq4GhQ+AU2eBxQtJy+F4XLIl3yKcYTISZxE6otpFK1o NK2fQXVutEZLe7TagQIzAK3Zl2w/uVlbElDHCFqz6K282IvTYH3qUwjVwCalYiiGcitww51dKApE tVzlUFtia53IVg3fYwjIg6AipX96GAzguQ7aw2yY4T0F5LAFuSn3YQsAeAtVo1O9RQ+M8JfKwa8Q qJAbmzJjs5h14lrstUGeqiAhEBIhsRwh4EtahZElaJmhuKLJ8rIvOy2tu5EgMrNBQV+VpgCu6l/i omkwmhUp+Gl5JVi2c09CMGIE4HzfSqRHCrVMq1ueYWPb6bxL+xm65bwb9f+bvrijByU8BTW0X5ut 00d96lM0ZhSHZmo/wcBlnfIb7sqmyGAOtXVGUheHzfNc6xl4wrEofTtSASuoaVinhHtcchlvAdGw pTJTANSP01ZRgaIceHpwd3a5EuweJBuqO5AgoFu6vrTBG/xBNvBeDfIDmccsJJyZyqISmZmZnVii 0UQUWnEUP5GZoBhNNPwhvTtN//IW+5IvTfFYPoxPvaZzRLubTvu8bMJ9bQIn2eC8TPwmUsukwXgA BLUKjwFa3SqbV/ulljGN55qdzuZQ66pjfVqYv1AOh6AK1rcx5Chkf9SeW8MoTma4PqNu93daAgRU DjsJAYehAyE+DrUb36D/G+rQn0D1l1kGwWujuRO8yFlQkSarIJA8uqWrwRzsS0XQICXxAyKUTKo6 LTfxEimKaBqZFZfJLJGmIpqjFHDVOWzVOUHyykRyOrHcWL32RRdDpEl6tGlErb/JfaXxr8CwxF/n vFCsCsNDJtFYUBlDxUD5YjmJUAcQjHC4PTvTPVWThYlLoPnQEZbLdQ/wMdyXpBLwvNHMffB7UchD jm/sMzq2DtXcPf3zx8a1XOWDbd9wfjaDWmOmDqP0UgkYNpmyzRXKyIuMwaB70Ke7wYfzwabLIMC0 mT1QwiQ8ApJDwih80SohmqdIYAKWgvT1LU2hIlWRL668OfriAbKcBFMg/8tToNIrXUVADGvfaqzG aibRTKQ4/ZtpUsTUe1ug4RlSOg3JTJvGpj7HJhnOQH0HpRm7Oc4441DkMzISWlLDsZU95gvXIwFN MAtkwtVdPc5mdI5FYw7jV89AhmRiiCruwA7QgTVNJg5U2H3MljzcwWaCgm6Bd4+tJEuHSdASjNCQ HLqhO7rvVdim6zdFsMnKAi3D1MIn+tjREkzB5BIhpywWzU35AqPlMjkcwCxRQMJIIRVLcdKYUwJy 1U0M82qraYsFpXM38NpmcgNEegBHSw3B2cu/KbVGfMS9Kc4zJgHRfNNmJIYZRQi0KRlTeK9ttLRu Yj/agALbuMSEOcaoJP81+JkbeIQ8HMVt5jhkVC3GgMscwvVv2IVuiwAPXjk+pGEK2IMOoOFRzZYb iLAzdBwCgac2Gtuxfs3Io5vB/R3YHGwDIXDJSKDBif2ZJ0xMLAsiLJsSC54TNWFWL2RpmRdNngcV I80v+jIF7tLZJ70vMVICSpEEIL7DpvNYQlBFpKYEQnB7Lv7itzfFRE19wV0mu5nLz5ukP40Kvgim vmnTwtmjL5BGvTnkVUumT3wz73DHS6NvGJqmdZdc4te+XFcKvYl9nsHVs3AF93kKXD1cKLDOc2RI xOHAIfCmjzHXOXPO75zA0hWG1ogODGWw0EF25PEng+Ir+K3I+325HXz/yZdMEiQBQg4ucsvCA0Qw Ajyw2M3SLCMQBVEwAswiYCPQ2Z7YwjR8Xz3QLqYpFJrXFamTIxvOL/vyyvkCy7Ds0rHsw+jE4q1u AbBuAS4e67CunEL8e7cYjUJNfT16Jsa8CkZt1Llekz2KULw5C9vHMf/XCGvDufiweK9i1dQDDCjw zGbi1a+NzK8NCwIAC30kxtxwSLAhBcyAnGmuxuuD1lOpfV5pCB/lAtZahfDNMnS+MzTQUhlLZ3nG 531ubQPOIIDeAR8UQlz1mcyC6IsuQoIuQibMmZ0Z4RACuwRfghDuXxSgeRd/8S48FEJBBJ/NX59O BKRXFU3hIiXyLjiS/+IoXmosj068BuvFW7zH2+LK+UW3V0a47Zu9jX3Y5+tnQlqCcOxkKq1HarTJ LgtrQgK8yRlttFHVWxq5JczfTd3wSu1BRkp/ghvs3VJA5m1u9lukEUHuaI7O8Q5s7YZWaCisUlts fDx4K7hrrQj7M7mSRH9GEGf9vt8UgOiSnugj8PeQHvhRcAKEP/iQTvgfYPiRzgOMn+hRwAEUXemP PwLEhOmaOC4VjRTM4lalR8qaTSMiHxNEsC75shWkH9JOARdy9RQ/YiQqzvI+HPtH8Pq8RhhKUPtf tGtC53zBoxjOWe7rM4xpbptS+ptFzhmyMLVTq67WETVhP+bc+K6Yq/8NJNAK49jAGOUM4RgE5I6n 1zCXc3IPm6ABsAEYUrAMjmEISWZ/Zek9pZKfUpcMY6rmOgNAvLUbLtB3/drNeQ8IWYKDhIWGh4iG I0BRjIwjUSOQQCeNUZeMUUSZjpGSRCtEoqIUpUQUPSYUOjqqpqIREUQARCZPRB64RLexEU9TwERT HlNPxsPAER7LwE8MTx4wQtJCFtMw2NnZ19Ld2kfa2ELjFuVK5dUESgTq7ezvAkpNAfIHL01XB037 9i/2Ek0OXBlIkOCMg1cOopDwYkZCCRJQVDGiwYiMixgtGtkIpaMPjh2hGBEJEsqDLCdPJlq58sED DTME3rhxoKZACfn/atIMEOCFBBIaXKJ84CPoAyg+fGTRYFKQCwhSFkSF4M+mhJoMIaJ44RMiQ6ou SFQh4QJiFa4Mx5J4QfYnibdVqgTVIINsWCYYLyYd2ZGl37+AAwsenGXTCCKSgABZJOnwYsWOODX6 NOkwKCI8KNQiEoGCLM6yesGSxSFKLg4cdMnykNqD51G5OD/pZcyXMQW+GDx7AkM3tWnctonrFjxc tiPAxymvZoFAcwIImkd3/o5dE3YB9gW8rn0egQXdm4DXbk/giysSZlRBwb6KevYa5FaRMV8DCfoa 8uvfn/9lR5dCATgUYYgAmN9aL0BwgIJd/fRVAAtAAAETLshgFIAm/5nknw/0fSQDExFKGKKEYEn4 ggsn2uVCWGSduOKKJ6JAAkMvSCQjVyZSxRZQL5EgYYV5ZZQUFIQQSSSBSCap5EpRnHDCEJdUEmWT TX5wwgcGVOKkAVZmaaWTYDrpCSSSXGImamjSEssyrKGm5mpEpDaKLpxR8IRnJvRgpzEXXPCEAs4w gMCfujHQp6HKibPcoosipxw4v5Uj6TjUvYNAde6os4ASm6qzDz3scHodppxml10T/uRzT0TstZof CvzNFaus/b1kq4BLsvRSUCg8FcQCQUhB4oRMQCCVFClIIawMRgBooVCDHHUrXQukkKy1CPwa4gvF UvhUsSQ+NeyEJP9yZS6OJiY4LFphvTjfWxgxFWCu9NZLLw+bgALECvw2BopliyGW2GJkXtKYv6Sg MsphpVDAQ2YmRDwKAHLCCSdqbOLCwTLKsElMBLr9MgUMIzOgDQOMEsDoNYsqyqg1LisnKXWXVtdc c+u8o8TO7XCas8+jiiqPPOTpc4AE67XaalH5XaSBhxZG3fTT/5nEFF9I2WvIUbKicMU8NUEA11oQ 8PTjRQaiHdJRUEzdtgwQhLBAAMEG8atPVLmlN4o+kU2jT+gm2ETZC8w9+OALBpBjCMZKSJa38YYU EkpaV255IpgwMsSTUWp5QiaVMOJ5k2KGSaUnBqfW2WecIcbBCAD/0CKKB8rEmYvFo9Gey2yx8GnM M7oBqlsBCOgmRHQIKKfyyuOcwzw5FjhfzTnnlIMpOzNb85zKN6uDM8/X96zEqfyExxV6V7iqn0tt s81U2xdyDSC0lxvytlgzBkCAAIrbMyMEditcEBwnA/bdxwfzG0r7TgIFEoCobthCQIQCxzd1pStv CbKgjgSXncIprgkhyA5VjLUAG4TIW2Gx0ALZV78WulAxD6sBDxRTJkigLjFkWoQlzMRDG5YJMaN4 TZxgQYvY4WIZoiiNmjTGGQ7EYhS9iKIJZEELE+RgihFQgAkukAM+XQABCLABAi5wPCGEynvqoNTy tLec6mnvHJUK/190rDc96zmHejvj2XOEkDNSqYN8N9gHVVDlE/WsJy7xyY9c6EMfRM5qPwJSSbQo R6+X+CBpVZBA2Uh0ER/9SkJMwIsRBNEjGSglJWxDyoXqQiJtAWuCOmoXjEg0owRBpJbjgsA8uGK4 DzYuAHKrlgnBAi8LJcUHGZIkKV3IzFxFIgqZWQFjKDOCUBzsYBXIJhAq8MxLvI4yz7SMZYwYO9gB wJxw0kUuYhMazgBANL3QYsRMoIASZPEJtlCAAi6AMpMJAWXLM6MZ1aGE5agMj9Wj3h3zGD2GUs96 0XvHc75XnZ/pLI8EXQf4OrWOT+3DXFcQi36iZkoO5aUjczHQ0//il0Bl1ssl/BmLJiEUgPuQxVhS GCAEKsQ1GaSQpZF0lgvABS4A2i1HOGKLBPi2VIgATkG6JJziTqXLBj1oAQSwVuEYd5+6mJIp8jrK MptJViX5kAf8elhaH4YvaQpsBAMYQQUIlk0MVOAEFRgBBvaKAb1GAQNRqEBfMYCaEXAAA7E7J8Vg Nyc6rTOK74xiBKbomSfkgJ/6FB4///QblFVjoO/go3IKKtqCuvF7O2toHlPr0IZmanvhkyh2CKA/ je5sU0PbFFX9cR4XqMW3QaLIRvSCUv5kqClDaanlYNq0t6AIgD25KXQXwISunsQ+K7IQS+O3FAdy S1yEO2ouXfT/3LKUBXAJ6h9PDseTo9VyLYVDgLW0utUUygVqQaEkIVxa1v4y6XTVbFhmHNava+Z1 mwe+q5MA6yRukm6vpDsBBiQsYQf/9ZmVQI0mGjuxxEY2FljUoqH+BCh++skD++xTn+abAhPaII0a JWhGVys+1q52tarFaIzDh7PYKiEetqWt0Lpjj4Q4xCwSkc8j+5OfpIC1KE2BqXJVwl/CSPlAM6qL JiHglnWFhclP+XL8LpTfBxjBLj8qqrE+ia4NouUsfbtKVNML1U0ibUYkgFAK5JsCV4YohRx62leP tMwq+/fQhSBdIxazghgSeAWWcIAlsonXMHEpTJg+AZe49IEv/13J0yxwUqhPwALDtgYXUQSNZKUI qC7q8wn87CIDhFc8QYEROqQCT4x/RuOO0kMJN7ixsGOs2z5iCqs5c207BHAdnu1sH4Gcx3aK7JOx xGWRdFmpMQNNF7ms1D9rS+68Ksfc5rpARjNyC1fKgmej2IeAtZqff2C6om6xCEVPoem6zGUiFF0B LTQiEYRyqSMSVutXihtWKFfU1fxY7UgYQrTEE3EwgfGrFDUg8FwtjSVOf2ADG+i0yEeOJSuRvNOk /gALUO4klbMgCqV5OZrcFDvJYnGyk80soBQw4j/Bejm/YdQFCKAddtiAU9+p6Dv2AexgD/vZ+jvj r3sGqh/nLP8e8Tgj0YimnVORT1XowV8xg0R2Yzb5achEYDL1S+5dZVstb0FBI1vkFqOgRAMoYsL6 DCTvo6yIXGypy1veYiyzUYUsCELveXXEkIQnPEKPF9FWuTWhoY7rRUCCH6EnznlEYBpLDV5MXCnx uS2VHOSo38ASQr560Is8S2BC+agnTGq+7tWwl5A5B2QnippnMWIKeOcWL4AbWBsKjCa+tfIqZWwC 2AAf9xgPeIjeUe/swzoyyeNMwtOEYHcqaET/Tm0z+sed0ePX5OF+QHCSnrjASj/1gT+Tb9V39tWf cso0tGBeMp930X3wZENMVTA/4sIj7lZ/D1AF4AVKL/IWdJb/cD+hQWUzOAmyIP0gIY5HTJtEIhQC gG9BIUxwIl6lXSiRIYmQEp13aG/lQ3DFLwNQAaOHAZK2OZq2aZ2Weq03cgZggzuIcp0Wal9icmGi cqRWhHx1WIQVWTWHG0Sgc/pkYjzHT2N0fNABRlbofOwgfdaBVZgiHlg1D/IQSE7HddGmD1W3Kd5R HdchhqBCUOgXKtF2A4ajD/iQEOcREdfWSa6yHiSgNPHRcGF1FMiUUvJGbiOlSIOnSFuWiHsneAUE P7YCVHhHLgznXAEocOrigPxmLgvSIOYyVT3RSh6UI0OFeAz3UyRFA111EUaATMmFfynoX5m2JTWI V5BRaZTA/2mb43EhF3IfZyWCRWFhwgIrR4ykRoxRQIzKSIwzN3Pv5GGRFTEg9gzDh3zOIF9VeClY lQJf+GLSx33jATReR2ThoQ/BVj5yCIbnRzSGow7BVnXBBmTZMTQepR0KAhEH8R4yoh9OBj9MVhRQ hkBBRT/I1UKlBHdwZx8+ojhswWR2UV3P4nbb9QA+BV4wEhYMYYHAwpAJAnkSQoFUsV7+ABFmyEtm MyIsYlOraEzMpSGCiEx8QT+TFItlZSamAyZDAHpZ4gAn4ACU8HEhZwAb0ABY4oslt4NgomCwd4xM KWETFmrJSGqpETvOmFi7l0WZRU/D53OxhihfdCk1g2uFk/+FWAUe48F03aFL0iZtp6IPumQqaxlt TSAPp/JHbKk/3beOYOiO6keH+gBweygWTqNdUsM1taJdYCUtkcR2bXdJKumB8sGIu1IXP8VkkEh/ Cehc4TJUYfFUhDM3IsITCVc2olk25VETojkPo2g2XAEv8eE0U5OYLiktayMtNDlx1+QJitEkXNIA m5YlPQhyQJl6v9hxwIlpWbKMGKCMR/g63GRXhGVYsCMJu5cmkqVFgEJPr/YMJvZFhoKF3jiWZqkd Z8l9B9BBcrgO4OGWEFI4/DCP4eEz5NN13TeXPBFI4zOfcHk42mEuPyEj3iY1XtV/dUEXjJRt8YJM GiJu+rf/JPyHH68JF/AnIygAIBKBeNlWFIjJNAZyb/iGeDblFS/AE6O4U4zXnlzRD1fxKbQ1VaAp If5Td3WBbVFTBUkhb23TERQRbqTUoLdpLyS3csOpejiwesJpnDc4nErqaVaiVxXAAYJFWIBle4RV GnslO9X5YRHwjBFgTyWAG7+ncyoGa19Uprh2a8iGhvsAHlV1D1yBKtvBFinapvX4lr5Uj3A5Ps1m KnOjp+s1PrSlKXIpKjVxLnh4bQMYFDkqK1KGgH3nXzA1FixCmfehSGoxgDA1LBXibk/jdqSkAcPy SqMZgnP6eAEEiiJCAHYTBKnJlmvpZiySkNk2Ul0FZYu5/zU/imiY0VipoUO7+HENAHJE+YuplwDG unpLsAQfoKxEuGC0N6US1iS0B5VoUqUUs3tJmFgeUHP2VDtRNAU65wziajzFIwRfVIW4lgLO557q 90Fzs15z867tGa80haef4jPgUa+nQpf1uZb1+FH90JoeOHh5sYqVehH9Rxca2mRDIhQmWD8wNaMH 4ltN837xZm2DyTR0ART9cXcLOJqgxC1/wxWiqTikuhaJI6/6qpoD96Kx5FwpyUhSIxfNgiG0mUxD 8nC5ykye4zlIOaTJugEJwKw32IvEySVCagDPOlh2BaW3t1eo8aR6RZ3nNAvmBDsdEzsoFgtXtHO4 oQDg+v+1OWAoZDt0X4mF6lpChbMAISAebRsC50IiFNgTgsOmUcVebDke+Hl+3YGG+2kq+2mPgoQe WiGZTtYfVaOgGyI5F1IIKOhCMOUDa1GJDMeHHAtTa9GBrFgUhik/KFEFrwQs2JIDrEoiB8Cqogks OqVBJOpBNJWaGAiy5RIWlxoWlyR4QGEhmFplDjubO8tM2RRYYEI6Q8BpxZoAOCCcRxqswsppsDdh XwKdfeU6hiVYURqlf2VY57R7vedhNKelWxoLYKoAy3AbPle28tUn2Ji28bq2HQSnELJLgiRtJNSe 89C2fCptWUifEKIpfzSf3dGWNTEQ7qEeibShTHFMVpP/FNvWsA63K4VIZRALUzKCbyk5FrCCSgkC txy7qA+coy5BAiHwYntmhTkARgG0qgiHgaWbXu0pmiNamoMzQo2ztidSLBXyLr9FsHqhuI8bZT2K f4/7u5XTggfDAS94V8w7nMYqrB8QrMR6pCIHJlkSpRLWGIHFYBUmV3pFWE8KAH1FMVW6pVR5lVQJ vvsEDShGDIDiDOo7hZslQe5bltv4je4ZQuARQn1LAG/KpuJBnvo5l5sinkzXQQAcEAKRj++huwda o9oVF4SJoAAJoRwawRPcXB44d3JhIP4gNtplIJyrmETxAu4pANnyK0HQZwhHoqxaumXDqi6sqo4H moMT/wCdGKoRwiKhxLHWNrntEjlIkUy3eghDTMT1soPHKYRFuwE4YKzNjLwJILTCOaydhsxL6ayR 0FcaBlgvB3ORcE4T9lfZGjtjXHPAFwu+F0W0Q2IkFoVfeSkdcIXq2oXfgXTfYTi9NMf5qkt+vLbj QT6B+6+f8s/zsG8hdUiJtB/eBsGKyjYjIQgmKFaoRMyM+VIvIRF/g2QaAB8XUgWN8wLxx2SQFB+k HARWyADEgwAigAAnrMIioMJBIACnSjeqSlukyZCtC1UZBCOB9zhv8Yf3RgI04DQxqVx+4aPGTBhy lVeow013JZRF68zGOtXRjHof53GuVzpWwkPedCaQYP97h5WlYuy9SlhEksUatBMB4AquxtDWbqwb b3wpcJ1091wd/uyFf6yaC7Agev3H4leP42EPVFU+Aj1n/4YW+IPB1wYXj2ygQtKKIhHMSKGgYFU1 bIfU+2ehMnJLEpHQ8YZdEjrSIm0f0ccTqsqqa5vCqwosp2zSpTuvtgxV/xC7rCmBuWvB98YWDeg0 UCA1HKJ2bCOTk1TMSY0kTzKLn7YExzq0VI0Dzh3NUw1ySOlxpsPNkZBXkpBX3CRXdtVg0rQC57TU ALACJQCN5ARivaCta5xFI9adX7RnZxrP1pJV3Li24TnIYyl+azu/ZNm/ZTnQfkqe9LmWKUpIR9N+ 8OH/Ks8SiIn5SI56f5BrNZL6Ldl1QC6JiCmCTPL22aRtLE0gAAsA4r8i0y6t0iaNwig8Vahb0PxW HqBoeBSo26a4brQLs/EiL002LRD84A9b3EhyV0BAe00yap1mpKg31c793NBc1b64AVdiOqMWTqUR c0wZalV6pdYKAFOEGu6UWOn9YVq7DBvzta/W1mT7O8kDWslza++Q321Olm0uHvs70G2unoLrqv5q NCdiLu0CFzZaH952TCQVaD3MuFwD2cTNTPyXNG/hVGyx0MzFSPDSd7OyEAdwAyUbADJNN3Zz2i+t 0iZ+cKVblonTE1dhNgcQrxRYy3JrIi2ybmJHFiOo/10UwTQlZUwPZyRcg1ImCMQz6eOH4NQOFozL OqTSDN1J7szN7NwqkLxBO3IvN6UX1s3JiIwsMOVJ6CbaPs7o7Hu4sXtlrTscUwLEYCj6dE+BkuYo cymfpUaWwuZ1XtdZOO9v/h3XASHy6Z5u2XVuSl67HSQ0ysCm1MMWIQN9ITk5GtmblwWTc8kbvRAz 4FSs4m3wx3C6u12vojRXcQMCgHXzINMk3qKrCkY5IAJzEwQtOqIob8uiWeqmHb93G1Xl4iIvALe+ JUvxEjW2LvAnNRJYc0zCpaDHlX/Ajghy9VcURjrLDN1Ci7zPneQ4oAJLEPXNPPXJmqwoB1hQ2pN1 xf9NlTCl3a1pdgU71gulVplFEbB79ETGWOkxygC2b/9qcv9F5ootx1emY4SNYPnuV2gpZjSWx3PP fcSFZdnmhsyfeT4Q+ag0Ce6HFqsf7wcrj/9+fGfJ9WMSFuKA1VWJvI0SHAKA8RYgkRgfX6GatMU/ Mo3CI04ALx0ErW83hmfaCEeyCiJCrzuBI5RU4AE4K7IDcLsDOA+bKtRtiLlkIJzoRQ8Yz+mUVMzE TY/kzU31LaACzZ7kUw9yzComgbXdWCztmgYmRyiliLUxFIPO1w6+25r+utMxX7oMJaYbxcNPhUJG tnY8az4OYakyKpM8mAIICASDgoOGC4YETUoLAYz/jAtNik2UAZQQTS9XEjMzVSigoJ8oVVUkMlUa pxqsra0or60Ps7S1Wbe4ubq7vL0PGjIkwi8vwsIyqjK/LkwQEC4ksrXTGigSTQHZ2AEEAoMiCAjg 4EEE4UHoQY3O2QuNCwcQ8fHyEJb1EC/yxMSYz8YuAgqEJsMHKyg+ZCDTkNAgLYOtkCl8AGVWr4sY M2rcyHHXiY8nWHxkYeDDhpMbEqRMwDIBDhwsYb6ciUOFy5cul+BYwnPDBwNRoozgQMQDEQAconDA wIIFBg5QOQCYGlWqh6kRrgK4GkEB0qlTPXiIMEVBhKxPnohV8ITBEwRuGSAQAkOI3btCCOS1IKQQ /6FEc+UC7tt3UN5IhxYwIqAYkTtslJrkIyYBGrRUrjRQNAKlsxHOnUNDaWVwtCuLtx50XI1xlikJ B14ckEAbVDXNKCC4CwGBRKpptGBVg31DgBIBNwIY7wYuQ99w4USQQ7cAXbsg2QKsszeZsr7ZEvq9 CK+ve0ASLqq4oLE+IbDSv5BZ7JyFvmco9fGrZs2/v3+MIwyVVBQYYHDCEAacxNJKK+W000wq2CQT TTS1sNMSPp0QVAUBBrgUSE4V+NRSVUllFVYRIBXVVmMp4KJZJZzF1owutqWAB1O0BQMMDNjFQI+F BSnEBYSlYE5chSBSWCHhEPAIY0pox0gT7kAZmf8lmYw3wxXjpYeCMD6UYgopn5yCWSpVLARMZtKM VhEtWez3n0a/qOLClxKQkKdvVaj2gAzO8ObCQhZRU00VsG2D3QICKEeACBZEF2mkIqSQDnbZ2KNO AOw4ExsEtBHjAj38ONMPBCEQU8pA7MlAg0KoKMRQfJpB5ANEmv0i55y89srfByN9wMIHJinYYEst PbiThC4h22xMMC3BkrQZnlABETxQoO0IFXBQgYgjlgjWVluZBdVWJYgVQVpZlZVVVz/++IQCDChQ VryEESmIkeb0G05efxEmSF6CFFJYIowdshg3VL6DpTxZejIKK5hpxoqus7B5UK4b24ILnLv66kv/ MC7ow+kLl+VKEQnONDNonxrEWWeaptizQAgCIFIOOsd5I0IG4hAQBKUIUGcdp9ph58zS+eRDAj9Q d9q0qXma0swOTNDwqqwqZ6zyaMDZErLIZJedxQhUJcVCFCcU2+yx00qrE0wq1ITTTRRSqAJPPAG7 9ghEECFgUyGSeG6JY0VwYuIAdHXjVmddVUJZ6d7I1hM8BnbXj5sL0WO8nPvo+ZJ6ATyXXwgfAuVj kVVyCT8BpQmrQloPiowPRsyukG+gfea77/jVJ7zZGf3igzHhcUKCcByf8mXKwLViyguWHGC9co0K oD32FhSAAKWPFt0Ipo1kp52p/7Tsgqmlctp0/wgL5FNZQKiGwMT99xthJjBm+vBLKp3J2DSIR0Cz hYRtTTnBEhqAkpgkC1oz0cmzbtKsvMEkATqR1oUyxKEVrIACERgBU0IioqiwYEXkapwJztK4d11F XTGKEY4cxxa4pKUtbvkXYfBlDoINiUn6Gt2/Tpe6RCBCYZZohGRa551V2ClW0UDFmjR2MdEEjyL0 KSCdlvE0CdijGL652C+EAY0odi1jaSLBDF6AjeJ0Q3sCCIIAIDXHAsSgAODwnjikkw6kZad87ENZ 1JimG94Q8hnlaRkEmGA7WaVJGrQA2yzeJLOxafGSrBlW29pGrGJdMCUNuuC0JpgsUTqrJSv5JP9K DGCtCnjQgxWoQCu5FUsVIQVtUnFRBIqSohZ6AEbz+qWM5lWWtLClXmy5AAKUycwLKLMDBOshIexi CNQdRi9FNOIj3BGJyJjKBRKLBitEcZtYXEyM50QncDC5i0K5hmWBFIYYoSADgqzJB5SskzDscYAb NKGf3QgoASwwUBF4IwNW8F5C8RgE6YhAjsoxX6N4I0h+hMdmU8voyfKxPo4+jU9iYhMtDhK2XFiS nSi9SOACBISgFEtBzhKlTCNkyrqZ8oGmvOlJDMBKEYUkJE0RVlNMyIHE/XIKZ4mADGtkr7RMYYZm eapYbjiFeGEuLnkhTF9Ct0wfBfF0ByME6lD/tzpKcLNhWRJVec5jCt+gwhRwTSMU4RoriWggNMKD EztrMc7kSaCtkNRAKQR7Tq9RDDaIhc0BIqo96WjPAgaVTgHwmAMRVHYccmxoN3a2HUL2Qzvu2Gj8 uHlIl5FsII3M2ilm1yf5hAY1cUqpbDHSSWJtgCcXnElMYcIguJ3ytyrxLUp8wlMSYgAAREgRgZoS BaSc0CpZKWpW1PWusli3LDW6ITHlVdUhWVUwgrBBD5sk1tSRFzDZZIxZL/E6NqLME+mhmZpGijFq ZOxNA/STSVM60mroyR9Ng4bKjCHOdP5iBrSxHqOS40aDzjEDEM6AgyE7WctauKF8zMamypep//h1 J5Hue0bJPLs0MMpVIUbAZwAR0hn4FCq2J52tjHVBlBEExaUMbIADH4islxhLWsAFrrFcAsrhmoRY rYwlJ09gICYXKJYiBBwFADCCCKzwLFd+kYzMUqN1GXNe9HJmmJ2pzGU6kwAdCEcKlikXaM4lmmAF mOqOSGdnMHE8au2inoRRii/5WRS+Aekn0GTXwsKWv7FNCDMWaRkZvPZPhDrjMgRSngNExp+OKOgb ISthhC7UoRWOozcgmo0DqKMRUTtZySSTHe5IJh4BMCRHUVayWtezjGU0hUIa4ib9ZiFmMw42Ltj2 EdsKFwepPCVMSYnKlAAZlSqJdnCDS1xiGf8AAyIkkIYKJJKfOuW5YOmKCUygSxpmV7ttwSEDLhAX t9wLrD8qmF0KZo656MVg/RovwuicsG4GAGoziG/spChFjVXMPQUBxi9EQ5EByrgWNWOfM04xUhOL 0Wvw/JSUsqe9RzlUOpwuQPcmm9CHNjQdOWsUh4UGSLWC8Wm62U2pUOaMgaAnGFvLHe1cpTX2aO1W XYttRYRN9CwU2ycn0WAF8UaTadfkWM9mdrQb1MDh3ra2xHqKgExIuKKeUCxryQGY4zUFHvHIqfLi ked2RBez14UBdcELNQ1jGDk/p5r3ToR4nYQYxWCJiZwohcRKcSsWI4QzhcfnZ0IDGrz2Gq//uQge fwUrCtn8czyxgYUAJyYNREFgjgbNBsez97OPO7Z7EhbBZAtgBT5mlo+IaJR2RPAOh9UanrqRgjtq jp6ByDchOf+d8H2X8BdPMsZFR2ngWjqED/TEWA3gLQV7XLeY7jgmNgnygqx+kp8A6yfW+ghPMSBL EBVIhFqXCgAokINxm+ACJlj3BXLAbna75YYusmqZ42J/ZR5p3eFQf4JRTdE0CEeUMIwAWq8TG5Tg Xn9lCmVEYMLwJcaAJgWmMbeSgWeUGrI1M6jQexF4cflFC4BSSA6jROaDPXBUengUctKRAXj0gt7j UDmjHOXQDtWxe7XnDNvBKaGyJ+gRhOmx/2sKITusYBC2whBAN3TJ14RZ8BO3hWwYkjcVpFulRFM8 FmQwVWTDxUAb0ADWxlMGMARJ9hFQxiGxRH4d0i0i0kIr5CLjtkxmtm45EG+BgQBGAh3mwG4FIxdr 5kxCwC/1RjB+gTpKgDB/BxlcwiWdQAp/9YCYoSYiRTHucVfrZFIOh3xmEx9kdCrFIB+TRFioMQuA wk05yE0iMAgCIASQ9SjYo3oWkAGclnqmN4PgUDTdwCiMYh0nOFpBIAXnIxnxQwwTyDyycIwkRV+j KDNO6ITEdmQ8oRK6RYXNkn2nVH1Lhyy+1WxWB4YJIoYHcgKsRDhD1XUrEhVjIRYlMC/q9v8jPAJ3 QLJ28bg5cccX1DR3BHWPdYcIRGSA+2YJiRgbV3AFnUAbLjA/JNBzPOcDNNAQNAAMMqBzEZliFGlF eKWJWvQLoYACCEYbErCRXmOM+kQ9qLZYi+VGjXIAc7SSjRVZDkWLPwODJdccQVMOKYcI5kNaMbcb gXIzLVOBsXIrKDaRFWFFKfYxx9eMyXcCXjiFebMBE0KFOaV9NtVj0MZ9R8ZT4MdKICFLTSYSIVIg 46J+X7FllwM6DKAXoEMXocNV80ZeRJSHf0FWqPMYSrRE/qAJXXIFgkcmgRYNaEJYxqgBRnBXLcYQ mbFOGElAtFAKemJRIjlO5QQKLxACnPL/DrqRNB4nR6BnUBgGRwcVA7IIg6m3UAhQYZoFDkITR4DU alJzSKYShCSAK0pYELijhLIQQHKymEqJSW3TQBmEN0wnE9VIfcYpIS9hjaLEhSgBhhvAU8QVfuBY AawkS9ZpIBwyFGizneFmFo7TFmXGZvECF3Y4OkbiXULQAYMglzagBOJlA2FVl2bFGJEQP5IRSB4Z KigTUiElmf5JWIlpMWHjJ7y5iRgHcygTDXxFWI7pAg1jP4u2kymQAgdYDuPgmXEkYZz2MwUAYQ+2 epMlCBa6R4yhNLuHPkuDDaBSHuPxNLFjCjSAJmEiUhgTQL3ZjAyEbEmnE1Cpo8M5fTd1/0HZZ43W GHVTx31aKYYGUH7iyJUfUSBONhK4pH5k2TjeqQAw0I6jw4p4gU1adY9E0i8LUBj8Flap0zCPwR3s EyoBJyZulSaFKSZyWk5HuCZgI6AOl3wHCjV5gqeClR7hQQn1JghRkg0mox02yFgOtUcxCSl21KEe CnoFkAMhKkdCYw5BUDSb0g6QgQ8lJhsTB3PqEaOPBHSlwWKRlB82eqNFN1wQNJx5Iy3WiEF2A2Q1 cRMSMqsLsn0oYW0+4X2sVFxcaSDkR6xQygJD0S0m0jhYQS41Mp5yESn3VoDRFJ+aMzB0mTqOUZ+V cA+gijIG+VekwCfSQ0VUNBr+Y2gFuv9X71QyHxVG51QF+kAMVJICF/AElSMX6sAd7xB6jAV6QBOw FiAAMHgEEOZYMMlHKddQ50AAiKob3AFan8qi6EFrbpVO/hNJ+JUakseqRfdSu1qFVrhjERIhLGET KFuye4OFWaiNJ5FjHwCGnaSkSkqd1LmkXvktTFYBVPEU48JCLSRuAFh/gPhm0LFDPVJ3RPKl2CRe eJgw/OIOStA6/7SIyUNrCSqBf/lINMOgx1gnNHpowlYLPhCBxiCKcdJ7ziAFUpACHbBCR4FtFNAB KSBrpkap0pEdciRZHeoNfJGKFxqiJpcOJlep1YGoPMkbuycqZCQQfPaXp+BEj2QxQef/sU0ISlGZ W003IQmgskNqshGyBHVjUyj7W1wYhjQrrE9qLTgbS65brOcHACsAFhQQOBTAZUn1fs4kf01ib/lW MHpoCOpZRNtkgI7BGFhiaVmSn3ziG18yaH3mmKxQcHViGmA7oJfohA+gHgFhcSqzPu7Qth3QflNW Zejns+83jBCADqfpYJzZUDDZmTFYABNgi9IhDvhLe+6wYesgjB4Wm44buccAkSRVlDHjMZbrhB8Q ZJk7jZ4Lug9MUzKhnMzCjb1aEkmaumJ4szvrU+T3LbX0s1YGQjKSAy8iF0U7Xqcjb75LpnR3iAjj DaHlRxATG98KNZCrtQJ8DGYSK6xQ/5iEUhEbuK4ZOb0SKEUkGHOK67bjqwMm4MRTRgEB0hUp0Bvl kamXynEYBimQ4nHzW78mBw5WkANjXFmbGj+gRVqAFEgvwEiXUbHNwGi2OSsIcSuRVx9EnMC+wsDD OTfJ+cCdW7I18cA4UcgWbBLemLrW8sFdSZ1JBsLfQkuyOxUrYAKVTAEmkAM5oAPtpwC760zQ0bsE sHfVRFbqRWdTa4qXIA+cMht7VhmesCej0GfL45hkghn9pSvScBr1hcBFx1eNW4GuoBsTmgKcbAIg hDYAkIZQ2kksAAA5MIwLEJ7ikKkiEAAXyqh7VL/VDB0hylCLMsP2oLgQW2I8fLZrov87ClERuINF THgLHavHs2V1PEac1Fi6KUvINmU3J6tTVbdTYejIGiyOTqazIuK6PCuWP+t+b8gAdUi0njOAeMck 9KatTuIkrVwPUINnPygMQGgMCdpWcIUCbwUMplCuAkq5fmp8vxwnGdhWTmQx65MCUvCLUrDJOaAt OXAWaMOzJFIgHNADHpYOpzmD0QG4gutQlKpH0REOOYAAT30p55OZ/8uD8dO95xEMdSUM+BMQoFjH /oMfYi3PM9ayxClBo2s3JnuyJwvBKms3dDO60kZtz/mFz4nBNCt+Tlp+TIqd1xlL56LMzGplCpDJ zRSAnMOHg6Av6WUIVEKfnQqQAMb/pw8ogRF4kMuT2c8bDADqCkJsicroy00YHx9YgbisAc2ge21r zDqgAxTgQew3uzwLANzGAktwQkLNTZl6muEQg7v9UKuZqTBQAAxQqZnqPZO129Zh1TazHcPYe7JZ hLAyEG4sK/jka2QdbL6l1hACIS4RweDN3bpqwUh318FaszarZOd9bZtEft6C0LM9uyyEZU9Mf8r0 h6Csh+dFZ/P5npBNtfvQNPMKRn/lvM9LCs9bJiTttRQTWBf3NQcMY3lcQBbBChVbRhRjNbk3f1c2 FZD8uhhgAITjfH3zzDmgDsctF7dYzaupYfQLAxOgAJS6R6EMHQ9VPtVBoVOdSGC0/z4hmIEIIRH1 BIoEmt3CZhITlJxKzt23Ct4RTDdCelO8qhINIIbWBqxbCY4Y3KQswKRiCC5TwZ2yGyNdEQH0xwAm MC+fAzptYcp+USWNoR3boKKeIj8bzdEtitkl83IE9iXBEA3i1LXGU3jYO+HEQ6AQ+bzppAHMkNo0 /eicrMmSPgGvXQLjQtvD0hQYMAEXsNvKtNt6RA4PpXoXQNwgQC/ek6kzPgGsrqm1d4pVTUhufAwL cQrULWKNpGKGbuT+cTdRntakO8iD7OQtQFMl27lSzqt2LYaJTNDSqWRJBrut+8hQRmWy20uYzNDv h4dFYwP8Nqj0KYiREALstUQNuP/n4yHLgSausCAKciqnsBCYiSk2IFPo87HrZOM1p6UPd9Jnjv62 E7ACAf/arttK4hjiIiLiJL43S/ABHFAC8ycX+PvUobwz38zb1syw7HsO07G/QWApnfUP57E8JW0x QIenIANjvJ5Sbd3PwC7sLWAhxR7Ib/3k/KxsxtJ9WmnewRpLOMtTAi2sINyk8P3B3cIhY74CEQBC hW3fdOvp+yLxT0sA4q7KEvutH1aBjpg8ekIeHy2BpECnBqbSDYe9SqkaCSEDFIjOgkUCIVDMNN3a mhzbkyzYHg4uw0LiDd8UAPAEa7ZmFA8d7DsBvV3cgZ/q2TypTw3yOXhqHhY/jBT/hDB9CgZxOwbR n6MBGmK78gWEjdkn3nVT7KE/7E4+7Mgu16jEW3adY1ae5UtK0AJN9Ev6+tYJ9PCdhmjz2hGg9Fam u/ddzNwEWjagZooQ/AB5n/GQJSW2SLQGDQWOKHD1uBI4+W0/uSpNuauK75jUX72XtWiCAqnNtjfN ybAt8B8UATyb/lMBLrUtLM4nLACQyTkQ4zKuyeITBMQ9WQwQ494DCAw5OQhBhSIIBYSKgylBC5AL jwsQLy4kmJkkl1UyGp4+RhqdMqQynlBQD1msra6vsLGys7S1tre0KglLCTi+OCrAKsEtLb7FwgnD y8zDwDjKvQnTCRvTGw0bGwYN/x8G398fJwbjFd/m5t8n6AYV7g7tDunu9CP2ACsUEys5+hSDOhB0 SAEpQKUXCCtBgCABoYQZDRG+OCih4gsJmkhUIVGqVJWPIFF81FgFBQmRo1CIfKChpQaWD2LKnLmq Jk2ZuHLqfCXzkwwXLixhankSgpQUKQZRWAGgQlN6TTFU4ICh6omqLLx92Lp1idclJ1gAAFAiQoQc JnI4CmIIAQJEbt0qKoAoiAi2eA1dKBQE6SRICy/J4EiUow8fMnxogNKS5Usopxar2km5suXLsXhR mybsGTFnxZqJ1jVMGTRdm6tZ05ZN2wZv4WB7qzAOnG1wsOfZpk3P3YgK9/BFMP9BwYQCE2n37iUY iVKkAE2aQGgSYCL0hRIvkkC4CeglCZdmfK+CMaPGUZiqjALpsn17mapiYp5/q+dgoC/Su2TCJIiU /0npkIOASumzQgQUjMCBU2M1GBUGLIyT1QcssFBVg8PlsFwKBcSVAwMdFqBIIm7lcBdbCAySoluO ALYQBJeQwARHmpyCyWCejOLJKUxElsoq9AUp5CtQzFJkLDgs4Us0xOBgTJOdtSAaNaTpAow0m7mW QGuv4SaPAd6csI477bgz5jrkqPOOmOj0BlxTTMW5wgQUUGBWcccph8AFzDkXQAiUYFfJJUJtFGMp LpxySqIzZrRRKSTQwFEn6rX/V6lLN9k0UxZA3jQkZjUxRkJFEhwQQEUnbQRBEB0IqMNSFaywgpu0 onmmmGBulatXr2HA1AjImaCDDhcooMBYCjxByAUMMPBEsya6xdZa/gUxSIdsGbTQjEBppKgGh6Wi gREspQKFD+KaG+6n7MZyJGbmxptKFlDwskQzTh6Tb76hjSaaZ1dSs9o1rnXT5Tiw1dYmbeCMSWY7 t/FmjlTuPDUCAMEBYFYEGptwwQXGecxnCiP3SUkIC4GXXVCDducCE91iBF63m2QimH4hofDeS5lu Kl9NnLZbmU0lXWT0SSSgt5B/w/aTAz+yyilrUxePhcFYFVxNlZgRnsAVV1dF/wEABT2YwDEAFXIA gAIMfMzsE8/mMCKKSVmbwwQjEvBIEIHFWGNiiqIy7uCMGRHuj0EL3e67rDBOZE5F1gtNMf3q26Qx T0oZTGnNpOa5a6B3GY5t45QOjplm4kobxeegXmbFUAHn1AhE0I4gxyKHDLLbSKXwnxQLAL9AAEFJ JDN3mAilSRV+e8vRYCSN4h6mPffMKdDytQK04rL8DIWqlxCaCfMLkJxUglHvw1SDWVfFwfvww18V hBFSuASFHyzxmjgncEBEcRGIAv2iwIEIwM1tzLqbshgxCGt5SBAsetEmFPW8wBHGCKdAl7zU9YDJ uOJn3AvSvBpHr8iRkISMM9ghvZKkgtD0Yl+YO0YLZzilKlkpNasJXTe6cZsw4QpiakqTwtpRDnPU pnVuekpT8CGcsUSACGYxVgQUMMUpeiw5e0FACrRIAMAcQCIaqVknMgG99JgnjDhKGnt21piXNIYx N5mMz7QXNCCFkI4dfIAMInIRUpVHAuXTQQpe1Q+MySlWiOyNVChWD3pgIDYf0EYkv0IODIwAAyeI Atf6V5wL2OACHSgAiNrWoQlMgBB3OZEhBJEDvgUmPTjCEWIikxh0oWsxi+lgfBJ3xzuqsBXvipwJ TWiEQAAAIfkEBRQAWgAsAAAAAOoBZwEAB/+ANoKDSCFINkUdNoc2KYIXkBcdkAgplZYpmTYEBAue AZ4LAaNNAU0vTammBy8HpUoLnLABSrQEtaACsQS0AZwBNze9tUoCxUq8AsCjyQLCowLKAcoEytHW 0NXS0aPQzqM30uEL1wLaItLezuHRz8vuwtbK7OXX9NcWAiL5+hYZGf6OFDgSI4NAgjFiYDlikCFA gwUJFviHEGEMEBhBUNGYseMELAysTIgxwYrIkgVEFChppUCBHC8n5JigIAcDBghyFmBgs4CCJzxL 1JxQgmZRBTQnJM2BIEeOCzkrVVoQJAXVq1Ur2VgAAUKIrl2ZQHDhQqzYsmjNMmHiQgYTGW7/4co1 QheK3bt48+rdy7ev37+AA+8VdEhRIUQdFBURFCpEEylSFkSOzBXUpyahTGE21Q0VK1anTl1B1STY jVTBSqnmfKD1gQCuTpsON/vADduuW0vA3Q1YutvAXgvv3Vu48dytYQt7HQz2tHfAbruWPru59OS4 hc1eV910vXbBylnwl0HIw/NH0ics+M8gRIcEGcpf37H+xxgmC7RsyVK/y5NKtQQTTxPkxBMDTyig IIJIIVUCTA0e5RRMSsHUU06ZYBJEEFTZwKEnKXzIFVdj7cDECzuU1VUIX30FFlttySUDXTNCYYRd DzxgVxZZQMHjj0AGKeSQRBZp5JFIJvkj/yOELXDIIYsxtlUokkmWYSZUhtKJKJyNIkoqrrTShCuf jelKaWeSOaZzEBzQpmu7JRcccq0Bdx00tD0HnHPaLYMddq28ECdyfvY5Sp2HypnddNXBRudwtjmz jm/W0fadpOU8FJBD5cWXwXoxMGRBevKp948Q6ikEA0Yb1QcCSRP49xGASk0Agq0VWmGhTDoh9QRN SDGggFBElWBsCSAgJdOEMzXlLFQ5cXjlAlZZRa21oXilrQsoQiBWiyx6660LJMQoI1116dUjXkq2 6+678Ba5FRKFGALlIFI0spUgVn0lRVWZiMhhKZ40ARZYbp4SaGhjgjnoo44G8GZyY15xxf9ryrk2 T8a2zRnOMu2806ehzjkqnAQPIzoycyYHNyfEyyGKXKO3mUYpd/fYg2k0+fDTUKikiprepzGQd0RA qFKUHqqgXlSfFfjF8J9+J510a61KFeXUsDY19UQOvzJQwNfDDltUsTIlpTZNEzb1lFQYghgKwFRO 2dUOXn3FRAhrqdW3uXMZUSO7Pqob7+GIJz7kIluFIEgHPSQ2ZSOOhJKCFF5V6QkEC0xZMMGpQKCa 6GN6NhoqL7TiWilwHnCxBKn/eZrJitLOsm23oQxOdM11LF3GL9OJ8m7DQ0xnKxELnzKdtHcTDO7b PR9ezvXww48A/phX0agY+QPDQjF8Xyr/qeth8SpGTifRUau3kmTFrRgppZFSVJRAhVLKLqXATWwr eOyxEfjf/xxUFGOlrSZtS8EkIJGJS1zLEyHwhCC0lbdwSYFFZinLWs41oxndKC/rstHgfKS4Epqw XYRgUWE6kAkpXMkSkbicAh34wFiYgnOfuGGbBDUaVkighwsrBWwERbzPHEAC3RCiOQjwO+e85hvW 8V2dcNcNlkXxUbkhXvEeZrvjEMpR2pEOyrC4KJVBrzve0dmlvmM97BlkU/JZyKiwsBDyWYR8TUOf fUQCtVhdjVa1KiBRApgDYuVgf0lR0CENWCz7AaB+xgqgAZFygQkxMCdQyRANNzciEpUo/28XxNzf NMiWwNnog3sxgg/oooEdnfCVsFycDSTHiMS4kIWZuIAmNXGtTHTil6IQHQR8AQrMGCxQgbrCD2F3 RGXuphVAVOYRi/cm5MGGmV3MjfR0E8bkXMeLR4STNJc5AwmUs3jhZJ5rkEnGabaTeWHEGc4sRZs0 YqoYaxyVp+44qqZZBGgIeRWoBMoqELTEfSK5H9YaSZT6BXACJiAKAAZYyJqYbaKSfCQANjqBCBAF osVSUE0qSdJMXqJaWfJkuLz1gghCBlx8Gxfg6oJKG0FhlRpQpU7ZFcuevpJenRvELBWYGElcqRK6 zBABUrClpXYCFKRYgMEMxooXWOyHYv8KFCsuJiY1WRWrqUOZ6sZIqNyYrGbZjFnHlIcyZbr1h+KE K5zIujxBOUoCJFAnWaeTTim6hnfTk2d3dtaO79hTAKTyR0IqQhAYhEp7RzBPedbzvfW8z2kYcUlJ SPJHANnvWBut30w8GsAIAMCiJchoCUJrLCpo1LUTTZsJUptamVTyKUnN5AuxxRUXgQVvLAou38ji AhrQAHA2aiVePig4uKgSR4XzqXRL6CTGPS4xOsjQJK4EMKZaxamiCC9UDRaAsIZ1eMtELxB96Ezi lbM1gmoF7NAbzq66bnVkRGc7L+a6MTrTnQ9Dr4AFLCgSiBWvBibidJxo1pkBQ7/Rqw7/dy4lYcHS YzzYuyOpsAC09gAkVaAqgKtGYhKEmqRWMwmkayUawBXUlrQdNUoAN2osAEDUtTh+ZAVqO0iZmMAp Pz6pbl9IpRVBALgLCO4FMViW48rABxp4MpRlcFO6rNLKMqBBc59buAdM98uHI0TnEoNLXOoyqS8k wCYWgIAtqYZKBtuhwnoIX7e+d1Dyfet/BXVEBcPGrdLUDX9dw9+LvQ4FWwy0oZU5g0Y3Gr3lPOc0 iUcCAwt4mpa2dIENHE79HidRuXHGX6WnnDBChx6Wmieqp5ez8QTt1Z5qSHyclpCMWLYAnB3JQgNZ gtlydLUTsPEEKBBjjwLAtKtdrY1t/1wUAHCAA7BlrYsnFFET6MApRo2EVLDUmMy5iEVOSjLf9sY3 J7CFBk9uZZSpbGURrhIu6OYyFHQE5nq/S6iDSIwMd5sCSlyCQ5zgEpdQ4aVUpA51qnOFWOncMHHe ub2Wdqdumvk6t9734hM/IgoQ3V6LEZqc5oS0BFDw6EgXccAoJ0GgUMbp2CGvK5DypnHYYbPlPANj cwKsPNdYDjSaBo4AVU+qRJVHge7HJVGTH/12XSsbr4AKK5hA1JWt7GNDNAeudUqwW+vIR0ZdKROl gFMiQG3c8ttzWWpRBYO7t7aTZS0x8oEPnLvKdzc3y4KTt733jsJGKOJxLcyQZKrS3f+AMZUqTx3F MDGWOgPPIKyNlu8MSD48Ija8CWSFJqbny8yxPsrQGNcifZcJaI/rOeSRPmc5N44CS6Os9QPOtMo3 PbzytqJNbKoio+6xjN77zlC/r7BhVV0zCXcqaI8lyKvgMxDOvgrXCrFCBlSiH1wpFH8RiACxKdBs YSuF2FI3YA4imgPwE7uABnztg2Yyk9kSWwcKiIACTMBvgP2r2+ECdwSF2yITEVcGVYBucvdkqpRl xpVlM+IDd+FlfNeAR2IDLDIvnQMZgZcDR9VvUYEhHKILQQBVX2J7sHNwnvEZcZJwrjOCFpOC60RE Y7U8WDQoAjYDfUVorpOCVzUDp2f/aOTUaCQwAyTQeoiGaCyHVwgGe5VWafF1e+UFAS73ArajHfOg VtjhPBwzMpKCampEWDyHNEeABY7VNEAzEEiXEP+wEhgBNf8BSFnTWl8ndVQgdmJXfhPwhsOWAy1G FFFnWsVWFFG3UU63UcbmFNcWAT+mSydFZBE0ImDBf9qSInhDFlWAgACoSgqogIITbwmoFwzogJwI JPvSCEGFIbmEZoSHCRgScL0hRKdgTspEchZjcuXETuc1aQfXZwCGcihTThY3RjCYi6/Hi3FyBY7m g6xnTsVoTj/4g6zXeqo3PM24eiO3cSMXjbFYecixG+CQDnwSD9zQc2vFHD6Xajxz/z3Yo4XiUY7l GBAKQR+2Vj4XASpYUD/1gxFns2tOh4fBtixRp3Vfx49K8XTCVkjCZj849iAoxiwpYElPESJbwZAB QBkr8m1yo3ZHNhbGdZEy4AJOcIDwZlxMgG5zsYAklAWb2IkNmIgSBCLedQkYwhSWkIHRwgu+wAtN QJNk8lWjMRqP1lUuZ4sHFoK4aHK+2GlHpIu5WI0iZ3Ht5YvnFHIDBntDKI2UF4Q92IPLuHGTR3KU VzwtyEWJwicgsw6iNkXehClQSE+Xgg74gE9KwA7kGA3vQRB0pD7osx64dpcTQRJUII8GlSu1ElFS VytRt49XxyxalzaByX00tn4fRf9jLhZ11cYsP4Ztu9VtYKEi3raIO4AiLhCAPqCR6PaRHiQXIDlT hTOSJWmSe+cIgoAAHeCaBIBU26ZJFkh4sRktxEQKZ/ICj1dVOAg7M1AFsHNMy3ResNOD1ohyzKiM 6hUnvEiLxhlOziSMlDd5IdeKQHiVyZiM2VmMG4ecJDd5q3eVQrhF+hUnvWGFu6MMHRMxYslzw8dG GGYM2INhbeQPIgARIEBH7dg05rOfIPBZ9WMryLKX9zMh+fh1TucU+ziZOXBt44c1NnZ9xtKHwHY2 kTl+hQihuJQhkxEZB+NSnKN2IcCZLpAiTuAEGoRuxrWRNMAE5gY4IzRvJKmanNj/OWo2CSclipWw IVXBFAiwISEiAgggAjLJGaWzVaQBRG01PM6ki0Q0hJWGiyzHjM4Ycs20G2/FefLVpM50jNVpTlm5 jBpQBShgpsr4nUBYBWa6cW06pmR6puVJX8ZTMoeyO+HxntNQTzlzYej4pwIAEPWJYcUwHuRRjtOn lrLWha6iEe+zl7dCkAZKPzRGBR41hxWQNk/Xj0pBfrFlmDnQhsD2dAo1dVHHfRF1qQ6aAx1AmR5K FUuWOaEAomrHFjtwq7cKmh/5ovCGgE5AAh2ELquEF/Rmo3sXQUiAo7O0VFjSbxaYCU6BITBZpDJZ DWYCJga3m6xQTsKZOoxWeRJQ/wUGVmlrKo3jiWjNSHnNVJTp5Xq+aIzFWHLXGXJAmKZsWq/ZyaYa IKdVoAH+igL7uq9uSp6u12kPY4Iqs6fQEYXTMGHR0JbScwPoMJ/VY6hKUKiGaqhu9A/5oDTKhwV0 CQLqsxGhMhBzuJcCupePBFsYEFoAMBOZuixA5hTgR3bsl2LDlo8G2oYAGZh5GKEUMH8PimaXM6uN IRmY8xVJti0psje56gS9uqsg6ZFwkVMddFN54WUjaazT1Zp/hwDQEqQvGSJUgQlMFQQxmRO6QEyp k6Q85HLwKp5ZWQU+GK4GtqY/6K9l6qZo2owj15S+iK4INqXRmKZSKbDkCbBtyv+mJCCurde4G7ev bMq4ZBqwist6AUu48MWVdtob+iACavmWH8MN9ZSOPZcpGRCoFGsMGssz9UkRHsYQoAsRocIRGkEF dCk1F2GgvDupJ9uyOTaHC3qYMmFsMguqwQZ1J/t1fYiYMxGHYgetDxoik+EJmIM5RntBa8cWLJIi 6GZufbMWICkXkehcOaWAd+EDxZqaXBtLghBBTfA4lbBU1AK22Bak0ooAN4EABZATnHCkXkKTSHpN zfloKNOvQKi3Zaq3j/uDaEq40xiD3wm4fIZe6AqeQSiVvyhgR3iEmCunyaiv2tl694q4EHxEnBYA Lkg992CFNYcP4BEOPfO6b+n/RhlrqBwbqB6Wnz8jlxiRBFTAn7arUCiLY/fTuzhWAcH7j4F5mKA6 E8umUH6ImIEZfl9HbB6FxT/2QkEAolxRvRCkLV9hIv5XXMe1FhspiSyKbhpgiXZxvpaoIwy4te0L S3+nCEz1mpgEtlIRrd91LRn4v8nAJUmUCsZUMSBXlJHnwGYqA2Vawnv7neTaei/AhK+XwXiFlR0M wT/oXsjplNw5uFTqrsmYyaxnpm1Kwvc6PJkmVm3SFeX1GXfqDSLgG9pQWBRmWIeVhQ+rBONxsa3r D/mwD6GbutmjfD/MKkkAxEhsxCdLxEq8l0q8ssxWIZ26LMGGoMuyYpS6UW14/7MMOgEQusX/Ahld 3MWS4S/dFRm1CiPHpaLmNm4IeJEw6shGkFOFU3dUpr7RVcfSxS9q1ggXoGZRARVVEbYhcpv4SwBB YA5JhDFPVQoCjKSdJowh57iVprfi2q8KLK6ZPKXg2YPn+sCb3Lj36nqAe5QpV9JTGoQRXE53W6+u p7noFSgS4yY4zWDC0RxmCZ+5HMMOuzO/bAH4lLGDSh6py8PtMR4/Eyr/icT047tSbaAYMKkKxSxn wyzHi7NN/HQx67NbPSHvx10hEBldzDldDMYk6hUwQsZmfICXmIlQJnfPRYk4si70xr7+TF0RJCWC sFSYBC0w5JLOEgQM7b9GWv8N3cALuKAKpaEagraDZ3rSCowCAAiw/oqmZ8rIZjqm0ch6ML2dIM1p 7+qUYoqLJX2vy8id3CmnklzKBFZ5Iog8CVcyfdKN4gifEeZz1+DL/ADMhZqWqasP6Lgp6rg+G2Gg V3OyWLOXUa1RgdRQn/rECIp1VFABwgbd2q11Wk1+ExIiXQze5lwlEJC03gJ33oI3Tfui7A0XUHt3 /gplN6Jccpwjer3XJzQ5zOpUe7yQaAukG9JmG4J4DU0O2dANUsU6ZlLRcCWm5MqmAJjZj1zZ3Rm5 oJ24r73Rjvud89WUkYau3FppxNjBGy3aj1uvaMq4MQ3BRMhyqcOEYTVx2Mj/YPSgDb7RsLpNc7st lkPt2+NoPQAxzO0xNA7B1LRLEMzcu1bguwE6h05eElhDvCnmFCkBujkgAjngo4dZqoGZqYMpE1F3 bWIuiPt2vWkNq5uDOWx9Imuh3jDSZC8Ko2/BbjPSSg9wz9A1b/PmZfeN34oTXJZjilBBUpdAUi8Z FYZt2OTA0J0gDavBJQKgGqfROrHYeCYNgJHouALbpspYaaqN4YjG0h6M0iaXwVrJ6TBNwo1r0pNb piaN2f8Kwha+4eK6yWTB4p5GO5MChTfDwnl6hdvR2xd7DK2LjvmJug3xDzzDsUSjfFCd3PFzNUec NteXj8QrswFy5Ya5UNcN/3Ur5nTRllqGyV2DV85pzSHaezfqvpkpopFZZm5Z9pF5B2VtzM8iWd9+ 7lP7Em42ELZg628hEhWHzgmGzQnpwA26OQq1ACbHQVbntGkmndkinMCWa+GIi7gA+9pHyMqd/Nmg rp0+6IOrXuuqfK8czXqsfqaWS7miLgPuOmDYgZ41Fx1ZWMO7fjOFRagPa58dyxCoGzRILahlmB4u oRHQltyQaiu3K49RHuWgagVWnuVBALpBMOWhOgHYLZj5SGzcPe7PuiGUUc7UQhkRVEFd4QJH9gJo jyJzPrVTKzhVUIl6bt/4Tsf5XkKeA0wNNOgsGchZ4V2MzguhsBq9YJOv0f9w/TWnHTy4JB7qa/rI GR/5kWvykgx73TnJncyc3Tlyov3ARridJw75DnzKGT+5KE+Vpu/BDYxoWaROxnGF5lhYaHlP9JlG bTSO+3AN7bGx8uFh5JEQ8cgqvJsRz+zk1Y41upLtTpGfKfES+iHlYK3178csY56QAaPm1sshZ41/ 3XuiJ+oEO3BcTsaRAjiA6DtvdecjOqIBdN/nd+8uWYIZIKJtOSECKUCkOYF4IXJ4nwAICwEBTYRN TQcHh00vLweOj5EvEpSUJBKXliRVJCQonShVVZ+iVRqnKKmqKBqsqZ4omK+hnbCeEqOxoK+1u5yf nTOew76fxsSercbGEjP/zqGqvcMzsTOUVwcSiQcB2tyNATc34eICN+bn6eLlAubu7QJKSufwAhbt 9xkW+RYi+QL6MmQ4QtCCPoACBcbAEgMECCoQQcSY4HDChBw5LJawiDHjRSs5QBYoIEJEDpIjTZr0 6HHCCiorVgCgAmAmhQk1cujQmSOFTykppEiBEETKgqMQkC6AwAQChBBQQ9DYQZWqiyoyaGR1oZUG DSM+jEAZC3asWShZoDxYm6Wt27dw48qdS7eu3btxQyxocvQoAp8IciAYfGEwggIIgiwIwpgAY8UB BA1yVEiRIkbbHiFy5KiShEmeMUkDNkrZJlbKXLXSUEoVa1GuUOdqLQrW/7JeojvJylRJ125pvXjZ 9mSNWqhSoGw1k4DCWrbnjxpxzjyOXrsAB6y3SwePXfd49cLXO4jPoPmEAo8kLDmwwJGGER1CpGLR ygQA9+uDnFAg5MkcKo2U0kgAYsTRCiWUgB9EK1i0Qkc86fRTUUJBMFRSeiX1lFNMdAjVDiGAWJUT WPkgg4lgGQGWDDJAEVaLYz0wVlpqrfVAFjfipeOOPPYIV19HEUDYkIMhlthgiomAwGKNRTYIBNhZ hggilCSCWWWchRZaLaKNskkppqwWmzKnlHnKA2aWiRoqacYWTXLA2fKJJiRYw+UxxACz2yfUODMM MLXUFkszsWCjjWeJTP+3TTjkCECOduyUw8483NVj3T7w3JNpBpkaRJB66ImwHnxUyFeqRRZBNFN+ qHokUoEE9rcSSQbe5BJMLjnI0U49daQDhUQtJkVRFha7AFRORdXhDh264CwNVWjlg7QyaOADFCe6 CEVZM6JV4405+ijuuOS2tRQEfC0g5F8IXFDYYCI4FgQBAhwVRL3yCvDYIAdAkIg3m2VJCWiYaFJw oF9+GeaabarpcMOpsGkmw6fkchues+xyCZyWYBzcMXzuksrBpMFSSZ0SXHFFM85V6Q113GA3Tnfi ZLeOpDRrZ2k9mr6jac8AxQCqegXEkAF7ojYUQ0MPgYAFqqnWREVL9pX/QF99JxXwagEXdTQBTDPV hB8FGWGUQq89BVUUhQsMO1QQSR2VYQhShMAE3XYz4YITX2ElQ7QycJVViw+EdZaLYnVrY7mMN77j sYcAmUK7gh2ZWBAIKKnuvJwTMPlgBAwiupXcJJqNNtIN7FkjluQ2micLeymBw6ihmebtuKt2HGyk IMPlnbzx5tvGounpejTAAFpKK3UaV9zKmUXPb+nhZDfIzOZYLw6jOK/zjj2YbocPOjzzPBBBA2Ww NEpGZ+BeARk8FNF8qNL/9UxWQwT1/qhuZGCDE6gAFQSIqgY9qCNny0EQUsAYBrotAEMZVoacciy8 KatDLDqRD0w0uMEh/04DZjHctRRXI8eZ8IQ/ApK6hOSudiWGSQQoybwCoBhBQABf85IMIv61jUlM ojjM2Y3rENaJ2mysFri7XcRMsTswhak0bOIdFFfDGpANMXlzYsUongimNXWRGIIiBZhQEQtVsMwZ 0NOSNm6QCO5dj1/jsBk3qpMd8nHnHEoonzsOojN7+BEf6XMf/NQXA/gNsmgOkR99QJID/V2Efxv5 WiQ1MjWoseR+A8yVgcx2NqG4bVhrG9a53FaUECSlbse6mykxeKIzrYVFYAkLCAuXIsMpTkZsQaEu G5ehFU7OXTm4wEkS45hiKsZzoSNEXwIApUJM72UQcNkkiGGwOBURjP/Lo2KbUiGKKoaJNRVrjQZs V8U1qSacnIDdaYJjCtiZZnd/4wRyrMnNh3HiNbd5RirQiA0eVqmNNnsjG91YHXMwSmaP8h46gBae nzEUHvq4R0lEULSioceQRYPIRq72tfvQx2scncAkOfJIA92nJgaKZEbIBqHHKJCUxFpbDhbjE8Yc yynJapbeSJBBwfnAWoXLYLYQJ4OypAVHSN2lUssVN0EswIWFuUABCpOvYm6OAEdxkiAKUYhkWgY0 1iCYMISxibKWNZ0K+8XfkqjENHWzYiQI5ycqVqa3nvM1TwSnE50om2GYYq9/5esrpDhPOPGuT86w BiUUe6gq9XNRoyv/KDmqF6WZBcCg3RNPQzl1kH141h6cEgDSjna0iZbWfRPAgn0mwMj6sRYkH91k f/jHEYxsBD8NqskBEYhABjJwgaBcm09qWpSjGIUpTHiB3lzQCRZZywdYcUG1QKgBoWogRSyaUVty udTu+kgve+ELAQpTuXeBDoeRUZdTCYEuJx3iMoQ4nWfsVAkjbgKcncBdXl05TrbqF654vacymBiK iX2Trrc7cF3f6t+/0s5MywusoHTDsuYkdjkug470LFsdytJRdB3GTkJv1sdM+fEemhKIREUg2naw Zz2iEqTWUMXI1T6ya1YQCUWHiZH+/MdrIlVQbTkSBAUWJW0L5C0D/yHk2xriFAIuYIqzpGstI1TX Wc7lIIu0fF1btkUtbgHzdpPq3TK7RYVPDYwwDYMkAhQTq1bFl+icylWumg47WRrUyRhcrfx+M0zk RBM5G5amQZOzm/LUJjjvmuDXgDPAgK2NPO/rYDVxcxXEeM2XZFENli2HsfJdWYarFFnKInSgiRjH qQuKM83q8Y/g61mMW/xiUU0Ufjl+rY0duT+R9Gck+8EahPoXWwVC6NjITptghquYGiLlyUxobk95 2gm96U2oGTycWcLlre3KqFtm9q5eBjM5BvSHAYOpnJvX7ZhBLMBR7ibEIBBxhRc8thIE+5edkkML B1dL0P21UcBtZ/+7NQEc4P11a10lBmEG+/d2gT7Twwl9Tm4qmIyXtrAzFqslxT6nEtHLTJRCPvI2 DlTEJFaoOVAM61j3g8UlUQ/MAxIq91HUPjYOyf4WmRFf/4drJAVygzISAYw8hjHGTrbSA8NAIG0o uVFmLk8D51wWkeDa1T2Rlbf9Fm6Ppags0opZwu3dvszLMAzAiAsRICQ4s53dK3RzZEL3Xis1IWUC 60wl7ASMR0/cvwaXOMIlnvDCP2wVFAu44ivmxT9DmouKRjw06tnFyavGYqtoRp3qJOotVQJ6IRd5 lF6A0NJFinzfM/E+OPVZfwiAAEcziKgGyWL3CYQ9AgJJSUCSc53/c4RrWbtxkBOkUv8ZiApWi2SC 8sNSZE+O2X1BFlOc8gJndSjaUqd2BmVZVBOdhUbX4lZYNugDGZG9zMfqy7sw95/BvHsvAcAqDt18 r0HAuxDTYYRneAOaI/ZiuhBXJhHHVgcncIP2d3h1X0l0gAiYeAiocAtXBQeIGtBgVn8yJ0FEVsmh Ro31cacDHS9jMzdjRzqDYp/VDqR1e7ZXWv1gEIU0c/AjQxN1c6mFaxRhSFYAbC0hUsinEcSnIMhH EwMkhPgRNpbUES7kW02nGBrCIdbGFCSAZdKFbScCgDWiFmMRFkZQVCqihSN0fmWWXinwVOSVbpfz bvEHHqHjKI6y/27zNj0EoyW6QAIvUETThRWJd3ADN04Rp4cGqIcCmGAysAl/U4hYQVcOyHgJNnm5 kFb4FIiBOHgLSGiEeAqe8DfG4CUggxu3EBqMFUQuE4JsJIIj+EesFxAmKHvpwVnrkRBFox4vF0gA UTQ56B4xYAVHg0jqsTSFpDU2FmQ+yIM0sSCqIoT04UgAdBGIwUkLFATMxCFO4SzUNnVVCEvbN05d hyZC5QJMQANMIAPfCEti8RZoAYa6lH6fQ149YVPzglVKwG7sNi9KQi+iMzoEo3cbM01SN4hFhIAE Z3iK54f8ZSNrYXiGqAE8ZQqF2I8RVoiYWBoWt2D5hWAH1oeL9/9wDBiBlQYmRfQLtrGJZdQ6IBc9 bFSSqaZyPXMeEAUqLigQg3QEFdUet8disRhjMTh7hZQBVmA0JSEgMjZj/SNJHoUfO2c/+VM2HYE5 z9eMa8OE0DZlVjeIWpFt32I7gwiV3RiOGSQW42iO3hU3KeAuk6N2KeAYcUcATUCPNPR6begozpQI zZQNwkAKmSgNDolEuCOJeSmJghZofVmQgFhd1XWICwkcf0OIaMWRF5dNCwiYBCmQBzh4/9hW6BRO IvMnwzEomXAAj6U9KZdQrhZRqMh6huSKQiM08NOCoiUqoiVIS5MQt1hIr/liAhIS/cF7JpUqtdUS jXRj9EGUQWb/Ns3oQMzUFFCofc9FflBwCtVyIgTJGizCjcglZVrxjeGoIuVYjl6pS+C1AJ/zfC1U lup1CEpgf5IxCO3WRvxiZ3Hof0cUCvwoDRdHaALomI9JkGoxcAh3gIXInFjxfxP5gH/3l/r5mHx4 oAQncAEJkFH0Z+u0DBBqRiL5Tx2mPdPzHJflHfhwBJiiKbXnkrzoPjmpYh/qkhiVi1bAELfIEBiF czl4ElagErvZNUNGWzyIEc2HZMV1LhBQfdrnN8w5XVdYXdfyU1OmXNN3fVO4lUWlXdq5nSdkSjYw XH/hOe+SVV11CPF3WckUOnL3JP3CVejSL3i2WIGCAnd4TaSg/02JGIl8yBb3aYCCx6DTBYCCeWCH yJwESHiG55hvGqfPeZ9/OpkI+ne/YDFf0jsYs08jmR3U02HTkaHh0A55BD72wJot1prvwSkUxaG3 tymuCJO2ZwUwWTRLk2MTAQKsBaP+MVs9l5v7M1L7k5Rn40BPFhzT9QDV8p/WJZjRyY0vwCFI2hTW dn2wBG5QulRPQYbD5Z2ecxRcFV7OtABKIAiv16X8IjpN4C9h+giewU1x4jqsoTCOZiZx+qZuAS6B Kqe2c4g/ZS1lspyn8K4ZuacHWqiAuYeLo66ACqiF9o/1amn3tTutgBwR2mmkhmf1qGrcAA+JID48 81AQNVGXyv9ioiVR4OMPKoiLtHgEOWYFTkMRFQE1OeYfr7JaCoARrWUR+KFSSQlKDGScUJaQpmCg VldXVBddzgJl1GeczRKdQqUtY5esu3QUw4VMPqFCbxgziDBn9ehMiDCmjOBD3fAZVhsnCMkcfjVG flef/XqfOFKQFxmZX9uX4ySvArqf7Dqo/Fq2fgqI+wkxBouQeAUomKkxGOYN0hEdouMI9gcPl+Uz 8GCxKAhRg7uaovJQMziDFwUCOWY18qGqIVWb+xFJK2ujXfMYbvNkUxagaPJT79qcWMEJMitl0zdl LlB90rWkQzVCWEgjT0q04xICNjClz2cDcKZeySRiAVCezqT/BG3UtJsRCYywCN6qOicDCpZIaZXG cAoGsIsTtoIqtoQqeH84vf5aaHNqrnNagG7rr5MpkBPToOhEiB+DgQUTGtsAJc8YHZ/RsPriauNj awjRmhrLgv5AuOKhv4grY/ahqq9Fsq8SqxOQskCXfLOKlIxBFDiFfT5KAj81uq2EkNIgnTsAARdM fVCmussFtNtXpEI7tLJbLuoCGFe6GFkVGaXjt1zlVVLCu97aCIoACZ3hvnQSKFSUDI62VwT4vfma JrnavQaaoAYKiRBntpDpSkP8tQFZgG/KVos5adb0MYhCPQEQrI8gYmx4WYErHhKFHucDxgKxmhL7 PV3cvz0p/yAz9jQiYR87mCAhhUnAyUhGBzc29WSNkH1R2FzTmLrTF43J8iFSxlyoK1Q/hS3YdoVH NcKz2xe/NIYozExQazqUMCViusKckVj1NjCgcTqMdURzyTAUuDzxtFb92Z8Xybb92sT6+ocLqq+L 14cEmqCqDL5/ea6B+nCiMIijO43SsH+ax8n+EiXErGr2d8YX+6H9oBCy+T4jgb8mKL/wdsb3sriG tGOrxTVwjD8aVT8YoCqWJAJHdyGmpMFHulNRGGVx82SBfFPBmsdXAZUSbC0OebbgwshMpRee8zlV mlXsK29aylXuZWfdam9ZImqdt3eyIJKnoUUR07XpJMG9LP+Yj8Yw63rLrLzKSVyoA+qmF+3Dt/y9 CReYSSRpmJcxAyMJkDUz9xIe+htjNKk+8PMeMDmigGQeimuxlhW/7XAvQXBrFHXAPBg2Pwg1xRiE H2FkRyc3PBusqMtTOxusTfhk4GVK1ffOhDyFUjh1RFojXeZl+MwjFAQYJYxVkvEC4YUuAl1n/yIB d1ccVVBvaIQLjMocs6AnhkUmqOBwET2Ifo2HuGEcbRqASLyghQ3LP2wm+bm2trzEIF22sVx4gtbL v8yBHXjFHyh6oiO/BnFazsyLO1lIoEJzAWGxJdFi58DF9cjF+rK4WdNIRw1JX3M1NNE1AHJ0xTIU kTHVTBH/rCHgbDgVAKZ0U+Xcoz2bztRWBVyRnFe4nDGSnV8W1ndBQd6ptNAK0GG61pEQGivzQzNQ G86jCR45DBN6MqvB13gVT/ekG8x1DLABV23qxG77xBhtnyHd2PP92Pk90oSHJpwQn+Fq2XFYJdyq nn9rYq3Zgi75HgUgEUUDA7zoHqtnc/ELc6ftYqut2jRUEocRfMsHjCJlSbbdEbp3dI9hQ1DCzji1 TE+i4ldt3MylulCdkHvMXGVSLT/1mNLNI0CyQJBcL+nlz+yr1v4CJazzCCuT5EaUC8mbJ5eAJ4m5 RcujRdCJaESkx3aJkAuTlwiq3x8d2Y4t0j4svSD9pyNN/6jtRIjHASjpO0TWlDIhSIqiFUOH4T77 UABCcAQwAAJHkOdNUx9aE+iMoSQz2Nr6clk+7Yyi8xhKchgMMAHmpiQjMeIzehElASDizBg0ZOLN 5oyenjmeruhzRn3SKNWNoNzSGJ24cFb8CGizdN/hsuNwYUrDvUzwt9rbin/BihkvQG+ZLNgR6QoR /SVrFVe1UTHxZJkR5iV1pYBTHCcOl5FeDtnXO+bUbt/7ilT33LZ6yaePJg3vbNx4PAk9yjrm/s5V rMXWeszt4GaAJAQxAAOGtOcgUAAMoKq9mDUUdXOLK0M/ve+MixiSLvCHgRg+thItVcfO+GSLvulI 5+//vv8vJi4ZnNsIxl2HzoJWX0LB3ZTjShy9sl4X3gnJTjat2yrJktxezhQZU4IdMzDgmPndelpd n2DKAtaPy5sMgaWABXvjCvmfCQP0jshwBYrt047f+m3mYBsX4Mvf3GuVQKzxlxCH/Rcc8mmBneBD n+EvpPe39EIvE77nES6y8q7GFPXTArLvBfDvEK8vPz3ojiFD+rIuBn8YgcEfGJHpmj4InP7TP6YS xnbiJ05Dz5jiGqziPKvHGt+cp5Cfrx7ydUFBTZUUTosuThEdPtSjTYvk3m3Xm8BpFLOrg3inepqn ajKfkPhNu3oaa4VfoJDsetW1SOy9R1/LtQ+o2q7tuOz/7WZSVhQcJ3sLDpXxL5yxGVzf9c9Iesad 4ZDwT+hwWa6XAUJg7wWw5zAwAacKwB8LbC6aY7fp/Yvr0xxO6GhP6JJeICYuOtEYrHwvzishAnSM 6be994TPTEGO+FItZVfd3q0PCBqCD4SFhVmIiYqLjI2Oj5CQEAtBC5aVlQsBlgEvBxISL6KiTQcQ B02jV1cSrKAkEiQoryiCVbckslUytxoyJFW5wILExcbFVb7Ev7waJBq7ycDBurfBt7zJgxqF3N4P 34bi4OPd5OUPWejr7O3e24I+gjIyxvW+wKASnweeBwcBDtwIGPCfwYOdAnQCuNCfv4MCbkgUKFFA RAEi/wpojAEDBIgSICZYEanRSoySGguInJAyo0sCQQQEIYAAgQgRCAow0JjDSo6MP0UEGUp0aICi InIUyCGS6QSSOXr+zDEUQhAIR61C2KpQ09YXEJhAcOGCxItQLkQB4yXPByENUM49iJsukt27eCNZ CoHVEidNAZoEhHD2xYJUppqUQpyq1Vl9L1DAklALHrRjznhlw3xMG7S1JO7JymZt12VqybRVkZyr 8jZy8MBxa3eItu3buOW+nYtZtLBcM/itMiix+L8rFAEaJyhA+cAbCPt92jcdFEKMFgQQsFAAxoQY T610BMHxu8abKEdaSckeQYac7zVmWKrep8uiR28Guf/P1AqVp/8F2BRQSe1XFCVWLbDVggEsSIIL YeWS1gtl1fMMXMe4hchc6uTl4Yd3EQYWJ30FRthXoLzQYGGeiFJdPxLMMMNkrKGAwmqecQZNL9KU VoxsxGCjmi+7yFCZNTvykkuOghyJSy86DqLbbIYogps6uWVpCJXlFHOPM79NBhlDFgkQQHEWZRfR DWW26aYASlighEVnngmdQWdaR51CAwWAXQEZCHESeN+BRx57BVih6AQgULHod4ySlJJ7iba0lIFB KDSUUEmVNFJTUtkXlRU3CUWUqVcpOMmqDW71oKu/5PLlMzLIBoUgdNUG4q68MhLCXylUsglgpvRz VmL/qbQo3QusuALKDFVQFkssuexoDJBBYrZalJfVU09q2OyIwrfWyKJjuWtxS4xu42y4G5daEtJh u1XG242X+AgTK7X6hPIPCQK9WVEGAligpkU3KMEmwgCVOZBA/9ygpz4M9SkCAWXOx9FJ3YWEBUlW eCSSFR8zGlIMVmSQEaXnVapoS/rdhEBQifZE6k8+TVXqVFEVKBRVRQVNYlgLMiGhBBXmS4889MwG BRRY1tXr1B6uOglMnGwi2CmihPJCE4QZ6+9ZMk4ry9mtnY3vO3FF6aO62nhrC5HBMPOkNjcyec23 zeTo2rXwshO4bY3QG2/U72ogzzzMiJniKAw1vLDK/xbdpLKaFmSgeZtovnlRRAdZBxA/d56JkeaA FhADFuB9/HEMVFCBhUe01/7dy4CKMF+iuBfgUqm+s/fyTfaVmtTxxt8UVNBSLOh8hA/Guous14Kz uDnpSE319nY57xdgWysEVtfju+hJJ6nMwIosr5x9I2tFJnMPtj++Yy0uf9cfpTzRhEbNNN+ykQby N7dnIMmAykhN9br0LnQgrl7zeqC8rJQIdkiwELdqWjToAYsOTuwgo1uYCE6nuRJq7ghHyICaKuIn zyHsIhIJiJn+Ibo6salUGotBDGiHBZKBYHYiA48QJ4AF+RgRUZ5KVHgepZTg9eQ8BPKdzgqkM/wM Lf8sEBoLWUKTttBAgx6EWJzTbhWXDnHvjJCgkIq+t4mtmMITXCvM48T2CVbMSDJ3lAw2bvSlL+Fq Xd/QlpGGoS7Y4Aoc95CfIrNlCyZZyxh6O6D9YiOlQN4mguWgICPWccG3EEOMq5GFjWagD+QYxB8K qZzuNoLCVm7uhCozngoLVsKDOQxhBUFln0Qoy0q1jogeCdkOdeiR82RgPchcYqQU9amRhERR6OGJ 8kq1n52hClVVeR4TmJCWsXAzNLGi3vRM88e2+MAIPigjGtfZCBFBoAleUYhgUEGYUEDmCszqWr9a QZn36XFbxwBSA19jyXc4cpJy4cat5rK4WSEDkoD/kw391jVRzMBGoOGwlzjustHs0SaDyrBR2vrl iX1Qp2Fl0h0KS9jKVq4OCyzVnMGyo8LNtWmEI6TTP2wYsTfJcj1KJI9JmMmoHioKZYt65kqe8hSR TSB24WFJSmjWM04ZyHhGIYolnEcWsVCoQuHc4Bc/KQMfyMMICq3Shti5TlGcaBMmapAlmrBPr+3T FTJ6AbSGYSMkMRKQgQwsQS0DWIkObjaYudBDdwSlgmLUHAVF6GvEwaXBXbKCm5TgvG4TpHIFY58g lFzGZArLFLYUC6ZNoQlrmiYBqMymN7klLgN2U8vpznIFOEJKdqc6lGVgdU6lHRVAoKiPeSR2jvoY /+9Gdp6ZLSUpQeEUNhVyFOpqhauvEkZZCOkLtsTFrOA1KwbVOUG2ck9EEpjEAlLglQWd5UGPQ5rX KEQZEsxAj8CwkX4HWMiAWhSw6vKv23Tkg8ZSUqLnQCz9toRRARt2N/bqpDsqa1hbACMXZksvQQii HDslbLSrbenqYpCBlao2ha7VnOUI1loV2pJhbFqYKnF629eWOAYu3SEWZmdc5DL1Y7L7YXGZWZLj SdF4OUBA0GRCXU2JbxTvfVCYqqWMe5hVoQqFQjo3tFDzsnUrYOsKXLGiEAgIQwKfjZGaHxOj+yJN GDO6r2RuVL+L2m/BljRkRXW058vMQ1vKmKRlLv+KvTzbWc8aJZyWFCzoAfLof2Pa6ej4VBGLkLal KHzpD3WIadWWMKcsfvFMXfxCGZcKIytGnRU8rcMd69BkjUIuVI0rZNfJJ5pSEYFPfEfNocgkJlnN SidYNK0X/KZxyyiS4sx6K7TG5Wlw0Z6Xz/sYsJS5VShCWxVEcYWyROsF17ivMPT7PsBRktEDPTSD CcvnAP93HHm2LGXnndDcWBTeGVU0ZbmFo2vMOc3nS2WT22SwmpbYpUdo9Y5R+9Ido9AkOE5h5lJc 8JpmLnMlniXwCGbb06Vk1TfWIadH9lRHMXM9x0RZ7m4rFJn8zAqnanlMzHRt907oMbpw35IOqrj/ eDzbXdkz47TXeSIyKygAfPkKhVajR7vC4izRIuUsWkMZOddCMvGeEmTnje5DA9LOjR6s/upNYQQn +uwQxtZE2VWbdRsykPoVJbltRFLqBtxMnjNhp1nX8EyLvIc4ZqlqZ0p4wpcYI65FvIotbcLcily3 GiGuyUAG1JelDHU2LhXJKt/rYMfET9cGyLPq2r7tHttbctMAWo1AF3UOHY0iGjNWnmfscX0GR6JI y9lAES3KDPDq/iW0veRd9q2ru+zyPrtmL1jBs2c9322H7J0hWYtt4Ugy/cIwDfcRkEqXSU0h/jvf FR5xRbUStUdwOKYP7krVpvrEquX1fG5sEt6u/5zlMotlTPSjyhl3nsk0NxjZdmZzVg3B8D734EfR 9mytpz3S9npU807uNHsiohbBMEDCEEpe406j0Gbk9nsCVFiXhHbokHUa1UmIw1FBtwhSE3QPiEkS 1g4P9A4NVgzp1F3zICFkUTak9EHO0TnfRzCZI2Ln53A7BnLpt3Cxg1oL137op2IrtkqXZ1tQmDy+ g3g0FluoJhOoZjwpRSpaGFtNpnRRhmHU8hv9w0V95A33kCtl9IIQeEYK4laasgBJtxX/Aw3etm2j UIEuUk95xHM/QhtrRS8SlHwkmCUcJXSMmBfS1lEs2A4L5XbTZ0hMZw0ipWY9GAubqCcHUREUYf9p lpZaLrVwC0cypmiEnYZCT6hiq2VjUHh/p3Zq+7dxulOFsdSFskQ5bjKGrUI+YjNlwshBTbNsvEFG cBiHZ6R0SONWfTgWD7JdLhBKakEChOECobBXsYBf5CRZbMMumJWMHpWInNRR9WKIK6iMLYgXhkNv gkUMIlWAo2RSpGcQ1AFapeN9pKV3ESdyqBhxpOhKJ7RSJVQ5PpVTYtgmfpJT/pc8M2eQKdVxCkld NARlGHZhv2Fut5JOb3ErGAJByaiM50WBW+EVamRsZrFFZUF3wtAYLhBnZTN6rcFzCZZJHlWIkXiO aUd2Zsd2QFdehrNWOCmSkFAX68hZ8TZZyID/iSI1biTgLD1YHfpwJxQhYyB2cJrTj6iVce1HkFhZ Y7AVSxIZgA+Jf6vUeBbAcqgmlhuHcYj3a0ZxbZ1QgSlCC6xhgMkAXh7ZdilIlOzUh2BBe2MRDGlB FtP4WdiYFkhzBcBwXzKCAnLmmAKkDVrnQCs4QeNoOPazl9hTjo+QSY3ol+yIJZvFWQn1Z52FP+7z CncVWq75HBFTHFb5lmqSaoL3iqslAtkxQounhb04ECoCel1IQr91EriIhckjMwwZgGXmXmZhbGXY P9lCmecomn65Fd3kPPBkCSgJIYaZN/KFZreQT5CpPs1iR1angDUJkmoldOzJYMeIiOgIg44Q/5JU 8wDo9DSH4C4RVDiEMIkYhEGqhyHPxhvhsGzFII+gUJ4y4mazoD79AkJ1EpvQURzUBYRuglOumHEb KoqbczA2JVsvhHeqhHk4NB8oB4u2FVtYxWRN9qLXaHr60iOKFVEvqCvWaV4QEAJg8zxgcxjGNiEV gjaxcAt05wJXUDazsI19hSS/QE52hkmQaCX7KThsZ1ml2Z+keZOhiUZQUFZPE6ZhOp+GAFK5cg7Q Rkb6eaZdAl5o5S1hgjcF2Il1+ZpVWRHP0RwWilJvUksmhHGwlR1pyZAYipyWoyjzByivBSgkpqEu xnEYAWxmMnOZUqnChhVyFKf68mdtyHbtmf+jXkYhueBWDPIVUrZzfTVu/TYD2JhHdzkNdDM3BCUv 5bifMfhAbOqZW9qlQpmObCWm6BSsZYWgyDgX/1kITFMPTOMLPlAP+al64RUb+GZWchNOZwYKzkKP 03KPNUQRNnShdVIQxAFDeSdbeFqhEaEQylFbVZgyt6hbjbdyvcmQLfeiBPE8W8EEtReCP5IMxqor vqpJoOplWpRFfHEYCyKjB8g+fYVmomQWMTJKl4gL5jI9SzJZagVvtOp85rixpEmlj0irXWqfHwI1 UIMlVFJZcIEIYZoFYppObfMO8gBhGMsZN5JfrPEZPWhH/ORB/UQxOxUQqKSuDDGhfLIma+L/fQVD S0vrQrN5WwJwiu4aSyiKWzlxf9qhlptyFETRQupaZgxRT9lXLbHyJfJwpnQxsH5ZmGSxFb/yFdd4 FttFLQtLbpSxbQ06C/HoPqdRtjlCG/DyQIdYgpaZgkY5su75eulAXhobRivrsk8DuXOhZTNbiQka UTbblOO2iZL2CZ0YHU3WYc8Rrrhkoc8hmwqDMDF2rn2qeK8ITclThbnzHmKpi/tXqXH5tdKxImGj D7LSC8rac1zyhmormhCwA7ngPCZiqhYIng97Nij5LDJiX2iTgbIKJvJDWOSIduF4lLwaCSRbON3b JTEbbZN7gxwpfX7WSEz5gfx1dXPHPjPC/z4nxSdEW6EVWhD2ayYP86Jl4mFJq7qdw7qdo6EpBkuw WIXJOX/J6Tm+BmwNInBFG8FgUR0zwiRtc5NvGL7F21ZfFZg7WoExWg1pg30XCQxIOi0HqF9+FWhM 8mBS4kk2WZo2aUGZWaVAWZQewsHjm5kStFALhYiI1RlftLAPO3dIzJJAu1N4R2lUSRypJGMt9EJT 7Cbn+oOyiaeiSFN690omdIuuWDC3KEs4hWp+QqlyuWFFS2bjY0d5EziM6IAdLJJk8VUuIBYTeI1O eX1hIl/2FS238LP/Bg195WCGtpOQ2JkA27g+fLhyXJ/rmFlcGrBCabjNF33xWaOnYQ/ciP+RU7at +2RfkDmPS7qgoKW/+PvECLEwAIyQVjyisrkmBHG6CwN+lMNiGeqKalk5vDhjaZJTn1ddmpIp9ltm zkgjegRgrjfHA3thNzeH49O20Gi9D4KSFgYc9oVm9VVfRmq968sZZhfDHctA9JbIRunDleyf6RyO 6wy+hVhehQNtCvhIpVG9nzwmYxOhdTUdSzoZ2ncKF5rFo7O7MiZjrwXGuPx9nkPAVjlxk6PQLpSh EUmvp+ai1cUVL6pPo9Cq/QR8P+KyzKy2S2cWzpN7ZQEhourJErJzsRJ38Xiz7oMkTCIPCFRYg+ix 8aJg8EzDO82C31vJLvjTU8NA4PKqZuj/s7AwHcoy0EQrlfowZ2aDfSkSOTGUrpJ2tCKU0LS0WoWH OUhb0AbdtBEdwJ9zkLE1m1zoiyuyLCxiqkvCrxTFwyE9bTzqPEk3PhUoo4T0PzrXGh/IdP/kGf7q Sc1QZxIFoLuaJd+A2D9Zpd8bvjcZ1F42YanpWWZYjxIqHDTkzy7NGiS1yhtmQ7Wsum9ieKE2aloN 1hkT0StklWjdtMvZi/ZqdyvijNGMjaOxQHNdvKIaDG6VLLmX0s85k85QgL/x0hN7gAo0JNk7WIQW 187nkTC7sZYpx0FNyZIMgfbmSQ8Vvy9thp3oqkwnLdlsHY8RmzuVp6Wd0ILa1RKHlUv7/2JI+6EH TDAF2Vo0pdAIGaL/O9s150aYKiLPqXvTyBaH1KUnu9vKGAJfRdKT0KMisl1FHEqAPap6VcJHzHSi hC4bBKXaG3yLtiUbObM3rKs4id0d7ILrgHz81SSEbEBQDQtS189yR3f6NS2zADGiQyaxfVNN29Wo /eMEF2qJJ4T0bUsc+mmZ51phCJHMaV3qyhXOg8Iq6W30AKYiuwgJruAQ2IFuZZIRDgw0TQ2DnIln SAsrnAz7BdM8Ms9rR4M5DXYgdUiXpaW2utuLbBvv2GAuveHdnMQsSUoRQ0NQnFKeU5uE51qAGt+J TksYR5CrjZsIXFqVEktpuYVeSCfWZf8KZOiH1RyNLkADNLA0kesIpc7lEMgXIdBtUJYsAs4kN0tn RkoNoICNtaeq1+dZ3+JF8xwl6vbrUzLEhp120AeDkY1ZeB6DgJs48Mi+RZ3EjmlfB2FKnRuKGaqb Cm1wgOppuMnFrFWbXyzpCXcEl+euI5SWusyL9losfojShalGLnDlMsB6LXsXW47q62SHTdBN37M1 4+M/8CjKpQHYozAZKElnf/3NohE3BoZox3egxD59sxrDxZ6O48jOc32Zm8XTMSjsTeI/04PEGohH IEQdMdQnqHwAY+3tW53kCAyor0RL3F6cKaQ6mTa1ivrFrpVCpHLpzElmNjc+O/ACO3D/BUW/A6Nu BEYgA2J66tJmsvjuZQw+9GjzNXFkT7qAR7ht495wDXE6Z+8zDW+zWOAMYDQ4q1oXdvUGnxhrwyCr 8Vwqmg8ojhvLbrKKN2FSfaWBR8iBHNRxLJ4wET2lxWmCOV0ZU7VkaYFHnJLOO4DSO7yGHrPohSMk nE2mT/7s7kS/A0KyDax35/ce9dNmA6Tv6ochT4Cpzdfgb2/taNeMqnFXDdfbWYzVbl939lwnfDJc aCuuaMZ+3UKdo9fNppjh0hX+Xr5bpJ4MWspCZuNa1gVjSxhXcBbAau53Ol65WrnlaYjCKI4PVOyB f1S7nOu+0WnBTWRhDTRQSeIQuRyi/+Wib1424BcnoiCCUQrvpE+AfLepCghVKFWCVRpVJCgoJIKJ iouDhocoGpWHjI6Eh5KWDxqelZ6in58PpqalpKKooKOnr66lsLBZWQ+2t6+2u7S1vr/AwcLDxMSn tbMPUKmWjZWIhBIk09LThITTi9IS3AcSLxAHBwHi4jcCN+dKFgIW7AIZ7UcZFvTzIhlWR/P0Ivj+ /Orhy0CwXoYCBfwhjDHBCsICVhQWOCgiob+LAkQIEBCEY4CPAV6AezGNhIuTTqo48eGD0yooWWBC mUnTF8xiOHPq3MmT54IFNhY0gfBiaJNxRl9IqyKhiotqiBJZG2TpkIxBkRhd20oIq/8iSTKqyGj2 TJVZV8lgqVrFilQot1VlvZJLK60pXLmQ7bzVs2/eXbygeBI8K24zEs+0QjNECatUEttEhhs3LsA5 dBs3sitIjyC8DPwyxCgQAzQ/jRkGDkzNOl9CiA9TX0wo+2LHjpk33g4S8kVvki6suaCxlQajsD5k +NBg5GZMZTNrOe9Lvbp1nkiaBBW6IAUBAgGEBmgiUsJTpiUVJWq0CFrYRVIhId6kuGu2sNea4Y/b 6q3d/22VZdgooQBooF28XKdgTnwBA2BcLWGCAn6MVULJM9fAB9k35ZRDjmWXtSNQPOxstg9BMWAR wxExWLGibAQdNFFtBL3m0GsPIaT/UEX+1HbRjyIEwdtHEAQAwZFEnXRSFcS5wGQVySVnhA80zQRd TTXFpNeCXHaJ0wshNPHTmE2Md9SRB4ikJknQQMbIVxdW1UgjiWhACSd2TqKJYYbk5x9ddeH1ICga jHVIJ4b9ydaBBm7ppXUNOirMgYkeahhVe2roIWUgBoAZO/5k9FlnBPETQ2kspiqjjxsBaRFtFgHZ UQCz3iaApxuBRKSRvhGF5AsuAOukU8Qip9xgVV6pZZZaSvfos14KRcBP0360gK5DrckNZOhJoF58 Y3HSp3qKVOWJIJtUZaicfprLyiyCzoXWKcy8VSmisbzLKLwJTgotl7kMiihcZFl4/6F63XAjgYc3 NHHrRyG2asFqBVlwhEGgrWhFarlmhBBrr/E42z+2eaqrrbgJSauuRh65wJHBKknscWJB6QN0NxMW XZXT2fTvz9aRuUC1Cwjwk5hGkremUk0Nkgg3TJPESGJaOZJnXHFWCsqe+AIYL4FwrVKvuWSjsta+ jf4F9LN5ta1LWrIUXFVjisyAQjfikENZOuZEnJk77YjYToz7JKRbqxiJDKQ/QQSp0UcCHAm5pymf bOTlSGYOrElLLuYUSywtIzoURshA+pQ9y9Ts2qzjdPTQQVw79EdGHUDU0k95e3cVM7xwhWRLadJV oZCge+/xXA8sNqXvdhKLvQTn6/8f2rMQhhdgwbSNfaStZ59gg5QOT/fVj8xwxcIdUtahZej4nVtm /RC0+Pw86uh4RrdBPutHjD/88K5FIpKvfrU5mt2pJZYAnQxkMCUqSak5OlNd9yZIjNcRYEgEMNqZ eJUmbQHLW01pygxmsC2pVSMbUVmE1o6HIf4MaFFwW97Z2tKfs7hFeoQB1IGux71faI+CxnDQ9gx0 KEE84ohH7MYMDkBCblzBG1D0UPsyc450XOYdm9HI/A4SkR4xTiMp89/jaBUqyxFJMgMEx69OYo2o TMNJy4kSDWgQJQ34wAgNxNLOgMhHX4QgTD/5CDgqQ7uRKE1pS5OA3b5SEqVgIhH/78mGhZz3iWUk ihNZ88SEtNY8eqlFemRLhfT6A0O0EeZt/RJiD/uoF+3x5ZVfI1SfHGG3RT5CkYrQXRM5ZLtessyK wLzBOxAnm4zID2SN+1HlbvU//+GKN/8DyZFGokYktex2bSwJCZSznJkkx45UiqAGBPMcXqySlT8T SlGudTlrjWdpauwlUb7BjVpSw5HEayOFEtUfwfCpXXERSyVC100izit6BVIUgVpBvVcIhpyB8iH2 0Ok9X/zQbfKqRFg0oBVt7BKJjHRTN/S2vht85ABVTEfgNDOxf3BxRjQKEkdmWiuTsYxWM9XIrXhT pNv5BiSy62mSpmaI5BiCm1Cg/xI4TUElU1jvLq6k6NoWEAJwNGEo48nqtZSypmxBYCgdTJNYqSm1 QiGiLA8Iy7oE5ElCbcJ4cQnXNpkzzgI1FGw3JGXc5uU1ZMDilKjkXlSl2kq/3gUX5pzLOAXK0eLt UnePsNMjSLDE86EPfelDafsidpmLiAamPoLmMm+6q4+EcUjS/EaRXiY5n4rkJJtM4DgdOJOliu5m sFQbYVknnqEtAAHfYSc7yySOcITjd7ZD5FfJo7Bt3e1uizTieiSEp0pJgm6NCaWARAkoHbr1hu5q azISC9VY1qUXqTTsMQ4r0fYyyHvg+6GDKKVRjWqIGtwAad0em7CFWcYcGzlHPP80A4/VhAoeHwst RxwnpPc5OCM61WmudAWBa03zwtgMzja3yQTToY4msyWnlcorxN3+DJEd/OlPs3rVr6aJG1X43ZrC 8QJvbGhbirQlIh5hxEhkzRIX6lOFJvlj6NmrlMng55EZ9b3svQ1ekTqnRZssWEiRmMrp9WHA/mNH q5TkG2pS2I0P8MT0mTRvlUEH+64IPxFMjB65wQfgMJK/aDbTMpB73zkeB46WXZMkIuHcNGRgkm0S 2nQ9u5KVAANLE3ePO2USie0GOR6hoElNVxhh78Askt8114QKG+F935QJ7WKoT0D+cQ1HKUq+mo2U SEZQiS2atp5gdEu65clfGu3/F/LaxY5GAEWhIcM0ceANpTfg0If817HMaHaK9RBVZvwxsWlDOMIz PdyDt60bQlZ4jSRBUnAIbWgGQmGBdyQdYE9xE6c6moKyu6rSvjGeADItd5Yd4acpy7ttQAY+JBQ1 e5pR3YFZV7L4suF3uRvrGdKwUVM+hqPKqwvqrBexXpKvrguLUVTGbdA3vqyZly0AlOIKJHwjh7Xj /GCVavHaEo7m5Gjqkczo6lpByBySmBAcJkBAw+jOI89EnNSaSPndUyUAWIki42wJhbIKY1qmm4KN Ht+XbrgsFwuLvPAkn4V5C3X1J73L5F1PWVK2nqjZjz7B8d7asIUidLAkXRlz/yC7szEXY4DfN8xW rfxvoAJSrvZnU9Ke/EMB1HnmmMCEkqzrocqATqOZhXRWdmdaSBNTIH3r0yu44ApM8TRls5HLbdCz ubrr6Faw5kKDh42SSnZ4rO+KNoxDa7C0Znvrxkve75ligffEbN6Ayb4AgyRXVTxAgIG57ZiHCNu5 MRlvVDb96gspSKalVeZ+svPNsdHx6L4jBCUowcpbXihHWZM3alym9GMaBZqGU/kwtZ6uRJatrVfe XulC9hjS/v/8MlEZZ3u6pXvds2W4l2SHRgJ0R1IgolIsJyqeknd7V4HSpmd7lnco9yECFEArM30T 1k6bBwE+x3gnYQSFYgmqQ/8T7GV+jjY0NlBvV0UORREeRnFVB5B+TUMuVdBpVDd6RpR1jTE1cbIV meRChEIvZ+Nw09Mo7ZZ7AIh2XTJYBshKUQVlrUQoEUJP5VBjfYMrEkaBm6VnJ5cbEHgrGVhGh4c5 QBUe03dyvVRNOsdzPDdolqJoyuAsLrgTPQMtCABc6iQS5JE37Zc02XI+I2R1JGBZ8YFEeeI0Bbdd ZmFXAHhXEZeFO+R27nUdVVh5FAdVgQWK6rIhvjFIC2NSnQUqfvdg5BAiJhWBZviBtCIkQ8JT7dRT IBE7pFUkI7FzJAgBhgYW46Qs0tGHe8gT5acgNjAtgVgegwA1lUY7OehpJPT/LZrmCOVSZAlnV94l F/1Xe7TWZJfoLwh4cfEiKOIohceoIJ8Yikl2T5QxGWj2fH6HU8xkc/foYBH2ODulMrMoi5LDhta0 MkbzP5NWYyLBeIw3V/70CT6zjjkRHTEhkVXSHF3iHcsoHr2iJuGQeUcyiL4zA4iwFPr2ZSD1iCv0 J5T4H062XqC4duNYHecUgPGVjhDJjubVjoVxCcRGb+NgRdb2cmEYc3j2PvuYAYRHfQKUfTl3TU6Z c015UzTmSId2VMMYOoqmhzcJDCvYOh0QXM3oSExhVbdTJFflOyGkYSPENPUUWZFlRC/0SV5DhVjm V7O2ILmWe6m0ZTa5lb32/2QVl5NbAxm3ozcQgyt/s49upoEshxEWMSQcQYtL6YEUJpC7mHjbMlc4 Q04C6JfBIBM7s0e/QHnWAVw2ICYzOE2cRlby9lU5Fma9Y1kLk2OidkRwyR9z8VToqBPmGEQ40YkU p2WB+ZK855mXmFu+5pIt+DWhgAuHoFqSVpSIuUXQl4/MFCrJFCSNI5krA0DaV2GWZhQBZGG8WGOq GWgLJDoLBB1caZw+A5rv6RxVopXUcQEpMDR/OC2FWR7sZ1XsRx6xqRSEYFmSxjS1yWP2B2TOw2TJ 6S9px5suKYDoBV+d6Z64VpcteXGutJOXwA2T8YCviDjGFCsHpo8kigC2Qf+LKkqLC9CUgfRtvDJA QqV4JDhu6FZJh9WJ72aMXTkTzYFH6gaaN0GarkMACJCRL0MkYOU76XdVSnA0aXIFTQA1BPo7tyMB somNj0RwccIWErWcAQgpFUqhwXmcfWmhD8og8hVlggI9d1NjJxWnIYo42CkCGXQrGRQA4FERCIEA CHEjMqWdsSMkLTomhvoy3GdNiiqjCtlhJVEJRQdRxgiR0zF085kF4zekFDmpxEAAy1gtq0UOLeY7 4vBEYvKk6Kcm4uA7HqQUsmmbiFEnRNaEaTFfEVVY76V7uDdf5nSmu6Wj/7KmwzB2dsIhH4qKzQZh OWU0JuM/2cmnOnIb2pn/i+PJfYY6meQJM2pUEhpGHAtUScP4kHvIo0IanzuDR5laOupmkT5hpMFV JlulJkeBg/NaafKGpdS4S6pKZt6QmdqUPGUjXgUYKG6TZar0l+RYpmeHprlqcRBKrBvykz+ZGbgx ePijG3n6MLQoAn4qETyCACzaouHRU4gqOyFwTYqXkCBHbmrFWOEErKy0qfA5n3rko+h6s6VjburW E9/xqZWmTvKUg/Mqb1dVLeRxPrKJRkfRhf16QiUxLpm0Q5LScYlVDBL3Xr+pjgxLQVXIoVFRDqg4 OZRTco3zhyJQNN8hAOBxj2W7IwiRA3+4oryBqEcSAjQ6QHY7TxoWFcB3/2jhN4wwO0HyuSwTWYw8 w5U+ekfp9qOiyRPTogTfgVUEEA6GWA5DGx7fkblH02mfR0/l0V8z0EaFYDBXk1AsKaEbGpgAs7Ws O6zxUgnUUBkhmme3UiTXZ33TIrcc66cdy7GMEwQpQKixMyYhgKh5y1o0ykYusEB9ayjfaj0uGKSW 6qOko7PSq24LVDo0wEAyQAMdxkA/yriZOgzAlblXNTvl4GI5uFxiMi3vepbmw5+nV2b92kTp8bT3 N4nvcj3Dqpyqi5fLiZOtK1XlKGz+ZVJiu50NJplF8xODusBBkBA5UAATnANBALIraq3fBgF5S4Iv 4HME5CtK4gLf+61jgf9u0RHA6CSfzHKpmMozELQlNFE6OAukPbo6w0AAT6oESmAmgsSqC0O0OZi5 SleDrCpjTaMwxiYN+rYItuSWWLFCmjiOqxS4Drq6Aww0RydYAUMKUDcOaKgrujGLwjuoQBWZF+yn VgC3QYLBcmutiWq3yJs5JvFzJNCo4Huj36rCFCWk1Guz6rqpP0olExl+zLu8SjIW67rIhysMQ4N5 8Np+OZgm8jbJ8gbJqZqDrKot5RBqivQ0RyRZb1K6S7YoaGfFWZzKQaRxUGgh/gXGzUbGQLWiCFCo btg4F1AAf7jLcXtBg4q8dlu8HPxzv8gE4OAC06QkJIhu3cvMyxB5qNz/JX7MwutqkdM7w9y7QDQw HC7gBNvsBCWcvTcrvcMAuTzcfujcYjgYpS9WFMEFyUpDQldgluORNyeVX/BXjT22ettYqwGjygCN l3c5k3hhIUuUZjKHWip6QcELvNNiNC16wbS4y8J7qHV70SOMzMgsbsFBwiTMOYe2vTIQeZwpVeU6 pBU1kRU5fjerzUYg0trcvTT8YY3ryE8KHuqMLaVKZv3pzsBVvjb4AiOpfkucY9DliPeXPIMxQwYb 0E59gAX9DEqsK5WBWiwjJMx4QQtwthP9hxOcnw09JilwnwsgBWX9R1T1R8GczCfB1jzXzMz7kirN R6eDrthLAzWss3Z9/zrMW8KNGgKNGtgKidfgS86OrMML8KRnMsmdxq9FUclNoLmPKxSQBTVNcGae srSuykQgVX+aAEOtprBPPdpYa2tbNjfcgJiiAkZj/BFGqouyEx44RwAp8Ie6LNFx68A/8UdH4nNq 7XMnwXPKXMyJLNLDMdJOZalANLM2UZFDx64vPMM1jK5OgLNMYNc2HJqd2r7gUc+z6WlldsmHdKq+ pdgvsEjEBkW+sX6hZjcIdzyZCIUYStoAXYCmjTWQActEyUx5+h2yPSazbKQIALf4WdsYbAP3Wbxq /Uc7AAE7UILAWMd/5AJ/xATe683b6wTLO2IPQCXjyzrSjd3PPc4hTv/D1SsDFo7iCgnYgs14eL29 M23YwfDIqGkUV3Dj5kNmpiq0RNvjtcNcTVSqIreq9bRIpDwg7kJ2jLbk9N3kDqtYBoM+51BtEhYE F1QtCNzAQDUmtH1Buxu3GDwmw1y3rIXWC05VP2eCdEjCDy7czMu8eFTYK/3Hn7k6qWOpOQvnDOTh jAvn2su9VQLX3SvY1a2Q6Jq94Cu+EgkM1BLZ7/tEpiqlpipvLCaIZjKDAKpIkF2Igxhq2UhwloJQ 3ihxrOzkpn6wuwblBl1m53CnkYnG/t0OOtyGN5cRKNrGHGvGiRoswh0sDv4T21FVvqImLtDgSrLN x829eKRAlRS+HS7/YpG3sDis0uz2UHcUd4gGTqAj0ooLOqBzbjJAwtp83d6rvUZg4dOd3ZyaBT5O Hk0gpVclpWTm7jXo7vUqHmVCFLU0Qjfe70js6V4hN10je+fVm6d+6lX2SmoxN/BnqitHi3d6mG0Y SPrDu0KCosLLscHLfcKcOcVLVWg+5jtA4Rz84A3+4Ns7RzG9QGIRJYxLOneE6EGKaNUsvm/+5gqJ 4t4L1ymv8srRzDvf4oEN2ETPBCyukOCc6JnKLOgX2e0ub8j1OzdunjWOzi4mdf2GpWTGSy+Gz9ml ZMvjvxra1Aff5FeYZGbzCOfjPhd7cq/4hisjO1+exhh/wWSdqNME/8JqXbd5C8JH0uDGzARt7uYq f9zdXrM+Wgvpdqk2u8jhm80wbrMenvLLjkcvTsOIFvPa/OLgDM5zZPnTfbjGSLRKcJaVTL/vfsRo eZZrMvWCmCa1lM+adnrV+OlGhoSlgImgiFjRXPZ+2UOpKy9KeEunGCIEUEb4yBEi+4YcsctzT9u7 e59kzcFrHewVZtZrvfc7YLcP7uA85wThjugMhNcxDkFLXxNGUIyoM87o+vlO0PnmpvLaK9IvDf40 gOHgz3gLNNjgDAhMgoOCToNOMjQyMkaNjVCQWVlQkpJNSpcLTZubB00HB1ehLy9XEk2kVRIvqldX Ly4Spi+oEjO3pv+ut6ukEr4zKMHBGhoPxMfFyMYPzM3OD1nQ0pXU1dbX2Nna29zd3t/g4eLd0s/R y8zEVVUoEqAHAQIC8SIiAjcC9gH7QQFB/f4ELBBAIAiBFCIQKETwL8iChw9DLIAQAgKEhzYmhpAI sSLFjR8hMAkxUpALGlUSyTDEJJERRoscMYIE6aURmlAcNVrEU5FNRi2DMqJhhCjRlzSY2CQqKKkR pYIWMWHJchCNpElhOspJc5LXSZw60ep0pUlZUqNKvZBQZQY7FFVIlSIRd22uWzOuuEUxo5StW2+D VUGmjDC6dMmYRaMGbZzjx5AjS578rfE0a5ctN0umoQqJte7gBTj/IC9DPXkBCKBuKMChQH8LgiRc KMKgwxQPL+a2SBE3KYkcQQIXCWEHE4olXbggoZzJyUSKUDLaOV3no5w2t8qECRPqoKdPoRZtpJQp +KlGWIZnkpQ9IUXfrx71cZ0aJUphUY0lJUqtKVl4rdOXXHL50tY6CALWVi6/tDWDBMJogMIxxlDI mYXPNHOOYpR16OGHIIboTTmKZYjYW6CMRtpp+YhgAQEF2ebaQEEI9A9tC/0TW0OxSQHRRAsEEEIT AfxIwG4beeTcSCQxYRxLR5W3yFE6YffITdhdpZVOgjii1HlPOTFeel1OVSaYXxqSVVCEDLLSd+xN N1MklFSiyVmv/xBZCioH+PWfW+yoskoTbJmCIFzCBMoXXDOQgBdbwgxDzDKGXZiYidM0JuKmnHbq aWWSkLhZhcS0Q0KK8ciTz6ryDARRQzAGJFsBBSyEgAgFpZBCEFLwehtuDxUJ0ZEL6NrRAkluRAhy yvlkXUxG7ZTedDXJ5IiWVKIJJnlFKaVeeuMdJWaXVbVpZiHiWXvdfdVoYtZZEHiyX5/+PeiZW8rR BVdg7EgoYaTCABNwpP4Wkw6lo3KG6WIafurwwxCLqNkzhE3Izqnv7KNxADdssnFqDBUUW0E40lpr Q7sGkbLKDj1EAALE/miDQ1IIJ8VHyobwQpzsKSLDSfBxZ1NLWv/xZLRUMhCttFBstnSed1CLV115 6DppLiGIOFslTpVw8sorBNKr3yoGruJCMIAiqjbAbA/c9oQUY2piqBluGPHdeOc9It0mWkoCCb4c cIPg87QmD5EaB+lQQUf241BDtibE8q679vrqAkcCKyxENtwckiAiOQf0lD7lFJN1WOpUnepjSvuS Sj8dzVN2p0s73VHRXqWmEzTwnu3WkXxVjde5yHUABAS+4gtbrRyKaL8WE0zYvwRPqIzc2DNcycKa 6u39959q2v32B3M24d/tgDL4aC9kPJpFG89TpMYFJWQ/AiujrCvlB2EO7I/AgsDNarYRKUhhSYMw jnN4VzUXOMH/BVMhXSJ6Jh8nlCtrV4FaUqrSpJLEqT0QhKCZ5NO73pWrJCTpoJvitDUsBY8AZglF nuSCvBdAYHkSiEUVXEAKF+xlHZCS0DqCQYIIFewYE0piwbBXorlxqBwbahj4pkhFD42PfAxDzPRQ ADh3KCEARBrIPkQTpI9pDAL72BHjcBUEhjwuBfhrI8seorKU5eYhBPwIk25mNBq4YAfNIgEirCUD +mjgdYVcBHa0Ei3qyE5OQpngIxG5CB8czWcwMcQEjcK7QW6FKy4UXhbyU4q+rOIVfSIbaErxNVUo CmD8MuL0LJWYScktipka3xWvWMVe+vIxl+FbwpAYDFGAogkd/7vBDfaBxmZuDI1pLNI/YhSEAkgO Zf9Y2ataFhs8OmQjyApd6KxmkpMoJ2lMUYk61emzn1iFEEmDYNKi0hIRumdNWXPP7OhTwk76DD7t oWfSBorJT7KrTqN8ly764gpZ2IIXchEMOyAEIeslah1HnOWkZomwW0oRHLz8pUhHeg1RMQZTFpLQ DN6hzHccoB2kCIBFbMibicyvjHSUh2wa8rh+EEBjPIJAy4S6gF55LllMShLWIng1QqwnKvMUaNOs EtWAtmlb6bFgI3T3pqpYVRAqLJNStNKVrtiJlP0BG38KVNF2cPGtgUnUMACm0Qs5w2C3DFU2dLmY vnIjU34lqf9gqSg3ZKDNmDdQAkFQI1Nn8uaxF2lsGv/RGh69anOwmQhkNyuS5STij6Lzox9XV5TV Wcl0MZETaa2kk2z9DnU3aSFsrTOV3LWQK2a9RlhcUZb/fG0tBYrrRQdTV+vVdXqkOhj3AltSvgGT uYONrqdC2sS7IrFUfHmQMjVGL1iQAnnMgcVjaboxGxYJfrGBZmbTaBEgAekiFfFIskSSM7AOIqxL UuB9PYjfNiUlhSi82iCZIh+eRTCfTb3v7oZiE5zkNgswDEspfJiX5bkAbPqCUBE3/NYiwhWjdUXH cS9lju6Z1K+5DIdlzqE96boYYuKzLvV24YsA2EN+AfjuY///9pnvjhGNA8FxGSObRjo2NkjtFWeb ogpVosXETUUhoU/Q2btGWFBMW22dtcQjrqtEubVXmi0jwyUmKh2lWqnj2jUivAne5sWHsvAhKQAl AQ9H6i2DwWieiTtiEWu0oxzC4i6hG1JtAPbFiOZUMKsxzCFGaqXwQI0NaWoRHve4zjRdy2ieCT/e JE6ajw3nZo9jkjbJM8HmUgmbwsNqKKkkg0555wRrq6XXZQcKjwRKe5hyT6eQFbcODp4lykI8B11h h8fmoQvW0QseWw+jxgDxMaDNUbwqN6UVaqKhoavXRHt7pCtm9PSEmz7u1pnHgjj3Z9QNuLU8trHj 5axmPcLZ/xeQ4DijFmFzfrbkJkuVTUejanQo2JSVQOeSWnLyU6Sy6nOB51tHoVawH5wFTFj8XROu wrFnsANULNszb2WLhw/F5xBb+64IOzmgmUhdDfF10d+OuaIZncWEIaqLywOFquZxPErPdDnL4TEP Jy3TonP26LwZhEgY7uSeDXSgtPPSbKeeHdhaSbXWoc/VWUf1rgNblNzGxCWKHWe3wGIVIGebDEqO 3FqSGKWHQbnKc2mO7UWxxbjUXqFlzvcQbUYdpaJedgOnsR5+196WRoalCTT0oP9NAshDHr6JYxHP KZ2eqM68uQL6tKcQZZ1TMhOU7tmS6ID+JUwbqCbl8zr51P9OOzjhJfEayp+P63DPgLuYMCxt3Osd Zu4sD37NnVh3vdLdGdzuu/KtqEXBB+OhKVrmPBBfw78togpQIMYi2k2v7pLiM8zhIRNsGELye9fS +SKBDEiAkvYX8suma70MapLa2c0u6sGuv0umxB2jVX3qcjJbE1dWkoBQ1MBbuuAKHncFPqRDnQF+ iTJtiNJ2K1d8wcdEuHSBGWh3GLh3y/eBIyJjEgI4aLMoNXZGMVUg1ldylsYLmDZ+48cbQgd0EHRv QbcINOgcr8Z/6OR0rocI0LEkQdN/rsMIloQU0dE7Qdgz4WI7PHhJSPETVYcdoEQndmcN76JQTcBD DDgDDej/GSRAEXVmXBYjbbJEIdlzgWo4KigFBaICWG+IfDAHgnSoYs0XKf+RcykiGgRCIOfmGS6w fTz0N82Bb7DAY+sXftZ3Tj+jb/Dkf/W3cO3UR9FhZVmmHUZAH/TBHaaXNFjlOjlBQuXRhKR1JTUx gGCHhZ/QWxfGC7fnGXWBPJJSKiU3VxiCcmtYN7loItnnUdWFiyVWh8JYGX9XKoCzUDDVPvAACr1A L6tgadanATwGGjlUg4SofilhfeoXhvlyHCGkfj/zdLFTNFEnNFsCijWhiZnIT/znFF0HZu8IbDjh QlbIDXciQ65wYXPhKIAICzzkC3PVe3DxZ76XPRnYgbuY/5AaOIwMuVfWhT5oszyAs4yQBw9oZEN/ KI0PuA6AA36O9zeDsX3b2Ij54gIW4RzgiIM84QNQoHVcF1vkaDuuIxM0wTqzYwjgci3g0YRnFlug FFss6WD0WI/cIHZmEUO68BdFFBcb50PtgCDU8y9vEWJ5Rw4oJoe4SHPAuIY1d5DAF2gN+YEZ0hlJ 1ArAYAuCs10qkmPIcwC+oAE+AIbQKHS9oGcp4RlGQwJwOU/xFI6wQxPzBwmvB1ulSI/WwVrg8VpW N3UHNQkT5xUDyC7c4Akdo4BmgQteCESwoDaCQm50VSnAh3fNRT4sh3cK6XIHSSm1FHfIF5bKJyoV 01aR4v8OMuWM1MgWMrCRcol+QacBaycDxuCGe5mbLImDgaiDjzRlnUhJS7GYWJIFpigt5uETX3KY Ngl7PhlskFlWBNgNyHQJSnADZSFDrsQWp7Q2IOeZQjSLt1g3jIENJsZipAmHfRWHGugMbgh3bqcM yeeaiBY3/+IovqAXDxJpHHMPKtJSazGX7bZ4iUcMPhChLBmhGgAJvmk0gTh/mQgJ9HETR1iFPhlb N/EALRlKkECi1VAtiIk6wRaikQmZ13BQktkNrqAECPg1y6OZHzcgXLRDQRR40lNty+WBe8ViukSk WClF+Bl8tFShhzGa/hldY0lMdoYCohAazIilfUIXIbn/DiJpfb+JDDxRoYugfVNSg345jv90OqkV O41wSBXKkiRqSfPXDMKZfYUUoTx4Hdi5LqjINY0JGW2mBJgwCsXDPKwQKL0QDDrENrCoREJ6ckZK pM1FqdtmUlC0i5cCoU5aIvXZn1EKPiilDu3wIDgUGiqCpRZRZ2uHIAxqabl5DIWUffmJp5mYiYxw SIZkE5uodT8ZZnPiYNBwHyT6DHdKosQwlDQRlI5Zj4E6ox3SZuIZCpA2F+zAQxO1Fv3iL3P1FkGk RL3XUdZmN+NgqZdKN0Xqi2yYIflpkKEqUseHGETUKOeWImjhlpAnU+y2jR15jSl5oU7ai8xgSRJK oTnB/5K3irAbOo/YiR1BmY51QgkFK5xy+gA+oKsnuhjLeorC5hgRCw74yFun8AJ0BhfKtqgC46jA sK0mV5qFZqmHtikxa59w50Tv+mLFGKDOVmen6l2Ih40cCY3rl5uxSqJ4WgwtibB6eqG+WpOH5EKf 5Kdo5pJVaIRGcEgbS7AJ+6fe4zWfcEwky6X9yICswBe+4GEPkrIVA67tyZp7Z67eE69yGEVfCao3 +1fPRYzYtQoBgKqioUzLVHSN1T7fx3jpB6a+6ZuBiLQWuo4Rqmb3caITZ6La2ayaSBNGywwIFXvv 2Uuf8LWiAAGogGcIIiD8ApB8MZWBV7oU+HbFhxnf5v+ewsQ9rXm3IGW3hvZEendSdwVyeWGq7hC8 +4qNa9cZsWq8YUqc80cMbhh7NRGnfFqTLmlrg3kTFxqYh+R/qCNxzWqFBgg+MCJ2nhAvArNhdBF+ qkBjwHUL1SNRxBUh2baVYBmqukh882u7WimaIUh3ejel0jiRLqU+ggMPkwZcZyu02Oib6ieNZZqb zfuwd4q5GRsq9Bdm8riwhsQdEaqszxmoBehL4WuUfSIwQUsXypFDacuzygMMwACk/8Ktq5ltkmq7 wWSfd4e/2zCH8MkwkuupmYFLx+AoxuRSgMtp9jaIr8qv6+dZRBuw0UCrkRuZi0Qt0emGk7CJuTaF dAL/qJUArd9DAEJglDfkFuhTumYsUVzkC2sBGAJpUQQZdygmGTo8WDFblTi8w537V+3avMXarjWL XTSmqvvQPuy2mw8qq7e6lxpQgMJqtKkTmJPQemPCsS3qiWO1VaYlmZErWE/wBAwgBAigBGsBZ2PY GabsaJKSdoxiRGqDXRk1dxx4x7k7t7K8V98by5p7okbbi3xcYuXzLwWqPusTDyhYuJPGs+iHiIV0 oZQwrD18DlHcvNVRHR0bybBVncH6wSmaipLhwePQAQjQARmhH03QKF44kHzmPILhqNJGKmyLIbAc aPdby/Scw5fKRMw7pHxDTHghCkPcJ6nkbESkxLL6/79GA5cGk9AVyssW25LbdzTZaaFHyGTIaTQQ rGYeEsUecgE2kBELYANNoAnru5TKgMpvgwLHe1wpp5r02W31/NKREWP66ba7ZD6H5VKbJhqpKpFz ObTXOLRliqxIe7G06sTZa3/KGpSU9HQQDai3HBkfu8mT0QHA4tEL0EM5FCiApw6BMhiCsUTIpUUV qIuEBtNmnbepuZob5cMUA8jBDNA5jZEUhYgAC45gOrS+mQ7AaQzEmbQTisXAs6xXi6tPl5IWjdGU AbkwShkp0NGNTSyiWyADKatdupSHslHHNQxjrbt4fNaebZUf1TdNis8SCLwv8DE9twpbShetunbn a//YKQGc2YfQlgSn1ztJSZ2XMBiI+TI7BPjUkAHcHWIDCHABBDDOQxJcdGHK02a8EjVLRW1YcIEY NL27efzZ2A2fc/uLzeebfEbaxrg8MfU+fRjQIAmGXISI2qiXfA2Xu3rbshO9qMVvjbgkO8McZXq1 DmYfHtu92+whNtAB4gwRkf01JChtieubXEQM5xuu6cB2mM2axpfdFA4q9Wuss8SlmyranZGNEDVT IM4bP5uN2ejTQrfXI5niP6N+NKB+iHQT/bfEOnhvEBCIhs0TVuyYXeyx8/ix3PwYFwDOVN3Rm1CX JFchKaF4lP3dOZvQ8fu6FR7l5PC6cSimPcpjTG7/XUgOhhB12gQMP3xYZ14KjSWplwze20wM1OwX 37jGE8wxCMyB33SqjYpEceMAolzxFcLtGI1tAwdx3PrBgILCngxcVyV3bREeN7Ur5Yyew6hpp3+X Z+sHhsWLhoX1vzwm3sDVh2IeGOebiOp3sbHNr4GYEqXe4ufkZBgqFZ3lWWaufp4ltYgNDsGj0Zsi 4BdwAY89zmvMkbD4gDzW4c1NkH92bcsgn/Pc6FG+6KMinBV6yp5xbsYld+6cjY/Ht30C5jK1oB2J zHIxiEAXfs3xN2Yq7hk6O+YiEvbWwMTLiEF5uTvuDfG35yGSETaAGyGNCsizHCW8dj7AoPtS6dVm /1iW7lHKfvDz6cfByYbIAHJ6OYssPW1DlOkSKd41RDZJjOU0GHloDo7NMU7mEkKDYONEy9qNWEmP Wc3aEH/QOet3vg1B3tgP0QRDgjyvcDGwOBiWhvNiWymkMmJOHowujfCfXQ7COXwAGqvpLZt45eRc 7WjLY6oW+Q44hK9p/H3h7o/jPoPbWIj2tCz4xgSLKDt6ajRObefYAGyUG9zc0AO6ftwQUeT76Kog 6d1D1NUs63ZizdJseN1w2yH0TvQwxm0YrvBV3vC6p9kJ8/Nk+WjtQHhxnUqnOo2Ttu/k5+bhNwg7 oxydRWrjdZwWzaYe+hJozw2aTJSd0tEevQk6w/+AYNPpYFgx+oLgnArPMly34vMwINqhgS/4Mqtt Dlms230hF6vhjS8pxnCxTZpE2ZXC4g3QErn0DZ7MEHSIQOccjyUIbw4Lnl9DnqXq5oglPmC0KRr4 Kh8xuc4ACMAAxn0kxFLkpkBEC6o2lg2GCA7hdlXwqXmFIgIIUFmDWYKGhIiJiA+Mio6PkJGSk5SV lpeYkA+JgoOMDxoaD1Cko4mmpKUPVSQuJC8kJFWhGjK0orQoGigoVTMSVS8SJBISBxAHyQEvBy/O B8ZNyRLCsLFMLsXEr7HdLxAvLt/gEOXWrSS2Mj5VMuq2Rj5QPvKdlvOlkPaZlFALBDaaLGgCrsn/ iyYIm10BxisWL12hqkiUeKuiRVAVP33KonGTR36VSBmRkSqeESgm93FstMnTx5YgY8qcSbMmx1OL WK5kBKWjxp6dUuHSwCpWlWGyKvasdeuhRBQkoFJLJqxZuWYSZiyElrVbLHDOYIWlFpZcuXJMXjBp 5cKVum62ZqmTV+/jIkWMNNCTVwhRUJV+awZc8I/wAghNAki7MkMYUqe8RE2cZXEoRlygMt/SeLPz Rpt+5530YVLGSdE9G+1M7dEn6NewY89U9dL1Rp88R41KBUWvBihPJc44KixpKFvHiU7kxapYMWbg AhwIQJ06OAlXqEKr9up62G/gwZ8dzwRC2rQQ/1zIaJdOhqx2cuPhS3UXJsfeRmqZ5g2YPmCahBEg hA1CEFCYQAYxEw4wlEn0XjezUEQZRhSGolletFCo006f1URKIUCJRBpJpPDV2om4dSjbiiy2+Ih9 jvgUSm+04YZLcA9B5VBSyOk10S69NDTMkMZMR904yDSDlTPIgCWMOEyOB14A41VpTluuJMWKO7Tk BxRPp6RGCFNc5idffy1CIdBACLV5HXbOzNCLUcqxEuEtwc1S4UUWfiKKbh2t1JmHpJg2EmlMyMDE oou6sw5rGvWZV6AuVmopbPz1FKOfmUH6CVA+VEbUQ8r1UgUK7tECHHOn9jLDDCT84lwx0oHTDP+V sxIjwTKOxUIWWdB9R6WU5MDi3jdeZVlLFbuJ8mFOqaXmqA+2kEaaf4SgCdpASthgoIGEGXRAQmEV 5ZBTx1FGVIYWiirppB39+ZImIYE4D7XycEmtO6Qx5a66loly6cAEz6QabhxiGAo9nNqI0WSmOkjR n8nVqesrRBpT5HTHSIfVL2NRo401wCroDJXDljPMOWyhk2WP0YLiUk/y/KYXPeo5SiJvnNjr37P/ WYIEQkq0qYRiBzCG3avADDdMZHWuiye7Fw61WbspcqbiXZKUuI5pjrrQKDYu0NDeeshFaC5EWG9Y 8Ntw61OIwvJmHREtPWZ2mUXvTWYRcsgR88z/C8N6TFV12il4TDPiOUON4N+BBQHKVX4jjjleocOU KoK09ABdQOkng3rUzuhztoagdC1KHwYVU5s2KKHEAkUjRM0VV7xwRZCyQL1LgxOzfTXFEQH8bory cujJoHaFdu+IOtMgAw3qVV+FWzoa1VCQEHEW9/fgL0Iba1brTTefVldEqrsV91KNc4RTl4yRHGu3 OJNUOu4rNdFVV90C1DkMecJxlm68DDnyuU+0+kWz0fFrYfQIkRE2gRIjWBAKjhIR62piNAK0CWnJ wB1j5AQkUk2Mfe2i2E9EBa9IZe1gWfMLPTSQn32VTWxYagv10OGQp0AmRxlqXviG+DYX1q2F/5Oq iPFocaqIRAWIt4hFj4jiq1hUg0lKkh8WDceMY3wHFjr6Rq3897+UnSUcUGJZqGZks1HsxWbTEh1T 4rGXv4gkJax7lr1qors2+TEhTVgI7oaji0Lu4pC5iIzwNFQ3zKTvQi80X8K0FhqducMVZSsPo8zT llaEwys5MlUoJUXEUhKsRip0YdXwdsJcSG1UupiMg3S0Hg1kzldlYcYrFDSVJM0Pi2FxhchOhgz/ ARCAVhpPy2JBiwj+Bno1pNFxsFGtkdQigrvZjUkueJq+DEKPMwlBE3YQyCsIBIQhHKEiD+k7V7Jt T3vTTMD2FkSHRWozt1nJPER3SeqJDRuLcv8BBHYwjgVdkTEokEAo1xcoGJnyoa8JXW+yUDN5YU2J wjukRNbDHqeckBVQcVAsCCkVwb2JcUNSUpG6GLkrRo6MZASLBCZnjk+SQFU3q8e+QrUaajGKBPmp Fg31spvUzcNQ9gBnz/jRx++cM5DzY0yrQgHFiyLSkZZBnhEvqpmdWLQyuOkN4EaHQyaEYFEhSGsI yrGDMz4pO7orhjoh0j3vEcKhEM1rJn4yCptZdJUarYx72nOuiE2mlrt4IgrkJCT+2Q8rSuLKL4uR xsgZyX+JqY4YkWQWZ0ixHe5x1G9M8xsK1oIEAZUevtaxL36d5o478wRQIqEtSEzGBQT5oNH/AslY uvrwqugb3vEclr4jtlAdGYFXb/Rjw7ZAIAQ7EGhaB7rWYjnDINmRRheT9ipWvYtreg3vXjUkI0ju LaN4AtzFZBmVdNgyezlSqK5mKlnFRZUZuPIsN7pDuMmR8bI0JUf+0iHFiIQ2ZzprLVmdq57jvONr pqmHUC4ItPn4hYLf9CZOFIEE6L4gBME8SO4SxJB2uvKeVYuXPSNpXj+x68WO5OglBVolw9gYgAhq 0/zS+SqtdNeQR7wJXsVLZEkUVXX4WJi/QKG2ppiKiTuqE1R6wcriSSWhU54v47Y8lao4RmNgnp8x YEpm6xQ0S7IIrXvUg0FHSW+HZJueJS3J/xR6dJM3J3ktf0ADhR34WSLkBDFC2JQQrOyuVRlVcRJZ zOiG4bM38qRacfPVyWxw9iwEQYxB/qhjqI6Lu4zFp5CHXORS64M/+5JimgHXlPdEZE5RKZ4sjBKX KUYFKdqIFfysu7FfzaoYO76sAMg47Or417MSEIdb3CFFNY9OejrD4T8TpbOgRljCPGtdpnjmobT6 2cOAHrE4w8I0WAVpQo10dKMbWt5INzK4t6BHLLDEvwDc2MYEsPdAxoWQG9zgADeQhjSShlB1ma81 pk54JMCUikYc9R23QBsTewGKc0vtTgCzhalkwLttzBd+3+HKr4kRbGXE9OSTCw8s0pgeJv+RrTxo oSaWAJrDsD1qWvXQsM9+BiKdD+oSUDCrWsdpkEAjRDEGyUpvm4jPdSMsRZNMZRArMkW84cIH6jEg WaqkmAAQwEBK8GC/m6CEf0M1Owfo8ZSpRimFu30SpBCdD9ybDnOdq4pR+dES2TeLLGcMKd+Zyqwc U/L5SYfMw74slY4BAW+QpxwzD2hbLnkWas5ZZzQE3c9Y99q+/MXnmYCCE5jgZxdMhB0S+fCakA6N vJ8YiU4f9W1Y/Ncq502FDma2Q0rm1EGzSXZfL3vAbyA7hOQu2d2gOGa29vbmMy/uVJeLjjJ6KuNV XdIK492vQe44Xv49zIYPwA2oU+wAlH//WIwPMZoNKDYCn026ZzVPQC0/OmrDgzQj4aae87x5bj8i aN/kBCGABDZQgB32AjtwPTPQFo1xXQfQRItUPqo0XDoBI5FkXFbXDkQxRfI0WFZ0FvZmHfoWLrRD O23ib/8mQiqoFSH1SsvHfN9DH84HdK3VWrWwfq4AUmpjHBH3RncjKk9RRYMXFpCFUo6zfYaneNVR bBxDUwFkb2eEHjAHef8kf48nNmTlQM5WLZZkQYbCTddyGnpWCofACQA4PTsAXQnoAtE1EVCSGGzy PrpwGRPCKRTjKfk0ZChycH2yXGnDaukTIVZUDG51hGGRGAhBAEUjO4wofAFXNElTHFQG/1aqMYOW eC/7tEZjJYg95GoRsUY3ox8aaHVUJFL7w33IYAxftn3AtmPm94owxTGUYyXOgCWtsCgu4w4wl1Zq MXnqMRKX1y/A6IVg4w4WNIzYZhISBhP+5whBJ3RIsADeFl05BCyReEU8KDUutlyMJmTLs4flNTXI dVqU0SNFwT9NkhjlgCCa5nViV3xX8G/+lh3mFFVJkxUKZWJ1U0oyaImUsBt00S9pgw4eeEt0Inel A0vGgyq3xAvP0X3QIHKs2IquKABBQGwiKD9HkkzFIgEwp0li81zgkBZtkSjLhmBzBm1daEnUZi1i mEcV9h9JRQMC2GEdNoBrRVCm5wJXAP8luLMkCoV9xoURSxEp3+gZghKOzbQsMoY2qMI33pA/AFRG hvF17xgAsoOCKBiPXLmCP4ZeCJOUp7RH/mgJbuSH+sFDVNSQcsElyAGKBvYWBYlrg+ccEakNsxKR ScgV4reEw5Z45BdTIChAVrIWVSiNkEc26hFnk0dgcuYo1EYD9nd5xUgSoNN5SpVh2WIEkgldIdAW Z5VDaSQQtdMm5/BkklI3+7R831WJ85IivREqcIk2dgJjVlRZ35AY46JpuXU0tVN2ZEd8ShCP/lZ2 6TRXJgZ1MJgmoFeWgYETgIIh7mURIBUXTIl5E6cfUOZxxCArz/EcdzmIGlNy/zYd43f/A38pAON3 eP4VgmZkXWhhJWtVXTVXkmzhFumQJTRAPdQzY9CGkij5hco4hmXoCJKJBEggBQi6oGr4XIeoOwsB Mk9ykC52gS/0c7IHWGmZZvDBcbNwU1TEDEcHh8dUlVapiAKiiIxIfDeggi2qgiP0lesTRC5hV5ay Z5Pwms4nJvEiVqboFUVRBZqYKu4UNU5EJx+3fR6Xl2Mmi+PniuZXfucXBFTqnv7FkekBAQsgBVpK hZhUVvcpmtNTPeohPTOXhTPGT46CjNlGW0YwetN1VkzgT2yoeoSWDAjxDcgHoi8Ge/J0cN5ogVmz XLTgXqC1HhBiFI3RpYh4ILmJILRj/5Vh14iM2AQoqGPQcHyL1V7bQ4E8eqM9948Y6pzfSE+4cH0R p52GxB6IZHexcjGS2F4KJXhjZjji528CMGw3EAQCIAK5+pdldkyUkzIEBHNcah5eWpI5xChYMjrp sJ+i+XKTt2DMpiiPCW381zr/hxJmhaAD2GFmRY0HkYgqiqe1qJYYWFosFqgxEnWXgTbut37JcoiG gQALgAD4+nX/YJUWEHYW0K+yA7COCIkhpBCM01uMFRVTpE+58aksgqM56o3N1zxaU6FcZapTFBmn wqlzAiv5yJ10OSTI0EWIY54HoAQC8HXqmasE8KtBIAJUWqUBcJH3RhhaSphaeqyK6f9JkvdynCSa LuAEYvqlyyqmbzY90mNB1NJ524oSNYmTaRhd1JOGCxCNBWggCRGjUPNOfup0rvkZfsIb6hCkHCoc uFMN+2qVQoAAQmABavt1BVIgwRewWUmpWYsd2AENctIqR/E0noh9UJeheMEapXpXzfkinkNEBSob jFZcyoGoE/FEmeOqUvFr07BdyfCk6Mmyv8q5vvqr/mOR5XcYI2gY1nEWMwUWaAa0zRam0oZaykpg ojlvoKWShoJ/bZpUIpGGaaWg3qpWvLsANvAP3tIEYsddo8R2XptPOYEiIVIir4R6EyFC6piiBGAB aysEQsAA2bu22Csg2qsE3xt8ZNf/iDfAJpE4HS/wC7GSUIhmWBf3Sk/3Qp5iuM1LatBJqvzwKXoz FBMjIdnIXnbSiY9DeBtTeNQxfp7bsp37uX1pfhZwfuZgTGaEJBbsMi1DA6xQPa47bb3YSfPmCmaD qO5AA/l3LdjWOc7zpgvawrwLXU1gtTbQAZKqiNKQFaQSgReKIhJrH55zIrwRKuNIVnVXBdTTuymA r9q7xEvstkz8xAKCAB1QIJN6NAOBY9p1w41BDUeRsFPmIFIDZBehSh0RLc5SgaMmsQs3qvqbo+EI WKBFGUDaNw6hHKf4kwgsfiYXpQxMfp3buebXsrUSYE6Is+ExkuNwi2KjFmTTMkVb/2nSBrSRKxEu kH/HuDq5+00iwQQL6rsMqlYhILze4i1w+3WmSUJQtMM7Yb/LgxdpfFdiJcTTssGXswBJrLbby7ZC AAPby8Tc+8QXUCC6fKKEYcVHtwwNuL4iow3TN4lAhF7pdkSp4Ru2MEk1yhJCdJR5hS0solUptHfq 8r8UYSrb4BxoV3iGt57FlqvoGaWvKLrAup5lVA7E+kWq+0k0Rh5AC5JiQ8sk2QrpgUkYjK2HwrSo 4E0iUZNSIAVFUAQLagM32QQDWIDeMsXBLLfki8O+ozcuocauLKotkQrsUMJAe12JQQC6zL0MAANP MAVTAAMwzQAtDdO7zMTBDL5yO/87s2OanwYdSVeLxZBlU/YQvZW80Gwh0kQmtjC/PiEm7ZpXD3Bn mVkT4GheKPQU6hOE34fOGqnAD+zH7vyXgnx+peuENfUdUALCZKqYkYdDH3yfPwu0WGI22CoPZ4IK ELu7i7ID4Qq8TvBtTVCAF4AAFy0EF3CitRMAxTBV38XG4PUiM4NhPDFnPHQ9MCcQCIDSho2vCPDL CGABMA0DDLDSog0DU/AEqI3ag73ZCJAC/9B1CzAdAjGyY0EMzTEMv9Bjv/AQtm1ickGKM7Rky0tJ lQjVAAgbVe1ifvM7EeNO5Jyk4OeKSkh+Xi2670xmhEwY+VNQTNI4X0pg2BCm5YH/SWwdyVhyPWzh QKa3pij8WkWlCBWEoA0930jQ0BBtA99K0d6CAASC2LQTgvrTdBuGF/j7w6ZQCKESdNKjmEiSVkl8 AReA2gzgAVOgABFQ4S4N01OQBC9t2h3+BCbwBBBur8KbxK6dtgmBY92XO4HnGN3FNEE9a70DERoo FzUul76xRiomaUPpNm1sMOD4VRrqRDqChN5nl8ow3aFLHbx6kf5zA/5FujdbU+ZQLJIDFi8XZ4pJ cwHtXHF9n0LaFugNWic8GpsH3yixAw5d3w7tmX7mZ4RBgElM2E+c2cF3IF70AlADQ6M6L5pQ3IVQ C8RYrddzMmT3df+6vRA+2BcQ/9OkHdoe4AEaHgEK8AQREOIXwAAmwACDbeeInm8DwSvCwOJXVAw9 thC9sg0eCys8yINj64IzwkhjbBs2+uPjlZSgECrwtEo5srHwE2y/Lt1KjqtOTh35JgCvXR1UarrJ JEZV3hbgAVDxGa0MRjYDZR4f/KVxxlrDSEPNqFSpIJkLTd9I8MLQRYAz3AEpgNKjzbbuvrbETB0J EdRQUU8dgr8fDcs0ZEFs7R7PlQKx83VsO9qjLeEuffAInwQU/gSR7gGorQAKYAIKkAMjbuekiZUB F4KLMRYLQpESmaSsThGIWmA3VeMV8y/JhZSzZ+sgIUTRuVV7YyfneIqtCGbA5v8xtVpmoUsYwzaV QbAAP2+z0EHPTiI5aERjluNcikmFcc1JatHlrBs91TZbnbO4hkADIVAEP6D1P7D1LYzuFM3Znd3L DCD2TWzDSKc73tVQghKxgL4SGjB6kvlcoSyNUpACOoCvMj3apu3hLp0EgK/wHO7SDX/wDs/po53p +WrDJziia9IM6khiU7EV49l9S/MYkSuvt+QvfnXUMdTKLI8Jfl6qjmsRG6cj5mLzqjgNRbIy+FU/ gansuQpA+WZsxEJTHJ9L4cAkayXXUzhdyLqsXR6mDnQ9tvsodRGqK2wEfM0ob/783zbDNpACSUzw ib+2hU3FloqV8649e/72Rtb/9vrODv6Un1FCGCeO07q8vaFt2pG+4Q0f6RwAAB4QAfZP6Qqw6Nyr iLQDCEoETYQHLwdXL02GL42HB5CRB00Bjy9XEpkSJCQaVZwkKDJVn6Qap6gyqCisKKeurKgPs7S1 tFm4ubq7vL2+v8DBwsO+D7q2sxo+PqeqnqxVrKCkoJmNEgGSkI4H2RAB4N3g4wFBBAEL401B6O0Q 747XJBIvLhIujS76+Ez7LiT/3r0L8c7fP4D+SMkAKMOFjIcOH/owMhGKRYtZjGWBkusiDSRFfoj8 UaRkESlFkNhY2cEGggsIYgq5MDOmTSFCLBAQIICAz0WIOMU6lewWsYy8aMmg/+FiR4inC2wsmJqC gYKrEaZ48MDBw5QpScJ6SDJ269auXp94iPDkAky3MBf4HHRDyQ0CNyhNJVQIwgu/ECZNOjRjhoQD hw9fejHD3otNoCLTO3iQ06hRGmCh2kwU2axcGo+KHk26dC9jqI9lRKYBCiofJKIpRBFZBu1qkDdl ivTYUWC/4siNSxfgHLp0yMH5bURCYKOCf/MhFOh3BwSC1Ovh2weQk4sq/2iQEO/QBY2HD43IWDbx ART3HDl23GjECROQSELgR+I0v/4OPXSAgIAMFPhEgQikgABOCIhAgE4I6ESAEoIssNwLQ9WyGjCp hYbLAxoYA4V6TTFxHUEERf+VQgduMYBAgTBMAUOMX4GVBAc33uiVWVspcIECJSjAAE4M6JSTEgIo QYgSCxSyDSVNAAYJUFNOecgl1iynDyiORVbFQp2oYlthM0ATTWaydOaZh6a16eabxSTl2nsZXQTF RJtV4ckno8RGwgzzhIKCJrt1Q48hv/0VHDkLCDAcOI6iA0E6F0bXG3PdbcnEX5s6RZ1BEPgT6iex fcedPkyh95AyRmjQ6p124hLfRhbVhwRKUoCEkn9IqOQSXDC99IQCT7QVEwHHIoCsEMrqpSRfElQh wQxnhqihUUfNYlFDTKAYlQ0pqNgiAzAw8ESNWvHoAQscdIUWj1MQW+wT5RL/wKxPgkwYwLOT8AWl v3kVtwglSgQwsCKJMHLpc45ARgKGoZDaCm0oRDMxZ9YipTGcHHfs8YeeEYVxntRQE8rJg85DqG70 tNzIAYEp+g2jAgQxVQDvwHwhPTH79gJC9QDEMDwoCrTpPwY9RJ53l0Uk0VIUTbSMEe/FqotFNBhx X0g16GCSFLl+K0QHxTIAlwkK5KC22QwgGyyyc/kkQDpN3NBkExJUHAuIt2ArjHs+qGqiFCEskMLh HaRAwI/E0gjWju5yQARXXak1uVdfKTDFkAW6SIBUTRJwN4V2UaKvkwHkNWXBfBlcCFCK8FVpPJAx B9ltFFe8ymYgWsvmx6bJ/9fxnUbQYEqIvn+G1O+g1cJZ76684gkqFkcjqDS4ERpoy/Qc8s33MwvX Ds6/KRfPczo/3Fyo00VH3VN+9aMPBPKbx1Q/C+VvGXrFy0B1RT7YCC6ohpGOjMg++unVrbrVraeo pAg9uEAP2sI4BaCtcwu611wiZAEJSUh0TfpLExqhp+T9rkO7qJUGxPSQfpiocIVDx0p8gpMZyShd XKEcWtoVOXetZVhTaAuCYsKkuSgpL00ymOuchIhJ3GBKdfOXFPs1wvNlwh5XzJtQ8hat63FGMyEC nhjfNCL1jOgiBMRIfD6jEdQ4j2/IgyPGoueJyASKNpk4mSY4sQnv+QZn2f8Qn3IGOTMLvQCQL+te zv6SnXzUYyDw0w4JNuVCVLnACVsiwUOYZjyJqOc8PiCeReBTQAPKYAcgKYkORFKSXKFkJTZgEQNM 8IQcXABtOSAWTS5gNiHE7ZcPMqLBFPaY6NkiKcozJUQW0q2prCQIUrhACsDVonNpBV3tupEPeegB IkiOR0LiJVxsYoNzNMGIgiBEEhcBAb6oTopNYNKS8gKlSSiREYmqxz24ZxhpSasV0sOY38ZIRjdB QXDnUY//jMDQEUltlNgqShxN2LuRkSoy0LgjHvMoGU287ELfYxg3llM+cDTMe+RzTqioc53r/GUH /1jIlgxiHhf0AxSX0aT//6bmv4XCSo2zuhoU7JPKk+TKPwmMZQSLZYKmKiACERAS2woEE2R9sCfB lJBcQhilEUYLoGHc0AlpFTjzoMemAglBEEA3FXuRCwbnguuOzqKVKNgVAFFo1wgAAICtRCBIQTSX seZiAQRQ6CfpAOG/6pavQcgznoQYBCToScUoDQYeDbMGPax3sYkNpTMEJah8zihAA9pJoQutyIhc NTU8jVJWfePbmiTKGZNxNKObuM0es9e9k/b2L4Gc2TfcR76TAlel+cDHQOCRkIZkyh9MOQiYYvol ZuyUIj+12mks4gT9FKED4D2JDRS4ACQAqAfojWotTcAWW/KSXgViEE58/9lBCyjBSFpV4l686kXl pQaZBy1PQ+ZXuAVIwSfTjAoBYCAEG37FLGghgjejAAAJc6DC7IXqU9XrorfJRSd5qVDBFlBESiiR EPTc18DA4S8l9ct1gulqdjCBpbwBqkyeRRPvmBfaNs2qVgtVlXoYOmQiq4p/gWPPCrGLGopSlDUV tZ7KHqNH3VTDjipTmUev8VFiwkxnlSAfzLjhs3iEqh6MFIhBXiA/LiGkppbR5P52GriG2ilWwrua e2jgXfC2pCUryY9K0HuBYUXAqVGVV+caPN9G5+RBOfGlsrYqunPibVrTopYrroXMUAYOPQARSFSc +TlBzHdGjoPw5PhKhP8IrIAIFbbgU+NFwZe8hADmKI6+9gXCE++LxCSGJ8EAJs/KQglnXcXZyxaT 6RuzAscBVVOPh3fnEQlOBkxgAg2YcOQib/s8/lOGa5ahiteCaE4Tle0x5ZgZiq1sHtfIjRY7Cm9F ElOkj9HNIRmJzzFbSh7KxQea2Rwqmm5Kp5k6j3jkfJmGn+KgOz0jUEvLC6yh0iRFsMFJFJir7/4A vU/IcFPRZsEDlYtzONGJynFCIV/+cqs3UN0VyIQCaCcTNKuhxZzu5AkXvGMvU3GmqWtIoxiZRcNQ PXQEWp1oIS4oWMk6h9SLKJcJ0W0Q7YhncVJ37IHxhXWEaOdiQdoITOD/uAo49mwsjJmx/06bGBdJ 4bZQ28Jst1Bp6SGy1obsPyArQ+e8cw3vZGEL5H2xytrT3smqkW/NHipmEohZJeLdvd4iina9vUea MStJU3knU9oZ8Jcucwo5a7I1eW8o1Uyb542IyAgXD+93U3IrBf5AB7TsQYZlreEDCWFIv2eWo+07 XxraRHR44QsiyISJK8SGoh9anrgrqgGfD2SGE1JCOWvIaFTDVSuHtuAF1Dsvc3XORccXHZOQ1Fjk u851rNvXsyDrrxcTQolZp4TCqmj2MhXGxnkDUHQEWm9HGq1HK0C2UAq1bUuBbdwmZHrHBArFUKvS GuwmMoU3eBMVUK0g/2VZphsTg2V8lHm/5TMKwzOKJCU94zLuo1JI81zgYXqZVAXiwRRfkgortCpD hicUsXqlFR/CgxEPAHshUBLmBV4KJGhI8HEUQEvsxXThVzbixEtD8iLol3IpRxMaFDdgtwgzN3OQ IW1t1EbvoXPWhQ8oUjjxdFiO9nsGMizEQkuFZjZzuGhuGCyKA0w+UXUT4i+/1nWmUzAFQ0+mc3+t EyXDxA00hgnN5n85tmM8VoCjUSsUCBHcNkmCgz/dRmQ8SG4iMz0CVVt6UkJz1G6BAgp6AwuBUjJY 1ltiNlyAJA7gc1yHlCiV4jKYxXna8YJypg83ZRngEYMLsULNQIxRU/9nD+UetDIfo+URFycSAPID gNYBIAFeINcDSldhh0aH53cgT2CFzGIBOGEvPjEkNKEsNGREknUFM6dpz8NpG5NzENdMUhB0jjV0 ROJyUOcWCSJNblVYDIIs6PhLFKJreIEvBLN+jmV1dQNM6zc36sBi/+I6j2ExgKJ2azcyySOJk5hC CsUEk5RtLOUQJkI/lIQQ3fEl4OEQy9AJGplutQWKm4E9W5Q7sRE9tCEbCtFRh/JR4RMYgKQcYFaL 0YEzJ/gcgDE7+uQnpPAJNiUdSEMKNABuOTgKreJJ6rEMsBJKZfgLaEQD/aESvsIr46USErR0UAUA SQdV5Wc2J7cgGbT/IPZyL5LGLDLxQRRSCOwoUl81CuvWRleTgy/0DoQQO4KgOE9HVZ7jFsKHjhkE fEKQhzdzTnIhCKxzF5aJmYeIkPvya0rSmVZnTsQxkVWUCYahG2TiiGoHiRxJRqoySRAgBUEAAdA0 FbNJHSB5G5YRIsygJ8ywgbJBR015CqRSGdCAPYCyeDnJWTqWGdPQiig1SNIZlJL3PYgyZpVCUsuh eULDlMGINKcSjDSokmKiDKi3KunhaaPEESLSC5S4NSMxEiGRcRrXAR/3BBKme0q3YYWmS4J1fnZo LnYZl+LoQXtoF+zIjmjXT6VgTOsmj9vigCZyN01QmXFDX5AWN8AW/08kZplN8qGVZk95WRd4YRek M3/0tH6V2SSIcH/ngCT3J4h000RchmnXs3Zg9I4315oGqB7ZJpLvIJtBEAQ5IAJDeqSTQj8GARAK Vzy680WpaAqkyIoXJQ1mQgoUw1mygSa6OT2M1wjjY53h4w7AZVKzg51GSZh+UQqnWArfAR5g0h0y VQU+MHrEWJ6odYxaWYZuF1QeMRFbk0pJqEA28HEAknSwBoUhJ4Xd6IbxlY++JF/z1UGPtn7P4ghX YA+koifq1pXa4h5V6YAC1wjCli8uZ0TqFE/qR2J6qH5FVERWl6KloyTptAh2k5cDQ2KdeWwFw3WR MDCQgGkXSXMYmf8mGcOjwYNtBwGkQTqkOZACQ5qk7OAXp2ee1fUQNwicevMMTUmTnBBvqxgbn7Cc WIpHQvEMozCuKsMI5LAo4MAO40AdiHQ+/maLVPYJdXQq4mpHC2GDpMdCd1pkD3Un7lGwsiIrzQgF NDBU3SWovZJxvaIfNjBBukcBS1dh3ZRomuON3gh8WtiG87UgCiJ8QzIXFFqYiuACiXAQJeQDbJRz cAQiTvkzVcAwNnYFfEFYwUSrHJovwLZV6AAlyKGie2FOQUtP5hSjjtITxYFVWPei6WCZVHIYiJAY hlC1hTExxwN9yFoaILJMaBWb7xAA9Uibt/kOp5iDvUmehFeMMyn/DXX0JSK4EHqCMhETMaOoCRRz ZRtVKIEEKUEgAJDAKCyli5Pxb5gFGdKFkjWYrt+xHuuxQoFDp2Jyg55WEe7Rg3cWDHfmBCDxcegV utJon+D1cRkGVUTwBGwRVbQ0L/NSLh3ghk/QaAw2X+SCcsE3aSbLfy/ApqUQDarQIcmQJ/rwFyEg QlFSdpBwBQcwf/C0lzj7dUEntAZDiARDN0uSTiGmREwSMEgidfrSvaMZRZGQoBIwc6EQgALYnE/W taOBGiSySWGLm++wKUgJAZPxDyuEZQ7hOyukJ7CQkRqZri65Gc5APdQjFOkrKFiKG1dyJX4xnSFF UpayCbn4Di7D/7980hDosSc72XDoeafMUG0kLECtF4Sn5QSoNKiDqh+h+4SJOjmTE4euG1jz5XuQ ymhDUi6QCpdbmKpe9RyQ4bKz9RoeLBucgHbny44zAEV5KbXCBqJdaGyemUQjFkUouhMo1rSVBg6w GkWU8ER1kw2SsDJ7BG10dEzu67V28mmalG2ZBCaqMK66U27Dqwyh1BnFOIoYWTHkubUlhGWvwMAj aJrQ4JyFfHnHJUiYJXD4C2+ISzt2tCViokmjt8Ff4hCaVKfocYM6+ACqVSsSF1Q/aEC08hFFUAM9 wIQBEkt+1hIVi7rdNMuHxlRtORMG0kuO2mC1SyQ8HKk+UU7Id/83efO71DAyGbgMK2kpF7K8WMK8 mcCOTQRFk8C89hR2ixA7v1qqKnYX74cXkCCjPWG9gjgITkK1jIhpIZijcYQMa0wagHNW+yDHpFJH 3uEXm0DJ/xvCxEicbhtQTdkJJXTAIjPHpFd6EuPHYPUKeztlLAhmnFdw3NEdCxMd+/QPPzNT/esJ 2IqtsTG5HQy568HJq7IMrgJUakRxKc16O3BxGGeEvTJehZpeaCnDEZCxT7WoxUITuTwjM/F7s/uo 4vhWkDmQwHw6UcI9VdoJLrsZvzmK1BAP1zMDTCzNmABFwrYIQbtEwKp8hiC0wyZF99QEPeG03eyH TyQY5RsJ0/L/J4NSzBYzgO78zvBsBCTQKkaQydWKGRrweXbbwTK5Sc2wPxjFpSVz0Bq4zwRcMago KDz5Mxy1PYrCDdbASD5jfY+BD71VGfwLjHeKrY/7aeSmKsbYcBMRcfFBQBXnns4osbNHnw80XuDF XhYrYTa9Fkm3qOYyLjhxIAYiL44GI/GFcvEFTAJwf4jRMmxHfSU0ivnqJ9Hyf49RGJeQoMzr1ZJw CFW0godBJYvxdV79L05E1l4cBLDqE/DXBNc9tc1nGKcZMaswgNJG115bgR1tp6kQZycTuRTxr32d xH5N0dJgGAo8DRhYUXP83yKIMrtBeVTGRx/oUSzjF8Vbkkn5/2+O8A/DOV2ELc/VZaciTYyCJybM sKco7Z4Hm+IW97kigV7SSBJKtco9QAFqCcMeoLoREGsmIE7DPVW+DaC3e7u5yzlCjqF7SCX4O3Nq J6Xi+t+f0FsQEAqLSC1UjWnMm6AvkwjMK0LbmTCK0C8xFlnoAHY3gA5lnjoq1rQG86pO4k622kRm d6MDmMbqtqP0PQz7SxkTvbhIg1k65Vz5U9IErN83WXO509CkSAul1wxfopuMLRSq2IqEAq4swzKc oqShNqpqaiksS7f/GhugjZ56ItLocdrl6QwQVco/ZsIUh7AKWx8XN14wnYR+pnsStnRccetJ11Rt cSA9YDZBTf8uZdONMnJyiwaZvzeX46hVjQIOYMiIXoTAZ+LHfkIbVT4tz74YWD1FBtNOzRzE2q3l Laar4J0XeSEAZ67FrJp9URRiYqwNpmnIxUp4A3Xnf/MAqmDScbqbcrpJCCED7pHv1iUDglecBxE0 lT1vAF7A1qIKp2cyXgLhSCyCeWQND+MwdsSdhA4KDPNmzykKHP3no3dkqjLyTwO5p2DSr4XCKN7q aKTCILHKHzfz4FWfSmUCRFDbSzc5a+mEbXkgvGTswN45wzLc5/Lji0YAj/poDDlMwfpsAphREhMK meUCjZEIVK2y53sJgkGq3T62TRACfHE3ieA98MSzPbsAdsP/WNVbIWtozpClBGptzYmRtVD/WWky 1/Z+7yDCJZtXuBYiEDbTUk6DcJnErzjFCgF4rnuC6or+3w1d4KdIrkJxUQt++XH8ZsUrD+JqG6CO rx7NcNTV0aQ32uEm8Gpr4qu++i6/sM5oXq+NhDHtcTOu8xaGsRFgsbkvL0JE9I5qfmbzIjzOAF8B V3CFcjTSS4UVTMHEoppA5VkrLeorLago/VfPGPRQ9rIj1ticzbHTTttsbFqHdSM2f/vCtPiy5vFE iNoA54gBKMK60AL1snt/Gq0iMqAHGGmGHLQJCBCCEAsLgiFMMoqKGkYyLopVJJIklZaXlVWSMhqd ng8PGpwa/yQoVSgolRIkEquVppKSrqmsrBIvlzKaGpqUli4kLsDAwS64qLq+m5wkMs1Vj9G6izI+ ztSOjT7bop1GGg9Q4lniUFnn6OTp51A04jTwOyFIRR0/RTb4+B02Pz0UEYgIJBLBAxGDCiIojKDg SYQnECEyeCKEgUWLMJ5cvDBRo0UFCmAomAJjIoyMMIRUZCAEAQICMF8GCNAEQpMXB25eaXXFxQwU GlCsmnHK1Ayfmm7dXNqkac0mC168qLkgwJUmV51q3eo0AIEFSpooWdCEZtkmN5R8VRIAbAC2YcWm bZLzgN0rByQc+IkKVVBPnzqFepCF8LrDiBMrXsy4sLhHxv9eDJLsypZUQm0JDdIMQQqERJEUQarm jJiqVq0uVRFliVHgTpJMpXJWy9akVKYsaXp1KVUvwKR2NxPG5FcwErhmYWK0WlemadBEJXNGQ9E2 KEZ8dILCDUq4cFl8jDNHXp25w+XcGaGxAwk9f/ds5LPh3kaPHkQoDNy/MODDC09MEVFEE12EUUMW RYSgRQgIIVFJBq4kBAENpvDVhW21tZVUV1RBlASrnVKKJjOAOINUN02F1VQ22dRUi1xtdYCLYoHl 1FgEqAWWjXDB1JRZYqF1Q10H4FVkXlfsJMEVpQQFC1DADUbYlI1VaeWVjvkADRNMSAZBABDoxgsr Ur1gCGf/gjAxiGeiQRKMNLRVMswqEkCACzHTNMOMM56EuAsqmIiJSWq0TELJb6uBA5smilwyjDCC vFBZJXEmqh0p10i3SCecRNeJeOJxp9133oETTjmLjZNOOe3EE0IR9cDaQayz2tBBB/88IZB/HgDg gUK7PvQQRCU52JFHFpHEwIJPiHRRRcquRFGBLDHQoEvYvrQAARu+oKQEJ/qGiocuKFnmVVPh1JSK T53FFVtN1TVWXE2tVaNa84IFU1hm7XiDVknWhddOSc5QYl+7RGkqKIVh6fDDhz1gjWhefmmnnXTe ItWMEHC82UxpcskEMKJRU4mdUqF24sVltibcKLwko0kq/y/4ZgksgWYy5i6JdtMzL6tN8sswUnWJ ywvA4OIyp4tAwwl0T3tizcTWQdGIBqVuo3Wo5xi2DqrnkcOqEVA4QU8R9/xgD6384OoQD7pyQBBA EZhQUN09DEtgR1P0rcBFJ510UUjUJqjRgAMK0UFLQliILUwwbdsUWTZxWK6kLni45JLe4sXuujE2 Ra8S/3LbBOSiQ65WjnDdsCO+b227b+RQ1d7UFSryZPDuu/v1CSgLew3x8A9bnadkYNp5AJg45dUK mDNK5nHygghTDHEjRxLZVEU2j9P3Lc8g9HEwexLnKkDN3GkpmPRMCXCS8PIJzL3IWXEx+EMDDQoy 8E+bdP/dmFp1rPONqZHmatfhTjnIZgThhQ0d5VkVq9zBHveczYJIoI8GcUUBXe0HAAoB4UIgcgEA TWFBDDjhCTHSLBhMwXAGegKCEAcRFWqkIhcgQAkb97h9FcIpKipTFTjkrSIuJSd0OcvnsqIVAgDp X/BaHetOBznVccuJZBFLFX84uR8t5XsHkBTB+IIb+IUieMRLI5bC0Q3keCl6dplJGFuBso2VqWJI Ixk1pEEKEtgETE1oBV1eEIAy3aKQx5jNJKImCkkYQzmGChpvdKYLprnvNfJ7DiVKY739iSlEMWPE NxhRDe1MbWLVMWDWQAUqcRAmbOCxEqvS8x57+KMHt8r/Ja56oCu4EUQgAAimCE2gAGIO6CEQSuHf AhQSF5ZEhjKk1glrOKCRMEQiDPCARLL1kgtBbltZbEIIQPdFrvQrnKYTS1h6lKNvStGHq8OX6l6X I3quJZyVW9cVZkAwOhksfYmCkmCkJDw1GlQxoqmFXjrGUOjJUS84YaghJfUCNblAZDJIBEaHYbHl BcAuywsj+AxZm1xAwxJIQ05laMHS5QBtFCQQDCYDuJtQskZPY9JNp16qJ+1E51LeuNQpPWG17GhN gaiKZcOuVI5QQWEH7YEVBjEon116EJgcGAEHIkCBhNRNIdqMiIAYgBKyPusjNhzcCwPkAQExEyTQ ZCs0/0vIgBJSiAATqmI6a3cu3GHFJkh0V+i2Yrq3VHEsFvBRPPWqOhztq0a0A5K7JMXPzoGrFCj4 p+8AA4qCHvSzEmxUZMoyk7KEtJAfLVP0UHYJLlHDB9nZoy4EkcWctEUAVUkeSQ1ViUZ6MhgTvcRK V9HIaYwiFEANTCgS5RrppK8bN3VTJZ82DcCUDxyXGqUpYas1DVynld4ph2GU+jXEpEc8TtgBrH7A 3va27Vb2wQ9+BCI3IgCAIAoppkMiME0Z9s0jJSlrC+MKVxk2ZCS/mgJ/R3JgAf0XrnWtK+MuoJIG MbZdgz2dFn1Ur3W287CH7SZjQfzOeflIsvFKolPCuP8Tg4GrLzAGikA721nQ2rhr3HHEI9RUlbJw ayZARm0AWnHH3UICNItwhEZp4wJC9BjIpG3oHVfhi/Fd4jIsk5QbC0WpZrRmFFZTlEzPOIqTVtKm jdqUdkhpPu8q7FPa0FopufENBXJXPN9RB2MeCMFTUbA9GdQlfG2lOF76cj+/ikAwCeJViMD1hG0l 60iaNYW2+u1w/31CWw8XEQ+AZFiTFtAFPg3haqlkcTCZ0IRkJ7kuns6weu2w6dYyu69QccR5vbBe wcLOeUm2LnRJ0pKqgL7eCVRRBKWxZ2/8sM6GGRhdUlMA5vIvugQZZHoBUyEvNgguGeHb4P42E77d KOT/CeDay/MS8yRzR2KECLjG2EykIqMaL+dJEfwLHrJNBRhrVMHf1AUgzNb8KWu4GWsDHbN38Rye rRkPaxILlde84xiH2VmBFYxqESwYghC0x1b36SAROMABAGh1BMH8VVcfgmCGTDMjfbPWRPpL4Qus cCINQVylGawATzPT0T1XAEeepZKiM+6uIn6s6LYFLyo6xUb30letP5zYxE4osSOe+qwJYAGmVzte 3soJZUsELtSA6yecVfaymQ0xZ/cxFXVCC02mPfcMCWJGH20oxurkWkWA2+8yMIKXCbkAjzIPyF8K AvPsZww8BaUSFZO3VExjCUxdw2nNSK5M+90nT525/+BOndh3kws8RWnpVD4ABXdEYdQ4iyP146BS lVSFDh9QkAZOyP0OflCDGlCAAu69FXvvY2j82tf4iq4bgAbkVpH0bawuXOFY/ctpFSrE0QtRcIAU zH0VTjojpmYJhRnnkrvq9Z0bxnXWU13Fo59fdiPeUeroteKCaZYofImk75JdY7YblI2kIAyRIQgp 9iMgVUhhdG2Ix20QIAwpBVxqUhzH4UcfFWSEFGRVIQi3AAEhcCbyphlnkhmTYQzsQynXMAqfJwNn JGafwgmXAjOcoHpYIx4yoECiECrisR36dkbaISpbkx0LB2YQJ3G0t2d6BkHtYHtl4wNm4x7z0HEL gP8EHdcEgXYfDqEfKEdy9hVM/cF9B9YsI+FWDgYSywJNDPE3ONdzvyJWiZYQleYBbQVXDNZC1ZIg QjB+FtESVfQS5cc65tdOSvBOWieIqSYEWMdYuTZi8AI5bzF3WLEkRzJHreAhP+EpMXVwaud/asRG iwApeGcX2XZuiLc8VVEImQEmdAIB1HA1cYJTyIGBiqdtpkg9xEBvIwJ5WEZbZzJ5D0gyXtYMnKJ5 UgJn3VBm5cNGEmNn30A24BU8aodcRxVAV5MdVhNernQefIYldoZ7ulcPaqNL8mErIHcfXKUAI0dy WlVyDJF9cBiHlvZfl6YgOZdzo1YQPacQ01QQnqb/j2/oaSChACUwYA7SLASpEhtxERRSYeoHOUJg A6c2IUnHkCrBkH/IWIuFLztST4OFE5sjAT5xG33xO8/IMJqYRqWXURflZEEgOXWngNdmMRRFSJ9R HLX4GTP5CzLZMZKCMl9CPdpmJ002GWWyGVBhCB6YR5SnP9XlZqWyMGK2SiwoDs74enb2XVJ5KYOB XVuzDQVkVFYzNd8Rcd4xXomRjYjRSkyYe6+CNmpTD7nklv7wBHlDX1lVcse3EG3Yjnr5jjb0N9c0 an8zanB4fYOpj78ChwKiaP64czX0fMSCTRzBEXtzARYWE3qIV5g5kZATkZuZkBBZkbsWJFDBYVok /xZeYRZgVERDUQUtJgEx5ow0VpImSWY0gD0caIq5JT0XmFtA5lF1dDEjkz3OEJygMSYbmBe2UEfU IwjBUD1eckcokDKRFylhwj6xcF1pR1DI1lkIBw5WEw6jQipNhVRIhTXXyEZbqV03CJ5gaY2wR3FH +DCspDXphQSApkH0kUGBxl66Ikwm90sld1+9ope+4gEl8HyICXQHVkz/aALE5FX9oY94uYaa9is9 VwJqiKCIuWmHA0NndS3XYoh4ZZCJOKISWXSYSZERyZkjdjqluGJANEeSgj6YBWPAgUayOTzcOSYO aBOFkIF7hxMLcAN5V0e6qWUkABpeJgtI45G7kf8uKSIVPrkZSmM9kwAiZKJSqtB4VqobMfV5ZzSW WcmdyVaNV+NK4CGmp8Iq4PUd3tlZW7ldsOVdEXcda8odeWaWsgReuhdVxHcfP3ABHSCofzqX+GUQ 9sUBBuErB6GXCMaGYjgFGLoQCfGPZ9hzHNBpFsqP+5Vfd+MBiupgm1ZplXZMAXKqBsISL2F0GVF0 FIYtKHotm6lqjQORn9lNhLgvc2c6djEVPNE5RBFjx7aCwMMwa5ejjXFGu9FkUlGKpyidXhGLvXkZ qBhvDcglDfibDVgK21NkdnQZR0M+VQAMsaAbQkGuORM/+uMpN8qCxXpGbvcAddZ/jjElYsqmUon/ jDQmKqtXZ9dhnmw0ltWIpuRwrI0xntuge0jAXuGYn1S1S4qGVSR3XwBQcu34EHBoYMc0TSZgYP9B aoPphn2zl28IAGFIQ+3oENrHhmFVEFNgTCS0EiyUErSqOBPSATBhLavKhyVEmS4xkUC7qpHDdfU0 tK+zFUMSbHdhdksCkpzljMhKPMbqDOOqFRaYF4m3krhVCJPRnJ/RZF6mR0EpgWMSKTixnCCDpMAI Z9ABGKpgKLARU0LzMgg3Z90ACqk3kjdYDRe3poZxr3eqQMnmXeGVjOKRHYirQNSIZ/sKQfF5JWjJ hD4AVe+BS7lkK7dSBPdhAry0hcE0sb2ijgOq/4ZgtY6VZo8KKnQR0bFgpZdJcLEJkWjUhDhhxVba dLsGQapw+IUeUREpcRJFxxLNwhKaiVfl57MtgQCUyTiq1k19yFhQ50RNUW0CMzBJcr28UxRQAq+Z GLXN1lnjOkSEUBOYkbYBEARB8BUrmYFahjTd1oClMTJNFgJpchvgijzJwzGSAQzBAYMx02YzEz9A 0xyeEh2rV0ou2IML8537eip+WxixCR6qh6ekgoyFq2zjSZ7eQY1vah6OCzHiQQPzWZ9IAI4Nmw9W FRAkJzcTW7GKGgEW245T8Ll76XM95xAyFAEX0LGxG8Mp14YL0bE05FYaASD8pZdsVRCaNlZ5qP8S v0uzvnsSN1RzNtuQMeGzLpFDCol0JTq0Y+EV0usuRzIwRbJPZEcU2nujBLVU3rtGy6UL8ZYipJVb 6IsAIiCtlxE9d2KTwXlRkEK/n0EpG2i2P4kxQIlTcsYpbkZmnZA+vQUbiqzIxsPIjFt6YUa4DBeb icEw1hiWI5mJa4q4ToVUGHxQ7XDKaZlegGbCtyIF9dADDnoQx5eoLmyxMdyOn6uovmKYlYrD/9gQ BeErzzfMAkKPNFTEkXkss7vMyFIRTuzEgSMEgUN0r8oRd/izCGADFMKHsppXzxs5OHIWZEETPcZi ZXy9ZhysNjpm3dvGV6J6tjcJ24N3PXm+2RL/iyiTIh9YPe9LCCGgR6TAIvgLPRBAJ5WHcGRWBcgl U0CxgvpjXdvRHd6JcPmKwd3JCeehelRiljXmbBCMwRr9SqinwQ4ssH/7uA5jexSk0rlnNm45aLZS DzrgoP5xfBWbjitcsYf5wxebXxVqTU/AuuvYujLsN7zLaREWs5K5fJKJw8dsakZXdFCsEgU5dMtb QtzMzca7mSy6ReC8I2YRRnYRSOdsxiG5WQMVwQbrzhGDXPJ8GUsBZAsQBAiQviuZIXq8CpEHyJqh Jmmiip4gAeQrPXknUpPyb0+pxp0wCRBtPi/4KYULcWIKm8AzrxB8wXrqWRNcuOYge+ywQK6E/4QU B5/soEbv8HpKWEH4gLltE9O3Qo6ynNM57cKHCYeL1rqe2it3c48T2qiDubsR9jc5MHRFfId3GGF1 lUMXoDfF7bN45dxRHbxRraqvWtzP7czWstUxoS1D+03uMndskYG2pRe3IKNkhNZREsFsbSXcqSVw XRNtMdcrSQAradcZUhMpYzHZ2oFfm5LVE4Ma4AJzNxVylDK3kBqLpINa8jODoSWRHIzd5XcIHbAT XUAyCIBG0DXo4EBr1DD959mfrcED62wkqad7mh64l8ol3APf+NrCZ1UAysLpmKgr3Cuf6ysJkXJ3 w6iwC8yeek0a27OUmcwSZlc1ZxE4iwAbgf+8SbequerMznzkNmsRFKZDLWEgPRR/FyI5WAQkqOk8 PLEkwrYkNnpsaT0la73esAQ8PuBH40QW21IAOQADBVDXQYBbuJUhQcZQ8oYI/t1tJOBTgg3IpGXg udANpdKUY7pvaQ1x5rlmeUtjdIq3GD0l3DCnbOc1It3ZBWuNnD2WHv7BxMOvKa6EChuOFkQfUpBL vNQDoHqOUcABsV6Xsm7LK0wQiypMuq1oBTpCDJFgl0qGSo4gCDAgTT10HcAgACJhLMF+eqWZ0R3F 4gflyd7sISohzQuifBh/8ZRbzhovIGW9SnLe6A21ab7eG2414/qcZZECDJADE8AAIsCbeNz/k1+S ixHoKBZVDeEgFEV5WxVY0NXTUwLLDU+7eQI8CttAXRQsKhAHpwBrPEaVZ6acDmhOleIZXqEOCtQI 6p/VVO7AhOKgsMPXA4JqS/4AEPoh6/YVBS6PAXXpwgJq43YpTAcREAhRqcMCIEb8H1Ru3HyYVypR 5catOFXUAREZFmSRI+qEL4EYiHilBDVrdAyQ5JipxRRmIZ0JOc3uTaxGE2Ec1mKcE0vCO+Q+rO/a 0WyM7hbfVHImCT4KTi5RAO9e5z+6vhhoJ22BvlLggVDY9//NJ8jxJbt44K0hCsg1ltC1eU65HdCY g2iqpvzGwBJ8KgAr6gc1XvbKyayieh5M/6+gha98ep/84LD0gMIXcB+gSnKxPutZZfOKGboUe1/A ssuOprFBTWDIkqobMfTjp8VD/5lZ1Fii8/R+KARPrxJSn4io1pnMa2HXvs0VAb1e/d1dQRN14S3k /RM/ASIhmZ3KtvZs/zUOrwE0sO4LYAN8KALYgr53Lq0LUNfyLd8pgL6cEZyB3FyDXwgpAAgLEC8v EIODJDIaPjIkVYoaMlUalBoPlA+ZMj4ak5Q+oJxGPlBQmQ+lGlCcp5lQGkabMqYPWVBZtri6u7y9 vru1qFm1vsHDusQ+uqW3v87LpaCrpKVOOztIHR1FNto2NkXaPU8RT0REHOccI+tRHBwA7//xAOjy 8fARHvTlJgoRCiaeXHhi4oLBggYTdkBwAUGKhgRsECDQYWLEiEIkTlzQhEATJUqafAwZciTIkygJ KJn40aJGAkImIrCIgAECBEJwWtzJkwDHAEoCNAnAsQkhkS8OXHlxpWnTGSiiSq1k6VLVVseead3K lReqaKQWVSHxIsSCjWcRiDgbhEAQtkGC3JQbl2GKFFIMhTDEF4KLRJl8vCC6YMHeQ37/kqgko5EM q1QrXcqEqRVVU5gnq1JF2ZQqRo1l2MrUtfQzZqZ3NTvddRUUGq99OJHtpDa2cD966O7xI/fuc+Y4 eEA3gt26d8jh1YNHD0CECESeK/An0CD/goUNGWZ3mMInge47lbyMqOTsgpLnRza5sf6KyI/u35t8 j5Lk+ZX4e+K8ALMnz7MWDdVEUUIdcAAEIh0wwwxKOXWFBBJIhYIGE1I1GVZZpaahaaWEJoMLLkCw wwsDFlYYXQvIdZMIbcX13U0O5ZBDCm9JkVdfgihmiQwQEJVCYRCQkIhjkYRSJCuURVYZJpW9wkpm pXRmySqtrDLKLagQk8uGXBFjCi61fInlMVr2spovt5z5Cyk+wOYEDTTUVg022CBh5512dtPBQOeo 884IGESBAQfuAECPPiMYGh0+zzX6hD8eRGAQAwhdwMB2MMpEwEwaZbSTRjaUFxR9IN1g/+oVN7hX knwltSrfq/JtutNM/mlqEYBFTURUR0P5xJEEM0jwYFMQThWZZliVyeWyW3m2ShUglvUeUYQJoOJc cnkXBI0I5ICAFAswwQSITCQirgubhEUWBNsKAqS44kJQbmixwPIJZMdewoknjHFmS1WbeXYKaIpc SQsuajLL2jIIf8VMM6upKXHCv7xGQyigwFlbbdnoRgFvH/O2mzl90oNOFO5EYSih0RGRKBGGNgdA QM890UEP2lzQwTc8m7VrCE3sRSKCJMoX33tHk3jAew062IR7DjrdVNGwguRRqypdnV+ABFgQ00oq CRhAAASMXeABEpAoFCEvLLighBVaeP9VMKQpbHfFPsRCgwsjDkKiT2MLYLYAm4rAAAhTgAADAwXA yGIB3sZFVF+GBIAYX0ycKIghQnb+SGWozN3K6KQjW/olqwQcemN5T0maMHe3lgvFw6SJcCmx46Jx nHHusLE1O4RgZwd3FsENz+MQMVw66JycTgQjsJDOOzAT6tw5keYTgQkR9HCB9zbc9eMCNpBfWPmF mVUUrLAe/bRTTUP99PtRN+VC0lXTZxHYVt+0U048IVt5yiaABZhNQH4zyhWW1qC3wU1JlhhG3XKX u1LEQhJVGAshJGAgAxkwcJvKSQEYh4DGicBagktRXDb3gnGRgAkvABEJXNDCQqQPAib/wtyQFEEK KXFCEYqgBWVOIRkmQeYVgXnFLBbhmRkayRWwo+BpIFYxitGOS3Ha2DWCt0XhDe8H2ghjOPbUA+i0 DDkpG9TKmAczmKksH8o7B3TI8T2dpYBnhjGRifYSgkIEjSlPucIMquCUQUalCm6bQf2i5janvE+R VWCbI6HmPl5lrSVds0BPwNaRswhFKDc4z0+MAiEEpU1YwoIKhahSIavUTVlSVNgqQgMiGhKiChAy ENkscBNeFkAIjUNABhjAABEQQASWG5seDQEvQ4SoL3uRQhCYWYhqjutDjcmMK0bRmEWI7iqWABjq VMGM0IXuFZEAIihQQY0vxXJhtkuY/zsZlrtrhCAEwbunnbyIBBv0Zje8+efNnkCy5RGKBVFgAQYG 5Q52oCwdhkoUdAAQKYBsz3sISQECvuEr85jIJ0ZjSiKrgAJElhQFgySphBQJlQdOSCqCzOD9UjrI KxByaq8SJdiydh7/hMQiZBtbE5ZWIKMcoBBHXZpT4DYVy7zynbGzoAz25jcIHMBsYxNBCQtgQhE0 zgJaLUAMCsAiwQXgLQYEEl+oZcAY4jAI4OLLC2bYOSDy8BWYwWsohFg60Z0CSuPEazojYa8vGQOq d7ui3bqYT30iQZ826Cc4tMGN43VDNyRLGQcwwALpLTQ5f4KO9Z4jx5Y16jkBEUhBhP+QEwB6hyOr UqAgocLSqNBWKi1FqW3dplvcojSDGTxkSROJU6YYtSWx3alHbnWroHxSQNN6T1I4qJQFkUBCRbxQ lhBrNyttgq4okEAABHfMAmRAmGoRgXoFJwCtqsUtQVAvAoJguUIkohCGIIQjGmGIPMpVAn/5C73I +bBXjAJJp/sExvDKjKugMxIuuOaUCrwl7mpFsbJ0Bj/7iYQi4KljRNgNBULWAxKTLB4NfcdnN7vQ Pq0jOoo6LUGk049GJQQim2JARXxSEvc1raW5XWUl4sYkSlSIyEMuYoUmQVJFDotqQ1nJDXZaErLd amzlea6AOLJBCAmrQdg9lmSIAUv/C3MICrHwwQwRhKC2EIBwwOQqVzNgzPaKIANkVa+cvZWDaQIp BDYCl1lCMC4mQOAwfZnrfhPBGTK/LhVCDGekw8Lgv2aJiFBoTCIWM+GDZcjMFQO1L4R3zw3j8za+ 2YaewLgzcZCjHgAQ1EIXapw/AcA4I5CjCbjXspg9x9fae8Klht0QiBSGJe0r5JGNHBUjM/uBcnNl kqii0kHOIClDTapQoixAUS4XqL3a8rYl0ASrviBtxHqQSiFYGVHLkk0aoKEhrjpea1lArDEAAVnZ 294MgHWrE+DqfKeJuQjrUEiGppzfFDNDEAWRGe3s0GZOh+C/fgYUVUndh9C1Cc5Q/9h27k5Nme+G p1KT+hp5SjVuBPo9kjWPHZz9rBoroNB0fDY6FNgeaiPAHOf4/B80Tgj3cMbR8IgkPow0FoVeCjcH hjnaRXb2S2egQGEN9VVAeS5RdDUgj2xblFdf24MUtCBBLplfo/t0yLsUDSMYQQNrLtB4J0K4O4sV zydsr3lPuFUSsugthFnrICBEAgng0DAL71zDhxTxr/RQsKHzaziJSEROpCISQiLSYwocz7V7/hf3 3KLoufjYENxsN73pAKu/RwSCOm8EgmJOBdYBgEAlih25NmMEcv7r58jjtP8ISKX6QVDrpACAJVna lNlz9KeUHcgo5e2EbstUVSoJMv9Tvy4KCp/tBA0ott+HrVAMKBLyI8io535Q2SVw3U5kMLvGGPnn zUQKSJAAhwFISgBusP9639kCR7BvgUNeXjUBVhAXbwFN8pJfMAQiOPQjQaJ4ZEFXMvB2b4clCyZY BjY34cRu0kYJHhIarjM787ch8qcw1iA84LCCYwRGvjFiI6YbYIRZyeMnshYFs1cBg4J7t3cO+8B7 0NEoMOMcAOEP/6AAjxIBl6JaSChswsYAMfE1/EMSU1YSzLdAs+V8TtZIDiJSKBBTh2RSUiEBYxFe EHI/C2Qg8pF15RFd0MU+RLMUwKJIEUIJ/LIkr1OCW+EwsSAkg7EAHSQAZmUgNyD/iCJgAQJwA1dl VmRTE42TgHzBR3tRS5nnAiFwFwsQQ0ISFZnHaKHhA65QTtMQFt5EROzWaJSgRHVVBRhHCximh56n gkXgggAlYjxAAX2CizBoDrsHHcORMrImcxgAe4RSHGbUa6XVRgoQHdtDDuVAUFPgAdVBTAwAA1Pw BDBgjYsDhazFWvXxjUowZe/TQIJUSMECLOaYWyfFVLiEAi7AftGXbkuhhu9RFIWxbSKBjww0FOr3 dO8HOskCi1PETZ0jXvRWb2NzkIJYb/xnKgsQVvNlQD2yF5uTiZvYCUJyeCaiaNuHAorgiawziq5x V5a3JJwQdQ9geZyQCA7HOhPn/woCGZO40AM8cA4f0ydEgDJRkJM4eQ41iZPH6A7tICiytlm4FwWA kmsroChDGITxIEckQ1AEERAecI2WMhAKcI3ZyADYuDhCAAPdGJZK4DVhKQT1IY70wxT3QyJFc1TX hjbnBiEiRYbwGF5jQVsLgkpTQ4/5yD4DghSEAAGndAVhRlJidgpqJ5PIEA0yUFIadACCA5n8R28K YiALKTiFSDgtIpH5xUzM5AiWMBaUAyT6pXge8giQRg0el5IvaRUnmYqSlgl9KILk1GivqJigxpM6 mZM62Zs6CXu9yZvm4AEP9Q69mZQphpQvdmsjcIy610YU8GpPUGJS+YQDIRDY+P8EU3CNDLCdU6CN YPmV4RmW4+mN9RFSRpEgRQNlTKNAwXJSp3RuwTJ2aeiXWzZUbTld6ueWQWaHHWg6eYibqoFmGEkC MxA4/DdeV6VLC7qIglhAZbN1blEY0jJo+eUCHjkWzyRvbHNumwgJdmUJJWlO7LQZHTiiqWMws9RN 90I6AgqLN/mTOckDwOmbO9k8ppWT09ObJ3ACgUIotleMtwcoSNmT+xAPkeI9F2AC3kMQ04EQw8aV U5CV2eid1vid2QiWWbql2liWQmABJ/ER9umX+IgU88gUhLAUS4FtxrU0Q5FW40cY1CIfaNoEqeR0 0NZuL1oMRBQVC1SIingApmL/KokYqA5qAUEgiB9kOc7UcDQQGtekaYlWTR4qgY0ggUxmIVbBaIvw Q43QCaAaCZ4gCS/EeK6RGXuqhyeAMj3aqqvqmwjlm0QQnTkZq0ipkxVAlJrlUMwDD+zQa7s3q3AU KZXCAEpqEApwKVdJTJZSpdvJpdnYjVwqnlrqpV86ESvREQPkETq1P21YGKsCZUU1ptClZeeXFCSi pobJVNeHIal6adOmAcFCiKYiqINqqFc1meOFAAWkTIcnBYQGL4Y2sOMib/nFNmnTOQzHaP+4dJDh CoRlop9zfQ+WThlIYKmqh0g5AkDgm0BwDh2LMjrqDjZJkzkJBK0KBLl6AhXg/6OB4pu5dg/PAz0c AHxDSAQAsWsAUR3aQUxIaBNCYCnaaaXgCa1Z+pXUWpZeYwFgehIqoVxP2zVhg60rsT5gB1TkBytu inXyoRTSNQMGulJ4SmQTtKejIxljkUv7d6/12kFjk6CCOKFjo3DzEmG1xAT8RTkHkn9zJW+KQaqe 45jO9myRMRZ3NQ2RcEEOx2hR8jAnmLHchZQha6O++apR0KM6uaqw16ooAwQYgLmxp1m9Kg8wdkY1 yw9GiIS7dmOPoqwwghNCQEww0JXRWrvUOq2sFa1hubRMy7Rg07u+C6a+Kyr3oa21MkD4wTRlKhTh uB6vgqaGZFtPp6kB+qKmCP8JlMFBhHqvidhBhdh/BdSvjNq3mPMhLaQYIZJDgVlulfqO0aKJmigk Y1GgGaR4oUqqRZYIGQRETFRY8fe4kAtVlcuqPfoBJ/ABCIzADZDADKy5UfCxsNeyPqpZKZZr1dMn ugcdKlMQ/ZBzTLqkq0sQAjETN3EBscsf1prCuXu0uVuWSmCWJwHD4AgSX8q0POG0/LM/97E/9ShU IsF8JFEIfUQW0at01BuQqfp2H1lX28dBEgCo9MqQjPigc0u3l0hotSRgmbMA3SGYUREhnOiOEugI 24dLhumfHQgwSITGbCxtQyRBAayqrnrAPboBH7AEG4DHG7DHH9AAeYwDerz/AT2KskAABA7gqgvF AiegUDBHPfNAD4ziATM7HEAnwgS1hMSkHaxlwt0Iu9yowtJ6tGRplrtbyt04ljX8wk3btN+oSfix UyNBtTvFfwPir6B0dB16SNSXp2VrvUmiabT1xAJgr4q4tvzWXoKYqPQlmKYpJBogLpvGLy6QFoDT VnJZOYMQYHLZoY7QOc3WCWfnmPv7CJvmko32AA/Xy3HsbnuMx0vwzu9sx/Eczx/Ax3vsx/h8AkOg z/z8uT2KUD96a9YTR6RFUc8ZhBdVHQnBlVI5EABEK7TiH6T8jTX8paj8pd4ow+bJWsJrlsILjk1b haxMZTkMEvexbfjIZtnG/xTYdWTfDH/qLKCXMENCwxQd5L2DGgCCCr52ptNmo2gZuReZYwN+4cyR AAEMEZFCMXi4dEqKt31kDLYk5QiZmsaVgHauCYp5SGYRRBrzdJvrbDcGjMAHbMcHXM+BvMdq3ccG 0Mf1bMBDYAAGgMirGiiBItCF4oPykHN7bUar23LPSFBNeI1P2B/9sbRi6dFjKbxL+8IvXNEwrNg1 3LuRrdg0PJYzbDVZEx4nwR4obR5lup4QkkgOpFJki5gBbASZBl4LkhTETKiF6tPtFV+JWsX7hXmF gC7PtBiXwCMaRSv0Zc3V9I6dc27tWKnyOwnmK0PoO0MeCYIRy049dE4SJP8MURTWFnbWZl3ACdwA 8azWa23Ha93WCCzXBvC5iswBNQdztJYoytmcLjMCFGACckQBS0pQ+iCNxRelUAiFPGGWKhHZjx3D ku3YJ/HRrGzZMQwSq9zKma1cTasebzgS9JogU7MU6mgsreSuZgbAv9DbQvIXfMFBAZB3gmio+5fM f6fT7PcI7LewWfwXM/2A37FCOu2hHXldZOHUuHRdlKpBCAvUZFGaOg6qkgCqPdTViOnh2H03/EzW +7zPY70BOADeG7DA5J3AWW7ALuuj6b1ZHDB768AOFQAAKyDfZw4AMLgPu6cAOnPJV5nUJszJOhGF rwzSeI7nI83gKLHnDw7/jj1lNfVRGBO+fKeiFHPoQEsnZNGG2hn7Q+TCBGZROUEAVojYtm7rfyxy bn+BX4rGFyzJOY2wxSYCeIOn40LCfql+XVN9bT2CzUfFNj0iCHGp4yVFv5vxJHTT5GvHwHb81n3s zu3MxwrMx3Jd3h8w13Pdo7OmYoNCe4YSAT8n7b/WRtyjANGJnallKdTY7S582RNdH37e5wiO2Xze 53/u4K/MU/gBFARQhaVSr52UnkuDpmnznmMLkEweO/vOC5fXOYZWCIFziJfuttZyVso8Ni/OF3/x CBvXcLoNAeCyLXKhUQm4QUI+5IWQNkOh0n2BvmWxOQtYaALWkqAgglHS/++8bjdzfAIN0KNDUM97 bADEfgJtLdcVYN5yzbI276M6+FnsPYzULu3M+GvOwWvbExAjo6Sbwu2cHLSJ7dgCbuDpXvVWH+/w zspXY0CcFDbLF47Nu7VL42VgzFRIlnYqzywxzRVKRC6HMBiBA1aJqNMOyohmgxjjy3DOJAMJFy+H RhgqxLdDPsaF16GDdxQMH2AhEkMbGkNzZVfdpMRIkpgrj1j1PASFXNYxX88LfNZcbsAGkPPHfvMs 0NYu+7mJPCg7eKRxFGOn1TIeYN8YNQ7ew6wVAfWs1QExcfuGTcoyfJYoYSpXn+5fD/YgIRKiQhQD NBLMS37r47wM9CDymf/jdWnEyZL2Joj9rqBptkTiD8q0IhCoA09fY6NoacMujMo5JDDT5+L3h9Zf 7KJCVRVDaUP/gZlMRsE25daoMgQIJCQugy8kLxAQhiQoGoIaMhpGGlAPlVkPmZhQWZ2en6ChoqOk paanqKMbGwYVQCewBicfsh8bs7CwGBW8GLEssiwnvicsGBzHxwDIGAARzwDRRM8R0yYKT08RChcX T9gXDBdC40IIBEIdQkJKBEpC6ATy7krt9ff1N01N+jdXNwAB4rt3YyBBfAD57WuiJICSBQ0XKmni cF8Ahk0INIG478CBhU0OXBk5cgYKkyhSNtKQUoNLDZoeYEpFs2ZNKC7/Bb1AFOBAgAACBIgIGkCC TwEZhvY0VOVQgAULdpJQRGiQixeEXCSSAgFqkERPf+58IWFnorM/IRxQBCHtWLZSCwmSQUKGXUJ0 ZTSFBBPKpZmgZNocTLiw4U44EqzaQCuWLFlDTkSJnItXBQOtMBswhsGXZw7MOmNgwYIDESIAUE9L TW3bNWyvn4QbR7scAnjz6N1jV88dO3fyJioUWVBJwOPIjSs3Xrzev4n6KDYMQCD6jYsWFy4ArlFj yI8eR4q8MmMG+SotUVRx+QBmpveaDsuvmYnu2J8LAgwNKqCn0RtCKVUUCY688BQEgrigIAlV0HXV ThJ09dQCZ0FAEVRQ/0FQViIfTdjEWS+spQhZiKx1wCJZoSCDETL44AOLc1UhYyQt+iVYYPPlqON8 CajQggoJfDCEAY0RCQtlsDhQmWW66CJaZxwAMBpnwoAWTWpYRvOMB9QogI2X3XwjjjjmnHPbPBYY pNtEbMrDz0dNXCHSAQCNhJyd/WDkDz/37HNdSNn9uQ9EFzn0kHFuahQRSOGRJ8F5KkX60qTw3bjj pZ7Ah95OT1EkAAH9HSCABCTQGQCAP5Ha1FSKCOKqgrAyEmEiUKWQAoaKbEQdAQGo1RZaC3yYVq/4 uZUIWa4+wmKLkLg6aYs+/IXptNTWhENiiW2wxCq0fPDBCa8kCUsF4/9aVkFnw3D2JGijJRMlalfG y2UEznR5TTfdcEMOmbedY0NwBt3jzkIXRQeoRyGJ588/djIc50gggaQPdh8JGpFD2FHE68URf9co SeTNgJ5K603KnnsyWVrtfJbApEFTEe6j1nah3nCAUT155JEEepGQFoJ1JagVE64aGNYCtuLKUwBB EJBfW2H1moiw+T191lpiJbueDzIQbdfXfK0nQyXSrmz22Z7gAGQCOCyxrbdFyrIkubJY9li3u1SA jJRSQrl3NKaBFqUHRMyrgAnb5HCvN92YMw4C/ZpzqG4YgQTdQuAhDJ6fIDPMcEIJX7GQwRh5dJFw GEu3gAAXPkRRx4D/Pmxe5+WpJ6nLLsOHdo4pv1fFDGNF+NMNOOvcEwllSUCq8L2+6kKDVhGCglYT Ip0hVD1BvUAQQeT30/f4VQ11W2uReOwijBjBtV0+vBQJX5Tovvv81LJ9rY9tL1ZLYycoCS65TDqX aDgTmij5TRlRAlxqCFc4a0TABCa4AOKuAUFvMGBM6SBHbgDmjmDFDk4d0ZnHNAey8CREJHFCmJzg hDCK6YpPwboIr3h1IVC9DnPgCdlJTlK7RkiqEZlA2XvoN59oBZElyTPaT3zyk/4QD3nKU56BrJaV KjIBK4c4BIa2tz0bdO97RuPe08LyK2L9jFSCkCJZ0OgsSETCRXB0/0mDKEE2lRHxjoZR27Vw0IIl 7HFbt0hSBaIwSF6cIDIAJBcsWPABYxSjM8uwkpUi6QEOMJCB8NJSa55xOAUwIBvZ4BcBzhEciCgq hh7EXApTuMLxQIyFquzIC+LEKF1hhzo3tAh1tnNLjWRsdHF6FHlAVh6R9dBklcKjYSoFkypI0Sce UUtP9NMfNh5iilKDwIII4RK71OVlwtsirsAHFO8RKz/d8x5YeoUsV5Wlna7KC9i+GYkGuchGysxn Hvm4x2u5jW2rkBshFQmuEVRASeRClzCEAUkAjECSzYhkva6kmmnQKzXXqNcDPfmNjl4Qcgi4wDy2 47SMmFIjFupJ7P9C1ISdhCRELJzTd2B3kcwN6iG33Eh0ntIQnBbqIrOk2Hh6WMyUjGwl7anUEPVp E0q07z0vQ94LgvCU/iyRP0XxoU9E0L21aCURsXIQq8LXvSCkQGpAASN+qAo1MCLCLG9VxDtVdU2q fLObNIJfHSthR6b6dRQq+OMSVBDYa7WgbThgRS4Q2r8TGLIXyVDXCKLx0AoocBnOcKgzLPoMClx0 G605XDa8hA1+jUMdkTOHPKDitEUVyiM7EUmIRBe6zNk0pYPCXEq38zpc8qqXhQIJUEMUIgnMwLjF TG6k0iNE+f31FFB4UfteggIJoAB53yMA977nPeu6BAJBYAAC8iP/ASacb0Hx9Fn3BLC9sqrTnGt1 2oSGtTq2Bq9XIlpLggbhrHq+pD3uo0T8nkvgURh2j4Q9rGEVvC25iQszjlXkkxhZGr0pY7KT1WyG OUsNCELjgc+AoAKmEIEpPOGCFwhpSMtkDhSXaaTzuIgHTyS6nVxBeTc77liIe4VZ+niWuRVWWAal kfxsJCKpzOWHQPKCHve4LCRByXJbMsS+FlgUmZhuVF+QkllWzXvEvRl1A4AA8VI1eljBCjdfBl7u udlpbG2rOdkr36dximnaBd+vwJII5VVlLnmZYyVcghMa8RXLV/YrthLzI/whtp/ZeswJ5GaZEYwA Su1ShkM5kGEN/8fr0/VC3CZNoLgIeMBLYwoHisUB0seZabUP2Q5EjBwSC8USdh0Llo9NuhHtHG1R Qd6IkU80S7CSZcoqMVnulJpo6PqABl9T0Iac6dKUHg2M6iHBDMILOQpVCC1yfUF7udjeL2KPKNxd HXzXIuQy8sRXqnrZehixniN2UwPTZV/8/MIJTjRb0Yb1UYL1qDY/BhZIjKGFZpBEjM6QZhgYeChl JRrJKE0yXvSihpa89AwTdzSU3jjxbCCXAnO8ODeEyo4uZUYRlrL7Qy4NQRNCgJUr2BoqFzoyR24Y 3IjJeMnEtTGJlDdlZTv336RoGb7ts8YdI0KaYylaWbh7IncqCP8FhrjuVAuQgiCAtAAIsJXTyg0q plFVzyGKWrHwaxZ2JosRg6inXugCaL3AsWxI9+thW7D3PvLTj37fux8X05hKR+GhgmMGxPUmJdBk MuMazWQ0clBqjZ/aS1P4EkdL242PfvI2DFAtyh2CylhjqMjYYZPMg+XBEIhz7F+WL8EGFcOX7mMs CiKLSRiRnttRCiaAybso/BItuzTFBcojH7yTnxasQc2l2BvRg6qtlqYhwOviDSmrw46AAohgKGf/ vp2HpaE0vjV4UXw7gQRRMjl+7RHQoqPwn5utBLDt4IFVMKT3uBjGBFIXh4clD2UMViJxAOAB0nBR mIUaCghiGUf/DVziAVxCWk9gAt9gQSnWeeLlYpCjWrNGUnX2EN7hQTKWMcHSFUW2EWMnESpXUq8j HAeDME12Hs6kEoLwQ7/nHvM3CpbQInrhCNcEWydyM2j0TiTyFDdTXbPSKsozA1B0XNRhASLQfTlw fQgwhZCDhVO4XV7HVWgVNR/CRGoxV+iTRerHIOn1NW9kRDv4V4C0BPZ3cHtkf/ZjP5CmPwrnWJwm DX2TQAlUSYJzJcjQaSUwUVdCLxalAF0SASWwDaQFJqrWDdqXYpDjNJb4L5bIWiTFWvIgY26yDxs0 OR0kgqwXQyU1a6RDS+HxKOaBHk3hTQxiT+yRTG04fDgBBXRX/wgwBVtliDxSxSuq0iAvQDTsxwjH ZRTtsA4iUAA5AHZa2H1JcYU5wFVBIAJV6IVm90Xs1RZDt2P89XbzZhWD0BSvaBdGEF3RUotMlQBw aH96RFiFZYf7dy32twGKwRiSYWkcsALPIHGoMTgSCIh/iHGfpQCaFCWgVS8U6CXfAA7hIBuTyGKY KA8gtVrzcA4gmAIztFq7ZImw9pEjlR8x1ls45GTGJQEjIyMrwRJI1VxLpY6fYARGwAQuIFb8VRY6 ozzrJ1XvlDP0xirnE0U/IQ8iQADfBypu1h8CUI1XOIXWiADTOIXTyD1ZmE7fMyLlQyIQwn7huBMP Ait2AQn3hP9PMIlHPXKWdEhYasM28rh/dLgKbyMLojECnrUamHWA2BCQhBOBh3glikg4n6WAzsAN F8CQIXUNDHANJwZy5AAPHeiYuEGRG7SJmSiCpWSRvLUQreWRI3Uov9RSJmlc13VcTsh7jVAySmVl bah0yXJdOEMRa4FGOVEqSoQ+XukqrhkiCzCFQiCF1biMTdmUXGWN35cDVkB5zHiFIKWRoGJOFGEs ccUWZaETXqlmC/I10UU2ZYlHQIJ/QKI2KmBw2MKWdUiHilGPrGAkJxAlnrVpfxiBe3mAhWOAfbkM hoM4JaCIJXANETBa+fKIT5AD2ZCBoTcPJheZknmRnbhBnGn/kfOgc5ZJmazXKZjTOVGWElLGEsiU VC+pjjJBfLBIKimBPD5xHQHgi+8jPG3FZTpBFdKjbU/RNJa4H1O4lN83nFkIldTIjNQIOWJklWt3 EdJkayOSIE+He1hEI3cXH9tJP4PVI4lBWD2yNuRJh5Dmjv1kf29DC7vQaarhhw0kiKDRgGS6UV5C at9gajkQJh3WkLKhaheEG2cySqqFoAw6maQIgh55KJt4erN2OthhIeiHXD2kHkdFKalZljZiCe1z TWskTRahIYsgIxIwIel0ItYUixjaFqNUlEY5FN8nAFIIflTJlNRojVXIPc4oo3lWNdXTKxRhIXAB ATIXArHy/zz0FC3pqJpNWj9xOKXgCYdUaqV1mBjuSJ6LsaWNFHH10kCm0Z+IKJCHiIgLhJCK6IgM aYGadzjhoK0P6SV1GnpmYnKjZAF3SgDmupmkxB0bZAMi6Do/R0MqByHIh3woeV03KCP6upLLhjKK agmWgBP4JlXP+RPfwaLu1BVLmR/lQypAyCAsOXWQYwFCkAEZMKpBEarZSJUF4HVdeIVelwPZd30L cA5WKWvY43pW8yFdQXMKAj1gg46XYCm82qvy8U/DOliE9aTmWaU9+7P3yI5L8C278C4SqAAeUIFP EJCmlnissZeCsyUTaGrb0JBT8BqQyAACKnIrBlL9Ig+Y2P+budEOFJmuMHaneqqnp5hLLGSh5IGh y/VfzBZ86ogTLgJgKlGpulJcOplGEDBKXbcAVde3KhkpMyAq8yACFFuxiqu4F0uqq8NVVZgDbuZ1 Vth9Xruc8uBe4nQWIUCribADVcA1kgA2PtAy/mazuxOHPDulfoSWQGueG2Csx2qPtmuPQ6sLD8Vh 1QCYTWsavqsamtSIHKeIHDeB11q1nQdSQnBB4ioEE0mRdioPZjtKDnquk7lFwtZbc0IS3atDyWZ0 c9ukWTZ3MFMWGbFEHnFcbFGyYDdeVQdFsTgy5uERNwAqAKIEFmABQfGpiut9S8mFv+lm2wOVICWy lAh2TZP/AmFXK4G7RRVCkwrSPreYCRVcs6p7KfDYnT0yWG3znVhKj7ELtPZYj0M7tJsRBaYxDRZl gdVABO8CDdEwL4XDSYropttAYgxJWg+JYpKYgQjQAZIpxOUqtug6D73RoBv0tR8IijjHskA2Fjc2 TM7Efi/TTeeIExxKi+T7MrBCFmpBZFT1W9mzPawmAhTyFhqCRihwYwxREALQEPmbsZ/yfQWQAU3J Pf2hXT96fZarnD7KwGYFOSl2K2ZFIVAhBRAswQqCnbp6unSbwWYTnsEqpZQ8wj9bwrZ7nrdbj1oK N7BweERAAT3wAz1Ql3t5GoSDkNAggVUrDrJBYpzUn1/C/wDYIBtx2oGuFg6VSErrOpmTaVIKqpE4 xyuvF4Zh+BFyMhKPojyuaDs+hAKpyaTk2x5f5VKeOLZi0RVmBWfsFBfLUx4SkBHmGsf8oQT8wR/g d6PUuJRLycdcZH1iFM8Y0s22kk5QwQSf63pSEAKMTJM0qYaUEBgYLMl5FJ7suDaWLKXHisk9u8n9 13+gLDeWRgEUYAIWjcoNhIiLiHmOOFqyMVpggsurRon+QqeZi72dmbZomx8TYWRGhggwR2PJNRJV AL62o6EaWmUx0auVMD0LYAOlqKDrxV1mdXZjx05As0YnSRHmyr/XARCnIgAmChRBEQT9McbeU25V M8iVe//U23HUa3oBt+LAQaDIGQIBEmxeNJmrvWPQZ+M2H5zQlxxYx0q7suvQnBzRcOMtofysF90D 3gDDwFs4h3i88HlqPZANoIVqX8LL+9I44fAvJXvS7Kq2IAg5ETpr2StsHuRBFgJlweNM+vo7+/pf LlnQzcZv7VEFs/S5VTVSKqVS3PxFxNIqkZBGOzNL6Kq4SJmxoEqqeozVxM063BU14iRO1VPWZpU0 GbLP3sbW/owXNVkF/DZgcF0tH7zBBndwPuvQJWx/DZAA4014tsAYDgbKoTwCp7HYPWBqqgFaHYe0 H+1Rhal54uBJZJJi4rUO4yCudOqY51Byr4ZyCmrgYyf/Xy89rz2mzKR5BS6AEhrakrNIi6r9bzai AVoRAthBvefwPabzE4KsTkVKCDjpE2kHFPLAH6BiARmAVUJx1e48X8MyIXz8Rea2PQzcdbaSAt3Q 47iSCJ+r1mpdk0FjjrpKltmNKQI3WDqbpWw5h9/90A/NGPcIN5jR17NAaRWwAqNcl7y7DZenAPnZ iFN7aqBEyEC8YmWyuOuwDgd+kUKgthkBzAnuHdnxEYLqvSKRXL8zZe2nOxe+g/zGIinF2+UqD7ci NT4hazCHFWg0dDgzPPpxx+7szkPBvwHCztR4leeETiQ7X14h1IdMchqZNGW9AIrsemBVRbDiAsuy IjKZ/8U3kbpLHgo6u8GFpWDyWJ6eLLsRHeznDTcSjeVyw2nsDUGiBt8AUOZkfmoloJclBkon5ryp 1t8mV2ZxurjWKw+iJ2sjpXPXC+4uGDEilDAtJRLG5Spi4yJyO+jq6AMbfiFhB+T50U5QHIxyhDxt ZdX8kQEFUADqHKr7q84BH5VUhc9drYna5apl1BUODMGJTCFfUeQxInfsoz7qw1e2fuvyMaU7K6VQ Tp54jZ6rcI/B3gDeohm2kOUQ5mCVQUimcdGIw2GPePOO6A36/UkbqMuqhQD7iw7VK5mvRkrvipmj J1zBcmPJVR4lUahGdTIVjgkdatCVcBeUGVIXoDiUd/8B3KMI34wsKrkpavcpPSEUeBzwocofBR8g Abxd9PUUcMZVJOs0tALxX2YrJIc0R911inwW2+QCEkwjMgBt7BMtSg4KfsEiNJDFHe/x4WnJ4KmW WWqs4/mWi7HXJx/s3GILxm4AQ6IZlREBFm0CDrQNZt4l9O1JhmnLOz8bzRt6FgD0t5Gu8DC9Z4vE riNrSJYxYTZLNHawT3Zjohm3cuvxmFC60/cR6Prm5oDGS4Fc4OsSKREhIS4UAfACAnCFAB/wePx9 FpsUQQHw1Fi56KRdKcBe5y9G+PEr3jYhNnDPW6Syrc7INemD+LY1feEe/QYIUFmDUEaFPlCJiYOM jY7/j5CRkpOUlZFLKpkJKps4ngk4oAmjoaKjp6gJG6qqG64bHw0fHwayBrdDJwYnvLonQBgjGFEj RBFEJskmChHNJQrM0ApPFwwMCNjWDNUIQthCQtdCBOTlBOMI5uPm5UoL7koE7gFNTfT1TS/1LwcH /FcSrswYOENCFRQHUWhYuPCBhgcQH1iaSLGiRUYPoGiQ4eKFxybksFWboCDHBQQpgix4oXAhCoQv SegLQiDAgQA4AwgIEkREgQlWMvTcKcCCiAwCBIhYKoInzwAQcC6gqZInApULpmbdGkDrghQILqRI 8VVKVrMhILiAwMQFk7cuZBjhKMOHXSN3IeJllGiu/1wZiwJfHEy4sCNNmkgtwbE41CdPn0iVGrWq lStVBlzFopXZ1q3PDioMqRClwghhpwFQaNZsWQQAERSYeELtgm1sCK6V63atGwIL3Qqs6wYc3Dgl 69q1q0dOSdd59fxJCPjiikfrACUMrDIjIcOWDaFkFC8xS3nD6NM3guijyot75MBeyGFidWwTEUoA AHBhAYmX03EnwXtZ5XRDTgIEEEQGVhSAAFNJCZBBAQUoxRRTQUAV1VRPOeWUVxxCsBVZX401VhBS iLhAWhC0mFZbMsRIAw2IZKSBEQ9BpEghMspAQ4yLqCfkkJJwwskomagA2ZJMnhJZKpRZBgssBmw2 y/9nn/GSZQVccnlaaiPAxloEy8hWzQXUMPCEAtvkpg0D53RDTnFCWECAneewE0+e7MjTHD0BKIGP Pwc0UWih/Fw34AvTGfQSCiQk1FJEEBFpaWESZbRWV+VMBRY2JwaRmwLjNKHdS+41kRVRNCWFk1IZ LPWgTwUcdVQBGUxYK65LPaUgTwRgVZVKUvGUFQRSENviViqxyJYL0JIAbYyAzeXDeDsKwhcUPf5l yKXgWrrEJpzgkIm550IGirpQTnbKK6804MotnGW5iwOhnZCLAydU0C8GFQRTzDHLJCPbMrWFZQ1t babzzW/YEPBbSH7imZxyzcnjHD4c93NdQdlVN5D/QNwl5B1DDjHUUI7hVnLepZXKwEQIC4AU0qjS lKDzfh70/AQCTczwUU785GTTTTjxtFQGCFDoU6xLOX2hh11x6KsACyhY4FQi4iRi1yOOtVWLz7YV F7VoA9lIXzK/9daMchkSZMt0X2Qkkp4oqbdjojj2JJRSwiv4ZrhkOYThonVZAQcjrGZMBPYVbOZt 1RRwgTfe3JxOccCxY+eeSoAeehN71lTPDR1fUaih/OTjcXXTFURCgAipvDKluNet+3oPPUTC6fHU GY5wYY1lEn7GJCNWOllndUDzCepkk06yygocrxPqmiuGWXs4ldZVZS1VgWSX/8KyC4j4olokyNA+ /9o//miE3IHN5bYTPs4vl0Ta7u5/JaG4m97Oda51McldqFjFZaakGVoQrgGfGcK+TsCv0fDLXyPo ksBMsx9jEIEZsdnGScKCG9zcTGJyuhOe9JQxcrzjHfJAHeoM1Q+BFIRQ1akOdggigUiR4IdVCCLK epej3P3Pfz7QgA/cBwF8EOBN1jhTDqDRMwBwAAAe4AAHPHCBJhzEIxKAANKkB5WbEEAE6UCjUZYW gwa1sUFOy5BTdGI1leykeV3R0A9l0qLznWVF5XsWtAY5Lb/MTxGGcNvMmIA/b2VBEUeMJCROYaQk EVAyfTPX31jBCgVqZgOy2ECValE4BxgAXxQ0QP8F8FWBU3rJNBXo4GrsQ6Zm2OY2uPlUxOSUwt1U TB4LMEfo4LExGvbjmFdIZg7zoTpGwW4gLoiJyWyXMofg7mWSBFfKqLUWVVnAGiVhQA7CkQ0qAiAK HIjCB5bAAg4wwFSNOt/08jidpJ3xQQjIgFEKEIMY5IpCsYqVU5rSlYE2ZSoJEl8fPdIRhqIvkG5z CyGdEJcf1c9HNHhLCN6Cv/n5QG6PzKZIB+GJcRkJXXt7TCbZxcnAZeYDosQSlkzZylNScJWtRGWX MsiBCqwAAMZwXDOm8YQcPEGEJCyhORy2QnMEyk/DfEegAtUEGdbwUDVUpj+ws8MZXKEKjvohCmT/ MMRrGnGk4NKID9zSonKEAwYMAAecsPEELFoxnSxgwRL22s5rQGBAB4DA+RLUw/dIJVgSO0IBLDCh GBhFn0t7ENWsho0gCCBYGSoQTs7Xxx9C9AWDbJHZSGA2GrwPL1BYoiKZMBeQovW1jFCSKGSrghag yxSTydvfPCm4eclUpqbUaWhwqjjFMS5MA3scmUxwgdmYhIS92WWfJnYnPwHTOTB0x6AOZagrGBMg 4IWddqZzBRJ05z+PAo81rVnEs8JWSBohq8xEFLFwWAMcJ1FTCa54Vxasc69LaAE73Zm+vw5IQYHF yU0SdNl8zoqfUMtVBmJQKztWRUFobEqwuEK+/zwKViacLR8hJRqXaXGTrHNxQQhWzAT5QVJb/Xvv ERHjJE1C5m7sQiBleusKeVHJt7+9RSuH3CVVvpJLP71i8iiQvPpQQHkjVOo5wNFUt7YjHljm1D1a ZyhT5dAfOZwOo1xgELD+p31CPAg1q9le96KnUtnUESKgIJOvKMxNJcHlFLbIXw7kdQmzCHALBn0C DvTHBTOISoZ0IgCkOacoDl6KhSYcq59UiCdJUZpksaLQrLCowHtkAgTS8qKzxeh9aNsIIjZC2hAg ocX5o1+MQyrj/9HWXJ3AtZKapONRLIHHooQpKWV6OC7xy8jDxakrd7rTK4ZpBc2A9mqUQZ+TSP+M ADVjB+lKJw/S2YNjHbsOmAOynWRqR2jdqYIP1R2pR1VBA++mZu/WSyltmieb5OEWE7/CAAV4QBrS oI1+tOjnvPLiA/4FcCYEzAIi2CAEHRERTXByIJzYgwAWulAMQIArSyNgJ0qTVYW7t7XyFfgF0iKb qGFEF2i1xWzU2sjMNuo2udDAEPQjxNxqnR5BvDikPifXJjpRrlLgeG+y7USUKvMuKckryFgicnG7 tALjhmk/EYC2tJWRjDZZG9vPgWE58KQqLBcT3GD2WD4Gog9GFWTMAfIhQoL4Q3ivuZr0drNhsBnJ TKV2LfRVkzVKGJYpJEGLHmBBFDCQV/+y4AT/GwDwoFugAhb0oMAF1QnGH10TxC5tQiDwpxAahCGl zEooYM9JVKDShBZBxSOjVouJe+SCH/lILnZZogykQPMWy1rna+P5/6CAmHLJ1m+gOOmRAMfbK3UG NKqcab+STVypDwCWihNYBq8O7dc8ORkmWV4KTIePmt1jH/w4FD/YLubpuMCGAzEI2786Axese4/o fbcMFBJv9kJk3m2WKcKHKRnxUTIgIilQDVPgAVMwDQ3oARGQRQVXcBiAAR/QCzC1CZE3eS1wAhFg A+nTPBi3AAmCccFyWSIgBBSWAUJQAAxAYRVGFD7hEzlQAB6iElHhLE20IcdSYhzhcm4BF/bH/xFM IAUPlyJMUBcfNWfZsiMDeBFNCHS09ghGcFvlQnQDdGMs1UlL9wow9Qq3EFNQdwumtGxTd4ZfAjCp oXWQczBPMBsn8SnNUzP60ESs82X6YB3U4RHOhB3jtSgv8HZkZn9AtG5pZjtl5X8RcW9894SWYCMx wgQLAF3awDD5tV8Ex3gnUIG0oAuRhyQcOGgs4AEdwCwhYRTYdoKWdUZKYQGKNQEVhiGyIlBWYSxV U2Aq8hUh8AJMIC1AaDbREiNstSJJiBfUYhcvli0DOGvwJYWPRGPksiTrklJJByU8JmydQSVCtgtn WGTeSHXdyEFVBwDShnX3oQCUEzE1I1g7aP+HjOKH5zY7AxI7DSUB76coCNFD6qZu8EZW8RZvCwGQ SpQjRGRWjeiIk0AeeLFWk1gNDABXcDUN0LCA+6FFjMcCVeJfn5GBlIEDHAhoHJADWSNYAYBGCbVo HlGSS2EBFDIBsNgrOyGLTbNpW7E1cxh7arEDbAEXL6dRaPEWEBAjcyE/ctEXRsmMkjRrPieFSwlJ j9SEUSgYPlcI6KJryadJu1Z0Q7d8vDUvsFAvMsUl0XdK0feN4egl11d1XoJcz5Z1rSEb0IAm03AS cehCNZM1rrMP+bAoqHIQYIVy9WcQhbhHQcRuhvluAilvbGaQCDkREnEjCzFfk8gAU1ACHpD/BB5Q Aph5eFdUcI/neBcIlrOgQNPIgR8AAAiQPuMTBBNQAi8ZBAcQIUlBIfgEk0pTADngkjWYAwhgEryZ AiBok4LlchCgkzu5YgtgFry3UW5he9Ryc/ODczi3IwepO0tJCE+pjNnphIEBlXITneBJA0j3CVlZ lXrjJEiCCkeyQDw2hp8hdchWXCuwAhlUddf3Sj8ljlknJtGAMLcEKgRgA9i2FWUXTFlRDzvIKDJh jwzVQ4PooDPwH3SHXojIEBpxoQUJgIvYmBUxHg/AERuCDRYQDt4AHNWgH1bUeAc3C1fCopdBCr5W W4NWeSWAEikgAlO0H1TgmlZAUIwWcqXX/ys0CIu96SCgYiwjyY7DGS21N0g8yXJ1gRffqYxR+IRT 6QjXuTbcmZ1ZQD/SqYW7poXqwjcJMC7W6IUbWSVlWFNjeZbhOJ9IBqc7BSZtmTyvcY5sglQjNH4D WjVd0Xpfg3L3hyoSiip9KUTfUaEo838pM0QByIhvFmeJgDaihjOGlwSYeplJAACNl1csioEXqAuj BC+qsFcLN3lLYAAYsB+c2qkINwFBIEaS1hNOkWm12ROVFQS6hBK4kTV8SIihJmpSkAJSgIQw1z4/ 9JzdAhiIVAjJeEQ/B5XZMp1S6qzSGZ1/UQjgOT80YGO7RnS6dXzpiQq/1pUM1EBBZpZnqf+WaMhs 28dBADACd/qWrWEbDMBcDSOgBNp6fxoAIaAhHoF/gjqhkBITEqoBLUGo+lcF5KGoC0Eei7ihHBoJ D5BExlipFwADGgsDUzAFb6IAHFCBHHACj8eiLFolJlsLX+gKCiejlAeSAFCBFdh4VDABOIFG+MQ0 B4WrTIMNGeYUKaGropIOXnM+gto+KlaspVYX3IIjrYViTPtR0nql0Bp8QEelT3m1zroj1XpIfXFI OPcYTzK2yUeuZbp0X5gZPyZsYjiWZWlkbsqu7OpTGaQ4X+IlQHUMWFcmzHUBbHImdckVsGe0oIVm QBREkBIpdPcS8OaXJvMoKpNE/6cRiMj/qLmTKdWJkBmBI/JVqTkAkVOwsdYAAxIYsp+ZshdILybb W79mqjKqAntFsjLbeCE5LMDxIGeUuyIQLLJSWd2jq2Bxoz57cigXWqTGnDCykH5BLeCZjNPqlFV7 pd0plU3ZrNY7ndravFWoUkaHN0OnnmZapl9psmCZrnCrrmc4AHOLfcV1GvMJAFwSr7BBBPsRJq0x G9BADUd1OSNEDsE5Np2FmPuoAXW3EbVjO46LsC1BVqumRHahmAYpgBO7Homge6o1mU+wgJmaBIbH AUnQThdJvifrQLMAQRAEUyKMwpiQJHwFmo6XBAwQTLybNRKDRvdUQh8iKrypq2hEmwQV/0jKuZPS kjYlBqXV4qxRyz9HCa1TS63P+7xPa3twY3MtBp1MMKaooGMI9InhGzhU4nzOZ741ta7gCL8A01Ow 5L7xOwL0Cb9tGSbSEAHzgY4iVA2fMn420BXmQwIEjH/8KMDUlGYKwX+RWcgaQLkaGsESO8GD8AA4 UsEqZgPZsLGiCwPQsB8zi3ChKcIoeyWyIAsjXBkrnCQsmld+tkUXQABg4YK5KioS4yC46bMltMNK M7RXkSFkAxUwgmppkzaIgIxL2D/ciZTDN4U+hy2KILVNCLZGcHPxA56+18zRmBjpcqad1EAkXL5R 957xSVNSp5ZyGr8UoJYjcJ9dAr/sWv+f+Ylc9DmfTgZtyFAf0JAMb/iG6IgAHWAix8I+7YZec2d3 AomYAemwAwmAiXy5jXxvFPte7LERVeAQJAABCLAmhhe6mJqpV8R45HsCozkvtABBwyaanPGF6JkA lKcJLMofHZAMITQBYpHPUrC7LFmDGVaDvYkNORC8JZQSNZk+QGhqaFNRvYw2TNi0P1c3MWYj1fu1 h4Bay1sXNjcj8TMjrIU/TiDVVcwEsHskiREKXbx87+KFX+nRotS2vxVc1Cd1PgVL8OtT7zunplG3 VTe3d8vWXrIa9EkEkcMazvWGtxSHJJIWfLigiluYiKsyQSQDVaDYBH07GWpWCp25POf/EDjSO1XQ BGChAFMAAptd0Rr7BBLYeC0KUz7mY7EQhiD9WyubCiy8V7MwAsrwGnurAzpQrLqEszjamzjKmznQ 27c8tDzNFh+2R0AdiUONe3extVhLzEMCSQUolUvYtR+FWqm1RM78zLcnP0kYPzKi1Vh50sznxezp QE93C6kdlmKZ3g5gzvKJfQBDjlPHxviJZGt8GnFNn7HExqwaJkHFDGUSlyZwr7ZBIoDUR4LVQwUb kI5bmAPNEP33sI09bwa5lBLsmLvDHklEVgQ8iQrAwZ3NwRu7Z50KaC4aL7BgC6Bk1qotOKGwCpkA YA2nAxQwzvRLjhRQ28MKFrzZmzWI/5tWsJs7ftPzgRJYIViCKlFQmoQkQAO1t6zeEp3W6rVY29xO 6aHJ3NROHcyHgFHNLNXc3cw2l91UbarmctLVyIWvoAod/UlVouJDBlyhkWzXZ85z29Y+5cbMFkuK E87b575sLKfkqHXyewyssbexMc9iITZjA6gHzseIO3eF6ejt0+Aog8gqg6EakXcRAbGCUOEuozv/ p+EL8QKSPLqGp5lJwLEiLtr+xRmflOKkjSWgRMJtHoZeuFdl2tonoN8rMONE0M7z2evMldM8jtMT kAM4ipspYBKxfBUALHtsxZPcFIwc8SO6d3vM+rU5l6WWIsxK5LSGMN1SO+7ecu2GQBAtV51RRgBr LdbuMuAEIRAIACH5BAUUAFoALAAAAADqAWcBAAf/gD0XFyaDHR0IiUELjBAQL5CRki+PAQsQlhAL lgEBTQufoZ1NnpakB00vpJ2sB6Wkp6tNsQeoTTeetQcvrp28v1USB7gBN8asnbpNuru7vLsBvZHO kM3PybikAsS4uLXJnTcCxeTi3QHb6eYC7OLs7+nw7OHvFgIiFhn6GQVH+zExjgA8YqFghiMI++kr YAXghBgTQIAoQbGiRQUmJkQooaDjhI4KNJaI8JEiAI4hU07IUeBCjhJJAHgo4SEJBw4AAETI4fLl yAkmcuQwQbRo0UGDCl1I0WFQiqcdnqawwWiBlAUhsEIIsTVEVik2bEiR4rUsEyYuzjKh4UQGDbcy /3zElWGkrg8jd6EYgcK3r9+/gAMLHky4sOHBhqKmWJAiSGNGnSBQm0QpVWVHEEhJVtVE8qxZqH6B ngbpioQZEk5fObB6dWoJv1IfSO26tTAJrm+/loACBW5mtVOjnv2auO7dJJLvXi57tq5izHTdiD69 nLHr1q1f387dHTxz7rzXy6cvnwWEBRFmMHgwYEKBBQrEsBJx4oQJJT4qKHFSQY79HK2kAEkcVbTf RviVINR9CrLEQIIWUUQFRSvloBFQFQplAkb/bRgUIS4hJWJTT1H1WFVeOYKWC14tgAQSLpYFwQ5n pQXXW3TJQJcROtLlgw+AZSHkkEQWaeSRSCap5P+STCp5QVNLKZYIAkFwEklqL6TWG2yOXHYAZp2F actnqJS5zJnPZDkDaqctZxqW1rCGG26m1fKmcMfN5lt0tdzWp3N1GrccCRIo51ubyznnCp+s8RnN c928M903xgwDXnfdyaOppuWdF5A+An2qXgYCGMQePzHIBxEIVNwXUn4mbWRSfy/lVIIJ/OmUIAAT AJARrggykMMTFNV0Ekw55YRhg0Fp2NFRIAalFFIIXIAAU4rZMJWLVWHFxAs7aILEVUh4Va5XNDIh g7o91uXuXRrIoAGPde24FxRN5qvvvvwyKchSKVygw4fXLmJKZo50lmVlmoXpiWS5SGbml9TsAlv/ mmyipvGaGhfHZ5vMeFxcc7wJE91qzt3m2mx37oYCoS+X7NsMJHQs3MmMRmfydMaoU8x1w/zc83aS XrepePDYw85BCAnUNAgBndf0qPoAFAMI9VHRKqwVAUDFSWBTGEFOVBDI6wQUlLCC2vjdN7ZGKkVo 0tcTrP1T2xRoFEEEz7pEFEYYufTEtNZKte0CYVEVArhdgZXCuVJ0taITLvSII1535QVF5jz22Fe/ oIcuepJKKfYUlUGkDhlkpIDyCC8JJxwAJgpn9qUquzRxRZam7d77C1fM4Juac2ocPHOpSeaxoCab 7FwAiOpiG23CEarxy1vyZj2eW5Iw825sChPo/6TSPcpoMe1sB93QPcuzjnhKb5o0OwWlR9ARWIDg D/4IDbTPEQWQiES0NiEJfe2AXjsWr8jGn5/wp1cLLAEVVlA3imykI0L5T0iCEpK63cduYCNJ3vi2 IZ5Ia0MYYQAKPfQkqWiLKozgyowo4ZWwTIUsZQkBjSqnrsvVpS9G0MDmOgeXHfFldEhMYr8EUYiA pUAo1roWARawiE2srhSZmV3rNnGKTnBxFpmBxJzwlDESVME3L+vYlsKXKORlCU6KIs5sULOyj61G eKjpDRq9573e9BEFVdCAHrOXRz4uz3mLOkfOuhO0Y7RPHeGRlPzoF7/5WUAEVcNCDGAQg/xBTf8g +WuaqgQoEQkSMCZa48CEGHghW50EbSdZAa8qULdk9SpvFDiWf3Igq/3Yij9fS5bXKOjBvXGIg8es 0LWqdaIQzE4rKeLKDrKirQ5QBSxm2YELKKejt+DlXpnLwhB75KO9KPGc6HQSlHKgA3YWbkqL4QQo rAiZLHaGE7PjTCos1jKazaAKHROeH2O2MRQUEnm68Q2h2jiDOvnpNDW7gm3kpKU/DvKiFxXoRduE Ruw1hxmPMp83RgqdRmqnfUhL6SMnWapNGcRpApGI1WaaEKvJJyISNKXWvAbMVVYwmLb0Wq8qQAWi km0FFrKQSDA4FKBQyJYS5GkCdXJMnhBiKBz/4sm1ngKwEnVLE1sJ61YYERas5HBGOPImDe7Fl8xt Ti5GWKuPPpfOutb1SUu5alAUQaVNWGKef50iKCzBsDNFI4y7CJ5B/4nH3gD0NIPkTRr1KFAzJodQ C0VOZpnDRuP0Jny6eA32BilIPSZntBgFpGrTWNHM5oxSlhJaN9RnDqGpox24NZqmKsnSggiAaaAK ldUECECbxoc+WJDgRCaktajmBz+rbNXWgFmBqQKAqLSs4Ah5eaGxzeqoQPVadWm5E2n9x6pDGdYy U7DVxSymKpiJb4tsSBUkhHUH2nSBC95Cg/7ipa3fJKc347IXc9r1wEq0arUGMSVrBUGwVrQE/wGm OIoA/OJL91yGcdjkvceiFgWlPWOh/Dji03RMOQtDaGo2OyfTsFGPxWNjHzusgTMC0sYYFR6OQexY HF9Ws80pKTrakZ1LbaM6Qzuybo1MP/d5h7fwWA9BpMw0hMAAC1e+GtQaQkoCsoq5ErIIr567gq9F dYIQTNYELYg2iqxtgWhWFtm8hoFgUgEDvOIb3zDSrGaJyIlPsQpWBs0VGYaLW1QJS1ak+QL96hcv 3aTBj4bY30jr6JtAOiKCNy26QixYq1NapsEY0TpPzMITpYHNmWrhGSxJYMc2DqQGBGljPm5pjWvS Xsxgg1DMwglPzIFx9WLGx8te1MalhfFAzf+IvSqcsdjKQU6Qo3GO6tSCOz9LH0q5o2RHyq+S9qhf b+sn5avNVIBavk9EJiRACoW5bRDc6dYOWGajQnAkOaBAMNN8tjJ/sKjBrDMG6kzUjfxKg80CtOGu wojINeIShe6KoGGolR2Aa5v7lUt/OeeD/vJ3v5d2K105TfJ9MWBKDIhiXx2TiAhfcbAaXlgznCPG f+4YxM7uTYhNO8g+ArvYw1Mx8moG7BEbtGbZW7FFb6xzHie7sqqtNfag/ZosEYoX4ShHOI6Rjp+h 7zuSyjoutkHtla50fi1laamkjL+ZAoSUD7kPq0iJNei2KkETsjuvEBjVqbJZqQn84EooSMz/A8qb bN7dSXr94xKFRwVxYkEcwy+hlUtIXNBXKXR+q7DfjEu64/11AltoAPJy+kWcJU99vpZCAJW7pGAt p2cTCOAJUMDC1LBYBvDmdGxAzvr3tE62j/04gzfy2te8LtRuUowcNr5GeMmhGcz+6GxnmzGQF501 j5d942fTTHs/LpTxJZD1aECHHOPwWaR4iw50jL1nJ/222ptMyfjlo2nD1TLWIOJJuN/ngBXBIMA0 Zt+VQMC0EyGRN2VGQTngbwtyHyOQKwdkbxRUXgvSLFBkOItxFWDBgZTnCBG3aAwXOYXmAtpEA1Ww cXHRcZsTehjXLm31OfiiejSYJNZCAAiA/4MXICzwpAiAVRW0Z09+tQwm42JronM1BmK/13RK2HTP VmK8hgJvFG2F8n281gxCx1rgo1lV4D1JKANduH16JEiCZGuFYobMQQJXonQmQw5Z1wvV8R1IIz+1 tXXZBh67RSrhJm5ppwT2Zw9+WD/3BzWrMkD712XQpUoS4jXyxlwIVEAmgRIXolRoo1RIZSEUdCwF 9IgnQRIYmAOnEzAtVCLXJGiNgAnxBQFXEQQe6C01sl+kF4ui53FO4ARMsEM4EiQ1uItIooM4yF4q JwIiQAAPRnulEABKYAum4AzOsDt68lnYh4RLeGPat2PFtxvHI1AaBVlrJHSIcoaH8nySlf9aenRz ZHhRtuZRxKcl4PNHzpMlvaAobehIshUP36EdW6dk+igPUPYOSsAOgehbBfGP8iACxYVuCCkRcSdA OAWJBdQ2XdM2Y5ZBQoFL90GRFpI3FdJmxER4GfQr7aQD7dVVUmGKMdQVEMAEXKGSHBhxTJCSEOAC JPAWldNfIKcXclVpl6NpRfIAvPiTWYAIC8ZgCJABoTaMVYIMuTALX5Q7y9FYGAV8XXhGS1hawtNi G8MxGnWVBvU9QsdiGTOO5EhaTJhsvbdstuY9WolRxfEMfYJIYqdb8kAA7+B+4eAKSzaHaTcevlUq vmUMAdmP7HAEEuFJSSBAMAB3dVcCy6X/NQwCZm1jIQ+kkdyVQZWIkUlVkb0yAXHWNhREARYoFDoQ JQuXApmHFZnnFS+JkmPBLRGnXzIAi26xFjRAm7VJOWhxFmv1Q0c0g1ngk0C5iw3GAArgYAgwjMc5 RQKwAMtpahjGlJ+he4JCR2uphNVofRn1WY61WLwBUEjHlrn2Ynz0fQsVMx2VjuRoludoln5EfYMU SBq1Rjx2lbCRDI7SSJGSPnu5DQdAZOZgKfrpDkqgl/EQbkrwjwQZbn65oOaASftjbm7HmAWQNY8J K5wZgBuZoR2ZIZjZoSsBFAtCeBvZLDrgRKA4FYmGOKhpVimCkotmFRGXX7LZI+zyFj2k/yPbVET/ dXpCApzBSYMIgAhIoVU4OIzEuJzEaJ+r9hlpMkcz8CdOegU452waQAI1BnTZmaU0w3TENzNEtyYW dYaXNWMflp5I6HTniFHJEUjVZ505pqbCcGHPgXWLkkji4R2VMg7fMA48E0mS1DN/iVuAeAMHWqh7 2FJKw3WAiiqqcjVUwJD3sSrqpm4SBG+SqSBtExQcupFCkTo5gACYuRJ5czbm5U5PBBUoyi3cAgEw wqosCoJegUMyghY0WXoEZgS6yV83siMyEBji9AA++qMlVy0pJyLxkYMEIAI5+GDj0AoVxkW5YCe/ 0RrEITyzNpVWKgMvg56l1UfJVoY9Zv9s2xOeunZaFmWu2FOl25mmTSiGafpsVaCtNUalZjSN7CmG XUgJFGNhh4WX8deXAkCXZMd1kESHuBVl6zFufkke60Eq7+AKv2UeMeV/DjERWPNcATgrEAJBF9mh C0IlORAEIYuRGrmAGEIB7CSyASOSOSAFh8NwWRFD0TQjEteK0qRfpEc5sOkWtZmr3bRfnYMX4rSj +BKswkpyg5Byy2QtzAkZDxYEy7mcFCMLsCCnrNE7LCOt1zemXYieXLp95+ittWZrR8iV2celOEZr Y7i297p0Y3t9YDiml5VzOHda3WpZwrAZv+ALICUdklSXx4CXejpbTmYpmCIpA3odCFr/qAFZD/OA NMJoAfGhKgAUHwwwH8c1ofdhBZRIIXbWK3dzkYkgFKAaBCIgsqD6RCJbN0KRHxTpGIbDil4FIzBi LikCTY/gCGaFki95i6WnLurSObaYVt1EF5vjF5kGBQ9QtEebehfwBIGzYImQrDiYnFCrlNFwaqdW Cxq2Mr9RJo8gt3ILSBZFt2TZR2yallpptjzWYWdUfdhJt6V1r+3JhlQnvmqoHKcVhlrSvmz4Ri8w O9j7DVknDwT5sI80W2d3ZJySqO4gbgLJHgy7D/dQHv8DocuVBAQ0AfRhH5XKwZw5qXNGN/eRERlS AKYLqqXrGDkgAk+kbg1IBQrIobEL/xaC1iKEFlaLo184PHmFppInaKORdqO1SZNvkbzLqznAqbzN O6w9yF4IYAFTQowT9rRJaX7RChrSI1G1wAu3sTAvgFn4y2zGpn1k2WxO975nbJ3XyWPwK3U8R44s xo5ifFkycDEppoWv4T26cSWQwLd0ujPXJh3Vlp+Dyz4MfLh+Cg+FKgAHiqjkpof7sA/kpir9IB+p pMEgMKFzB8KTuiCmxCAdC6osUcqpc7qpk8qOwcIU2WaieaIh2xgcuAgjaIogqBW6K1ZkkZJpgbOz 2SNAe2lGNETKW8z4orw+arRNfGChForImoPjwJydIAAPlgvIsL3R4MW8sE/Es2LejP+/bwy/XkiG pTVi5muOwLeeTseE4/mdfNyV25qGyjfGY1y/jrVZU5h8yRMnr2VS4tB+3OBIC6xt71OgC5qwfqgE DUse+BBck2we+9APA0QFGtxcrUIfjqluBHQ2r6usp6usqhzSVJTKT+SxQnGqT1HLUhAAkZOKaCFf MUSCl8AEJBCbpJebagEX9fIufPEAmba8QO2bPbrMJPcU1QvFE5aDy4oMpjuMrMCkqAAboXEmYWJ8 YnQlP4ZZsjZr8kKlTfiuVHl968zG2mfG6wyuJdO/3VgoXevNaYi/YmquHVavZbhZYnyFXcxqOWMd fFrQ/nkpCSyXBq00exiQCVsQmIT/Ku4hEBnQ0PkwEIRJQF7myWD2XJPasS1MugXQwqmMDiEdBBDA yqK6Eu3UoamjCVgB2i2tIo6GGVYBVpjxAitCei94FusieruKaW+1F0r8m0SizESNThOWAlMEu8gq WHTpV1A7YbRHwBbTJm+SYs9tdUrX1lwrlfEyjXR9rfFKjWcNfF/t3Uu4YodyhJTFG9J3174mxlM3 lfJajdcK3tWXHGAIhl1LhVTIHOXjDXAoW3eYn0RzsJZUKgequPbX2AjeHgEhBKRyEJYcH/rnZQop d3cXmUnFoQWAyqZ7vZ2gyoxQJalT0hT5RCU6FqwYOVKg2i7du40Gkw2HGSvpaLFZ/znkRE70kiN4 oQG/WszA6tvJHNybRgA2QACNQYwPdtzDSM3tVyULQJfae2rO6IxYuIbjF9drakbyks6/V33pHIbp /N1dHs5uXJ6AVFHYA6Zyfd9jjK1U+oVsbp1tmpbm6XzP9ybRQW1B468800h/bbAGvLgETahrl+D/ MzXCRYggcJgTPdFagzXNBV0dy6GZfcobnsogjQmpXDAia9KrzIqezoqv7QhpkYpbkeKhHl81oha5 aTk8e+PHCwUasLxC1OO0/pvADeRJtKzFDYRTVMX41AqukHuoAD25hjJytMdKd+VrOpXp7ANaLpXw ++zSPo3py+VXGsepxdbiSs/xyv+mzw6/YMjd0bjsU5lGp3XmZ34cJLM8zzEMhqvIh9vIjpy44pCg 8IBJ5CGxnHRuhPh2jE7RjildFf5/F8m5IhCyH32cIsAOqbOcIT2ym46RT5TipgmCYoUZLy3brb1o KpIir9jLOyub3hSDb+UDwArUJ++TKo/rCBZPjEDkRx4EVJKkrIAJvmA7FlYmwcMxXel8qMG1zCaV WT7tW27tWk7WYS5rOVfW4u7dVKlzdHt92Mm11ifW8/rGVx/Oco6u7flsRPeUyO5GiEQpZVdkBQ3Y Aq6fkEzJ/UNTVSNTEW54Ff7ol825OWDwwnicqoyUqYM6JA2Kr5wC7aS6Ka6KL47/QyqyIqM+VjIE 46muTfH6cTQ+Vz+SF0AS1D3t4yy/acTd5FQ0YaebAiBd3MjQJRVDhDvPjTkGfe291fHt+kQf+0SP 9G3+5UpfpdHec9133y9DpWJOzlvtprcvzgPV+1v7hLkGMm+5fMvhlosUDUeGPkYT4I6b9pd0SYOu 4J/UP/1uBRJhBZLdKo7+yZhtBQVAyiyhCKgcxdRLjB9OJQhAFOx00il94qSe+ClJAvoF4xYPCBAQ IUyEOzshOy40VYwyjzIaPhpQlT5Ql5VQWZubWZ8Pn6KjpKWmp6ipqqurKQuvAQQIs7QEC0ECsAEB By8HEL0HBwFNElfHVzMzEsoo/84oM84kVdNVVRrYD9jb3N3e39rd4d/eKNjm3ZHW1iTO6+/v7TJV 8xrWGujb+eTY1/727OBNI0EQhQRoy0gwk8BQIcOHDw9IECZR2MRhN24E0HiDYkYBGUMKGEmypMkM GSygtHDkSIYjMWCCABGjZowCGQpgAWHFygQqQINSmZDDStEcSJMWyLG0QNMcCEREnUUgSBAEVoOk 2JpDh46uXlNIGQtBSlkITNAyWbtWBhMXhULInTuoUF0mh1wocuLCRRUfj3xcyjRYmyZOUEKFYsW4 sePHjVPYCrCgKi2qQaqKWLArgCBfwIQ1oXjlBTNlzZ49q3bvGr/X/MKNy6ZBm//t2rC7objGuqA0 ausGrrOnIVJu2rDNvcMmA8VA584OQoMO0SFE0xKxU9wubCPGjSM/krwhwEJJ8yhHpiyfEmX7lzNB tHx5BGdOlD6HAi0xoX9/pkeJIFUO/hXI1GVSWTZLCgjkkEJSOWQVhFkTCiLIWmi5QIJbaYXwyiuD hCjIXHK91VcVi9AjiSWYDGaEJp1wksVii0Fm4404ouLKLrfIQoCPPy6AAAECdBaAacAAY5ovVxww mjHNRDNdNNaoI85x4CAnGze3YelNlQFV4Q48/izHzT7b3KbmceugUE+Z0K2mmnTSzEAQQRA9pJBF B/V50QEdARoSeYSahJ5KFqD/h5JLLmUggkpHYFETSgXEgAVOThUgQk49+QTCBD5ZsZQIQRCYg1QF /IcUUU0VgICrtFyFlVURIvVghFZ55pmFL7zQFwkaumAhiBBwBsGuI85lIg0+/PUAYJiwmMkDMB42 o2I5ZqvtjbC8IsssDFDF2QJN7NLEAhAw1KsEpi3T5GhNvJCMavT+84+XWeKm72zfoOnlNc2RYE9v wslA0D/TeGPbAwwzjFxurrmm2znPUHMQNXfimadEDFlEUUQUbbTRoB+JZChJGajnnnsWbEofTI3i 5LKjAqIaan9GCRiEgKf2nGqB/r3KAFKzJLUghASaYKtYZ6mVFltzSbGAFCFI/z2WFGKJpWyJGtLA LDZGXEJttYrF2EnDNW6r9tqn6GKZrEASYO7cvaz70DK+jNZrlFI6UxxxZ3KjIpZd9ovPOQCJKTjG fvvbTz/wJB6cBgJvIzFuC6O98MOwXa6b3/i0I3mbci60TDQTXZT6xxz/KeigI5kne6KQzreyoypZ CgJ9Tomak84iyJxpAVbUfCqppFolFVaoAugUgLSkUKoUDjr4lQ5bBbFAhxD01RcNcBWSllkhCGL1 1FLL1X2GG9Ij2NgMQ/FitJ1UghgnlMwICtv889+tgkIYUi0mQ4wmQOAFSeqYvIxRN3Y5cDf36AY9 IPgNz3EOc7Th1+dco46BZP/sTmWah3Egt5zmWDBfakph4bLEL+BEEB9iUg0J+tYOCWTMgXlyCOu6 w53tBCokrytJydgzHxEIoD1GpE8GalIAmEzAKcGrmYB6J6rnaapnyRMBU7LivC5CRYur6kpStrKV saTFMy8AVq96JawPZeVBEtLeAuhiog1JAhsw8kHYNDE2T5Ctf6PwBCCzpYtbwO1HiORMuYaRpGD4 ghfqOsgMLdaOMbWGOPR4ocJq47AurUlf5JAYNSh3pzTa8E6Ps4c6gFMNy8Hmk5nrZMNAicE0YUlx FWOHDO+kp4ZApIfDCGYP8zQRXryOZChTye1ewsyctGR4nHrippzCqUz1hGf/o4oKFlHlKqc0SItR ycpXloYUKWglCMWyUF8slM6yaIWMDhLL1IJQvgz9KhKCoQT9JrHHasFokADtH4g6Ywu5UcagnTmW k3a1xl/UTSIzlEac2tEOTQ7ncH/j0r4wuDkNwqYeBjuYC0VYnHt5aUud5KjmUrqmlu5rhRXEZElj GB2G2Ak1x3Bdx/5k047xKXURWR0vTGao20HKJjGook9wFqqcUDFTWtRUVJ0HPKkgL3kSgoCEpGfO d5Zxe8DqC4bGMiGsmVUs9DzLWnxFkEdooJ+EiZYe+2mtVWwCW5+wHytiFFAcFYsAktnZZSwwpKrI rVydWWSvIGlT1JyGThnL/+Q2Ogi4FHJSlhzd6JVWOJtpjPCE5FBhZmd5Wcx1NJaY1Sg/KkpT6FD0 tTdcyC9dJ8xhAjOYxOTOyExynvU8ClNOJZ6oekJNTA33uEfx2VJ7NhVtHm9UZZ0Q0r4yoVyx05C0 QtoYqytHC71lQ5Ewgj7fChgZiPcRRhhbJmSEimqZ17zzY29fAfohw1qFSD8KQmJ3MQwDHlBJ7OqF A69wmtbmEnCQy6hqWZpBzW6Wlra8Ur4kzFK0lVaFLkVtRy87yw6zKTi6VAhFDcIQAq/uxKqb7UWM GQCe0pZkIiFPeVqmTJVUKlOgKsBMkjo84hEPVAQq3lSZokUpCiicO0syF/+1Ys6vSAFDgtgVZbTa 1QdJj6tWMad30ZJGYIE3vOUtDiTcKja9tld+RpCBJoxAg0q8SBXy++d8IVOsW9winD8SAJE6Mwxe xMsXa0SggE1D4NRMyW8Cu4bjsoFZD6v2NZa98Ggd/OCVWjhzHPZwSy2t4Y161ByWZOVEl2GQ0x3A xEDdjk8r4rHt7BYkGmE1eAo1Ht6SREDBfZ4ValJF+zjlJj1BylSLdzzojQpABOrPUP5DlOQyl2jV CyNSxrk0Mk6IWGJ9xIYw8da/BSbMZk7Fe2XgBPTKgAaPCLcp/DhnHO0CkT8qLJE4w99gTGRdDg0m ME5TjYoChKII/lKDt+T/aQtDWDaaXikoPepJT6fp0hVuuGklzemKZ/Y1IYQONVxrkI5Lgxk1JLWf /sSLXRA1UOCxda1vLYBHUeo+v7ZJo2C+a2sSl3hRiarvgmdNAP0EaBBayqr4A5VaafedcawQ+1CJ z8RgImyQiLP90kaKNEOiLUwYsx7b3e4QNKEJBFBCZSwgt8z8iL+88IUwsGOaelfnYHbEBghjc0GP cinDtdScaRn8sE/WkoV5f/SmOZnphHf48PwoEyZdSDCJOsPQ0hDxqvssY5AIMZkpQVR6Lt/y2Blx Zst02aZ2jVSedOqJxCXuFIdbFKP4Byn86U/siTKBEihAVWBEStKraxZk/3XPsyrKpx7XPL9/Mmx/ z3oE1uGiISbY8fh75XqOIHAueAcJkXMzZq96UZqOAfjteIJ7wgByOE1C+jgZdtiFUUv4htvdlQrm R2IWnkENV5zT7Se8l3ZjOdLRi14K4RwPoXaAEgCWZxIypkyM0hJHUGMpczubUh4u00SMkh4o4TL1 ARNJFQOg8img0ik00ztHsRRGgRQ/I3uxZyqvdxQG0mwOYhXslBYQQBAR1jDvNRj0I2eIYXXiwxZr 4QJuEXXSN2fFogQHtQBGOBILUCTlEi8ScQXU50jElEMS4AJVOBCrBDjKgTCK82GVY0ubJkuxFHgE Nw6DwxsAww2ToDBQAP+GZFhx13J/7Td45SBB6OBCYjIc/xd+G9MdQxQeB6hMt8OALdEy7vEoRtQy EthMh6goTXQTkBgfHtgfNwFFwnVFwbMzz8NsLih0JngZULF76IQu7DSDnkUOcnVXTqcJzBE+aOE0 PjhmtdEY6jaEjVFnSjAZBFAuSsCEGjEaFWEMClFoj1UdDtRlznFJEnOHxCEwJoRRobRJYah3l0Z/ EucNI7R3Fkcth3d/DaM/iuGNmPZo5OAvw7Ecz0AnNlRTA4gRQRQeJqOADIhUMdGAuPaAF3iPAqKI h8I7xbVUH/iBu4ZcUFRsWsRss8cqyPZNAIJV59RV7eR8B9NgkyUY4mX/YW0oAxJQiun0FjvwNM4X dVQHZ44hSENIfQVFbzdwLrFADMI0ETNQBcpgU45nHSIGW87xb8woUxiDh/uQD5czDmvIaJa2d/mH d0ipUuK4lN+IV6LgjaWlUTDVD/lgDqwBDzVlJw3hHNYRMh4xKBjRW+4xjzXhEjR2gSvRiPu4HkfU HvbhKMKVersmkKFiFHa5M87zKkhxe/+xFP3xFEhWKhJCilwWWciRSd8mGPn0AAYDZaXogz4IhIGR GCX5GCbJddQXCx9ihF+3ksB4asyAahIgkxLFSza0juzAS/1mDcn4OAZjJgHnDyBVOdmYGExZlAyG YRNHh0R5m00JjqMQ/45QOQ5+hzi7ITDKAUNhwg7EJHl5QoAFWICwEzuIkiiZp0RveR/N1ET2EYGx kzIjsSkC0nKUEjxMkXpM1XpFUWQlKHQr+BRIsVy6lxXmZBalqCGD4zDjd26UUFIGAxeDoD6EAJmx OGaHcZlnpj+pMJInWRnzJjcL1YROIhGoAUEL4XFyMneqaUP/FhzJeI72ADpmYn6TtZu4+Xf054b2 55uF55suanDWCGGLEznB4Rt8qC4VgR2xVjIiwxHhiSgoY5aJUinuUSkxgSmTooDpYR7qYUQtd1XP pVR1SYJ2mZd62ZdX8TOuR3uuVytxdJ9zp0p2BF5/QwIyOEfo4nuCcP9P9JBufNQ/9XOZCApQf0UZ S/h1frZITzKTfUKaAEhRG+dBDsFayIkPFDQxifM4AAMmYrYhX3h3EOd+FIlhL1qpliqHuimji/Nv IFQQHoRDvvAnjySd3lFy4oEeiVhjM9MoSNVEL0FNRsWWJhEAuFAzWYFrwlMzoyIqqFJkuhafyYaC tKddyfMhhHlAXeY99/SfwlJnr1BP9cQELyCRGgIJ00KZARUKB8p1CNSZitSE8LJ2UDIDpsGVfqMi okQN89Bvp3QnVgkcxAGUW0h+WZiabvJB2agwCudwlCqGl/qvlhaHL4qioQR3AcFLSwJoPIQRGlEk GmFMwwCPvAWkhkj/j49oE93pKIuisYg4EgYoALvXcjtjZFJ0FKJSFA3il7N3eyVQAgBABSVgKkLm kNpTsxzJTtM6rR1irDw7NeVToPA1P9SioPyDrdciX+3WK+DahMQAYAtkGg1RQ+iQnPmKhqQUeQMh ODMFaqyltZbTVvTwQVypjL2paaNlqS0KCsK5lHsnsACbcIkXUsCnMZGUb2nXZ4DosMHkseehKOqR OzehgUZqE5TSKIIoeo7SeSNLKrRKq7iQdDwjAqznFLSnbPwxey0LswZyFEtmFXZGGbpyLDerVR/i GePCTr/iF55TZt8IGdBHCjEiGLYZCuulrbWoNkrbkoiFhN9KfUq7/0YQsYXryjnGsXF4CEPMYX7K sQ+XE7ZugjEfpJr+BoaSWn/357YtenyVWnhu25QAe5QSBHwYwy6A9gIlR3lDVSQfCxKd0bAqJzue d4gpoYGtykROtTIyM546Y13HYiQGaIDKU2RMgWMlQAUvm5B8WXuv94ERsguCyRmiqAvHgl3EQm8J hawGm2iR4HTciLSNwaDBuVLrBlBKi1hNoBHkQgyeYQx3066iw3949A2VY7z1MDrMgVGqITifhZhy J1Ij5q78Z36zUYb9eqL++raVCo5sa7bjkK8I+wujanIP66MgOxL6VXkkwaTlcUSCmDIskRK4+og7 Ro8xME2ViDu1Kv+y+qU86hvAumqXfll7MLtsRHF7t5cDCqBdo4JVgSmKcSQ92qMrnUFvvaIW4GVH lWAYaEO0jjGS/vQNkbDI9sNXuJs3o6HCBsSSxUC+evJazlDDdKecLyRZ5WhBisaTZSowNyR50fuo WrKbabu2RYzETIl83au9kTpxr6EQDYV23QFr/8tbnaG+J7HFsxOe4tkez1QfY2yxGJu/VfW4WSRF UtU7RNETsgc0zKaCRLN7DhxHswLIohiK+kUZ+kVvvaAh7UNSCjYJRhucjPG6gVQJtdGG1CIJ3Oh0 gcQ/OHos52JATkIuThiqp+laXes5G/aoZWINW8K80XgOErOfrez/GwdGYUt5y3CIV7hMy4tMtIss y0ycDnYkQ+S7WLtQJOGpvuSxvkbkviXxgDO2MrHzpC5DnriGVLuGBTshKUdgBfXRTalyiaunKqrC FP2RwAyAM0phgshmgsmzCwfUrIv1x9FzTleBK3GUUHajzgnDGzRICbL7LGYGwo9RNuFomxwsnP2z RklSLHpjEYF2GhoHYhIzxBckQfgSDhFzSYmavB3kw2TSJhSWvUmstkrsmwrqvdoLnNgC0gpHcMzh G1r5S/87zOFx0iXhpOF5gX/blqHHHjRTMy2zKTNHejZBeug5ExPwKdiswAAJKv8RA58CA7DNKsVD PAPckA1Szrxi/9ITzCNxVGTME8H6ZSE2xFbCQX7bgAl9JEhkDbvNbQniBXXoVV5jZq0vYl46mCO8 vJHmm5lfR33h2ismBlsBEXChFb7Kjd4Rhi9Vm1ERo2AIXX/aGLDXy9gXHY62/NEYXSM0gn8wJUKm CVTqMsy1qtkpHb/qUR8roTLtUZ15G+HkcY8XC4mSwoETgAWtHR+rjQX9MYmTOAE3oQC03WvelLJW NCC4YiEHI7cb2RmChSDBLSFPDdWfEdUEoSGkVA2KmYMy8txPGeQbPeSL7ZSDZEoIRH2CsEgQsQw2 VVHVkJzpgA2CIQNrqH7jwLwkenET9hpoAmr9B3/nV3Gz+9FqXf/LrcvYAovR+I2bhaMOBvOaJBa1 CmEkfba+nGceTqqkLLOxjSJFwuywlZdElMJEvDa4qy2JqQLiH87aPzM8PENsQ3Y8T/0ZbH0suTKy I3s8oui4WQHV5Jsx6pxKf4GDlKmtZ37Y3FjPYK1HenRuxvFZIjQ43NCGiQzkq4CwSq7kv9vCCbGO Oem1y31HlCBx6RpB+4BSEKNgbyLmuZGvUsnRItzY/O3YRH6bk8YckKBoA94x51tyCX7ZKnc7ns2A n43gKffSynSxogKJvcaBMzGXkiiJIm6kPkalJovbopLVSSJlnh655qlrVESzxf0ZJJDkyA0s5ufO Yx3PSlw/Yl3/7HoENvqkCZfwIq4+pzhSEOQbhb6LrIHmKwxhrqAjlXdHabY0lMvBL8RJS1UiOHEX MVNbg3YNDt3o5pg6y0VO7ZqjtgPbaZNlBBRNt8V057c22i19gMissW05cyghBI1CnjRWMwg4EkQS OwSQAUJQKQN57zE3AU4l27I97xMAA5I4FJP7RGpvFBLSuAauiZJbFE0RRVMUzZ8eumzELncSLO3T DU6XP8BpI2adyNJdfP6UV5NcVzhiqLyMQHaTsOuyNxt3qAsmeNSbWRB0Qu+H3m2YHEKMeJDd8vUt 7S7KyD7/r2B9tcd5ms/5HQiIxSqHMg/OMi6XuEeUiIk7ng6Y/5bT9GukhymZQincKfbz/imm94E+ NlxQ1Pb/nhUkSGR1H/1G1vbGYultRTltGkHGYZvFrj+J3OaWZvGya61tmE8q4qiOGgnhpU/xAz+B zxjnUNK8XsgScUDq8sPuQI6bw+WVDwgPGoMagoOGhoSKGlWLjoSNjIxVKIuCl5eHhJmFhZieD6Gi o6SYpaClqaJZrK2rop2hqKqhUD4aKJQoKCS9JBIHEsLCBwHGAsY3AgIizcwiGQIW0BnVGdQZFtXa 1t3MzNnL4tMEIhbizdYFVgUFGesx7THzR/P2MSD5+jHs7O3/BXI0axYkQEGDQYIMFNHOSo6A6wQu TCgiYUGLxv8yvpDgS4YvEjKqhNxUCEooVw9aqUyp0lWWB1Bi1vIhs1YtKBpi5ix5MiXLly2DClWp waOLF0dDvIDQJACEAxCYvpj6YgYJFBJykbCkiFMiRLHCgn1ElmwiTY9Eco01ylPYTm5VAfVJqy4o VJ5erhL6qq5fnBpINNJahRKJFweCCeMF7EbiAAfELTsnYhk0AdmsYbbGzdqRz0e6mbs2rbI2Z5UH unOXbl3oAvMy1ItxBPY9EPzavVu4e6DEhOACWpngr1kBhhMtWkRmMCOEF5A39lokoxLJUi9jmmwJ JYv279pp+vBhRIZ5GeSNqJdR/rx79VCMgP8+tD7RQSiSPof/GqDJ/udTZXVVYbh09VYmCIrFlldl TRKJglwl+IiECJ5Cyl3Y0RWUXxzWtaFLP3U4CmC4VFKYYFUIg1hiwyRWzAE3OKaMOdhg4xlosoXW DWifdXPNZedcM05q6Sy00GqybVMNbLrJ5o410Bx5nELtQNPOQ+tMMMFDDh13nEAIUJRQc845NdUB AV7ViwxFLfIgdqzsFVR3dNL1nQZG4EmTSTjZQp548ek5nnbe0WdfK9211Iggh+1A1aNLPUUVL7sQ +KBYplQoS4KbYspJm9e5teCmn3KqICJtiXhonHqJ6OpcQA1Fl4g4GVIJL4VV90uLLLpYDGQ3BGBZ Z6BhARo9/7MZOxttodWT4zWiFRkNOj8+wxu0FmSrzpMDQcnQj0Uy1JCWxFnRj5b9sFNRRcopF8AC xkQ1laRpGiZJqKbE2ipLovAJ078mAQzoeDQNwqbBhBzc5qD+0rkSrD7VF0l+LkgQAoASUJWxxmoW tgtan/g1C6lwVXhqyZpkSmqqph6iMin7jqLvqjT/9HBfftUHU5y0aDBoWiFVoSZWxPgagGMuxqgM tUdgoWw9WNCGbI46ZhCbj1h3C22UqT0D7mTZZMsNNUaqY8WS5ppLnJYgUAECuWv/gwC77SYEb1QL QGDmo8MMOB1cXcm8YU+FBjxfdzDF9GfBeeYpqHvnMcwnnf+Eeleo5Q4PRcguErjQBKQac5xVpZdq 6uqFnILV8oRxxaXyqbBcotdcqcxM8+180Z6h7TbfnIrPg9yiCGFC/zIDR7w+VkyMRx89Djg48pjj PfY0az3WUGIfLWXOLLONNNWkk6QVR5ibQdpZYjHcBFis3f5w6gM090EXLbDARWM6FRUEGWfcy1ED AhWqarchw83nXwj81yAcNx42HSxPBFsYeXy2p8PFpHDbodnmsDKVKzzKg/1T0Ud6oQuSGGhUqsDL gU7YIEyhLHatQx0mcEfDGh5qVnJ5RczsUhRd7OKHQETB8SQwRGAAw1cuyohkpMG9HfnoM8zqEW2e VIDa0Kb/G53RnjYkM41qXM+L5ZOHudZhBfWV8W1ozMf7yuWP40QpCMuIV3Pod7+CPEUxHPmI0G5h i0EEDE4ucUV4wHOyeykiEiFJZA/Noxb2sClPfYokTCiYEwTySSgb3NULPPi55/Qtj5QSDKUoESEU duhkpmKQWVxnCk/l0IawjOXgYDa7HfbMEI3YyokKw0uhCWhXRkTi8gSwtCGdI0ibcSKPQqMNZlXx mbXZUY981BliQU1HzspA1PiRtvKp723cLNfbykUc47gROAcRFmSal5F2GkMxvDCPD+Q5Hk/8kVW9 +9AlWUE5QY6oksAr2J5yIp5bsMmCmIOVv3ySQaH8EBcq/7rC5zw3FaHxQpS+GOWtUta6WdiSLmxB ZadUBziOsmxlr5SlSm93EpQgaDsw65nLFBGSEdpUTcDMGJp4lRGlxeh5XKQRNZg4DW1lD4tKyqI2 jomZpe7oas6C4vn4wQ/1tU99ucmSucI1kWUUhDnJKKaw0vmijLkAJJDTU0NDBKubxYQ96omrXGNS HiOIhz14gpxe96rX9kAuPnuSj3wMxZ1c4IcjHdzkCz5XhStkJZcziGxkhRjElJlOhzI76agwlCpR bcJkp8vnSmtmO77YhUGx6xQq3yIJEtr0h8OIbfISwzylLXEymMltOIJUDWmgYzSZURI1tyE27C0j m9W44v87dNOadTh3a6hxhkLydxC96a2dwUoGi0Q4us+SDBRtFW1LZCqLFhroU46QychUNRRe5kJF m/RggGawi6vw4ng+HB196euIAYb2tP9l2XpxJt7R2gdn+CQcDlGKWhNOqLNoMZhNs0Jf2QazV7R9 kU83zOHbIhMdS3Rq2Jbq23NMpriV8Z5vN2MZablYuuIQlgDgKGN3BgA6BpkxAWYcR+Z4MrZrkoFO FoyTWwCyVdnRE5uElzCRNCIST4YEmxrhwDadpyjmcYFH3KNktebkO/8CSua804tcCG0qMyjMDDqY Zqv8whfFw5UeP3Ze1d4ywHiWi4FhGTGbIG52HFrYTiL/SM95oofJCmMdhhIGkkYLI6fCJEZsYQSj o9lWGbWVcTGBCo3OdI8zTCxxU5G6jE0T87aSgQwyUq3EY7S6nQdBBhzh6FXn7C8xSCGBlt3DBLli sHKI8hdNBOEnggpWyH6lK3mgwJ74rEeudV0PXNszV7oKdrCD/Y58EpqoVpByEL6QwBXG7YIruECy VskjnOtLCV14DGQhu05qaxfaAc87pqXdMw1txtaeLPh3mXqhdy8bb5oG5pfAfMqNhekrpD1GRsGq 9E+fZ2JpRIkznCExbneL2yXalpiWjrFGFr7OdlrmGUuUY0YssgABtByszpkvfeOJ15ge+aOn4yws ulKr/z59ucg1SUXDVGK4AmdBlIw4DBEzVhgiViGyV+GI0Npc35lXNlR4MR0qYtXntuLc3i8Lr75V KjjdAXwsj/ihx8wsGDUZUuBNLspHNraxYDBcmDI6Goyye+mlVbziJ08x4IkJ8Z9iWml7DxamQ848 dr7oneoM1kBQ7lWYKxGO93P5HNv5lKgkBkCHyXXbPbJIFU6CdL3MFZWLJ3ePtH06xQOJk9dE+y13 BGGgSqRaIFjkPB16T5bj51U2N6AZOHbNVzge1K0Se/uqPYiGvdRMCT4r2kFsJTyUYWbFbvSxxzJi N+NZCoFn3vJDwpfhBuZGjnj39utd8adGNYi52FRuDP9eMj5lvKXf+fiySuAYS5QO7AAuXXMMXyUm 9+NO1gUgLiBEbyZkjpRt2wFT4dVncpEoFpSBDoNQlEMfF4SBlxOC/BR87VUi9UVE8rUxjiUBxSM0 7QZEPoQLJ2Jm0sc6GYJZGuIqAEV9/MIq+eZ9q9IvOlFPOwF28wZushcYzdcL6pZRBOIIvCQDAvJo yHNhDIc0WLhhErdhpUZ4hLdpKYZqJsZhRqN4/Kc8/AeA37AZrPEO0dQ9FTFjcagQBEEmsLY/nRcM U3FWLsAEuyZPV9Y4FBRBNFWDgzgedcUey1YegTVBjZMeERiBdfUndoVtdWVt2SZYHhh8tYIfMoh8 G4P/FCCUIiSQblYHfZvzZIYIOCGTg/tyfTkEYaykQ7X0g0BYMzBRT4ABGOi1XsMjCalXX3P3ZmU2 EmmBU+EmDI7lIsvYfoTXPBwWjcyDDKZWYkvFDbfFd8OkNNAYcpbhGeSzLDFADUxCgNYiJkGQgPAC Ge2njMdjUyMhEucRZJAjezW1JmpRIMGYaIzAj6uHZXoFkOaRew42bOlRKBXEbfy0QUIEX09XbomF K+fmAmsHfR9jHVEGMviSWV2nYDGDc7JQKwzmirV4YLcYSJNUZQ4kjyKxJoPgZJuQUUNzU6F0UWX2 UJ5oHaloZowxDFfgKz+ZYZQmI4mneBMXfzFmhstT/40mli2lhni0tU4v8njBIhndcA/J0ob/ED5G khzMURAu8ihQsX5Sh1bowYjhQTCQRDDjkYt+sicVhDiE8oFzuTMK2TA3cTiJAzC/xk8YeEH1YQSX Uik/uREpcm5pIhjMZxUWeZGWYowa+WCAZnP+RpmkwCc6V33gRzgmeZLYR2yEQCK4dzCNRgKMMh2C cXpvhisXVYVEVIpAVCCy+ZKFYFEneETsd4W+Qo2H14WGh2nUuGoeFmLZuDSZVkypYTUx4DTLCQJR s024QUXl8w69ZS2VMWt2kxFN8HjWtTeP9j8y4AJ96IdMwAS69hFGcZ5/2Id9hR7mQW3PJm3teR7q Qf8TlchXf3WflxgfyKYdEjgfOnlYHYSYGyEdw/ACPkQpoRR7ltJ6q2hKlskhIGkhcOKKHskzgAaE KdQnsvAg0hcSp5lLPImMqflDTGg8jUlnuRA0S/gLQdlwzFiGPaVERzl/4zAtS6MEg3d43Mh4tEUt 1EAFQqoPIMAOMTABzpk2ZkQ+ZORGTikONOZqvdJ5VME/NgWT/OhAqblBSlhlLcRkrPVHhiCaRWhQ jqgndmULeMmhI5lQmOMIHLQRx1NRJ/oCxiMgQJRR7PaSbedkQdMg//WR/xaosIhPCdaD3meBIuJZ sABlw1NfpPND9JVTsYWKDtKPIzRb2iVMycBOqRb/gDaSDaERah0nDsUEnM/jRfiAG1iAG1agD0jq qlQ1RmlTq1y5RVA6JmRldzemP1NxU/a4ZVjmCxXTgH2aZWtiV4nGlvBZiV9WibaAV9GmZHx1n4p4 OEI2SIpDJ5KjHYvAOaGDZsQITFP3SwJSkSvqgqByKYb4Mh0yoSmULx05Xr6DqCyFOyEyqAR2Cg/q ialnUZQ6DETzWP+IIrG3dEjETsDSjUokf7p1Glh0jRago0qwYqYaVNzwGbCxTVYQG2XEPh0Lsu5Q q8ORLm7UPSeHP67GefOyU8TICzPFRwKJVgL5ntB2szgLbfGBiXOFbYDlbHIFiWk6H/BBtHqZOEZA /zJPt34pqG5laV+/IIwGaxipZ4wKIwgH8xUi80o5o3194YP0aq/6IrYnyS86GJlwulG3MqJYUZOP 5XwapaADWzS/YmmOIZWPgWri80TBVVzR8Hel2hmYMU22EQ/8sFyHWwDxQ51qUxzi0i1h2C7tRACc ZyYAIh1XkWhb5npWq3tsUpoDuZL9+HNxBZc+5ziU5HOLJAMP4KWUVBS6eAiRdDjZBjwBgyd4wRgz UDFU2IRXMaksOEoOMoMoUFNP+KCtdIN51pGmBCLhB7YJBr1ha4s1VHaKSqEllZNqOwnpd4JDU5Nw e6JvdkSdGiNoOJUyplvJJE0Yp1SakVsVh3FJAv9cq7EaZ2Ml1NkQTWpOVoAckzdrCBEV7zLA67g3 e9g3vtAm56lHnzuQ9aSSuEuQgzhovEgdoKIJ8xSTVoYetsB7O2ESJRGXvyZJfCI8sPALiMl8Sleg HKEVr1kp+LF2N0mDUwaZZaE6XsuROedf4We2XvdvPzivnomSv1MW2ysSNum0yJOiuAB1yPMLZ1K3 EVdyPWWVg/tE0hNcPcJiSzQtFkdqpdEa1AkN/jDGAAEQOeC4LJeOQQAB9+PGBOwf+iMB8kKWCPc/ u8YE56HHceVI8pSJYPYAbFnCBCPIlKim81QeNFC0lhhXOwsf/zlkA/cVPZcFGuAdBCIIvjRE58b/ gnYKTN/rQ6o4GC6Ieu32p+UHWka4MrOoSuAVvXLSgzgUSPTqg2w1xJOJOualFa6VfkSUoikKTEvZ eJ16WzfyxWDUI9bETNoiuLrVvhcHLb0hPid7DVViHFgiAvOjq3YTFW2cN/ByN3j4HC7gKAGSR3y4 a2cFnntVs5cYV8CDHrgriD5zZY+Eu++BbHiCluLhOEuGyACtph/MlsM2OXmyKNzbyWvGGL6gMTA4 vG4SwxBtfoUEoScFQyNVUnuBYLLsUi0lvSByy7gc0tlHFh7aS5TFxHnatsljt2ZYleLwt17EDLxV XNmyTMs5qr2FceubGTZCjkTSleCSAxIREAMh/7nfPM774xQL8Dkh0AQXcxRkKWeha2WBUbxvlzjz gUGXgJk64XN76dV3kjgfHHQJtF4byG3a0TtQwK69cDznpgtqQndDE8OpB6cBhEjIWzIZjcM6SCGW gINI1nWvKNIgPdL3+tduEowWWSAXGURVuCJJVGnNc3JWCbimoS04rcxjk0Ve5NNYwxopRjZW8g9p 3CXJgRFtrNRKvRRI4QIQIJ5H8bT/UwU0IAO3LQN6rNvh2du4vbnzaWjvabOOVLM1i5/DPYn+qWzQ mrOJOLTZdnRbgUtNtxHCeCKatBgm0m4uWEIvaSkemmhoV0qassoXAiGWMNj0VqjYh9hk95mnlf+9 w/MRa/vYJgjZwhBxwJARS+lhHAc+GXsszJJFqVoZnx1cbTjG1fItzcUQOTABIpADQbDNuirArX0U dbyHVSCeVWDO4omP55Hbe2VX9QQoj3wnIDw5a63VMqGtBKWBh1M4hZNAQrjWW+0dSPGEWPF04vYL 7RYY4VYxBFIpF0W8g7FBjkrRKGPe8cqKUGjeEHOhYNt97h2EJH1LJaUVuPIgJnKRMSyMuEm3/Yeq gHtMmn0EQjAPMKAsVhMaNJIk0sxMWCTUo02dy3UEEX6ydKir7zLOj5J+Uk2RHC7VO3AUsq1lNHDb PkADQuN6CcxLoVlQJN6WH5w4BG1kwWNQuYf/s/5ZnypuQF8GMArUCbM7l+sMZe+VIpPKmmqSJrmA kd2toN9Gm6pnwy/puibF5Kz8CWRBeu9Kkh1ZmVX+3tdbxGfxrZBwel6+tlHXIkbEjknzcWIjNuBz 4BYARcwSNezbRZ7NldfSLe6AAEuS2tNVXbbGN76ra4b+Ajuw4bD9An7InrKd6CJ+HuIZnrf9h8Md kMjd7yMuic6WyKYLl4/IlvOMJ2q63HRlsIkgRBOZbk/WdqFIZ3wKZSjyCFsKhfy45C+zWckrIQai rkxufRoCy8O+Z8GuWeUFp6111bPu2G89RHZndytitxeLW0517VJjD7IRDweONRkbXD5iHEvi/0bn OF0IodoLiIccU5q9gBTsbm6HbnvuUdBriW32+XPbKoGXXNaE1HNfXUERM5eX84E285ccKmY2kU82 4+ovqYzCgH6v3tDIaIhyPSDbTesbr2jxdtEgn0rZmzpO/rX9gjlGN8tUfvLzarbjd0jfzdhQ6EO+ sFNR3N8U5z2m8SyeRg21oSM1kjXLtSRhY80EeJ10k/TptPR1zIfqTgOHzvRLUZ4fvs7rbB7lGZ6N xtvuoZ4gkcGbe8H22JIPbB65X2V+5Z70+Z6CMjAEs++PlMGQtAkmIQOgNzFPt2YFun6f7D96invJ fqnDQyA1vEp+7a6LBvjo/UKtyBYzs5n5tv/4J09a4FevsmhYtIkiuvKE+tiaAQsIB4IHNwEChzeH AhaLAhmPjxaQR0ePRwWVGSKHkCKbn54ij54ZAiIWpwIEoZ5BpkEBsQGwshC2txAvECQuLyS8LjRV NC4QxbcvLkwkMszOMtAaRtNGGj4+09AyUA8aMt7W3BrcD93lD1Dj5+fpUNc+7uno5VD19Vnc9vP1 6Pj29lnKZQmIbyAUfOjUlTPyouELCVWqaEBRZcaVhhIkPMyo0dcvCSRQfNNAshvJkyhPSlyZ8uTI kyZhajBXcmY5mzZp6qxJU+bMnOvMPSA4cKjRogSHDlyatCnTp1CjSp1K9elRpU4DBr0Z82f/y5Mo VIalWAWFWY4vDqQVFOCG27eJEjFaJMlC3boZCmgSheqUJkWAWZk6xQgUqCBBPAkIAIFxrVq4crn4 5cuF5csvmODSxYTJ5F+gf2kbzQxaNhlVoJX+Gm9cPXjX4r024kMGPJv5oBj5x5s3Pnj6evM7mC/h TG4Mkzn8NUPCRYfNUZDQmAskyJCpUXb9qoFExJdfJXIvuRXo1qA/d/aUKVR7Tq1asRJValTg1qr4 8+tnenW+1fNc3eTVduFFZBZZH2V0gAQHXOFgAITApUhcgM0lySaBKQZYhoqIguEqmyAmgCu0xBIZ hAHowlguujRUXWSRMcGZMpeFNpo2En0D/81nN0IDDzqvBRkPbLJ1kw441vhAEm3YSEOkbMDZ0+Ru 9dBmZZRRdgPcQi7MUEVHyUjQnJgSmDUdmBplNF1IZPk0HkvjtUQggHQCmNOdJK0knk9dnRMffEsd hVR9TcmXn6H7JdpfVecB5VWcKUUkaVlnOsfgFYMIcgMhhygBmKcCgIrKIxs6oqFgpW6I4YgjQpbL q7q8al1DoD1ka6y26KKMLTRW4d0v2ZWkZD1fbaPkj+T08x83WhXXznF05gMtfPYlBWRx9GRrHzv9 DAVFMjM4pNFFF3HEkawhZSTddSGlZBKBxUIKL3l10pkeTjtxNyc5g/JHVKEASyVoogQXTP9VvetY Q5I4JynZklkGTtdcdCg4qOAgcGm6KcYQFiJAIh+nGhhgrrAqy8mM+UJrrWuxyCKuGam4wMy2hACB zbfI6JkLzZQ2mqTeNSN0djKcozB6GuwZp9IKN10Td9cs7PRJ7owTWzvEprNlFkZ06cIVX/fydXO3 OoRRmZVeJx2bYfEEqZtvRwQTwugZHdN6X6lnHqEDC7ptfNXSh5TBhBcOVX3RpsdVSm3/YiYKZIpJ wgwda5zpWx/DtSmKB7TlOciGGDLyISKUvBjKjbF4mWUkpAWBWg2lHHvKteDKKwSayci6z+9c/dI3 1Wg9t1B2G+c2Pa4xmSw99lg9zz5bBif/G0L6FNrtUlB4Ga6YD10hJtgNjQmadTPMcNaB03nU9tyP yukeSkrLTe86gNe9+Pva4Q1goH4OXJRAVsnKVfznL8MRDlEBHCDCfsIwiE1kIr5C31mmIwgGLahB mSJEBgtRwQtCiC2xWEyGPjGY0i2GFpvJFWZc1Dm1NMYxsjjdilKnwp2JTTRCO5JpjHAjHk5DN9gY Ej+WEqUq9QY4VBJOb5J4DyMqkYlKtMc25NO1K1ThOU1oiPfM5QJ1mQskFJsgSCDGtEehxn1vc9fe 6nWvfL3vbjzpX+D8c7g6Ci5Q1DKgHvFYLYH9Cyt0U8mkIOe4tSVoQV90jsVmgLFBfLAh/47sWFsO YTrSCSZEsKChQ1KoiwO88HWPcRmKUuSiFTXkMyDhkQxoAwXUROMbOUqSw8aBG/MchySzpKUu3WUv 4iENT3JaHjmQ4yx8aPEFWdQiRwzEkdY9ZDoomAGbQuIdiZBFPGXMW/vSGEf72a+N94pjG33pJ4AR 0I9TCcoe15nArAxOPn4rT54kRRFqPi5B1gFjNMcUOUxhqoMBUFAs2OKxUhkGkzJ0TC5khItj2GKU LzTR6xwyQ1wtQDLAspE2sPFK1EiKasULUMLI4ZrnQUtxeNPXNp/2rm68pJfFwQe5wrVFZZYJBRtp Edr4ySb4GSib7HuXNufFp3Gy8U5CJf8evs6TR77tUZ3/Gxw7D/WvgAnQX4hjB/yoqaa0qW1dzdyn ucaESAZ9sIWFSKsIA7MXDJFoFiZSqDE4+arHxOIFjtnkihYg0eoAS1Ku7GhtfLibIurjPvaJomKb uNh8UI+x7rDSP3YDRd6go4hdioj3XkCuNEEELX41l7gK2abxEFWNKX0jOUXaqMW1VnFrzCri1tnH qbJzUe38nwLzBcsIUiqR6pKO+Q5UvkRW8GJriUUiRIchVigmFKwq0SdhpJlboCyuEU2diS66Getg xyxLWiVHl9S0/fHPKMME0vO2wg9AZutHbBymLKOWG98QByHM89YLKhJNch0TI1x9pjT/v0Q20XoH vGDRJpKU5rD2PHBA3bTbUlvL2m+2h6mypa07bfvUP3pYt72M1CDTNiazNGdyBzJx5DIyppZxSnQl JMUoTGEqEyKmRIiJ0UMfKosgfBJ1293MMx3X1Wj4UBveKKNOvOmaXKa2pUbDZZ5SkkslEZV4R0qI luWxj3rs14G+cg5n15IWSGbEVwOGnAS6uBHsGGh9KhHklBMsL3LGdrUULo9Q29c/c3KYqn/mo3/6 E09rBTImqkkfBKhTVgtacGOXc2TnRhkytv5lVaRTRBAWIKJYXHSGKdSMioAs5Fid8hc88gYzqsHK rCnxKADZD6GkepA6GqTWtQ0cQIRj/5Be6wcKEKHmTFBjEbVkUS0NesFwIXZN6fgKNPSMc9KkTWc0 Lplu2Ma2ewREP6xuWKp/RuBt56jOPp9T2yhphprWba5Iu6WFk4bQ6z7muc4BZhSXjHErbszv2uHK dgHgdIkgI7uXDRmHvBiNk9xxDSol0SDXYhauj/gAVscGNkq6EmWD2ERsBPGH2PihEYE0WOAg0R6U 1Y1uAIg9ZXsHJdEUU/k4a6kreAl9ZUnxWOQ2ljdNW8EoRWm2hx4gcHrTb3a01rcD3eEBLh3c3ia6 qj0yq+MS1C0wJkAjtM4qkXlCEn+xZIa0npiB39WTtrPudSM66TK/SpXR8Ebcj1av+v/JtugXtlPC uI3Y+83jbdmGyrcgAqeJmNh7V4imssU3ppxDCs70Wqotk4pnopdTz3lHmJ93y7+qMv3zjPL2ea3H xlrFzJMXzBTpMjAXEq4qhIcwRCponOkOAQYBIiBA2UN3Mk/+OK4fPGu8U+ZJUHuGF89oDZe5RXS7 4x1fOKFlQpYHJOwN5x6OyhYto0bLYRZkiMwy5oGtKYOYq+UiiLR5cypSzRQ/+P2uvTPm6yTo2RL6 j5YPPP365nkOi9u2/xcVhnJ/ILZ/AUESvEAdnbRoF6Mpn9MW8bYYaeU5GxI60EVJJTQYh8B1CRUL sIAYcHVdhXBdguAiuKA7PMMMcnf/I+BgG1HjAxLxDvOza5DFD3GiJf9gWEAUDzzUIz1YJT3kcfDQ ahF3WL2WHL6wPsRlEciURc+hPTlXFmVheD23bfJ3dOaVW/wngPlHN4OGdKAXhrTlVObkNzD4bKP2 GGnhMTAGY6qggbWnKrVHChqiCkGge61yXTCUQrIwgcPXOTRkC8dXclYWUvIkILBFJwXIR4GjiAsU UhC2P+f0FN/yEFJoTTOnEYJwbE2QRWc2XNpjTxTxfizVR31Xd34EhgLofHVHH33nZ2IYi7c1aIZW i13xbNfhWRS0QaATe2/hOaJzXba3Kq6gGMUYOh24djEUe6PUQqmDK8tgGdqggtIQ/ye55D561x7B cw22kQ6s1Du944LPQhKBBQysMxlJ0zNDEyzfQF/A4RrVQxwL0ASLNk/EhX5NGABNQAD06InccxbP BGeQtzCKWIByJG7bwnIHs1sY5nkHKYn9J4sSKWsG6FTllhLOVHwp0m4EBWOYVoGhUyIYSGOVREkk AoI9Zld21UKkZl2CmBmpRjX/gA9UcmssV25F6BsQd2sHwTw0qXJRlHLUYASdMQ00MJRGeZSUJXK6 kXL/wA7YQ4/hoybR1F8M0gSd04n62I+ndHNeAhEORIqVV071czCbB24DqFusGEDplC1WNZFwSTDk Zmj3ER8IyGbPuBHtplyiU1BtmP+MsBdjNBYiAsBXb+WBeehpF2V2vOcqKSQZ7ZgO3+AtPRlT1BN4 AVGZWhF94iAO7JBe3JKDurFKPUICSRY0zJAaqTESsUGWO8kUncgiZ2aVDdEEW3kAnTiPEJBMW3RT hjSFCDZhDwlibTl6fVZVW+g/ARh6yxmXzsmcTcWQ22ITShIRmsguzMERbIGb7waMIoQyIikyJnlj cPWBnFae5+mBIXQyfAVquLM7OGRyuRF9cnSF5cB97sJl5UU11gBUkdIza9I6YtNMa2Id0hGWhacd 4WcPTTCPx+YL5VNcz2EruOmgTqhMZWE+bnZNSjOWaomQWMV5StcvkziLzfmcz7n/f06XYYhDjr/Q GJ+WFux2OWqVKq6gnrAnOiVjCCTSdcIYgozBV58mCywpC3zFKzZSjQt6OOe2iplZa/7gD/d1azxp X72GciqXDTTABEZAA9DApatklGKqlNTgRJQYVbBJj8iml+jXiYOQFgGgBHzViVnkpvrUfmwiP0Pl mrX1lvXHfwBEgAYEoiWKoih6f3/Td47SHWYDYN51Jo0EgSMoQxGFjG64KiYEpCjDaQI3pCezOSCU Mgu1C6YZXrGWmY4IOKNnfTzpcKs0mq9ag7yxlD2oDUwgA52Rq7rKM7r6pZZxq9pQWTvYG3S6myYy LsZmbG7ajxbahFokTRlVT/45/zxZqJYRKWidl60KaZb/p5yCaqigtyiEBqgfJjgilSeUAUmVAk35 hDFsOCI3ejIjGXsl06M8ekLqiRgzQzM+dlFC2habgpX0KKrJQDRFxB8PuYXnVSdPoy9Rxh06Nx2f 4RGU8ajAVUiXKHnvEZVamZtYuUm4iZv62CCdSAAz04m60AS+SZUUcSDwF4kFaXdnKYtkOEd+Cq5M h1u4xYhOoZysmK7VEVw6BznbGUMhqF33eqMmE10n2SpMCwtHmkkrIldptzvBOpNMAaX9oh8+u17J UjXIc58+8AC30Uqkiasy8KtqOxmr8xltWyOWsZrfUF+8hg8fG5uxCUkoS6dNcP8FJUsAgKuPTeiP YAleKbYnSSV/aFqRaRmGiHpVhYqzANizW5tbxMmFdomGncQRB+IrYaad8bYACfWBjYmSreIKoou6 I8JphblpUPuvMOIiuUMjaXsjTYQ9f0YcNUiZluUPtdqDtxq8yrAzuuoZNuQCO3ALlvGeOxC8plGl QLlrWrmbudCPD5VMuImVfutpJrsAuFlmAdlT9ARe20F5BkicO2uWVNWcCvu4kosfJxquSYco6KFu OhUd1ZRzYKUWKFKpH9iBCbW6hamHATcLM6NQsuN7upIMqsQMPLNRllkQBsNGQXEk4dRg3iiNo3EZ O3MzxtALgog7p2QZyWBwvXD/fF7ajb4bvf9wt3OqprvZj9nLtzMjp3PKgDTXVQimpyQBeddWbpcb uXI5xOh0re97xGzJltIpIGF2XCDhuSlmHbDjQjx2MgPXaZ42CyjpulkMowpFGRjFtquhI7Y7RHoE QNR3S5z5S7WBaruzOqGxK3O1GTLSIjfzAjiDDKzjSsfyJILniS9wUQ0qlS0jsHQaAAQQcIC7yB/7 xPzVNsDpU+tjvuZWfzebTgWExJoshneEuX0jTzKAEYj0EWyiLumDbKAUUfbao6WjxfoKtfy2aQF3 wDSTC62DUaAhNGM8WLGqtYXjy+exfOc6Sz2zMhKgOrWSUWLzGah2CyEQAgvw/8w1gzOVEREk0Mfw eLtQUIKxuZvIpLdYOcO5icgLQAAIkMieqKEHWoUDiY2S6IrDGb+bPM9wyb50dHfdgIvN1AsfsTbr 4gtflIYpYsXxGnAP5a/uCSOSAcLJgGpVMBk+AjzhBV+KQjevcTVYozVKwprTiHwCWsItMhkuwran tEnOLM15/JKss5qqCYMNd7t26zovI7jIRqfiXM7mvMh8VWZC67LtjI178yeq+q14RM9GTc/whLBI A6mw8kUfgRFuF28lUjqw8AqbxqlXHcsQYJ40w10mWBluHAxLspq0oRDbypyXl2tl2S1gK5lru8zL 3NAe7SvFwAvK4czRDM16nf/XNsO23+HSwhAlWYtItdmPvIm9fLuPOW2ygFunylaVQ/vTRndntnhV R33ZRxyASZ2QJjE+TZ0gz+RZkJQLKYJsvVcL3AUjqa3QDeEZH4x8QqPB0FAFDpM13fZrtSYcCpEF BAll5HiaoXG8b4tqx3cM1VUzuLCvyn2kxsALnhERXkrbgo09FRQrdbqm2otMIZubOJ3Tc7p4Ebps wWltDXtLEEnUmJ3eKSrP8GQ0EQQMGAGtAI0WDGILpn3aBeyBAhdwmwajzN1QkdEiuuAMl5G2PJMd wyJ9Z125BjG2l9UO5SbMRqMaqiGNqNbQIy2gvPDBv4oLNiMFtqDcKZACQUD/4gtgAzbAK29LA14a vUthBJiCTLs5j4V9t9mr3WnRoIuNzotWPpFdhSwFYbh0LMlCl5ut3kieosiZyXaUMElzJpCkFjFz yiwEQ1mcjJwKAVjNaVLgYz4mBQEA4s4MAcmLM8Kdtp4RWCOxDt6n1KxYJ/wCz2RbG80Ax3XOInbt MqDR4QzlwdGs5QuQAieeAh1Q4kEgBSOe1x68AzsQDJbR4lBKHJso4BbzHA4iCA5y6Zo4pwFnm1kk 3u6nRscTfSUhzEONnPKc5KredAfUouUAoOzmXTEDJoAYqqMkUaut0ApNwnDsAnS9UT7iK65UN77c TtkiJWVbNdBQD6Zxts7N/8G40xl5fNdm40x27FAwIgXRHOggDuILoO16/J7BwOJA+X3bfLfe3D2W 4hzJho+42b3/Oqc+PhbjbYXy1JleuOr6HpdJzbWBShOw/qZW9zoEv6l3ePAmOyIIEMs3JnCHzuXf Ps3PvNo2YzPN++htOwwOw40QjKh8wzxbMn1GcyyJtry63iLWjvJiAyuvAugzM+Laru3fjhjajjMV HwIv0OjEQAOCnds33iJ9mxGIp36Z7reeuJshi+NiEtmoJXT5Z9n7HvWBdtvxG0/rMBJelU/iwkJm pY88msX8XcD/DWqpHQK9sAM5j/ONnryNjvFOUAU5LwzSGBEkH6bcCA7ZQf80LpGOOiIST27NcQwm uMAYvnfMsZsryOAyMjPLnLqvs9DlNNOJIdCPZl/gIQdF/iRmKMtZE6NITDhmYrYghe3NS++y4UTJ ezd0Tyf1rH/Gq1ioelcTn2ugVP4ySKvc+b2vLh/iBn1RYn4zFQ/8Ct3Xu2Lne/xsDlya6piaCefr SFZ+1JRRobFmJj/mOIPtHqzixVDSt/Dy+/rwyo0YCCDokfHMNOICTpDCBwsFX9OJDrL5Njc2ZGNz V3Tp5+es9HgR8942zwcIDxqChA+GGoiCg4OGjY1ZjpBZk5SVlpeYmZqbnJ2en6ChoqMPk6WYpamS qqmOhYiIKLIzErUSB7j/AQEvEAcQEE0QAQsLw8MQCxBSQcTLUs0Ly8hSz9TRIVIhxMghEC+83t8Q TOMuJL/hJOZM7Osy7/AkMlUyLi5VNPb2Mj4k/lUkUPhTZ44Eu4MQsGXLpq1bt18hQpBD9wtcMmIp Mi6wkTEFgowfPxIgtkBbQiYuUKakIUMDlJeToMy40uTKFQk3JVSZMXNGlSs8q7jgKYEWUFrfkt6s IgsFrEWKCDFyVagRVKqGIJ1CNaqr169gw4odS6nVqrOtsDqCJVAWCQkvJPj75gKuOF4BhOnKm9eb Lr0kj/VF98IFRIreEIN7aNhFYX8SUh5UyUSdP32TXcg4CA+gvl870IUo/4yYJDIIQYKMJBZk76/B wkjKJmljQQpmzGaTjPiLST0aNIzIgGIE5sufB5q8sOniyvJvN6805zn0qFHnzpPybOo0kXepVbFC vfpIFdnz6NOrXy9qqymtatdKRRTwLa64hb/B9bW3mLEAQYggQmtBCNDaAqolGMRHCJpGzDDJnHZR McR080xFFYkDgWGI6VPQQJbBI5k8BKXES2gYgvPaNsg0KACCuT044Ta6YWRDEBnhyMxIq5nWG0pM sGREccW9BMVyNF1xAHTNLacTUEyhsNMMKFDJFC1V/DQUlU3BcohV4bkynpiEvOcee2imqeaamZh3 JivwxacWLADZdVldS/++cMBee+75DYR5+UdhAE38l1cwhxaDYV95WUROQ0yA881bvegJAVy22EJC XHOBWJhjj6mT1KI3BHDDDQKUmqqpAuzVH1/oQOigbMzUhmAKJOFIgK0mjZOZkD4YaeRyNT1Xl34v bLcdd8zKEmWWzH4HJiNTyYnVWZKwqe223HLLirVxRkXfZXTpqacvuPQZwJ66tBqAu6oK4O6LsgKz 4i6x6SIohL8oipcwiClGGEXk2IPQweP0prCrrqam72yAxlaSrLJR3OBtOXqk0W4KH+TEOz4UCUUW R2KHXZQ+9cQTCVx2qQF3Lzf7lLRfhmktVdh2q/POPIdyZiVwXquVS6//aCDDQBXhueQthRa6l7yl xtvqqXsxYwyFsbqKoL4HbvNMhHo1ys1pipHDjq9nmz1R2ghJFALFqNFK4dwRltQi3XxRfBtre+so 20M/QrCDby0Fa9xP2DnZ1Aws71Rls90pMrO05Mm5ys1qZdvz5pzvfEp55qGF8+ViakDPQKAuqfo3 TTOs14FWP5wrjRNXbXtr6DSIoMQP66uXML54k+59L6wbjgSIMUoRw60B+G7sARDwIgFWF9P11YHO HaNHst0Yo0NoB8mSSyMbaRPiSV1ZFJXsyzz5++LeLDrOmGve+f34pxm6Ja7AR7p8koPFQOJyi1oc 4BauCsbrtkYgAw0j/zfMaNEyGJgaAm1NF7hBzesIJCtYLQ9gvwgGL5rQDV6o6IPauxpuYLeAFzWo gnQblGCwF6NbdQRHf0PHQewhJPIJCydAsYniZsGTlrWsO08BD/yqRT8zae5bUBxd/qZIxfO8CWim +Nz/5hNAoxntLW/JlLnWFQAEPu1d7XoggKahDJJIwRgQBFBqdqfB/wijeUFQxjguMrZk8AJwCQFf wigiBT0Wshs1ms0Eg+AMRirDGvpyzdWstxcC3AaHMUqIDtH2seCI7CXLmdJM4jKlKhWRWVWIRRKv Mp7KNRGL/XuPLGdZxVra0iupgMIDXrLLb22RKt9JRJayBCJPqUgcDf9jnhwxWMFmwhCGtEpNi/LW vEjm60F/0UWhFqCc2CjwNflaI4FyAyAYVa+Z1AsQAmToKoC9KoYYyZjuKtSNg0hEBsCRgchIVpOZ RCdZtAio47rkspkpMYBRyZybsgKnS+zvlhCNqCdKISyXxAkt2QLml2AxD2L6AwVHG0gtkjJSZHoQ jdU80F8KpMw8JiOPeVTjMl2zJ//Qi2FOI1QwmuCf1+TNdi2k0ItwowseEeCoSNVaJP0DK4bJDmO5 kVBvDNMOlvhmn1CwiVavsJMscZWIsyjo5F4RPy8xMSv869/P7KdFibr1rZUQFi8/Rz+G1myjqszS POZBAoAMEFMIXBL/w/Z0Knm5Sl4Fkpf15tggOTrTmSKYafReND1TESCbEevdq+L4Qt1AkBgCoJ6B qmfHnuYNYrnqyG2cUaEI7dAJvnEBSwxHshcUyyY+MeUR2ycLVY6ViYswK7gmMZWcORFobYWrciGq S0M0NxJpiVO1WvmUVGbJdAJBXV839Y2l4SUvCCxVLsg43gemdKXOZCZlBxTaAi1Aei18F/UwaM1X bfadc6ye7uY4PRj9p6cojKTWZBQNl27jIWp7Rz6LQ4msNqEm0rlOEZcVFCQa1JXeYaUrHxGucJmF f2VxohbXutwSr0mhDJ3ftLo4M4D4dRZyicymvGEXDfFCsJLsUxP2//SaDDo1nPStIALUyQwHVk20 TEUjfeEY5KoZyF0cdJ576QtgcAYDXRICW7+OITE9ri3BhBtSkWKCJK0apSfWIQqVggse8dTsrME9 axOTm9YQP5HEJs7ziS/K4bJAd6Pz8a3pZCAQCTRFpJyCTI2Tgp9dFI8/vfhLrsiIuycHKEDsfZcI EDAgAXU6nU+WXoFEa7WjmvPSAzJnJJtnIAQNNb+jVVRfRDgqEFIINxuhZzT4iGAgweMdRBKWTW4L l62ujykDRaic14JhZcuvoXbeSnLRqudqa2va9vNzWjIcaIC4pS2Fzi6INNCpTRWTu4zWE6aSt4vy nrFV8pLeu4JKr/8nC5WpQZ33SNoFw2GM1l3OK6d748tSQ1HEhJiqdWlEA0hNJsxsmtnMZoYkrCwY YavYwUkRoRQULl34ZsvG613VKsU6s9V/m3APnq3N8k+MWBOtGNPkUrkImkvJLX01HYhGeu50lzQu 7L5F2GSkwvw6jKUJEsFoUzMSyr6XACLYd9KnTK/mDSrKc7PvXxToi1H9q18lKUlEFoCEiISg7Ah+ AUok/utPkgzjoUxzhZ31MoNG4peYG/mzQYzth7b87+xpaNDSQtY4G54EsfCrP4xGD72ebh5GO9rR YlwfkcLFMTS+xXdd59SbtoayTA8twIUKoMtisLEC/qlSq2k75YX/MEOJcXggNWn20fDGGzt4QWh2 INu2UxwmFi/zjrk6k5/8JLfcYUoiwmSmvDtfoQ4VMd+PS8tsA/76bYol33dZuVW2mE6Kt+52EZFK kA56XIb+qEjNYQ4C3iJ47OKTMudVoCK3kHrUo/d/VFo1RQHGqQxDSZLEKHfRdSb0An7UL7XXBDsQ AjvwgLznArundprhSSEjVzFxPlvFE7hlfDMwFMqXYVeRRc83J8+HUb6UYijYfBiFfS4IcxPlYcv2 PuQ2TIhHczSICFDAeNulVwOheGGUcOfiKvHXLjflb64WX/SGZPqWb/0BcAEHQo3SeknmQbV2Y7lD EWPnEBERGg6o/xL6kA8swRIvMWYNVmYHoIE7QXw3gXzwUz9mkXcqdneEh4JBk1FP5D9+94J8uIfR B3Jk9QAtQR96lYMP4AM+MIjk52Le5lH/IEYjlS5Cxy5FCIABCIUBiFma6BfhwBfgAIBSCAzpFg4H JxovMBoPKIEeYg9CUYH4RHH71GC4VXxVYhNP0hz3gGwwQy02Q22oMFx0NTpqhXfB6GGDN2Irx4fK CGLECGiGJyV0koOIgIiMhwiK+G0fZUqG9nOOMWM5ZokAmGTFcFky9Ds0lRQH9C8DiFnFkxheF3uE gSIVkXuCQ1UokSU0gA/0EDKIWHFxNR3ss4ZIUnzJgmxR4hSlY/9XxuVQHNZnXHGMEGlX0HU5IUZ4 vXSRurSMGplyJDctXiI5NGdd0uhFT9ESyDaI3oZzE5Z+mvcX3fU7/AGORZhT7aQLPkdSY1Q8PwVC JhQOSQEqmCc4FPiTqriKYbiPiHiB/lgJy+FPHOgkOwGCWQIXUbJ88TORyZhRDhl91SdicjhncqJL RrKVG7mMdWiR5DFzezVMpgMLuiSN3UEP2LVzmWJAw7MncLEulsJjREiJ68Jj6OKSjBZjCWcXmggo Npknoqh7jOYN9vAp3VgQrZiLrJiP+ZiUhmMkJGMJR+IkR7GGGgctUfkWvbVK4JKMWQmDd2gtzWWM zyeW2leWG/n/UM7IYrEAeR/nfYYHftxRH4yDAiVlmHmRJ3sZaX0SDnmCLge0JL/gXbWwXWGEHyaE L6qXIQf4k5BplHXRV0IxTPmoj8NEjf2YkXF1hrcVJVylEzphJW8BLU5hYSFXHtZnRbRUgvbpfLKp jPvDbIdgeD7YeIo4Jh45czV4OlLCFOppC+LgJ+ZiLsR5LqoDic+pKXUiF5ZXUi5pk4NhgHeRHx7y AkdjDu/AncMEnj4wW4hIA4kYLJmpCVAQGQnHOKIJnFHyUdglVpWjh6CDZySWmnVmOdMnbdo2h851 kZmTn53zM77YHiZYXXRSmnIWZwFEjfzAfeTWFvVBQO0oKfqR/45Chyx2EaEEhG7/8INA+BY9OYro YJTtYA8k8mv7yA/6NCQhMyT6NKfEIRy/Vz6byZkBUSWZMlC9KRfv2VsWVlZ6t6SeY2eMunKr6WHS FZtI6i0oh0VB6prxsZtPAW4hSDTB9BSI1xKIV5I1Wh8K6nXdpW6NmZw46X5a+pxYKm4DhJO14Bj6 YBluyn6/xhK/5gNImZTCETJCUiR6SqyaOTINRjJ95RMk1TKGJguwenPvWXe5aZWgwzmoOZ/HBW0O xUpkOalV5EsdFoxkElzDdKAvM4gApGGR5wNf9A4HqWjomG7oqHniIISAVZeE+lG1AJwCcabPySmR 4aZ6JXm/Fv9xLcEPSckPRgCsUICIwfZJboesl1A+ciGaXkUUOxEQOgGtf2qoScRFKFZLPopLZKKo 4Iom0WWpf0iRFulmk8OdASGSAcpt5hpS8Dqi7ukWkUhAoGIuP9eqmFIXHwJu0AqcmWIZILKKSksC LFGw8gAPDUsc/NiwDRssU6uUF/hJcnWsmPCiRYFsVrKz/jqzL3CQ0xqy1wJFKWs5JZuy6PFh09eM GlUV1UVQZqVhjrCDh5hK7qoBvtqbhZavREuYI3V5MPoW5nCxIHJzlSdushqi7Fci5pAlviqnsLCn XSssWIuB/kixfLoJ3EmtRIS2f0qajwOlNCOfdwiu8gO3auL/JpJAsarJZxJZOjN3oGyptkY6FUbD bIeGc9EpY43LXR9ybmZaedDJfo9xqyG1tAVRONMIuEailJu5uZtLMuVDHBUXupvgniHoLIaafDHj MvDZi7EppGZJrpIKu1a0ts6lFRRLNPepqdVFTOAmXIBLjdKYiDObXQDBONFZTMBZH26qtC62XW3x vAERmbxgMJNbEPfoppAHsZiJgdebwV3bp9ubCbSLCTbXV3Cxi3VXouVbvqUZJmeFhwupnyj3re6L S7argmeRkfc5J3BZlR8pCM/1JZAwFW+ZeLGgvAQMbsg7utdlXcQEEOQ2QCLqDzgbUvq4V0mZCM/F mTrDFP/r/57vc66biqMJtaMKWYwxXMZj0Qg72MOuIJZdSzRvWTo7aJW7qXzT+m1y8ZujuwhxnLcm +Q7UOpc7d25Gq7s9mMQlKryQgaZxQcElUg8kcLkB+hKDIJZ92mAbzKcfHBb1IZo5eF0z4z52J8bi qq1mXMouN7vxAQnNRcm99Ma+G8Z1OzndIa31kcIAhLv82xTQon7QqX7P+qclSqJsqcQ1mriOYaEk cquPTB/zYAQ6iMaKmslrosBOgYMXJo1oW1BAup+m3M1f8bJr7EN8G8d7HGc+ICdzjIP4W3mhrFE7 2I+L6G09KLMD8ZtU8r8ya8glasiLvMhyccBKS24JC7grvP8V3vuQ6zEQSMRiLGbNX5y2aVkIFNmV 3lzRnQDOViFXVjrQ8MpRMsDDIxnPNYq0m7zENIi+AdSIqXRuhEoLwpvN+9x4qAMqG+Ih5HK81/XR QjO7qizNgpfBX9Ep1ZybtskWoGyt4KGHFr3UnEBnYYnGYjnJBK2DXnLOJmgVNIhzSmyuUnrLtomb 5Kd+v1m2POe4kKMO7UC5xXS81XhXYfFyyHrQomDSNQef+uvQbBHS4cHUfH3R8jFdRe0SNFiz1vgU 7krYsRBWjwPFjD0Q9DG9g6iIYO2k0UjP4lYFcKFdj/emUct+QOIh9ZASCDu1D5uZRmKGo4DBcj3X 74OuSXz/zTU4qnk9Vq/U17adfTfzzjm4V+lqiLfM1dlMIueWSrYZiAEUx0vcEuKGzCKFOi42aDdY D+/ADuCAGcoMD+56ydcrzZ/gtWMxqoKAwORnOjioRKmkiOUtoDt92+w9pDi8v4w32df1Dzg40Cdd BeKpAc4c26fT2P8w3hyVljNDjQ+geONSbpkNRgx8pmhtD4kRKUBSDlGbsIaTS9vN3aDg3WLRxHeS xx2F2JQtaGy2tvnztu2dpHP4fdzpzM6csBMuqtCylpOdt0Ytq70ss378kdMFC38b1iDF0mR6bvdw 099AGRuyIWqXnb2akd6Lyd1dyS4K5XN9J5NryIT2W8El/9t1F2g2U+Ioe+Iljqm460U5bY2hKg8C cTS6G9MhzSxHjL/nba1xJpeRfaA3HrA4iTovUCL5wQtms6YmQsHYPZYd/MEYjsUxAdTleeicoNnz UJq7O5I2x7shxybX+rpgHq6AuEvWJRDUqovf5haePOrXddgk2WIg4le2ELl5KxW83XiOaKF7bqt0 MWOi0udwEQ5U1TEFMSkvPrGrDXxSnqzCzt1OPgqIJxCVe6V0N1bpLTnTepXFRdE8A8OZfj8YDUzg 9z58pXjOotLCTIM7G9PBe6ZyrAiOB3nIK526Lhc3mR+Xsue5njBPHOhRS7Wx+BWZrOHn4Q8PsCmT ++3vs/+DItmWm9rOoswzcrW/mWni1x67kKrt0RjZovpr6nejH2vC3gbjJApGHxsQLs3cxL3bAGuh uT4p+MFdPrmgK692keIrKSHhRsO1mpnoydoJ+77a3z2z9H1zSqzlLSaXJ43Sd7ctYKm+LPvwOrOj MhhA4nuguuxRkCslJJrVwR3q3CHA0JjV5E0Pg0uYg4luwlkpg+mqG/KmmlEZ8JC9Oq/vw/7kmvDc g1YnWArF+rvtk26a8Zn072sVfys5C+tFqyyfSk+pdNufkEfM3071QHjZhywztUyXRVQUhHqxsvw+ F0qcBoQsjMYf12kpJEURkgHzwMa1GszBnHDojH7zoUD/c1Ix3x/PxHd/6r9VP9SHHsbBvURiOu4q CDk+1R95coW/HlF0u8zW4160V5KnxdmFjSWKm5J9OvJ8aOmnfuVXd0hkYXw1vO63H3uJYzSmqn/S oLUuogbLDxhs86GA4caxCe1Pu4cOAWUK4IUozwHR6pfvfSM37bcPCFmCg4SFhocPUA+JUBoyPlUy VQ+QMpaOJJaSi4IPWZ6HoaKjpKWmp6ipqqufi66vsK4aRho+Gre4VSRVuroSJC8SvyTExSQovL2Z ubrGxDPC0RIoxyjIvNa4t7wyxdLfBy8H4eQBAeQv4hIHEukvEC4kLvPxxJJVPlD6+1lQg/qsQvnz 16/g/0CABFHtqoJLkoZIDJVhQ6HhQcWLuChS1HbrVUWLIF8RAhWwUKJEjhqSoCFvni4ZTOxF2rWr 4qebnErq3Mmzp09ErWAp8uRRQyMfkBxxS0azmTNi1KJeo0biVrduxIaR+DUsKleox6pauyZpYVZh wYSxY6duXAAI7Jo0gds2HAR48ywVq0Ix379+B08lHDXYUOBVfMdSrLZrWmKNGjZqA8mRskVcly93 jHUzKMlVRF0NhSIjkQ8XMlhWmffChbvWDF2Z/Em7tu3b//Qt+giLt9VbVTnaauTIlqaHKFwMm6EY WbbIzrhKt7b1G01iusb+QkYsHYRg4aK545r29Wvl6f9cxMQKUUZHKPkQFhZcCKCo+YQGolKcsbl/ yJP1dpFmHA0YC2ewsHLSUSk50g0N6oUAQQitmUePC7x81ElOuHXo4Yel6IMUg4oEZZQsxBV4iy0+ XEKLQzJQo8wMzFkTEV9hHaOVMThKJ81eUEGzXVbjofNCAOm0M5473333zl1QyiOlTKXJsE+J+pGi iFH2/VVQfgllqV+WpjS3zXP93bKRZJZhtBuBcB4oZ4KGfDbbJ7kwQwITFe4A5TvmtYYdb4PYCeKh iNqmjwy0GIHUZos00pst2zCkDXy/uVcWVCjMUIUwNo4F1lbVZWWMNcNIk2SqqJra3QHfwSoOBEjK Cuj/k4BCSWuT87TU6zK1xLdgfoiIyA9CggymjxFXHnJssiE+lo2llGWk5mQf8dbbm25qO2eChp7i iSLw+WCEDBcyMeGELzQRQhMLBLAAhenw4gMnHCaq7749iejgikOZ6JEtcWYb7G/IUUdNjcnIyMtZ X/n4TTTkwBVNVFuJo3GttQYaTjqw2vrkXcHw2ZoL3xFDQyS16KZbfdACBoUR58J3JUE3H0SzXzB/ iQoUGo2FWVGQSVYZpNxCquK3TJOUb2iAaaLJnkxIOGEIC8w7IbwQLCBXegt5Gy6/ZJdNWD7GPUIw 05IGKFSBE42VzNzBPXTqdcaQ18464rAjjVcVh3yk/zqqqnUklG/pCquuI9ejaT6zjAjmzYmca3l8 M/OTG3znMtpssmP+bGZHpGMU2elHIy2Lb0eH1PTrRHXSyoAZferaO3PB24QSARCghBJev+tk3bKZ bfzxpbRY2VCycBtSgLRr1rDQDzHj0KjY0UQxyHDRVavFpRq+zjjkfKMOyBrf9ZbIjfPYUHyYR7qP o/TPLLWj88cn88wtwkSDEYwgSCIMErNSSCtPpKuW0TBjIKZFr3Sq88iBUhTBV7AsIvJo14TkFa+s EeCDCyCA7pogqHi4pyPIS6EKW9EITaVEHydynQS3UT0VaSMZkZGMpSCogYUwpTqyWgetzGGOA6wv Lf8UG187yOc38cCqCUYkojmGGC+SjSxljjshoyLnsn0w4gGds1z9+mEuZi2LZpagQWrUaBQzXsmN 8sEPISTgKTTFsHnRe54MmzenBJYOdpqh1OqYx4j4nGseTKha1hYZQht8EISLnEtrnlM82a3wkoiC 4SU09Tij3HE3pqshApmRodPt0Ib3wFs0bicOKZ7jLuHZW/nIQb4XVGeJRoziAZpAxMPJ6ztK0pUE 6pEhtfVvFrXQRD7GFUYrwS9/OyNNatboORHhz1yYQ5YcCfGCKzxGW2JroG8yA8gD/dFb6NQMKGmn IqoAA1YcJEAILSCER/5Onl+7ggR6ERsOjQ2TAKX/jYhYFAlLIOVecuIh3BhCkR0u0IYPgYhTnOEO 8p3jorDaHvrGMatx8C2XQ5SLFEHaJCveSkosO6GjpCY1o8THEm5kFqNiai5GzRSNZgQFuQ5CJi+J opvMWRo41TlOsTUtnezUY1EhmouNWKoZ7RBpCB9JACFY1QIWeKTXSPiCKjAnQyKJ3UgC6qxtktUw gEmmJGjxKAN1K5RMnZs2TsgRhtzDKcLwRqw86haQbpSW6xgfOuByDiPycpcYDYZivbO4dOzFrpdo IWqsVJyBagJ/mJ0p5ixnU3Nd6Z8lkcsVsrGRNm2rj9/yzLceiK2BiRJuD5HEJXoIDPXJy5EpIAAC /xBgVatqVS4SuEI1kFFBnIjkrIBB7s8YgUzl0dWPTFURBlGQSoTlQhLUfVjelNTLcRAWHbTsm8YM Z5dcEvEGRWQiOpT0sZFBBZmxtZIlmPCIRXGpRfSt5j5Y+gj6/c9z/RANaJ1FCghcAUMaKWUNE/qm phkXtXwEpR5309a57rCYDMlExt4RT90Kgbe9racQfpfPalRmj6GpZEC7pFwticYq+ECY8zYD0Wvs IkbEyBRHMvEw4hbDnUqqqMZaWUu/aax8FR2iK29g3gAc9i1MSlJ66kEMeqCLv5jY5GSxydn52tSM nPXiFz8jVgIX6hC5/RqbhqZg1zEQxaAoZ0IZ+P8eOm/jua89hmLh2bsPipgBQniCEABdzw/KJZbE TWBqB2w8zbWYMP4opGzdMwkVndAilkhpZDY1UezINiUOaUhESZvX19wyl+Zlhz4nJp7uhWykTEYv el0psu+4Jl2JVA9qds0E1CQyE6jBH0u7/D84LutmXHJaZ0xhKKvawGtdRcHqgHPKQMawgWFVrZyn DVfoaMM5nwomV9sFL6r6jgD0DLFVgaeEQwejjnZ8s7aQx4j7sPjRITKKpkgTLEpZpSl2dWhpkbML 4pbl0zcENZCRuLdZOWktHBXiWo5cWI4SMYqunCKU1XeXIZHKGVmehdQ0/LjODdt+2MyZykPHEyH/ XECeWSOhtOvqHoJp46DZYtqDEaRtAWGklAOPm3M69QIaZUwuu/OdEiygBCHAAAZWBXRW0b3VtPAH gpaRTZkRxejkmhXfJkEb2o6jF0tQOTE8po4PFWap7FJ6GS7URt68EVi7gCyw5XHikb2LcSkGwRxV lKKuoJwWW2/l1i9Yz5RQQ/L5+nqyNrVEuTK38md93aeh8HM9290EF6x5nUdx4XDktOxCbb0zDpQe dhh6jMhkCAXiWawGebm7BShB6U0XQrqn7rsF3ICE7KCeDV3XCpxYEjexG2AodAp2VJhmv6Bu0FUk eiq1g8VG3KihFmOLOu3SneGrKlxe0RKe8jY5/+Ou3BXJ/oSWYFTZGIwfOeQ1MX+D4q9llT8MtC5v CgIwoAdP8AQ28C5d1XqbQRxZJykSlG2n909aFwvfVhO9gH02sjftp0FO1m4BcHu/M2JMp3v29EGc Fw5XUCNC81DFZXpdFxABRAoDxH/NJ2AB5FxXYRbFQGXOERbXUD3bZ103RDekIh7jp1jklXdL9FFu 8Urol36HY1LA5A7wZ0KOQA/Algnd4AJqZHYtZVPIRDPMYmzDEjorGAo20AFC0AM9cAEdgE8pUxXV AmcLSHyVdHpnVnwQuE52pRg6OANFxxeJwYdRxUvnxoFL13S5N3W352TAFVxXlzoRpILIV3qiEP9A 99Z8y2d6LYQJVYYuVHhrBWd9xGVXDRJXGYIjt2Q+4WckQuY3tHR+UiQAF4V+jHOBjFNluqYuvZZr 6pFr9KUe/MVJMAVmlLdTlBNpAbEANmADZ8gAF4AAW0VH8UZjqxVW4CKJd6JttRNRNDEDJMCNVZAO SJcOiuhBIRRiu2eIvIduSvd7TXAFJegfqHMtJ5YTByI7dMhsKOEeAbN8nFOJlphvL+JcShFwn2hi 8fg+FQYR0hVRnaYq4DE+sTI45SNxSbiE6WdFs5gxzoAVUqIp8GcPwPiLBnU//YVN7oE/CPGCAfYX PWUITYAENnABT0AEUyBoX5MOdeQ2cchHYmP/XMcHFMkHSnPTC/v0MHTkHVKWlE1wA7qVVVdFT7nX W/SUVbeHdAdAIzRCWvFoNDsUMAiSfDuhbGczRv+YCpRAdjwmCVQIDHujHF1BFv3WEKe0YwBHFQ65 Fg7JcBTDRBaZcUN0Fx2UOE4IDyRAmC3BJxdiQiIpNS1CgzAVeceBkir3JSznLE3gSAAYgIAmgrvE DjXiJkf1OtZYJz1nEdhAE8QUZLQXcxCAdFNFT4QGdSFWVVdFVew4Du6IlWNhgqT1HF2JgNSYL2Y5 QVtHEvmgX2U5nJSgPJGAFB0JCU5hSwAXfQpVKU/FkNMThCTQRLG3UQ3XRBinZH55AFX0J05i/x5t qGFryZG/mBe/6AgrtZgw1SI0xSwG0Sz+CAXIqJkXwACEBkLt5pk1cofbdlyjEGfYyJCoeTutOReM JC8d5mGAxgCy+XS9tZlYNXWLeAVXqZu82RwYtJHUgiIqViwquC0tQ2aFwjnYlJygMVC08G/d0EOd hiESeBztJGoJl2FqoiOnhndL1BZ9w0TrUEQZ93e9BKGMUx7xsJZSMg+EWYOT1nhXUaVbqExX9ouN kj/HEkfOEgJlGIA9MKGbl4hQVHRBVaA8p6KgNWcNJQ+r8Y3ugHQ3mTtTFXUwQKFPt6cwMAWy2Vsf pIgHkJsfmkNaaZ0zkRI6N2BxBjvOkhI84/+iZjkaBgNjT8EjdUNp1WlDAEIdFggNQnJL4CFeR6Je TQaLFsma62eeJYUyf9Irv2KLVmgP8oAuM1FQnKgJBeUgSHFZjEKfnjWMjpYfLxBCALingApC+HSV bKKmWmePxldmKSYLEQEJGXQ7WMNLiwRJH4QAusUAT1CTMBCuU1Cug/YE/ulyvPVISBdc+qRPWakw JsiNGIMxe4FnGoKg0XqH7LQ2dZgsBwODKrQsP0EUxOFp1xARB5Nw0SWP3+apbMkYrWZkr2RRuSSO SwhPV/SEvwA27+crJEerk7ZJGpAXVjiyj3Blu6ZFNzZsX1Y/9ZOfO5CMFwCANflhHyaChib/WsFQ WvhSTmP1rGJlJ+a0DazxAhLiZPECc1uFjASQW+Bak+U6BUngAeU6ruOKrjgrT/LkZIMaXEICDf9B DaCSI48lXdU4tBDYrzinryjxKC8DdgJ7oJ6RIsUkfQUCJ9jiVnVliqSiMN2RJK+GUboUiwIAi7Mm RfHyFoKnK457FyhDD1G6kR0JbPMAISZkZZrAEoqpCzaaDNMUusJGM59THyEQAkjQAR0QgAHoW4WW VVPVtRCQY95SmscFltGauycKSpmGrUhbblyrWx6EAAywW0+gAEkwBVY7tR7QvOX6BHn6YbvVtVB0 aPrUTdshDDUiDaB6iu5XE3dVGuhELjNE/yA9ynhI0wlbAjklYon+qBN4tFSbqiZJY74PwBdq4n3j F0zlUA6FdQM3gKpEJMDnII6wNDLouX7qcTI3SLlSWqUqs2srSwOYgIVvB3AmFAlZKEYw649GsAM7 EAIdgIYRoJm+5a3eGoIaeFgU8bNpi3pAu7tzxYkX0poe5EiOFEIIcAH9SbxTAABJwAFCbLVBzALN a7Xp6lu+g3TwWoIz4I6Eag182ATuumoWaLb8tEATljQ/qAuU4h500nOoJ7elC7/7yke60WCvQEh4 ZL6lhEF7sxV4yT0dhXGBaaQaZw65snGrehd8ghfAYEItMci7pmFW2CIzQX9aiC4sYVBZqP9G/+Vf MAUfv9qPAPEZUBDCqSuTTxABU8CMLre16sh0vENi7RhUGqJty7ao9CjDxTFfMSEP67JIOEwAOJwC vPUEJeABVcsBScACLCDEQpwEVVuuSSyCithNUPzEhIqmwtCO+jQOZzoevaIwQ3eQSsUROBY2NAEp O2eg7htNHfKVvQEY5tstl/EwutCj7xB7RWgrtnWRjDtF54krJdUkreHHiNfAjXeyKzGyJ5urK5tf BtU/YlRGM1WSkskPmLwDTJC6PWACERABChCA/dmMVCUA9iQASvB7g/qORjWtgOSTQasZZscShQkv z/a0u9WMLS2THsABAMDLQgzMvhzMwez/vJ/8n0vMs/k0qIP6bsIAFxzame24JHTUGF3ReiiYEfcQ Ixy5kbVbj8LZYosieWZkGyn2YKCpgG/IOtWjzoHbFnSxXuHVdxhFz0f0DoITKMpxtJdKyOqZmIKM LjfmFFc4yGkUumrkhb/KLCk3mWGiyR0gkxHQvOgKrumawucWgjcwgu7Ywmtquyo6iXjSQ70Gq12T wzawW57dn8c7BbscxDUNzKTNASxAzMsLvZvZ03QKzeSWm8LgAhxavVDUMebxqZ3ih6ejxdnhfQ3c DGBMjRVBvslpP1Izt2Zph+V7EjNWLaZEo8YQKLViPsHEcYw7eI+LwEgJKOkyyIasmHrR/6R0rbnA lhqIlN4XAsmP2VmcMws2Eyn7lyynawOZ6ck16Z/6TWhYdXvmJoK78zV1tKgj8TQHCkqYazJIG0K4 vMPMiK6crLzE7Mu+XMQ4TeE6zdpKLELtFlxAVYLuSEfhFlwWa9tQdJ6fSq9jeyZ383GwUQxDQ5z3 aNUzYwR9jXwQFilJZTp0BdxoUc+3QoRBlj6v4SQlFWXe4RrwAAF8EhO99sB7jWVTI1tUdrkwceWa QNA0kIVS09dqdFCNQAvwsSCVCcJIcAEUEAFEMNEWzYyLXU9TR5U6K4KcV3TZMCelR2aMKguITA/t 4rSO1AEIIOigrQAxbdPAnOiIntq+vP+8flq89uQ1V4C9YPvEF0huh3ZorQklH1N+NJLUsKebFLgV ZEuEtwNyqjMaJ+GiCGGfkeisRZELZ2FLSg4Mr8Fq8DREIeNq6pMrRn4rv+5Y3VHl79eki9eJ9BAT rJGYmW1lXJ5G5wKs7y3mxT2sghACD90Dag4AE13REA7Ku/VhWYUA6ejfIiRCAu6zQku3B6oNELIu 9e1IDg7arHvYQCzMOK3ojM7LACC1iV1o6E5Ckz7p4HjUuCkOUGRRdOpkf9JNRhgMn0KvYYEWbTlM igUkwAKHqy6ph9JHBrND67QNjLFh2m0ebMlqQggxG9axsSSE4vGxUzJRIwfBPGaysfr/FIlJA415 UMqkPI7ShcIiP4YAwiFwAYftATNdwgF4tbKJVbqlW+QOgr13e1sl8DlkE/qKCLhbJy8GCazRNY20 w8TLw+DqyTSt72gfzMPs6Hm6rujeLnB/aOHAVQkvF+yIdL90JLRXfrEEqliZVzJyS59SKh8nI35k EWw8hmf1vj5xzg1bVzShh1thUkE2PBbYDsZ+O5mPlH2sK7eoa1a23vSgRrtGA70GyPSwGr0CE4nU +q7f+j4Ap9N0UAfVKClKvltiGGbeA2suzEqf2E/3n9PbrbzlrekoT8DTBDSCv7ULFC64IFaBuRKS jJ/NuuB6xPie9qW978przK0NcyQU/44CHwyTPve7s4EcPY5Ku7gJX0vRAKrc2402sljDpCR59WMx Xo8c/yHlCwgaGg+CgoQPhIWCMiRVJI+QJC8vEBCTLxKXlxKcnZGQEo+YEi4kpZSXLi+SqaSPpbCm si6wtLZMLlWMt7a0uL20MrQkNFXFNC4yMho+Ms3KGkY+UA/UUIPWWdraUCEhRToURBwcABEm6E8X DOsICBYIBCnu8BbwQgwWBEIE/QtNAJtMqjIIURZEBhFuW8hQm4+HD5VVccEEQggb8hBceMLRAwAO HsmxYMGB5MiSJMklScIhiQcPCqYogMHAXTwCAXO+EHjlyosDOw8EPBCgiRICAZQALP+69IBToESB SjiQ6YqqF1c4zZBgSROmRmBRVCFoCKFZgw3Tql3Ltq3bt3Ddnq1GCIoPI3ijMYMCTZkMI34pCnNB ilIlCAEslZLEitOoTqE+iSURGVSmAxA4UQ4VagYJFGA/hxXtSNenUoxkOOoFifDiR6sbORPUzAcz ZrWNRJtGl/dBtNycOAnRI4KHciCJeJgSYQo+IdCF3KR3sx4/6ASU/FuA89KMgnMfaAPOVjzdRFV8 mGpCwAYCjk8iPHnJcqT9+/ZRsmAJ8uWUJwxAdwECGOUEEFY+7TSJBE0EgJNQDipV1IQ5CeVUJgFQ JZUEWfkkFSVAYbLJY6CNVVZ44sX/peKKLLbYolmGgBfjIYUQVJojoMFWBQqnvPLJZqtAlgljkaw2 iSSFVZJYV6i8oMowtpAgzCw+mgKMLRDsYNFhh4VQERNgJiPMYLmMRYwuytCwzJoPYVNQFlCMt003 IUjRQQTjcKCccRzB8AQM0cHjDnQIRLcPAYUKYQE//TT6D0AuoHBiiipWY5siwli0wAIYacSRAi+F KpJJKvUXqn9TLDeFTDV1YEMK/RgoK2ICNSjhAkooZeCEB9zQxIWXQaBhiD5VqEkmQzoCGwqSFjLX by5GK+20lf6GUCGqLdOmBjKIxWwkkW2iiiSHTbIYIz8+AlmRGpAgyCOqfZKJa6aQ/xILbNkKM5aZ +3LrLrqNsDaMlLYgE4xfqhEEkW21OdOMBnZBQQ3EvFXTEBRM7CDFDxR8VM44RADYZ4AIBMhPoYti dygBi+7DKHfbbfoCs5Nuk9BBDJmXkFlQOLLTpgtcIPR8x3lgEn73RUFO0R6wBIB/NCGQQgftcWdU ThA0UQkqWQfgYAC4BgT2Akw16KvXTqE9iUCYWEjsKCI+1smOith2Fs7U5q23izUzZI3EUBgBuDQP KyMlJKlJFBvi7R4eScKWrfKVbOlydWQmk1iiuWFOSlLLZp6U2NovTroQApeVuAABarJIqfC+BBHi gy5tOsxwNeDBGedC3SDxjQlERP/BQhRPw8QRAwEyAGA8N+2zqD79SIdo843ipN2vEsxAFooLkTfe We/+jBN38BlHTkuknnT+0v0Z558CAEo3oD+6NhhQJVAt1cQ/RR3VT1JgCyBAGtWgrwFEKDwBCtuo MiKBkGIGqgBNiQpBDUrt7YJyoYu0AqcMWoxlNovYS1+mAbhpPCw0rVOWWJT1iBxVKV2O+wRZNKAL gqCLFqV7ARO4lpnLLUZ19zrND61Uuh1q6QVa2mGUskU7bqEpPbRxhsOkAbjASQxO4rliQ5gQAiTY oDhKU1oE+OSn4z1BCBeIjqISFaiMIKp6jVKCr3SFlRk06xAKsRnOLPg9RNBwEpv/Ooqn4nMclbBk JfxZjqk8IJ8xEuEc7JBOodxBALIpRY4GslBOdEU2fwSwk2RDYNlkJZSdZE1BXrnCAa4wg1Z6xlvL OBEGZ7mWCmbBWS4CDEVcsIPSoYaG2dJAMNA0psAMsRE7SqYLVzEM07xGNChIHMAkGC8aMsMRU2oN RX5BEVGsIhJRemYMr4SlEGhpdR50xOxmp6aFNYOKtrnGNSBmxSpWcU452wETkCAF4EVBaQAI6CMV IB+OCC158YgOG/Uxyez0I2X9OEquigIUVjYLPHyUk5x0hp6dBKQfF2DOS5ZWSKWxoJAkZSQj4xOB mACIZNKLaFKuZj+nqBIgN0DK/z9yqoSk4ApXXhtKhWhKSo/yZBJOwUphcCSaGdHyqX6rICFiCTG0 ZNRvMuAiF72xA32i0y9SwoWUcEM4ZehmETYii43gBUyyAAxgpZGSXxpnQxZyq0SFedJV0GmYckkO na9RhSVwcZgdVuJ0IViAN063gzIBQzXFUEZEIiJFiABOd/bcHZw0qg3fIaEDwOMA8QBABHM0En4v XYfJBqVGhTLqtdCzRyXrBwGLTsp7wOEoIfYFEP8RYGgcmYJLVrWqUBXXA/BRnjrW0YP4TdImDs1V TyU01N7+9AYOiqPXrgdA6gJEALaiqFApKiKfsLKVEqDZ9vII1fZKDEbcgsY1dP+Ru2rY5RlgggCY cLHDjO3XF19aopjG1LqxLsM0MFyTLOCqrLkq4sFk+YzhEGcleImCSC883IQ1HAtaoG51iatbetIj g2L44AHxxM1DzpPZe2p2s9vYqhSKMwKlkXRVffpTgNaRxjS6Fo0+TmjLHNqyXAH1gLbNnVp29hsN rPAKAMGVe5AXnycU97gvIYJyiIBjHvMYH4WaHhwdmpSeDgUromwQruAYtuxwx3/hzQlTEJjmik4i QT4JRWmc5b32ztK+PAOmalgjVwDn90uVqEiWymWLzOn3YNyKr21MhCkzwQYsusiR6mIIGsPNZp6K SLApwrTf/xImSJlQTJQioUP/K+3SFIdRXQh+CAts1rDEE2mnZO+Cmwq2OE7AhnFDfHeRDlBAtDYm LZ5Qi1oeJy86JiOUdLBjKH2ozLf7mzPdzIK3nO0MPVWYgSqzxh4bWHk5VoZPfP6D4x4IoQMCug7V xky/iNbvH+T+iYKW4tCIZqen/WbKTANSvyb46lfGWuVjXuktRfTZz7O8FLZo+IrNHTaxiVXs6f4L JsQmWjHmOpeg8wW7GTqRhiZyVzRls2rRfCa+oI5RpLFJ8XQ9E4dB8hGUKPwJX+pQvzr0oOE+uM7b tAkiy5iYPN0UOBJe8elr6XgIQItsDoxAT4+MAAUUQAETNBd5yJt2gGhSk0Kl/7FQ0a42va/nwPV2 e6N7TEQhmFWFBO0kBWBHHk3QqFyDJgpR0Jk3e/q9qd5mR846cYpAhAIB7thbogYHOE4IcAP+GXyU Z5Ozhe6slSqkVyx8fjjE98YX1dimEe2aiCaylnEpLMD1iU2dLxZ7usLKvhS3To0iJGVyKUmqWy+n uKWj1Lh/SfY2VB0EylMPQ8pQZnI/Opc4d04Rzd3eFBKRoomgSBuGPaSCFIPIXkoI9RfrMQv63MHU xWFjkBQPx1MAFPLgvY7nQCdAiHr2aqetMn3UI45k8xWSEh6cNReCgAJ2NBFW8TN4B1M7ZlBoRADw Bh02IFHW4yjagRSTd0n6E/9UOhEQuOI/0iUhuhJRc2QUODFKB/Qr+saCWkECdkQzoXdVo6c38SUj RnIJbKMpiIVxW9KD+qVf+cUlmIZMgmBy1uRWxFRDR6hWuVAMrzF8cxVMiqBC+TIMwsBfpcAEjFEZ lXFMp3EJXNI5kGAaNNQMNSR+4icN2LBi10BFwJZZ+OQ3i4UEFxAB/5QSpqJuyXV/QnBG0OaHNWF/ raVGLrMyscI233FbKAJfzPKIK6QKuJIoPQZmaMQoG/hTSuFQ+2MgR2EUZrYdB5Q1igc2AGeB0yVT nyg2mVRnpaQ1SvUC2kN3D8ZeNThLfBE7fiQKIeAVfWV9irUpGVd7YSJY3pD/OpWxIytUhTYUX65z YGrVVkx0OCYiTe/iOg92epTzCFxYYOkCGpURQ6wmWFvjJGTIRIxgG+gIRZdyF/EkO7wBMVXlYtwg bN2jT97wAyYgWsNjY1o2RiYwRur2h35iMmB3f2nnh4VIiP2GFAf0eYzIbQZ4USjnYYMHeBgZPXCk HbmCE7JCIaBYFB7Jipr0URGSFA2JFBwpcBKVFAc3VJiRVJvwGZR2hEp2ixh0Dck3aL2kWIehNYhF CZvSeEDTeFKAGFySGEtyCaVBizNyYKgXS2tSaZemYZGGLX3hRFQ4O+ACOpiAAp3wE+oyltEXjkQ0 hqtjLnCFTOqxThGBG7gh/wP2NQ1t+BAHcVm7E2xpIQVS0EWglSdK4wHK8TRj9B/pJjLJdUb452PJ Y5CKokbPNm3vEIH+0AQWdUeNeC0PdoSioAoDtJH/1pEFJysIR3AEd2T2cyCMtz8quR1HEYLWg4Kj tAA5xRSZlyFItSBTkT3Bh1G2iJMrMjiXNR7qKHHC8AK9qCSIMTaoswAfhpRLUgnOuTWkUJ0lV4V3 tSOygVacWSKGkwuTZk29tpkhtJlB1Hzo+ThVggrT1wi1gy0KcymJUBfMcC3WgAi/Vo/mtxC0ZwP+ JDzCsz4vgZjq5idkFyAT2FoJiZCuFWb8wADVAxBZIYN4hCIFcUdOxi8zsP8TR3EdcfRv7JErOQFl v1JK+eM2pHmiAVF5trIps8UdM5VdS3FwCKQ/rFiiU/EYYFGLvwmceeNHzmIML6BYYIOUSrIAQZAC QUA2QIOk0HkYzolvqJBeSGgmfqFW24dWNYQvRyiV4omfSvdgVHVgu7BzssA5CzIKuHcuP5I5qRBO i2EjTmSl22MIbyiPVZVidCGH+8kQSFAE/PSXYRSYpUWYXseH8IEPeXeJE8gA8qeoJrN3k/QcJgNH bCMBdKN8mZkIoHcjn7EV4uN4oimioxkQPXGqrcRKUEai+qN4RiUrgUQ/YbM/q8iRADEVOIVTigcV nHCZE1QW1kKDPsoW9tT/PbhDQ7rGS4fVeEaKGECzJGNDNolxJJrACuayZ9aEOMkQjc3IYKphTd86 p/R1HvhZMYUgccUHLywUCRJEk5SxrjbXOrwHO+7JhN8aru2oqVWFYn70XnsqOEZgX26xVV7EfvwY BVumbPAjH82VXJGJPIzZmAtpf2wUHRdwKPygExTpRxZqk9s3GRuKQFbTb6JZZhWySqwUbuEmbj1R o6SpP97FpDrFkTnlkOEVAL4iFDlrUzEZIqHwiP0ij1IlrMPqFnqZRbjjMCVmEacTpR8WrWRDlEsZ CmK4Ob2Ie/sSrrfmZOSpHmXoVtYkd5spnxillQ1WYN6ZI/MyL5iwL8gE/zDjSIb05Tqzo32zQV+0 MSPYgJ97KpH3VI+Ayzvqp35I0APBk4dKU1oqJZBPYAIsxRH4ACjQASjwdjyEOLGSqqhqREmV2QSL yLHfppniyZmSUCxCEUgwY0kgWUpZoT0x+IipWqI35bK7YhRl5pGXlIHTZbvXVaI6+xQh0hWvS2l8 y1lFWy3Gyw0SswgeBjQ2MJ1GGp3QOpSJQbViGLxOAp9dOhbLaHKyU5PkGb7hC6SYEi+MgICPWGGc 4EFg8Tk/lEOdE6epQTsNszAIYzsSY1l0IbR1AabDeTGBCwV/Cqg28ANaVnVPU6gCeYchAx9TEHYw IH8GSRPx44eAEsF7p/93jprB2EE9AfECyngt80kb/UKvMChuDHI1YfOSiadvqupKLMuqUeaJpMmR mhiKAORmOHE2PcUUquQ2G/Kz6tU3b3e8cmEXfyFZzpBF+esvHgYBR8msH7YK5cJo9PJ87GkJOrKu BIFM/7KZyVc3ziK+5Amk12Ccy0AzoJctJbJ9/OK2LASvqFeeeQsRuCOffNu3Z3GfFuO/cQEFTtBV 6mfA/xSgAFUO5qBujAu5G7x3PWagEuuY8ofBZCcEEQxTlsoT29aIBVEjyiJuonRJETJbLEgsO9JK sCtu4oYVr2qas5qaK3k9R3EDtvpmZQNeDaJ4KxiTlsAJkOh252fEKhL/J9zGOyi2DB6WcU3KnNDL JUVZjnvlJHo2Q+qIoWWhfBO3mWdMl518n0KLpzKijqkhV+jrGVGiGUWCQhNhCjk0MM+YLw3jDGU1 lZYlT06XvxOTR8OZlwC8DYBKwIZbyP9EDqQlmPJxqI+bqBgMbWSHdo4aIPFjoJZME49ayYZCSWyH qcoocyjHvUwFCad6U6UpKwxiUxwCwyFNZzJsP7r7KB3ZP2tmwytpFLNaFAsAXjQKvDkqxDS5XkQr zGtBF3hhF3BYT3bBvFtifadTtY72nLGGJThXCm0FCWTsLNfAt1f9Xr6GOwix1TTS1bJDG/P1LSun DN45ce5iaekipuN7/8fnuhfzaF8ygjtafVX8LGyaRXtI8AM8cLiiJVrmkHVV5rio9cBgd8n4YGU1 kX8FqTx899AbbMkPLblhd5COciCYSpHK1yxjgTmXcKo/ISu6AiHEAsMse9oibZq02ls2+prT9WYh uMKp+TVmdgMkunnI4hlUOiM9CtRvUQ0gFNfLOzHtojqoE51+JZSsxyXF+GhPjHtJGEIVCiMizDP8 OrSC4K95PJ+amX24oYyPoyzipE2zIE4SEZW3kY1IHGn6y3QkRDF8jBZxOId9mgVctQOf1QMCnWxj hCdjpACOq26Lqjz/IanxoMEQm3fxN9mUHLlkF8GAyChK0ROvy7UHuP9CY1FeP3GqB1CqLKhvW6HK rtQTCBLaNUzTHImBljp5A9c/M/WSHZ7THNIJZF2Td+PbcAFoJ+Kb4OM5iqEktVeO0pmWijZYP5do n/PFVcix+pq380jMgHMIywsY9zyXYMud7QJWnzEZ8+uN8OJhtbBz9FWcDHMbc1k7l3JfLCbcJ1YQ 1IA3wXbXffrPSPBZwYNsSnN1AdXfDcyHkXTYC05lYKdaIiPoORZ/L0XROha5Ec4PSkGjFO4tdOct YbnKEupRm5ebb2NerWwgh5filYSCoDlmR+FTBneac1aaq2TSc0OTDodROA4Xy+tg8RQ4Z0UjFCcD XAFrm4MJV3EkFef/JSRQ5ISFTrCBcvfqcKCrCPfJDfTkaxHDx0OrmUsHDTeIhGPKLUsnzsuAOLG0 LbxtgPGNn0IrT+Sqx3hj12yxA4FsTjYgDvzIAhjAARggUP0NP6hl6IdN0QSuAAoAdjr2Un8yE1Ym EweK6JSM2NChD/5zAxdyBQiojHTHGaqwqrXysrCoNbBoVKr0w7Rbb/62Zv62gaDuZiJqPyarSTmL cKuUPaGzsb0d62mBYoJz1Bp0l8TN0a7W1M/5i838cRVROjsSSyNsgFMlS3NC136kG/ZM13TZ1fSk lWClOCHW7dKk5a8wMLo3ldxHtitG7tt8XxGzt1kd1308h5vFz3ld/+ddVAQBXcgYkOem9d9PAD8m QGXq9u+R+9DplneHHVwzke9gtyolQFwjQ4gQ5ZAhsuHZ43mO4VGd3okAkTWWkPFCZSAuLfIv6lv0 pl2ubeoFl+pDoUre4RkS772iJ/M508TcW4WgoELly2p9pTWbQwLSKQWJQYy/yEzuUsbUrak3fh7Z LTvasnQGmN3iHF9Tmd3i6Qx8EWmy4Uxyha/oOsYYNdx4ZO7PLk/B6tXFq5dpH7jcUOdIgN9uPw5R EPcEbQ5z3xyohah17xx+76iLrnc0MROFX0aHSf9TAAglU1MwDE8wMINCDEIWCEIEAgFNlAcvEleY Ly9XV5sQlE0hTf8vEC9NoKCUk5tXpKGwoUpNBLVKSgtKtbu8vQsElAS3ucChk01KxzewBweeEjMS JCgoGtQaD9gPD1nd3t/g4eLj5OXmWQ9QUBrs2OwkTEylqS8k9lXuMiT6LvMQ/6Y+LYCwIMiCgQDn DeznggS7bBC1bXNHcVs6idvWUdQgwwfHhxaz+fAo42NJfTKMcBzZToMPKC/ZjSTJEeW+KjJysjvp MpvLljJZqtOwDmbIkOiI+jjK7RwUcVCQINkh1cYPIlGisODAlUMEAGABeIgwxYOHJ1MUKHjyZK0C RHAZMIBxqO5cQ3QVDHrb1kPatXTZ1qWbiBCiu5CQHWvi6ZTjF5b/RFGi5/gVhAOkTsXSxVlYk1+9 hNUSgsBC6F2zTuNatopZpSbOoG2SIKEKtWrtLJ7bzbv3uXQwWVKUwQRCiBAHFzQJYIpElZA77bmQ 8KKfP4ABDjIHaOpfw4b48LXclxvoQ3ZQJqqPeN6jtpYlV8bUCFOdupDrjND82Q4lvvg79TeRex5l RNR9E6VHVDYKepNROhCm9xQ640woznE7hCBVBzxwFQUHGHAwQlgcEEGWWVM8QVZbggE2F1qDwUWY XjCsJYheKeKolgJy4XUIAggY0qNcQCJwGizKIRlLKJq9ttkyuESZiy6i9dJIL7dgieUvujQBpZew HSABLJzQNgMK/9PchhtSvrXpJm8ZrSMeO1WQQBBABGjHnDQy4BQgR/boQ4I/22XH3XbdVWePQzj5 iRN5jVYhqQaSimfReRUBBVE2fn5UlIQRMrWOR0ZAER+AJTXaZ6rx4QRgROrVh016F2kD6q0QWrRO Ot5YGI6v3hwXQoYhFNFhVhwAwJWyAETg7FhTkLXWE4bkwMBbPRJ2l1x1DeKtXITVxZZebRUCo2Do ossAkKElCRoqsIzy2WSwqIKZLLP8Qstpo41mJL+hcZakMLnkEgtmmG0yG21VSKAmbtq8KfHE4HAD nII+oBAeE8d1l91BCVHHZ52LLioBdhBkt90BKae83SYuNLRopP+pfkQnpZKyOqc7PplXXn/uFeXS SJ/O1I59tMpkM0edrrTTfj5tOqt9ojIYIa0PorON1t0AuxtVUklVRA9diQgiWCY626zaEezYFgMX uDXu3ClSC9cgh2X7RAmFvZUWteWi5e0gMDICdwoEpPAvagWHgll2uFBS8CzLTRIAAZfX8stBn+VZ i5GgLU7AlbWYZppqwkyCS56LvXYvbC9EM8Ps1FiKEcW4u2lxOi8ZoR9H8XAcAkDJpbwAZJBBg+by 1NhDWykKX+JyAMwhXw8J1JVcJ6V0VoqzpLf12XSmPsOX80+8C4XRrlirBx9I+SGtzksIzv/pfb0i DdzFuTaVHoX/WfBab6BALAwhoQcj4ACylrWstDkrAmNpm9tYxCJDULBcMkrR4AYHoxyNK0ca9Jbg qIUAtqxLdIzThQ08t7nJ0aI1tMiFAHaBwl1AgoY37BcBLECagBWsFgGQUpTgxYyF0QYa0dBYS9iU uyb65in808CgOCaFf4SAOQuwXBZdJqZpSKNkz1PYyVLxseX8A3qf6OIXF0Up6ZBAZiVDk3Oc06fv 5eQkfloVHXNShZkE5yUTWeKDFuRHDaikPhIyQko6QrRCIvI+9NOfhHCFoKZQqCmWlJjYwnZAIigL Ax8qUQQcyDYJtq0tamHRBa6lomiRixBzuVtZCAc4DgouWn7x/5Zfclm4ITFCCMBEzQpzSADR2WB1 q9sFaGYYmhyWZnSPWNzpbMgLYlCpFkuqBGRgA5tMSMNMSayGbjDpxHKaA2kvuaNt7AQBKYSgisNT GReZIybaYG8G9zSZyUpRPep8onrTEVnJ6IiC+BS0TjRr4/YmVTNXmYQlTbtIhEZylPbpBh3oRFrX Mkq19oEqgLz6xjjF0T91dCOTAgSH16DgBCfs4KUaKkIEOMACFoQyWcrCKbMUYAIFOMunExyXXtRS NxoJhgEiPIQFdzQtn5oll7OcJVpQ9IRVHvWGxGRXNHmRTM95lReLu+booEmaHPYQrMUEGBBxQT3l TOJelpjNJf8CWptpCPKi5swrSbc2Pyl+giAhCALmkrGcLaqRNmj6JvZEVg+GXIc7LUtIQBTWjyPW Q45gjFl1YvbGN3LWnl/ErBL7c8eODAWQVROa+5hiSEX6QCWHXMqBOKq/B1lMfgjaKABzx8mwFYEC AAhlTpOF068ky5QSZOq0okU3HB0iRXTZIFv8gpblemAtfomA4MgSQrOsxRCEqMsigCmEDhRTCBcw K1dDs1Udls5KWzXSIz4XzNL8CzQ/RCYwjmGJZsCOYbexDcRAgle9GjiAKmGH7/QhKRf8YyAHWavl LvHFOjUPBWukTncgIA/JbhgCDhajXDlbsuvpc6CLUpRnPQv/x+U55zkagQjWkrY1re2uflvDq4RA OslK4qfANsbk/0A6zgllcmLDSjISQtCBmTLwQ8xqVlge+Kwqe/eC06ouIZI6CKgyd7ppKQu6ilq3 toS5zNA1TCHKi14rQYK8ac3qWYE5X7FCoobOxGFoLLecPh/jMpTgRDMaAw0BawwFRzmwoi/WO44s +I2bOACEF4A4yr21GZfYxzQW+00NtwxR3IGeKazD6TUGqgou4IcL4hEzJpC4TgyRTmNZzYR9pDon +lGQIVHL4/1dEqP206iwn/LRUC3ox0M+6US0ZlILWSyADnKT116aIZiObaZZqWkCj6s2sYilbRD0 qbPShS7s/9aty2dhS1muuyJya3duZr4ujJ76VByJ8JfoRW80yzrWNxeTXdCkYb8hwcPR3LkXWv3c v5UpJWAQFl6tC5MzZoNhNRGYKYrOq/xksI06USeL2SGAYDHHGuqZgp7Og4wpPF2olAUBUSDnjjyi N5vvSKAh/rgOQoaXHISE+owyq+OcSJIT+gFSkg+anxFGelIbExvauGJKhKDtdCFvFJG+ljbVveEE JBTh61//gQmwTdMogKVERFCAJ78iFgV4ACxMVdF1pwVBFGlQ3R2EVt1OJJgLjOvdaHl3mdUtlg2m iBEXSO8qyfvL0eCbEY9YJcDnS+exLlzgCk+rv3yxOj47af82mbhCbGiHmwFfvMYZz52pFhk8WUfa jNkR7AIEsIAbXNplX3yePy/zD5ZBtlAve4E8brIolORE09gzmT93zx0SfwfFDslNSCKJP27QilZO J/I4MS7Spuf416h3UEi/MaFkdz93NHApTENglSd4wKZa+dBNwcJ2cL9d3G5HEVFPBC1eqnvdf9Mi fQc3U0Vm0FJ3c1dvU+UXcANMHQBMDDA6MEBebEZnj3BCxdSAjOAINlRWAJdW//KBNbQlbGU5/NVf 3XQJpAcxiZZ65mQhFiUDDkY9k0AQimMQmMN7AXAAJtdpKkeDkPVp01MQL9cdw4c9cLQoDkZrrVYc wgJhwxP/hAAxPKx2a3dEFEpBffLDY1A3dSZFDk8XKj42Ukd2H0b2Px1FdUdGMTQANmHTASqyQMhy Uzr1bWoTQc8yLgfoZWahbmQhLWGmXRDEFolnCHIjN3/BXEslGF1mS2xBgVhFXo+wCCdEGj0CZ2+W bx6YeTQ0gtXEZ6CICv3FCZ0gJlcQTqbHRC6oeookA/ahDT4gA/9QWB8TBClgiyK3RS9ATwFgRH81 WQnxT5C1CTOjUBrTKIByE4LCYmdUHc44R5C2ajHDDyoxH7ZifillTruDFJa0hlsXQLjFhdGGOywF NjE1NkTQFVqhjsS1LGEhZfTHd3oxFtl1FvT2VH/IXD6V/y6rdAFjZwIUNFTlthZ+x4jYhS7phYkU 6HeGUwhyQRqJBySMN16QOIlgVSSLIzqbw1aoEIo1KHGdQDvOYXGakmjeuIq/4RKLlBK+YyrFAQoF URApcIsvdxCIo4u7WD2Rdhkm1zLXgSjbYR0NASAO4R4lEUg+sYxJSDL3wJSatiqvsilM1zXfSFLn 133+wzXgd5UnSWz20TXA0YXl5ANtmGTFcgHYphU25SHtiFPEJWU/1ReFx26zdI+01Errlko7YlVr MYiCIS1tQ13kIiQFOYAW9EtP4IAZeBiWiADpVSQUiAgQSGfAlAKkMYnxtUKapzmskyezMAkgB3Jh 0gSYAP8NaXINJdmCKPkmgYQPqJUNdtIMHyMFthgENdlzAfFpO8gc1SNP3AEyByEFPvcPtXYTCLUT fUQgH8ES/DBQ26NQKGESfRQfUWN1VAl1GfdsuxV++QN15QdSVol+L1UVXtcBPeABCoQsCQRKw8Us XvFAzaIXEHRcKEJvUsUWK+JKcecWPLVKQNVURwU3cBORjtkj1HIBD3gBowOJC1pWExhNRXIBGNmg +BZMY7VVjylfIMiZnhNymLMcJUgJIiMBzWCaD5Oa2rmauvM9sFYnxzcbPUlpCCACW1SbWcRPNBhz 80CDPfkPwimc7QQQrmYP57Ez61NRSuMD46MpHiVRTtr/K1DRJtnImlGqW892ZCf5JiPhUku2ZDbQ A+mojvLnIe9Ij2vzdmdqh2CRIveILhHEiEqlVOACI021nwcKiW+GmedFoYbQAwIKgUTimGVFiRX6 S4/pCxC6oUaiOGk1OVlUMMdwCgjjDKKXCQ9jejyTY1mqouMAK3SiRw3xD5cTe8kRALZ5qjT4crGX HTxocguAHAQBYbbYcz6Xacf5DnXEM8MhEkNhM+6xE7ixFNvgHpqKNdu5W+UkQNyJO6roRCORIV3q dU8Qptm2lmaXLOkIACaSLGiKrW/HAfTIrfdoFu/GXQfqS0KyCGwRXYdAiYWwb5koTASgmTYQifk2 iXgq/zqWOZmK54CUmTiJupmLehqQkwsqo02vE3pXcBvsgKkYkaKcCifd45Sqhj3G8zEgdzm2SXs1 qTI8CnGiSjxWZBC0OmoSACD9YTNHQWDzISsQginrI6zcl0naaX56BbHmoJ0Qe6XIijtO8KzRagPm iZ7rWFNr2ZZmwa1E4AFLe3ZggZ7gOq5P9UHTAnllBXk9Al1CMIGQeDrTJFbIELa1cEwNyqA5BBrU NF4JmZiKKV+XiXDtEmGe+QvZsQx8Rh2DFpIMi5rSB2QRCycwoROAMo2r5jFtpTkeK3tBIAIG4bEA 0aoZOxDMgRy06nP9UBLy04oFInXQsWNQBI4WJRPXt/8gaJiiOLtoPUsx35dXLaV+0IoEHdBkHpAV UXACLBAidMgVngSP75hT6Cm12fUXJuR3/ZpeDRgkPYKR+qZVK5QltnALsoAMFnALt3BD5oU4KSS3 vBBMgNp486WoaOVVG1mwQeR5pBB6o3cmDKspt7OpfwsVNCGDhPt7n9FCGdtWCGCbbbWb1ONnkQWc KTAQAYwQbPR9rVUqnMtaUrcR0FFkQ+aNNbuK7kuleUVtw8JJC2AD01p2tLsV21YizQKuJHJ26Qi1 9Ehvf6gihrl4kQdMxjskGHmT85onkwO9lEMJs5DD1Csak+MZoQAMngG9w2Rek/mAPYSvAruZaDu3 ocj/TaQ4cWIyO+rbsKipmu/rG0n5RsETM4bLmwehqiaXHQJgEKdak7SnMlv0YEHQAUEQqzYJMg0h EfNzR79qUUGWwJnKuT3WdBUDQBPcRH/cqdj5a6xbbTDVpXAItVuRnot8U0yLrdpaNtQargoogARp CASgoEbygASQoHeGADJMwz0nOZtBvfhiyksyC6wBCzbsXvXKvZW3pxo6go76ma0BCggjemWygi1h G1l3xVisNdogKDLjYC6THIpLhEEwxkQocgZBe6BhKDCnODbQcwP8D/eAKaV1pBHysHe8wFaMleIM nsD8K1m6jRVMba+LBEK7wXOoQPAMZZ7UFcxCBJ60/7RsGbVMOxaEaAj9KKBGIgSa2S6okU2vk02h cAOugMOU4woO3QlLci86TE26IIkEEIEbupnVxEJN/Do12AqnaBsCxr7cV87npBGVQjL9cChiLFgD PMZBMgFAIgDylb/QDM2sw5t3khwzWTyKUgUakYwlAUjYIH4meaUJbMVTSsheE8gG5tR6BQVt2FIW fMFfip7wB88KFCKR3BVhyrROC7XgWhbg+lNud8mSp6HiO8PYNAsHPZoIvQw3sMrL0AkPzRiUKnrc BAvCECUGZ3kWWtP8Ahpd9aGX42eRitfJI8UkGTWnB9WcGkjjoVkg9k/UkydjnDgiENMKkAMFMKOb Tf/GJGu/ARzAwklpM9nTA3E9RNNZ9kA/3GnHthWGRs1ETxcOy1qVqWvSu21OLZV+0FoEUtDObIEV dLieJaK7+Ky7kry0S/uX/KwiEdCPhPgvx9Q5jUPKxyNXIuMJdv3d4B3eV6DQUjw7312a0dAM/oXD qFElAndwGslVkQOa880kkXYJu2xoLPiwkP2+JFEpb3RzjzV7tjl7iDOjQFIADDABE/AEQMIAOYDg IjfhigMkqh2rM4kAIFMyJzFQr9mNFpXU28iN5BeevH3i4uC6VP1STcDOPzAF1Eq76yl/8pzP9+yt JkIEbHGm6Al4hCjLY6WZyjHk8EIZrZDXpzgD4a3/0OGt5OWNCd6NCZRKCQvdGUqQidNEX6JzTUJE tx/KTQhzCs9wBbYxxdYwYFOJ4nvVmlI0KPzkMsvcVpuN4AVQANZSAiUwAQrA4HIxASUQqAjg2ReQ AxI6k4V+zaEGDyFWG/iwKdinbCKOV36bs/2t5i6oztTGBFXRzmGqQFkdBbjb3CBsz/fcLE8VLRBk ImIxd/08OuY1tp5B5PDCCSCNRCtIO0pu11KstzMAPupb3mcyO1D+3ZuxxO917LaAto66GOULG7gc aOgtO3xbHlJZ6So6FJWiMYPixsiBqjA9o7ZZJAWgACWQBCWgAAre4J/NuAjw2fm72Rmu2iATEB02 /2qb0OiXUmMj3qyAbOn+ngW99YaxKwQ94M4dbLugvo4LlNxlo9zOrV1NGxb8TLyPCOuknCeOo02n GO2niALALsVVwNjmrb4aQ/K93uvHOPJ2jdCfkRruzQs3YAvlqwuXkyR8ZgljIkaFRnoNaw3nEc6W /gAJhjNuLqraQcbM/G8I3u4JvuB4nuft/tkWIAIEIAKffaoW3tPNNx04N1nOoe+a+s0JDMjW/u8G VkCcJCzsDIfZppY2BUohotUf0unpaM+PbBYm4lN2eEqAk5jVfMOZ4d0q6DDUgPKys4IBJmDg4/Hl ne2F7/G3EeyN3xiM4QKu0CSyUCXD4Nddkjnzff8MkXoF/5AJ0RDypV96SgT0Zn8pDSspGvYZNDnG QXADBcG4Vb/0QOLnSQAA5q4AMVAAQiACjrDu4R7hA1y58x4QcaypthXpq6u6Zq/mP/ADPVD91l/9 5jmts6uWtAtKazlc2ZpAzl0iTAvjT2UCYxcBPaVcPPKA1awco/AJRIQ8sDHs303yhY/rt17eSQ4I M4IzKIWFhIMoVVeLL1ePBwdNTQEBSgsBC0oEnJeXBJgETZoLC6KUk00HL46RLwdXhFUaKLQaGg+5 uLkPWb6/wMHCw8TFxsG9t1VVJC6srBCVpgicFghBBCII16YBAiLaBQwTMCAlMNtBlZlBQQsp26X/ 7hAvEBClIfYQJCRVhbe8ckF5MDBLwFwGjxXrxTChw4cKgfWKSLGixYvGbBTp0KGIjQ4/bIjs8ISI hygsWERBGQUDyygcWHIYwaEmAJseTBKJkLMnAJMRFAg18eTCBSEXqJWa5OjZCwlXXkV9FIvqFUOC DGHNimiQ10NawRJCIWjqoxep0loKwInApSag4poiJSpAKruSUkFQ9dTfv1q3AvPCSLgwMoPKlimS AG0UgW3b1hEIIiBbEATWxMWAMSFJkhITqFW6JyCIiBwMUmBLkUIe69cp6PHzN2sXw4AGCw4W1jDi bYSGgwsfTrhDjx5PKBB5gvw48ycnV6o88TJl/5QTKmvSXAmTiE4PPT0o4OkhwpSgQhmoP9pBSNtT NyYpabJJiZIb82/khRVLa6Kw/pEl4FgBggVgFWVB9VRaB7hlyidtzRVXJpnMh8per6zyiAQS+FUL YA8ABBxxJC6kiwbMNAJNJo8hoE02C5QmAAJWcFYAOAgUoCMDIFAB2gUiYBJAEKohkMMFl71G5AJB SMGkkxC4wM9fIo74C24THVbRbwRNlGWJYIaJkXdErEQmmSV5J9111K3kEkzWxUTTTTgBAEBPEfCk wBMmKODBE0+ox8AFgqqHgBCIduJWNe51Yp99+M3H3xWTxvKfWF15lemlhUgwwwsEXgFVXvF5Qv8f J3NBuMAkq6LSqiSvNBWLh4DZhpuYYeoCBYrLSOkCY/REY1o24Iggo2k66ghOBsUmK46LnAzbTjqs IQBPa6VAwIQ9T80GIpYJ9WbMl74ZdCuu6KZrDA9ksnsmcz1MQYRK0p1wAgYqvcldTNrdBJNNHAAV wZ1B5ZkeoQhcsCeggiJqAQGNcoLoxBY8rIQFljx6ww2PcPohLVqBDODItgRmsiGUqnKAEpbQpUmF D9rFll032NXEXk1MpaAEivRTm63mkquuYQElVoUz3R4wpAiTmSZCO5WYloGy4CRrRbLq6Ziji5cl DNk2ObAWhD4QSNCP2bUdFC64Ejkkrm8HvT3/9NxicrfSCECYuZya9K5kL3f01hQFTSMQ8ROdhkcA FJ8K7GSwCSYcaVQOQinAwKFTTKFeoEIcygCgMKg38ehCVHyxfXlZNUNVVlGl6eqvj1zrIRLklUp9 D5ayCSeZjFLqKak8JQhUMyjmj2BxW0m3RQz54IMyMvgsAbeseAOOAAIMuY6MIlxt7DcZXH1jATGA AIOzT2tDJLalLKCPlPzwugzyWUARbv1dNqT//b4I3X/QEFmeAHFVuBWciV0e4AFyYmI3v2GAOm+a CUwGV5OZ8MtwOXHcwHaiAMgZ5YNPMM+eGKCAzIXuCTAglBDUAwMUrnCFMIBB6SZ2MQvYRxWq/1td 63bourJ4hWdjMZkyykIp21kCLpoAhQBCMTMCVAgve9GQggThl5IBTW4D3BIUZHALGSyjCsB6yvQC AA51UCZ7lQCfs74hgmRZoAAgSAIVzic+HaHmNTZon/u45QIpJQYXGiiIbro0kELmr20KuY25BtIb /2XxkRUZAQ8mOUkKUOA4yqEAu6LwgQ/Y64HUgSAFR7ASC9LpJokjAgd+oridQE4BkjPSBZ6wsBKW YAqAmoLlBNVCE8ZQhjEknQWEcDG3NCE+VDkAMmHBsfioTBXQjMRZZMUzAHnlCmmZhMycWBeWtYwt LINmE1gxTsYcgIpUspUjIXkMgYSoi1+sB/+3AqA0b2SPMuuIBhvbeKPsYQ97IihfDMhXACtMoAA5 KIC1SpGJPZItSiQQ4i2MYL+gGTIghmzb/shlyIsi5EsVZadIj2FJTbZLTWXy2wk6aa+W3utuMCHl 4EYAAMIF7CceYGWe0NMnE1zgSIFSjwJa+ATNba6EvxTdL5f6S9KVzlEas48NHwUp+sjHqvPJz4Pq MolVsMJ2qaiZJzAxCgrRZZuosFmsqOKpkFVppBjhBRR8wEUNeJEE04tGJeqZxqit4xU3+EYBmIW9 NGIvAzGYQAwSawWDhkYEKXBSCPIRrIdKiYu6MIIPoBBStf3vXBvFUvKS95CQwvW0v+gBBUj/6dKV 2suTK/UkbP/2wFESjqb/MpxuAbDTnfY0PSYYFGoWVigGdG6FTyAdMIXA1MxNIZiPcssmNFGfRRnT mFktFX12t6jdzWUUrSLFDS1EH5uthT5kvUs2vyqqqAzieCY7F2oT+QDn0VUGdyVBPSgUCXvSs68Q qGdgMzA1C4igZkr7BgimAAIQ3ChHCE3Ya/b4DH0woY/xC5HzOru2+w2GSx/+aNBGu5v5mhgYK93A ElrAYhysuAUudnEnZ3uCCkQBCC4ZwW1nYtM56VZxve1TBxk3lAvoMqgrNO42YGjc0QVzYkt1aumo YR+JSSxiiuJuW3ZX3Udt1xTgNZVVKWGq/wfJh6vhTEtUZMUItP0DaCf2DWeh5wN+uEAfSjsAh+z5 z+/Rs3aH9XPNAnCDN25GWV1DQAdUIwV6vAB+JEABP5qhrYgGZrO6WWT+SOxhEou2xHE+8RJGvQQX t6DUMB61izcg25ZGoQIPdIm+bGxBmtJ0lbuNAAWCHLkOKmCWQQUd55j8QicjiqlMderDCDDMGc7Q Yu+xbpUtZkPsajnaWT0zJrLqRPTip7zZpEfOqoKCDtEmvusMdf8QMhANOI8Z/KjHVyNRO2/wOXt5 Vlpgv8HGwga2jeZQqGmslYI8ug/DJqtC9Po4Cw1ftJAQ3zRpQUzxuKlb3aWOMao1joMNrP9ath8w gEsxUAEOwJomNsbAnGiq2x/r2jsR6GnkIOdTQAVVdKOjhs4hRrFmN7upFHPYxYjZbIpJldkPW3Z9 pipVCCEKM6CosijmYxeuJhEun1gV8JjyCATpMEXx5ezFh8FZgUD8eTLwgaRlcGe81u6cEmBL9giA Pf0IQD8HyN6+v2GBDGCP2Zpx0Tua9A4ovWBKKAqkXWcjUUJydrM+IAgjwaW23VQc1Oke+/I2oOJS r9jzOMBBAlzseVZ7kgX3shcLYG1yDGCggjap6eFYWTnw1JJQtPz159YzqEMd5SiHmlg1pOrkJzu7 dEWXMvKHyXSmM5uqz29LoqRO3vFKm8v/VA93E5D2DA51qB8i0vwwPsoLQNJCMW9fXSTKcnf97DUS /c1zYNkyNaaBwxoMUGgpQCEPfEB0FvPzToJhfiFSgKO1brdhPx5FWiP2WQpYP+L3SKTWeR/3AabX SazmUjNxE67HASTngTQBMKjEW7plAkHRJxEAKOkxKCQ0KEXRewhwOcZ1FBGjBNP3KESHg0Q3TNXF gxVTMcdng8x3OlTFdFWGO/VxKlS1Xd0FF91lM9BETqyAIL8iC28WfpkXZ5ulDIagDLdAFpJgTrDg KcpEaMq0Mf2FhvTUX95gYBnwGBlgKE7EJHRIh/YAaeAnUQQISJyWG4ykG4+XPLsycQTh/wumFYEC xHkW2HkqxnkZ2FKw9QEssEoj4HquB2uvBzD9Yic0ZSettBOWZAK7RgE092s+9TWegxSjY2XEtAkO 42ymQ0yyiHxdZh+jY4M5WIRUtYvSlVU35CDzAYy9KAqi0D6VkDNoUQ8S4AyqowjfojwR2CW3sCtc pHD+4H0HcIdm0w+v8F/esDH/xVfwl0bGkg0x+CyY4A51iAmycYVCVIC2oU7JE0hy9VEFMWIhxiWI CFexZS9DEHIX2EkG0GotpXIe+HqW+Hold0p2shOGw1smCGQdVIpEsSdJQSgYiRQNs4qyKF2tSFUf 2XRGaIQ22HStSJK7aItT1V2doIQ3IP9dWzYJ0rYqAVAP44SMawYqHVIIafNh++gLz7ML03gL+vUU 2BQAAfYK2IiGynR3dYd39SYA/cVvItB34nA589BQ95Ath9dw5SePQmmABzGIFqc/n5aP8vWTAjRj rUaQJyBynmQAqLdSc4l6lggAH9gvN+VyGhRzfRIoGPk5e2ItRvE1qmgUQtAeEFOSKdmYjtl0kPmY jxmS1SVdWPdlXDaME7Iq1MMYHSMLP4M8+4OIBGFXvBIY/hArkiAp8BcJG/OaNfNP7tdnLtJn38M0 yYIADrUt7aMtLiADnqaHntaHiNFF9OiTcfOAh6iW6dJa/mgvBvCPAelan5SQr2cnglP/E6p0E9yJ QbSHgidYFEZhkQmTmNRgA9TAkTxHmSgZmSnZnpIZn9F1hEpIXbU4dZbJKnjBF4zBIZJGIADBnMVQ SF20LfmwbWZIb/VWD2dob9uDDTKyPe+RI/mnDo72AuyACQcQUT+jCwL4jh4Kj8PJEPIoYvLVCw8o oOqSN3lDHUNwYy4lcp+keqLUgbKHcrEXMDe1UzmRJ0J2ggwQXEZBS4PyGJxgA0e6nhCzpJwgH/IZ KffRmPApnyn5bVmVMRlDXe9xhJfgTLDgCIPwArThjrahov1zX4GxcBAQAu6AlJQQH/rhfutghoQW m2wUNaXhjdfDbDGIAEhpTvZACUhZ/w8Ix4fvhFli6aFgCaLutiu7soWb5SUPgaJmOjdAYGNAkKl5 MwIO8Jae+lqp9zcpp3I3UYmCo0oVhFMmQTBEUVR+YnMegEvAxgAdQACsQQBJQQC1qphMSplRujFX 8JrHdExKEKxUGlWQAilQ+ig25KRH5ItZmplbmh/BGh9jeBZu1pM+GY1u0z9fSBZR4Rj2IQAsE6ew +ZpS6Y0POpX/FZvZwAngoBpkg5QhsEcYFlFf+U4dOoDIs3iH1wwASwJp527PM1dkuYAAtJyVCiY2 VgE19mpAUGOQOJCwdYkkZ4kskIkeGAV2Qic3pap4Mh55wjALEyji6TXUcAFGGiGe0P+EVgWnVoVN wXoFUXof56qscIofG1NVGzMJO7uLp2KfLfMo1NUqwUhedoEWsOAKUOF9glAlIqaWZnkiYOQMqABe DIVPlVAzCNaaNUlGCIBGeOpPdGdgTtQO6oCUSBlg3II285N4wimUKGIIffRodesMfeQCTBBRXGRf ZedR5oI/CruwJdJSQ9BSDiuxniqj95K4LyVrHhi5s6dTicOjOzUeJTtCgGIUn9M5NpCYBICkbmED 13ZDzuSz2ASzPosfqZsfx9RM9IFNPjus2XZV9qEJTgoXWOUJpjIfuAsXxwgNF9pW/wGi+yh5PmAE GqBZ5RcizQBG5EQhUuAk8uCgAcb/hntVCdoQtuqQp9tTGQaGRmgrtvXUlT5TRSBafrQiaZOGIs1g twErsFwkA3OVvM6DC5+VhYQrHA4rcg4bsTHqlpfosLAGE/iSiTbasavEW55oHpmDQjEEwTG0e7+n aLqapEz6HohSHzw7CSkzsyA8s8VarI+QCrL7bTkzuyo8u9z0ssRqCZY5h+FkF62CM1zHCu8LfmIp oAxRdvj4hTpUXlt7WBYgm16Ld3o1JN+AtmmLRkqjDRYgLNwQDdHgPgfgAinCkz9TC1TrD5FGAjPQ n1IyC5H2FBjGcJPGRX9bP5Pnw/q7v4VhAIxruG85kJ/qevdCcgWMsRlLEynxsf1S/7nnUUsPjEIq uLmJiRSPUatbumX5aSE5W8LNdMIyG6y0e7phRR+nC1b3cRddilVOWh83AGbpJTNeRSmqgyDm9lZv jFoEgWlGwEWxHI8I8gwwI6hJJwBFLJV7xmdzyg4D18TGQk+CdQ2XESRqm0+sAD/w1g+MB2/yxgph PDyQxpOSxgwocGd9dGG/CXlQoFnOk5ZwHCacZy+ZSp0CyVKpp8cVMAKYOIn4skoJTCfXqTi85aPj 4Tg116o2lxSD0h6fm6tx0aRc2snKtLquO7Mwi038YTuye0MmLE6qS6y2S7vgNHXto14MEhWVgk7P GLXi92FGoFn4FaldzATuMwqUwP9sVVmVpbEKeBVYMVIJrMAYmaA+lFEsa+gNLoLTa0vFNflo3gKw WCxpeesUxEMIHILU7Is2ywywacdZFGWwGhC4ATTOJCJ6GyDHnhpyM8ZqMhprJkdTsHYvkQt7HYud nsiJrLRrP9FBP/WXH6Ro6mGkjCy6W/q75CVOKyxNSxsJ0IRNtUuzsTtmUAiFZAUBLFNl24V1R+tM m6whq5AzWeGO4hzS9WWadTWwgOTFeBUN2dhQ2PA0WvsUq5BgWsuGacskMzLMaYQN2BAtdGe9jDGF ZSy89jCoTiFGZgOoLyBp2Rw/8evM1lgbnMVI+AOB9tPKWF0MKiB6CfCIX216Iwf/BBWkY5GLkK6n wJy4iZTY1o8zFEIxpIQCgytLDaiyZbUb2EUku3+dTO0N2LKbwimsuoFqF3vxMrdTXvlhHzRzupjc VawQFcs4A5HWodBImiHiRZptV0GpAfwwPF51D0uCCa79Z273y+qa2/gULdkrd5NhjtbgREGNoTcj b9lICcZYWSxe005hZ2kcsNUIX9N4Ud3a3MSBA8+tAtGNgYpogTNWkLDWzrZWEx1YAQq8wAvcsQNz z751uXCtMC8oOhf5dI3sFjYD2KoAFe3F5ahcO+PW3hGdTeuFFiFgXgxFZqWCwprc1yoDf1NR05HG 4DvMnCfy4CbTbu5rCN63prYa/+LXQGh/xiF5tmetCdQs4g1npLZL9HeZwTSzjeg1ScW5/dN7kduI Tg/Z+K8AiwL49emThs08GUhb6MM4XiLPPXoJsASOiIFAvtWudomrtAIDE4Im192dODCbODC8DpG9 FXNH8mu4x7kxeDmccCjoPXVpxhRg+imO4ClcriGoDAthTubDejM3iTPmNQpJeKVROmZdpTKUIit9 8UWWVqZ2fqibbVf45W4QjldfHGmMoUemMMyFRU8Y6qD25k/JXFiUYRn3dLalgexMs9qijQlC8tNK A9T2sAr0UNsPD+N8q3D9MOOKsbyYhtynXiI6ngCjF3qs7oimd4HV2c4AsAKrdf8TJefdtlZT/dLk eeLkTi7sgyLlgDkoiqxzibJlDLUq8p0hUqSa054yEb3XqbAqIaBNSl9W3PWs6OW62y4J0vTsUQF2 6qSipSlEQRnVgQHcbzYDVRzMOY09+KQ0C3A9UBM1aGtv9bTESlwJk/E0TbNEo1FP7ZDwNZmN3JKU co5XzzBp8S7LaWo0ilDqmLbxHB96OMBiIR/ynMfqQR7WJt+JC0kTGHA4q5T5ARPzvXXPIutbfUIo lVPzOGdcxo5lY2XtDBKFp83XHpwWp3AJSYTwKl3FStiydrHYXQUr0o5OxXPx05jgx7srEI5fCtdF dEWUv4JXH8IM3WgKZ2Qa4EP/4gmmDU+j9uAgJIWFIwVQGmhbRtyfI20qDXOK93VP6dvID9Pz4n1k 1M0AP3aVIgqHaQQ7uIiPEToees8NY6EHCAkbgx+FJx8niRgcFSMVFRQrACMAGJYcABwcRACdlJgR JRGjnaMRAKcRCiYKChdPrU8MDBdCFwyyDEIICEIEv79KSk0BSgTETcjKyS/Jzs/PC0oLydO/C8fY zgsBTdLSBNLQyRDOB00vLxJXVS9XM1VVKFUP9fVZ+Pn6+/z9/v8AAT7IMtBePQ0IffhAWA9KFRIo JLyYoaFKRQkSIAgIQiBIEAEiRBQQESRAAIwvAiCwQtKjywACCJi8AVMEAgYj/zl6tMnLJgMEJQNA MBkgncmhENKRQHngBYSk6paSmEoiXToXLkjI0CoDoUWEGnxAGUs2oNmzaNOqXesPRwIcblW0aCFo g6AESwgdMvQIQwVPkypwwMDCEqpMHD5h6lSKsakIJliNahWrsq5ZMGbt2gUsHAIL1whMaxIuHLUA 1NAhS91k2rBhx0pfMwaMG+nWxYIFONbNHDp3wCW4WMcOBQqG9wiyXc68X0EoYTV03dpVutgHD11Y lQCx+wtsHT+L6PhLAFGiBUqUmBCUo0klN25s3FggRwEE9ScoqH8fv/4CP9kUBFDkBbFASdwcmOB5 SUmU0VMQQpDVVlNJB1ZY0P8pBMV1zXXo4YdpuQUXXjgs8VYCdw2yQSEGJGKAJX6NIOMIkkiyCAYj nHLjYoz1iEoEK5gSmQlPsOJBK7jEgplmvdSyCwK/8AJlOK5pU4xtyJTjTWvVJAMObJ2BRyU24mx5 TJfJnJMmcO5gFE88F9qjHIh0ovXAQmMhpJUGD0DXJ0IyOJWSOhhhNENKwPQyZUzmmcSdSupNABRP oMVEAKNBtORSSzbdB6CnUv7ESwoFGijAAqgaqCo3B0Qo1FMvYFWdhXgm5IMReEIxUJ289tqcWy2I SCJcI9qV14onIKvIjADUqGNhmlTSI4+OUWDCBBFQMAEFq0g2yhMXUDbFE1P/4DLLubZw1gsBU4L3 DWrYdFNOq6jRBgxp1tRWmpiyASOMaLsp0VsTN6TZhJpWPTQPCg/wKeeuvkaMT0F9NvxnVwY1rEFV UCHTFEZXEIMqu7VZKsAB3EkQRA4T5JADgSIIYYHMFljA0YFABRCUzjsBJSUvHLELpXutHoAagqgd JZRQGKFA1VRZ8RndVhZqMJZYukIs8dZc7+MWinjdheKIY5tIyIoGfPDiI4/IyJgm1DL2VyaUoFKC JCWgYoIpq8TySitTwJCLLkKcOwsBT3bWmTf6Ji3yyIqT2W/k+1Lp2jgHH3DAFZxLMIPnVcBz3HEO Zzxn13VeLMPqUGe1J1gy/0BIzG4lHXxF0cTExNF4QdgskzrfifCyyyQRIELNFmQgRAYFND9SSDmJ BH0BLuH3s5TnmcTNUEQlBQG9TMcq/gskWEQdV1WsbrXVup6O+vu+ighXCyqoQOz99y+BAyGFYHBC I8ziRCdg5KPBdGJuPrJbj1QxGQWoQgFTGJfgMqMZXdyCFr4QQgd8wQsqzYYb+nKX4o5RJdKIUDbY cM3lXjOOplzBKldwwUPgVDr4dS1jF9IVdKDTjqGoqRsfk0BTznEeEBpPBOZJBwQWgICXeeRSBEBe zUhCxZ20ZyMiuU9IbMIo3pmkaC9AmYPER5WMcId0FXna+gAlg/S1EVd5kv+TDedIJ7fo7y0q0B/Z 5KfHr+FlCSxqUYzqNgpoaWIEBvTRKTqhHvVQQEgOPBJlFPAEGAhuXE8YHAMQJwRfcHKDnRzhqcIR NMlV7hvZMIYxwMG4KIlGNK0ZBjQ4R0vOzcA4NLSYQSZGRxD1aUMWSh8JsEKCqknHKbibXRg1t0yj hfE8NyhQUSA0oByQRADYtIAAkpcBm2xReu3JVEhAACArjIQXOQnHqbTXvXSkrFDkW0qsyge1rgxz QtNRiIaw1r5e+nM5+/vAIMJGrBOd6Gv3qwvalgUAIlCAApVYRGKixcgFPmZI3TIBAyZDJCJVZgoK gAFINXkBdgnBBp086Qj/UbjSlroUHGT6xmhYk6bb0TIdMYQHRCyiS63900MNoU76iOkCCe1pK0VF Fby+KIEvai+ImjvPpVAWVZdcCptYDUlHMiXObzbKIwIA1U54Yp5TuYed39sOobzDnak4bZhQm8rq VicWfhbkp3hNS14+kBewEdSPYxubsASxBEAWggUyIoJDJ4EBxETLAwDwACYWI8AfjcIDqujEkR4o yQeay0m46OQGgeHJ2lTJXi6NYjBeKhpxjOwby1ATM14IuhmIjmG7zOuH7HGheLSxCgr5CgmY8BSl HkVzyDVaUdoqgdkFgCYH+1xGUOWuj4izm1vEYnZLgk2TeAQBIckUeIEm/07wlsQjJrEKVArltHgY Zx7EvUpWHiIDOJKln7rN7z8I69f+gg2hJ7KLfwtriBPgKEgQ7YQmksABD0CWoqRo6I9KsTdVsMKB qgApJUXFC810YF0diJInS8uvlRqjtJ1BbZisAVvUGExzL3zhMN9E49Ldw6f6VUufFuLbYTrlKdrR zo+dYlyitKclafWcEE1iHgIUbMnU/QVMYNJVKIIkJN18XqN45hKuepOrPyMJO8+znaoAL55FjZUM X4e1iiUnx3DOxx39S2fABrYuKNpAYQGZiMQQwQSKdWyDMetgzEZAgKSIgAeI8JhJqkKSrbhAhyXd JAx2ZoNTcmmmFfcvFf+XuF/WSMbAXmwV8rmufMi5a5yb47CKbKwKE4qHBKogEecyrane7Qg3hIKy 2xmNSsRAWUo8QqZuMHk845mPdT+yXSNvRLzo9Bm0r3kgsx4ovWpdb1GhElcZ6NNqv8TxqnWbgDza mc7oBuxA9UwIQVJiBXDLBGQdrFl6QyYVj1FFDsK1Clhk8hYIqEUt2PVhWgScF6AsKeU6s2nRoLZm H9zX5bb0jLQC5x0uuMKMywcn042bLQ25kw9k4AIaYGUHO3ABytPhJeoqbSgD8kgKDPRF5OrsFx/J 3lB4o1yYYLW7VEaiSLq57C5vCrwisV6YVWXtXb8KKoIqxzw73jC7ivv/43g1kUH9KmB0+9cuYOff ihDxIkpwQrKLgdtiDF2KfCuAASbA7N/eTotZCNxJF7hgLXrxYc4s3KWqVK2/ZCo52xi7CVJPU1PU wQ6Oky5jqsZ6WhoinbmuDisuIO5wiJwgpT4l14yaCcGaEJPxykQmtvleAJKbvbISBZvW/WZ4xcsp +9geKNAmb0m2aiCXew9VEAiBfJGTJx1eXfL+5C+duw52dIddRYWAPl8/gKNPTIvQjnEgKEyBWROU 4Ej+lgUlZSFwuzcp4LcQWohDKBobkPYXQlCxv8Y0mlRSgzXdCGPH2sQO96Y6t8hnFg3hAw9gBJbH BC4wV9v2eQoCIQdC/3PI8EWk9wugASXgkTROlwyFsmRYBRpIZF2NAhIgaF3WU14k0UT8ISX2QV4H oms343KIByE7UEwXgicVAwUBmF9mo3Vg03V5xnUpolAqMghpwyJqozYGNgKKBTeMZgr1Bllt12gN RAv+9hOG8wToJyrsQiquJGIEYAO0AR7xt1pkWIbuIjCjIWprYlNtAg9v8n835j456A8bAh3edocl JytMsAMvMDlKgE1KgDzxoTmtEU0zIwQAAiUmEWxEQQxpFVVM5nMW0BLKNh8+d15clSkvM16eMgGR UgAXICm8sIkpwAuS1hEzp1Q7kBRYsRA3tkORN4f/lEcoogI92F8++P+DKeKDhNAAaBNIJ+BuE9UJ Tbho2EeMmDVJlJELG1YLs5BJolJ3PwEM7qc4UDIMn0aGgRcMqSEN9XIaaogO53Bx61BjNnZ8sqgP z3EdYCFM90RySYEaHdYLhFM4MgMfwoA8MvMkitg9SYNcuOZ6X/Rzr3ceOxMEBTABBcANmdI8OWAF TdREOcAAObAfm/gplCYl1LUAxbUAIQBkX1EQGNI+A3Ff6WhDtmiL5aaSAnZuy1cXvqgiDfABDWAA RWiTNmlgOCIYn9CEinZoP9lAlDR+G2Y4N4EuoXJBnJE4JKMvpsVpwSAM0eQNozYwxZAMvmY7V7AO toVqcHiSArgh9eX/XhDhNMwlEUywACmQAybwMhcAAxNQSZYkBDDQSTVTlzjRQTKhPTJxVpozFAsg ZkxlNI0CPq1XPSt4Hztxe+hkH5I2kS6TkSlgA0GwRBwJLx4ZfJg3HYBCgPeVNWOBjmAJIoWFF/WD F11nZ7n4fL4YfTM5kwbwmjiZCP9TAZYgGNtHBJiFCj4plLDAABSEC7lQOAOnKJzhJC4FhmFChhZg L57GYuEADWqyOZ3zDrh0jg4zmgKxY962EN9WHUg1FClALuUCIJZkScCpGTUzC/dxKQtwKtRlIO6J XDCnE6tnc0QBPN61etnTkPiRifhxe5u4iU1EkRSJADOXoL1HXbCC/3laQV8kAEf6ZJLayTX6YyJL YD9eB4S7OIQ0qTY4GaJDQJuKwDYjgCOcIIVCWZFPkAOZhJ6Fg556KTSbZgFQUlrt0lpiQhs8Ggz4 AlvL4Axh5A42ZUu39F5o1FNyJJo5eDUKYXkKiICZR1zSgAAMlgRTgKVJsKUR5GBJ4AGBAxq6FmUd cSpP0RF/2CiBuTM9112D0nr9KTwToJCY6BIzZ3TVMyqpmALAx6AcyYrEBFd7YgQaYF/3gIMVGjF/ pD951Fdbh4sdum69CKJok5MtQptswwhqZ1l841HMSC6DUziasRkp1Qud1HBPKSaSIwyw8Rqv1FrQ 2RsD40ITUVvykP+k55iodIiDwGQcGoCkxvE5V/AUUrBIQyIkOlCRJjAFEYCF14AaTaYgS1MM/KlU L0EUNBGJcLozStOQTiRedxoECnpwpliRb7dvCJqKHEkMwgd1QvYCNGB51oGouhox5maaLpmLtyhg HlqpN4mptOkAJvoIOhktvTkkLipprzA4R2lB/MhwMtNS4KEEqCpTs7E4AwOOzNAMVnFb73UhcBiL iTqAVQOsHPcgT7Ey+iYKovAYsKAAXzoFC9kUTyEyR5ES5hEfG6EzPbGzTgV0kfgRW6YzS5MCCWlN TLcgphFz1ZR3+3YBKZCgHNl5fwoBxAUhTAClq2ME9BoQY8G1Y5H/BV1br/xwmipZbv/1X4O1r2GX NmNXCCAasFHwCA4gsGxjojNSI4wWGUVCJApbigEnKpuxdyOEqq9KWp7Eo2WChtT6DKMGK6VmFUhK Q1JjMecIgKN5ECM3ckaAKxxHAvHKBKIbAgPCAAowAcCZN0mQCVsKplD4pQqAAAugDkIGIT0nH92V KVaAXUArkFyFRUHhdNqDH0+AuuMBEziXvKSSd6UoaSQRnzawkXzKkcQVAlIgutgrujKQtfUltvhA oVlgX50LBWBLtnSYoei7knU2WH7UfM+nNrAJopc6ojZZAXUrsAPgCI2wApRgdpDBt0PyCrfwb5lm dySjl4a7WioW/3jGQAynlQ1LdZm79hSHMkbH8RVgoTFKCnlM+nEiaQ8LAbIVYU/FJQUV6TI5oB6Q xQIsYJuU8L+SZgMnEahLoXr8KR9EIRLmNBKuR5BTtmzTejQtgR95ebzwwhGliMQIGgQGdyBRK2m9 N70h8JEQIAXUi4DYu73cC7bk28VceytzxQS3Uhbm2w+FZbZeRza4OIRDGKIGMKIOEIwjWgEnILB2 e7e22TaVkBj3ZgJ59wp+PMDO2kHrUrhncrimxRosNgzdkIbLYHEcKyjpsDAfC7IaXLmV63GZa4cm hxXuJF1KBJgpcAGSkTd5owksALdpY2AcsG8JGw7pIA8SQRRGc/8DOQcSVgACVmBO4bVFOaFdW5Rz EDAg/WETKVwCCiAEwlsaC7qRC3o0ahm10synljnFTDBcU5qAWpu1NJC9TsAE3bw6YWu+Y5sPUJCh 5WYip+lf8iM2awx9K+KvQ9Ai9vsIOGm3+muik8DH1rIKf6xReUdJzjgLpuh3FChlLYWGTvYM1iAw zpAbQWowqlFmlWzJmMzBmHuS4AYWwNQQUMA6ortzn4EfcKkAJcBgLJzSLMABJdABfDrNs1tGYWQo zARzncLLIAgSz/NN1mWQA6J0zpMBUAKfAzJzpJSKHJF3pkhpUZuuarkAVgwhmZd5w0UdUSq6NEAD 35y9MkDGZez/D2FztmcrWG+hxu3Lxhvgi/HbIi0yx3WMx3frCI4wCZMwCo9kAjpwAXn9xwB3lFMi JR4kZc7pcDAlaowLDQXjDIndFIgnEZI8yTtFuRZ9yZcLlhSjQ2Excq/WYyR3tahhAYNDGR5AGNOX oXLRAkvAAgAQGTnQAZX5Ag/xTraFEYRpEgVgBRPAy7LXPNcUErAXFDDXPLhXH0WsEzInAkgtn02N oJI2zdNsxR8ppcR1zSQHpdnLBFMcAqLrBPWFg1z71Z8ZtkaQziiCzjhgPwiVUO0rhGg9k0g4oolg twYA122Tqf1L13sbGXkduH0dJQ0HOQlyObIKH14CS5iTXAcD/xVANhzEdKtohMEibLkSrsmyeNka ExaTiwJY8XmkQQAM4AElYLpJYNIAkNJ8tWf1Uz9LgCNDAi4cCREgA09OoTNZ1Dxz6jxBnQHM001X hl48mzNHVwD7ART0MsHF5X7putzqGrXAZ1RYob3bq8UHuAPXDc71xcVlzKv9AAVoq5LrXGdlDalo /Ys5WQFv/D+1Sd9w7ReT0L85MiSB/MeE3BlcWB4ydSWJ7RqrNWoEs4gHPqRbOQNlOQ8QLsKYfNEc rI541cH5wFsZciGWZ4BX21wEAAMKAAKN5ECkbVh7tgRzgdosEAEvTc0NshQHcEuxbWQ1juMFwDy3 3Tw8vhHCm/+JRVc9JQG5HMOACEB+SzxzUtB7EUJM053Fq8O9oisFIYAE2q3dVm6A9lWh4+y9W66+ Yj3WgaVueSaTaS2/LRLHccw2d7wCK/AI447HMCLX6J4t3BIZeWdwUIKgK+WNeA4MQHQw0plc05nv ODVr8CABvmoR8vCrhs4QFn25IuvB+1B5bUQDgjql2Gu9I3MBHpAE37fHgwG3AqUiZ/zpG8AB/7uJ t+5MhTIVYTRtvKCQQW0FRxDrz1antK4pG9FEBuKukowqpRiu4irNqELFWBx8Wfvzxf7wUqDsWM3N 3oblAYhfWq7l3+u9S6+hKfnlfuSSbOuhIOoAs0m3aV7ubMP/9Xisqf37UP+7CrSg1Ao3o/TujVyC Gw+t2KMmW8h1MJIcqL418HZv6D01MRRT4b+0ENMxVwYY9EwgBSmbAhe2SDBShGjd5fTzASwgKTMH IUoTTzBO46aHH1kUAwUQA+ak45P4VUZmRaL/47dOPj8myj+h81ErrtT1kVQ8xdeLgIJvvVJQ+7EP zlxbvn0Clry69NLu9E7f5Sl53mjrV2rszlafNrFZ5ljvAANAt2qu5n7RCG0jIwhmYZFhd6kvNCME HhHoDL+Q2F0S9+cAY5uzObTr72UJ4Wh09xGeq3vP6PmlMavD8Kxj1di7RFZMACkACAolAFQYLCwf H4iJSx8b/0uPCUtLLZWNESkLmgtBQQGfLwEvJBKfIgioqAWnBTGtWFQgIEcCnba2IrkIIre3KZ4Q LiQvLxABCwRBKQgpzcrNmiHRIdIQEEwuTNrX1FLeUto0TjJQ5eZZ6Onq6+zt7u/t5fDv5kbnUFn4 5UY4CSoq/hL0A5igYMF+BhNuWLghkYEPBiIacODAQIWLDio4GFCBI8eLF0dUGLFCJMiRIwGsULki QgQKCkzkeHKh5oVUBBAQQEagJ4EmShYoITA0QJOjTQIcQHr0wFKnV15ckXBlBokqM1Bo1Vqlioav YMNqeCCWLFiyD9KqXZvlQdt5cOPKhadWgwwZVe7SoNHVh/8MGjKYhPCmCcGFKQA8AODAgUWjx40+ PJY8aYmKSi2WcCiRQ4qtXws+QTgQilNOBAwQFMjQCoSrIyCwuLaQIVeQXLxw67qNIEhoTswWQBhl TZNv45ugbZKyQNrga8JIMIGwQEoKb9eYyDCynVw+eXPDi4cLXp+58+ftod/376A/ggkFxo+/0EDD RBAjVrB4sqP/FRWsAOBFAqI0wEchBSjSCABQ4BJMJpigAAMM1JSKED5l6FNQQ/V01A1MNfGUUyJS dQBVEqBAAldVoFAFCRp0JdaMZoWF1o1r5ZjWeDz2qM4DUGjgg1934XUXCSRkMx0Eni2Qgg4RLAYA AIdIJln/Q/dhuZAjH/zTngEjmNBBCjZoklMQAnByi2qqFKBaDK/FgAUWMByRg224FVDAnbuccgoq vi3TTArWWBPAccdsQt1yjFITjAt4QTAYNCG4ACk55uWjqY+cpqPPOuVpio+o5kGh3qn2pGoqDSrg ABBAA803H0Nb3teAQ/rpp9GuHg044Ei/EujfSCQBUIFKU64U4RMSXlDhTUJ0gMppORFggU4EBJBh h9kmNSJUUs1Q1VZcxehVWF15pe6MNo7lro5sdSrvXGkJeVdeJNwrQ5LTDXbckxFUgMHAi+DHEJf3 MbJEAhskgFkLH3BgQiY2oHZTENielhoDerKyWisxwBDD/xF6dpLLnXre+WcOnSDAsjPN7GTNC2pq Ql1xm2hS5gJINHfNCy5QZ10KSISAjQzjqGfq0uW4Ne/To4r6nTxU17O0EVibivXWRhT0qqteg72w QrQyFFF9EvV30q/BlnTRlFMKCxKDI9RNAQAMAhCBCXvvHZNNN92Ukw0EpFD4tjxlaFQTxETleIpb tfiii+yuGyNY55p71lc46tiWW047/fTonoIlw5D5nr5vNtRN+uQgiBhQsJWTNARJwlc27A9mjXBw AZkpCN6bANb6JAQquWRgwRExuAanEBNYIcKhtfBWwAR7AtrJMUEkk4xvozCR6CbH5RzCooVa000K HXQgRf8Iet21dTlDnqUW6eFFrX+pSjO9D3pG2AsNsCZArDEhIAYhCHwKsrCyOaI+DZCIRChygv4M QEAmmdtKSsISAv1KJCoBYbHq1iCXEGFvJrhACk3wLMGZyXA5O0bhFnAUGjZhODPAig63ogFyUe4r 50pX5mSUrssFcXP1gtdbRic6/JWjSFA8EuuqM6gnTWA/+CnYY2yXJYfgx2AbwIElIhYBwDkrFakR grNywAAREEAAIsgACJLgPJK5iRe30YWe3GSLZHCiZsrwBPcykTPhSMpmhkwfFX+HHe3cRQOm8oER JAkkSHKuifiDR6nQM7X/1UOS3dmOqf4CGCOMIxxMCKD/JBTonvggpGELYdgD8yPBifCnPwJiWy5R wiC5LYhAxloQg0rSkpa8xAQ6uEAOlGkhQiayCZu4oQ0NNZwruIiHKOhhNoV4OXQBMXPm4iYQ8UIj eO0Ik5mE2pB88BUZhEUGlmIdYXQwAQAQTBFfrAyXEoE7WmrJYZY4ARF60AGbHM5wOUmNG4NwrSMc QQjMiwEDrLALT1RPj70xDAJM44mkfMI4Gg3NcIqBs0LmLHi/GxN0jqYBI7SUO5P0QZCCdL90umNU n7raeTo5SfVI0gellCR3BjjAv3DtL/FZoEFiybBYamkDtazIftR2kQGI5IIB2uDb6va2BKFEbXUT kLFU/xKBYr4kJhGqCU1Q4cxCBsBQ0BypBFaUzR5q00VCzKsRLUc5y7HrK1BIojltmg509ggKfoGU CwADz35RozpBqEkORnACfOKnMpDg5yxvVUuJ3MprY4wCAIigN7/RRAER8EAJPDCBXbDGArA9Qp1c sZpc1FYEBbCCmwrAsRyohgG+9U0gEaCAJ2zUGNa4IUkR2VZBnU87ib2UO7sjSShsZ0iBBR1hQUWq 9QAwklirLgEDaF0BOiGAgBEgYJzgtfckVSEFgSWtGrCBCEZ1V2oDUIEGhIG58dK/CcogSbhKkrK2 ZAR+W+EyDXMTZ0LghjMbjgsk4AKrXFMrYakrEDEHTv9uivOvSBxL5865Xag9gDtEmu5fpCMpJlVH CjmwJyIOsYjKxJdWX6xlfcu2BDG2QAUfOAGCU7iMgjrrAhNQwCrgKAABKC8DQtgjHvHEGj0Bl2NI VkBwOVGAwKFCUdBE5EmDZ5hB/Qwb2jha/ERZJJdmt8TsuEc+euq/fWwtlH7ZCxTTO1TAMEGATGiP PxAiK9011Wz4SRtVLUiSAgWIlyvxajBPIuBHh4SDK7gbBfgmIQn57W/NNFPObsg4YrwAw+TCXLmG aBcWyWhG4PwrWkScoyX2yLBMxIdd2EkCIvFrOswJdgpMwAEMWFZhtWug2epLS1t6llYC8RKQJZYD I6f/MMZTokIGmmwBAXS727rBTQDgmNscKGAC5p7AapPsJjamghk9oSF1oLkz5jCzJil4LjaCNh00 /4WU6dWLX0QcNZvi1LtY687/Em7Uf6sX4H8ehxNokGYm7ADNS11qwxrITxwn2j4SlGpGqgoSBIEE QCYRiaOJdZL+WtrSHyyWgF7iEhRGICYuiYkCzNhgZhByJ4yb64U1XMSvwEhdKsKr5vRaFhE7fda1 xrV4pC4vxPogL16Jp6SkUUVlTskQ+axM2Q4mwRNYxLNnKxtoVbABDJAwQlRSxCE4AIIC0KbbB6gF L/SepwmAQN2AP/cE1F0C7KVCBH/UxDFEwaRDopSR/4nsd3b2nY3A/PvyfpkkkKR2jnTmVKZQCHiq fhpeewD88ovNhhNc4AQmtL7iIcABoRNY6KYemmETzNXaKG3y/jS60cYCSfDr9kv9XhpZw3RJS2CC 1gjlIIXMNAGzWuhztgrH1FLB8IaBmC+sr4iuRVTXq2kEliBtjtYkpjqc33G/GsngAT5QrGCaM50U RADsYYeE2G/XkIc4xOxnFxG38kBMtTvt8QEDgwEnMAn/UBnadgNNNj2fMG61AEe4lVtJNng5oIHX g257wjK+AQqmZihUhFLQYA399gL7VnFpxnoO92/ccTr2IDVO5Cmbgh4veCqglHDoxVh78WepJw4V d/9x2tAP8hVLC6N/XwQRuJI2ioYRJXdVCvJoHGF8jZZVXmUSviIsKZdVdVNWEUBaYZhzOodafKNl ERIT0wc4X0YAD0YMW3EV4hcjV4ECeJF0cuhh4+dOTUd+bKFd6xcXoUMW7BQjLmIp82cDVdQBOUBP xuYYWiQJ+vcIlOhFErQfFYF2OKY7XlIJl/FjKoBZS8ACJSACFrBkvPAJF4WBf1d4OdCBr5gDVrCB OVCLnfBHt0AdzaBMzSAFK5Uk2RFPLehvf/ZnehFU9wAeo6M/35EP4mVUpQRToXd6FLdY6aV6qRcO r+d6IQBfhsYwt7OETdhZ/DFyVAUgVahfubRLALb/IMGiQV+FNwOGLCtxQg9yjy6RhjcnEzRhITeh iJnwVi+QFXgVfnjhFXUYOUVXdH9ViH7oOT6ifhG5FmBhh/DEOoPBHNVxATKWf5JAiUrYf/4XZFIV EZnof1riCAkEiqEYiqI4ijGAANcSBLmFR7dhPYOXk3eEPKgwi7UYXLeIi83QiL+TCc9lKdcwHNqA iIioF0bwZ0QlP6CnjDXYFlazNN2hZ+PFWOhFSq03cdW4lDTgAhfXeoHhek7QjfF1aAuRWV2UHzlW SxdxS4uWQViISyFhl4smfJRGTMNEVsgyWi9RWn2DWmU4IRaCE4YTdH1FRPgSTgVpLkfHkOzChw/Z /34SyX7pVC8+UCN2iIjzVx1URGxghwiQYRC1Q4n34X9OeJJox5qaRSuVMWNyB4kK8Ea8gSaesJsY kzLY41siUIsng24TYALoVos+lwI5sAzJ9Au+WCiIiIIoqCTaQXHbMUDGKD+n0nnoUHCdYh4yVV2I JUpC9UTpJUCXV4zpZXFLuXpDmGbduIkEmDAPIREG84R7OSwd8REHcnK65FUABqB52WgFgiwOshJ0 AzdlpTejBQBmuEIplJyDYjOjcBUWinUvgnXh9E2S41fsUj/t8nTtF4hyATpCUpFVEDSPZR2MyBwx ZggnYJqMkBC3AwmytITOJhFDYAAAGBG05Aic5f+jEXEChkBjkAgDBGADh8Kbt+AnLsOBrziLgPeT z+d8y9SIjUgpzyWdksel8QQpFAdT0Hhd81Me3Nkpm2cO4Rle4CVUDadnXok0evF62VCnrpdmE8cE sEQfDNFU9rElzdaj/WERH9E2I8CfApKO/hlgiwogwUdpj6aOYrUSZLVBxtQSJuAgEKKPEVIhGhWQ EDBXGfoi5nKQdRV+HZoulikWIMo5rop+JEai7YBJ51QvlwNPLNYN1yAF9iQ7SxgJAgFtgGofTZiJ QwCAOypBcLljHbeENDaKDKB41VM924MLwaknUhqld9IMxhkBJbA3WNqIPieaKLgkSbkkLUidaXb/ ntoxDpiSNTdYg/sAen6BWNOYcER1ng6nnmepDTtwcURocUaTlvzUVJr1ceRIVeV4jiQnLMa3cm+j jhfRXxD7X3wJTBsUVm4TICUwqcmCQs1nEwggLcugCcVgKZMph6kGaz/0V3kBYu+iRIUlq+sAOjli Ly8Cnxl5HTxLAQroRR13hGNHgM0mQfZlAMlqn0zYCCOZCAPTGIdABQyAMUwmAhXYC3wSnDlQAq74 gcf5kxEwARHwfBOgAxLaCefjAiQ1HFu3DUwZTwM0VI7klJhypj/iFp8iFzs1U1Y3SauCXgFEQDAI cKmXDRdnNP7KBC+wAxAAsNlAtLXiCMoKcrni/4S7UkH4dXIM+7AVSywi4XIYpDZjFakwh3wqcSwB Qo+quxL5GCHQx2CEZA3CkC4qC34xQk60e7svOyPTJWuX9IdvsSOamZkTCSRBcpCNtSSa4ItMkALG ggFNy39j50CbZQARdLS1xIRKu5q0BL1VwgIesJzT02QCMIG2sAs/ib456YEbGLbhmgMUUJwysZy/ 4Azpkz7nw7zmupSpd3miJ1OYsinf6SnnASSgN0k0MCR7EUDX2cBRuReL5Z4AazSMa3GNKxjcSIkP oTv+ZJJyqXuYu5cD0nsvhxKO+lXvqJcLcromjIXDpHIylzd/iTdwg6louEwiG7vBgCRdkZDgR/9E 4bQulhNrdmE6RRxiSgSINNudzshw/EJSQaCR5xNjD6FFCgOsQvsB9CWS5Hi02iukZWcA/SXGWDQw 6NYJTSZIh7KkrOAyLlOLg3dutIhuxlmLFEAFOTC29BvFnOCLQXA+isQcRmMNFbwNF7dYd5ENcMod TDNncnZYyUivP5WvD/yC55l6rbcDiMueZHnBhxwCXRQZ5NhZIFFB5qg25jggh4qXJayFAdrKwjS6 kTogY7VfJJG6G6S6NLdpaYVvY2KUssvDKvJ9KyJEuNvDt9tNRJzMlml+NGVONRUexCuI7ucDSKIk ungdzRECJsAC0CvGKDm9QlsrCxFBUCWAiXBkK/RVtBL0zQEoMBgwJcvpGao4garYMimzJ27ypIT3 k/UEABr4fFS6nM8Qxcdxri22DZSnJPF0jFB5OoilHjSIDkqcP+YAf/YqUwkcuETVZ6RESiSwemNp uOx5yBZcwSFAAyEQCAAh+QQFIwBaACwAAAAA6gFnAQAH/4AXFwSEBAsLAU0LTYYLhgGQh4pNiS9N EAEvmhAvJCRVVZ4kEqKfJJ2aEi6dp5ovnK6wEAezBweat6e2L7ecvrS7t66uJC6rx6XJyTMSzRJV pKSeqsPAvJoBB5CQNwHd3d7b29rcNwLn3ujc4TfmAubt7+fzFhn2GSLzAiIW+v75/vRZ4JfhSIwY IBJSoZIwYQkQE0pILKFgIgCKFQFc1AhAgYIIEiNMiEDSBMmNJTSG9IjxAoKXOVymQJCiZgpBNRFc yGEyAgUFRACYGGriws2hFyhEMNHDZNGiHVLYsCH10AIpEEJo3RqCiVYkW5nsEOuCiQsaLpy4kOGE iVu3NP+MsKURl64MKHih+DCSt6/fv4ADCx5MuLBfQYQcLWrCeIGSRIkkWOLV5NqVZpcloNCMooqG zxqqdB7t2RQKFCROnx7VrJSzZqleN2N2YLbsZrVvsyaF2hSo379D/yY9+rRo0ah7y2Zd25a2b7Zu RHdO/UC7APOut7Nu3Vu779vBf6cnAmBAeefPWRjYL7t1AQMzHJw/IcaECQknKLivfyLGlPf5F1IJ Ivk0QU8pcUQFAPp55FEOL0X40k025WQTAjn0oANRSyHVQVQdxNQBURd4aFRVVW21AARZhQCBWWWd 5VYITtDAhAxloSXDjjvC5YRcRsglAw0yBBkXXlkAluT/klAwuWQWUEYZZZN9OUnlk1JmqeWWXGqp EwKPOELJY4ZQ0sQtkt2iJmYSzMDMaaBpgAJoxXkWSm+9pSbZC7yhJllrEuTmpjPNHZDZn7c5M4oo pABn3G+fHIcccqolV+mlp/EmW3WcdqpdPO59A1464o0n3j4CwZfdO+4EJEIG7cEX63j7xHdQQgg9 NMETEUUk0UW/AiCSSiJFBFIJJlAwAQUlMBvBghctlQNJCuQQE00IBBFhCkFwa1O3GOrAkwnjkmuU IEOVS5QJOlwAYgpR2bBii1qxaMxaZskgVr52obUWj3LFVeTAQfKFl8FNJonklQxjKeWVXWoJccQU Vxzl/wIvNaIEIoslokglB1TWnARXMNOmZjPM+ZnKn1E6p52q2ZZmKnzu2clrJuNmSzObJZqoJ5UC 94mcwMlJtNGqAS0KasetdvLJfgaaSqfZROcOrdldLWpApp6qXqr9xIqqPxmoV0/ZsLbXzTlrF9AQ CCVQIZGvFvmnEkcl8MSsREotS+AEHGlExQrWRmDt4S9p62233S4+U7lLRaDAukOJOxRJHQqyU1Q4 SbVVVhDscNbob7UlFpGoDymDDzy2XleRcfkARZALO2lxlg/c/rDuvHdpQ4SNEGDmIpBRoiYvaLo5 Q8kpt/koKA8Ip5qcc6pmssnX0IzmND4H2r3PQHcWyv8nSZffNChwFleK+MilhprJ7if9WtXUVY3d O+yYIzarrF7NdXoA5IcAypaeftzDHvVQ1aywYw+3LWQhElkIABYELZSIJCUAKsGyfLWCCaxgcBPU CH9McCDDlehwMglCt3KQAmvNZCY6UVe6ZhgTQTSFXe6KihQqdIisLMBFYoGAC0RnDLS8ZSxwIdKO WMc6gAlsSAUrEl7uQhiF/YUvRthLkx6QOyjljosPgEIYA9O7MkaJEDYgwEwisTGPBUASjAkZBM70 gsvMwFAmuwyc4iQDUMSvae97BjNYkz1XREM3aTqkbHK2tOS4z31ESw36WFa9OAmnaHSCVM+S1j6d ccr/O96Bh3VA5Q9QtgqAbNMHAVNVtljZQ5VHOGBBYnm2V/7DHm+L2wTlNkEOQDBYGhyJCBnUwQjg TXAMImEHGUQBa02OhdYKwuGmmYMJWGsCGyoJ5T6ylHY5BSqC0IFNpPBDq9hrB6EzBhPUwgQjlAVG Z9mRBqDwmb3Mc3ZFAlIWs+gXh5nxnwD9ZxpTQAAwIeKNxWPMxy5xpkTk5jKGcg7PPiEDDfQxNeEr DqbytBtFkSJngPLoIvXEmUcCjTOP2qjKKtmyonlGZZOcJNMstRmJOod+3SmVdwISjlSqih4FnMcq 6THUc6wSgWlbTz2UOstY4mOA9xBCBuD2y4X4EliA/4NWs/jTwV8B7qsbWdB9LrICBl2zWtS05uGs GSAC+eRyTomc5CzHFHfBqyZRCQI5IUBOrdxLdOyEy46UyAS6KLF1e/HBXvKpRS3202EJ411kIyZG Jk0soBUjKAIYkLFELIYSxFOCmRJaqCuM7FCe0IAoLKrS06RsTvFzTc/a1FGPjiKQb1IN+sa3mta+ 1GjApdMlZbA0jM7Uj3qyFPcKVTXpRAd/WEOlKuWx1PVI1x8GXGV7mAqr7t5DPUc4AgioEIPwxkA+ BbgHfqgqwV8CTkEBushYGXSs91JQg8b8KuaUJRJlAU6D1SxWgoS1AsN9c1zjQhdS2mUTo2BlXvO6 1/+91GIMJ7ROdRhmomJZByTZ5QVhlw0oF7PQRYuFGLMUA5NmG8GYG3z2BooQbRxn4dCd5eY1miCB aj3hx+Sgj3rpwyj3NsmzTCVqBnpyEwleq1tKGbd6omFya4EL02QAx1GOfPJsC0WOQp0jp9ddldpu gLaf9m+AsUozfOzxKoEodT1IhbNBENKQ+czHIPeBiK6owIEJxo0KGBjcfRYUTF7+KtAawYAI3+tB sHpQIyuIGwY5AhIJAk6bhhMXT3IQInF+SCo7TIEUQqDXFYXghyx60VroshYLF3aJACuSD8KoASPM c8MgfiyKdzfZXfsaSik4RCECIDw3jskxYxJZyGz/caYr8OnGEoBAM4jrCRnQdLfDWWmkouYMJgtZ Ua1dTShCo7RRZBtTkgoFKIAsHGVEyjMtE/KdjPwaW2RjHKZs1SnPEw+18ZuU2gWgKwcoK6aGdz3h dWrC52znAjj84QWIiFXl9mcq3OdZbMVbShB9X0YHqIMfnOAHNzhWi/PnPh1s5rQ2vaET6QABVBH1 VURd6lSD7kVmIQHrDHsjIrVTL0tUrK3pycSDeTgv/vz17m7Xa6VriWNhIkBCPfYYGTuUMTUOVC34 xAtpR0MUdxIy+VaWJ+W06XpS3iiQL3VJ5PqJfEsuX9Lavb6USrJn60Of2L/NHFxwg23r2LeZ5QGe /7H5Ax4C3190Txm2giP1CNtN+CwPMmcrxMAKBbCCQ6o6t5Tc98+KDmEFwypC/3IV5XPzb6SbSa5p appcISKXqGuyww6MOgTkzL1ebf4KY1SBdfjyOY8US6Qsclh2GkB+lcS4RRI7/fnQdwQhvDF9Y5tJ tNY3U8goMwtpG9K28gbaujtDgos+0rXhph7S1k724JgifKFA8mvFPj5GSUPs3C4u+TmaJ0VKbRvg 8Bz5s2/+AyqCR3hZ02+pZCpsQ0rzoATnAIEIJCsEd0BHIFUJZx8QgQX4EREQATdx40t/Jji6hEwY EHqiF3ImR0xUUAEL0UFUIBIkpCzXVE3WomniIv9O7eIuMTd78nJqWnEVpgY6ISBhqxZP+jIkxbdE tqZY83RPXJQXY9R80Md0VXg7hEBQZGIIbeQxCyVjTQAbciRHmDALOFYz9wd2wbFubChkNMV2K7V+ arduqoUCfTQ+MCN/jrQZrsEoydAbb7IbaugbS6YZPxMoNmZv2YCIVhMPhRcP3vAcpYQezgUezqEd z0ErtAKBQAWB7ZFUZ1MPQnBeGVAAl2cfbnMfmFdNukRBCzFoFid6LuiCHWRNKSESHXRNtciKrXc4 LZQD1ZKD00QhJ1ITVJF7o/ZgfGVzWfECFeYCVXBhQiIwRSeFDzB0I+Z8JFZiV9iNu0YTiXEIkBD/ BAIAWsYTR7xwBaZlKCQjUSKFhmnIPpbUMqrlGX00j/iYj5UEZfBGdpXSJ731j0jGUX9oXJGiDJoR P71VbpLEPYZoCyXDJuuoDVRjb5d4b+FAHZ7UKZdYiQh4ZgDUSmh2Dwm0DyJQACd5kgiADw9XTQsx XvyRefdRTfxhcjZ4kzRJTTUIIY4DIdB0OOKiQ3oVbFKAFVxBL6P2Qy4yFmlBFvqCOnYhJKvjWE4S Rl5EYgaTdN4IJbXTMFyplU6nRmKJCBAgAB6DCHR0Js1mKKbVloy4M7BBM/EYb6HBMn4UGniZj3o5 j1dGhy7jJ0g2b+GmDHniR8OhkHB4ZQdpJ9Pg/1p6hALM4CaH4j21oSeXMZk6Y4be4wy8wJlveVMd 6Yhb4z8RaF1iUzYi4A75EATlcQ75cJIFIADaYgUTAHEFgAAOJwIIIALTJAJWAJTUpEI6mQO8yS0Y Ai4tJE0t9C07VGrI2BVa4RWpVi/2UgyC9RapsyPGt3wKwyVIspXgiVnB5ggEJWyQEDKUQBlxxJbs eJmUGVKH5IcwBW+/FRwVJVx7qZfs05cyVT7np5Bh9yjvllqgwZgvtY/qZyfrNjTxhlIoFZlPcxs1 lSiZIojxiWT+x2Xc8UnnaW+sEkoKBIFKQEraAQn6wA8DEQTYwZoiEADlUR63KQKsuZvlQZw54P9w hyNNwZkD0sSaKqRC3AKkPLqcOdCc5CRzV1Evb/EWLuIioCM6NlIWFmYjO5IXA+NY3LklTbd04dml XZIYBSV14nAJHqMJCnUmtWFHrwVSaZiGPFagLWWfeNmPlhQ90QMad7oyBbqGw0E0ewQpglkpGMWG fhmHMCWH6vcywnFR/QgKaedas8GmrTEKcPka1sMaq7GmSyapuOEzHIkdpQKBlugdowSq5mCik1ge 5Oij5UGjNYohBXCjspqjrMmj0aRC2dKjP8o4jMMtUqBCSWlqQtgVTPAiTRo6TgpEo4OEw/cAHiZF s/NY35klW+qlJ+alUIIAiDBs4zALWHcNXkj/MlK2qeDmhvQ3j/cJp/kJRhrARe2Kn+sXp8HVGXt6 ZYwaoKWhmEjzY3paPf66oGu4pxvVbSiQGbkBbVXzGu6DUruRMmwKbc7jWjlTG5KqiM1lifVDHQco D7tqlia5qqWIo/xhg2rFmzyKqyIQpCukLT/6q4vjsqLGVz3kQ33VFVnxFmXBIkxphDpCMEpIA7Xm FyDmT9yIrUaLhUpQCAIgdZRQCa8Qhs2wns5wKQYpPos6KXSql1mLj2DkrnkaJ+6qp1v7GRXVj2VL j4S6f4NKPuLzbv0ar6ChY3ZiSXR4KQCJma2BHBFaiLcVM7T1UYV4ZBFLAu7IKYRikaeCeA1o/5Ll cQ8A8aKqqkIhC6MOR5txM5OqeDgyuqucu7kqBAHCqVctGwTzYpQ2N2o4twNLaQyqm2pmcUT80jrR CK391DBUWK3gSSVVYllW4p29yzB/wSWGkBgB8BiQcAnXUBmUsX1p+qjz1qigcI95OY9fm594+hl3 aqfYW736iRpnO732SDSQclvhsz6SZL1Wa72JCkmb0X+s0TQf5bdOU2+VahuGe7jN0Q0bmrDjsG+P a3j48CqwiQ9sJqMpeZL4gXmxGquSdnLWgpLWsrkBoEITvAC7uiKky6tBoANGuoyuyyJh0bpkYQyg AyPFikQ5giNT6WF8YUW7eyVFe7QyHDFS5/8YN/AYIVOmXGcJwsC8NZNa6taX5CYaXAu20TO26pvE LCNcFWWHwjFcxvFuerdaPea26kuH76q93NsyK+VjvkHErcUcauKO+Gtv2zEd9SN41zFK7yEQC+dU AQy5A0ybN8qbEIF5EYHHtdlWsxqru3mju7oNNhcEoIvBfMWrtEfILIJqNusVQEREI5yzxfpOa/FO btE6yZeVu/uVYNkluDvDVQgmhLC0BFCONFNHnHALalk1nckZ4zePkaKX2buXswy2+sluwcWXeRmN oWBtmiRJ/NmoOpaP3GunXZvF76rE8BonmHKGt3CeNaMm4sCRFOmA/SMd3HCJqTRLr4QPKvr/o8QJ m7RpcvhRAgo8AVZAm3scTDP5mxDsuRMcCfGsQoYMur/qsvf8Q/l8c2FxyTjiAiTgL5SswpT8L1PJ T33RwlNCrVb5ydjq0Fqqa1NyrVmCAEolAEpgAVLHdXOkvHtyJrWAJo1SKW2HSfRoy9erxcicvWHL l8GMxUTs0uhzh3o3bnMbvcOsoEWs0uzqtSudn0uMj+lDv4yIPKeaDfgDqvYDeNyxNuYgqvjTKYFS eAcEuSrEm755ozI5ARZ3uej8cDFJkyenVuG8qio6joQ8wZx7FaMLAfMCwsxYrE6aL/qyFhZVDKrW I8agwqsDRrobvKAc2GVEAElL2E3QDpTA/wkMhWMaWkev5Tz2ao90Go0ondLtyq62XL1sOKftRp+G udnRSIjPI350StMWdb3JjKdda8wt/dOp/drEPI9+qzPIAwyReD/fkJGHlz+k6lwSRRvOAA+0YkCZ Vx7q3IHofHLknMARBwKYp87X5MBYTcHj+EacW2otW5RY4cEfXKw3S6w3wqzEVaxuEdBm4QO1Nnx6 gdAKM7Sc/CQU7Y2A/Wt/Hd9QUggEAB4MVTPDcJmX2Rx2tEl3SajfW6epzdpZXL3aS7egka7qtqi9 cYdla4emoYZMo5fp+tOzvNoLnqcqDdtbLNRIA5m3URu1HR3scG/CDV3QgVNoXL+4sW9nE/9L6Xzc D8QQWAARY83VFnfcYv2bOAnkFKyiLBLPGPyrjIPkwAq6HuwWkoxzS1rXZ0EC7LSUM+IC9qSdR0dG lFU7gi3YXGgBI3odNHMFVdB1fKKOEJoZ1wNlcaKgGb69CX7ZHO7hl83g+Ai9VibZxMXLzLzTPv21 WszadX7nxkznr/3h8/pSgIpb9LaR+ou43QF44ODbbaKOmL6O0uFJ6SBU9pCBMZDjCrEQor7jNbmB tenjOfmbtImS1/3qjMNCu4cVQcAE2+3kAC0KN6Ivu17XJozrQ1REOEID5ZdPs2NPBSM7EmNZ0erl W8l8mzzD2krKB+VQXCcBInMyj51bJBP/sekDtyxz6IFe5z2NzNgr2/k4SaedrtKbxHRO7vB+zD1d 7vR+7uauy/XHkP5XDRw5mqISifdrWhhLDu4QHxlY4x34QMmt4/zR6r/ZK7E6qyZ7OH4cwbr5cImj LRCCq6++3ThX7MPXOv9SySOvTjsST2ihI0HLfNeYWFZErVlyT1KYu7Tj3jMcPGY5prPgbAnbba0R kMwQ4P4qXEEt74Vu9LF9y5YU1AYe24Me7/H+7lK/2oZ+7x0eJxRFkKOACqvgmVKjoc9BkRjp2y7e iN+h4unwKuvhNjBgBRw46q9o6iP7EhHBAAtsoz0qoxgio7eJITj5Enx/o4BPujN76wB9/58BU1EX xiP/4gOWnC/hPTryJDtj1GFUwo1h1EV4MYVWuZVSSTvfCdHLbt8VoxiPAAlPuwjStiav4Ww4A5nL 8wJMlstFb+heS+5Vb9mKDttgS0/0lNnUm+AjRu7bePRQf/yBzvtcvHfuVgo346n0C/ZmnzUfOg+v ErLzYYqaBxGveONcbepWgJvBNKuhq7I/qpu4iZsLDBMFwACcpZv0HABlqGprUewWpZ16UWuU7xc4 AgghEExMMi5Mhy4yizI+UA+PUFCOWVlQlpCXlpaSnZFZD6CVo6SlpqelUDJOhTJGnaixsrOyKQQL Abm5LxIvEBAHL8IHvRISVzO9L1cSM/8ozjPRKNMoGtXVGtnaD9wa3A/e3t3g5N/Z5ePi4eTi4NrZ PvEaj+fu7Onf+fr7/P3+/u3CCXxXpYoMFFVIKFxIomBBhgpRLJRIEYUEEsYkHNi4McCNjyAFCLgh UiRJESIyZCgQ40iBl0esYJkAYsLMCROo6MTJ0wrPlzkm5CgwVESQo0iPLlgaYMFRBEEQIMghVcTQ oVIJBLkV4NcgJiQUNeIGRYMMDUbiOZqkadIiQiRkEDKEiNEiSaFgyfL0CpMkUaFoCTZl5BATGq40 VVI8uLHgFE11HYBQTNiwri+CvYB2ZTM1adRCT7P27t24e+bW6WtnrtxAdgPVqq7njvb/Otb/0OXe rfv069KmNRgETjzb6GvYRGc8xpHjR5MiAwjIYAWmlRjXsc+caSWHFZ85eeKsHnRCAQQvC1i1mrR9 kFy/jopIcZ7q1JdVgzBd6hUR2Ljx2IWWD0bMw5ZbhrigCCGFHJbgIj4YKEsmm3SyFl6PgBKYY4I9 YAQTrCAmw1+mXAILYxwOhosuvwRgWTESQJCZMMBIMI0xVTQDjWihFVTcbQLVBhxq6LB2zkCl1fZI akIeaQ9trfl2Gm8a8oPbavfc5ho+Qe5z5I/GWTNNNM1opNFGIJ2kkkosyYQFCCDINMF34OGkExU0 4QRCCemZRxRRRh0FQXtOtehee1Uh/0AAfL8QoqCCcTUS4IiXZOJJYPMQqAoJhYjFSIGvVCqKJKHy ZepfJIayYYqoQCKDiIuEWiGrtJqyHy6ZQeAiL8IsZwwvC2XES5mhkVCNQ6Rl42NxTw7ppDpTPtmk cN6UFRCYwFWBZHDP9sbbt16Ci4+3WF4Lm2jSSGNmLiWJIABKbKaHnU/flZcnAzHglO9L4s2ZQw6B JuXUUbk45VRXBQcRsFIIeyXjIAs1wgiBjviQ2IUESmpXK3ZV7AnFdrlyMRSlmohJrYJZDGuseqG4 yV6z1roULrgEo9EyyhCjjIzGWNTrctPkKFpBCCGLLLNJOptbkL91CZvFGsSlrbLCyf+QEHBnYXtl PxoCxo3XolTJ9dJRdrN10l8i95mNY9poTEcjxQ1vBvnG0CdPJdhZApx571lTATidl8G/ACM1KMGG BsBEfFEptRXCuzbqAgRxzZNPpZ6YArUkZjFhxMRpRegIWZOoJSConuiF8mAPyBBCCC4gNqDLba3O 4X6M/rocRrobo9DbGSVzUdFEO4TN1A4RnSyYPlbxbUCtAanbtlmXVj2Y7pRFpaqljO312LxpaY9r 15Sm9pjUNPNMNM6IaVFGOt8g3bsoiVAAeNXRREXe+idBRU356kl1iEK4QyFFF/J5j37ewygaQcAF lRMHKHzgqbIohnTasNhZPneXCC3/olqim4RZYjW7A6Uuc7ZDhVxeB6nQ4SUTmfDBy1JIC5o1ARg1 uhkzZpCQjGDEWBIpk/AyghBrVIEa2joi8hzSEIQUjTjXmNo/thYlKvYDSdf7EmyI9K2wde9rqsqH FysBkCKZTVoESR6P1nijZ6jPje3jkZksQgyOzE9hKFFPARgwARiAwI95qgnfahI4EXxHKP9ajwEP 1RVd6cIXcVGIBgIUlsU9cGJ5ccTE5jHCD6oiZCPMxllC5klHpOWUJCPZWmZIw8JAQBCe2qBZKhYh 1J0oExJipcyaUDPNKIMX03gBRoD5Q4sYs0y7QyLRgtY8bVTkmc4UjkR8ZLYvGWk1/90qW7iIs0XV kGs3XeMeGbn3je8BRmzPm5ayIOKrigRvGiRwhq8O4IzQuO99M4jn+850AOngUQTomUC+9qSTve1P kHMiT3e6M5SXIKV+KDmgAnfhi1+8AIJRO0vrwlJBMpKCSeI40DfKYjUZKEQRkbRaFdIyQkloilQn oqEpWmdJRBikERIkiwfjQSKPyrQUXWnCMIYVPN5NBJ4WAaLblgPM0ZDGice7J0WMNbWnUiSJZhEl t7y1jXo4yUqouaY3xVXOcHbNo4FZ1TjDthsgRZN4D5GACy7CO1+5TXj5nOcNDrBXndl1qT3zFUY6 kosgCMCfKMlfDAbJEpfcr15zEv/KnPR4lfPUT4EECwBmkcKfgkFgAYOA4FkiGCGSlsZaZ5HEIh41 OclBKlIhMwIHOdhTTuhSnDOVhQaYIIgdPOqDnLSaVkf5QVeAUVUuk1kAmqAzm12EiROBiLFsxD5l XGR4RxSNEbMr1SQqp57WGG1JuVlGb1qxN9CbEhXPuT32sjW3owjjkqppTdIYz6TSNRYJ/GrXjbyt OXwFCV8DMJl+RqcXImmuMfIajI40WDpasV+f/me3GOwLfw2lylXMAzBAFQ4lH+4wTnIQBBInZVCN qqhoPShJ2hjiLiOEICEG8UCLipaDjCAVy1CY3HNyyAg04C2kIKiQRpTFg9qKlFj/WCrGtNJwATds cGZwFE99IuQgRNMvUiNyXaoKJ3naKiITlwXmIyokIWJeCFapVdVvuvmKb45Wk30cRty2Sh/jbGuW SpNEZDUkiQdpiH4FW9dh2RFNHiEwYUkynQKU5F0l+QiA/fvfjshPJCl5iYVZgh1+jWeyh4QTqPO0 0MjyL7L9Cgrh/qUwqQhKRsLAqDqKO0oFOexhMvpPWE6Z406EylKLKZFPHdO6yYWgLmJRxDvCwogq KAhCH9zHT6HchGoHgxm8cMEV5iqaiDTPzNPM0Zn7zOYkkoBawonguZUFT/3mt8zcNY0Zz1tGspaz znnW5SnIGV905kNL1+JzmLVR/1W19RBGvSCwoRW9aI8gml2YfrRILCAAilN8JHvdKz8nLQACvGsl GbBJAajT6QKAAAsticGbKKxyONXEJ4D732SBsmpVL7Q7PClcZoV5bpJy6hAvsORnddGwB6K0yCMM 0CssVqoLlegvI1XrvsvS2rqcxQfO80ZCRMuI2DUka6P7KSmgDIEbCmPbwnqB8phYxHdIhOBVpZpB HrIsrfKZzelOSELy+2c01x1J47O34PlNeKkP+2tsDd9rsKm18lGDdw4mcC5IkmjJ87WfIJH8SOaH ko9XPANHCL1KLp5g+fm3uc+5QaYXez8Q2I1uOoHTYv33vze9iSZ/Aw8WBvgSQ/8mlF4ikOwESoCn RAqK50k+aUW9ckCi/wKCQ44UxiyEF7Ev5i2hXUQErXVS6LP22Vf3xrCffEPm7tC6vcrW34uDrNqg 4CzJYx78S5PfLbPdpNjoFr3/LWeyVsmLdvZRiGdW/OBv41Iu2HJE28U7maEL0fFo8mN6EugRAmBH H+ERjDYdE2cBGWABHNiBFxeBldcce4VpIjAvJWdycIJyLRd7LGg3MlEd15EeGWA/VgEoJTYBVuEv DAUwJvYeMqIQPEcCvkB0TfEeNIMLzxcWSgZbaUFKa0EWo1A74zcLrUMXEGNSWgg1RFh1NPZAjuIC k8RJZUV+QmUZOTIsc6VPWHX/EOhGcMDREOqXRcXBTHwWNIIWLBGxZX8WHL1hgAfYRdLWZGLEXveG eMcFLmMFG9niTGo2aGfCLpRHdJgnHQD2HJJ4WASWgYzmgSKxJhkAgSZBeZsncSkBcveze4v1giBA BViAcgVwBKBnBa7XJrKYaRmgMDpnFUMhFN1xg4SCGRLwSP2kWUfIMEqhK7lGZFoIdp9kFxiSXLXV GGbxKJHEhFeHX77QWkGnIMIAFll1bz6GMgEQAuU3LFUwA3PlO/kUd1RDEMShUu/ojlJEEMx0NFVl UlHDd3QlEU2UNOGCJVmSG+Y0eN5TZwbJiO+QNQ9xZhQRWPwkeaZnaZU3eRKp/wskwYkhURIc6IEd 6C6PNj/zc1gmwXnw8hJsYgWgZ3soZwUxcR27Rx0vQSffYRQR9U8lZj8A84sLA4TFqAsehwsdJwAM dIRewXNMcFHGAiGTEjLUZ3gpogrgVzlaaBbdFxa3dlEPU2Tagmc0VHZNcYa8kCN0hV31dZbqBHdf hjxHQneCpnfvGJcQkW4v0G7jhj3bUC5cdJCAeJCC2Bp9CRBuZz1o1ofZpRzAc2h8dVhpIj8j2S4S J3GkVxI1GIoRF5mmSD+QhhIxARMWpnK7J2ozOHKpGCdWgADroUgLYxQAA2I3qR8A5XEEAFAiIJu1 WZRAGGvQ90BFVjkWA1uN4P9Rn9BjqIAiqmB1ozQcooSVXiEIXuEClkFkilAFosNvKANrvkAjm5Fu dHVm2/IjR/Nl2jBub3duXYk2y9OGyplua1lmcemHR9ZV/DdWrLFWeUZWi1iABjkbWkN3U6Uc+xR5 BoaBj+Yuc/OJobgmFGeZFbeBbDJ6NVg/NWiCmfkuLDFya4IdKmdhCSVAdWIF6+EdPviaNplIVpEf rWZZKIoeUEEot7aEZzZKnAIWRmYpAegYJENcciFa7wAFC2FrvgBljWRRwkCEEABc2rMqxDkLltEr M3Is0VVE7rBmWvOGaPZE6/kjx2IW2nI9Xcp+d9ejTSIP6qA00ZOQZGNF/4f/kOkkb0iSZEQzPMVy I/Ajkal3maC4JikhAhx4iqAoi7KoEkfwmaCImSVhkh8XoYp6oS6RP+KBc3HyLws1ohBVouQBUVAB UOfxJ+ehi+rhHjNjY3KllBCRlGLBOdW3Oji2WtPJpWfxKBVVhCuihL+yjZFSOfMVbKzCK2b3IvD0 XFc1pcLFfvAmTVyZj2eZf8NhbuupRGCWf9hDFpxkLfQFkEIyRVtCNtmqn4m4n1AyEHOnVERUTJCH aJOYge6SpyjxgR8IemsSevBqYSqxaepaEoZFlCLxT3tqoIoKevcjFIAzYukxFAolor+4alIxqZOq HqjZsH8CMOihcynAWSxS/6QkICPeJ2OKwFNkUYa08oyMAFuuyikOpCtKOHS7QiNEFjHZICq1wgtl Rxkv0kPe5mVVaqVxp2VsuW5+CI92pyyFOVVs2VXyhk308J3fmpflFWf+x6YEeUVX8qZf9kPseF03 c2gW+Rz0464g6afvGqiAGnqgaWGvGAOg5xIqAS+VGqE2WT/TMTekmR73My9yiz+PumF+Uh73s5N/ woveEbF/e4Osloxe0UgOJIRHiXSRkBcZUiurlVohq4UGcVHL1wSR8WC5UGChtTiIIBZRWCqzYjLJ ZRnA0KTD8kNg5qZgUj2sq3dTA39ZdEbx2IhY5SPv94Zupj0/UhupIZ+4wf80aEqI9vY9/IeAbver gNULxDBlb6NoWpuoeXq2KYdy1Eu2b7KCcBJ7Lndy2BEnj5Ue+8q29lOZqJgeVsAALDEetNgvRMET eNIT4+EdONcdCFAnVgEeJMYeSaFZymhRD5NtQfoLKWVBhYijnQCFndSbJItr0rEikJO5k9GcoeW5 kPCyO4NDywBucVcN85aWAEkcy+qO2zKlN8tmsdujSgsOuttN07JnluMsTgMua9qtHtsqYvO7tVFw 3XYzCOdckZeBEqen7yqonzmoFnYEr5i9d3In14tQuQcUNJiuNWi+tEgnJ+d6tNi9NXFq3oET/COi I1aT3tF799uaIhoogTL/MFKgWaDVSPBRsl4RMVEIQ8hVhV6kWiFDINpgUtPJnL5QbQugiVqxKIvi IjHyOlIAWpwrfamjb7EwGcx1ANZ2unpXPsC7JXk5Gwrps9iyyfMnwnd3nkgbtVxiJDFsLvBAXn/Z Xh81jtv0JBEycGwnhL60cZu4iQPGLl2bEh8Xr6/4y1ecxC63xP+jxNkLJ//qJyiZR7v3WMc8zKK2 vXhyJ+GBajP3WN0xk1gBUdv8qRGFYkPqMIZLIycrTDlmOWY1hZuwIauCFs2IdXZxUhzVWl6xALfQ cah5m0VpMAsgBQ5Do4tgW7FAO7qyEZHcGUels1r0yuNzlrsLcNd6d8MK/4cULZ/gsKVIkw75uRtL MpzDyxj4tm/d415hZAnWkynG4Y97xxC/5DvK20+EFTcFSpnT8a5ly5LCvIKveAStmNPVC5Pe65my GAPFrMSuaNR6As3UPB590lADJL9drB4mdhWBgppKUShtvED92zBFZ87UyVPVkktW2A0eNEpWuYfK Z6oVNTNEKZuBHMgdl8ZB8FmglWtIhw52bAq8khkbMSzO8I/KY6bj4lUD6VaAB3Df6cHvWcK+Ky1S ErzgxM5oJY5jZIWAQQ9kHQ8FcpjBsjtmYleJtpggqZlem7Z/KqiB2hLuirZ084qPRb5rcj8YGot2 M6jYu71uUntJfXK4h/8nLye3vSe3eQQUl6Uw2fyajuPAyrgiJqsfMwNawqRVqGoxPdVjHauFlaN3 ECERsCbOTjHIWxHeHffdgjIwdW102JhaIDQ6qPIyUCCzUqYzclhV64demFzY+K1FwMs00LLJD90k 6tRN4rPRkO2V/UZOTkZ4Nuy04SBCETFdefVXZzIjkViMQPyJe8qusB29gSqopEkdKuGSIyeDu1cd K/FYR7yhi9WKK0gTb/IdMxEn84ITJU4nDTWTZGywEGVYNhgo+UqUDJSVLaJZAqOEPJoh3DA6UNk9 FpQNRmAQ3hk1EKQMjZSEBLMAAIXPKAEVHsfGg8If540ILQYJltPRFWz/CjzzS5ZBVQooTdwE0WCl l/P2G1yCRi0sPUjbwkQCPeKzyuJC0gT4XiUt0mmlDy5lNeeDAldApy4NYJVWjJt34ZG5oCqBoGwr xA864nTyJhZm4gVQti3BadmxoY0q2xr6erJIk8BtgzdXHXl0kzZpWPKBr5oF5BJF5JwlBUEwsfrh IswIDzeVGCcyX2k1SZF7NQp8UZJsuTNTMFpxAwtgAfrxLvY8mwIQyALT618YdEg3S8auFidEMjXC K9bF5nA1JNqkrX1eyo19RgNZ5/zt2BBN4F0UmGgaToNYwAi+7/wQIW+1RupCtc1VR4qJgSL4vDV4 caDop/A6qLYHmsCM/9tWzIIrERMnPqgo+R2dxtpTTCffC9wD1OPF3R6adVk+rjCyXqkLo+vPyXXA CQ+ZU3hkjl8rC53C1Au/IMnAYLkH4MAEMJuF/DhRoShbIRUIwOv8YVFgQWRcSqbgzmNpzlR0lXxo liT7WcqucdhdErU92yzNYtEFTtn1FvZ4NogEKC7LY1U3kld19dnC4iszQvCc+ImR+a4rTr1KvHI6 offVYWHca7b+egSniJKEH4sdPovfIbcZgB56JNuV6s0q/xQt2mr18/HIXXQrywjDpXTJpVMZxRA2 b7rLRWkvoFked1hKYBS5oBUd13uz6WqulvRHCX3jlVGjFO5QQFQ9Q/+WZnZmewitxYv2ZUPnRBtW vIvDAy67TDu87CzzBW7vNCzDGj2YRhRFVpu88AM/zvVfDocmQJygH2kBRgy2Luf3e6/T2DH+7hqL 4qvyCd+R4VuZerT47V/cJv9QSUGblPUn+QwIIkGDhAsLARAvLiQyMiQajZA+RjKUlVAPmQ8amTJV JIsuoi8vEKakLwELB6wHAa4EIhYEAgIEhwQIBQi6vLmDCISDqhCIpiSKJKCizC6NRlDRWUYvEigS JNjXEjPX1dzWKCga4xrmnJyaD1nrmuzt6prmmejom5v1+Pjz9un09/0A3vsXb12Wg5nYKWy3UOFB hA4fwitIsaLFggv/9+lT5+9ivSpVzIEcVwUFCXHKxElYyTKbhAPfXLJs1eqGTZu1BFjIUEtEhp8/ j8QYWuAIFioghMawsjQG0Kc/RfiUmpNqTp4iBGQVkEGqV58FvkoN4lUAIRE5BAXRNUgErwI5dBXY pVZYDmFBEJVixKjRIxmQnkHTAIUwFB/mZLh4wUSRBFQQmqhqQipAE5uXAwSwRSsngSACEDAowGDC 6F5rCRlbUMxUIlSKXLgWxeRZNCgyqimTOaPkDJafUHQTR/JcvI7q3slbzvxfvXOIERsP6Py4wIsJ H0bUzr279+/KsYu/qHwec5Hn0mvUp0FZFRkmd8tfWdIky/v4X76k/3kA5w3NN+RkgU4EZrBTUEBZ UNQRUWUwV1QWZBVhVlv1ZFZOAmwmy4A9YSVVVxN+BVoQYUlVookizFWAFRNYEVZaZAmjmWYxphAE BFKYgshujbwHyY9GGKEBNLf54EMjorgGGSKqHELKZf/VopkAC0hZSxC3aBVML3QJs0BerBnzGiqL lWLKIkyk2UglNJBCwgzIKDIcSCmddFI3JYGkQRXsDTQeRxYhtw91FAn6Z0IGgafooowymiii4YnX UT8+AuaJI7uNlB5I79FZ52MrKZPfqK6w8kJ/AAYogKo5qcphLT/tpJNPDIJIoVSvYqjrrqDhpFVV GA4oFQJinaVii/9zmegiiy2OhRdeNBaSlzHKiKKMpYkBZoQPtx1mBCjIuPZYKQcUo8qMrtzgSpUj YhhLLHJZoAsDxPIiwpfPutaavrNVm6YzlLT5gjK/CVcfp3WiRBxIgLFnnqGARnzonxBbhBBDiTaq 8cYbY4xdRgU99yOmuw38yUkhhbRnyieRJKqoM810wEunsvKKBOr2x2qrN91UixIYAg1rV7JgWOGu O++aoau1JK2VgbKYWKKDcMHFrBVYW5FDsoI4O+OMEBxiSBCGBKBaIqCU4swj2T4jQ5F+jZLI3F/P SKUSU349bIXwrnXavHQJskBdhoRt7rmH8JsIDaI0QoMRNLA0w+T/M1wxOXEknEzccChwys9GE4cu eugZcfxdxqan3tDHhz5H8iefrNT5SeQQF2rmscu0Eisr1bw7BLyfmrPOOf9nUwA3AW2TEjcoIbSF XRH9q64BOr2qhbXsJOvQGRwBQgwF7KRiAS0ymwOzE6QPI1pqRSumKmTHXzaNYuuFChMu0PBeJI0Y KcMDh4FE2l4DkxmR7RBfOwRnLkQWtwjCFr5wCy8AZy9gBGNsZqvflxIXGX0xgQYyAOHjHLGSK3Dj CjODU3w45RvidE5loAuZn0b3p0iRZ3UQYYjqdshD8NQwY4haTj12Y59TreQ3LrnGzLCxG5YYsRX7 KRUUZ8YfVNGE/1U+W1XPmrazqGBPabrikPaiF5QYMEgpIEhjGmEQAxCkL33MAoGL0ifHuTwrL9Ni ktniNwgEIk4zOkKbtVRWBf8BBgpGoAckUFCmUpwKX6Chki2Qt5nO6EIEnymLVrgmF7fMRV504cUw mhS2GZXNNawhBf74AkJHVOE+pIidClFWHzvpiVPl8Ed6PkfDXl4nOdrRYQ+HScxHBREemGhdeuyE u1O9AiaueKZ+7uMS3vEHePx5CfJosp/qVY94mmnFjFS1M6exiicYihJXsOCUMoLPCmqMZxqTIE8q 2LNFE3Bj+R5kFSmZrW54UYtZ8mKKGyluEcrYE2CkU5hLpSwUjv+EwDAyZIuKdqYWF20VrLaSop34 BAHRW1FXzqKWL4UNTKwJ2yGaYK65DSxTLhiXE3tnMhcqjHboyRzbAvI5e/gydIShiEQcIkxiDjOI HPPIj/a0qV06lRxQJQcyqJiKr0ERP0uMos2kyDttPtOa4oxmWPX4CuSpi4vk7Jn11MmV7rUzKEWx AjuHIs80DuUI+cynGrGGrK9ciSxXyhBZiGVBBNxiWhK9ESJSmoy/wO5/5jASYgrZnmzoaI8IvBAm JcShoxkNV15xUEjBVwAH3QsYMupj4VSRArHpCybgYgTjQNW7ccXEprPLJXpU1tM+6TIeq/Nlxdzx KJChzqgdy0j/YYiLkYr0wxw8ykZKcDsOcdSuuuVAiUtKgS4j4ucb+PlqNmvCTVDV7KuULCs3iecr dVGSeKy4CfJ6QiueOAh8HxqKfu0qlDQeQUVXW9E+TfuVsJBla3CZQFh6UZdnfWlHpECoSRYjH0fE LU6H22OMtOKVCHl4Vhz17K9MRLQMgNQrDTygagt3iBCIKQSnQMW1+CeBkjjRkW6qAp6sS5ynPnUg vJzhO4z7U0B1BIcYawhyGxWyS52jMEE18jlOJh9Q2HZgNM1PNV6ap+fgQxmwgQl4YXafJZbKvf05 sxbV5Uxofi1p/5HiK2wS3+NRkT/ntVkXp4dODnv4J0IwkIMs/yAsDheYaB8ycYrmogt9lqAEE9BF +ujC6CDk4C4xSpz9Ajk3hDbCG5cVxq2o8qGpRAhE9O1shGwhAiEgQF4eLkCg5ULYBjNJpXopRipJ AQFPy2ASdcpGubAhAVGo0IVS7bFI4pO5XQLEp5CaiLSLXBEiJ/m4EFlyMMMzZR/vEmHZMBMEXsbr colZAuJlxZhkF9Vx7MMT86nySbBaRZ2l2axxFuebzQpG/9g5XdI0s5nPO9/2bhGMIp6SlapCIQ7/ ZBdhUdGiFQzx8xGLfGmZS1qCMYw84ktMiUBouA8QI8Bq1ipdmd6tejIhhtMXtFFDUVs4TiMmGSJx VUWgkkLRl/87SVc3dKpxy+pDjnDcsiTyUQ8/ekvc4AbzmNS24US2M1RtSyRi6YGPSVw4EjuZhFzV gAlNrZqu6m0zrEdEtshE4h4qN3F39SavztBrbnX/h5LlxLsWuXizUMkM7tE03mbU9ZIMlRXvlGza fMv6K4VHsoF+9YodvZKWtCw6B2/UuBXqJcEGBwMRBFXbwKrK4UiSGoxtzZWhVW2hUvukxBmAfMm/ 5nE9Hu5MM1YMQm8nH1zWB7e48z3ulrr0pVfbIMBteus4MtzsJNnqPozUbwn5e+1undjY0A1We1fF /5hiq6Rgoue8/R5SoSvu6ko/TZxZNyklLfGop3Pff3NEYYf/1ex6FvzhBX/3+Rr65SHWT6XnE1vT FuwzF3ylYHw1PhRXLxd0CKM0N+ayaIgWFT4hIOi0asLScKs2alHzZ6Y2K4T1GQ+GQIUTAikFASh4 cy7FDMrABDqFfbvhAnCSJzZ1XS+EO4AxZbylEfkgVNJGVNaGHfnQfMmBbVUHfVcXMungbSvTdu+R KZqzDeLwG2IHG1umDc3mY/swHyxRVo+RLmlGZ2jHfu3XNLuicNnDIWnVNFSUbwAXTag3h0qzciPW cEcTI11jIm1heVvzFhnXgGgRAxQncR0HNtEyLPx0ahLSZwMiaI/YcnNIaLYAawTQGRFyibRQJedS SikFYyEg/24wliRo0xcw+EIy9Uqxcw08hjkrBDt64mQ76GzGx1y2iGRA9UsW43xImG29aHWBokj7 wCebwDB7YlOkEndUFCq6NR2DsnX2B3j3J05waFV5Y3gXshlKsz1fdD1t5Y1oCI5b8RN3WBZWIRYk 5nro+H+SVyKQVwAk4kAQN2lbkz5PMAGYh2DwiEdM0hbtskmwpxMGciCCliBAUSGg9TQ+cWpAMSuI VhYjohrYGE6l8kyJUGyLUAUu0HUSADxaCDuZo2zigHQvpCdMNX60OEO7eITBlXzSJxDNJ4Sns21K 2B29VITT0WMupDvQNE3acIM+dlP0Vm/pFU3vVTfj9DUX4v9+qcc9T3EEUFkrTzNiTxMUUAkVpQUU BfBOWzkUHzI+Fih5JdaOyUJYg3UWMSJKnoR5Gkdpu3BgXZOPVNM1c6EVHjUgjxgUgQY1X+RZhbYV IdI9PDEiUuFHh9catwY8LgUbzMAEIaESYxYO1JVdIsEy7aFQITGLTtUn4zGELFkozxaTFzOTxVWT PoR8qFkdz9WEoQkJ4PZdYdhVJ3QFwmFd56Aw10B/+kaUxmN2m/GbqbJ4ang9SiAreNk9VykUyXmV CBI9rwcVS2EFVLOVTDEBQ4E1+vVw/xUrMaeVEZciKHZH4mk2ElQ1VUOBPoGPaKE1u4A1c0EUDPl6 hDaQDdL/cLqCkBmAiQLCaoRGCwFwiSKAiKzBUqCogqYAY0pCJqAQAtgFDkC3k7hZEsvWOZjDVMS3 U9Pxg0Y4bct3Dg0jVNxxXMhXOr9omkomOqxpDtWFg/oRVutlQsNROziIEvS3OyjEH2UlX9roTxSF E8C5o2j4KvOpFPrVXyCABbVSK1CBICuCBSCwlXolT/pFnVtZWprUeugoanlENjVnSu5DCHIBYHOB LOYjYAq4iAbCIHn5K875YcCSajqhgQYSpylnFmNBI7cASDpHNyk4LqGgGLSTJ78RfltnU0NXDuCG U4/AW7zlbTDZXD+VDj4CMSeqKMVVoiZKkxTDfLdpqPbh/0RQZELg0A0zil0qUWYycyrnFWcawniK p42qIoDFuZ9upaTIaaspNxW2wqbvSVfWqVfWOT6l5SLO+X8cVnrtAiblgpQZNiOpsEEkJayaZwUp wiJc+SBkNKcCiRXSsxVA6pfguhWgQZ7MCkjmUg2KGQBbxmu95gIhcCmd0x6LgX3VN5IpoTJcxzCd 0lRN1agOQ4QaIHVKtR7HN1So45LZlqka4zEyJDI6Wa/zRlPAE3Y+aXR6sqJSFTPENnB3plb+p3is Igu3ipxLqhRKWhRZORRwtZ0JohNbmQEsMlf5hBRHmkbWyVduND7FcqyCNQgCADSaAUlkY3in4Bpf Yy4QGP8WFtAWwspOXVmBuCKkT2GOCOlwo0ZoQTALcpElYnMvtqcjYpOCiiOBrRECGUkSnxBTqKAN LDQShUpLnrqDneJkKEmLG5qL6CEe23GwwKWwqXOp1tGpKsqD0MhsNKOuMpNV7qGTncoN0RiGNhpf +AZwdtNeQ/OcCXJGY9ROtUIrb4WtQMEgFPhwKxIDTtoihLgU5ENxWINg4Em14ioInbGJfDS0nagZ qZBhEvUlMUeWGaCyoiUWTXm5jXespsdqHUYVmSRBVOKf9VNzppCC7Kok36druXYtJnEyxba21nB0 e5Iw8VpLOqWvnmOSTni3E/MRMNRcvri3fZuEfstkHjH/jE9FJwiDMLQ1KtzAuLuEjDOhfQdgQls1 PKliNNs6pyVbK3n5cFipnVkZukewE9+zaEzhInGluqtrwZO2C64beQOlFrGgaKIWC2QzvYiJR4RQ UYh2IuAzlqW2Kyj2K5GEpb8SC0vJYZc4rgtkVQ8GPLdmJuaKmDfHGijoSriDAiQkE+7hVL83fMfI Qp6QmQr1YylJbX5SDzuIsEL4fDm0bZgav15si48qMuY7uMfoHjJxfSijdveQXdAYE28ylDjaH2gY q47IFQcyn1CjlXellVAxn07hE8CLgHIEsytSWgJ2NfjIV+cTFnYpFrwggm9ZF7FwL83ajwdGLAFo jsH7/8hXmod/NcNaQQu0IGI90S4QaHgUaZTLOrZIG7QrhUrgcjBUxkT3Wr/B4b2A4Tm7fL4+eHy5 KBDm6w5JyMUGO6LEDMYLO2RS14ROmEvhq6K4s8bj14zthjmgkg3CYQ26aTOvkGd15itXkXIILLpg AZV2VRSDbAWiqz2nhsiIXMFTOp1whHlvBEcl8iAlUmuaPEF9FD9UAj8laDa88Ie48jS6ID2iRV+5 Sl8YMi0WQp4IiY7iykAjohmSwawt1V05x6WM5UihiDZ5AmaPYSdMtJmVuVvfVhJO5qg/CKnp6xxr B0xAhGRLCKJ/mx0KC3WBOyjnmx7VFRy0Y5tOtaKf+v+p2rw7+wEgwXk8WXRORlOQUDkXJttGWDCs zEmODZKVhyytKsIL9xzWnxS1xPIZg3CJQmsjhkCCZvMZ8DNYEhQMsDsVAvhyYdRnC3eO2FghC50V oEEVG6ZzAp2YgHQqPhy2nTgmoSgnQlcmVSZ+jWq3/dDST6WZVWzFvARdjmAeUFepyMySCbsoxqzM F+NcDoMca1eZixvZKaqihau/OJoTsKozezfOB6KkuK2kfSxaIEKfFNLCDxlaX42A6sOecYGOObxi +NJagyAFBzQ2JDgiE+QsBx15nqWNdZo9abhw06MZHshRVxKgU4JYM1MZ+gJ25Y2UhT0mLxCKMaW2 igD/xy9jEp7g0pQCEjDJhZdNbThZLQs1XBGRmjhNdaRJ4GDMofPLqUzcthlafLXTMtsAqlvlqt5I ZwEyZ3bZVsjZTp9rRg4yVwWABez0lAaCslxD0VTTuhiHjwgQF4EzFlohI4hzc0xgOIh5Lv+5Fqih ybMyIQlin4ZG1wQSji4X5BuFaEtpelu63tx1e4rpZoYZxPwSSxJwBYsxr7dlS/7600zl0/o9KMkn XEBWjIzgIzeEi5mACcmk0/Bb01984AIrKVx+vvYhhW+3fqkgVmdnVq5Aq20VlRa4pIIZvH8cUh5Y gdKqj/Yi17b2vIaTgmmiOEj513togEbjyDAsYt5k/zwUJcoUZeTTk40URXbltRLf9w1b9gqRgdGQ IWYksG4vYOXIECovgETTjFNKJxJya9lz7tNWrJr0kDKz+KjXVtppHmWXurBvHr86JClCtOASSnQ3 iHR2DjNUJWbNStu1rdVJKrqCzsAHKZ93SSvCDRbeuQty8YfEcmnH7bOFkJiQThumUOPqvUdmsUeJ toHkGOrsuN0W/e/GCoA5kUeqnCFbFTzGoK6p8BkbrfAtNTehSBmxrpFVEBMssTAspB7vtjKRzeso jdJiXnzPFsUpiRxojuzPd4sHa+Ck3cVdPB6pHRLje6+eYr90otpktrZ1B3A+mjT29Zy3DbVR0yCC if+XWeFFr2fuYREVhCme/7xBrtwvr160EBDQv+kW2bhhBNJZWxGyaQggq6KNjydY4d1PAVDX6l0q bUZTqloZ6MJSqr5ll5WgV1DrM7B7spP3R+x15dCa+4oecw7yIZ+hrTnTguKZn5lDRWWwLT+TTzdk QASa3/aEaAyNwVe+8FbL0vUYrjHhibdW2DMVBBI1V9EhPIGXpl9aICU9NzzqiBW0oxQ/70P1MSYm hhnQWsEuMH6fsMLdsu1Pc3c8uqLDrfeP/qSU4aSuz7S2uctrbm+0gWTYUz4mVwASG1lb9FeFolKo Pbh0W3iZvrwp/pr4RHjaXv4jikT4APSZzcG+HuP/HWze+JaqZE9XKKtZWQnFMuPrmokBCFUag1Uo JIckEiQvjBIvAQEHBzeUlAKXAhYiAjeYnpcZGSIZl6MimxmaAqGimgUZBa+nmwIBl0GQQQsBQb25 vgsLEBABEMJBEEFML8PNxrvBuwELAiK9QQLYQQXWlxahm7PVn5u2kAGVlpyltNnhp9Xd2ZgEItPn +BCPzQHMxdPBzkE4QCxfsWZVrihcOMORhIeKSLhYNJFElYsXSWio8kBDR4+DQooMKWNjSZEYRz5Y ybJllpYdY4b8GFOmTZWDasLcufKlz54PsggdSnRo0KAvWRZdyrSp06dNj/50udOjzJEoNwoSNLKQ /8iOFjceQkEWYkOIB15IkITuxqQbkTpxgit3rqdK6DCNAiXqVjZe13AdHHZOcLJdxAhDUswLUim/ 1DBZsLDulDZ4nz4paUe5ViRJB/CZc3wKUida2DDhmrdatEB//RgxKmi4GbNnBRNL0HflxRUJvR8i gpgIkYxDGGVwzYl1o0iyKJSfXN58Js+kMK1atbkSZPerIHPyvC71J1SmUpGeX8/+fHrs46tyr44V RUj7zRElIg6x/1q3bKFjy13r0FVXJwPyhQosfQWxSWC4IOOMQcZUuIAuutxz4YW2zPJgPSJMlkpn DY7zmF6fdCYANU1EwogklCTolzwmwvNLNtqIdv9Ai8W8QNBirrk2zG386GOkPr5dMcMMv6klAQqO qCXRlIlEpxVOHzWXESEzYbXVSdvpFF+YLXnHU3hZihlfUvD5xF566rUn53pxmndUfGOyFB5993GJ XyHKDQLdoP3tt9YBD4EG2mefSbLWoaE9oo437/RViy+NIYPYkQf9k1gzu1xazAKYrTJZiJNVQwor n/CSGQHxtEOAgZFEkmhok8rolzYRCtYLJjr6yNYjodW6WFoEpeXjsokROSQTvCmJQpMPVQHRC1Ug 8sIi26KQ7SBgercnl86FyydW3J2J57o3mQnTVO+ZJydVc9Zb73vjwceueMx52RFZF5nkbX2CYgT/ HURl+YcWoguz5VaHl8joIWuBLeYMM7I9wkti02RIjS9BIMANPKOIMoultKCmqyehqEgAJI6Gpigl k1ySa2aqzSMaNjCDNpBi0jR2bM+zLeZPI7NB4IKSvjUinLVVzOBtlC64EBFGhxzXXJbnVncTFMyx m+e64uZ7J1BClVeee1PZ63ZUReG7pr5jZ8c1SRhlqx8J+BVsH1kaQCmB1IYQbogiDiX6EKMRqxoO K7TY8muEQFZ9yETb3vbPxhfyHE8vIuSQAzcZWGFFLCIUgE0747BOTimhXEINPrgK2NZbNgPriYzm sGYLh8cOBIk/0PASUDHFItYExxob2c8CEiTU/0SSLxC+ZPT7MYKcVnxbZJG5OIVEXfhlDwLFd2Kn r75Ldsqbtpt0xvv+2/S7t9P7PcE73nbuhicIIlU4jgyehB/AGXBQCIwIWWZgqFud4zSlOMIrINcO XlUMF84oCJA6FaEcOGgWI4uFKFjxini4oxbrsFlezJEaYOHjRS46lGn+E6Oa5c4zkSAG5XKxOcP0 42fFMpoGsTGkewwjGMQQxpCG4QImVKFpD/HR4JbEwCt4axGKSMlFDGElrmzFOXc7F3h0wr/0pU1s blIKedSINrUphW1og1/95rgUuZGHTWcsk57C1h2R6McQGiiOtwrxt8Ah8GCFepIiE1UXx63CCv+w iEUMJBhCD0FIMPe45GquEbrTvSIW3CiAJ0XIiiOQwkQoTOUlYBWOxsEliIRBlGxAY4lK2NATPBtN r/CRy2IF0TUycw3xAjKMEEwDSc6IGpMckZbe/GZwhORi3sIig4GZZDng81rZ0rU+9ulvTerZo3Xy RxS1tY1OdqpTnOpExzmNB2zwbCP+6IancRFiLCRgoCH49rdDkiWfh1CEkxQHo0mBwxQlK0AMPunJ UyDAGg7ylQcxNDkRPDRkBRidFRiwUNSJEpKlAwcrLOWZxrkuE+OAy2duoI8fEWNZyJqEEpRQCQHQ VAmXwCldUIgglQ5IQG9Z1DmC9o99CMQYAQj/AWGQ2g+CGOkiM/CNBKYHHCVZ8ZDj61qXzFS+75Cp m/kyCp7kpSc1QQUpa5sjOeXYznmxCwpsCuc30we2j2SEi9Dhpz8Nmdf9KApGejnVO06mUFEUYAIT GBlEbdQL1fXioh/MwSliMbrCjiKEp0udYl03oBaa6GUJKsahEvUiKcK0UXcZTZBWCwmiLtV5iBHN hM5xgOJxzDZLtNaLlucjhSwpaoVQBAPpQx2ueVWP/TMbvODXxjiKFZxGSYq7zImv+bVVrnVsKzqB Mla5ojWN6xMXAvUaOL6a93CMaBRb6EEZTcxCEyNVqEJjsFCLPtS+v0KAZEF3X5GBMKOHXeg3/2QR SQQY+IO7S5A2WleOV+YQNFKMooQTBbPVwma1iukFMYUBJI5JI7asvcfyPDWk27gAAglhxIibwOIk XW9q1dpi38ilHbF9dW5xy24502nGPK7RfdZl59vkp917MRcm54vrPOf6rv1xLYBc5Cvg+PqoiCTi rwKiBztIOLJIZkBk3HDQQxHQIMtAyB1kTp1mrQACUx7hdCNtRTUok44sS05GNYypovwjpbU0g5Z1 BtAkZOZgn4aWtb+E2c9o+7sAtIhHnsqYbFDMLWYsrwk7OsBvoukQaX4xKzUGK3ffuGMdB7mbO+7u Wq1b5O8W2V7UVe6Se0yVdm3EENk6nF7zuv/PfaLlCpPIMqxYGQoREtawsbivRZMNIogGphpkJrNi MzDJYscZZ+nA3U+B1aJXCq9Rv4GwcDT2IkUx2liGTnSQXimzYnkmCD7SoEtbO5jlOcOlzLhI0340 UxZT9Sz+CYugsqKmut3Jx0JOaxqPfOM7IvyOQn71/CIu8acc/GxJSXJ16Xkd/O3Rq4HkSq8NWd4C EjKfZ3FY7XLGjnjEggAW4OgrDDzZkUX0GvHwb4hEZuARnood9vgHot6Sjhh5JjG07EdTQaOkK/dn 0vo4qkCOWSsHY9ggsgXeBqmuwU69FupKQ3FGHNGbJighAErwd9N+s6TuzRh8BWcyGiHevlT/r+8n aIq7cxVe8b6r9X5wYlc5sVsVPyJikH2DDiEbEu5FCQBWKHLcKOorgtNVtgAGznyIVOOhkoUoA0JI RSqE0F4VdULQh6qlzWr5V7a0fuiJFBykFuV6YzlGQHDhhO2CRFRpHB0fRB1qbp5xkIxNROxlaVIT CNDvFmPaN0uCEhc1YhIN+OArX9UXdhreZOy0TY3RDee69LfN7Sz8uxT3u/rdOmruDr7j0UVP+wkR qPKOpIAJfMgV6OKYnXam88mGeWFGALoQGY3jOTCHUpPRXjdkSwDSEAVVU0UnaK+nOArTHwyDZT2j bkAVIOz2SxpUEJ4xO+fQIp7BIxy2OUkk/1rbYhxOpAHVlE//oQQE8DKYJglNoCRSQzhXgyVfAXhy 92MYR106hn4dh1Zzx1brt4T1w0bxcnHhh12phh7S9REzVh35txa1khmnoAnfUGyhhHkPAiwLUIO1 EBCPZ4aSsQmNFDGx8VI85BhzQTOtFxfoEDN8Jhz9QQzJcisD0Tz01ilTVxCbslS5EAwr4miYNlQo mBteNxj6cGJMQAKTKGPKtwA0qAQLoHaIQkUvFh3FFTbZd3AcRy9nQ07rtGpRcT9xI3gbx4SwmH5O sTZPKD8Kt1a2qC/3cYXP4RXeAiWtZwl5kQnuZQGo4yHD9ngK6AmttHmWYAHpMId0uHuYQP8z1ggg FOgWDxMAxCF7/pGBruduwxNMGqNeFRYa8vZtrbUiZ+cZoQFpkCZ0XpcxijARMjARenM9oZF2mqiJ C4CDOaiDhjNIWcVN3vRwpghkE8d3cJN+7ueKsBiRsjiL4cdc7YNxSzaFYyI+51JIVxRFMXU7bQh5 r7J5K5NCcjGBRTdoBRWBrwdsEUiB4Ygo/1RVCgEckgCTtkR0QeR6H4h7jUI7vRNiQaRSRYIkt+E0 euMtygElVMRMN1CDUmmDMeNb1uM9h4B9eZc/6jRqCsmQrNZ371KREcmERNaE1eVc8WdxdGNPYURy fXVlEtgJOGUBJJkqsOKF3wB5mqBSKDT/IHLRFoKpjUGFK4RGmMIyMzCTmO2GLIqQfPqXk5omVD5S VFMXYrxkPMaTIV0nlCoVICSGMcikNFUjA0zgAlEzRShwFssHczWIAASAaWtxk0oyOE/SPdSnlWlC at9Haq84cUoocWMJlmVZnO7Umxe5TqYmf05GMB7JN4EDKbMXkzVlU5KhgCSpIzAyMzJJgeoFGqR1 K+AJkmiBgf0Bk8DWnVZXYQUhLDpyeziEmZiJjkqHlBjDCFUzEVXjA8fBeNfjGzsylbB5gzkpkGfR a14hLiJxfWnFPm80hLNWd9fFnKdInMZ5oWelZEgIfsBJihpJT3uSJf2ka8wEAWhBLOo4/xc4lVPW uaLWuXoqeY1uAZOvF1MW+BsLoRBMlziPWZ6RqSg6OWh2GCOMxoH4UFJymBmfqW5GikxJeS346AIv gqMQOAkEIAQIgKVUiSgGmk/TZ00+GCbp9FxnFJZfGYvvF5wYuqZU+KDJKX4ex05wUorgsYuGVAh+ 9Y1CFWwxGo3uqDEBMnThiJPjeZ8BNRxQIoNn0XZV8pgfiTDi+VedEI7ndg6PUI6ugSmZWalDdW4r uCnOEon5WQU0QAMuQKDAQXZWmqUMwHyO5mhWmVd5Iwi82CWA56CouHDzhIsYOpFs+qsXyWPug354 JFZB2JZ2KmMNdIHg+Hq1UnujKTwZaP8rzGSBh1oRALQ3h+c9evMQiVoWDXE4pNVutyczxPB7GFaO mJQhruGGm3oQLnUxapExyKGfMnCvNDA9O+ojZgdzWQqbmLiJktAQbWcfATNwA3eFBeegg8c2a+mw r+arwNqr3kesvmmxy0mmTihO4qM3e+Oxw9GCC1Nhtves5fhXWugjDbQfbjeQfXWbZcE3dzUogVMI eLowoyUJusd/gbluAlA7p+eucWgaZKghyGOpTmUks2F82Xqvp0qgjbcjmFiDWsp8z2dFhoM1WsVH 8OddFtlOEjsvE/urZxmseTSscepGFelGK1FXIIcSB8uRHmtlT7ctApWniINFhoKbeAX/UPohYyUx TV8qY1eYN9yDOAyDgZS6e6pVpMG2hUh7DrpXLD41G8riD/rgCEgJAZczJR5rEvzZBGuRg47yAk1w A/36rzXIYo4ykNe0tVvpTRsqp2O7q7XLph76oaRIixirTsvZftt3E1n1LcpxCC14qImwLVI6JVZG AjGoLcKBHNq6TyVxr9VrvdZrEZ82SLsIMCXHZ1B3YZJ7e5bKGIyxQ3LIqcMTRZiLjspin5lDEVkD gxpgBPeak6YFGi3ymqrbM1dlsFsRQCTXL1t1E2EVtreLwLfbamF5i0FWdw/afRbKcQT8NxmRawar rdMrTcbBFchxHABUElnpHBg8wl50/6fVKxJgQ79aYi0Y2AgkkBZK5wt/Sb6MhklCAzLYQIIOQ7Id ZjSTpj1Smp+WI8AweK/2q2lJCaA7sr8EkHl2CavSMmXOcWu1SsBbI6YKvMBcXJy0q4S8eyfnY4qs GD8VqqADfH8X8bxfdBK/WDACx8IkAS5GHChQZrPgIqL44QPXV7/d0cdzvMbLei3MRFuhgcM2/EBB IhjBp3SM1nWE4TQPEYnxKxH2KB3Ym8Rrcan8CmG19cQGtokzajjNQcVbRT5b6X1q2sWsfKFfnHDv 9wBQwMfcd5Bn1X7IdS5aVB1bVB3ZZH3XV38j8cEMqqBkhGSEkC3dKpomykwBUgvpVf/D8lkYHYNJ 0nwPwJcPkoafl2M59+q80nHERsCfmnYtLeZMh7ILNTgNN6AQ0DEu/3LKouiWZAKcrXzPa4qxYBys sgzM8AQFbivBq1yx8mFPdooufLJHRmA+dUrLWkEdy8GgelRWHPs/2gpTAxHDsVF7jpFL01wYvTAM ggFpHOhDB3FpSrM3p1maLkADgSID9gsFMlCgA6UQzxePBFCGORh9vJgmBHwVYzROvLrF+FzUakVW sxhHaDXLs8zHtEx3fCd+zUkwaYwVcGcVdTXGZWJ9cxy4HMnVYyMuBgPCyBslA1WZkiCt4xskA6Fu 67o5IRY0t4Vb3KyfEHCa2Muf9Gv/BPabJKnKQFHFCL9xaYroaJpGxfjxlkJtN2U0nERt1JCtfnYE XhpwPpXtz2vEmwtJp7aWxdpRwNPVR2+5widxEsFsfQC9sDUxLiAbUIC6LH72S0aaaEa6S7RjmMkj W38mGwJlj85bNS5NA3oNgz4Q0zKgFgxBsDg6r4W9iaw7OIATtwlN0cflcBMc2dgNtrcsy4GXcdaX wiXRz+Bny7taT1wVHjO2sFzFPjVWY7PsEVn9EXwM0HA1xrpYp2CxNz/iIvEmCZW5Wu6YIEEUnx9d siT2M0hymy+ArZZMAi4tA8NdEkYABUaQJDfpqATLeKYLASyWudFkq17zcdlBJuZn/6bZfeK4y3GW DczcTd1t0mRvNdWLLR81gR1aLeIdIdEtAVfxZ99nMxIOvazEwtubrBa+9KygSTvqmMj/MDklKFuL qbkQ4QIzYC36UTUX0dKkWtrFDeEDZKAPsYPhupouLBtW8859I9q6GV4Hed0o/uZNyJZnzN2zDHHj HYT78pZ3lx4+vhMBfWNZAFfmLccibNa7kSxpcS3IguRK50vmmuRX1xjxWSwahDT0eMEhHEDBTQOk KhL2W9zQp4MYXOWD0hBW4xAYnOYfV0a1rC7kDeew7sX05GOcbTbjt+q7GdobK7G7blbgxUZ80q0T 5hDFscn+vSw+3JP/rcjU3JmQEP+PfDgMBGHWpKnMICsIysHppMrp2AvTMtAbnuhP/mQwU6bqqm0V IOrn8I3usd7uxkmLZWqEScjnML7q8JyQdMMUPP5c+wPfPnE+gl54VVx9yyxLRo4WLQVDwRRM6ijD pmFnoiENHP4zi3i587o3qLnG2WI5GqEc/CnctOzUEF7h5UzqBIRAJVcw0WTuZlSh+5Paj+3uMg9r 5nS25Z3Z/LyRBuwdZurmpRZ4Y0mhVi3IiFNaAoW4tWLkD+YiJQvp/LeYR+W+PDIkBCHE+qnBVbPg LiADnF6qII/JfM31veEkvJagpqzY4sHYRzjrD5eRM//2E+rAqpzvOA+FQ4g+ZBT/JgCdY6WWoVxp FDde7/YXSH07HIpQ9U6CKIlgyPMKmgsv23ERI585KkaT6MiyLLIxJRXhtEzQ+c7b4Efs0sXdx9c3 30aAk1i78lTdJ7YqahwXV/TysHA/+wx8TlKNai6v5mhSz2TpTrhsN2U1xoZn0QH1dInDjdW6yZGb +E3lIjLck40bKTlUVO/LW/N6t9nauVnzwSTx4MFM3zJNdv9Ls1cc4uqjfXvesLS//gzMkBjJ2TDf R7tvwLIroXKe+9TNEiucE6QNCCQyVVUkhoeGBy+Ki4kQLyQSkgcBLy8BlZaVigEHnpigCwGinaUH j58BEI8vEKcvkhKRkrAoJChV/zO3KDIaGjKDwL3BRj5QPsVGMjNXTVczKCga0dG+1te+D9fa3A/e 3+Dh3lkP5OTl6Ofi5Vnm7e/s7/Lz9PX29/j5+vv8/f7/AP2la5eu4LiD5DSsA2et2zeFELONI2gO YTx4FNmhY7gtGzaIiGQdEhlrhoQDsSSZTCnBEsqWqhi1+uQKkwBQoFxpUoTyFARVrGCJJPHCBdGi txAZCqZBEIkqwn5pQKZMmQxJVyQ8o8ZV2kdtEMF6U7gQnDuDBSuqO7jxYsC3cOPKnUu3bj63bc3m DUc24ldsDt1mFGxPI9++YbkhPgTLEMloszyhRBHrZapFsBZhcom5lM0AQTCtWv8k6aeiSateQZJg FBIkEi4sGT1UaClUGU5d4O5VzAcyGcheXBEunKsGQh/D+u1GtizCjGv1Rl9rt7r169izA9SoNlz0 clAeQBn/EGyV5Na8erT4PZ7ZwRv9ok9uq6WkWRJ0rSSx6lHsn5Ws0oknlV3Ck2k4BSBAaJst8pIE nQTVyk+PDKUUMLAZtZtTvvhw3C9QkUBDVFYZoYxwVzwDDTXoiTWWWOslto478qR1EVrTEabdjjz2 6CM+N8Jjo1rhkacYWOnNp55C57THnXPiddRcjNfYMlJjjq2UEk+RvHLSSbCc1pInqCRoJiuZZDYT Kv1JiNQhuOW2lFO9SFXnL7r/QaWbDFUFlyIKM8xQRTXJBVbei4gZ+k097AHZ3aM/RirppHYNCd9A NUaHHi5cDTrNNF6Jd+SLUDJkhC/ATdWQYtjgQkhIu0hAmVZjpkTCDKTZOiZPl2hmZoJhuoJKS61E GJMlrVgSCSJG/YJIbSQ4K8hUMmgIzJ6nHnNVoMxkpcuSMjbHEV+KesfdPubaqCOl7LbrLqPQUVRR qUdeQ4g0hCBniDTU9DJWQxKVpxxYwxQsFXqFHBenUvbNYskkmB0QySKuPHgShbyekiAlN4mmCWbC onSJKsrKAktsyhpi1GxGvQpniHHKMCIwGhQzHjI0aPXMcCh5+mli4gpMroyk/57FjzgYyfvu0kwz PdBGTaq7DsC+eIVvIS5HU1uHqFpz3pQORQQViMNEe6dvHtrZFFEVOtzYJLRY0rYEOglFbE8z/fpr yJgVK3dMENxHlCGQzAabLLEZ8mptdW5Y8G7IQFGMDCpCE+gLhH5K79SIEg11YZY62vTopC895F4M IVn1NOflC9W96fHi9VO+1Pb1wR+Zjc2d1ngIBaohEsXaasnaTdojrLig/MPLU8KI88eq4pnGE1ay yZp/B7Ws4corpZQtrh7StVR6zmwzFINsFc2K/AK8OedgI10YdXjNs27p+Ocvl7qPoh62R7VrncKe Moiqsah2uPla8D5Eu7VBq/+AwdjN2G4HvOAxhlgNqgyxMhOLt00CE5S4niIeYSxK9AcUfaNYgEiG LNi4UHndO4ThLBgM2NRJEMDBzZ6AIzlkACpFzBiU625XrvfR6x7smYjS4qW/JjpxO+IZT3hQN6/A zOdDteMFAfe1vmBgjXYuS6AEBzHB10XrVVh8nQyslJRYRIIVqdlMxhwEJouhBnqAC6FoUGhCCvWK EakZTVGKsjKVwdCQzVrYnAjorNkAwwfAUEbNfMgMQJlkULjoiBGNqA61CGlGaWHiE0dJSkdNkTzz op84qJaka+AGRE8Zyb64iJx8Petr/MKXq45Ty6YUghqHqI/dTuG8YhYzWSb/ayHhXCI9EDYTQcYC lieQRczUIA6GK3MBE7bJBOVxM0OC0M0O6RTOEaHKNybSwDG4tb5AHZBqmyPIJo0mT1B6spT4zCej vDHFRfkvdYdRnddaB8F7jcRW+eLFoNZIRiweR4tfxJrrwJeUaJyEJzExk2RA+IiJIfONnwghT4oJ FI3pLWTColDgWsEEQh6ym93knjixKQjGqUoYvOGTMcZjBBSl6Aq5uFc0WBW0hZxlkzgqC6SWGDXo nEufUI3UEZ2jHPm0qpVsjKUsCeg6xdFJgYjA0FMGtQtqwK1LrrioSUFxE7qJJnCOkQlM1ApCkZJJ j6AIAoMQpBrTSCZl3kuc/wuttKfa0MCFOKRWtSLJJyNIUXLE8ZYusoJJaTwkYP4EEpSa+hwhLfVz 9lsi1OoXyqiaNi7/rCL8WCXQG6LxPLdYGLQQoUXv0WastiDj4qhhEi0VqBP3CdM0n2nC03hUNWO6 gTNDmoq8ggYTCwgNgJD3ipwowntidcpYJzgIF+hJQzgUxjYjaaLySk4rKMoXLIJqWdbOyH7+tOfT oqaX0oqynvdkaj3fe9r+CsRJbFllvSJC1IZ+CLZYk9bCgDFb23ovqxatDIEic7GecCJwY+IoI2Lx kz8KxXlwk8xfMcGgZpKsmtUtniIMZwgFg9NVGHqVC2hgrV9Ua7xVcaxjef/qAqBWARaCug/sBrwe 0NIIvt7pTl76p0T99u/IE/mnQn43Rf9a+S6dRPJqAbi7AxdQYWpssIUcY9vXfO8WsjCrSfAzzZHS ImPCQhZmPFo8DIIwxCLGa4IANLLRVLfDyTOkIXVIm9s8ZWU4haR4mcAn8ppXBi8gBDNcMAPvFuJb oVpOkfObKfmR9jmh0+xSjfZP/l751BhBi3TgZ9Wuhdkag+Cqs9ZGmziNmcyycCNLUrISO3bwJULp DMXkSgu6ycR6N3jQXTf6zExspmIdxB6Y3HRIlu2rkUah8WF1M6IRMcEJjTaRMZIhuaBKWnhVkADW Mqe6URkZXttR8v0yBWX/Gpkry/JqMqpPLQ4qqzPAQxMo+boMazo9DrELk4XjGBaLWe364RAHk7FJ hsJiuyQozVS2gTL6VmRRnELXo1gg5YxIcF5LJLxo2W1mXAVx0qDbjW3sjnX8lPV5V92cwjRgippZ fcxbMPM+sqOeWiODNCm0Qd+3Ew2zDiO1RZ2FcqXapM5gL+JUuw62rZXMmuukOExiLOlSsDFaMTnG jUIdrEzFHubWmgjoEoBeYUiJpRNekVnrWL8NIWKtPG1zW2bmUwYUslAkI2Dy8CP55S52XsQfESbp TUaaqu2rdH4vpEh5mWKrr6gwMPdibDWMGdYZppTK4mcWV3pJAFhCGvxo/wZZaVVTJeyjJgPFGRal wJjube8TSkRMzvZhDbO8qjjbCeMpMxsRVGgAyW4bYUQ7JrwUKwsN2qP5l4yP33t2lHR6dD+VbBF6 5fvL9M0upKq7E6D6Xfd5rTrYllkt/emXtawt2Q1ucYPJ6jOGQZ1sMGS5B0fIYz11AxRyVlxyw3aO 4QINAxvQkjBfpF0aQmNV8HKPpGjPJ27jIX1QEFTcEnySQBnGgVlg0xxXNl/fN375VH7fgHmDN3gA NzAAJHDJUUuxxnDF12AhUR8PpyYWNiYRk3+agVKn0WdjMl3CciwJmGsnlDdytCbUNhstwYCHRAI+ 8EVrJEPVkiEw5AQiAv9JyABJffJY0pcL3HIv6fYUsvJOPGdq/pWCnKaCTVRq/CQqdihgXMZ5H+JF IFIIovdgXudgXVd/byYUiSBxVzIx0gM9p0A3GNYSphEsI1QscJUIvZKEgiQ3yfMCTDA4K4M4h+Nd wCMIlHFIZCQiMiMMxoCBYahjj2V4gGKGgAIo+XErt/Azq2JU4ieH3heHvFg6/jMe/3ZK50dUm/JQ Q4SGpmcLtZFmtGVbu+ZB92cyPNF1jUAUvjdsqnAx1AR8YAJ7/aEysLdWnSBn/oEU2oRNMdQ9HXJ1 MuRdVngbgGciMscnknMM98hTvIUL7qRuFZU5mAVKmPKL8AKHBOl4AOb/gk4nYJ1DH6yTjOw3S8wo S/EXErQXfAc1QpZhiJSRCRMDZ0WoE5vAemznR3ITC7mnMWwiSC4AAVxYSA6YbTbGFFYCFd1ECM2H NjmETjzpijNnHFpjVl1RDZYVkKumb7uIkAZ5kKjWby34O1EElQAVJRzxO/6CiwTFXXGigxODa/QX WJ9Ii7o2FLkmEtR0URXmZ2r1JRYjdmFXbIFibJlRjmGyQYClMjg1Ir5BDH6od323kxB5hWhTM69Y bpUFKrhoNexmgqnFlI5ZStpAZf7kC6fUTwnxEL6heQRnL8kRY7STVa8xiPVHinfnGGNJEiShE3E2 UiLHQksoOGhWMhNj/5aYoRITExQiQwveQwjaJAzKAwwwV3XLh4o76Q1oczOriE4byFNGMIJXlUUH 1A2qJR2PeTTVOSnHAHVsIZUt+C/YIIwEQ1D2ckCgpzKHk3bEMhQMuBrC4zYQMBtaMpvFhhogg2L+ 54gCaGZZd0HV0wQSw4PB9jYOthsEulipmEMzJiIi4nxow5PhViKuyJzNuZit4ipasw3md50amj8C ORUtKBHo4W+34yFXCUvAEwyFRBIXclAMyJ/3sTy2GW1241H3QV0fo4n+oU1mtnC2IUNsgzxYUjxy FkNhpUZ74nJ58kjAcSo8eZw6Jm7JEDk2w4GSA4vqQYMUhKGblZQb2v+lk3IoLZg2v1MzUneivkEw 0zIMLrOfKnMfJBGk/ycbdimOKqErsCmjyAKCcWo4x6ddElUbmrhHlcgfghQU8LibOMUbx+khYAgc eymGUZqBS9qKVCFFMxd1iPIAWWqU9ONzXvqpPMIRrkQzs9YLjJocJPpVCfQLtsBihtRSCuhRQcEa JmOXQ4oUdqqi/xcgxXObORpWvESaXgeglCg94Qgb/SEb6khjylMIipaov7CXqpiZN4OPq0iP+HgM q/hY3HoebNiQLaJUq0Y6/jR4oLpv4TAMtfMhv+MblGkvBcNdBUdRMvQmL9SighOnkGiWcIQsyxMm tUmW33hhFZJ/huD/HyJRS/miW5ChC8Z2IAmIFBOyCoXUrN3TMod1LYnGqGAYhpm5U/gIpVXKrdza DsKISQZEYLD2FaRiVEv5peeKrg/Rlwx2MI0zii3GIQyGdes5ha2wAKwQApzoJit1Qm0CV3LGQkBK dtdlmkCagObZCv64m62TjBEWC/6pGU1wtC3Zkv3BGur4m8IgjzSTQzOpk5k5qcmQYxq4Y1K6nIRH VgBJJVXiOc7BpezysjFLSuFBFlXnZWQzNk2xMArzSmYEK+7pGu+JMmwXbEBhYqxgq4QUSCHUNh41 e7EghajHjAoRQb5wKtllCCshN70nIf3htaMxUxXYclw1M1M2DB0L/wwP4DsKAbIgG6EkKx6E9w7j QVaekmno5wsNZLfyMzpP4mR7G1UMMUaLZFss46px0hqDVBS0+h/JqjyzKrU/ChRtwr0zAY4xQUz3 5zdYYpqQoAtJ4RfqamOGlK9rEgBNALTGKiDc+6tJ6qiqYmPIQKaDmSrGEEUgW5gkq5C7+4JrREEw koe8RERb6jTTuX3JS37nUKq+xKZEIVOzMb2DZL0TywrdlIl99VZpIiAqhaMQ0ASYSxLU8zCzZJpr yCkEdSeHuzJ5asKiAHKiEQSj0VG2sbqUeZziYap2CJViSK2Rw1PWOsAvWA9QwLngoknh2sCm4ySE p7cRTK7ikTC9UP9T8mc75sm41tZCNLy4XKvBclY9fkRCJKyaOxwTXUcLkQubaJYfmAbD4JNVtKpM dvkTW/tMJNyJg9MUDjUMUTRlv5Mtd6hO2RqVSEyGG8iB96AMyFGUrBQj7Xa3VlwpOVJFV0x+2rAb UnFGsYQ1sQYtk7u4MASkrdEfTLAKIUCxQLoKW1usa4yEglq/L0FnM3przJgfFiVEQ4ELutyiNnzD P7EAooDMHcYYuOC5qiIqRaItDWqthCnASFzAVEqG8vCC01BzV7SpSFJE+hYkmZwPRnIOp1QzdbIo nQyZn/QNvCNRWYcCLams/KGssfHByTqx2+SvLyAKxbPPIww4JAz/Cl6SgKmxwVzIMK8BLcL3xYGF ArAXv/ULAUCrzBDQibpBotJKrVD3OybLgbhLbstZ0iUdfeY6DyndgbADxV7TIlpqT6mmlA4xpnfC zu0MVZcFawY1fI2LMshztB3cJh08IRMCtPlJiaWBXG/3UeIIfPSnm+25LIVgMtsTtQnYyn0GXcjc 1V39yhQ7RpNUxGt7rUhM0tK3Y4VJpVTqWNh8StLXDrBVNURUpn8BpuKKvNnBEGkDPL70NUiZ0/pj EFAnQDfogJHAgMOTLLFcqNa7tUcb2aOQrIHUYXQXbJkox/zRQYRzFKFJPENxxrIBjowNIKGQzBZt 0QsA1u+ZWBxr/zMi65NQGsCWyq0mIkW7y7u4rdKQ3A7dPMp1LXDG+D5NJVU7LcqjrDhMItijhDp2 YkvQgjLDAbaoe0IkI9Sm0R83fMMh4L2qLRmo8Hs+YbljRTh2ajzBBRsPU9RU+B/+6sprdcxeDQEh gNT3i7+Npa3lpdaOFcBqTXj/TbK5HdIprQ++BMMILB9E5SFIVc7+oJms0zL/yhq6UAU4zdxLd1li pEbMiAsUniE4Ot7jfcLCsrXxm9qRrdqqHSBbG0Ki4J/G+iaz5UEbFDc1bI4dJqRDLSALMIQofMwo vgrdVLZTQWW9wVNUodYlW60viNtLvMRywUuZ5J0g6iLL0eDvdv8d8bHAIP4CO9AEJHcegY3hDtwW x4BLYr3A6aaOmnggqnHGtUzC1YPU190mFy3UkFC1PJhMACsyfdSvearLcYQTgQRdk63aqy3k1iIM /a1TRj5JSnyPbt3Ij2yyTv4Wa/SQmFqCbThVScN9dH3BlgDmL9AEpj7LyOHgZG4d8UXlr3QnoZtN /4pxmXjCOG60HRXk/VFcb0fCiCC8pjmbmjCS4ishburZa6JHN9xMyPxWSJ3RGb0nARyVRS4eRVzS aT3AbL3Ncf3IBZ4PunULyIGLRQYjrb6lmaXq9BYlal7qpb4Apl7qYA7mEoBZeLvqxh0dYyqvTPE6 2wYrceMTHmf/4qQ91KNw0RulMcbUGFtsUG7kemz3JRAzo1diIL3nGYIEXSneytskCDvFDi9YhwBM ZeMW6SsNt9/e7feQ8lnQOkkx7oznbmXBc+3hSeouT8yYbrJ8wqeuBPFuCYQwrvjuNIdxs9KKQyFy sTCETI7ocSQe1MpC2c9+tBWNPMSXhfJpcTn+PGdZq7BQJpiAwiF0Ex2DzDqsUqy8TdhC25IjKors 3wGczW8NtwPOu3bf2/VgL/lC7nbb6Z3+wEqU5f1wEL9TacRy6qe+AEpAAD4f78Mbfr948+9SjFAH EepqaNW2TIbTNkIKo9J7xo6x45dtZvDHcL9m7BfJQXdkCiPl/1wLQADSdbRqP+S9EOmMvJxHvNtP vs2Vbg+9jy4OSe7m3umk0oY130mPZ29aNhaDgl6Iz/gEEP2Lz/imLgvjPuY6nZSS7y4fypCYSaLs C17ehBTVQkhskyzLc7D7PNo+6H9Y4jq1A40SD7CqbzwbRk1hD78ozFbRBQgLQQsQLxCHEEyJLkwy MhpQkZKRRpFZkkY+lZEPUJdZoJOgo56jpKaepaarrA8PGhqvsCgosLa3sK6vuruuubGxvMK8WQ/F xK3ErsmuPlUzLy9NTQFNSgQESkLa10rTBy8SJCRVxrqs6Onq6+zt7q3v8fLz6q5QkPjCwbq4sD4k jhyNAzhQhv+LgeNeFCThIlq0cQcHupAgIZo4iuOq/LJVhRwJFAMpHjhA8QVJihdRUoRwIAA4ly5b BlhALYDNmQtuBiiUaBHAgJNEeTIWyUdQUaSgbPr0SRWqS5tSvcvla1Y/YL147dsVbOuwr2CNHetk T1ixUfyqoJhxYJq1a0IsyBWyLRuBaeHU3oIilp7fv+/6PgVMuPCqBz4SG03Mlx9VWf1kAKwSsDLB jB8XHowIEaFFjAVrwdKIyyMJcaevYFRZ0WK4ki0PsDTJE6fNlhB2ztxpKJrPR46MBkXVSVJTSqWO WgrFtPnx5U6Zs+oKTEOV69cf8zMbNmt17d29IvbRNevY6+T/JEyUtkCJBW10hWDDRjOcCxQaFUMy zL+/YHt89SdgPFU9QhVWX90DyyPZaYSdddYRJBkKMnQEEkgf0aIhCqghNI6Bt/jyimgdDQTSDK1V xJpsI50UW0wB3BCAADoNkpMgBASh4407IfICZ8BpIINwnJiDjnKoWCJVKqpItUpy7lwFWYjidRfe LyJaOYwGwk25JQoTXRFNE3YREN+ZHQhhQxMhvHBFR7Y0NuCc8yyD1j1GCUbnnmgJmR+XWIZ11S2k AUfZoSVmluGGGioKkJ9B6jPaZSGlKAGKsL1wW4uckjQSTDfmNJOOKdi4gKg+hvMhQIzxJec6knTS 1KxQMtnk/1PGTUWlLFkiOMxYWnJ14Fe+CgOFDwGRFqIvVfxoiDU2YHMmXQzEh00TD6n1KDJn8cmn OeeAIkue3pZ7CbIGPgpeVvbgAqKQiVHGkWSmkaOWhtjRYmAtBjqCy5Qa8GsiaySgCE6nOtmUG4s3 5TTIw4KUSsCpOA3Cm0MKGdhYccuhw7FxQjGl1FG0MrckOwouS2wv+4gbrFZYVsnylkIChN+/wIB0 xRVtKeGzmWfCIAQD1XYwMZtilhinMt2a61+44sJrlNPfduQCvSTAsjEvW2u9IC7kcZmY2BHayxF2 DjpYc5CD2oKfRh4WrBJtuMEk000ytZSTAIIIouMgpSJQ6v+pUpx66iFMuKD41UMGWNzUZ5kjiXCV XKKckkg6efI7UIi27sxccRc5uFsKWyzNWwEq2UEX6uX2ODxP0820MAht7QJ3YSsBSPIK2bKRVBcG YMvFPJKYncELiJjik/kezOix8IXgstFXpSBlFF73Li7K+jM2eSK6HbC8iY4D0orRjDSbBJ0e3LBN p/7dt+EhQLCAFPXXz8RPAUHiOMclk5WrBDiy54wMc84JhZISeKSYlS582hnd6M5RuuoQ61/sEpIM LvQRjcgCPxySRhPaY5f42E4ItrsGTbD1grfZgl3AQwvyktcOs0TNd9GhoWGQlZ1bPKIxjutaynj1 GEC5ajT/bXuhEnVxj3tMqVH4mcw4UqIShulGNog4BCF2YrhRLYBvpDJVAKRAxp6EIARMSNyQqiAc /33MckERDhxTkQklVaKOS1ogk+DIQHRIaWXb+RXUDrOy0+1CQSzjHgdFU4vrcMgabsnGNuhSO6HZ DhtKqMZJEFIO8QBrGUaKoQ7vhEixdGJsMxwlYR5gkHFASgNGgARZyqIVSfUjlsFgm4FC98LQbecW tMiQ+UzDGpGwyCQ6iY2m7pYwHvXNRgo7hP6upjg2LqiJnMhmUY6Cx6AYQQZx/KYRljIcvtwRZJbr Iyg0FLCAAeyPVhKXPAW1j+8Q8RcCccS97sWoC8XuBm95/88kUUhQulhAPt+4wkTMt6tgFWmCTvsP oHLRJ+OlUpX0QIxBOPOoIcXyWFurpWM8uBd8DCt19+RVVdwGRQ+dzyQloZtJNLUbm8jopjGakQB2 SqMgeHFHQcii/Q5hL7P5A6TGQs7kztlNpZDTqTLIROUUeDkEdgwdM3jGPrNGJQwqw4ZomaeWpteJ iVqnQgwRx4b4iSIOScAtPovrJA96pvlc6wAzWKjnvBqssRyDhrKoUMvO+kM9YZQeXKIBeg5SIeC0 sZAbsaD/GPNAx3yHI2W70O5O8xGUTHGm7LPii0SVMJvQqJnwg19OsugsRRxkNNn5SliN4b9JlHUp 5xrnJP80Ac49ptNWDHQSOqIxA3zZi1ENBQs8TEE6evpCemPTgGcWpZFa0GIG2A1HSzAZV/cMNC5y sasSTiIB1+31c9TZGESDVyAPLmNB+bnoYQNzLLRGJEiNk+XMuppSLhXJSpfFrIdQ4laVnCam4YhG AJZZ2prqpsGlXa2PIKC4xDHWH/CSbV8ABKBUaEKOlNDEyKKizlsdaR3TuAIt1GIhR7p4r8N41X/m yVywYCVlgOqIRiSjHgJvSAJiOgDP3JMNuRyUG/AxqAUIsGSaiOk0xbXurlJnTwpyy1u8II+On+e7 XRp2voFxxZDo5S/fkSdsG3lA95QYp5AKCmCQcVBIMFX/zJKoSCTp6xFMIDwjn5b2ELo5hAsKwbzK ICVWGi7Lkj52wEpowtGiACBzZ0VpBaoDWwrN6ov5GTDRxLNpLrNTc238CsrCwmyfVRGKsIvdII+k G3MBL3xsZ2T5vAcvqo5y2yADGS/L9ltjWdBCn+eKQgUIzHXiR2ObF6QzHyi5WaLgXyGLM1sgpJiv sXP6LsKwT1WERbl5sJ8dXIibCJohP6GMI6bKXDdb2VWkJMskpHqscyanOKbc48lqBepRhAAvLXTk eaFtw0ECS4ZjxTFaIVJeEF6nrddFQexixORp0TU+S16yfAhwgwRfCrmDEpbaJPurb/2iCkQtB7ic Fwtk/9fpLFAAzofU7a9d7lq5of7kO3sJDHmRA0OomRtKXJI+luBGNrcJ9260OIjc9G0nSO/Rj5qn QTweRr2mnPZQ5LlNJkUlFQK0nLzDSlU9NkdPUDjVCJtAEeRuKM2/DkvkJtgd6R2LIwlpIQnGZBJM zzR2s64dJS15wvggIBsJVU2UI17crmoLUWDjR55mCcpkw6zTM7hCIchBQS5983l/dbk7XFXHcerX jU3kx2xFKcg7JZE02gp6nWGaItqv5FNEbxg1lA5ooRriED9irPG+GVU5qiOHKCsnYr5+aEo7Rbjx oFgT2kKSt7eTryVnGqg3TOMEadA6JVKP5t3yglU/I//zV3gLCisJgylM4QkMmAIMiEY0uhyeAJq8 AnYZpet+cLIzHyIz29FvNfQla+EmU6dy4EIejwA1XyZ6rKA5ReJuBidPhARK/7FztvAuIJQQ7IMS CVZ06WMSLcIStwEjf2Zuv9cjPME86RZVVyUgz1dVwyEdlbZA8nB/boFpa8FIUhYoAuiAy8UM8lZq p5Z3vqF2O5g+6eczQuB+leR+8vcE7kd/1SIEOjh9JLF/Pbh4s5AvnfVZAyFd7kUdO6ZfolRjttRp ayEmmqcQv1NWlGWBEJgOyKeGYXFsQ8gO5hBg1RZMHHRgq4FgrzESJLhgyFQIyIR0ucETPPF70cAE CvH/E0clXycWD/vGaGFXK2Z3Cnd4fCkwH9WgSW7SeMBUC78UhNxHIJ9QSwGTHmOCF9OQE7P4M2YC he2XBB7gfrv4BPOHQleIDZrUIvq3FlxIC+DXaeV1KSoSEUrTDyWiLHFHT18IZG4CDhkhamU1JJZY h0cSgwjHfd1YQ6GWRN9hIVN0YLLRY1PEGsukYC9BdOAGib2hEI/YEAUBKOM4eigzR3OEOSGzb55I DxdweLN4LXhhir4kUtwSLmn4gB6TMviBEusBAZjWFtNQDUqAAHQxBUkwBR7AARyQBCJZkh8pf9WC APcHUNOnGvrHahG3YgGDXUCGIg6BIpxFIjfTIBAS/4SfhAu0QBFB5hD4YWWQkBgE6I2GAZF+cXm3 gGavwyGnkW0OoSIY4xtJx2dZCXyOCHx7txlc9VEVKIPPcS7IMUebwHzAZWLuUJAIQBMEcH/t4WQu 6YWBcnB46Vd06DF4OBrlhTEWOZfUoASnEpcoJIVJkAQswAIluZgj6QG7OH9EMx8sORIv+XE9eF2X knlCdo1X+RCdNYmLkhHI6BX1lDYbkhoVsTOG+BHExkSWwJTeOG+fqIbCAz0h9zVqEXTXFoK+2RoH U3R4wxKz4RsYgxpThxDG4z3GZy65kk1ld0ciVjkC6VvtwAAFWSYI4A3WgIhC5prXVx4vQ0hJuXqW df8drTGLO/gNZPKEuuiRi8kCirmYikmS7wl/dJENK9SSQAZkmRkwKKEaLSKUV6lW58MoLDZyFRRn +VIFrcEzCPgCsTVqY6mUg6FDzSUlwLBBlaIqAxGCCKaIwNmI5qYwRxduXeksijN1FXIPjcMJVKM5 rUib/oiDHQN9x0d/WDgxmGRXa4dpCnk6FPhV8rVha9gsVeACB8mjcyktTwCZickB8Tml8UmSkVkt F7Bx3PkNeLVqL5l50iBkGIktGQkOrqGIFhGIZjNypXEhQZkenSlk+lcRnvZpFmqH4FgulhWetxA3 B6YqoNEQaPp7g1oIsmEIUaeIiAh8EpBFm7E4rEL/Hg9VLlDyJJamJIIho9BXm6RwAfR3eNfAZNiw ZLkzfRZhioEST782aXS3UtLVECJEQnYFNFToAUkAACJJpY4pnyMphfUHqtWghTXZaluIKenTEtQg G00wqL5hptl2PvyUGT0ENxgCZcz4VlpoEmLSdqoom0ppnRH1CtJjFRCycCYylZO4GiSAjYL6iAmG ou8zG4faG+rhEB6yP4/SKt5qGHeIg+oUXJV2CkfyBARbLTyan+IlmNjChb0EOkQqat2iJ6FUFa+g YwrlFrJqJggQf7Y6n/O5mEswpSK5i5ApfxxJqtwpZFnVai/5DFMpJjvhFuC2rMe0Pm23OxjhQsqi /y1713YQVxH8yTNtV6fKta93ai4U2jYd4ZseKHsX8a5CpYjwSm6HgEUOQWGLA6nChw956pwBhCvA kyuWmkPIBwUKMAUK8KlAE14+gzvzsaVuUppeInehNHcxZKQ9+XCxWiZ0kaVTEAEhqauC+5i2WrIG i3jBKmRvpa2XCQ0HE27TYJHLuqxQR4I2S2eq0k/BZGfsU4gDyjMqK7dyd7R4mglI+5OQQSKCxaHn OhAd0SEd8pUqerWApiONeBK+wRDJ6SGMU1hiq0q3Up0BGx3Bqw6QWS1XWBfe1aPihX+4NnAwNEgl t5fleDYzEAJzuQAbNzQca6tSKrhUSri6iJ8bV/+qTTCUO7MzKIEtLEKLo1gT1JCtdkMSHocpLuZi 0FB7IyESMcEp5aeQGDh3pHtYzaUgOOZDfho3gDqJnCGJUqt0gmATVdkahPYQj3pfjUMWNgi84kIy ONqPAUsKCoCfHHl4tUZk4BUXO0ofEwMBu2NB4SPAcSfD5fhBzzAN80EtQ9N+Ifm9ghuy9Em4uzgF 9dejMtsW18gzbsgS1GA4oTox1SAN8tq/nrK/QqkSUcaMCIhnodU+bii60zvAx7cnDqkP47qB9MJR 5poZQBcNEYGPDAFoDwZ8FvGnP6IeCLG1j4BHRNG1TgMdEfivgfzBpmAET6AACuCpWXp/FScfCGD/ AYcnl4SZSW5xKc+mYeXJqqG2UtchDXBBNE9wAQQbkorpwyLrw48Jkr1YfxsHSdSHgElzERapN0Hg vAGgnzLLvuzrGgGKxZ2VXWISDgKKgGZqiAbmOTgnxhiqc02ERAwIEByFbtKswCHxoQqmE+EGiVmr ELHLPMJndcrMqZbKORFQzog8wvJhA458eEGgkqRKAAKAf1saueUFw6KTqQTCoO0ZHwxAsCZABKY8 uIw5kvJJskNcxIg3z7iGjt/mPgTAxN4QI7kcrJOLiBYBDkO7Ozaprdd4kZ8JDXVMUquqzIAVHkOi CX4iIQyRtZxxX/ZCEethCAqzWtFEaIzACAks/yHdRNL0UJtEEQoAEAEKYAKH/ASMzMjYoJI8Kqp2 Eb8rpBDnFb1kN9VEOBpKSgCSSbCAi6sBHZ8fEL4cAJkli5Jqey1bCgHbmm3UYMvXQtFNAFDBOhOm aj8sxCIYjRI2icSG2CJ9d5XBrFapqpc8LTJIa2VcURlSxTgE4QLls6LOeBroyRNRN4rYiwgs7YKU 0j/NOdiYaId76QFCbQIXkLYMcH9ITVfzUcJLFs+TbDiFUJr2DJFfZkqcPANkQgBEo8pd7dXx6cNW OrK9CH8Ibb66DHAd/dbO28U9E9eQlGeTO8t8XRJDCQ7nO33WPcu7TBEspjLgwtnJQ6EiUhnAsf9R 0lwiB6EQLS0Osdeo4SZhjUhULf0h+QQiHyXOo2TfnCMPRAAARGACDEDUCH3UdcWR5SuMiId/CwDV sP2aRou34OcCO9CeMAC4PcwBuAq+A+2YJRnWJEvE2HkBPOoN3Cm5wcozLBs72GrdN9AeLLmDbbFa XHpM/hvM7GmIbkHRGJ0RIo2BRvut+O0OD0lLZYVha6Nul3HBe7cQkhiIFfFgLAh8+7MZjtC7laGP eujd+c05Fh4BJiDaI4ydO4qFhpdxjwzJ7zyrwjh9u0O0TIQ8TKkVSeomsygEowyZuZqr4NuYJCnE u1jaSs3IlOzWMIV+oGsNcekNIsTcARDRNPH/vu0zpv3p4kJGs1FcCCkikwWH5d+tFWd8ZjWHNQIB q7IrmkJVohQjVPjKEKAOFLhELvs4wOL841DA31w+1AT7BPEB4mKOsCZMV+8hLWWCDQKQrTPQsJSX hodxHg3RECMUl3W+4SNpyiUp1iEp1u9XhSqJAFn6tiL+DTMVDTzj1qI4QsMevzvYHpMbv4n7KeY+ Em9d498+gipyM+Ch6QI7J4bliiVFGY8izYydELy7d2iqRbtB05GItVorGQHhaJnw6jzNqbLO30TA 5USdtvC3yGI+qtPCZPd35rec5tXw2sZeeXypDw6aYjujvU/qAYzJmCSZ4bo4sn9b7ZBJBB5w//GL TH/cZReZJMUkOHHwQ5g4XA1zCVA30A058eLxm0ncScljCkkyO1PFzEIKIY0OP8Cywl6O8S66G82f 6aF7R6iOOCoWwxuOOg6Jg69GIK4DdOWD/eN+MesjAAAA0OWhDOaOLC0EnrwqvHGPvHHxbOCrlS0y Q70ucwzgF+EISCb97JEjaZ/2+b0jGwGqXM4RoNWhnKU6amvZEKqNXpwiVIvzgTukj0lu2w03PpjD uOjnKwGUbO4uPoLfrt4Na+9JEsJ0cnkKQi/StdIQYZy0iwgLUD8E7zd+ZgiDxtIF8UPH81+aDvd8 GIEAzQETD+CeOjQYfyZ8T+BMfbJxKYrCqP8wFgEnDYt82mgdSSMmzd74Bi3WJkm4FD7Cot0DT9AD 2MmR1UKqv96jcg0IAS8vVy9NTQELBIuMC4qOTUoETZOICwFKkQGHTS8HTQeehwefpJwQEoYQg4MS JChVGg+yD1m2t7i5uru8vb6/tlC7wsRZwsDIurUPs1A+PhoyGiQuJNTW2CSpgwcQAd8QjgEh4Y4L QY6rgy7s1OwuMvHO0RpGPlDMtcn7/P3+wMV0QYkShcOICE8SMmDwZKEQBA6FSJw4EcFDIRYISERg oeMiTAuaKPr24hWtfMx4pcxXpUohVk2QEHgyZYqHmx5qwqiJU4HNmxeCPgm68ALFRZI8Mqr/NGgG oVCHMCmR1KjJDQKSIhFYIEnJJUQ3PnWCGhVR2W+gXnh7IaEttlgn/8mdu++YMroqZ2mIFg8CCQ1V 3K1jpdbbpXMpEARJEcSGoxSQEwcJsKotk3dMLjOJZ89IPVlQitnFS7p0P2KjgxXkACCC64SwGy6M qFEIg4cWbwtZhNsCx6XAIZWES8uWvlsome1tybzlFUpCdtJUyADGEwU0L8i+QAABgg4ICNgAjrU8 1UVcN4E6cIUU2Uw3FIUPeXUqVa9fKakPUOqpIbP89UeYK9a0tNdJx5mmIC+oQWFEaMGE9iA+xiVI Wi345POMDC6gEA0JJVlTGATeHHBYIuek/0NOCOZQRpkrrshAAodMQBDPjfbUcw8zFC7o44+9pGZL FB4QQQRCNcF2QUS2UTTbRQwYlRFGvi2SkUdKbXVJWwg+kOFx+WSR3DPNtRRJdFPsBMOa1cFQnWxP CBGUUUYtdV5XS3F1wyilPAfKIfadN0mgmUwSwFabYHLDniGl1UlZo0DQDSttucLcgXEBqakvEOLi ZZgLJgdFPC1ZQyIr3qCD4jmKnaMqBCsuIEWLrZR0Izw3ymDErhkKuemvPgo5EABGIuRaBFP0YFtC CBgl50MOeWfbbd35ZlF4EmVUmwUPLeJYJ7DIstdKYiaIkrgaeJiunxVJh9uSDOS2m0RIMf8iCVch mbfVIpyIZQp7n0yFiZ1cCUwAJocmKhIiWKn3lXqgJEqKJ564MoO6B4IK7MZihrZjaBRqLJe5evEl jYxquUCiI445EsS+Qah6CTkksrhAOJdlMyOOPuCoK4QWciz0jwUV6ZoJTyCUUA/ULTnRBQXE613U 3klbtW/carubRY2EVJK6s6BkXC75HKguczs0ER4BDEyxUArdcWcRvRpNFclUBXMikleZSKLwWI9C AGm9WKV3sAD8gpRwogofapZZe7p3hQQHtIVCuBkHPXSoCO4FhQbPfD6jBnR5GbKXPV8jozs1O2Kz OZckQhkENZJoO4skWhOP7rnWM+GDPjz/eIuvm/+ozzJjywUFBgURUSTSsUX/JLzxXoRAAQ8VYHVF 3M6bp5ZNuIKCcskhv8y56WJ6+RWKEOBmtxPxhpSgXnECsYlZKeHw42P9F5VXB9NfwzTRMNkBUD2f 2MQN7pdA96iDci+YwcX+opeUFC9Unyofj5zBIRLEokf7+JQzQKaBz8WDHS9Q2coWwJgFvO4wWgLH KrxRjpvZLh4PqIKMeucZGdwDZJ26oBBLU5DmecAECGFa0qYAm4U0BCJPul6TqnctOVWRIrsJThNW YZIuiSw5mFqOU5QgL/JMhV9TyYh9RtGvUCRQb5GAxJ9EcQiuMAIkdjMUAP2muEMdzH6b/zgAf9Yj yLRI4GKX89AsoGHBISrPdJ8Lm3JoARoZVaOEnxITMMSWDxPOiBoQYIft0mFD241odrYj0ThK+QIm 6I4e0LDHM+5RwuEF0ZG4RE4ymMcBDhgNNsZKmkKEEKd4zYZrVayiUa51G91spDtLOQQXMSVJDZYt Y3u53AygcxQCWABPg8JKJvp1hfZI4AozqALl4Ai5UbRHLHUMICXqh7B9gc8rh7rEnhS2wD8Jsj+o OCQiFUmuXM7FS59B17josTsS9GxcyVNJLvCBD75QYxCpNIftXJTKcHS0HFLoqCutEcbP3eMeRpBB p0xn0JbugwVGPBLSPPAa2PRgNjg9Zv+T5iavZ9kGBhiRCFBvU7W1hQQCiaTmuMonrrClryUSoAQj sqVGpAAKjuyZATolyNVyvpOdfIqKKf7YPv1pRVCF41slyrInRJQiQBSz3CtaIjKX+gOhB4oFXDzZ jtX9hXS7AJOnmHEywLjDBRjF6EcNow4advRmpczZzm5ED+A54xmZDIZdN8ugE/SSNURQwLGSuMRm VidK05oWm6hlEaflBqhCfV+31gY3R7ClCphrBlOdmtfAoCCqd5PEbs5ICTaGj2JcHSgKtjqDc7IH uIgYJzwPgR6qyNFOAjTrGQUQgD3tM3J/4o+k3IKCuXqukZzl1C0XCZjVAUZ0NXLlh6T/kZrjjcZ0 JyXVYVNIGMQuNpWCXEU3aDgiEsHjMzuE5TM8w+B6hMZL6Y3w8FbTvCc4T2mxuWlD5FQ9h7RJN91p km28uSagqqnD3VrEfATx16VmDn2XgmpbElieqo5Tb/1JLiLTtb5SmMJ+nDCr3hKxla7kqxF73ESj vOLdfoWXFKciUCykARrNSbgXPFJnNXToQWnwLjDUWGojOVkyKleDQ1u2BjvaMhwQqfK/qYxv7UYq o72crLAN5kzwfmgM4l3ZkVCA6WdpGswIKHHDC7GOMVPr4Yk4kyJp+qlublMn71Qlgh4MI7omialY sLmc8CyPVgBkllCgswoSTKQ2tdoe/zhuom9bGbImAKiI+0iiPvoTmHf3eYiwuMetkmKLNjLtOU3+ eZOzuGgoq4GN3e2Qy7rTYLnKdjIdvoPZMggMmF1QhRRetMCnMuV/Xdm7HU62sLqSBoNBdmzOQuEE q+ml85j2mpoaRTpFOa1QRQwvLJb4Nm7CKW5au7ZYfw0uJQujXpmjjba02ip27HUbmyJQ5a6a1XSM 7t7sqMCBRTyfSMGXWrvyJ7PoDy0+dqBbxEdlK7ebbNPYgSnX4UGdMfsaFCRfPqic7RYfdmdc3jIK QwDuAqsFVeIO5SdHFw96HKiHPvyMPR7s55cf9B+BhjcAOEAEAHhAAUhMWgRuohDpNP/k3gDHolGa GR3YuolNAY+IQyodnkOk8GKxwNhyyuSCbfy6b3Bsq1jO2VWtXuzwrJ5ufSIBqHD6zW9xvE/BBsY3 6Q6yCQLgk3s8MV5s5PZ4L7+lmKARDVFuMZUgwswqqsFsSp5rRlPOFe9I5dfVqRBWp7p9uFOoQnLM CB7uiHqudCiNh4Zuz1S3OpBcHqQPwJRYHgAAsYJpNCZuWDazed+jO+CkNcU27tOiDpyyOJ9OSOBy 2VxoyVoyA8SWnPHwYWcoCCEBVKOTuYZvbiEkTl2S2zG7B6Mv+4IwfFMwitBWbqV5gQQwqXB+BJJp mcR8x6YcVaAyInEz/EUCBuZf6tD/Dpl2KXb2SdPQbKNDfLjiA5+EQjugWKJEIrUzQzXiAq6UGeWW bVQGDQ91MvYAYVWnfBfiD1HAAizgS0ZyExGANNADG9oncI42RRLRAUFBTLJRYssSJaeVaAkBVLxh AzcWQajGfmcDC4FRf4PgVXpzY4wnCBQzCJ0QQazWHl41XVaBXWhVL3cSayGRLyFxKPTEOGnhRoDI ZpbzeXWVXkA0PNDgQx6kMq9zKiTABK1EO6nUdyFSINgwgiTlV+VFWQmWKy6gATKYQvEVZwV2bWq2 GXZ2g7NUQqDzYLPggxsjgbzgfAWxdUZzhLFBPbNxAdjxJG0XHUUhEVFyYvgWcA3x/wRDhYzIeBvc txsLY3fKZTZf6BLOdQgPR06d8BKscAWU+Byt9hxyeFbnMU/2UR5IZi/RJXIQhxX/cz/+VDmV4hYe hHDG1m7CkiGB4QKwcwkDwl+FgSrYgG2w90k2ODrTUFgMxSG7ozItOEP/xQ4503ScOHVABDLmA4uG eAKC1ks0ZRPWlxBToDQ7gR3YMUy68W/TcoWJxkQM8WFpoiZv1015Qgr4l2r31wTe6GTyV06isI1e 5Seg4CdicUZFljeQ13hnhCdqZEdFBjHR9Tc4RpO1Un8osGMQZY92ASYo4QMuwCIt84dswQ3qoFgh Mk0bQgM+RFm0kG0JqWbtgEIcGP9KR/cOtOOBM/IxwVORENKDGOlS70YQoEVTT2CECYETHgAbCqAA DJADiblhJbZaDNFEs7GMC5EmDMETbgOMpkURagRe7OGNhOA/7ISATuZGqfAShQAwdXRjhcKU5IER 5DFP5lGAeMOOWtE4VqF5ENQKg4gx6BVh7FYMJBMNLxACLeQIBwOPqUBgI+JtHsh6ukOQC6VpoCiD 1+ZtIOKcAak6d0ZResmXfZleGrmRXjd2SYIsg/mRT5AD1+ETCvBTj+kQyphTlKloblMTLMkQxqiF dJNre4JOZVgI+4dj71cKbfgS8CigZ5gVcVRdjNA9WxM/9pInkVc4msCUm/BHA0T/SOGTCs01UNQk i+3GDIEBK7AjAOLQDYIEDi/wDZeQOwUCOgwVC6RHZXYWeyfEDrYnGNWQMgVyZiaDSRgiEOGpfCcA b59lJDbhGiFJktZnhYlZAkz0diV2dpfpNgxQklnYNm4DAz5hmWbXEP9WHVTlEWgIVq72R04pTcZ1 VbTpmnW4FL9hJUsBmyFBmwNTXOyINyIBMaEJjxJ0SOjXVPY4PLziinpRgSwCGS/jTQfzDZAqCDM0 CLqjV0v3DjVXc4YVnYFhbh30nJjKOzuDKSGjWUXal+M5hBfmPEukNArwdYq5ntcxBQrwdm3iJgnh E1/XnrTKkjThEzRBqwvhE9ZR/6wvSYV1alXs1Ch6I0dAFkiI8B9C9jgCxAj9Rx4asTbaYkYBxBUb 93gLgwn8s4aFcE6C6pvFoXxhci4VWA6MUVsoKjsk8Wb/mA039xaA4XQ9dw1nBpGZ4Q48ilh9Naol FDoieqrHdgK0CFpeR2hjFwG8eBOJ2ZgTUB2KSabVQau5GgFZSqvuqYz4CQNjdxMei58m+5iwhUXA gYYoMigL0FZ56DVbVHJ+Y0/oIRLWChxrEx5cw62Oao4Ncx6vBinGZa6Tw1WDKmZFihLddoEs9DLi 4KKXEAqywwp9d69+RRzFF4LXZpfskI+Z6pYGeV48crAI65cCEYRq+1muwaqiFf8BE0t2E3Ad16GS b6KrHel1syqlwQobUqqr6FkTumqrbRIdTZhiAtM+2LpWN1ty5ZGH51FwKoatz4Qt/QlNKyty1mpW 4vo4gjNebCGo6SNmZgtofeaKoSGNL8AyKSACLQQO5oAoM6dmBnZYl4QpxYeCoXpmJ6Q6OsRlYEaq 6yp6ZythozEaBAFTgMkaI+sar7qrE8sAE9CL+vkk7YksyPJ1HjurwNqrvQqrAbcTOoF9lilUTEIw OTs/8+QI9WMWl6BWRiWhWUQeyGQ9sCk/BPOm7St//xK6k3M5uOWbv2l1IjQuLbG6kOEqi4EOk4EO sTMpqGK1qjO2oDNLbnlzN3L/Db/bczdCep2EEiBUvH3JAQSxdb0Efa3xdQ9LkokpvW4ytxprHdan Hbl6HSXQi/iJjICrsb/6dl/6pb06VPoWRVn0CEALay6LH5UHtMk6N8ARoXBTNRqxFFXyuFTBeHqz J9NqdzNLKYiEWy9WukM0IceAIewVGKsbDu9KAIvBxq8LZ6bEu7S3F/ZwZxB5ZgNJDc6mQ2HEVKUq wkWqkRgwAoLWdb6UNIIJt4mZE3PbmO7ppUzEw0tEE3zrpU7qvbVamViqaMEKrCd2WhbhfZMbp4Rz pxhqJZJLNyqmyvLTs9DENVUccvkzEoCXKJlwef1TKTsGNkr7Z+bzYOXiMe1q/zOMgQBwEzOucjMB thaJlTsHYqOwVMGlZ4qiWqnQTHpN9ceAfKoaGYRCOAKGrMI0JVqi5bE3DMlz66XiW5LY0aR/6700 kRNArIyNOasgGawm27e4ygBT8qBWkkXaAk60tjdUzMq8IQRKgNBTnK3CqBHx4hvzmyeVhy8mh09Q Fgqn6YDNpWph7Mtk8yWXJQM1srotw8YEkBiKscAuKjs25KOZBg2fE0kI1TO2h21NFw3PcKMtRz5C us2w6CtHyjyrYcJEcB2u4QG+BLfc28gT67G7mr04oRM/nJi++qU0IbLu+arW9xMki59fCn4PAdHb QiXgtLIoKj9YxC2OOi9szf8I23MtlmZGq/l/8rcevPkK1sDRHS1h56NJ5yMLnjHM++gqxhwzIhAz ASAzkzFDf2WjqyhLPVOB27Z0PkRLs8DHYSw2Pn22JAxTGGDCQxiSD4vUhzyxWf2R7QwbUS2xPvG3 kHyxayKm3BvPOUHbSeABt50kP6ET1aMRU5JF9wvckuvWGHFFlttNsOk9PBvWc4qtmltqb8UnoZlO qZa01TTAnKWV55KIXTnYUovM3tHA34DMjthizxw8nhMNVUAD1NCp0elDMV3BjCRtm128HHCkLIAB vMS8N9GwDZuYrlECOFECEcCeSn0dRrjIHvu8xwisuTqZlwmSSRLPu42e87z/i7XhTfQiv02yCIkB TRagHSm5NiImvyp2Lau8s0Y1uZWQCHW0CRIgKZwAh+XEauWlSF4kxsUDQqbTOTLyuS6eDiSCDgQg AN4hQ+KwegVCXz6AltnGEhWIK/HAlS5AA3ycEqghPOBZ3z4IBUQQBRp5AvqNASfMGinc3wke4Kz9 vDQVfYbpAVIakmTnRFRdkh4ZG1z95lxdkjmRn41WhQzQHZTWkt1RVHKzELkhd0N1Ecm6U89ULZKr uLacCAIDZPRX49UNwCFaiJslDKDyJXoBSt4QAo9C6oYRAIgTNdwFqS3denvhAw/QMz1DomhW5fBA o2eZKXrJ5T5NyGIehJ51/8JHMlpjV54RQOATeyxI3d8NO3YELrEP7kQtCaV4nhPIwtVKM3bt3Ofa NzfN9D7Y4iwCt9xF5R3TEz9tna2rTFTz68pM+Qj0BAl/UzmfWd0GommafWUjxEEykEgiAm57uEWJ EDMEIAJCAAIFsNgQoPDY6digUwXKYeU0wHpyXAVc6cE9suW8DotR8AGAqd8cQOYccDRvS+xuvsjl 6ea+5EsDbpgM8bF0Hhs+MbIki8iGSfNcfc9DYYW2oZgXABE/P0U1ESVQFIxQRExzl2IptrMDN3AW ATff0zVmpaZzxIBISxyZTcAYsiOXHW4uQhkzKzsvMzXx0oY0RCBbq3O99f8OE2/r3EYqsJ5ZG8/l RMAC3RwFZD4CI8AaFKDsXgfgEVCeClACrPHmhd8T7qmxF/tEWOhECD7hsGET2JcQuriLi1b0Rc8Q UBIvcdMsA8fuV8TWyk2/r0xbjZC/DyNN0PoJ6JRIIEi6Os4xFCVCmEVRdqZCAm8YUOsyA68916M9 gjA72EZL1FmBK9i1xCfxUQd6c1/fPTACYG73QzgCAED91S99WwcAN0zg3O8a0vfmPeHmKry9w8gs S+ITVjgd9+xELAkeLekd3EEAP39MEAEtG1b0QhDF4TEeBAcIBAwMQhdCCIcMT0IEh0JCKQQECJKS CJEEmJgENgtKlU0QTQH/owtNL02lTQdXVxIzMyixVTIaGg+3D7q6Wb2+v8DBwsPExQ9ZULu7tkZQ Pi4QEEFBC9WZBNPZEAvZCDkXFgEB0RAvTCQyMj5Qtu0aVSQuLi8u8S61Pug+MjQ+PhpZjhUbSLCg wYMIEypcqLADERYnTmCIEoVDBQAjAHDgAACAhxIeFESI4NGDB40dT5pcGcEkgAhTFIicMgWBIgWD bCrwQPNJyylPgg4aJJSBIUQdGHWQZOMRDBhCCNmcwgCBTRhPCE06ZHXrBURZhxIKqvQRokpWI1FK sZaSjWvVAhAwdaAJAVKpXpDCe+DVjCuwUJBAUaVKrly7GCpmeOxBsnYk/7YtwIbNarYUKaiRW+Ct qgBx5UiIVsdO1y1bheWprlePXxV/Mtgl47W4tu3buHMfRMIjCkSKGDBs7MixZQmSx1Oe5JCkJEuV 0CPIpInTaNWwCmJmByoUESXvjyQ18cRJUrVPFtITsDAJgalPleJ7MmV37tbvUR/pd9T1rKXvk1Qy 2VxKDJjKKKngBUFdpLzACmCxoEDYa8okphtuUPziTGzs1FIYCS+gZRUCQVh2SQ6aQTAONzYxQMCC 5bhwjjqnPVAYPFXIQw8JOcrjjwb7+ONMMr0IdOGRSCap5C8h9EBRRRxEIVxxHY0EQBLDdVSSllW6 5FJKJY30RExhIXCBIv9CKfCEmkFl1UMhlDTCiHiSwJfKJ+hZIARU6aknHnz03dVEV3I20gghHQxy SICLjvjdWtdEMtl84gVQ1yoIviDKgge84Epg7xjmjoVLHkkkLiQEkFY2lYlAoggXUDPOONEsUMAE JAYRgGq1sNMOPO+IJhqOPNaiAT6lOUZbqcw26+xBIfwwAkUcjMDRcERoSdJGHDmn0bUcrASdSTut pCYD2eEkyZlVoTnIUY7UWYkSStx5IAEHKnFDE/TOSwC9/B4YcCj32hevJI5EZUgl/LUHKaTmzUUe XnsJDKODnkrgioQS8ujObM8qlOHIRqwj2y2RlZhDASNSI0A2MC8gDq3/AQTBAK5BRGPOC+jwKGw8 0dRDgi0uvGaYOv6YjAvIITftdLNQNElElBRlFGW33aLk0UYqccsBC1uGqxJIYe7U01c6ZfXEU4SY NScj9QIcd7320ntDvXXRbaDA92Iq8GT9whdnUlEhxVV78VmSOIEByHyKXQQ3uIoEnr5AuV+CDWss L0Y+bQwyvUDhjBEasFPFCwuwdcFXDBRgATUi6MpNZnHN3HgKRuXM8zzygDgsiNHMOGxhx9KiQcnJ zLas58w3b1sIRRAxLQvURsnC1RyQJFxHUHoALtfLaRmucxGMGVNVVoll1J6PKNEnvfDLzS/dqey7 bxP7Xoogvvamcinl//XbS4H+RcDEPUIqaFlcgOIjKbmIRxWkMEU5UOGgTrliY4R5hy2Y5jyCGKlC KDiAAAggAgasTAG4EoEFWHYZXTVuHAdonMrcAwHg7Ug18UDdAiAgtKLxCB40SAdpMkSqDhrxiAWB Xg+IEBHqec9rG9GelqDELZMMR2wuGR+5ZLImoFilEAxQCzgeYQH4tS9+BMrXDdbYihs8SH8HOoAc 6/KgK9SlFQfCy53gU6A5NeEth1vcZNRSCUwAbkAFCoASKkZHFT3OFZg72qg6h8TGLM0xyUJNCD8x ognghGUFuBmJuFG7maEuCCnIAYpotcNybIoc5FhNj+rhA1r4AHkZCv8IEnfJS2HsAAk2eAj1NkIt qwmHJBXYXri49i2uZa8lV9LSSs7HrqW8pTx1il8Z4xe/+eFPYHFrAh6/uYpW4PGOcrQjHG/wL24i bE6GipPiCpmJrgxIQBHToxwxxk9IzuBGVchgOzh4xMboMpdF0iUuNCABBx5KCAW41RNyUJVpYOOF 4niBXhqHAAW4h5SgIZhGYcmzHckgHkMToqgo2cuW7jIESEACEXzzNYmwQDhTmtIVoUiEbO3USywZ CU6+QoCkuEhA5JGfwPLnvyvUz5x2rB/+nCrOqnrqChVkhThZAUd+7QtPDEOYJNhjCbiV557ywaeg ZKbHx6UCqzOQwCv/OPZDWyjDpQoNXYXYQYIDLGCErmrdzSbgyRSWKHbZmJmKaiZKAUxKZjFk66xi pFHRtIYW6EhH6fDKWSTGtANPqIhvIBIcneK0WkTwwEyhyIFsTU215BMJuXJyzaVUQ2CoOFBU4yhO cz5oq1O9gVOpOlw8tsIFrdCYHVvhoHLgj253gx8B4QnPxA1ygde8izXmwjeRpmJBGnVFFWbAowm1 Axe6xKsuRCe6Cp1ULyT0TkQnAAL6fhIBrgoCNhw7K5kFIQc4cQ8qtRsXmbWyhvQ4R2vsQYIgbraz EG7eD37QAwrMlAWk1Wm1iDkc71WviqnNlkms5AHpjCQC1hGCDbqb/1ussuIVEljFG1/wz7+0oo5Q NW6OXzEYy8UVQhrTKABlDLn+ieeeaBWkfOilyPns5VJ1EcUqKhdXYX1IVHZNby+VNbIK4aIKDZWL qyIaA8KCoASFZdmrgoDYbLCIsAVIQX6rAVKZwTKWveOV8VgKugj7eUk9CLSFfXMCiAyzWhqZEhWh 5NprTY0jJT6JdEwgEwWgDQGdOJBGN/2XuMbighJAAahn4WlY5LiOsBjvPz/kacrRVa4kiOsb/VbV 8aQiYgqcTJMFNEDJJhJBCppgp14BD2Gh4LxF3GVjiBSQCtlCMGGOb0RvNYGblQCFrSsRiSYhAsS6 Kge5YhU3JEZSPP+vJrO9+rO6n9WDCUdgah8grUSgJNopWetrUQDAo1srvpfIRNIyMYFRVncBphDs FK54h5AJE1cJVcGCsYDFDDTAMTCPF7kBdTixDFPLgP7wQ+XFqnLr4qC/3ToAAlgkKezzL10XkIBF HkXFTNGgTj3Ochon3kLv2lLHmOxkC9VAXGf2mZeJgMxPKOy1JwDuNosgB4T19sqmETsDu5kcQCMH PVojA+MhdN1gTxKFKzw1DBdaSlA6tJQ43K1hpsS1/hbJS0xwgW90ZXWcqAZ4aZzbjGH1gledqywk RPFjy+JT4+VYjW9hGFE1/kayMHWnTX1VjMXQLop0KFlBIZdFJtL/yYJCUF6kbDkhF9tjdk02L9cr OtI9RgPxqAtgJeGqDBTACrdSAAxCaQUFgKB1+MVGEAiLoiBQG2Yv5IasdjgPCIQAAkxgTWb/cQsN hf36uBl7DzpAAYqcnQPCWbu1mlkR7l3v0dniUgRMQGkTmOlMF2CLmapiHvrwDS9fLWc6I254jv2K 8A7nf+5gVzXSDhxzgLJQBYAxXlg1HjfgOPWhQPwyH/XSOAUCbAjSKagzZXIlASQgAfVAgKqnXsrz ZdAwHpKgX60zbQUAA9UWUTfje1XBMkeXA1aQAzXIdOEmOzVzCXrHQ7wjD9AXghvEZ9h3hAwhaBRg AlMTBRFxAlcT/34ckRFox3YZ0UwkkRIRkAPs9w3wlz6K4B3yxC+KND/skR7ctFWtIHGBoXgSEiFv aHjPdmzu0H8IeIeEEWuXcjd7QR7Z5FDz4ViLJCgVc3CjkDESUGzAUiPL00u5hEnGghogkgojVIn4 JQK2F0qhFAO+BwIu+IIQhYMlcoM6aBWxQyLioHzTkAJ6J4SxBCS+YjKh83VIWIsFEWjvJj3WUmgn ICUTERwVYS1rV28VMTVTo2/QJFQmMBLfUBXssiZD4QhkNY3pIQTvg4Z2U04REiFzSHiFR4e4EHQD WIcUR4DlWI7jxSAXeGv4gi+UYh/1IReNI2MMkgoh4D+IGAuoZ/8hRlhJyIBJphEslDgXn0EAL5OJ 0wYDJVACVOB7MbCCbDYNBQB1EzCRVmCKwpdRK1IirHhg9+B1/8BstjiSCMED0lNM3geFwLERI3CS GDBMisY1qaVvJSYdAWcCXngBobQmQoEVMBCN+vEU7LMfZLRN+iJcUHWAhVeOCPiNz8aUd3hep/GN stYEAlAKBJRId2EeKsc4CSJ6pCAKARBelBNQGZd6nANhxzAbqAEPuTV73RYEAiACMQACh3B7VkBf 9TUBMHCR3YZYCDCRNwNuufIZ46ApGpU6mJECzycPkegPrLcLp5JXJFmZWUAREHEC8aaZvfiLVYMR 2DMRG0Y1NFn/JSY2aQTnhQDGk12kJjAwBU8hlEIZlFCxH0ZpN/oCVaZmThHHhpEXeWwYnN6IjoIR eRIARzQXN/OBeaYQMeOxjvYnZS6GVYMxnAbVjx1kJMlDfR9ScnPZbRElAkZ3BN2WAQhge2UWA+np bbpCDSWSdOAml2xlOa4kQ3TGQ6NROspCKtipIbRoUJbJWUswoB/wAUtQoEsQERMhJSopJSNgLcJh NeAHaShRYiJhk6uTA0+QoV9xJiBBExNAE7E5lLXJPrJZm9xULzl2Y2y0ooCxosH5T02pSXMFC3JV j4tEKU5mCsu5cjKTRhp1Csc5ZTKKlv3Zc7ggA5njAhJwAyj3/5cFEDsCMJeZmAFWOm1lBgJR6p7i oCsi4ElVIQK2oyKa0jgGJgXOV0M/YhohCaDDQIsG4aYB2kFLsAEDSqARsZlOmJkYthEXRkVU01qp JTZAgRNhwQA/yS6DoHtsIhMTkBU/+RRTUJR7MptOYY3YeJRrFF3cJEfwczecqi/kxC//InqoIEcC 01UFBFbzUiADFEFyoWn+U0fK1YaI4QtH+jSd0xj/8AB5CCKWgnIWkAHD+p1TenT4ZRUZgHtkBmex 020vMxm5t6WKRTN2BkvR1yujw16lUxog04izODJQYAQyMKedZac4MKB2eqAs8AFN1EQfhpmjqRH5 FgFcUz6VNv9RYnEBayIT6JIda/KTSTcUI0qbIzqbZcQeKeo+2LhG9FJGBXSGDytd1kUfnqdHkpB5 h8RyiZRynOcJheg/4nScywWHPLduy6BwKhJDAmABLeuyUzqXVGd74Hl7WJCQEYVfhikACDABJQAC VoBYrQQargSC9pAO63BL6/BBCWWulrkE6ZquBHqgBaqgvihaWEtM+sYt0nRiIaEm5wJ/lcav0Igu WZEwlWqwUPEUR8An1qgfC5uw7fSw7wM/CYsnFJtGdUKBE1gvk2EXSdZ5PzopORpBoidjyUVjJguu q+cYAIGrdagpK3sDMNuyxPqXVHd04ImQLHiesRNDNSMCCln/AtQaDabEM8IiREn7c8pDmcJAi3Dq CyLptM6TAOoKtRuwAQW6AU/oixEqmsVkjNxCBOWzjCe2fjJBUVxUFGGLLsDnCCX6CEdAokMpBEoQ lNtUjfshXX2Chnd7mwVkVmLVTvhCP/QyIJOiXfE4ClqZo3yTTn2xgIQ3go7IXrj6ZSggAdtAdOJ5 A1N6BBYArS+TuVGaiX85lzGAe0UnDnN5e3GWIpTFpKNxUrDBIaKjNHwmEOMqOsVwSzJArkMSwrFL u6UyoOmau3WKwlWLARIRHKMZqPqmEVZDvBeKvCbwBDesof5KURdQae+iCISgKEQpvUFZvUOsJ04x m+hhvXrS/8QRux7wUV1R3HKf4Id0EzEDhHkONB5N5nIwJGUvJnKDsVJHaBooILkQ4KRTuqkxKwD+ +zJGh4mbWwAZAKVRGsefYXwTcJGYkTPoYAupSwtDxGytexty+rp9BgwjTMKKYaconMKcuacveVP2 RoWieW/69mjHG3AKwMMmFHCrYxMbSlFhiAiY+rZIPMREbI30QkbXe8RwW0asvLB2m5Vj1aqegCf3 gr4Rk74j1DjslIp+cwDl4Ao0dpb021Lsxa2+kr+LFQBsvEYx60az8qR/WcfLWsB1/JfiKZdyWYOE SQ0L8DPD8iPq0AzAcJ3BgEnCcEslkw7LnEvshUnL3Azs4P+6jIwbBbq7ueuu++yu1+MbpcURU/OS JwAAjKYRIyYS/kppaMKv/noBHWAVq6Ov7dI27dMnqmybGq29G02puBldc/sv1pg48NFOnrBHf4tk 9jFCP/oJghuW39UXlgNrdFh9YLfMdiUYxMzA/otyU2qQbgy6DIyJBlylUXrAwYpybBZROUA7uvMz iLGfxvCtRnI8H+zBQWTPazkkH/zBHIwMJYM8jqFl+YwbvfiEujsEmhlvo1URLsySGLGgHbFvRCB3 k7a8labDdLeh8ZeaQHlG7uM+mNrEd8tNCfu2+mHY3zvYtBw45Nsv/jKI8eFQuKZrKrdI43GVmKIz LwBm5WX/GCf7Z10miZSjIm2c2pU4l3n8nbZ3BFZqBTFge7QtnjMjR+JgGdUgBTkTGvnJC7JBGrGh nz6XNB7swUYQRLGhtCI81mOd1bjEXkbAZesVDIt81gPxhG1Nte3Kizcl0DiVb6A5heT9EkI1aQCm 1zc8CAJX0QMnFrE82LeZvfIt36hM2Bld39f72NIFVif9ci83gUs2GS4dqyGLqqGwafOwj8ncWbLx IfmrKdJcif8ypdUopSjnv5hIZuoZUUcQUXU8pWNJOS9DIrRDK/XgcRTiGLVArulQMiYjRELkAk7g AkFEA+8cGxri4khD1lAA1hu8XpLJZdhtG963uweq3e+K/2FQEqHfQoWIVhynia+U9gRm0q8QXdF0 p6hCfJuP7b12273apE30HdL6cuaB89/yQoF1kgpoxcsge7EJItNRVlmgLdqj7eCyyw77EGqZk8YT LtQpZ+GsbZjQTKUMEAMFoOgdfgSKngGGLkMcOQ3XGhmSm60yng42jrT7wA9JQ65Li6vtlTy7+nX0 HNaJcchFzhAV4IR5quQsHBF7miWJxrUyWdfHOxImcRzXAbZBQXAjoqj5UZSOzd9fbuxHiSlXAKrf dL7z03L2cYHW4DhpRSC8ltL7UjF9V1kdY6S5ukvJ4ys5AmvHGUNrBM1LnXLsFMBt7EYtq0JC4Ojq yejzfv/HY5l8pGRnIxU099AzMk4Dm+4Pyv3OP07WyOAMkMnc9hvWRLLMZW1JQr7qiiElCPrqhQaM aGdv1+LC451+qbXJWhgSZvvQNvEVmGETBYC2rOzl8ROqccvfnPpNX3Xmd5MvPPqcGXtrF3jS7+iq Fph5CQLTU0adZqlBU419jstQqAAjm+qkcwTNdlOJKKcEbizN3DysIH50MQADii4E4skN0RAzkxU0 /g7PnU4DAN8PMN7pmjU6xwOL6xDd7MXc9nzwF0w6+jkkjCvxBJGnVLvP2t3qCwp+iVbrWrNhuu5v PmGhH/EEIMEmRvHrquMoi93EsxzSTY/sn7pG+UJOM0//8/TDP+Zha/UxHyngR2Alj//SZJp9awgH GB44IXje4EY0MqATz+LuAjJXMwdw7k4qDk5K9Ys0QlRPQoI+pVQ/rEJwuSuEnjs5kZfgnm42HkMo I7ySDmjPD5ue/QKvDlnd6SHMuj9X1nYvuz4w5EL+7XwPDJr5997dwsFhU/FG0LbeU2X3TMgYARSA vCcGCAoXFwwKJheGgwgXKQhCBAgEDI9CFpWWSplKNzebN1ecmpuio51NN02gqFdXB02nTZmvSqe0 sZ1KBJq1tQS6AUoLublNBAG/wb4LAQGvEC9XEihVGhoP1w9Z2tvc3d7f4OHi39fa2NjWDxooLwFB y8zx/wfzBwE39vc3Avv2zPcCIvaJEGFhYMB9BERkmBDDipUJBYJIlLhgAYSLGC8yIeGChAwSHmVo ECmymgYoUIykRJnlAZRrULbFNBczW0tsLW+WK2dunM+fQIMKHTruxIcPS45+2MDiw4kTGKBCZcEi igciHEZw4EAEwFasUbhG6EohAgATJsZGiGDiCQMTChgMenJhkVxIjvL6spAJk6grr1BxGjzYUyhe sGKBqgWY16ZYsnIBKxYZly5kBIQtQKWk2atXL0K/gNAEmosZKEyes0m0tWua6ExWSV2tigQIAeC5 E8Cs3j16847tE6DPHkALwzMoVz4QoMECBSZQoTIhx//EdxJTBElRcUEICExcZAwP0uNIGUbSqzfi 8hy3mSizrV7twwfr1/jz68/vVGnS/ixAVQEHFYyAAQYscODVV1wxyBUAXa21VloeeMDWEzk8Icgg F+RQFwIIMBBJB0KA6MuJBPilSxMHqJLKJ5+owsmLrJjS4gGfuPJKjbKgAlktxARDSiy6EHOZMbR0 lsmMqNDD4jwzzFaNe/tVOQ5P12iQRXzVpIaCBPHgxk8A9ZA5zwv1DNdEALzpM5xABSlUQAbNAbRP ENFRAUB1OYhAUUXvYNSRRx25IMOhh2rgAxSKouSooztl8+hM78mnqA/nyWAfTDxZ6emn+j311FEb GHX/lIAHaoVBWFphBRZWAHigIAAAjADAWgooIKECdD3RFoeL0EVACkJccGIkkaBogS+a4MIYKNDS CO0qrqwC42JKNPaYK0lyJgwwl2kC7jAoZpZZM559dkBoLIaGAm3pyAfqvPJmGalJ66BAAm7BxdOb mWY2sc8//LwZUHMWxDAnnQkdtIAIE0xgRQ4UX6ddRYK6oDFHHx0a0kj1GeGDSvbdJFNMLHljKaIj VaGpNYziNO/MNPt0qqmnOhXVzgcimOBXCwLtFa1EsxWBhbzmmmuvighrg1zJmlguAZ/ZIsqLNGZb SydMwmLKZ2DbkkrVsZwCjJKZCAAZMMcosyY8r1h0/1FpL7QrwQxRTkllzfuV89JLtS2qwWzv6gvS aMwIQMCYZMYjQZpsvlnwPstlAB10lkMHop9BIFAAxRFTjABFGWlsekcf0eARSCK5BKnM8jmqck6M HloFpodiCvii9/HtO984G3DzzlBhMMLxB1ZVlYINKkgEVgqmdauuHpSASK4R0HXBr3ZVFKKINqDY NrNrlq0uK9Gykgr6rLQISyuAtRjtPK/QH9grzXTG9jD7Q6ZkEwsAYHfAVj/QSAAkeuvd7/Ajn/m8 ZySDKxwJ5nGDE8HjH72hIG8Ut8HJOacgGTgC5gqggBiISAQLAFEBQJSDiPwpABDYGEgGRYIq1PAj Nv+kxnx20pMtcaOB6DAdomhgqES9pBuUWqASq7SUDWxAKTcTVYF6xoGeRQFCzHPVVq64Flp1MQLY O5qvGKChDtgFRAyQS4kIED5z+aJ/sziF+8YGHPrNI36w0BGL9rijK9QtgPgr35ryVwtgdOIYhwxG boyRG2bUzxXrCk00pLS3Jb7mHIzCFDWMcCjTHVAa+pIAmDi4OBEsjh91xJHBhkMQOg0HOgcJ0eU+ 9zkQIcA6QYAhDC/yAo64IDQcYZ3LXBYvk/xNXj2kiaaMUI2PuCA8MnAZojRlxCMm0ZLYdM0TSZWz pxxoQAY6noGi8DMt0morRBuahNYpIV+5E0SEIAT/1BaBLAsqgxaTURf92se+GfCTffJr0tg+I4FX GIOAVWuGLzoRwGNkYkXMqggAc9ME0pwPfbSRWTYZCMQs5es2nySBSb7UinsgwJRj8s0BHscm49hJ IDCVkys9hxfPpZFiOQCRRNxBOkFJoJcyrMKgqqCOknSqGzvp5Oo0hpEdaORQNJhmNX240aoKxYlN fOIJDPCUCgyoAt/EAADAyoGwMChoRJsVO9f5hCeAMXu9ImNb1XiBYpUoWQsloP2gMYPHReMKeMPb X/3Jvn+6ojGhoejb1oSKe5YrE+PqjDE0Q1FAQnJ9oEygAq3qEyBuw17r+OmTmnHAfPX1GCjloABw /xSQ4NwjcQIoCHJeKqcYDOSkfspN5y7HgBViZzvvWMYzaDhD04m0Zc18CTbi87dMOtN0TIjhL8Xj VCFGNVHMTBlntyuODSTgu08U3ge4egKwmrdWBqriqpa3xbKi04vsvNWEsGcIt7gljfKM513wGq6H fqYZ62qXH+/2V0neqBV01KMzBAhIYCxAFw9mFgEq8UYCNDYT3xIk2Pw44Hep5qjcBQomoYCpKfmA BKGB5GDmAUoJ3CAImSElcpTQwci16U3IYQ7lMPcOASyAN0Hwk01xmUsYjgZjF5khCcLDhBegjpgl qYZyUbKomJFYBqcznZMLpTEmMEEGXr6uSCZljv/NhnijCcDBdxPgxG12FQNgPd4KxuoVDHDgZ1vJ M/PU2kX5rmUK2WuLhto6VzLGRUQgWuNjNaNh0qyrFdAQJYd/Cj/7faYxpakoADOjmc5MlGrCYBa4 1jaZY2g4kqGRQBUIFy8znzkcPGyPOlAg2MAsTriipHU9gsDBXCCnH25q6Q1WeoDjUC4DyAlCBmIw gdFRJMg7DXIBRHDSXCKuO7vcZQxHc5GheoSYMIOgSHDHkYxg5DvPiGF4ngnNZ7ogqiypSU1evV0c qHnNS8DqeLlqADhXYM4V6EqeWWDnVelZrUTzQKwiUIJ2thWMhH7CFKagNER/Ly+PmFowNJzpHdX/ rYCWFoy64laRzPBXGOWrsJAiTLV8EjBd67ONlDRL7866pD72IfGU1sGue+QiIRIZdjSCQwAY82Zx Lu3HcHojuYMJRAQFsIKfOJdb3FxndMzAiEW6g2QnM0FuGlt1lKthBJeFxJfiAc9FvsPtLW9ZiFiG pgweVfMz2/ve3k1AvqHIVeONdc5p3eLPZFXFdMaqehUqAaDbSiFCp1HiCpiCXETkFozzVxkWDAYg SWPRj4NNwQWMRckf/GC8/pzlEDYSs2zRDB89kkV+7OWqW113cCATHUfUyTqqEJoI/7hhxBk20WFM Y2CgctiwDYg+3JScaQ8kAy0UgRVw66eLCCDI/9R2dtYzEqZu3ybJHVn1iTsmTUJF19wQQLd4vpN2 42LZ3det8kxcXfvf3f27KlgCm9ms7/F61atZQQSqUnB79l7nNCuHJyEU4FZEgCuEhjSPJ3FPgAAp gBe+UIFT4wvFkBsbx2C50VCBtCZJEmonUgyYZ08spxnkIySE9HmgAUw1pEOVVH890TuusxrrMAPt 4AvUxmu/51K8cQwFgXSKAzDB8VJk8hs4ZhBQFx1SNxBFBhALMBGjYxFHFgDcpm3bFhrDVSjlARL6 YkNOZm7fUYYa42Q1pGQ0ZEMs0zpHBGI0aH/3hwMqoAL712ZYxVUAOAJjMYB2thV/+F6zMislIP9f uoIrafFWZsEWG5IrIkIAddUIxQIJGRhqD/Y2tCBRAqRQylARmneCVHMsmEd6mYFhrCd6AAYcfhRD 0zB7DlR39PdDrdYlIAEmDwMiy6I4FsYmxoAQGcAAuUgAyBYQ/yI5AEMmYKIQdOI5UQdLvBaEueFj f7IMUxgoFxEmvXSNpeN2tfhT4yEo6YduGTEaXIiGp2Me9aFccBiHfJNmd7cES6AC97ZmbJYUengg ALACEQBwPWNnaJVOhehnX8SIaqErAJA0vRIBUCMEk0AIUeMLUmMunhaC6MJoSpAsyRCK5RJhjpBx jHZPKMd6y6BX63JAq5ZR68iOKoMSqoEpKHb/EQ/WOaPjJxbAa2VyDAFAbUFIEMyofM7xjHTidMjI QUyYOQZhJ8xAEUU3Ee6AdTAkN7qEMVrYds/AhVy3drwEAXLDhen2S+RoOuBhKBogMifBQyoph3O4 BPdHj9/1H05xArYCcAQCAH9oeIYXkOt0K2ixiO2UA0qjIYiWRnoBkSXyCJGgGYAEQItFgm6EAAFk T7rQRifyCB0AmSciNuUDc/LDCjMQgzQXh7H4WZdSHyNRbgvQCC10UjyIHEd4dEGoOJYDAyaUAQKA ALYFEAUAAroJAgrjSjc2HAlhAQsTAwoDELhlS1UYBBUzERDwW8C1Hc5WjVnHDNRYjRVhZFUp/xro t21dphEu4AMiwUwmc5a/8110aG96x5ZrpmZqBo9H4W+2Emdj5Xe1Qpe3cp+LaAj5mYhlYRa8oiEU 11YOmUaK5gh15QiZh3onWHLlsmkoEkA/l4ESKgwj6BnpcibRUEOfCZq2h1SMYhIi8ZIBgEbTdkob 1A/94AoC0Bk+JgAFAAPO5xwuWgAxwJswwJsFIEI+OTCxlTDQgQVToDChAx19Um23FDo5lR22lFMd IjrZEVzUSJ3VmZXphhu4IY7fEV1Mtm7gqSm5F5rkqR/tOabqCV5r5kR7JyrlBWdjNSB2ZitaAV9l cRaKCAD9uYhE85+RFxduwZCVtwiFaUsSyv9pKsiRU0OK9lRPpaigpEcMcSRIGPoCOeSKKflqyHQl teNL5XEbTblCKBUPRMhIQQg5sPmpkUMQCbFsMTAFIHAEBdFBb7JsORoD0wECSUAFIBAxoaOrE1CI VIBTIuCkjTARnDOFjeQvVhqV1KlLHyg30sVk7mYoUVVE1xSmNTOP6Jl3Zcp/aMp3cPatYYVOcOpF 8LUWXXErESJfFcIrYJRGvJJG+JUXePWQEIkiyWCCeFUJyaKgBYp5iraoQvJfMFc3JTkN05BAZwmm 5qAorEMC7IAbw2J0zxg5y4AQr/UbSpeqryk5FpA5c0KjQUmMvChCuUkFt7oV08ECVMAB05H/Z1RA FSyrJyWwqyXQQjkQMZ6zOVR4HdVIdY65AOFTEeK4pRuDKO92KLlnrXyjf9mantqqnk7Ulu75nsUD VnYGTlU0iLYCXxACIWZBK3BxNB6wp5OXRjAQTyFSVySSaFGTcZCJepeXgYqagQC0cpjpgqm2atRg DbSntLCmDs1kQ9fYSDA2EdBofJCgi7/2WsYhAkIwJ/xAjAJAJwUgW7kZA0KgjCLADNJ3OSAwHaAL uiqrsi/7siprZ6SrANWxur0qMTdbHbbkqToVZLakHTBWdM7anV/WhtMkMtXqt5/Cf2b6tGnGlt4V td2aAPtmPBUQBQdSgPeZToB3KxOQiGD0/5dk5AET+D33tQjyBE8mcnISqZGT+aD1OmGD+qCa91+h Rw+S5AKqBi+rAby2lyXRJB7OOoVFR4RskiYEUACZ2zC+AKs5aZvT9ozD0bFB2bGXY5TSNicn9aMO MQG5agWhe8GkqycaDAAlMLO8GjEza7Mi7EIy6VtCm7tZhmUf44bxRr8z40Q4kG/7t61nyq1tpn/b ZABe1TO2gk5fRGfpVBYmUIgzCxeCsAhji0YTFxd1IZj59a+OBbAS+lD2OqjJUrca2AwQSlGkIUmT mhrz68Lk4FFCFQIWQZ1FFyIIoDYoqjhDWBAIMIS8wVixVZtzchCxBEJzwsBR10KU24QPIf8dJWAF WJCrEvMQD0EdNzsdGBC6JUAFHrxCNntLObuzzoYdU3idwxVMrDNNt6MOnJK0YvwpMjyPwlvD9Hi8 eLhNStF3T7FndgkAeuJFAZlOCrCuaTQFwkJG8FoiBFqYkGCYlmm+mXeoEepGQZsZ5UON55IujoYm 0WCwhBPGflsvsthMGrAvWukOkMAAMSCbQnBjKVIAvRXH5GxClfupG0QQR1lKASGcewwdzOYQVtCM HosFtQq6FcyrDvG6gcwntHRSCBA6nNOswbUd2vGUxipdg/IRITFmoGxl8REOk/K7oxwOGyDDxEvD d2jDTmQAG2AA5AUVgPhecRq9e2KXDXf/y3D1riECA4LZzfDKXwjqRuWyLFWcvpVYios6iuWDJtD8 AqoWgzskxpf6WfZ7jXuBADAwBUmQBFNQua9Vm8hmAY5AzgCcAXGcWkRZMMoBQr1ZW7z5EFgAEZdj BZ/bsip7yLz6q4k8HbpKSzYbOhNju1vXnAetHViqEWdXDbpTL1L2Q1R10fuhf/o3wzR8vAnQABvA 2Izd2CHdAAYg2aKSPOj0XrV8K3MaATmAK4TAKyHCK0LwBDAgBMDMADBt2r5g2pN4JBOaicesoMmA qN3RiQTAeRUVSZwJWLOnGsqVE+xIf5s1JRwxGgnBkN/81EnAAknAAAP8vzBwo9INAxMw/wUlAAKy OW28USYbSxA0GtYW4M0KcwS7iQVHMBA0qpspSwVlfcjBStA41SdMKBHBOrtBIAXWCJPnJ45pJ3fh ZoMelQ5UJjKcROBkZtGE7Q3gpcp5R7yqfIdYJdkiPeEirabPOyD1aRYGuE5lIQiFgF8f7pAYNwms zdpx+9o6/VgR6lAHJYL6lAqBpWozp1nWPMo4GE0gcRFKYAnk3Kuywtwl4HwDzQAToADXTcEgEKQ3 OnGYaybFhkpsYjkIoNVB6XxRx2wKo4yZg88qy7K5SsLXEead47M7lcnNKQVauJ3nhzonUQ0/9KFS xUwEPjKchOAJ7hP5ptiIDbXIC9lLsf9vFD4EIl0BOlwgWgFOhxcrsbwWJaA0CpADhfDoF0AXpk2g k9CRleC2lLjpyWAkOD2ow6CLEXUZYJOKkNaKDosvNOdZhO1ROC4eN9CxIdKrK5sgje45H9zoJXCr SWBC33zdMHBr/tJSvAZjTAiFnVPP6P3VdBJC+HzBVpBL11hkPHUdPFWF1RgoC82VTAV2G1NMMEHn mpKOWVBlJ0Pgd65NUWumZarYDN5mFH4U/DbhXjUCO5wVCYdOFsKX/nnLSeMhIdKnrE3imv7pJ+5G jOnaGxkkvxBAIIgmoDFpMudhHza/Rx2mt3cTg5OGh6MPKeI5CqAnMevBE6BwskzyrGr/3bqp3NPG DAfUDjZWSlZtEO4AdTbfhCELdRY8HQCw1tTuL9gXbWIeXEl538oKAS+pEVt2XID7fnLnpROtDfNn 5+kuDuzO0e3uRIy9FCIt4RPuf//HwxxQIYp+kBKCFgoAABSnNJDOQmqEcYVp2ssyr6OoLJep8KPO gsZAPhv4edAg1HhTOBTPt602g0qrQB96kqPRCXJC6y8LAEmgq48s8nuSRiBw3R3cWxSsAAecQfHw Y6jVsdcHbegNS3UiJ1EXuiw7AbmVlNXOU+4AD++wfVwnN876AtHF7R1xYmIpO1SisFUPFPRoyljv 0U8U0q0873r4f1EwIGNP9hXyRYaQ/xZ04a4iEgT6hdOfXiLLoukogq+X95gRmgskSGMW9guZ6Qwl KQG87SX4Aso0XuOtXg1fCAGqpBC2+da1OrOFCAgcLBgsAFQlCgolIAoTDAUIkBMTIgEBBwcBAkoB TQIECCJKAkEiQaUiBSICrKSaqVYFBVZUtRxUEzkiCKdBlgGovhAQwAsBC8jGC8PLEC4QLyQkLi/P 1C7YVT4aPg8PWd7fWePkUOPh4+bk6+zt7u/w8fLz9OxLCfg4+Pv8/Rv4GwIKNPBhiAGDJxKeqLCw QoURFThEBADAA0WKHiIoMJFo45McHS8gePIEAQIGQgioRGBBCEuVKVXKJLBgJk0lBP+UNFGyYOcC npt+1gyAkyfPJj0hNGny4soLCVBnoEChoWrVBxqwas2KTly9r2DDtvvmFZxVFCQkQFhwQ4CFDBkK TFgEYhKIEiVssRiE4aKCHAUAmzy1iwEvATcCJFasiYAFEatQQTZFKm4sX0FkTZ5QiwoGXLlU9QI2 +tcCX8YgMBnGmkk0aNJIvBgWYpiLbd7ShSsrtrfv38Db9Rs+XGACgQIbbPhgwMCJIQpPOFjYsEKU KCMAcOCAMSMAjQo0PtmoSAEDkOYRCFnPPqYFxzNryuzZk4AlTjl/EiWqkpMSo/Zx0lMTSgUAzVNQ uTBDFVRRZRVWWUWITjy8BWfhO9//QLGbN1WQgNYLLwRAACtwZRADCChOMsFdVACw14sAYCAjACXk wEsKvORoShACNMHYJp+wYoEFqkxmymSRFHlkKkdakVctJQQmmim/BHHaYFYGYdts2MiwWjTUHMjM ArW5IEMVuXU1FhTqXOjmm79BkcA9+hCHQ538/IPcchs0wBxB0Tk0hEMVYFAoBoL0FcGii2YUXiIX fPQRAxcYVql6JxnGnk2c8pdTJz4etZRRIgoV6if56dTJgS9UIYGCDFJVRRVWXSWhmmTBqas8Ge5W lWwHzGYMiQXEYCyKLE6S1y2E7PXBB4MA8NeNIijDywICWJLttgKIQEBcRoYCWSik/0BGCima7TLL itvhsiMppwCDgGBWGhiNNBLIoIEM0rgwDYgAr5XCMv5qlVsWXD0Axb5G+ABFNxpWuOvEE6uAj8XD WYwnQAEp1+efzzZw0AnXMZQQoQuNEAUHMwJAhEYcJQJezOblYJhJDKCUqUsxwTefTTXVNMpPMiH1 31D+7TQTT6uCKEGssTpYq6234krx1eR4E3HWD6AlwQuZaOIWXDFMcOIioJUQI8ssLOH22yxwUIIJ OSRzCgFWqvRekDyusksGI05WiiralgaZLEXKUot2VOjSC2GhKGPvq7H5229ssX29FjIQkNDNbmZV tY0MpMvgMDcaYq26rgmooAIOGP8TV9xxAT3b3O3NnbzQoIQ6BJFEiGa3KHkzd/RXzpdWyrNLBPTM qU08Lf1TEzndYJ8nOpG6VI+gVvN01FNJbSuE5Ce8ocSrW6h1xOFokFaIPhIgApEZCHEE4pO0SBHb BD17z/9LgBYAcpCCIBSwJkFQySdK0S0e9c1cj7GAuH6hiV4QIzOXOVwOMkCFvXBgElYQ12CMYQkx RaMa2LCc+zz0L9aQyRm12sa+fFA60jXMYT7YBpvKkQVztCl9QJQHxlynj9jdKQF12hjtPiCy3J0g dw5gSBR7xxBCGWoE2aHIy2D2hAtcAFIIqBQkTuI8UDxvKPVRiVBk0on9DGgpoNr/SY98BKoAOK1D 4ZvV1PZYvoSBAxy5CuKbyHIwb5BAKchQyd8iWAAhyCIHJUCUjFjwrA/MSU+te9sJOEDAZSTjGMeA V7nGVYDHfEszAiCGJU7hCmAYiTKmkMteWkQFXsQrNdAYBoimIRsUSqNDVeDXM2bDGmeQ4Ez8mhW/ SEADG2rACFBoGJt26ENo7rCH2BSkNns4J4stwWKvu5M4ZScQ2+EOOlRMZ0IMRSgAYFE731HAeExw AZuJpFL3zBkCVqKe5/UHW4kUgDFUIqIbjAqOTTDoUhTahAMsZSlNmYEEwie+PU6tj+dT0zbjBA4o mM4bVfkaUkQkLiIJIQYwiAED/3LhGc8Q4gMB/EBA+OE21y0BAxHowEATmQK8CbQUCMjFJFJarALw qHCrhIwvSCOCWGRgXKUAgS0+GIQDqLKEszEQNNRSTGhcI4XOeEYKUhACJmQjhWg1kwyMwFYcWnOa HmWrNbPw1o0G55rpyCY75OQ2JLounOE8Ip70VLtK/skh0qnAACCSzt6xU0bb4Q5F5GkCSRWgniYB BQNm4h5OAbQ/IlLjDXCyk4eOakAKxQQmoCKBGSyoKlOhlUVnC6EHZfSPdu2N1h7gsPZpQKSh3WcQ iPSISPxlLjLCgP8syVx83MN1LWjBEgphAwiEwLRKIcYFbaaIEzUyXbtYailyYf8JpaZCFkmCRAFK MEujahWrJdQqa6y6S17ykl8QMKAUVGNW2lSjhkZYq1xNx6YAy7WtcJ1rboHjwx7C9cFGWEKdnivh cW5sTyFjjp+cM53pNHYFK6jAChjrEAA4BAMj2E5EhhezSlHKJJhaiT9RdcbrhRZbBPARHEHl0NUG CyokAF9FZ8vHq2Q0TQsWC1nYh5UOIXIBFribeuonAgaUYAKGeKlh+STTfdQUukuIQk6lQCa7neZK cplCEkAAgwnAoC6ysIIuSFMkoGYAATFAXA4mcQoOdvCDlTBQCVWJDAMRqJjXMGa/XLCAgTXDusNg gjRqCOC1RtOGAH7wD5Psjgb/+/DTCY6mpqP5V9e1bpxe5ljHmPin2w0hih52yAAaK+ISW/EhEMFi dkwQARpNKrNhXEnPPjGkALGEP/scESfid5OhtFHHSwmW0/yFRw/Jlsh71JdVmAw6u6LvHPFgkwYe FrGqyCCrIpJgKEp50jc/YQK9bo5hmYPJfqjgHi249wkAoIMUSMGAWdKW/BAAgxJMQQFUSMIirjyB KUyAF3gLQigmjrh1T2BKIuDMLLV0DGcw4+PMqM29vpq50zi6Nvw9pspl0CXSPfOZNAwwDdhKugL7 AJqc5uE0HTxNaCpM1KIWcIGjeeBvfvPeRBTnEWm3p3I2pwIGgPoUHQJiqFNx/wUUCTE7RzDiEmOd UeYRCQJwdAGX7PMlRKFxG68XJGbfQD4CtQRTrAqBK2CiCU6ZAebQMmSrxIrIObTtkb/t7Xmkzrfn Xku6cwCYMTIgEXPDsnK3nADlHCdjOIiuxT4wghyc4t/ECJEyBHASGCjiylIFgMJhYNRdmGQXIojL eRIXZ88HQeMfRIBqiLk5Ay1jNq361ZlmJY0QpUAB19IqNi7HL32Vbl+kwwYNXDD9YHJjXzvf6Kd5 DlfuP+ytEHaYqKFpTRoc/d6wi93lL68nmcoUdwaI4tOpOOurh1jEJq6AifP/kP1ThPE50EX4ZCMw tk/voUgEBVoEhRMERUd01P8TWnUAEuAUTRFkfEdRKHBtfjcreqSBtbIwGmI+E7JNhEd44vZ9tEIr skEMCzA/OSBnj1AskEQRhUIQk5cABrAn65cP+/BXOIgBNVIvp4AAAkV6OWMFU5AXSRA3CWcIj8AA cgYJ5xULgpEBe3YXqpADUqU/E4AaytBVZdIh1BAbvNdoNpICrOEvzbd8lBZ9LLcD0+ACVdBMNCBD 47ZpguRp3UdNQ9cwfgh0BlZgNFdg5tc6PkhESJSIecJlGwB/U0coUdc7IAYAXcdOVGRi7CQRIxAB JtCJkJIDXiR2MDZGNlEq0QNHBPVGCAU2CHIFVwAVscWBDFIrtVUVxNeBGuD/ge0zeEhGeINEIWMB bhOyMCuEbqPAHkMyJDDQItvBF38yUx6zD/+wD3fyOioQXW6DAROwX7lkIGoBDI+HF3ORcHiRBNKi LFcGGHmGP4hjBfnDcJzhGQMkDNoFfNVAAuNWBffoL8/QcQFQQFpyLyrnAmZlOV1CkGbFBExAA80U YPsybjyUWw+GTZp2c9F0hw1jOjLnhwzJkGvlJd/ED+q3iMtRSSWJO09kdZAoa1V3f4XykvrXWH3R F9/RazZJHpRyHiJhGGOUbJ51DMtGR8TgIwDzFCSwIAySlClIZCkINXrkfNu2FVJ5ZLiVc8EYgtxg BL+yghekNxlgAUfgSFbW/4xtwwL98yx8MlNpSW/SaEmto3l9kQP/9kkQQAA2gwhz4SKHwDhXlhc1 gl67sGeycHGBkQvjAkmeETddqF3aRW2HRBvW1QQhEAC1AQwD41WYQ5C+RAMJmZBm0kzktg54qE16 SHTiN37RdHPSdHNr1UxOQH2kw5lM4AQLyZlIZ2qmlidLxCfw5xCR+GEt2U4wyX8SEZP6l39Ylx3C QwGJwHj1dDOgYBI9BWPy0YCrcgxJQSBF+TQYmIGzODUcuEIdEmSyGJ7X9yDjI4KBZJUYojDcoDXu w4IJFApD0kgqlRdx81JalgD0hhxMVzsA+g9Hl28J0BedWE8iUUAmwXjjSP8Ft9BB0iIXoaEkg1ks hKkLpuA4COCOEJoD9qJL1AYBNkAmkpkMKCcwVpJLsPEMZhWHq6GQZuICNEd+14RXSWZzNCpqqhlg MuCRM0eHPRqkH9mjs8kErXOk93Ck0th0rRZ1TqqSwGliWBdi+bd/wql/90cR2YGlvFaT9ISg0hlG End2apRIyGBa9uI0T5GBGjAVtSJbsSUr5ZmLuYiL2LYVEaKe7LkOuRIOEcM+8dlo6sIAyRgDpycI grAXkwdTMlWShVVYaJkx12gxzrGJJjBWyDBWEmeTvVYCglALe9Z45pIKgHEXExCFpwAYjgMYWAaq QQB8/bI5C0BML8Q5F3T/QM7QX6thGyzqDDUkOtsgQ8QIgqN5NaOWYKfph2ulmj9KQx7pBDJAmwyp kLNJOkY6HEm6pCW5Yb0JdU9KKBDBfyFGpbaGRcbZOzSIpfs3AhMwYhTBicZjHjoZpjAmY/ORFGCz VWtKURblnbL1lHTKIPhofURWi3l6PlXpi0EkDuKWFSCYiy4QAmNaAAwQA0JgAQzwZghHCM0CLcvF pMbRiE33D7BjiH/1AThFTynQAV6UAhdgAizDMhdBEYegIlawCpoRCYwQA3I2GRKqqiKQAw4KaCWU qZgqq57EOSZnq5CpGrlqVi5nOuN2Uedjo6sDYT13cxb5fTsKBTPHkT3a/0ylM31MsAMKSQNOsAPP 5Q/TiBy404hOeju0xn/5RwUuSYnGSWKWaGtZynX+x4mLYjOgWE8KEIoIYAOORhNmSkLZ1TQS4CF5 BFuwFVu5iEzhOXxBti8eiG3jo1F7yjWAmkPbcEg4EgkocbHGNQEe8CIEYZYmyZ/S2ADsNxB+kpbD 0QJzEkAGSgE60AEd8ANEwAFRcALQwh15ORfIW0qyUAruWBcKUBe5sGcXBxjj5aCHwAuWeQFWkgxr sTkDQ5mNNjAoVxtMgHIpdEzQR2AKs75/qjWkyXPkp5pEl5rxy6PfJwPRJLZGMHNE6pnQGgKpNiez i2Hw96205pJ363WYeP8otHalx7l/FMAonAgSoNgRT2ACLzZ2CBA0PbUAI6oMZ7pV3UmnueiddQpM wfSvA/uQRKZt6Kmenstp7OuwDylMpyFGbQYDrPd4tfBSlHSWyNGoTHcc77ccfhKN+WBhNvUBJ4Bi WDS8CeE2jah/yDsXSlgCMdB4FsoZhoALoSpncha9ttA4p4AjB5Spp4AM22u0J+e0BXlM+Du1Wom/ 9Ttq5ZB9EwNq0+QwfviHfsisbFWHHukCTuCjC3m2tFmk5FROAUEQzdFE8tc7UVd19sd/6vpOJ6Z/ 4Xqu7eS3WQQAFPCu4REBiJAIXxqKkeJFGVy6HUwT3aN3FFWeuJjC7vP/rx3CuSx8UVUDOgpLgoDq fCSwGgRAsY5QAG22UmrjIvP2uo3qn4zcJx0DzUnUAvpwREcXQMT7RDC1BBtgdCdwZaRcI7SQBGum Io6wIotjCOb8giBUmIxzWQB4Ad8LcFJwDI5WxhuMcpKmhmcix6fzxzk6kfDbYHDSJgZdv/hLvwZm QzfUTD4wfYlstgjJBF5Stgr5P7MLEEzUyAbQRHJrdb9Za4QCYiRd0lNqYpsIri5JdSDGWCftTjNb EYiwKKXciTngiRgcii92KdOZDD2BIHl0bQB7i5NmiygAlYBnh+XDi70cRNNEwzU8GzjyhJcFz8tC SbZjWACRg7KLxM3c/9E52IhInIh1Mo0WU5ImOY38WQFq0yIXhyJvhgiHEAsNagh+qSygEcZQcgh/ wXj4/DhpnKljpyWKpm1w7Hz6coJTO267pTB5tX3FylEUmQWsqZqWxrWBvL8BlkNBOn3YAKPVOq0L GQIh+59peTvLEX+E8oiSyNII3K5ZmqX9B5yUDNuUCNMroDbcQcrDUzwb8UUYPB6UQhL4JIo0wRQL EotNWZ6Yq0d1+tz9XCsujJ5TKYKf+0cgODr7Mg11iTOPkB5zwTbL3GXHYQDsV3n/qRxc/cgy5SdI JE64ezG5+Z/y/QGNg5gKUCwo1byECQm0kM4PGo9X5o55AU+HcIZBAP+AoDh2p+F7BrQMmKO5lvuQ WokVGnLh6+uwFeLYkc1RnvZWqmmRyrq/nf3QDEl9oo2QRGq25avWTOd+zNGk8wel6aRrlIhlFdCu OU6DWDfSD6HJ+TfjPj6JuB3TNfkd8eSJM3MeF7wRDPAEORPl+/TTEzUr3Wnlfken+tKB052CUDnd RmZkMZxzn2aRouMqLxAEFxAY53EzINFBL4KWWW1J/yC7bfufMC5vG2Z5snPeJKuIrmMAngdJdA0C qlA2dRFChakinUEjtAQAjA4lA8R4CoqgZ+jBJkowx2Q5xGduMYQb4tdbOZTdOpQmILgr6lCjHP61 PMqaYbu/HQmbDz3/0dQ30S0+U42KlkfcpKtNayHt0lOaHSRNRZssYi5piShtrg+RnFkXAS99EYvy MuGB5PEar1Ae5QRgA0zxuN2p3G16TNYniw+ZwltubgRrFdNdbt3W1FcLnxqSwmnR3ZEw72GkABYR 54zazDo4so2c1c0Bt48sMiP7LLSjm5mEAZ7nszd7OO3ceKHKoLjw6GmzZ7hg15QeqoPt08hQJpNG y7Y4Q1opuuNmYKJb8q7uAx01tRfuJqXZh4Jo4uSHtrHZTNInti6wAwT5mmYF0UwA447aP3Ibt7jT wL6Drl6HdXiLpS5Z7MSunOd60l/Xa8q5KCsQAREcwb32rmA3PC+b/5NQvsFrKmRuKossNKee/vG0 4sLIZIu4QYzr2xUHk3Mb4ndqURMmseYLqjbN4ixyLsTQyHRSXE4y3hwOoOf+yTFINI1HVGofMOkY KgvgkgroPAnSSwl79iS1kD8qgheJCekJbntJ+2jNYDnIFLU09Hxa+TCufkPb9tDLqjCnkzodLg8G vXNlTm5EF5s05yU+euI1n/PUivMMSZvmdDuDD9IrSfQiRmJUWuwl3cCWzE73R2J4O6WTSCjO3uwn zakSvCiVhcpjZ0etArne6a8pGBvLrbkSvpRITaf4WBXDelvsPjGExL54moESQD0DBwnnAQgKHBgY LCwfH0sfG4sbjv8bCQ0Jk5CPjogbBogfBp2djg2WjJaTCaKMS0ssVFQTVhkiGa8itAUFVhOsE7u8 vQBUGK0Tv7wAwQATOUFBEEEBC88QC9IhEC4uJCQy2TIaMt80MuFG3j5GMkY+6j7dMg8aUBo+UOYy 6lAPUFBZ/P3+///28dNHsCAUI/QQGqFxjmFDJ+Bo0HDhxMVEGkyYuNAYIgSTiTJCXOKkCZEnTw4M VFjJsmXLETBhYmA5ogKAlTdXVNDp8mZNlyxvrvxpc4VOACWMAlg6QiiAFUufPo2wNIJVqyZMKLjA 4MIFBDYCvCCBgkSVs2jPktBQRUbbtVXYou0Wl603DXjvtpMHr6//hgeAAWd5MBig4cOIEyfOFxgv iiozXhxosoCAhQIIgqSYwAHAoE2bHJkSPZqSqSWiNBkYZSBUqEWhVEMa7UhTqQ2KUrFAZsWWFRAi BAQR0ftWiRLChlH59YvV8lbLd+VgFUx6kAXLFkh59mwaBGvXsGEDRyIcuG/fzp0r183cPMbq0hEe qBixQH0IC6bbP+/gQXQLyfCRRARaZOAOTDiBEYIZJRgCSapBeFIFnQDVEk8rDFDBACvUNMIKE+xk 0085uWSUS0Q1tdJMF0K1k1ETGHXiiEpBBRUFADRFRI4ARKCAVj92lcICC4xFVlpIamBWXXiZZZZb UMrlTTdS1oUP/17x/BXYlvV16eU/hIXJ2JZ5oTBDEwTcQAABQiCAQA7GYDBISZh8QBsos1XyCG2c gHLSaq+RkkmelSSwiSofsIABFhPYMkEMwQknwi0F5LIcCLkwFwwVyAnDCjI5WBrdBMtcB800qH4X 3qrXkIBNOLCmh0494VThgzexAqZBOvDks49AX2Zxn7AG/XfeQgGOY4QTTIhTYEUGZrTRNUzsAMEO HdX2p0orccuthRbqBFMFH55Yk1AYisgSTxbWxOJKLr4oFE42LbUTFTtJ5RNTPGaVlY8XpDCkqtmk VZZZbGXjZFpu4RUXWtzERReV72SZj5ZbChZsffMtxo+Yf8UDGP8KGjwmwWRKBLCmBQSkACchhZTk GiZ7QiKJJIU+sggmq3XSwCcNfODaKZB0QhJou1GRw6RWNF1AcEEIZ0sBoXL6qXPI7GI1Mb30koMy 2QXwHZHMvMDECy6g3aoLMoRXUdvmKcuOPd/4ACvb67jnQz8EKfarsIAT27c+89gtjhGIJ9uQDMwS 6Ow1FUmL7UYhICiShN960pID4LZL7of55ujhvECli+JQHdoUlI1SgfhiDiAqlW+9K1DVFAAUKHBV Vl8RCQHaR1ZRlvBNPhk8Wno53JZddOWV16185fVOYP10vDFA1ncpJvV4PfDYFU2Ev+aaF5hwEwZG 0xlKzaXdRjT/I7ENLfQlo2ywviWLlJbIIcHkgEtvu5jFMmJxC0sBYBWbeo5NnpOMXDSwa1+7TgCe kR1VuQA8ChMHtSDHNscxhG50W4ezZEAPddhjcMECVrEMwo5w+Ec9DJFIgihCQxpGjkEeuQaCXBAC 1VTgBCoJYoUo1K2WaAhe4CKRiG7ik84hcSUnYMlMWBTFddELJzLC14lcpK/bjYhHtePdV4bkHQmQ hSwoGN5aEqaw4y2PSczDC5SW156/UMl5XCpM9q5XGL9lLB70EFlaXkAZlVnATQhQDiFYYLRGlKRm e8IZ0V4zPz8Nan332xkj0tcJQlRAF8tAwC1i4IoMwIIWk7rF/2+o45zn6OJroXogLyIgnRxkBju4 vI6qrNG28mhjWo2jgTYyAqtY1S0d4rBH4UqoD8ABq0t/KwixEDK3wwUIccn8iDYtMpGN7GAjGbHW N6fFw04AcYiaKyJLOOdEcrkTJjwRClFKZ0WWRHGK7hxKvVSnOtmpi59MbIq7PhSBplBgAloxgVcE JjbgmSWNZWGekwr2mLPIUWJtaUvDmicxb7zjLiDF2Pb4eL35hAkfugrMIMW3JgQIQQGeIQSdTNEa QYlmNnd6RNCEBjSdVuJ+eCIJhU5CCFasQBmpxEUMKEULWfTGClXjACt/saleQMcXrTABLJWxgBTo 8jsa0Yh4WP8FEfRERCLJTGsyYWWOcuxHmimkT7HiYw8amCOG+GFcsyTihIpMpFoaQZBg1fZNGvSQ E+cUIksMwE51tnMo85TiY10SxSqyaHQ9oRe64mWj2akIA/rKkY8UGjDvYEMCEoBoGh/mlios7Ego iFLC0kgW2d5leXy5o0WnR70wkTRYHevtxd5xq7O84LhdJYCbFECFzhDiBImgxCPZp6fSALURg5rf aABVCcyt5AMtScbSnAEBAWSgAEeIgVOd+r+nMgprrIBqLHtRAvFKp767UEAOvKoZKXznO2ZTW3g+ Ep5kygM9H5EVQiyCnlulhx3mIAjimvlMf1R4IArBjz7YYw7/ZKFjrXErkDepxYQQ6BACBA7BCVZs ABYbcbGZC1fnIrsil3zrhzausYrARbqVUIFd/ZwXUzhQL4NGgHcCm0YIXmBG4an2LK2VwWPKslqL euNhCdtGSO0ix+g5r3u89e1vSzoYgkwvHjSoAjYISaSWIUABJeAACwZRCEQoghPYpY0p9vw+UUSi EaGIhE4joRoDzGSINklGqSYoAAFYIL3qhYUpneYbWkynOUrbKiylw4uvDaMEOVCAfhHAUO+AVW0k MNuqoIU3XH0kWR8Oh90Kl7f+UDgfgbNP4DR8kHSUEMLIQquwneVXDYaVQU641gsmV04oou8DM2ls EMEFZCBb/2gmNL52S1psz3xmVnXo2kmI1CW7fQlUX1bJwUKn0YTfwRaND3NtWuAd2zde2S4ZvWOX 1/Hlv4BZS30cMzTBNBjAiOwvaHEBZSqDAAYkgQpzLgQG6qSSPOeMUERrBG1WYz883e9PQLwiqDMz wRs02gIZiEEMZsE0K0zKFUur2tVgboXhBGHTupgAcvAr6q951Xf/XVva0CbWa6TZHgsZkOPW2uB7 wMM/9HGmYhjzq4O4Zz+7aqFDxDGgc4BDIwqioWAbJM5rfUTFK4YijkO+WKA01nOPvXGOK/AuKE67 7jz+NlACipOlUMBfHUgBARbQ7uNWNNWtysbwpLwN4aWFLf/F5bKtnAfHL1f+SnkUOMcEsr0NJ2Qh 13gBBCijBOU+gSqFUFQjW8xxStyUzzbzOGw6PjSOawvkdF8RaJFRX1uKYIIBaHTKsYAFUwoAlU/D hTBEgPNWxHw4SPX0Lurb+1DZchn//Z3oVSXgVdUKLz4oD4LNCsJ63MMe8pjHx/QhJj3q0VdlLkje CIcs9xzuccXkILZK3CCzhTMjaOdOldVtnXMCb+cSR9ROVbRtC/gt7DJtkxWB+RQnOzECEUABR6YD CAAN2lcwriUB2HBGw+Na3yBvj2dvHNVvedEOUHYXFkM9hrFH/iBmX8J+VGdwBhcPPnAWF7RwBHAB pxdnh2D/AENoaNBFKLCXhKIAVEvYhBNyAoTARFWhAMnwNAIQfMH3aEcwC8eHSi/nHK7QNLmAHDAX QdHXNVToNWDDDL8jNtVwXKsyTtfQFi2UTHMTN3XVDQ+gHiaUDraGDwVnUlyCg3N1dfMgEXwYK8VU BRJRQyU2dtWCYhfEERiQdhTCCd22gAsogeCiEimBY0Qkd0TUdu2Edy0BM6a4T3QXFRSQA1mxX95x XK71GG0kAbM4UYo3ZRV1W0jSMA7zZeqAZXFxKy8oGL4lgwQ3de53g/FQcH1hf2omeiFQGSlwAVQR AZ9xCIgFRHZyCkoYCaYQKHjSceTYcduyiVGRFL3HAJhx/4UBcAPB52indErMxzS8AAKYwgszF3Mx x3y8gF/WlwwioBlsCAHPUA2qohGuokPhoWbhB3ZMh4fzIA7woDe+ZoPLCCbsN1d+uB8f9JHOoogX ATkNAkxMgGKAVWJ0VxInEAUtEUUQuG3eYiGbWAFvd2PTFnLTplgFSEQsUnekk4orQWQs0iM6kAM6 UFoA9gJUhotnZEbZkHhotDBygSSxpYKWpxe3MlwZY4wBJ3DbsyUoRTjtEIxpQyQLYAMIYD5LMQiM hAgspgnemDPg2IR9JjQbl074tBRbJUpCkAEIYAFXeAMm14XD4YUul3KOMgH5qHMzl2nyNZBUM334 VUv79T1V/7Vkv2N0AyaHdAMRGmEecDOa6EGWyuRrgEOD1mNwztQf8aEOMcQQdQgSaOUDBtKIM1QR zLIR1oCSPBQIADs= --_ff3f1f67-d6c9-4ea5-aa26-28b867e61995_-- From david@fromorbit.com Wed Jun 22 02:30:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5M7Ur0M069198 for ; Wed, 22 Jun 2011 02:30:53 -0500 X-ASG-Debug-ID: 1308727850-671902360000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 20FDF1742CE5 for ; Wed, 22 Jun 2011 00:30:50 -0700 (PDT) Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id aQ2uzdoEx6FiHxN1 for ; Wed, 22 Jun 2011 00:30:50 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EADuYAU55LChD/2dsb2JhbABUhEmiRHiIc652kQwOgR2DeIEKBKII Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail05.adl6.internode.on.net with ESMTP; 22 Jun 2011 17:00:48 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QZHtf-000273-HA; Wed, 22 Jun 2011 17:30:47 +1000 Date: Wed, 22 Jun 2011 17:30:47 +1000 From: Dave Chinner To: Markus Trippelsdorf Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110622073047.GT32466@dastard> References: <20110621212201.GA1755@x4.trippels.de> <20110621185701.GB1723@x4.trippels.de> <20110622000449.GQ32466@dastard> <20110622070647.GA1744@x4.trippels.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20110622070647.GA1744@x4.trippels.de> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1308727852 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66773 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, Jun 22, 2011 at 09:06:47AM +0200, Markus Trippelsdorf wrote: > On 2011.06.22 at 10:04 +1000, Dave Chinner wrote: > > On Tue, Jun 21, 2011 at 08:57:01PM +0200, Markus Trippelsdorf wrote: > > > On 2011.06.21 at 20:24 +0200, Markus Trippelsdorf wrote: > > > > On 2011.06.21 at 10:02 +0200, Markus Trippelsdorf wrote: > > > > > On 2011.06.21 at 14:25 +1000, Dave Chinner wrote: > > > > > > That is, you really need to get a profile of the rm -rf process - or > > > > > > whatever is consuming the CPU time - (e.g. via perf or ftrace) > > > > > > across the hang to so we can narrow down the potential cause of the > > > > > > latency. Speaking of which, latencytop might be helpful in > > > > > > identifying where input is getting held up.... > > > > > > > > > > I've recorded a profile with "perf record -g /home/markus/rm_sync" > > > > > ~ % cat rm_sync > > > > > rm -fr /mnt/tmp/tmp/linux && sync > > > > > > > > FWIW here are two links to svg time-charts produced by: > > > > > > > > perf timechart record /home/markus/rm_sync > > > > > > > > http://trippelsdorf.de/timechart1.svg > > > > http://trippelsdorf.de/timechart2.svg > > > > > > > > > > And this is what the mysterious kworker is doing during the sync. > > > It's the one consuming most of the CPU time. > > > > > > 39.96% kworker/3:0 [kernel.kallsyms] 0xffffffff811da9da k [k] xfs_trans_ail_update_bulk > > > | > > > --- xfs_trans_ail_update_bulk > > > xfs_trans_committed_bulk > > > xlog_cil_committed > > > xlog_state_do_callback > > > xlog_state_done_syncing > > > xlog_iodone > > > xfs_buf_iodone_work > > > process_one_work > > > worker_thread > > > kthread > > > kernel_thread_helper > > > > So that is inserting items into the AIL at transaction completion. > > That can consume lots of CPU time if the CIL checkpoints are being > > flushed quickly enough. Given you are doing a rm -rf at this point > > in time, I'd expect to see this trace present in the profile, though > > maybe not at that extent. > > > > I have seen this before but have never been able to it reproduce > > reliably. If checkpoints are completed "out of order" due to the > > way the commit records are written into the iclogs. This can cause > > extra CPU because the AIL insertion then has to skip over all the > > items that were inserted out of order before splicing each group of > > items into the AIL. I only rarely see this (maybe once every couple > > of weeks of performance testing), so I'm not sure it's the problem > > you are seeing. > > > > Adding this debug to xfs_ail_splice() list walk will tell us if this is > > happening and how many items it had to walk when you see a hang: > > > > xfs_lsn_t lsn) > > { > > xfs_log_item_t *next_lip; > > + int walked = 0; > > > > /* If the list is empty, just insert the item. */ > > if (list_empty(&ailp->xa_ail)) { > > list_splice(list, &ailp->xa_ail); > > return; > > } > > > > list_for_each_entry_reverse(next_lip, &ailp->xa_ail, li_ail) { > > if (XFS_LSN_CMP(next_lip->li_lsn, lsn) <= 0) > > break; > > + if (!walked++) { > > + xfs_warn(ailp->xa_mount, > > + "ail: ooo splice, tail 0x%llx, item 0x%llx\n", > > + next_lip->li_lsn, lsn); > > + } > > } > > + if (walked > 10) { > > + xfs_warn(ailp->xa_mount, > > + "ail: ooo splice, walked %d items\n", walked); > > + } > > > > ASSERT(&next_lip->li_ail == &ailp->xa_ail || > > XFS_LSN_CMP(next_lip->li_lsn, lsn) <= 0); > > > > That will at least tell us if this is the cause of your problem. If > > it is, I think I know how to avoid most of the list walk overhead > > fairly easily and that should avoid the need to change workqueue > > configurations at all. > > The kernel log is attached. Ok, so that is the cause of the problem∵ THe 3 seconds of output where it is nothing but: Jun 22 08:53:09 x4 kernel: XFS (sdb1): ail: ooo splice, tail 0x12000156e7, item 0x12000156e6 Jun 22 08:53:09 x4 kernel: XFS (sdb1): ail: ooo splice, walked 15503 items ..... Jun 22 08:53:12 x4 kernel: XFS (sdb1): ail: ooo splice, tail 0x12000156e7, item 0x12000156e6 Jun 22 08:53:12 x4 kernel: XFS (sdb1): ail: ooo splice, walked 16945 items Interesting is the LSN of the tail - it's only one sector further on than the items being inserted. That's what I'd expect from a commit record write race between two checkpoints. I'll have a deeper look into whether this can be avoided later tonight and also whether I can easily implement a "last insert cursor" easily so subsequent inserts at the same LSN avoid the walk.... > > > The following patch fixes the problem for me. ..... > > There are two different things you can try with the wq > > initialisation that might help prevent the problem. Firstly, try > > this: > > > > - WQ_MEM_RECLAIM | WQ_HIGHPRI, 1); > > + WQ_MEM_RECLAIM | WQ_HIGHPRI, 8); > > > > To change the number of concurrent per-cpu work items that can be > > processed on the work queue. I don't think that will fix the > > inversion, but it may allow more concurrency which hides the > > inversion. > > > > The other thing you can try is: > > > > - WQ_MEM_RECLAIM | WQ_HIGHPRI, 1); > > + WQ_MEM_RECLAIM | WQ_HIGHPRI | WQ_CPU_INTENSIVE, 1); > > > > Which marks the workqueue as one that will consume a lot of CPU and > > hence it is scheduled differently and hence should avoid other > > pending work from being starved. We use this WQ_CPU_INTENSIVE flag > > on other XFS workqueues that are known to consume lots of CPU, so I > > suspect this is the right thing to do here. > > Yes, that was the next combination I've tested after WQ_UNBOUND and it > solves the issue, too. Just to be clear, which combination did you test? The WQ_CPU_INTENSIVE one? Cheers, Dave. -- Dave Chinner david@fromorbit.com From markus@trippelsdorf.de Wed Jun 22 02:40:46 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p5M7ejVt069606 for ; Wed, 22 Jun 2011 02:40:46 -0500 X-ASG-Debug-ID: 1308728443-6b2c022f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F082217430D3 for ; Wed, 22 Jun 2011 00:40:44 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id VcYzaeDdBy16yF60 for ; Wed, 22 Jun 2011 00:40:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:content-transfer-encoding:in-reply-to; q=dns/txt; s= beta; bh=0/WTeHuhuQYzAMD2gozlEwZQiVlrRoXal7qTUeh6ZX0=; b=OUdHNZf m40SHIH8X6ZZmiTmE4JKWU51j4wOVJltdpN7fcJkxVBuLvJOMBjDBdBX+WB4Iiln GgNJzbmQqRV/NbuJpmeVqToY/0cAIltva67ToDSK6l7/fQ0nK+BCXhOWU7iF6Qpq feIEPlkQZi5U9ySI/AqKwUmUEioR1HQEOqeQ= Received: (qmail 11223 invoked from network); 22 Jun 2011 09:40:43 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.64.57.18) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 22 Jun 2011 09:40:43 +0200 Date: Wed, 22 Jun 2011 09:40:43 +0200 From: Markus Trippelsdorf To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110622074043.GA10672@x4.trippels.de> References: <20110621212201.GA1755@x4.trippels.de> <20110621185701.GB1723@x4.trippels.de> <20110622000449.GQ32466@dastard> <20110622070647.GA1744@x4.trippels.de> <20110622073047.GT32466@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20110622073047.GT32466@dastard> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1308728444 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66773 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 2011.06.22 at 17:30 +1000, Dave Chinner wrote: > On Wed, Jun 22, 2011 at 09:06:47AM +0200, Markus Trippelsdorf wrote: > > On 2011.06.22 at 10:04 +1000, Dave Chinner wrote: > > > On Tue, Jun 21, 2011 at 08:57:01PM +0200, Markus Trippelsdorf wrote: > > > > On 2011.06.21 at 20:24 +0200, Markus Trippelsdorf wrote: > > > > > On 2011.06.21 at 10:02 +0200, Markus Trippelsdorf wrote: > > > > > > On 2011.06.21 at 14:25 +1000, Dave Chinner wrote: > > > > > > > That is, you really need to get a profile of the rm -rf process - or > > > > > > > whatever is consuming the CPU time - (e.g. via perf or ftrace) > > > > > > > across the hang to so we can narrow down the potential cause of the > > > > > > > latency. Speaking of which, latencytop might be helpful in > > > > > > > identifying where input is getting held up.... > > > > > > > > > > > > I've recorded a profile with "perf record -g /home/markus/rm_sync" > > > > > > ~ % cat rm_sync > > > > > > rm -fr /mnt/tmp/tmp/linux && sync > > > > > > > > > > FWIW here are two links to svg time-charts produced by: > > > > > > > > > > perf timechart record /home/markus/rm_sync > > > > > > > > > > http://trippelsdorf.de/timechart1.svg > > > > > http://trippelsdorf.de/timechart2.svg > > > > > > > > > > > > > And this is what the mysterious kworker is doing during the sync. > > > > It's the one consuming most of the CPU time. > > > > > > > > 39.96% kworker/3:0 [kernel.kallsyms] 0xffffffff811da9da k [k] xfs_trans_ail_update_bulk > > > > | > > > > --- xfs_trans_ail_update_bulk > > > > xfs_trans_committed_bulk > > > > xlog_cil_committed > > > > xlog_state_do_callback > > > > xlog_state_done_syncing > > > > xlog_iodone > > > > xfs_buf_iodone_work > > > > process_one_work > > > > worker_thread > > > > kthread > > > > kernel_thread_helper > > > > > > So that is inserting items into the AIL at transaction completion. > > > That can consume lots of CPU time if the CIL checkpoints are being > > > flushed quickly enough. Given you are doing a rm -rf at this point > > > in time, I'd expect to see this trace present in the profile, though > > > maybe not at that extent. > > > > > > I have seen this before but have never been able to it reproduce > > > reliably. If checkpoints are completed "out of order" due to the > > > way the commit records are written into the iclogs. This can cause > > > extra CPU because the AIL insertion then has to skip over all the > > > items that were inserted out of order before splicing each group of > > > items into the AIL. I only rarely see this (maybe once every couple > > > of weeks of performance testing), so I'm not sure it's the problem > > > you are seeing. > > > > > > Adding this debug to xfs_ail_splice() list walk will tell us if this is > > > happening and how many items it had to walk when you see a hang: > > > > > > xfs_lsn_t lsn) > > > { > > > xfs_log_item_t *next_lip; > > > + int walked = 0; > > > > > > /* If the list is empty, just insert the item. */ > > > if (list_empty(&ailp->xa_ail)) { > > > list_splice(list, &ailp->xa_ail); > > > return; > > > } > > > > > > list_for_each_entry_reverse(next_lip, &ailp->xa_ail, li_ail) { > > > if (XFS_LSN_CMP(next_lip->li_lsn, lsn) <= 0) > > > break; > > > + if (!walked++) { > > > + xfs_warn(ailp->xa_mount, > > > + "ail: ooo splice, tail 0x%llx, item 0x%llx\n", > > > + next_lip->li_lsn, lsn); > > > + } > > > } > > > + if (walked > 10) { > > > + xfs_warn(ailp->xa_mount, > > > + "ail: ooo splice, walked %d items\n", walked); > > > + } > > > > > > ASSERT(&next_lip->li_ail == &ailp->xa_ail || > > > XFS_LSN_CMP(next_lip->li_lsn, lsn) <= 0); > > > > > > That will at least tell us if this is the cause of your problem. If > > > it is, I think I know how to avoid most of the list walk overhead > > > fairly easily and that should avoid the need to change workqueue > > > configurations at all. > > > > The kernel log is attached. > > Ok, so that is the cause of the problem∵ THe 3 seconds of output > where it is nothing but: > > Jun 22 08:53:09 x4 kernel: XFS (sdb1): ail: ooo splice, tail 0x12000156e7, item 0x12000156e6 > Jun 22 08:53:09 x4 kernel: XFS (sdb1): ail: ooo splice, walked 15503 items > ..... > Jun 22 08:53:12 x4 kernel: XFS (sdb1): ail: ooo splice, tail 0x12000156e7, item 0x12000156e6 > Jun 22 08:53:12 x4 kernel: XFS (sdb1): ail: ooo splice, walked 16945 items > > Interesting is the LSN of the tail - it's only one sector further on > than the items being inserted. That's what I'd expect from a commit > record write race between two checkpoints. I'll have a deeper look > into whether this can be avoided later tonight and also whether I > can easily implement a "last insert cursor" easily so subsequent > inserts at the same LSN avoid the walk.... > > > > > The following patch fixes the problem for me. > ..... > > > There are two different things you can try with the wq > > > initialisation that might help prevent the problem. Firstly, try > > > this: > > > > > > - WQ_MEM_RECLAIM | WQ_HIGHPRI, 1); > > > + WQ_MEM_RECLAIM | WQ_HIGHPRI, 8); > > > > > > To change the number of concurrent per-cpu work items that can be > > > processed on the work queue. I don't think that will fix the > > > inversion, but it may allow more concurrency which hides the > > > inversion. > > > > > > The other thing you can try is: > > > > > > - WQ_MEM_RECLAIM | WQ_HIGHPRI, 1); > > > + WQ_MEM_RECLAIM | WQ_HIGHPRI | WQ_CPU_INTENSIVE, 1); > > > > > > Which marks the workqueue as one that will consume a lot of CPU and > > > hence it is scheduled differently and hence should avoid other > > > pending work from being starved. We use this WQ_CPU_INTENSIVE flag > > > on other XFS workqueues that are known to consume lots of CPU, so I > > > suspect this is the right thing to do here. > > > > Yes, that was the next combination I've tested after WQ_UNBOUND and it > > solves the issue, too. > > Just to be clear, which combination did you test? The > WQ_CPU_INTENSIVE one? Sorry, the "WQ_HIGHPRI | WQ_CPU_INTENSIVE" one. -- Markus From amit.sahrawat83@gmail.com Wed Jun 22 05:24:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, HTML_MESSAGE,T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.4.0-r929098 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 p5MAOVZl076267 for ; Wed, 22 Jun 2011 05:24:32 -0500 X-ASG-Debug-ID: 1308738269-31be001e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ew0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8AD4BDF4EE5 for ; Wed, 22 Jun 2011 03:24:29 -0700 (PDT) Received: from mail-ew0-f53.google.com (mail-ew0-f53.google.com [209.85.215.53]) by cuda.sgi.com with ESMTP id AgxEwZPEZGkPnAZs for ; Wed, 22 Jun 2011 03:24:29 -0700 (PDT) Received: by ewy8 with SMTP id 8so200984ewy.26 for ; Wed, 22 Jun 2011 03:24:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to :content-type; bh=DcZ62cql3oY114b9sD3I6P2vA35xvF1EUog11MKfV6I=; b=TBxYp+d/r+rZi5gAwwp8gn1nKI4TcqgKekU9LobgoDNcLvhLBvMg5y/y9vwetbwyHK a4fW8vzp9Xkf52ESYhMi/M8nZSbKb+3k5emXt88USXuNN8ghHXhAn72LZBIp9QG+m7ct lvdBlwwCgISVtogGdcrVTodJc5xXUwO1Xb8w4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=uKWquYIvPvAGUlUeG321eGS0uz95cVe/R5JumcUkIjAHGQzbKn5VRo60y19lEvwZ7F lrhIkYuMuSlsjDXRm8Nn/XbCYKwt90ae65MmMohlkirl9dOp0Qx9QR861YpjEDuQzRqD nT+ZlUY1d4S9ReQM7dltKS2TTd11kdbGCJ84g= MIME-Version: 1.0 Received: by 10.14.9.228 with SMTP id 76mr346611eet.206.1308738268903; Wed, 22 Jun 2011 03:24:28 -0700 (PDT) Received: by 10.14.127.13 with HTTP; Wed, 22 Jun 2011 03:24:28 -0700 (PDT) Date: Wed, 22 Jun 2011 15:54:28 +0530 Message-ID: X-ASG-Orig-Subj: XFS Test Case:252 - Shows Wrong Output Subject: XFS Test Case:252 - Shows Wrong Output From: Amit Sahrawat To: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=0016364c6ecf9f38ce04a64a5f98 X-Barracuda-Connect: mail-ew0-f53.google.com[209.85.215.53] X-Barracuda-Start-Time: 1308738270 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0139 1.0000 -1.9302 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=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66784 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 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 --0016364c6ecf9f38ce04a64a5f98 Content-Type: text/plain; charset=ISO-8859-1 While executing Test case no: 252 from xfstestsuites - I got Output mismatch. *Environment tried:* *X86 : Linux version 2.6.31.5-127.fc12.i686.PAE* *ARM: Linux version2.6.35.13* On looking at the test case and then dividing the total case into invidual test's I could somehow correlate the results as per the commands issues. Complete output for the '13' commands in this case is as given below: [root@localhost PROGS]# sh cmd.sh 1. into a hole 0: [0..7]: hole 1: [8..23]: unwritten 2: [24..39]: hole 2. into allocated space 0: [0..39]: data 3. into unwritten space 0: [0..39]: unwritten 4. hole -> data 0: [0..7]: hole 1: [8..15]: unwritten 2: [16..31]: data 3: [32..39]: hole 5. hole -> unwritten 0: [0..7]: hole 1: [8..15]: unwritten 2: [16..31]: unwritten 3: [32..39]: hole 6. data -> hole 0: [0..15]: data 1: [16..23]: unwritten 2: [24..39]: hole 7. data -> unwritten 0: [0..15]: data 1: [16..31]: unwritten 2: [32..39]: hole 8. unwritten -> hole 0: [0..23]: unwritten 1: [24..39]: hole 9. unwritten -> data 0: [0..15]: unwritten 1: [16..31]: data 2: [32..39]: hole 10. hole -> data -> hole 0: [0..7]: hole 1: [8..15]: unwritten 2: [16..23]: data 3: [24..31]: unwritten 4: [32..39]: hole 11. data -> hole -> data 0: [0..15]: data 1: [16..23]: unwritten 2: [24..39]: data 12. unwritten -> data -> unwritten 0: [0..15]: unwritten 1: [16..23]: data 2: [24..39]: unwritten 13. data -> unwritten -> data 0: [0..15]: data 1: [16..23]: unwritten 2: [24..39]: data [root@localhost PROGS]# The above output seems as per the tests commands issue. Please correct me if i am wrong. If this correct, then for the test case we need to change 252.out file. Thanks & Regards, Amit Sahrawat --0016364c6ecf9f38ce04a64a5f98 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
While executing Test case no: 252 from xfstestsuites - I got Output mi= smatch.
=A0
Environment tried:
X86 : Linux version 2.6.31.5-127.fc12.i686.PAE
ARM: Linux version2.6.35.13
=A0
On loo= king at the test case and then dividing the total case into invidual test&#= 39;s I could somehow correlate the results as per the commands issues.
Complete output for the '13' commands in this case is as given= below:
=A0
[root@localhost PROGS]# sh cmd.sh
=A0 1= . into a hole
0: [0..7]: hole
1: [8..23]: unwritten
2: [24..39]: h= ole
=A0 2. into allocated space
0: [0..39]: data
=A0 3. into unwritten sp= ace
0: [0..39]: unwritten
=A0 4. hole -> data
0: [0..7]: hole1: [8..15]: unwritten
2: [16..31]: data
3: [32..39]: hole
=A0 5.= hole -> unwritten
0: [0..7]: hole
1: [8..15]: unwritten
2: [16..31]: unwritten
3: [3= 2..39]: hole
=A0 6. data -> hole
0: [0..15]: data
1: [16..23]: = unwritten
2: [24..39]: hole
=A0 7. data -> unwritten
0: [0..15]= : data
1: [16..31]: unwritten
2: [32..39]: hole
=A0 8. unwritten -> hole<= br>0: [0..23]: unwritten
1: [24..39]: hole
=A0 9. unwritten -> dat= a
0: [0..15]: unwritten
1: [16..31]: data
2: [32..39]: hole
=A0= 10. hole -> data -> hole
0: [0..7]: hole
1: [8..15]: unwritten
2: [16..23]: data
3: [24..31= ]: unwritten
4: [32..39]: hole
=A0 11. data -> hole -> data
= 0: [0..15]: data
1: [16..23]: unwritten
2: [24..39]: data
=A0 12. = unwritten -> data -> unwritten
0: [0..15]: unwritten
1: [16..23]: data
2: [24..39]: unwritten
=A0= 13. data -> unwritten -> data
0: [0..15]: data
1: [16..23]: un= written
2: [24..39]: data
[root@localhost PROGS]#
The abov= e output seems as per the tests commands issue. Please correct me if i am w= rong.
If this correct, then for the test case we need to change 252.out file= .
=A0
Thanks & Regards,
Amit Sahrawat
=A0
=A0
=A0
=A0
=A0
--0016364c6ecf9f38ce04a64a5f98-- From amit.sahrawat83@gmail.com Wed Jun 22 05:48:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.2 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE,J_CHICKENPOX_65,T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.4.0-r929098 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 p5MAmt8K077221 for ; Wed, 22 Jun 2011 05:48:56 -0500 X-ASG-Debug-ID: 1308739733-319801500000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ew0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A0837DF53E1 for ; Wed, 22 Jun 2011 03:48:53 -0700 (PDT) Received: from mail-ew0-f53.google.com (mail-ew0-f53.google.com [209.85.215.53]) by cuda.sgi.com with ESMTP id vnKJHTZG6QnD0s04 for ; Wed, 22 Jun 2011 03:48:53 -0700 (PDT) Received: by ewy8 with SMTP id 8so207598ewy.26 for ; Wed, 22 Jun 2011 03:48:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:content-type; bh=IwDbETYmmx9lxfYaI2+98/05/9QyfMP03qpQQdpRAcs=; b=wzS7A0Es+05/MTN+uujq9m8xIN6Fw1lMUQi+CnvcGqUr/eh5O74jwOStoVx4sY0+Qp ug8TlV7MK6Gk33P8yZ6DgrUrMhaUmgHXPVDBqZmXARHioH9RJjf+NRJUugHLKZCvwqnl tRpkKY3f15cEQPDARgYWhDc/IqH3ZhL/MSRhI= 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; b=da4G1nh7Za/kHSZp462ylWwxy+CGD8TSrQwFr/aXcNQc+ZhUQE9UyXhVYKOgB86afc ME2bwvBcDX2VJIP/qoN4xzIJ/rbvJHHN2zXrFOBpdW+kES84QGKfg2LSntWv7dnzeB4X DyFV16NAudytKuFpMe4Pv+e3ivNBNuEtPD/nI= MIME-Version: 1.0 Received: by 10.14.9.152 with SMTP id 24mr377423eet.46.1308739732877; Wed, 22 Jun 2011 03:48:52 -0700 (PDT) Received: by 10.14.127.13 with HTTP; Wed, 22 Jun 2011 03:48:52 -0700 (PDT) In-Reply-To: References: Date: Wed, 22 Jun 2011 16:18:52 +0530 Message-ID: X-ASG-Orig-Subj: Re: XFS Test Case:252 - Shows Wrong Output Subject: Re: XFS Test Case:252 - Shows Wrong Output From: Amit Sahrawat To: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=0016364c62a1e1b39c04a64ab68a X-Barracuda-Connect: mail-ew0-f53.google.com[209.85.215.53] X-Barracuda-Start-Time: 1308739734 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0199 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66786 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 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 --0016364c62a1e1b39c04a64ab68a Content-Type: text/plain; charset=ISO-8859-1 Dear All, ** *Test Case:13 * echo " 13. data -> unwritten -> data" rm -f $testfile $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ -c "$alloc_cmd 0 20k" \ -c "pwrite 0k 8k" -c "fsync" \ -c "pwrite 12k 8k" -c "fsync" \ -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now *After executing individual case like this: *testfile=/data/usb/sda3/252.testfile echo "13. data -> unwritten -> data" rm -f $testfile xfs_io -f -c "truncate 20k" -c \ "falloc 0 20k" -c "pwrite 0k 8k" -c "fsync" -c "pwrite 12k 8k" -c \ "fsync" -c "fpunch 4k 12k" -c "fiemap -v" $testfile | $filter_cmd *Original Output(Taken from 252.out): * 13. data -> unwritten -> data 0: [0..7]: data 1: [8..31]: hole 2: [32..39]: data *Output in my case* 13. data -> unwritten -> data 0: [0..15]: data 1: [16..23]: unwritten 2: [24..39]: data Please let me know about the vailidity of this result. Thanks & Regards, Amit Sahrawat On Wed, Jun 22, 2011 at 3:54 PM, Amit Sahrawat wrote: > While executing Test case no: 252 from xfstestsuites - I got Output > mismatch. > > *Environment tried:* > *X86 : Linux version 2.6.31.5-127.fc12.i686.PAE* > *ARM: Linux version2.6.35.13* > > On looking at the test case and then dividing the total case into invidual > test's I could somehow correlate the results as per the commands issues. > Complete output for the '13' commands in this case is as given below: > > [root@localhost PROGS]# sh cmd.sh > 1. into a hole > 0: [0..7]: hole > 1: [8..23]: unwritten > 2: [24..39]: hole > 2. into allocated space > 0: [0..39]: data > 3. into unwritten space > 0: [0..39]: unwritten > 4. hole -> data > 0: [0..7]: hole > 1: [8..15]: unwritten > 2: [16..31]: data > 3: [32..39]: hole > 5. hole -> unwritten > 0: [0..7]: hole > 1: [8..15]: unwritten > 2: [16..31]: unwritten > 3: [32..39]: hole > 6. data -> hole > 0: [0..15]: data > 1: [16..23]: unwritten > 2: [24..39]: hole > 7. data -> unwritten > 0: [0..15]: data > 1: [16..31]: unwritten > 2: [32..39]: hole > 8. unwritten -> hole > 0: [0..23]: unwritten > 1: [24..39]: hole > 9. unwritten -> data > 0: [0..15]: unwritten > 1: [16..31]: data > 2: [32..39]: hole > 10. hole -> data -> hole > 0: [0..7]: hole > 1: [8..15]: unwritten > 2: [16..23]: data > 3: [24..31]: unwritten > 4: [32..39]: hole > 11. data -> hole -> data > 0: [0..15]: data > 1: [16..23]: unwritten > 2: [24..39]: data > 12. unwritten -> data -> unwritten > 0: [0..15]: unwritten > 1: [16..23]: data > 2: [24..39]: unwritten > 13. data -> unwritten -> data > 0: [0..15]: data > 1: [16..23]: unwritten > 2: [24..39]: data > [root@localhost PROGS]# > The above output seems as per the tests commands issue. Please correct me > if i am wrong. > If this correct, then for the test case we need to change 252.out file. > > Thanks & Regards, > Amit Sahrawat > > > > > > --0016364c62a1e1b39c04a64ab68a Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Dear All,
=A0
Test Case:1= 3
=A0=A0=A0=A0=A0=A0=A0 echo "=A0 13. data -> unwritten= -> data"
=A0=A0=A0=A0=A0=A0=A0 rm -f $testfile
=A0=A0=A0=A0= =A0=A0=A0 $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 -c "$alloc_cmd 0 20k&quo= t; \
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 -c "pwrite 0k 8k= " -c "fsync" \
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0 -c "pwrite 12k 8k" -c "fsync" \
=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 -c "$zero_cmd 4k 12k" \
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 -c "$map_cmd -v" $t= estfile | $filter_cmd
=A0=A0=A0=A0=A0=A0=A0 [ $? -ne 0 ] && die_= now=A0=A0=A0=A0=A0=A0=A0

After executing individual case l= ike this:
testfile=3D/data/usb/sda3/252.testfile

echo "13. data -> unwritten -> data"
rm -f $testfile<= br>xfs_io -f -c "truncate 20k" -c \
"falloc 0 20k" -= c "pwrite 0k 8k" -c "fsync" -c "pwrite 12k 8k"= ; -c =A0\
"fsync" -c "fpunch 4k 12k" -c "fiemap -v" $te= stfile | $filter_cmd

Original Output(Taken from 252.out):
=
=A0=A0=A0=A0=A0=A0=A0 13. data -> unwritten -> data
0: [0= ..7]: data
1: [8..31]: hole
2: [32..39]: data

Output in my case
=A0 13. data -> unwritten -> data
0: [0..15]: data
1: = [16..23]: unwritten
2: [24..39]: data

Please let me know about th= e vailidity of this result.
=A0
Thanks & Regards,
Amit Sahrawat
<= div class=3D"gmail_quote">On Wed, Jun 22, 2011 at 3:54 PM, Amit Sahrawat <amit.sahra= wat83@gmail.com> wrote:
While executing Test case no: 252 from xf= stestsuites - I got Output mismatch.
=A0
Environment tried:
X8= 6 : Linux version 2.6.31.5-127.fc12.i686.PAE
ARM: Linux version2.6.35.13
=A0
On loo= king at the test case and then dividing the total case into invidual test&#= 39;s I could somehow correlate the results as per the commands issues.
Complete output for the '13' commands in this case is as given= below:
=A0
[root@localhost PROGS]# sh cmd.sh
=A0 1= . into a hole
0: [0..7]: hole
1: [8..23]: unwritten
2: [24..39]: h= ole
=A0 2. into allocated space
0: [0..39]: data
=A0 3. into unwritten sp= ace
0: [0..39]: unwritten
=A0 4. hole -> data
0: [0..7]: hole1: [8..15]: unwritten
2: [16..31]: data
3: [32..39]: hole
=A0 5.= hole -> unwritten
0: [0..7]: hole
1: [8..15]: unwritten
2: [16..31]: unwritten
3: [3= 2..39]: hole
=A0 6. data -> hole
0: [0..15]: data
1: [16..23]: = unwritten
2: [24..39]: hole
=A0 7. data -> unwritten
0: [0..15]= : data
1: [16..31]: unwritten
2: [32..39]: hole
=A0 8. unwritten -> hole<= br>0: [0..23]: unwritten
1: [24..39]: hole
=A0 9. unwritten -> dat= a
0: [0..15]: unwritten
1: [16..31]: data
2: [32..39]: hole
=A0= 10. hole -> data -> hole
0: [0..7]: hole
1: [8..15]: unwritten
2: [16..23]: data
3: [24..31= ]: unwritten
4: [32..39]: hole
=A0 11. data -> hole -> data
= 0: [0..15]: data
1: [16..23]: unwritten
2: [24..39]: data
=A0 12. = unwritten -> data -> unwritten
0: [0..15]: unwritten
1: [16..23]: data
2: [24..39]: unwritten
=A0= 13. data -> unwritten -> data
0: [0..15]: data
1: [16..23]: un= written
2: [24..39]: data
[root@localhost PROGS]#
The abov= e output seems as per the tests commands issue. Please correct me if i am w= rong.
If this correct, then for the test case we need to change 252.out file= .
=A0
Thanks & Regards,
Amit Sahrawat
=A0
=A0
=A0
= =A0
=A0

--0016364c62a1e1b39c04a64ab68a-- From sandeen@sandeen.net Wed Jun 22 10:24:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_35, J_CHICKENPOX_38,J_CHICKENPOX_39,J_CHICKENPOX_73 autolearn=no version=3.4.0-r929098 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 p5MFO72N099148 for ; Wed, 22 Jun 2011 10:24:07 -0500 X-ASG-Debug-ID: 1308756246-083903d80000-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 9EEED24E30 for ; Wed, 22 Jun 2011 08:24:06 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id TjEyhfK4Fg2MEyer for ; Wed, 22 Jun 2011 08:24:06 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id F02BC4964600 for ; Wed, 22 Jun 2011 10:24:02 -0500 (CDT) Message-ID: <4E020912.9020106@sandeen.net> Date: Wed, 22 Jun 2011 10:24:02 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: duplicate code in dir2 Subject: duplicate code in dir2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1308756246 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0005 1.0000 -2.0176 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66805 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 was poking around with various code metrics, and found a fair bit of duplication in dir2 code (using "duplo"). Haven't really thought about how it might be factorable, but thought it might be interesting to share. -Eric /src/git/linux-2.6/fs/xfs/xfs_dir2_node.c(251) /src/git/linux-2.6/fs/xfs/xfs_dir2_leaf.c(440) if (index < be16_to_cpu(leaf->hdr.count)) memmove(lep + 1, lep, (be16_to_cpu(leaf->hdr.count) - index) * sizeof(*lep)); lfloglow = index; lfloghigh = be16_to_cpu(leaf->hdr.count); be16_add_cpu(&leaf->hdr.count, 1); else { if (compact == 0) { for (lowstale = index - 1; lowstale >= 0 && be32_to_cpu(leaf->ents[lowstale].address) != XFS_DIR2_NULL_DATAPTR; lowstale--) continue; for (highstale = index; highstale < be16_to_cpu(leaf->hdr.count) && be32_to_cpu(leaf->ents[highstale].address) != XFS_DIR2_NULL_DATAPTR && (lowstale < 0 || index - lowstale - 1 >= highstale - index); highstale++) continue; if (lowstale >= 0 && (highstale == be16_to_cpu(leaf->hdr.count) || index - lowstale - 1 < highstale - index)) { /src/git/linux-2.6/fs/xfs/xfs_dir2_node.c(300) /src/git/linux-2.6/fs/xfs/xfs_dir2_leaf.c(499) if (index - lowstale - 1 > 0) memmove(&leaf->ents[lowstale], &leaf->ents[lowstale + 1], (index - lowstale - 1) * sizeof(*lep)); lep = &leaf->ents[index - 1]; lfloglow = MIN(lowstale, lfloglow); lfloghigh = MAX(index - 1, lfloghigh); else { /src/git/linux-2.6/fs/xfs/xfs_dir2_node.c(316) /src/git/linux-2.6/fs/xfs/xfs_dir2_leaf.c(518) if (highstale - index > 0) memmove(&leaf->ents[index + 1], &leaf->ents[index], (highstale - index) * sizeof(*lep)); lep = &leaf->ents[index]; lfloglow = MIN(index, lfloglow); lfloghigh = MAX(highstale, lfloghigh); be16_add_cpu(&leaf->hdr.stale, -1); lep->hashval = cpu_to_be32(args->hashval); /src/git/linux-2.6/fs/xfs/xfs_dir2_node.c(582) /src/git/linux-2.6/fs/xfs/xfs_dir2_leaf.c(1349) for (lep = &leaf->ents[index]; index < be16_to_cpu(leaf->hdr.count) && be32_to_cpu(lep->hashval) == args->hashval; lep++, index++) { if (be32_to_cpu(lep->address) == XFS_DIR2_NULL_DATAPTR) continue; newdb = xfs_dir2_dataptr_to_db(mp, be32_to_cpu(lep->address)); if (newdb != curdb) { /src/git/linux-2.6/fs/xfs/xfs_dir2_node.c(442) /src/git/linux-2.6/fs/xfs/xfs_dir2_leaf.c(1349) for (lep = &leaf->ents[index]; index < be16_to_cpu(leaf->hdr.count) && be32_to_cpu(lep->hashval) == args->hashval; lep++, index++) { if (be32_to_cpu(lep->address) == XFS_DIR2_NULL_DATAPTR) continue; newdb = xfs_dir2_dataptr_to_db(mp, be32_to_cpu(lep->address)); if (newdb != curdb) { From sandeen@sandeen.net Wed Jun 22 10:25:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5MFPiX1099428 for ; Wed, 22 Jun 2011 10:25:45 -0500 X-ASG-Debug-ID: 1308756343-0ea302b10000-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 6843BDFB3D8 for ; Wed, 22 Jun 2011 08:25:44 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id mG8QFH6STAmcNZhk for ; Wed, 22 Jun 2011 08:25:44 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 737524964601 for ; Wed, 22 Jun 2011 10:25:43 -0500 (CDT) Message-ID: <4E020977.9080000@sandeen.net> Date: Wed, 22 Jun 2011 10:25:43 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: Re: duplicate code in dir2 Subject: Re: duplicate code in dir2 References: <4E020912.9020106@sandeen.net> In-Reply-To: <4E020912.9020106@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1308756344 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66804 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 Another interesting chunk elsewhere: /src/git/linux-2.6/fs/xfs/xfs_da_btree.c(782) /src/git/linux-2.6/fs/xfs/xfs_attr_leaf.c(1542) *action = 0; return(0); if (count == 0) { forward = (info->forw != 0); memcpy(&state->altpath, &state->path, sizeof(state->path)); error = xfs_da_path_shift(state, &state->altpath, forward, 0, &retval); if (error) return(error); if (retval) { *action = 0; } else { *action = 2; return(0); forward = (be32_to_cpu(info->forw) < be32_to_cpu(info->back)); for (i = 0; i < 2; forward = !forward, i++) { if (forward) blkno = be32_to_cpu(info->forw); else blkno = be32_to_cpu(info->back); if (blkno == 0) continue; error = xfs_da_read_buf(state->args->trans, state->args->dp, /src/git/linux-2.6/fs/xfs/xfs_da_btree.c(842) /src/git/linux-2.6/fs/xfs/xfs_attr_leaf.c(1605) break; if (i >= 2) { *action = 0; return(0); memcpy(&state->altpath, &state->path, sizeof(state->path)); if (blkno < blk->blkno) { error = xfs_da_path_shift(state, &state->altpath, forward, 0, &retval); From ib-xfs@badula.org Wed Jun 22 10:32:05 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_41 autolearn=no version=3.4.0-r929098 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 p5MFW4Z8100624 for ; Wed, 22 Jun 2011 10:32:05 -0500 X-ASG-Debug-ID: 1308756722-1c4103cf0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ns2.tower-research.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 801931EDFD53 for ; Wed, 22 Jun 2011 08:32:02 -0700 (PDT) Received: from ns2.tower-research.com (ns2.tower-research.com [64.245.141.6]) by cuda.sgi.com with ESMTP id byxv85nwKGDHpxVb for ; Wed, 22 Jun 2011 08:32:02 -0700 (PDT) Received: from lithium-b.tower-research.com (lithium-b.tower-research.com [10.1.1.13]) by ns2.tower-research.com (8.13.8/8.13.8) with ESMTP id p5MFW2kv007221 for ; Wed, 22 Jun 2011 11:32:02 -0400 Received: from ionlinux.tower-research.com (ionlinux.tower-research.com [10.0.20.21]) by lithium-b.tower-research.com (8.13.8/8.13.8) with ESMTP id p5MFW1vE024019 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Wed, 22 Jun 2011 11:32:01 -0400 Received: from ionlinux.tower-research.com (localhost.localdomain [127.0.0.1]) by ionlinux.tower-research.com (8.13.1/8.13.1) with ESMTP id p5MFW1Dw027251 for ; Wed, 22 Jun 2011 11:32:01 -0400 Received: from localhost (ion@localhost) by ionlinux.tower-research.com (8.13.1/8.13.1/Submit) with ESMTP id p5MFW1C2027245 for ; Wed, 22 Jun 2011 11:32:01 -0400 X-Authentication-Warning: ionlinux.tower-research.com: ion owned process doing -bs Date: Wed, 22 Jun 2011 11:32:01 -0400 (EDT) From: Ion Badulescu X-X-Sender: ion@ionlinux.tower-research.com To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair never finishes on lvm partition Subject: Re: xfs_repair never finishes on lvm partition Message-ID: User-Agent: Alpine 2.00 (LRH 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Scanned-By: MIMEDefang 2.71 on 64.245.141.4 X-Scanned-By: MIMEDefang 2.71 on 10.1.1.10 X-Barracuda-Connect: ns2.tower-research.com[64.245.141.6] X-Barracuda-Start-Time: 1308756723 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.61 X-Barracuda-Spam-Status: No, SCORE=-1.61 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66805 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hello, Sorry for highjacking this old thread from last year. I actually ran into the same situation as the original poster, using xfsprogs-3.1.5 on kernel 2.6.38.7. Using xfs_repair -P fixed the issue, and I also managed to get a metadump before repairing it so you guys can take a look and maybe fix the prefetch mode. The strace of the xfs_repair, for what it's worth, seems to show a complete deadlock with all threads waiting on futexes: # strace -f -F -p 8315 Process 8374 attached with 6 threads - interrupt to quit [pid 8374] futex(0x7f2336d20a84, FUTEX_WAIT, 4, NULL [pid 8373] futex(0x7f2336d20a84, FUTEX_WAIT, 3, NULL) = -1 EAGAIN (Resource temporarily unavailable) [pid 8372] futex(0x7f2336d20a84, FUTEX_WAIT, 2, NULL [pid 8373] futex(0x7f2336d20a84, FUTEX_WAIT, 4, NULL [pid 8372] <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) [pid 8372] futex(0x7f2336d20a84, FUTEX_WAIT, 4, NULL [pid 8371] futex(0x7f2336d20a84, FUTEX_WAIT, 1, NULL) = -1 EAGAIN (Resource temporarily unavailable) [pid 8370] futex(0x7f2336d20b08, FUTEX_WAIT, 0, NULL [pid 8371] futex(0x7f2336d20a84, FUTEX_WAIT, 4, NULL [pid 8315] futex(0x7f2336d1f958, FUTEX_WAIT, 2, NULL^C Process 8315 detached Process 8370 detached Process 8371 detached Process 8372 detached Process 8373 detached Process 8374 detached The metadump is 4.2GB, off of a 2.2TB filesystem. If there are interested parties, I can arrange to put online somewhere for an http download. Thanks, -Ion -- It is better to keep your mouth shut and be thought a fool, than to open it and remove all doubt. From achender@linux.vnet.ibm.com Wed Jun 22 12:22:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p5MHMsmj107259 for ; Wed, 22 Jun 2011 12:22:55 -0500 X-ASG-Debug-ID: 1308763373-426f037c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e9.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 115A8DFCB70 for ; Wed, 22 Jun 2011 10:22:53 -0700 (PDT) Received: from e9.ny.us.ibm.com (e9.ny.us.ibm.com [32.97.182.139]) by cuda.sgi.com with ESMTP id vxD887TVOiAFRUrI for ; Wed, 22 Jun 2011 10:22:53 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay05.pok.ibm.com (d01relay05.pok.ibm.com [9.56.227.237]) by e9.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5MGpgCM015887 for ; Wed, 22 Jun 2011 12:51:42 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay05.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5MHMgui147460 for ; Wed, 22 Jun 2011 13:22:42 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5MHMgvI024312 for ; Wed, 22 Jun 2011 13:22:42 -0400 Received: from lc4eb0185863151.ibm.com (sig-9-48-120-95.mts.ibm.com [9.48.120.95]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5MHMfwX024250; Wed, 22 Jun 2011 13:22:42 -0400 Message-ID: <4E0224DD.5030501@linux.vnet.ibm.com> Date: Wed, 22 Jun 2011 10:22:37 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Amit Sahrawat CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS Test Case:252 - Shows Wrong Output Subject: Re: XFS Test Case:252 - Shows Wrong Output References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e9.ny.us.ibm.com[32.97.182.139] X-Barracuda-Start-Time: 1308763374 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 06/22/2011 03:48 AM, Amit Sahrawat wrote: > echo "13. data -> unwritten -> data" > rm -f $testfile > xfs_io -f -c "truncate 20k" -c \ > "falloc 0 20k" -c "pwrite 0k 8k" -c "fsync" -c "pwrite 12k 8k" -c \ > "fsync" -c "fpunch 4k 12k" -c "fiemap -v" $testfile | $filter_cmd > > *Original Output(Taken from 252.out): > * 13. data -> unwritten -> data > 0: [0..7]: data > 1: [8..31]: hole > 2: [32..39]: data > *Output in my case* > 13. data -> unwritten -> data > 0: [0..15]: data > 1: [16..23]: unwritten > 2: [24..39]: data Hi there, I believe the -c "fpunch 4k 12k" is supposed to be what puts the hole there. If I run the command you have above, the fiemap should show you a hole. Something like this: xfs_io -f -c "truncate 20k" -c "falloc 0 20k" -c "pwrite 0k 8k" -c "fsync" -c "pwrite 12k 8k" -c "fsync" -c "fpunch 4k 12k" -c "fiemap -v" somefile wrote 8192/8192 bytes at offset 0 8 KiB, 2 ops; 0.0000 sec (217.014 MiB/sec and 55555.5556 ops/sec) wrote 8192/8192 bytes at offset 12288 8 KiB, 2 ops; 0.0000 sec (269.397 MiB/sec and 68965.5172 ops/sec) somefile: EXT: FILE-OFFSET BLOCK-RANGE TOTAL FLAGS 0: [0..7]: 296..303 8 0x0 1: [8..31]: hole 24 2: [32..39]: 328..335 8 0x1 If you do not see the hole there, it could be that your punch hole operation is failing for some reason. Allison Henderson From achender@linux.vnet.ibm.com Wed Jun 22 12:36:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p5MHab4m107751 for ; Wed, 22 Jun 2011 12:36:38 -0500 X-ASG-Debug-ID: 1308764197-6678016f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e2.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A1D97174AB88 for ; Wed, 22 Jun 2011 10:36:37 -0700 (PDT) Received: from e2.ny.us.ibm.com (e2.ny.us.ibm.com [32.97.182.142]) by cuda.sgi.com with ESMTP id RSbcrfae6qULhkwU for ; Wed, 22 Jun 2011 10:36:37 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay04.pok.ibm.com (d01relay04.pok.ibm.com [9.56.227.236]) by e2.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5MHG0kW032192 for ; Wed, 22 Jun 2011 13:16:00 -0400 Received: from d03av03.boulder.ibm.com (d03av03.boulder.ibm.com [9.17.195.169]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5MHaaFA127568 for ; Wed, 22 Jun 2011 13:36:36 -0400 Received: from d03av03.boulder.ibm.com (loopback [127.0.0.1]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5MBaPaA025229 for ; Wed, 22 Jun 2011 05:36:25 -0600 Received: from lc4eb0185863151.ibm.com (sig-9-65-192-189.mts.ibm.com [9.65.192.189]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5MBaN9Y025071; Wed, 22 Jun 2011 05:36:24 -0600 Message-ID: <4E022818.7030406@linux.vnet.ibm.com> Date: Wed, 22 Jun 2011 10:36:24 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Amit Sahrawat CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS Test Case:252 - Shows Wrong Output Subject: Re: XFS Test Case:252 - Shows Wrong Output References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e2.ny.us.ibm.com[32.97.182.142] X-Barracuda-Start-Time: 1308764197 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 06/22/2011 03:48 AM, Amit Sahrawat wrote: > xfs_io -f -c "truncate 20k" -c \ > "falloc 0 20k" -c "pwrite 0k 8k" -c "fsync" -c "pwrite 12k 8k" -c \ > "fsync" -c "fpunch 4k 12k" -c "fiemap -v" $testfile | $filter_cmd > > *Original Output(Taken from 252.out): > * 13. data -> unwritten -> data > 0: [0..7]: data > 1: [8..31]: hole > 2: [32..39]: data > *Output in my case* > 13. data -> unwritten -> data > 0: [0..15]: data > 1: [16..23]: unwritten > 2: [24..39]: data > > Please let me know about the vailidity of this result. Hi there, It looks like the "fpunch 4k 12k" is supposed to be what puts the hole there. If I run the command you have above, the fiemap should show a hole like this: xfs_io -f -c "truncate 20k" -c "falloc 0 20k" -c "pwrite 0k 8k" -c "fsync" -c "pwrite 12k 8k" -c "fsync" -c "fpunch 4k 12k" -c "fiemap -v" somefile wrote 8192/8192 bytes at offset 0 8 KiB, 2 ops; 0.0000 sec (217.014 MiB/sec and 55555.5556 ops/sec) wrote 8192/8192 bytes at offset 12288 8 KiB, 2 ops; 0.0000 sec (339.674 MiB/sec and 86956.5217 ops/sec) somefile: EXT: FILE-OFFSET BLOCK-RANGE TOTAL FLAGS 0: [0..7]: 256..263 8 0x0 1: [8..31]: hole 24 2: [32..39]: 288..295 8 0x1 If you do not see the hole, it could be your punch hole operation is failing for some reason. Allison Henderson From BATV+b467f25dd58f5e55a0ba+2859+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 22 14:18:05 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5MJI5E8115538 for ; Wed, 22 Jun 2011 14:18:05 -0500 X-ASG-Debug-ID: 1308770283-0c37018b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 354EC255AD for ; Wed, 22 Jun 2011 12:18:03 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id u3xp3WSUYgyncUvE for ; Wed, 22 Jun 2011 12:18:03 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZSw7-00080u-Kv for xfs@oss.sgi.com; Wed, 22 Jun 2011 19:18:03 +0000 Message-Id: <20110622191803.613053964@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 22 Jun 2011 15:17:50 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 5/6] xfs: fix filesystsem freeze race in xfs_trans_alloc Subject: [PATCH 5/6] xfs: fix filesystsem freeze race in xfs_trans_alloc References: <20110622191745.364749314@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-fix-freeze-race X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308770284 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66819 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 As pointed out by Jan xfs_trans_alloc can race with a concurrent filesystem free when it sleeps during the memory allocation. Fix this by moving the wait_for_freeze call after the memory allocation. This means moving the freeze into the low-level _xfs_trans_alloc helper, which thus grows a new argument. Also fix up some comments in that area while at it. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_fsops.c =================================================================== --- xfs.orig/fs/xfs/xfs_fsops.c 2011-06-18 17:50:43.477373715 +0200 +++ xfs/fs/xfs/xfs_fsops.c 2011-06-20 09:17:00.933518761 +0200 @@ -626,7 +626,7 @@ xfs_fs_log_dummy( xfs_trans_t *tp; int error; - tp = _xfs_trans_alloc(mp, XFS_TRANS_DUMMY1, KM_SLEEP); + tp = _xfs_trans_alloc(mp, XFS_TRANS_DUMMY1, KM_SLEEP, false); error = xfs_trans_reserve(tp, 0, mp->m_sb.sb_sectsize + 128, 0, 0, XFS_DEFAULT_LOG_COUNT); if (error) { Index: xfs/fs/xfs/xfs_iomap.c =================================================================== --- xfs.orig/fs/xfs/xfs_iomap.c 2011-06-18 17:50:43.487373714 +0200 +++ xfs/fs/xfs/xfs_iomap.c 2011-06-20 09:17:00.933518761 +0200 @@ -688,8 +688,7 @@ xfs_iomap_write_unwritten( * the same inode that we complete here and might deadlock * on the iolock. */ - xfs_wait_for_freeze(mp, SB_FREEZE_TRANS); - tp = _xfs_trans_alloc(mp, XFS_TRANS_STRAT_WRITE, KM_NOFS); + tp = _xfs_trans_alloc(mp, XFS_TRANS_STRAT_WRITE, KM_NOFS, true); tp->t_flags |= XFS_TRANS_RESERVE; error = xfs_trans_reserve(tp, resblks, XFS_WRITE_LOG_RES(mp), 0, Index: xfs/fs/xfs/xfs_trans.h =================================================================== --- xfs.orig/fs/xfs/xfs_trans.h 2011-06-18 17:50:43.497373713 +0200 +++ xfs/fs/xfs/xfs_trans.h 2011-06-21 10:57:04.908840421 +0200 @@ -447,8 +447,14 @@ typedef struct xfs_trans { /* * XFS transaction mechanism exported interfaces. */ -xfs_trans_t *xfs_trans_alloc(struct xfs_mount *, uint); -xfs_trans_t *_xfs_trans_alloc(struct xfs_mount *, uint, uint); +xfs_trans_t *_xfs_trans_alloc(struct xfs_mount *, uint, uint, bool); + +static inline struct xfs_trans * +xfs_trans_alloc(struct xfs_mount *mp, uint type) +{ + return _xfs_trans_alloc(mp, type, KM_SLEEP, true); +} + xfs_trans_t *xfs_trans_dup(xfs_trans_t *); int xfs_trans_reserve(xfs_trans_t *, uint, uint, uint, uint, uint); Index: xfs/fs/xfs/xfs_mount.c =================================================================== --- xfs.orig/fs/xfs/xfs_mount.c 2011-06-18 17:50:43.510707047 +0200 +++ xfs/fs/xfs/xfs_mount.c 2011-06-20 09:17:00.936852094 +0200 @@ -1566,15 +1566,9 @@ xfs_fs_writable(xfs_mount_t *mp) } /* - * xfs_log_sbcount - * * Called either periodically to keep the on disk superblock values * roughly up to date or from unmount to make sure the values are * correct on a clean unmount. - * - * Note this code can be called during the process of freezing, so - * we may need to use the transaction allocator which does not not - * block when the transaction subsystem is in its frozen state. */ int xfs_log_sbcount( @@ -1596,7 +1590,13 @@ xfs_log_sbcount( if (!xfs_sb_version_haslazysbcount(&mp->m_sb)) return 0; - tp = _xfs_trans_alloc(mp, XFS_TRANS_SB_COUNT, KM_SLEEP); + /* + * We can be called during the process of freezing, so make sure + * we go ahead even if the frozen for new transactions. We will + * always use a sync transaction in the freeze path to make sure + * the transaction has completed by the time we return. + */ + tp = _xfs_trans_alloc(mp, XFS_TRANS_SB_COUNT, KM_SLEEP, false); error = xfs_trans_reserve(tp, 0, mp->m_sb.sb_sectsize + 128, 0, 0, XFS_DEFAULT_LOG_COUNT); if (error) { Index: xfs/fs/xfs/xfs_trans.c =================================================================== --- xfs.orig/fs/xfs/xfs_trans.c 2011-06-18 17:50:43.524040379 +0200 +++ xfs/fs/xfs/xfs_trans.c 2011-06-21 10:56:25.305509042 +0200 @@ -566,31 +566,24 @@ xfs_trans_init( /* * This routine is called to allocate a transaction structure. + * * The type parameter indicates the type of the transaction. These * are enumerated in xfs_trans.h. - * - * Dynamically allocate the transaction structure from the transaction - * zone, initialize it, and return it to the caller. */ -xfs_trans_t * -xfs_trans_alloc( - xfs_mount_t *mp, - uint type) -{ - xfs_wait_for_freeze(mp, SB_FREEZE_TRANS); - return _xfs_trans_alloc(mp, type, KM_SLEEP); -} - -xfs_trans_t * +struct xfs_trans * _xfs_trans_alloc( - xfs_mount_t *mp, - uint type, - uint memflags) + struct xfs_mount *mp, + uint type, + uint memflags, + bool wait_for_freeze) { - xfs_trans_t *tp; + struct xfs_trans *tp; atomic_inc(&mp->m_active_trans); + if (wait_for_freeze) + xfs_wait_for_freeze(mp, SB_FREEZE_TRANS); + tp = kmem_zone_zalloc(xfs_trans_zone, memflags); tp->t_magic = XFS_TRANS_MAGIC; tp->t_type = type; From BATV+b467f25dd58f5e55a0ba+2859+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 22 14:18:05 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5MJI58I115548 for ; Wed, 22 Jun 2011 14:18:05 -0500 X-ASG-Debug-ID: 1308770283-0c3801960000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3E937255AF for ; Wed, 22 Jun 2011 12:18:03 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id B2xbOE1H7tBWUxnw for ; Wed, 22 Jun 2011 12:18:03 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZSw7-00080O-Ew for xfs@oss.sgi.com; Wed, 22 Jun 2011 19:18:03 +0000 Message-Id: <20110622191803.425482645@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 22 Jun 2011 15:17:49 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 4/6] xfs: kill xfs_itruncate_start Subject: [PATCH 4/6] xfs: kill xfs_itruncate_start References: <20110622191745.364749314@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-kill-xfs_itruncate_start X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308770284 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66819 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 xfs_itruncate_start is a rather length wrapper that evaluates to a call to xfs_ioend_wait and xfs_tosspages, and only has two callers. Instead of using the complicated checks left over from IRIX where we can to truncate the pagecache just call xfs_tosspages (aka truncate_inode_pages) directly as we want to get rid of all data after i_size, and truncate_inode_pages handles incorrect alignments and too large offsets just fine. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Index: xfs/fs/xfs/xfs_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode.c 2011-06-21 10:58:02.042170810 +0200 +++ xfs/fs/xfs/xfs_inode.c 2011-06-21 11:13:21.495457591 +0200 @@ -1217,165 +1217,8 @@ xfs_isize_check( #endif /* DEBUG */ /* - * Calculate the last possible buffered byte in a file. This must - * include data that was buffered beyond the EOF by the write code. - * This also needs to deal with overflowing the xfs_fsize_t type - * which can happen for sizes near the limit. - * - * We also need to take into account any blocks beyond the EOF. It - * may be the case that they were buffered by a write which failed. - * In that case the pages will still be in memory, but the inode size - * will never have been updated. - */ -STATIC xfs_fsize_t -xfs_file_last_byte( - xfs_inode_t *ip) -{ - xfs_mount_t *mp; - xfs_fsize_t last_byte; - xfs_fileoff_t last_block; - xfs_fileoff_t size_last_block; - int error; - - ASSERT(xfs_isilocked(ip, XFS_IOLOCK_EXCL|XFS_IOLOCK_SHARED)); - - mp = ip->i_mount; - /* - * Only check for blocks beyond the EOF if the extents have - * been read in. This eliminates the need for the inode lock, - * and it also saves us from looking when it really isn't - * necessary. - */ - if (ip->i_df.if_flags & XFS_IFEXTENTS) { - xfs_ilock(ip, XFS_ILOCK_SHARED); - error = xfs_bmap_last_offset(NULL, ip, &last_block, - XFS_DATA_FORK); - xfs_iunlock(ip, XFS_ILOCK_SHARED); - if (error) { - last_block = 0; - } - } else { - last_block = 0; - } - size_last_block = XFS_B_TO_FSB(mp, (xfs_ufsize_t)ip->i_size); - last_block = XFS_FILEOFF_MAX(last_block, size_last_block); - - last_byte = XFS_FSB_TO_B(mp, last_block); - if (last_byte < 0) { - return XFS_MAXIOFFSET(mp); - } - last_byte += (1 << mp->m_writeio_log); - if (last_byte < 0) { - return XFS_MAXIOFFSET(mp); - } - return last_byte; -} - -/* - * Start the truncation of the file to new_size. The new size - * must be smaller than the current size. This routine will - * clear the buffer and page caches of file data in the removed - * range, and xfs_itruncate_finish() will remove the underlying - * disk blocks. - * - * The inode must have its I/O lock locked EXCLUSIVELY, and it - * must NOT have the inode lock held at all. This is because we're - * calling into the buffer/page cache code and we can't hold the - * inode lock when we do so. - * - * We need to wait for any direct I/Os in flight to complete before we - * proceed with the truncate. This is needed to prevent the extents - * being read or written by the direct I/Os from being removed while the - * I/O is in flight as there is no other method of synchronising - * direct I/O with the truncate operation. Also, because we hold - * the IOLOCK in exclusive mode, we prevent new direct I/Os from being - * started until the truncate completes and drops the lock. Essentially, - * the xfs_ioend_wait() call forms an I/O barrier that provides strict - * ordering between direct I/Os and the truncate operation. - * - * The flags parameter can have either the value XFS_ITRUNC_DEFINITE - * or XFS_ITRUNC_MAYBE. The XFS_ITRUNC_MAYBE value should be used - * in the case that the caller is locking things out of order and - * may not be able to call xfs_itruncate_finish() with the inode lock - * held without dropping the I/O lock. If the caller must drop the - * I/O lock before calling xfs_itruncate_finish(), then xfs_itruncate_start() - * must be called again with all the same restrictions as the initial - * call. - */ -int -xfs_itruncate_start( - xfs_inode_t *ip, - uint flags, - xfs_fsize_t new_size) -{ - xfs_fsize_t last_byte; - xfs_off_t toss_start; - xfs_mount_t *mp; - int error = 0; - - ASSERT(xfs_isilocked(ip, XFS_IOLOCK_EXCL)); - ASSERT((new_size == 0) || (new_size <= ip->i_size)); - ASSERT((flags == XFS_ITRUNC_DEFINITE) || - (flags == XFS_ITRUNC_MAYBE)); - - mp = ip->i_mount; - - /* wait for the completion of any pending DIOs */ - if (new_size == 0 || new_size < ip->i_size) - xfs_ioend_wait(ip); - - /* - * Call toss_pages or flushinval_pages to get rid of pages - * overlapping the region being removed. We have to use - * the less efficient flushinval_pages in the case that the - * caller may not be able to finish the truncate without - * dropping the inode's I/O lock. Make sure - * to catch any pages brought in by buffers overlapping - * the EOF by searching out beyond the isize by our - * block size. We round new_size up to a block boundary - * so that we don't toss things on the same block as - * new_size but before it. - * - * Before calling toss_page or flushinval_pages, make sure to - * call remapf() over the same region if the file is mapped. - * This frees up mapped file references to the pages in the - * given range and for the flushinval_pages case it ensures - * that we get the latest mapped changes flushed out. - */ - toss_start = XFS_B_TO_FSB(mp, (xfs_ufsize_t)new_size); - toss_start = XFS_FSB_TO_B(mp, toss_start); - if (toss_start < 0) { - /* - * The place to start tossing is beyond our maximum - * file size, so there is no way that the data extended - * out there. - */ - return 0; - } - last_byte = xfs_file_last_byte(ip); - trace_xfs_itruncate_start(ip, new_size, flags, toss_start, last_byte); - if (last_byte > toss_start) { - if (flags & XFS_ITRUNC_DEFINITE) { - xfs_tosspages(ip, toss_start, - -1, FI_REMAPF_LOCKED); - } else { - error = xfs_flushinval_pages(ip, toss_start, - -1, FI_REMAPF_LOCKED); - } - } - -#ifdef DEBUG - if (new_size == 0) { - ASSERT(VN_CACHED(VFS_I(ip)) == 0); - } -#endif - return error; -} - -/* - * Shrink the file to the given new_size. The new size must be smaller than - * the current size. This will free up the underlying blocks in the removed - * range after a call to xfs_itruncate_start() or xfs_atruncate_start(). + * Free up the underlying blocks past new_size. The new size must be + * smaller than the current size. * * The transaction passed to this routine must have made a permanent log * reservation of at least XFS_ITRUNCATE_LOG_RES. This routine may commit the @@ -1387,7 +1230,7 @@ xfs_itruncate_start( * will be "held" within the returned transaction. This routine does NOT * require any disk space to be reserved for it within the transaction. * - * The fork parameter must be either xfs_attr_fork or xfs_data_fork, and it + * The fork parameter must be either XFS_ATTR_FORK or XFS_DATA_FORK, and it * indicates the fork which is to be truncated. For the attribute fork we only * support truncation to size 0. * Index: xfs/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.c 2011-06-21 10:58:38.462168972 +0200 +++ xfs/fs/xfs/xfs_vnodeops.c 2011-06-21 11:13:21.498790924 +0200 @@ -197,13 +197,6 @@ xfs_free_eofblocks( */ tp = xfs_trans_alloc(mp, XFS_TRANS_INACTIVE); - /* - * Do the xfs_itruncate_start() call before - * reserving any log space because - * itruncate_start will call into the buffer - * cache and we can't - * do that within a transaction. - */ if (flags & XFS_FREE_EOF_TRYLOCK) { if (!xfs_ilock_nowait(ip, XFS_IOLOCK_EXCL)) { xfs_trans_cancel(tp, 0); @@ -212,13 +205,6 @@ xfs_free_eofblocks( } else { xfs_ilock(ip, XFS_IOLOCK_EXCL); } - error = xfs_itruncate_start(ip, XFS_ITRUNC_DEFINITE, - ip->i_size); - if (error) { - xfs_trans_cancel(tp, 0); - xfs_iunlock(ip, XFS_IOLOCK_EXCL); - return error; - } error = xfs_trans_reserve(tp, 0, XFS_ITRUNCATE_LOG_RES(mp), @@ -657,20 +643,9 @@ xfs_inactive( tp = xfs_trans_alloc(mp, XFS_TRANS_INACTIVE); if (truncate) { - /* - * Do the xfs_itruncate_start() call before - * reserving any log space because itruncate_start - * will call into the buffer cache and we can't - * do that within a transaction. - */ xfs_ilock(ip, XFS_IOLOCK_EXCL); - error = xfs_itruncate_start(ip, XFS_ITRUNC_DEFINITE, 0); - if (error) { - xfs_trans_cancel(tp, 0); - xfs_iunlock(ip, XFS_IOLOCK_EXCL); - return VN_INACTIVE_CACHE; - } + xfs_ioend_wait(ip); error = xfs_trans_reserve(tp, 0, XFS_ITRUNCATE_LOG_RES(mp), Index: xfs/fs/xfs/linux-2.6/xfs_trace.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_trace.h 2011-06-21 10:58:02.068837474 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_trace.h 2011-06-21 11:13:21.498790924 +0200 @@ -1029,40 +1029,6 @@ DEFINE_SIMPLE_IO_EVENT(xfs_delalloc_enos DEFINE_SIMPLE_IO_EVENT(xfs_unwritten_convert); DEFINE_SIMPLE_IO_EVENT(xfs_get_blocks_notfound); - -TRACE_EVENT(xfs_itruncate_start, - TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size, int flag, - xfs_off_t toss_start, xfs_off_t toss_finish), - TP_ARGS(ip, new_size, flag, toss_start, toss_finish), - TP_STRUCT__entry( - __field(dev_t, dev) - __field(xfs_ino_t, ino) - __field(xfs_fsize_t, size) - __field(xfs_fsize_t, new_size) - __field(xfs_off_t, toss_start) - __field(xfs_off_t, toss_finish) - __field(int, flag) - ), - TP_fast_assign( - __entry->dev = VFS_I(ip)->i_sb->s_dev; - __entry->ino = ip->i_ino; - __entry->size = ip->i_d.di_size; - __entry->new_size = new_size; - __entry->toss_start = toss_start; - __entry->toss_finish = toss_finish; - __entry->flag = flag; - ), - TP_printk("dev %d:%d ino 0x%llx %s size 0x%llx new_size 0x%llx " - "toss start 0x%llx toss finish 0x%llx", - MAJOR(__entry->dev), MINOR(__entry->dev), - __entry->ino, - __print_flags(__entry->flag, "|", XFS_ITRUNC_FLAGS), - __entry->size, - __entry->new_size, - __entry->toss_start, - __entry->toss_finish) -); - DECLARE_EVENT_CLASS(xfs_itrunc_class, TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size), TP_ARGS(ip, new_size), Index: xfs/fs/xfs/xfs_inode.h =================================================================== --- xfs.orig/fs/xfs/xfs_inode.h 2011-06-21 10:58:02.082170809 +0200 +++ xfs/fs/xfs/xfs_inode.h 2011-06-21 11:13:21.502124257 +0200 @@ -448,16 +448,6 @@ static inline void xfs_ifunlock(xfs_inod extern struct lock_class_key xfs_iolock_reclaimable; /* - * Flags for xfs_itruncate_start(). - */ -#define XFS_ITRUNC_DEFINITE 0x1 -#define XFS_ITRUNC_MAYBE 0x2 - -#define XFS_ITRUNC_FLAGS \ - { XFS_ITRUNC_DEFINITE, "DEFINITE" }, \ - { XFS_ITRUNC_MAYBE, "MAYBE" } - -/* * For multiple groups support: if S_ISGID bit is set in the parent * directory, group of new file is set to that of the parent, and * new subdirectory gets S_ISGID bit from parent. @@ -491,7 +481,6 @@ uint xfs_ip2xflags(struct xfs_inode *); uint xfs_dic2xflags(struct xfs_dinode *); int xfs_ifree(struct xfs_trans *, xfs_inode_t *, struct xfs_bmap_free *); -int xfs_itruncate_start(xfs_inode_t *, uint, xfs_fsize_t); int xfs_itruncate_finish(struct xfs_trans **, xfs_inode_t *, xfs_fsize_t, int, int); int xfs_iunlink(struct xfs_trans *, xfs_inode_t *); From BATV+b467f25dd58f5e55a0ba+2859+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 22 14:18:05 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_63 autolearn=no version=3.4.0-r929098 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 p5MJI5N5115551 for ; Wed, 22 Jun 2011 14:18:05 -0500 X-ASG-Debug-ID: 1308770284-0c04018a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6D1F1255B1 for ; Wed, 22 Jun 2011 12:18:04 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id XvMwBSjhYz0Qqc2W for ; Wed, 22 Jun 2011 12:18:04 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZSw7-00081Q-Qd for xfs@oss.sgi.com; Wed, 22 Jun 2011 19:18:03 +0000 Message-Id: <20110622191803.786124787@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 22 Jun 2011 15:17:51 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 6/6] xfs: remove i_transp Subject: [PATCH 6/6] xfs: remove i_transp References: <20110622191745.364749314@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-kill-i_transp X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308770284 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66819 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Remove the transaction pointer in the inode. It's only used to avoid passing down an argument in the bmap code, and for a few asserts in the transaction code right now. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/quota/xfs_trans_dquot.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_trans_dquot.c 2011-04-02 22:30:58.000000000 +0200 +++ xfs/fs/xfs/quota/xfs_trans_dquot.c 2011-06-22 08:53:30.508174678 +0200 @@ -59,7 +59,7 @@ xfs_trans_dqjoin( xfs_trans_add_item(tp, &dqp->q_logitem.qli_item); /* - * Initialize i_transp so we can later determine if this dquot is + * Initialize d_transp so we can later determine if this dquot is * associated with this transaction. */ dqp->q_transp = tp; Index: xfs/fs/xfs/xfs_bmap.c =================================================================== --- xfs.orig/fs/xfs/xfs_bmap.c 2011-06-21 16:43:03.000000000 +0200 +++ xfs/fs/xfs/xfs_bmap.c 2011-06-22 08:55:57.554833900 +0200 @@ -94,6 +94,7 @@ xfs_bmap_add_attrfork_local( */ STATIC int /* error */ xfs_bmap_add_extent_delay_real( + struct xfs_trans *tp, /* transaction pointer */ xfs_inode_t *ip, /* incore inode pointer */ xfs_extnum_t *idx, /* extent number to update/insert */ xfs_btree_cur_t **curp, /* if *curp is null, not a btree */ @@ -439,6 +440,7 @@ xfs_bmap_add_attrfork_local( */ STATIC int /* error */ xfs_bmap_add_extent( + struct xfs_trans *tp, /* transaction pointer */ xfs_inode_t *ip, /* incore inode pointer */ xfs_extnum_t *idx, /* extent number to update/insert */ xfs_btree_cur_t **curp, /* if *curp is null, not a btree */ @@ -524,7 +526,7 @@ xfs_bmap_add_extent( if (cur) ASSERT(cur->bc_private.b.flags & XFS_BTCUR_BPRV_WASDEL); - error = xfs_bmap_add_extent_delay_real(ip, + error = xfs_bmap_add_extent_delay_real(tp, ip, idx, &cur, new, &da_new, first, flist, &logflags); } else { @@ -561,7 +563,7 @@ xfs_bmap_add_extent( int tmp_logflags; /* partial log flag return val */ ASSERT(cur == NULL); - error = xfs_bmap_extents_to_btree(ip->i_transp, ip, first, + error = xfs_bmap_extents_to_btree(tp, ip, first, flist, &cur, da_old > 0, &tmp_logflags, whichfork); logflags |= tmp_logflags; if (error) @@ -604,6 +606,7 @@ done: */ STATIC int /* error */ xfs_bmap_add_extent_delay_real( + struct xfs_trans *tp, /* transaction pointer */ xfs_inode_t *ip, /* incore inode pointer */ xfs_extnum_t *idx, /* extent number to update/insert */ xfs_btree_cur_t **curp, /* if *curp is null, not a btree */ @@ -901,7 +904,7 @@ xfs_bmap_add_extent_delay_real( } if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS && ip->i_d.di_nextents > ip->i_df.if_ext_max) { - error = xfs_bmap_extents_to_btree(ip->i_transp, ip, + error = xfs_bmap_extents_to_btree(tp, ip, first, flist, &cur, 1, &tmp_rval, XFS_DATA_FORK); rval |= tmp_rval; @@ -984,7 +987,7 @@ xfs_bmap_add_extent_delay_real( } if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS && ip->i_d.di_nextents > ip->i_df.if_ext_max) { - error = xfs_bmap_extents_to_btree(ip->i_transp, ip, + error = xfs_bmap_extents_to_btree(tp, ip, first, flist, &cur, 1, &tmp_rval, XFS_DATA_FORK); rval |= tmp_rval; @@ -1052,7 +1055,7 @@ xfs_bmap_add_extent_delay_real( } if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS && ip->i_d.di_nextents > ip->i_df.if_ext_max) { - error = xfs_bmap_extents_to_btree(ip->i_transp, ip, + error = xfs_bmap_extents_to_btree(tp, ip, first, flist, &cur, 1, &tmp_rval, XFS_DATA_FORK); rval |= tmp_rval; @@ -2871,8 +2874,8 @@ xfs_bmap_del_extent( len = del->br_blockcount; do_div(bno, mp->m_sb.sb_rextsize); do_div(len, mp->m_sb.sb_rextsize); - if ((error = xfs_rtfree_extent(ip->i_transp, bno, - (xfs_extlen_t)len))) + error = xfs_rtfree_extent(tp, bno, (xfs_extlen_t)len); + if (error) goto done; do_fx = 0; nblks = len * mp->m_sb.sb_rextsize; @@ -4662,7 +4665,7 @@ xfs_bmapi( if (!wasdelay && (flags & XFS_BMAPI_PREALLOC)) got.br_state = XFS_EXT_UNWRITTEN; } - error = xfs_bmap_add_extent(ip, &lastx, &cur, &got, + error = xfs_bmap_add_extent(tp, ip, &lastx, &cur, &got, firstblock, flist, &tmp_logflags, whichfork); logflags |= tmp_logflags; @@ -4763,7 +4766,7 @@ xfs_bmapi( mval->br_state = (mval->br_state == XFS_EXT_UNWRITTEN) ? XFS_EXT_NORM : XFS_EXT_UNWRITTEN; - error = xfs_bmap_add_extent(ip, &lastx, &cur, mval, + error = xfs_bmap_add_extent(tp, ip, &lastx, &cur, mval, firstblock, flist, &tmp_logflags, whichfork); logflags |= tmp_logflags; @@ -5117,7 +5120,7 @@ xfs_bunmapi( del.br_blockcount = mod; } del.br_state = XFS_EXT_UNWRITTEN; - error = xfs_bmap_add_extent(ip, &lastx, &cur, &del, + error = xfs_bmap_add_extent(tp, ip, &lastx, &cur, &del, firstblock, flist, &logflags, XFS_DATA_FORK); if (error) @@ -5175,18 +5178,18 @@ xfs_bunmapi( } prev.br_state = XFS_EXT_UNWRITTEN; lastx--; - error = xfs_bmap_add_extent(ip, &lastx, &cur, - &prev, firstblock, flist, &logflags, - XFS_DATA_FORK); + error = xfs_bmap_add_extent(tp, ip, &lastx, + &cur, &prev, firstblock, flist, + &logflags, XFS_DATA_FORK); if (error) goto error0; goto nodelete; } else { ASSERT(del.br_state == XFS_EXT_NORM); del.br_state = XFS_EXT_UNWRITTEN; - error = xfs_bmap_add_extent(ip, &lastx, &cur, - &del, firstblock, flist, &logflags, - XFS_DATA_FORK); + error = xfs_bmap_add_extent(tp, ip, &lastx, + &cur, &del, firstblock, flist, + &logflags, XFS_DATA_FORK); if (error) goto error0; goto nodelete; Index: xfs/fs/xfs/xfs_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode.c 2011-06-21 16:43:37.000000000 +0200 +++ xfs/fs/xfs/xfs_inode.c 2011-06-22 08:53:30.521508012 +0200 @@ -1284,7 +1284,6 @@ xfs_itruncate_finish( ASSERT((new_size == 0) || (new_size <= ip->i_size)); ASSERT(*tp != NULL); ASSERT((*tp)->t_flags & XFS_TRANS_PERM_LOG_RES); - ASSERT(ip->i_transp == *tp); ASSERT(ip->i_itemp != NULL); ASSERT(ip->i_itemp->ili_lock_flags == 0); @@ -1537,7 +1536,6 @@ xfs_iunlink( ASSERT(ip->i_d.di_nlink == 0); ASSERT(ip->i_d.di_mode != 0); - ASSERT(ip->i_transp == tp); mp = tp->t_mountp; @@ -1929,7 +1927,6 @@ xfs_ifree( xfs_buf_t *ibp; ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); - ASSERT(ip->i_transp == tp); ASSERT(ip->i_d.di_nlink == 0); ASSERT(ip->i_d.di_nextents == 0); ASSERT(ip->i_d.di_anextents == 0); Index: xfs/fs/xfs/xfs_inode.h =================================================================== --- xfs.orig/fs/xfs/xfs_inode.h 2011-06-21 16:43:37.000000000 +0200 +++ xfs/fs/xfs/xfs_inode.h 2011-06-22 08:53:30.521508012 +0200 @@ -241,7 +241,6 @@ typedef struct xfs_inode { xfs_ifork_t i_df; /* data fork */ /* Transaction and locking information. */ - struct xfs_trans *i_transp; /* ptr to owning transaction*/ struct xfs_inode_log_item *i_itemp; /* logging information */ mrlock_t i_lock; /* inode lock */ mrlock_t i_iolock; /* inode IO lock */ Index: xfs/fs/xfs/xfs_inode_item.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode_item.c 2011-05-27 13:07:40.645495673 +0200 +++ xfs/fs/xfs/xfs_inode_item.c 2011-06-22 08:53:30.521508012 +0200 @@ -636,11 +636,6 @@ xfs_inode_item_unlock( ASSERT(xfs_isilocked(iip->ili_inode, XFS_ILOCK_EXCL)); /* - * Clear the transaction pointer in the inode. - */ - ip->i_transp = NULL; - - /* * If the inode needed a separate buffer with which to log * its extents, then free it now. */ Index: xfs/fs/xfs/xfs_trans_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_trans_inode.c 2011-04-22 06:21:45.623182391 +0200 +++ xfs/fs/xfs/xfs_trans_inode.c 2011-06-22 08:53:30.524841345 +0200 @@ -55,7 +55,6 @@ xfs_trans_ijoin( { xfs_inode_log_item_t *iip; - ASSERT(ip->i_transp == NULL); ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); if (ip->i_itemp == NULL) xfs_inode_item_init(ip, ip->i_mount); @@ -68,12 +67,6 @@ xfs_trans_ijoin( xfs_trans_add_item(tp, &iip->ili_item); xfs_trans_inode_broot_debug(ip); - - /* - * Initialize i_transp so we can find it with xfs_inode_incore() - * in xfs_trans_iget() above. - */ - ip->i_transp = tp; } /* @@ -111,7 +104,6 @@ xfs_trans_ichgtime( ASSERT(tp); ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); - ASSERT(ip->i_transp == tp); tv = current_fs_time(inode->i_sb); @@ -140,7 +132,6 @@ xfs_trans_log_inode( xfs_inode_t *ip, uint flags) { - ASSERT(ip->i_transp == tp); ASSERT(ip->i_itemp != NULL); ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); From BATV+b467f25dd58f5e55a0ba+2859+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 22 14:18:06 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5MJI4Np115532 for ; Wed, 22 Jun 2011 14:18:06 -0500 X-ASG-Debug-ID: 1308770283-137803ae0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 79C75174A1F1 for ; Wed, 22 Jun 2011 12:18:03 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 2e00F4frCPBaQIHM for ; Wed, 22 Jun 2011 12:18:03 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZSw6-0007yG-Kt for xfs@oss.sgi.com; Wed, 22 Jun 2011 19:18:02 +0000 Message-Id: <20110622191745.364749314@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 22 Jun 2011 15:17:45 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/6] misc updates for Linux 3.1 Subject: [PATCH 0/6] misc updates for Linux 3.1 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308770283 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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66819 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 From BATV+b467f25dd58f5e55a0ba+2859+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 22 14:18:06 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5MJI5qR115553 for ; Wed, 22 Jun 2011 14:18:05 -0500 X-ASG-Debug-ID: 1308770283-7f8e022b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D3337255B5 for ; Wed, 22 Jun 2011 12:18:03 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id RGz98gu3JCz0K4uc for ; Wed, 22 Jun 2011 12:18:03 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZSw6-0007yp-Rg for xfs@oss.sgi.com; Wed, 22 Jun 2011 19:18:02 +0000 Message-Id: <20110622191802.811069808@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 22 Jun 2011 15:17:46 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/6] xfs: work around bogus gcc warning in xfs_allocbt_init_cursor Subject: [PATCH 1/6] xfs: work around bogus gcc warning in xfs_allocbt_init_cursor References: <20110622191745.364749314@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-fix-xfs_allocbt_init_cursor-warning X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308770284 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66819 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 GCC 4.6 complains about an array subscript is above array bounds when using the btree index to index into the agf_levels array. The only two indices passed in are 0 and 1, and we have an assert insuring that. Replace the trick of using the array index directly with using constants in the already existing branch for assigning the XFS_BTREE_LASTREC_UPDATE flag. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Index: xfs/fs/xfs/xfs_alloc_btree.c =================================================================== --- xfs.orig/fs/xfs/xfs_alloc_btree.c 2011-06-17 14:16:27.929065669 +0200 +++ xfs/fs/xfs/xfs_alloc_btree.c 2011-06-17 14:17:22.145729599 +0200 @@ -427,13 +427,16 @@ xfs_allocbt_init_cursor( cur->bc_tp = tp; cur->bc_mp = mp; - cur->bc_nlevels = be32_to_cpu(agf->agf_levels[btnum]); cur->bc_btnum = btnum; cur->bc_blocklog = mp->m_sb.sb_blocklog; - cur->bc_ops = &xfs_allocbt_ops; - if (btnum == XFS_BTNUM_CNT) + + if (btnum == XFS_BTNUM_CNT) { + cur->bc_nlevels = be32_to_cpu(agf->agf_levels[XFS_BTNUM_CNT]); cur->bc_flags = XFS_BTREE_LASTREC_UPDATE; + } else { + cur->bc_nlevels = be32_to_cpu(agf->agf_levels[XFS_BTNUM_BNO]); + } cur->bc_private.a.agbp = agbp; cur->bc_private.a.agno = agno; From BATV+b467f25dd58f5e55a0ba+2859+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 22 14:18:05 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5MJI5Cc115541 for ; Wed, 22 Jun 2011 14:18:05 -0500 X-ASG-Debug-ID: 1308770283-199d03020000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B8F17DFE9B9 for ; Wed, 22 Jun 2011 12:18:03 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id zYNmfCgZMupDbeP7 for ; Wed, 22 Jun 2011 12:18:03 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZSw7-0007zs-8X for xfs@oss.sgi.com; Wed, 22 Jun 2011 19:18:03 +0000 Message-Id: <20110622191803.226627698@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 22 Jun 2011 15:17:48 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/6] xfs: always log timestamp updates in xfs_setattr_size Subject: [PATCH 3/6] xfs: always log timestamp updates in xfs_setattr_size References: <20110622191745.364749314@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-simplify-setattr X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308770284 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66820 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Get rid of the special case where we use unlogged timestamp updates for a truncate to the current inode size, and just call xfs_setattr_nonsize for it to treat it like a utimes calls. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Index: xfs/fs/xfs/linux-2.6/xfs_iops.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_iops.c 2011-06-21 11:12:11.008794493 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_iops.c 2011-06-21 11:12:22.398793917 +0200 @@ -773,14 +773,16 @@ xfs_setattr_size( */ if (iattr->ia_size == 0 && ip->i_size == 0 && ip->i_d.di_nextents == 0) { - xfs_iunlock(ip, XFS_ILOCK_EXCL); - lock_flags &= ~XFS_ILOCK_EXCL; - if (mask & ATTR_CTIME) { - inode->i_mtime = inode->i_ctime = - current_fs_time(inode->i_sb); - xfs_mark_inode_dirty_sync(ip); - } - goto out_unlock; + if (!(mask & ATTR_CTIME)) + goto out_unlock; + + /* + * Use the regular setattr path to update the timestamps. + */ + xfs_iunlock(ip, lock_flags); + iattr->ia_valid &= ~ATTR_SIZE; + iattr->ia_valid |= ATTR_MTIME; + return xfs_setattr_nonsize(ip, iattr, 0); } /* From BATV+b467f25dd58f5e55a0ba+2859+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 22 14:18:05 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64, LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 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 p5MJI5Ya115549 for ; Wed, 22 Jun 2011 14:18:05 -0500 X-ASG-Debug-ID: 1308770283-40b301750000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B00D3174A1F3 for ; Wed, 22 Jun 2011 12:18:03 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id lPzuk2o0KQrUbfw4 for ; Wed, 22 Jun 2011 12:18:03 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZSw7-0007zM-2P for xfs@oss.sgi.com; Wed, 22 Jun 2011 19:18:03 +0000 Message-Id: <20110622191803.037096762@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 22 Jun 2011 15:17:47 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/6] xfs: split xfs_setattr Subject: [PATCH 2/6] xfs: split xfs_setattr References: <20110622191745.364749314@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-split-setattr X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308770283 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66819 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Split up xfs_setattr into two functions, one for the complex truncate handling, and one for the trivial attribute updates. Also move both new routines to xfs_iops.c as they are fairly Linux-specific. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_iops.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_iops.c 2011-06-21 10:58:19.145503278 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_iops.c 2011-06-21 11:18:50.322107610 +0200 @@ -39,6 +39,7 @@ #include "xfs_buf_item.h" #include "xfs_utils.h" #include "xfs_vnodeops.h" +#include "xfs_inode_item.h" #include "xfs_trace.h" #include @@ -497,12 +498,449 @@ xfs_vn_getattr( return 0; } +int +xfs_setattr_nonsize( + struct xfs_inode *ip, + struct iattr *iattr, + int flags) +{ + xfs_mount_t *mp = ip->i_mount; + struct inode *inode = VFS_I(ip); + int mask = iattr->ia_valid; + xfs_trans_t *tp; + int error; + uid_t uid = 0, iuid = 0; + gid_t gid = 0, igid = 0; + struct xfs_dquot *udqp = NULL, *gdqp = NULL; + struct xfs_dquot *olddquot1 = NULL, *olddquot2 = NULL; + + trace_xfs_setattr(ip); + + if (mp->m_flags & XFS_MOUNT_RDONLY) + return XFS_ERROR(EROFS); + + if (XFS_FORCED_SHUTDOWN(mp)) + return XFS_ERROR(EIO); + + error = -inode_change_ok(inode, iattr); + if (error) + return XFS_ERROR(error); + + ASSERT((mask & ATTR_SIZE) == 0); + + /* + * If disk quotas is on, we make sure that the dquots do exist on disk, + * before we start any other transactions. Trying to do this later + * is messy. We don't care to take a readlock to look at the ids + * in inode here, because we can't hold it across the trans_reserve. + * If the IDs do change before we take the ilock, we're covered + * because the i_*dquot fields will get updated anyway. + */ + if (XFS_IS_QUOTA_ON(mp) && (mask & (ATTR_UID|ATTR_GID))) { + uint qflags = 0; + + if ((mask & ATTR_UID) && XFS_IS_UQUOTA_ON(mp)) { + uid = iattr->ia_uid; + qflags |= XFS_QMOPT_UQUOTA; + } else { + uid = ip->i_d.di_uid; + } + if ((mask & ATTR_GID) && XFS_IS_GQUOTA_ON(mp)) { + gid = iattr->ia_gid; + qflags |= XFS_QMOPT_GQUOTA; + } else { + gid = ip->i_d.di_gid; + } + + /* + * We take a reference when we initialize udqp and gdqp, + * so it is important that we never blindly double trip on + * the same variable. See xfs_create() for an example. + */ + ASSERT(udqp == NULL); + ASSERT(gdqp == NULL); + error = xfs_qm_vop_dqalloc(ip, uid, gid, xfs_get_projid(ip), + qflags, &udqp, &gdqp); + if (error) + return error; + } + + tp = xfs_trans_alloc(mp, XFS_TRANS_SETATTR_NOT_SIZE); + error = xfs_trans_reserve(tp, 0, XFS_ICHANGE_LOG_RES(mp), 0, 0, 0); + if (error) + goto out_dqrele; + + xfs_ilock(ip, XFS_ILOCK_EXCL); + + /* + * Change file ownership. Must be the owner or privileged. + */ + if (mask & (ATTR_UID|ATTR_GID)) { + /* + * These IDs could have changed since we last looked at them. + * But, we're assured that if the ownership did change + * while we didn't have the inode locked, inode's dquot(s) + * would have changed also. + */ + iuid = ip->i_d.di_uid; + igid = ip->i_d.di_gid; + gid = (mask & ATTR_GID) ? iattr->ia_gid : igid; + uid = (mask & ATTR_UID) ? iattr->ia_uid : iuid; + + /* + * Do a quota reservation only if uid/gid is actually + * going to change. + */ + if (XFS_IS_QUOTA_RUNNING(mp) && + ((XFS_IS_UQUOTA_ON(mp) && iuid != uid) || + (XFS_IS_GQUOTA_ON(mp) && igid != gid))) { + ASSERT(tp); + error = xfs_qm_vop_chown_reserve(tp, ip, udqp, gdqp, + capable(CAP_FOWNER) ? + XFS_QMOPT_FORCE_RES : 0); + if (error) /* out of quota */ + goto out_trans_cancel; + } + } + + xfs_trans_ijoin(tp, ip); + + /* + * Change file ownership. Must be the owner or privileged. + */ + if (mask & (ATTR_UID|ATTR_GID)) { + /* + * CAP_FSETID overrides the following restrictions: + * + * The set-user-ID and set-group-ID bits of a file will be + * cleared upon successful return from chown() + */ + if ((ip->i_d.di_mode & (S_ISUID|S_ISGID)) && + !capable(CAP_FSETID)) + ip->i_d.di_mode &= ~(S_ISUID|S_ISGID); + + /* + * Change the ownerships and register quota modifications + * in the transaction. + */ + if (iuid != uid) { + if (XFS_IS_QUOTA_RUNNING(mp) && XFS_IS_UQUOTA_ON(mp)) { + ASSERT(mask & ATTR_UID); + ASSERT(udqp); + 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_QUOTA_RUNNING(mp) && XFS_IS_GQUOTA_ON(mp)) { + ASSERT(!XFS_IS_PQUOTA_ON(mp)); + ASSERT(mask & ATTR_GID); + ASSERT(gdqp); + olddquot2 = xfs_qm_vop_chown(tp, ip, + &ip->i_gdquot, gdqp); + } + ip->i_d.di_gid = gid; + inode->i_gid = gid; + } + } + + /* + * Change file access modes. + */ + if (mask & ATTR_MODE) { + umode_t mode = iattr->ia_mode; + + if (!in_group_p(inode->i_gid) && !capable(CAP_FSETID)) + mode &= ~S_ISGID; + + ip->i_d.di_mode &= S_IFMT; + ip->i_d.di_mode |= mode & ~S_IFMT; + + inode->i_mode &= S_IFMT; + inode->i_mode |= mode & ~S_IFMT; + } + + /* + * Change file access or modified times. + */ + if (mask & ATTR_ATIME) { + inode->i_atime = iattr->ia_atime; + ip->i_d.di_atime.t_sec = iattr->ia_atime.tv_sec; + ip->i_d.di_atime.t_nsec = iattr->ia_atime.tv_nsec; + ip->i_update_core = 1; + } + if (mask & ATTR_CTIME) { + inode->i_ctime = iattr->ia_ctime; + ip->i_d.di_ctime.t_sec = iattr->ia_ctime.tv_sec; + ip->i_d.di_ctime.t_nsec = iattr->ia_ctime.tv_nsec; + ip->i_update_core = 1; + } + if (mask & ATTR_MTIME) { + inode->i_mtime = iattr->ia_mtime; + ip->i_d.di_mtime.t_sec = iattr->ia_mtime.tv_sec; + ip->i_d.di_mtime.t_nsec = iattr->ia_mtime.tv_nsec; + ip->i_update_core = 1; + } + + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); + + XFS_STATS_INC(xs_ig_attrchg); + + if (mp->m_flags & XFS_MOUNT_WSYNC) + xfs_trans_set_sync(tp); + error = xfs_trans_commit(tp, 0); + + xfs_iunlock(ip, XFS_ILOCK_EXCL); + + /* + * Release any dquot(s) the inode had kept before chown. + */ + xfs_qm_dqrele(olddquot1); + xfs_qm_dqrele(olddquot2); + xfs_qm_dqrele(udqp); + xfs_qm_dqrele(gdqp); + + if (error) + return XFS_ERROR(error); + + /* + * XXX(hch): Updating the ACL entries is not atomic vs the i_mode + * update. We could avoid this with linked transactions + * and passing down the transaction pointer all the way + * to attr_set. No previous user of the generic + * Posix ACL code seems to care about this issue either. + */ + if ((mask & ATTR_MODE) && !(flags & XFS_ATTR_NOACL)) { + error = -xfs_acl_chmod(inode); + if (error) + return XFS_ERROR(error); + } + + return 0; + +out_trans_cancel: + xfs_trans_cancel(tp, 0); + xfs_iunlock(ip, XFS_ILOCK_EXCL); +out_dqrele: + xfs_qm_dqrele(udqp); + xfs_qm_dqrele(gdqp); + return error; +} + +/* + * Truncate file. Must have write permission and not be a directory. + */ +int +xfs_setattr_size( + struct xfs_inode *ip, + struct iattr *iattr, + int flags) +{ + struct xfs_mount *mp = ip->i_mount; + struct inode *inode = VFS_I(ip); + int mask = iattr->ia_valid; + struct xfs_trans *tp; + int error; + uint lock_flags; + uint commit_flags = 0; + + trace_xfs_setattr(ip); + + if (mp->m_flags & XFS_MOUNT_RDONLY) + return XFS_ERROR(EROFS); + + if (XFS_FORCED_SHUTDOWN(mp)) + return XFS_ERROR(EIO); + + error = -inode_change_ok(inode, iattr); + if (error) + return XFS_ERROR(error); + + ASSERT(S_ISREG(ip->i_d.di_mode)); + ASSERT((mask & (ATTR_MODE|ATTR_UID|ATTR_GID|ATTR_ATIME|ATTR_ATIME_SET| + ATTR_MTIME_SET|ATTR_KILL_SUID|ATTR_KILL_SGID| + ATTR_KILL_PRIV|ATTR_TIMES_SET)) == 0); + + lock_flags = XFS_ILOCK_EXCL; + if (!(flags & XFS_ATTR_NOLOCK)) + lock_flags |= XFS_IOLOCK_EXCL; + xfs_ilock(ip, lock_flags); + + /* + * Short circuit the truncate case for zero length files. + */ + if (iattr->ia_size == 0 && + ip->i_size == 0 && ip->i_d.di_nextents == 0) { + xfs_iunlock(ip, XFS_ILOCK_EXCL); + lock_flags &= ~XFS_ILOCK_EXCL; + if (mask & ATTR_CTIME) { + inode->i_mtime = inode->i_ctime = + current_fs_time(inode->i_sb); + xfs_mark_inode_dirty_sync(ip); + } + goto out_unlock; + } + + /* + * Make sure that the dquots are attached to the inode. + */ + error = xfs_qm_dqattach_locked(ip, 0); + if (error) + goto out_unlock; + + /* + * Now we can make the changes. Before we join the inode to the + * transaction, take care of the part of the truncation that must be + * done without the inode lock. This needs to be done before joining + * the inode to the transaction, because the inode cannot be unlocked + * once it is a part of the transaction. + */ + if (iattr->ia_size > ip->i_size) { + /* + * Do the first part of growing a file: zero any data in the + * last block that is beyond the old EOF. We need to do this + * before the inode is joined to the transaction to modify + * i_size. + */ + error = xfs_zero_eof(ip, iattr->ia_size, ip->i_size); + if (error) + goto out_unlock; + } + xfs_iunlock(ip, XFS_ILOCK_EXCL); + lock_flags &= ~XFS_ILOCK_EXCL; + + /* + * We are going to log the inode size change in this transaction so + * any previous writes that are beyond the on disk EOF and the new + * EOF that have not been written out need to be written here. If we + * do not write the data out, we expose ourselves to the null files + * problem. + * + * Only flush from the on disk size to the smaller of the in memory + * file size or the new size as that's the range we really care about + * here and prevents waiting for other data not within the range we + * care about here. + */ + if (ip->i_size != ip->i_d.di_size && iattr->ia_size > ip->i_d.di_size) { + error = xfs_flush_pages(ip, ip->i_d.di_size, iattr->ia_size, + XBF_ASYNC, FI_NONE); + if (error) + goto out_unlock; + } + + /* + * Wait for all I/O to complete. + */ + xfs_ioend_wait(ip); + + error = -block_truncate_page(inode->i_mapping, iattr->ia_size, + xfs_get_blocks); + if (error) + goto out_unlock; + + tp = xfs_trans_alloc(mp, XFS_TRANS_SETATTR_SIZE); + error = xfs_trans_reserve(tp, 0, XFS_ITRUNCATE_LOG_RES(mp), 0, + XFS_TRANS_PERM_LOG_RES, + XFS_ITRUNCATE_LOG_COUNT); + if (error) + goto out_trans_cancel; + + truncate_setsize(inode, iattr->ia_size); + + commit_flags = XFS_TRANS_RELEASE_LOG_RES; + lock_flags |= XFS_ILOCK_EXCL; + + xfs_ilock(ip, XFS_ILOCK_EXCL); + + xfs_trans_ijoin(tp, ip); + + /* + * Only change the c/mtime if we are changing the size or we are + * explicitly asked to change it. This handles the semantic difference + * between truncate() and ftruncate() as implemented in the VFS. + * + * The regular truncate() case without ATTR_CTIME and ATTR_MTIME is a + * special case where we need to update the times despite not having + * these flags set. For all other operations the VFS set these flags + * explicitly if it wants a timestamp update. + */ + if (iattr->ia_size != ip->i_size && + (!(mask & (ATTR_CTIME | ATTR_MTIME)))) { + iattr->ia_ctime = iattr->ia_mtime = + current_fs_time(inode->i_sb); + mask |= ATTR_CTIME | ATTR_MTIME; + } + + if (iattr->ia_size > ip->i_size) { + ip->i_d.di_size = iattr->ia_size; + ip->i_size = iattr->ia_size; + } else if (iattr->ia_size <= ip->i_size || + (iattr->ia_size == 0 && ip->i_d.di_nextents)) { + /* + * Signal a sync transaction unless we are truncating an + * already unlinked file on a wsync filesystem. + */ + error = xfs_itruncate_finish(&tp, ip, iattr->ia_size, + XFS_DATA_FORK, + ((ip->i_d.di_nlink != 0 || + !(mp->m_flags & XFS_MOUNT_WSYNC)) + ? 1 : 0)); + if (error) + goto out_trans_abort; + + /* + * Truncated "down", so we're removing references to old data + * here - if we delay flushing for a long time, we expose + * ourselves unduly to the notorious NULL files problem. So, + * we mark this inode and flush it when the file is closed, + * and do not wait the usual (long) time for writeout. + */ + xfs_iflags_set(ip, XFS_ITRUNCATED); + } + + if (mask & ATTR_CTIME) { + inode->i_ctime = iattr->ia_ctime; + ip->i_d.di_ctime.t_sec = iattr->ia_ctime.tv_sec; + ip->i_d.di_ctime.t_nsec = iattr->ia_ctime.tv_nsec; + ip->i_update_core = 1; + } + if (mask & ATTR_MTIME) { + inode->i_mtime = iattr->ia_mtime; + ip->i_d.di_mtime.t_sec = iattr->ia_mtime.tv_sec; + ip->i_d.di_mtime.t_nsec = iattr->ia_mtime.tv_nsec; + ip->i_update_core = 1; + } + + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); + + XFS_STATS_INC(xs_ig_attrchg); + + if (mp->m_flags & XFS_MOUNT_WSYNC) + xfs_trans_set_sync(tp); + + error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); +out_unlock: + if (lock_flags) + xfs_iunlock(ip, lock_flags); + return error; + +out_trans_abort: + commit_flags |= XFS_TRANS_ABORT; +out_trans_cancel: + xfs_trans_cancel(tp, commit_flags); + goto out_unlock; +} + STATIC int xfs_vn_setattr( struct dentry *dentry, struct iattr *iattr) { - return -xfs_setattr(XFS_I(dentry->d_inode), iattr, 0); + if (iattr->ia_valid & ATTR_SIZE) + return -xfs_setattr_size(XFS_I(dentry->d_inode), iattr, 0); + return -xfs_setattr_nonsize(XFS_I(dentry->d_inode), iattr, 0); } #define XFS_FIEMAP_FLAGS (FIEMAP_FLAG_SYNC|FIEMAP_FLAG_XATTR) Index: xfs/fs/xfs/linux-2.6/xfs_acl.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_acl.c 2011-06-21 10:58:19.155503277 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_acl.c 2011-06-21 10:58:38.458835638 +0200 @@ -264,7 +264,7 @@ xfs_set_mode(struct inode *inode, mode_t iattr.ia_mode = mode; iattr.ia_ctime = current_fs_time(inode->i_sb); - error = -xfs_setattr(XFS_I(inode), &iattr, XFS_ATTR_NOACL); + error = -xfs_setattr_nonsize(XFS_I(inode), &iattr, XFS_ATTR_NOACL); } return error; Index: xfs/fs/xfs/linux-2.6/xfs_file.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_file.c 2011-06-21 10:58:19.168836609 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_file.c 2011-06-21 10:58:38.458835638 +0200 @@ -944,7 +944,7 @@ xfs_file_fallocate( iattr.ia_valid = ATTR_SIZE; iattr.ia_size = new_size; - error = -xfs_setattr(ip, &iattr, XFS_ATTR_NOLOCK); + error = -xfs_setattr_size(ip, &iattr, XFS_ATTR_NOLOCK); } out_unlock: Index: xfs/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.c 2011-06-21 10:58:19.178836608 +0200 +++ xfs/fs/xfs/xfs_vnodeops.c 2011-06-21 11:16:43.665447355 +0200 @@ -50,430 +50,6 @@ #include "xfs_vnodeops.h" #include "xfs_trace.h" -int -xfs_setattr( - struct xfs_inode *ip, - struct iattr *iattr, - int flags) -{ - xfs_mount_t *mp = ip->i_mount; - struct inode *inode = VFS_I(ip); - int mask = iattr->ia_valid; - xfs_trans_t *tp; - int code; - uint lock_flags; - uint commit_flags=0; - uid_t uid=0, iuid=0; - gid_t gid=0, igid=0; - struct xfs_dquot *udqp, *gdqp, *olddquot1, *olddquot2; - int need_iolock = 1; - - trace_xfs_setattr(ip); - - if (mp->m_flags & XFS_MOUNT_RDONLY) - return XFS_ERROR(EROFS); - - if (XFS_FORCED_SHUTDOWN(mp)) - return XFS_ERROR(EIO); - - code = -inode_change_ok(inode, iattr); - if (code) - return code; - - olddquot1 = olddquot2 = NULL; - udqp = gdqp = NULL; - - /* - * If disk quotas is on, we make sure that the dquots do exist on disk, - * before we start any other transactions. Trying to do this later - * is messy. We don't care to take a readlock to look at the ids - * in inode here, because we can't hold it across the trans_reserve. - * If the IDs do change before we take the ilock, we're covered - * because the i_*dquot fields will get updated anyway. - */ - if (XFS_IS_QUOTA_ON(mp) && (mask & (ATTR_UID|ATTR_GID))) { - uint qflags = 0; - - if ((mask & ATTR_UID) && XFS_IS_UQUOTA_ON(mp)) { - uid = iattr->ia_uid; - qflags |= XFS_QMOPT_UQUOTA; - } else { - uid = ip->i_d.di_uid; - } - if ((mask & ATTR_GID) && XFS_IS_GQUOTA_ON(mp)) { - gid = iattr->ia_gid; - qflags |= XFS_QMOPT_GQUOTA; - } else { - gid = ip->i_d.di_gid; - } - - /* - * We take a reference when we initialize udqp and gdqp, - * so it is important that we never blindly double trip on - * the same variable. See xfs_create() for an example. - */ - ASSERT(udqp == NULL); - ASSERT(gdqp == NULL); - code = xfs_qm_vop_dqalloc(ip, uid, gid, xfs_get_projid(ip), - qflags, &udqp, &gdqp); - if (code) - return code; - } - - /* - * For the other attributes, we acquire the inode lock and - * first do an error checking pass. - */ - tp = NULL; - lock_flags = XFS_ILOCK_EXCL; - if (flags & XFS_ATTR_NOLOCK) - need_iolock = 0; - if (!(mask & ATTR_SIZE)) { - tp = xfs_trans_alloc(mp, XFS_TRANS_SETATTR_NOT_SIZE); - commit_flags = 0; - code = xfs_trans_reserve(tp, 0, XFS_ICHANGE_LOG_RES(mp), - 0, 0, 0); - if (code) { - lock_flags = 0; - goto error_return; - } - } else { - if (need_iolock) - lock_flags |= XFS_IOLOCK_EXCL; - } - - xfs_ilock(ip, lock_flags); - - /* - * Change file ownership. Must be the owner or privileged. - */ - if (mask & (ATTR_UID|ATTR_GID)) { - /* - * These IDs could have changed since we last looked at them. - * But, we're assured that if the ownership did change - * while we didn't have the inode locked, inode's dquot(s) - * would have changed also. - */ - iuid = ip->i_d.di_uid; - igid = ip->i_d.di_gid; - gid = (mask & ATTR_GID) ? iattr->ia_gid : igid; - uid = (mask & ATTR_UID) ? iattr->ia_uid : iuid; - - /* - * Do a quota reservation only if uid/gid is actually - * going to change. - */ - 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_vop_chown_reserve(tp, ip, udqp, gdqp, - capable(CAP_FOWNER) ? - XFS_QMOPT_FORCE_RES : 0); - if (code) /* out of quota */ - goto error_return; - } - } - - /* - * Truncate file. Must have write permission and not be a directory. - */ - if (mask & ATTR_SIZE) { - /* Short circuit the truncate case for zero length files */ - if (iattr->ia_size == 0 && - ip->i_size == 0 && ip->i_d.di_nextents == 0) { - xfs_iunlock(ip, XFS_ILOCK_EXCL); - lock_flags &= ~XFS_ILOCK_EXCL; - if (mask & ATTR_CTIME) { - inode->i_mtime = inode->i_ctime = - current_fs_time(inode->i_sb); - xfs_mark_inode_dirty_sync(ip); - } - code = 0; - goto error_return; - } - - if (S_ISDIR(ip->i_d.di_mode)) { - code = XFS_ERROR(EISDIR); - goto error_return; - } else if (!S_ISREG(ip->i_d.di_mode)) { - code = XFS_ERROR(EINVAL); - goto error_return; - } - - /* - * Make sure that the dquots are attached to the inode. - */ - code = xfs_qm_dqattach_locked(ip, 0); - if (code) - goto error_return; - - /* - * Now we can make the changes. Before we join the inode - * to the transaction, if ATTR_SIZE is set then take care of - * the part of the truncation that must be done without the - * inode lock. This needs to be done before joining the inode - * to the transaction, because the inode cannot be unlocked - * once it is a part of the transaction. - */ - if (iattr->ia_size > ip->i_size) { - /* - * Do the first part of growing a file: zero any data - * in the last block that is beyond the old EOF. We - * need to do this before the inode is joined to the - * transaction to modify the i_size. - */ - code = xfs_zero_eof(ip, iattr->ia_size, ip->i_size); - if (code) - goto error_return; - } - xfs_iunlock(ip, XFS_ILOCK_EXCL); - lock_flags &= ~XFS_ILOCK_EXCL; - - /* - * We are going to log the inode size change in this - * transaction so any previous writes that are beyond the on - * disk EOF and the new EOF that have not been written out need - * to be written here. If we do not write the data out, we - * expose ourselves to the null files problem. - * - * Only flush from the on disk size to the smaller of the in - * memory file size or the new size as that's the range we - * really care about here and prevents waiting for other data - * not within the range we care about here. - */ - if (ip->i_size != ip->i_d.di_size && - iattr->ia_size > ip->i_d.di_size) { - code = xfs_flush_pages(ip, - ip->i_d.di_size, iattr->ia_size, - XBF_ASYNC, FI_NONE); - if (code) - goto error_return; - } - - /* wait for all I/O to complete */ - xfs_ioend_wait(ip); - - code = -block_truncate_page(inode->i_mapping, iattr->ia_size, - xfs_get_blocks); - if (code) - goto error_return; - - tp = xfs_trans_alloc(mp, XFS_TRANS_SETATTR_SIZE); - code = xfs_trans_reserve(tp, 0, XFS_ITRUNCATE_LOG_RES(mp), 0, - XFS_TRANS_PERM_LOG_RES, - XFS_ITRUNCATE_LOG_COUNT); - if (code) - goto error_return; - - truncate_setsize(inode, iattr->ia_size); - - commit_flags = XFS_TRANS_RELEASE_LOG_RES; - lock_flags |= XFS_ILOCK_EXCL; - - xfs_ilock(ip, XFS_ILOCK_EXCL); - - xfs_trans_ijoin(tp, ip); - - /* - * Only change the c/mtime if we are changing the size - * or we are explicitly asked to change it. This handles - * the semantic difference between truncate() and ftruncate() - * as implemented in the VFS. - * - * The regular truncate() case without ATTR_CTIME and ATTR_MTIME - * is a special case where we need to update the times despite - * not having these flags set. For all other operations the - * VFS set these flags explicitly if it wants a timestamp - * update. - */ - if (iattr->ia_size != ip->i_size && - (!(mask & (ATTR_CTIME | ATTR_MTIME)))) { - iattr->ia_ctime = iattr->ia_mtime = - current_fs_time(inode->i_sb); - mask |= ATTR_CTIME | ATTR_MTIME; - } - - if (iattr->ia_size > ip->i_size) { - ip->i_d.di_size = iattr->ia_size; - ip->i_size = iattr->ia_size; - xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); - } else if (iattr->ia_size <= ip->i_size || - (iattr->ia_size == 0 && ip->i_d.di_nextents)) { - /* - * signal a sync transaction unless - * we're truncating an already unlinked - * file on a wsync filesystem - */ - code = xfs_itruncate_finish(&tp, ip, iattr->ia_size, - XFS_DATA_FORK, - ((ip->i_d.di_nlink != 0 || - !(mp->m_flags & XFS_MOUNT_WSYNC)) - ? 1 : 0)); - if (code) - goto abort_return; - /* - * Truncated "down", so we're removing references - * to old data here - if we now delay flushing for - * a long time, we expose ourselves unduly to the - * notorious NULL files problem. So, we mark this - * vnode and flush it when the file is closed, and - * do not wait the usual (long) time for writeout. - */ - xfs_iflags_set(ip, XFS_ITRUNCATED); - } - } else if (tp) { - xfs_trans_ijoin(tp, ip); - } - - /* - * Change file ownership. Must be the owner or privileged. - */ - if (mask & (ATTR_UID|ATTR_GID)) { - /* - * CAP_FSETID overrides the following restrictions: - * - * The set-user-ID and set-group-ID bits of a file will be - * cleared upon successful return from chown() - */ - if ((ip->i_d.di_mode & (S_ISUID|S_ISGID)) && - !capable(CAP_FSETID)) { - ip->i_d.di_mode &= ~(S_ISUID|S_ISGID); - } - - /* - * Change the ownerships and register quota modifications - * in the transaction. - */ - if (iuid != uid) { - if (XFS_IS_QUOTA_RUNNING(mp) && XFS_IS_UQUOTA_ON(mp)) { - ASSERT(mask & ATTR_UID); - ASSERT(udqp); - 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_QUOTA_RUNNING(mp) && XFS_IS_GQUOTA_ON(mp)) { - ASSERT(!XFS_IS_PQUOTA_ON(mp)); - ASSERT(mask & ATTR_GID); - ASSERT(gdqp); - olddquot2 = xfs_qm_vop_chown(tp, ip, - &ip->i_gdquot, gdqp); - } - ip->i_d.di_gid = gid; - inode->i_gid = gid; - } - } - - /* - * Change file access modes. - */ - if (mask & ATTR_MODE) { - umode_t mode = iattr->ia_mode; - - if (!in_group_p(inode->i_gid) && !capable(CAP_FSETID)) - mode &= ~S_ISGID; - - ip->i_d.di_mode &= S_IFMT; - ip->i_d.di_mode |= mode & ~S_IFMT; - - inode->i_mode &= S_IFMT; - inode->i_mode |= mode & ~S_IFMT; - } - - /* - * Change file access or modified times. - */ - if (mask & ATTR_ATIME) { - inode->i_atime = iattr->ia_atime; - ip->i_d.di_atime.t_sec = iattr->ia_atime.tv_sec; - ip->i_d.di_atime.t_nsec = iattr->ia_atime.tv_nsec; - ip->i_update_core = 1; - } - if (mask & ATTR_CTIME) { - inode->i_ctime = iattr->ia_ctime; - ip->i_d.di_ctime.t_sec = iattr->ia_ctime.tv_sec; - ip->i_d.di_ctime.t_nsec = iattr->ia_ctime.tv_nsec; - ip->i_update_core = 1; - } - if (mask & ATTR_MTIME) { - inode->i_mtime = iattr->ia_mtime; - ip->i_d.di_mtime.t_sec = iattr->ia_mtime.tv_sec; - ip->i_d.di_mtime.t_nsec = iattr->ia_mtime.tv_nsec; - ip->i_update_core = 1; - } - - /* - * And finally, log the inode core if any attribute in it - * has been changed. - */ - if (mask & (ATTR_UID|ATTR_GID|ATTR_MODE| - ATTR_ATIME|ATTR_CTIME|ATTR_MTIME)) - xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); - - XFS_STATS_INC(xs_ig_attrchg); - - /* - * If this is a synchronous mount, make sure that the - * transaction goes to disk before returning to the user. - * This is slightly sub-optimal in that truncates require - * two sync transactions instead of one for wsync filesystems. - * One for the truncate and one for the timestamps since we - * don't want to change the timestamps unless we're sure the - * truncate worked. Truncates are less than 1% of the laddis - * mix so this probably isn't worth the trouble to optimize. - */ - code = 0; - if (mp->m_flags & XFS_MOUNT_WSYNC) - xfs_trans_set_sync(tp); - - code = xfs_trans_commit(tp, commit_flags); - - xfs_iunlock(ip, lock_flags); - - /* - * Release any dquot(s) the inode had kept before chown. - */ - xfs_qm_dqrele(olddquot1); - xfs_qm_dqrele(olddquot2); - xfs_qm_dqrele(udqp); - xfs_qm_dqrele(gdqp); - - if (code) - return code; - - /* - * XXX(hch): Updating the ACL entries is not atomic vs the i_mode - * update. We could avoid this with linked transactions - * and passing down the transaction pointer all the way - * to attr_set. No previous user of the generic - * Posix ACL code seems to care about this issue either. - */ - if ((mask & ATTR_MODE) && !(flags & XFS_ATTR_NOACL)) { - code = -xfs_acl_chmod(inode); - if (code) - return XFS_ERROR(code); - } - - return 0; - - abort_return: - commit_flags |= XFS_TRANS_ABORT; - error_return: - xfs_qm_dqrele(udqp); - xfs_qm_dqrele(gdqp); - if (tp) { - xfs_trans_cancel(tp, commit_flags); - } - if (lock_flags != 0) { - xfs_iunlock(ip, lock_flags); - } - return code; -} - /* * The maximum pathlen is 1024 bytes. Since the minimum file system * blocksize is 512 bytes, we can get a max of 2 extents back from @@ -2781,7 +2357,7 @@ xfs_change_file_space( iattr.ia_valid = ATTR_SIZE; iattr.ia_size = startoffset; - error = xfs_setattr(ip, &iattr, attr_flags); + error = xfs_setattr_size(ip, &iattr, attr_flags); if (error) return error; Index: xfs/fs/xfs/xfs_vnodeops.h =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.h 2011-06-21 10:58:19.195503276 +0200 +++ xfs/fs/xfs/xfs_vnodeops.h 2011-06-21 10:58:38.462168972 +0200 @@ -13,7 +13,8 @@ struct xfs_inode; struct xfs_iomap; -int xfs_setattr(struct xfs_inode *ip, struct iattr *vap, int flags); +int xfs_setattr_nonsize(struct xfs_inode *ip, struct iattr *vap, int flags); +int xfs_setattr_size(struct xfs_inode *ip, struct iattr *vap, int flags); #define XFS_ATTR_DMI 0x01 /* invocation from a DMI function */ #define XFS_ATTR_NONBLOCK 0x02 /* return EAGAIN if operation would block */ #define XFS_ATTR_NOLOCK 0x04 /* Don't grab any conflicting locks */ From BATV+b467f25dd58f5e55a0ba+2859+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 22 15:05:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5MK5XCa120631 for ; Wed, 22 Jun 2011 15:05:33 -0500 X-ASG-Debug-ID: 1308773131-3c74035e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 96FE2174B28D for ; Wed, 22 Jun 2011 13:05:32 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id gDwSG0CXVPB8DyhQ for ; Wed, 22 Jun 2011 13:05:32 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZTg3-0007sX-7t for xfs@oss.sgi.com; Wed, 22 Jun 2011 20:05:31 +0000 Message-Id: <20110622200531.210341501@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 22 Jun 2011 16:01:33 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 4/4] xfs: improve sync behaviour in the fact of aggressive dirtying Subject: [PATCH 4/4] xfs: improve sync behaviour in the fact of aggressive dirtying References: <20110622200129.218994186@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-simplify-sync-2 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308773132 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66823 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 The following script from Wu Fengguang shows very bad behaviour in XFS when aggressively dirtying data during a sync on XFS, with sync times up to almost 10 times as long as ext4. A large part of the issue is that XFS writes data out itself two times in the ->sync_fs method, overriding the lifelock protection in the core writeback code, and another issue is the lock less xfs_ioend_wait call, which doesn't prevent new ioend from beeing queue up while waiting for the count to reach zero. This patch removes the XFS-internal sync calls and relies on the VFS to do its work just like all other filesystems do, and instead of waiting for pending ioends just flushes the workqueues used to process them. With these fixes sync times with concurrent dirtiers are up to part with other filesystems. ------------------------------ snip ------------------------------ #!/bin/sh DEV=/dev/sda7 umount ${DEV} mkfs.xfs -f {DEV} mount ${DEV} /fs echo $((50<<20)) > /proc/sys/vm/dirty_bytes pid= for i in `seq 10` do dd if=/dev/zero of=/fs/zero-$i bs=1M count=1000 & pid="$pid $!" done sleep 1 tic=$(date +'%s') sync tac=$(date +'%s') echo echo sync time: $((tac-tic)) egrep '(Dirty|Writeback|NFS_Unstable)' /proc/meminfo pidof dd > /dev/null && { kill -9 $pid; echo sync NOT livelocked; } ------------------------------ snip ------------------------------ Reported-by: Wu Fengguang 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 2011-06-22 08:50:38.454850057 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2011-06-22 20:47:39.246005258 +0200 @@ -359,14 +359,16 @@ xfs_quiesce_data( { int error, error2 = 0; - /* push non-blocking */ - xfs_sync_data(mp, 0); xfs_qm_sync(mp, SYNC_TRYLOCK); - - /* push and block till complete */ - xfs_sync_data(mp, SYNC_WAIT); xfs_qm_sync(mp, SYNC_WAIT); + /* flush all pending size updates and unwritten extent conversions */ + flush_workqueue(mp->m_data_iodone_queue); + flush_workqueue(mp->m_unwritten_iodone_queue); + + /* force out the newly dirtied log buffers */ + xfs_log_force(mp, XFS_LOG_SYNC); + /* write superblock and hoover up shutdown errors */ error = xfs_sync_fsdata(mp); From BATV+b467f25dd58f5e55a0ba+2859+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 22 15:05:34 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5MK5XJS120630 for ; Wed, 22 Jun 2011 15:05:34 -0500 X-ASG-Debug-ID: 1308773131-0c36033c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4ABFB25AD2 for ; Wed, 22 Jun 2011 13:05:31 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 67i9zXQZbcLNAdzM for ; Wed, 22 Jun 2011 13:05:31 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZTg2-0007rV-Rc for xfs@oss.sgi.com; Wed, 22 Jun 2011 20:05:30 +0000 Message-Id: <20110622200530.807370304@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 22 Jun 2011 16:01:31 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/4] xfs: always log file size updates Subject: [PATCH 2/4] xfs: always log file size updates References: <20110622200129.218994186@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-simplify-appending-writes X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308773132 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66823 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Instead of updating the inode size through the VFS dirty mechanism and ->write_inode just log it directly. This may cause a few additional transactions for inode core updates, but with the delaylog code those are cheap enough to not bother. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_aops.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_aops.c 2011-06-22 10:58:30.344461631 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_aops.c 2011-06-22 10:58:55.877793671 +0200 @@ -156,29 +156,6 @@ xfs_ioend_new_eof( } /* - * 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_ilock(ip, XFS_ILOCK_EXCL); - isize = xfs_ioend_new_eof(ioend); - if (isize) { - ip->i_d.di_size = isize; - xfs_mark_inode_dirty(ip); - } - xfs_iunlock(ip, XFS_ILOCK_EXCL); -} - -/* * Schedule IO completion handling on the final put of an ioend. */ STATIC void @@ -223,10 +200,25 @@ xfs_end_io( } /* - * We might have to update the on-disk file size after extending - * writes. + * 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. */ - xfs_setfilesize(ioend); + if (likely(!ioend->io_error && !XFS_FORCED_SHUTDOWN(ip->i_mount))) { + xfs_fsize_t isize; + + xfs_ilock(ip, XFS_ILOCK_EXCL); + isize = xfs_ioend_new_eof(ioend); + if (isize) + error = xfs_setfilesize(ip, isize); + xfs_iunlock(ip, XFS_ILOCK_EXCL); + + if (error) + ioend->io_error = error; + } if (ioend->io_iocb) aio_complete(ioend->io_iocb, ioend->io_result, 0); @@ -386,14 +378,6 @@ xfs_submit_ioend_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 - * but don't update the inode size until I/O completion. - */ - if (xfs_ioend_new_eof(ioend)) - xfs_mark_inode_dirty(XFS_I(ioend->io_inode)); - submit_bio(wbc->sync_mode == WB_SYNC_ALL ? WRITE_SYNC : WRITE, bio); } Index: xfs/fs/xfs/linux-2.6/xfs_file.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_file.c 2011-06-22 10:58:30.361128296 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_file.c 2011-06-22 11:16:25.057740552 +0200 @@ -405,7 +405,7 @@ xfs_aio_write_newsize_update( xfs_rw_ilock(ip, XFS_ILOCK_EXCL); ip->i_new_size = 0; if (ip->i_d.di_size > ip->i_size) - ip->i_d.di_size = ip->i_size; + xfs_setfilesize(ip, ip->i_size); xfs_rw_iunlock(ip, XFS_ILOCK_EXCL); } } Index: xfs/fs/xfs/xfs_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode.c 2011-06-22 10:58:30.371128295 +0200 +++ xfs/fs/xfs/xfs_inode.c 2011-06-22 11:17:51.944402819 +0200 @@ -1515,6 +1515,34 @@ xfs_itruncate_finish( } /* + * Update the inode size during I/O completions or error handling. + */ +int +xfs_setfilesize( + struct xfs_inode *ip, + xfs_fsize_t isize) +{ + struct xfs_mount *mp = ip->i_mount; + struct xfs_trans *tp; + int error = 0; + + ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); + + tp = _xfs_trans_alloc(mp, XFS_TRANS_FSYNC_TS, KM_NOFS, true); + error = xfs_trans_reserve(tp, 0, XFS_FSYNC_TS_LOG_RES(mp), 0, 0, 0); + if (error) { + xfs_trans_cancel(tp, 0); + return error; + } + + ip->i_d.di_size = isize; + xfs_trans_ijoin(tp, ip); + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); + + return xfs_trans_commit(tp, 0); +} + +/* * This is called when the inode's link count goes to 0. * We place the on-disk inode on a list in the AGI. It * will be pulled from this list when the inode is freed. Index: xfs/fs/xfs/xfs_inode.h =================================================================== --- xfs.orig/fs/xfs/xfs_inode.h 2011-06-22 10:58:30.387794963 +0200 +++ xfs/fs/xfs/xfs_inode.h 2011-06-22 11:16:25.141073882 +0200 @@ -482,6 +482,7 @@ int xfs_ifree(struct xfs_trans *, xfs_i struct xfs_bmap_free *); int xfs_itruncate_finish(struct xfs_trans **, xfs_inode_t *, xfs_fsize_t, int, int); +int xfs_setfilesize(struct xfs_inode *, xfs_fsize_t); int xfs_iunlink(struct xfs_trans *, xfs_inode_t *); void xfs_iext_realloc(xfs_inode_t *, int, int); From BATV+b467f25dd58f5e55a0ba+2859+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 22 15:05:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5MK5bei120667 for ; Wed, 22 Jun 2011 15:05:37 -0500 X-ASG-Debug-ID: 1308773131-6d7601080000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 34C5F11E6644 for ; Wed, 22 Jun 2011 13:05:31 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id TLEBEiCkXJWwZYKi for ; Wed, 22 Jun 2011 13:05:31 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZTg2-0007qP-Ex for xfs@oss.sgi.com; Wed, 22 Jun 2011 20:05:30 +0000 Message-Id: <20110622200129.218994186@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 22 Jun 2011 16:01:29 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/4] RFC: always log inode updates and sync fixes Subject: [PATCH 0/4] RFC: always log inode updates and sync fixes X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308773132 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0009 1.0000 -2.0150 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.41 X-Barracuda-Spam-Status: No, SCORE=-1.41 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66824 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 This combines patches that aren't really related, but have interdependenies in their implementation. Two patches remove the remaining use of the VFS dirty tracking in XFS and replaces them by logging file size and timestamp updates directly. These work fine, and performance doesn't show major changes in the few benchmarks I've run. They are still missing the fdatasync optimization which I have to reimplement. The last patch in the series is a respin of the previous sync lifelock fix, now actually working correctly due to the lack of non-transactional updates, and EAGAIN requeueing in the I/O completion workqueues. Note: this series requires the previous misc updates for Linux 3.1 series applied first. From BATV+b467f25dd58f5e55a0ba+2859+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 22 15:05:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_74, J_CHICKENPOX_84 autolearn=no version=3.4.0-r929098 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 p5MK5bQ7120668 for ; Wed, 22 Jun 2011 15:05:37 -0500 X-ASG-Debug-ID: 1308773131-752b00570000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A623611E6E14 for ; Wed, 22 Jun 2011 13:05:31 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id NfEn8SNgRvZAFLF9 for ; Wed, 22 Jun 2011 13:05:31 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZTg2-0007qz-Kd for xfs@oss.sgi.com; Wed, 22 Jun 2011 20:05:30 +0000 Message-Id: <20110622200530.594374357@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 22 Jun 2011 16:01:30 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/4] xfs: user per-filesystem I/O completion workqueues Subject: [PATCH 1/4] xfs: user per-filesystem I/O completion workqueues References: <20110622200129.218994186@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-split-workqueues X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308773132 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66824 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 The new concurrency managed workqueues are cheap enough that we can create them per-filesystem instead of global. This allows us to only flush items for the current filesystem during sync, and to remove the trylock or defer scheme on the ilock, which is not compatible with using the workqueue flush for integrity purposes in the sync code. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_aops.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_aops.c 2011-06-21 16:47:04.934443809 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_aops.c 2011-06-21 17:15:16.131024850 +0200 @@ -161,32 +161,21 @@ xfs_ioend_new_eof( * 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. - * - * This function does not block as blocking on the inode lock in IO completion - * can lead to IO completion order dependency deadlocks.. If it can't get the - * inode ilock it will return EAGAIN. Callers must handle this. */ -STATIC int +STATIC void xfs_setfilesize( xfs_ioend_t *ioend) { xfs_inode_t *ip = XFS_I(ioend->io_inode); xfs_fsize_t isize; - if (unlikely(ioend->io_error)) - return 0; - - if (!xfs_ilock_nowait(ip, XFS_ILOCK_EXCL)) - return EAGAIN; - + xfs_ilock(ip, XFS_ILOCK_EXCL); isize = xfs_ioend_new_eof(ioend); if (isize) { ip->i_d.di_size = isize; xfs_mark_inode_dirty(ip); } - xfs_iunlock(ip, XFS_ILOCK_EXCL); - return 0; } /* @@ -197,10 +186,15 @@ xfs_finish_ioend( struct xfs_ioend *ioend) { if (atomic_dec_and_test(&ioend->io_remaining)) { + struct xfs_mount *mp = XFS_I(ioend->io_inode)->i_mount; + struct workqueue_struct *wq; + if (ioend->io_type == IO_UNWRITTEN) - queue_work(xfsconvertd_workqueue, &ioend->io_work); + wq = mp->m_unwritten_iodone_queue; else - queue_work(xfsdatad_workqueue, &ioend->io_work); + wq = mp->m_data_iodone_queue; + + queue_work(wq, &ioend->io_work); } } @@ -232,24 +226,11 @@ xfs_end_io( * We might have to update the on-disk file size after extending * writes. */ - error = xfs_setfilesize(ioend); - ASSERT(!error || error == EAGAIN); + xfs_setfilesize(ioend); - /* - * If we didn't complete processing of the ioend, requeue it to the - * tail of the workqueue for another attempt later. Otherwise destroy - * it. - */ - if (error == EAGAIN) { - atomic_inc(&ioend->io_remaining); - xfs_finish_ioend(ioend); - /* ensure we don't spin on blocked ioends */ - delay(1); - } else { - if (ioend->io_iocb) - aio_complete(ioend->io_iocb, ioend->io_result, 0); - xfs_destroy_ioend(ioend); - } + if (ioend->io_iocb) + aio_complete(ioend->io_iocb, ioend->io_result, 0); + xfs_destroy_ioend(ioend); } /* Index: xfs/fs/xfs/linux-2.6/xfs_aops.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_aops.h 2011-06-21 16:47:04.954443807 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_aops.h 2011-06-21 16:49:34.667769562 +0200 @@ -18,8 +18,6 @@ #ifndef __XFS_AOPS_H__ #define __XFS_AOPS_H__ -extern struct workqueue_struct *xfsdatad_workqueue; -extern struct workqueue_struct *xfsconvertd_workqueue; extern mempool_t *xfs_ioend_pool; /* Index: xfs/fs/xfs/linux-2.6/xfs_buf.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.c 2011-06-21 16:44:19.097785538 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_buf.c 2011-06-21 17:08:27.151045557 +0200 @@ -41,14 +41,10 @@ #include "xfs_mount.h" #include "xfs_trace.h" -static kmem_zone_t *xfs_buf_zone; +struct kmem_zone *xfs_buf_zone; STATIC int xfsbufd(void *); STATIC void xfs_buf_delwri_queue(xfs_buf_t *, int); -static struct workqueue_struct *xfslogd_workqueue; -struct workqueue_struct *xfsdatad_workqueue; -struct workqueue_struct *xfsconvertd_workqueue; - #ifdef XFS_BUF_LOCK_TRACKING # define XB_SET_OWNER(bp) ((bp)->b_last_holder = current->pid) # define XB_CLEAR_OWNER(bp) ((bp)->b_last_holder = -1) @@ -1014,8 +1010,10 @@ xfs_buf_ioend( if ((bp->b_iodone) || (bp->b_flags & XBF_ASYNC)) { if (schedule) { + struct xfs_mount *mp = bp->b_target->bt_mount; + INIT_WORK(&bp->b_iodone_work, xfs_buf_iodone_work); - queue_work(xfslogd_workqueue, &bp->b_iodone_work); + queue_work(mp->m_buf_iodone_queue, &bp->b_iodone_work); } else { xfs_buf_iodone_work(&bp->b_iodone_work); } @@ -1665,13 +1663,6 @@ xfs_buf_delwri_promote( spin_unlock(&btp->bt_delwrite_lock); } -STATIC void -xfs_buf_runall_queues( - struct workqueue_struct *queue) -{ - flush_workqueue(queue); -} - /* * Move as many buffers as specified to the supplied list * idicating if we skipped any buffers to prevent deadlocks. @@ -1800,15 +1791,16 @@ xfs_flush_buftarg( xfs_buftarg_t *target, int wait) { + xfs_mount_t *mp = target->bt_mount; xfs_buf_t *bp; int pincount = 0; LIST_HEAD(tmp_list); LIST_HEAD(wait_list); struct blk_plug plug; - xfs_buf_runall_queues(xfsconvertd_workqueue); - xfs_buf_runall_queues(xfsdatad_workqueue); - xfs_buf_runall_queues(xfslogd_workqueue); + flush_workqueue(mp->m_buf_iodone_queue); + flush_workqueue(mp->m_data_iodone_queue); + flush_workqueue(mp->m_unwritten_iodone_queue); set_bit(XBT_FORCE_FLUSH, &target->bt_flags); pincount = xfs_buf_delwri_split(target, &tmp_list, 0); @@ -1847,49 +1839,6 @@ xfs_flush_buftarg( return pincount; } -int __init -xfs_buf_init(void) -{ - xfs_buf_zone = kmem_zone_init_flags(sizeof(xfs_buf_t), "xfs_buf", - KM_ZONE_HWALIGN, NULL); - if (!xfs_buf_zone) - goto out; - - xfslogd_workqueue = alloc_workqueue("xfslogd", - WQ_MEM_RECLAIM | WQ_HIGHPRI, 1); - if (!xfslogd_workqueue) - goto out_free_buf_zone; - - xfsdatad_workqueue = alloc_workqueue("xfsdatad", WQ_MEM_RECLAIM, 1); - if (!xfsdatad_workqueue) - goto out_destroy_xfslogd_workqueue; - - xfsconvertd_workqueue = alloc_workqueue("xfsconvertd", - WQ_MEM_RECLAIM, 1); - if (!xfsconvertd_workqueue) - goto out_destroy_xfsdatad_workqueue; - - return 0; - - out_destroy_xfsdatad_workqueue: - destroy_workqueue(xfsdatad_workqueue); - out_destroy_xfslogd_workqueue: - destroy_workqueue(xfslogd_workqueue); - out_free_buf_zone: - kmem_zone_destroy(xfs_buf_zone); - out: - return -ENOMEM; -} - -void -xfs_buf_terminate(void) -{ - destroy_workqueue(xfsconvertd_workqueue); - destroy_workqueue(xfsdatad_workqueue); - destroy_workqueue(xfslogd_workqueue); - kmem_zone_destroy(xfs_buf_zone); -} - #ifdef CONFIG_KDB_MODULES struct list_head * xfs_get_buftarg_list(void) Index: xfs/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_super.c 2011-06-21 16:53:36.721090640 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_super.c 2011-06-21 17:27:02.880989070 +0200 @@ -768,6 +768,49 @@ xfs_setup_devices( return 0; } +STATIC int +xfs_init_mount_workqueues( + struct xfs_mount *mp) +{ +#define XFS_WQ_NAME_LEN 512 + char name[XFS_WQ_NAME_LEN]; + + snprintf(name, XFS_WQ_NAME_LEN, "xfs-buf/%s", mp->m_fsname); + mp->m_buf_iodone_queue = + alloc_workqueue(name, WQ_MEM_RECLAIM | WQ_HIGHPRI, 1); + if (!mp->m_buf_iodone_queue) + goto out; + + snprintf(name, XFS_WQ_NAME_LEN, "xfs-data/%s", mp->m_fsname); + mp->m_data_iodone_queue = alloc_workqueue(name, WQ_MEM_RECLAIM, 1); + if (!mp->m_data_iodone_queue) + goto out_destroy_buf_iodone_queue; + + snprintf(name, XFS_WQ_NAME_LEN, "xfs-conv/%s", mp->m_fsname); + mp->m_unwritten_iodone_queue = alloc_workqueue(name, WQ_MEM_RECLAIM, 1); + if (!mp->m_unwritten_iodone_queue) + goto out_destroy_data_iodone_queue; + + return 0; + +out_destroy_data_iodone_queue: + destroy_workqueue(mp->m_data_iodone_queue); +out_destroy_buf_iodone_queue: + destroy_workqueue(mp->m_buf_iodone_queue); +out: + return -ENOMEM; +#undef XFS_WQ_NAME_LEN +} + +STATIC void +xfs_destroy_mount_workqueues( + struct xfs_mount *mp) +{ + destroy_workqueue(mp->m_buf_iodone_queue); + destroy_workqueue(mp->m_data_iodone_queue); + destroy_workqueue(mp->m_unwritten_iodone_queue); +} + /* Catch misguided souls that try to use this interface on XFS */ STATIC struct inode * xfs_fs_alloc_inode( @@ -1044,6 +1087,7 @@ xfs_fs_put_super( xfs_unmountfs(mp); xfs_freesb(mp); xfs_icsb_destroy_counters(mp); + xfs_destroy_mount_workqueues(mp); xfs_close_devices(mp); xfs_free_fsname(mp); kfree(mp); @@ -1377,10 +1421,14 @@ xfs_fs_fill_super( if (error) goto out_free_fsname; - error = xfs_icsb_init_counters(mp); + error = xfs_init_mount_workqueues(mp); if (error) goto out_close_devices; + error = xfs_icsb_init_counters(mp); + if (error) + goto out_destroy_workqueues; + error = xfs_readsb(mp, flags); if (error) goto out_destroy_counters; @@ -1448,6 +1496,8 @@ xfs_fs_fill_super( xfs_freesb(mp); out_destroy_counters: xfs_icsb_destroy_counters(mp); +out_destroy_workqueues: + xfs_destroy_mount_workqueues(mp); out_close_devices: xfs_close_devices(mp); out_free_fsname: @@ -1601,8 +1651,15 @@ xfs_init_zones(void) if (!xfs_ili_zone) goto out_destroy_inode_zone; + xfs_buf_zone = kmem_zone_init_flags(sizeof(xfs_buf_t), "xfs_buf", + KM_ZONE_HWALIGN, NULL); + if (!xfs_buf_zone) + goto out_destroy_xfs_ili_zone; + return 0; + out_destroy_xfs_ili_zone: + kmem_zone_destroy(xfs_ili_zone); out_destroy_inode_zone: kmem_zone_destroy(xfs_inode_zone); out_destroy_efi_zone: @@ -1638,6 +1695,7 @@ xfs_init_zones(void) STATIC void xfs_destroy_zones(void) { + kmem_zone_destroy(xfs_buf_zone); kmem_zone_destroy(xfs_ili_zone); kmem_zone_destroy(xfs_inode_zone); kmem_zone_destroy(xfs_efi_zone); @@ -1715,13 +1773,9 @@ init_xfs_fs(void) if (error) goto out_mru_cache_uninit; - error = xfs_buf_init(); - if (error) - goto out_filestream_uninit; - error = xfs_init_procfs(); if (error) - goto out_buf_terminate; + goto out_filestream_uninit; error = xfs_sysctl_register(); if (error) @@ -1738,8 +1792,6 @@ init_xfs_fs(void) xfs_sysctl_unregister(); out_cleanup_procfs: xfs_cleanup_procfs(); - out_buf_terminate: - xfs_buf_terminate(); out_filestream_uninit: xfs_filestream_uninit(); out_mru_cache_uninit: @@ -1759,7 +1811,6 @@ exit_xfs_fs(void) unregister_filesystem(&xfs_fs_type); xfs_sysctl_unregister(); xfs_cleanup_procfs(); - xfs_buf_terminate(); xfs_filestream_uninit(); xfs_mru_cache_uninit(); xfs_destroy_workqueues(); Index: xfs/fs/xfs/xfs_mount.h =================================================================== --- xfs.orig/fs/xfs/xfs_mount.h 2011-06-21 16:45:47.311114406 +0200 +++ xfs/fs/xfs/xfs_mount.h 2011-06-21 17:01:38.347732921 +0200 @@ -211,6 +211,10 @@ typedef struct xfs_mount { struct shrinker m_inode_shrink; /* inode reclaim shrinker */ int64_t m_low_space[XFS_LOWSP_MAX]; /* low free space thresholds */ + + struct workqueue_struct *m_buf_iodone_queue; + struct workqueue_struct *m_data_iodone_queue; + struct workqueue_struct *m_unwritten_iodone_queue; } xfs_mount_t; /* Index: xfs/fs/xfs/linux-2.6/xfs_buf.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.h 2011-06-21 17:05:57.191053150 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_buf.h 2011-06-21 17:08:39.014378290 +0200 @@ -225,10 +225,6 @@ extern xfs_caddr_t xfs_buf_offset(xfs_bu extern void xfs_buf_delwri_dequeue(xfs_buf_t *); extern void xfs_buf_delwri_promote(xfs_buf_t *); -/* Buffer Daemon Setup Routines */ -extern int xfs_buf_init(void); -extern void xfs_buf_terminate(void); - #define xfs_buf_target_name(target) \ ({ char __b[BDEVNAME_SIZE]; bdevname((target)->bt_bdev, __b); __b; }) @@ -343,6 +339,8 @@ extern int xfs_flush_buftarg(xfs_buftarg extern struct list_head *xfs_get_buftarg_list(void); #endif +extern struct kmem_zone *xfs_buf_zone; + #define xfs_getsize_buftarg(buftarg) block_size((buftarg)->bt_bdev) #define xfs_readonly_buftarg(buftarg) bdev_read_only((buftarg)->bt_bdev) From BATV+b467f25dd58f5e55a0ba+2859+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 22 15:05:34 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_62, J_CHICKENPOX_66,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 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 p5MK5Yiv120640 for ; Wed, 22 Jun 2011 15:05:34 -0500 X-ASG-Debug-ID: 1308773131-40bc037c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D98EC174B29A for ; Wed, 22 Jun 2011 13:05:32 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id RieGXPzPpjHPdbOp for ; Wed, 22 Jun 2011 13:05:32 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZTg3-0007s1-1l for xfs@oss.sgi.com; Wed, 22 Jun 2011 20:05:31 +0000 Message-Id: <20110622200531.010725681@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 22 Jun 2011 16:01:32 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/4] xfs: always log timestamp updates Subject: [PATCH 3/4] xfs: always log timestamp updates References: <20110622200129.218994186@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-log-all-inode-updates X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308773132 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66823 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Switch read/write path timestamp updates to use normal logging instead of going through the VFS dirty tracking machinery. This is implemented by logging the inode core in ->dirty_inode. Compared to the old code this may cause additional transactions to be started when we do a lot of small writes to a file, but with the delayed logging code those do not have major overhead. After this patch all inode updates are logged directly, and we do not have to implement a write_inode method anymore. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_file.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_file.c 2011-06-22 11:16:25.057740552 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_file.c 2011-06-22 11:33:21.497689090 +0200 @@ -132,7 +132,6 @@ xfs_file_fsync( struct inode *inode = file->f_mapping->host; struct xfs_inode *ip = XFS_I(inode); struct xfs_mount *mp = ip->i_mount; - struct xfs_trans *tp; int error = 0; int log_flushed = 0; @@ -160,76 +159,17 @@ xfs_file_fsync( } /* - * We always need to make sure that the required inode state is safe on - * disk. The inode might be clean but we still might need to force the - * log because of committed transactions that haven't hit the disk yet. - * Likewise, there could be unflushed non-transactional changes to the - * inode core that have to go to disk and this requires us to issue - * a synchronous transaction to capture these changes correctly. - * - * This code relies on the assumption that if the i_update_core field - * of the inode is clear and the inode is unpinned then it is clean - * and no action is required. + * All updates to the inode are logged, so in addition to the write + * cache flushing we really just have to force out the log up to + * the LSN that last modified this inode. */ xfs_ilock(ip, XFS_ILOCK_SHARED); - - /* - * First check if the VFS inode is marked dirty. All the dirtying - * of non-transactional updates no goes through mark_inode_dirty*, - * which allows us to distinguish beteeen pure timestamp updates - * and i_size updates which need to be caught for fdatasync. - * After that also theck for the dirty state in the XFS inode, which - * might gets cleared when the inode gets written out via the AIL - * or xfs_iflush_cluster. - */ - if (((inode->i_state & I_DIRTY_DATASYNC) || - ((inode->i_state & I_DIRTY_SYNC) && !datasync)) && - ip->i_update_core) { - /* - * Kick off a transaction to log the inode core to get the - * updates. The sync transaction will also force the log. - */ - xfs_iunlock(ip, XFS_ILOCK_SHARED); - tp = xfs_trans_alloc(mp, XFS_TRANS_FSYNC_TS); - error = xfs_trans_reserve(tp, 0, - XFS_FSYNC_TS_LOG_RES(mp), 0, 0, 0); - if (error) { - xfs_trans_cancel(tp, 0); - return -error; - } - xfs_ilock(ip, XFS_ILOCK_EXCL); - - /* - * Note - it's possible that we might have pushed ourselves out - * of the way during trans_reserve which would flush the inode. - * But there's no guarantee that the inode buffer has actually - * gone out yet (it's delwri). Plus the buffer could be pinned - * anyway if it's part of an inode in another recent - * transaction. So we play it safe and fire off the - * transaction anyway. - */ - xfs_trans_ijoin(tp, ip); - xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); - xfs_trans_set_sync(tp); - error = _xfs_trans_commit(tp, 0, &log_flushed); - - xfs_iunlock(ip, XFS_ILOCK_EXCL); - } else { - /* - * Timestamps/size haven't changed since last inode flush or - * inode transaction commit. That means either nothing got - * written or a transaction committed which caught the updates. - * If the latter happened and the transaction hasn't hit the - * disk yet, the inode will be still be pinned. If it is, - * force the log. - */ - if (xfs_ipincount(ip)) { - error = _xfs_log_force_lsn(mp, - ip->i_itemp->ili_last_lsn, - XFS_LOG_SYNC, &log_flushed); - } - xfs_iunlock(ip, XFS_ILOCK_SHARED); + if (xfs_ipincount(ip)) { + error = _xfs_log_force_lsn(ip->i_mount, + ip->i_itemp->ili_last_lsn, + XFS_LOG_SYNC, &log_flushed); } + xfs_iunlock(ip, XFS_ILOCK_SHARED); /* * If we only have a single device, and the log force about was @@ -669,9 +609,6 @@ xfs_file_aio_write_checks( if (new_size > ip->i_size) ip->i_new_size = new_size; - if (likely(!(file->f_mode & FMODE_NOCMTIME))) - file_update_time(file); - /* * If the offset is beyond the size of the file, we need to zero any * blocks that fall between the existing EOF and the start of this @@ -684,6 +621,9 @@ xfs_file_aio_write_checks( if (error) return error; + if (likely(!(file->f_mode & FMODE_NOCMTIME))) + file_update_time(file); + /* * If we're writing the file then make sure to clear the setuid and * setgid bits if the process is not being run by root. This keeps Index: xfs/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_super.c 2011-06-22 11:16:25.071073884 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_super.c 2011-06-22 20:46:46.996007785 +0200 @@ -895,129 +895,54 @@ xfs_fs_inode_init_once( "xfsino", ip->i_ino); } -/* - * Dirty the XFS inode when mark_inode_dirty_sync() is called so that - * we catch unlogged VFS level updates to the inode. - * - * We need the barrier() to maintain correct ordering between unlogged - * updates and the transaction commit code that clears the i_update_core - * field. This requires all updates to be completed before marking the - * inode dirty. - */ STATIC void xfs_fs_dirty_inode( - struct inode *inode, - int flags) -{ - barrier(); - XFS_I(inode)->i_update_core = 1; -} - -STATIC int -xfs_log_inode( - struct xfs_inode *ip) + struct inode *inode, + int flags) { + struct xfs_inode *ip = XFS_I(inode); struct xfs_mount *mp = ip->i_mount; struct xfs_trans *tp; int error; - xfs_iunlock(ip, XFS_ILOCK_SHARED); + /* + * We only want to log the inode if the flags are exactly + * I_DIRTY_SYNC, as that is what the VFS uses for logging + * timestamp updates. In theory there shouldn't be other calls + * from generic code anyway, but the generic_write_end() keeps + * dirtying the inode after updating i_size in the Linux inode. + */ + if (flags != I_DIRTY_SYNC) + return; + + trace_xfs_dirty_inode(ip); + tp = xfs_trans_alloc(mp, XFS_TRANS_FSYNC_TS); error = xfs_trans_reserve(tp, 0, XFS_FSYNC_TS_LOG_RES(mp), 0, 0, 0); - if (error) { xfs_trans_cancel(tp, 0); - /* we need to return with the lock hold shared */ - xfs_ilock(ip, XFS_ILOCK_SHARED); - return error; + return; } xfs_ilock(ip, XFS_ILOCK_EXCL); /* - * Note - it's possible that we might have pushed ourselves out of the - * way during trans_reserve which would flush the inode. But there's - * no guarantee that the inode buffer has actually gone out yet (it's - * delwri). Plus the buffer could be pinned anyway if it's part of - * an inode in another recent transaction. So we play it safe and - * fire off the transaction anyway. + * Make sure to get the latest timestamps from the Linux inode. */ + ip->i_d.di_atime.t_sec = (__int32_t)inode->i_atime.tv_sec; + ip->i_d.di_atime.t_nsec = (__int32_t)inode->i_atime.tv_nsec; + ip->i_d.di_ctime.t_sec = (__int32_t)inode->i_ctime.tv_sec; + ip->i_d.di_ctime.t_nsec = (__int32_t)inode->i_ctime.tv_nsec; + ip->i_d.di_mtime.t_sec = (__int32_t)inode->i_mtime.tv_sec; + ip->i_d.di_mtime.t_nsec = (__int32_t)inode->i_mtime.tv_nsec; + xfs_trans_ijoin(tp, ip); xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); error = xfs_trans_commit(tp, 0); - xfs_ilock_demote(ip, XFS_ILOCK_EXCL); - - return error; -} - -STATIC int -xfs_fs_write_inode( - struct inode *inode, - struct writeback_control *wbc) -{ - struct xfs_inode *ip = XFS_I(inode); - struct xfs_mount *mp = ip->i_mount; - int error = EAGAIN; - - trace_xfs_write_inode(ip); - - if (XFS_FORCED_SHUTDOWN(mp)) - return XFS_ERROR(EIO); - - if (wbc->sync_mode == WB_SYNC_ALL) { - /* - * Make sure the inode has made it it into the log. Instead - * of forcing it all the way to stable storage using a - * synchronous transaction we let the log force inside the - * ->sync_fs call do that for thus, which reduces the number - * of synchronous log foces dramatically. - */ - xfs_ioend_wait(ip); - xfs_ilock(ip, XFS_ILOCK_SHARED); - if (ip->i_update_core) { - error = xfs_log_inode(ip); - if (error) - goto out_unlock; - } - } else { - /* - * We make this non-blocking if the inode is contended, return - * EAGAIN to indicate to the caller that they did not succeed. - * This prevents the flush path from blocking on inodes inside - * another operation right now, they get caught later by - * xfs_sync. - */ - if (!xfs_ilock_nowait(ip, XFS_ILOCK_SHARED)) - goto out; - - if (xfs_ipincount(ip) || !xfs_iflock_nowait(ip)) - goto out_unlock; - - /* - * Now we have the flush lock and the inode is not pinned, we - * can check if the inode is really clean as we know that - * there are no pending transaction completions, it is not - * waiting on the delayed write queue and there is no IO in - * progress. - */ - if (xfs_inode_clean(ip)) { - xfs_ifunlock(ip); - error = 0; - goto out_unlock; - } - error = xfs_iflush(ip, SYNC_TRYLOCK); + if (error) { + /* print error */ } - - out_unlock: - xfs_iunlock(ip, XFS_ILOCK_SHARED); - out: - /* - * if we failed to write out the inode then mark - * it dirty again so we'll try again later. - */ - if (error) - xfs_mark_inode_dirty_sync(ip); - return -error; + xfs_iunlock(ip, XFS_ILOCK_EXCL); } STATIC void @@ -1545,7 +1470,6 @@ static const struct super_operations xfs .alloc_inode = xfs_fs_alloc_inode, .destroy_inode = xfs_fs_destroy_inode, .dirty_inode = xfs_fs_dirty_inode, - .write_inode = xfs_fs_write_inode, .evict_inode = xfs_fs_evict_inode, .put_super = xfs_fs_put_super, .sync_fs = xfs_fs_sync_fs, Index: xfs/fs/xfs/xfs_iget.c =================================================================== --- xfs.orig/fs/xfs/xfs_iget.c 2011-06-22 11:16:25.111073882 +0200 +++ xfs/fs/xfs/xfs_iget.c 2011-06-22 11:33:21.501022423 +0200 @@ -93,7 +93,6 @@ xfs_inode_alloc( ip->i_afp = NULL; memset(&ip->i_df, 0, sizeof(xfs_ifork_t)); ip->i_flags = 0; - ip->i_update_core = 0; ip->i_delayed_blks = 0; memset(&ip->i_d, 0, sizeof(xfs_icdinode_t)); ip->i_size = 0; Index: xfs/fs/xfs/xfs_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode.c 2011-06-22 11:17:51.944402819 +0200 +++ xfs/fs/xfs/xfs_inode.c 2011-06-22 11:33:21.501022423 +0200 @@ -1906,7 +1906,6 @@ retry: iip = ip->i_itemp; if (!iip || xfs_inode_clean(ip)) { ASSERT(ip != free_ip); - ip->i_update_core = 0; xfs_ifunlock(ip); xfs_iunlock(ip, XFS_ILOCK_EXCL); continue; @@ -2688,7 +2687,6 @@ xfs_iflush( * to disk, because the log record didn't make it to disk! */ if (XFS_FORCED_SHUTDOWN(mp)) { - ip->i_update_core = 0; if (iip) iip->ili_format.ilf_fields = 0; xfs_ifunlock(ip); @@ -2768,26 +2766,6 @@ xfs_iflush_int( /* set *dip = inode's place in the buffer */ dip = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_imap.im_boffset); - /* - * Clear i_update_core before copying out the data. - * This is for coordination with our timestamp updates - * that don't hold the inode lock. They will always - * update the timestamps BEFORE setting i_update_core, - * so if we clear i_update_core after they set it we - * are guaranteed to see their updates to the timestamps. - * I believe that this depends on strongly ordered memory - * semantics, but we have that. We use the SYNCHRONIZE - * macro to make sure that the compiler does not reorder - * the i_update_core access below the data copy below. - */ - ip->i_update_core = 0; - SYNCHRONIZE(); - - /* - * Make sure to get the latest timestamps from the Linux inode. - */ - xfs_synchronize_times(ip); - if (XFS_TEST_ERROR(be16_to_cpu(dip->di_magic) != XFS_DINODE_MAGIC, mp, XFS_ERRTAG_IFLUSH_1, XFS_RANDOM_IFLUSH_1)) { xfs_alert_tag(mp, XFS_PTAG_IFLUSH, @@ -2946,8 +2924,7 @@ xfs_iflush_int( } else { /* * We're flushing an inode which is not in the AIL and has - * not been logged but has i_update_core set. For this - * case we can use a B_DELWRI flush and immediately drop + * not been logged. For this case we can immediately drop * the inode flush lock because we can avoid the whole * AIL state thing. It's OK to drop the flush lock now, * because we've already locked the buffer and to do anything Index: xfs/fs/xfs/xfs_inode.h =================================================================== --- xfs.orig/fs/xfs/xfs_inode.h 2011-06-22 11:16:25.141073882 +0200 +++ xfs/fs/xfs/xfs_inode.h 2011-06-22 11:33:21.501022423 +0200 @@ -250,7 +250,6 @@ typedef struct xfs_inode { spinlock_t i_flags_lock; /* inode i_flags lock */ /* Miscellaneous state. */ unsigned short i_flags; /* see defined flags below */ - unsigned char i_update_core; /* timestamps/size is dirty */ unsigned int i_delayed_blks; /* count of delay alloc blks */ xfs_icdinode_t i_d; /* most of ondisk inode */ @@ -491,10 +490,6 @@ int xfs_iflush(xfs_inode_t *, uint); void xfs_lock_inodes(xfs_inode_t **, int, uint); void xfs_lock_two_inodes(xfs_inode_t *, xfs_inode_t *, uint); -void xfs_synchronize_times(xfs_inode_t *); -void xfs_mark_inode_dirty(xfs_inode_t *); -void xfs_mark_inode_dirty_sync(xfs_inode_t *); - #define IHOLD(ip) \ do { \ ASSERT(atomic_read(&VFS_I(ip)->i_count) > 0) ; \ Index: xfs/fs/xfs/xfs_inode_item.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode_item.c 2011-06-22 11:16:25.151073881 +0200 +++ xfs/fs/xfs/xfs_inode_item.c 2011-06-22 11:33:21.504355756 +0200 @@ -256,42 +256,6 @@ xfs_inode_item_format( vecp++; nvecs = 1; - /* - * Clear i_update_core if the timestamps (or any other - * non-transactional modification) need flushing/logging - * and we're about to log them with the rest of the core. - * - * This is the same logic as xfs_iflush() but this code can't - * run at the same time as xfs_iflush because we're in commit - * processing here and so we have the inode lock held in - * exclusive mode. Although it doesn't really matter - * for the timestamps if both routines were to grab the - * timestamps or not. That would be ok. - * - * We clear i_update_core before copying out the data. - * This is for coordination with our timestamp updates - * that don't hold the inode lock. They will always - * update the timestamps BEFORE setting i_update_core, - * so if we clear i_update_core after they set it we - * are guaranteed to see their updates to the timestamps - * either here. Likewise, if they set it after we clear it - * here, we'll see it either on the next commit of this - * inode or the next time the inode gets flushed via - * xfs_iflush(). This depends on strongly ordered memory - * semantics, but we have that. We use the SYNCHRONIZE - * macro to make sure that the compiler does not reorder - * the i_update_core access below the data copy below. - */ - if (ip->i_update_core) { - ip->i_update_core = 0; - SYNCHRONIZE(); - } - - /* - * Make sure to get the latest timestamps from the Linux inode. - */ - xfs_synchronize_times(ip); - vecp->i_addr = &ip->i_d; vecp->i_len = sizeof(struct xfs_icdinode); vecp->i_type = XLOG_REG_TYPE_ICORE; Index: xfs/fs/xfs/xfs_inode_item.h =================================================================== --- xfs.orig/fs/xfs/xfs_inode_item.h 2011-06-22 11:16:25.234407209 +0200 +++ xfs/fs/xfs/xfs_inode_item.h 2011-06-22 11:33:21.507689089 +0200 @@ -148,9 +148,8 @@ typedef struct xfs_inode_log_item { static inline int xfs_inode_clean(xfs_inode_t *ip) { - return (!ip->i_itemp || - !(ip->i_itemp->ili_format.ilf_fields & XFS_ILOG_ALL)) && - !ip->i_update_core; + return !ip->i_itemp || + !(ip->i_itemp->ili_format.ilf_fields & XFS_ILOG_ALL); } extern void xfs_inode_item_init(struct xfs_inode *, struct xfs_mount *); Index: xfs/fs/xfs/linux-2.6/xfs_iops.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_iops.c 2011-06-22 11:16:25.084407216 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_iops.c 2011-06-22 11:33:21.507689089 +0200 @@ -51,50 +51,6 @@ #include /* - * Bring the timestamps in the XFS inode uptodate. - * - * Used before writing the inode to disk. - */ -void -xfs_synchronize_times( - xfs_inode_t *ip) -{ - struct inode *inode = VFS_I(ip); - - ip->i_d.di_atime.t_sec = (__int32_t)inode->i_atime.tv_sec; - ip->i_d.di_atime.t_nsec = (__int32_t)inode->i_atime.tv_nsec; - ip->i_d.di_ctime.t_sec = (__int32_t)inode->i_ctime.tv_sec; - ip->i_d.di_ctime.t_nsec = (__int32_t)inode->i_ctime.tv_nsec; - ip->i_d.di_mtime.t_sec = (__int32_t)inode->i_mtime.tv_sec; - ip->i_d.di_mtime.t_nsec = (__int32_t)inode->i_mtime.tv_nsec; -} - -/* - * If the linux inode is valid, mark it dirty. - * Used when committing a dirty inode into a transaction so that - * the inode will get written back by the linux code - */ -void -xfs_mark_inode_dirty_sync( - xfs_inode_t *ip) -{ - struct inode *inode = VFS_I(ip); - - if (!(inode->i_state & (I_WILL_FREE|I_FREEING))) - mark_inode_dirty_sync(inode); -} - -void -xfs_mark_inode_dirty( - xfs_inode_t *ip) -{ - struct inode *inode = VFS_I(ip); - - if (!(inode->i_state & (I_WILL_FREE|I_FREEING))) - mark_inode_dirty(inode); -} - -/* * Hook in SELinux. This is not quite correct yet, what we really need * here (as we do for default ACLs) is a mechanism by which creation of * these attrs can be journalled at inode creation time (along with the @@ -669,19 +625,16 @@ xfs_setattr_nonsize( inode->i_atime = iattr->ia_atime; ip->i_d.di_atime.t_sec = iattr->ia_atime.tv_sec; ip->i_d.di_atime.t_nsec = iattr->ia_atime.tv_nsec; - ip->i_update_core = 1; } if (mask & ATTR_CTIME) { inode->i_ctime = iattr->ia_ctime; ip->i_d.di_ctime.t_sec = iattr->ia_ctime.tv_sec; ip->i_d.di_ctime.t_nsec = iattr->ia_ctime.tv_nsec; - ip->i_update_core = 1; } if (mask & ATTR_MTIME) { inode->i_mtime = iattr->ia_mtime; ip->i_d.di_mtime.t_sec = iattr->ia_mtime.tv_sec; ip->i_d.di_mtime.t_nsec = iattr->ia_mtime.tv_nsec; - ip->i_update_core = 1; } xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); @@ -906,13 +859,11 @@ xfs_setattr_size( inode->i_ctime = iattr->ia_ctime; ip->i_d.di_ctime.t_sec = iattr->ia_ctime.tv_sec; ip->i_d.di_ctime.t_nsec = iattr->ia_ctime.tv_nsec; - ip->i_update_core = 1; } if (mask & ATTR_MTIME) { inode->i_mtime = iattr->ia_mtime; ip->i_d.di_mtime.t_sec = iattr->ia_mtime.tv_sec; ip->i_d.di_mtime.t_nsec = iattr->ia_mtime.tv_nsec; - ip->i_update_core = 1; } xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); Index: xfs/fs/xfs/linux-2.6/xfs_trace.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_trace.h 2011-06-22 11:16:25.097740550 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_trace.h 2011-06-22 11:33:21.511022422 +0200 @@ -579,7 +579,7 @@ DEFINE_INODE_EVENT(xfs_file_compat_ioctl DEFINE_INODE_EVENT(xfs_ioctl_setattr); DEFINE_INODE_EVENT(xfs_file_fsync); DEFINE_INODE_EVENT(xfs_destroy_inode); -DEFINE_INODE_EVENT(xfs_write_inode); +DEFINE_INODE_EVENT(xfs_dirty_inode); DEFINE_INODE_EVENT(xfs_evict_inode); DEFINE_INODE_EVENT(xfs_dquot_dqalloc); Index: xfs/fs/xfs/xfs_trans_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_trans_inode.c 2011-06-22 13:53:13.157264222 +0200 +++ xfs/fs/xfs/xfs_trans_inode.c 2011-06-22 13:55:01.213925417 +0200 @@ -110,10 +110,14 @@ xfs_trans_ichgtime( if ((flags & XFS_ICHGTIME_MOD) && !timespec_equal(&inode->i_mtime, &tv)) { inode->i_mtime = tv; + ip->i_d.di_mtime.t_sec = tv.tv_sec; + ip->i_d.di_mtime.t_nsec = tv.tv_nsec; } if ((flags & XFS_ICHGTIME_CHG) && !timespec_equal(&inode->i_ctime, &tv)) { inode->i_ctime = tv; + ip->i_d.di_ctime.t_sec = tv.tv_sec; + ip->i_d.di_ctime.t_nsec = tv.tv_nsec; } } Index: xfs/fs/xfs/xfs_itable.c =================================================================== --- xfs.orig/fs/xfs/xfs_itable.c 2011-06-22 13:56:49.090586622 +0200 +++ xfs/fs/xfs/xfs_itable.c 2011-06-22 13:59:00.593913297 +0200 @@ -62,7 +62,6 @@ xfs_bulkstat_one_int( { struct xfs_icdinode *dic; /* dinode core info pointer */ struct xfs_inode *ip; /* incore inode pointer */ - struct inode *inode; struct xfs_bstat *buf; /* return buffer */ int error = 0; /* error value */ @@ -86,7 +85,6 @@ xfs_bulkstat_one_int( ASSERT(ip->i_imap.im_blkno != 0); dic = &ip->i_d; - inode = VFS_I(ip); /* xfs_iget returns the following without needing * further change. @@ -99,19 +97,12 @@ xfs_bulkstat_one_int( buf->bs_uid = dic->di_uid; buf->bs_gid = dic->di_gid; buf->bs_size = dic->di_size; - - /* - * We need to read the timestamps from the Linux inode because - * the VFS keeps writing directly into the inode structure instead - * of telling us about the updates. - */ - buf->bs_atime.tv_sec = inode->i_atime.tv_sec; - buf->bs_atime.tv_nsec = inode->i_atime.tv_nsec; - buf->bs_mtime.tv_sec = inode->i_mtime.tv_sec; - buf->bs_mtime.tv_nsec = inode->i_mtime.tv_nsec; - buf->bs_ctime.tv_sec = inode->i_ctime.tv_sec; - buf->bs_ctime.tv_nsec = inode->i_ctime.tv_nsec; - + buf->bs_atime.tv_sec = dic->di_atime.t_sec; + buf->bs_atime.tv_nsec = dic->di_atime.t_nsec; + buf->bs_mtime.tv_sec = dic->di_mtime.t_sec; + buf->bs_mtime.tv_nsec = dic->di_mtime.t_nsec; + buf->bs_ctime.tv_sec = dic->di_ctime.t_sec; + buf->bs_ctime.tv_nsec = dic->di_ctime.t_nsec; buf->bs_xflags = xfs_ip2xflags(ip); buf->bs_extsize = dic->di_extsize << mp->m_sb.sb_blocklog; buf->bs_extents = dic->di_nextents; From lopresti@gmail.com Wed Jun 22 16:32:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=ham version=3.4.0-r929098 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 p5MLWuJj123843 for ; Wed, 22 Jun 2011 16:32:56 -0500 X-ASG-Debug-ID: 1308778374-753b02860000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BFB9611E7AB7 for ; Wed, 22 Jun 2011 14:32:54 -0700 (PDT) Received: from mail-fx0-f53.google.com (mail-fx0-f53.google.com [209.85.161.53]) by cuda.sgi.com with ESMTP id l31lUtNzQhkUd7GI for ; Wed, 22 Jun 2011 14:32:54 -0700 (PDT) Received: by fxm8 with SMTP id 8so1002427fxm.26 for ; Wed, 22 Jun 2011 14:32:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to :content-type; bh=Inbr1T0q/5JrIBswl07s2PNbYXVtOE5frj1Wgy4P/t4=; b=dCGkSYZ5Wm9DYdB6d+oXHa0uY0nbwCjuu3hh/dOWe4JaYiitZX2XYCzL33QlTM3tKr p/6C43cq0n201uoCRyiIkosxseAYx1sjjykBbV+hULmCrCHPD5tS1q0kxuBEtmAXM1CK wkvg+BFPtuMkqzKF+EtaFHn9nOeq8qOOM8zvQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=sNjchyD6/CQzv6Y/WukWNdVGK0Q6LKByQN4JgPnppQYtiATb1nlKY8GyhTFPEmy95c eMNv6codVpJ3+BTpEdcpxma+ec+sXVemG6XJpaFofxG2668iInRRgaev9DYl6v5N4W2Z 20D2v0+MtTyZUPOXyWDskx5a8++WHDqe5i5pI= MIME-Version: 1.0 Received: by 10.223.64.66 with SMTP id d2mr1450921fai.116.1308778373788; Wed, 22 Jun 2011 14:32:53 -0700 (PDT) Received: by 10.223.92.148 with HTTP; Wed, 22 Jun 2011 14:32:53 -0700 (PDT) Date: Wed, 22 Jun 2011 14:32:53 -0700 Message-ID: X-ASG-Orig-Subj: xfs_repair: "fatal error -- ran out of disk space!" Subject: xfs_repair: "fatal error -- ran out of disk space!" From: "Patrick J. LoPresti" To: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: mail-fx0-f53.google.com[209.85.161.53] X-Barracuda-Start-Time: 1308778375 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66828 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I have a 5.1TB XFS file system that is 93% full (399G free according to "df"). I am trying to run "xfs_repair" on it. The output is appended. Question: What am I supposed to do about this? "xfs_repair -V" says "xfs_repair version 3.1.5". (I downloaded and built the latest version hoping it would fix the issue, but no luck.) Should I just start deleting files at random? Any ideas would be appreciated; I am trying to get this server back up, and restoring 5.1T is not going to be pleasant. Thanks! - Pat Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... - scan filesystem freespace and inode maps... sb_icount 42688, counted 59328 sb_ifree 1, counted 36 sb_fdblocks 104582610, counted 24 - found root inode chunk Phase 3 - for each AG... - scan and clear agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - agno = 4 - agno = 5 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 0 - agno = 2 - agno = 3 - agno = 5 - agno = 4 - agno = 1 Phase 5 - rebuild AG headers and trees... - reset superblock... Phase 6 - check inode connectivity... - resetting contents of realtime bitmap and summary inodes - traversing filesystem ... fatal error -- ran out of disk space! From sandeen@sandeen.net Wed Jun 22 17:27:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5MMRGa4125745 for ; Wed, 22 Jun 2011 17:27:16 -0500 X-ASG-Debug-ID: 1308781635-0ae8005d0000-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 2DA2B1EDFE1B for ; Wed, 22 Jun 2011 15:27:15 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id 9tmzcSiiBu1SAteL for ; Wed, 22 Jun 2011 15:27:15 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id AF1FB4964600; Wed, 22 Jun 2011 17:27:14 -0500 (CDT) Message-ID: <4E026C42.2030500@sandeen.net> Date: Wed, 22 Jun 2011 17:27:14 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: "Patrick J. LoPresti" CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair: "fatal error -- ran out of disk space!" Subject: Re: xfs_repair: "fatal error -- ran out of disk space!" References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1308781636 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66833 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 6/22/11 4:32 PM, Patrick J. LoPresti wrote: > I have a 5.1TB XFS file system that is 93% full (399G free according to "df"). > > I am trying to run "xfs_repair" on it. > > The output is appended. > > Question: What am I supposed to do about this? "xfs_repair -V" says > "xfs_repair version 3.1.5". (I downloaded and built the latest > version hoping it would fix the issue, but no luck.) Should I just > start deleting files at random? You could start by removing a few files you know you don't need, rather than at random. :) TBH I've not seen this one before, and the error message is not all that helpful. It'd be nice to know how many blocks it was trying to reserve when it ran out of space; I guess you'd need to use gdb, or instrument all the calls to res_failed() in phase6.c to know for sure... You could also capture an xfs_metadump of the fs and provide it for analysis, it would let us reproduce the issue and know for sure what's going on. By default it obfuscates metadata. -Eric > Any ideas would be appreciated; I am trying to get this server back > up, and restoring 5.1T is not going to be pleasant. > > Thanks! > > - Pat > > > Phase 1 - find and verify superblock... > Phase 2 - using internal log > - zero log... > - scan filesystem freespace and inode maps... > sb_icount 42688, counted 59328 > sb_ifree 1, counted 36 > sb_fdblocks 104582610, counted 24 > - found root inode chunk > Phase 3 - for each AG... > - scan and clear agi unlinked lists... > - process known inodes and perform inode discovery... > - agno = 0 > - agno = 1 > - agno = 2 > - agno = 3 > - agno = 4 > - agno = 5 > - process newly discovered inodes... > Phase 4 - check for duplicate blocks... > - setting up duplicate extent list... > - check for inodes claiming duplicate blocks... > - agno = 0 > - agno = 2 > - agno = 3 > - agno = 5 > - agno = 4 > - agno = 1 > Phase 5 - rebuild AG headers and trees... > - reset superblock... > Phase 6 - check inode connectivity... > - resetting contents of realtime bitmap and summary inodes > - traversing filesystem ... > > fatal error -- ran out of disk space! > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From david@fromorbit.com Wed Jun 22 17:57:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p5MMvNhu127123 for ; Wed, 22 Jun 2011 17:57:24 -0500 X-ASG-Debug-ID: 1308783441-693801d90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 954A6134C45E for ; Wed, 22 Jun 2011 15:57:21 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id JxJffGXQTqtLrDQD for ; Wed, 22 Jun 2011 15:57:21 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAHFxAk55LChD/2dsb2JhbABTpxt4yVsOhh8Eogg Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 23 Jun 2011 08:27:20 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QZWMI-0003jN-AX; Thu, 23 Jun 2011 08:57:18 +1000 Date: Thu, 23 Jun 2011 08:57:18 +1000 From: Dave Chinner To: Amit Sahrawat Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS Test Case:252 - Shows Wrong Output Subject: Re: XFS Test Case:252 - Shows Wrong Output Message-ID: <20110622225718.GU32466@dastard> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308783442 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0081 1.0000 -1.9682 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.2.66834 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, Jun 22, 2011 at 04:18:52PM +0530, Amit Sahrawat wrote: > Dear All, > ** > *Test Case:13 > * echo " 13. data -> unwritten -> data" > rm -f $testfile > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > -c "$alloc_cmd 0 20k" \ > -c "pwrite 0k 8k" -c "fsync" \ > -c "pwrite 12k 8k" -c "fsync" \ > -c "$zero_cmd 4k 12k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ] && die_now > > *After executing individual case like this: > *testfile=/data/usb/sda3/252.testfile > > echo "13. data -> unwritten -> data" > rm -f $testfile > xfs_io -f -c "truncate 20k" -c \ > "falloc 0 20k" -c "pwrite 0k 8k" -c "fsync" -c "pwrite 12k 8k" -c \ > "fsync" -c "fpunch 4k 12k" -c "fiemap -v" $testfile | $filter_cmd > > *Original Output(Taken from 252.out): > * 13. data -> unwritten -> data > 0: [0..7]: data > 1: [8..31]: hole > 2: [32..39]: data > *Output in my case* > 13. data -> unwritten -> data > 0: [0..15]: data > 1: [16..23]: unwritten > 2: [24..39]: data FWIW, it would be much easier for us to understand your problem if you simply posted the output of a failing "check 252" (it's a diff of the output vs the golden output!) rather than a bunch of strange mangled script outputs from whatever wrapper you are using to run xfstests that nobody but you understand. Anyway, I'm pretty sure that 2.6.35.y doesn't support punching holes via the fallocate operation and so this check in the test: _require_xfs_io_falloc_punch is probably not detecting that punch is not supported correctly. Perhaps that is what you need to check first... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Jun 22 18:24:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5MNOMnH133287 for ; Wed, 22 Jun 2011 18:24:22 -0500 X-ASG-Debug-ID: 1308785060-692d02f90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 97BB9DFF79E for ; Wed, 22 Jun 2011 16:24:20 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id rvbdvykUQceJU0rF for ; Wed, 22 Jun 2011 16:24:20 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAMF4Ak55LChD/2dsb2JhbABTpxt4yVwOhh8EmWeIIQ Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 23 Jun 2011 08:54:19 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QZWmQ-0003mo-D6; Thu, 23 Jun 2011 09:24:18 +1000 Date: Thu, 23 Jun 2011 09:24:18 +1000 From: Dave Chinner To: Eric Sandeen Cc: "Patrick J. LoPresti" , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair: "fatal error -- ran out of disk space!" Subject: Re: xfs_repair: "fatal error -- ran out of disk space!" Message-ID: <20110622232418.GV32466@dastard> References: <4E026C42.2030500@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4E026C42.2030500@sandeen.net> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308785061 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66836 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, Jun 22, 2011 at 05:27:14PM -0500, Eric Sandeen wrote: > On 6/22/11 4:32 PM, Patrick J. LoPresti wrote: > > I have a 5.1TB XFS file system that is 93% full (399G free according to "df"). > > > > I am trying to run "xfs_repair" on it. > > > > The output is appended. > > > > Question: What am I supposed to do about this? "xfs_repair -V" says > > "xfs_repair version 3.1.5". (I downloaded and built the latest > > version hoping it would fix the issue, but no luck.) Should I just > > start deleting files at random? > > You could start by removing a few files you know you don't need, rather than > at random. :) > > TBH I've not seen this one before, and the error message is not all that > helpful. It'd be nice to know how many blocks it was trying to reserve > when it ran out of space; I guess you'd need to use gdb, or instrument > all the calls to res_failed() in phase6.c to know for sure... Also, the number of inodes and directories in your filesystem might tell us whether we should expect an ENOSPC, as well. I suspect that there's an accounting error, because 400GB of transaction reservations is an awful lot of directory rebuilds.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From lopresti@gmail.com Wed Jun 22 18:41:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p5MNfxfX136295 for ; Wed, 22 Jun 2011 18:41:59 -0500 X-ASG-Debug-ID: 1308786117-029300470000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 04FA326F44 for ; Wed, 22 Jun 2011 16:41:58 -0700 (PDT) Received: from mail-fx0-f53.google.com (mail-fx0-f53.google.com [209.85.161.53]) by cuda.sgi.com with ESMTP id SZY2gUvCp13mHLeX for ; Wed, 22 Jun 2011 16:41:58 -0700 (PDT) Received: by fxm8 with SMTP id 8so1053579fxm.26 for ; Wed, 22 Jun 2011 16:41:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=aq/Gt4QYhTLOQr9HPgzRby/rbv6KbtZ++8ZahHERwFo=; b=bRL/O5GMO2DJg+RTxA0aTudCmwP6os/M4KVW6XVAlyK3Y/0avEvRiq33YoGkwJXHd8 b/d4oMFGNgHmrjvtiiAto1cth8c/3ClQ2VWjOYFiTfCE8QvlNGCjcEe0uWUx//nWw3tl qbqdtwjTihPJfuqAQe7f69+EA9QWLv9d4kBp4= 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=x7GDqtvfAVa1YDBkkTLg1GMk3/OKagIPPY7gvEeAQZbZjxdJO+6gGDurfaxM/8giKr MgHFhtAVF1CCQF0ibb46uja+j8/7M0XLl6h831yy4ILx+jwv3QLN6jJQ9pX8uXnXalca jtVJwlVpvZVTfrveLyPVDZR10NKSJ1MgnaHXA= MIME-Version: 1.0 Received: by 10.223.64.66 with SMTP id d2mr1605472fai.116.1308786117700; Wed, 22 Jun 2011 16:41:57 -0700 (PDT) Received: by 10.223.92.148 with HTTP; Wed, 22 Jun 2011 16:41:57 -0700 (PDT) In-Reply-To: <20110622232418.GV32466@dastard> References: <4E026C42.2030500@sandeen.net> <20110622232418.GV32466@dastard> Date: Wed, 22 Jun 2011 16:41:57 -0700 Message-ID: X-ASG-Orig-Subj: Re: xfs_repair: "fatal error -- ran out of disk space!" Subject: Re: xfs_repair: "fatal error -- ran out of disk space!" From: "Patrick J. LoPresti" To: Dave Chinner Cc: Eric Sandeen , xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-fx0-f53.google.com[209.85.161.53] X-Barracuda-Start-Time: 1308786119 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66837 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi, Dave and Eric. And thank you for the quick reply. I blew away a couple of files (200-300 megabytes; I did not write it down) and then xfs_repair succeeded. And now "df" shows the partition as 100% full (265M free out of 5.1T), not 93% full (399G free). I think the file system actually was full, but corrupted. The reason I was trying to run xfs_repair is that the system was acting... "funny" (but not "ha ha" funny). Specifically, a nfsd task was consuming 100% CPU even though no NFS traffic was visible on the network. cat /proc/task_id/stack suggested the nfsd was in an infinite loop calling into XFS trying to allocate an extent or something. This nfsd held a lock making it impossible to umount the partition (among other things). My guess is that nfsd was fooled much like df into thinking there was space available, but when it tried to actually obtain that space, it was told "please try again". Which it did, forever. I guess one question is how xfs_repair should behave in this case. I mean, what if the file system had been full, but too corrupt for me to delete anything? Anyway, my problem is fixed. Well, until the filesystem gets corrupted again, anyway; I still have not identified the underlying cause of that... Thank you again for the prompt response. - Pat On Wed, Jun 22, 2011 at 4:24 PM, Dave Chinner wrote: > On Wed, Jun 22, 2011 at 05:27:14PM -0500, Eric Sandeen wrote: >> On 6/22/11 4:32 PM, Patrick J. LoPresti wrote: >> > I have a 5.1TB XFS file system that is 93% full (399G free according t= o "df"). >> > >> > I am trying to run "xfs_repair" on it. >> > >> > The output is appended. >> > >> > Question: =A0What am I supposed to do about this? =A0"xfs_repair -V" s= ays >> > "xfs_repair version 3.1.5". =A0(I downloaded and built the latest >> > version hoping it would fix the issue, but no luck.) =A0Should I just >> > start deleting files at random? >> >> You could start by removing a few files you know you don't need, rather = than >> at random. =A0:) >> >> TBH I've not seen this one before, and the error message is not all that >> helpful. =A0It'd be nice to know how many blocks it was trying to reserv= e >> when it ran out of space; I guess you'd need to use gdb, or instrument >> all the calls to res_failed() in phase6.c to know for sure... > > Also, the number of inodes and directories in your filesystem might > tell us whether we should expect an ENOSPC, as well. I suspect that > there's an accounting error, because 400GB of transaction > reservations is an awful lot of directory rebuilds.... > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > From dave@fromorbit.com Wed Jun 22 20:35:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_47 autolearn=no version=3.4.0-r929098 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 p5N1ZOCu141047 for ; Wed, 22 Jun 2011 20:35:24 -0500 X-ASG-Debug-ID: 1308792920-777a02dc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 64A62274F2 for ; Wed, 22 Jun 2011 18:35:21 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id to56fQCOyvAO12O7 for ; Wed, 22 Jun 2011 18:35:21 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnEIAOeUAk55LChD/2dsb2JhbABTmEWOWXjKIYYtBKIR Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 23 Jun 2011 11:05:20 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1QZYpD-0003zZ-5D for xfs@oss.sgi.com; Thu, 23 Jun 2011 11:35:19 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1QZYoy-0005xv-PQ for xfs@oss.sgi.com; Thu, 23 Jun 2011 11:35:04 +1000 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/3] xfs: prevent bogus assert when trying to remove non-existent attribute Subject: [PATCH 3/3] xfs: prevent bogus assert when trying to remove non-existent attribute Date: Thu, 23 Jun 2011 11:35:01 +1000 Message-Id: <1308792901-22880-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1308792901-22880-1-git-send-email-david@fromorbit.com> References: <1308792901-22880-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308792922 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0182 1.0000 -1.9024 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.90 X-Barracuda-Spam-Status: No, SCORE=-1.90 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66845 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 From: Dave Chinner If the attribute fork on an inode is in btree format and has multiple levels (i.e node format rather than leaf format), then a lookup failure will trigger an assert failure in xfs_da_path_shift if the flag XFS_DA_OP_OKNOENT is not set. This flag is used to indicate to the directory btree code that not finding an entry is not a fatal error. In the case of doing a lookup for a directory name removal, this is valid as a user cannot insert an arbitrary name to remove from the directory btree. However, in the case of the attribute tree, a user has direct control over the attribute name and can ask for any random name to be removed without any validation. In this case, fsstress is asking for a non-existent user.selinux attribute to be removed, and that is causing xfs_da_path_shift() to fall off the bottom of the tree where it asserts that a lookup failure is allowed. Because the flag is not set, we die a horrible death on a debug enable kernel. Prevent this assert from firing on attribute removes by adding the op_flag XFS_DA_OP_OKNOENT to atribute removal operations. Discovered when testing on a SELinux enabled system by fsstress in test 070 by trying to remove a non-existent user.selinux attribute. Signed-off-by: Dave Chinner Reviewed-by: Alex Elder Reviewed-by: Christoph Hellwig --- fs/xfs/xfs_attr.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/fs/xfs/xfs_attr.c b/fs/xfs/xfs_attr.c index c863753..01d2072 100644 --- a/fs/xfs/xfs_attr.c +++ b/fs/xfs/xfs_attr.c @@ -490,6 +490,13 @@ xfs_attr_remove_int(xfs_inode_t *dp, struct xfs_name *name, int flags) args.whichfork = XFS_ATTR_FORK; /* + * we have no control over the attribute names that userspace passes us + * to remove, so we have to allow the name lookup prior to attribute + * removal to fail. + */ + args.op_flags = XFS_DA_OP_OKNOENT; + + /* * Attach the dquots to the inode. */ error = xfs_qm_dqattach(dp, 0); -- 1.7.5.1 From dave@fromorbit.com Wed Jun 22 20:35:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5N1ZOIF141050 for ; Wed, 22 Jun 2011 20:35:25 -0500 X-ASG-Debug-ID: 1308792920-777a02dc0001-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 75190274F5 for ; Wed, 22 Jun 2011 18:35:22 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id TRgW972CZJqR3l4F for ; Wed, 22 Jun 2011 18:35:22 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnEIAOeUAk55LChD/2dsb2JhbABTmEWOWXjKIYYtBKIR Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 23 Jun 2011 11:05:20 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1QZYpD-0003zX-1m for xfs@oss.sgi.com; Thu, 23 Jun 2011 11:35:19 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1QZYoy-0005xq-LV for xfs@oss.sgi.com; Thu, 23 Jun 2011 11:35:04 +1000 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/3] xfs: reset inode per-lifetime state when recycling it Subject: [PATCH 1/3] xfs: reset inode per-lifetime state when recycling it Date: Thu, 23 Jun 2011 11:34:59 +1000 Message-Id: <1308792901-22880-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1308792901-22880-1-git-send-email-david@fromorbit.com> References: <1308792901-22880-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308792923 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66845 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 From: Dave Chinner XFS inodes has several per-lifetime state fields that determine the behaviour of the inode. These state fields are not all reset when an inode is reused from the reclaimable state. This can lead to unexpected behaviour of the new inode such as speculative preallocation not being truncated away in the expected manner for local files until the inode is subsequently truncated, freed or cycles out of the cache. It can also lead to an inode being considered to be a filestream inode or having been truncated when that is not the case. Rework the reinitialisation of the inode when it is recycled to ensure that it is pristine before it is reused. While there, also fix the resetting of state flags in the recycling error paths so the inode does not become unreclaimable. Signed-off-by: Dave Chinner --- fs/xfs/xfs_iget.c | 13 +++++++++---- fs/xfs/xfs_inode.h | 10 ++++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c index cb9b6d1..3631783 100644 --- a/fs/xfs/xfs_iget.c +++ b/fs/xfs/xfs_iget.c @@ -253,16 +253,21 @@ xfs_iget_cache_hit( rcu_read_lock(); spin_lock(&ip->i_flags_lock); - ip->i_flags &= ~XFS_INEW; - ip->i_flags |= XFS_IRECLAIMABLE; - __xfs_inode_set_reclaim_tag(pag, ip); + ip->i_flags &= ~(XFS_INEW | XFS_IRECLAIM); + ASSERT(ip->i_flags & XFS_IRECLAIMABLE); trace_xfs_iget_reclaim_fail(ip); goto out_error; } spin_lock(&pag->pag_ici_lock); spin_lock(&ip->i_flags_lock); - ip->i_flags &= ~(XFS_IRECLAIMABLE | XFS_IRECLAIM); + + /* + * Clear the per-lifetime state in the inode as we are now + * effectively a new inode and need to return to the initial + * state before reuse occurs. + */ + ip->i_flags &= ~XFS_IRECLAIM_RESET_FLAGS; ip->i_flags |= XFS_INEW; __xfs_inode_clear_reclaim_tag(mp, pag, ip); inode->i_state = I_NEW; diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index 3ae6d58..964cfea 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -384,6 +384,16 @@ static inline void xfs_ifunlock(xfs_inode_t *ip) #define XFS_IDIRTY_RELEASE 0x0040 /* dirty release already seen */ /* + * Per-lifetime flags need to be reset when re-using a reclaimable inode during + * inode lookup. Thi prevents unintended behaviour on the new inode from + * ocurring. + */ +#define XFS_IRECLAIM_RESET_FLAGS \ + (XFS_IRECLAIMABLE | XFS_IRECLAIM | \ + XFS_IDIRTY_RELEASE | XFS_ITRUNCATED | \ + XFS_IFILESTREAM); + +/* * Flags for inode locking. * Bit ranges: 1<<1 - 1<<16-1 -- iolock/ilock modes (bitfield) * 1<<16 - 1<<32-1 -- lockdep annotation (integers) -- 1.7.5.1 From dave@fromorbit.com Wed Jun 22 20:35:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5N1ZWAM141081 for ; Wed, 22 Jun 2011 20:35:32 -0500 X-ASG-Debug-ID: 1308792930-6c8701d60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9F14917514BB for ; Wed, 22 Jun 2011 18:35:30 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id ZwpRE0mLdt5sdmai for ; Wed, 22 Jun 2011 18:35:30 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnEIAOeUAk55LChD/2dsb2JhbABTmEWOWXiqR59ahi0EohE Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 23 Jun 2011 11:05:29 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1QZYpM-0003zW-Vc for xfs@oss.sgi.com; Thu, 23 Jun 2011 11:35:29 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1QZYoy-0005xo-JU for xfs@oss.sgi.com; Thu, 23 Jun 2011 11:35:04 +1000 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/3] xfs: fixes for 3.0-rc4 Subject: [PATCH 0/3] xfs: fixes for 3.0-rc4 Date: Thu, 23 Jun 2011 11:34:58 +1000 Message-Id: <1308792901-22880-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308792931 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5756 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.2.66845 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 following three patches are fixes ensuring inodes state is correctly reset when they are recycled, ensuring specualtive preallocation is correctly reaped after a truncate down, and the untrusted attribute removal assert fix that xfstests triggers on selinux enabled systems. From dave@fromorbit.com Wed Jun 22 20:35:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5N1ZXH7141089 for ; Wed, 22 Jun 2011 20:35:33 -0500 X-ASG-Debug-ID: 1308792930-6c8701d60001-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CE1DD17514BD for ; Wed, 22 Jun 2011 18:35:31 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id Z3FxSL6y6J4p6nqs for ; Wed, 22 Jun 2011 18:35:31 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnEIAOeUAk55LChD/2dsb2JhbABTmEWOWXjKIYYtBJlviCI Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 23 Jun 2011 11:05:29 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1QZYpD-0003zY-3N for xfs@oss.sgi.com; Thu, 23 Jun 2011 11:35:19 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1QZYoy-0005xs-Nf for xfs@oss.sgi.com; Thu, 23 Jun 2011 11:35:04 +1000 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/3] xfs: clear XFS_IDIRTY_RELEASE on truncate down Subject: [PATCH 2/3] xfs: clear XFS_IDIRTY_RELEASE on truncate down Date: Thu, 23 Jun 2011 11:35:00 +1000 Message-Id: <1308792901-22880-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1308792901-22880-1-git-send-email-david@fromorbit.com> References: <1308792901-22880-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1308792932 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.2.66845 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 From: Dave Chinner When an inode is truncated down, speculative preallocation is removed from the inode. This should also reset the state bits for controlling whether preallocation is subsequently removed when the file is next closed. The flag is not being cleared, so repeated operations on a file that first involve a truncate (e.g. multiple repeated dd invocations on a file) give different file layouts for the second and subsequent invocations. Fix this by clearing the XFS_IDIRTY_RELEASE state bit when the XFS_ITRUNCATED bit is detected in xfs_release() and hence ensure that speculative delalloc is removed on files that have been truncated down. Signed-off-by: Dave Chinner --- fs/xfs/xfs_vnodeops.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index b7a5fe7..6197207 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c @@ -960,8 +960,11 @@ xfs_release( * be exposed to that problem. */ truncated = xfs_iflags_test_and_clear(ip, XFS_ITRUNCATED); - if (truncated && VN_DIRTY(VFS_I(ip)) && ip->i_delayed_blks > 0) - xfs_flush_pages(ip, 0, -1, XBF_ASYNC, FI_NONE); + if (truncated) { + xfs_iflags_clear(ip, XFS_IDIRTY_RELEASE); + if (VN_DIRTY(VFS_I(ip)) && ip->i_delayed_blks > 0) + xfs_flush_pages(ip, 0, -1, XBF_ASYNC, FI_NONE); + } } if (ip->i_d.di_nlink == 0) -- 1.7.5.1 From david@fromorbit.com Thu Jun 23 00:08:26 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5N58QM7158407 for ; Thu, 23 Jun 2011 00:08:26 -0500 X-ASG-Debug-ID: 1308805703-744700050000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 03CC11752127 for ; Wed, 22 Jun 2011 22:08:24 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id gxw8GItcvcJAeEBq for ; Wed, 22 Jun 2011 22:08:24 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAOrIAk55LChD/2dsb2JhbABTpx54ywMOgjGDbgSiEQ Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail04.adl6.internode.on.net with ESMTP; 23 Jun 2011 14:38:21 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QZc9L-0004Je-PK; Thu, 23 Jun 2011 15:08:19 +1000 Date: Thu, 23 Jun 2011 15:08:19 +1000 From: Dave Chinner To: Christoph Hellwig Cc: bpm@sgi.com, aelder@sgi.com, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: only SetPageUptodate if all buffers are uptodate Subject: Re: [PATCH] xfs: only SetPageUptodate if all buffers are uptodate Message-ID: <20110623050819.GW32466@dastard> References: <20110419114028.7844.10303.stgit@nfs3> <20110420103521.GA20510@infradead.org> <20110420145722.GB29759@sgi.com> <20110420153614.GA11362@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110420153614.GA11362@infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1308805705 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0129 1.0000 -1.9371 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.94 X-Barracuda-Spam-Status: No, SCORE=-1.94 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66859 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, Apr 20, 2011 at 11:36:14AM -0400, Christoph Hellwig wrote: > On Wed, Apr 20, 2011 at 09:57:22AM -0500, bpm@sgi.com wrote: > > Wish I did. The test case that discovered this only applies to CXFS. I > > would have liked to post a test case for XFS but decided that this has > > been on my TODO list for too long already. Looks to me like it has to > > be related to the inode size, so you quit probing buffers after the > > first. Maybe some discussion will ring some bells for somebody. > > It would be really good to have one, but the actual patch looks good > enough that I'd consider putting it in. I can assumes you ran > xfstests with various small blocksize options for both the test > and scratch device and it didn't show any regressions? I've been running this patch for quite some time, but having just upgraded to the latest xfstests, this patch is causing fsx failures in tests 075 091 112 127 and 231 on 3.0-rc4 on x86_64 with default mkfs and mount parameters. fsx passes again with this patch removed from my test stack.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From amit.sahrawat83@gmail.com Thu Jun 23 00:47:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.2 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE,J_CHICKENPOX_65,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p5N5lB5H159758 for ; Thu, 23 Jun 2011 00:47:12 -0500 X-ASG-Debug-ID: 1308808029-0b4f000b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ew0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B6718273EA for ; Wed, 22 Jun 2011 22:47:10 -0700 (PDT) Received: from mail-ew0-f53.google.com (mail-ew0-f53.google.com [209.85.215.53]) by cuda.sgi.com with ESMTP id ZhzWtPxjuXeAOLwH for ; Wed, 22 Jun 2011 22:47:10 -0700 (PDT) Received: by ewy8 with SMTP id 8so509176ewy.26 for ; Wed, 22 Jun 2011 22:47:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=RTYUF6VLnVlGp4FSMa5NUgvten5WwVQGGRl82vMA9fk=; b=MLyMr/gjoFByR+j/RKVWCDIdYbWWBO7uBQljX8K9y7HcoOxu0lepIo942bxktmM8TM +VO57hFEIplPIoP1x34Y3xlQqXR1gfNk3bdllrOM6DlyB2hV+vu3erVurXZl3YsjheRU ePzDmdNLolhj6Aj6ebod6QqBn9Wau45oYbcKo= 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=U/6A1jAfuVpOuOn53vxp93Vr5KcI8V2djHMRj/h2X3Lugby5x1zCpeF88+5UWUuQ/D bq2gGxMANGogIRe7r6LZqriY7vOqHjmrLe4+RZ3LVcQfpr5q1QCQZ2tquIYc4UvbdJ8K rOA3GarDOiNP53kVziZQoj5LhJVHqDhydwOfY= MIME-Version: 1.0 Received: by 10.14.11.227 with SMTP id 75mr1157298eex.110.1308808029348; Wed, 22 Jun 2011 22:47:09 -0700 (PDT) Received: by 10.14.37.15 with HTTP; Wed, 22 Jun 2011 22:47:09 -0700 (PDT) In-Reply-To: <20110622225718.GU32466@dastard> References: <20110622225718.GU32466@dastard> Date: Thu, 23 Jun 2011 11:17:09 +0530 Message-ID: X-ASG-Orig-Subj: Re: XFS Test Case:252 - Shows Wrong Output Subject: Re: XFS Test Case:252 - Shows Wrong Output From: Amit Sahrawat To: Dave Chinner Cc: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=0016364d1f8bab239404a65a9dd5 X-Barracuda-Connect: mail-ew0-f53.google.com[209.85.215.53] X-Barracuda-Start-Time: 1308808030 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66861 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 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 --0016364d1f8bab239404a65a9dd5 Content-Type: text/plain; charset=ISO-8859-1 This is the original result I got after running test case : 252 [root@localhost xfstests-2011-05-11]# ./check -xfs 252 *FSTYP -- xfs (non-debug) PLATFORM -- Linux/i686 localhost 2.6.31.5-127.fc12.i686.PAE MKFS_OPTIONS -- -f -bsize=4096 /dev/sdb4 MOUNT_OPTIONS -- -o context=system_u:object_r:nfs_t:s0 /dev/sdb4 /media/d* 252 - output mismatch (see 252.out.bad) --- 252.out 2011-06-21 12:47:23.000000000 +0530 +++ 252.out.bad 2011-06-23 11:10:33.000000000 +0530 @@ -1,47 +1,51 @@ QA output created by 252 1. into a hole +0: [0..7]: hole +1: [8..23]: unwritten +2: [24..39]: hole 2. into allocated space -0: [0..7]: data -1: [8..23]: hole -2: [24..39]: data +0: [0..39]: data 3. into unwritten space -0: [0..7]: unwritten -1: [8..23]: hole -2: [24..39]: unwritten +0: [0..39]: unwritten 4. hole -> data -0: [0..23]: hole -1: [24..31]: data -2: [32..39]: hole +0: [0..7]: hole +1: [8..15]: unwritten +2: [16..31]: data +3: [32..39]: hole 5. hole -> unwritten -0: [0..23]: hole -1: [24..31]: unwritten +0: [0..7]: hole +1: [8..31]: unwritten 2: [32..39]: hole 6. data -> hole -0: [0..7]: data -1: [8..39]: hole +0: [0..15]: data +1: [16..23]: unwritten +2: [24..39]: hole 7. data -> unwritten -0: [0..7]: data -1: [8..23]: hole -2: [24..31]: unwritten -3: [32..39]: hole +0: [0..15]: data +1: [16..31]: unwritten +2: [32..39]: hole 8. unwritten -> hole -0: [0..7]: unwritten -1: [8..39]: hole +0: [0..23]: unwritten +1: [24..39]: hole 9. unwritten -> data -0: [0..7]: unwritten -1: [8..23]: hole -2: [24..31]: data -3: [32..39]: hole +0: [0..15]: unwritten +1: [16..31]: data +2: [32..39]: hole 10. hole -> data -> hole +0: [0..7]: hole +1: [8..15]: unwritten +2: [16..23]: data +3: [24..31]: unwritten +4: [32..39]: hole 11. data -> hole -> data -0: [0..7]: data -1: [8..31]: hole -2: [32..39]: data +0: [0..15]: data +1: [16..23]: unwritten +2: [24..39]: data *12. unwritten -> data -> unwritten *-0: [0..7]: unwritten -1: [8..31]: hole -2: [32..39]: unwritten *+0: [0..15]: unwritten +1: [16..23]: data +2: [24..39]: unwritten * * 13. data -> unwritten -> data *-0: [0..7]: data -1: [8..31]: hole -2: [32..39]: data *+0: [0..15]: data +1: [16..23]: unwritten +2: [24..39]: data *Ran: 252 Failures: 252 Failed 1 of 1 tests [root@localhost xfstests-2011-05-11]# The above output if for kernel version 2.6.31.. Thanks & Regards, Amit Sahrawat On Thu, Jun 23, 2011 at 4:27 AM, Dave Chinner wrote: > On Wed, Jun 22, 2011 at 04:18:52PM +0530, Amit Sahrawat wrote: > > Dear All, > > ** > > *Test Case:13 > > * echo " 13. data -> unwritten -> data" > > rm -f $testfile > > $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k" \ > > -c "$alloc_cmd 0 20k" \ > > -c "pwrite 0k 8k" -c "fsync" \ > > -c "pwrite 12k 8k" -c "fsync" \ > > -c "$zero_cmd 4k 12k" \ > > -c "$map_cmd -v" $testfile | $filter_cmd > > [ $? -ne 0 ] && die_now > > > > *After executing individual case like this: > > *testfile=/data/usb/sda3/252.testfile > > > > echo "13. data -> unwritten -> data" > > rm -f $testfile > > xfs_io -f -c "truncate 20k" -c \ > > "falloc 0 20k" -c "pwrite 0k 8k" -c "fsync" -c "pwrite 12k 8k" -c \ > > "fsync" -c "fpunch 4k 12k" -c "fiemap -v" $testfile | $filter_cmd > > > > *Original Output(Taken from 252.out): > > * 13. data -> unwritten -> data > > 0: [0..7]: data > > 1: [8..31]: hole > > 2: [32..39]: data > > *Output in my case* > > 13. data -> unwritten -> data > > 0: [0..15]: data > > 1: [16..23]: unwritten > > 2: [24..39]: data > > FWIW, it would be much easier for us to understand your problem if > you simply posted the output of a failing "check 252" (it's a diff > of the output vs the golden output!) rather than a bunch of strange > mangled script outputs from whatever wrapper you are using to run > xfstests that nobody but you understand. > > Anyway, I'm pretty sure that 2.6.35.y doesn't support punching holes > via the fallocate operation and so this check in the test: > > _require_xfs_io_falloc_punch > > is probably not detecting that punch is not supported correctly. > Perhaps that is what you need to check first... > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > --0016364d1f8bab239404a65a9dd5 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
This is the original result I got after running test case : 252
<= div>[root@localhost xfstests-2011-05-11]# ./check -xfs 252
FSTYP= =A0=A0=A0=A0=A0=A0=A0=A0 -- xfs (non-debug)
PLATFORM=A0=A0=A0=A0=A0 -- L= inux/i686 localhost 2.6.31.5-127.fc12.i686.PAE
MKFS_OPTIONS=A0 -- -f -bsize=3D4096 /dev/sdb4
MOUNT_OPTIONS -- -o contex= t=3Dsystem_u:object_r:nfs_t:s0 /dev/sdb4 /media/d
252=A0= - output mismatch (see 252.out.bad)
--- 252.out=A02011-06-21 12:47:23.0= 00000000 +0530
+++ 252.out.bad=A02011-06-23 11:10:33.000000000 +0530
@@ -1,47 +1,51 @@<= br>=A0QA output created by 252
=A0=A01. into a hole
+0: [0..7]: hole<= br>+1: [8..23]: unwritten
+2: [24..39]: hole
=A0=A02. into allocated = space
-0: [0..7]: data
-1: [8..23]: hole
-2: [24..39]: data
+0: [0..39]:= data
=A0=A03. into unwritten space
-0: [0..7]: unwritten
-1: [8..= 23]: hole
-2: [24..39]: unwritten
+0: [0..39]: unwritten
=A0=A04. = hole -> data
-0: [0..23]: hole
-1: [24..31]: data
-2: [32..39]: hole
+0: [0..7]= : hole
+1: [8..15]: unwritten
+2: [16..31]: data
+3: [32..39]: hol= e
=A0=A05. hole -> unwritten
-0: [0..23]: hole
-1: [24..31]: un= written
+0: [0..7]: hole
+1: [8..31]: unwritten
=A02: [32..39]: hole
=A0= =A06. data -> hole
-0: [0..7]: data
-1: [8..39]: hole
+0: [0..1= 5]: data
+1: [16..23]: unwritten
+2: [24..39]: hole
=A0=A07. data = -> unwritten
-0: [0..7]: data
-1: [8..23]: hole
-2: [24..31]: unwritten
-3: [32= ..39]: hole
+0: [0..15]: data
+1: [16..31]: unwritten
+2: [32..39]= : hole
=A0=A08. unwritten -> hole
-0: [0..7]: unwritten
-1: [8.= .39]: hole
+0: [0..23]: unwritten
+1: [24..39]: hole
=A0=A09. unwritten -> da= ta
-0: [0..7]: unwritten
-1: [8..23]: hole
-2: [24..31]: data
-= 3: [32..39]: hole
+0: [0..15]: unwritten
+1: [16..31]: data
+2: [3= 2..39]: hole
=A0=A010. hole -> data -> hole
+0: [0..7]: hole
+1: [8..15]: un= written
+2: [16..23]: data
+3: [24..31]: unwritten
+4: [32..39]: h= ole
=A0=A011. data -> hole -> data
-0: [0..7]: data
-1: [8..= 31]: hole
-2: [32..39]: data
+0: [0..15]: data
+1: [16..23]: unwritten
+2: [= 24..39]: data
=A0=A012. unwritten -> data -> unwritten
=
-0: [0..7]: unwritten
-1: [8..31]: hole
-2: [32..39]: unwrit= ten
+0: [0..15]: unwritten
+1: [16..23]: data
+2: [24..39]: unwri= tten
=A0=A013. data -> unwritten -> data
-0: [0..7]: data
-1: [8..31]: hole
-2: [32..39]: data
= +0: [0..15]: data
+1: [16..23]: unwritten
+2: [24..39]: data
Ran: 252
Failu= res: 252
Failed 1 of 1 tests
[root@localhost xfstests-2011-05-11]#
The above output if for kernel version 2.6.31..
=A0
Thanks & Regards,
Amit Sahrawat
=A0
On Thu, Jun 23, 2011 at 4:27 AM, Dave Chinner <david@fromorbit.com= >
wrote:
On Wed, Jun = 22, 2011 at 04:18:52PM +0530, Amit Sahrawat wrote:
> Dear All,
> **
> *Test Case:13
> * =A0 =A0 =A0 =A0echo " =A013. data -> unwritten -> data&qu= ot;
> =A0 =A0 =A0 =A0 rm -f $testfile
> =A0 =A0 =A0 =A0 $XFS_IO_PROG $xfs_io_opt -f -c "truncate 20k"= ; \
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 -c "$alloc_cmd 0 20k" \
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 -c "pwrite 0k 8k" -c "f= sync" \
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 -c "pwrite 12k 8k" -c "= fsync" \
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 -c "$zero_cmd 4k 12k" \
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 -c "$map_cmd -v" $testfile |= $filter_cmd
> =A0 =A0 =A0 =A0 [ $? -ne 0 ] && die_now
>
> *After executing individual case like this:
> *testfile=3D/data/usb/sda3/252.testfile
>
> echo "13. data -> unwritten -> data"
> rm -f $testfile
> xfs_io -f -c "truncate 20k" -c \
> "falloc 0 20k" -c "pwrite 0k 8k" -c "fsync&qu= ot; -c "pwrite 12k 8k" -c =A0\
> "fsync" -c "fpunch 4k 12k" -c "fiemap -v"= ; $testfile | $filter_cmd
>
> *Original Output(Taken from 252.out):
> * =A0 =A0 =A0 =A013. data -> unwritten -> data
> 0: [0..7]: data
> 1: [8..31]: hole
> 2: [32..39]: data
> *Output in my case*
> =A0 13. data -> unwritten -> data
> 0: [0..15]: data
> 1: [16..23]: unwritten
> 2: [24..39]: data

FWIW, it would be much easier for us to understand your problem= if
you simply posted the output of a failing "check 252" (it's a= diff
of the output vs the golden output!) rather than a bunch of strange
mangled script outputs from whatever wrapper you are using to run
xfstests that nobody but you understand.

Anyway, I'm pretty sure that 2.6.35.y doesn't support punching hole= s
via the fallocate operation and so this check in the test:

_require_xfs_io_falloc_punch

is probably not detecting that punch is not supported correctly.
Perhaps that is what you need to check first...

Cheers,

Dave.
--
Dave Chinner
david@fromorbit.com

--0016364d1f8bab239404a65a9dd5-- From amit.sahrawat83@gmail.com Thu Jun 23 00:51:30 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.2 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE,J_CHICKENPOX_65,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p5N5pUm3159884 for ; Thu, 23 Jun 2011 00:51:30 -0500 X-ASG-Debug-ID: 1308808287-2582011e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ey0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4FCBE14F584C for ; Wed, 22 Jun 2011 22:51:27 -0700 (PDT) Received: from mail-ey0-f181.google.com (mail-ey0-f181.google.com [209.85.215.181]) by cuda.sgi.com with ESMTP id PpDGT1VkDOyq2Tl6 for ; Wed, 22 Jun 2011 22:51:27 -0700 (PDT) Received: by eyh5 with SMTP id 5so515908eyh.26 for ; Wed, 22 Jun 2011 22:51:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=qfgk5ebv5uoHOFes2WH3fpY9Yq5ihICrnEl1n9ZAoe8=; b=U5SXNlu8Qlc7974mNJ62+LL04q37c3DGIfCXRu6w5qTqrNP3t5fsAm2cUcGiAobwPD nk2i0OUiULLH4xWCN8rXqu6ISFQrV9q0pyu5ygOk8gAdJw+EHb+KUBF57f3d1jUk29PZ Uu3b4+jHYWZqyuW6hSNvp1+1LnNvI/3k4M+wk= 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=m8myEh6RweT9ATnObA8l6kMDmgrAL3/RAvSYJKcKQtFd2DYmTYe/8JFNOBtXtKtiiW rVXCe3k4NctYdLOm//+Oa+y3Wt1J3smCRdnNHmt1AkhanSMqbxftfdkdQs1JAw1Y9Fm7 vfYpCDEdfx68FyC//PLSmSJeBZSQdcBWrDLkI= MIME-Version: 1.0 Received: by 10.14.126.137 with SMTP id b9mr1192265eei.238.1308808286717; Wed, 22 Jun 2011 22:51:26 -0700 (PDT) Received: by 10.14.37.15 with HTTP; Wed, 22 Jun 2011 22:51:26 -0700 (PDT) In-Reply-To: <4E022818.7030406@linux.vnet.ibm.com> References: <4E022818.7030406@linux.vnet.ibm.com> Date: Thu, 23 Jun 2011 11:21:26 +0530 Message-ID: X-ASG-Orig-Subj: Re: XFS Test Case:252 - Shows Wrong Output Subject: Re: XFS Test Case:252 - Shows Wrong Output From: Amit Sahrawat To: Allison Henderson Cc: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=e0cb4e70053702493504a65aad17 X-Barracuda-Connect: mail-ey0-f181.google.com[209.85.215.181] X-Barracuda-Start-Time: 1308808289 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66862 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 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 --e0cb4e70053702493504a65aad17 Content-Type: text/plain; charset=ISO-8859-1 Hi, *PLATFORM -- Linux/i686 localhost 2.6.31.5-127.fc12.i686.PAE* The output as per the command mentioned by you: [root@localhost xfstests-2011-05-11]# xfs_io -f -c "truncate 20k" -c "falloc 0 20k" -c "pwrite 0k 8k" -c "fs ync" -c "pwrite 12k 8k" -c "fsync" -c "fpunch 4k 12k" -c "fiemap -v" /media/c/newfile wrote 8192/8192 bytes at offset 0 8 KiB, 2 ops; 0.0000 sec (434.028 MiB/sec and 111111.1111 ops/sec) command "fs ync" not found wrote 8192/8192 bytes at offset 12288 8 KiB, 2 ops; 0.0000 sec (977 MiB/sec and 250000.0000 ops/sec) /media/c/newfile: * EXT: FILE-OFFSET BLOCK-RANGE TOTAL FLAGS 0: [0..15]: 176..191 16 0x0 1: [16..23]: 192..199 8 0x800 2: [24..39]: 200..215 16 0x1 * Thanks & Regards, Amit Sahrawat On Wed, Jun 22, 2011 at 11:06 PM, Allison Henderson < achender@linux.vnet.ibm.com> wrote: > On 06/22/2011 03:48 AM, Amit Sahrawat wrote: > >> xfs_io -f -c "truncate 20k" -c \ >> "falloc 0 20k" -c "pwrite 0k 8k" -c "fsync" -c "pwrite 12k 8k" -c \ >> "fsync" -c "fpunch 4k 12k" -c "fiemap -v" $testfile | $filter_cmd >> >> *Original Output(Taken from 252.out): >> * 13. data -> unwritten -> data >> 0: [0..7]: data >> 1: [8..31]: hole >> 2: [32..39]: data >> *Output in my case* >> 13. data -> unwritten -> data >> 0: [0..15]: data >> 1: [16..23]: unwritten >> 2: [24..39]: data >> >> Please let me know about the vailidity of this result. >> > > Hi there, > > It looks like the "fpunch 4k 12k" is supposed to be what puts the hole > there. If I run the command you have above, the fiemap should show a hole > like this: > > > xfs_io -f -c "truncate 20k" -c "falloc 0 20k" -c "pwrite 0k 8k" -c "fsync" > -c "pwrite 12k 8k" -c "fsync" -c "fpunch 4k 12k" -c "fiemap -v" somefile > wrote 8192/8192 bytes at offset 0 > 8 KiB, 2 ops; 0.0000 sec (217.014 MiB/sec and 55555.5556 ops/sec) > wrote 8192/8192 bytes at offset 12288 > 8 KiB, 2 ops; 0.0000 sec (339.674 MiB/sec and 86956.5217 ops/sec) > > somefile: > EXT: FILE-OFFSET BLOCK-RANGE TOTAL FLAGS > 0: [0..7]: 256..263 8 0x0 > > 1: [8..31]: hole 24 > 2: [32..39]: 288..295 8 0x1 > > If you do not see the hole, it could be your punch hole operation is > failing for some reason. > > Allison Henderson > > --e0cb4e70053702493504a65aad17 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Hi,
=A0
PLATFORM=A0=A0=A0=A0=A0 -- Linux/i= 686 localhost 2.6.31.5-127.fc12.i686.PAE
=A0
T= he output as per=A0the command mentioned by you:
[root@localhost = xfstests-2011-05-11]# xfs_io -f -c "truncate 20k" -c "falloc= 0 20k" -c "pwrite 0k 8k" -c "fs
ync" -c "pwrite 12k 8k" -c "fsync" -c "fpunch= 4k 12k" -c "fiemap -v" /media/c/newfile
wrote 8192/8192 = bytes at offset 0
8 KiB, 2 ops; 0.0000 sec (434.028 MiB/sec and 111111.1= 111 ops/sec)
command "fs
ync" not found
wrote 8192/8192 bytes at offset = 12288
8 KiB, 2 ops; 0.0000 sec (977 MiB/sec and 250000.0000 ops/sec)
= /media/c/newfile:
=A0EXT: FILE-OFFSET=A0=A0=A0=A0=A0 BLOCK-RANGE= =A0=A0=A0=A0=A0 TOTAL FLAGS
=A0=A0 0: [0..15]:=A0=A0=A0=A0=A0=A0=A0=A0 176..191=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0 16=A0=A0 0x0
=A0=A0 1: [16..23]:=A0=A0=A0=A0=A0=A0=A0 192..199= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 8 0x800
=A0=A0 2: [24..39]:=A0=A0= =A0=A0=A0=A0=A0 200..215=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 16=A0=A0 0x1
<= /strong>
Thanks & Regards,
Amit Sahrawat


=A0
On Wed, Jun 22, 2011 at 11= :06 PM, Allison Henderson <achender@linux.vnet.ibm.com> wrote:
On 06/22/2011 03:48 AM, Amit Sahrawat wrote:
xfs_io -f -c "truncate 20k" -c \
"falloc 0 20k" -c "pwrite 0k 8k" -c "fsync" -= c "pwrite 12k 8k" -c =A0\
"fsync" -c "fpunch 4k 12k" -c "fiemap -v" $te= stfile | $filter_cmd

*Original Output(Taken from 252.out):
* =A0 =A0 =A0 =A013. data -> =A0unwritten -> =A0data
0: [0..7]: data
1: [8..31]: hole
2: [32..39]: data
*Output in my case*
=A0 13. data -> =A0unwritten -> =A0data
0: [0..15]: data
1: [16..23]: unwritten
2: [24..39]: data

Please let me know about the vailidity of this result.

Hi there,

It looks like the "fpunch 4k 12k" is supposed to be what puts the= hole there. =A0If I run the command you have above, the fiemap should show= a hole like this:


xfs_io -f -c "truncate 20k" -c "falloc 0 20k" -c "= pwrite 0k 8k" -c "fsync" -c "pwrite 12k 8k" -c =A0= "fsync" -c "fpunch 4k 12k" -c "fiemap -v" som= efile
wrote 8192/8192 bytes at offset 0
8 KiB, 2 ops; 0.0000 sec (217.014 MiB/sec and 55555.5556 ops/sec)
wrote 8192/8192 bytes at offset 12288
8 KiB, 2 ops; 0.0000 sec (339.674 MiB/sec and 86956.5217 ops/sec)

somefile:
=A0EXT: FILE-OFFSET =A0 =A0 =A0BLOCK-RANGE =A0 =A0 =A0TOTAL FLAGS
=A0 0: [0..7]: =A0 =A0 =A0 =A0 =A0256..263 =A0 =A0 =A0 =A0 =A0 =A0 8 =A0 0= x0

=A0 1: [8..31]: =A0 =A0 =A0 =A0 hole =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A024
=
=A0 2: [32..39]: =A0 =A0 =A0 =A0288..295 =A0 =A0 =A0 =A0 =A0 =A0 8 =A0 0x1=

If you do not see the hole, it could be your punch hole operation is failin= g for some reason.

Allison Henderson


--e0cb4e70053702493504a65aad17-- From david@fromorbit.com Thu Jun 23 01:09:08 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5N697mW160536 for ; Thu, 23 Jun 2011 01:09:08 -0500 X-ASG-Debug-ID: 1308809345-19d200080000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CABD7279E9 for ; Wed, 22 Jun 2011 23:09:06 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id X8wGSTgln2N06NOW for ; Wed, 22 Jun 2011 23:09:06 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAPnWAk55LChD/2dsb2JhbABTpx54ykgOgjGDbgSiEQ Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail04.adl6.internode.on.net with ESMTP; 23 Jun 2011 15:39:03 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QZd64-0004P0-J9; Thu, 23 Jun 2011 16:09:00 +1000 Date: Thu, 23 Jun 2011 16:09:00 +1000 From: Dave Chinner To: Christoph Hellwig Cc: bpm@sgi.com, xfs@oss.sgi.com, aelder@sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: only SetPageUptodate if all buffers are uptodate Subject: Re: [PATCH] xfs: only SetPageUptodate if all buffers are uptodate Message-ID: <20110623060900.GX32466@dastard> References: <20110419114028.7844.10303.stgit@nfs3> <20110420103521.GA20510@infradead.org> <20110420145722.GB29759@sgi.com> <20110420153614.GA11362@infradead.org> <20110623050819.GW32466@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110623050819.GW32466@dastard> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1308809346 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0004 1.0000 -2.0185 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66863 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, Jun 23, 2011 at 03:08:19PM +1000, Dave Chinner wrote: > On Wed, Apr 20, 2011 at 11:36:14AM -0400, Christoph Hellwig wrote: > > On Wed, Apr 20, 2011 at 09:57:22AM -0500, bpm@sgi.com wrote: > > > Wish I did. The test case that discovered this only applies to CXFS. I > > > would have liked to post a test case for XFS but decided that this has > > > been on my TODO list for too long already. Looks to me like it has to > > > be related to the inode size, so you quit probing buffers after the > > > first. Maybe some discussion will ring some bells for somebody. > > > > It would be really good to have one, but the actual patch looks good > > enough that I'd consider putting it in. I can assumes you ran > > xfstests with various small blocksize options for both the test > > and scratch device and it didn't show any regressions? > > I've been running this patch for quite some time, but having just > upgraded to the latest xfstests, this patch is causing fsx failures > in tests 075 091 112 127 and 231 on 3.0-rc4 on x86_64 with default > mkfs and mount parameters. fsx passes again with this patch removed > from my test stack.... Seems I spoke too soon - the fsx failures seems to be intermittent, and it was just chance that my bisect landed on this patch.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Jun 23 01:20:36 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5N6KZvG160907 for ; Thu, 23 Jun 2011 01:20:36 -0500 X-ASG-Debug-ID: 1308810033-19d1006f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 08CFF2737F for ; Wed, 22 Jun 2011 23:20:33 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id FP1HeV8IJ884kpBT for ; Wed, 22 Jun 2011 23:20:33 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAHPaAk55LChD/2dsb2JhbABTpx54ylIOhh8EohE Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail04.adl6.internode.on.net with ESMTP; 23 Jun 2011 15:50:32 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QZdHC-0004Q9-Mu; Thu, 23 Jun 2011 16:20:30 +1000 Date: Thu, 23 Jun 2011 16:20:30 +1000 From: Dave Chinner To: Amit Sahrawat Cc: Allison Henderson , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS Test Case:252 - Shows Wrong Output Subject: Re: XFS Test Case:252 - Shows Wrong Output Message-ID: <20110623062030.GY32466@dastard> References: <4E022818.7030406@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1308810035 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0008 1.0000 -2.0158 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66865 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, Jun 23, 2011 at 11:21:26AM +0530, Amit Sahrawat wrote: > Hi, > > *PLATFORM -- Linux/i686 localhost 2.6.31.5-127.fc12.i686.PAE* ^^^^^^^^^^^ > > The output as per the command mentioned by you: > [root@localhost xfstests-2011-05-11]# xfs_io -f -c "truncate 20k" -c "falloc > 0 20k" -c "pwrite 0k 8k" -c "fs > ync" -c "pwrite 12k 8k" -c "fsync" -c "fpunch 4k 12k" -c "fiemap -v" > /media/c/newfile > wrote 8192/8192 bytes at offset 0 > 8 KiB, 2 ops; 0.0000 sec (434.028 MiB/sec and 111111.1111 ops/sec) > command "fs > ync" not found > wrote 8192/8192 bytes at offset 12288 > 8 KiB, 2 ops; 0.0000 sec (977 MiB/sec and 250000.0000 ops/sec) > /media/c/newfile: > * EXT: FILE-OFFSET BLOCK-RANGE TOTAL FLAGS > 0: [0..15]: 176..191 16 0x0 > 1: [16..23]: 192..199 8 0x800 > 2: [24..39]: 200..215 16 0x1 > * The fpunch command did not punch the range out. Amit, once again you're testing on a kernel (2.6.31) that does not support the punch operation. As I suggested previously, you need to find out why the fpunch command is not returning an error as that is root cause of your failures. Cheers, Dave. -- Dave Chinner david@fromorbit.com From amit.sahrawat83@gmail.com Thu Jun 23 01:36:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p5N6asEB161507 for ; Thu, 23 Jun 2011 01:36:55 -0500 X-ASG-Debug-ID: 1308811012-258302750000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ey0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B5337E00DE8 for ; Wed, 22 Jun 2011 23:36:52 -0700 (PDT) Received: from mail-ey0-f181.google.com (mail-ey0-f181.google.com [209.85.215.181]) by cuda.sgi.com with ESMTP id 7S3NnfbprBYKruTL for ; Wed, 22 Jun 2011 23:36:52 -0700 (PDT) Received: by eyh5 with SMTP id 5so524996eyh.26 for ; Wed, 22 Jun 2011 23:36:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=Og3KRSOJoEFOM7bPWMlWfNGulfmwuPaq+RD+iBXzRdM=; b=TLz/Kl61trGQq6YtHpDOZRsnJQuVE2Lu6qBej6rczrRPM3d6PfrkV7YWz5jZOGBMtT 80V+keYgprQ7GJTDuzlfvpvJ5Ajvds9rtCmZCsksyYZ681qLyt5PB8kAQELaKVRFnkXc PkKMomzMJIkzUVJUwExkhys3jupL6jgY7Yw48= 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=s43TaeOIThgQEQ6tq2wA7/CFcqqnNge85Hul+AnjFuVuBEuOc7D5XAzMQwmE6vaW6j kSl4d46uCBLWh2t7eN94jwdIu4TX6m9Mdy6jUslvCNIkjyNJHPW30QkDuyIh//s08V9q j5ggJXdeO8McCE+MQPZ8kzC7KsJ4CKpQ+pOGI= MIME-Version: 1.0 Received: by 10.14.9.228 with SMTP id 76mr1104829eet.206.1308811012016; Wed, 22 Jun 2011 23:36:52 -0700 (PDT) Received: by 10.14.37.15 with HTTP; Wed, 22 Jun 2011 23:36:51 -0700 (PDT) In-Reply-To: <20110623062030.GY32466@dastard> References: <4E022818.7030406@linux.vnet.ibm.com> <20110623062030.GY32466@dastard> Date: Thu, 23 Jun 2011 12:06:51 +0530 Message-ID: X-ASG-Orig-Subj: Re: XFS Test Case:252 - Shows Wrong Output Subject: Re: XFS Test Case:252 - Shows Wrong Output From: Amit Sahrawat To: Dave Chinner Cc: Allison Henderson , xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=0016364c6ecf730c7004a65b4f0b X-Barracuda-Connect: mail-ey0-f181.google.com[209.85.215.181] X-Barracuda-Start-Time: 1308811013 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66866 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 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 --0016364c6ecf730c7004a65b4f0b Content-Type: text/plain; charset=ISO-8859-1 Fortunately or Unfortunately I have 2.6.31(x86) and 2.6.35.13(ARM) and both do not support "fpunch". As per your earlier mail - 2.6.35.y does not support "fpunch" so I though of trying on 2.6.31.y. I will check out for the return errors in this condition and will update more on this. Thanks & Regards, Amit Sahrawat On Thu, Jun 23, 2011 at 11:50 AM, Dave Chinner wrote: > On Thu, Jun 23, 2011 at 11:21:26AM +0530, Amit Sahrawat wrote: > > Hi, > > > > *PLATFORM -- Linux/i686 localhost 2.6.31.5-127.fc12.i686.PAE* > ^^^^^^^^^^^ > > > > The output as per the command mentioned by you: > > [root@localhost xfstests-2011-05-11]# xfs_io -f -c "truncate 20k" -c > "falloc > > 0 20k" -c "pwrite 0k 8k" -c "fs > > ync" -c "pwrite 12k 8k" -c "fsync" -c "fpunch 4k 12k" -c "fiemap -v" > > /media/c/newfile > > wrote 8192/8192 bytes at offset 0 > > 8 KiB, 2 ops; 0.0000 sec (434.028 MiB/sec and 111111.1111 ops/sec) > > command "fs > > ync" not found > > wrote 8192/8192 bytes at offset 12288 > > 8 KiB, 2 ops; 0.0000 sec (977 MiB/sec and 250000.0000 ops/sec) > > /media/c/newfile: > > * EXT: FILE-OFFSET BLOCK-RANGE TOTAL FLAGS > > 0: [0..15]: 176..191 16 0x0 > > 1: [16..23]: 192..199 8 0x800 > > 2: [24..39]: 200..215 16 0x1 > > * > > The fpunch command did not punch the range out. > > Amit, once again you're testing on a kernel (2.6.31) that does not > support the punch operation. As I suggested previously, you need to > find out why the fpunch command is not returning an error as that is > root cause of your failures. > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > --0016364c6ecf730c7004a65b4f0b Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Fortunately or Unfortunately I have 2.6.31(x86) and 2.6.35.13(ARM) and= both do not support "fpunch". As per your earlier mail - 2.6.35.= y does not support "fpunch" so I though of trying on 2.6.31.y.
=A0
I will check out for the return errors in this condition= and will update more on this.
=A0
Thanks & Regard= s,
Amit Sahrawat


=A0
On Thu, Jun 23, 2011 at 11:50 AM, Dave Chinner <david@fromorbit.com> wrote:<= br>
On Thu, Jun 23, 2011 at 11:21:26AM +0530, Amit Sahrawat w= rote:
> Hi,
>
> *PLATFORM =A0 =A0 =A0-- Linux/i686 localhost 2.6.31.5-127.fc12.i686.PA= E*
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 ^^^^^^^^^^^
>
> The output as per the command mentioned by you:
> [root@localhost xfstests-2011-05-11]# xfs_io -f -c "truncate 20k&= quot; -c "falloc
> 0 20k" -c "pwrite 0k 8k" -c "fs
> ync" -c "pwrite 12k 8k" -c "fsync" -c "f= punch 4k 12k" -c "fiemap -v"
> /media/c/newfile
> wrote 8192/8192 bytes at offset 0
> 8 KiB, 2 ops; 0.0000 sec (434.028 MiB/sec and 111111.1111 ops/sec)
> command "fs
> ync" not found
> wrote 8192/8192 bytes at offset 12288
> 8 KiB, 2 ops; 0.0000 sec (977 MiB/sec and 250000.0000 ops/sec)
> /media/c/newfile:
> * EXT: FILE-OFFSET =A0 =A0 =A0BLOCK-RANGE =A0 =A0 =A0TOTAL FLAGS
> =A0 =A00: [0..15]: =A0 =A0 =A0 =A0 176..191 =A0 =A0 =A0 =A0 =A0 =A016 = =A0 0x0
> =A0 =A01: [16..23]: =A0 =A0 =A0 =A0192..199 =A0 =A0 =A0 =A0 =A0 =A0 8 = 0x800
> =A0 =A02: [24..39]: =A0 =A0 =A0 =A0200..215 =A0 =A0 =A0 =A0 =A0 =A016 = =A0 0x1
> *

The fpunch command did not punch the range out.

Amit, once again you're testing on a kernel (2.6.31) that does not
support the punch operation. As I suggested previously, you need to
find out why the fpunch command is not returning an error as that is
root cause of your failures.

Cheers,

Dave.
--
Dave Chinner
david@fromorbit.com

--0016364c6ecf730c7004a65b4f0b-- From ajeet.yadav.77@gmail.com Thu Jun 23 01:46:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=ham version=3.4.0-r929098 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 p5N6khC4161865 for ; Thu, 23 Jun 2011 01:46:43 -0500 X-ASG-Debug-ID: 1308811602-74e0033f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-vx0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 92CD617522EE for ; Wed, 22 Jun 2011 23:46:42 -0700 (PDT) Received: from mail-vx0-f181.google.com (mail-vx0-f181.google.com [209.85.220.181]) by cuda.sgi.com with ESMTP id ZsTch3d55P4n9PW5 for ; Wed, 22 Jun 2011 23:46:42 -0700 (PDT) Received: by vxa40 with SMTP id 40so1229971vxa.26 for ; Wed, 22 Jun 2011 23:46:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to :content-type; bh=XGSIU3tX1gXtYi91f1OKypW4NT/15tZKHRvuGyestKQ=; b=KsjChGXeL4qbQ2xwycW0kN/gSvTaJPZ/jcQxk9GNCIeskaWknOKUorjuawnU+xiWCr cVj6CcM0m4mr83cJnuKkpzBtAcFle462zJaA7FDuqylbtHWhWnRjdv+76YcjOsLFnZKu eD9J33wnf6Tzb3ykf8Ow0lyqqihVWaO1YcROs= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=H+magkc4jzpwfFrDNALRrrARoLgkgm0N6BUzTrIIgXvqEiNTElBkswiF+v5ZmNvSUg mxHpFkYHzCZDd7HGd4cQ8O0jKikSmadJjQVTTA1o028jmIXVoEvBtBGGgitHGb7lalR9 uhrjfARtBNiLpiUj8ZXTblHyIUSAwwdB0UOR0= MIME-Version: 1.0 Received: by 10.220.19.17 with SMTP id y17mr602243vca.3.1308811600634; Wed, 22 Jun 2011 23:46:40 -0700 (PDT) Received: by 10.220.163.138 with HTTP; Wed, 22 Jun 2011 23:46:40 -0700 (PDT) Date: Thu, 23 Jun 2011 12:16:40 +0530 Message-ID: X-ASG-Orig-Subj: xfstests 228 output log differ Subject: xfstests 228 output log differ From: Ajeet Yadav To: xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-vx0-f181.google.com[209.85.220.181] X-Barracuda-Start-Time: 1308811602 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4568 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=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66865 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dear all, I have attached the log of xfstests 228, the test case seems to PASS on my target (MIPS 2.6.35.13) but log differ because of additional information. Can anyone tell how to fix it QA output created by 228 File size limit is now set to 100 MB. Let us try to preallocate 101 MB. This should fail. -File size limit exceeded +./228: line 78: 1674 File size limit exceeded$XFS_IO_PROG -F -f -c 'falloc 0 101m' $TEST_DIR/ouch Let us now try to preallocate 50 MB. This should succeed. Test over. From stan@hardwarefreak.com Thu Jun 23 02:42:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5N7giI1169332 for ; Thu, 23 Jun 2011 02:42:45 -0500 X-ASG-Debug-ID: 1308814963-3c9501690000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from greer.hardwarefreak.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EEE1D27D9C for ; Thu, 23 Jun 2011 00:42:43 -0700 (PDT) Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id hHSIt0e0ahVLdBvO for ; Thu, 23 Jun 2011 00:42:43 -0700 (PDT) Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id E61826C0B3; Thu, 23 Jun 2011 02:42:42 -0500 (CDT) Message-ID: <4E02EE71.7010300@hardwarefreak.com> Date: Thu, 23 Jun 2011 02:42:41 -0500 From: Stan Hoeppner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11 MIME-Version: 1.0 To: "Patrick J. LoPresti" CC: Dave Chinner , Eric Sandeen , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair: "fatal error -- ran out of disk space!" Subject: Re: xfs_repair: "fatal error -- ran out of disk space!" References: <4E026C42.2030500@sandeen.net> <20110622232418.GV32466@dastard> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1308814963 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0004 1.0000 -2.0187 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66869 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On 6/22/2011 6:41 PM, Patrick J. LoPresti wrote: > I guess one question is how xfs_repair should behave in this case. I > mean, what if the file system had been full, but too corrupt for me to > delete anything? Maybe you should rethink your policy on filesystem space management. >From what you stated the FS in question actually was full. You apparently were unaware of it until a problem (misbehaving nfsd process) brought it to your attention. You should be monitoring your FS usage. Something as simple as logwatch daily summaries can save your bacon here. As a general rule, when an FS begins steadily growing past the 80% mark heading toward 90%, you need to take action, either adding more disk to the underlying LVM device and growing the FS, mounting a new device/FS into a new directory in the tree and manually moving files, or making use of some HSM software. Full filesystems have been a source of problems basically forever. It's best to avoid such situations instead of tickling the dragon. -- Stan From david@fromorbit.com Thu Jun 23 05:36:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5NAa7K6176947 for ; Thu, 23 Jun 2011 05:36:07 -0500 X-ASG-Debug-ID: 1308825364-4cb103450000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0F9321E4EA68 for ; Thu, 23 Jun 2011 03:36:05 -0700 (PDT) Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id rHuRXwy1VyyAYjfp for ; Thu, 23 Jun 2011 03:36:05 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsECABMUA055LChDgWdsb2JhbABSpx0VAQEWJiXJKg6CMYNuBKIS Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail05.adl6.internode.on.net with ESMTP; 23 Jun 2011 20:06:02 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QZhGS-0004nx-37; Thu, 23 Jun 2011 20:36:00 +1000 Date: Thu, 23 Jun 2011 20:35:59 +1000 From: Dave Chinner To: Christoph Hellwig Cc: bpm@sgi.com, aelder@sgi.com, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: only SetPageUptodate if all buffers are uptodate Subject: Re: [PATCH] xfs: only SetPageUptodate if all buffers are uptodate Message-ID: <20110623103559.GZ32466@dastard> References: <20110419114028.7844.10303.stgit@nfs3> <20110420103521.GA20510@infradead.org> <20110420145722.GB29759@sgi.com> <20110420153614.GA11362@infradead.org> <20110623050819.GW32466@dastard> <20110623060900.GX32466@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110623060900.GX32466@dastard> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1308825366 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0202 1.0000 -1.8896 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.89 X-Barracuda-Spam-Status: No, SCORE=-1.89 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66881 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, Jun 23, 2011 at 04:09:00PM +1000, Dave Chinner wrote: > On Thu, Jun 23, 2011 at 03:08:19PM +1000, Dave Chinner wrote: > > On Wed, Apr 20, 2011 at 11:36:14AM -0400, Christoph Hellwig wrote: > > > On Wed, Apr 20, 2011 at 09:57:22AM -0500, bpm@sgi.com wrote: > > > > Wish I did. The test case that discovered this only applies to CXFS. I > > > > would have liked to post a test case for XFS but decided that this has > > > > been on my TODO list for too long already. Looks to me like it has to > > > > be related to the inode size, so you quit probing buffers after the > > > > first. Maybe some discussion will ring some bells for somebody. > > > > > > It would be really good to have one, but the actual patch looks good > > > enough that I'd consider putting it in. I can assumes you ran > > > xfstests with various small blocksize options for both the test > > > and scratch device and it didn't show any regressions? > > > > I've been running this patch for quite some time, but having just > > upgraded to the latest xfstests, this patch is causing fsx failures > > in tests 075 091 112 127 and 231 on 3.0-rc4 on x86_64 with default > > mkfs and mount parameters. fsx passes again with this patch removed > > from my test stack.... > > Seems I spoke too soon - the fsx failures seems to be intermittent, > and it was just chance that my bisect landed on this patch.... I've reproduced the fsx failure with an unmodified, top-of-tree Linus 3.0-rc kernel, so it's time to start the mainline bisect dance again..... Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+7f914c36d454c8ab8d83+2860+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 23 05:53:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_73 autolearn=no version=3.4.0-r929098 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 p5NArKeu177648 for ; Thu, 23 Jun 2011 05:53:20 -0500 X-ASG-Debug-ID: 1308826399-3c0502350000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DB52C28308 for ; Thu, 23 Jun 2011 03:53:19 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id yLEHyMSCC6a26ggY for ; Thu, 23 Jun 2011 03:53:19 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZhXD-0003gx-1W; Thu, 23 Jun 2011 10:53:19 +0000 Date: Thu, 23 Jun 2011 06:53:19 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: duplicate code in dir2 Subject: Re: duplicate code in dir2 Message-ID: <20110623105318.GA11195@infradead.org> References: <4E020912.9020106@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4E020912.9020106@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308826399 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66883 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 > /src/git/linux-2.6/fs/xfs/xfs_dir2_node.c(251) > /src/git/linux-2.6/fs/xfs/xfs_dir2_leaf.c(440) > if (index < be16_to_cpu(leaf->hdr.count)) > memmove(lep + 1, lep, > (be16_to_cpu(leaf->hdr.count) - index) * sizeof(*lep)); > lfloglow = index; > lfloghigh = be16_to_cpu(leaf->hdr.count); > be16_add_cpu(&leaf->hdr.count, 1); > else { This one and the the chunks following it are easily factorable, and I've created a patch. It's 100 lines of common code, just with the order of asssers switched, and one of them reusing the lep pointer on entry, and the other one recalculating it. With the function header and lots of parameters we don't actually remove a whole lot of code, but having this relatively complex piece of code only once sounds like a good idea. > /src/git/linux-2.6/fs/xfs/xfs_dir2_node.c(582) > /src/git/linux-2.6/fs/xfs/xfs_dir2_leaf.c(1349) > for (lep = &leaf->ents[index]; index < be16_to_cpu(leaf->hdr.count) && > be32_to_cpu(lep->hashval) == args->hashval; > lep++, index++) { > if (be32_to_cpu(lep->address) == XFS_DIR2_NULL_DATAPTR) > continue; > newdb = xfs_dir2_dataptr_to_db(mp, be32_to_cpu(lep->address)); > if (newdb != curdb) { > > /src/git/linux-2.6/fs/xfs/xfs_dir2_node.c(442) > /src/git/linux-2.6/fs/xfs/xfs_dir2_leaf.c(1349) > for (lep = &leaf->ents[index]; index < be16_to_cpu(leaf->hdr.count) && > be32_to_cpu(lep->hashval) == args->hashval; > lep++, index++) { > if (be32_to_cpu(lep->address) == XFS_DIR2_NULL_DATAPTR) > continue; > newdb = xfs_dir2_dataptr_to_db(mp, be32_to_cpu(lep->address)); > if (newdb != curdb) { This seems like a relatively common patter, which has even more occurances with minimal variations, but I'm not sure there's an easy way to factor it. I'd prefer to rewrite the loops to something more readable like: for (; index < be16_to_cpu(leaf->hdr.count); index++) { lep = &leaf->ents[index]; if (be32_to_cpu(lep->hashval) != args->hashval) break; if (be32_to_cpu(lep->address) == XFS_DIR2_NULL_DATAPTR) continue; ... } From amit.sahrawat83@gmail.com Thu Jun 23 05:57:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.2 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE,J_CHICKENPOX_24,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p5NAvsf5177856 for ; Thu, 23 Jun 2011 05:57:54 -0500 X-ASG-Debug-ID: 1308826672-3c0002490000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ey0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 285802832F for ; Thu, 23 Jun 2011 03:57:53 -0700 (PDT) Received: from mail-ey0-f181.google.com (mail-ey0-f181.google.com [209.85.215.181]) by cuda.sgi.com with ESMTP id 55ldONZfZmd1nfsl for ; Thu, 23 Jun 2011 03:57:53 -0700 (PDT) Received: by eyh5 with SMTP id 5so587355eyh.26 for ; Thu, 23 Jun 2011 03:57:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=i5NZJhsJFBvlTLnRd0ajrUtUG5/qadxCM0jVdf0/iTg=; b=fkRq/XRmlm7GVeH6dwek4ddlIP3BdN9DswBnyYAJQZU9L6FiN6hEcAodmImNOolWIU dKTPJgLvftvOlWg3sg/Ay5UScjNSDC9my6//GyJJM8GwqiPVKaNtMbkWoT/yFhKA3W0S 07F4ytSYBMoRQiqzrNj7R4gTFAnF3QHBEzVnA= 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=PSpziVEBFl9ILYddZZ+GWTE1tcccqNWbQxzUwB9Rzkwl/PpDIOGRdQZA/XW7WVXSZP 2fcET5pw8RckSfW2lRbtDbCuZioVVYVNxSIw/DBfG/aaEm6dtUV4JegJOFuDB8x4G5zr 5xPM38jHZ/Cm0swWBON/khLF+Peg7VJ9WckSw= MIME-Version: 1.0 Received: by 10.14.11.227 with SMTP id 75mr1324430eex.110.1308826672508; Thu, 23 Jun 2011 03:57:52 -0700 (PDT) Received: by 10.14.37.15 with HTTP; Thu, 23 Jun 2011 03:57:52 -0700 (PDT) In-Reply-To: References: <4E022818.7030406@linux.vnet.ibm.com> <20110623062030.GY32466@dastard> Date: Thu, 23 Jun 2011 16:27:52 +0530 Message-ID: X-ASG-Orig-Subj: Re: XFS Test Case:252 - Shows Wrong Output Subject: Re: XFS Test Case:252 - Shows Wrong Output From: Amit Sahrawat To: Dave Chinner Cc: Allison Henderson , xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=0016364d1f8be3308104a65ef43a X-Barracuda-Connect: mail-ey0-f181.google.com[209.85.215.181] X-Barracuda-Start-Time: 1308826674 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66883 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 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 --0016364d1f8be3308104a65ef43a Content-Type: text/plain; charset=ISO-8859-1 This is linked with new feature.. Add punch support, although the code existed before also, but the 'punch' has been specifically handled through cmd = XFS_IOC_UNRESVP. Also, *fallocate* is moved out from *'xfs_iops.c'* to 'file operations' in *xfs_file.c*, which handles the case for if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) return -EOPNOTSUPP; ... if(mode & FALLOC_FL_PUNCH_HOLE) cmd = XFS_IOC_UNRESVSP; ... Now, for old kernels, how to make sure that this test case does not execute or return meaningful error? without changing the kernel code it will not return error; Since, *FALLOC_FL_KEEP_SIZE *this is true and the command work with XFS_IOC_RESVP. Please suggest. Thanks & Regards, Amit Sahrawat On Thu, Jun 23, 2011 at 12:06 PM, Amit Sahrawat wrote: > Fortunately or Unfortunately I have 2.6.31(x86) and 2.6.35.13(ARM) and both > do not support "fpunch". As per your earlier mail - 2.6.35.y does not > support "fpunch" so I though of trying on 2.6.31.y. > > I will check out for the return errors in this condition and will update > more on this. > > Thanks & Regards, > Amit Sahrawat > > > > On Thu, Jun 23, 2011 at 11:50 AM, Dave Chinner wrote: > >> On Thu, Jun 23, 2011 at 11:21:26AM +0530, Amit Sahrawat wrote: >> > Hi, >> > >> > *PLATFORM -- Linux/i686 localhost 2.6.31.5-127.fc12.i686.PAE* >> ^^^^^^^^^^^ >> > >> > The output as per the command mentioned by you: >> > [root@localhost xfstests-2011-05-11]# xfs_io -f -c "truncate 20k" -c >> "falloc >> > 0 20k" -c "pwrite 0k 8k" -c "fs >> > ync" -c "pwrite 12k 8k" -c "fsync" -c "fpunch 4k 12k" -c "fiemap -v" >> > /media/c/newfile >> > wrote 8192/8192 bytes at offset 0 >> > 8 KiB, 2 ops; 0.0000 sec (434.028 MiB/sec and 111111.1111 ops/sec) >> > command "fs >> > ync" not found >> > wrote 8192/8192 bytes at offset 12288 >> > 8 KiB, 2 ops; 0.0000 sec (977 MiB/sec and 250000.0000 ops/sec) >> > /media/c/newfile: >> > * EXT: FILE-OFFSET BLOCK-RANGE TOTAL FLAGS >> > 0: [0..15]: 176..191 16 0x0 >> > 1: [16..23]: 192..199 8 0x800 >> > 2: [24..39]: 200..215 16 0x1 >> > * >> >> The fpunch command did not punch the range out. >> >> Amit, once again you're testing on a kernel (2.6.31) that does not >> support the punch operation. As I suggested previously, you need to >> find out why the fpunch command is not returning an error as that is >> root cause of your failures. >> >> Cheers, >> >> Dave. >> -- >> Dave Chinner >> david@fromorbit.com >> > > --0016364d1f8be3308104a65ef43a Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
This is linked with new feature.. Add punch support, although the code= existed before also, but the 'punch' has been specifically handled= through
cmd =3D XFS_IOC_UNRESVP.
=A0
Also, <= strong>fallocate is moved out from =A0'xfs_iops.c' to 'file operations' in xfs_file.c, which handles the ca= se for=A0=A0=A0
=A0
if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_H= OLE))
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 return -EOPNOTSUPP;
...
if(mode & FALLOC_FL_PUNCH_HOLE)
=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 cmd =3D XFS_IOC_UNRESVSP;
...
Now, for old kernels, how to make sure that this test ca= se does not execute or return meaningful error? without changing the kernel= code it will not return error;
Since, FALLOC_FL_KEEP_SIZ= E this is true and the command work=A0with XFS_IOC_RESVP.
=A0
Please suggest.
=A0
=A0
Th= anks & Regards,
Amit Sahrawat


=A0
On Thu, Jun 23, 2011 at 12:06 PM, Amit Sahrawat <amit.sahrawa= t83@gmail.com> wrote:
Fortunately or Unfortunately I have 2.6.3= 1(x86) and 2.6.35.13(ARM) and both do not support "fpunch". As pe= r your earlier mail - 2.6.35.y does not support "fpunch" so I tho= ugh of trying on 2.6.31.y.
=A0
I will check out for the return errors in this condition= and will update more on this.
=A0
Thanks & Regard= s,
Amit Sahrawat

=
=A0
On Thu, Jun 23, 2011 at 11:50 AM, Dave Chinner <david@fromorbit.com&= gt; wrote:
On Thu, Jun 23, 2011 at 11:21:26AM +0530, Amit Sahrawat wrote:
> Hi,
>
> *PLATFORM =A0 =A0 =A0-- Linux/i686 localhost 2.6.31.5-127.fc12.i686.PA= E*
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 ^^^^^^^^^^^
>
> The output as per the command mentioned by you:
> [root@localhost xfstests-2011-05-11]# xfs_io -f -c "truncate 20k&= quot; -c "falloc
> 0 20k" -c "pwrite 0k 8k" -c "fs
> ync" -c "pwrite 12k 8k" -c "fsync" -c "f= punch 4k 12k" -c "fiemap -v"
> /media/c/newfile
> wrote 8192/8192 bytes at offset 0
> 8 KiB, 2 ops; 0.0000 sec (434.028 MiB/sec and 111111.1111 ops/sec)
> command "fs
> ync" not found
> wrote 8192/8192 bytes at offset 12288
> 8 KiB, 2 ops; 0.0000 sec (977 MiB/sec and 250000.0000 ops/sec)
> /media/c/newfile:
> * EXT: FILE-OFFSET =A0 =A0 =A0BLOCK-RANGE =A0 =A0 =A0TOTAL FLAGS
> =A0 =A00: [0..15]: =A0 =A0 =A0 =A0 176..191 =A0 =A0 =A0 =A0 =A0 =A016 = =A0 0x0
> =A0 =A01: [16..23]: =A0 =A0 =A0 =A0192..199 =A0 =A0 =A0 =A0 =A0 =A0 8 = 0x800
> =A0 =A02: [24..39]: =A0 =A0 =A0 =A0200..215 =A0 =A0 =A0 =A0 =A0 =A016 = =A0 0x1
> *

The fpunch command did not punch the range out.

Amit, once again you're testing on a kernel (2.6.31) that does not
support the punch operation. As I suggested previously, you need to
find out why the fpunch command is not returning an error as that is
root cause of your failures.

Cheers,

Dave.
--
Dave Chinner
david@fromorbit.co= m


--0016364d1f8be3308104a65ef43a-- From BATV+7f914c36d454c8ab8d83+2860+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 23 06:03:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5NB3Jrc178690 for ; Thu, 23 Jun 2011 06:03:20 -0500 X-ASG-Debug-ID: 1308826998-108101490000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D250215E70EF for ; Thu, 23 Jun 2011 04:03:18 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id bj3QjxPh3SZ0h08A for ; Thu, 23 Jun 2011 04:03:18 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZhgs-0005XX-1E; Thu, 23 Jun 2011 11:03:18 +0000 Date: Thu, 23 Jun 2011 07:03:18 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: duplicate code in dir2 Subject: Re: duplicate code in dir2 Message-ID: <20110623110317.GA21174@infradead.org> References: <4E020912.9020106@sandeen.net> <4E020977.9080000@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4E020977.9080000@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308826998 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66882 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Wed, Jun 22, 2011 at 10:25:43AM -0500, Eric Sandeen wrote: > Another interesting chunk elsewhere: > > /src/git/linux-2.6/fs/xfs/xfs_da_btree.c(782) > /src/git/linux-2.6/fs/xfs/xfs_attr_leaf.c(1542) > *action = 0; > return(0); > if (count == 0) { The da_btree code is a big mess with things duplicated all over. There's a third copy of this in the dir2 code as well. I have started consolidating some of this code a while ago in prepation of adding checksumming to the dir and attr code, but it has bit rotted a bit since and I've not managed to get back to it. From amit.sahrawat83@gmail.com Thu Jun 23 06:30:13 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.2 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE,J_CHICKENPOX_24,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p5NBUCMu183673 for ; Thu, 23 Jun 2011 06:30:12 -0500 X-ASG-Debug-ID: 1308828609-02de031c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ew0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9F56C15E736B for ; Thu, 23 Jun 2011 04:30:10 -0700 (PDT) Received: from mail-ew0-f53.google.com (mail-ew0-f53.google.com [209.85.215.53]) by cuda.sgi.com with ESMTP id L2UK0m6ZPj8hQWLp for ; Thu, 23 Jun 2011 04:30:10 -0700 (PDT) Received: by ewy8 with SMTP id 8so589785ewy.26 for ; Thu, 23 Jun 2011 04:30:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=vWx5aOj3MXCmktRMP2R+kmJ6Salj0MOz/GNcQ4Tqkrk=; b=WtJJ9rzQh9gYa8paHveCRr3IXD/IG/VDsSx0U3tS+hyFioHCtbBPs3ZueGT2Hl3Ida QH/jlbrWcmsA18jKJxzCmhKmBCqbtHFW14LeAGB16umqMwmcAe3TeNZXauWPxhrZK9Qc naS5ARaijnJuis8QKogJE3pddHNXC9oIetIDw= 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=Fpe2Ma9p8ES1HrpUI42P8+lazC8/LbRWof1TbdD+nwXbo0MM9tCZDV201czB2Bmtko yN8+Y6EoZ9gS1oVyU8aAzYxF6IvUbPADsli/FZlwc30v8xjzKr0J1FyUr7voH+QEc2pW ljHILhRbf9c09wqFIv/63l978nYhLiwk/cc5w= MIME-Version: 1.0 Received: by 10.14.9.228 with SMTP id 76mr1263717eet.206.1308828609301; Thu, 23 Jun 2011 04:30:09 -0700 (PDT) Received: by 10.14.37.15 with HTTP; Thu, 23 Jun 2011 04:30:09 -0700 (PDT) In-Reply-To: References: <4E022818.7030406@linux.vnet.ibm.com> <20110623062030.GY32466@dastard> Date: Thu, 23 Jun 2011 17:00:09 +0530 Message-ID: X-ASG-Orig-Subj: Re: XFS Test Case:252 - Shows Wrong Output Subject: Re: XFS Test Case:252 - Shows Wrong Output From: Amit Sahrawat To: Dave Chinner Cc: Allison Henderson , xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=0016364c6ecf544bcb04a65f68f6 X-Barracuda-Connect: mail-ew0-f53.google.com[209.85.215.53] X-Barracuda-Start-Time: 1308828611 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66884 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 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 --0016364c6ecf544bcb04a65f68f6 Content-Type: text/plain; charset=ISO-8859-1 What if we modify this *_require_xfs_io_falloc_punch()? T*o check whether "Hole" is created or not? This seems valid point for checking punch Support. Thanks & Regards, Amit Sahrawat On Thu, Jun 23, 2011 at 4:27 PM, Amit Sahrawat wrote: > This is linked with new feature.. Add punch support, although the code > existed before also, but the 'punch' has been specifically handled through > cmd = XFS_IOC_UNRESVP. > > Also, *fallocate* is moved out from *'xfs_iops.c'* to 'file operations' > in *xfs_file.c*, which handles the case for > > if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) > return -EOPNOTSUPP; > ... > if(mode & FALLOC_FL_PUNCH_HOLE) > cmd = XFS_IOC_UNRESVSP; > ... > Now, for old kernels, how to make sure that this test case does not execute > or return meaningful error? without changing the kernel code it will not > return error; > Since, *FALLOC_FL_KEEP_SIZE *this is true and the command work with > XFS_IOC_RESVP. > > Please suggest. > > > Thanks & Regards, > Amit Sahrawat > > > > On Thu, Jun 23, 2011 at 12:06 PM, Amit Sahrawat > wrote: > >> Fortunately or Unfortunately I have 2.6.31(x86) and 2.6.35.13(ARM) and >> both do not support "fpunch". As per your earlier mail - 2.6.35.y does not >> support "fpunch" so I though of trying on 2.6.31.y. >> >> I will check out for the return errors in this condition and will update >> more on this. >> >> Thanks & Regards, >> Amit Sahrawat >> >> >> >> On Thu, Jun 23, 2011 at 11:50 AM, Dave Chinner wrote: >> >>> On Thu, Jun 23, 2011 at 11:21:26AM +0530, Amit Sahrawat wrote: >>> > Hi, >>> > >>> > *PLATFORM -- Linux/i686 localhost 2.6.31.5-127.fc12.i686.PAE* >>> ^^^^^^^^^^^ >>> > >>> > The output as per the command mentioned by you: >>> > [root@localhost xfstests-2011-05-11]# xfs_io -f -c "truncate 20k" -c >>> "falloc >>> > 0 20k" -c "pwrite 0k 8k" -c "fs >>> > ync" -c "pwrite 12k 8k" -c "fsync" -c "fpunch 4k 12k" -c "fiemap -v" >>> > /media/c/newfile >>> > wrote 8192/8192 bytes at offset 0 >>> > 8 KiB, 2 ops; 0.0000 sec (434.028 MiB/sec and 111111.1111 ops/sec) >>> > command "fs >>> > ync" not found >>> > wrote 8192/8192 bytes at offset 12288 >>> > 8 KiB, 2 ops; 0.0000 sec (977 MiB/sec and 250000.0000 ops/sec) >>> > /media/c/newfile: >>> > * EXT: FILE-OFFSET BLOCK-RANGE TOTAL FLAGS >>> > 0: [0..15]: 176..191 16 0x0 >>> > 1: [16..23]: 192..199 8 0x800 >>> > 2: [24..39]: 200..215 16 0x1 >>> > * >>> >>> The fpunch command did not punch the range out. >>> >>> Amit, once again you're testing on a kernel (2.6.31) that does not >>> support the punch operation. As I suggested previously, you need to >>> find out why the fpunch command is not returning an error as that is >>> root cause of your failures. >>> >>> Cheers, >>> >>> Dave. >>> -- >>> Dave Chinner >>> david@fromorbit.com >>> >> >> > --0016364c6ecf544bcb04a65f68f6 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
What if we modify this _require_xfs_io_falloc_punch()? To check whether "Hole" is created or not? This seems valid poi= nt for checking punch Support.
=A0
Thanks & Regards= ,
Amit Sahrawat


=A0
On= Thu, Jun 23, 2011 at 4:27 PM, Amit Sahrawat <amit.sahrawat83@gmail.com> wrote:
This is linked with new feature.. Add pun= ch support, although the code existed before also, but the 'punch' = has been specifically handled through
cmd =3D XFS_IOC_UNRESVP.
=A0
Also, falloca= te is moved out from =A0'xfs_iops.c' to 'file= operations' in xfs_file.c, which handles the case for=A0=A0= =A0
=A0
if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_H= OLE))
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 return -EOPNOTSUPP;
...
if(mode & FALLOC_FL_PUNCH_HOLE)
=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 cmd =3D XFS_IOC_UNRESVSP;
...
Now, for old kernels, how to make sure that this test ca= se does not execute or return meaningful error? without changing the kernel= code it will not return error;
Since, FALLOC_FL_KEEP_SIZ= E this is true and the command work=A0with XFS_IOC_RESVP.
=A0
Please suggest.
=A0
=A0
Th= anks & Regards,
Amit Sahrawat


=A0
On Thu, Jun 23, 20= 11 at 12:06 PM, Amit Sahrawat <amit.sahrawat83@gmail.com> wrote:
Fortunately or Unfortunately I have 2.6.3= 1(x86) and 2.6.35.13(ARM) and both do not support "fpunch". As pe= r your earlier mail - 2.6.35.y does not support "fpunch" so I tho= ugh of trying on 2.6.31.y.
=A0
I will check out for the return errors in this condition= and will update more on this.
=A0
Thanks & Regard= s,
Amit Sahrawat


=A0
On Thu, Jun 23, 2011 at 11:50 AM, Dave Chinner <david@fromorbit.com&= gt; wrote:
On Thu, Jun 23, 2011 at 11:21:26AM +0530, Amit Sahrawat wrote:
> Hi,
>
> *PLATFORM =A0 =A0 =A0-- Linux/i686 localhost 2.6.31.5-127.fc12.i686.PA= E*
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 ^^^^^^^^^^^
>
> The output as per the command mentioned by you:
> [root@localhost xfstests-2011-05-11]# xfs_io -f -c "truncate 20k&= quot; -c "falloc
> 0 20k" -c "pwrite 0k 8k" -c "fs
> ync" -c "pwrite 12k 8k" -c "fsync" -c "f= punch 4k 12k" -c "fiemap -v"
> /media/c/newfile
> wrote 8192/8192 bytes at offset 0
> 8 KiB, 2 ops; 0.0000 sec (434.028 MiB/sec and 111111.1111 ops/sec)
> command "fs
> ync" not found
> wrote 8192/8192 bytes at offset 12288
> 8 KiB, 2 ops; 0.0000 sec (977 MiB/sec and 250000.0000 ops/sec)
> /media/c/newfile:
> * EXT: FILE-OFFSET =A0 =A0 =A0BLOCK-RANGE =A0 =A0 =A0TOTAL FLAGS
> =A0 =A00: [0..15]: =A0 =A0 =A0 =A0 176..191 =A0 =A0 =A0 =A0 =A0 =A016 = =A0 0x0
> =A0 =A01: [16..23]: =A0 =A0 =A0 =A0192..199 =A0 =A0 =A0 =A0 =A0 =A0 8 = 0x800
> =A0 =A02: [24..39]: =A0 =A0 =A0 =A0200..215 =A0 =A0 =A0 =A0 =A0 =A016 = =A0 0x1
> *

The fpunch command did not punch the range out.

Amit, once again you're testing on a kernel (2.6.31) that does not
support the punch operation. As I suggested previously, you need to
find out why the fpunch command is not returning an error as that is
root cause of your failures.

Cheers,

Dave.
--
Dave Chinner
david@fromorbit.co= m



--0016364c6ecf544bcb04a65f68f6-- From lopresti@gmail.com Thu Jun 23 09:16:19 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p5NEGI8Q194108 for ; Thu, 23 Jun 2011 09:16:18 -0500 X-ASG-Debug-ID: 1308838577-0c4c004d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1CD59286B6 for ; Thu, 23 Jun 2011 07:16:17 -0700 (PDT) Received: from mail-fx0-f53.google.com (mail-fx0-f53.google.com [209.85.161.53]) by cuda.sgi.com with ESMTP id f5ldiESTt1esHx2p for ; Thu, 23 Jun 2011 07:16:17 -0700 (PDT) Received: by fxm8 with SMTP id 8so1431955fxm.26 for ; Thu, 23 Jun 2011 07:16:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=7rLnN7TEQFvaeW3BQAno0ge1X3w9zCv+hon6Ya10bLk=; b=HJ1wH0fn3EoDdHcB6uW4+8yFP+oWFzZgL+FXit5xKvFsNc5z6NZlvmYrS2p6H/R9MR x/OfXV6ZF6i8kGCcGeYiPosceLzf1z5my+i1Bmz3AhY60pbHyUItojZDw4tAzumdUzUH hVbvz0QOX79G/WZJFE0eamtGtOb3eUWXfjxK0= 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=k/Vkr/Wi3CtbBChU95Swsq8vAOC3s7fHepl3JeLTOimc7bDoSggu0b5xl8v3oj10ii VmCtxpEFBmV/1xmZzgUitNKOYg5cIJ5Y1QpDhlGn8ULuPFL0a8emh38islK6NRwOC7HC vl29Nne2A4nG57apfMa/SF7cVZ+/9vfjOPXFg= MIME-Version: 1.0 Received: by 10.223.65.3 with SMTP id g3mr2705402fai.78.1308838576791; Thu, 23 Jun 2011 07:16:16 -0700 (PDT) Received: by 10.223.92.148 with HTTP; Thu, 23 Jun 2011 07:16:16 -0700 (PDT) In-Reply-To: <4E02EE71.7010300@hardwarefreak.com> References: <4E026C42.2030500@sandeen.net> <20110622232418.GV32466@dastard> <4E02EE71.7010300@hardwarefreak.com> Date: Thu, 23 Jun 2011 07:16:16 -0700 Message-ID: X-ASG-Orig-Subj: Re: xfs_repair: "fatal error -- ran out of disk space!" Subject: Re: xfs_repair: "fatal error -- ran out of disk space!" From: "Patrick J. LoPresti" To: Stan Hoeppner Cc: Dave Chinner , Eric Sandeen , xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-fx0-f53.google.com[209.85.161.53] X-Barracuda-Start-Time: 1308838578 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0202 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66895 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Of course we monitor our file systems. But as I thought I made clear, we were "unaware" the file system was full because df said it still had 399 gigabytes of free space. Granted, this is "only" 7%, but it could just as easily been 30% or 50% or 80% because _the file system was corrupt_. Also, given your "80% rule", I suspect you have never worked in an environment like mine. This file system is one of around 40 of similar size in a single pool. Am I supposed to tell my boss that we need more disk as soon as our free space goes below 40 terabytes? The bottom line is that the file system was full but appeared not to be, and thus xfs_repair bombed out. I realize this is a corner case, but it is a nasty one, and it has nothing to do with my "policy on filesystem space management". But thank you for your input. - Pat On Thu, Jun 23, 2011 at 12:42 AM, Stan Hoeppner wr= ote: > On 6/22/2011 6:41 PM, Patrick J. LoPresti wrote: > >> I guess one question is how xfs_repair should behave in this case. =A0I >> mean, what if the file system had been full, but too corrupt for me to >> delete anything? > > Maybe you should rethink your policy on filesystem space management. > From what you stated the FS in question actually was full. =A0You > apparently were unaware of it until a problem (misbehaving nfsd process) > brought it to your attention. =A0You should be monitoring your FS usage. > Something as simple as logwatch daily summaries can save your bacon here. > > As a general rule, when an FS begins steadily growing past the 80% mark > heading toward 90%, you need to take action, either adding more disk to > the underlying LVM device and growing the FS, mounting a new device/FS > into a new directory in the tree and manually moving files, or making > use of some HSM software. > > Full filesystems have been a source of problems basically forever. =A0It'= s > best to avoid such situations instead of tickling the dragon. > > -- > Stan > From m.b.lankhorst@gmail.com Thu Jun 23 10:08:26 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=unavailable version=3.4.0-r929098 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 p5NF8Qmi196015 for ; Thu, 23 Jun 2011 10:08:26 -0500 X-ASG-Debug-ID: 1308841705-41c2005a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ey0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4497A5203BD; Thu, 23 Jun 2011 08:08:25 -0700 (PDT) Received: from mail-ey0-f181.google.com (mail-ey0-f181.google.com [209.85.215.181]) by cuda.sgi.com with ESMTP id SBGkjLaCRi9Pq3Cm; Thu, 23 Jun 2011 08:08:25 -0700 (PDT) Received: by eyh5 with SMTP id 5so661252eyh.26 for ; Thu, 23 Jun 2011 08:08:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:message-id:date:from:user-agent:mime-version:to :cc:subject:content-type:content-transfer-encoding; bh=wPmciI2L2yEKYL/XMCRURNiI20fYzMpkZzUznLDVUb8=; b=Ou/J9o1BNxP131KUZojkh3Zie/31nlzGW9jAbSAX0gew+mT22UBf/n4z0sRNRvN7An GtM8KjDxJ5TqHCp7W6ip/4IzV3q7hrLfqV6UGisXkxFT3hF5m3kiK7so5Hl7S4P0wtI+ EfEEUSV7aPI9kPBi43r0GPPcQJFtcWMQBNtu0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:cc:subject :content-type:content-transfer-encoding; b=dDxNRMDbxvUJXHVMErSAc17B+BA7HZQVzJF7Yvh9LdjF6/by1Y0iIqdxn9tUCSnwSQ ssVXWvAi1cfbJ8gGujRqPzC8hIhtHqufymJ4+TzSG15galUxRPj3gHQJKbYw3V9XNt05 EwXbww33M6SLfCceRkb5ionTLxOKYAaf7Xmds= Received: by 10.14.0.1 with SMTP id 1mr1575810eea.147.1308841704507; Thu, 23 Jun 2011 08:08:24 -0700 (PDT) Received: from [192.168.2.3] (ip3e839b35.speed.planet.nl [62.131.155.53]) by mx.google.com with ESMTPS id v36sm1342529eea.17.2011.06.23.08.08.23 (version=SSLv3 cipher=OTHER); Thu, 23 Jun 2011 08:08:23 -0700 (PDT) Message-ID: <4E0356E6.30104@gmail.com> Date: Thu, 23 Jun 2011 17:08:22 +0200 From: Maarten Lankhorst User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc15 Thunderbird/3.1.10 MIME-Version: 1.0 To: Alex Elder CC: xfs-masters@oss.sgi.com, xfs@oss.sgi.com, Linux Kernel Mailing List X-ASG-Orig-Subj: [PATCH] xfs: Silence bounds checking compiler warning Subject: [PATCH] xfs: Silence bounds checking compiler warning Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail-ey0-f181.google.com[209.85.215.181] X-Barracuda-Start-Time: 1308841706 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0599 1.0000 -1.6379 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.64 X-Barracuda-Spam-Status: No, SCORE=-1.64 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66899 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean gcc with -Warray-bounds generates a false positive on this since xfs defines the struct with u8 name[1]; to be able to add a tag at the end. Signed-off-by: Maarten Lankhorst --- fs/xfs/xfs_dir2_block.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c index 580d99c..09b4aed 100644 --- a/fs/xfs/xfs_dir2_block.c +++ b/fs/xfs/xfs_dir2_block.c @@ -1148,7 +1148,7 @@ xfs_dir2_sf_to_block( ((char *)block + XFS_DIR2_DATA_DOTDOT_OFFSET); dep->inumber = cpu_to_be64(xfs_dir2_sf_get_inumber(sfp, &sfp->hdr.parent)); dep->namelen = 2; - dep->name[0] = dep->name[1] = '.'; + dep->name[0] = ((__u8 *)dep->name)[1] = '.'; tagp = xfs_dir2_data_entry_tag_p(dep); *tagp = cpu_to_be16((char *)dep - (char *)block); xfs_dir2_data_log_entry(tp, bp, dep); -- 1.7.5.4 From m.b.lankhorst@gmail.com Thu Jun 23 10:33:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=unavailable version=3.4.0-r929098 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 p5NFXtao197435 for ; Thu, 23 Jun 2011 10:33:55 -0500 X-ASG-Debug-ID: 1308843233-66a202450000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ey0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 969BC1E4F793; Thu, 23 Jun 2011 08:33:53 -0700 (PDT) Received: from mail-ey0-f181.google.com (mail-ey0-f181.google.com [209.85.215.181]) by cuda.sgi.com with ESMTP id ADuKlxdCieLkpDOh; Thu, 23 Jun 2011 08:33:53 -0700 (PDT) Received: by eyh5 with SMTP id 5so669366eyh.26 for ; Thu, 23 Jun 2011 08:33:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:message-id:date:from:user-agent:mime-version:to :cc:subject:references:in-reply-to:content-type :content-transfer-encoding; bh=CVyqsBMeGYVItV11UgBHINw8v1CV0jJmb1jAIjDgANM=; b=H0XFQSzW0JzooNOCIXsdW3BErVIfNI1SqOEu1FIAJUDs2RuXz6q62n3kMFXwuz/7jC gCNDb5yvmbTrQCqayFdVVSxm+bUs9kNoWoBXaoP6e+dNXwc4ddIiO+aGk/x+S8khzHj8 4kUd29Q7/3hoiGtEU4WsPHxaa6oTn1i/KCp9A= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; b=rrc3SjlsRf5nAZIJDIbGEDeBZxdaEOvnKi4SCQHSad47uft2Otv7EivUQ1XyzKtREX Uo54SrboCzkQDM/PSn1BeKq8wRyH+wIx/FgIrFNQM30BzFx+oJyPa8iE/IdHVv5+ISCo SPZTJ9FVeLcKYiBb2I+A3EaG7QBgmCqiOZVk4= Received: by 10.14.45.15 with SMTP id o15mr1584845eeb.193.1308843233120; Thu, 23 Jun 2011 08:33:53 -0700 (PDT) Received: from [192.168.2.3] (ip3e839b35.speed.planet.nl [62.131.155.53]) by mx.google.com with ESMTPS id b19sm1355686eec.22.2011.06.23.08.33.51 (version=SSLv3 cipher=OTHER); Thu, 23 Jun 2011 08:33:52 -0700 (PDT) Message-ID: <4E035CDE.5090304@gmail.com> Date: Thu, 23 Jun 2011 17:33:50 +0200 From: Maarten Lankhorst User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc15 Thunderbird/3.1.10 MIME-Version: 1.0 To: Alex Elder CC: xfs-masters@oss.sgi.com, xfs@oss.sgi.com, Linux Kernel Mailing List X-ASG-Orig-Subj: Re: [PATCH] xfs: Silence bounds checking compiler warning Subject: Re: [PATCH] xfs: Silence bounds checking compiler warning References: <4E0356E6.30104@gmail.com> In-Reply-To: <4E0356E6.30104@gmail.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail-ey0-f181.google.com[209.85.215.181] X-Barracuda-Start-Time: 1308843234 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1877 1.0000 -0.8933 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.89 X-Barracuda-Spam-Status: No, SCORE=-0.89 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66901 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 06/23/2011 05:08 PM, Maarten Lankhorst wrote: > gcc with -Warray-bounds generates a false positive on this > since xfs defines the struct with u8 name[1]; to be able to > add a tag at the end. > > Signed-off-by: Maarten Lankhorst > --- > fs/xfs/xfs_dir2_block.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c > index 580d99c..09b4aed 100644 > --- a/fs/xfs/xfs_dir2_block.c > +++ b/fs/xfs/xfs_dir2_block.c > @@ -1148,7 +1148,7 @@ xfs_dir2_sf_to_block( > ((char *)block + XFS_DIR2_DATA_DOTDOT_OFFSET); > dep->inumber = cpu_to_be64(xfs_dir2_sf_get_inumber(sfp, &sfp->hdr.parent)); > dep->namelen = 2; > - dep->name[0] = dep->name[1] = '.'; > + dep->name[0] = ((__u8 *)dep->name)[1] = '.'; > tagp = xfs_dir2_data_entry_tag_p(dep); > *tagp = cpu_to_be16((char *)dep - (char *)block); > xfs_dir2_data_log_entry(tp, bp, dep); Oops, that still gives a warning, I used (u8*) first which works, but it seems the type conversion was what made it shut up. Is there any type I can cast __u8 to safely, or is memset preferred? gcc was too smart and saw through my __u8 cast. ~Maarten From m.b.lankhorst@gmail.com Thu Jun 23 11:55:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=unavailable version=3.4.0-r929098 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 p5NGtXLl200776 for ; Thu, 23 Jun 2011 11:55:33 -0500 X-ASG-Debug-ID: 1308848131-6a03030d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ew0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AA60828892; Thu, 23 Jun 2011 09:55:31 -0700 (PDT) Received: from mail-ew0-f53.google.com (mail-ew0-f53.google.com [209.85.215.53]) by cuda.sgi.com with ESMTP id WZZuVyPRCsnNLB1o; Thu, 23 Jun 2011 09:55:31 -0700 (PDT) Received: by ewy8 with SMTP id 8so688446ewy.26 for ; Thu, 23 Jun 2011 09:55:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:message-id:date:from:user-agent:mime-version:to :cc:subject:content-type:content-transfer-encoding; bh=jnWn4hEjc0j9S4zAIYLJu3/9nVXLzJB4+ZG3dCWHcVg=; b=nvT1q0XQvvhpRJfc9c5z9LpfDWR54+OXwJlqgSYB1t3nuFa0DFTcrRPwRDtIxRNmHK QMy6s34YYlYvqYr1n3kVsRkaTsEn2TVbe55FSewu8GM1vXGwIIYHxM9g2v14V/ggrFCS 5unqKFqmfm3+DJiB+SXFfrM+y4SwXUz0DLz7A= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:cc:subject :content-type:content-transfer-encoding; b=tUB2fA0MoSbzJiWyF4iGjBrjyY3+3L9r3YKjgnzfK4FiukmxRP/ARXIqUr3ShSmPgp 4cb0+rJjScZbOIwrMZYvTB8FLLpuR7CgTZ3WfaNX44fBLhpK0S9SHwnm7aSvz5e4FiQb nEaJq0zZsPXTlN3POj4D3o40i6hc8PQ36FSFM= Received: by 10.14.38.15 with SMTP id z15mr1581959eea.87.1308848131161; Thu, 23 Jun 2011 09:55:31 -0700 (PDT) Received: from [192.168.2.3] (ip3e839b35.speed.planet.nl [62.131.155.53]) by mx.google.com with ESMTPS id r39sm1408100eeb.11.2011.06.23.09.55.29 (version=SSLv3 cipher=OTHER); Thu, 23 Jun 2011 09:55:30 -0700 (PDT) Message-ID: <4E037001.8090306@gmail.com> Date: Thu, 23 Jun 2011 18:55:29 +0200 From: Maarten Lankhorst User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc15 Thunderbird/3.1.10 MIME-Version: 1.0 To: Alex Elder CC: xfs-masters@oss.sgi.com, xfs@oss.sgi.com, Linux Kernel Mailing List X-ASG-Orig-Subj: [PATCH v2] xfs: Silence bounds checking compiler warning Subject: [PATCH v2] xfs: Silence bounds checking compiler warning Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail-ew0-f53.google.com[209.85.215.53] X-Barracuda-Start-Time: 1308848132 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1034 1.0000 -1.3725 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.37 X-Barracuda-Spam-Status: No, SCORE=-1.37 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66907 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean gcc with -Warray-bounds generates a false positive on this since xfs defines the struct with u8 name[1]; to be able to add a tag at the end. Signed-off-by: Maarten Lankhorst --- fs/xfs/xfs_dir2_block.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c index 580d99c..2c5f287 100644 --- a/fs/xfs/xfs_dir2_block.c +++ b/fs/xfs/xfs_dir2_block.c @@ -1148,7 +1148,7 @@ xfs_dir2_sf_to_block( ((char *)block + XFS_DIR2_DATA_DOTDOT_OFFSET); dep->inumber = cpu_to_be64(xfs_dir2_sf_get_inumber(sfp, &sfp->hdr.parent)); dep->namelen = 2; - dep->name[0] = dep->name[1] = '.'; + memset(dep->name, '.', 2); tagp = xfs_dir2_data_entry_tag_p(dep); *tagp = cpu_to_be16((char *)dep - (char *)block); xfs_dir2_data_log_entry(tp, bp, dep); -- 1.7.5.4 v2: memset looks like the cleanest solution, other options rely on ugly casts From andi@firstfloor.org Thu Jun 23 12:29:00 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5NHT08P202154 for ; Thu, 23 Jun 2011 12:29:00 -0500 X-ASG-Debug-ID: 1308850139-686802ef0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mga02.intel.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DB0A01E4FD10; Thu, 23 Jun 2011 10:28:59 -0700 (PDT) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by cuda.sgi.com with ESMTP id qBFyOlmT6ZeGpnKx; Thu, 23 Jun 2011 10:28:59 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP; 23 Jun 2011 10:28:58 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.65,414,1304319600"; d="scan'208";a="17403532" Received: from tassilo.jf.intel.com ([10.7.201.108]) by orsmga002.jf.intel.com with ESMTP; 23 Jun 2011 10:28:58 -0700 Received: by tassilo.jf.intel.com (Postfix, from userid 501) id 1E173243005; Thu, 23 Jun 2011 10:27:26 -0700 (PDT) From: Andi Kleen To: Maarten Lankhorst Cc: Alex Elder , xfs-masters@oss.sgi.com, Linux Kernel Mailing List , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH v2] xfs: Silence bounds checking compiler warning Subject: Re: [PATCH v2] xfs: Silence bounds checking compiler warning References: <4E037001.8090306__42924.0493024283$1308849791$gmane$org@gmail.com> Date: Thu, 23 Jun 2011 10:27:26 -0700 In-Reply-To: <4E037001.8090306__42924.0493024283$1308849791$gmane$org@gmail.com> (Maarten Lankhorst's message of "Thu, 23 Jun 2011 18:55:29 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: mga02.intel.com[134.134.136.20] X-Barracuda-Start-Time: 1308850139 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 Maarten Lankhorst writes: > gcc with -Warray-bounds generates a false positive on this > since xfs defines the struct with u8 name[1]; to be able to > add a tag at the end. A better way would be to define it as name[0]. Then the compiler would know it's a VLA. You may need to check noone relies on the one byte though. -Andi -- ak@linux.intel.com -- Speaking for myself only From viro@ftp.linux.org.uk Thu Jun 23 12:55:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable version=3.4.0-r929098 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 p5NHtfou203976 for ; Thu, 23 Jun 2011 12:55:41 -0500 X-ASG-Debug-ID: 1308851736-6cde03880000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ZenIV.linux.org.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F14EAAC390E; Thu, 23 Jun 2011 10:55:37 -0700 (PDT) Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id itSYp01suSuuYwhQ; Thu, 23 Jun 2011 10:55:37 -0700 (PDT) Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZo7p-0000Vi-Jw; Thu, 23 Jun 2011 17:55:33 +0000 Date: Thu, 23 Jun 2011 18:55:33 +0100 From: Al Viro To: Andi Kleen Cc: Maarten Lankhorst , Alex Elder , xfs-masters@oss.sgi.com, Linux Kernel Mailing List , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH v2] xfs: Silence bounds checking compiler warning Subject: Re: [PATCH v2] xfs: Silence bounds checking compiler warning Message-ID: <20110623175533.GK11521@ZenIV.linux.org.uk> References: <4E037001.8090306__42924.0493024283$1308849791$gmane$org@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1308851737 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0006 1.0000 -2.0173 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66911 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, Jun 23, 2011 at 10:27:26AM -0700, Andi Kleen wrote: > Maarten Lankhorst writes: > > > gcc with -Warray-bounds generates a false positive on this > > since xfs defines the struct with u8 name[1]; to be able to > > add a tag at the end. > > A better way would be to define it as name[0]. Then the compiler > would know it's a VLA. You may need to check noone relies on > the one byte though. ... and even better is to write in real C and have u8 name[]; in the end of your structure. That's the standard C99 for this kind of thing (see 6.7.2.1p2, p16). Zero-sized array is a gccism predating standard flexible array members and since the standard syntax is accepted by any gcc version that might be recent enough to build the kernel... From BATV+7f914c36d454c8ab8d83+2860+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 23 13:13:26 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable version=3.4.0-r929098 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 p5NIDQp0207291 for ; Thu, 23 Jun 2011 13:13:26 -0500 X-ASG-Debug-ID: 1308852804-5a4300ed0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 58D815214F4; Thu, 23 Jun 2011 11:13:24 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id AKLHBEaObmiJgFcQ; Thu, 23 Jun 2011 11:13:24 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZoOz-00073i-EZ; Thu, 23 Jun 2011 18:13:17 +0000 Date: Thu, 23 Jun 2011 14:13:17 -0400 From: Christoph Hellwig To: Al Viro Cc: Andi Kleen , Maarten Lankhorst , Alex Elder , xfs-masters@oss.sgi.com, Linux Kernel Mailing List , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH v2] xfs: Silence bounds checking compiler warning Subject: Re: [PATCH v2] xfs: Silence bounds checking compiler warning Message-ID: <20110623181317.GA26945@infradead.org> References: <4E037001.8090306__42924.0493024283$1308849791$gmane$org@gmail.com> <20110623175533.GK11521@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110623175533.GK11521@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308852805 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0202 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66911 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Thu, Jun 23, 2011 at 06:55:33PM +0100, Al Viro wrote: > ... and even better is to write in real C and have u8 name[]; in the > end of your structure. That's the standard C99 for this kind of thing > (see 6.7.2.1p2, p16). Zero-sized array is a gccism predating standard > flexible array members and since the standard syntax is accepted by > any gcc version that might be recent enough to build the kernel... The situation is even more nasty - the one sized fake flex-array actually is in the middle of the structure. Besides sizeof-expressions taking the one member array into account only members before the variable sized array are used. I've started a series cleaning up the few structures that were done that way (for whatever reason), but it's pretty intrusive. I don't think papering over these warnings at this point is a good idea. From qiaobubei7003@gmail.com Thu Jun 23 14:25:58 2011 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 p5NJPsb1214267 for ; Thu, 23 Jun 2011 14:25:55 -0500 X-ASG-Debug-ID: 1308857149-7f4a00140000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-iy0-f193.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9E886166FCB2 for ; Thu, 23 Jun 2011 12:25:49 -0700 (PDT) Received: from mail-iy0-f193.google.com (mail-iy0-f193.google.com [209.85.210.193]) by cuda.sgi.com with ESMTP id Fs7eCixutwZ8qgjm for ; Thu, 23 Jun 2011 12:25:49 -0700 (PDT) Received: by iyh42 with SMTP id 42so520419iyh.8 for ; Thu, 23 Jun 2011 12:25:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:reply-to:message-id:from:to:subject:date :mime-version:content-type:x-priority:x-msmail-priority:x-mailer :x-mimeole; bh=ic5xSzpu/eioAG4Wp46XNu56hLrzmqsxg+Svnv7iS7A=; b=lDShuDM7HrzPiweM7lnihKFq/4sa5SS82iO+LJATHxBYSHnqQs4eo7vJJhDrw/lt29 oSPjLRWecTgVBQ9J2o4t3kgVMJnsn8RfOX5BfcYCXtTHzyO9t3L2KEf0MdRS8LfBwQ4A UW+exe0DvY7wcPx7T4P5gaYW+TI+1bNWMcga8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=reply-to:message-id:from:to:subject:date:mime-version:content-type :x-priority:x-msmail-priority:x-mailer:x-mimeole; b=l1g7gt9WZkvMpteI90NUPItzmUevnC8eBUigb38UKAQ1VEzq7XIx1CMeGO85gS4KzA pXqACKMSdbAzAjMr+7kh7EdtjdWh2I+LTzs4AE3dlwajbIkqbPn23VGL5wZkuiyGLhLN H3FLTAkELgWDlJkw9lVzvcY2+h+JdoS2vRFDY= Received: by 10.42.1.78 with SMTP id 14mr2276064icf.23.1308857147126; Thu, 23 Jun 2011 12:25:47 -0700 (PDT) Received: from vim ([110.244.69.59]) by mx.google.com with ESMTPS id vn4sm1852960icb.7.2011.06.23.12.22.54 (version=SSLv3 cipher=OTHER); Thu, 23 Jun 2011 12:25:44 -0700 (PDT) Reply-To: Message-ID: <18018DC6600BBACFE3F69388FA2600F7@vim> From: "=?utf-8?B?5Lya5Yqh57uE?=" To: X-ASG-Orig-Subj: =?utf-8?B?5Y+R5pS55aeU5Z+56K6t5Lit5b+D5YWz5LqO5Li+5Yqe4oCc5Y2B5LqM5LqU5LiT6aG56LWE6YeR55Sz?= =?utf-8?B?5oql4oCd55qE6YCa55+lIDIwMTHlubQ25pyIMjnml6XvvIjph43luobvvIk=?= =?utf-8?B?N+aciDIy5pelIO+8iOilv+Wuie+8ieadqOmdmSDogIHluIguZG9jZw==?= =?utf-8?B?a2x4Y2xxbGs=?= Subject: =?utf-8?B?5Y+R5pS55aeU5Z+56K6t5Lit5b+D5YWz5LqO5Li+5Yqe4oCc5Y2B5LqM5LqU5LiT6aG56LWE6YeR55Sz?= =?utf-8?B?5oql4oCd55qE6YCa55+lIDIwMTHlubQ25pyIMjnml6XvvIjph43luobvvIk=?= =?utf-8?B?N+aciDIy5pelIO+8iOilv+Wuie+8ieadqOmdmSDogIHluIguZG9jZw==?= =?utf-8?B?a2x4Y2xxbGs=?= Date: Fri, 24 Jun 2011 03:23:32 +0800 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_02BB_01EB5FD0.1081AD40" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.5512 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5512 X-Barracuda-Connect: mail-iy0-f193.google.com[209.85.210.193] X-Barracuda-Start-Time: 1308857152 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_02BB_01EB5FD0.1081AD40 Content-Type: multipart/alternative; boundary="----=_NextPart_001_081A_01EB5FD0.1081AD40" ------=_NextPart_001_081A_01EB5FD0.1081AD40 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 ICDlkITljZXkvY3mlLbliLDpgJrnn6XlkI7vvJoNCiAgIOmAn+WwhuaKpeWQjeihqOS8oOWIsOWM l+S6rOS8muWKoee7hO+8iOaWh+S7tuaYr+aJq+aPj+eahCDor7fnlKjpvKDmoIflnKjmlofku7bk uIrlpJrngrnlh7vlh6DkuIvlsLHlj6/ku6XnnIvliLDvvIkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICDmiqUg5ZCN IOeUtSDor53vvJowMTAtNTg1NDY5NzkNCiAgIOaKpSDlkI0g5LygIOecn++8mjAxMC01ODU0Njk4 MA0KICAg6IGU57O75Lq6ICDvvJrmnajpnZkgIOiAgeW4iA0KICAgIA0KICAg5oyH5a6a5oql5ZCN IEVtYWxp77yaZ2pmZ3dweHp4QHZpcC4xODguY29tDQogDQogICDlm73lrrblj5HmlLnlp5Tln7no rq3kuK3lv4PigJzljYHkuozkupTigJ3np5HmioDpobnnm67kuJPpobnotYTph5HnlLPmiqXnoJTo rqjnj63kvJrliqHnu4QNCiAgICAgDQoNCiAgIOazqOaEj+S6i+mhue+8muWQhOWNleS9jeaKpeWQ jeWQjuS4gOWumuimgeaJk+eUteivneWIsOWMl+S6rOS8muWKoee7hOehruiupOaKpeWQjeihqOaY r+WQpuaUtuWIsA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== ------=_NextPart_001_081A_01EB5FD0.1081AD40 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv L0VOIj4NCjxIVE1MPjxIRUFEPg0KPE1FVEEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVu dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxNRVRBIGNvbnRlbnQ9Ik1TSFRNTCA2LjAw LjI5MDAuNjEwNCIgbmFtZT1HRU5FUkFUT1I+PC9IRUFEPg0KPEJPRFk+DQo8UD4mbmJzcDsg5ZCE 5Y2V5L2N5pS25Yiw6YCa55+l5ZCO77yaPC9QPg0KPFA+Jm5ic3A7Jm5ic3A7IOmAn+WwhuaKpeWQ jeihqOS8oOWIsOWMl+S6rOS8muWKoee7hO+8iOaWh+S7tuaYr+aJq+aPj+eahCANCuivt+eUqOm8 oOagh+WcqOaWh+S7tuS4iuWkmueCueWHu+WHoOS4i+WwseWPr+S7peeci+WIsO+8iSZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyANCjwvUD4NCjxQ PiZuYnNwOyZuYnNwOyDmiqUg5ZCNIOeUtSDor53vvJowMTAtNTg1NDY5Nzk8L1A+DQo8UD4mbmJz cDsmbmJzcDsg5oqlIOWQjSDkvKAg55yf77yaMDEwLTU4NTQ2OTgwPC9QPg0KPFA+Jm5ic3A7Jm5i c3A7IOiBlOezu+S6uiZuYnNwOyDvvJrmnajpnZkmbmJzcDsg6ICB5biIPEJSPiZuYnNwOyZuYnNw OyZuYnNwOyA8QlI+Jm5ic3A7Jm5ic3A7IA0K5oyH5a6a5oql5ZCNIEVtYWxp77yaPEEgaHJlZj0i bWFpbHRvOmdqZmd3cHh6eEB2aXAuMTg4LmNvbSI+Z2pmZ3dweHp4QHZpcC4xODguY29tPC9BPjwv UD4NCjxQPiZuYnNwOzxCUj4mbmJzcDsmbmJzcDsgDQrlm73lrrblj5HmlLnlp5Tln7norq3kuK3l v4PigJzljYHkuozkupTigJ3np5HmioDpobnnm67kuJPpobnotYTph5HnlLPmiqXnoJTorqjnj63k vJrliqHnu4Q8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDwvUD4NCjxQPjxCUj4mbmJzcDsm bmJzcDsg5rOo5oSP5LqL6aG577ya5ZCE5Y2V5L2N5oql5ZCN5ZCO5LiA5a6a6KaB5omT55S16K+d 5Yiw5YyX5Lqs5Lya5Yqh57uE56Gu6K6k5oql5ZCN6KGo5piv5ZCm5pS25YiwPC9QPg0KPFA+Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IA0KPEJSPjwvUD48L0JPRFk+PC9IVE1MPg0K ------=_NextPart_001_081A_01EB5FD0.1081AD40-- ------=_NextPart_000_02BB_01EB5FD0.1081AD40 Content-Type: application/msword; name="=?utf-8?B?5Y+R5pS55aeU5Z+56K6t5Lit5b+D5YWz5LqO5Li+5Yqe4oCc5Y2B5LqM5LqU5LiT6aG56LWE6YeR55Sz5oql4oCd55qE6YCa55+lIDIwMTHlub" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?utf-8?B?5Y+R5pS55aeU5Z+56K6t5Lit5b+D5YWz5LqO5Li+5Yqe4oCc5Y2B5LqM5LqU5LiT6aG56LWE6YeR55Sz5oql4oCd55qE6YCa55+lIDIwMT" 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAAYAAAA1wsAAAAAAAAA EAAA2QsAAAEAAAD+////AAAAAL8LAADACwAAwQsAAMILAADDCwAAxAsAAMULAADGCwAAxwsAAMgL AADJCwAAygsAAMsLAADMCwAAzQsAAM4LAADPCwAA0AsAANELAADSCwAA0wsAANQLAADVCwAA1gsA AP////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////s pcEAJ2AJBAAA+FK/AAAAAAAAEAAAAAAABgAA9DsAAA4AYmpiahDTENMAAAAAAAAAAAAAAAAAAAAA AAAECBYAZ0QAAHK5AQByuQEAxwEAAAAAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAA AAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAAKQAAAAAAGQEAAAAAAAAZAQAAGQE AAAAAAAAZAQAAAAAAABkBAAAAAAAAGQEAAAAAAAAZAQAACQAAAAAAAAAAAAAAIgEAAAAAAAArBQA AAAAAACsFAAAAAAAAKwUAABQAAAA/BQAABQAAAAQFQAAzAAAAIgEAAAAAAAAix8AAGoBAADoFQAA AAAAAOgVAAAoAAAAEBYAAAAAAAAQFgAAAAAAABAWAAAAAAAAqhcAAAAAAACqFwAAAAAAAKoXAAAA AAAA/h4AAAIAAAAAHwAAAAAAAAAfAAAAAAAAAB8AAAAAAAAAHwAAAAAAAAAfAAAAAAAAAB8AACQA AAD1IAAAaAIAAF0jAABYAAAAJB8AACEAAAAAAAAAAAAAAAAAAAAAAAAAZAQAAAAAAACqFwAAAAAA AAAAAAAAAAAAAAAAAAAAAACqFwAAAAAAAKoXAAAAAAAAqhcAAAAAAACqFwAAAAAAACQfAAAAAAAA AAAAAAAAAABkBAAAAAAAAGQEAAAAAAAAEBYAAAAAAAAAAAAAAAAAABAWAACaAQAARR8AABYAAADa GwAAAAAAANobAAAAAAAA2hsAAAAAAACqFwAAyAIAAGQEAAAAAAAAEBYAAAAAAABkBAAAAAAAABAW AAAAAAAA/h4AAAAAAAAAAAAAAAAAANobAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAqhcAAAAAAAD+HgAAAAAAAAAAAAAAAAAA2hsAAAAAAAAAAAAA AAAAANobAAAAAAAAZAQAAAAAAABkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2hsAAAAAAAAQFgAAAAAAANwVAAAMAAAAUArYSSMu zAEAAAAAAAAAAKwUAAAAAAAAchoAAIgAAADaGwAAAAAAAAAAAAAAAAAAEhwAAOwCAABbHwAAMAAA AIsfAAAAAAAA2hsAAAAAAAC1IwAAAAAAAPoaAAB8AAAAtSMAAAAAAADaGwAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAALUjAAAAAAAAAAAAAAAAAABkBAAAAAAAANobAAA4AAAAqhcAAAAAAACqFwAAAAAAANob AAAAAAAAqhcAAAAAAACqFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqhcA AAAAAACqFwAAAAAAAKoXAAAAAAAAJB8AAAAAAAAkHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAdhsAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKoXAAAA AAAAqhcAAAAAAACqFwAAAAAAAIsfAAAAAAAAqhcAAAAAAACqFwAAAAAAAKoXAAAAAAAAqhcAAAAA AAAAAAAAAAAAAIgEAAAAAAAAiAQAAAAAAACIBAAAJBAAAKwUAAAAAAAAiAQAAAAAAACIBAAAAAAA AIgEAAAAAAAArBQAAAAAAACIBAAAAAAAAIgEAAAAAAAAiAQAAAAAAABkBAAAAAAAAGQEAAAAAAAA ZAQAAAAAAABkBAAAAAAAAGQEAAAAAAAAZAQAAAAAAAD/////AAAAAAIADAEAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADQAB AA0AAQANAAwARJb2Thr/DQDReYBieZjudhNOeZhEjdGRM3WlYg5Oz345jYSYl3uhewZ0qGYcIEFT jE6UTh0g0XmAYs2RuXANAMSJElIGUpBnFHioi+1zpWINVGiIDQBVU01PDVTweQcABwAHAOaLxn4w V0BXBwAHAK6QIAAWfwcABwAHAFSA+3y6TgcABwA1dSAA3YsHAAcAIE8gAB93BwAHAAcAZltYVNNZ DVQHACdgK1IHAEyAIAChUgcAQGIoV+iQ6JUHADV1IAAgACAA3YsNAAj/K1Q6U/dTCf8HAEUAbQBh AGkAbAAHAEtiIAAgADpnBwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcA BwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAgAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAH AAcABwAHAAcABwAHAAcABwAHAMJTGk8wV7lwBwAgACAAIAChJSAAzZGGXiAAKAA2AC4AMgA5AAn/ IAAgACAAIAAgACAAIAAgAKElIAAgAH+JiVsgAAj/NwAuADIAMgApACAAIAAHAAcAT0+/W4lbkmMH AKElIAAHaPSVIAAgACAAIAAgACAAIAAgACAAIAChJSAAVVP0lSAAIAAgACAAoSUgACAAAAYAAAII AAAECAAABggAAAgIAAAKCAAADAgAAA4IAAAWCAAATggAAGQIAABsCAAAbggAAHIIAAB6CAAAfAgA AH4IAACQCAAAlAgAAJwIAACeCAAApggAAKoIAACyCAAAtAgAALoIAADiCAAA5AgAAPgIAAD8CAAA eAkAAPfy6vLi8tjHsp2Hc2GHc2FNYU1hTWGHc4dNYU1hTSYWaOQx8ABCKgFDShwAS0gAAE9KBQBQ SgUAUUoFAG8oAXBoAAAAAAAjFmjkMfAAQioBQ0ocAEtIAABPSgUAUEoFAFFKBQBwaAAAAAAnFmjk MfAAQIjs/0IqAUNKHABLSAAAT0oFAFBKBQBRSgUAcGgAAAAAKhZo5DHwAECI7P9CKgFDShwAS0gA AE9KBQBQSgUAUUoFAG8oAXBoAAAAAAApFmjkMfAANQiBQIj6/0IqAUNKIABPSgQAUEoEAFFKAwBv KAFwaAAAAAApFmjkMfAANQiBQIj3/0IqAUNKIABPSgQAUEoEAFFKAwBvKAFwaAAAAAAhFmjkMfAA NQiBQioBQ0ocAE9KAwBRSgMAbygBcGgAAAAAEhZo5DHwAENKHABPSgMAUUoDAAAPA2pZCRAAFmjk MfAAVQgBDwNqYGIHABZo5DHwAFUIAQkWaOQx8ABvKAEPA2oAAAAAFmjkMfAAVQgBAB4ABgAABAgA AAgIAAAMCAAADggAABYIAABOCAAAZAgAAG4IAABwCAAA+gAAAAAAAAAAAAAAAPoAAAAAAAAAAAAA AAD6AAAAAAAAAAAAAAAA9QAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAADlAAAAAAAAAAAAAAAA2gAA AAAAAAAAAAAAAMcAAAAAAAAAAAAAAADHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAMkARYk ARmEugEbJmAjJAIvhLQARyQASCQASWYBAAAAYSQBAAoAAAMkARJk0P0AAEckAEgkAGEkAQAKAAAD JAESZET9AABHJABIJABhJAEABAAAEmRE/QAAAAQAAEckAEgkAAAEAAADJAFhJAEACQAGAACOOwAA 8jsAAP39AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 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 AAAAAAAAAAAA7AAAAAAAAAAAAAAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAATAAADJAEWJAEZhLoBGyZgIyQCL4S0AEckAEgkAElmAQAAAGEkAQAGCgkAAAwJAAAOCQAAJwAA AAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAABMAAAMkARYkARmEugEbJmAjJAIvhLQARyQASCQASWYB AAAAYSQBANcAAGtkyOkWABYkARckAUlmAQAAAAXWGAIBAAACAQAAAgEAAAIBAAACAQAAAgEAAAeU awII1p4AB5T/awUwCA8MmBE5GDYdiCOABtcFAAAAAAAAAAAAAAAAAAAAAAAGxQIAAAAAAAAAAAAA AAAAAAAAgAbfAwAAAAAAAAAAAAAAAAAAAACABokFAAAAAAAAAAAAAAAAAAAAAIAGoQYAAAAAAAAA AAAAAAAAAAAAAAb9BAAAAAAAAAAAAAAAAAAAAACABlIGAAAAAAAAAAAAAAAAAAAAAA02YA+UugEQ lLQAE9YwAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAFPYB AAAa1hwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/G9YcAAAA/wAAAP8AAAD/AAAA/wAAAP8A AAD/AAAA/xzWHAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8d1hwAAAD/AAAA/wAAAP8AAAD/ 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 B5T/awUwCA8MmBE5GDYdiCOABtcFAAAAAAAAAAAAAAAAAAAAAAAGxQIAAAAAAAAAAAAAAAAAAAAA gAbfAwAAAAAAAAAAAAAAAAAAAACABokFAAAAAAAAAAAAAAAAAAAAAIAGoQYAAAAAAAAAAAAAAAAA AAAAAAb9BAAAAAAAAAAAAAAAAAAAAACABlIGAAAAAAAAAAAAAAAAAAAAAA02YA+UugEQlLQAE9Yw AAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAFPYBAAAa1hwA AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/G9YcAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA /xzWHAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8d1hwAAAD/AAAA/wAAAP8AAAD/AAAA/wAA AP8AAAD/HpS0ADTWBgABBQMAADTWBgABCgNsAGH2AwAAAAJACQAAQgkAAEQJAABGCQAASAkAAEoJ AABMCQAA7AAAAAAAAAAAAAAAAOwAAAAAAAAAAAAAAADsAAAAAAAAAAAAAAAA7AAAAAAAAAAAAAAA AOwAAAAAAAAAAAAAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAyQB FiQBGYS6ARsmYCMkAi+EtABHJABIJABJZgEAAABhJAEABkwJAABOCQAAUAkAACcAAAAAAAAAAAAA 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 AKViDVQgTyAAIAAfdxr/MAAxADAALQA1ADgANQA0ADYAOQA4ADAADQClYg1UrpAgACAAsXsa/2cA agBmAGcAdwBwAHgAegB4AEAAdgBpAHAALgAxADgAOAAuAGMAbwBtAAcAIAAgACAAIAAgACAAIAAg ACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAANAFVTIABNTyAA fnsgAOB6DQCMTsslAE4ATnReIAAgAAhnIAAgAOVlBwAHAAdZ6Gwa/zEALgD5V62LOY2lYjBSU18p WbBzOlc0f7N+DQAgACAAIAAgACAAIAAyAC4ApWINVA5UAE6aW4GJU2I1dd2LMFIXU6xOGk+hUsR+ bniki6ViDVRoiC9mJlQ2ZTBSBwAHAA0ADQADAA0ADQAEAA0ADQADAA0ADQAEAA0ADQANAA0ADQAN ABMAUABBAEcARQAgACAAFAAVAA0ADQANABMAUABBAEcARQAgACAAFAAtACAANAAgAC0AFQANAA0A DQANAA0ADQANAA0ADQAAAAAAAAAAAAAAAAAMOgAADjoAADA6AABYOgAAgDoAALo6AAD6OgAACjsA AIYAAAAAAAAAAAAAAABzAAAAAAAAAAAAAAAAcwAAAAAAAAAAAAAAAHMAAAAAAAAAAAAAAABzAAAA AAAAAAAAAAAAYAAAAAAAAAAAAAAAAEcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAA EYQwAhJkhP4AABYkARmEugEbJmAjJAIvhLQARyQASCQASWYBAAAAV0TIAGCEMAITAAASZIT+AAAW JAEZhLoBGyZgIyQCL4S0AEckAEgkAElmAQAAABMAABJkcP4AABYkARmEugEbJmAjJAIvhLQARyQA SCQASWYBAAAAAHgAAGtkDvIWABYkARckAUlmAQAAAAXWGAIBAAACAQAAAgEAAAIBAAACAQAAAgEA AAeUaAII1jAAApT/awWII4AG1wUAAAAAAAAAAAAAAAAAAAAAgAYdHgAAAAAAAAAAAAAAAAAAAAAN NmAPlLoBEJS0ABPWMAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/ AgEAABT2AQAAGtYIAAAA/wAAAP8b1ggAAAD/AAAA/xzWCAAAAP8AAAD/HdYIAAAA/wAAAP8elLQA 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 FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRQBigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAoopGOFJ9qAIljAJIqTGKZGcrUnapGFMkHyN9DT88U1ulNsEfKmv4/ty76f61v/ AEI0UuvH/ieXnQfvW6/7xorQk+oRTIz/AKV/wE04UxObkemKyZoXV6UhGB2pMfLRj2qiQIHrzSY/ Kgrmm4xQMeAB3peM9eaYuCOnNOKigQ7qOTSA03GD7U7AJoAdkUuRTQoAxijaByKAHDFGaaMfjRjn PT2oAfSUYFJ06UCFzS03rS0ALRSUCgBaM0hGeKTtzQA6ikwKAOKAFpM5HFHbmkFAC0U0Dk0vXg0D AYxSZpNoGe1G0CgB3HWjIx2pvpkUmOaAH+3SgAUmM0o6UALS0lFAhaKTFGBQAtFIKMUALRSUtABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUjcoR7UtB6UAVoDlasVB EoAwKn7Uhje9BoIoPApDPlTXsf25ef8AXV//AEI0UuvA/wBuXn/XV+/+0aK1IPp8U1SBcA+xp3am Jzcj6GsmaIvJyoNBXNCDauKdTRI0im4FPpCM0wG454p2D3pQOKMd6ADFGOOtApaAGgfL3pwoz2xS 0ANxznpSgUEZpaBBSYpaSgANLTQATS0ALRRRQAdqSlpKAAiig0UAHaj3o+tHagBD60KaWj6UDG8m lxQaOc9aAEoZcnOaXbxS44oAbTh0pMUtABR26UUUCCjFLRQAlLRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABSHpS01s8elADs0UlLQAUUUUAFFFFABRRR70AFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSN90/SlooArwvuFT1VgBUkHsa tDpSGxDTcc0+m0gR8ra7n+27zp/rX/8AQjRRrhH9t3n/AF2f/wBCNFakn08DTEP+lD6GnAZHPWmJ gXQ69KyZoi8lPNNUc0+miWJR0paQ0xADRS0UAFFFFABRRRQAUUUUAFFFFACA8kYpaKKACiiigAoo ooAKKKSgA60DpQaWgBKMUtJQAc4pMUoo70DEwc0tHNHGaBBigUtJQAY5pcUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSHpS0h5oATtSj3pD0pRQAtFFFABRRRQAUUUU AFFFFABRRSEZ70ALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUm759uD0znHFLRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAV4zuYnFWB0qvFne2fU1YpDYU0inUhpMEfKetn/AInN3/11b/0I0Uutqx1m7xn/ AFr/APoRorQk+nhTV/4+RzjinCmL/wAfK59KzZoi8h4p9MTkU+miWFFFFMQUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRTSSCMKTk9u1OoAKKKKACiiigBMUUtFABRRRQAUUUUAJS0UUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUgoooAWik7UtABRRRQ AUUUUAFFFFABRRRQAmMAYpaKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAhjySTU1QxdM5qagApDS0hpMD5U1sZ1q8/67P2/2jRTdb/5DN3/11f8A9CNFaCPqEUwZ NwtPFR5xODWTNEXl7U+okIyKlqkSwooooEFFFFABRRRQAUUUUAFFFFABSHGOaWjGaAEApaQdSPSl oAKKKKACiiigAooooAKKKKACij1ooAKKKKACiiigAooooAKKOtFABRRRQAUUUd6ACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACikpaACmjg4p1IcZoAWiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiig9DQBHGuBUlVrd9 y9vwqzQNhSHrS0h60mI+U9bGNauxj/ls/wD6EaKbrhP9tXf/AF2fvj+I0VoI+ol5Gaj2k3CgVKKj /wCXlM1kzRFmJCJCSMVPSDBFLTRLYUUUZpiCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACikOexpaACiiigAooooAKKKKACiiigAoopMDduwM4xmgBaKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAaoYFtzAgn5cDGB6U6iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooArwDaMY Ax2qxVeM/Mee9WKBsKTvS0lDEfKet8a1ecZ/fP1/3jRRrv8AyG7zkj98/wD6EaKsR9Qio/8Al4Wp FIqM/wDHwtZM0RbjJB5qWolHapaaJkFFFFMQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABQSB1OKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAhjjwxOc81NUcXSpKACk70tFAHynrZ H9tXgI/5bP8A+hGijXuNcvOP+Wz/APoRoqxH1ABxUTnEykcGpRxUTD/SI+O9ZM0RYhbcas1CuN/H WpqaFIKKKKZIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABS UtFACClpM0tABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABSHoaWg9KAIYBhamqKHdt5qWgAooooA+U9dydcvOP+Wz/wDoRop2u4/ty9z/ AM9n/wDQjRViPpw9B3pjn9+n1pwNMZsTpWT2NEXUPOKlqJMA1LTRLCiiimIKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQDk85zS0UAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFB4GaAGR 5280+mRtlafQAUUUUAfKuvf8h29/67P3/wBo0Umv5GuXgx/y2f8A9CNFWtgPpsUw/wCvSnimf8t0 z61iaIuL1qYVDnBFTDpVIli0UUUyQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKRjhSfQUtFAEcJynSpKZEVK/LT6ACiiigD5V1/jXb3P/PZ /wD0I0U7XgW129OCf3z9B/tGiqEfTA4pn/LdakFMP+uUVkaot9cY6ipBnimIBjHNP2jg5NUSx3bi gUUtBIUUUUwCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKQdc5paACig9KTPFA C0U0k5FLmgBaKKaSc8UAOopgPJoAIJ9KAH0U3OaVTkUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRSEkdhQAtFRNncGKkgDpTg+R0NA7D6KQHIBpaBBRVdGlMsgPABwOOvSpFZt+1v0oCxJRTG3Kcg 5HcGlDZOCMGgB1FFRsziUKvQjJzQBJRTSWHYY+tJJ0UepoAfRRRQAUUhYAjNG5efmHHXnpQAtFMR gQfrT6ACiiigAoopM4PPfpQAtFFFABRRSZIHrQAtFMV889jTu9AC0UUjDcMZxQAtFNOVXIJOKZtZ 0yshXPTgHFAEtFISB1paACiikzQAtFNYjgmnUAFFFFABRRSfxn6UALRSDqfrS0AFFFFABRSE4oHH WgBaKKKACiiigAopqnIp1ABRRQTgZNABRSBgehFAIJNAC0UUUAFFFJz3oAWikJpF+UAc0AOooooA KM5pAcjoQaFwFoAWikyDS0AFFFJz6UALRSZwORSb/Y0AOopAcjNLQAUUEZqNgyjKnPsaAJKKagf+ JgfoKdQAUUUUAFFMLbZApBww60457UALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBHDG EQYNSVHF9wVJQAUUUUAfKuv867e/9dn7f7Rop3iD/kPXv/XZ/wD0I0VQj6ZApn/LdakFMI/fpWZq i6o4FPHSmqCBSg4OMUyGL1paKKYgooooAKKKKACiiigAooooAKKKKACiiigApGOBmlooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACijvRQAUUUUAFF FFABSUtJz60AL2oxQOlFACGk/GnVE3XigB+7igHPamZIzRuYHjmgZLSEDrS00+9AhpXGcUqcrk07 NN4DY9aBi4p1NBB4p1AgooooAKKKKACiiigAooooAKKKKACiiigApkoYp8v3h0p9NBLA9iOCKAEU llByQe4pW+4c801S3OADTjkgjHagYRnMan2p1Mjx5YxT6BEYVwzHOc+tCht5JGDj8KayKMkOcj3p yq/BL5/CkMa5cYBwealBJ6io5V+Uc8kinK3Own5h+opgPppByCKdTdvJ560CFYZXBpGXOOaadwHL cZ708jGPrQADdnnGKWiigBD1FBIB56mgjP4UE47GgBmEC5IApyqF6dKSNgy5xSqcsaAHUhIAyaWk AIzliaAG7tzLwdpGc07II4NNLlSBtJFCSBiRg5FADgc/WlooHvQAUmcnApcUmAKAGgBBg/dPrTun NIwzxSZPmbc8YoAf1ooAA6UUANIO3k49aYflVQp4JHQU5D5kOcEZHQ0FQwXPY54OKBjm5HTvS0hz 6Uuc0CCmliFJ2nI7DvTqRmCjJoADhhgimqVx9KFclmGxhjoT3pVxk4GKAFyM4paKKAEyd2D07UgP 7wj2pSMimJ99s5zQA5Bgt7mlH6VEr5aQdcGpQMACgYtNd1TGe5wOKdSbRnPegQAcZ70DJAz1oJI7 cUZ+XNAAD270tJjIH86WgApMHPWggnpS0AIqhVwKWgc0UAFIehpaCMjFACBRjpTQoDnilKtgYbH4 U0B955FADjwOpNOpmHyM4xT6AA0nag9RTZCAvQnkcD60AOPSkBy3tinHPakzgdKAFoo75ooAQ7sj GMd80ZbjgUhx3OKOM/eoAVuFOBTVOAAT16U49OKMZHNAC0UUUAMk6D6in01+g+tOoAKD0oooAjSR mUFkKk9jSsw6Gn0hGRg0AAOR3oyBS0UAFFFIRk5yaAAqCcmmqD83zHGeKUgjncfypAGDexoAcBgd SfrS0c0UAFFFFABRRRQAUHiik6mgBaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooPSgBsYwtOqOIkoM1JQAUUUUAfK3iD H9vXv/XZ/wD0I0U7xBga9ejGf3z/APoRoqhH0yKYf9clPWmH/XJ9azZoi8BxjNOpo9qeKZLCiiim IKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAQ57UtFFACc0tFFABRRRQAUUUUAFFFFABQeaKKACiiigAooooAKQDFLRQAUUUUAFMYHORjFP pMUAN288mnbQO1Iy5pR0oADTSMmn0mOaBgOnSmlcsKfSAYoEJjBp1FFABRRRQAUUUUAFFFFABRRR QAUUUUABOBk0xJA+cA8etOYblI9aSPOwAgggd6AHUYA6CiigBqfxeuadTFVg7c8E0+gBo4JH406k K5IPcUEAjBoAYY48s2Bk9acqgAdaQQorEgYJ6807FACONwHTqOtDIGIbA3DoaUiloAKKKKAGsMjF DkhQQBnI60oAAwOBQw3KRQAtFA6c0UAFFFFADYwQuDnr3p1FFABRRRQAmcH60AcmgjNAGKAFFFIQ 2OCPxpaACkYcUtIBgkkk0ANJzhgOlHWUEDgDrT6bgg8Yx3oAdRRTXUsAAe/P0oABjAC9KX2pQABg dKKACkwB2oGe9LQAUUUdqAGBx8wPG04p45pqJtzk5JOeadQAUUUUAIGB71H5qCcoWAOOB61LgelN MaFt20Z9aAEQDcxGOTzT6QgHtRgA5oAWgkDqaKKAA9KYAPKwfSn4pCoIxQAAYAApaTHTBNLQAUUU UAAooxzRQAUUUUAFJ/GR7UtJjnNAC0UUUAIRnHqKMClooAKa/wB3096dRQAUUUUARkqGYseMd+gp cKq5UAfSnkZGDSbRjAFAAxwpPtQDkA0pGRiigApOc9OKWigCNwzdAODkUF3B/wBWSPapKKAGhstj B+uKdRRQAUjdOmaWkIyMZxQAtFIBiloAKKKQjNACDJJPbtTjnHHWiigBA2fqKWjFFABRRRQAU0gl h2Ap1FABTSCDkDJxTqKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAIoCNgxUtMRNven0AFFFFAHyx4hP/ABP73kj9 8/T/AHjRR4hIGv33Gf3z9f8AeNFaLYR9NLTG/wBcn1p4ppH75OaxZoXVFOFNFOpksKKKKYgooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAopocmRlKEAYw3Y06g AooooAKKKKACiiigAooooAKKKKACiiigAopNw3Yzz6UtABRRRQAUUUUAFFFFABRRRQAUUUUAFJ+F LSZGcUALRSE4oLYGaAFopFORmjNAC0UUUAFFFIWA6mgBaKM8UZoAKKM00MCSBQA6iikBBJA7UALR SZ5paACiikJA60ALRRRQAUUUUAFFFGaACiiigAooo70AFFFFABRRRQAUUUA56UAFFFFABRRRQAUU UUAFFFFABRRR3oAKKKKACiikZtq5oAWiikBz0oAWiiigAopAQehpaACiiigAoopAQSR6UALRRSE4 7UALRRRQAUUUUAFFIDnPtS0AFFFFABRSZ5A70tABRSZzn2paACiiigAooooAKKKKACiikzlscfnQ AtFFFABRRRQAUUUUAFFFFABRRSMcDgZJNAC0UUUAFFFFABRRTXYrjAySaAHUUUUAFFFJkl8cYAoA WiimqSwyaAHUUUUAFFNRiwJOOtKzBFyelAC0UgYN0OaWgAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigCrA7bipbIBq1UEcTK5Y9T1qekNhRRRTEfLHiL/kYL7nH79//QjRR4jz/wAJBfDn/Xv/AOhG iqDU+mlpr/61PrThUbcyp9azZaLwPFO6imgcU4DimSwAxS0CimIKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikY4FCkEdc0AKSAMnpRR1HNJ04oAWkb sc4paa4ytAA31pVzjmmk5C0qknORigYEEnrgUtL3pDQIDnGRTct7U+om2l8EGgAAO/din7+MlSKi 2tGM7yfUVJGwdcg5oGxyncM0tIBgYoOe1AgJx1zSMR+VIXYD/Vsee1OByucH8RQAAjilphCkAkdK UMCcZFADqKKKACiiigApuOadSHrQBGUO7IbjuKaFbOMgipDzxTMgHB60ihwLDsMUiHJNKq8daRVw x5oAeaaXBHXHanYzTWjBHpTEI4Kr96lKhkAPPFNYZQjdnsaCpVQd/bpSGEe/v0qWoI9571Nk496Y g4HPao0P71hmgyMrDK/Keppm4K2SDigCQyEMfQdqEOWNRbgZWHt1pqBw5AY+2ec0hlrnJGeKa5bB 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 QO9PpMckjrQA1c88cUY44NKo+9z1pPLAIwTxQMFO5jznFPqNE2MxyTmpKBAeRTASVwfvdDinFgPr SYPXvQAqjAxTNmeQcUuQwIIII4pqkEgY5B6mgY9NwX5utGxecDFOooEM2tgYpcUq0tAEGwu2fQ8G pVJI96ao+YnPepKBsKTvS0UCEHU0mQO9Opgj+bJ5FADh0prjJXnHNPFNZd2OehzQAjR7xyxpwGAB 6UtFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUHoaKD0oAZHnbyKfTI/uCn0AFFFHegD5a8TYHiTUB0/0iT/0I0Uvigg+J9SOP +XmT/wBDNFWhH0wtMk/1i1IOlMcfvF+tZM0RbUHFPpB0o4zTJFzSHiloNMQUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIc9qWigAooooAKKKKACiiig AooooAKKKKAGbPn3ZPTpT6KKACiiigApoUDGeT606igAooooAKKKKACiiigAooooAKQjJHNLRQAU UUUAIAB0oKqeoFLRQBG0MbDBUYpViRDkCn0UAIBiloooATAoAA6ClooAKYYlL7j3p9FABiiiigAo oooAKKKKACmsoYc/nTqKAGhQMZ5Ip1FFABRRRQA1lDUoAAwKWigBFGB1zS0UUAFFFFABSAYAFLRQ AUUUUABGRikAIABOTS0UAFFFFABRRRQAEZGDSYFLRQAUUUUAFJgUtFACEZGOlBGe5paKACiiigAo oooATAznqaWiigApoUBifWnUUAFFFFABRRRQAUUUUAGMUUUUAFNCD3P1NOooAKQqD1paKAEVQucd TS0UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIVBYN3FLRRQAUUUUAFIVB60tFABRRRQAUUUUAI FAJwOvWloooAKKKKADFFFFAAQDSbRjGKWigAooooAKKKKADFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFIehpaDwM0ARwtuQVJTEII4p9ABRRSd6QHy54nH/FTajn/n5k/wDQzRTvFK/8VRqeMf8A HzJ/6GaK0QH0uOlRyHDr9akFRyj51+tZMtFsOMj0p+eajHfOOKkA70yWLRRRTEFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRQDmgAooooAKKKKACiiigAooooAKKKKACii igAooooAKazBRTqacd6AHA5FFIMYGOlLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUGigAoooo AKQHNLSHpQAd6WjtRQAUUUUAFFIDmgUALRRRQAUUUUAFFFFABRRRQAUUUn40ALRRSE460ALRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUd6KACiiigAooooAKTPsaWkyDxQABsnGDS00HC9 DSsMg0ALRTFUjvkU8H2oATI9RQTTXQN25poBUAbaBktFNY4U4NCqRySTQIdSZxS0hJHagAJ4oyAO TUYL5+6MUoxySp5PSgdhzOFXcTx60oORmm5GcdvpTuAKADPNBbkCo335BB/CgOQBu5agCWimgtwN opemTQIWikzkcUhJGKAHUgOc0c1Gh2u42nJOelAEtFNLcDrzTqACkyM4zzSMARzTZFU4JODkYoAe c9qCeRSMOnNNbO5QGoAkopBnvRkZxQABs9jS0mRnGaWgBM/NilpvBJBHSlGe9AC0UU1nVMbjjNAD VZjO6noAMe9PY4FNBHmHp0pkzHZwp4NAE1FM3jAwDk+1PoAKYr5yCOQaczbaaMBs560AOzQrBugP 4ikcgbSfWnUAFFFBGRg0AGaQHOfrRxQAAOKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAhiBUkdhU1MXqRjFPpAFJ3paTvQwPl/xSM+KNTwD/x9S9v9 s0U7xUD/AMJVqfJ/4+pOn++aK0QH0oKjl++v1qQVHJ99frWTKW5aVQeoqWmgAYNOpiYUUUUxBRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUCigAoooo AKKKKACiiigAoNFFAB2prKCDSnpR2pACjAApaQUtMAooooAKKKKACiiigApO9LRQAUUUUAFFFFAB RRRQAUUUUAFJ29aWigBKWiigAoNFFACKKPxoGcc0YoAPSlpAMDFLQAUUUhGR0oAAaWjtRQAUUUUA FFFHegBBS0mRR3oAWkx82aWkzzQAtFFFABRRRQAUUmecUtACDvS0UmcUALRRRQAUUUUAFFIc4paA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAQEZxS0mBS0AFIuSOa WigAooooAKKKKACiiigApAMUtFABSdqWk6A0AGeATQ33TimLkrjuDzT8cUgAdj7UtM+cN0BWnEZH NMBGPzAU18Y70MMOOfzobgcnNIaBg2OCcU5TkUA8Dmj5geuRTELzn2pspxHmnDPOaThx7UANHy9N xH1oZiFyCacRjp1NJtOMZGKQxw6UuBSA9u4paYhrYGCQaheQbwSOB61YqJwDIAQCPSkMerq65Ugg 0nO3A7U4ADoAKQcMR680xCgYGKGHFHSkbge2aAFzgUi5yCwAJpdo3bu9LQAh7UtR78sEbhqkoAQj IqObhBjG7I61Kaa67lIoAGB4x60YOeQKRRhQSfwoO4MORjtQA+igdOaKAIsYlAyMYqXFRYH2jP8A s1LQAmBwe9LTWOMfKTz2pSM45IxQAtMkXIHHen55x60yQZA+tADcDzeelKwIwu35fagJtIOc+tPY 4H1oGGR1petIV6YpaBDWHy0gVSd2aceB61Fxu4zigY6Rd65645xTwcgGlpqjbkUCHUUUE4GTQBGo HmP8uCD19aeFx0zTSoYZ5GfelYfLndj3oAUUtNXgfWnUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRTPNj87yt48zGdvfFAD6KKKACiiigAooooAKKKKAIkyJG+tS1GinexPrUlA2FHeikxzm kxHy/wCLT/xVmq4P/L1L/wChmineLgf+Et1XB/5epf8A0M0VotgPpRelRy53pgd6kFRzE7lx61kW ty8OgpaRfuilqiAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooATBzQKWigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApOlLRQAUUUUAFFFFADQBk+t OHtTSq7t20bsYzjnFOoAKKKKACiiigAooooAKKKKACkzk0tFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRjFABRRRQAUUUUAFFFFA CHOOOtNjHBOafRQAHpSClooAQjHIHNAIz70tGOc96ACiiigApkg+TPpT6CARg8igBowwzinAYGBR 0ooAOtNfAQ9hTqKAGeYpIAySfagBt+W/D2pwAHYUtACc7valPSiigBo3Y5INBBJB4p1FACc4pGUk gjrTqKAEHA5pGXehB7+lOooAaoOBu7U6iigBrDJHHOadRRQAUgz3paKAGhcH2p1FFABRRRQAxt28 YHbrTgCBycmlooARuBwM0tFFADWzuBwcCg5YgY4606igApjH5e/FPooAQZPJpfWiigCM7nHGV5p4 UDpS0UAJjmjqPSlooARQQMEkkdz3prLubn7op9FACEZoOSOKWigBkgJT5TyOafRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFJgZzgZ9aWigAooooAKKKKACiiigAoooOcHHWgBqEMuQadUUC 7YxzUtABRRRQB8weMQv/AAl+rZz/AMfcv/obUUvjBv8Air9W4/5e5f8A0M0VaEfSgqKUEsv1qUVF JkOv1rJlrcvLwopaQHIFLVEhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUhOBS9qACiiigAooooAKKKKACiigUAFFFHegAoo70UAFFFHfFABRRRQAUU UUAFFFIzBRzQAtFFFABRRnFFABRRSMdozQAtFIc9qCQvU4oAWiiigAopu7JI9KCw2kmgB1FNLYXP WnA5GaACiij8KACimnPY0q52jNAC0UUUAFFFHegAoopqtuzxjBoAdRRRQAUU0k7scYp2eM0AFFND qadQAUUGigAoqOWTYOmaepBGaAFooooAKKKMj1oAKKKM4oAKKKKACiiigAooooAKKKKACiiigAop Mj1paACiiigAooooAKKKKACiiigAooozzjvQAUUU3JxyKAHUU3dzjBp1ABRRRQAUU1gT3wKU/d60 ALRSL90UtABRRRQAUUU1W3CgB1FFFABRRUbqxYFWx7UASUUxGYjDDkdcU4MCcUALRRSNnigBaKKC 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 WvNvh0hfWbxhkqtuA5HQEsMZ9zg/ka9KAAzgAZ60Yf8AhoM5/wB9n8vyRAnmRyiNsGNslT6dOtT4 Gc45paK2PLCsDxtn/hEL/DAYCHJYD+NfWt+sLxjj/hFL7PTCf+hrUVPgZ04L/eaf+JfmeMygNbur c5Ug8+1fQSnKg+orwC4G2KTGSApx6178gIRQeuOa5sJ9o97iTal/29+gopaKK7D5gKKKKACmlSWB zxTqKACvCNWtZLPU7u1kGHjmYEkYyCcg/iCDXu9c14k8G2niCZblZmtboLtaVF3b1GcBh7ZPTBrn xFJ1I6HsZPj4YSq/afDL9DxtVKkqQOeelTKxPHHB7111x8OtahH7mSzuADj75QkevIx+GahbwD4g 25EFsW958D+XpXD7KrfY+qhmeDlG6qL56fmcx8x3buOe39a6bwGZG8WWwHmELHIWKrwBtx83oM4/ HFaMPw31OQATX9pACPm2I0uOnH8Pvz9K7PQ/DWn6BGfssZe4ddslxJgu4znGQMAewxW9GhNSUnoe VmWb4adCVOk+ZvTb/P8AQ2KKKK7z5IKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAjQEM2fWpKYjZZh70+gAooooA+aPGi58Zatz/y9S/8A oZopfGg/4rHVv+vqX/0M0Va2A+jRUc3VfqKkFRzfw/WsykXBgAY6UtNUjj6U6mSFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUgOaAFooooAK5nxnpF7q2mQx2SiS SOYOY9wG4YI6kjpnP4V01IQKmUeZWNaFaVGoqkd0cB4S8K6nY6wl9fIkEUaNtQSBmdmyMHHAAHPX 0rvgARmlB9KWlTgoRsaYrFTxNR1J7+Qm2gjvS0VZzBRRRQAhFeceIvBerXWu3d3YRwSQTFWUPLtI IUAgjHTIzn36cc+kUVFSmpqzOvB4yphJudPrpqc/4T8PyaBprpcPG93O++Ux8quBgKpIBIHqe5PT pXQUUmelUkoqyOepUlVm5zd2xaKKKZAVynj6w+1aGl0kbPLbSAjYhZirEKRwM45BP+7XV0VMoqSs zbDV3Qqxqx6Hl3hnwbe315DdahA1vp6kuY5RteYjopU9F65zycAYwc16jRnnFFTTpqCsjTGYyri6 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 UUARSfK6kL1p6BgPmOadRQAUyQkKCOxp9IQCCD0NADQ+5gAOD3puza3TKmpAABgUtAACCMjpSZAP WlAxSEA9aAEZwKNu45zS7RnOOaWgBhjBXA4oQbQFJyRT6KAGsSBwKjhBLMxzzU1FABULYDAZNTUY z1oAZs+TGefUU7pS0UAIDk0tJgZzS0AIwypHrUccZUc9alooATPaggEYIyKWigA6U1RwadRQAmBn PeloooAKRhlaWjrQAU1kyc06igAooooAKKKKAI5EL9DT1XaoFLRQAh4BpoXOCafRQBGylTlRn2oW UE7TwfSpKYY1LhyBuHegY4daDntS0UCGnd2xUZjZmDHGR0NTUUARorLngD6U/J7ilooATPNLRRQA UUUUANVApz3p1FFAEMhfGADQqFDuGc96mooAjjILNxikDHkAc1LgZooHcBnHPWiiigQUwjMgPYCn 0Y5zQAUUUUAFIy7se1LRQA3YB904+lBB9adRQAUh6ZpaKAEXnk0MMjg4NLRQAm7A5paKKACmuMgf WnUUAIQCMGolfeGT+IdqmpAADnHNAEaxnGT1pVUjrzUlFADHxxmlAPc06igCIqytlT1pQnzAk81J RigdwppQE06igQ0Jgckmm+Xg8GpKKAuNCkH72RThnvRRQAU113ACnUUAMVNvAJxS7fmzTqKACiii gApP4qWigAooooAKKKKACiiigAowPSiigAoxmiigAooooAQop6gUAAUtFABRRRQAUgAByKWigAoo ooATaPSk2L2GPpTqKAEwMYxTXiV42T5gGGCVJBH0I6U+igBAMADnj1paKKADGKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKAIFUfaJD3OP5VPUYA80kHnvUlABRRRSA8B8WceKtT5H/HxJ/wChGil8Wf8AI1an/wBf D9v9o0UxnuYFRXI/dn1qZahuv9UcdaQ0WYs/Z0HJwByalH1qKA5gXPpUqnIpiYtFFHbmgQm4AgZG T0GetLUT28Mk8c7xI0sWfLcqCyZ4OD2zUmD2oAYWA45pwOeKNvzZpRigYtFFFAgpBS0UAFFFFABR RRQAUUUUAFFFFABRRRQAUUUGgBAeaWo+r5Bp2T2FADqKZu5p9ABRQelJmgBaKaxGKAwxQA6ijrRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUGkHSgBaKO9ITigBaKKKACiiigAooppJDAdjQA6iiigAooJwM1H5w54PFAEhOASelIGB6H NIHBXNKpHagBaKKKACik3DOKar/MRmgLD6KazEA4FKp3DNAC0UZooAKKKaScgCgB1FA5ooAKKQnA zSbx6GgB1FNVtwOCKEJK89aAHUUUE4FABRSUgYFiPSgB1FBOKKACiiigAoppJDj0xTqACiiigAop u7nGDSM+MY59RQA+iiigAoooNABRSZoyPWgBaKKKACijmm5OcYoAdRSZ9cUZA70ALRRRQAUU2T7h prk+WCtAElFMRwyg07NAC0Z5xRkCmbv3mPagB9FJkEcGmxcLt9KAH0UUEZGKACio1XaMb/zpfnJA DDjrxQA+ik53YpaACiiigAopAACT60tABRRRQAUA5GR0oJwM0duKACiiigAooooAKKKaQc5B/CgB 1FAooAKKKac7x6YoAdRUaSFpXXbgL39akoAKKKCcDNABRTQ6k4B5pFYBiuT60APopMjOM80tABRR RQAUUUUAFFFFABRSA5JpaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAr+WwumYNwcHFWKhAJuWJxjjFTUAFFFFIDwHxZ/y Nep8f8vD9/8AaNFO8Whf+Eq1Llv+Ph//AEI0UxnuYqK5H7o1IOlMn5jpMaJrUAW6/Spl6DjFRW4x EAe3FTZpiYUgORxS0UCCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACmueKdSMQ BzQBGCDwBTiSqnAJpqsMnA5pc4oGCADk9TUlMzmnAYFAATg0HGRxQQD1pp4ORQIGG3kdPShR3A4p c54NIQQeKBj6KQZ70tAhuTnFOpD1FLQAUUYooAKKKKACiiigAooooAKKKKACiijFABRRRQAhPpS0 UUAFFFFABRRRQAUUdKKACiiigAooooACcdaKKKAEJpMnqKZIpYEilQEIARQMA5xnFIXOeRS5IbpS N0BxQBJnimqpH3m3e+KcDxR3xQIWijHOaQkDqaAELYOMU1mG8A0pYbhxSuMjPpSGBcA9aXdnpTTw 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 KACig0UAFFFAAHSgBCKQZPPFBHzck80g+V8DvQMcO9LRRQIQj5hUe0NuDDipe9IRwfegYwqoUYNO GNvU4pCAUoZeBj1oAcBgYoJI7UtNYkEYHNAgyDximH76kDA+lNV2LMGWpBzjigYrKCQe4oCgEkd6 XhgDwfelGMcUCCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK AIs/vzUtRkDzB61JQAUUUGkwPCPGn/I36l/11/pRVfxvdiPxnqalTxL/AEFFOw9D3RelJN9w0q9K bN9ykMsRk7Fz+lSDNMh/1S/Snj69aBMWiiimIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAMUUUUAFFFFABQelFFADRk8g06iigAo70UUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFJilooAKKKKACjAoooAKQ0tJigBaQ0tFACAYpoxk89OtPpu0ZzQAYB5zSk4P Sk204CgBD0oAwKCAetLQAnakUdT1p1IBgUALRSd6WgAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACigjNFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAgX5i3OfrS0UUAH ejvRRQAUH6UUUAIRnrRjBzS0UAFFFFADWbBHvSjPelooAay/IQKVRlVz1paKACmtwQ1OooAaF+Zm HejoRTqKAEHU0tFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFAELMPPAA6dampmxTJu70+gApCAcUtIaTA+dvH3PjjVOekvp7Cijx+CfHGqZ5xLxk9OBRVAe/ rSTfcNKtJMPkqSixF/ql+lSUyL/Vr9KfTJYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFJSmgAopKWgAooooAKKKKACikJwM0tABRRRQAUUUUAFFFFA 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 UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQBAjn7TIp7Yx+VT1WK4uic9RVmgbCiig0MR87fELH/Cc6nx/GP5CinfEID/ AITrU/8AfX/0EUUxnvq9abL9w05abL9w1IySDb5ceQCSOoqxUECnyIzntU9CEwooopiCiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKp6lcXttaeZYWIvZ9wHlG YRcdzuIPT0rH/tjxQWAHhWEAk9dUTIHv8nXp0z9aaVxpHF/Fa6QaxapLkJbWjShmYqCSSSB74Qdu /Pau/wDCVg2meENIs3m854rSMPJu3bm2gk5wMjJPavHPEL3OveLLtmsIDcXN1DZm3jl3ksjBSu7A O3IbcwGAMkjIr1gat4q2/N4Vtw3tqikdfXZnp7dePehRuOx0lFeR3Xj7xNpXiu+F1bW80SSxQnTI dzsoxn92wALyEt024PyjivWIZfOt45djx70DbJBhlyOhHY0iSDUrm4tLCWa0spL24GBHAjqm4k4G WY4A7k84GcAnisrwroVzpMF5d6nJBNq+ozme7lh3FB2WNC3zbFHAz6ngZrfHTmgsB1oA5a507VfE Hii1lvbdbTQ9MmaWKJpAZbudcBJDt+7GMsQN2Seq4xXVUUUAFIxIUkAsfQd6WkyKAM/Vdf0jQvI/ tXUrWyE5KxG4kCbyOoGfqK4b4g+JdF1bQEsdO1S1ubs3MeYYXVpF4bseV/nj616TmvMfiVdy6jqU Gl2dzautnG1xc2xkAcuR8p5I6Jk4yCd468UhorWHjy38OeBdMs7C3kur2NOQ0L+XGnnbQHZRgM3I XGeR7YPRfaLL4k+GWjgeSxvbaVJGR13G3mGcA9NykbhwQcE/dOQMPw746t/DejaXpeq6ddJbmFng uogrq6BzyVGGyDwQATnBxzVnx9Lp9xpFh4l0jUJVuJpkt4b2wnCq33iC+Pv7cOoUnG5iCD0pg0YH iPwmfCvgyztZ71biWfVGubiUIUXd5BQY5OBhFGDnJY9O3ffDp9/gTTW4A/fDHt5r1wOt+IL7Xfht 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 KRkj6UAIfmOB2pc0KoUYFBUGgAPANLRR0oAKKKKACiiigAooooARhkd/XijcN23PNLSAAdKABxuU gHFN2v3fP4U+igBsY2oBnNOJxRRQA0kUm4Fl96fRgelADVJJJNOpNo5460vSgAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKQkKCWIAHUmloAKKKKACiiigAooooAKKKKAK7gvNyuNp4PrVgcCm bv3mMU+kNhRRRTYj53+Iv/I9al0+8v8A6CKKd8Q8/wDCc6lz/Gvb/ZFFMD3taJfuGkQsSc9M8US/ cNSUOtgSi1aqtasCgUEZA6VZoQpbhRRRTEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAhFIOOtOppHHSgBRS03tSjpQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSAh hkUALRRnnFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGQc 4PSigAooooAKKKKACikBz2/+vS0AFFHWigAooooAKKKKACiiigAooooAKKKKACiiigAoozRQAUUU UAFFFIzBRk5/CgBaKKKACijNGQc89KACiijPNABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBW1CwttUsJrG7 j8y3mXa65xkfUdPqKsKqooVVCqowABgAUtFABRSA5JHPBx0pfwoAKKKKACiiigAooooAgRy0x4xU 9UxMhvGTPIq5QNhRRRQI+eviH/yPOpdfvr/6CKKPiGpPjnUsKT8y9M/3RRTA97FNl+4actJL9w1J QtqpCqRgrj15q1Vaz2lBjORxVmhCe4UUUUxBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFACYoAxS0UAFFFFABRRRQAg70tMDHJ4pwYZxQAtFFFABRRRQAUUUUAI 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 NIOlLRQAmM0H0pRRkZx3oAQZxz1paKKADPNNIJzzgngEdqXHzZzS0ANRSsaqzlyAAWbGT7nHFKMg nPTtS0mecUALRRRQAe1FIFA/Dp7UA8kUALRRRQAEA9aQADgDFLRQAUUUnfpxQAtFFFABRRRQAmBu zjmloooAKKKKACiimuGI+U0AOpG+6aBnAz1paAAHIzRTSCB8p/OlGcc0ALRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUHHeiigCj avvvbldigI+3I78A/wBavVTt02XlydxO584OOPlA4/KrlJDYUUUUxHzz8RCP+E61Lj+Jf/QRRR8R QP8AhOtS4/iX/wBBFFMD3wUS/cNC0kn3DUlEtt/qhzU1VrfJVNpxj7wqzQhMKKKKYgooooAKKKKA CiiigAooooAKKKKACiiigApAqqWKqAWOSQOtKenFICT1GPagBaKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAppXJBp1FACY96Mc5paKAA9Kan3adRQAUiggc9aWigApBnJpaQEEZByKADvS0 UUAI2ccdaNuevNLRQAgGOlGRnFKCD0OaKACkxk59KWigApF6UtFACcmloooAKQDBpaKAGj75p1FF ABTGL5wB+NPooAaqnqetKRmlooAaMjryKXGDxS0UAFGAKKKAGv8AdOKXHrS0UAFFFFACMM8UgQD3 p1FADQu0YB796dRRQAUhyOlLRQADiiiigBpBByBkdxTqKKAE2g8nrS4oooAKQDmlooAKKKKAGFC3 VjTgCOlLRQAnzegpaKKACkx70tFABSAYGAKWigAooooAKQDApaKAAjNIMjg/nS0UAIQcYBxSIu1c dT3NOooAKTmlooAMUUUUAV72VobZnUZPasJpZ7sxiWTIzwo4GfpXRSRiWMo3Q1TttMSC485n3MBg ADAHv1pO5cWkWreLyYEj9Bz9alwBRRTICiiigAooooAKKKKACiiigBCM0BQG3Y59aWigAooooAKA MUUUABGaKKKAGspJBBxilx70tFABSc9qWigAooooAKKKKACiiigAooooAKMc5oooAKKKKACiiigA ooooAKKKKACkxyaWigAooooAKMUUUAFFFFABRRRQAUUUUAGKKKKACiiigAooooAKKKKACiiigAoo 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 PvTqKKAAUUYooAaq7QfrmnUUUAFNVgQSPyp1IFA6CgBAOMnrQcg5HenUUANAIHJyadRRQAhYKMk1 Gz/LuKMRkDCjJ5p/lqSDjpTqAIwgJbB704cDBFKBgn3paACigADpRQAYFFFFACDpS0UUAFIehpaK AEGcnJGO3FBAI5paOtABRRSbRuzjnpmgAByM0tFFADeC547UuMGlAxRQAUZoooAKKKKACiiigApD 2paKACiiigAooooARhuXGcU2NPLQKCSAMDNPooAKCM0UUAFIQCOaWigAooooAaV56mlC4PFLRQAU UUUAFIRkYpaKAADFBGRg0UUAM8vrycelOAwMClooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikyc4xx60tAFSAt9rn3dN3H0w Kt1VQn7S+c1apDYUUUUxHzz8Rf8AketS/wB5f/QRRR8Rx/xXepc90/8AQBRTA97WiT7hoWiT7hqS iS2JMQ6gCp6r2hzFj0qxTQnuFFFFAgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACikZgvWloAKKaD8xHanUAFFNzk4pc0ALRSE0m8ZxQA6ikJxX N3fih9J8UR6ZqsAhs74qunXkYLIz4UNHKf4GLMNvGCO+eKAOha4hSeOB5Y1mkBZIywDMBjJA74yM /UVJXFeNrqU634TsLI+XqNzqe5JsL8sMa7plzkEZUduDjB689rQAUUUhNAC0VyPxFvZ9P8ISahaS yx3Npd2ssbRuVz+/RSGx1UhiCOhBqp4jvvFmkW09/JqmlwWQmhhjVLJ5HG+QJuLFgP4l6KfocYJc djuaK838c6brNl4Qv7mfxbqchQQxCOGKKANukVWZiibzw2flZRxg8Zrrv+Eh8PaVGllc+ILFHgAh P2m9TzCw4+Yk5Lcc55zTat1EbVFFZPiLXIdB0trh8PcysIbSAH5p5m4RB9T37DmkBoTXdtAiPNcQ xq8giUu4AZydoUZ6knjHXNTV5rrekT6P8GtVsri4E1zbhrjLOHaFzIJcFiRlgWzu4PQjtXodlAbS xt7Zp5bhoYljM0py8hAxuY9yep+tAE9FYOqeM/DujOsd5q1r57FcW8UgklIY8NsXLbe5OOgrdBBG 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 npiYUUUUCCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAoooNABSGlooATtTQOadzRQAxkyc0KiqSQoDN1IHJ+tOOe1BOcEdKLDIpLS2muIbiW3heeDd5M rIC0e4YbaeoyODjrUuCc81ClxC8ssccsbvEQJFVgShIyAR2yDmpgcigBQPWkaNXGHVWXIOCM8g5B /AinUUCCobq1t722e2uoIp4HGHilQOrD3B4NTUUAFFFFABUcdvDFLLLHDGkkzBpWVQC5AABY9zgA c9gKkooAKKKKACiiigAoAwKKKAK1/YWuqWM1le28VxbTLtkilXcrD3FTIgQDBJwMdafRQAUwr82R T6KAIYLaC23iGGOLzHMj7FC7mPVjjqT61IyhgQRkHqPWl460tADACoPUmjBOd3en0hoAQqrIVYAq RggjOaEUIgUAAAYAA4Ap1ITigAzzikwT7U6igBMCkKc5FOooAKKKKACk70tFABRRSAhhkEH6UARR WdtBcT3ENvDHPcENNIiANKQMAsRycAADPapqKTIzjPPpQAtFFFABjNQ3NnbXixrc28UwikWWMSIG 2upyrDPQg8g9qmooATPPSjGetR29zBdw+dbTRzRbmXfG4YZUlSMjuCCD6EVLQAUUUUAFFFFABSY5 zS0UAFAoqOeaK2gknmdY4o1Lu7HAVQMkmgBLe2gtUZLeCOFGYuVjQKCxOSeO5PJNS02KWOaJJYnW SN1DI6HIYHoQe4p1ABRRRQAUUUyWaKAKZZEjDMEUuwGWJwAPcntQA6loooAKKKKACiiigAooooAK KKKACiiigAo6UUUAFFFFABSEZpaKACiio1nhed4FlRpo1VnjDDcoOcEjsDg4+hoAeOppT0oooAB0 pKWigAoorm4fGum3Hhy81qGC9aOxlMN3b+TieBgwDblJ42g7jz90H6UAdGeelN2tnrxSQTxXVvHc QSK8MihkdTwwPQ1JQAAUUUUAFFFFABRRSZGcZ5oAWiisjw94k0/xNZz3Ons5WCd4JFkXawZTwceh BDA+hHQ5AANeisnUfEFnpeuaTpVwds2pmUQnIABQAnOfXIHHcitagAooooASjGOlNlljgieWV1jj RSzu5wFA5JJ7CkgnhureO4t5UlhlQPHJGwZXUjIII4II70APBzSmiigA+tFFVZdSs4NRt9PluY0u 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 JAYHnJCleT1NXQdNXxVfX/ifVFWS3vIX0+ytBISIbYNhy2MYkdgSR1QALnINWLeHwTc6lBpNraaV JPbS8QWMIZYXQlsSeWNq4IJ2vj5gDjIFVdF0a31rU/EX2prqCO21eSNI7G6ltkceXG+5vLYZbdIx Jzye2aAKA02fw54wstQ8T+JYJNIs42h0qW8mAmMkgwVkJX5sKD8+QTwTnmvQIlXqw5H6V5r4g8Ca JpMnhu30fR45HudehScznz3aARyO6lpSfkCoW2+2QM4r0xcsx+b9KGBxGufDu31rxlba82otGI54 pmi8kM6vEUKiNyfkU7OeD1PrXfVkT+IdDtNTXTrjV7GO+Z1UWzTL5gLY25XORkkAZ6kgdxWsM55o AWiiigQUUUUAFFFFABmkGe9L3ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigClGR9pcbcc/nV0dKyi7tq0qKhCqqnPrmtR fu0kNi009adTT1oYI8O8e/8AI66j9U/9AWijx8R/wmmofVP/AEAUUwPa1p56Uxaf2pDILfPmv6A1 cqpBgSOM96t0ITCiiimIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooABwKMc5pOaWgAooooAKKKKAEI4wOK8/8AGn9teILRLHTvDWpEWmoL N58skCRy+USRtBlDEFsdQOOa9BooAzdKv7+7EiajpEthNHj5vOSWKQ852Mp3YHH3lQ89OtX5oYri CSCeNJYZFKPG6hlZSMEEHqCKfRQB5hpOn634R8e22j6dDeSeH7hzwY3aGOPYSDv+YIykBcfKGGPU Een0GigAooooAK8lttR8JQ6r4rsfEN/BZQPrX2iCMXcsDM4RUZwVIb7wbOOO/TBr1qsbS/DdppOr 6tqMLO0moyrKyuARGQuCFPXBOWI9SaAR59BP8IQDHFJHfSyZPkyfabuUnnI2NuYHrxiri3Pw7a1a WDwK8+AQkcfhZy0jAZ2jMeM/Uge9enUUAed+DbuHUfH+uXEemTaaq6dZolrPAIZIgd/ysqkg8BSO uBxxyK9C3DaSTgDqTVS20qytdTvdSghCXV8IxcOCfn2AhTjpkA4z9PQValhjmieKWNXidSroy5DA 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 0Du8rndI+4jIJYnkHPTmuja3ia7S4MMZmRGRZSo3KDjIB6gHaM/QelSjOeSMUAcJqvgS+m0+ax0z xFffYJJFeTTLx90TIGDeSsqgSRoQNvBbA7HpUi+MIvDUFvZa94duNFhSM+W9kouLREUE4BjAZcY6 FBj6c12xUFwcDI70jhyPlIFAzz208U+A5PEd5rlhrG/UJrdLaeO3hkYMAcq2xUyWPyrnngAV31q6 yQI43/MoPzqVbkdwQCD7ECmWdnDaI4hhji3tuby41XccAZOBycAD8KnZCTkYBoA4vxBnxvPP4d06 6kg06GXytVvom27gMFreI4+Yno5BAXodxJWuxt7e3treK3too4oYUEcccagKigYAAHQAdqjtbC3s bWK0tLWC2tohhIoECIg68KOBVkDA4oEcV8OkdH8XCWJY5T4iuWdV3EcpGQcnrwQc4ArtOfM9sUyG 1t7ZpmggiiaeTzZSiBTI+ANzY6nAAyewHpUvegCN85wOp4yRkVx//CIalql3I/inXpb+03FYtPsQ 1pbFDj/WBWLSdOjMR9c12bDcpFJtJA3daBlTTrC00y1W2sbW3trdc7Y7eIRoP+AjiuH0qPxa3iPx ONIbSba0Ornzft8Msshb7PFhl2uo2lfLwPc88AH0TAxjHFLQI4eXwv4n1TVrLUNR8RWMM+nTNJax 2Vgwj+ZNrFw0hJJBYdeATzzx2SIyj5wrHHJUYBP0qTbhsr3606gdzzj4i+HbC5uYLuzgmbxJftFa 2fkyFfLKuGNwQCCPLXPzZxyoPUV6NjnNQ/YrUX5vvs8X2sxCHz9o37M52564yc4qbvQIWiiigAoo ooAQZPWloooAQ5oyd3TilooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigCkHH211xyMc+tXR0rNaGQ6k7KdoIBGTkVcSRgd jqQw/WkhsmpO9GeKaDzQB4d4+B/4TXUPqn/oAoo8fD/itdRwO6f+gLRTA9rXtUh6UxaeeBSAgg5n f2PSrnaqVtjzpGPTOKu5z0oQSCiiimIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiikbdgb QDzzk44oAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoopCQOpAoAWij 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 aqhVHso75oA3KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooATb82dx6dO1LSbvSgsAMnigDODs2pSJ2VRj8zWivSstJA+oSEHPA59q1F6UkN i0h60tIaBHhfj3/kdtR/3k/9AWim+Pv+R21L/eT/ANAWimB7gtP7UxafSGQQriZz15q2OlVIv9e4 z3q2KEDCiiimIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApCMgjnn0NLRQA2OMRRJG pYqihQWYscD1J5J9zTqKKACiiigAooooAKKKKACiiigAziikNLQAYpMClooAawJHShSemKdRQAUm KWigAooooAKKKKACiiigAooooAKzdd0O18QaetndPLGqTxXCPEQGV43DqRkEdVweOhNaVFABVe9s bbUbY213Cs0O9H2N03KwZT+DKD+FWKKAAZxzRRRQAUUUUAFFFFABSYHpS0UAIwJHBpMHaB6Uucjj mgkAZJAHvQBheIfCmmeJVt2vodtxbypJFcxBRKm1g23cQcqSOVIwc+uK3ADuJ9adRQAVWuLGG5DE rsm8p4knTAkjV8btrdR0U/VR6VZooApaVpVpounRWFjF5dvFnALFixJyWYnksSSSTySamubO3uzA 08KyGCUTRFhyjgEBh74JH4mp6KACmMX7AU+igDOuNJs7nVrbVZLYG+tY3iilBIIR8bgR36Dr059a u72BxtNSUUAUrrT7TUZrOa6t90tnN58DZIKPtK54PoxGOnNXaKKACqWo6Tp+qiEX1jb3JgcSwmVA xicdGU9VPuOau0UAZulaNp+iW7Q6dYxQK53SMOXlb+87n5nb/aYkmr4GcHGKfRQO5jXPhHw3e3TX N1oGlzztu3PJaIxYscsTkck+p9/U0+68OaTcaPHpH2CKPTUYN9kgHlREA7tpVcAqTyVPB7g1rUUC IVixGsaqqIowqqMAAdhUgQBNtOooAZyg6ZFHU5HUU+igBBnHPWoyWLFQalooATGVwaQj5hTqKAE2 /NmloooAYBh2x39acBjFLRQA3bnORQvTB7U6igAozziijAznvQA18Y5Gagi0+1iv575IVW6uI0jl k7sqZ2g/Tc351ZqN54YpYopJY0klJEaMwBcgZIA78AmgA27OgyPSnjkcClooAY6s2ADgd6cFAGMc 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 YbhuGGxUlGM0UCGuQCM0AqOB3pSoJGR0paAE4xSZBxj1p1IR07YoAWiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKTI3Fc8gZxQBnXMpOrxwgHCw7ye3JwB+hrQT7tU5ok/tFZdo3mPaTjqAc/1/n61dUY FIbFooopsR89fEsgePdQzj+D/wBAFFN+JZ/4r3Ufby//AEBaK0Wwj6BHFOpBS1kURxZ85vSrFV4t 3nN6VYoQMKKKKYgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKM460UAFFFFABRRRQAUUVFczfZrWafy3k8t C+xMbmwM4GSBn6mgCWiqOjavZ69o9rqlhIJLa5jDoeMj1U46MDkEdiCKoWniEyeL7/w7c23kTRQJ dWsgbcLiE/Kx6fKVfIx7g+uADdooooAKQilooAKKwfGWuT+HfCl5qdqLc3MexYVuCdhdnCjIGCeu cDk4rR07UBe6VZ3s1vNZtcxo/kXS7JIy38DDs2TjFAF2jFGaKAEwM5pa53wz4ifV9R17TboRC80q +aIiPoYW+aJjyedvB91PSuioAAcgHGKK5/QPEL6nrOvaRdRxJd6VdBMxZKPC6742yf4tpww7EehF dBQAUUVyfjPxBq/hVINZit4LvQ4iF1CAKRcICcB4znaeSMqR26gEkAHWUhUMMGkjfzIkcoyblB2s MEex96o22u6ZdaN/a6XkSaeNxa4mPlqu1irbt2MYII5x0oA0KK5jw34407xRrOqWFgkhSxYBbjrH OOjFSOODxgnJznFdPQAAY6UUVSn1extdWs9LmnCXl4rtbxlT+8CAFgDjGQDnGc4BPY0AXTzSAADA FLWN4W8R2vivw/b6tar5YkLK8JcM0TqcFSRx7+4IPegDZIzQRkUUUAFFNkDmJxGwVyp2sRkA9jiu b8JeIrvVjqGmatbrBrOlSiG7ESnynyMpIhPZlwdpORnnqKAOmoxUFxe2ln5X2m6hg82VYY/MkC75 G+6gz1Y9h1qegApAoByBg0tUdW1ax0TT2vtSuRbWqOitMwO1SzBVzgcAkgZ6DPagC9RWH4l8RweG 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 R6HBI/E06igkTFB4paKAIgMPmn7cLgnP1pSM0hBoGNwVII5pSMgHofSsa88V6XY+KbPw7cNIt5dx +ZGxUeX/ABYUtn7x2Nge3uM7RXNADI4lBLEcmpCARg01CQSDT6AY0AqMZz70ixhce36VT1rVrfQt GutUugzQ26b2VWVWbnAA3EDJJAAJGScU7R9Vttc0e01S03eRdRLKgcAMuR0OM8jofcUCLtFFGecd 6ACiignFACAAdAKXvRTcjgk4zQAjN6DmmkkcGkLAtilJyADigsApMobPapAoUYAAHXimjqDWf4g1 218N6HcateJNJBBsDJAm5yWYKMDI7sKCWadFQWl3b39lBeWsqzW08ayRSJyGVhkEfganoEIRkEUv QYFFFABRXPeG/Ftj4me4it0mt7m0ZkuLW5QpIhDFfoRkHoeDwcGtmyv7TUrRLuxuobq2kzsmgkDo 2CQcEcHBBH4UAWKKKKAEVdq4zmmvGGHU9acSAMmkLc8DNAxoQq/YgjqacwyMYBFKM0tAXECgDil7 UU0qd4YMcAEFfXp/n8aBAM59qUKASR3paKACoSMkgVNTCMNQNCICPwp7DIpF606gGNVQi7R0p1FF AgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiml1DhCw3kEhc8kDr/MU6gAooooAKKKKACiiigAoopCwBA9aAFopvz+Yv3d m07h3zxj+v6UOzKBtXccgYzjjPJoAp3UGb+Gf5uEZODxyQefy/nVtOlRXH+sj9OalTpSGPopKKBH z18Scf8ACeajk90/9AFFHxKH/Feah0/g6/7goq0B7+tP7U1adUDIozm4bjtVmq8f+vYVYoQMKKKK YgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKbJIkMTyyuqRoCzOxwFA6knsKdXGfFPVn0rwHeeUzrJdEW4Kd dpBZx+KK4z2zQA3Q/GF/4s8TMuiW0S+HbMstzezqS1yxB2iHBwOcMc87Sp4yM9rWJ4S0SDQPDNjZ RW0MMvlI9yYo9nmTFRvc9ySR1PPA9K26ACiiuV8Tt44/tOBPDMWkfYvK/eves4fzMn0/hAwfXr6c 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 LTPL75IPqKcu7HzYz7UEg2Npz6UxApA4BGMg09vumkXlR60AIeJAPakGNpz60nAk3E9O1NjHzMMY zzQMnooooEFFFFABRSE4pRnHNADXJAwOppjx4GR1FOkBO0g4APNEpATnvxQMcpyoNLTUG1APSnUC CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigCtjBA561YAwKhnOHQY61KvQUhjqQ0tIaBHz18Scf8J5qPT+Dt/sCik+JIP/AAnmo890 /wDQBRVoND6BWn0xafUDIh/rzxViq6kfaCPXpVihAwooopiCiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqOe CK6t5beeNZIZUKOjDIZSMEH8KkooA840Pw/4g8GeNPsumwC68MX7klQ/zW2BwzFu44XqSygZ5Xn0 eiigBk0MVzC8M8SSxONro6hlYehB61WstJ03Td32DT7S13DB8iFUyMluw9WJ+pPrVyigBAAM4AGe T70tFFABRRRQBT1a5ubPSLu4srV7q6jiYwwJjMj4+Uc9Occ9q43wN4Lv7HUrjxL4ldZ9cuc7B5m8 QqyrnPGA/G35cgKoAOM576igAooooAK4RPhB4TUgtDeMB0Au3QAc8AKQAMHHGOAK7uigDk9E+HWg eH9Yj1SzS7a6jQqhmuXkVcgAnBPU/wBTXWUUUAcLrnwo8M63qralKLq1ndi8v2aQASMTkt8ytgnP VcV1+madZ6Rp0Nhp8CwWsIxHGucDnJ68nkk1abpQOnFAHOeIfAfh7xRqEN9q9pLNcQxiONluZI9q ht3AVgM57/T0GMmL4S+D01KC9SxuRNbuJI2+2Sja4IKsCGzkYA9+pyea7kjNAAAwKAIJIxKzxsWC spBKsVPPoRyPw5riU+EPhCBpjHZXaiRi3F7L8uVx65ODlvmycn0AA7p9wbI5zT1BA5OT3oGc94a8 G6D4Wmnk0a1khaeNEffM8nC56bicZzzjrXRUgAH40tAhrAFTUSlSuGAzT8OxOeBR5Sn60DKOqx3J 0PUBZRh7s20ggU8Zfado/PFc18JViPw402SJ3dWkuCC7lukzjv06Z+pPrXa8qPWobGys9Os47Swt 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 BFommpEjbljW1QKpyTkDHBySfxrUooAQAKAAAAOABS0UUAZt9oGlalqVnqN9YxXN1ZEm2eUbhEcg 7lB4DZAwcZGODWlRRQAUhGQfel7c0UAR4OT8xqQHNIRmgDFAzN1HQdO1O7hvJ4SL2COSKG6icpLE rqVbaw74PHoeRzUmkaNp+g2AstNtlggDFyASWdj1ZmPLMe5JJq/RQIK5z/hAfCIkSRfDmmq6DCst uoIGMYyPaujopptO6AbHGkMSRRIqRooVVUYCgdAB6U6iikBUutNtby9sruZGM1lI0kDByMFkKHIB weGPWrdFFABUNxZ2t55X2m2hn8mQSxeagbY46MuejDJ5HNTUUAFZOh+GdH8ORzJpVkkBmcvLIWLu 5znl2JYgZOATxWtRQAVm/wDCP6Lulb+yLAtNI0khNsmXdjkseOSSBz7VpUUAIqhFCqAFAwABwBS0 UUAU9K0u00XTYdPsIvKtod2xMk4ySx/UmrlFFADIYYreCOCCNIoo1CJGihVVQMAADoAKfRRQAVRt dG06x1C81C2s4o7y8INxOBl5MDABJ5wOw6Cr1FABRRRQAiqqjCgAegFLRRQA0IqszBQGbGTjk040 UlAABgUtFFABRRRQBS/smxOtDWfs6/2gLf7KJ8nPlbt230xkZq70pscaRRrHGioiAKqqMBQOgAp1 ABRRRQA1kVwA6hgCCMjOCOhqC9sLXUY447uFZUimjnQN/DIjBlYe4IFWaKACiiigAooooAKKKKAC mE89afSUAAHeloooAKKKKACjAzmiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooApXp/ewjGc55x06d6sx/dqG9OBEcdXxn04P8A hU0f3aQ+hJSGlpDTEfPHxI/5HzUfqn/oIop3xJH/ABXmo890/wDQRRVAfQC9adTV607jFQMYP9d7 4qeoEH74n2qegGFFFFMQUlLRQAhpe1JS0AFFFFABRSUCgBaKKO1ABRSdqKAFooooAKKKKACiiigA pKWk70AFLSZpaAE5paKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoxRRQAU0kinUhGaAAHNLTO/tTqBi0UUUCCiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKM0ABOKaWHalPPFJjigYuc9KXFGMUUCCiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikzS0AFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAVbuPd JCxkYBWPyADDZHfjPHtVhAAKhuiAI8n+Lp61LGcigY+kpaSgR88/EgkePNS+qd/9gUUvxI/5HzUf qn/oAopge/rT6YtP7VIyNT/pI+lWKrpnzzx2qxQgYUUUUxBRRRQAUCiigAooooAKSlpKAFooooAT vS0UmKAFooooAKKKKACikJxjg8+gpaACg9KKKAGjjilopaAEpaQUtABRRRQAUUUUAFFAOaKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACmyKXTasjRnIO5cZ69OQevSnUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUw5p9GKBjVPrTqQ9KQcduKAHUUUUCCiiigAooooAKKKKAC iiigAooooAKKKTNAC0U3OTSg0DFpO9LRQIMUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFczqXi2bTtafTU8MeIb3aFIubW2jMDAjPDs46cgjrx9M118a3kgm2+CvFGYSVYt Bbrk+q5mG4e4zQB11Nyc4rl08WX8u7b4L8SDacHctqv85+fwpp8R3z26yjwn4kIbB2hbZXTJAwQZ ge/5fSgZ1lFcrH4m1AqNvg3xIe3ztaDp9Z/auojYvEjMjISASrYyvscEjP0oEOpD0NLRQB5v4ru/ Elh4m8NrJq8a2F5qqxm2toxF8gddquxcu+QTnbhc4BGCK9IrzL4mrjxb4FPODqqjABIz5sBz1x2P Y/hXptAwooooEFFYmrX+v294ItM0GC+tjGCZpNQEJ3HORt2Hpgc57+1UI9S8XFMf8IpZoducPrOe cdMiI/n/ACqlFvX9SuVnVUVzceo+KPKKt4at/My2P+JmNuMfLk+XnJPBGMDGQT0pPtvizYzf8I5p wwPujWG3Mcdv3GOvuOPyo5X/AEw5TpaK537b4qEu3/hHdMIP8Y1Zto4PX9xnOcYwD17dK34jI0KG ZFSUqC6q24Ke4BwMj3wKTViR9FFFIAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAq3hG6JcAkk/UVNH0qtcK32hWJ46D2qynQUhklNpaKAPnn4kgHx5qPAPKf+giik+JOP+E8 1H6p/wCgiiqEfQK0/tTVp2KkZGn/AB8fhViq6f8AHz+FWKYMKKKKBBRRRQAUUUUAFJS0UAFFFFAB RRRQAUUUnegBaKKKACiiigAooooAKKKKAENA6UtFACc0ZpaKACiiigAooooAQADpS0UUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUYoAKKKKAEJxQKCM0uKBhSYpaKBCYpaKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkPSlooAYTjt+NKpOORS 0CgBc0mTj3paKAPOPiZzrHgqTzGVl1uBdgXg5ljz83Y+3fJ9BXoiHjbzx3PWuX8ReBovEt9Bc3mt 6pF9mlE1skC24EDjHKsYi3VQeWPP0GOltYZLe3WKW5luXGcyyhQzc552qBx04HagCaiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKVzLGJl QH5z1FWIzwKr3caG4hcr8+CAcduO9WEGBSGS0hFICaXvQB88fEr/AJHzUfqnb/ZFFJ8Sc/8ACeal 9U/9BFFWhH0GtLgGkWnVAyFVb7VweMVaqsP+PsfSrNCBiEEqQDg+tC5x8xBPsMUtFMQUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAgOaXrRRQAlL1oooAKKKay 5wMkcjofSgB1FFFABRRRQAUUUUAFFFFABRRSAgkgEHHB9qAFooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo/GiigAooooA KKKKACiiigAooooAKKKKADpRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFAFa7Pyp7HNSRnKiq16yfaIVKtvIJDbTjHGRn15H5GrEeMcUhkva k70opO9DA+ePiScePNR47r/6CKKT4kZPj3UsLn5k/wDQBRVrYk+hB1p1MFPqCiL/AJeBz2qzVYH/ AEofSrNCBhRRRTEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAdKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooArXYz5fP8AFUkY4qC6iJuIpd7YGRtzx+VWEGBSGSU3uKWk70AfO3xJ APj3UuM/Mv8A6CKKPiT/AMj7qX+8v/oIoq0SfQi0+mCn1BRCP+Pn8KtVWUZuPwqzQgYUUUUxBRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFGaACik3Clo AKKKKAK10Ruiycc9PWpkIxVS/VTNbNt+cMQD7Y5H6D8hVlF4BpDJaSiigD50+JB/4r3U/wDeX/0E UUvxIwPHup/Nj5l/9BFFWhH0KKXtSCnVAyNB/pH4VYqumPtP/AasU0DCiiigQUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF IOaWgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApKWigBhABBp1GAeoFLQAUU UUAVLs7Z4TtBJyM+lWU5WqOolhPaAA4aQgkdvlJ/pVuLO0UhktJRR0oA+dPiSQPHupdfvL/6CKKX 4kH/AIr3U+P4l/8AQRRVrYk+hBT6YtPqCiNR/pWf9mrFVx/x8j6GrFCBhRRRTEFFFFABRRRQAUUU UAFFJjknJ+lLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFHegAooooAKKKKACiiigApMndjHHrS0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFAFK9bE1uvHJJ9+Mf41Zj+7Ve8x58ORyMkH8qsRnIGKQySkPWiimI+dviT/AMj7qWD3T/0E UUnxJz/wnmpf7y/+giiqA+hFp9MHWn+lQMj/AOXlfoamU5zkEc96hz/pK/Q1Mucc0IGOooopiCii igAooooAKKKKACiiigAooooAKKKKACiiigAooGec0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRnnFFABRRRQAUUUUAFFFFABRRjnNFABRRRQAUUUUAFFFFACHOOCAc9xS0UUAFFFFAB RRRQAUUUUAJjnNLRRQAUUUUAZd5OrXEKlXWTeVAPcYyf6VeiJ2iq98P30GFySSc+lWYgQBSGSCii kNMD52+JPHjzUunVf/QRRS/Er/kfNRzxyv8A6CKKoR9Bg806o0XaME596kFQMZkC4XPpU6nK5qvj NyPoasL90f0oQMWiiimIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKQ/eHWloAKKYJUaV4gcugBYemc4/lT6ACiiigApDyPSkRAhYj+I5NOoAM0AgjIO QaYAdxHb+dPoAKKKKACkByM0tJQAtFFJQAtFFFABRRzn2ooAKKKKACiiigAooooAT5tw4G3HJzzn /OaWiigCOCZZ496rIoyRiRCh4OOhGakoooAKKKKACiiigCjfHFxb4HXdz+VWozxUF9geTk4+bj34 qaM8UhklIaWg0xHzv8SmI8eaj9V7f7IopfiSAfHeofVf/QRRVLYND6AFPpgp3aoGM6zgc8g1YUbV A9KgB/0hT7GrFCBhRRRTEFFFFABRRRmgAooooAKKKM0AFFNKoXDFVLAEAkc4PUfoPypcigBaKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKM0UUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAHf2ooooARc87vWloooAKKKKACiiigAooooAKKKK ACiiigApNvzhvQYFLRQAUUUUAFFFFABRRR1oAKKKKACiiigAooooAKKKKACiiigAooooAqXwDGDJ 5D7gN2OxHTv1/lUsXQVFepuMLYPyv1B9j19v/rVNGOKQ+hJRRRTEfO/xLI/4Tu/5H8P8hRTviSM+ OtQ5P8P/AKCKKpAe/ilzSAZpcVAxgP8ApC/SrVZxuUXVorVlIZomkRuzYIBH1GR+YrQHShAxaKKK YgoopCaAAmjgCjg8UlAC0Z9KKTHcUAJmm5O6nkcUhXnNAxjY7imFiOlStgioT7UAPSfs1TAg9DVM gZzSqzKeDxQFi5RTUbcuadQIKKKKACiiigAooooAKKKKAEpaKSgBaKQc0Z9qAFooooAKKKKACiii gAooooAKKKKACiiigApNw3bcjOM4paKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKCM0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFNVdueScnvTqKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAopOaBQAtFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAUr8gS22VYksQGHQHHf8M/lViPpVbUB++tm3EYYjHY5H/wBarEf3aQyb tSd6XtTaYHz18R/m8c6gc4wQP0opfiNFInje+3Qv8xBBweRRVIlnv60tFFQMybz/AJGbSf8Arncf yjrbFFFA2LRRRTEFFFFADf4qU0UUgEHalPeiigBo6NTx0oooAh7fhTG6iiigCGSnD7ooopgWIehq WiigAooooAKKKKACiiigAooooAKb/EfpRRQAo6UtFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAIvSloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAO9FFFABRRRQAUUUUAFFFFAFPUfuw/9dP6GpYfu iiikMnpKKKBHjvxG58U8/wDPBP5miiigD//Z+aYIAEQAZAAAAAAAAAAIAAAAAAAAAAAAAAAAANAv wkGEA4IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAATwdAAAALIECvAIAAAAAgQA AAAKAABzAAvwMAAAAH8AgACMAQRBAgAAAAWBBgAAAAYBAgAAAH8BIAAwAL8BAAAQAP8BAAAIADIA MgAAAEMAIvEYAAAAvwEAAGAAkAMBAAAAkgMBAAAAvwMAgACAAAAQ8AQAAAABAACAUgAH8DGmCAAF BaHjE8YTbZqM66H7oZJUhi3/AA2mCAABAAAApGIHAAAA0QWgRh3wBaYIAKHjE8YTbZqM66H7oZJU hi3//9j/4AAQSkZJRgABAQEAyADIAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAkiBqQD ASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0 NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKj pKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QA HwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEE BSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZH SElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0 tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2 mCC43tKBAwb5QGjJI/HNXEadAFWCMe6nA/LH9afaZEGD1yanpJDYxPNw28pnttB4/wAajaKVlKkw lewMZI/nU9FMRiy+G9OmbdJpOkOe5ayUmmf8ItpPIOjaNj0+wJ0rdopWAw08N6XCW26LpPIx8lkq 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 QpyeCtOVCpXdnu3zH8zTDQ2G1nTUGWv7YD/rqv8AjULeI9HXrqVr/wB/V/xrPi8GadCSVQPkYxJ8 4x+NS/8ACJadggQx4PYoCKA0Jm8WaEuc6nbcf9NBUf8AwmOgnpqMJ+jClHhq0yreXFvUYB8sdKe3 h2zdSDDASeuYVOf0paiIT4z0IH/j+j/MUL4z0Jz8t8hx7iriaJaomBHGvGPkQL/Kpf7OXbsLAoOg wOKLjII/EmlSgFLyE56fOP8AGpTrenKMm7hH/bQf41Tn8KaXcFmaDYzcloiUOfXiqieB9NhYtFPd 7icnzJN4/UUw0NuPVLSYZjlVx6qcirCzow4rLh0yPTbYooVgzfexzVqMcUrjsi4HU0fKagFOzS3E SkgVDOwMEgIBUqcgjrSk8VFMf3Mg/wBk/wAqNAPmfxPDGniG8VF2r5hwAPeim+Jm/wCKgu8H+M9q K0FY+oLc53j0apqr2pz5nB+93qxUIbCiiimIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikIzx2paAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAoooAwMDpQAUUUUAVr3/AFS/71RxjjNS3n+qX/eq NPu0mMfRS0hpDFzUMv8Aqn/3TUuajlH7tvoaAPmXxLn/AISC8xj/AFh6/WijxKceILwZ/wCWh/nR WhJ9P2gIjfccncasVBb/AHpPrU9QhsKKKKYgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAK17/q0/wB6o4zxT77/AFSf739DUadKRSJR zQaBSnpQAymyf6tvpTiKbIMRt9KkD5l8THHiK9H/AE1bt7mijxMf+Kjvuf8Alq3cetFbIg+nrNfk d9xO9u/txVmobYKsIC9BU1QinuFFFFAgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKAK17/ql/wB6o06VJef6pf8AepiDikykPHSnUg4o xQIQ1HIMI3PapCKjlOEb6VIz5k8Tf8jFe/8AXVu/uaKPEwB8R33f9638zRWpB9Q2oAgBHep6r2jA w4Bzg1YqRsKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooArXn+rX/epqfdp95/qhx/FTE6UhkgoopaAG1HJ/q2+lS1FJ/q2+lIZ8 yeJsHxHfcD/Wt/M0U7xGjN4iv9oGBMw5IHf3orUk+nLNNqt161ZqC3P3xz1qes0NhRRRTEFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ BXu/9Wv+9TU+7Trv/VL/AL1NTpSGSUUCjtQA2o5eY2+lS4qOT/Vt9KQz5j8TMR4jv8f89m7e5opf E3/Ix3/X/XN/OitCD6ft3VmkCnoeanqrYIFgJAGSxJq1UophRRRQIKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKADrRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRQDkZFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAFe7/ANWPrTU+ 7S3ROwf71NTpSH0JRRR2o7UAJUcn3G+lS1FIPkb6UgPmTxOF/wCEkvsj/ls38zRR4n/5GS//AOu7 /wDoRorUk+nrTAiYAcBiKsVBagiHn1NT1minuFFFFMQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIenFLRQBVul+RTuP3qEHFLdfcXOOtIn SkMkFLTe1LQAVFJ9xselSdKjc/K30oA+ZPFAB8S3+R/y2br9TRS+Kf8AkZr/ACSP3zfzNFWSfT9u eJB6Nx+VTVXtm3PJ9RVioRTCiiimIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigCtd/cX60idBS3n+rT/epE+7SH0JKWmindqAEPSoX5 Qn2qU0x/un6UAfMvic/8VLqGRz5zd/eijxV/yM1//wBdm/maKsk+nLZgXkA9asVBBgPIB65qeoRT CiiimIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiikPSgCvdHdGvGPm701OlLdjCp9aROlIfQlHSlpBS0AJUb/dP0qQ1G/Cn6UAfMvirP8A wk+oYyP3zdPqaKd4rH/FT6hx/wAtm/maKsR9Nwj97J+FT1Vts+fLk9hirVQhsKKKKYgooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKTnJ449aWgAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACk NLSGgCvdj5E/3qanAp93/q1/3qanQUh9CQUtIKWgBDUb/dP0qQ1G/wB0/SgZ80eLP+Rp1HHH79v5 mik8WceKNQBB/wBc38zRWiIPpe1z5sme9W+lVLPLPKxGOcVbrNFPcKKKKYgooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAILr/VD601Og pbr/AFY+tJH0FIfQko7UduKWgBppkn3T9KkqKTO049KAPmjxdgeKdQz/AM9m7e9FL4tUt4p1E4J/ fN0Ge5orRE2Ppe2Pzyduas1WtgN71ZrNFPcKKKKYgooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApGZURndgqqMlicAClrL8QaQdd0o6cbg QwSyxm5G0nzYlcM8fBGA4G0nngnigCpYeNfDep6ibC01aCS43FVUhlEhBwdjEAPz02k5wcdDW/XF /ETRbSbwN5FtBbQT2csA07ChBFJvVEWPHCEg7VPQEgnAFdmM4GRg0ALRRRQAUUUUAFFFIzbEZiCc DOAMmgDA1DXp9H8UWNnf+QNM1IeTazqCGjuRzsck4IcfdIA5Ug5yK2b68i0/T7m9uDiG3iaWQ8cK oJPX2FcB4k8QWfijRW02bwt4xaNtk7tb6d5MkLJICADIQCTj+Dd8rHkGqmq63qXxBtoLGx8Ka2uk xXedQW6aG1abYQViwz52lsF8DIC46ngA6L4Yvq0vgDTZdYmeaaVTJFLLI7yvEx3KXLDO7B/LHNdf XL2WreLby+s9/hiCwsmb/SDc3ytIq88qEBGRxx3zjK4zXUU2gCsi+8VeHtMu3tL/AF7TLW5jXc8M 93GjqMZyVJz05rXqCWytJrqK6ltYZLiJWWOVowXQN94A9QDgZ9aQHOy/EnwZEsh/4STT5SgyVgl8 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 8SeEILKWWO5iv5Z7m2mXZPbMlvIDHIh+6csB6HBwSOau+J54ofid4LMjlQsWoOzGQBVURJksP69s Gt6TwvpL+JofEQtVj1OJGQyxgL5uVC5f+8QBgHqBx0put+FdO8Qahp91f+a62fmD7OCBHOHABWUY yy8Z25APcEcUActeRap8Qbhr7TZPsWmaY3naTLPErJe3QBCzEHJ8pc8YHOdwPAFbnhzxrp+rQpaa hc21jrkT/Z7qxkkCkTjhhHn765HBUn65rpo444YkiiRUjRQqoowFA6ADsKyrnwr4dvbqS6utA0ue 4lOZJpbONnc8dSRk9B+QoAvvZWz30V88KG6ijaKOUj5lVipYD6lV/KuO+IkkLX3g61cgu+vQShWH DKqsDz0zl14PJ7dOO5rO1XQtN1qSxlv7VZZLG4W6tnyVaORTkEEdvUdD3oAzJPHegpqFxYLLfTXd sxSaG3024mZCOOdkZ45HPTkVyUniqebxpbeI4fCHil7SLS5bV1/s8rIztJFIMIzDIADDI6npnFeo 0UAckPFPiGS5hEfgXU1tZSn76e7tlZNzYyyB2IABB9evHGa0fFmvf8I7oMl3HE093LIltZwLjMs8 h2ovPucn2BrcqCayt7m4triaJXltmLwsf4GKlSR77WI/E0AZPg7w+vhjwrY6YSGuEjD3Uu4sZZ25 kck8nLE9e2Ksav4i0/Qri0j1EzQQ3O5RdGJjBGwKgLI44Qtu4LYB2nnpnVqG7s7a/tZLW8t4ri3l XbJFKgZWHoQeDQBxXwxkini8VzxOrpL4ju3WRX3q6kJtIPoRjpn613dZHhzw3p3hXSRpumRssHmN IS53OxJ7t1bA2qCcnCgEnFa9ACMCVIU4bHBxnFeZ+BU8UaD40m8P6/qI1Fp9PN9JKLl5QrCQRqQH AKbhuyoyPlGO9em1jeH/AA8miC7nkvLi+v72QS3V1cEbnIGAoAACovOFA4yaANmiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKO/Sg0AFFFFABR RR3oAKKKKACiiigAoooPSgAoopKACloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAguj+7A96anSluv9WD701OlIZL2oooNACVFJ90/ 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 6fqrqitMEDpOqbiqSqRyuXPK4bnhh0qp4I0i+0nQ5v7VSFdUu7ye6uzCSUZ2cgFcnptC46cYyM5r pKKACsLxloj+IfB2q6TAQJ7iA+TkgDzB8yZyDxuAzx0zW7RQBHbo0dtEjhQyoAQvTOO3TiqOt6HZ 6/p/2S8DqUcSwzROUkglAIWRGHRhk4P8xWlRQBzPgzQtT0W31Ntauba71C7vmma6gj2GVNiqhYdj henQdBnqemoooA524svE+p3lzFLqVrpOnBisJsF865kXn5i8i7Yz04Ctj+9Uuh+E9M0K4e8j8+71 KRPLl1C9k824kXJOCx6DnoABwPQVu0UAc/4i8F6F4mTN/Zot0EKR3kKqs0YOScNg+p4ORyateG9I n0HQoNMnv5b4wFlSeXJcpuJUMSTkgEDPtwAOK1qKACua0HRr+z8UeItTvm3rdTRraP5mSYlQHlRw MMSo7/LnqSW6WigDBHh+X/hO28RC8CRHTxZm2SMZkIkLbmb2zgAep5q2mjRr4nm1zzMyPZpaCPy1 +UK7MW3Y3c7gMZA+UdeMadFAHOeK/DTa8NMubWQQahp95HPDcbyrLHuXzVBAP3lHQggkLmujoooA 5fUIZdc8V2NtHZyxWWlTi6ubqWNo/Nl2MI0ib+MDcxY9OgycsB1FFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRQM96KACiiigAooooAKKKKACjGKKKACiiigAooooAKKKKACiiigAooooAKKKKACk IG4UtJxuHrQAuB6UUUUAGKKKKACk45pcZooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiikxznmgBaKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKOBRQAUUUDpQA1vb FKDQfegUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAJQaWigBv 4Uveij2pjG/xUopB97NP70AJS0UUhBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAVr7/ AI9W+o/nUMXQVNf/APHq31H86hi6CkNEw6UtA6UUAIaYeafTGOOlIZ4v8QlP/CWS4xjy17fWij4h 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 VAJJCkgAEgfmR9as0UAeVaH9tk+FnhzwxZpNFd6tC8ck8a5Fvb7iZJDkd1OF9Swwa9Ps7SCwsoLO 1jWK3gjWONFGAqgYAA+lU9G0Kw0GwgtLKI7YIVgSSQ7pPLUkqhbqQNxwD0zWlQBxvgZkfWPGTxo4 U604LPtGWEUYPAJ4yOM9c/hXZVQsNIttOvdSuoA/mahOLibJ43CNE4HbhB75J5q/QB5f4p0vVNL8 b2viCbW7kwXWqWltZ2EE0gOwhBICu7aVO12KhTkck+np+fmK4PAzntWZ/YcEniL+2rmR7ieOPyrS NwNlsCPnKD+83duuABwM51KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKMDOaKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAAA6UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUn0paKAE+tMJ 54NPpj+gHPrQMY2c9akXkVGykkdetPVcCgBcYpeDRjmk7Y6GgBcfnS9qTjriloELmikooAWiiigA ooooAKKKKACiiigAooooAKKKKAK92P3DfhUMXQVNen/Rz9R/OoY/uikUiUUUDpS0CGmmnpTzTGoG jyPx9geJjz1hX+tFHj0A+JmyD/ql/maKpCPXUYfbwvcxk/qKt1QgUjU3J7R8fn/9ar9SgYUUUUxB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR3ooAKKKKAC iiigAooooAKK4u7+Iiw3t1bWvhjxDeC2meEzQ2DNFIVJDbHXIPII5xz+OOo0q8m1DTILu4spbKWV dxt5j86c8A++MH8aALlFFFABRRRQAUUVT1Szm1DTpLa3vp7GZirJcQYLIysGHDAgg4wQeoJHegC5 TDLGJlhMiiVlLKhI3EDAJA9BuH5j1rl/DXiLVbnXNR8Pa5p/l39iqyLeQIy293G3RkDcg9iASAQe a5e78V6dP8QW1pn1OWz02J7KxSxs5ZVvpiD5qhgNp+by1HTLKDuwKAPU6K871f4lajbaOt1aeD9a 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 O5kM2mMJQ728Y+9EEPzMqccLuwCMDkhe50vXdK1rzRpt/BcvDgTRo/zxE5wHT7yHg8EDoavkAkEg ZHSloA4vxr48k8I6lp9omkSXoukdzIZfLVQpGQp2ncwBJI44/TqdLvYdT0q0v7fd5NzCkqbhyFYA jNZfii5vWgg0fToHa61TfD9oKsYrZAuXkcryDjhRxlioyOtaum2EOl6Xaafb7vJtYUhj3YztUADO O/FAFqiiigApMY6UtFACAADiloooAKMe9FFABSHODjr70tFABRRRQAUUUUAFFFFABRRRQAUUUhGQ RQAd6CKWkoAWk70tJjnNABRRnmjHNABgZpaTvS0AFJ3paKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigANMxkU+mscUAVrj/AFTd6ii+6KkuGHlnFRx/ dFIpE1FFHagTGmmMeKe1Rt0oGcF4mz/a3/bMfzNFJ4o/5Cw5I/dj+ZopiO+1B2Fthc5JA49zir6q FRVHQDFZ2qc2m0DJZ1HHb5hzWlSQPYKKKKYgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoorkPE82satr1p4a0a+fTla2a8vr+NNzxJuC xonYM7bjzjhGxnBoA6+ivN477XfBvjTTtP1XWZdV0vVcqkk8aq0MmcHkHpudfbDAADaAfSKACiii gAooooAKKKwdVTxVc3pg0uTSrGywP9LmDzzHjkCLCqOe5dunTngA2Zbq3gmghlnjSWdisKMwBkIB YhR3wAT9BUted+EvClnqeoXmta3cyatq9lqcsMN207r5Yic4AQEKvJJKgEc1teKb3xFol1balpSH UbJ5EguNOFsXdMnHmoyfMAONwIYY5GKANnSdbs9Z+2LbFlls7h7a4ikADI6n2JGCMEEHofUEDRri PBKMnirxqJEhDjUUG5clyCm4Bj0xhuMep6dK7egArJ0fxBZ61d6nawLLHPptybeeOUAEnGQ4wT8r c4JweDwMVrVwXheNj8V/HL7UCIbMA7Ru+aBe/YfLnHvQB215c/Y7Ke58mWbyY2k8qFdzvgE7VHGS cYHvVXRtaste0a11Wyctb3MYdQcbkyOVYAnDA8EdiKvSRJNA0Uiho3UqynoQRyK4D4bappGk/DHT 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 UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUdqACiiigAooooAKOlFFABRQOnPWigAooooAKKKKACiiigAooooAKK KKACiiigAooooATFAFLRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAHUUUUUAFFFFAB2ooooAKKKKACiiigAooooAKKBgDA6UUAFFJz3paACiiigAxz miiigAooooASmgDJOOad0pMc0xijpS0g6ClpCEIzRgUUtACAYpaKKACiiigApAoBJA60tFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0hOO1ABSfnS5/CkJxQM Tp60Z9aQEkZwcUvb2pgL/OlpAc5A60CgAPFL3oNJnmgBeKTNAwRRQA0A0nfmnUw5zQA6l6U3FKD+ VACilGM+9J0PFKtAC0Ue1LSEFBOBmiigBFYOoYZwRkZBB/I0tFFABRRRQAUUUUAFFFFABRRRQAUU UUAB5qF+O1Snmo3FAypcfcNNj+6KkuARGeaZH90Uhkgp3akHSl7UANNRy/cNSEVFJ9w0AcH4g/5C X/AB/M0UeIMf2l/wAfzNFMR6JNwoOeBVqqdx9xeMjuKuUkD2CiiimIKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiqup38WlaVd6hOGMVrC8zBepCgn A9+KALVFebnwX4p8QJJqWt+JLvTL2U5Sz026mWGFdo2qdrL8wOCTzznnkbYfAOuazZ+JbnwtrFy1 15HmL5jyNK6SjDAbySxRkJYbuRwM8gUAenUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACA8dMUA56UtFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUDpz1oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKQUtABR RRQAUUUUAFIaWkP1IoAKTvS5oHvQAtFFIOtAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAmfSjFLSGgBOR0oPNHpmkPSmMOnQUgOKUHp3 oJAb+lABx1ApQaMg9sUdBzSAD3zSYweKXmkPWgAAooHSkpgLg000ueKaTQAozSjgUg9aXAoAXg0v ekxzSjAoAd3ooopCCiiigAooooAKKKKACiiigAooooAKKKKACiiigAqNzxyKkqNxQBWuP9WcVHF9 0U64PyGmR/dFIomFL2po+tO7UAIail+4akNRS/cNAHCeICRqXH9wfzNFJ4g/5CX/AAAfzNFMR6Hc fdHOM9Kt1VnVWChsd6tDpSQPYKKKKYgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAydSuPEEV0BpmnaZcW20Ze6v5IH3c8bVhcY6c5/CqK6j4xOM+HtG5OD/xOZOOv/TvXSda TapxlRx04pgc3HqXi4sok8P6QoyAzLrDnAxyceR0H9ajXWPGLBv+KV04YJGDrPJHHIxD7nrjofbP UBFXooGfQUbF/uj8qd12HfyOeOq+KTI2zwzaeVltpk1QBzjpkCMgZ9icVuWrzS2cMlzCIJ2RTJEr 7wjEcruwM4PGalwPQUuMUm79AYUYyMGiikIjuJUhgeWRgqKMsxOAB3Oe1ef+DrKDX/HWveMFizbL O1pYzAfJOFREaVTyCvybQwOD830Gp4g+3eK7ibQdKu3tdNiOzU7+3YGTPBNvHzw5U/MxBABA5OQO iD6boltZ2amC0hd1t7aIYUFsEhVHrgE/gaBl6iiigRheIfEVxoLweVoGq6nFIrF3sI1kMZGAAVLA 8k9unJ7GslPHWohl8/wL4kRSm8skUT4GMngSZ9OOp6YzxXZ0wxIWzjmgDjrXx/dXkRkj8DeKlAYI RLaxxnO0scBpASAAcHGCcDqRUrePHjuXtpfB/ipZlYLgWCurElQAHVymPmzndgBTk54PXBQP/wBd NMY6jg0Ac1P40+xzpDd+GfEkTOoYGOw+0KAfVoWcA8dCc/hWtomsLrlgbtLHULLDlDFf2zQSZABz tPUc9RxwavqgXj1pwAHSgBaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooIz1pOg46UALRSZpC2DigBcn8KQEMP8DQDkdKFHegB1FFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFIRnrS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB3ooooAKKKKACiiigAoooo AQ+1LiiigApB645paQUALSUY54oxzmgBaKSloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKM460UAHbikpaDQA09aac08dKaevXimMTnNN6nNO9aAMmgBSc UvUUn4Ui0AO9qT19aO1JnnmgBeaDRnNIelACfSkxRmlXOKAFyBjilwD04puDTxQAY5pcUUtIQUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABUUgxzUtMbp1zQBSnOUOabH90VJcgeUaji+6K RRIpp2aQUucUANNRy/cNSEk9qil+4aQHCeIM/wBpcf3B/M0UeIP+QkP9wfzNFUI9CuVyi81cqnc8 x49jVykgewUUUUxBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAVS1awl1PT5LSLUbvTy/BntCgkA7gFlbH1AyOxFXaKAPNf8AhTWmLb+SniHXlQHcQskI y3Y8RfX3z3rZ0n4d2WleJINcOr6veXEEbRxpdyo6qCCMDCAgDLHAOMnNdjRQAUUUUAFFFIAAMAYF AC0UUUAFFITQCT1FAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUABOKKK KACiiigBMAUtGKQDAxkmgBDnH40IMClOccUtAwooooEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSZpaO9ABRQOnTFFABRR RQAUmMYpaKACiijvQAA5ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKTPPSjrS0AN3UhNOwPSkz2xTGNPNICfSnEUfSgBMmlH1pDQuKAFxSd6UnNJj86Q AB3pMk8YxSjcKSmAnanoOKjzzUinFAC4pe9FFIQtFJS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAVG+KkqN+lAFW4PyGmR/dFOnxsNNj+6KRRIDQelGaU+1ACZqKX7hqTNRyn5DSA4Px AP8AiZf8AHb3NFHiDP8AaX/AB/M0VQrnoU/WP/eAq5VSckGPA71bpIGFFFFMQ19+35ApPo3GaVdx UbgA2OQDkA0tFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFHegApDnp+tLSEUAJgdMcGnUijAxS0AFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUDkdMUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFHUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRSE0ALSYHWk64NLnNABgZpvfgUvejvQMaQetGB1pSetHGOKYCHvzSdwa U4FJQAuD26UmeOetICeaTPpQAdRSg7TzSZoBGfegCXINLUYI6UuR60APzQDmmg4NKDQIdRSUtIAo oooAKKKKACiiigAooooAKKKKACiiigAooooADUch4qSo3OOooGinMcoabH90U6f7hpsf3RSGiUUo xSCloACAKgl+6alP1qKbhDSGcJ4g/wCQl/wAfzNFJr5/4mI/3B/M0VRNj0S6z5J2nDYOKt9qqXBO zI9DVvtSQPYKKKKYgJxQCCMg5BoxmkAA6CgBaKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKaxbcABQA6iim9RgZBIznFADqQGkYFhjOKAMDC0AKR3PFA 6Un8PuKFGFGDn60AOooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAQ9KOfWjqKKADcAcE0bh60h9xTc A8YFAD6QnHWmA8/yxQW7YoGP3U3ODxSU0qcg5FMBfMx2pS9Mye/SjNADt3FG/gdqaevt7U3g0ASH qabuNIDSc5oAXORRn3pvek7EUAOoB5pBxgil460gH7qAM0z+dPHWmA5fSnZ5pncU4A96AHDNLnNN Jx1oOe1ADxRSDNGaQhaKKKACiiigAooooAKKKKACiiigAooooAKjkqSonORxQBUn+4abF90U64GI zTIvuikUTDpS5puT2pTxQAhqGf8A1ZqftUE/3DmpGcH4g51IfLn5B/M0Uuv/APIR/wCAD+Zoq1sI 9Au5AkW5uAB2q8OgqjeAGE5PY81fpIHsFFFFMkKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKOlFFABRRRQAUUUUAFFFFABRRRQAUUUUAA4ooooAKKKKACijnn P4UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSMu4YyRznigBBu2nJ59qbg56gjuPSpK KAGcOvDcA9RSYym3pTlRUXaoAHtSgAED9aBiAAH39aUZ70Y5zmloEFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUdqACkzzS9qTPGc0ANB9z+NKfrSd/WjjPSmMUn3pvfilxRjjPNIAx+dMI5PGKkppzu60ANxkZo zj6U8jn2qM8Ng0wDPtkU3r604Ag8Hj0oHrQA0HgdvagelOwaQev60AIaPrQw70AZHWgBpHfNIAcU 7HWgDrQA0GnHOKDkYxSA0AKCc05TTaUcGgB/fNOU0znpT17CgBxz6UtN706gAFHeiikIWiiigAoo ooAKKKKACiiigAooooAKKKKACmMM0+mtjvQBSuf9Waji+7Utzgxmoo/uikUiYUtIOlBBxQAVBP8A 6s1NzUM/+rNJAcHr/wDyER/uD+Zopdf/AOQj2+4P5mimI9BvCBFg4weDV6qN4MwHAzgE81eoQMKK KKYgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACkNLRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKOaKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoopKAFpMAilpKAEAx+FBPNLnvSYy eKBh1pAaUjA4NMwTQA8nikB56Ypfx5pnRsZ/OmA4mm9+lLyTSEn/AAoAQgZ5pPu5Pb0pcg8EYNG3 OOaAEz78U3I60uMHmgLQAZFIevFB9cUmOaAA+xpufm96Ug009aAHduaM5FNpcgdelAC5OKcCCaZn inLQAvfrThkc03vThQA8NmlBNNB5zS5zSAdn2pRSClxzTAXvRSd6WkIKKKKACiiigAooooAKKKKA CiiigAqN1yOakpjnjoaAKdwCIzUcfSpbrmM1FH92kUTA0p6U0U7tQAhqCf7hqc1BP/qzSGcH4gGd SHT7g6/U0Uuvf8hH/gA/maKpbCPQ7kbomVT8xRsflVpDujU+oqjeuIYTKFBZRVyAEQJldp2jIpIH sSUUUUyQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiijAGfegAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKOvWgAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApKWigBOtGKWkI5o AKQj0p1JjpQAAACkIGaXtRQAwj0NLyaUjilApjGFfajHNO6UD0oAi4PBoC8mnlcmk28UANwefTNN wc1J2pDwaAIzkfSkwD7Gn4yvFN70AMIpCB6VJgdaYfekAClXANNyN2OPrTwAG4pgLzninr+tMzzT wADQAuKcOtJxninDrQAtKOaSloAKWiikIKKKKACiiigAooooAKKKKACiiigApG6UtIx4oApXX+qN Rx/dFS3X3DUUf3RSKJBTh0pBS0AIaguP9Wan7VBP9w0hnC69/wAhEf7g/maKTXs/2iMY+4P5miqJ O91Hm0kGCflPAGTWggwOe9U7oAxneFKbTkEZ7VcQkoue4/GkhvYdRRRTJCiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKTHOaWigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACgdKKKACiiigApKWigBB1pcUUUAFJS0nP40AHekI5zil+ v6UtADCMGgZpxpAMcUxjWz0xSEd/alI5waMAdDQA1RxgimFSDmng/U0jE4z3oAaRxTdvc04g7c03 JzSAaVGRR/EKXqKQYzTAf1+tOHPNR5xxUi8UAOHXinA+1NHUY4p44oAcOtLTRS9KQhaKKKACiiig AooooAKKKKACiiigAooooAKRjxS0hHFAFG64Q81HH0p91901HGeKRRMKUU0dKXNAAahn/wBWamqC 4/1ZpIDhtd/5CH/AB/M0Umu/8hD/AIAP5miqEehXA3RMB1KNj8qtqfkX6elULkSLE+xwGKkDPQcV fUEIAcA47UkDHUUUUxBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUgUBiRnJ680tABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABSClooAQ00gY6U+koAjAPYUdMjrmnYGeOuKaQcjNMY01GT kZqQ03jBzSAj5ByOlKMZ70HI6UdDmgAJ9acCQKb39qUUAPHWngUxcZ5qQDJ9qYCgc06k+tLQAtFF FIQUUUUAFFFFABRRRQAUUUUAFFFFABSHpS0jdKAKF5wpqKPpU92P3ZqGPoKRRKKWkFOFACVBcf6s 1ORUNx/qzQBwuuA/2gP9wd/c0Uut/wDIQ6Z+QfzNFUhHoFwSE4GeDxV2qc5whxj7p6/SrlSgewUU UUxBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQBgYooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAQU0in0hFAEXYA1Gc9wM1OSAcVGR7daBkQ6YzRgZpefpR35zQA3v7U8c0 08GnL15pgKKkDc4pnANOHakBIOaWkXmnUCCiiigAooooAKKKKACiiigAooooAKKKKACkPSloPSgC jdn90ahjPAqe8wIjVeL7opFEwp3amindqQCVDcf6s1P2qC4+4aYHDa4D/aHAz8g/maKNc/5CHP8A cH8zRQI729I+zvn+6en0q+BhQPQVQvF3QEYzlT/KrsJBhQqcqVGDnORQhvYfRRRTJCiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKTcu7buG7GcZ5xS0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQA0qMYqNwcc9KmprA46UDK5GOp/H1pM4AzUjIR0BphX1HFACHrQuM80Yw aXbQApFOU+ppuDTwvNADx1p9NUYp1AgooooAKKKKACiiigAooooAKKKKACiiigApD0paD0oAo3Zz GeKgj6CrN2Mxmq8Y+UUiiUU4dKQCnY4oASoLj/Vmp8cVBcAlDQBwmusP7R/4AP5mijXIZDqOVQkb R29zRRcR6E/+qWnaZ/yDLb/rmKKKAZbooopiCiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAG/xmo/8Als1FFIBv enCiigAbrT160UUAPFFFFMAooooAKKKKACiiigAooooAKKKKACiiigAooooAqXH3ahi6CiikUTCl oooEIahl+4aKKBnLamP9L/4DRRRQSf/Z89wGAEQAZAAAAAAAAAAIAAAAAAAAAAAAAAAAANAvwkGE A4IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAATwdAAAALIECvAIAAAAAwQAAAAK AABzAAvwMAAAAH8AgACMAQRBAwAAAAWBBgAAAAYBAgAAAH8BIAAwAL8BAAAQAP8BAAAIADMAMwAA AEMAIvEYAAAAvwEAAGAAkAMBAAAAkgMBAAAAvwMAgACAAAAQ8AQAAAACAACAUgAH8CvcBgAFBSif N2rFqrGv4eF5pvUgZ1//AAfcBgABAAAAnQkQAAAA0QWgRh3w/9sGACifN2rFqrGv4eF5pvUgZ1// /9j/4AAQSkZJRgABAQEAyADIAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAkiBqQDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2mO1i H8A/KpxBGOiikFPBqbIoUIo6CgopFL0FGeKLAUm06C9mMc27bjOFOM1WfwVosmd8dwSTnIuHH8jW tbf69v8Adq3TSE2cy3gLQm6R3a/S8l/q1IfAOgkDCXg+l7Lz/wCPV09FMRy//Cv9BznZeZ7H7ZJx /wCPU1vh/oxPEl+PYXb/ANa6qigLnJH4eaSRgXWpL7i5P9RTk+H+kLndcai/pm6Ix+WK6uindgcr /wAK/wBHz/r9Qx6famoHw/0kZ/0jUOVx/wAfB49+ldVRSuwOUPw/0olT9r1IAAZAuev6d6afh7pf OL3Ux/28D+orraKd2FzkH+HlgxJXVNVQHoFkj4/NDUY+HNmOmt6z/wB/If8A43XZ0UXY7s43/hXd t217Wh/wOH/41Tv+EAhGNuu6tn/aaI/yQV2FFF2I5ePwRbRW0sY1K+eSTb+9kKFkA67cKAM+pzUD +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 igcDrmgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACikIzQBgYoAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA RuEP0qFDUsn+rb6GoY+1JjR80eNDjxfqY4/17fzNFL40O3xhqg5/4+X/APQjRWi2JPo4U4UwU7pW ZY6muCcYpaM0ALbf8fR/3D/MVdqla/8AHyf90/zFXaYmFJilooEFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUGgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAGvzGw9jUUQwBUr8I30 PWoou1JjPmrxqP8AistW4/5eZP8A0I0UnjYA+M9W7f6VJ/6EaKsR9GCnEZFNFOFQyhQKCKKU9KBi W3/H0f8AcP8AMVeqlbf8fR/3D/MVdpolhRRRQIKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBsgzGw9jUFuSQM1O5wjHGcCooSMADikx o+afGuP+Ez1b/r6k/wDQzRR40P8AxWWr5x/x9Sf+hGirJ0PowU6mrg0/tUFhQelFBoGFqc3h4/gP 8xV6qNt/x+H/AHD/ADFXqZLCiiigQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FRtCrTJKSwZQRgHg/WgCSiiigAooooAKKKKACiiigAooooAKKKKAGvwjH2qC2O+NGIwSOasNwpPt UUIwBSY0fM/jUn/hM9X/AOvuX/0M0U7xiufGOr9OLuXr/vmirFY+iwKdSCnVBQUUtIaBhbf8fZ/3 D/MVeqjbf8fh/wBw/wAxV6mS9wooooEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA1/uN9KZH0FSMMqR7UxAQBSY0fM3jT/AJHPV/8A r7l7/wC2aKTxr/yOer/9fcv/AKGaKtCPo4U6minVBYChidvAzSig9KAEtf8Aj6z/ALB/mKvVRtv+ Pvr/AAn+lXqZLCiiigQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRSZ+YDB+tAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACMcKT7VHE4YZFSNjaSemOahhQKBjp7UhnzV40x/wmesf 9fcv/oZopnjUA+M9Y5/5e5f/AEM0VZJ9HindqaKdUFiig9KBSmgBLb/j7P8AuH+Yq7VK3H+lZ/2T /SrtMTCiiigQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFACN90/So4jwKkblTj0qKFSAAetAz5o8aD/is9XyQP8AS5ev++aKPGv/ACOe r8/8vcv/AKGaKok+jRTqaKdUFjhQelIKU9KAEg/4+v8AgJq7VKD/AI+h9DV2mJhRRRQIKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBG 4U/So4znFSN90/SmRDjpigZ8zeNB/wAVnq/X/j7l/wDQzRR42/5HTV/+vuX/ANDNFUTc+jBT+1NF OqCxaM0h5pe1AwhP+kj6GrtUoP8Aj5H0NXaZLCiiigQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU daKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBrnCMfQU2M5Ap7fdP0pqDjNAz5 n8bDPjPV+f8Al7l/9DNFHjYgeM9X/wCvqT/0I0Va2JPoknA4p4PAqMc0/FZlj6QmkzRQMWA5uh9D V6qFt/x9j/dNX6ZLCiiigQdKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigBD0OelNTpTnGUYe1Mj4AoGfNPjbH/Caav8A9fUn/oRoo8b5 /wCE01bp/wAfUn/oRoq1sI+hhT6YtPrK5Y4UnailNMBtqT9s5x904rRrPth/pY/3TWhTJYUUUUCC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACis/Udd0nSJbeHUdStbWW5cJBHNKqtIxIACg8nkjp WhQAUUUUAFFQi7tmuvsq3ERuNnmeUHG/bnG7HXGeM+tLc3ENnazXNxIsUEKGSSRjgKoGST7ACgCW iqGna5pOr20tzpup2d5BEcSS286yKhxnkg4HFLpes6Xrdu0+lajaX0Snaz20yyBTjODgnB9qAL1F FFABRVa+1Gy0yBZr+7gtYWcIJJpAi7j0GTxk1LBPDdQJPbzJNDINySRsGVh6gjg0ASUUUUAFFFNd 0jjaSRlRFBLMxwAB3JoAdRVSx1TT9UR30++trtI22u1vMsgU4BwSCcHBB/GrdABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR 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 RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSEgdaAFoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooARiQpIGTTU5A4pzfdP0pkZOBQM+avHA/4rTVv+vmT/0I0Uvjgf8AFaat z/y8yf8AoRorRbEH0KKf0pgp9ZGoUUUUAFt/x9jj+E1oVQtv+PsfQ1fpksKKKQnAoEFLRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRXm+o 678Ro/FWqWWl6NDcadFIBbzzWowQyAj5zMm5c5yQCRjHpVOXxB8W4pVT/hHtMlDLvDRWxx0zjm5G D7HHtmgD1SivJZfFvxTSRYl8NW7OcAN9gcoT9ftHAx609/FXxUxvXwxaquFyn2RnZSc9T54zyCeM 4BHJzQFj1eivPfDmveO73XtNj1nR1tbKUSi422ZQL8pKHf5zkHcuMFR94dc8dL4vsdZ1Hw7PBoN9 9kvSQQQ20yL/ABIHwShI6MBkH06gA3aK8k8I/EK50S4Og+KTPmGUW63MxBaAjg+c5blemHGcg5Jx zXrdABRRRQAHocda8nsfCvxVs4Cx8TWj3QVUDSXjSRkDrlWtzz05HPXJ5BHpt9qmnaWiPqF/a2iu SENxMsYYgZOMkZ4plnrWlajL5Vlqdncybd+yCdXO3IGcA9Mkc+9AHivjrSfGtjpcM3ibWLS+sZrv csUPPlTbHxt/dr8mxWHXqx4J5rfsNL+Klzo9q1nrmji0dY5YG8wq6x4BVf8Aj3xjGM5yfetD4wyQ XPhm0ijkjeWPUQCquCyt5Enb1wyn8RXZ+HXjj8MaKhYJvs4VQNgFj5YOABxnAJwPQ0Acx4R0rx7Y eIg/ibU4L6wNpKoMMwYLJui2bh5cfOBJggHvntnvap/2tpvlLL/aFp5bIHVvOXBU5wQc9Dg8+xq1 HLHNEssTrJG4yrqcgj1BoA8o0NZD8ftZWMLgRvJKzqc4EUCgAkcfeTpwQB6VL4g1L4kz6ZrROkWK aUqzx8xnz5ICzKGULKTuCDPIHUYVjwOavdcvLP4ueILjQo3m1K5d7KCAIGLN5UKlwCeitEevy464 HNaniS/1TQPh3Z+FtQd7nWdTMkkiJ+8kjgaTcVYg/NISwQbRjOQMhckGU/Bl144stDk/4RvSoLjS 3klffIY9xkPynaTKMbSAcFOeeeRVP4e3vjGz8N3K+EdOtr61NypkkmCsd5jXON0sf8IQn/eGO+PW /BmiTeHfB1pY3AQXYV5ZscgO7FiDjrjO38K5P4HlpPCN/MybPOvvMwFIXJhizgdh2x2xQB2HhC/1 3UdCE/iKxWzv/NYeUsewFP4Tje/6n8Kua/dX1j4f1C70yAXF7BA8sMJRn8xlGdoVeSTjAA74rSrJ 8S/22fD92vh77ONUZQsLTnCrkgFuhGQMkZ4zjORxQI8d8EeI9T8PS6jdjw1rGsz3eGku/ss4kOAT gny2ByTnqMeh4FdInxV162R5dS8D6hDCCP3gWZURRkNud4lGc4wOAQevHMNn8QPFvhzZ/wAJfokz 2eSrXEcGyQEDAGQfKJZsfxLxnGeBVM3lz8U/EjWd1q6aToqkpFp63SrdXGAG3bMMrHIJzk7dowM/ NQM2/DvxSuNf8T6ZpDaZb2n2rfvBuDI2Fjd8r8q91HUcc16Xjr2qlpej6bolqbbS7G3s4S25lhjC 7mwBubH3m4HJ5NXaBHlet+DtfuZLh/EvjmWLQLZW2vlUa4UjcwlRVVDjGOd+QOAua5+ystL1KWTw v4L0mIwMgW+8Q3sW/EQbcTGcYX5lG3pyvCgLvEt/ZeArC/uNR1HxJP4jgaQy2en2139paMfxBpC5 J5OAGZQQOdxGau6db674/s49N021Tw54NXjZBGY2mjZScIVID5JycAKMnPmEEU2MzvD2u+JrW6n8 LeE7qwvrR5XeyvpyxEcWMkjkgJngcHBPAIIxs/C3QdA1+yutZu459Rv0uVzJfnfhtqyLIufmyQyj cxJypC4HFNtNP0zTfjNpNlozhLa0tzDJGsmSJPKnLBj1c/dJLEkHHtUOs2+qfDfxncarpUJk0nUn 3GHyyYg24lkdlGIzub5Cc/eIGcYpAexUVh+F/FFv4q097y2sdQtI1baPtkGzeMdUIJVh1GQTyK3K BBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUhIGMnrS0AFIaDnsRSEkAdCc49KAFBO4jtQM96O+ eKU0AFFIDkUvOfagBAMCkXIJBz7E06koAWkHUnNHUg+lAxzj1oAWiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEPQ01OlPPQ1FGDgZoA+bP HH/I6at/18yf+hGil8c8eNNV4H/Hw/8A6EaKtbCPoUU6mKc1IOlZmgUUUUIAtv8Aj6H0NX6o2/8A x9D6Gr1MlhRRRQIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooA5XxX4D07xbe2V3dTzwSW6tHJ5IX99ESCUYkE9Rwe2 5scnI6eGGK2gjggjSKGNQiRooVVUDAAA6ACn0UAFFFFAHM+LPA2meMZLOTUJ7qJrRZFi8gpj59uS Q6sM/IP19awn+DHhd7eONpNR3KwLyCdQZQOxAXaAf9kA+hFeh0UAcEPhB4TVmMcV7GrLt2rdvhfp nkd/bmoY/gx4WSZXZ9SdBnMbXXBOSRyAGGAdowRx1ycmvQ6KAuedTfBvRJYY7ddV1aO3h3LDEv2d vKUsW2KzQltuSeCT1Pqa7bRNIg0HRbTSrV5HgtYxGjSY3ED1wAPyAq/RQBTh0nTrfUbjUYbKBL25 2+dOqDe+BgZP04rkdG+GlrpnimXWLzUJtVXJmiW9RWZZ2YMZCQAuQR8uFG3cfau6ooAbIgkieNgC rAghhkEH1Fcf8PvAz+B7O6gfUEvPtHl8pAYgpUEdNzZ4x+X0x2VFABRRRQBFc20F5bSW11BHPBIu 14pUDK49CDwRXC+IPhTpGoIsujFdIuYyzBYEHlOSc/MvUY7bSOveu/ooAwfB+hXHh3w7b2F3eyXU 6gFy0hdIztA2R55CDHA9zwBwN6iigDmbTwB4cs/EtzryadE15MyuquqmOBx1eNcYVieS3XPPGTl/ jPQdT8QaNDZ6RqsumXCXKO00U0kZ2YIYfIQTwcgZAJA6V0dFAHG+EPh1p3hS5a9N1NqF+U2LPOqj ywfvbQBnnuSSeMZ656u7srXULWS1vLaG5t5RiSKZA6OPQg8Gp6KAILOzttPs4bOzgjgtoVCRxRrt VVHYCp6KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBCobqKWmu4TGQTk44p1ACc0tFFACdR0pC CNuOcU6kJAxmgBaKKKACk7+1ANLnnFADejHA6mhM5fOOvH5U6mr1b60AOooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBD0OKYmeM089DUME hkUN0zQM+cPHOD401X5iP9If/wBCNFJ4548aar/18P8A+hGirWwj6FQADAHFPpop1ZlhS9qKKAC3 H+lD6Gr1Ubf/AI+R9DV6mSwooooEFFFFABRRRQAUUUUAFFNZ0RlVmUFztUE/eOCcD8AT+FOoAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBDnBxjPbNcTo3xO8PT6VE dZ1ewsNTjJhuoHkCDzV4YoCSShIO0+nXnIrt68k8OeLItB1DxJMPDmsap9s1q5dLrRtO82Py12qA zAj5s7s+pye+SAdafid4QLlINVe7I5P2O0mnAGcZyiEY4PPfBqlqfxOso7e0fRdM1HU3uLlLfL2c 9vGhP+28fLHPCgEn2FIPiUXkijj8HeI4JriTyIDf28doksmCVTdI4wTzj1+vFV9b/wCEm8UXukQn wnc2Fvp+rQXzTXF7Ad8aE5AVGPzc5x0469KLoD0SiiuY8c61feH9Js9SslaXy7+GOa3VQTcRuTHs BP3TllIPHKgZwaAOnorznxRr/j6y8O6hqS6XpOlW9vbtI7m6a5nTaeSoCBCSCMZ4GDnsK7XQGvm8 Pac+pzJNftbRtcSIu1WcqC2BgcZ9h9BQBSuPEotPG1p4ems3VLy0aeC7DEh5FY7o9oHGFG7cTjkD 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 Njny9x3cDkcbRjAAGM16NRQBFbW8dpaQ20KhYoUWNAABgAYHSpaKKACuQ8deE73xJFYS6XefY72C RkeUzyRhrdx86kJ97kIcHA46iuvooA840D4XNaXsN9rWp/ap0nW6KwBxmVXDKXkZiXGR3Az3r0ei igChZ6HpWn3dxd2enWsFzcszzTRxAPIWOWy3U5IH5VewKWigDzSD4WajpjPFo/i25tbVzllMBEjd cAvE8eQAeOOuT34k/wCFd+JBE0f/AAnV4wIYEyLcMTnHX/SMY47Adx3r0eigdzkvC/gSy8N3C3fn fablI3ijfyVjCq7bmPHJYnuT0GABzmq3g3U7/wCIg17Vbu1nsLbBs441KuuPuowxjAYlt27LHHAA AHb0UCMLxboL+ItBawhkWObzopI3dmCrtcEkgfe+XdweCcZrPm8GvqPw9t/DWoXcYmjSMCeOEMsZ RgyhVOOABtzxx6V1tFAGH4Z8Pf2BoR0qadLuLe5z5ZUFW6gqWYZPJOMAkngVkeF/BNx4c1q6uY7y 3SyMsohtoYSGMLEFFdif4DkDA6Ac8kHs6KAE5yOeKWiigAooooAKKKKACiikJA6nFACK4YZ6exp1 McjA+tOwO1AC5opMc0tABRRRQAUUEZooAKKKKACiiigApCcYpCxD4prEkjIwM0ASUU0uF65p1ABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApAQwBByDS0UAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFIKWkAxQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABUIjxK5z1OamqINl2+tJjR4b8UBnxvcYz/qo/wD0Gik+KYY+OJ8Yx5MfX6UVQj2hakFRrUgq ShaWiigBjdV+oq7VJvvL9au0xMKKKKBBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFACNn8KSlbgZqETDuKYyYdKWokYsDShiZSPyoAf3paaR8w/lTh09aQgorB8 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 QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABUKgeY/1qaoI8mV8jHNA0eK/FMf8Vm// AF7x/wBaKPimP+Kzf/r3j/rRTEewrUgqNakFSULRQKKAGSdKvVRl4XNXqYmFFFFAgooooAKKKKAC iiigAooooAKKKKACgADOB160UUAFFFFABRRRQAUg6UtIORQAtFFFABRRRQAUUUe9ABSZ5paKACii igBKWm9W+lKGGcUALRRRQAUUUE4GT0oAKKKKACiiigAooooAKKKy4/Eejy6xLpK38X2+NwjQnIO4 ruwOx49PQ0AalFFYuo+LNE0nWLXSb2/SK/uioihIOWDHAOcYAzxn1oA2qKDRQAUVSl1nTINSi06X UbRL6X/V2zTKJH4J4XOTwD+VSX+oWWl2b3moXcFpbRkb5p5AiLk4GSeByQKALNFV7W9tb62iurO4 iuLeVdyTQuHRh6gjg1Bqes6bo6RPqV9b2aTMUSS4cIpYAnG48DgHrQBfoqG1ure9tY7m1niuLeVd 0csTh0ceoI4IqagAorF1nxXonh+5trfVdQjtZbn/AFQkBwQGVSScYAy68nFSat4k0jQrqyt9UvFt pbwssG5GIYrtyMgYH3l64znigDVNFITyO1HagBaWm7sdTSg5GaAFopOaOaAFooooAKKKKACiiigA opCoLBscjiloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKQKqliFALHJIHU9P6ClooAKKKKACiiigAooooARlDKVYAqRggjgiobaytbJZFtbaGASOZHEUYXc xABY46nAHPtU9FAFK+t7UPHfvaQSXdsGEEzxgvHuGG2nqAcDOOuKx5Jp71o/Ok4zgKAAM10UsYlj ZG6EVTttNWCfzWk3kfdAXAH6mk7lRaRbt4vJgSPk4HOakoopkgBgYHSiiigAooooAKKKKACiiigA ooooAKKKbIrNGyo5Rj0YAHH50AOopEBVFUsWIGCxxk+/FLQAijA65paAMUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU1ARnOevenUi9+vXvQAtFFFABRRRQ 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 rqK5nwC4fwXp+FZEHmqiN1UCVwF6AcAAYAA444xXTUCYUUUUAFFFFABkZHNFIR8wpaACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAQdKWiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACgUUgAGcDrQAtFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABUCD/SZee4/kKnqunFzLx3H 8hQB4z8UgD4yb/r3j/rRSfFM/wDFZN/17x/1opgevLUgqNakFSUOo7UgpRQBFIvGdxrQHSqUn3au L90fSmJi0UUUCCijOelFABSDilpKAFopKWgAooooAKKKKACiiigAooooAKKKKACgdKKaVyOGIoAd RTAhH8Rpdp9TQAoGM+9LTdpx1pGjJ/jIPtQA+im4PrzRt9zQA6imbWP8VKFOPvE0AKcnpjFHakI+ UjPNNVXA5fd+FADu3oKQ4OOaUA8800oTxuxQMdjuDVfUbk2WmXd0MZhheX5gSPlUnkDnt2rldY8b 3mk6xfacnhfVrw24Typ4YWZJ9wUsV2qThS2CQDg9cZrm/EnivWvEfhm80mPwZrUMtyFUvJayMiqG UsR8qknGcA4ycdeRQBrfBzT5rLwTvmTaZpztIk3blRFT8PmVh64AqL4urv0nTlEaFmllVHwPMVjE 2ApPY85HQ4GSMc0/DvinU/Dmi2ujnwbrss8cj75ltHWNmaQsTkKezZyQM4NZHi/WdT8Sajp1wPCW vwrpkuSBZSt5u543wCF6fuiCcEc9cdQD2O0ha1sYIHcO0USozKu0MQAMgZOPpk1MCSORXn1p8TZr rV7XTh4T1hbmaVEmQxNm2VmUF5AVBCgHOenvnp2GvaT/AG5oV3phu57UzptE0DlWU5z2IyOMEdxk d6BGgjpIu5GVhkjKnPIOCPzGKdXjGk6rrXw01ODR9RhgOnPk+RADtlO0FngLYxyVBTnBPbcGPr9l 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 AwAKlooAKKKKACiiigDnvFfhb/hKLe1hbUZ7VIJDJsjRWVyVKgnIzkZOMEdT17Lb+CPDEMECP4f0 qaSJFXzZLKIuxUdSdvXv+NdBRQBxl98ONKm1zT9Q04x6TFayLLJb2NrHGJ3VwyliB7Y+hNdnRRQA hANcx4b8C6Z4Y1S81C1ub64muQVH2qbzPLUtuIBxk5ODliTx1656iigArA8V+ErDxfp8VpfS3EQh kMsckBUMrbSvVlPZjW/RQBDawG2tIIDNJMYkVDLLgu+BjLYAGT1OAK4zxH8MdO8Ra/8A2m95PaLK gFxDCinzHBBWQbgVDcAElTkAdDzXc0UAczo3gXRNGKSiKS+uUBVbm+YSuAeoHGB1PQDg46Vv3Vpb 3sLQ3VvFPEw5SVAynjHIPHQ1PRQB5/rXwn0W8AfSpJdKuEGY1i5h3DuV+8M5IO1lz1Oa7TTNPXSt LtbBJ57hbeNYxLcPukcAYyx7mrlFAHKWPgLTbHxMNcS6vp5cOTHdztMN527WBbLfKAQAScZ7Yrqg MDFLRQBRj0XS4tTk1OPTbNNQkBD3SwKJWBABy+MngDv2Fct4i+G1j4h8RHVmvZ7JpIFinFpGivKy n5XLMDyBgHIOQq9MCu3ooAz9E0e10HRrXS7MP5Fum1S7ZZiTkknjkkk9B1rQoooAKKKKACiiigAo o70UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAg9xS0UUA FFFFABRRRQAUUUUAJzk8jHbiloooAKKKKACiiigAooooAKOtFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFGOc0AFFFFABRRRQAUUUUAFFFFABRRRQAUUmBnOOfWloAKKKKACkxS0UAIFUHIAB9cUuKKKA EwPSgAAYAApaKAEwPSloooAKKKKADFIKTL+YAFXZg5Oec9uMfXvSg5FAC0UUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFRceaalqAH9+/1H8qTGjxj4p5/ 4TJsf8+8f9aKPipj/hMj/wBe0f8AWiqEeuL61KKjWnipKFzilJyKO1AGKAEf7tXF+4PpVJ/u1dX7 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 RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAAOR6UUUUAICD0OaWjGKKACiigdOaAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqujE3Eg 54P9KsVCv+vf/PagaPGvioT/AMJev/Xqn82opfipj/hL1/69U/m1FMR6ytPFMWpBUlC9qUUlLQAk n3atJ9xfpVR/umraf6tfpTEx1FFFAgooooAKKKKAExzRnPbFGaQ0wG5HPWgEkcj8KU5A5/GmluO9 AwbpS+470nXpSjr14oAcOnNITg8Hg0o5FJ04oAO/tR3oIHTsaMjNIBQeOaUH1opOKABj8ppI+UU+ 1Dn5Tj0pI8+WOecUwH0UClpCEpaB0ooAKKKKACiiigAooooAKKKKACiiigAIB6jNGOc0UUAFFFFA BRRRQAUUUUAFUYdF0q31SXVIdMs49QmGJLpIFErjjgvjJHA79hV6igAooooAiitoIHleGGONpn8y VkQAyPgLubHU4VRk9gPSpSAeopGOBS0AFFFFABUMdrbxXEtxHBEk8wUSyKgDPt6bj1OMnGamooAK bIiyIyMAVYYIPcGlBBoJFAFewsLbS9OtrCzi8q1tYlhhTJO1FACjJ5PAHJqwM0ZpM546UAAwoAAw BwAKXqKTPFN3ADrkUAP/AJUc0m7igHmgY6jqOaTOKb5gBA9aBDwABwMUUUgPOKAFooooAKKKKACm gMGYlgQTwMdKXIJpaACiiigAooooAKKKKACiiigAoozRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSDgClpFxtGOlAC0UUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFIT7cUtABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUgGCTknJzz2paKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAqurf6VKPcfyFWKrr/wAfMn1H8hQNHjvxU/5G9f8Ar1T+bUUvxUH/ABVy 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 NtDqGxkcHr1q4SBjJAJOB71leGtv/CKaOUSZF+ww7Vn/ANYB5a8N/tevvU2r6NY69p0lhqMAlhfk YJDIw6MrDlWHYigCzd3dvYWkt3dSrFbxKXkkbooHUmufl8f+HxFctbXNxetbkrItnaSzEEYyMquO h9ex9DUWinX/AA54R1P+2WXUp9OM7WciyHfdQKu5N7MSd55U59B16nO1fxhoeqWIntNd1awmtMO0 1pYzSKhIB2yr5bIV5GckEYIDDmmldjSNOXxxanU7CxsrC/uZLiXy5A1pNE0IPRiGQDGOeSOOa6mv LtK8R2eg6XqWsXGjXd14kmV5b66hs5/JcAnYfOdcJDsVWGDwvYnr6Rp9zJe6fb3MkDW7yxhzEzqx XI9VJB+opAWq4/S9V1Cb4l65Yjz7jTY4YV3ZUx28gUNjqOW39OTx2FdVdXMNjZzXdzKscEEbSSyM cBVUZJP0ArzPQPEep6Nam7u/Ct+1/r+oeZAxeNVdZFLxoW3FlKqCMMAAATx0oEepUVyjeItb0bSr 7UvE2lW0FtFLD5f2GczFY3IVt+Qv3CckjgjsMZrSn8W+G7ZA8/iHSYkJwGkvY1BP1LexoA2aKy9G 16w1+O6k0+RpI7acwMxXAY7VbK+qkMMN0PatSgAooooAKKKKACiiigAooooAQ9RS0mBmloAKKKKA CijPOKKACiiigAooo6UAFFFFABRRRQAUUd6D0oABRSdqQg7vwoAdRRTSfmAxQA6iiigAopOd3til oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiig9 KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAAdKKQcAUtA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFGOaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAopAOTS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAB6U1SMUp 6dAT6GkXp2/CgBcClpD0pR0oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKrg/wCkyD3H8hVioDn7Qc+gIoGjyH4rsR4rg/680/8AQ3oo+K3/ACNcHX/jzT/0 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 GaLf6lPqFxFdmefBk2X86ISABnYrhQcKOgreIyc5P0paAOX/AOEGsIVRdO1HVtPiUFTBDeGWFkPV fKl3oB9FB5PrVODQ/Eek6DBoY/srW9IjtvsrxSxvbTGALt2feZHYr8ufkH9O0xRQB5frur+GbzTb fTPFXhrV9Ki0/BhM9sJE+UKPKSVS6yb1YjA5wrHggGu10jxbo2uyhNMnnuVPSZbSYRHjP+sK7Onv 7da2XjSQFXUMp5KsMikihjghSGGNY441CoiKAFA6AAdBQBg6/r0kNwmiaM0M+u3I+WMncLWPHM0o HRB0GfvMQB3xd8P6BZeG9Ij06xDlFJeSWQ5kmkY5Z3b+Jie9Xo7S2iuZrmO3iS4nCiWVUAaQLnbu PU4ycZ6ZqagDHu/C+j311qVxcWiu+pWq2l1zgSxjdjI7t82N3UADHStO3gS1tYrePOyJAi59AMCp aKACuf8AG2h3XiPwnd6XZmATyvEwFwxWNwsiuVYgE4IUjoevSugooA5TQtLv5PE0+uXGmQ6MklqL aS1Ro3e4dSNsjunGFUbVGc8npgZ6ukGe5zS0AFFFFABRRRQAUU0b+5X8qdQAUUUUAFFFFABRRzRQ AUUhznjFHOPegBaKKKAEHUmlpPmz2xQd2eAMUALRRzRzQAUUUnOO1AC0UUUAFFFHegAopOfSloAK KTml5oAKKB06UUAFBGaPwpCTuAxx65oAWikz7UtABRSc+lLQAUUUUAFFFH4UAFFFFABRR+FFABRR RQAUUUUAFFFGaACiiigAooooAKKKKACiikz168UALRRRQAUUUUAFFFHegAooooAKKKKACiiigAoo ooAKKKMigAopAwJxS0AFFFFABRRQelACKPlHXp3paQHKg0tABRRRQAUUZzyOlFABRRRQAUUUUAFF A55HSigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACj1opBwTx1oAWiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKjyPNPNSVEB++Y4oGjyH4qrnxVA f+nNPX++9FL8Vj/xVNv1/wCPNP8A0N6KYj1JakFRrUgqSh1FJS0AMf7pqzB/qI/90VWf7tWYOYI/ 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 Wnz3D42xxXKMTkZAGD1I5x6c1yVh4P8AD7fEDWbGTQtOfT47C0kjt5LdTGrlpgWVCMZwoyf8TXWW /hTw5aTQzW2gaVDLDjynjs41MfO75SBxzzx3oA16KKKACiiigAooooAKr2V/Z6larc2N3BdW7EhZ YJA6Eg4PI44NWK5KTwtc2Xjyy1vRpFtrG483+17cTMFmbYfLdY8Fd24kseD35ycgHUNcwJdR2zTR ieRGdIiw3MqkBiB3A3Ln6j1rF8J+JP8AhJNNnklgFte2tzJbXNtu3GNlYgfmMH2yR2rk9S13QpPi uLrVNesbK20G2EUSy3AjMlzNnevP3lCeXuA6HbnoRUXhDxjoGmR+ID593cNca3POhtbZ7hZRJgoU MakYKqeCc/Kx6U0m9kOzPUKKzdD1u31/T/tttb3kEZcqBd2zQswB4YBhypGCD784OQNKkIKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQEEAjoaWgDAwOlABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVVjUCWUg9WJq1VNeJ5B7 5pMaPKfiqM+Kbf8A680/9Deik+Kv/I02/J/48k/9DeimI9SWpR0qNegqQUihe1FFLQA1/u1Yh/1C fQVXf7pqxB/qE+lAmSUUUUxBRRRQAGm9RjvTqb3oAOq803GRmnd6WgY0Cjvz1xTsU0gZHGe1ADSB 6/Sk7jjmncDvTRwOP07UwAnA46Up+alQ5FBQZ6UgEORjH60/J9KT+H3p2aAEPTFNz2pxGcGkP5Uw InZdhG4Zp6uMjpUbxrkN+lSBR1xSAkByKWmq2TTqBBRRRQAUUUUAFFFFABRRRQAUUgpaAExzXn/h uR9A+I2teGBAwsLxDqVqVztj3H5xz0yxbpwNvvgeg1AbO2+3C++zw/axGYRPsG8Rkgld3XbkA46c UAeXk4/ZyjYJHJmxRkWTaikGUFc7TgduPwIHIroYIv8AhNPFlvqhy2gaNIwtASdl5dYH74AjDInI VufmBIOBzzjqbX9mqJBK0zNpcajzHz8zMBsyCeATtA9gOO3p0c9nbWYUTW8UMKbSA4CRhRyPYAfk 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 jrmuh0W3uLLw1plpeFftUNpFHLtAALqgDY9sg0AUNV8Z6dpuoppkMN3qWpFS8lnp0YmkhQLuDScg IDlQNxGSwx6ifQPFGn+IknW0M8N1bEC5s7uIwzwEjI3IeQCOh6HtXJeDL23tPiR4v02aI293c3Al iDLgyhSxzu7na6kD+6D1xTku4p/jr5djJuMWklb4rlwDnIViD8p5Q4I7e/IBsa34jvPDWsrJqdn5 vh+6eOJb+IgGykOFxKDj92eTvGccg9q6hUBHB69MGqmq6fHq2k3VhcRo8dxGUwwBwf4W5BGQcEHB wQDXL/CrV59S8HrbXYIurCVreQNkED7wGDyMA7R2+Xt0AB2yxgHNOLYpaTg4oAC4AoDDApPvA8Uo HANAhen40tFFABRRSAHHJz70ALTVYNkg5wcU6kGCTweKAFooooAKQDGaWigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAM0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABiiiigAooooA KKKKACiiigAo70UUAFFFHegAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApCMke1LRQAUYzRRQ AUUUUAFFFFABRRRQAUhGSDk0tFABQeRRRnFAABgYFFFFADXztOACfenU2T7h5I6dKdQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFV1wJpAB3qxVRWz dzL/AHSP5CgaPLfifn/hJ4On/Hon/oT0UfFDH/CTwcj/AI9E/wDQnooA9OWpBUa1IKQxR1pcUmOa XtQA1/ump4f9Sv0qB/umrEP+pX6UxMfRRRQIKKKKACiiigAooooAKKKKACiiigBO+aWiigBO9LSd 6KAFooooACcUUUUAFFFFAHM+L4PFEljbL4Xns4rh7gLcNc8bYuSSrYOOmD8pOCcYIrmrLwz4v8Na DffZdU0aBo4pJ2lgsnknupVU7WleRzuLYBY4zngYruta0s6xpxtFv76wferrcWUvlyKQe3BBBGQQ QRz0ziuUv/AkNtoN41x4j8T3jR27sGuNTfGFToVQAMDznKknJzmgdyDQfC1v4q8PadqWtatr9/Hc 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 ceAQMYxnPpOj+HNK0Hz20+12TXDbp7iR2lmmPbfI5LNjJxk8dqwviXb6nc+FoV0qzmurhL+2l2Q8 soWQMDgEHG4LnHQHJ4BoA1fFGjWuv6QmnTXf2W4aZJLOcNh1njPmKV6En5TkDB27sEdRh/D6/wBN lfUrSSH7P4nWXdq6TMDLLIP4gc5MQzhewBGBggnS8PeFpLG+m1rWrv8AtLW5mYCc52W0R6RQr0Vc AZPUnOSaqeKfh/b+I9Xt9Wg1G40y+ijKNNbD5n/unOQQVG4ZBBOeeABQB2NFYGheHr/RZUWTxNqe pWiRmNYL5YnPbDGQIGJGD1Jzn2rfoAOlFFFABRRRQAUUUUAHSiiigAppQE5706igBAoXoKWiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo6UUUAFFF FABRRRQAUUUUAGOc0UUUABAPUUUUUAFFFFABRRRQAUUUUAFFFFABRiiigApCqkglQSOhIpaKACii igAooooAKQqp6gUtFACBQBgAD6UuBRRQAUUUUAGAKKKKAEPHOKWkPtS0AFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFJ3paACiiigAooooAKKKKACiiigAooooAKKKKACq4TFxI2PvEH9AKsVVWTdNIM 5KtigaPJPiuP+Kqt+cf6En/ob0U/4qgnxTbHj/jyT/0N6KQj1NRUgpi9qkFBQUvailoEiN+lWIf9 Sv0qB/u1PB/qV+lAMkooopiCiiigAooooAKKKKACiiigAooooAKKKKACgnFFFABRRRmgBpJ3Dp9K dSHG4UtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFHegAooooAKKKKACjOaTNA60ALRRRQAUUUdqACiiigAooooAKKK B0oAKKKKACiiigAoooOe1ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFHWiigAooooAKKKKACiiigA ooooAKKKKACiiigAoooFABRRRQAUUUZ5oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKBnvRQAUUUUAFFFFABRRRQAGikPSkIBbBX8aA FzxmlzkZpDS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFU0VFuZsDBLZb64H9MVcqqyhbhn/vf/AKqBo8m+KzY8U23T/jyT/wBDeij4rZ/4Sm2/68k/9Dei kI9VWpBUa1IKCmKKWkpaBDH+7U8H+pX6VA/3asQ/6lfpQDH0UUUxBRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAIR8wNLSHqKWgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkz7UtFACCloooAKSlpMUANOTQCc88 0pPahRzQMdRRRQIKKKKACiiigAooooAQZ70vHSikzzQAtFFFABRRRQAUUUUAFFFFABRR360d6ACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiijIzigAooooAKKKKACiiigAooooA KKKKACiiigAopkpO3Axk/wAqUMMDmgB1FHaigAoopAcjNAC0nOaFJIyRiloAKKO1Jk+lAC0Umfak JORigBx6cdaKKQkCgBaK57VfGeh6RJ5Ut6k0wzmK3xI64xw2OF69yM9u9ZsHja71u4e28P6PJJJG gd5byQRooJ4+6TnPPcdD6VLlFaNnRDC1px51F8vd6L73p+O+h2ROKbjJ+8cdsVxgt/Ht9aF5NT0u xlzlEtY927oMEsG2jqeMn8+MTVovEMPhu8utW16WGWGVYVjgmAWU5xtBRVIPOfcDkehKaUb7m1LB e0slOKd7W13+Sd/lc9OGA2z8h04pTIi5LOowCTk9vWvKrbQ9ETTbjXbkaleWaIscLTXKxuwbh8HK nIORtzg++eI7638GWWk6fqVpoTz/AGgSRwh5NhVlI5cbs5z0xn+VL2keW+v4f5mkcDGUlBOTe2kd L2va7a29POx6m9/ZxuUe7gVxyVaQA9M+voQaf9oh8tJPOj8tyAr7hhiemD3zxj615LoNn4Yna4vd VlsLaMsUjsPOaNgcqSwIbcRz6Yqu9hpV544jsoUhisPNXyfJm3LkoGUq3Ysdv0NQqytdp6uy2/zN VltOU6kI1HeCbfu9unxd9Ox7MOlLXmz2fh7+wfOm1PVtJvXVoyrag7TBkYIwwGwQSQeMcNnjth33 irxDpGo3VnDq8s8UBMYaWJHDcD5gcZ+nzGrlUjH4nYww2XVcRfkauujuu3lbr3PZRRXndt4l8Wx6 g9tbxafrsduqGdrb5CC2cLv3YyMdlP4dtMfEG2tblLTVtMvbK58sNIBtlRCe2Qdx+u0UlUg+v6P7 tzJ4KvpyxvfXSzdvRXa+Z2NFY9h4p0PUpFitdSgaVojL5bHYwUckkHBGO4PStWKVJoUljdXR1DKy HIYHkEHuK0OQd3o6CkByeetMdgWB6YoGSDtS0gYGloEFAoooAKKKTOTgUALRRQSB1NABRSEgDJpc 56UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR3ooAKKKM4oAQ+1LR24o60AFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFVI3Mi xsU2sVyy8cN3H51bql8y3kg52HB+lA0eU/FY48U2w4/48k6/770U34sZ/wCEqt/+vJP/AEN6KYz1 de1SCo1qQHipAWlpKWgQx/u1PB/qVqB/u1PB/qFoBklFFFMQUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUd6KKACiiigBD1FLTTncKdQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACUClpDntQACg0Ac9aW gAooooAKKKKACiiigBM8mlowM5xzRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRTWIAyTgUAJIC cYAoI3L8y0rDIowd2cn6UAKAAAAMD09KXoKB0ooAQHIzQMAYFAXaDigDj3oAiVtq5wevQ1KKaR8o z60+gbCk6dBxS1SvNRtdMs3ur65jghU43SHH4D1PsKASvoWmbC8iql/qVjp8O+8vILdQNw8xwCRk DgHryR+JFcNrvxHkKyQ6LbkxMCovpQVAPHKqRzjnrjp0qE6fp+lQf2r4ouhq2pXkRkt0ZWMJxjAD bQBncvYAdh1qOdXstf09WejDLais6qa5tla7fy6ed2rdixqPxIuLidovD2lvdAHas0kUjkt3HlqN 3cdSp4PFY3iiXU7W/sodcurm9jlhWS5tUk8qEknLRgDhguBgsM+/Jxb1Hxve6he2M2j293Fcw7hL CpMscm7AwVXqOPvHBGe1X28H654jmS98QXaWzhBGIoUDMBjqedoOTzjNYynJ/C7u/T/O/wCp6VKn Sw04SrQUI2e7vK/TpdPqmkl57I5ibUfDtuYVstES5tmQ+fDeg7xIBhCrBiBzknA59sU2z1rXZdMt dO0+GbyYy6K9rbsxlRsgKxIOQCW6Y7elegWPw90GzgVLi3F/JwfMu8NyB2AAAHfpXVRjagGf6VMa M93oZ1c0w0UlCDnbrN9e9tvy+88n0HRvGllYtp1gpsbRzvbe6AAEAEAgEqee2OR1HWtyX4d3V2kM N74jup4IEKwq0eSme+WY5+p5/Diu5iQfMeuTUp2qvOAoH5Vt7NtWk2zilmlbn56cYxfdJX183dnJ HwFoxihgdruVIdxG64bkt14GAPwA6CoI/h3oESykx3ZLEHd53TGOmB/OuotNQs76ZzZ3dvcBOHMM ivtPocHipSwzJg9D81P2cexzrG4laKpL736nNp8PfD/7xzDcEOhUKbhsL05HfPHX3NV3+GWiuxIu L5VJztEqkD815/GuuDhY+mBj0p8efLXcQTjqKHSh2/T8g+vYr/n7L/wJ/wCZxk/w002WNvLv76OV iCXJRsnvnK81gX/w31GNx9nuoLk7yFUjYdmOpz3zxj05z2r1Wo32kjOeOQRUSw8JI6KGb4yjop3X nr/wfxPJLDRvFnhe8bULPSVcCJkkxslG3IJ+VWDE8DGPyrmXM5AMzXDTEDdJOzGQ+mS3OenWvoFV wefvVV1LSbHV7dYb+1iuEVtyrIMgH1Hofes54duKipaI7sPnijVdSrTV5btaO3zv+h51okPgfyJb e/1GKaSVvNWW8ia32LtA2bjhTzuOM9++KzdO1zWvDtpc2+mX8F3a26KZGkBliiZuB5ZypIJI4HGc 8dSez1D4caTdkPaSz2LbizKjb1PttbOB9MVw2teEdY0Z2L2rXNt0FxboXBH+0o+Zfyx71NRzpr3F b8f69Trws8HipSjUqOSlaynutejVld9lb0djvLLx3YPPDa6t/wASu9dPMCzsPLkTbuDK/Tp645yO cVvWOq2Wr27T6fdW95Cr7GeGQOobAOMjvgj868nt9ct7Xw1LaQETyS3SkQ3sYkQQhegIx3XBxjHY VBbajHo2rfadFuCpVWeWF3/0cgr9zaNpJGcDryBW6rKyb/rt+Hr+pwTyecnLkVmr2T2dt9enlffu e2qAScgcU+vPtI+J1vcXaxahp7WcLvtWdZQ6qOxbgEc8cA/4d5b3MF3bpPbTRzQuAVkjYMrD1BFa pprR3PJr4erQly1Y2ZLTXzjj+dOpCe3emYC0gCgnGATyaB0HOaYUHm59R60ASUhwRilpCABnHTmg CM5IUED1qQdKQYIzgc0cZ2/yoAXA3Z74xS0zb+8z7U+gAooooAO9FFFABRRRQAUUUUAFFH40UAFI OlLRQAnXPH/16WmnseadQAUhGRijcMkZ5HamLLv7YB6ZPJ/CgB/AGMUtJkAZJpPMXdtzQA6iiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKiLT+eAscZhxy5kIYdf4cY/u9+59OQCWiiigA ooooAKKKKACiiigAooooAKKKKACqrgi5b0IBq1UL4M3uBSY0eR/FX/kaLbhf+PJOv++9FN+Kyk+K 4P8ArzTvj+N6KWgz1ZakFRrUgNMBaWkpaBEb9KsW/wDqFqB/u1Nb/wCoX8f50AyWiiimIKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigBhb96q44IJzT6aR8wNOoAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKTIzjvS0 gBDE54PagBaD05oowM5oAQADoKOppTzQKACjNFIRmgBaTsOKUZ70UAN7YHFOoIz1rzjxJ4/lZmtd DcoqMVkvCqkNjjEec8ZzyR9PWplKMFeTsdOFwlXFT5KS/wAl6/16HV654qsdDnitXjnub2UZS2t1 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 I0szpklxpayLFb3VtGTNHLuys6uPupwT9Bu9qua3f6l4c0K7tNSu7PWEuW8u0W6OyRkx83mKo+cA kcDt1PIAakv62/r+kNYeoq0YTTblZuLer876fo1e3cwWD+OvGqNiWOMYBRsfu4Vxu/EkkZ9x6ceu QW8NrCsNvEkUSfdSNQqj6AVjeFoNIbSU1DSdOisluwDIqRqpJUkc464Oa3acINXct2YY/E+1koQX LGKsl+d/MKKKK0OA4Pxh4M+0NJqmlh/tLHdPEX+V+PvDPRuOg4NcFpsmnzXtudSaRrA7jJtyW+YH p/wIgn8a94Bz34rzjxv4SMc0usWILI3zXEAXO3gfOv8AUfjxznixFO3vR26n02U5lzL6rXla+ifV dLf5diz4H8WtOy6TqlwWlwBbTSEfOBgbGYnLP3HHIz3HPf14Va6U+ozR21lNGbh1ZykjeUVKkABS fvMc5H0r1Xwp4lh8RadkgpeQqgnQgDJI++oyTtJzjPoa3oVHOOu5xZvgYUajqUfh6r+V/wCT6HQU Uxyw27cdec0+tjxgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEN LRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFQ SDE+f9mp6rM265YdlAH9aTGjyX4rn/iqbbnH+hJ/6G9FJ8Vwf+EptsZ/48k/9DeimM9WWng0xaeK QDqKKKBDX6VPB/qVqBxxU1v/AKhfx/nQDJaKKKYgooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKAGn/WDgd+fSnU0j94D7EU6gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACgjNFFABiiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKQkKpJ6DrQBieKfEMfh3 S/P2+ZcSt5cKZH3sfeIyMqO+Oa8wjvYtLSxvre4mk1hpJXvC0jKME4CsvfI5H8umNrVWl8XapqGo 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 BwD7Dp8VzDYW0VzLFJMkSrK0alVZgACQCTgUoVOe+licZhKeHjBxqKTd722VtPnrfXTbY818V6R/ wi2uQalpltBFbSDES+SCkUgA4A6DPUdOQfapNH8hNKtNZ0RSt/paiPUYRhTdRYBPpk+jHjgg5I49 Hv8AT7XVLN7W9gSaF+oYdPcHsR6jkV4y8V5od1e6WbfZdTL9naZ8jdGT2AOMMQDnnuKwkvZSv0/J /wDBPWwtT+0KHs2/fja/96Pn/h/PXd6ew2Gow6tp9rf2pcQzDcoddp645H4GrxHSvPfC1zb6B4jk 0SO8WfTrkb4Zjt5uR8rrkdM7eh9B68+gnjBzXUnc8LEUlSqOK26enT/g+Y6ik/i/ClpnOFFFFACE 4x70uBSMMj6Uo6UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUgULnAAycnHrS0AFFI2Sp2kBscEjIzS0AFFFFABRRRQA UUUUAFVmA+0seM8ZxVmqu0C6kPqQf0pMaPJvivj/AISm26/8eSdMf33opPixkeKrb/ryT/0N6KYz 1YVIOlRjoKeKQDqWkpaBDH6VNb/6hfx/nUD9Knt/9Qv4/wA6AZLRRRTEFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAhPIpaTuKXpQAUUUZ5xQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUg9KAFooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACikPFLQAUUUUAFFFFABRRRQAUUhOKWgAooooAKKKKACiiigAoJx1oprD5T/AFoAdmim c45p4oAK4zx9fXEkFpodiY2nv5FV1DsHVQw2n5eik9SewPB5x11xcQ2lu89xKkUMYy8kjBVUepJr yMi41ttV1y3Mtvf3E+IPKmWJxEECuTyD8qFMsp4JrKrK0dP6XU9LLaSdT2srWjtfbme1/Lq/JEuq y6iIF8OpDELWwmiieSPcfMlkAIJ9iztgYPQGu58LeGV0ODfcxWb3w3ILmCMqxjJB2sT15HtwB6Vz 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 891P4DrkcVw2reAtbjlie21CTU40wUN1MRJEQcjbnIxnB4IxjpXNUUlaWvnb/hz3cJXw806doxun bminZ9PetZrvzJPork0/h3xyjvFDrDTLwVlN20eeOeMMRyT69B+F19E8dW9oDB4himmzgxOFwBxy HMZyeOhHrzUtpc/EC3VIpLDTJ1SNRuklIdj7sDgn1+UDmopdQ+IquWGl6aU3cIqbiBnjJ80enXHc VacVs2/vMnOs2vdpaf8AXvX8fysVW0zxlP4i0m7vkgkaJ2xJGQ8cC9G3L8vJHTGf0rpfEk/iSI24 0C2glHzGcykbu20KCyjnJ5z2rFj13xzb/JeeHYLhzJhTB8gI44zvbHJ+8cdDxVqbxL4mhlLHwhKY EwHK3SsffaFBLdscfl2qMfdbT37/APBMqqqTlFyjC0Va3MrW1fSV7699fvKdrofivV9btbrXbtbe 0tnD+XbTld+CDt2rwRkDO49OnrXeVxlz49ntPKW48N6lE8x2xBxtDsWCgZPTOf5fUdhEzvCjSR+W 5UFkznae4z3qo7b3OPEOcrSlFRVtLKy/4Pq7nnHxEZLfVrdraER3U0Dia4QlXZBjC59OTn9a1vsi 2HivwpZ4gWW3tJo3MKFVIEYCgAkkDhiMnse9VPGcUl74w0W1NsbmFUZzCr7C4yC2SeMYUH8CO9Zf h+TTo/H0X9nyA2HmOIWPAOYzwM843ZA/DFYN++/VL8j3IwU8JB9Ywk/W90tfyVttttPU6KKK6T5s KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqKTlxUtQyH98PTFAHkXxWYjxVbj/p zT/0N6KZ8V8/8JXb4Gf9DT/0N6KRR6wtSCo1qSgApaKKBDG6VPbf8e6/j/OoW+7Utt/qF/H+dAMm ooopiCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACjv RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF 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 hZ2+q6bNaS4aGeMruXBwD0YZyMjgiqOVJc1paC2WpWOpQ+bZXkFxHgEtFIGxnpnHSrdeNpoOoR+K bvT9IuDJc2qhlud4hfaQpPI9yAccGtax8ba3oQki12ynmiTAEkyGMjt97GGB45/U1jGtF6PR+Z6l bKZJXozU9E7bS112/p+R6dRXO6N400nWJordZHguZQSkUy43YxwGGVJ54GcnBOOK1/7TsTqx0r7X EL8QC4+zlsOYyxXeB3GQRntx6itjzJ05U5cs1Z+ZaJwwGDyOvajqCKXqKoaw0kei3zwuI5BA5Vyx G07TzkEY+uRQ3bUUY8zSPLE16CDUdQl1DQbOee5LRzDeVCgNyMYIJyqc8cjOa6z4bvIdMvVdmASc BYiWwnygnAPTk+teYb1dN8kkhkxnLZJLH1JP1ya9b8C28w0u61G4QLLf3JmwrArt2qo28kgcE4PP JrioT556n1Oc0oUcNZLdrq+i6X8u3odVRScA4pa7T5QKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAqCUfvQfap6gkUecCfSkxo8g+K//I1W/wD15J/6G9FL8VyP+Eqt/wDryT/0N6KY j1daeKYtSCkUFLSUtAkNfpUtr/qB9T/OoX6VNa/6hfqf50AyaiiimIKKKKACiiigAooooAKKKKAC iiigAopAABgADvxS0AFFFFABRRRQAUUUUAFFHeigAooPSigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooyM470UAFFFFABSGloNACYwKOmDRzjigntQAfxU tNA55606gBD04oAxQRkY7UYx9KAFpreucYpc8UDBWgAHPelpOlLQAUUUUAFFFFABRRRQAUgGB60t FABRRRQAUUUUAFFFFABRRRQACikAwMUtABRRRQAUUUUAHrSDOOetLRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUE4oAKKKKACiiigAooo7cUARzvJHbyPFF5sqoSke7bvOOBk9M+tcvHr/i64YeV 4LESHnN3qkaEDAwMIH5zn8MdyQOsopp2eoHIfb/iBJcZTQNCiiwDtl1KQnoONwi65z2xV3w0ni9J rz/hJ5NHeJyrW39nmTMfXcrbgMjpg9eue2Oi70gOe1IA+lec/EW9l8OaxpWuadBDLqcoktUjeQky ZAxtj74yeR1O0HqMej15J8R7SXVviHpOnod5WyMyROx2EgyORgc5YRAcUm2lc3w8mp2XXT79B3h+ xHhPU013X47zUdWuJGtbm6M0cgtNzLhcbiQMfNnjhiAo4FesV5FfNr9vbXXiCGzjtbC+UJJaMxkT lQN7KMdwBuOG5Ar1OxuhdQlWmt3uISI7kW77ljlwCy+o6555wRUU5qS0dzoxmG9koyune+zvtbTy av5+R59428K3GhXLeM/Cf+j6lbgNd2yD93cxDG4lR7DLAdQMj5gDVebx1b6pfaRrOm2d5blHMV6Z ItwCFkDR5BwfUcjnHriuy1/w42v6ppxupY20q33tNbFMtK5AC89hjdn6nrnjiPhfZJe+EfEWlkLJ am+eNVJ5J2KOT64C05XtoRh5UYNc+t1Z9LX0+bW687dj0+9gkuLC4gikaOSSNkV1OCpIxkEcj61w mm3Hj1NOgMawXaKNgZpY5GbnBy4bBwc8+x4NXNO8f6FpfhnTzql5JHOluizLHayyGNhhcPsVthJw BkjPasfQPHGjaXBqP9j6T4j1CCW7MiWdnpLnyMqu4Ak7cZ5xkY3dKbi+bRhTmqUJRnBNprdPz6pr 7maNja6dr2pG+8Pah/Yt+qPHcWxgAlzuBLFCeQf73fjuOLU8+s6dYzQ+JNMj1nTywRpraMO+w4+Z 48DOMEnA+lUNQml1u881Ph9riXIxuuzcW9tIvAKlWEvJwefQ5HUGr1hqnja3tY7b/hD42ERKLLd6 6rO4HRmIiOc/n6+tKEHtb/L5f195U66lZ7272Ul81v5N/chBoMbwQa34Hv4rQNGcQxjdbXQyOGXP ynIwWxkcjiuvsJriezSS6thbTHO6LzA+3k45HXjmsHQrjxSlxfS+JLbRLLTk/wCPZbSZ2ZQOpdmA UjHfAPB4xXNeJ/Fs2oWctzpt1cQaBDKsF5d20TGYE7TuXHITB6jByPTq2+Va/wBf1/ViYxniNHbT 7T+e/dvpo2+mh6ZRXn2m/EXQLHS7a1s7jXNekCErLDp08skncAllGTjgc/w8mrp+IYkZltPCniq4 UOAJF0wxq6nADqXK8EkcHBAySAATVHI1Z2Oz74pa5JvEfigufK8C3ZUMATLqFspIzgkAMckcEZxn nkYGZNM1Dxpc6/GNQ0LTbPR2RlbbemSdHHRsgbWU4xtwCM5z2oEdR3rzfx5djxNfQ+HLLUobfTom D6zfGVRHbgsFWLd081jkBD6gkGvRLiN5reWJJpIHdSqyxhSyEj7w3AjI9wR7GuX1jw7pukfDHV9J iiL26afOzvLhpJZNhJlc45csN27HXmi1yovld0ZVt4G1PQ9Nv4rfxjqUVj5UhSK1tLeOQDbxmQoS TjPI2nJ421T8HeD4vEPhTStX1vV9evJ7q1DSQtq0qxc+gRgewPJ69afYeBbi48Owane+K/FFxdya eJHt11YrD5jR5wCuOM9MsR65FS+CvCek634C0mfUY72UTwBpbc6lcG3JyeBGJPLK8cADFJJLRbBK Tk+aT1Oy0PQrDQbR4NP+0CORvMYTXUs/OMcGRiQOO1aS55PqeKpaPo2n6BpcOmaXbC3s4QRHGGLY ySTySSeSepq8OlMkyNe0zVdSjgGleIJ9IeMtvMdtFMJARxkOpxg46EcEg9iMeTwPfzSK0njnxNhe AI5YE43bucRc89/TjpxXTajeNp+nT3aWdzeNEu4W9sFMj+yhiATjnGee3PFctF471C6ty9t4F8TF 1ALLNDDCOgLY3SAkgE445IxTvpYB8Xw500QCK71fxFfKWy/2jWJwH6k5CMo6kHgDlR75qXXwu0iK 08rRTJYuGBG+R5kI7jDHI/A/hVhvEfjO4jdbXwM1vKWXy3u9Rh2bepLBCSD2AGevOK621llmtIpZ 7dreVlBeFmDFD3GRwfqKzlBTVmb0MRVw8+ek7M5rwNPfpp1xpepWssE1i4VN6nBRhkANnDYO7kcY 2jqDXVA5pRQBVJWViKs/aTc7Wv0/y8jzCK+8N2HxR8X3HiGfS4dgsTbNesm7esW5vL3c5H7s4XJz t9q6jQvG/h7XNXuNI0i4aWWDLbo7dvKccFirgbeCwB5HPrXN6Tq/h7T/AIleMNS1bVNMs5jJb21v 9smjjkUJEN5Uk9CSuQP7oz2A6fTPH3hXWtWXStN1q2ur1s7Y4wxD4BJKtjDABTyDTMyj8OJPN0XV JMxkHWr45Q/e/fNyR2P07Y9a7KuN+GrRtoOpeWGCjWL4AMxbH75u5JP/ANfNdlQAmearXlnDeW0l rcIskMqkMjDgiub1MeP31iePS28OR6ZkCO4uUmMyg4ydinaSoz1IBOOlK1h49Yg/29oKHnhdLkxy R6zeg/XvwQmk1ZlRbi7o8+tfBl5ea74mtdLkt3htNQSIR3EjZKmNW67Tkjd+laQuPFXg50jeQm2w QiY863ABHoMoOf8AZ6mmaVB4ii1DxbN/wlUOmmzvka9uk0zzRO3lrgqrOdo27QQATnoelWL+21Hx F9hsNN8d3l7DqMpe4j+yRKYY12licKGTB2gKeufrWUqTinOLt+T/AK8z1sPjpygqVeClBX6a93Z9 7Gp4R17QRqF6ztLbahfSeZJJdMojb0RG445PBAJ57YruVnhntlmSWKSAjO9WDLj69K5e0+HtgtgY NRvb/U7gMSt5czsZgvZSc/MASSN2e3pXPaj4Q1Tw/CiaRqF5c/a2MEkECbMhh95sNgem7AxnOQKT nyfEvu9SXToYufNGpyt20l6fzLoul0tCzZadozaW/iXxRbR20N1dxtAizF449zIEJKccyHqeADzj tf8AiDF/ZN/oXjGKNWOlXPlXmOGNtN+7Y++1mU49zyOa5Dxd4hj1Hw7p3g2a1mtmaaC3vyuMpGgB kZVXPA4PTnBAHQ16alxpHizQLqytZw9ncQPbSKg8t0Vl2/dYZU4PGRV0oqMLR/DY5sW685c9VO2y vey8vu/zNvp0rmPHF5GuiGw+2W9rLenapmZlDKMFhlenYc8HOO9T+DL++v8Awtbf2oc6pbM9re9M mWNihJx/ewGHqGB6EVyPjKM634wi06FY4pbaLHmyHhgwVu2T6DGPfpRVlywbf/BNMsoqpiE5Oyjr f0/4NjnDocj6XNeW88E6QBBMkcm5w7NtACgdM8AnGcV0klrrHhnxda6R4ZOnGe90gPImoBkjklic gyEoCxciQDHTC4zwKy9P0HU/+EgsvD96FiTeLqeOJ8BkGMsSMbugUem6t/xDey6d8WNLuYtNu9Sc 6POv2a0CM6L5ikvh2UAdBnPOQBmscPCOrX9dztzrETm403PmW+nZ7fPT8TX/ALF8Z3MQFx4utbdv KCf6FpSj5ucsTI7ZPTpge1cxqPh+7tviZ4QXUdf1DU7iY3EhlfZEYRCqsAixqFVXJCv3YBRnFdDN 4o8VzW0Mmm+BLw+YgY/bb6CHbkrgFQzN0JJyBjHc8VXS4ub/AOJPh5dSsI7a+t9Iu55Ilm81YmaS JBtbAzkA9u9dfQ8I7uiiikIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACoJj+8X6VPUM v+sXjtSY0eP/ABWOPFdv/wBeaf8Aob0UvxXBPiq2wCf9CTp/vvRVCPV1qQdKiXtUgqShaWjtSUCQ 1ulTWv8Ax7r+P86hbpU1r/qB9T/OgGTUUUUxBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUfSikFAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAI2cHHWgZpaKACk5PWlxRQAYxTSCDxTqKACiiigAooooAK KKKACiiigAooooAKKKKACiiigBMUtFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUd6KKA CiiigAooooAKKKKACkNLRQAUd/aiigAooooAKKKKAMa68W+G7G5kt7vxDpNvPEdskU17GjIfQgtk VRm+I3gyB9j+JtMLbgoEdwr5JAIxtzkYI56fka1ZvD2iXGoHUJ9H0+W9LK5uXtkaTcv3TuIzkYGD 2rQ2LuDbRkdDj/PqaAOTb4n+DlYgawr4bH7uGR+MZz8qngdCegPB5p0nxE0f7M0trZa5eMrshig0 i43ArncDuQAYxyCeK6yinpYehQ0bVU1nTUvFs76zLEhoL63aGVCOxU9fqCQexrg/ibZ3um6vovi6 zSaSGxkEd6kTNu8rdkEADGCGlViSMbl7ZI9LqOeCK5t5IJ4klhlUpJHIoZXUjBBB4II7UgTs7nkl /qNnYRaYbCzmOn2ytPZETOYpt53KJQ38SMDkE5BBHFd1oUWq2/iDVhexNJaTiKa3ulEe0/KAykrh ic9MggAdeeeE8aeBX8OWT6houo7dPNwZJLG+cmGFpCB+62jKgkgY57dKx9P8Q+KNGubSIvZQxWxY KskszRhX5LNHxuGCNo6rg8c4rnU+WbjL5f09T3JReKwylSjeWvNo2973T7v9bdrereM/E9t4W8PT 3ckg+1yKY7SEYLSSngYHcAkE+gB69Kwvh/4NitPAMNrqCzLLestzIqs0TxgKojXK4YEKi5B7lqu6 T4NhvNVh8S69qA1u/IWW0JjCW9qDhh5SZPfBDMSeAevNdlXRseGm07o5Y+AdCELRW8Nxbh/vMly5 J9B8xIxkA/UCtvSdJtdGsUtLUNsA+ZnOWc4xkn1/T0q9RUKEY6pGlSvVq/xJN+ruIc59qzta1uy0 Gw+13zPsJ2oiLuZ26hQPXjvgVHrutNo9vC0Nhc31xNJ5UUNuhPOMksR90ADrXOf8ItBrk8Goa3e3 tpqUx3myNzG6x4PCqpBG0heQOuTnJ5Dk2lpuaUaUNJ1naPla79F289vV6GdbWWqeOj9t1oG30gxs bZIXxtfcuGxj5+AfmP4AA1L8PPEVn/Z6aXMvlNJIzQzsmEnyfuFs8v7emB2q3f3mqat4sOg6HcGy sLGJRdSxxjapODsBxjIXGAMdTnpUPiHWbe5mj8N6DpcdzdQzIwwm2K3cHOVxjkdzwBk9TlayjFRl zN+X/Df5L8z1Jc9an7DlSTtJJPSCtvK66rV69urNBC/hHW44E8mHw9eOTmQqiWkmzhU5ACHb0x1P B7V1qlXUOjBlbkEHgiuds7+y14Xvh7VfKnv7ZV+0J5WxJMgMHjDEnAJHPY4PcVi2XiF/BSTaJq0c tzDahfsUluiBjDt4VhkAEYxnv+p0Uklqzz/q9Sr8MffVrq2rXdfhf7+9u+xnrS1W0+8/tDT7e8EE 0AmQP5U67XTPZgCcGrNWcT0M3W4NYuLONdEvbS0uRKpZ7q3MysncYDKQehzntjvkc/d+GvFmoafc Wd34vtzFcxvFKsekqBtYcgEuTkcjPoemea7KigDg38La5pnhwRyeMLsQWNg0fk29nBFG6qnAO5WI 6AZz0HYnNZ3hLwY2r+DfD11J4q8RwQrao4tLK7S3iXdglMogcqDwMsSBxkciu28VXb2PhLWLuOF5 nis5XCRsAThD3J7dfX0yeKofDwxn4eaCIgvlrZooKnIbAxu+pxn8aAKUvw10y44utZ8SXCbkbZLr ExACnJX73RsDPfgYK119vAltbRW8ZcpEgRS7l2wBjliSSfc8mpKKACiuOvD8SG1K9+w/8ItHZKxN oJ1uGd13YAcqQAcZJIBAOAM8kSLB8Qir7tQ8MKSeALGc4H180c4oA62iuUudG8ZzTSeR4utLeLJ8 sDSVdsFt3JL4JA+UYA46881AvhHxGby2vJvHepNLFndGlrCsTBiCw2YwemAW3FR0ppXA7Korm4it LWa5mbbFCjSO3ooGSal79Pxrjtbll8V6yfDNkx/su3b/AIndwjbTjAZbZeOS+Rv7BMgnLUgM/wAA +GdO1TQE8R6zo1lNqOrXD6krXESTNCkjbowrEcYXaeAPzrvhDEJRKI08wLtD7RnGc4z6ZpyqFUKo AUDAA7VzWseLV8Nasket2xg0q5dY7bUYzuRXKnKSjqpJHBAIIPJGKAKPwyZX8N3zI8rodXvirSJt yPPbkc8j+uR2rqbnU7CzlEV1fW0EmAwSWVVJBJAOCfUH8q8v8P8AjCPRfBRSxjeae4v7uS1E8ZCi MzsdzDIx1PAPXrisvRtF1HxPqFwU+Z8mW4uZcH5jnHpknGOOgH0FY1K8YOy1Z62EyqVak69WXJBd Wt/y/wCH0R7avTIwc9xS8V5f4R8R6hpGrx6Fqcii2VjCVkcM1s+BtXfnGzsBz94YwOKXxtZano/i CLWrW9u2jldSB5rBIWQDCkA/cPPHTlh/FVe1jy83T8vUy/syr7f2DaTautdH6Pz6XsaPhXT49S1b x1a30HmW82qbSSGAYeWuAD6jg5HQ88cVHd/D/UNOlN5oepuZlYFY5P3bfeHG9ewHYg5xzT/hfe/2 n/wlOoLGvlXOsySJKBjcPLTA9wF28+pNegU5QUnd7mFDGVaCcYPR7p6p/eebWvjHWtA1BrXxLBPP DhgkiQhZGYN1BG1WXHpz061r2OoeH9Z8creQ3E5vYbYQwM21YpgwLNs/iLAdeg44zg46y6tory2k t50DxSqVZfUGvPLvwutnPbaF4ekLapIub7UpZMtZ25G0lVU4WRwWCcfwuc/LmkvaJ23X3G7rYWcJ Ts4TfRfD/ml5Xfl2JNM0628eeK9V12+hMmlWanS9N5YCXBzLODjn5vlVlOPlbvWvpPgS20jXo9Sj vZnEW/y4ioHDLjBPU4/w9K6PTNMstH02DT9Pto7a0gXZHFGMBR/iTkk9yc1bpuCvzdTlhiqsISpx l7r3R522oReEPinfRXUwg0vXrVbsPIdqLcxgIwXtllCk9SSy/jjafpF/q9sviC4M13dSQ/aJre1X bukzsCBtwIxtGRjoCBmr/wAXh9sttLsrS1M2pi4WSJ0IEiqTtKg9eW2nHGSncgCsfRbbxFo9pPfy +GNctdQwqpcWjwzCQHgB4d3HOc8HbwcYzUTXNJLt27/n9x6OBqKhSb5uWUrWutHG9nr0Xf0N74bW tzPf3+pyxp5O3yFYjDB8hmCg8gY255649ONe+iVPi7o9yrMWm0a6iK7RjCywsMH/AIEfpgetbPhf SZNF8PWtnOwa4ALzEc/OxLHnvjOM9wBWDr3hvU9S8f6ffW99fWVmdNlt5LizZN8TbgcYcMAHDdQC cxjpwaunFxik9zix1dV8ROotr6ei0X4HbVxs6GT4y2eMYj0KRyduT/rlAGe3U/l+UcPw1tViSO58 TeK7xVcsfP1iT94McBguBgHkYwcjrjijQ/Asfh3x5LqWnRiPSf7LFtHG9w8jxyGQMVUMCRHhVIG4 AEnA54s5DtqKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqCY/vFqeoJv9Yv0pMaP IPisT/wlVv0/480/9Deij4rg/wDCVW//AF5J/wChvRQI9YFPFMFPFBQtLSUUCGt0qa1P7n6GoW6V La/6n8TQBPRRRTEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRQORxQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRSHpQAtFMUjOKdnigBaKKKACikzRntQAtFJmloAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKD0pO1AC0UUUAQXtsLyymty5TzFK7gASvuAeK8Zks9WfxJNZXO+61HesTOH BDnaCjE44GAD07Gvba4bxPp7aRr0XiO306K5h2FJ1WNd6yEBEcHGe4BPYD8Rz1qUZWb0PXynFOjK VNJNyWl+/wCG/a+unUveD77UpbrV7HU70Xk9tKhMqD5VLL8yLwOFI9O/4Dq68L0bUP7CvbO4t42j u7c+TJvfMUkZwGBxyOR7jgNyRivbbS7t762S5tJ454ZBlZI2DKR9RV0p80bmeaYN4etfpLbp66dN dVbSxMSFBJIAHJJrlfEfixrO6j0jR40u9UnOwAHIhY4xuHrgk4zwBk8GtPxVY3Wp+Gr2ys40kmmU IFd9oI3DPOPTNYfhhLbQ72w0S60yCHUpbV5vtKBTuIblN2MkhSPbj6VTbvyr+v8AgmOHp0lT9tL3 mn8Py3fW3lp6i+EvDZimbV9QuJjq5mkNzGkw25IwBIF4J2nIHbcOOBhPE/hd9T1Q6rcawllbW0W6 JjEA0Lj+Lfkcd+xqxb2b+DE1fVb2/e6sJnE8qrB+8WQtgtwcYwQDxwFHpWRPY6942vJGmWfTtFEi OkF3GMsR6qCCc9eTgHBGcVEvhSbbf4/r/X3HVTnOVeVbnSjqr20tp7sU12drdutiaTPjuxitbbVp 7eO12/bStsQLliMAqd2NuQxwQe3pXS6B4d03w7bvFp8cg83BdpHLMcDj6AZPAwOaqT+H4NMuodQ0 q4XS44IytxGseYZY8hiXXI+YYbDdRuNczrOs3vjC5fRfD6CS1UCWW4LvEHAONjZUYGecc7h7A1Vk lzS6fn5ev/DkxjOuvZUZWpLV30t/iasm77b+RL4y11LXxBay6ZGZNRsVcSt5RZQHUAL23HnjBwM8 8nFa2n+DDLqI1PX7lNQujGqmMoBGpAAz/tH5fQDknGcYueFvC0Gg2qvMkUuoMD5k6joCfuqcA44H 1roqSg27y27EV8XGEVSw2yVnLq1e/wAlf520YUUUVqeaFFFFADJoY7iCSCZA8UilHU9GBGCKjs7S GwsreztkKW9vGsUali2FUAAZPJ4HU1PRQAUUUUAFFFFABRRRQAVU0/S7HSoXisbZIVd2kfb1dick knknnvVuigAqtqOnWerWE1jqFtHc2swxJFIuVbnI/EEAg9iAas0UAcJqPw3tU0S2tdJldZbRXWMT kHzQzl8MQByCT83X1yeap/D3UXsdSvNCu4TDMxMoD4DK4Ayh/DDD6N7V6PXn2tat4Z1q/e2kZ7DU 7ecLDqD22NkiN1LZ+78uDnHHccVj7NKpzrc9ShiatXDPDTTcVqnr7vr5fl02sdH4i8L2ev2zblWG 7HMdwq/MOnB9VOMfyrldL8SSaW83h3xWhMCKIlnZSRt5+83VlPGGA+uOcd/YpdR2UKX00U90q4kk ij8tWPqFycfnWfrnhnTteib7TEBcbNkdyvEkY9j6e3SnKPWK+Xcyw+Jhy+xr35ejW8X5eXdfNanM abZH4c3Gos6Xc+h3UxufMjQSNA21QxfABC4XqM/497DNHcQxzQuskUih0dTkMCMgiuEtNZv/AAmL PSPEUMD2cglEV1HIztsXB+ZMH+8BweMgc4JrtrO4gu7WOe2kEkDjKMowMVpHVaGeJpShZtb9Vs7a XX6/kixUENnbW9xcXENvHHNcsGnkVQGkIUKCx74AA/Cp6KZyCAhgCCCDyCKU8U1ESONY41VEUAKq jAAHYCuM8Yaw17eQeGdOmljvJ5kEsqOYwg+/t3cEkgZ47fXFJyUVdm1ChKtPlj6t9l1bMO4ltfEe o6pfpdLcX6OItKt7dwrnZ8wkUlgrDJYnIx8prodPs18Q3+mXeoXqzXWlwj7VbxSIUW5OPvBScEFS dvuPQg8df6TfaVcRQWFvL5165s2M8RLQs5XBSQZwNpOWGQAG9q9I8OeH7bw5pi2tt8zsd0sh/jb8 OOBgDjoBWFJt3fff+v02sepjnCnBOE79I6a8trProum127v12aKKCcAmug8UKKajiSNXAIDAEBlI P4g8inUAFFFFABRRRnmgAopCwHelyKADPGaKKKACiikxye3vQAtAOab8pJHel64/lQAtFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAVBMcSr9KnqCYDeppMaPIvirj/hKrfJP/Hmn/ob0UnxVP8AxVUHT/jzT/0J6KtDPVxTxUa1 IKgBaM0UUANfpUtp/qfxNRN0qW1/1H4mgTJ6KKKYgooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigBO+KWkBzzjH9KWgAIyMGkIzxS0nQADigAxRmgdOaDzQA tBGaKKAGnIPTPNA564zTqMUAFFFFABSZ9qWigAopKWgAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKO9FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRSdKWgAooooAKTHG OKWigBB0paTFLQAUhGRjGRS0UAeG61o9zo2pPbzIPJ3N5BYgbkGMHAOQOSB9K2fh1riabqkunXDF IL5gUZmAVZenfuwwOvUKMc10PxC8Pfa7P+17SEvd26kShf44vp6r1GPU1wd2LK1Omi2u57yE23my jeEEcj4JVSvII4ODk8dfTz1GVGpfot/mfZRrU8ywapT1k79NnHr130XS92e6Vla/oket6f5Rdorm NhJb3EZw8TjuD29PoaoeFPEVtq0MlmLiea4tustwqqZlycMAvbpngdvWukrv0ktD5OUamHq8slZr +tn0f4o5zwnrTa1o6RXz/wDEyiXFzFJGY36/KxXjqMHOACc4ApdKj1PRrrVo712uNLQm4tJWkDOM 5Z4zk9Afu+3foBmeK49P0HWrXxIqTtfndEIY8BJvkxl2I4wPTk4HpWVpuk6x44+z3esXp/sYM0kK oUDOwYgYAXpjPzE5xjA5yM7pP+9+f+S/4NjvWFjKm69+Wm++6faPftd6W31WkUMGtfEC9+1Tyyaf pIj2qkMxcbgf7vALcnkjA2jg813mj6VZ6NZC0s4RGoOXb+KRuBuY9zgD8sdKvW9tBZ28dvbQpDDG NqRouFUegFPAyfanCFtZas5cRinV9yC5YLZL7rvu/N3HdqKKK0OQKBRR3oATApaQelLQAUUUCgAo oooAKKO1FABRRRQAUUUUAFFFFACEZFec+OfCYieTWNPikdpHJuYgN/UAblH8x759a9HorOpTU42O vB4ueEqqpD5rujyXw340l0BmtL0z3VrtBWEEeZGSSfl3EfKcjgn6Y6H0HQfE1h4iE/2LzQYdu4SK BkHOCCCR2PvWq0Mb7fMRH2kEblBwR0NLHFHCu2KNUXOcKMDNOCmvidysVXw9aTnCnyt9mrfdy/qc X4s1Tw5NrdtpWtadeyvGV2XCAxom/j7wZWK8LnAI9ehx1un2VrYWMdtZoEt1BKAMW6nPU5zya5/x h4TbxEsM9vciG5gRlUSLlHBwcHuOh5Gep4NcjYR+MdAvWsbSC4cupZIz+9g65yGJ2ocnpkZyeOhr PnUJPmVvM6VQjXw0VSq6reMnb5q9l5/qesUVS0kaiulwDVmt3vgD5rW4IQnJxgH2xn3zV2tzymrO wyaaO3heaV1SNBuZmOABXGeFdPm1N7PxLqOpJc3bRfPAgQxwMwBK55IIz2xwcHNQ6wLrxLcNfpYP daPZJKsUCXRX7bKGAG5RxtDLx3+XPfFUjoNu9tBZeHZp7SbVtktyZmYSw2yEZHYqdxxg53cg8dM2 4t69Pz6afk+/3np0qXsqbi5WctHonZdU3e6dtbJeW90r/g6y1SfVrnWJrqL+zpkdIoYJC8bkMFUr 6KqqQMdd2a7kYqnpWmQ6Tpdvp9vvMUCBFZyCzepOABknJPA69qtquBweKqKaWu5xYmqqtRyirLp6 dP8AgjqKKKowCjvSEZpaADOOtFFFABR1oo74oAiblsDpTg2DtIOfpTuhHWkb6ZoGCsD6/iKdUQLh +1S0CCiikHr60ABGaAMDFLRQAgOfSloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACoJwfMX6VPUM331oY0eRfFT/kabfn/lzT /wBCeim/FXH/AAlUH/Xmnf8A2nopCPVl6CpB0qNakFBQtFFBoEhrdKmtf9R+JqFulTWv+p/E0Aya iiimIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKO9FFABRRRQAUUU UAJ1paKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAE5p aKOlABRRRQAV5b458Lx6SRqdksn2eWRvtIeTdsZiu0jPOCc556kV6lUF7ZW+o2ctpdxCWCVdroe4 /CsqtJVFZnbgMbLCVlNbdV3X9bHiuk3cNpqVgwChorhJVuTKYyueCrHkbeWB46E8+nr2h67Z6/YC 7tCy4JV4nI3xn0YAntg/jXluv+HY/Dmot9siuZtPkU/Z5YcD5yRhHJ6Y59yAMd8Z+h6lLo+rwX0L FWjBEq9PMT+7+P8AMCuajV9naEtv6+4+gx2Bhj6f1ihK7S89d21fvr6J6ens+p6RZaxDHFfQ+akc gkUbiuGHuCOPboauqoVQqgBQMADtWdomuWWv2P2qzZsA7ZI5Bh429GH+HFaVdqik7nys3Ne5K+nT t30DGetFFFMgKKKKACiiigAooooAKKKKACiigjNABRRRQAhOB2/GloooAKKKKACiiigAooooAKKK KAA8imgcY7U6igBOa5DVdbn13UF0DQ7iWHcT9p1GNSVjUA7kRh1fOBkEYzxyDibxB4oNvqVvoulp Fc39w2x8yELGOcgleQ2Aee3U03SNEPhq5SY30VlpS2yx/YjMWTzQMs298dMdcDPJIGKmTbdkdlKm qUfaVFq1eN+vS9teuyej1vpo8W206f4f3T6ndvFeWRgETvCGSaSQtwqoX2YAyckkjBxjJrrPC9ja 2uiW08Bkke6iSV55m3Sy5GQXPdsHk96yYLOfxVrNxcagzLplnMFgtNm6G5GzIkLHhgd+fl46DnBr sKmK+5bf1+CKxlaU3ebvN/F202X+dtNuwUUUVocIUUUUAFFFFAB3ooooAKKKKACkOewpaKAGBTuL YxmnDrzS0UAIc9qWiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqGb761NUE/30pMaPIfisM+Krfr/x5p/6G9FL 8VTjxVb/APXmn/oT0VQj1VakFRipBUlC9qKKKBDWNTWv+p/GoW6VLa/6o/WgbJ6KKKZIUUUUAFFF FABRRRQAUUUUABooooAKKKKACiiigAooooAKKKKACiiigAooooAKKO1FABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFNdwgBIY5IHyqT1OO1OooAKKKKAC iiigAooooAKKKKAI54I7mFopVDIwwQR1FeM+IPDd54cuY4pm+0W0gxFcBcZx2b0P489fXHtVU9R0 uy1a1NvfWyTxZyA38J9QeoPuOawrUVUV+p6eW5jLB1NdYvdfqjyO31f+wL63uNImnZhAjXUcxHlu xGSnA7c89u3BNen6B4lsfEEUn2ffDcRHEltNgSL74B+77/14rzjVvDMWja4INRuJ00qVgI71Yw23 PZ+w5zn25x1w3Xbq/wBK8WG6SZhcqFMVyqIvnxkDrt4IOMc+g9sZU6kqfxrTY9fF4OjjnH2Erz5b 3f2tt9LX/LZrt7FRXN6B4x0/WWhtZJEg1F0ZzB82OD0ViAGOMHA9/Q10ldi1PmatKdKbhUVmgooo oMwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooqveX1rp1q9zeXEcECfekkbA Geg+pPGKAtcsVy174gg1y+m8PaRdyrcPCzPfwYZICpXjqCW5xx0P0OMq78UL4l8u1stWh0i1eYxy PK+yeVCFKmPkbctlSOo4PHAPN6okV3funh6yFraWpeKGa1l+e6YBWO0qcue45JwM+1ZVaiha/X+t O/fsethcBeTVR8slrrsv8V+/Ra93pvpaBpd3a3GsLZX9vZWsEjW8moTqjTRyLg8AnaAd+Tnrx0PT eudKuPF17pt3fWEUWn27T5Sdm82VGAVTtwNpJXd7cYPJpdH8K3N2Te+Ip2uDKTJ9gbmKNjjJIycs MEcfL7HjHY0qcU4euv8AX/B1JxWNl7VzjJOXdeltH1uvKy+z3I4IUt4I4IwRHGoRQWJIAGByeT+N SUUVseWFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVDMfnW pqgm++ppMaPH/iuP+Krt/wDrzT/0N6Kf8Vcf8JVBz/y5p6f3noqhHqoqQVGtSCpKFoooxQA1ulTW v+pH1NQt0qa1/wBT+JoEyaiiimIKKKKACiiigAoopKAFoo60UAFFFIenvQAtFIOgpaACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAhurWC9tnt7mJJYXGGRxkGvMfGXhIaP tvNNileybPmoMv5GMYOeu089emB616pRWVSkqiszuwOPq4OopQ1XVdH/AMHzPnvAYjoRj8xXe6T4 7l03yYNTni1G1ZMi5tn3Sxnj5ZEODxk89TjoecbHiXwPY6hbTXOm2yW+o4LL5Z2JI3+0On44zXnM sZ06CSwudOMOofaMtNIvKxgfdU+55yOCMe2OSPPQbXT8P87+n/DfSyqYbNoR0d1utLrzv2+Tv2vZ ntdhqNnqlqtzY3Mc8J43I2cHuD6EdweRVqvFbjU9Q037LqdpdWtgLiJh5diNijaxBMiMWBOejN1y a6/RfiNFdERalbbHxlp7b5o1GMksDyo+m78K7IVYy0vqeBXyjEUqftYrmj5bq29169m1pud3RUNr d219bJcWs8c0L52vGwIODgjPsQR+FTVoeWFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRWBq PjPQNNSTzNQjllQkeVbnzH3A4K8cA545xXLahq+pa5BbT30t3pOkzsxij0/c9xMFzyXA+X5guBgZ yeoqZSUd/wCv677HXRwVWquZK0e7/JdW9OifnY6LXvG+l6L5kKP9su0IVoIGB8s5A+dui9enX2rz bVvEU+u3jy6l5zwozG0t43ASEkYBPGWPTk+pwADiqdhf6hpM8t7p001sFGJC2CAC3AfIxn+ua6PQ PA1zrUcN/eTC3s5Y1lXyzukkJYnkEYXjHr1Fccqs6qtD5/8AD/15n01HB4XLE6lZ3fR3180l0+96 dUihZ26eIJdK020tpEkgj8q5nADccsGI4AA+bqcnnivQPD/g6y0gxyyn7TcRSNJE7JjyyVCnaPcD /OK3NP0200uyhtLSIRwxKEUZJOB6k8nqevrVut6dFRfM9/wPCxmZ1Ky9nTuoduvXd+d9tugUUUVu eWFFFFABRRRQAjKroUdQysMEEZBFLRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAVFL95alqGX760MaPIPisxHiq3AP/Lmn/ob0UnxXH/FV2/8A15p/6G9FMR6wtPHSmCnj pUlC0YoooAa3Sprb/U/iahbpU9t/qBj1NAmS0UUUxBRRRQAUUUUAFJilooAKKKKACiikIyRyaAFo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA 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 oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKAM3UPD+kaq6vf6ba3DrnDSRAtz1561g6h8PNOu5UNtd3VpEuT5Cv vTJxkgNnb07ce1dhRUygpKzOiji69G3s5NW+77tjzfUfh3qHkKlpPYz7WcgtGYnZSAAGOWDdPQdT 61ZbRb1GSG+8I2+pYREku1uk82QoAFYsxDEYAGK7+ioVKK9Ox0vNK8klPW17PVPX0aPIdb0HVPM8 618KTWEILcQTLOz56cKSRgA8dOevSoVs9f8ADVzLImlMHiUgXa2zSEKw52svse4yPwr2SjFZywyc uZP07I6VndVwVOcE4/8Ab2vzbf439Dw2DRtRntYlj0e9CjczSi3cllOAowQOmD+daehR6loWq2t5 JoWoSg7omQQtklhxt47YOc8demK9ex3paUcKotO46+eVq0JU5RXK797/AH3/AOB0PMNW07xD4hIs INAi02zhlyIyyoGJGcsRwQMn7oPJ/KvZfDzXJFdJmtLMcchvM38+gHbrzXq2BS1boJ7v5dDKGcV6 VL2VJKK9L/m3+JwsHw6ktrpbmHxBeRzgeX5oUb/LwF2hs5HAwD2wMYwKvWfw58P2khZ4pblNmwRX DBlHvgAc/wCJrrKK09nHZ6nLLH4l7Tt0000W21r26duhHFBFAgSGNI0AACouAABgcD2AH4VJRRV2 scYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRmiigBCQBk0KwYZFLRQAUUVBeLcvZT rZyRxXRjYRSSoWVXxwSARkZ7ZoAWeOOYeVLGkkcilWVwCGU9RjvmuB8M6a2h/FbWtOsPLXS2sVuH hjxiFmceWuB93/lvgAdMZPQVLpa/E63VodRXw9eHyyI7lp5EKPwAzKqAMOGbaACdwG5cV0uhaM+l rdzTzCe/vpvPu7gKVV3wFAVSTtVVAUDJ4GSSSaBmyCD0NLRRQIQnAzQGBGaX2ooAaZFDAE8noPWk 81BxnHtT6MD0oAarhs4zx7UoPJpaKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACoZvvLU1QzffSkxo8e+K5x4rt/+vNP/Q3oo+LGf+Er t/8ArzT/ANDeiqEesin844pgqQVJQmT0NO7UlLQBEEZR80hb6iprT/Vt/vf0FMbpT7T7j/7/APQU CZYooopiCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEIO4EUtFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAVBP/AKxDU9QT/wCsT8aTGjx/4r/8jXB1/wCPNP8A0J6Kb8WefFkHy5/0 NP8A0J6KoR62KkHSohUo6VJQUtFAoAa3Sn2f3JP9/wDoKa3SnWh+R/Zv6CgRYooopiCiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAQjNLRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB UE/30qeoZ/vp+NJjR438WQT4tgwR/wAeadT/ALT0UfFn/kbYP+vNP/Qnoq0B62DUgqNakFQMWlpK WgBD0p1p9x/9/wDoKaelOtPuP/v/ANBQIsUUUUxBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFQTn94n41PUE/+sT8aTGjxv4sjPi2H r/x5p/6E9FL8WFB8Ww5/580/9CeirQj1taePWminCoKHUopop1ACHpT7X7j/AO//AEFMPSnWn3H/ AN/+goEWKKKKYgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACoJ/9ZH+NT1BP/rE/GgaPG/iz/yNsOT/AMuads/xPRS/Fj/kbYf+vNP/ AEJ6KYz1sVIOlRipB0qQFpaSl7UAI3SnWmNj4/v/ANBTTyKWzUKkmP7/APQUAyzRRRTJCiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAoozjrRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAVBPjen41PVefHmpkdjQxo8d+LBH/CWw8/8uaf+hPRR8Vyf+Eth5/5c0/8AQmoqkI9bWnioxUgq ChwpaSigVgPSn2v3H/3/AOgph6U60+4/+/8A0FAMsUUUUxBRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFV5/wDWp9DVioJ/vp+NJjR4 78VlJ8WQnH/Lmn/oT0U74pn/AIquHp/x5p1/3moq0B6uKkFRJk9RUo6VAx1FFAoAD0p9r9x/9/8A oKYelPtfuP8A739BQInooopiCiiigAooooAKKKKACiiigAooooAQsQQApPuMcUtFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUmRnGRk84paACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACikwASccmloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqvP/AKxPXBqxUE4/eR/j /ShjR4/8U13eKoSc/wDHmnQ/7TUVJ8UQP+Epg4P/AB6J0/3noqlsI9UFPFMFOFQUOpabTqAA9Kda fcf/AH/6CmHpT7T7j/739BQJliiiimIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKMc5oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooNABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVDN99Px/pU1Qz/fT8aGCPIfiiP+Kph6j/RE /wDQnopfigCPE8AJzi0Tk/7zUVSA9TFPFNHQU7BqChc0ufWkApdoPWgBCeKks/uP/v8A9BTfLBpV dbZCGBOTnigCzRTEkWQZU0+mSFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUhYDqQPrS5zQAUUUUAFFFGR60AFFGRjOaMigAoozSbgO4/OgBaKaHUkgMMjrzS7 h6igBaKTcB3FG5T0YfnQAtFNLqOrD86XcPUfnQAtFJuHqKMj1FAC0Um5fUfnRuX+8PzoAWik3L/e H50m9P7y/nQA6im70zjcv50pdR1YfnQAtFN3p/eX86PMTP31596AHUUm5f7w/OjI9RQAtFJketLk etABRSbh6ijcvqPzoAWik3L/AHh+dG5f7w/OgBaKb5if31/Ol3L6j86AFoppkQdXUfjQHQ9HU/jQ A6iml1HVh+dHmJ/fX86AHUU3zE/vr+dHmIf41/OgB1FIXUdWHPvSb1/vD86AHUU3en94fnR5if3l /OgB1FNDqejA/jShgehBoAWiml1HVgPxpQyt91gfoaAFopMj1oLqP4h+dAC0U3eo/iFAdT0YUAOo phlQdXA/GnblxnIoAWik3A9DSF1HVgMe9ADqKTcPr9KAQRkcigBaKM4pu8e/5UAOopMj3/KjIzig BaKTOPX8qNwzjPNAC0UmRjNG4e/5UALRTd49G/75NG8Y6N+RoAdRTC+P4WP4U1ZwwzskH1QigCWi mrIGXIDfipFAcHs35GgB1FJkUZ4zQAtFJu5AwefagMCM8/lQAtFMMijrkfhTftCejn6KaAJQc9KK j84f3HP/AAE00XCn+GQcZ5QigCaimCUH+F/++TR5q8/K/H+waAH0VH5wwTsk4/2DSfaFxnZL2/5Z t/hQBLRUZmVSAVk/BCaPOGT8kn/fBoAkoqPzh/ck/wC+DR5w5+WTj/YNAElFMD56I35YpPOGSNkm R/sn+dAElFMEoP8AC/8A3yaDJg/db8qAH0UwSA9Fb/vk0ofJxtb8RQA6ik3Djrz7UueM0AFFN34x lW5OOlAbIztb8qAHUU0vg42t9cUbuSNrUAOopnmfMRtb8qcGz2I+ooAWim7ucYP5UbucbWoAdRSZ 9jSFiP4WoAdRSA5HQ0m/BxsbHbigB1FML4HKt+AzSeaM4CP/AN80ASUUwyY/gf8AKjzP9h/yoAfR URmIOPKk59qXzv8ApnJ/3zQBJRURmwQPLk/75pPtI/55S/8AfBoAmoqqbtypMdtMcf3l25/OlWeY kgwNnGRSuFizRUAnYrnyZM9MYo+0MP8AlhKfoKYE9FReedufJl9xgcfrQJwf+Wco+qGgCWio/Nx/ yzk/75pVkBONrj6rQA+imb+AQrHPtikMoAzsf/vk0ASUVCbgAf6uX/vg07zhj7kn/fBoAkoqMygH Gx/++TQJs/wP/wB8mgCSimCQH+Fx9VNJ5o/uv/3yaAJKKYJAeit+WKUuAOjflQA6imlwMcHn2NLu 9j+VAC0UhYDsfyoz9fyoAWim7h6H8jSht3Yj6igBaKTcPQ/lRke/5UALRSAg+v5Ubh6H8jQAtFIW A6/yo3D3/KgBaKbvHv8AkaTzU7tigB9QTf6yP8akMqAE54HfHFQs4lkUp8wHXFA0eSfFAj/hKoxz xap/6E1FSfEuyup/FKvHbyuhtkwVQkdWoqkI9RToKeKKKgodSiiigQ5agvuq0UUANtD84q+v3RRR QIWiiimAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFMY/OKKKAGgnnk0/PFFFIB1FFFMBpPJ+lNydo570UUA OfhfxpaKKAK6DMTE9cHmo2JLHk9D/KiikMryE/2ehz2psJIhGCelFFMYqsfN6mpnJ39aKKAFB/eU jk880UUAI5Pk9aav+oj+lFFAhwJwOe9NfkDPrRRSGK3+sJqBvvUUUAWE/wBaP9002PggUUUAPA5X /dP86UdfwoooAdH/AKtqcneiigCMffqM9vrRRQAHq9RgDyhwKKKAHRgbl4qZwCTx2oooAgUDA+tO AG3oOtFFAEqAbW47UKBtHFFFAE7Abl4pf8aKKBDwB5Z4qMgbOlFFAEZA3rxQgHljgdTRRQMQAfpT k+5+NFFAD8DaOB1NSRgbm4FFFBIEDHQVFIB6UUUFAwG2PgdKeQDngUUUAOYD5uBQAMjgUUUCGuB5 g4qTAx0FFFACgDHSloooEFIOgoopgLTJPu/gf5UUUDQ+iiigQUyT7o+tFFAD6KKKACiiigAooooA KKKKACq1v/x83R/2h/IUUUAWaQdT9aKKAFooooAKKKKACiiigApsYwpx/eP86KKAHUUUUAFHQYFF FIAooopgFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQA1gMg4706iigAooooAhuQGgIIBG5ev1FNswBEcDHNFFLqPoc34 nJGpR4JH7kfzaiiigR//2aIAFiQBFyQBSWYBAAAAAZaU/yF2AAJoATXWBQABA9cFNdYFAQIDHR4j dgAB1wUjdgECHR46VgsAAzQBB5RoAg02YA+UugEQlLQAE9YwAAAA/wIBAAAAAAD/AgEAAAAAAP8C AQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAFPYBAAAX9gAAAB6UtAAs1gMAAgE11gUAAQPXBTXW BQECAx0eZjQBzgAWJAEXJAFJZgEAAAABlpT/IXYABGgBNdYFAAED1wU11gUBAgPOEjXWBQIDA/0E NdYFAwQDUgYjdgAB1wUjdgECzhIjdgID/QQjdgMEUgY6VgsAAzQBB5RlAg02YA+UugEQlLQAE9Yw AAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAFPYBAAAX9gAA AB6UtAAs1gMABAE11gUAAQPXBTXWBQECA84SNdYFAgMD/QQ11gUDBANSBmY0AfoAFiQBFyQBSWYB AAAAAZaU/yF2AAZoATXWBQABA9cFNdYFAQIDpAY11gUCAwOJBTXWBQMEA6EGNdYFBAUD/QQ11gUF BgNSBiN2AAHXBSN2AQKkBiN2AgOJBSN2AwShBiN2BAX9BCN2BQZSBjpWCwADNAEHlFsCDTZgD5S6 ARCUtAAT1jAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAU 9gEAABf2AAAAHpS0ACzWAwAGATXWBQABA9cFNdYFAQIDpAY11gUCAwOJBTXWBQMEA6EGNdYFBAUD /QQ11gUFBgNSBmY0AQoBFiQBFyQBSWYBAAAAAZaU/yF2AAdoATXWBQABA9cFNdYFAQIDxQI11gUC AwPfAzXWBQMEA4kFNdYFBAUDoQY11gUFBgP9BDXWBQYHA1IGI3YAAdcFI3YBAsUCI3YCA98DI3YD BIkFI3YEBaEGI3YFBv0EI3YGB1IGOlYLAAeUVQINNmAPlLoBEJS0ABPWMAAAAP8CAQAAAAAA/wIB AAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAABT2AQAAF/YAAAAelLQALNYDAAcBNdYF AAED1wU11gUBAgPFAjXWBQIDA98DNdYFAwQDiQU11gUEBQOhBjXWBQUGA/0ENdYFBgcDUgYWARYk ARckAUlmAQAAAAGWlP8hdgAHaAE11gUAAQPXBTXWBQECA8UCNdYFAgMD3wM11gUDBAOJBTXWBQQF A6EGNdYFBQYD/QQ11gUGBwNSBiN2AAHXBSN2AQLFAiN2AgPfAyN2AwSJBSN2BAWhBiN2BQb9BCN2 BgdSBjpWCwAHlGsCDTZgD5S6ARCUtAAT1jAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEA AAAAAP8CAQAAAAAA/wIBAAAU9gEAABf2AAAAHpS0ACzWAwABASzWAwIFASzWAwYHATXWBQABA9cF NdYFAQIDxQI11gUCAwPfAzXWBQMEA4kFNdYFBAUDoQY11gUFBgP9BDXWBQYHA1IGFgEWJAEXJAFJ ZgEAAAABlpT/IXYAB2gBNdYFAAED1wU11gUBAgPFAjXWBQIDA98DNdYFAwQDiQU11gUEBQOhBjXW BQUGA/0ENdYFBgcDUgYjdgAB1wUjdgECxQIjdgID3wMjdgMEiQUjdgQFoQYjdgUG/QQjdgYHUgY6 VgsAB5RXAg02YA+UugEQlLQAE9YwAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/ AgEAAAAAAP8CAQAAFPYBAAAX9gAAAB6UtAAs1gMAAQEs1gMCBQEs1gMGBwE11gUAAQPXBTXWBQEC A8UCNdYFAgMD3wM11gUDBAOJBTXWBQQFA6EGNdYFBQYD/QQ11gUGBwNSBhYBFiQBFyQBSWYBAAAA AZaU/yF2AAdoATXWBQABA9cFNdYFAQIDxQI11gUCAwPfAzXWBQMEA4kFNdYFBAUDoQY11gUFBgP9 BDXWBQYHA1IGI3YAAdcFI3YBAsUCI3YCA98DI3YDBIkFI3YEBaEGI3YFBv0EI3YGB1IGOlYLAAeU VwINNmAPlLoBEJS0ABPWMAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAA AAD/AgEAABT2AQAAF/YAAAAelLQALNYDAAEBLNYDAgUBLNYDBgcBNdYFAAED1wU11gUBAgPFAjXW BQIDA98DNdYFAwQDiQU11gUEBQOhBjXWBQUGA/0ENdYFBgcDUgYWARYkARckAUlmAQAAAAGWlP8h dgAHaAE11gUAAQPXBTXWBQECA8UCNdYFAgMD3wM11gUDBAOJBTXWBQQFA6EGNdYFBQYD/QQ11gUG BwNSBiN2AAHXBSN2AQLFAiN2AgPfAyN2AwSJBSN2BAWhBiN2BQb9BCN2BgdSBjpWCwAHlFcCDTZg D5S6ARCUtAAT1jAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIB AAAU9gEAABf2AAAAHpS0ACzWAwABASzWAwIFASzWAwYHATXWBQABA9cFNdYFAQIDxQI11gUCAwPf AzXWBQMEA4kFNdYFBAUDoQY11gUFBgP9BDXWBQYHA1IGFgEWJAEXJAFJZgEAAAABlpT/IXYAB2gB NdYFAAED1wU11gUBAgPFAjXWBQIDA98DNdYFAwQDiQU11gUEBQOhBjXWBQUGA/0ENdYFBgcDUgYj dgAB1wUjdgECxQIjdgID3wMjdgMEiQUjdgQFoQYjdgUG/QQjdgYHUgY6VgsAB5RXAg02YA+UugEQ lLQAE9YwAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAFPYB AAAX9gAAAB6UtAAs1gMAAQEs1gMCBQEs1gMGBwE11gUAAQPXBTXWBQECA8UCNdYFAgMD3wM11gUD BAOJBTXWBQQFA6EGNdYFBQYD/QQ11gUGBwNSBhYBFiQBFyQBSWYBAAAAAZaU/yF2AAdoATXWBQAB A9cFNdYFAQIDxQI11gUCAwPfAzXWBQMEA4kFNdYFBAUDoQY11gUFBgP9BDXWBQYHA1IGI3YAAdcF I3YBAsUCI3YCA98DI3YDBIkFI3YEBaEGI3YFBv0EI3YGB1IGOlYLAAeUVwINNmAPlLoBEJS0ABPW MAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAABT2AQAAF/YA AAAelLQALNYDAAEBLNYDAgUBLNYDBgcBNdYFAAED1wU11gUBAgPFAjXWBQIDA98DNdYFAwQDiQU1 1gUEBQOhBjXWBQUGA/0ENdYFBgcDUgYWARYkARckAUlmAQAAAAGWlP8hdgAHaAE11gUAAQPXBTXW BQECA8UCNdYFAgMD3wM11gUDBAOJBTXWBQQFA6EGNdYFBQYD/QQ11gUGBwNSBiN2AAHXBSN2AQLF AiN2AgPfAyN2AwSJBSN2BAWhBiN2BQb9BCN2BgdSBjpWCwAHlFcCDTZgD5S6ARCUtAAT1jAAAAD/ AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAU9gEAABf2AAAAHpS0 ACzWAwABASzWAwIFASzWAwYHATXWBQABA9cFNdYFAQIDxQI11gUCAwPfAzXWBQMEA4kFNdYFBAUD oQY11gUFBgP9BDXWBQYHA1IGnAAWJAEXJAFJZgEAAAABlpT/IXYAAmgBNdYFAAED1wU11gUBAgMd HiN2AAHXBSN2AQIdHjpWCwAHlGgCDTZgD5S6ARCUtAAT1jAAAAD/AgEAAAAAAP8CAQAAAAAA/wIB AAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAU9gEAABf2AAAAHpS0ACzWAwABATXWBQABA9cFNdYF AQIDHR6cABYkARckAUlmAQAAAAGWlP8hdgACaAE11gUAAQPXBTXWBQECAx0eI3YAAdcFI3YBAh0e OlYLAAeUaAINNmAPlLoBEJS0ABPWMAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA /wIBAAAAAAD/AgEAABT2AQAAF/YAAAAelLQALNYDAAIBNdYFAAED1wU11gUBAgMdHpwAFiQBFyQB SWYBAAAAAZaU/yF2AAJoATXWBQABA+4XNdYFAQIDBgwjdgAB7hcjdgECBgw6VgsAB5S8BQ02YA+U ugEQlLQAE9YwAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAA FPYBAAAX9gAAAB6UtAAs1gMAAgE11gUAAQPuFzXWBQECAwYMhgAWJAEXJAFJZgEAAAABlpT/IXYA AWgBNdYFAAED9CMjdgAB9CM6VgsAB5RlBA02YA+UugEQlLQAE9YwAAAA/wIBAAAAAAD/AgEAAAAA AP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAFPYBAAAX9gAAAB6UtAAs1gMAAQE11gUAAQP0 IwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGAhMAEgABAJwA DwAEAAAAAwAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABGAABA8f8CAEYADAAAAAAAAAAAAAIAY2uHZQAACwAAAAMkA2EkAzEkAAAcAENK FQBQSgMAS0gCAG1ICQRuSAQIc0gJBHRIBAgAAAAAAAAAAAAAAAAAAAAAAAAkAEFA8v+hACQADAAA AAAAAAAAAAYA2J6ki7VrPYRXW1NPAAAAAEYAaUDz/7MARgAMBQAAAAAAAAAABABuZhqQaIg8aAAA IAA6VgsAF/YDAAA01gYAAQUDAAA01gYAAQoDbABh9gMAAAIACwAAACAAawD0/8EAIAAABQAAAAAA AAAAAwDgZRdSaIgAAAIADAAAAAAAHAApQKIA8QAcAAwAAAAAAAAAAAACAHWYAXgAAAAAOAAgQAEA AgE4AAwAAAAAAAAAAAACAHWYGoEAABYAEAADJABhJABHJAANxggAAjkQciABAgQAQ0oSAEoAH0AB ABIBSgAMAAAAAAAAAAAAAgB1mAl3AAAnABEAAyQBYSQBRyQAJmQGAQABUMYIAAAA/wYBAQANxggA AjkQciABAgAEAENKEgBIAENAAQAiAUgADAAAAAAAAAAAAAYAY2uHZYdlLGcpf9uPAAAWABIAD4Qi Dl6EIg5XRBf8EYTe8WCE3vELAENKJABQSgQANQiBAAAAAAAHAAAA+gEAAAQAAEQAAAAA/////wQA MkQAAAAA/////wAAAAACAAAABAAAAAYAAAAHAAAACwAAACcAAAAyAAAANwAAADgAAAA5AAAAPgAA AD8AAABDAAAARAAAAEUAAABJAAAASgAAAE4AAABPAAAAUwAAAFQAAABVAAAAWgAAAF0AAABhAAAA ZgAAAGwAAAByAAAAeAAAAH0AAAB+AAAAfwAAAIAAAACBAAAAggAAAIMAAACEAAAAhQAAAIYAAACH AAAAiAAAAIkAAACKAAAAiwAAAIwAAACNAAAAjgAAAI8AAACQAAAAkQAAAJIAAACTAAAAlAAAAJUA AACWAAAAlwAAAJgAAACZAAAAmgAAAJsAAACcAAAAnQAAAJ4AAACgAAAAoQAAAKIAAACjAAAApAAA AKUAAACmAAAApwAAAKgAAACpAAAAqgAAAKsAAACsAAAArQAAAK4AAACvAAAAsAAAALEAAACyAAAA swAAALQAAAC1AAAAtgAAALcAAAC8AAAA4QAAAOIAAADnAAAABgEAAAcBAAAYAQAALAEAAEABAABd AQAAfQEAAIUBAACRAQAAkgEAAKMBAADEAQAAxQEAAMYBAADHAQAAyQEAAMoBAADMAQAAzQEAAM8B AADQAQAA0gEAANMBAADUAQAA1QEAANYBAADXAQAA4QEAAOIBAADjAQAA8gEAAPMBAAD0AQAA9QEA APYBAAD3AQAA+AEAAPsBAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAA AIAAAACAAAAAAAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAABJiAAwAAAAAAAAAAAB AAAAAAAAAAAAAAAAAIABmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJgAAAAAMAAAAAAAAACA AAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAqQAAAAAwAAAAAAAAAIAA AACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACZAAAAADAAAAAAAAAAgAAA AIABAADMAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAAAAAAAAAAACAAAAA gAEAAMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACA AQAAyQAAAAAgAJkAAAAAMAAAAAAAAACAAAAAgAEAAMwAAAAAIACpAAAAADAAAAAAAAAAgAAAAIAB AADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAAAAAAAAAAACAAAAAgAEA AMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAA yQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACZAAAAADAAAAAAAAAAgAAAAIABAADM AAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkA AAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAA AAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAAACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAA ACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAA IACZAAAAADAAAAAAAAAAgAAAAIABAADMAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAg AKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAA qQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACp AAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAJkA AAAAMAAAAAAAAACAAAAAgAEAAMwAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAA AAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACpAAAA ADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAA MAAAAAAAAACAAAAAgAEAAMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAmQAAAAAw AAAAAAAAAIAAAACAAQAAzAAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACpAAAAADAA AAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAA AAAAAACAAAAAgAEAAMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAA AAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACZAAAAADAAAAAA AAAAgAAAAIABAADMAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAA AACAAAAAgAEAAMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAA AIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACpAAAAADAAAAAAAAAA gAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAJkAAAAAMAAAAAAAAACA AAAAgAEAAMwAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAA AACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACpAAAAADAAAAAAAAAAgAAA AIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAA gAEAAMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAmQAAAAAwAAAAAAAAAIAAAACA AQAAzAAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIAB AADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEA AMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAA yQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACZAAAAADAAAAAAAAAAgAAAAIABAADM AAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkA AAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAA AAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAA ACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAJkAAAAAMAAAAAAAAACAAAAAgAEAAMwAAAAA IACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAg AJkAAAAAMAAAAAAAAACAAAAAgAEAAMwAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAA qQAAAAAAAAAAAAAAAIAAAACAAQAAyQAAAAAgAJkAAAAAMAAAAAAAAACAAAAAgAEAAMwAAAAAIACp AAAAADAAAAAAAAAAgAAAAIABAADJAAAAAAAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAAAKkA AAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAAACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAA AAAwAAAAAAAAAIAAAACAAQAAyQAAAAAAAKkAAAAAAAAAAAAAAACAAAAAgAEAAMkAAAAAAACpAAAA ADAAAAAAAAAAgAAAAIABAADJAAAAACAAmQAAAAAwAAAAAAAAAIAAAACAAQAAzAAAAAAgAKkAAAAA AAAAAAAAAACAAAAAgAEAAMkAAAAAAACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAmQAAAAAw AAAAAAAAAIAAAACAAQAAzAAAAAAgAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAACYAAAAADAA AAAAAAAAgAAAAIAAAAAAAAAAAAAAScgAMAAAAAAAAAAAAgAAAAEAAAAAAAAAAACnB8iRADAAAAAA AAAAAAEAAAAAAAAAAAAAAAAApgdJyAAwAAAAAAAAAAACAAAAAQAAAAAAAAAAAKcHyJEAMAAAAAAA AAAAAQAAAAAAAAAAAAAAAACmB0nIADAAAAAAAAAAAAIAAAABAAAAAAAAAAAApwfIkQAwAAAAAAAA AAABAAAAAAAAAAAAAAAAAKYHScgAMAAAAAAAAAAAAgAAAAEAAAAAAAAAAACnB8iRADAAAAAAAAAA AAEAAAAAAAAAAAAAAAAApgdJyAAwAAAAAAAAAAACAAAAAQAAAAAAAAAAAKcHScgAMAAAAAAAAAAA AgAAAAEAAAAAAAAAAACnA5hAAAARMAAAAAAAAACAAAAAgAAAAAAAAAAAAABJyAAwAgAAAAAAAAAB AAAABQAAAAAAAAAAAKcDScgAMAIAAAAAAAAAAQAAAAUAAAAAAQAAAACnA0nIADACAAAAAAAAAAEA AAAEAAAAAAAAAAAAgAFJyAAwAgAAAAAAAAACAAAAAQAAAAAAAAAAAIABkEAAABAwAAAAAAAAAIAA AACAAAAAAQAAAAAAAJhAAAAQMAAAAAAAAACAAAAAgAAAAAAAAAAAAABJyAAwAAAAAAAAAAABAAAA AAAAAAAAAAAAAKYDScgAMAAAAAAAAAAAAQAAAAAAAAAAAAAAAACmA0nIADAAAAAAAAAAAAEAAAAA AAAAAAAAAAAApgNJyAAwAAAAAAAAAAABAAAAAAAAAAAAAAAAAKYDScgAMAAAAAAAAAAAAQAAAAAA AAAAAAAAAACmA8iRADAAAAAAAAAAAAEAAAAAAAAAAAAAAHAEpgcAAAAAAwAAAAYAAAAGAAAACQAA AAwAAAAMAAAADgAAABAAAAAcAAAALQAAAC8AAAAxAAAAMQAAADEAAAAxAAAAMQAAADEAAAAxAAAA NAAAAAAGAAB4CQAA9DsAAAUAAAAbAAAAAAYAAHAIAACICAAAnggAALQIAAD6CAAA/ggAAAoJAAAO CQAAGgkAAB4JAAAqCQAALgkAADoJAABACQAATAkAAFAJAABcCQAAYAkAAGwJAAB4CQAADDoAAAo7 AACIOwAArjsAAPQ7AAAGAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAA ABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABwAAAAeAAAAHwAAACAAAAAhAAAA AAYAAPI7AAAHAAAAEAAAABcAAAAYAAAAHAAAACMAAAApAAAANAAAABMhlP+VgBMhlP+VgA8AAPDM AAAAAAAG8CAAAAACDAAAAwAAAAMAAAACAAAAAgAAAAIAAAABAAAAAQAAAD8AAfCEAAAAUgAH8CQA AAAFBVe0oEWNz78iFRdRnPR596H/AAAAAAAAAAAAAAAAAAAAAABSAAfwJAAAAAUFoeMTxhNtmozr ofuhklSGLf8AAAAAAAAAAAAAAAAAAAAAAFIAB/AkAAAABQUonzdqxaqxr+Hheab1IGdf/wAAAAAA AAAAAAAAAAAAAAAAQAAe8RAAAAD//wAAAAD/AICAgAD3AAAQAA8AAvBsAAAAIAAI8AgAAAACAAAA AQQAAA8AA/AwAAAADwAE8CgAAAABAAnwEAAAAAAAAAAAAAAAAAAAAAAAAAACAArwCAAAAAAEAAAF AAAADwAE8BwAAAASAArwCAAAAAEEAAAADgAAAAAR8AQAAAABAAAAAQ8AAvBIAAAAEAAI8AgAAAAB AAAAAAgAAA8AA/AwAAAADwAE8CgAAAABAAnwEAAAAAAAAAAAAAAAAAAAAAAAAAACAArwCAAAAAAI AAAFAAAAAAAAAAcAAAAKAAAACwAAACYAAAAnAAAAMQAAADIAAAA2AAAAOQAAAD0AAAA/AAAAQAAA AEEAAABCAAAARQAAAEgAAABKAAAASwAAAEwAAABNAAAATwAAAFAAAABRAAAAUgAAAFUAAABZAAAA WgAAAFwAAABdAAAAXgAAAF8AAABgAAAAYQAAAGUAAABmAAAAZwAAAGoAAABrAAAAbQAAAHEAAAB4 AAAAeQAAAHsAAAB8AAAAtwAAALsAAAC/AAAAwAAAAMEAAADDAAAA0gAAANMAAADVAAAA1wAAAOIA AADmAAAA5wAAAOgAAADpAAAA6wAAAPUAAAD2AAAA9wAAAPkAAAD9AAAA/gAAAAEBAAAFAQAABwEA AAgBAAAKAQAACwEAAA0BAAARAQAAHQEAAB8BAAAsAQAALwEAADEBAAAzAQAAQAEAAEMBAABFAQAA RwEAAH0BAAB+AQAAfwEAAIABAACBAQAAggEAAIMBAACEAQAAhQEAAIoBAACMAQAAjQEAAI8BAACQ AQAAkgEAAJUBAACXAQAAogEAAKsBAADDAQAAxwEAAMcBAADJAQAAyQEAAMoBAADKAQAAzAEAAM0B AADPAQAA0AEAANIBAADTAQAA+AEAAPsBAAAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAF AAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUA BwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAH AAQABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcA BQAHAAUABwAEAAcABAACAAQABwAEAAcABAAHAAQABwACAAAAAABdAAAAYAAAAOcAAAAFAQAABwEA ABcBAABAAQAAXAEAAMcBAADHAQAAyQEAAMkBAADKAQAAygEAAMwBAADNAQAAzwEAANABAADSAQAA 0wEAAPgBAAD7AQAABwAFAAcABQAHAAQABwAFAAcABAAHAAQAAgAEAAcABAAHAAQABwAEAAcAAgAA AAAADwEAABUBAADGAQAAxwEAAMcBAADJAQAAyQEAAMoBAADKAQAAzAEAAM0BAADPAQAA0AEAANIB AADTAQAA1wEAAOABAADjAQAA8QEAAPsBAAADAAQAAwACAAQAAgAEAAIABAACAAQAAgAEAAIABAAC AAcAAgAHAAIAAAAAAA0BAAARAQAAxwEAAMcBAADJAQAAyQEAAMoBAADKAQAAzAEAAM0BAADPAQAA 0AEAANIBAADTAQAA+AEAAPsBAAAHAAQABwAEAAcABAACAAQABwAEAAcABAAHAAQABwACAAgAAAAE AAAACAAAAOUAAAAAAAAABwAAAO0AEAD1OyEANlIuABJRSgBBJ10ALR3bADQT6ADkMfAAAAAAACcA AAAyAAAANwAAADgAAAA5AAAAPgAAAD8AAABDAAAARAAAAEUAAABJAAAASgAAAE4AAABPAAAAUwAA AFQAAABVAAAAWgAAAF0AAABhAAAAZgAAAHIAAAB4AAAAfQAAAH4AAAB/AAAAgAAAAIEAAACCAAAA gwAAAIQAAACFAAAAhgAAAIcAAACIAAAAiQAAAIoAAACLAAAAjAAAAI0AAACOAAAAjwAAAJAAAACR AAAAkgAAAJMAAACUAAAAlQAAAJYAAACXAAAAmAAAAJkAAACaAAAAmwAAAJwAAACdAAAAngAAAKAA AAChAAAAogAAAKMAAACkAAAApQAAAKYAAACnAAAAqAAAAKkAAACqAAAAqwAAAKwAAACtAAAArgAA AK8AAACwAAAAsQAAALIAAACzAAAAtAAAALUAAAC2AAAAtwAAALwAAADhAAAA4gAAAOcAAAAGAQAA BwEAAF0BAACRAQAAkgEAAMQBAADFAQAA+wEAAAEAAABZMBQACAAAAAIBAAACAQAAjgEABAIBAAAC AQAAAgEAAAIBAACOAQAEAgEAAAIBAAACAQAAAgEAAAIBAAACAQAAjgEABAIBAAACAQAAAgEAAAIB AAACAQAAAgEAAAIBAACOAQAEAgEAAAIBAAACAQAAAgEAAAIBAAACAQAAAgEAAI4BAAQCAQAAAgEA AAIBAAACAQAAAgEAAAIBAAACAQAAjgEABAIBAAACAQAAAgEAAAIBAAACAQAAAgEAAAIBAACOAQAE AgEAAAIBAAACAQAAAgEAAAIBAAACAQAAAgEAAI4BAAQCAQAAAgEAAAIBAAACAQAAAgEAAAIBAAAC AQAAjgEABAIBAAACAQAAAgEAAAIBAAACAQAAAgEAAAIBAACOAQAEAgEAAAIBAAACAQAAAgEAAAIB AAACAQAAAgEAAI4BAAQCAQAAAgEAAI4BAAQCAQAAAgEAAI4BAAQCAQAAAgEAAI4BAAQCAQAAhgEA BP9ADYABABEBAAARAQAAbMpEAQEAAQARAQAAAAAAABEBAAAAAAAAAhwAAAAAAAAAAAEAAPoBAABA AAAIAAAAAEAAADoAAAAA//8BAAAABwBVAG4AawBuAG8AdwBuAP//AQAIAAAAAAAAAAAAAAD//wEA AAAAAP//AAACAP//AAAAAP//AAACAP//AAAAAAYAAABHFpABAAACAgYDBQQFAgMEh3oAIAAAAIAI AAAAAAAAAP8BAAAAAAAAVABpAG0AZQBzACAATgBlAHcAIABSAG8AbQBhAG4AAAA1FpABAgAFBQEC AQcGAgUHAAAAAAAAABAAAAAAAAAAAAAAAIAAAAAAUwB5AG0AYgBvAGwAAAAzJpABAAACCwYEAgIC AgIEh3oAIAAAAIAIAAAAAAAAAP8BAAAAAAAAQQByAGkAYQBsAAAAOwaQAYYDAgEGAAMBAQEBAQMA AAAAAA4IEAAAAAAAAAABAAQAAAAAAItbU08AAFMAaQBtAFMAdQBuAAAAOwaQAYYDAgEGAAMBAQEB AQEAAAAAAA4IEAAAAAAAAAAAAAQAAAAAANGeU08AAFMAaQBtAEgAZQBpAAAAOzWQAYYAAgEGCQMB AQEBAQEAAAAAAA4IEAAAAAAAAAAAAAQAAAAAAP9Oi1tfAEcAQgAyADMAMQAyAAAAIAAEAAEIiBgA AKQBAABoAQAAAAC0gPNmcpr2BgAAAAAFAAIAAABDAAAAhAEAAAEAAQAAAAQAAxADAAAAQwAAAIQB AAABAAEAAAADAAAAAAAAACEDAAAAAAAAAwBaACYAIQApACwALgA6ADsAPwBdAH0AqAC3AMcCyQIV IBYgGSAdICYgNiIBMAIwAzAFMAkwCzANMA8wETAVMBcwAf8C/wf/Cf8M/w7/Gv8b/x//Pf9A/1z/ Xf9e/+D/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAACgAWwB7ALcAGCAcIAgwCjAMMA4wEDAUMBYwCP8O/zv/W//h/+X/AAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMGigW0AJwA AoASBAAAAAAAAAAAAAAAAAAAxgEAAMYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAADKDEQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAJ8P8PAQABPwAAqAMAAP///3////9/////f////3// //9/////f////38nKhcAAAAAADIyAAAAAAAAAAAAAAAAAAAAAP//EgAAAAAACgBOAG8AcgBtAGEA bAAuAGQAbwB0AAEAIAAAAAAAAAAHAHcAYQBuAGcAeQBhAG4ABQBjAGgAaQBuAGEAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/wAABQECAAAAAAAAAAAAAAAAAAAAAAABAAAA 4IWf8vlPaBCrkQgAKyez2TAAAACAAQAAEgAAAAEAAACYAAAAAgAAAKAAAAADAAAArAAAAAQAAAC4 AAAABQAAAMgAAAAGAAAA1AAAAAcAAADgAAAACAAAAPQAAAAJAAAABAEAABIAAAAQAQAACgAAADAB AAALAAAAPAEAAAwAAABIAQAADQAAAFQBAAAOAAAAYAEAAA8AAABoAQAAEAAAAHABAAATAAAAeAEA AAIAAACoAwAAHgAAAAQAAAAgAAAAHgAAAAQAAAAAAAAAHgAAAAgAAAB3YW5neWFuAB4AAAAEAAAA AAAAAB4AAAAEAAAAAAAAAB4AAAAMAAAATm9ybWFsLmRvdAAAHgAAAAgAAABjaGluYQAAAB4AAAAE AAAANQAAAB4AAAAYAAAATWljcm9zb2Z0IE9mZmljZSBXb3JkAAAAQAAAAACMhkcAAAAAQAAAAADA DKmpNU8BQAAAAAAI1hBC48sBQAAAAACU7DIjLswBAwAAAAEAAAADAAAAQwAAAAMAAACEAQAAAwAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAA/v8AAAUBAgAAAAAAAAAAAAAAAAAAAAAAAgAAAALVzdWcLhsQ k5cIACss+a5EAAAABdXN1ZwuGxCTlwgAKyz5roABAAA8AQAAEgAAAAEAAACYAAAAAgAAAKAAAAAD AAAArAAAAA4AAAC4AAAADwAAAMQAAAAEAAAA1AAAAAUAAADcAAAABgAAAOQAAAAHAAAA7AAAAAgA AAD0AAAACQAAAPwAAAAKAAAABAEAABEAAAAMAQAAFwAAABQBAAALAAAAHAEAABAAAAAkAQAAEwAA ACwBAAAWAAAANAEAAAIAAACoAwAAHgAAAAQAAAAAAAAAHgAAAAQAAAAAAAAAHgAAAAQAAAAAAAAA HgAAAAgAAABzanhjAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAQAAAAMAAAAAAAAAAwAAAAAAAAAD AAAAAAAAAAMAAAAAAAAAAwAAAMYBAAADAAAADycLAAsAAAAAAAAACwAAAAAAAAALAAAAAAAAAAsA AAAAAAAAYAAAAAMAAAAAAAAAIAAAAAEAAAA/AAAAAgAAAEcAAAABAAAAAgAAABMAAABLU09Qcm9k dWN0QnVpbGRWZXIAAgAAAKgDAAAeAAAAEAAAADIwNTItNi4zLjAuMTcwNQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAA DAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAa AAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAD+////JAAAACUAAAAmAAAAJwAAACgA AAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAA ADcAAAA4AAAAOQAAADoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAEAAAABBAAAAQgAAAEMAAABEAAAA RQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABT AAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAFsAAABcAAAAXQAAAF4AAABfAAAAYAAAAGEA AABiAAAAYwAAAGQAAABlAAAAZgAAAGcAAABoAAAAaQAAAGoAAABrAAAAbAAAAG0AAABuAAAAbwAA AHAAAABxAAAAcgAAAHMAAAB0AAAAdQAAAHYAAAB3AAAAeAAAAHkAAAB6AAAAewAAAHwAAAB9AAAA fgAAAH8AAACAAAAAgQAAAIIAAACDAAAAhAAAAIUAAACGAAAAhwAAAIgAAACJAAAAigAAAIsAAACM AAAAjQAAAI4AAACPAAAAkAAAAJEAAACSAAAAkwAAAJQAAACVAAAAlgAAAJcAAACYAAAAmQAAAJoA AACbAAAAnAAAAJ0AAACeAAAAnwAAAKAAAAChAAAAogAAAKMAAACkAAAApQAAAKYAAACnAAAAqAAA AKkAAACqAAAAqwAAAKwAAACtAAAArgAAAK8AAACwAAAAsQAAALIAAACzAAAAtAAAALUAAAC2AAAA twAAALgAAAC5AAAAugAAALsAAAC8AAAAvQAAAL4AAAC/AAAAwAAAAMEAAADCAAAAwwAAAMQAAADF AAAAxgAAAMcAAADIAAAAyQAAAMoAAADLAAAAzAAAAM0AAADOAAAAzwAAANAAAADRAAAA0gAAANMA AADUAAAA1QAAANYAAADXAAAA2AAAANkAAADaAAAA2wAAANwAAADdAAAA3gAAAN8AAADgAAAA4QAA AOIAAADjAAAA5AAAAOUAAADmAAAA5wAAAOgAAADpAAAA6gAAAOsAAADsAAAA7QAAAO4AAADvAAAA 8AAAAPEAAADyAAAA8wAAAPQAAAD1AAAA9gAAAPcAAAD4AAAA+QAAAPoAAAD7AAAA/AAAAP0AAAD+ AAAA/wAAAAABAAABAQAAAgEAAAMBAAAEAQAABQEAAAYBAAAHAQAACAEAAAkBAAAKAQAACwEAAAwB AAANAQAADgEAAA8BAAAQAQAAEQEAABIBAAATAQAAFAEAABUBAAAWAQAAFwEAABgBAAAZAQAAGgEA ABsBAAAcAQAAHQEAAB4BAAAfAQAAIAEAACEBAAAiAQAAIwEAACQBAAAlAQAAJgEAACcBAAAoAQAA KQEAACoBAAArAQAALAEAAC0BAAAuAQAALwEAADABAAAxAQAAMgEAADMBAAA0AQAANQEAADYBAAA3 AQAAOAEAADkBAAA6AQAAOwEAADwBAAA9AQAAPgEAAD8BAABAAQAAQQEAAEIBAABDAQAARAEAAEUB AABGAQAARwEAAEgBAABJAQAASgEAAEsBAABMAQAATQEAAE4BAABPAQAAUAEAAFEBAABSAQAAUwEA AFQBAABVAQAAVgEAAFcBAABYAQAAWQEAAFoBAABbAQAAXAEAAF0BAABeAQAAXwEAAGABAABhAQAA YgEAAGMBAABkAQAAZQEAAGYBAABnAQAAaAEAAGkBAABqAQAAawEAAGwBAABtAQAAbgEAAG8BAABw AQAAcQEAAHIBAABzAQAAdAEAAHUBAAB2AQAAdwEAAHgBAAB5AQAAegEAAHsBAAB8AQAAfQEAAH4B AAB/AQAAgAEAAIEBAACCAQAAgwEAAIQBAACFAQAAhgEAAIcBAACIAQAAiQEAAIoBAACLAQAAjAEA AI0BAACOAQAAjwEAAJABAACRAQAAkgEAAJMBAACUAQAAlQEAAJYBAACXAQAAmAEAAJkBAACaAQAA mwEAAJwBAACdAQAAngEAAJ8BAACgAQAAoQEAAKIBAACjAQAApAEAAKUBAACmAQAApwEAAKgBAACp AQAAqgEAAKsBAACsAQAArQEAAK4BAACvAQAAsAEAALEBAACyAQAAswEAALQBAAC1AQAAtgEAALcB AAC4AQAAuQEAALoBAAC7AQAAvAEAAL0BAAC+AQAAvwEAAMABAADBAQAAwgEAAMMBAADEAQAAxQEA AMYBAADHAQAAyAEAAMkBAADKAQAAywEAAMwBAADNAQAAzgEAAM8BAADQAQAA0QEAANIBAADTAQAA 1AEAANUBAADWAQAA1wEAANgBAADZAQAA2gEAANsBAADcAQAA3QEAAN4BAADfAQAA4AEAAOEBAADi AQAA4wEAAOQBAADlAQAA5gEAAOcBAADoAQAA6QEAAOoBAADrAQAA7AEAAO0BAADuAQAA7wEAAPAB AADxAQAA8gEAAPMBAAD0AQAA9QEAAPYBAAD3AQAA+AEAAPkBAAD6AQAA+wEAAPwBAAD9AQAA/gEA AP8BAAAAAgAAAQIAAAICAAADAgAABAIAAAUCAAAGAgAABwIAAAgCAAAJAgAACgIAAAsCAAAMAgAA DQIAAA4CAAAPAgAAEAIAABECAAASAgAAEwIAABQCAAAVAgAAFgIAABcCAAAYAgAAGQIAABoCAAAb AgAAHAIAAB0CAAAeAgAAHwIAACACAAAhAgAAIgIAACMCAAAkAgAAJQIAACYCAAAnAgAAKAIAACkC AAAqAgAAKwIAACwCAAAtAgAALgIAAC8CAAAwAgAAMQIAADICAAAzAgAANAIAADUCAAA2AgAANwIA ADgCAAA5AgAAOgIAADsCAAA8AgAAPQIAAD4CAAA/AgAAQAIAAEECAABCAgAAQwIAAEQCAABFAgAA RgIAAEcCAABIAgAASQIAAEoCAABLAgAATAIAAE0CAABOAgAATwIAAFACAABRAgAAUgIAAFMCAABU AgAAVQIAAFYCAABXAgAAWAIAAFkCAABaAgAAWwIAAFwCAABdAgAAXgIAAF8CAABgAgAAYQIAAGIC AABjAgAAZAIAAGUCAABmAgAAZwIAAGgCAABpAgAAagIAAGsCAABsAgAAbQIAAG4CAABvAgAAcAIA AHECAAByAgAAcwIAAHQCAAB1AgAAdgIAAHcCAAB4AgAAeQIAAHoCAAB7AgAAfAIAAH0CAAB+AgAA fwIAAIACAACBAgAAggIAAIMCAACEAgAAhQIAAIYCAACHAgAAiAIAAIkCAACKAgAAiwIAAIwCAACN AgAAjgIAAI8CAACQAgAAkQIAAJICAACTAgAAlAIAAJUCAACWAgAAlwIAAJgCAACZAgAAmgIAAJsC AACcAgAAnQIAAJ4CAACfAgAAoAIAAKECAACiAgAAowIAAKQCAAClAgAApgIAAKcCAACoAgAAqQIA AKoCAACrAgAArAIAAK0CAACuAgAArwIAALACAACxAgAAsgIAALMCAAC0AgAAtQIAALYCAAC3AgAA uAIAALkCAAC6AgAAuwIAALwCAAC9AgAAvgIAAL8CAADAAgAAwQIAAMICAADDAgAAxAIAAMUCAADG AgAAxwIAAMgCAADJAgAAygIAAMsCAADMAgAAzQIAAM4CAADPAgAA0AIAANECAADSAgAA0wIAANQC AADVAgAA1gIAANcCAADYAgAA2QIAANoCAADbAgAA3AIAAN0CAADeAgAA3wIAAOACAADhAgAA4gIA AOMCAADkAgAA5QIAAOYCAADnAgAA6AIAAOkCAADqAgAA6wIAAOwCAADtAgAA7gIAAO8CAADwAgAA 8QIAAPICAADzAgAA9AIAAPUCAAD2AgAA9wIAAPgCAAD5AgAA+gIAAPsCAAD8AgAA/QIAAP4CAAD/ AgAAAAMAAAEDAAACAwAAAwMAAAQDAAAFAwAABgMAAAcDAAAIAwAACQMAAAoDAAALAwAADAMAAA0D AAAOAwAADwMAABADAAARAwAAEgMAABMDAAAUAwAAFQMAABYDAAAXAwAAGAMAABkDAAAaAwAAGwMA ABwDAAAdAwAAHgMAAB8DAAAgAwAAIQMAACIDAAAjAwAAJAMAACUDAAAmAwAAJwMAACgDAAApAwAA KgMAACsDAAAsAwAALQMAAC4DAAAvAwAAMAMAADEDAAAyAwAAMwMAADQDAAA1AwAANgMAADcDAAA4 AwAAOQMAADoDAAA7AwAAPAMAAD0DAAA+AwAAPwMAAEADAABBAwAAQgMAAEMDAABEAwAARQMAAEYD AABHAwAASAMAAEkDAABKAwAASwMAAEwDAABNAwAATgMAAE8DAABQAwAAUQMAAFIDAABTAwAAVAMA AFUDAABWAwAAVwMAAFgDAABZAwAAWgMAAFsDAABcAwAAXQMAAF4DAABfAwAAYAMAAGEDAABiAwAA YwMAAGQDAABlAwAAZgMAAGcDAABoAwAAaQMAAGoDAABrAwAAbAMAAG0DAABuAwAAbwMAAHADAABx AwAAcgMAAHMDAAB0AwAAdQMAAHYDAAB3AwAAeAMAAHkDAAB6AwAAewMAAHwDAAB9AwAAfgMAAH8D AACAAwAAgQMAAIIDAACDAwAAhAMAAIUDAACGAwAAhwMAAIgDAACJAwAAigMAAIsDAACMAwAAjQMA AI4DAACPAwAAkAMAAJEDAACSAwAAkwMAAJQDAACVAwAAlgMAAJcDAACYAwAAmQMAAJoDAACbAwAA nAMAAJ0DAACeAwAAnwMAAKADAAChAwAAogMAAKMDAACkAwAApQMAAKYDAACnAwAAqAMAAKkDAACq AwAAqwMAAKwDAACtAwAArgMAAK8DAACwAwAAsQMAALIDAACzAwAAtAMAALUDAAC2AwAAtwMAALgD AAC5AwAAugMAALsDAAC8AwAAvQMAAL4DAAC/AwAAwAMAAMEDAADCAwAAwwMAAMQDAADFAwAAxgMA AMcDAADIAwAAyQMAAMoDAADLAwAAzAMAAM0DAADOAwAAzwMAANADAADRAwAA0gMAANMDAADUAwAA 1QMAANYDAADXAwAA2AMAANkDAADaAwAA2wMAANwDAADdAwAA3gMAAN8DAADgAwAA4QMAAOIDAADj AwAA5AMAAOUDAADmAwAA5wMAAOgDAADpAwAA6gMAAOsDAADsAwAA7QMAAO4DAADvAwAA8AMAAPED AADyAwAA8wMAAPQDAAD1AwAA9gMAAPcDAAD4AwAA+QMAAPoDAAD7AwAA/AMAAP0DAAD+AwAA/wMA AAAEAAABBAAAAgQAAAMEAAAEBAAABQQAAAYEAAAHBAAACAQAAAkEAAAKBAAACwQAAAwEAAANBAAA DgQAAA8EAAAQBAAAEQQAABIEAAATBAAAFAQAABUEAAAWBAAAFwQAABgEAAAZBAAAGgQAABsEAAAc BAAAHQQAAB4EAAAfBAAAIAQAACEEAAAiBAAAIwQAACQEAAAlBAAAJgQAACcEAAAoBAAAKQQAACoE AAArBAAALAQAAC0EAAAuBAAALwQAADAEAAAxBAAAMgQAADMEAAA0BAAANQQAADYEAAA3BAAAOAQA ADkEAAA6BAAAOwQAADwEAAA9BAAAPgQAAD8EAABABAAAQQQAAEIEAABDBAAARAQAAEUEAABGBAAA RwQAAEgEAABJBAAASgQAAEsEAABMBAAATQQAAE4EAABPBAAAUAQAAFEEAABSBAAAUwQAAFQEAABV BAAAVgQAAFcEAABYBAAAWQQAAFoEAABbBAAAXAQAAF0EAABeBAAAXwQAAGAEAABhBAAAYgQAAGME AABkBAAAZQQAAGYEAABnBAAAaAQAAGkEAABqBAAAawQAAGwEAABtBAAAbgQAAG8EAABwBAAAcQQA AHIEAABzBAAAdAQAAHUEAAB2BAAAdwQAAHgEAAB5BAAAegQAAHsEAAB8BAAAfQQAAH4EAAB/BAAA gAQAAIEEAACCBAAAgwQAAIQEAACFBAAAhgQAAIcEAACIBAAAiQQAAIoEAACLBAAAjAQAAI0EAACO BAAAjwQAAJAEAACRBAAAkgQAAJMEAACUBAAAlQQAAJYEAACXBAAAmAQAAJkEAACaBAAAmwQAAJwE AACdBAAAngQAAJ8EAACgBAAAoQQAAKIEAACjBAAApAQAAKUEAACmBAAApwQAAKgEAACpBAAAqgQA AKsEAACsBAAArQQAAK4EAACvBAAAsAQAALEEAACyBAAAswQAALQEAAC1BAAAtgQAALcEAAC4BAAA uQQAALoEAAC7BAAAvAQAAL0EAAC+BAAAvwQAAMAEAADBBAAAwgQAAMMEAADEBAAAxQQAAMYEAADH BAAAyAQAAMkEAADKBAAAywQAAMwEAADNBAAAzgQAAM8EAADQBAAA0QQAANIEAADTBAAA1AQAANUE AADWBAAA1wQAANgEAADZBAAA2gQAANsEAADcBAAA3QQAAN4EAADfBAAA4AQAAOEEAADiBAAA4wQA AOQEAADlBAAA5gQAAOcEAADoBAAA6QQAAOoEAADrBAAA7AQAAO0EAADuBAAA7wQAAPAEAADxBAAA 8gQAAPMEAAD0BAAA9QQAAPYEAAD3BAAA+AQAAPkEAAD6BAAA+wQAAPwEAAD9BAAA/gQAAP8EAAAA BQAAAQUAAAIFAAADBQAABAUAAAUFAAAGBQAABwUAAAgFAAAJBQAACgUAAAsFAAAMBQAADQUAAA4F AAAPBQAAEAUAABEFAAASBQAAEwUAABQFAAAVBQAAFgUAABcFAAAYBQAAGQUAABoFAAAbBQAAHAUA AB0FAAAeBQAAHwUAACAFAAAhBQAAIgUAACMFAAAkBQAAJQUAACYFAAAnBQAAKAUAACkFAAAqBQAA KwUAACwFAAAtBQAALgUAAC8FAAAwBQAAMQUAADIFAAAzBQAANAUAADUFAAA2BQAANwUAADgFAAA5 BQAAOgUAADsFAAA8BQAAPQUAAD4FAAA/BQAAQAUAAEEFAABCBQAAQwUAAEQFAABFBQAARgUAAEcF AABIBQAASQUAAEoFAABLBQAATAUAAE0FAABOBQAATwUAAFAFAABRBQAAUgUAAFMFAABUBQAAVQUA AFYFAABXBQAAWAUAAFkFAABaBQAAWwUAAFwFAABdBQAAXgUAAF8FAABgBQAAYQUAAGIFAABjBQAA ZAUAAGUFAABmBQAAZwUAAGgFAABpBQAAagUAAGsFAABsBQAAbQUAAG4FAABvBQAAcAUAAHEFAABy BQAAcwUAAHQFAAB1BQAAdgUAAHcFAAB4BQAAeQUAAHoFAAB7BQAAfAUAAH0FAAB+BQAAfwUAAIAF AACBBQAAggUAAIMFAACEBQAAhQUAAIYFAACHBQAAiAUAAIkFAACKBQAAiwUAAIwFAACNBQAAjgUA AI8FAACQBQAAkQUAAJIFAACTBQAAlAUAAJUFAACWBQAAlwUAAJgFAACZBQAAmgUAAJsFAACcBQAA nQUAAJ4FAACfBQAAoAUAAKEFAACiBQAAowUAAKQFAAClBQAApgUAAKcFAACoBQAAqQUAAKoFAACr BQAArAUAAK0FAACuBQAArwUAALAFAACxBQAAsgUAALMFAAC0BQAAtQUAALYFAAC3BQAAuAUAALkF AAC6BQAAuwUAALwFAAC9BQAAvgUAAL8FAADABQAAwQUAAMIFAADDBQAAxAUAAMUFAADGBQAAxwUA AMgFAADJBQAAygUAAMsFAADMBQAAzQUAAM4FAADPBQAA0AUAANEFAADSBQAA0wUAANQFAADVBQAA 1gUAANcFAADYBQAA2QUAANoFAADbBQAA3AUAAN0FAADeBQAA3wUAAOAFAADhBQAA4gUAAOMFAADk BQAA5QUAAOYFAADnBQAA6AUAAOkFAADqBQAA6wUAAOwFAADtBQAA7gUAAO8FAADwBQAA8QUAAPIF AADzBQAA9AUAAPUFAAD2BQAA9wUAAPgFAAD5BQAA+gUAAPsFAAD8BQAA/QUAAP4FAAD/BQAAAAYA AAEGAAACBgAAAwYAAAQGAAAFBgAABgYAAAcGAAAIBgAACQYAAAoGAAALBgAADAYAAA0GAAAOBgAA DwYAABAGAAARBgAAEgYAABMGAAAUBgAAFQYAABYGAAAXBgAAGAYAABkGAAAaBgAAGwYAABwGAAAd BgAAHgYAAB8GAAAgBgAAIQYAACIGAAAjBgAAJAYAACUGAAAmBgAAJwYAACgGAAApBgAAKgYAACsG AAAsBgAALQYAAC4GAAAvBgAAMAYAADEGAAAyBgAAMwYAADQGAAA1BgAANgYAADcGAAA4BgAAOQYA ADoGAAA7BgAAPAYAAD0GAAA+BgAAPwYAAEAGAABBBgAAQgYAAEMGAABEBgAARQYAAEYGAABHBgAA SAYAAEkGAABKBgAASwYAAEwGAABNBgAATgYAAE8GAABQBgAAUQYAAFIGAABTBgAAVAYAAFUGAABW BgAAVwYAAFgGAABZBgAAWgYAAFsGAABcBgAAXQYAAF4GAABfBgAAYAYAAGEGAABiBgAAYwYAAGQG AABlBgAAZgYAAGcGAABoBgAAaQYAAGoGAABrBgAAbAYAAG0GAABuBgAAbwYAAHAGAABxBgAAcgYA AHMGAAB0BgAAdQYAAHYGAAB3BgAAeAYAAHkGAAB6BgAAewYAAHwGAAB9BgAAfgYAAH8GAACABgAA gQYAAIIGAACDBgAAhAYAAIUGAACGBgAAhwYAAIgGAACJBgAAigYAAIsGAACMBgAAjQYAAI4GAACP BgAAkAYAAJEGAACSBgAAkwYAAJQGAACVBgAAlgYAAJcGAACYBgAAmQYAAJoGAACbBgAAnAYAAJ0G AACeBgAAnwYAAKAGAAChBgAAogYAAKMGAACkBgAApQYAAKYGAACnBgAAqAYAAKkGAACqBgAAqwYA AKwGAACtBgAArgYAAK8GAACwBgAAsQYAALIGAACzBgAAtAYAALUGAAC2BgAAtwYAALgGAAC5BgAA ugYAALsGAAC8BgAAvQYAAL4GAAC/BgAAwAYAAMEGAADCBgAAwwYAAMQGAADFBgAAxgYAAMcGAADI BgAAyQYAAMoGAADLBgAAzAYAAM0GAADOBgAAzwYAANAGAADRBgAA0gYAANMGAADUBgAA1QYAANYG AADXBgAA2AYAANkGAADaBgAA2wYAANwGAADdBgAA3gYAAN8GAADgBgAA4QYAAOIGAADjBgAA5AYA AOUGAADmBgAA5wYAAOgGAADpBgAA6gYAAOsGAADsBgAA7QYAAO4GAADvBgAA8AYAAPEGAADyBgAA 8wYAAPQGAAD1BgAA9gYAAPcGAAD4BgAA+QYAAPoGAAD7BgAA/AYAAP0GAAD+BgAA/wYAAAAHAAAB BwAAAgcAAAMHAAAEBwAABQcAAAYHAAAHBwAACAcAAAkHAAAKBwAACwcAAAwHAAANBwAADgcAAA8H AAAQBwAAEQcAABIHAAATBwAAFAcAABUHAAAWBwAAFwcAABgHAAAZBwAAGgcAABsHAAAcBwAAHQcA AB4HAAAfBwAAIAcAACEHAAAiBwAAIwcAACQHAAAlBwAAJgcAACcHAAAoBwAAKQcAACoHAAArBwAA LAcAAC0HAAAuBwAALwcAADAHAAAxBwAAMgcAADMHAAA0BwAANQcAADYHAAA3BwAAOAcAADkHAAA6 BwAAOwcAADwHAAA9BwAAPgcAAD8HAABABwAAQQcAAEIHAABDBwAARAcAAEUHAABGBwAARwcAAEgH AABJBwAASgcAAEsHAABMBwAATQcAAE4HAABPBwAAUAcAAFEHAABSBwAAUwcAAFQHAABVBwAAVgcA AFcHAABYBwAAWQcAAFoHAABbBwAAXAcAAF0HAABeBwAAXwcAAGAHAABhBwAAYgcAAGMHAABkBwAA ZQcAAGYHAABnBwAAaAcAAGkHAABqBwAAawcAAGwHAABtBwAAbgcAAG8HAABwBwAAcQcAAHIHAABz BwAAdAcAAHUHAAB2BwAAdwcAAHgHAAB5BwAAegcAAHsHAAB8BwAAfQcAAH4HAAB/BwAAgAcAAIEH AACCBwAAgwcAAIQHAACFBwAAhgcAAIcHAACIBwAAiQcAAIoHAACLBwAAjAcAAI0HAACOBwAAjwcA AJAHAACRBwAAkgcAAJMHAACUBwAAlQcAAJYHAACXBwAAmAcAAJkHAACaBwAAmwcAAJwHAACdBwAA ngcAAJ8HAACgBwAAoQcAAKIHAACjBwAApAcAAKUHAACmBwAApwcAAKgHAACpBwAAqgcAAKsHAACs BwAArQcAAK4HAACvBwAAsAcAALEHAACyBwAAswcAALQHAAC1BwAAtgcAALcHAAC4BwAAuQcAALoH AAC7BwAAvAcAAL0HAAC+BwAAvwcAAMAHAADBBwAAwgcAAMMHAADEBwAAxQcAAMYHAADHBwAAyAcA AMkHAADKBwAAywcAAMwHAADNBwAAzgcAAM8HAADQBwAA0QcAANIHAADTBwAA1AcAANUHAADWBwAA 1wcAANgHAADZBwAA2gcAANsHAADcBwAA3QcAAN4HAADfBwAA4AcAAOEHAADiBwAA4wcAAOQHAADl BwAA5gcAAOcHAADoBwAA6QcAAOoHAADrBwAA7AcAAO0HAADuBwAA7wcAAPAHAADxBwAA8gcAAPMH AAD0BwAA9QcAAPYHAAD3BwAA+AcAAPkHAAD6BwAA+wcAAPwHAAD9BwAA/gcAAP8HAAAACAAAAQgA AAIIAAADCAAABAgAAAUIAAAGCAAABwgAAAgIAAAJCAAACggAAAsIAAAMCAAADQgAAA4IAAAPCAAA EAgAABEIAAASCAAAEwgAABQIAAAVCAAAFggAABcIAAAYCAAAGQgAABoIAAAbCAAAHAgAAB0IAAAe CAAAHwgAACAIAAAhCAAAIggAACMIAAAkCAAAJQgAACYIAAAnCAAAKAgAACkIAAAqCAAAKwgAACwI AAAtCAAALggAAC8IAAAwCAAAMQgAADIIAAAzCAAANAgAADUIAAA2CAAANwgAADgIAAA5CAAAOggA ADsIAAA8CAAAPQgAAD4IAAA/CAAAQAgAAEEIAABCCAAAQwgAAEQIAABFCAAARggAAEcIAABICAAA SQgAAEoIAABLCAAATAgAAE0IAABOCAAATwgAAFAIAABRCAAAUggAAFMIAABUCAAAVQgAAFYIAABX CAAAWAgAAFkIAABaCAAAWwgAAFwIAABdCAAAXggAAF8IAABgCAAAYQgAAGIIAABjCAAAZAgAAGUI AABmCAAAZwgAAGgIAABpCAAAaggAAGsIAABsCAAAbQgAAG4IAABvCAAAcAgAAHEIAAByCAAAcwgA AHQIAAB1CAAAdggAAHcIAAB4CAAAeQgAAHoIAAB7CAAAfAgAAH0IAAB+CAAAfwgAAIAIAACBCAAA gggAAIMIAACECAAAhQgAAIYIAACHCAAAiAgAAIkIAACKCAAAiwgAAIwIAACNCAAAjggAAI8IAACQ CAAAkQgAAJIIAACTCAAAlAgAAJUIAACWCAAAlwgAAJgIAACZCAAAmggAAJsIAACcCAAAnQgAAJ4I AACfCAAAoAgAAKEIAACiCAAAowgAAKQIAAClCAAApggAAKcIAACoCAAAqQgAAKoIAACrCAAArAgA AK0IAACuCAAArwgAALAIAACxCAAAsggAALMIAAC0CAAAtQgAALYIAAC3CAAAuAgAALkIAAC6CAAA uwgAALwIAAC9CAAAvggAAL8IAADACAAAwQgAAMIIAADDCAAAxAgAAMUIAADGCAAAxwgAAMgIAADJ CAAAyggAAMsIAADMCAAAzQgAAM4IAADPCAAA0AgAANEIAADSCAAA0wgAANQIAADVCAAA1ggAANcI AADYCAAA2QgAANoIAADbCAAA3AgAAN0IAADeCAAA3wgAAOAIAADhCAAA4ggAAOMIAADkCAAA5QgA AOYIAADnCAAA6AgAAOkIAADqCAAA6wgAAOwIAADtCAAA7ggAAO8IAADwCAAA8QgAAPIIAADzCAAA 9AgAAPUIAAD2CAAA9wgAAPgIAAD5CAAA+ggAAPsIAAD8CAAA/QgAAP4IAAD/CAAAAAkAAAEJAAAC CQAAAwkAAAQJAAAFCQAABgkAAAcJAAAICQAACQkAAAoJAAALCQAADAkAAA0JAAAOCQAADwkAABAJ AAARCQAAEgkAABMJAAAUCQAAFQkAABYJAAAXCQAAGAkAABkJAAAaCQAAGwkAABwJAAAdCQAAHgkA AB8JAAAgCQAAIQkAACIJAAAjCQAAJAkAACUJAAAmCQAAJwkAACgJAAApCQAAKgkAACsJAAAsCQAA LQkAAC4JAAAvCQAAMAkAADEJAAAyCQAAMwkAADQJAAA1CQAANgkAADcJAAA4CQAAOQkAADoJAAA7 CQAAPAkAAD0JAAA+CQAAPwkAAEAJAABBCQAAQgkAAEMJAABECQAARQkAAEYJAABHCQAASAkAAEkJ AABKCQAASwkAAEwJAABNCQAATgkAAE8JAABQCQAAUQkAAFIJAABTCQAAVAkAAFUJAABWCQAAVwkA AFgJAABZCQAAWgkAAFsJAABcCQAAXQkAAF4JAABfCQAAYAkAAGEJAABiCQAAYwkAAGQJAABlCQAA ZgkAAGcJAABoCQAAaQkAAGoJAABrCQAAbAkAAG0JAABuCQAAbwkAAHAJAABxCQAAcgkAAHMJAAB0 CQAAdQkAAHYJAAB3CQAAeAkAAHkJAAB6CQAAewkAAHwJAAB9CQAAfgkAAH8JAACACQAAgQkAAIIJ AACDCQAAhAkAAIUJAACGCQAAhwkAAIgJAACJCQAAigkAAIsJAACMCQAAjQkAAI4JAACPCQAAkAkA AJEJAACSCQAAkwkAAJQJAACVCQAAlgkAAJcJAACYCQAAmQkAAJoJAACbCQAAnAkAAJ0JAACeCQAA nwkAAKAJAAChCQAAogkAAKMJAACkCQAApQkAAKYJAACnCQAAqAkAAKkJAACqCQAAqwkAAKwJAACt CQAArgkAAK8JAACwCQAAsQkAALIJAACzCQAAtAkAALUJAAC2CQAAtwkAALgJAAC5CQAAugkAALsJ AAC8CQAAvQkAAL4JAAC/CQAAwAkAAMEJAADCCQAAwwkAAMQJAADFCQAAxgkAAMcJAADICQAAyQkA AMoJAADLCQAAzAkAAM0JAADOCQAAzwkAANAJAADRCQAA0gkAANMJAADUCQAA1QkAANYJAADXCQAA 2AkAANkJAADaCQAA2wkAANwJAADdCQAA3gkAAN8JAADgCQAA4QkAAOIJAADjCQAA5AkAAOUJAADm CQAA5wkAAOgJAADpCQAA6gkAAOsJAADsCQAA7QkAAO4JAADvCQAA8AkAAPEJAADyCQAA8wkAAPQJ AAD1CQAA9gkAAPcJAAD4CQAA+QkAAPoJAAD7CQAA/AkAAP0JAAD+CQAA/wkAAAAKAAABCgAAAgoA AAMKAAAECgAABQoAAAYKAAAHCgAACAoAAAkKAAAKCgAACwoAAAwKAAANCgAADgoAAA8KAAAQCgAA EQoAABIKAAATCgAAFAoAABUKAAAWCgAAFwoAABgKAAAZCgAAGgoAABsKAAAcCgAAHQoAAB4KAAAf CgAAIAoAACEKAAAiCgAAIwoAACQKAAAlCgAAJgoAACcKAAAoCgAAKQoAACoKAAArCgAALAoAAC0K AAAuCgAALwoAADAKAAAxCgAAMgoAADMKAAA0CgAANQoAADYKAAA3CgAAOAoAADkKAAA6CgAAOwoA ADwKAAA9CgAAPgoAAD8KAABACgAAQQoAAEIKAABDCgAARAoAAEUKAABGCgAARwoAAEgKAABJCgAA SgoAAEsKAABMCgAATQoAAE4KAABPCgAAUAoAAFEKAABSCgAAUwoAAFQKAABVCgAAVgoAAFcKAABY CgAAWQoAAFoKAABbCgAAXAoAAF0KAABeCgAAXwoAAGAKAABhCgAAYgoAAGMKAABkCgAAZQoAAGYK AABnCgAAaAoAAGkKAABqCgAAawoAAGwKAABtCgAAbgoAAG8KAABwCgAAcQoAAHIKAABzCgAAdAoA AHUKAAB2CgAAdwoAAHgKAAB5CgAAegoAAHsKAAB8CgAAfQoAAH4KAAB/CgAAgAoAAIEKAACCCgAA gwoAAIQKAACFCgAAhgoAAIcKAACICgAAiQoAAIoKAACLCgAAjAoAAI0KAACOCgAAjwoAAJAKAACR CgAAkgoAAJMKAACUCgAAlQoAAJYKAACXCgAAmAoAAJkKAACaCgAAmwoAAJwKAACdCgAAngoAAJ8K AACgCgAAoQoAAKIKAACjCgAApAoAAKUKAACmCgAApwoAAKgKAACpCgAAqgoAAKsKAACsCgAArQoA AK4KAACvCgAAsAoAALEKAACyCgAAswoAALQKAAC1CgAAtgoAALcKAAC4CgAAuQoAALoKAAC7CgAA vAoAAL0KAAC+CgAAvwoAAMAKAADBCgAAwgoAAMMKAADECgAAxQoAAMYKAADHCgAAyAoAAMkKAADK CgAAywoAAMwKAADNCgAAzgoAAM8KAADQCgAA0QoAANIKAADTCgAA1AoAANUKAADWCgAA1woAANgK AADZCgAA2goAANsKAADcCgAA3QoAAN4KAADfCgAA4AoAAOEKAADiCgAA4woAAOQKAADlCgAA5goA AOcKAADoCgAA6QoAAOoKAADrCgAA7AoAAO0KAADuCgAA7woAAPAKAADxCgAA8goAAPMKAAD0CgAA 9QoAAPYKAAD3CgAA+AoAAPkKAAD6CgAA+woAAPwKAAD9CgAA/goAAP8KAAAACwAAAQsAAAILAAAD CwAABAsAAAULAAAGCwAABwsAAAgLAAAJCwAACgsAAAsLAAAMCwAADQsAAA4LAAAPCwAAEAsAABEL AAASCwAAEwsAABQLAAAVCwAAFgsAABcLAAAYCwAAGQsAABoLAAAbCwAAHAsAAB0LAAAeCwAAHwsA ACALAAAhCwAAIgsAACMLAAAkCwAAJQsAACYLAAAnCwAAKAsAACkLAAAqCwAAKwsAACwLAAAtCwAA LgsAAC8LAAAwCwAAMQsAADILAAAzCwAANAsAADULAAA2CwAANwsAADgLAAA5CwAAOgsAADsLAAA8 CwAAPQsAAD4LAAA/CwAAQAsAAEELAABCCwAAQwsAAEQLAABFCwAARgsAAEcLAABICwAASQsAAEoL AABLCwAATAsAAE0LAABOCwAATwsAAFALAABRCwAAUgsAAFMLAABUCwAAVQsAAFYLAABXCwAAWAsA AFkLAABaCwAAWwsAAFwLAABdCwAAXgsAAF8LAABgCwAAYQsAAGILAABjCwAAZAsAAGULAABmCwAA ZwsAAGgLAABpCwAAagsAAGsLAABsCwAAbQsAAG4LAABvCwAAcAsAAHELAAByCwAAcwsAAHQLAAB1 CwAAdgsAAHcLAAB4CwAAeQsAAHoLAAB7CwAAfAsAAH0LAAB+CwAAfwsAAIALAACBCwAAggsAAIML AACECwAAhQsAAIYLAACHCwAAiAsAAIkLAACKCwAAiwsAAIwLAACNCwAAjgsAAI8LAACQCwAAkQsA AJILAACTCwAAlAsAAJULAACWCwAAlwsAAJgLAACZCwAAmgsAAJsLAACcCwAA/v///54LAACfCwAA oAsAAKELAACiCwAAowsAAKQLAAClCwAApgsAAKcLAACoCwAAqQsAAKoLAACrCwAArAsAAK0LAACu CwAA/v///7ALAACxCwAAsgsAALMLAAC0CwAAtQsAALYLAAD+////uAsAALkLAAC6CwAAuwsAALwL AAC9CwAAvgsAAP7////9/////f////3////9/////f////3////9/////f////3////9/////f// //3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////YCwAA /v////7////+//////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////1IAbwBvAHQAIABF AG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUB //////////8DAAAABgkCAAAAAADAAAAAAAAARgAAAAAAAAAAAAAAAAAE90kjLswB2gsAAIAAAAAA AAAARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAoAAgH///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAjAAAA0vMWAAAAAAAxAFQAYQBiAGwAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgACAQEAAAAGAAAA/////wAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAJ0LAAC1IwAAAAAAAFcAbwByAGQARABvAGMAdQBtAGUAbgB0AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAIBAgAAAAUAAAD/////AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGdEAAAAAAAABQBTAHUAbQBtAGEA cgB5AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAgH/ //////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACvCwAAABAAAAAA AAAFAEQAbwBjAHUAbQBlAG4AdABTAHUAbQBtAGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAA AAAAAAAAAAAAOAACAQQAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAALcLAAAAEAAAAAAAAAEAQwBvAG0AcABPAGIAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAG0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////8AAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA/v////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////wEA/v8DCgAA/////wYJ AgAAAAAAwAAAAAAAAEYbAAAATWljcm9zb2Z0IE9mZmljZSBXb3JkIM7EtbUACgAAAE1TV29yZERv YwAQAAAAV29yZC5Eb2N1bWVudC44APQ5snEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ------=_NextPart_000_02BB_01EB5FD0.1081AD40-- From BATV+7f914c36d454c8ab8d83+2860+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 23 16:21:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5NLLLpP217901 for ; Thu, 23 Jun 2011 16:21:22 -0500 X-ASG-Debug-ID: 1308864079-6b0c02730000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C2768297F2 for ; Thu, 23 Jun 2011 14:21:20 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id S4ETgVoqryPbqY4k for ; Thu, 23 Jun 2011 14:21:20 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZrKt-0005cW-F2; Thu, 23 Jun 2011 21:21:15 +0000 Date: Thu, 23 Jun 2011 17:21:15 -0400 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/3] xfs: reset inode per-lifetime state when recycling it Subject: Re: [PATCH 1/3] xfs: reset inode per-lifetime state when recycling it Message-ID: <20110623212115.GA18901@infradead.org> References: <1308792901-22880-1-git-send-email-david@fromorbit.com> <1308792901-22880-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1308792901-22880-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308864080 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66925 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Thu, Jun 23, 2011 at 11:34:59AM +1000, Dave Chinner wrote: > From: Dave Chinner > > XFS inodes has several per-lifetime state fields that determine the > behaviour of the inode. These state fields are not all reset when an > inode is reused from the reclaimable state. > > This can lead to unexpected behaviour of the new inode such as > speculative preallocation not being truncated away in the expected > manner for local files until the inode is subsequently truncated, > freed or cycles out of the cache. It can also lead to an inode being > considered to be a filestream inode or having been truncated when > that is not the case. > > Rework the reinitialisation of the inode when it is recycled to > ensure that it is pristine before it is reused. While there, also > fix the resetting of state flags in the recycling error paths so the > inode does not become unreclaimable. > > Signed-off-by: Dave Chinner > --- > fs/xfs/xfs_iget.c | 13 +++++++++---- > fs/xfs/xfs_inode.h | 10 ++++++++++ > 2 files changed, 19 insertions(+), 4 deletions(-) > > diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c > index cb9b6d1..3631783 100644 > --- a/fs/xfs/xfs_iget.c > +++ b/fs/xfs/xfs_iget.c > @@ -253,16 +253,21 @@ xfs_iget_cache_hit( > rcu_read_lock(); > spin_lock(&ip->i_flags_lock); > > - ip->i_flags &= ~XFS_INEW; > - ip->i_flags |= XFS_IRECLAIMABLE; > - __xfs_inode_set_reclaim_tag(pag, ip); > + ip->i_flags &= ~(XFS_INEW | XFS_IRECLAIM); > + ASSERT(ip->i_flags & XFS_IRECLAIMABLE); Looking over this again XFS_INEW can't be set here, as we return early a few lines above. Otherwise looks good, Reviewed-by: Christoph Hellwig From BATV+7f914c36d454c8ab8d83+2860+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 23 16:21:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5NLLhYU217924 for ; Thu, 23 Jun 2011 16:21:43 -0500 X-ASG-Debug-ID: 1308864101-618103260000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A38211BF43E1 for ; Thu, 23 Jun 2011 14:21:42 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id cdxLBa6Tgl0mpKCV for ; Thu, 23 Jun 2011 14:21:42 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QZrLJ-0005iv-Be; Thu, 23 Jun 2011 21:21:41 +0000 Date: Thu, 23 Jun 2011 17:21:41 -0400 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/3] xfs: clear XFS_IDIRTY_RELEASE on truncate down Subject: Re: [PATCH 2/3] xfs: clear XFS_IDIRTY_RELEASE on truncate down Message-ID: <20110623212141.GB18901@infradead.org> References: <1308792901-22880-1-git-send-email-david@fromorbit.com> <1308792901-22880-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1308792901-22880-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1308864102 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0285 1.0000 -1.8364 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.74 X-Barracuda-Spam-Status: No, SCORE=-1.74 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66925 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Thu, Jun 23, 2011 at 11:35:00AM +1000, Dave Chinner wrote: > From: Dave Chinner > > When an inode is truncated down, speculative preallocation is > removed from the inode. This should also reset the state bits for > controlling whether preallocation is subsequently removed when the > file is next closed. The flag is not being cleared, so repeated > operations on a file that first involve a truncate (e.g. multiple > repeated dd invocations on a file) give different file layouts for > the second and subsequent invocations. > > Fix this by clearing the XFS_IDIRTY_RELEASE state bit when the > XFS_ITRUNCATED bit is detected in xfs_release() and hence ensure > that speculative delalloc is removed on files that have been > truncated down. > > Signed-off-by: Dave Chinner Looks good, Reviewed-by: Christoph Hellwig From aelder@sgi.com Thu Jun 23 16:59:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5NLx1IQ219077 for ; Thu, 23 Jun 2011 16:59:01 -0500 Received: from cas.corp.sgi.com (pv-excas1-dc21-nlb.corp.sgi.com [137.38.102.126]) by relay2.corp.sgi.com (Postfix) with ESMTP id 22BEA304048; Thu, 23 Jun 2011 14:58:58 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Thu, 23 Jun 2011 16:58:06 -0500 Subject: Re: [PATCH 1/3] xfs: reset inode per-lifetime state when recycling it From: Alex Elder Reply-To: To: Dave Chinner CC: In-Reply-To: <1308792901-22880-2-git-send-email-david@fromorbit.com> References: <1308792901-22880-1-git-send-email-david@fromorbit.com> <1308792901-22880-2-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset="UTF-8" Date: Thu, 23 Jun 2011 16:58:05 -0500 Message-ID: <1308866285.2010.32.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, 2011-06-23 at 11:34 +1000, Dave Chinner wrote: > From: Dave Chinner > > XFS inodes has several per-lifetime state fields that determine the > behaviour of the inode. These state fields are not all reset when an > inode is reused from the reclaimable state. > > This can lead to unexpected behaviour of the new inode such as > speculative preallocation not being truncated away in the expected > manner for local files until the inode is subsequently truncated, > freed or cycles out of the cache. It can also lead to an inode being > considered to be a filestream inode or having been truncated when > that is not the case. > > Rework the reinitialisation of the inode when it is recycled to > ensure that it is pristine before it is reused. While there, also > fix the resetting of state flags in the recycling error paths so the > inode does not become unreclaimable. > > Signed-off-by: Dave Chinner Looks good to me. Reviewed-by: Alex Elder From aelder@sgi.com Thu Jun 23 16:59:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5NLx1M4219079 for ; Thu, 23 Jun 2011 16:59:01 -0500 Received: from cas.corp.sgi.com (pv-excas1-dc21-nlb.corp.sgi.com [137.38.102.126]) by relay2.corp.sgi.com (Postfix) with ESMTP id 8622F304077; Thu, 23 Jun 2011 14:59:01 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Thu, 23 Jun 2011 16:58:37 -0500 Subject: Re: [PATCH 1/3] xfs: reset inode per-lifetime state when recycling it From: Alex Elder Reply-To: To: Dave Chinner CC: In-Reply-To: <1308792901-22880-2-git-send-email-david@fromorbit.com> References: <1308792901-22880-1-git-send-email-david@fromorbit.com> <1308792901-22880-2-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset="UTF-8" Date: Thu, 23 Jun 2011 16:58:05 -0500 Message-ID: <1308866285.2010.32.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, 2011-06-23 at 11:34 +1000, Dave Chinner wrote: > From: Dave Chinner > > XFS inodes has several per-lifetime state fields that determine the > behaviour of the inode. These state fields are not all reset when an > inode is reused from the reclaimable state. > > This can lead to unexpected behaviour of the new inode such as > speculative preallocation not being truncated away in the expected > manner for local files until the inode is subsequently truncated, > freed or cycles out of the cache. It can also lead to an inode being > considered to be a filestream inode or having been truncated when > that is not the case. > > Rework the reinitialisation of the inode when it is recycled to > ensure that it is pristine before it is reused. While there, also > fix the resetting of state flags in the recycling error paths so the > inode does not become unreclaimable. > > Signed-off-by: Dave Chinner Looks good to me. Reviewed-by: Alex Elder From aelder@sgi.com Thu Jun 23 16:59:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5NLxfmT219128 for ; Thu, 23 Jun 2011 16:59:41 -0500 Received: from cas.corp.sgi.com (pv-excas1-dc21.corp.sgi.com [137.38.102.116]) by relay3.corp.sgi.com (Postfix) with ESMTP id 5FA0EAC001; Thu, 23 Jun 2011 14:59:38 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Thu, 23 Jun 2011 16:59:37 -0500 Subject: Re: [PATCH 2/3] xfs: clear XFS_IDIRTY_RELEASE on truncate down From: Alex Elder Reply-To: To: Dave Chinner CC: In-Reply-To: <1308792901-22880-3-git-send-email-david@fromorbit.com> References: <1308792901-22880-1-git-send-email-david@fromorbit.com> <1308792901-22880-3-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset="UTF-8" Date: Thu, 23 Jun 2011 16:59:36 -0500 Message-ID: <1308866376.2010.33.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, 2011-06-23 at 11:35 +1000, Dave Chinner wrote: > From: Dave Chinner > > When an inode is truncated down, speculative preallocation is > removed from the inode. This should also reset the state bits for > controlling whether preallocation is subsequently removed when the > file is next closed. The flag is not being cleared, so repeated > operations on a file that first involve a truncate (e.g. multiple > repeated dd invocations on a file) give different file layouts for > the second and subsequent invocations. > > Fix this by clearing the XFS_IDIRTY_RELEASE state bit when the > XFS_ITRUNCATED bit is detected in xfs_release() and hence ensure > that speculative delalloc is removed on files that have been > truncated down. > > Signed-off-by: Dave Chinner Looks good. Reviewed-by: Alex Elder From david@fromorbit.com Thu Jun 23 21:15:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5O2FfsI236209 for ; Thu, 23 Jun 2011 21:15:41 -0500 X-ASG-Debug-ID: 1308881737-380e01f60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4F51D14F604E; Thu, 23 Jun 2011 19:15:38 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id uJ46gYEthzxlUDX7; Thu, 23 Jun 2011 19:15:38 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqMCAL/vA055LChDgWdsb2JhbABSpy4VAQEWJiWIc8JdDoYfBJshhnU Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Jun 2011 11:45:36 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QZvvi-0006in-Le; Fri, 24 Jun 2011 12:15:34 +1000 Date: Fri, 24 Jun 2011 12:15:34 +1000 From: Dave Chinner To: Al Viro Cc: Andi Kleen , Maarten Lankhorst , Alex Elder , xfs-masters@oss.sgi.com, Linux Kernel Mailing List , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH v2] xfs: Silence bounds checking compiler warning Subject: Re: [PATCH v2] xfs: Silence bounds checking compiler warning Message-ID: <20110624021534.GA32466@dastard> References: <4E037001.8090306__42924.0493024283$1308849791$gmane$org@gmail.com> <20110623175533.GK11521@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110623175533.GK11521@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1308881739 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0203 1.0000 -1.8894 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.89 X-Barracuda-Spam-Status: No, SCORE=-1.89 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66944 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, Jun 23, 2011 at 06:55:33PM +0100, Al Viro wrote: > On Thu, Jun 23, 2011 at 10:27:26AM -0700, Andi Kleen wrote: > > Maarten Lankhorst writes: > > > > > gcc with -Warray-bounds generates a false positive on this > > > since xfs defines the struct with u8 name[1]; to be able to > > > add a tag at the end. > > > > A better way would be to define it as name[0]. Then the compiler > > would know it's a VLA. You may need to check noone relies on > > the one byte though. > > ... and even better is to write in real C and have u8 name[]; in the > end of your structure. Hard to do when the structure is effectively the definition of the on-disk format. Hence it can't just be changed around and the kernel recompiled to fix the problem. > That's the standard C99 for this kind of thing > (see 6.7.2.1p2, p16). Zero-sized array is a gccism predating standard > flexible array members and since the standard syntax is accepted by > any gcc version that might be recent enough to build the kernel... This code came from Irix, which means it predates both the gccism and the C99 standard methods of using flexible array sizes. The code works so it's never been modified because stuffing about with structures that define disk formats is not done just for the hell of it... ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From ajeet.yadav.77@gmail.com Thu Jun 23 21:30:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, HTML_MESSAGE,T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.4.0-r929098 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 p5O2UcY6238656 for ; Thu, 23 Jun 2011 21:30:38 -0500 X-ASG-Debug-ID: 1308882636-772c03550000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-vw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 720771759DA4 for ; Thu, 23 Jun 2011 19:30:36 -0700 (PDT) Received: from mail-vw0-f53.google.com (mail-vw0-f53.google.com [209.85.212.53]) by cuda.sgi.com with ESMTP id lxs9DGaIqau83IJ9 for ; Thu, 23 Jun 2011 19:30:36 -0700 (PDT) Received: by vws13 with SMTP id 13so1919811vws.26 for ; Thu, 23 Jun 2011 19:30:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:content-type; bh=dDD7hUL33d5ldOZn29YufRbOhDA9IoYiMbkTrsR04Og=; b=BCLyCPTaJssPwYGOOyBoFQJuU8GsVxZNPSsXRMQq7l6FzCUrb20u3J1c1oaZZpagOH dR5TspuisSxuicEGVbe6p1aRRtTHR1Vkar/hSy1h3VybveQO5aw1lnJ4AY8qPNY+00cw F3cZn+60++4i60k7eQkHSyroXJ7vuPKwbdNbM= 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; b=DT8qgS3QZ1yGhFI2sTySZkuloDsu9YU++zL4XIKF6UiSN91xCilrozXHOVx+Z537Gr 3hesS0XWiwX+rvVZInEKln07tl9dvt0Erui/4IsUoovoaUJJRwYgVrxaVzQOfJdC07bO nI15EkUU7uSERSUKtpzKsg57+U7pDWgPGPyJw= MIME-Version: 1.0 Received: by 10.220.52.11 with SMTP id f11mr1017077vcg.38.1308882635529; Thu, 23 Jun 2011 19:30:35 -0700 (PDT) Received: by 10.220.163.138 with HTTP; Thu, 23 Jun 2011 19:30:35 -0700 (PDT) Received: by 10.220.163.138 with HTTP; Thu, 23 Jun 2011 19:30:35 -0700 (PDT) In-Reply-To: References: Date: Fri, 24 Jun 2011 08:00:35 +0530 Message-ID: X-ASG-Orig-Subj: Re: xfstests 228 output log differ Subject: Re: xfstests 228 output log differ From: Ajeet Yadav To: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=485b3961890e8b20cc04a66bfc39 X-Barracuda-Connect: mail-vw0-f53.google.com[209.85.212.53] X-Barracuda-Start-Time: 1308882637 X-Barracuda-Bayes: INNOCENT GLOBAL 0.2887 1.0000 -0.3972 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.40 X-Barracuda-Spam-Status: No, SCORE=-0.40 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66945 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 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 --485b3961890e8b20cc04a66bfc39 Content-Type: text/plain; charset=UTF-8 Resolved using bash version 4.2 With Regards, Ajeet Kumar Yadav On Jun 23, 2011 12:16 PM, "Ajeet Yadav" wrote: > Dear all, > I have attached the log of xfstests 228, the test case seems to PASS > on my target (MIPS 2.6.35.13) but log differ because of additional > information. > Can anyone tell how to fix it > > QA output created by 228 > File size limit is now set to 100 MB. > Let us try to preallocate 101 MB. This should fail. > -File size limit exceeded > +./228: line 78: 1674 File size limit exceeded$XFS_IO_PROG -F -f -c > 'falloc 0 101m' $TEST_DIR/ouch > Let us now try to preallocate 50 MB. This should succeed. > Test over. --485b3961890e8b20cc04a66bfc39 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

Resolved using bash version 4.2

With Regards,
Ajeet Kumar Yadav

--485b3961890e8b20cc04a66bfc39-- From amit.sahrawat83@gmail.com Fri Jun 24 01:19:49 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE,T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.4.0-r929098 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 p5O6Jncf251122 for ; Fri, 24 Jun 2011 01:19:49 -0500 X-ASG-Debug-ID: 1308896386-6bd600c80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ew0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0517BE10D51 for ; Thu, 23 Jun 2011 23:19:46 -0700 (PDT) Received: from mail-ew0-f53.google.com (mail-ew0-f53.google.com [209.85.215.53]) by cuda.sgi.com with ESMTP id rHdoO7Wqj8U8jEZZ for ; Thu, 23 Jun 2011 23:19:46 -0700 (PDT) Received: by ewy8 with SMTP id 8so856630ewy.26 for ; Thu, 23 Jun 2011 23:19:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to :content-type; bh=1RaG02kmmNxwoVUd514fN/DmPOVihuUiv+FQFsDlQdk=; b=QQXanWes7MR5voLkuYQGb6EHdxzmBs3Zr4KBtT/N07TfHic5jAQxlHJKtfX/b1pJqW DvQCR5rwF6RaWA6KTPWd3KGneWvyWXk4zw8a9OMgGiB5qECrMbXKaJBHZJRX85deY51B MGW83kgL7Ua0y25+eTeSk0QxC9clB2zSdu49w= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=MN7oR660aMUlePxpDxAEHCg61ZVrJRItl6M73WUyWGT629JWY2Gw+v1K5u1beqsKFV XB8Wi0Y1MiSTPFljRU4Cf0IgHT7fhsiNhllfDlEQShFL97xvXxYNoOa3fseAba/aQsEI pLGL/+1SavRwlfWJwglr0l4ODB0fSSxBkqtjg= MIME-Version: 1.0 Received: by 10.14.15.83 with SMTP id e59mr2047193eee.174.1308896385606; Thu, 23 Jun 2011 23:19:45 -0700 (PDT) Received: by 10.14.37.15 with HTTP; Thu, 23 Jun 2011 23:19:45 -0700 (PDT) Date: Fri, 24 Jun 2011 11:49:45 +0530 Message-ID: X-ASG-Orig-Subj: Failure of test case : 250 Subject: Failure of test case : 250 From: Amit Sahrawat To: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=0016e65aeabe1ca54804a66f30b2 X-Barracuda-Connect: mail-ew0-f53.google.com[209.85.215.53] X-Barracuda-Start-Time: 1308896388 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.02 X-Barracuda-Spam-Status: No, SCORE=-1.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, BSF_RULE_7582B, DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66960 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 0.50 BSF_RULE7568M Custom Rule 7568M 0.50 BSF_RULE_7582B Custom Rule 7582B X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --0016e65aeabe1ca54804a66f30b2 Content-Type: text/plain; charset=ISO-8859-1 Dear All, Test Case : 250 results in failure on x86(2.6.31.y) and ARM(2.6.35.13..) ** *Please find the logs for both versions as given below:* [root@localhost xfstests-2011-05-11]# ./check -xfs 250 FSTYP -- xfs (non-debug) PLATFORM -- Linux/i686 localhost 2.6.31.5-127.fc12.i686.PAE MKFS_OPTIONS -- -f -bsize=4096 /dev/sdb4 MOUNT_OPTIONS -- -o context=system_u:object_r:nfs_t:s0 /dev/sdb4 /media/d 250 [failed, exit status 1] - no qualified output Ran: 250 Failures: 250 Failed 1 of 1 tests [root@localhost xfstests-2011-05-11]# *LOGS for X86: *Jun 24 11:38:24 localhost kernel: XFS mounting filesystem sdb3 Jun 24 11:38:34 localhost kernel: XFS mounting filesystem sdb4 Jun 24 11:38:35 localhost kernel: XFS mounting filesystem sdb3 Jun 24 11:38:36 localhost gnome-keyring-daemon[1653]: removing removable location: /media/c Jun 24 11:38:36 localhost gnome-keyring-daemon[1653]: no volume registered at: /media/c Jun 24 11:39:14 localhost kernel: XFS mounting filesystem loop0 Jun 24 11:39:17 localhost kernel: XFS internal error XFS_WANT_CORRUPTED_GOTO at line 2915 of file fs/xfs/xfs_btree.c. Caller 0xfabda425 Jun 24 11:39:17 localhost kernel: Pid: 2305, comm: xfs_io Not tainted 2.6.31.5-127.fc12.i686.PAE #1 Jun 24 11:39:17 localhost kernel: Call Trace: Jun 24 11:39:17 localhost kernel: [] xfs_error_report+0x31/0x33 [xfs] Jun 24 11:39:17 localhost kernel: [] xfs_btree_insert+0x9d/0x11e [xfs] Jun 24 11:39:17 localhost kernel: [] ? xfs_bmap_add_extent_hole_real+0x587/0x630 [xfs] Jun 24 11:39:17 localhost kernel: [] xfs_bmap_add_extent_hole_real+0x587/0x630 [xfs] Jun 24 11:39:17 localhost kernel: [] xfs_bmap_add_extent+0x278/0x386 [xfs] Jun 24 11:39:17 localhost kernel: [] ? kmem_zone_alloc+0x51/0x93 [xfs] Jun 24 11:39:17 localhost kernel: [] ? kmem_zone_alloc+0x51/0x93 [xfs] Jun 24 11:39:17 localhost kernel: [] xfs_bmapi+0x8bf/0x1012 [xfs] Jun 24 11:39:17 localhost kernel: [] ? xfs_trans_unlock_chunk+0x8a/0xc8 [xfs] Jun 24 11:39:17 localhost kernel: [] ? xfs_log_release_iclog+0x16/0x3f [xfs] Jun 24 11:39:17 localhost kernel: [] ? _xfs_trans_commit+0x1f8/0x2c8 [xfs] Jun 24 11:39:17 localhost kernel: [] xfs_alloc_file_space+0x273/0x324 [xfs] Jun 24 11:39:17 localhost kernel: [] xfs_change_file_space+0x172/0x30e [xfs] Jun 24 11:39:17 localhost kernel: [] ? inode_has_perm+0x69/0x84 Jun 24 11:39:17 localhost kernel: [] xfs_vn_fallocate+0x71/0x101 [xfs] Jun 24 11:39:17 localhost kernel: [] ? file_has_perm+0x89/0xa3 Jun 24 11:39:17 localhost kernel: [] do_fallocate+0xc5/0xe1 Jun 24 11:39:17 localhost kernel: [] ioctl_preallocate+0xa4/0xae Jun 24 11:39:17 localhost kernel: [] do_vfs_ioctl+0x48c/0x4d6 Jun 24 11:39:17 localhost kernel: [] ? selinux_file_ioctl+0x43/0x46 Jun 24 11:39:17 localhost kernel: [] sys_ioctl+0x46/0x66 Jun 24 11:39:17 localhost kernel: [] sysenter_do_call+0x12/0x28 Jun 24 11:39:17 localhost kernel: Filesystem "loop0": XFS internal error xfs_trans_cancel at line 1161 of file fs/xfs/xfs_trans.c. Caller 0xfac0d09a Jun 24 11:39:17 localhost kernel: Jun 24 11:39:17 localhost kernel: Pid: 2305, comm: xfs_io Not tainted 2.6.31.5-127.fc12.i686.PAE #1 Jun 24 11:39:17 localhost kernel: Call Trace: Jun 24 11:39:17 localhost kernel: [] xfs_error_report+0x31/0x33 [xfs] Jun 24 11:39:17 localhost kernel: [] xfs_trans_cancel+0x50/0xd0 [xfs] Jun 24 11:39:17 localhost kernel: [] ? xfs_alloc_file_space+0x308/0x324 [xfs] Jun 24 11:39:17 localhost kernel: [] xfs_alloc_file_space+0x308/0x324 [xfs] Jun 24 11:39:17 localhost kernel: [] xfs_change_file_space+0x172/0x30e [xfs] Jun 24 11:39:17 localhost kernel: [] ? inode_has_perm+0x69/0x84 Jun 24 11:39:17 localhost kernel: [] xfs_vn_fallocate+0x71/0x101 [xfs] Jun 24 11:39:17 localhost kernel: [] ? file_has_perm+0x89/0xa3 Jun 24 11:39:17 localhost kernel: [] do_fallocate+0xc5/0xe1 Jun 24 11:39:17 localhost kernel: [] ioctl_preallocate+0xa4/0xae Jun 24 11:39:17 localhost kernel: [] do_vfs_ioctl+0x48c/0x4d6 Jun 24 11:39:17 localhost kernel: [] ? selinux_file_ioctl+0x43/0x46 Jun 24 11:39:17 localhost kernel: [] sys_ioctl+0x46/0x66 Jun 24 11:39:17 localhost kernel: [] sysenter_do_call+0x12/0x28 Jun 24 11:39:17 localhost kernel: xfs_force_shutdown(loop0,0x8) called from line 1162 of file fs/xfs/xfs_trans.c. Return address = 0xfac0745e Jun 24 11:39:17 localhost kernel: Filesystem "loop0": Corruption of in-memory data detected. Shutting down filesystem: loop0 Jun 24 11:39:17 localhost kernel: Please umount the filesystem, and rectify the problem(s) Jun 24 11:39:17 localhost kernel: Filesystem "loop0": xfs_log_force: error 5 returned. Jun 24 11:39:17 localhost kernel: Filesystem "loop0": xfs_log_force: error 5 returned. Jun 24 11:39:18 localhost gnome-keyring-daemon[1653]: removing removable location: /media/c/250.mnt Jun 24 11:39:18 localhost gnome-keyring-daemon[1653]: no volume registered at: /media/c/250.mnt Jun 24 11:39:21 localhost kernel: XFS mounting filesystem sdb3 Jun 24 11:39:21 localhost gnome-keyring-daemon[1653]: removing removable location: /media/c Jun 24 11:39:21 localhost gnome-keyring-daemon[1653]: no volume registered at: /media/c *LOG FOR ARM:* #./check -xfs 250 FSTYP -- xfs (non-debug) PLATFORM -- Linux/armv7l localhost 2.6.35.13 MKFS_OPTIONS -- -f -bsize=4096 /dev/sda4 MOUNT_OPTIONS -- /dev/sda4 /media/usb/sda4 XFS mounting filesystem sda4 XFS mounting filesystem sda3 250 XFS mounting filesystem loop0 XFS internal error XFS_WANT_CORRUPTED_GOTO at line 2875 of file fs/xfs/xfs_btree.c. Caller 0xc017a9ec Backtrace: [] (dump_backtrace+0x0/0x110) from [] (dump_stack+0x18/0x1c) r6:00000001 r5:d73e77b8 r4:d73e7688 r3:d67db978 [] (dump_stack+0x0/0x1c) from [] (xfs_error_report+0x4c/0x5c) [] (xfs_error_report+0x0/0x5c) from [] (xfs_btree_insert+0xbc/0x164) [] (xfs_btree_insert+0x0/0x164) from [] (xfs_bmap_add_extent_hole_real+0x6a4/0x75c) [] (xfs_bmap_add_extent_hole_real+0x0/0x75c) from [] (xfs_bmap_add_extent+0x260/0x38c) [] (xfs_bmap_add_extent+0x0/0x38c) from [] (xfs_bmapi+0x778/0xe40) [] (xfs_bmapi+0x0/0xe40) from [] (xfs_alloc_file_space+0x238/0x2f4) [] (xfs_alloc_file_space+0x0/0x2f4) from [] (xfs_change_file_space+0x198/0x374) [] (xfs_change_file_space+0x0/0x374) from [] (xfs_vn_fallocate+0x104/0x154) [] (xfs_vn_fallocate+0x0/0x154) from [] (do_fallocate+0xd0/0xe8) r9:0000000a r8:00000000 r7:0000000a r6:00000000 r5:0000000a r4:ffffffff [] (do_fallocate+0x0/0xe8) from [] (ioctl_preallocate+0xf8/0x100) r9:d67da000 r8:c0020128 r7:00000003 r6:d6fda840 r5:d73cbc00 r4:d67da000 [] (ioctl_preallocate+0x0/0x100) from [] (do_vfs_ioctl+0x53c/0x594) r9:d67da000 r8:c0020128 r7:00000003 r6:4030582a r5:d73cbc00 r4:bef7e210 [] (do_vfs_ioctl+0x0/0x594) from [] (sys_ioctl+0x40/0x64) [] (sys_ioctl+0x0/0x64) from [] (ret_fast_syscall+0x0/0x30) r7:00000036 r6:0002a6c0 r5:00000003 r4:bef7e210 Filesystem "loop0": XFS internal error xfs_trans_cancel at line 1724 of file fs/xfs/xfs_trans.c. Caller 0xc01b544c Backtrace: [] (dump_backtrace+0x0/0x110) from [] (dump_stack+0x18/0x1c) r6:d6161400 r5:0000000c r4:cb10e5a0 r3:d67dbc30 [] (dump_stack+0x0/0x1c) from [] (xfs_error_report+0x4c/0x5c) [] (xfs_error_report+0x0/0x5c) from [] (xfs_trans_cancel+0x7c/0x108) [] (xfs_trans_cancel+0x0/0x108) from [] (xfs_alloc_file_space+0x2dc/0x2f4) r6:d6fda720 r5:d6161400 r4:00000004 [] (xfs_alloc_file_space+0x0/0x2f4) from [] (xfs_change_file_space+0x198/0x374) [] (xfs_change_file_space+0x0/0x374) from [] (xfs_vn_fallocate+0x104/0x154) [] (xfs_vn_fallocate+0x0/0x154) from [] (do_fallocate+0xd0/0xe8) r9:0000000a r8:00000000 r7:0000000a r6:00000000 r5:0000000a r4:ffffffff [] (do_fallocate+0x0/0xe8) from [] (ioctl_preallocate+0xf8/0x100) r9:d67da000 r8:c0020128 r7:00000003 r6:d6fda840 r5:d73cbc00 r4:d67da000 [] (ioctl_preallocate+0x0/0x100) from [] (do_vfs_ioctl+0x53c/0x594) r9:d67da000 r8:c0020128 r7:00000003 r6:4030582a r5:d73cbc00 r4:bef7e210 [] (do_vfs_ioctl+0x0/0x594) from [] (sys_ioctl+0x40/0x64) [] (sys_ioctl+0x0/0x64) from [] (ret_fast_syscall+0x0/0x30) r7:00000036 r6:0002a6c0 r5:00000003 r4:bef7e210 xfs_force_shutdown(loop0,0x8) called from line 1725 of file fs/xfs/xfs_trans.c. Return address = 0xc01b1d2c Filesystem "loop0": Corruption of in-memory data detected. Shutting down filesystem: loop0 Please umount the filesystem, and rectify the problem(s) xfs_force_shutdown(loop0,0x1) called from line 1017 of file fs/xfs/linux-2.6/xfs_buf.c. Return address = 0xc01bd334 Filesystem "loop0": xfs_log_force: error 5 returned. Filesystem "loop0": xfs_log_force: error 5 returned. [failed, exit status 1] - no qualified output umount: can't umount /media/usb/sda3: Device or resource busy _check_xfs_filesystem: filesystem on /dev/sda3 has dirty log (see 250.full) _check_xfs_filesystem: filesystem on /dev/sda3 is inconsistent (c) (see 250.full) _check_xfs_filesystem: filesystem on /dev/sda3 is inconsistent (r) (see 250.full) Ran: 250 Failures: 250 Failed 1 of 1 tests Please let me know in case more information is needed. Thanks & Regards, Amit Sahrawat --0016e65aeabe1ca54804a66f30b2 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Dear All,
=A0
Test Case : 250 results in failure o= n x86(2.6.31.y) and ARM(2.6.35.13..)
=A0
Please find the logs for both versions as given below:<= /div>
[root@localhost xfstests-2011-05-11]# ./check -xfs 250
FSTYP=A0=A0= =A0=A0=A0=A0=A0=A0 -- xfs (non-debug)
PLATFORM=A0=A0=A0=A0=A0 -- Linux/i= 686 localhost 2.6.31.5-127.fc12.i686.PAE
MKFS_OPTIONS=A0 -- -f -bsize=3D= 4096 /dev/sdb4
MOUNT_OPTIONS -- -o context=3Dsystem_u:object_r:nfs_t:s0 = /dev/sdb4 /media/d
250=A0 [failed, exit status 1] - no qualified output
Ran: 250
Fa= ilures: 250
Failed 1 of 1 tests
[root@localhost xfstests-2011-05-11]#=

LOGS for X86:
Jun 24 11:38:24 localhost= kernel: XFS mounting filesystem sdb3
Jun 24 11:38:34 localhost kernel: XFS mounting filesystem sdb4
Jun 24 11= :38:35 localhost kernel: XFS mounting filesystem sdb3
Jun 24 11:38:36 lo= calhost gnome-keyring-daemon[1653]: removing removable location: /media/c Jun 24 11:38:36 localhost gnome-keyring-daemon[1653]: no volume registered = at: /media/c
Jun 24 11:39:14 localhost kernel: XFS mounting filesystem l= oop0
Jun 24 11:39:17 localhost kernel: XFS internal error XFS_WANT_CORRU= PTED_GOTO at line 2915 of file fs/xfs/xfs_btree.c.=A0 Caller 0xfabda425
Jun 24 11:39:17 localhost kernel: Pid: 2305, comm: xfs_io Not tainted 2.6.3= 1.5-127.fc12.i686.PAE #1
Jun 24 11:39:17 localhost kernel: Call Trace:Jun 24 11:39:17 localhost kernel: [<fabf07ac>] xfs_error_report+0x3= 1/0x33 [xfs]
Jun 24 11:39:17 localhost kernel: [<fabe5d8b>] xfs_btree_insert+0x9d/= 0x11e [xfs]
Jun 24 11:39:17 localhost kernel: [<fabda425>] ? xfs_b= map_add_extent_hole_real+0x587/0x630 [xfs]
Jun 24 11:39:17 localhost ker= nel: [<fabda425>] xfs_bmap_add_extent_hole_real+0x587/0x630 [xfs]
Jun 24 11:39:17 localhost kernel: [<fabde92e>] xfs_bmap_add_extent+0x= 278/0x386 [xfs]
Jun 24 11:39:17 localhost kernel: [<fac0d991>] ? k= mem_zone_alloc+0x51/0x93 [xfs]
Jun 24 11:39:17 localhost kernel: [<fa= c0d991>] ? kmem_zone_alloc+0x51/0x93 [xfs]
Jun 24 11:39:17 localhost kernel: [<fabe0370>] xfs_bmapi+0x8bf/0x1012= [xfs]
Jun 24 11:39:17 localhost kernel: [<fac09224>] ? xfs_trans_= unlock_chunk+0x8a/0xc8 [xfs]
Jun 24 11:39:17 localhost kernel: [<fabf= d39d>] ? xfs_log_release_iclog+0x16/0x3f [xfs]
Jun 24 11:39:17 localhost kernel: [<fac07c00>] ? _xfs_trans_commit+0x= 1f8/0x2c8 [xfs]
Jun 24 11:39:17 localhost kernel: [<fac0d005>] xfs= _alloc_file_space+0x273/0x324 [xfs]
Jun 24 11:39:17 localhost kernel: [&= lt;fac0d228>] xfs_change_file_space+0x172/0x30e [xfs]
Jun 24 11:39:17 localhost kernel: [<c056ce8d>] ? inode_has_perm+0x69/= 0x84
Jun 24 11:39:17 localhost kernel: [<fac13d17>] xfs_vn_falloca= te+0x71/0x101 [xfs]
Jun 24 11:39:17 localhost kernel: [<c056cf31>]= ? file_has_perm+0x89/0xa3
Jun 24 11:39:17 localhost kernel: [<c04c7b5a>] do_fallocate+0xc5/0xe1=
Jun 24 11:39:17 localhost kernel: [<c04d348c>] ioctl_preallocate+= 0xa4/0xae
Jun 24 11:39:17 localhost kernel: [<c04d3922>] do_vfs_io= ctl+0x48c/0x4d6
Jun 24 11:39:17 localhost kernel: [<c056d1d5>] ? selinux_file_ioctl+0= x43/0x46
Jun 24 11:39:17 localhost kernel: [<c04d39b2>] sys_ioctl+= 0x46/0x66
Jun 24 11:39:17 localhost kernel: [<c0408f7b>] sysenter_= do_call+0x12/0x28
Jun 24 11:39:17 localhost kernel: Filesystem "loop0": XFS interna= l error xfs_trans_cancel at line 1161 of file fs/xfs/xfs_trans.c.=A0 Caller= 0xfac0d09a
Jun 24 11:39:17 localhost kernel:
Jun 24 11:39:17 localho= st kernel: Pid: 2305, comm: xfs_io Not tainted 2.6.31.5-127.fc12.i686.PAE #= 1
Jun 24 11:39:17 localhost kernel: Call Trace:
Jun 24 11:39:17 localhost = kernel: [<fabf07ac>] xfs_error_report+0x31/0x33 [xfs]
Jun 24 11:39= :17 localhost kernel: [<fac07448>] xfs_trans_cancel+0x50/0xd0 [xfs] Jun 24 11:39:17 localhost kernel: [<fac0d09a>] ? xfs_alloc_file_space= +0x308/0x324 [xfs]
Jun 24 11:39:17 localhost kernel: [<fac0d09a>] = xfs_alloc_file_space+0x308/0x324 [xfs]
Jun 24 11:39:17 localhost kernel:= [<fac0d228>] xfs_change_file_space+0x172/0x30e [xfs]
Jun 24 11:39:17 localhost kernel: [<c056ce8d>] ? inode_has_perm+0x69/= 0x84
Jun 24 11:39:17 localhost kernel: [<fac13d17>] xfs_vn_falloca= te+0x71/0x101 [xfs]
Jun 24 11:39:17 localhost kernel: [<c056cf31>]= ? file_has_perm+0x89/0xa3
Jun 24 11:39:17 localhost kernel: [<c04c7b5a>] do_fallocate+0xc5/0xe1=
Jun 24 11:39:17 localhost kernel: [<c04d348c>] ioctl_preallocate+= 0xa4/0xae
Jun 24 11:39:17 localhost kernel: [<c04d3922>] do_vfs_io= ctl+0x48c/0x4d6
Jun 24 11:39:17 localhost kernel: [<c056d1d5>] ? selinux_file_ioctl+0= x43/0x46
Jun 24 11:39:17 localhost kernel: [<c04d39b2>] sys_ioctl+= 0x46/0x66
Jun 24 11:39:17 localhost kernel: [<c0408f7b>] sysenter_= do_call+0x12/0x28
Jun 24 11:39:17 localhost kernel: xfs_force_shutdown(loop0,0x8) called from= line 1162 of file fs/xfs/xfs_trans.c.=A0 Return address =3D 0xfac0745e
= Jun 24 11:39:17 localhost kernel: Filesystem "loop0": Corruption = of in-memory data detected.=A0 Shutting down filesystem: loop0
Jun 24 11:39:17 localhost kernel: Please umount the filesystem, and rectify= the problem(s)
Jun 24 11:39:17 localhost kernel: Filesystem "loop0= ": xfs_log_force: error 5 returned.
Jun 24 11:39:17 localhost kerne= l: Filesystem "loop0": xfs_log_force: error 5 returned.
Jun 24 11:39:18 localhost gnome-keyring-daemon[1653]: removing removable lo= cation: /media/c/250.mnt
Jun 24 11:39:18 localhost gnome-keyring-daemon[= 1653]: no volume registered at: /media/c/250.mnt
Jun 24 11:39:21 localho= st kernel: XFS mounting filesystem sdb3
Jun 24 11:39:21 localhost gnome-keyring-daemon[1653]: removing removable lo= cation: /media/c
Jun 24 11:39:21 localhost gnome-keyring-daemon[1653]: n= o volume registered at: /media/c
=A0
=A0
=A0<= /div>
LOG FOR ARM:
#./check -xfs 250
FSTYP=A0= =A0=A0=A0=A0=A0=A0=A0 -- xfs (non-debug)
PLATFORM=A0=A0=A0=A0=A0 -- Linu= x/armv7l localhost 2.6.35.13
MKFS_OPTIONS=A0 -- -f -bsize=3D4096 /dev/sd= a4
MOUNT_OPTIONS -- /dev/sda4 /media/usb/sda4
XFS mounting filesystem sda4
XFS mounting filesystem sda3
250=A0=
XFS mounting filesystem loop0
XFS internal error XFS_WANT_CORRUPTED_= GOTO at line 2875 of file fs/xfs/xfs_btree.c.=A0 Caller 0xc017a9ec
Backt= race:
[<c0024000>] (dump_backtrace+0x0/0x110) from [<c03240c8>] (dump= _stack+0x18/0x1c)
=A0r6:00000001 r5:d73e77b8 r4:d73e7688 r3:d67db978
= [<c03240b0>] (dump_stack+0x0/0x1c) from [<c0195fc8>] (xfs_error= _report+0x4c/0x5c)
[<c0195f7c>] (xfs_error_report+0x0/0x5c) from [<c0188aa0>] (xfs= _btree_insert+0xbc/0x164)
[<c01889e4>] (xfs_btree_insert+0x0/0x164= ) from [<c017a9ec>] (xfs_bmap_add_extent_hole_real+0x6a4/0x75c)
[<c017a348>] (xfs_bmap_add_extent_hole_real+0x0/0x75c) from [<c017= d068>] (xfs_bmap_add_extent+0x260/0x38c)
[<c017ce08>] (xfs_bmap= _add_extent+0x0/0x38c) from [<c017fdf0>] (xfs_bmapi+0x778/0xe40)
[<c017f678>] (xfs_bmapi+0x0/0xe40) from [<c01b53a8>] (xfs_alloc= _file_space+0x238/0x2f4)
[<c01b5170>] (xfs_alloc_file_space+0x0/0x= 2f4) from [<c01b8160>] (xfs_change_file_space+0x198/0x374)
[<c0= 1b7fc8>] (xfs_change_file_space+0x0/0x374) from [<c01c2a04>] (xfs_= vn_fallocate+0x104/0x154)
[<c01c2900>] (xfs_vn_fallocate+0x0/0x154) from [<c00a75f0>] (do= _fallocate+0xd0/0xe8)
=A0r9:0000000a r8:00000000 r7:0000000a r6:00000000= r5:0000000a
r4:ffffffff
[<c00a7520>] (do_fallocate+0x0/0xe8) f= rom [<c00b7e78>] (ioctl_preallocate+0xf8/0x100)
=A0r9:d67da000 r8:c0020128 r7:00000003 r6:d6fda840 r5:d73cbc00
r4:d67da0= 00
[<c00b7d80>] (ioctl_preallocate+0x0/0x100) from [<c00b83bc&g= t;] (do_vfs_ioctl+0x53c/0x594)
=A0r9:d67da000 r8:c0020128 r7:00000003 r6= :4030582a r5:d73cbc00
r4:bef7e210
[<c00b7e80>] (do_vfs_ioctl+0x0/0x594) from [<c00b84= 54>] (sys_ioctl+0x40/0x64)
[<c00b8414>] (sys_ioctl+0x0/0x64) fr= om [<c001ff80>] (ret_fast_syscall+0x0/0x30)
=A0r7:00000036 r6:0002= a6c0 r5:00000003 r4:bef7e210
Filesystem "loop0": XFS internal error xfs_trans_cancel at line 1= 724 of file fs/xfs/xfs_trans.c.=A0 Caller 0xc01b544c
Backtrace: <= br>[<c0024000>] (dump_backtrace+0x0/0x110) from [<c03240c8>] (d= ump_stack+0x18/0x1c)
=A0r6:d6161400 r5:0000000c r4:cb10e5a0 r3:d67dbc30
[<c03240b0>] (d= ump_stack+0x0/0x1c) from [<c0195fc8>] (xfs_error_report+0x4c/0x5c)[<c0195f7c>] (xfs_error_report+0x0/0x5c) from [<c01b1d18>] (xf= s_trans_cancel+0x7c/0x108)
[<c01b1c9c>] (xfs_trans_cancel+0x0/0x108) from [<c01b544c>] (xf= s_alloc_file_space+0x2dc/0x2f4)
=A0r6:d6fda720 r5:d6161400 r4:00000004[<c01b5170>] (xfs_alloc_file_space+0x0/0x2f4) from [<c01b8160>= ;] (xfs_change_file_space+0x198/0x374)
[<c01b7fc8>] (xfs_change_file_space+0x0/0x374) from [<c01c2a04>= ] (xfs_vn_fallocate+0x104/0x154)
[<c01c2900>] (xfs_vn_fallocate+0x= 0/0x154) from [<c00a75f0>] (do_fallocate+0xd0/0xe8)
=A0r9:0000000a= r8:00000000 r7:0000000a r6:00000000 r5:0000000a
r4:ffffffff
[<c00a7520>] (do_fallocate+0x0/0xe8) from [<c00b7e7= 8>] (ioctl_preallocate+0xf8/0x100)
=A0r9:d67da000 r8:c0020128 r7:0000= 0003 r6:d6fda840 r5:d73cbc00
r4:d67da000
[<c00b7d80>] (ioctl_pr= eallocate+0x0/0x100) from [<c00b83bc>] (do_vfs_ioctl+0x53c/0x594)
=A0r9:d67da000 r8:c0020128 r7:00000003 r6:4030582a r5:d73cbc00
r4:bef7e2= 10
[<c00b7e80>] (do_vfs_ioctl+0x0/0x594) from [<c00b8454>] (= sys_ioctl+0x40/0x64)
[<c00b8414>] (sys_ioctl+0x0/0x64) from [<c= 001ff80>] (ret_fast_syscall+0x0/0x30)
=A0r7:00000036 r6:0002a6c0 r5:00000003 r4:bef7e210
xfs_force_shutdown(lo= op0,0x8) called from line 1725 of file fs/xfs/xfs_trans.c.=A0 Return addres= s =3D 0xc01b1d2c
Filesystem "loop0": Corruption of in-memory d= ata detected.=A0 Shutting down filesystem: loop0
Please umount the filesystem, and rectify the problem(s)
xfs_force_shutd= own(loop0,0x1) called from line 1017 of file fs/xfs/linux-2.6/xfs_buf.c.=A0= Return address =3D 0xc01bd334
Filesystem "loop0": xfs_log_for= ce: error 5 returned.
Filesystem "loop0": xfs_log_force: error 5 returned.
=A0[faile= d, exit status 1] - no qualified output
umount: can't umount /media/= usb/sda3: Device or resource busy
_check_xfs_filesystem: filesystem on /= dev/sda3 has dirty log (see 250.full)
_check_xfs_filesystem: filesystem on /dev/sda3 is inconsistent (c) (see 250= .full)
_check_xfs_filesystem: filesystem on /dev/sda3 is inconsistent (r= ) (see 250.full)
Ran: 250
Failures: 250
Failed 1 of 1 tests
=A0
Please let me know in case more information is needed.
=A0
Thanks & Regards,
Amit Sahrawat
<= div>=A0
--0016e65aeabe1ca54804a66f30b2-- From amit.sahrawat83@gmail.com Fri Jun 24 02:15:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.2 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE,J_CHICKENPOX_24,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p5O7FwKg258603 for ; Fri, 24 Jun 2011 02:15:58 -0500 X-ASG-Debug-ID: 1308899756-02d102ed0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ey0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CBAD12AE07 for ; Fri, 24 Jun 2011 00:15:57 -0700 (PDT) Received: from mail-ey0-f181.google.com (mail-ey0-f181.google.com [209.85.215.181]) by cuda.sgi.com with ESMTP id sR225CV6TiQRmsGu for ; Fri, 24 Jun 2011 00:15:57 -0700 (PDT) Received: by eyh5 with SMTP id 5so872317eyh.26 for ; Fri, 24 Jun 2011 00:15:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=dsH1cFg2Cnjw6cKs0AkEBGONV/bei6tKq4g6m22gSaM=; b=Kf/6or5AqnMI25C0u/e4eycy5IB6bgRs/HRCRkUy3s843bgV5aZiWKNFOo/iHfw8ru 4cW796/FU3Qlr4rXHKN5IgnAhbzyyyygECAskVGf/5TTsv5eAxA9Bn0ZiRvsfv7JdLPa SKFy5f94VYSKFUxmQjQSRZ8O2x7eWqXAgrdXY= 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=WrgTlqHl1tC/ndQ7RYYd+WhcJthhQakquApVYvAlFRgQmsWDq1L1jw4LwN93/Bu1vN /+BF2NRAWxnM1fbnwzSXa6XL41I0OAD+fhBbdLRycCqcyVe/cxGHUVlQPsaW5N7Ro/ZW MdL3rPhz0jfyP7wUwcJXOlhKGPDmlNawdExp0= MIME-Version: 1.0 Received: by 10.14.53.138 with SMTP id g10mr1957980eec.142.1308899756458; Fri, 24 Jun 2011 00:15:56 -0700 (PDT) Received: by 10.14.37.15 with HTTP; Fri, 24 Jun 2011 00:15:56 -0700 (PDT) In-Reply-To: References: <4E022818.7030406@linux.vnet.ibm.com> <20110623062030.GY32466@dastard> Date: Fri, 24 Jun 2011 12:45:56 +0530 Message-ID: X-ASG-Orig-Subj: Re: XFS Test Case:252 - Shows Wrong Output Subject: Re: XFS Test Case:252 - Shows Wrong Output From: Amit Sahrawat To: Dave Chinner Cc: Allison Henderson , xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=000e0cdf6e4c07c1b404a66ff936 X-Barracuda-Connect: mail-ey0-f181.google.com[209.85.215.181] X-Barracuda-Start-Time: 1308899757 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.66963 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 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 --000e0cdf6e4c07c1b404a66ff936 Content-Type: text/plain; charset=ISO-8859-1 This has to be an issue with everyone who is using XFS version which is not supporting "fpunch" but still none has raised this. As per my view, the support checking function *_require_xfs_io_falloc_punch() *is not working correctly otherwise it should return from that point. *Instead of:* echo $testio | grep -q "not found" If we are sure of a *"hole"* from that command, then we can grep for "hole" in $testio. Please correct me if I am wrong. Thanks & Regards, Amit Sahrawat On Thu, Jun 23, 2011 at 5:00 PM, Amit Sahrawat wrote: > What if we modify this *_require_xfs_io_falloc_punch()? T*o check whether > "Hole" is created or not? This seems valid point for checking punch Support. > > Thanks & Regards, > Amit Sahrawat > > > > On Thu, Jun 23, 2011 at 4:27 PM, Amit Sahrawat wrote: > >> This is linked with new feature.. Add punch support, although the code >> existed before also, but the 'punch' has been specifically handled through >> cmd = XFS_IOC_UNRESVP. >> >> Also, *fallocate* is moved out from *'xfs_iops.c'* to 'file operations' >> in *xfs_file.c*, which handles the case for >> >> if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) >> return -EOPNOTSUPP; >> ... >> if(mode & FALLOC_FL_PUNCH_HOLE) >> cmd = XFS_IOC_UNRESVSP; >> ... >> Now, for old kernels, how to make sure that this test case does not >> execute or return meaningful error? without changing the kernel code it will >> not return error; >> Since, *FALLOC_FL_KEEP_SIZE *this is true and the command work with >> XFS_IOC_RESVP. >> >> Please suggest. >> >> >> Thanks & Regards, >> Amit Sahrawat >> >> >> >> On Thu, Jun 23, 2011 at 12:06 PM, Amit Sahrawat < >> amit.sahrawat83@gmail.com> wrote: >> >>> Fortunately or Unfortunately I have 2.6.31(x86) and 2.6.35.13(ARM) and >>> both do not support "fpunch". As per your earlier mail - 2.6.35.y does not >>> support "fpunch" so I though of trying on 2.6.31.y. >>> >>> I will check out for the return errors in this condition and will update >>> more on this. >>> >>> Thanks & Regards, >>> Amit Sahrawat >>> >>> >>> >>> On Thu, Jun 23, 2011 at 11:50 AM, Dave Chinner wrote: >>> >>>> On Thu, Jun 23, 2011 at 11:21:26AM +0530, Amit Sahrawat wrote: >>>> > Hi, >>>> > >>>> > *PLATFORM -- Linux/i686 localhost 2.6.31.5-127.fc12.i686.PAE* >>>> ^^^^^^^^^^^ >>>> > >>>> > The output as per the command mentioned by you: >>>> > [root@localhost xfstests-2011-05-11]# xfs_io -f -c "truncate 20k" -c >>>> "falloc >>>> > 0 20k" -c "pwrite 0k 8k" -c "fs >>>> > ync" -c "pwrite 12k 8k" -c "fsync" -c "fpunch 4k 12k" -c "fiemap -v" >>>> > /media/c/newfile >>>> > wrote 8192/8192 bytes at offset 0 >>>> > 8 KiB, 2 ops; 0.0000 sec (434.028 MiB/sec and 111111.1111 ops/sec) >>>> > command "fs >>>> > ync" not found >>>> > wrote 8192/8192 bytes at offset 12288 >>>> > 8 KiB, 2 ops; 0.0000 sec (977 MiB/sec and 250000.0000 ops/sec) >>>> > /media/c/newfile: >>>> > * EXT: FILE-OFFSET BLOCK-RANGE TOTAL FLAGS >>>> > 0: [0..15]: 176..191 16 0x0 >>>> > 1: [16..23]: 192..199 8 0x800 >>>> > 2: [24..39]: 200..215 16 0x1 >>>> > * >>>> >>>> The fpunch command did not punch the range out. >>>> >>>> Amit, once again you're testing on a kernel (2.6.31) that does not >>>> support the punch operation. As I suggested previously, you need to >>>> find out why the fpunch command is not returning an error as that is >>>> root cause of your failures. >>>> >>>> Cheers, >>>> >>>> Dave. >>>> -- >>>> Dave Chinner >>>> david@fromorbit.com >>>> >>> >>> >> > --000e0cdf6e4c07c1b404a66ff936 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
This has to be an issue with everyone who is using XFS version which i= s not supporting "fpunch" but still none has raised this. As per = my view, the support checking function _require_xfs_io_falloc_punch= () is not working correctly otherwise it should return from that p= oint.
=A0
Instead of:
echo $testio | gr= ep -q "not found"
If we are sure of a "hole&q= uot; from that command, then we can grep for "hole" in $test= io.
=A0
Please correct me if I am wrong.
=A0
Thanks & Regards,
Amit Sahrawat
=A0

=
=A0
On Thu, Jun 23, 2011 at 5:00 PM, Am= it Sahrawat <amit.sahrawat83@gmail.com> wrote:
What if we modify this _require_x= fs_io_falloc_punch()? To check whether "Hole" is created= or not? This seems valid point for checking punch Support.
=A0
Thanks & Regards,
Amit Sahrawat


=A0<= /div>
On Thu, Jun 23, 2011 at 4:27 PM, Amit Sahra= wat <amit.sahrawat83@gmail.com> wrote:
This is linked with new feature.. Add pun= ch support, although the code existed before also, but the 'punch' = has been specifically handled through
cmd =3D XFS_IOC_UNRESVP.
=A0
Also, falloca= te is moved out from =A0'xfs_iops.c' to 'file= operations' in xfs_file.c, which handles the case for=A0=A0= =A0
=A0
if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_H= OLE))
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 return -EOPNOTSUPP;
...
if(mode & FALLOC_FL_PUNCH_HOLE)
=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 cmd =3D XFS_IOC_UNRESVSP;
...
Now, for old kernels, how to make sure that this test ca= se does not execute or return meaningful error? without changing the kernel= code it will not return error;
Since, FALLOC_FL_KEEP_SIZ= E this is true and the command work=A0with XFS_IOC_RESVP.
=A0
Please suggest.
=A0
=A0
Th= anks & Regards,
Amit Sahrawat
=

=A0
On Thu, Jun 23, 2011 at 12:06 P= M, Amit Sahrawat <amit.sahrawat83@gmail.com> wrote:<= br>
Fortunately or Unfortunately I have 2.6.3= 1(x86) and 2.6.35.13(ARM) and both do not support "fpunch". As pe= r your earlier mail - 2.6.35.y does not support "fpunch" so I tho= ugh of trying on 2.6.31.y.
=A0
I will check out for the return errors in this condition= and will update more on this.
=A0
Thanks & Regard= s,
Amit Sahrawat


=A0
On Thu, Jun 23, 2011 at 11:50 AM, Dave Chinner <david@fromorbit.com&= gt; wrote:
On Thu, Jun 23, 2011 at 11:21:26AM +0530, Amit Sahrawat wrote:
> Hi,
>
> *PLATFORM =A0 =A0 =A0-- Linux/i686 localhost 2.6.31.5-127.fc12.i686.PA= E*
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 ^^^^^^^^^^^
>
> The output as per the command mentioned by you:
> [root@localhost xfstests-2011-05-11]# xfs_io -f -c "truncate 20k&= quot; -c "falloc
> 0 20k" -c "pwrite 0k 8k" -c "fs
> ync" -c "pwrite 12k 8k" -c "fsync" -c "f= punch 4k 12k" -c "fiemap -v"
> /media/c/newfile
> wrote 8192/8192 bytes at offset 0
> 8 KiB, 2 ops; 0.0000 sec (434.028 MiB/sec and 111111.1111 ops/sec)
> command "fs
> ync" not found
> wrote 8192/8192 bytes at offset 12288
> 8 KiB, 2 ops; 0.0000 sec (977 MiB/sec and 250000.0000 ops/sec)
> /media/c/newfile:
> * EXT: FILE-OFFSET =A0 =A0 =A0BLOCK-RANGE =A0 =A0 =A0TOTAL FLAGS
> =A0 =A00: [0..15]: =A0 =A0 =A0 =A0 176..191 =A0 =A0 =A0 =A0 =A0 =A016 = =A0 0x0
> =A0 =A01: [16..23]: =A0 =A0 =A0 =A0192..199 =A0 =A0 =A0 =A0 =A0 =A0 8 = 0x800
> =A0 =A02: [24..39]: =A0 =A0 =A0 =A0200..215 =A0 =A0 =A0 =A0 =A0 =A016 = =A0 0x1
> *

The fpunch command did not punch the range out.

Amit, once again you're testing on a kernel (2.6.31) that does not
support the punch operation. As I suggested previously, you need to
find out why the fpunch command is not returning an error as that is
root cause of your failures.

Cheers,

Dave.
--
Dave Chinner
david@fromorbit.co= m




--000e0cdf6e4c07c1b404a66ff936-- From aelder@oss.sgi.com Fri Jun 24 12:37:54 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=ALL_TRUSTED,BAYES_00, J_CHICKENPOX_47 autolearn=no version=3.4.0-r929098 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 p5OHbsiu038908 for ; Fri, 24 Jun 2011 12:37:54 -0500 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id p5OHbqKP038870; Fri, 24 Jun 2011 12:37:52 -0500 Date: Fri, 24 Jun 2011 12:37:52 -0500 Message-Id: <201106241737.p5OHbqKP038870@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.38-18962-g4a33821 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: a27a263bae072a499acc77b632238a6dacccf888 X-Git-Newrev: 4a33821236f2ef3af0081e8a5eec1301cbed3125 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 4a33821 xfs: prevent bogus assert when trying to remove non-existent attribute df4368a xfs: clear XFS_IDIRTY_RELEASE on truncate down 778e24b xfs: reset inode per-lifetime state when recycling it from a27a263bae072a499acc77b632238a6dacccf888 (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 4a33821236f2ef3af0081e8a5eec1301cbed3125 Author: Dave Chinner Date: Thu Jun 23 01:35:01 2011 +0000 xfs: prevent bogus assert when trying to remove non-existent attribute If the attribute fork on an inode is in btree format and has multiple levels (i.e node format rather than leaf format), then a lookup failure will trigger an assert failure in xfs_da_path_shift if the flag XFS_DA_OP_OKNOENT is not set. This flag is used to indicate to the directory btree code that not finding an entry is not a fatal error. In the case of doing a lookup for a directory name removal, this is valid as a user cannot insert an arbitrary name to remove from the directory btree. However, in the case of the attribute tree, a user has direct control over the attribute name and can ask for any random name to be removed without any validation. In this case, fsstress is asking for a non-existent user.selinux attribute to be removed, and that is causing xfs_da_path_shift() to fall off the bottom of the tree where it asserts that a lookup failure is allowed. Because the flag is not set, we die a horrible death on a debug enable kernel. Prevent this assert from firing on attribute removes by adding the op_flag XFS_DA_OP_OKNOENT to atribute removal operations. Discovered when testing on a SELinux enabled system by fsstress in test 070 by trying to remove a non-existent user.selinux attribute. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit df4368a146d2b350b8398babfe11e2088f741d67 Author: Dave Chinner Date: Thu Jun 23 01:35:00 2011 +0000 xfs: clear XFS_IDIRTY_RELEASE on truncate down When an inode is truncated down, speculative preallocation is removed from the inode. This should also reset the state bits for controlling whether preallocation is subsequently removed when the file is next closed. The flag is not being cleared, so repeated operations on a file that first involve a truncate (e.g. multiple repeated dd invocations on a file) give different file layouts for the second and subsequent invocations. Fix this by clearing the XFS_IDIRTY_RELEASE state bit when the XFS_ITRUNCATED bit is detected in xfs_release() and hence ensure that speculative delalloc is removed on files that have been truncated down. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit 778e24bb6dd8682318bb496d4bfdc32b501a6420 Author: Dave Chinner Date: Thu Jun 23 01:34:59 2011 +0000 xfs: reset inode per-lifetime state when recycling it XFS inodes has several per-lifetime state fields that determine the behaviour of the inode. These state fields are not all reset when an inode is reused from the reclaimable state. This can lead to unexpected behaviour of the new inode such as speculative preallocation not being truncated away in the expected manner for local files until the inode is subsequently truncated, freed or cycles out of the cache. It can also lead to an inode being considered to be a filestream inode or having been truncated when that is not the case. Rework the reinitialisation of the inode when it is recycled to ensure that it is pristine before it is reused. While there, also fix the resetting of state flags in the recycling error paths so the inode does not become unreclaimable. Signed-off-by: Dave Chinner Signed-off-by: Alex Elder ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_attr.c | 7 +++++++ fs/xfs/xfs_iget.c | 13 +++++++++---- fs/xfs/xfs_inode.h | 10 ++++++++++ fs/xfs/xfs_vnodeops.c | 7 +++++-- 4 files changed, 31 insertions(+), 6 deletions(-) hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jun 24 12:37:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=ALL_TRUSTED,BAYES_00, J_CHICKENPOX_47 autolearn=no version=3.4.0-r929098 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 p5OHbugF039008 for ; Fri, 24 Jun 2011 12:37:57 -0500 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id p5OHbsF7038964; Fri, 24 Jun 2011 12:37:54 -0500 Date: Fri, 24 Jun 2011 12:37:54 -0500 Message-Id: <201106241737.p5OHbsF7038964@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-linus, updated. v2.6.38-18962-g4a33821 X-Git-Refname: refs/heads/for-linus X-Git-Reftype: branch X-Git-Oldrev: a27a263bae072a499acc77b632238a6dacccf888 X-Git-Newrev: 4a33821236f2ef3af0081e8a5eec1301cbed3125 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-linus has been updated 4a33821 xfs: prevent bogus assert when trying to remove non-existent attribute df4368a xfs: clear XFS_IDIRTY_RELEASE on truncate down 778e24b xfs: reset inode per-lifetime state when recycling it from a27a263bae072a499acc77b632238a6dacccf888 (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 4a33821236f2ef3af0081e8a5eec1301cbed3125 Author: Dave Chinner Date: Thu Jun 23 01:35:01 2011 +0000 xfs: prevent bogus assert when trying to remove non-existent attribute If the attribute fork on an inode is in btree format and has multiple levels (i.e node format rather than leaf format), then a lookup failure will trigger an assert failure in xfs_da_path_shift if the flag XFS_DA_OP_OKNOENT is not set. This flag is used to indicate to the directory btree code that not finding an entry is not a fatal error. In the case of doing a lookup for a directory name removal, this is valid as a user cannot insert an arbitrary name to remove from the directory btree. However, in the case of the attribute tree, a user has direct control over the attribute name and can ask for any random name to be removed without any validation. In this case, fsstress is asking for a non-existent user.selinux attribute to be removed, and that is causing xfs_da_path_shift() to fall off the bottom of the tree where it asserts that a lookup failure is allowed. Because the flag is not set, we die a horrible death on a debug enable kernel. Prevent this assert from firing on attribute removes by adding the op_flag XFS_DA_OP_OKNOENT to atribute removal operations. Discovered when testing on a SELinux enabled system by fsstress in test 070 by trying to remove a non-existent user.selinux attribute. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit df4368a146d2b350b8398babfe11e2088f741d67 Author: Dave Chinner Date: Thu Jun 23 01:35:00 2011 +0000 xfs: clear XFS_IDIRTY_RELEASE on truncate down When an inode is truncated down, speculative preallocation is removed from the inode. This should also reset the state bits for controlling whether preallocation is subsequently removed when the file is next closed. The flag is not being cleared, so repeated operations on a file that first involve a truncate (e.g. multiple repeated dd invocations on a file) give different file layouts for the second and subsequent invocations. Fix this by clearing the XFS_IDIRTY_RELEASE state bit when the XFS_ITRUNCATED bit is detected in xfs_release() and hence ensure that speculative delalloc is removed on files that have been truncated down. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit 778e24bb6dd8682318bb496d4bfdc32b501a6420 Author: Dave Chinner Date: Thu Jun 23 01:34:59 2011 +0000 xfs: reset inode per-lifetime state when recycling it XFS inodes has several per-lifetime state fields that determine the behaviour of the inode. These state fields are not all reset when an inode is reused from the reclaimable state. This can lead to unexpected behaviour of the new inode such as speculative preallocation not being truncated away in the expected manner for local files until the inode is subsequently truncated, freed or cycles out of the cache. It can also lead to an inode being considered to be a filestream inode or having been truncated when that is not the case. Rework the reinitialisation of the inode when it is recycled to ensure that it is pristine before it is reused. While there, also fix the resetting of state flags in the recycling error paths so the inode does not become unreclaimable. Signed-off-by: Dave Chinner Signed-off-by: Alex Elder ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_attr.c | 7 +++++++ fs/xfs/xfs_iget.c | 13 +++++++++---- fs/xfs/xfs_inode.h | 10 ++++++++++ fs/xfs/xfs_vnodeops.c | 7 +++++-- 4 files changed, 31 insertions(+), 6 deletions(-) hooks/post-receive -- XFS development tree From david@fromorbit.com Fri Jun 24 19:09:30 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5P09TMQ059476 for ; Fri, 24 Jun 2011 19:09:30 -0500 X-ASG-Debug-ID: 1308960567-5eba00990000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A61292D4CB for ; Fri, 24 Jun 2011 17:09:27 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id g1xUF15rBNNnxd4n for ; Fri, 24 Jun 2011 17:09:27 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApICAPMkBU55LChDgWdsb2JhbABSp0EVAQEWJiXJdA6GHwSiHw Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail07.adl2.internode.on.net with ESMTP; 25 Jun 2011 09:39:26 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QaGRA-0000Az-8u; Sat, 25 Jun 2011 10:09:24 +1000 Date: Sat, 25 Jun 2011 10:09:24 +1000 From: Dave Chinner To: Amit Sahrawat Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Failure of test case : 250 Subject: Re: Failure of test case : 250 Message-ID: <20110625000924.GB32466@dastard> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1308960568 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0970 1.0000 -1.4108 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.41 X-Barracuda-Spam-Status: No, SCORE=-1.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.2.67031 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, Jun 24, 2011 at 11:49:45AM +0530, Amit Sahrawat wrote: > Dear All, > > Test Case : 250 results in failure on x86(2.6.31.y) and ARM(2.6.35.13..) The XFS_WANT_CORRUPTED_GOTO bug wasn't fixed until 3.0-rc1 (bf59170 xfs: obey minleft values during extent allocation correctly), so of course you'll get that failure on .31 and .35 kernels. Amit, I'd suggest that you try to reproduce the problems you have on a top of tree kernel first before reporting them. Most of us XFS developers don't really have time to triage or solve failures on old kernels like 2.6.31 or 2.6.35 and so are ignoring your bug reports. Reporting bugs on old kernels that have since been fixed is really just a waste of our (limited) time. If you find a bug that isn't fixed on TOT, then we'll triage it and get it fixed in TOT. However, if you can't reproduce them on top of tree, then you need to go an find the commit (kernel, xfsprogs or xfstests) yourself that makes the test pass and back port it to your tree. Same for if we fix a bug you report in TOT - we're not going to backport the fixes to your trees for you. We'll review backported patches if you post them to the list, but we don't have time (or motivation) to do the backports and QA them for you. And if you are backporting to a long term stable tree, feel free to submit the tested backports to stable@kernel.org (cc'ing the xfs list so they can be reviewed, of course) so that everyone else can also benefit from your work.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From sgi-linux-xfs@lo.gmane.org Sat Jun 25 12:03:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5PH3fZ4128953 for ; Sat, 25 Jun 2011 12:03:45 -0500 X-ASG-Debug-ID: 1309021419-0d6e01540000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lo.gmane.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 49C7A15E7609 for ; Sat, 25 Jun 2011 10:03:39 -0700 (PDT) Received: from lo.gmane.org (lo.gmane.org [80.91.229.12]) by cuda.sgi.com with ESMTP id QMdaoXa1FlnY3tEl for ; Sat, 25 Jun 2011 10:03:39 -0700 (PDT) Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1QaWGe-0005Pz-9I for linux-xfs@oss.sgi.com; Sat, 25 Jun 2011 19:03:36 +0200 Received: from s0106000acd1d509c.du.shawcable.net ([70.67.174.161]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 25 Jun 2011 19:03:36 +0200 Received: from prad by s0106000acd1d509c.du.shawcable.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 25 Jun 2011 19:03:36 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: linux-xfs@oss.sgi.com From: prad X-ASG-Orig-Subj: xfsrestore seems to hang Subject: xfsrestore seems to hang Date: Sat, 25 Jun 2011 09:59:38 -0700 Lines: 64 Message-ID: <87oc1ln8xx.fsf@psinom.home> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: s0106000acd1d509c.du.shawcable.net User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) Cancel-Lock: sha1:jVvsJAUr8PzUeOAwrF5InfsqZO4= X-Barracuda-Connect: lo.gmane.org[80.91.229.12] X-Barracuda-Start-Time: 1309021420 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67098 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 seems to be a new development. in the past, i've xfsdumped my home directory as home.xfs in a separate partition on the same drive and have extracted a specific file without any difficulties. now i'm trying to do the same thing on an external usb drive which has the xfs filesystem on it. i can xfsdump to it no problem. then i try to restore: 1. cd into the directory /media/f6..... 2. mkdir tmp 3. xfsrestore -i -f home.xfs tmp/ 4. ls and cd to the right place - all work just fine 5. add the file i want to extract 6. extract things seem to be working: -> ls 77766469 kyron/ 131 pradmin/ -> cd pradmin/Public -> ls 1766125579 ipflush.sh 1766125536 iptables.sh -> add ipflush.sh -> ls * 1766125579 ipflush.sh 1766125536 iptables.sh -> extract --------------------------------- end dialog --------------------------------- xfsrestore: restoring non-directory files but it just hangs on the last line and we wait and wait and wait. top shows that xfsrestore is using 3% of cpu so something is happening supposedly, but i don't know what. inside tmp there are the usual directories: orphanage and xfsrestorehousekeepingdir but they don't want to go away (orphanage is empty) because the thing doesn't finish. i tried the same thing with a -V5, but the only difference seemed to be hanging on: xfsrestore:general: restoring non-directory files are there error logfiles somewhere? how can i troubleshoot this problem? -- in friendship, prad From sgi-linux-xfs@lo.gmane.org Sat Jun 25 13:33:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5PIXQb7132209 for ; Sat, 25 Jun 2011 13:33:31 -0500 X-ASG-Debug-ID: 1309026804-04e901b80000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lo.gmane.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7895815E767E for ; Sat, 25 Jun 2011 11:33:24 -0700 (PDT) Received: from lo.gmane.org (lo.gmane.org [80.91.229.12]) by cuda.sgi.com with ESMTP id MGIt8N5ggidnCeMd for ; Sat, 25 Jun 2011 11:33:24 -0700 (PDT) Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1QaXfY-0001A1-0j for linux-xfs@oss.sgi.com; Sat, 25 Jun 2011 20:33:24 +0200 Received: from s0106000acd1d509c.du.shawcable.net ([70.67.174.161]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 25 Jun 2011 20:33:24 +0200 Received: from prad by s0106000acd1d509c.du.shawcable.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 25 Jun 2011 20:33:24 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: linux-xfs@oss.sgi.com From: prad X-ASG-Orig-Subj: Re: xfsrestore seems to hang Subject: Re: xfsrestore seems to hang Date: Sat, 25 Jun 2011 11:29:26 -0700 Lines: 22 Message-ID: <87iprtn4s9.fsf@psinom.home> References: <87oc1ln8xx.fsf@psinom.home> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: s0106000acd1d509c.du.shawcable.net User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) Cancel-Lock: sha1:dGkh5K/s00HtB6mCJfj1SfapSdY= X-Barracuda-Connect: lo.gmane.org[80.91.229.12] X-Barracuda-Start-Time: 1309026805 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67104 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 prad writes: > but it just hangs on the last line and we wait and wait and wait. > could it be that we're supposed to? i just extracted a 21K file from a 3G dump and it took 168s. the home.xfs file is 129G more than 40times the size of the small one, so if things are simply proportional we're looking at 168s x 40 = 112m or well over an hour and a half! i acknowledge that i stopped the thing after a little more than half an hour. so is it possible that the xfsrestore system has to go through the motion of handling the entire file even when it's just extracting a small part of it and things will take their time? -- in friendship, prad From marcus@task.com.br Sat Jun 25 14:50:08 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5PJo8Di135459 for ; Sat, 25 Jun 2011 14:50:08 -0500 X-ASG-Debug-ID: 1309031396-058d001a0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp1.task.com.br (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F31F92E4B5 for ; Sat, 25 Jun 2011 12:49:56 -0700 (PDT) Received: from smtp1.task.com.br (smtp1.task.com.br [174.37.54.130]) by cuda.sgi.com with ESMTP id Y9gyGhF7pySdZM1O for ; Sat, 25 Jun 2011 12:49:56 -0700 (PDT) Received: from [200.162.176.8] (x1.task.com.br [::ffff:200.162.176.8]) (AUTH: PLAIN marcus@task.com.br, SSL: TLSv1/SSLv3,256bits,AES256-SHA) by smtp1.task.com.br with esmtp; Sat, 25 Jun 2011 16:49:49 -0300 id 00000000000617A3.000000004E063BDD.00000382 Message-ID: <4E063BC6.9000801@task.com.br> Date: Sat, 25 Jun 2011 16:49:26 -0300 From: Marcus Pereira User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110516 Thunderbird/3.1.10 MIME-Version: 1.0 To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: mkfs.xfs error creating large agcount an raid Subject: mkfs.xfs error creating large agcount an raid Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: smtp1.task.com.br[174.37.54.130] X-Barracuda-Start-Time: 1309031396 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67111 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 have an issue when creating xfs volume using large agcounts on raid volumes. /dev/md0 is a 4 disks raid 0 array: ---------------------------------------- # mkfs.xfs -V mkfs.xfs version 3.1.4 # mkfs.xfs -d agcount=1872 -b size=4096 /dev/md0 -f Warning: AG size is a multiple of stripe width. This can cause performance problems by aligning all AGs on the same disk. To avoid this, run mkfs with an AG size that is one stripe unit smaller, for example 147840. log stripe unit (524288 bytes) is too large (maximum is 256KiB) log stripe unit adjusted to 32KiB meta-data=/dev/md0 isize=256 agcount=1872, agsize=147968 blks = sectsz=512 attr=2, projid32bit=0 data = bsize=4096 blocks=276810752, imaxpct=5 = sunit=128 swidth=512 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal log bsize=4096 blocks=135168, version=2 = sectsz=512 sunit=8 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 mkfs.xfs: pwrite64 failed: No space left on device # mkfs.xfs -d agcount=1871 -b size=4096 /dev/md0 -f Warning: AG size is a multiple of stripe width. This can cause performance problems by aligning all AGs on the same disk. To avoid this, run mkfs with an AG size that is one stripe unit smaller, for example 147840. log stripe unit (524288 bytes) is too large (maximum is 256KiB) log stripe unit adjusted to 32KiB meta-data=/dev/md0 isize=256 agcount=1871, agsize=147968 blks = sectsz=512 attr=2, projid32bit=0 data = bsize=4096 blocks=276810752, imaxpct=5 = sunit=128 swidth=512 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal log bsize=4096 blocks=135168, version=2 = sectsz=512 sunit=8 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 ---------------------------------------------- Any agcount greater then 1871 will lead an error, below that is OK. I have the same issue when creating xfs volumes on a lvm stripe but with different agcounts. When the volume is not on an raid array any number of agcount is OK, so seems the problem is when sunit/swidth is used. Marcus From mw@dermichi.com Sat Jun 25 16:42:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5PLgdHV147100 for ; Sat, 25 Jun 2011 16:42:40 -0500 X-ASG-Debug-ID: 1309038158-405600c30000-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 0D7472E70A for ; Sat, 25 Jun 2011 14:42:38 -0700 (PDT) Received: from firestarter.dermichi.com (firestarter.dermichi.com [78.41.115.230]) by cuda.sgi.com with ESMTP id t3mm3s28ohLx5Bug for ; Sat, 25 Jun 2011 14:42:38 -0700 (PDT) Received: from speechless.lan.dermichi.com ([2001:470:26:2a9:4a5b:39ff:fe18:7163]) by firestarter.dermichi.com with esmtpsa (TLSv1:CAMELLIA256-SHA:256) (Exim 4.76) (envelope-from ) id 1Qaacd-0000zE-1T for xfs@oss.sgi.com; Sat, 25 Jun 2011 23:42:35 +0200 Message-ID: <4E065648.4070904@dermichi.com> Date: Sat, 25 Jun 2011 23:42:32 +0200 From: Michael Weissenbacher User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110516 Thunderbird/3.1.10 MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfsrestore seems to hang Subject: Re: xfsrestore seems to hang References: <87oc1ln8xx.fsf@psinom.home> <87iprtn4s9.fsf@psinom.home> In-Reply-To: <87iprtn4s9.fsf@psinom.home> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: firestarter.dermichi.com[78.41.115.230] X-Barracuda-Start-Time: 1309038159 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1425 1.0000 -1.1436 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.14 X-Barracuda-Spam-Status: No, SCORE=-1.14 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67117 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 Prad! > > so is it possible that the xfsrestore system has to go through the > motion of handling the entire file even when it's just extracting a > small part of it and things will take their time? > Yes, that's simply the way it works. It has to go through the whole dump to restore one file. Same thing as if you used tar. Both were originally designed to be written to tape. So if you want to restore single files you should look for another solution. I like to use rsync a lot for that. cheers, michael From sgi-linux-xfs@lo.gmane.org Sat Jun 25 17:39:00 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5PMcxNJ149473 for ; Sat, 25 Jun 2011 17:39:00 -0500 X-ASG-Debug-ID: 1309041537-75ce03b70000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lo.gmane.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4C659E1F6CE for ; Sat, 25 Jun 2011 15:38:57 -0700 (PDT) Received: from lo.gmane.org (lo.gmane.org [80.91.229.12]) by cuda.sgi.com with ESMTP id cdji8AiRhf0bGkdm for ; Sat, 25 Jun 2011 15:38:57 -0700 (PDT) Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1QabV9-0001lE-I9 for linux-xfs@oss.sgi.com; Sun, 26 Jun 2011 00:38:55 +0200 Received: from s0106000acd1d509c.du.shawcable.net ([70.67.174.161]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 26 Jun 2011 00:38:55 +0200 Received: from prad by s0106000acd1d509c.du.shawcable.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 26 Jun 2011 00:38:55 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: linux-xfs@oss.sgi.com From: prad X-ASG-Orig-Subj: Re: xfsrestore seems to hang Subject: Re: xfsrestore seems to hang Date: Sat, 25 Jun 2011 15:34:55 -0700 Lines: 31 Message-ID: <87r56hleuo.fsf@psinom.home> References: <87oc1ln8xx.fsf@psinom.home> <87iprtn4s9.fsf@psinom.home> <4E065648.4070904@dermichi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: s0106000acd1d509c.du.shawcable.net User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) Cancel-Lock: sha1:sxy2KFoJ4nf32mArw6Q2/6gb35Q= X-Barracuda-Connect: lo.gmane.org[80.91.229.12] X-Barracuda-Start-Time: 1309041538 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67122 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 Weissenbacher writes: > Hi Prad! >> >> so is it possible that the xfsrestore system has to go through the >> motion of handling the entire file even when it's just extracting a >> small part of it and things will take their time? >> > Yes, that's simply the way it works. It has to go through the whole dump > to restore one file. Same thing as if you used tar. Both were originally > designed to be written to tape. So if you want to restore single files > you should look for another solution. I like to use rsync a lot for that. > ok thx michael! glad that's all cleared up now. so the most intelligent thing to might be to have the xfsdump filesystems available for that big crash possibility and just work on a day-to-day basis with rsync which doesn't duplicate certain things i've found, but seems to be fantastic for ordinary data items. i found this document while looking for backup strategies: http://menehune.opt.wfu.edu/Kokua/SGI/007-2862-005/sgi_html/pt01.html there is a substantial section on xfsdump and xfsrestore as well as several other tools (no rsync though), so i'm sure i'll find some good ideas from there on developing an optimal bkp mechanism for our needs. -- in friendship, prad From xfs@tlinx.org Sat Jun 25 19:30:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5Q0U6SA160550 for ; Sat, 25 Jun 2011 19:30:06 -0500 X-ASG-Debug-ID: 1309048205-0c0f02d20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from Ishtar.tlinx.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 69F16DF31A2 for ; Sat, 25 Jun 2011 17:30:05 -0700 (PDT) Received: from Ishtar.tlinx.org (ishtar.tlinx.org [173.164.175.65]) by cuda.sgi.com with ESMTP id IABNTArrIA22QaWF for ; Sat, 25 Jun 2011 17:30:05 -0700 (PDT) Received: from [192.168.3.12] (Athenae [192.168.3.12]) by Ishtar.tlinx.org (8.14.4/8.14.3/SuSE Linux 0.8) with ESMTP id p5Q0Tr6s024506 for ; Sat, 25 Jun 2011 17:29:55 -0700 Message-ID: <4E067D81.4070605@tlinx.org> Date: Sat, 25 Jun 2011 17:29:53 -0700 From: "Linda A. Walsh" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.24) Thunderbird/2.0.0.24 Mnenhy/0.7.6.666 MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: question on new feature complexity/possibility/sensibility? (^ Alternate) Subject: question on new feature complexity/possibility/sensibility? (^ Alternate) X-Stationery: 0.5.1 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ishtar.tlinx.org[173.164.175.65] X-Barracuda-Start-Time: 1309048205 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67128 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 noticed in the 'cp' (coretuils 8.9-4.1) command on suse, there is a a "--reflink" that controls "clone/CoW" copies -- which says it performs a 'lightweight' copy where the data blocks are copied only when modified. Now it is vague the 'when modified', (i.e. does it mean ones that are different between the two copies) (src and dst), or does it mean only to copy blocks that were modified since 'some point' -- Doesn't say, but would guess it's src/dst diffs (I wonder if it is restricted to the same physical filesystem). Anyway, turns out, it's only for BTRFS (which I haven't yet used, and therefore know only that it supports operations like the above). Would it be practice to implement, some similar, feature in XFS? It wouldn't be practice or useful to do it on an 'extent' basis due to their large size...So to do something similar on XFS, I was thinking, with "some amount of effort", some number of "updated extents" could be kept, in addition to the original data. Any future modifications to the file would also have the extents modified, but any extents that overlap previous mods will be merged, and only the newest data would be kept (meaning that new sections that are written, that skip over parts of the file, wouldn't overwrite a pending change to that section -- only the bytes (granularity?) that were changed. I.e. file is 1Mb. User1 updates bytes 1k-200k. User2, later updates bytes 100k-300k, New modification 'extent' is created with 1k-300k, with bytes 1k-(100k-1) from user1 be saved, and 100k-300k from user2. Changes to the 'base' copy would be made upon some ioctl 'sync' command (file-by-file)... It would require up to double the amount of file space. ---- Another possibility would simply be to create a record of byte ranges that have been updated in the extent and the extent's last modification time. Then one could compare the mod times and apply the changes. The problem there would be having to keep a possibly 'large' log of changes (what if it's not sync/purged... couldn't be circular as that would allow events to be lost -- though the file system could be forced 'offline' if the event log became full ...a major pain...)..., but if it was created with a few G of space, might take a while...and if synced in time, no prob. Still, may be no great desire or benefit, but DAMN if I haven't wanted copy-on-write files for a LONG time. I.e. being able to hardlink files, but have an option to mark it as copy on write -- allowing space to be save when copying directory trees, but then dynamically making new copies when someone updates one of the linked copies. Maybe that's a different feature that could be more easily done? Anyway -- the new copy option just got me thinking.... Any ideas or work in thinking about things in this area for XFS to keep it updated and 'current as a "Filesystem of Choice"....? Thanks, Linda so if a user wants to modify it -- it From stan@hardwarefreak.com Sat Jun 25 21:09:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5Q29Nxb165126 for ; Sat, 25 Jun 2011 21:09:23 -0500 X-ASG-Debug-ID: 1309054161-5a3f02740000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from greer.hardwarefreak.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 384A71764C97 for ; Sat, 25 Jun 2011 19:09:21 -0700 (PDT) Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id CdNrBJsRv1mfWrZg for ; Sat, 25 Jun 2011 19:09:21 -0700 (PDT) Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id CF2386C0D6; Sat, 25 Jun 2011 21:09:18 -0500 (CDT) Message-ID: <4E0694CC.8050003@hardwarefreak.com> Date: Sat, 25 Jun 2011 21:09:16 -0500 From: Stan Hoeppner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11 MIME-Version: 1.0 To: Marcus Pereira CC: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: mkfs.xfs error creating large agcount an raid Subject: Re: mkfs.xfs error creating large agcount an raid References: <4E063BC6.9000801@task.com.br> In-Reply-To: <4E063BC6.9000801@task.com.br> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1309054162 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0984 1.0000 -1.4021 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.30 X-Barracuda-Spam-Status: No, SCORE=-1.30 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67135 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On 6/25/2011 2:49 PM, Marcus Pereira wrote: > I have an issue when creating xfs volume using large agcounts on raid > volumes. Yes, you do have an issue, but not the one you think. > /dev/md0 is a 4 disks raid 0 array: > > ---------------------------------------- > # mkfs.xfs -V > mkfs.xfs version 3.1.4 > > # mkfs.xfs -d agcount=1872 -b size=4096 /dev/md0 -f mkfs.xfs queries mdraid for its parameters and creates close to the optimal number of AGs, sets the stripe width, etc, all automatically. The default number of AGs for striped mdraid devices is 16 IIRC, and even that is probably a tad too high for a 4 spindle stripe. Four or eight AGs would probably be better here, depending on your workload, which you did not state. Please state your target workload. At 1872 you have 117 times the number of default AGs. The two main downsides to doing this are: 1. Abysmal performance due to excessive head seeking on an epic scale 2. Premature drive failure due to head actuator failure Now, the above assumes your "4 disks" are mechanical drives. If these are actually SSDs then the hardware won't suffer failures, but performance will likely be far less than optimal. Why are you attempting to create an insane number of allocation groups? What benefit do you expect to gain from doing so? Regardless of your answer, the correct answer is that such high AG counts only have downsides, and zero upside. -- Stan From marcus@task.com.br Sun Jun 26 00:53:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5Q5rmDr183834 for ; Sun, 26 Jun 2011 00:53:48 -0500 X-ASG-Debug-ID: 1309067625-787302e80000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp1.task.com.br (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3E0661B195E2 for ; Sat, 25 Jun 2011 22:53:45 -0700 (PDT) Received: from smtp1.task.com.br (smtp1.task.com.br [174.37.54.130]) by cuda.sgi.com with ESMTP id vtyHnZnIjrxRYtZh for ; Sat, 25 Jun 2011 22:53:45 -0700 (PDT) Received: from [200.162.176.8] (x1.task.com.br [::ffff:200.162.176.8]) (AUTH: PLAIN marcus@task.com.br, SSL: TLSv1/SSLv3,256bits,AES256-SHA) by smtp1.task.com.br with esmtp; Sun, 26 Jun 2011 02:53:37 -0300 id 0000000000061774.000000004E06C961.00000EC1 Message-ID: <4E06C967.2060107@task.com.br> Date: Sun, 26 Jun 2011 02:53:43 -0300 From: Marcus Pereira User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110516 Thunderbird/3.1.10 MIME-Version: 1.0 To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: mkfs.xfs error creating large agcount an raid Subject: Re: mkfs.xfs error creating large agcount an raid References: <4E063BC6.9000801@task.com.br> <4E0694CC.8050003@hardwarefreak.com> In-Reply-To: <4E0694CC.8050003@hardwarefreak.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: smtp1.task.com.br[174.37.54.130] X-Barracuda-Start-Time: 1309067626 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0004 1.0000 -2.0186 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67151 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 Em 25-06-2011 23:09, Stan Hoeppner escreveu: > On 6/25/2011 2:49 PM, Marcus Pereira wrote: >> I have an issue when creating xfs volume using large agcounts on raid >> volumes. > Yes, you do have an issue, but not the one you think. Ok, but seems something that should be corrected. Isn't that? >> /dev/md0 is a 4 disks raid 0 array: >> >> ---------------------------------------- >> # mkfs.xfs -V >> mkfs.xfs version 3.1.4 >> >> # mkfs.xfs -d agcount=1872 -b size=4096 /dev/md0 -f > mkfs.xfs queries mdraid for its parameters and creates close to the > optimal number of AGs, sets the stripe width, etc, all automatically. > The default number of AGs for striped mdraid devices is 16 IIRC, and > even that is probably a tad too high for a 4 spindle stripe. Four or > eight AGs would probably be better here, depending on your workload, > which you did not state. Please state your target workload. The system is a heavy loaded email server. > At 1872 you have 117 times the number of default AGs. The two main > downsides to doing this are: The default agcount was 32 at this system. > 1. Abysmal performance due to excessive head seeking on an epic scale > 2. Premature drive failure due to head actuator failure There is already insane head seeking at this server, hundreds of simultaneous users reading their mailboxes. In fact I was trying to reduce the head seeking with larger agcounts. > Now, the above assumes your "4 disks" are mechanical drives. If these > are actually SSDs then the hardware won't suffer failures, but > performance will likely be far less than optimal. The 4 disks are mechanical, in fact each of them are 2 SCSI HD raid 1 hardware raid 0 array but the OS sees it as a single device. So its a raid 10 with hardware raid 1 and software raid 0. > Why are you attempting to create an insane number of allocation groups? > What benefit do you expect to gain from doing so? > > Regardless of your answer, the correct answer is that such high AG > counts only have downsides, and zero upside. It is still a test to find an optimal agcount, there are several of this servers and each of them would be with a different agcount. I was trying to build an even larger agcount something like 20000 to 30000. :-) The goal is to try to keep less or even 1 mailboxes per AG so more sequential reading at each mailbox access and less random seek at the volume. I dont know if it was going to work like I was thinking. I got this idea at this post and was giving it a try: http://www.techforce.com.br/news/linux_blog/lvm_raid_xfs_ext3_tuning_for_small_files_parallel_i_o_on_debian -- From sbishop@cyber1.clickithost.com Sun Jun 26 13:41:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.0 required=5.0 tests=BAYES_80 autolearn=no version=3.4.0-r929098 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 p5QIfOje249838 for ; Sun, 26 Jun 2011 13:41:24 -0500 X-ASG-Debug-ID: 1309113681-283801be0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from cyber1.clickithost.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 15F3A15E815E for ; Sun, 26 Jun 2011 11:41:21 -0700 (PDT) Received: from cyber1.clickithost.com (64-37-60-38.static.dimenoc.com [64.37.60.38]) by cuda.sgi.com with ESMTP id 6xKvv7UwmsxWcBxi for ; Sun, 26 Jun 2011 11:41:21 -0700 (PDT) Received: from sbishop by cyber1.clickithost.com with local (Exim 4.69) (envelope-from ) id 1QauGD-0000nq-UN for xfs@oss.sgi.com; Sun, 26 Jun 2011 14:40:45 -0400 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Would It Be Ok If I Gave You A Free Business Building Tool? Subject: Would It Be Ok If I Gave You A Free Business Building Tool? X-PHP-Script: 1kperdayfreedom.info/index-zipsender.php for 68.212.228.152 From: Shellie Reply-To: Shellie@cyber1.clickithost.com MIME-Version: 1.0 X-Mailer: GMailer 1.2 Content-Type: text/plain Content-Transfer-Encoding: 8bit Message-Id: Sender: Date: Sun, 26 Jun 2011 14:40:45 -0400 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - cyber1.clickithost.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [513 508] / [47 12] X-AntiAbuse: Sender Address Domain - cyber1.clickithost.com X-Barracuda-Connect: 64-37-60-38.static.dimenoc.com[64.37.60.38] X-Barracuda-Start-Time: 1309113682 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4933 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.2.67202 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 Good Day, I found your name during an online search of someone that may be interested in home business opportunities. I wanted to ask you a few questions to get started. Are you currently in a home business and earning what you desire? Have you had to build a team before making the income you deserve? Do you have the support you need to be successful? I would like to know about you and what you are doing and see if we can find something that works for you. Here’s your free gift for responding. It’s a Business Building tool that works for any business and comes with over $100 dollars in free tools. Hope you enjoy!! Let me know if you need any help setting it up. Oh did I mention that you can earn money by sharing it with people? http://www.mybwbsite.com/4592674/op1 Sincerely, Shelly http://www.1kperdayfreedom.com 1-706-623-3450 From stan@hardwarefreak.com Sun Jun 26 16:26:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5QLQvuf002040 for ; Sun, 26 Jun 2011 16:26:57 -0500 X-ASG-Debug-ID: 1309123615-137e003c0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from greer.hardwarefreak.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1454C2F7E5 for ; Sun, 26 Jun 2011 14:26:55 -0700 (PDT) Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id VkxNRCxce7rk2Pdt for ; Sun, 26 Jun 2011 14:26:55 -0700 (PDT) Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 221C96C0AF; Sun, 26 Jun 2011 16:26:55 -0500 (CDT) Message-ID: <4E07A41C.1000102@hardwarefreak.com> Date: Sun, 26 Jun 2011 16:26:52 -0500 From: Stan Hoeppner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11 MIME-Version: 1.0 To: Marcus Pereira CC: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: mkfs.xfs error creating large agcount an raid Subject: Re: mkfs.xfs error creating large agcount an raid References: <4E063BC6.9000801@task.com.br> <4E0694CC.8050003@hardwarefreak.com> <4E06C967.2060107@task.com.br> In-Reply-To: <4E06C967.2060107@task.com.br> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1309123616 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0014 1.0000 -2.0118 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.91 X-Barracuda-Spam-Status: No, SCORE=-1.91 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67213 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On 6/26/2011 12:53 AM, Marcus Pereira wrote: > Em 25-06-2011 23:09, Stan Hoeppner escreveu: >> On 6/25/2011 2:49 PM, Marcus Pereira wrote: >>> I have an issue when creating xfs volume using large agcounts on raid >>> volumes. >> Yes, you do have an issue, but not the one you think. > Ok, but seems something that should be corrected. Isn't that? No. The error you received had nothing directly to do with the insane AG count. You received the error because with that specific AG count you end up with the alignment issue that was stated in the error message itself. >>> /dev/md0 is a 4 disks raid 0 array: >>> >>> ---------------------------------------- >>> # mkfs.xfs -V >>> mkfs.xfs version 3.1.4 >>> >>> # mkfs.xfs -d agcount=1872 -b size=4096 /dev/md0 -f >> mkfs.xfs queries mdraid for its parameters and creates close to the >> optimal number of AGs, sets the stripe width, etc, all automatically. >> The default number of AGs for striped mdraid devices is 16 IIRC, and >> even that is probably a tad too high for a 4 spindle stripe. Four or >> eight AGs would probably be better here, depending on your workload, >> which you did not state. Please state your target workload. > The system is a heavy loaded email server. Maildir is much more metadata intensive than mbox, generating many more small IOs, and thus head movement. With a large number of allocation groups this will exacerbate the head seeking problem. >> At 1872 you have 117 times the number of default AGs. The two main >> downsides to doing this are: > The default agcount was 32 at this system. That seems high. IIRC the default for mdraid stripes is 16 AGs. Maybe the default is higher for RAID0 (which I never use). >> 1. Abysmal performance due to excessive head seeking on an epic scale >> 2. Premature drive failure due to head actuator failure > There is already insane head seeking at this server, hundreds of > simultaneous users reading their mailboxes. In fact I was trying to > reduce the head seeking with larger agcounts. > >> Now, the above assumes your "4 disks" are mechanical drives. If these >> are actually SSDs then the hardware won't suffer failures, but >> performance will likely be far less than optimal. > The 4 disks are mechanical, in fact each of them are 2 SCSI HD raid 1 > hardware raid 0 array but the OS sees it as a single device. > So its a raid 10 with hardware raid 1 and software raid 0. Please always provide this level of detail up front. Until now you had us believing this was a straight RAID0 stripe for storing mail. >> Why are you attempting to create an insane number of allocation groups? >> What benefit do you expect to gain from doing so? >> >> Regardless of your answer, the correct answer is that such high AG >> counts only have downsides, and zero upside. > It is still a test to find an optimal agcount, there are several of this > servers and each of them would be with a different agcount. I was trying > to build an even larger agcount something like 20000 to 30000. :-) You have no idea what you are doing. You have no understanding of XFS allocation groups. See 'man 5 xfs' and search this list's archives for threads discussing agcount. > The goal is to try to keep less or even 1 mailboxes per AG so more > sequential reading at each mailbox access and less random seek at the > volume. The logic behind your goal is flawed. Each AG contains its own metadata section which contains btrees for inodes and freespace. When new mail is written into a user maildir the btrees for that AG are read from disk, unless cached. With the numbers of AGs you're talking about, you're increasing your head seeks for metadata reads by several orders of magnitude as you now have 1872 metadata sections to read/write instead of something sane like 16. > I dont know if it was going to work like I was thinking. It won't. > I got this idea at this post and was giving it a try: > http://www.techforce.com.br/news/linux_blog/lvm_raid_xfs_ext3_tuning_for_small_files_parallel_i_o_on_debian Did you happen to notice that configuration has an IBM DS8300 SAN head with tons of BBWC and *512* fiber channel disks? You have 8 disks. You are attempting to duplicate a filesystem configuration, that may work well on that specific high end platform, but is never going to work on your 8 disk machine. As is stated in that article, they tuned and re-tuned that system over a very long period of time before arriving where they are. They have tuned XFS to that specific machine/storage environment. Those lessons are not directly applicable to your system. In fact they're not applicable at all. Stick with a sane agcount of 8 or 16. Also, for a maildir server with XFS you'd be better off concatenating those 4 RAID1 pairs instead of striping them, due to the fact that mail files are so small, typically 4-16KB, which can cause many partial width stripes, decreasing overall performance. Using concatenation (mdadm --linear) you can take more advantage of allocation group parallelism and achieve better overall throughput vs the md RAID0 over hardware RAID1 setup. -- Stan From stan@hardwarefreak.com Sun Jun 26 18:29:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5QNTfFE008902 for ; Sun, 26 Jun 2011 18:29:41 -0500 X-ASG-Debug-ID: 1309130974-586103a00000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from greer.hardwarefreak.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A44EA1EE0151 for ; Sun, 26 Jun 2011 16:29:34 -0700 (PDT) Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id R6QhvSH4Je3CavQl for ; Sun, 26 Jun 2011 16:29:34 -0700 (PDT) Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id D522F6C0A2; Sun, 26 Jun 2011 18:29:33 -0500 (CDT) Message-ID: <4E07C0DD.6030402@hardwarefreak.com> Date: Sun, 26 Jun 2011 18:29:33 -0500 From: Stan Hoeppner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11 MIME-Version: 1.0 To: Marcus Pereira CC: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: mkfs.xfs error creating large agcount an raid Subject: Re: mkfs.xfs error creating large agcount an raid References: <4E063BC6.9000801@task.com.br> <4E0694CC.8050003@hardwarefreak.com> <4E06C967.2060107@task.com.br> <4E07A41C.1000102@hardwarefreak.com> In-Reply-To: <4E07A41C.1000102@hardwarefreak.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1309130974 X-Barracuda-Bayes: INNOCENT GLOBAL 0.2017 1.0000 -0.8186 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.72 X-Barracuda-Spam-Status: No, SCORE=-0.72 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67221 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On 6/26/2011 4:26 PM, Stan Hoeppner wrote: > On 6/26/2011 12:53 AM, Marcus Pereira wrote: >> I got this idea at this post and was giving it a try: >> http://www.techforce.com.br/news/linux_blog/lvm_raid_xfs_ext3_tuning_for_small_files_parallel_i_o_on_debian > > Did you happen to notice that configuration has an IBM DS8300 SAN head > with tons of BBWC and *512* fiber channel disks? You have 8 disks. The DS8300 has up to 256GB of read/write cache: http://publib.boulder.ibm.com/infocenter/dsichelp/ds8000ic/index.jsp?topic=%2Fcom.ibm.storage.ssic.help.doc%2Ff2c_ds8300models922and9a2_1w2zq9.html It's difficult to convey how critical the DS8300, its 8 processor cores, and its gargantuan cache are in allowing the author to get away with using so many small XFS allocation groups. If his storage back end had consisted of plain HBAs or relatively small cache RAID cards connected to JBODs w/expanders, using that many small AGs would likely have caused serious performance degradation instead of a performance increase. Performance tuning is system specific. You read a Ferrari tuning manual and are attempting to apply that to tuning your Volkswagon. That's never going to work. -- Stan From david@fromorbit.com Sun Jun 26 19:00:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5R0066V010065 for ; Sun, 26 Jun 2011 19:00:07 -0500 X-ASG-Debug-ID: 1309132802-445503d80000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B85752FA31 for ; Sun, 26 Jun 2011 17:00:03 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id WtvxyLTEhaBcq3Xx for ; Sun, 26 Jun 2011 17:00:03 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuICAA/FB055LChDgWdsb2JhbAAnK6dHFQEBFiYliHQlvkwOhiIEojA Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail04.adl6.internode.on.net with ESMTP; 27 Jun 2011 09:30:01 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QazF9-0003rO-H2; Mon, 27 Jun 2011 09:59:59 +1000 Date: Mon, 27 Jun 2011 09:59:59 +1000 From: Dave Chinner To: Marcus Pereira Cc: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: mkfs.xfs error creating large agcount an raid Subject: Re: mkfs.xfs error creating large agcount an raid Message-ID: <20110626235959.GC32466@dastard> References: <4E063BC6.9000801@task.com.br> <4E0694CC.8050003@hardwarefreak.com> <4E06C967.2060107@task.com.br> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4E06C967.2060107@task.com.br> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1309132804 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA085 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67223 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 BSF_SC0_SA085 Custom Rule SA085 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Jun 26, 2011 at 02:53:43AM -0300, Marcus Pereira wrote: > Em 25-06-2011 23:09, Stan Hoeppner escreveu: > >On 6/25/2011 2:49 PM, Marcus Pereira wrote: > >>I have an issue when creating xfs volume using large agcounts on raid > >>volumes. > >Yes, you do have an issue, but not the one you think. > Ok, but seems something that should be corrected. Isn't that? > > >>/dev/md0 is a 4 disks raid 0 array: > >> > >>---------------------------------------- > >># mkfs.xfs -V > >>mkfs.xfs version 3.1.4 > >> > >># mkfs.xfs -d agcount=1872 -b size=4096 /dev/md0 -f > >mkfs.xfs queries mdraid for its parameters and creates close to the > >optimal number of AGs, sets the stripe width, etc, all automatically. > >The default number of AGs for striped mdraid devices is 16 IIRC, and > >even that is probably a tad too high for a 4 spindle stripe. Four or > >eight AGs would probably be better here, depending on your workload, > >which you did not state. Please state your target workload. > The system is a heavy loaded email server. > >At 1872 you have 117 times the number of default AGs. The two main > >downsides to doing this are: > The default agcount was 32 at this system. > >1. Abysmal performance due to excessive head seeking on an epic scale > >2. Premature drive failure due to head actuator failure > There is already insane head seeking at this server, hundreds of > simultaneous users reading their mailboxes. Perhaps you should just usethe defaults first and only consider changes if there is an obvious problem,? > In fact I was trying to > reduce the head seeking with larger agcounts. AGs are not for reducing seeking - they are for increasing allocation parallelism and scaling freespace indexes to extremely large filesystem sizes. In fact, trying to use more than a few hundred AGs will hit internal AG indexing scalability limitations, especially as you start to fill up AGs and have to scan for AGs with free space in them. IOWs, using large numbers of AGs are inadvisable for many reasons. > >are actually SSDs then the hardware won't suffer failures, but > >performance will likely be far less than optimal. > The 4 disks are mechanical, in fact each of them are 2 SCSI HD raid > 1 hardware raid 0 array but the OS sees it as a single device. > So its a raid 10 with hardware raid 1 and software raid 0. > > >Why are you attempting to create an insane number of allocation groups? > > What benefit do you expect to gain from doing so? > > > >Regardless of your answer, the correct answer is that such high AG > >counts only have downsides, and zero upside. > It is still a test to find an optimal agcount, there are several of > this servers and each of them would be with a different agcount. I > was trying to build an even larger agcount something like 20000 to > 30000. :-) IOWs, you truly do not understand how AGs are used to scale filesystem performance and therefore you should be using the defaults. > The goal is to try to keep less or even 1 mailboxes per AG so more > sequential reading at each mailbox access and less random seek at > the volume. You have no direct control over the placement of directories and files in AGs, so it doesn't matter how many AGs you create, you aren't going to be able to achieve this.... > I dont know if it was going to work like I was thinking. > I got this idea at this post and was giving it a try: > http://www.techforce.com.br/news/linux_blog/lvm_raid_xfs_ext3_tuning_for_small_files_parallel_i_o_on_debian http://xfs.org/index.php/XFS_FAQ#Q:_I_want_to_tune_my_XFS_filesystems_for_.3Csomething.3E Cheers, Dave. > > -- > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Jun 26 19:32:14 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5R0WERO013650 for ; Sun, 26 Jun 2011 19:32:14 -0500 X-ASG-Debug-ID: 1309134731-0ebe01f80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3CA961670D45 for ; Sun, 26 Jun 2011 17:32:12 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id CKXXgx33EfH61fgU for ; Sun, 26 Jun 2011 17:32:12 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuECABnMB055LChDgWdsb2JhbABSp0cVAQEWJiWIdL5DDoYiBKIw Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail04.adl6.internode.on.net with ESMTP; 27 Jun 2011 10:02:10 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QazkH-0003tn-40; Mon, 27 Jun 2011 10:32:09 +1000 Date: Mon, 27 Jun 2011 10:32:09 +1000 From: Dave Chinner To: "Linda A. Walsh" Cc: xfs-oss X-ASG-Orig-Subj: Re: question on new feature complexity/possibility/sensibility? (^ Alternate) Subject: Re: question on new feature complexity/possibility/sensibility? (^ Alternate) Message-ID: <20110627003209.GD32466@dastard> References: <4E067D81.4070605@tlinx.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4E067D81.4070605@tlinx.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1309134733 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67224 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, Jun 25, 2011 at 05:29:53PM -0700, Linda A. Walsh wrote: > I noticed in the 'cp' (coretuils 8.9-4.1) command on suse, there is > a a "--reflink" that controls "clone/CoW" copies -- which says > it performs a 'lightweight' copy where the data blocks are copied > only when modified. Now it is vague the 'when modified', (i.e. > does it mean ones that are different between the two copies) (src > and dst), or does it mean only to copy blocks that were modified > since 'some point' -- Doesn't say, but would guess it's src/dst diffs > (I wonder if it is restricted to the same physical filesystem). > > Anyway, turns out, it's only for BTRFS (which I haven't yet used, > and therefore know only that it supports operations like the above). Yup, it requires a refcounted, shared, copy-on-write extent index to do efficiently. > Would it be practice to implement, some similar, feature in XFS? It could be done, but it's a fairly large chunk of work.... > It wouldn't be practice or useful to do it on an 'extent' basis due > to their large size...So to do something similar on XFS, I was > thinking, with "some amount of effort", some number of "updated > extents" could be kept, in addition to the original data. Kept where, exactly? And how do you share the original extent tree between multiple inodes? And if all the inodes that share the original tree get truncated, how do you know that you can break the ref-link state and remove the original, now unreferenced tree? Once you have solved those problems, you have effectively designed a refcounted, shared, copy-on-write extent index.... > Any future modifications to the file would also have the extents > modified, but any extents that overlap previous mods will be merged, > and only the newest data would be kept (meaning that > new sections that are written, that skip over parts of the file, > wouldn't overwrite a pending change to that section -- only > the bytes (granularity?) that were changed. > > I.e. file is 1Mb. > User1 updates bytes 1k-200k. > User2, later updates bytes 100k-300k, New modification 'extent' is > created with 1k-300k, with bytes > 1k-(100k-1) from user1 be saved, and 100k-300k from user2. > > Changes to the 'base' copy would be made upon some ioctl 'sync' > command (file-by-file)... > > It would require up to double the amount of file space. For a single reflink copy, yes. But there's nothing stopping you from having multiple ref-link copies of the one file. And so the problem is far more complex than you are considering. I've looked at what it would require to implemnt reflinks transparently in XFS, and it's not pretty. Major surgery to the bmap code, a new btree type that includes back pointers to all the owner inodes, a new shadow inode type that holds the original tree, a new reflink inode type that contains the overwrite extent tree instead of a normal extent tree, a bunch of new transactions, new extent lookup/seek code, etc. I'd estimate it to be a 6 month project for someone who knew what they were doing. It's not just kernel code, but all the userspace tools need to be updated to understand reflinks and the COW based format (repair, check, db, bmap, etc) FWIW, I haven't even looked at how extended attributes are supposed to be handled on reflinked files, so that could increase the complexity significantly. > ---- > Another possibility would simply be to create a record of byte > ranges that have been updated in the extent and the extent's last > modification time. Then one could compare the mod times and apply > the changes. The problem there would be having to keep a > possibly 'large' log of changes (what if it's not sync/purged... > couldn't be circular as that would allow events to be lost -- though > the file system could be forced 'offline' if the event log became full > ...a major pain...)..., but if it was created with a few G of space, > might take a while...and if synced in time, no prob. > > Still, may be no great desire or benefit, but DAMN if I haven't > wanted copy-on-write files for a LONG time. So use a filesystem that supports them natively ;) > I.e. being able to hardlink files, but have an option to mark it as > copy on write -- allowing space to be save when copying directory trees, > but then dynamically making new copies when someone updates one of the > linked copies. The problem is that a reflink sort of looks like a hard link, but in many cases behaves like a soft link (e.g. different owners, permissions, etc are possible) and hence - combined with the copy-on-write behaviour - they need to be treated more like a soft-link in terms of implementation. Soft links have their own inode so can hold state separate to the inode they are pointing to, and for reflinked files it is simply not practical to retroactively modify the directory structure to point at a different inode when the first COW operation occurs. Like I said, it can be done, but it's not a small project. If you want to sink a significant amount of development time to the project, we will help you in any way we can. However, I don't think anyone has the time to do something like this for you.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From stan@hardwarefreak.com Sun Jun 26 22:33:30 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5R3XTKq029144 for ; Sun, 26 Jun 2011 22:33:30 -0500 X-ASG-Debug-ID: 1309145608-5dab03a90000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from greer.hardwarefreak.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DF0F61670F57 for ; Sun, 26 Jun 2011 20:33:28 -0700 (PDT) Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id FMWlsk2y3kR69hFH for ; Sun, 26 Jun 2011 20:33:28 -0700 (PDT) Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id A6EB86C120; Sun, 26 Jun 2011 22:33:27 -0500 (CDT) Message-ID: <4E07FA07.4050907@hardwarefreak.com> Date: Sun, 26 Jun 2011 22:33:27 -0500 From: Stan Hoeppner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11 MIME-Version: 1.0 To: Dave Chinner CC: Marcus Pereira , linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: mkfs.xfs error creating large agcount an raid Subject: Re: mkfs.xfs error creating large agcount an raid References: <4E063BC6.9000801@task.com.br> <4E0694CC.8050003@hardwarefreak.com> <4E06C967.2060107@task.com.br> <20110626235959.GC32466@dastard> In-Reply-To: <20110626235959.GC32466@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1309145608 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0316 1.0000 -1.8163 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.72 X-Barracuda-Spam-Status: No, SCORE=-1.72 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67236 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On 6/26/2011 6:59 PM, Dave Chinner wrote: > On Sun, Jun 26, 2011 at 02:53:43AM -0300, Marcus Pereira wrote: >> There is already insane head seeking at this server, hundreds of >> simultaneous users reading their mailboxes. I missed this part of the reply probably due to the reply formatting style used. > Perhaps you should just usethe defaults first and only consider > changes if there is an obvious problem,? > >> In fact I was trying to >> reduce the head seeking with larger agcounts. > > AGs are not for reducing seeking - they are for increasing > allocation parallelism and scaling freespace indexes to extremely > large filesystem sizes. > > In fact, trying to use more than a few hundred AGs will hit internal > AG indexing scalability limitations, especially as you start to fill > up AGs and have to scan for AGs with free space in them. > > IOWs, using large numbers of AGs are inadvisable for many reasons. Marcus, if you are seeing excessive head seeking with this maildir workload, the problem isn't the number of AGs. The problem is that you're using striping for a small file high random IOPS workload, and you don't have enough spindles, thus not enough seek bandwidth. I recommend 3 changes, one of which I previously mentioned: 1. Use 8 mirror pairs instead of 4 2. Don't use striping. Make an mdraid --linear device of the 8 mirrors 3. Format with '-d agcount=32' which will give you 4 AGs per spindle With striping, each file IO will generate multiple head seeks per spindle across all spindles. With a linear array each file IO will typically only generate seeks on a single spindle, as the metadata and file data should be within the same AG. Test this configuration and post your results. -- Stan From xfs@tlinx.org Sun Jun 26 23:09:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5R492pZ030491 for ; Sun, 26 Jun 2011 23:09:03 -0500 X-ASG-Debug-ID: 1309147741-285900df0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from Ishtar.tlinx.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0EA801670E72 for ; Sun, 26 Jun 2011 21:09:01 -0700 (PDT) Received: from Ishtar.tlinx.org (ishtar.tlinx.org [173.164.175.65]) by cuda.sgi.com with ESMTP id D4sHy7HCjtMXuWBC for ; Sun, 26 Jun 2011 21:09:01 -0700 (PDT) Received: from [192.168.3.12] (Athenae [192.168.3.12]) by Ishtar.tlinx.org (8.14.4/8.14.3/SuSE Linux 0.8) with ESMTP id p5R48fZl020450; Sun, 26 Jun 2011 21:08:43 -0700 Message-ID: <4E080249.9060903@tlinx.org> Date: Sun, 26 Jun 2011 21:08:41 -0700 From: Linda Walsh User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.24) Thunderbird/2.0.0.24 Mnenhy/0.7.6.666 MIME-Version: 1.0 To: Dave Chinner CC: xfs-oss X-ASG-Orig-Subj: Re: question on new feature complexity/possibility/sensibility? (^ Alternate) Subject: Re: question on new feature complexity/possibility/sensibility? (^ Alternate) References: <4E067D81.4070605@tlinx.org> <20110627003209.GD32466@dastard> In-Reply-To: <20110627003209.GD32466@dastard> X-Stationery: 0.5.1 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ishtar.tlinx.org[173.164.175.65] X-Barracuda-Start-Time: 1309147742 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0048 1.0000 -1.9896 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.2.67240 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: > So use a filesystem that supports them natively ;) --- Got any in in mind that also support acls, extended attrs and has the reliability and performance of xfs? ;-) > >> I.e. being able to hardlink files, but have an option to mark it as >> copy on write -- allowing space to be save when copying directory trees, >> but then dynamically making new copies when someone updates one of the >> linked copies. > > The problem is that a reflink sort of looks like a hard link, but in > many cases behaves like a soft link (e.g. different owners, > permissions, etc are possible) and hence - combined with the > copy-on-write behaviour - they need to be treated more like a > soft-link in terms of implementation. ---- I can see this -- now this doesn't mean we are talking the same type of reflink with the shared data above is it? Cuz in this lower case, I was talking about hmmm....interesting.... I was thinking of just a copy-of-the whole file on write, but that'd be a potential pain on some systems depending on the file size.... > Soft links have their own > inode so can hold state separate to the inode they are pointing to, > and for reflinked files it is simply not practical to retroactively > modify the directory structure to point at a different inode when > the first COW operation occurs. ---- I see.... > > Like I said, it can be done, but it's not a small project. If you > want to sink a significant amount of development time to the > project, we will help you in any way we can. However, I don't think > anyone has the time to do something like this for you.... --- If I had the time and mental resources...I'd love to. But am a bit overwhelmed for time now, and even if I wasn't, I'd not be anywhere near certain I'd be able to maintain continuous focus for the length of time necessary to do that length of project.... if you know what I mean... Maybe certain if it was something that I or others could break down into useful 'subchunks' that could go in at separate times. Nothing useless by itself (if nothing less than specific 'upgrading' of data infrastructure (data fields on disk, routines to parse such...etc), but the whole thing at once seems pretty large. (I know...I'm being a wimp)... to support such things in the future From marcus@task.com.br Sun Jun 26 23:14:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5R4EbmN031091 for ; Sun, 26 Jun 2011 23:14:37 -0500 X-ASG-Debug-ID: 1309148075-0e9d00760000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail4.task.com.br (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 74B962FE36 for ; Sun, 26 Jun 2011 21:14:36 -0700 (PDT) Received: from mail4.task.com.br (mail4.task.com.br [75.126.195.14]) by cuda.sgi.com with ESMTP id YE3JGMWLVZYkXmnk for ; Sun, 26 Jun 2011 21:14:36 -0700 (PDT) Received: from [200.162.176.8] (x1.task.com.br [::ffff:200.162.176.8]) (AUTH: PLAIN marcus@task.com.br, SSL: TLSv1/SSLv3,256bits,AES256-SHA) by mail4.task.com.br with esmtp; Mon, 27 Jun 2011 01:14:35 -0300 id 000000000066602A.000000004E0803AB.00003F64 Message-ID: <4E0803AA.20809@task.com.br> Date: Mon, 27 Jun 2011 01:14:34 -0300 From: Marcus Pereira User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110516 Thunderbird/3.1.10 MIME-Version: 1.0 To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: mkfs.xfs error creating large agcount an raid Subject: Re: mkfs.xfs error creating large agcount an raid References: <4E063BC6.9000801@task.com.br> <4E0694CC.8050003@hardwarefreak.com> <4E06C967.2060107@task.com.br> <20110626235959.GC32466@dastard> <4E07FA07.4050907@hardwarefreak.com> In-Reply-To: <4E07FA07.4050907@hardwarefreak.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 8bit X-Barracuda-Connect: mail4.task.com.br[75.126.195.14] X-Barracuda-Start-Time: 1309148076 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0458 1.0000 -1.7263 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.73 X-Barracuda-Spam-Status: No, SCORE=-1.73 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67239 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 Em 27-06-2011 00:33, Stan Hoeppner escreveu: > > I recommend 3 changes, one of which I previously mentioned: > > 1. Use 8 mirror pairs instead of 4 > 2. Don't use striping. Make an mdraid --linear device of the 8 mirrors > 3. Format with '-d agcount=32' which will give you 4 AGs per spindle > > Test this configuration and post your results. I am thanks for all advices. I will make the tests and post, may take some time. About all other messages. My system may not be a Ferrari but its not a Volks. I certainly do not have that many HDs in fiber channel, but the sever is a dual core Xeon 6 cores with HT. Linux sees a total of 24 cores, total RAM is 24GB. The HDs are all SAS 15Krpm and the system runs on SSD. They are dedicated to handle the maildir files and I have several of those servers running nicely. But I don’t want to make the thread about my system larger. Yes, I don’t know much about XFS and Allocation groups, thanks for you all to help me a bit. At the end the reason why I opened the thread it the error and the developers should take some care about that. Ok, no reason to use that many agcount but giving a "mkfs.xfs: pwrite64 failed: No space left on device" error for me stills seems a bug. I manage to create a XFS volume with agcount=30000 on a normal device, no error or warning. On md or lvm arrays I got that error at some point. Marcus -- From amit.sahrawat83@gmail.com Sun Jun 26 23:15:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p5R4F7JK031155 for ; Sun, 26 Jun 2011 23:15:07 -0500 X-ASG-Debug-ID: 1309148105-0e9f00710000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ey0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F1CF12FEF5 for ; Sun, 26 Jun 2011 21:15:06 -0700 (PDT) Received: from mail-ey0-f181.google.com (mail-ey0-f181.google.com [209.85.215.181]) by cuda.sgi.com with ESMTP id 2qxtCelTFxdluqS6 for ; Sun, 26 Jun 2011 21:15:06 -0700 (PDT) Received: by eyh5 with SMTP id 5so1522047eyh.26 for ; Sun, 26 Jun 2011 21:15:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=CUTdIjqK6US5mvlBboTP1ArFE2kJM3lcjic+NLnTGRg=; b=JgjHS9MjZ0QOfMSpoG1w5JwMP0X/F++i3Fy8wHQ/TC8wTbewsrRtW84t8IvgZatSG1 vXLYYbLhxgwmbZHjxlbbUmo8v7FuR2Jb41ItR23uYvM+WxYwSvOKy9gV2H5Ftt21KHzI T7gVA6odXaFZhHumAWCCVsrRDICt+Cl9hiPeQ= 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=Mfyrzqo6IHmLr+I2HcseMfH83bYtLl599E+tVsd+dbpMqjdDCMUihpv+KX5ko/nRF1 GbLX0EAPfNZ/6KyOGPkNxjc5TSnmShmFJuPzOoYXKAqRqu3SdwLnPS+faWykyQWf3KDY miwZ5FcpVoKNV+j/a/oSZnZdr+X/K46qU1KTs= MIME-Version: 1.0 Received: by 10.14.11.227 with SMTP id 75mr3790646eex.110.1309148105558; Sun, 26 Jun 2011 21:15:05 -0700 (PDT) Received: by 10.14.37.15 with HTTP; Sun, 26 Jun 2011 21:15:05 -0700 (PDT) In-Reply-To: <20110625000924.GB32466@dastard> References: <20110625000924.GB32466@dastard> Date: Mon, 27 Jun 2011 09:45:05 +0530 Message-ID: X-ASG-Orig-Subj: Re: Failure of test case : 250 Subject: Re: Failure of test case : 250 From: Amit Sahrawat To: Dave Chinner Cc: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=0016364d1f8bca4c2604a6a9cbd0 X-Barracuda-Connect: mail-ey0-f181.google.com[209.85.215.181] X-Barracuda-Start-Time: 1309148106 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=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67239 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 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 --0016364d1f8bca4c2604a6a9cbd0 Content-Type: text/plain; charset=ISO-8859-1 Thanks, I will install TOT kernel and verify the behaviour on that. Thanks & Regards, Amit Sahrawat On Sat, Jun 25, 2011 at 5:39 AM, Dave Chinner wrote: > On Fri, Jun 24, 2011 at 11:49:45AM +0530, Amit Sahrawat wrote: > > Dear All, > > > > Test Case : 250 results in failure on x86(2.6.31.y) and ARM(2.6.35.13..) > > The XFS_WANT_CORRUPTED_GOTO bug wasn't fixed until 3.0-rc1 (bf59170 > xfs: obey minleft values during extent allocation correctly), so of > course you'll get that failure on .31 and .35 kernels. > > Amit, I'd suggest that you try to reproduce the problems you have on > a top of tree kernel first before reporting them. Most of us XFS > developers don't really have time to triage or solve failures on old > kernels like 2.6.31 or 2.6.35 and so are ignoring your bug reports. > Reporting bugs on old kernels that have since been fixed is really > just a waste of our (limited) time. If you find a bug that isn't > fixed on TOT, then we'll triage it and get it fixed in TOT. > > However, if you can't reproduce them on top of tree, then you need > to go an find the commit (kernel, xfsprogs or xfstests) yourself > that makes the test pass and back port it to your tree. Same for if > we fix a bug you report in TOT - we're not going to backport the > fixes to your trees for you. We'll review backported patches if you > post them to the list, but we don't have time (or motivation) to do > the backports and QA them for you. > > And if you are backporting to a long term stable tree, feel free to > submit the tested backports to stable@kernel.org (cc'ing the xfs > list so they can be reviewed, of course) so that everyone else can > also benefit from your work.... > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > --0016364d1f8bca4c2604a6a9cbd0 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Thanks, I will install TOT kernel and verify the behaviour on that.
=A0
Thanks & Regards,
Amit Sahrawat

=
On Sat, Jun 25, 2011 at 5:39 AM, Dave Chin= ner <david@from= orbit.com> wrote:
On Fri, Jun 24, 2011 at 11:4= 9:45AM +0530, Amit Sahrawat wrote:
> Dear All,
>
> Test Case : 250 results in failure on x86(2.6.31.y) and ARM(2.6.35.13.= .)

The XFS_WANT_CORRUPTED_GOTO bug wasn't fixed until 3.0-rc1 (bf591= 70
xfs: obey minleft values during extent allocation correctly), so of
course you'll get that failure on .31 and .35 kernels.

Amit, I'd suggest that you try to reproduce the problems you have on a top of tree kernel first before reporting them. Most of us XFS
developers don't really have time to triage or solve failures on old kernels like 2.6.31 or 2.6.35 and so are ignoring your bug reports.
Reporting bugs on old kernels that have since been fixed is really
just a waste of our (limited) time. If you find a bug that isn't
fixed on TOT, then we'll triage it and get it fixed in TOT.

However, if you can't reproduce them on top of tree, then you need
to go an find the commit (kernel, xfsprogs or xfstests) yourself
that makes the test pass and back port it to your tree. Same for if
we fix a bug you report in TOT - we're not going to backport the
fixes to your trees for you. We'll review backported patches if you
post them to the list, but we don't have time (or motivation) to do
the backports and QA them for you.

And if you are backporting to a long term stable tree, feel free to
submit the tested backports to stable@= kernel.org (cc'ing the xfs
list so they can be reviewed, of course) so that everyone else can
also benefit from your work....

Cheers,

Dave.
--
Dave Chinner
david@fromorbit.com

--0016364d1f8bca4c2604a6a9cbd0-- From dave@fromorbit.com Mon Jun 27 00:49:08 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_92 autolearn=no version=3.4.0-r929098 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 p5R5n74R050371 for ; Mon, 27 Jun 2011 00:49:08 -0500 X-ASG-Debug-ID: 1309153745-0e9801bd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EED4C30408 for ; Sun, 26 Jun 2011 22:49:05 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id 2GYShBhPNgG0e5Jd for ; Sun, 26 Jun 2011 22:49:05 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjgHAPsYCE55LChDgWdsb2JhbABSmFaObBUBARYmJccBhjAEojA Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Jun 2011 15:19:04 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1Qb4gw-0004J2-W9 for xfs@oss.sgi.com; Mon, 27 Jun 2011 15:49:03 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1Qb4gg-0000Km-O6 for xfs@oss.sgi.com; Mon, 27 Jun 2011 15:48:46 +1000 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/4] xfstests: fix fsx fpunch test to actually test for fpunch Subject: [PATCH 1/4] xfstests: fix fsx fpunch test to actually test for fpunch Date: Mon, 27 Jun 2011 15:48:39 +1000 Message-Id: <1309153722-1231-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1309153722-1231-1-git-send-email-david@fromorbit.com> References: <1309153722-1231-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1309153746 X-Barracuda-Bayes: INNOCENT GLOBAL 0.2719 1.0000 -0.4724 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.47 X-Barracuda-Spam-Status: No, SCORE=-0.47 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67245 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 From: Dave Chinner The operation flags parameter to fallocate is the second parameter, not the last. Hence the fpunch test is actually testing for falloc support, not fpunch. Somebody needs a brown paper bag. Also, add a ftruncate call whenthe fpunch succeeds just in case the file was not already zero sized. Failing to ensure we start with a zero length file can cause read ops to fail size checks if they occur before the file is written to be the main test loop. While there, observe the quiet flag the same as the falloc test does and have them both emit the warning at the same error level. Signed-off-by: Dave Chinner --- ltp/fsx.c | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ltp/fsx.c b/ltp/fsx.c index 0683853..a37e223 100644 --- a/ltp/fsx.c +++ b/ltp/fsx.c @@ -1243,7 +1243,7 @@ test_fallocate() if (!lite && fallocate_calls) { if (fallocate(fd, 0, 0, 1) && errno == EOPNOTSUPP) { if(!quiet) - prt("fsx: main: filesystem does not support fallocate, disabling\n"); + warn("main: filesystem does not support fallocate, disabling\n"); fallocate_calls = 0; } else { ftruncate(fd, 0); @@ -1260,13 +1260,13 @@ test_punch_hole() { #ifdef FALLOC_FL_PUNCH_HOLE if (!lite && punch_hole_calls) { - if (fallocate(fd, 0, 0, - FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE) && - errno == EOPNOTSUPP) { - - warn("main: filesystem does not support fallocate punch hole, disabling"); + if (fallocate(fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, + 0, 1) && errno == EOPNOTSUPP) { + if(!quiet) + warn("main: filesystem does not support fallocate punch hole, disabling"); punch_hole_calls = 0; - } + } else + ftruncate(fd, 0); } #else /* ! PUNCH HOLE */ punch_hole_calls = 0; -- 1.7.5.1 From dave@fromorbit.com Mon Jun 27 00:49:08 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5R5n8md050379 for ; Mon, 27 Jun 2011 00:49:08 -0500 X-ASG-Debug-ID: 1309153745-0e9801bd0001-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1AB9A30408 for ; Sun, 26 Jun 2011 22:49:07 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id 7aGcAfAYb1OCZ6ER for ; Sun, 26 Jun 2011 22:49:07 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjgHAPsYCE55LChDgWdsb2JhbABSmFaObBUBARYmJccBhjAEojA Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Jun 2011 15:19:04 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1Qb4gx-0004J5-18 for xfs@oss.sgi.com; Mon, 27 Jun 2011 15:49:03 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1Qb4gg-0000Ku-To for xfs@oss.sgi.com; Mon, 27 Jun 2011 15:48:46 +1000 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 4/4] xfstests: add mapped write fsx operations to 091 Subject: [PATCH 4/4] xfstests: add mapped write fsx operations to 091 Date: Mon, 27 Jun 2011 15:48:42 +1000 Message-Id: <1309153722-1231-5-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1309153722-1231-1-git-send-email-david@fromorbit.com> References: <1309153722-1231-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1309153748 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1000 1.0000 -1.3927 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.39 X-Barracuda-Spam-Status: No, SCORE=-1.39 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67245 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 From: Dave Chinner The recent busted fsx updates caused fsx to execute fsx with direct IO and mmapped reads and writes on an XFS filesystem. The result uncovered a direct-IO write vs mmap read bug to do with EOF sub-block zeroing on the direct IO write. Hence whiel we do not recommend that pepole mix DIO with mmap on the same file, we should at least have tests that exercise it as they often show up other problems like this. Signed-off-by: Dave Chinner --- 091 | 3 +++ 091.out | 2 ++ 2 files changed, 5 insertions(+), 0 deletions(-) diff --git a/091 b/091 index a13d979..11b599e 100755 --- a/091 +++ b/091 @@ -88,6 +88,9 @@ kernel=`uname -r | sed -e 's/\(2\..\).*/\1/'` #run_fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t PSIZE -w PSIZE -Z -W run_fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -W + run_fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z + run_fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z + # Commented out calls above are less likely to pick up issues, so # save time by commenting them out (leave 'em for manual testing). diff --git a/091.out b/091.out index 31bd25d..27ed1e3 100644 --- a/091.out +++ b/091.out @@ -5,3 +5,5 @@ fsx -N 10000 -o 32768 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W fsx -N 10000 -o 32768 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -W +fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z +fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -- 1.7.5.1 From dave@fromorbit.com Mon Jun 27 00:49:10 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5R5nALS050399 for ; Mon, 27 Jun 2011 00:49:10 -0500 X-ASG-Debug-ID: 1309153747-38e8009c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6B4571EE10D6 for ; Sun, 26 Jun 2011 22:49:08 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id CXw3W7G5q2XFaWkD for ; Sun, 26 Jun 2011 22:49:08 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlQEAPsYCE55LChDgWdsb2JhbABSp0IVAQEWJiXHAYYwBKIw Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Jun 2011 15:19:04 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1Qb4gw-0004J4-WA for xfs@oss.sgi.com; Mon, 27 Jun 2011 15:49:03 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1Qb4gg-0000Kr-S4 for xfs@oss.sgi.com; Mon, 27 Jun 2011 15:48:46 +1000 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/4] xfstests: fix brain-o in fallocate log dump Subject: [PATCH 3/4] xfstests: fix brain-o in fallocate log dump Date: Mon, 27 Jun 2011 15:48:41 +1000 Message-Id: <1309153722-1231-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1309153722-1231-1-git-send-email-david@fromorbit.com> References: <1309153722-1231-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1309153749 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0204 1.0000 -1.8883 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.39 X-Barracuda-Spam-Status: No, SCORE=-1.39 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.2.67245 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 From: Dave Chinner fsx segvs when dumping fallocate log entries. Fix magic string array index parameters to be zero based rather than one based. While touching log string related stuff, make the format consistent with read and write operations so the log dump is easier to look at with the human eye. Signed-off-by: Dave Chinner --- ltp/fsx.c | 28 +++++++++++++++------------- 1 files changed, 15 insertions(+), 13 deletions(-) diff --git a/ltp/fsx.c b/ltp/fsx.c index 66daefe..38d5278 100644 --- a/ltp/fsx.c +++ b/ltp/fsx.c @@ -223,14 +223,14 @@ logdump(void) int opnum; opnum = i+1 + (logcount/LOGSIZE)*LOGSIZE; - prt("%d(%d mod 256): ", opnum, opnum%256); + prt("%d(%3d mod 256): ", opnum, opnum%256); lp = &oplog[i]; if ((closeopen = lp->operation < 0)) lp->operation = ~ lp->operation; switch (lp->operation) { case OP_MAPREAD: - prt("MAPREAD\t0x%x thru 0x%x\t(0x%x bytes)", + prt("MAPREAD 0x%x thru 0x%x\t(0x%x bytes)", lp->args[0], lp->args[0] + lp->args[1] - 1, lp->args[1]); if (badoff >= lp->args[0] && badoff < @@ -246,7 +246,7 @@ logdump(void) prt("\t******WWWW"); break; case OP_READ: - prt("READ\t0x%x thru 0x%x\t(0x%x bytes)", + prt("READ 0x%x thru 0x%x\t(0x%x bytes)", lp->args[0], lp->args[0] + lp->args[1] - 1, lp->args[1]); if (badoff >= lp->args[0] && @@ -254,7 +254,7 @@ logdump(void) prt("\t***RRRR***"); break; case OP_WRITE: - prt("WRITE\t0x%x thru 0x%x\t(0x%x bytes)", + prt("WRITE 0x%x thru 0x%x\t(0x%x bytes)", lp->args[0], lp->args[0] + lp->args[1] - 1, lp->args[1]); if (lp->args[0] > lp->args[2]) @@ -275,14 +275,15 @@ logdump(void) 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]); + prt("FALLOC 0x%x thru 0x%x\t(0x%x bytes) %s", + lp->args[0], lp->args[0] + lp->args[1], + lp->args[1], falloc_type[lp->args[2]]); if (badoff >= lp->args[0] && badoff < lp->args[0] + lp->args[1]) prt("\t******FFFF"); break; case OP_PUNCH_HOLE: - prt("PUNCH HOLE\t0x%x thru 0x%x\t(0x%x bytes)", + prt("PUNCH 0x%x thru 0x%x\t(0x%x bytes)", lp->args[0], lp->args[0] + lp->args[1] - 1, lp->args[1]); if (badoff >= lp->args[0] && badoff < @@ -877,12 +878,12 @@ do_preallocate(unsigned offset, unsigned length) } /* - * last arg: - * 1: allocate past EOF - * 2: extending prealloc - * 3: interior prealloc + * last arg matches fallocate string array index in logdump: + * 0: allocate past EOF + * 1: extending prealloc + * 2: interior prealloc */ - log4(OP_FALLOCATE, offset, length, (end_offset > file_size) ? (keep_size ? 1 : 2) : 3); + log4(OP_FALLOCATE, offset, length, (end_offset > file_size) ? (keep_size ? 0 : 1) : 2); if (end_offset > file_size) { memset(good_buf + file_size, '\0', end_offset - file_size); @@ -895,7 +896,8 @@ do_preallocate(unsigned offset, unsigned length) 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); + prt("%lu falloc\tfrom 0x%x to 0x%x (0x%x bytes)\n", testcalls, + offset, offset + length, 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("do_preallocate: fallocate"); -- 1.7.5.1 From dave@fromorbit.com Mon Jun 27 00:49:16 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_14, J_CHICKENPOX_66 autolearn=no version=3.4.0-r929098 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 p5R5nGdk050419 for ; Mon, 27 Jun 2011 00:49:16 -0500 X-ASG-Debug-ID: 1309153754-0eaa01c30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C16CF3040C for ; Sun, 26 Jun 2011 22:49:14 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id CI4geNnUZ5LxcxBE for ; Sun, 26 Jun 2011 22:49:14 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlUEAPsYCE55LChDgWdsb2JhbABShEmieRUBARYmJbZckCWBK4N5gQwEojA Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Jun 2011 15:19:13 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1Qb4h6-0004J3-T2 for xfs@oss.sgi.com; Mon, 27 Jun 2011 15:49:12 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1Qb4gg-0000Ko-QK for xfs@oss.sgi.com; Mon, 27 Jun 2011 15:48:46 +1000 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/4] xfstests: fsx fallocate support is b0rked Subject: [PATCH 2/4] xfstests: fsx fallocate support is b0rked Date: Mon, 27 Jun 2011 15:48:40 +1000 Message-Id: <1309153722-1231-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1309153722-1231-1-git-send-email-david@fromorbit.com> References: <1309153722-1231-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1309153755 X-Barracuda-Bayes: INNOCENT GLOBAL 0.2349 1.0000 -0.6489 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=BSF_RULE7568M, PR0N_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67245 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.20 PR0N_SUBJECT Subject has letters around special characters (pr0n) 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 From: Dave Chinner The recent fallocate/fpunch additions to fsx have not actually be executing fallocate/fpunch operations. The logic to select what operation to run is broken in such a way that fsx has been executing mapped writes and truncates instead of fallocate and fpunch operations. Remove all the (b0rken) smarty-pants selection logic from the test() function. Replace it with a clearly defined set of operations for each mode and use understandable fallback logic when various operation types have been disabled. Then use a simple switch statement to execute each of the different operations, removing the tortured nesting of if/else statements that only serve to obfuscate the code. NAs a result, fsx uses fallocate/fpunch appropriately during operations, and uses/disableÑ• the operations as defined on the command line correctly. Signed-off-by: Dave Chinner --- ltp/fsx.c | 162 +++++++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 103 insertions(+), 59 deletions(-) diff --git a/ltp/fsx.c b/ltp/fsx.c index a37e223..66daefe 100644 --- a/ltp/fsx.c +++ b/ltp/fsx.c @@ -955,18 +955,42 @@ docloseopen(void) } } +#define TRIM_OFF_LEN(off, len, size) \ +do { \ + if (file_size) \ + offset %= size; \ + else \ + offset = 0; \ + if (offset + len > size) \ + len = size - offset; \ +} while (0) +/* + * The operation matrix is complex due to conditional variables. + * We calculate how many different operations we can use, then + * map them appropriately according to how many options are enabled. + * The mapping is: + * + * lite !lite + * READ: 0 0 + * WRITE: 1 1 + * MAPREAD: 2 2 + * MAPWRITE: 3 3 + * TRUNCATE: - 4 + * FALLOCATE: - 5 + * PUNCH HOLE: - 6 + * + * When mapped read/writes are disabled, they are simply converted to normal + * reads and writes. When fallocate/fpunch calls are disabled, they are + * converted to OP_SKIPPED. + */ void test(void) { unsigned long offset; unsigned long size = maxoplen; unsigned long rv = random(); - unsigned long op = rv % (3 + !lite + mapped_writes + fallocate_calls + punch_hole_calls); - /* turn off the map read if necessary */ - - if (op == 2 && !mapped_reads) - op = 0; + unsigned long op; if (simulatedopcount > 0 && testcalls == simulatedopcount) writefileimage(); @@ -982,62 +1006,82 @@ test(void) if (!quiet && testcalls < simulatedopcount && testcalls % 100000 == 0) prt("%lu...\n", testcalls); - /* - * lite !lite - * READ: op = 0 0 - * WRITE: op = 1 1 - * MAPREAD: op = 2 2 - * TRUNCATE: op = - 3 - * MAPWRITE: op = 3 4 - * FALLOCATE: op = - 5 - * PUNCH HOLE: op = - 6 - */ - if (lite ? 0 : op == 3 && (style & 1) == 0) /* vanilla truncate? */ - dotruncate(random() % maxfilelen); - else { - if (randomoplen) - size = random() % (maxoplen+1); - - if (lite ? 0 : op == 3) { - /* truncate */ - dotruncate(size); - } else { - offset = random(); - if (op == 5) { - /* fallocate */ - offset %= maxfilelen; - if (offset + size > maxfilelen) - size = maxfilelen - offset; - do_preallocate(offset, size); - } else if (op == 6) { - offset %= maxfilelen; - if (offset + size > maxfilelen) - size = maxfilelen - offset; - do_punch_hole(offset, size); - } else if (op == 1 || op == (lite ? 3 : 4)) { - /* write / mapwrite */ - offset %= maxfilelen; - if (offset + size > maxfilelen) - size = maxfilelen - offset; - if (op != 1) - domapwrite(offset, size); - else - dowrite(offset, size); - } else { - /* read / mapread */ - if (file_size) - offset %= file_size; - else - offset = 0; - if (offset + size > file_size) - size = file_size - offset; - if (op != 0) - domapread(offset, size); - else - doread(offset, size); - } + offset = random(); + if (randomoplen) + size = random() % (maxoplen + 1); + + /* calculate appropriate op to run */ + if (lite) + op = rv % 4; + else + op = rv % 7; + + switch (op) { + case 2: + if (!mapped_reads) + op = 0; + break; + case 3: + if (!mapped_writes) + op = 1; + break; + case 5: + if (!fallocate_calls) { + log4(OP_SKIPPED, OP_FALLOCATE, offset, size); + goto out; + } + break; + case 6: + if (!punch_hole_calls) { + log4(OP_SKIPPED, OP_PUNCH_HOLE, offset, size); + goto out; } + break; } + + switch (op) { + case 0: /* read */ + TRIM_OFF_LEN(offset, size, file_size); + doread(offset, size); + break; + + case 1: /* write */ + TRIM_OFF_LEN(offset, size, maxfilelen); + dowrite(offset, size); + break; + + case 2: /* mapread */ + TRIM_OFF_LEN(offset, size, maxfilelen); + domapread(offset, size); + break; + + case 3: /* mapwrite */ + TRIM_OFF_LEN(offset, size, maxfilelen); + domapwrite(offset, size); + break; + + case 4: /* truncate */ + if (!style) + size = random() % maxfilelen; + dotruncate(size); + break; + + case 5: /* fallocate */ + TRIM_OFF_LEN(offset, size, maxfilelen); + do_preallocate(offset, size); + break; + + case 6: /* punch */ + TRIM_OFF_LEN(offset, size, maxfilelen); + do_punch_hole(offset, size); + break; + default: + prterr("test: unknown operation"); + report_failure(42); + break; + } + +out: if (sizechecks && testcalls > simulatedopcount) check_size(); if (closeopen) -- 1.7.5.1 From dave@fromorbit.com Mon Jun 27 00:49:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_00,MISSING_MIMEOLE autolearn=no version=3.4.0-r929098 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 p5R5nHbN050430 for ; Mon, 27 Jun 2011 00:49:17 -0500 X-ASG-Debug-ID: 1309153754-0eaa01c30001-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F0B403040E for ; Sun, 26 Jun 2011 22:49:16 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id b6BxONPtzGfklej4 for ; Sun, 26 Jun 2011 22:49:16 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjgHAPsYCE55LChDgWdsb2JhbABSmFaObBUBARYmJag1jmCPbIYwBKIw Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Jun 2011 15:19:13 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1Qb4gw-0004J1-W6 for xfs@oss.sgi.com; Mon, 27 Jun 2011 15:49:03 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1Qb4gg-0000Kk-M8 for xfs@oss.sgi.com; Mon, 27 Jun 2011 15:48:46 +1000 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/4] xfstests: fsx is fallocate challenged. Subject: ***** SUSPECTED SPAM ***** [PATCH 0/4] xfstests: fsx is fallocate challenged. Date: Mon, 27 Jun 2011 15:48:38 +1000 Message-Id: <1309153722-1231-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1309153756 X-Barracuda-Bayes: INNOCENT GLOBAL 0.7785 1.0000 2.0234 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 2.02 X-Barracuda-Spam-Status: Yes, SCORE=2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67245 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Priority: 5 (Lowest) X-MSMail-Priority: Low Importance: Low X-Barracuda-Spam-Flag: YES X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The first three patches make fsx use fallocate/fpunch correctly. Hole punching is not detected correctly, falloc/fpunch operations can't actually be executed properly, and the logdump code will segv on the first falloc operation it finds in the log. The last patch widens the fsx coverage to mix direct IO reads/writes with mmapped reads/writes as that was the test case that it was executing (instead of using falloc/fpunch!) when it triggered the error (a real bug) that lead to me finding this mess.... From david@fromorbit.com Mon Jun 27 01:02:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5R62i38051907 for ; Mon, 27 Jun 2011 01:02:44 -0500 X-ASG-Debug-ID: 1309154561-372203e50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5B8F214F7BCE for ; Sun, 26 Jun 2011 23:02:42 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id gTt2TkDkoaqnarrG for ; Sun, 26 Jun 2011 23:02:42 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlQEAIEcCE55LChDgWdsb2JhbABSp0IVAQEWJiXHDg6GIgSiMA Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Jun 2011 15:32:41 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1Qb4u8-0004Kl-72; Mon, 27 Jun 2011 16:02:40 +1000 Date: Mon, 27 Jun 2011 16:02:40 +1000 From: Dave Chinner To: Linda Walsh Cc: xfs-oss X-ASG-Orig-Subj: Re: question on new feature complexity/possibility/sensibility? (^ Alternate) Subject: Re: question on new feature complexity/possibility/sensibility? (^ Alternate) Message-ID: <20110627060240.GF32466@dastard> References: <4E067D81.4070605@tlinx.org> <20110627003209.GD32466@dastard> <4E080249.9060903@tlinx.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4E080249.9060903@tlinx.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1309154563 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67246 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 Sun, Jun 26, 2011 at 09:08:41PM -0700, Linda Walsh wrote: > > > Dave Chinner wrote: > >So use a filesystem that supports them natively ;) > --- > Got any in in mind that also support acls, extended attrs > and has the reliability and performance of xfs? ;-) For most "normal" workloads, ZFS would probably be your only production ready option. But that's not something you could use on Linux, is it? :/ Until btrfs is a completely baked cake, you won't be able to tick all those boxes, and even then there will be questions about performance... Mmmm, cake.... :) > >>I.e. being able to hardlink files, but have an option to mark it as > >>copy on write -- allowing space to be save when copying directory trees, > >>but then dynamically making new copies when someone updates one of the > >>linked copies. > > > >The problem is that a reflink sort of looks like a hard link, but in > >many cases behaves like a soft link (e.g. different owners, > >permissions, etc are possible) and hence - combined with the > >copy-on-write behaviour - they need to be treated more like a > >soft-link in terms of implementation. > ---- > I can see this -- now this doesn't mean we are talking the same > type of reflink with the shared data above is it? Cuz in this lower > case, I was talking about hmmm....interesting.... > > I was thinking of just a copy-of-the whole file on write, > but that'd be a potential pain on some systems depending on the file > size.... If you are going to take the pain of copying the entire file anyway, just copy it up front. XFS is designed for fast, large storage subsystems, so make use of it's capabilities ;) > >Soft links have their own > >inode so can hold state separate to the inode they are pointing to, > >and for reflinked files it is simply not practical to retroactively > >modify the directory structure to point at a different inode when > >the first COW operation occurs. > ---- > I see.... > > > >Like I said, it can be done, but it's not a small project. If you > >want to sink a significant amount of development time to the > >project, we will help you in any way we can. However, I don't think > >anyone has the time to do something like this for you.... > --- > If I had the time and mental resources...I'd love to. > But am a bit overwhelmed for time now, and even if I wasn't, I'd > not be anywhere near certain I'd be able to maintain continuous focus > for the length of time necessary to do that length of project.... > if you know what I mean... > > Maybe certain if it was something that I or others could break > down into useful 'subchunks' that could go in at separate times. Nothing > useless by itself (if nothing less than specific 'upgrading' of data > infrastructure (data fields on disk, routines to parse such...etc), > but the whole thing at once seems pretty large. Actually, none of it needs to be merged until complete support is available. If there's a need for parts of the work in mainline before the bigger set of work is complete, then we'd merge the bits needed and rebase the working tree on top the new mainline tree. git makes this sort of operation easy, so developement of such a feature could be done quite simply in a parallel branch. IOWs, even if I was doing this, I'd still be doing it a small chunk at a time before committing it to a public branch somewhere. It's easy to point interested parties at the code that way to collaborate on a separate branch until everything is done. I just wouldn't be asking for review/mainline inclusion until I had everything done and tested.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From stan@hardwarefreak.com Mon Jun 27 03:22:52 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5R8Mq7I058450 for ; Mon, 27 Jun 2011 03:22:52 -0500 X-ASG-Debug-ID: 1309162970-0eb003d10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from greer.hardwarefreak.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AC3493064C for ; Mon, 27 Jun 2011 01:22:50 -0700 (PDT) Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id yfwylY1rL8mlH4yF for ; Mon, 27 Jun 2011 01:22:50 -0700 (PDT) Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 6285A6C116; Mon, 27 Jun 2011 03:22:50 -0500 (CDT) Message-ID: <4E083DDA.1000101@hardwarefreak.com> Date: Mon, 27 Jun 2011 03:22:50 -0500 From: Stan Hoeppner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11 MIME-Version: 1.0 To: Dave Chinner CC: Linda Walsh , xfs-oss X-ASG-Orig-Subj: Re: question on new feature complexity/possibility/sensibility? (^ Alternate) Subject: Re: question on new feature complexity/possibility/sensibility? (^ Alternate) References: <4E067D81.4070605@tlinx.org> <20110627003209.GD32466@dastard> <4E080249.9060903@tlinx.org> <20110627060240.GF32466@dastard> In-Reply-To: <20110627060240.GF32466@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1309162971 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0011 1.0000 -2.0135 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.91 X-Barracuda-Spam-Status: No, SCORE=-1.91 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67257 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On 6/27/2011 1:02 AM, Dave Chinner wrote: > On Sun, Jun 26, 2011 at 09:08:41PM -0700, Linda Walsh wrote: >> >> >> Dave Chinner wrote: >>> So use a filesystem that supports them natively ;) >> --- >> Got any in in mind that also support acls, extended attrs >> and has the reliability and performance of xfs? ;-) > > For most "normal" workloads, ZFS would probably be your only > production ready option. But that's not something you could use on > Linux, is it? :/ It is apparently usable on Linux for those willing to build and maintain it themselves. But that level of administrative burden in itself is the opposite of production ready. > Until btrfs is a completely baked cake, you won't be able to tick > all those boxes, and even then there will be questions about > performance... Or until Oracle releases ZFS under GPL, or a compatible license, which probably isn't going to happen. Apparently Oracle believes their SPARC and x86 hardware won't sell if ZFS is free on Linux. Now that Oracle owns Solaris and ZFS I'd bet they wish they could put the BTRFS genie back in the bottle, as well as OCFS, etc. -- Stan From stan@hardwarefreak.com Mon Jun 27 03:55:13 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5R8tD27063227 for ; Mon, 27 Jun 2011 03:55:13 -0500 X-ASG-Debug-ID: 1309164912-5f9d00b80000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from greer.hardwarefreak.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DB608306F8 for ; Mon, 27 Jun 2011 01:55:12 -0700 (PDT) Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id UBCu8ILVTHY3igx7 for ; Mon, 27 Jun 2011 01:55:12 -0700 (PDT) Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 2A3856C0FB; Mon, 27 Jun 2011 03:55:12 -0500 (CDT) Message-ID: <4E08456F.1090503@hardwarefreak.com> Date: Mon, 27 Jun 2011 03:55:11 -0500 From: Stan Hoeppner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11 MIME-Version: 1.0 To: Marcus Pereira CC: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: mkfs.xfs error creating large agcount an raid Subject: Re: mkfs.xfs error creating large agcount an raid References: <4E063BC6.9000801@task.com.br> <4E0694CC.8050003@hardwarefreak.com> <4E06C967.2060107@task.com.br> <20110626235959.GC32466@dastard> <4E07FA07.4050907@hardwarefreak.com> <4E0803AA.20809@task.com.br> In-Reply-To: <4E0803AA.20809@task.com.br> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1309164912 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0059 1.0000 -1.9825 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.88 X-Barracuda-Spam-Status: No, SCORE=-1.88 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67259 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On 6/26/2011 11:14 PM, Marcus Pereira wrote: > Em 27-06-2011 00:33, Stan Hoeppner escreveu: >> >> I recommend 3 changes, one of which I previously mentioned: >> >> 1. Use 8 mirror pairs instead of 4 >> 2. Don't use striping. Make an mdraid --linear device of the 8 mirrors >> 3. Format with '-d agcount=32' which will give you 4 AGs per spindle >> >> Test this configuration and post your results. > > I am thanks for all advices. I will make the tests and post, may take > some time. > > About all other messages. My system may not be a Ferrari but its not a > Volks. I certainly do not have that many HDs in fiber channel, but the > sever is a dual core Xeon 6 cores with HT. Linux sees a total of 24 > cores, total RAM is 24GB. The HDs are all SAS 15Krpm and the system runs > on SSD. They are dedicated to handle the maildir files and I have > several of those servers running nicely. > But I don’t want to make the thread about my system larger. So you do or don't have the excessive head seek problem you previously mentioned? If not then use the mkfs.xfs defaults. > Yes, I don’t know much about XFS and Allocation groups, thanks for you > all to help me a bit. You're welcome. Google should turn up a decent amount of information about XFS allocation groups if you're interested in further reading. > At the end the reason why I opened the thread it the error and the > developers should take some care about that. > Ok, no reason to use that many agcount but giving a "mkfs.xfs: pwrite64 > failed: No space left on device" error for me stills seems a bug. The definition of a software bug stipulates incorrect or unexpected program behavior. Error messages aren't bugs unless the wrong error message is returned for a given fault condition, or no error is returned when one should be. Are you stipulating that the above isn't the correct error message for the fault condition? Or do you simply not understand the error message? If the latter, maybe you should simply ask what that error means before saying the error message is a bug. :) -- Stan From powool@gmail.com Mon Jun 27 08:04:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p5RD4veq099665 for ; Mon, 27 Jun 2011 08:04:57 -0500 X-ASG-Debug-ID: 1309179895-721d021c0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ww0-f51.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B8D981EE15FC for ; Mon, 27 Jun 2011 06:04:55 -0700 (PDT) Received: from mail-ww0-f51.google.com (mail-ww0-f51.google.com [74.125.82.51]) by cuda.sgi.com with ESMTP id FtQZLykMMqDA7TYJ for ; Mon, 27 Jun 2011 06:04:55 -0700 (PDT) Received: by wwj26 with SMTP id 26so2724265wwj.32 for ; Mon, 27 Jun 2011 06:04:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=44xdpAkRnCsTZHQEdgRpMA0XbPoyeKoJZ6ubptDAH14=; b=EFVRAfFfUZSQP+7BzCIeWdfTvY7vd6sR5j9s6HWRhaCEyU33C2A5oFzxBEbEZl+999 7XeV1PXNzPtCKKVXnyVqo6d6oEsLgndzjS6YmpzOnegirFIrz3PTJaFfn/NbArb/Ge3S VSv1FVgm6nMNbtKvldaiOeuPy3qEVVgBGfscM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=QNDaTcasGKU+xpUXWniWd7v6C9td83W78fvejySCnHBmKSgWZaSSciLdy6ZQB1Tfca LT/2pQL6VFUDihbPcWE863Zh2suQ+oP3CIlJD9PkzBhgxsMuRZH59IWhDggs5BQTDzCq MSVEITsUGMpoS7GhqRf9fQ+3LTtymvDkIj9rY= MIME-Version: 1.0 Received: by 10.216.150.150 with SMTP id z22mr310329wej.32.1309179894650; Mon, 27 Jun 2011 06:04:54 -0700 (PDT) Sender: powool@gmail.com Received: by 10.216.80.8 with HTTP; Mon, 27 Jun 2011 06:04:54 -0700 (PDT) In-Reply-To: <4E08456F.1090503@hardwarefreak.com> References: <4E063BC6.9000801@task.com.br> <4E0694CC.8050003@hardwarefreak.com> <4E06C967.2060107@task.com.br> <20110626235959.GC32466@dastard> <4E07FA07.4050907@hardwarefreak.com> <4E0803AA.20809@task.com.br> <4E08456F.1090503@hardwarefreak.com> Date: Mon, 27 Jun 2011 09:04:54 -0400 X-Google-Sender-Auth: 2W5O1T8mCrGU_A7Z-jxTvzjnQp0 Message-ID: X-ASG-Orig-Subj: Re: mkfs.xfs error creating large agcount an raid Subject: Re: mkfs.xfs error creating large agcount an raid From: Paul Anderson To: Stan Hoeppner Cc: Marcus Pereira , linux-xfs@oss.sgi.com Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-ww0-f51.google.com[74.125.82.51] X-Barracuda-Start-Time: 1309179896 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0207 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67275 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean One thing this thread indicates is the need for a warning in mkfs.xfs - according to several developers, there is, I think, linear increase in allocation time to number of allocation groups. It would be helpful for the end user to simply issue a warning stating this when the AG count seems high with a brief explanation as to why it seems high. I would allow it, but print the warning. Even a simple linear check like agroups>500 should suffice for "a while". Paul On Mon, Jun 27, 2011 at 4:55 AM, Stan Hoeppner wro= te: > On 6/26/2011 11:14 PM, Marcus Pereira wrote: >> Em 27-06-2011 00:33, Stan Hoeppner escreveu: >>> >>> I recommend 3 changes, one of which I previously mentioned: >>> >>> 1. =A0Use 8 mirror pairs instead of 4 >>> 2. =A0Don't use striping. =A0Make an mdraid --linear device of the 8 mi= rrors >>> 3. =A0Format with '-d agcount=3D32' which will give you 4 AGs per spind= le >>> >>> Test this configuration and post your results. >> >> I am thanks for all advices. I will make the tests and post, may take >> some time. >> >> About all other messages. My system may not be a Ferrari but its not a >> Volks. I certainly do not have that many HDs in fiber channel, but the >> sever is a dual core Xeon 6 cores with HT. Linux sees a total of 24 >> cores, total RAM is 24GB. The HDs are all SAS 15Krpm and the system runs >> on SSD. They are dedicated to handle the maildir files and I have >> several of those servers running nicely. >> But I don=92t want to make the thread about my system larger. > > So you do or don't have the excessive head seek problem you previously > mentioned? =A0If not then use the mkfs.xfs defaults. > >> Yes, I don=92t know much about XFS and Allocation groups, thanks for you >> all to help me a bit. > > You're welcome. =A0Google should turn up a decent amount of information > about XFS allocation groups if you're interested in further reading. > >> At the end the reason why I opened the thread it the error and the >> developers should take some care about that. > >> Ok, no reason to use that many agcount but giving a "mkfs.xfs: pwrite64 >> failed: No space left on device" error for me stills seems a bug. > > The definition of a software bug stipulates incorrect or unexpected > program behavior. =A0Error messages aren't bugs unless the wrong error > message is returned for a given fault condition, or no error is returned > when one should be. > > Are you stipulating that the above isn't the correct error message for > the fault condition? =A0Or do you simply not understand the error message= ? > =A0If the latter, maybe you should simply ask what that error means befor= e > saying the error message is a bug. :) > > -- > Stan > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From aelder@sgi.com Mon Jun 27 09:01:00 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5RE104P110194 for ; Mon, 27 Jun 2011 09:01:00 -0500 Received: from stout.americas.sgi.com (stout.americas.sgi.com [128.162.232.50]) by relay1.corp.sgi.com (Postfix) with ESMTP id 42E0B8F804B; Mon, 27 Jun 2011 07:00:57 -0700 (PDT) Received: from stout.americas.sgi.com (localhost6.localdomain6 [127.0.0.1]) by stout.americas.sgi.com (8.14.4/8.14.2) with ESMTP id p5RE0uNl026165; Mon, 27 Jun 2011 09:00:57 -0500 Received: (from aelder@localhost) by stout.americas.sgi.com (8.14.4/8.14.4/Submit) id p5RE0u38026164; Mon, 27 Jun 2011 09:00:56 -0500 From: Alex Elder Message-Id: <201106271400.p5RE0u38026164@stout.americas.sgi.com> Date: Mon, 27 Jun 2011 09:00:56 -0500 To: torvalds@linux-foundation.org Subject: [GIT PULL] XFS update for 3.0-rc5 Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, akpm@linux-foundation.org User-Agent: Heirloom mailx 12.5 7/5/10 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii 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 Linus, please pull the following three XFS changes for 3.0-rc5: - The first fixes a problem where certain XFS inode fields were not getting re-initialized when they were recycled. - The second ensures a flag related to speculatively preallocating space beyond EOF gets reset when a file is truncated. - The third properly sets a flag indicating that a lookup failure is allowed for user-supplied attribute names. This was causing a failed assertion when running a test that attempts to remove a non-existent selinux-related attribute. Thank you. -Alex The following changes since commit 258e43fdb00c73d424b114ae3850accd55b27cbb: Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 (2011-06-26 19:40:31 -0700) are available in the git repository at: git://oss.sgi.com/xfs/xfs for-linus Dave Chinner (3): xfs: reset inode per-lifetime state when recycling it xfs: clear XFS_IDIRTY_RELEASE on truncate down xfs: prevent bogus assert when trying to remove non-existent attribute fs/xfs/xfs_attr.c | 7 +++++++ fs/xfs/xfs_iget.c | 13 +++++++++---- fs/xfs/xfs_inode.h | 10 ++++++++++ fs/xfs/xfs_vnodeops.c | 7 +++++-- 4 files changed, 31 insertions(+), 6 deletions(-) From sandeen@sandeen.net Mon Jun 27 10:10:09 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5RFA96X114070 for ; Mon, 27 Jun 2011 10:10:09 -0500 X-ASG-Debug-ID: 1309187407-59eb03a60000-w1Z2WR 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 47E0531D85 for ; Mon, 27 Jun 2011 08:10:07 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id Y1MPrZeFQGDHGfhQ for ; Mon, 27 Jun 2011 08:10:07 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 25D614964600; Mon, 27 Jun 2011 10:10:07 -0500 (CDT) Message-ID: <4E089D4E.1060503@sandeen.net> Date: Mon, 27 Jun 2011 10:10:06 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11 MIME-Version: 1.0 To: Paul Anderson CC: Stan Hoeppner , linux-xfs@oss.sgi.com, Marcus Pereira X-ASG-Orig-Subj: Re: mkfs.xfs error creating large agcount an raid Subject: Re: mkfs.xfs error creating large agcount an raid References: <4E063BC6.9000801@task.com.br> <4E0694CC.8050003@hardwarefreak.com> <4E06C967.2060107@task.com.br> <20110626235959.GC32466@dastard> <4E07FA07.4050907@hardwarefreak.com> <4E0803AA.20809@task.com.br> <4E08456F.1090503@hardwarefreak.com> In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1309187408 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67283 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 6/27/11 8:04 AM, Paul Anderson wrote: > One thing this thread indicates is the need for a warning in mkfs.xfs > - according to several developers, there is, I think, linear increase > in allocation time to number of allocation groups. > > It would be helpful for the end user to simply issue a warning stating > this when the AG count seems high with a brief explanation as to why > it seems high. I would allow it, but print the warning. Even a > simple linear check like agroups>500 should suffice for "a while". I disagree. There are all sorts of ways a user can shoot themselves in the foot with unix commands. Detecting and warning about all of them is a fool's errand. ====================================== = Warning! mkfs.xfs detected insane = = option specification. Cancel? = = = = [ OK ] [ Cancel ] = ====================================== -Eric > Paul > > On Mon, Jun 27, 2011 at 4:55 AM, Stan Hoeppner wrote: >> On 6/26/2011 11:14 PM, Marcus Pereira wrote: >>> Em 27-06-2011 00:33, Stan Hoeppner escreveu: >>>> >>>> I recommend 3 changes, one of which I previously mentioned: >>>> >>>> 1. Use 8 mirror pairs instead of 4 >>>> 2. Don't use striping. Make an mdraid --linear device of the 8 mirrors >>>> 3. Format with '-d agcount=32' which will give you 4 AGs per spindle >>>> >>>> Test this configuration and post your results. >>> >>> I am thanks for all advices. I will make the tests and post, may take >>> some time. >>> >>> About all other messages. My system may not be a Ferrari but its not a >>> Volks. I certainly do not have that many HDs in fiber channel, but the >>> sever is a dual core Xeon 6 cores with HT. Linux sees a total of 24 >>> cores, total RAM is 24GB. The HDs are all SAS 15Krpm and the system runs >>> on SSD. They are dedicated to handle the maildir files and I have >>> several of those servers running nicely. >>> But I don’t want to make the thread about my system larger. >> >> So you do or don't have the excessive head seek problem you previously >> mentioned? If not then use the mkfs.xfs defaults. >> >>> Yes, I don’t know much about XFS and Allocation groups, thanks for you >>> all to help me a bit. >> >> You're welcome. Google should turn up a decent amount of information >> about XFS allocation groups if you're interested in further reading. >> >>> At the end the reason why I opened the thread it the error and the >>> developers should take some care about that. >> >>> Ok, no reason to use that many agcount but giving a "mkfs.xfs: pwrite64 >>> failed: No space left on device" error for me stills seems a bug. >> >> The definition of a software bug stipulates incorrect or unexpected >> program behavior. Error messages aren't bugs unless the wrong error >> message is returned for a given fault condition, or no error is returned >> when one should be. >> >> Are you stipulating that the above isn't the correct error message for >> the fault condition? Or do you simply not understand the error message? >> If the latter, maybe you should simply ask what that error means before >> saying the error message is a bug. :) >> >> -- >> Stan >> >> _______________________________________________ >> 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 powool@gmail.com Mon Jun 27 10:27:02 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p5RFR2bR114811 for ; Mon, 27 Jun 2011 10:27:02 -0500 X-ASG-Debug-ID: 1309188420-31be007b0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-wy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BD2FD31A2E for ; Mon, 27 Jun 2011 08:27:01 -0700 (PDT) Received: from mail-wy0-f181.google.com (mail-wy0-f181.google.com [74.125.82.181]) by cuda.sgi.com with ESMTP id p4BrXsB0ibjxZnzi for ; Mon, 27 Jun 2011 08:27:01 -0700 (PDT) Received: by wyh22 with SMTP id 22so1636465wyh.26 for ; Mon, 27 Jun 2011 08:27:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=uSnm+ShXUDqs0c2t1tg2qp9QkKqlbkZ2BXQi+vh/zgA=; b=Jc3FhdGWZQaN4UX8WEmqfoeC9fu/qsD269n82haDuhi/t5AW16oQub5J45racoCujE 5rK4JzUjVRv47JdmrX2/dovRTLUWCp9mrzBSXm3OQM472dZpbOgqawwuPEGDMYhErqtQ X5ZpdbvZIY46XMrsOh1pHoMBgcFPeWuyG+xzw= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=wItBQGgPOULiTj1kyyktwNGpUEqByYPmxHAdiN0IZ3vl+ho3gE4vWzc5gJ2HpLeGPe YdW0QqjdD8/GbcDk8u7EIqTxgnIjlpoZIP9EZ07A66EZCndz34v3uP9DxLXYbpqMbWGR xq6qchLsiW1bZMTMVHUNMekD6RGIxR3w1LJew= MIME-Version: 1.0 Received: by 10.216.150.150 with SMTP id z22mr459298wej.32.1309188420213; Mon, 27 Jun 2011 08:27:00 -0700 (PDT) Sender: powool@gmail.com Received: by 10.216.80.8 with HTTP; Mon, 27 Jun 2011 08:27:00 -0700 (PDT) In-Reply-To: <4E089D4E.1060503@sandeen.net> References: <4E063BC6.9000801@task.com.br> <4E0694CC.8050003@hardwarefreak.com> <4E06C967.2060107@task.com.br> <20110626235959.GC32466@dastard> <4E07FA07.4050907@hardwarefreak.com> <4E0803AA.20809@task.com.br> <4E08456F.1090503@hardwarefreak.com> <4E089D4E.1060503@sandeen.net> Date: Mon, 27 Jun 2011 11:27:00 -0400 X-Google-Sender-Auth: BmfOy1x23alPpYvbgfKHQsatHwM Message-ID: X-ASG-Orig-Subj: Re: mkfs.xfs error creating large agcount an raid Subject: Re: mkfs.xfs error creating large agcount an raid From: Paul Anderson To: Eric Sandeen Cc: Stan Hoeppner , linux-xfs@oss.sgi.com, Marcus Pereira Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-wy0-f181.google.com[74.125.82.181] X-Barracuda-Start-Time: 1309188421 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67285 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jun 27, 2011 at 11:10 AM, Eric Sandeen wrote: > On 6/27/11 8:04 AM, Paul Anderson wrote: >> One thing this thread indicates is the need for a warning in mkfs.xfs >> - according to several developers, there is, I think, linear increase >> in allocation time to number of allocation groups. >> >> It would be helpful for the end user to simply issue a warning stating >> this when the AG count seems high with a brief explanation as to why >> it seems high. =A0I would allow it, but print the warning. =A0Even a >> simple linear check like agroups>500 should suffice for "a while". > > I disagree. > > There are all sorts of ways a user can shoot themselves in the foot with > unix commands. =A0Detecting and warning about all of them is a fool's err= and. Clearly a philosophical difference. In managing complex software, it is far better for users if the software itself can simply report why something is a problem, without resorting to expecting users to read source code or ask developers why. There is nothing in the man page I see indicating what is good or bad regarding allocation groups - either document it there or warn in the software. If allocation algorithms are linear with respect to allocation groups, the something like this should be stated in the man pages. Doing neither leads to frustrated end users. If you answer is "use the defaults" then explain why and which parameters is applies to (again in the documentation). Also, it is not hard to do, and would have in this instance saved developer time. Since the issue has come up a few times the last month or so, it seems worthwhile to deal with. It's sort of like the story about giving a person a fish versus teaching them how to fish. Paul > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > =3D Warning! =A0mkfs.xfs detected insane =3D > =3D =A0 option specification. =A0Cancel? =A0 =3D > =3D =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0=3D > =3D =A0 =A0 =A0[ =A0 OK =A0 ] =A0 =A0 [ Cancel ] =A0 =A0 =3D > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > -Eric > >> Paul >> >> On Mon, Jun 27, 2011 at 4:55 AM, Stan Hoeppner = wrote: >>> On 6/26/2011 11:14 PM, Marcus Pereira wrote: >>>> Em 27-06-2011 00:33, Stan Hoeppner escreveu: >>>>> >>>>> I recommend 3 changes, one of which I previously mentioned: >>>>> >>>>> 1. =A0Use 8 mirror pairs instead of 4 >>>>> 2. =A0Don't use striping. =A0Make an mdraid --linear device of the 8 = mirrors >>>>> 3. =A0Format with '-d agcount=3D32' which will give you 4 AGs per spi= ndle >>>>> >>>>> Test this configuration and post your results. >>>> >>>> I am thanks for all advices. I will make the tests and post, may take >>>> some time. >>>> >>>> About all other messages. My system may not be a Ferrari but its not a >>>> Volks. I certainly do not have that many HDs in fiber channel, but the >>>> sever is a dual core Xeon 6 cores with HT. Linux sees a total of 24 >>>> cores, total RAM is 24GB. The HDs are all SAS 15Krpm and the system ru= ns >>>> on SSD. They are dedicated to handle the maildir files and I have >>>> several of those servers running nicely. >>>> But I don=92t want to make the thread about my system larger. >>> >>> So you do or don't have the excessive head seek problem you previously >>> mentioned? =A0If not then use the mkfs.xfs defaults. >>> >>>> Yes, I don=92t know much about XFS and Allocation groups, thanks for y= ou >>>> all to help me a bit. >>> >>> You're welcome. =A0Google should turn up a decent amount of information >>> about XFS allocation groups if you're interested in further reading. >>> >>>> At the end the reason why I opened the thread it the error and the >>>> developers should take some care about that. >>> >>>> Ok, no reason to use that many agcount but giving a "mkfs.xfs: pwrite6= 4 >>>> failed: No space left on device" error for me stills seems a bug. >>> >>> The definition of a software bug stipulates incorrect or unexpected >>> program behavior. =A0Error messages aren't bugs unless the wrong error >>> message is returned for a given fault condition, or no error is returne= d >>> when one should be. >>> >>> Are you stipulating that the above isn't the correct error message for >>> the fault condition? =A0Or do you simply not understand the error messa= ge? >>> =A0If the latter, maybe you should simply ask what that error means bef= ore >>> saying the error message is a bug. :) >>> >>> -- >>> Stan >>> >>> _______________________________________________ >>> 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 sandeen@sandeen.net Mon Jun 27 10:37:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5RFbHSp115282 for ; Mon, 27 Jun 2011 10:37:17 -0500 X-ASG-Debug-ID: 1309189035-31af00ff0000-w1Z2WR 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 8C07931B03 for ; Mon, 27 Jun 2011 08:37:16 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id 79BJJQrIHAiNN40S for ; Mon, 27 Jun 2011 08:37:16 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id B498F4964600; Mon, 27 Jun 2011 10:37:15 -0500 (CDT) Message-ID: <4E08A3AB.9050207@sandeen.net> Date: Mon, 27 Jun 2011 10:37:15 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11 MIME-Version: 1.0 To: Paul Anderson CC: Stan Hoeppner , linux-xfs@oss.sgi.com, Marcus Pereira X-ASG-Orig-Subj: Re: mkfs.xfs error creating large agcount an raid Subject: Re: mkfs.xfs error creating large agcount an raid References: <4E063BC6.9000801@task.com.br> <4E0694CC.8050003@hardwarefreak.com> <4E06C967.2060107@task.com.br> <20110626235959.GC32466@dastard> <4E07FA07.4050907@hardwarefreak.com> <4E0803AA.20809@task.com.br> <4E08456F.1090503@hardwarefreak.com> <4E089D4E.1060503@sandeen.net> In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1309189036 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67285 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 6/27/11 10:27 AM, Paul Anderson wrote: > On Mon, Jun 27, 2011 at 11:10 AM, Eric Sandeen wrote: >> On 6/27/11 8:04 AM, Paul Anderson wrote: >>> One thing this thread indicates is the need for a warning in mkfs.xfs >>> - according to several developers, there is, I think, linear increase >>> in allocation time to number of allocation groups. >>> >>> It would be helpful for the end user to simply issue a warning stating >>> this when the AG count seems high with a brief explanation as to why >>> it seems high. I would allow it, but print the warning. Even a >>> simple linear check like agroups>500 should suffice for "a while". >> >> I disagree. >> >> There are all sorts of ways a user can shoot themselves in the foot with >> unix commands. Detecting and warning about all of them is a fool's errand. > > Clearly a philosophical difference. > > In managing complex software, it is far better for users if the > software itself can simply report why something is a problem, without > resorting to expecting users to read source code or ask developers > why. > > There is nothing in the man page I see indicating what is good or bad > regarding allocation groups - either document it there or warn in the > software. If allocation algorithms are linear with respect to > allocation groups, the something like this should be stated in the man > pages. > > Doing neither leads to frustrated end users. If you answer is "use > the defaults" then explain why and which parameters is applies to > (again in the documentation). > > Also, it is not hard to do, and would have in this instance saved > developer time. Since the issue has come up a few times the last > month or so, it seems worthwhile to deal with. This one instance would not be hard to do, agreed. To point out every potential pitfall in every bad option or combination of options would be impossible. I'd be happy with a version of the FAQ entry Dave pointed to in the mkfs.xfs manpage, though, basically "don't change the defaults unless you know for sure that it will address a shortcoming you have seen in testing." > It's sort of like the story about giving a person a fish versus > teaching them how to fish. Or a little like performing neurosurgery on a person vs. teaching them how to do it themselves. ;) There is lots of "teaching to fish" in the documentation and the FAQ; until you are really able to delve into the technical complexities of XFS you probably should not try to fish in water that is too deep. Just because a knob is there doesn't mean you should turn it as far as it can go, and I don't think it's our job to warn against that in every instance, either... Those who wish to learn would be well advised to read up on the many detailed technical docs available; I don't think that the mkfs.xfs code is the right place to do this teaching, though. But I guess it is a philosophical difference. -Eric > Paul > > >> >> ====================================== >> = Warning! mkfs.xfs detected insane = >> = option specification. Cancel? = >> = = >> = [ OK ] [ Cancel ] = >> ====================================== >> >> -Eric >> >>> Paul >>> >>> On Mon, Jun 27, 2011 at 4:55 AM, Stan Hoeppner wrote: >>>> On 6/26/2011 11:14 PM, Marcus Pereira wrote: >>>>> Em 27-06-2011 00:33, Stan Hoeppner escreveu: >>>>>> >>>>>> I recommend 3 changes, one of which I previously mentioned: >>>>>> >>>>>> 1. Use 8 mirror pairs instead of 4 >>>>>> 2. Don't use striping. Make an mdraid --linear device of the 8 mirrors >>>>>> 3. Format with '-d agcount=32' which will give you 4 AGs per spindle >>>>>> >>>>>> Test this configuration and post your results. >>>>> >>>>> I am thanks for all advices. I will make the tests and post, may take >>>>> some time. >>>>> >>>>> About all other messages. My system may not be a Ferrari but its not a >>>>> Volks. I certainly do not have that many HDs in fiber channel, but the >>>>> sever is a dual core Xeon 6 cores with HT. Linux sees a total of 24 >>>>> cores, total RAM is 24GB. The HDs are all SAS 15Krpm and the system runs >>>>> on SSD. They are dedicated to handle the maildir files and I have >>>>> several of those servers running nicely. >>>>> But I don’t want to make the thread about my system larger. >>>> >>>> So you do or don't have the excessive head seek problem you previously >>>> mentioned? If not then use the mkfs.xfs defaults. >>>> >>>>> Yes, I don’t know much about XFS and Allocation groups, thanks for you >>>>> all to help me a bit. >>>> >>>> You're welcome. Google should turn up a decent amount of information >>>> about XFS allocation groups if you're interested in further reading. >>>> >>>>> At the end the reason why I opened the thread it the error and the >>>>> developers should take some care about that. >>>> >>>>> Ok, no reason to use that many agcount but giving a "mkfs.xfs: pwrite64 >>>>> failed: No space left on device" error for me stills seems a bug. >>>> >>>> The definition of a software bug stipulates incorrect or unexpected >>>> program behavior. Error messages aren't bugs unless the wrong error >>>> message is returned for a given fault condition, or no error is returned >>>> when one should be. >>>> >>>> Are you stipulating that the above isn't the correct error message for >>>> the fault condition? Or do you simply not understand the error message? >>>> If the latter, maybe you should simply ask what that error means before >>>> saying the error message is a bug. :) >>>> >>>> -- >>>> Stan >>>> >>>> _______________________________________________ >>>> 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 lczerner@redhat.com Mon Jun 27 11:53:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_63, J_CHICKENPOX_64,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 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 p5RGrc4B121421 for ; Mon, 27 Jun 2011 11:53:38 -0500 X-ASG-Debug-ID: 1309193616-31ad03ce0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B85E5320EB; Mon, 27 Jun 2011 09:53:37 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id lUTzPH3U3O9HYaUY; Mon, 27 Jun 2011 09:53:37 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5RGraXr012338 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 27 Jun 2011 12:53:36 -0400 Received: from dhcp-27-109.brq.redhat.com (dhcp-1-248.brq.redhat.com [10.34.1.248]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id p5RGrYYA023306; Mon, 27 Jun 2011 12:53:35 -0400 From: Lukas Czerner To: xfs@oss.sgi.com Cc: aelder@sgi.com, Lukas Czerner X-ASG-Orig-Subj: [PATCH] xfs_repair: Check if agno is inside the filesystem Subject: [PATCH] xfs_repair: Check if agno is inside the filesystem Date: Mon, 27 Jun 2011 18:53:30 +0200 Message-Id: <1309193610-17078-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1309193617 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 When getting an inode tree pointer from an array inode_tree_ptrs, we should check if agno, which is used as a pointer to the array, lives within the file system, because if it is not, we can end up touching uninitialized memory. This commit fixes it by passing xfs_mount_t to affected functions and checking if agno really is inside the file system. This solves Red Hat bug #694706 Signed-off-by: Lukas Czerner --- repair/dino_chunks.c | 24 ++++++++++++------------ repair/dinode.c | 2 +- repair/dir.c | 5 +++-- repair/dir2.c | 6 ++++-- repair/incore.h | 21 +++++++++++++++------ repair/incore_ino.c | 31 +++++++++++++++++++------------ repair/phase2.c | 4 ++-- repair/phase3.c | 2 +- repair/phase4.c | 6 +++--- repair/phase5.c | 2 +- repair/phase6.c | 25 +++++++++++++------------ repair/scan.c | 6 +++--- 12 files changed, 77 insertions(+), 57 deletions(-) diff --git a/repair/dino_chunks.c b/repair/dino_chunks.c index 734e9a8..9739da2 100644 --- a/repair/dino_chunks.c +++ b/repair/dino_chunks.c @@ -194,9 +194,9 @@ verify_inode_chunk(xfs_mount_t *mp, * put new inode record(s) into inode tree */ for (j = 0; j < chunks_pblock; j++) { - if ((irec_p = find_inode_rec(agno, start_agino)) + if ((irec_p = find_inode_rec(mp, agno, start_agino)) == NULL) { - irec_p = set_inode_free_alloc(agno, + irec_p = set_inode_free_alloc(mp, agno, start_agino); for (i = 1; i < XFS_INODES_PER_CHUNK; i++) set_inode_free(irec_p, i); @@ -254,7 +254,7 @@ verify_inode_chunk(xfs_mount_t *mp, start_agino = XFS_OFFBNO_TO_AGINO(mp, start_agbno, 0); *start_ino = XFS_AGINO_TO_INO(mp, agno, start_agino); - irec_p = set_inode_free_alloc(agno, + irec_p = set_inode_free_alloc(mp, agno, XFS_OFFBNO_TO_AGINO(mp, start_agbno, 0)); for (i = 1; i < XFS_INODES_PER_CHUNK; i++) @@ -292,7 +292,7 @@ verify_inode_chunk(xfs_mount_t *mp, */ irec_before_p = irec_after_p = NULL; - find_inode_rec_range(agno, XFS_OFFBNO_TO_AGINO(mp, start_agbno, 0), + find_inode_rec_range(mp, agno, XFS_OFFBNO_TO_AGINO(mp, start_agbno, 0), XFS_OFFBNO_TO_AGINO(mp, end_agbno, mp->m_sb.sb_inopblock - 1), &irec_before_p, &irec_after_p); @@ -470,9 +470,9 @@ verify_inode_chunk(xfs_mount_t *mp, start_agino = XFS_OFFBNO_TO_AGINO(mp, chunk_start_agbno, 0); *start_ino = XFS_AGINO_TO_INO(mp, agno, start_agino); - ASSERT(find_inode_rec(agno, start_agino) == NULL); + ASSERT(find_inode_rec(mp, agno, start_agino) == NULL); - irec_p = set_inode_free_alloc(agno, start_agino); + irec_p = set_inode_free_alloc(mp, agno, start_agino); for (i = 1; i < XFS_INODES_PER_CHUNK; i++) set_inode_free(irec_p, i); @@ -554,7 +554,7 @@ verify_aginode_chunk_irec(xfs_mount_t *mp, ino_tree_node_t *irec = NULL; if (verify_aginode_chunk(mp, agno, agino, &start_agino)) - irec = find_inode_rec(agno, start_agino); + irec = find_inode_rec(mp, agno, start_agino); return(irec); } @@ -1049,7 +1049,7 @@ process_aginodes( if ((ino_rec = next_ino_rec(ino_rec)) != NULL) num_inos += XFS_INODES_PER_CHUNK; - get_inode_rec(agno, prev_ino_rec); + get_inode_rec(mp, agno, prev_ino_rec); free_inode_rec(agno, prev_ino_rec); } @@ -1117,14 +1117,14 @@ check_uncertain_aginodes(xfs_mount_t *mp, xfs_agnumber_t agno) XFS_INODES_PER_CHUNK) continue; - if ((nrec = find_inode_rec(agno, agino)) == NULL) + if ((nrec = find_inode_rec(mp, agno, agino)) == NULL) if (!verify_aginum(mp, agno, agino)) if (verify_aginode_chunk(mp, agno, agino, &start)) got_some = 1; } - get_uncertain_inode_rec(agno, irec); + get_uncertain_inode_rec(mp, agno, irec); free_inode_rec(agno, irec); irec = findfirst_uncertain_inode_rec(agno); @@ -1207,7 +1207,7 @@ process_uncertain_aginodes(xfs_mount_t *mp, xfs_agnumber_t agno) XFS_INODES_PER_CHUNK) continue; - if ((nrec = find_inode_rec(agno, agino)) != NULL) + if ((nrec = find_inode_rec(mp, agno, agino)) != NULL) continue; /* @@ -1238,7 +1238,7 @@ process_uncertain_aginodes(xfs_mount_t *mp, xfs_agnumber_t agno) * now return the uncertain inode record to the free pool * and pull another one off the list for processing */ - get_uncertain_inode_rec(agno, irec); + get_uncertain_inode_rec(mp, agno, irec); free_inode_rec(agno, irec); irec = findfirst_uncertain_inode_rec(agno); diff --git a/repair/dinode.c b/repair/dinode.c index 3a092e4..f035321 100644 --- a/repair/dinode.c +++ b/repair/dinode.c @@ -854,7 +854,7 @@ get_agino_buf(xfs_mount_t *mp, xfs_buf_t *bp; int size; - if ((irec = find_inode_rec(agno, agino)) == NULL) + if ((irec = find_inode_rec(mp, agno, agino)) == NULL) return(NULL); size = XFS_FSB_TO_BB(mp, MAX(1, XFS_INODES_PER_CHUNK/inodes_per_block)); diff --git a/repair/dir.c b/repair/dir.c index 6e0d54b..9039360 100644 --- a/repair/dir.c +++ b/repair/dir.c @@ -173,7 +173,8 @@ process_shortform_dir( _("entry in shortform dir %llu references group quota inode %llu\n"), ino, lino); junkit = 1; - } else if ((irec_p = find_inode_rec(XFS_INO_TO_AGNO(mp, lino), + } else if ((irec_p = find_inode_rec(mp, + XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino))) != NULL) { /* * if inode is marked free and we're in inode @@ -1658,7 +1659,7 @@ _("entry #%d, bno %d in directory %llu references group quota inode %llu\n"), _("\twould clear ino number in entry %d...\n"), i); } - } else if ((irec_p = find_inode_rec( + } else if ((irec_p = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino))) != NULL) { /* diff --git a/repair/dir2.c b/repair/dir2.c index 55fe8ec..67ee274 100644 --- a/repair/dir2.c +++ b/repair/dir2.c @@ -928,7 +928,8 @@ process_sf_dir2( } else if (lino == mp->m_sb.sb_gquotino) { junkit = 1; junkreason = _("group quota"); - } else if ((irec_p = find_inode_rec(XFS_INO_TO_AGNO(mp, lino), + } else if ((irec_p = find_inode_rec(mp, + XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino))) != NULL) { /* * if inode is marked free and we're in inode @@ -1448,7 +1449,8 @@ process_dir2_data( } else if (ent_ino == mp->m_sb.sb_gquotino) { clearreason = _("group quota"); } else { - irec_p = find_inode_rec(XFS_INO_TO_AGNO(mp, ent_ino), + irec_p = find_inode_rec(mp, + XFS_INO_TO_AGNO(mp, ent_ino), XFS_INO_TO_AGINO(mp, ent_ino)); if (irec_p == NULL) { if (ino_discovery) { diff --git a/repair/incore.h b/repair/incore.h index 99853fb..ae77fe9 100644 --- a/repair/incore.h +++ b/repair/incore.h @@ -307,7 +307,8 @@ void free_inode_rec(xfs_agnumber_t agno, ino_tree_node_t *ino_rec); /* * get pulls the inode record from the good inode tree */ -void get_inode_rec(xfs_agnumber_t agno, ino_tree_node_t *ino_rec); +void get_inode_rec(xfs_mount_t *mp, xfs_agnumber_t agno, + ino_tree_node_t *ino_rec); extern avltree_desc_t **inode_tree_ptrs; static inline ino_tree_node_t * @@ -316,12 +317,17 @@ findfirst_inode_rec(xfs_agnumber_t agno) return((ino_tree_node_t *) inode_tree_ptrs[agno]->avl_firstino); } static inline ino_tree_node_t * -find_inode_rec(xfs_agnumber_t agno, xfs_agino_t ino) +find_inode_rec(xfs_mount_t *mp, xfs_agnumber_t agno, xfs_agino_t ino) { + /* + * Is the AG inside the file system + */ + if (agno >= mp->m_sb.sb_agcount) + return NULL; return((ino_tree_node_t *) avl_findrange(inode_tree_ptrs[agno], ino)); } -void find_inode_rec_range(xfs_agnumber_t agno, +void find_inode_rec_range(xfs_mount_t *mp, xfs_agnumber_t agno, xfs_agino_t start_ino, xfs_agino_t end_ino, ino_tree_node_t **first, ino_tree_node_t **last); @@ -330,8 +336,10 @@ void find_inode_rec_range(xfs_agnumber_t agno, * automatically marks it as "existing". Note -- all the inode * add/set/get routines assume a valid inode number. */ -ino_tree_node_t *set_inode_used_alloc(xfs_agnumber_t agno, xfs_agino_t ino); -ino_tree_node_t *set_inode_free_alloc(xfs_agnumber_t agno, xfs_agino_t ino); +ino_tree_node_t *set_inode_used_alloc(xfs_mount_t *mp, xfs_agnumber_t agno, + xfs_agino_t ino); +ino_tree_node_t *set_inode_free_alloc(xfs_mount_t *mp, xfs_agnumber_t agno, + xfs_agino_t ino); void print_inode_list(xfs_agnumber_t agno); void print_uncertain_inode_list(xfs_agnumber_t agno); @@ -346,7 +354,8 @@ void add_inode_uncertain(xfs_mount_t *mp, xfs_ino_t ino, int free); void add_aginode_uncertain(xfs_agnumber_t agno, xfs_agino_t agino, int free); -void get_uncertain_inode_rec(xfs_agnumber_t agno, +void get_uncertain_inode_rec(xfs_mount_t *mp, + xfs_agnumber_t agno, ino_tree_node_t *ino_rec); void clear_uncertain_ino_cache(xfs_agnumber_t agno); diff --git a/repair/incore_ino.c b/repair/incore_ino.c index febe0c9..2e69f41 100644 --- a/repair/incore_ino.c +++ b/repair/incore_ino.c @@ -418,9 +418,11 @@ add_inode_uncertain(xfs_mount_t *mp, xfs_ino_t ino, int free) * pull the indicated inode record out of the uncertain inode tree */ void -get_uncertain_inode_rec(xfs_agnumber_t agno, ino_tree_node_t *ino_rec) +get_uncertain_inode_rec(xfs_mount_t *mp, xfs_agnumber_t agno, + ino_tree_node_t *ino_rec) { ASSERT(inode_tree_ptrs != NULL); + ASSERT(agno < mp->m_sb.sb_agcount); ASSERT(inode_tree_ptrs[agno] != NULL); avl_delete(inode_uncertain_tree_ptrs[agno], &ino_rec->avl_node); @@ -474,7 +476,7 @@ clear_uncertain_ino_cache(xfs_agnumber_t agno) * don't. */ static ino_tree_node_t * -add_inode(xfs_agnumber_t agno, xfs_agino_t ino) +add_inode(xfs_mount_t *mp, xfs_agnumber_t agno, xfs_agino_t ino) { ino_tree_node_t *ino_rec; @@ -495,9 +497,10 @@ add_inode(xfs_agnumber_t agno, xfs_agino_t ino) * pull the indicated inode record out of the inode tree */ void -get_inode_rec(xfs_agnumber_t agno, ino_tree_node_t *ino_rec) +get_inode_rec(xfs_mount_t *mp, xfs_agnumber_t agno, ino_tree_node_t *ino_rec) { ASSERT(inode_tree_ptrs != NULL); + ASSERT(agno < mp->m_sb.sb_agcount); ASSERT(inode_tree_ptrs[agno] != NULL); avl_delete(inode_tree_ptrs[agno], &ino_rec->avl_node); @@ -518,14 +521,18 @@ free_inode_rec(xfs_agnumber_t agno, ino_tree_node_t *ino_rec) } void -find_inode_rec_range(xfs_agnumber_t agno, xfs_agino_t start_ino, - xfs_agino_t end_ino, ino_tree_node_t **first, - ino_tree_node_t **last) +find_inode_rec_range(xfs_mount_t *mp, xfs_agnumber_t agno, + xfs_agino_t start_ino, xfs_agino_t end_ino, + ino_tree_node_t **first, ino_tree_node_t **last) { *first = *last = NULL; - avl_findranges(inode_tree_ptrs[agno], start_ino, - end_ino, (avlnode_t **) first, (avlnode_t **) last); + /* + * Is the AG inside the file system ? + */ + if (agno < mp->m_sb.sb_agcount) + avl_findranges(inode_tree_ptrs[agno], start_ino, + end_ino, (avlnode_t **) first, (avlnode_t **) last); } /* @@ -534,7 +541,7 @@ find_inode_rec_range(xfs_agnumber_t agno, xfs_agino_t start_ino, * whichever alignment is larger. */ ino_tree_node_t * -set_inode_used_alloc(xfs_agnumber_t agno, xfs_agino_t ino) +set_inode_used_alloc(xfs_mount_t *mp, xfs_agnumber_t agno, xfs_agino_t ino) { ino_tree_node_t *ino_rec; @@ -543,7 +550,7 @@ set_inode_used_alloc(xfs_agnumber_t agno, xfs_agino_t ino) * is too see if the chunk overlaps another chunk * already in the tree */ - ino_rec = add_inode(agno, ino); + ino_rec = add_inode(mp, agno, ino); ASSERT(ino_rec != NULL); ASSERT(ino >= ino_rec->ino_startnum && @@ -555,11 +562,11 @@ set_inode_used_alloc(xfs_agnumber_t agno, xfs_agino_t ino) } ino_tree_node_t * -set_inode_free_alloc(xfs_agnumber_t agno, xfs_agino_t ino) +set_inode_free_alloc(xfs_mount_t *mp, xfs_agnumber_t agno, xfs_agino_t ino) { ino_tree_node_t *ino_rec; - ino_rec = add_inode(agno, ino); + ino_rec = add_inode(mp, agno, ino); ASSERT(ino_rec != NULL); ASSERT(ino >= ino_rec->ino_startnum && diff --git a/repair/phase2.c b/repair/phase2.c index 1e9377e..51bd04e 100644 --- a/repair/phase2.c +++ b/repair/phase2.c @@ -145,7 +145,7 @@ phase2( /* * make sure we know about the root inode chunk */ - if ((ino_rec = find_inode_rec(0, mp->m_sb.sb_rootino)) == NULL) { + if ((ino_rec = find_inode_rec(mp, 0, mp->m_sb.sb_rootino)) == NULL) { ASSERT(mp->m_sb.sb_rbmino == mp->m_sb.sb_rootino + 1 && mp->m_sb.sb_rsumino == mp->m_sb.sb_rootino + 2); do_warn(_("root inode chunk not found\n")); @@ -153,7 +153,7 @@ phase2( /* * mark the first 3 used, the rest are free */ - ino_rec = set_inode_used_alloc(0, + ino_rec = set_inode_used_alloc(mp, 0, (xfs_agino_t) mp->m_sb.sb_rootino); set_inode_used(ino_rec, 1); set_inode_used(ino_rec, 2); diff --git a/repair/phase3.c b/repair/phase3.c index 32e855c..fea81f8 100644 --- a/repair/phase3.c +++ b/repair/phase3.c @@ -56,7 +56,7 @@ walk_unlinked_list(xfs_mount_t *mp, xfs_agnumber_t agno, xfs_agino_t start_ino) * inode. if so, put it on the uncertain inode list * and set block map appropriately. */ - if (find_inode_rec(agno, current_ino) == NULL) { + if (find_inode_rec(mp, agno, current_ino) == NULL) { add_aginode_uncertain(agno, current_ino, 1); agbno = XFS_AGINO_TO_AGBNO(mp, current_ino); diff --git a/repair/phase4.c b/repair/phase4.c index aaef1f9..374ed39 100644 --- a/repair/phase4.c +++ b/repair/phase4.c @@ -49,7 +49,7 @@ quotino_check(xfs_mount_t *mp) if (verify_inum(mp, mp->m_sb.sb_uquotino)) irec = NULL; else - irec = find_inode_rec( + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_uquotino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_uquotino)); @@ -65,7 +65,7 @@ quotino_check(xfs_mount_t *mp) if (verify_inum(mp, mp->m_sb.sb_gquotino)) irec = NULL; else - irec = find_inode_rec( + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_gquotino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_gquotino)); @@ -206,7 +206,7 @@ phase4(xfs_mount_t *mp) set_progress_msg(PROG_FMT_DUP_EXTENT, (__uint64_t) glob_agcount); - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)); /* diff --git a/repair/phase5.c b/repair/phase5.c index d6a0f6a..125ea01 100644 --- a/repair/phase5.c +++ b/repair/phase5.c @@ -1383,7 +1383,7 @@ keep_fsinos(xfs_mount_t *mp) ino_tree_node_t *irec; int i; - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)); for (i = 0; i < 3; i++) diff --git a/repair/phase6.c b/repair/phase6.c index d056063..ad6d16f 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -806,7 +806,7 @@ mk_root_dir(xfs_mount_t *mp) libxfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES|XFS_TRANS_SYNC); - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)); set_inode_isadir(irec, XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino) - irec->ino_startnum); @@ -897,7 +897,8 @@ mk_orphanage(xfs_mount_t *mp) * for .. in the new directory */ pip->i_d.di_nlink++; - add_inode_ref(find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), + add_inode_ref(find_inode_rec(mp, + XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)), 0); @@ -966,7 +967,7 @@ mv_orphanage( do_error(_("%d - couldn't iget disconnected inode\n"), err); if (isa_dir) { - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, orphanage_ino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, orphanage_ino), XFS_INO_TO_AGINO(mp, orphanage_ino)); if (irec) ino_offset = XFS_INO_TO_AGINO(mp, orphanage_ino) - @@ -1379,7 +1380,7 @@ lf_block_dir_entry_check(xfs_mount_t *mp, /* * ok, now handle the rest of the cases besides '.' and '..' */ - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, lino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino)); if (irec == NULL) { @@ -2044,7 +2045,7 @@ longform_dir2_entry_check_data( fname[dep->namelen] = '\0'; ASSERT(inum != NULLFSINO); - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, inum), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, inum), XFS_INO_TO_AGINO(mp, inum)); if (irec == NULL) { nbad++; @@ -2680,7 +2681,7 @@ shortform_dir_entry_check(xfs_mount_t *mp, ASSERT(no_modify || lino != NULLFSINO); ASSERT(no_modify || !verify_inum(mp, lino)); - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, lino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino)); if (irec == NULL) { do_warn(_("entry \"%s\" in shortform dir %llu " @@ -3004,7 +3005,7 @@ shortform_dir2_entry_check(xfs_mount_t *mp, continue; } - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, lino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino)); if (irec == NULL) { @@ -3493,7 +3494,7 @@ mark_standalone_inodes(xfs_mount_t *mp) ino_tree_node_t *irec; int offset; - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rbmino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rbmino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rbmino)); ASSERT(irec != NULL); @@ -3503,7 +3504,7 @@ mark_standalone_inodes(xfs_mount_t *mp) add_inode_reached(irec, offset); - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rsumino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rsumino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rsumino)); offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rsumino) - @@ -3516,7 +3517,7 @@ mark_standalone_inodes(xfs_mount_t *mp) if (fs_quotas) { if (mp->m_sb.sb_uquotino && mp->m_sb.sb_uquotino != NULLFSINO) { - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_uquotino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_uquotino)); offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_uquotino) @@ -3525,7 +3526,7 @@ mark_standalone_inodes(xfs_mount_t *mp) } if (mp->m_sb.sb_gquotino && mp->m_sb.sb_gquotino != NULLFSINO) { - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_gquotino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_gquotino)); offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_gquotino) @@ -3723,7 +3724,7 @@ _(" - resetting contents of realtime bitmap and summary inodes\n")); do_log(_(" - traversing filesystem ...\n")); - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)); /* diff --git a/repair/scan.c b/repair/scan.c index afed693..aeb31fc 100644 --- a/repair/scan.c +++ b/repair/scan.c @@ -810,7 +810,7 @@ _("inode chunk claims used block, inobt block - agno %d, bno %d, inopb %d\n"), /* * ensure only one avl entry per chunk */ - find_inode_rec_range(agno, ino, ino + XFS_INODES_PER_CHUNK, + find_inode_rec_range(mp, agno, ino, ino + XFS_INODES_PER_CHUNK, &first_rec, &last_rec); if (first_rec != NULL) { /* @@ -841,9 +841,9 @@ _("inode rec for ino %llu (%d/%d) overlaps existing rec (start %d/%d)\n"), if (!suspect) { if (XFS_INOBT_IS_FREE_DISK(rp, 0)) { nfree++; - ino_rec = set_inode_free_alloc(agno, ino); + ino_rec = set_inode_free_alloc(mp, agno, ino); } else { - ino_rec = set_inode_used_alloc(agno, ino); + ino_rec = set_inode_used_alloc(mp, agno, ino); } for (j = 1; j < XFS_INODES_PER_CHUNK; j++) { if (XFS_INOBT_IS_FREE_DISK(rp, j)) { -- 1.7.4.4 From achender@linux.vnet.ibm.com Mon Jun 27 13:16:06 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5RIG5gj131744 for ; Mon, 27 Jun 2011 13:16:06 -0500 X-ASG-Debug-ID: 1309198565-63f4035b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e37.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7198A13569D2 for ; Mon, 27 Jun 2011 11:16:05 -0700 (PDT) Received: from e37.co.us.ibm.com (e37.co.us.ibm.com [32.97.110.158]) by cuda.sgi.com with ESMTP id bIpS1U0PS0IZTihH for ; Mon, 27 Jun 2011 11:16:05 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay01.boulder.ibm.com (d03relay01.boulder.ibm.com [9.17.195.226]) by e37.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5RICxrZ025335 for ; Mon, 27 Jun 2011 12:12:59 -0600 Received: from d03av01.boulder.ibm.com (d03av01.boulder.ibm.com [9.17.195.167]) by d03relay01.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5RIFbg3167834 for ; Mon, 27 Jun 2011 12:15:38 -0600 Received: from d03av01.boulder.ibm.com (loopback [127.0.0.1]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5RIFaOa003271 for ; Mon, 27 Jun 2011 12:15:37 -0600 Received: from lc4eb0185863151.ibm.com (sig-9-65-20-193.mts.ibm.com [9.65.20.193]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5RIFZP6002535; Mon, 27 Jun 2011 12:15:36 -0600 Message-ID: <4E08C8BE.7090500@linux.vnet.ibm.com> Date: Mon, 27 Jun 2011 11:15:26 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/4] xfstests: fix fsx fpunch test to actually test for fpunch Subject: Re: [PATCH 1/4] xfstests: fix fsx fpunch test to actually test for fpunch References: <1309153722-1231-1-git-send-email-david@fromorbit.com> <1309153722-1231-2-git-send-email-david@fromorbit.com> In-Reply-To: <1309153722-1231-2-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e37.co.us.ibm.com[32.97.110.158] X-Barracuda-Start-Time: 1309198565 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 06/26/2011 10:48 PM, Dave Chinner wrote: > From: Dave Chinner > > The operation flags parameter to fallocate is the second parameter, > not the last. Hence the fpunch test is actually testing for falloc > support, not fpunch. Somebody needs a brown paper bag. > > Also, add a ftruncate call whenthe fpunch succeeds just in case the > file was not already zero sized. Failing to ensure we start with a > zero length file can cause read ops to fail size checks if they > occur before the file is written to be the main test loop. > > While there, observe the quiet flag the same as the falloc test > does and have them both emit the warning at the same error level. Hi there, Sorry about that, I think this bug was mine. I have tried your patch set on my box, and it appears to run with out problems for me. Thx! Allison Henderson From sandeen@sandeen.net Mon Jun 27 15:45:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_92 autolearn=no version=3.4.0-r929098 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 p5RKjMEU140873 for ; Mon, 27 Jun 2011 15:45:22 -0500 X-ASG-Debug-ID: 1309207520-4e3902ff0000-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 149441B9C725 for ; Mon, 27 Jun 2011 13:45:20 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id EVn6cx1KMj3YAWLK for ; Mon, 27 Jun 2011 13:45:20 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id BD2C84964600; Mon, 27 Jun 2011 15:45:19 -0500 (CDT) Message-ID: <4E08EBDF.40904@sandeen.net> Date: Mon, 27 Jun 2011 15:45:19 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/4] xfstests: fix fsx fpunch test to actually test for fpunch Subject: Re: [PATCH 1/4] xfstests: fix fsx fpunch test to actually test for fpunch References: <1309153722-1231-1-git-send-email-david@fromorbit.com> <1309153722-1231-2-git-send-email-david@fromorbit.com> In-Reply-To: <1309153722-1231-2-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1309207521 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0003 1.0000 -2.0194 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67305 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 6/27/11 12:48 AM, Dave Chinner wrote: > From: Dave Chinner > > The operation flags parameter to fallocate is the second parameter, > not the last. Hence the fpunch test is actually testing for falloc > support, not fpunch. Somebody needs a brown paper bag. > > Also, add a ftruncate call whenthe fpunch succeeds just in case the > file was not already zero sized. Failing to ensure we start with a > zero length file can cause read ops to fail size checks if they > occur before the file is written to be the main test loop. > > While there, observe the quiet flag the same as the falloc test > does and have them both emit the warning at the same error level. > > Signed-off-by: Dave Chinner Reviewed-by: Eric Sandeen > --- > ltp/fsx.c | 14 +++++++------- > 1 files changed, 7 insertions(+), 7 deletions(-) > > diff --git a/ltp/fsx.c b/ltp/fsx.c > index 0683853..a37e223 100644 > --- a/ltp/fsx.c > +++ b/ltp/fsx.c > @@ -1243,7 +1243,7 @@ test_fallocate() > if (!lite && fallocate_calls) { > if (fallocate(fd, 0, 0, 1) && errno == EOPNOTSUPP) { > if(!quiet) > - prt("fsx: main: filesystem does not support fallocate, disabling\n"); > + warn("main: filesystem does not support fallocate, disabling\n"); > fallocate_calls = 0; > } else { > ftruncate(fd, 0); > @@ -1260,13 +1260,13 @@ test_punch_hole() > { > #ifdef FALLOC_FL_PUNCH_HOLE > if (!lite && punch_hole_calls) { > - if (fallocate(fd, 0, 0, > - FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE) && > - errno == EOPNOTSUPP) { > - > - warn("main: filesystem does not support fallocate punch hole, disabling"); > + if (fallocate(fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, > + 0, 1) && errno == EOPNOTSUPP) { > + if(!quiet) > + warn("main: filesystem does not support fallocate punch hole, disabling"); > punch_hole_calls = 0; > - } > + } else > + ftruncate(fd, 0); > } > #else /* ! PUNCH HOLE */ > punch_hole_calls = 0; From stan@hardwarefreak.com Mon Jun 27 15:55:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5RKtSje142498 for ; Mon, 27 Jun 2011 15:55:28 -0500 X-ASG-Debug-ID: 1309208127-1f7f02e60000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from greer.hardwarefreak.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 107DE16727FB for ; Mon, 27 Jun 2011 13:55:27 -0700 (PDT) Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id cZDJQCfbNmFqr9Tf for ; Mon, 27 Jun 2011 13:55:27 -0700 (PDT) Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 275446C09B; Mon, 27 Jun 2011 15:55:27 -0500 (CDT) Message-ID: <4E08EE3E.1090604@hardwarefreak.com> Date: Mon, 27 Jun 2011 15:55:26 -0500 From: Stan Hoeppner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11 MIME-Version: 1.0 To: Paul Anderson CC: Eric Sandeen , linux-xfs@oss.sgi.com, Marcus Pereira X-ASG-Orig-Subj: Re: mkfs.xfs error creating large agcount an raid Subject: Re: mkfs.xfs error creating large agcount an raid References: <4E063BC6.9000801@task.com.br> <4E0694CC.8050003@hardwarefreak.com> <4E06C967.2060107@task.com.br> <20110626235959.GC32466@dastard> <4E07FA07.4050907@hardwarefreak.com> <4E0803AA.20809@task.com.br> <4E08456F.1090503@hardwarefreak.com> <4E089D4E.1060503@sandeen.net> In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1309208128 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67306 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On 6/27/2011 10:27 AM, Paul Anderson wrote: > There is nothing in the man page I see indicating what is good or bad > regarding allocation groups - either document it there or warn in the > software. If allocation algorithms are linear with respect to > allocation groups, the something like this should be stated in the man > pages. It is. From the 2nd paragraph of 'man 5 xfs': ...The data section is divided into a number of allocation groups. The number and size of the allocation groups are chosen by mkfs.xfs(8) so that there is normally a small number of equal-sized groups. The number of allocation groups controls the amount of parallelism available in file and block allocation. It should be increased from the default if there is sufficient memory and a lot of allocation activity. The number of allocation groups should not be set very high, since this can cause large amounts of CPU time to be used by the filesystem, especially when the filesystem is nearly full. More allocation groups are added (of the original size) when xfs_growfs(8) is run. Maybe some of this information could/should be moved to the agcount section of 'man mkfs.xfs'. I'll concede that "should not be set very high" is subjective for novice XFS users. To Marcus 20,000 may not be "very high". :) -- Stan From sandeen@sandeen.net Mon Jun 27 16:16:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_14, J_CHICKENPOX_66 autolearn=no version=3.4.0-r929098 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 p5RLGMTG147009 for ; Mon, 27 Jun 2011 16:16:23 -0500 X-ASG-Debug-ID: 1309209381-3cfe03320000-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 C689933437 for ; Mon, 27 Jun 2011 14:16:21 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id Fv5GwrBgm33ZUn02 for ; Mon, 27 Jun 2011 14:16:21 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id DAD204964600; Mon, 27 Jun 2011 16:16:20 -0500 (CDT) Message-ID: <4E08F324.5040703@sandeen.net> Date: Mon, 27 Jun 2011 16:16:20 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/4] xfstests: fsx fallocate support is b0rked Subject: Re: [PATCH 2/4] xfstests: fsx fallocate support is b0rked References: <1309153722-1231-1-git-send-email-david@fromorbit.com> <1309153722-1231-3-git-send-email-david@fromorbit.com> In-Reply-To: <1309153722-1231-3-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1309209381 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0014 1.0000 -2.0116 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -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=BSF_RULE7568M, PR0N_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67307 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.20 PR0N_SUBJECT Subject has letters around special characters (pr0n) 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 6/27/11 12:48 AM, Dave Chinner wrote: > From: Dave Chinner > > The recent fallocate/fpunch additions to fsx have not actually be > executing fallocate/fpunch operations. The logic to select what > operation to run is broken in such a way that fsx has been executing > mapped writes and truncates instead of fallocate and fpunch > operations. > > Remove all the (b0rken) smarty-pants selection logic from the test() I hope I only extended that smarty-pants logic and didn't invent it. I suppose maybe I broke it first though, damn. > function. Replace it with a clearly defined set of operations for > each mode and use understandable fallback logic when various > operation types have been disabled. Then use a simple switch > statement to execute each of the different operations, removing the > tortured nesting of if/else statements that only serve to obfuscate > the code. > > NAs a result, fsx uses fallocate/fpunch appropriately during > operations, and uses/disableÑ• the operations as defined on the > command line correctly. Hm we're back in the fsx maintenance business I guess. Would it be worth doing defines or an enum for the ops/cases, to make it a little more readable? Otherwise looks much better. -Eric > Signed-off-by: Dave Chinner > --- > ltp/fsx.c | 162 +++++++++++++++++++++++++++++++++++++++---------------------- > 1 files changed, 103 insertions(+), 59 deletions(-) > > diff --git a/ltp/fsx.c b/ltp/fsx.c > index a37e223..66daefe 100644 > --- a/ltp/fsx.c > +++ b/ltp/fsx.c > @@ -955,18 +955,42 @@ docloseopen(void) > } > } > > +#define TRIM_OFF_LEN(off, len, size) \ > +do { \ > + if (file_size) \ > + offset %= size; \ > + else \ > + offset = 0; \ > + if (offset + len > size) \ > + len = size - offset; \ > +} while (0) > > +/* > + * The operation matrix is complex due to conditional variables. > + * We calculate how many different operations we can use, then > + * map them appropriately according to how many options are enabled. > + * The mapping is: > + * > + * lite !lite > + * READ: 0 0 > + * WRITE: 1 1 > + * MAPREAD: 2 2 > + * MAPWRITE: 3 3 > + * TRUNCATE: - 4 > + * FALLOCATE: - 5 > + * PUNCH HOLE: - 6 > + * > + * When mapped read/writes are disabled, they are simply converted to normal > + * reads and writes. When fallocate/fpunch calls are disabled, they are > + * converted to OP_SKIPPED. > + */ > void > test(void) > { > unsigned long offset; > unsigned long size = maxoplen; > unsigned long rv = random(); > - unsigned long op = rv % (3 + !lite + mapped_writes + fallocate_calls + punch_hole_calls); > - /* turn off the map read if necessary */ > - > - if (op == 2 && !mapped_reads) > - op = 0; > + unsigned long op; > > if (simulatedopcount > 0 && testcalls == simulatedopcount) > writefileimage(); > @@ -982,62 +1006,82 @@ test(void) > if (!quiet && testcalls < simulatedopcount && testcalls % 100000 == 0) > prt("%lu...\n", testcalls); > > - /* > - * lite !lite > - * READ: op = 0 0 > - * WRITE: op = 1 1 > - * MAPREAD: op = 2 2 > - * TRUNCATE: op = - 3 > - * MAPWRITE: op = 3 4 > - * FALLOCATE: op = - 5 > - * PUNCH HOLE: op = - 6 > - */ > - if (lite ? 0 : op == 3 && (style & 1) == 0) /* vanilla truncate? */ > - dotruncate(random() % maxfilelen); > - else { > - if (randomoplen) > - size = random() % (maxoplen+1); > - > - if (lite ? 0 : op == 3) { > - /* truncate */ > - dotruncate(size); > - } else { > - offset = random(); > - if (op == 5) { > - /* fallocate */ > - offset %= maxfilelen; > - if (offset + size > maxfilelen) > - size = maxfilelen - offset; > - do_preallocate(offset, size); > - } else if (op == 6) { > - offset %= maxfilelen; > - if (offset + size > maxfilelen) > - size = maxfilelen - offset; > - do_punch_hole(offset, size); > - } else if (op == 1 || op == (lite ? 3 : 4)) { > - /* write / mapwrite */ > - offset %= maxfilelen; > - if (offset + size > maxfilelen) > - size = maxfilelen - offset; > - if (op != 1) > - domapwrite(offset, size); > - else > - dowrite(offset, size); > - } else { > - /* read / mapread */ > - if (file_size) > - offset %= file_size; > - else > - offset = 0; > - if (offset + size > file_size) > - size = file_size - offset; > - if (op != 0) > - domapread(offset, size); > - else > - doread(offset, size); > - } > + offset = random(); > + if (randomoplen) > + size = random() % (maxoplen + 1); > + > + /* calculate appropriate op to run */ > + if (lite) > + op = rv % 4; > + else > + op = rv % 7; > + > + switch (op) { > + case 2: > + if (!mapped_reads) > + op = 0; > + break; > + case 3: > + if (!mapped_writes) > + op = 1; > + break; > + case 5: > + if (!fallocate_calls) { > + log4(OP_SKIPPED, OP_FALLOCATE, offset, size); > + goto out; > + } > + break; > + case 6: > + if (!punch_hole_calls) { > + log4(OP_SKIPPED, OP_PUNCH_HOLE, offset, size); > + goto out; > } > + break; > } > + > + switch (op) { > + case 0: /* read */ > + TRIM_OFF_LEN(offset, size, file_size); > + doread(offset, size); > + break; > + > + case 1: /* write */ > + TRIM_OFF_LEN(offset, size, maxfilelen); > + dowrite(offset, size); > + break; > + > + case 2: /* mapread */ > + TRIM_OFF_LEN(offset, size, maxfilelen); > + domapread(offset, size); > + break; > + > + case 3: /* mapwrite */ > + TRIM_OFF_LEN(offset, size, maxfilelen); > + domapwrite(offset, size); > + break; > + > + case 4: /* truncate */ > + if (!style) > + size = random() % maxfilelen; > + dotruncate(size); > + break; > + > + case 5: /* fallocate */ > + TRIM_OFF_LEN(offset, size, maxfilelen); > + do_preallocate(offset, size); > + break; > + > + case 6: /* punch */ > + TRIM_OFF_LEN(offset, size, maxfilelen); > + do_punch_hole(offset, size); > + break; > + default: > + prterr("test: unknown operation"); > + report_failure(42); > + break; > + } > + > +out: > if (sizechecks && testcalls > simulatedopcount) > check_size(); > if (closeopen) From sandeen@sandeen.net Mon Jun 27 16:32:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5RLWgiY148512 for ; Mon, 27 Jun 2011 16:32:43 -0500 X-ASG-Debug-ID: 1309210361-428b039e0000-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 1A8D4308E8 for ; Mon, 27 Jun 2011 14:32:41 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id XAbBREWGGKzRRZxP for ; Mon, 27 Jun 2011 14:32:41 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 30B4C4964600; Mon, 27 Jun 2011 16:32:41 -0500 (CDT) Message-ID: <4E08F6F8.7090705@sandeen.net> Date: Mon, 27 Jun 2011 16:32:40 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/4] xfstests: fix brain-o in fallocate log dump Subject: Re: [PATCH 3/4] xfstests: fix brain-o in fallocate log dump References: <1309153722-1231-1-git-send-email-david@fromorbit.com> <1309153722-1231-4-git-send-email-david@fromorbit.com> In-Reply-To: <1309153722-1231-4-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1309210362 X-Barracuda-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.2.67309 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 6/27/11 12:48 AM, Dave Chinner wrote: > From: Dave Chinner > > fsx segvs when dumping fallocate log entries. Fix magic string > array index parameters to be zero based rather than one based. Oh geez. :( > While touching log string related stuff, make the format consistent > with read and write operations so the log dump is easier to look at > with the human eye. > > Signed-off-by: Dave Chinner Reviewed-by: Eric Sandeen > --- > ltp/fsx.c | 28 +++++++++++++++------------- > 1 files changed, 15 insertions(+), 13 deletions(-) > > diff --git a/ltp/fsx.c b/ltp/fsx.c > index 66daefe..38d5278 100644 > --- a/ltp/fsx.c > +++ b/ltp/fsx.c > @@ -223,14 +223,14 @@ logdump(void) > int opnum; > > opnum = i+1 + (logcount/LOGSIZE)*LOGSIZE; > - prt("%d(%d mod 256): ", opnum, opnum%256); > + prt("%d(%3d mod 256): ", opnum, opnum%256); > lp = &oplog[i]; > if ((closeopen = lp->operation < 0)) > lp->operation = ~ lp->operation; > > switch (lp->operation) { > case OP_MAPREAD: > - prt("MAPREAD\t0x%x thru 0x%x\t(0x%x bytes)", > + prt("MAPREAD 0x%x thru 0x%x\t(0x%x bytes)", > lp->args[0], lp->args[0] + lp->args[1] - 1, > lp->args[1]); > if (badoff >= lp->args[0] && badoff < > @@ -246,7 +246,7 @@ logdump(void) > prt("\t******WWWW"); > break; > case OP_READ: > - prt("READ\t0x%x thru 0x%x\t(0x%x bytes)", > + prt("READ 0x%x thru 0x%x\t(0x%x bytes)", > lp->args[0], lp->args[0] + lp->args[1] - 1, > lp->args[1]); > if (badoff >= lp->args[0] && > @@ -254,7 +254,7 @@ logdump(void) > prt("\t***RRRR***"); > break; > case OP_WRITE: > - prt("WRITE\t0x%x thru 0x%x\t(0x%x bytes)", > + prt("WRITE 0x%x thru 0x%x\t(0x%x bytes)", > lp->args[0], lp->args[0] + lp->args[1] - 1, > lp->args[1]); > if (lp->args[0] > lp->args[2]) > @@ -275,14 +275,15 @@ logdump(void) > 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]); > + prt("FALLOC 0x%x thru 0x%x\t(0x%x bytes) %s", > + lp->args[0], lp->args[0] + lp->args[1], > + lp->args[1], falloc_type[lp->args[2]]); > if (badoff >= lp->args[0] && > badoff < lp->args[0] + lp->args[1]) > prt("\t******FFFF"); > break; > case OP_PUNCH_HOLE: > - prt("PUNCH HOLE\t0x%x thru 0x%x\t(0x%x bytes)", > + prt("PUNCH 0x%x thru 0x%x\t(0x%x bytes)", > lp->args[0], lp->args[0] + lp->args[1] - 1, > lp->args[1]); > if (badoff >= lp->args[0] && badoff < > @@ -877,12 +878,12 @@ do_preallocate(unsigned offset, unsigned length) > } > > /* > - * last arg: > - * 1: allocate past EOF > - * 2: extending prealloc > - * 3: interior prealloc > + * last arg matches fallocate string array index in logdump: > + * 0: allocate past EOF > + * 1: extending prealloc > + * 2: interior prealloc > */ > - log4(OP_FALLOCATE, offset, length, (end_offset > file_size) ? (keep_size ? 1 : 2) : 3); > + log4(OP_FALLOCATE, offset, length, (end_offset > file_size) ? (keep_size ? 0 : 1) : 2); > > if (end_offset > file_size) { > memset(good_buf + file_size, '\0', end_offset - file_size); > @@ -895,7 +896,8 @@ do_preallocate(unsigned offset, unsigned length) > 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); > + prt("%lu falloc\tfrom 0x%x to 0x%x (0x%x bytes)\n", testcalls, > + offset, offset + length, 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("do_preallocate: fallocate"); From sandeen@sandeen.net Mon Jun 27 16:38:15 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5RLcFZd149520 for ; Mon, 27 Jun 2011 16:38:15 -0500 X-ASG-Debug-ID: 1309210694-52bb02dd0000-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 8F83A333B7 for ; Mon, 27 Jun 2011 14:38:14 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id CaaOEHTHc9b1nBb9 for ; Mon, 27 Jun 2011 14:38:14 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id C61424964600; Mon, 27 Jun 2011 16:38:13 -0500 (CDT) Message-ID: <4E08F845.3020804@sandeen.net> Date: Mon, 27 Jun 2011 16:38:13 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 4/4] xfstests: add mapped write fsx operations to 091 Subject: Re: [PATCH 4/4] xfstests: add mapped write fsx operations to 091 References: <1309153722-1231-1-git-send-email-david@fromorbit.com> <1309153722-1231-5-git-send-email-david@fromorbit.com> In-Reply-To: <1309153722-1231-5-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1309210694 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67309 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 6/27/11 12:48 AM, Dave Chinner wrote: > From: Dave Chinner > > The recent busted fsx updates caused fsx to execute fsx with direct > IO and mmapped reads and writes on an XFS filesystem. The result > uncovered a direct-IO write vs mmap read bug to do with EOF > sub-block zeroing on the direct IO write. > > Hence whiel we do not recommend that pepole mix DIO with mmap on the > same file, we should at least have tests that exercise it as they > often show up other problems like this. > > > Signed-off-by: Dave Chinner Reviewed-by: Eric Sandeen > --- > 091 | 3 +++ > 091.out | 2 ++ > 2 files changed, 5 insertions(+), 0 deletions(-) > > diff --git a/091 b/091 > index a13d979..11b599e 100755 > --- a/091 > +++ b/091 > @@ -88,6 +88,9 @@ kernel=`uname -r | sed -e 's/\(2\..\).*/\1/'` > #run_fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t PSIZE -w PSIZE -Z -W > run_fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -W > > + run_fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z > + run_fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z > + > # Commented out calls above are less likely to pick up issues, so > # save time by commenting them out (leave 'em for manual testing). > > diff --git a/091.out b/091.out > index 31bd25d..27ed1e3 100644 > --- a/091.out > +++ b/091.out > @@ -5,3 +5,5 @@ fsx -N 10000 -o 32768 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W > fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W > fsx -N 10000 -o 32768 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W > fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -W > +fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z > +fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z From david@fromorbit.com Mon Jun 27 18:07:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_14 autolearn=no version=3.4.0-r929098 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 p5RN7iDA153765 for ; Mon, 27 Jun 2011 18:07:44 -0500 X-ASG-Debug-ID: 1309216061-2793016a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2384B1E52E37 for ; Mon, 27 Jun 2011 16:07:42 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id qs0q28M7uuDFwZ47 for ; Mon, 27 Jun 2011 16:07:42 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AusCAJYLCU55LChDgWdsb2JhbABShEmibRUBARYmJYh0ry+RGg6BHYN5gQwEojA Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail07.adl2.internode.on.net with ESMTP; 28 Jun 2011 08:37:41 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QbKu3-0005vo-7E; Tue, 28 Jun 2011 09:07:39 +1000 Date: Tue, 28 Jun 2011 09:07:39 +1000 From: Dave Chinner To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/4] xfstests: fsx fallocate support is b0rked Subject: Re: [PATCH 2/4] xfstests: fsx fallocate support is b0rked Message-ID: <20110627230739.GG32466@dastard> References: <1309153722-1231-1-git-send-email-david@fromorbit.com> <1309153722-1231-3-git-send-email-david@fromorbit.com> <4E08F324.5040703@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <4E08F324.5040703@sandeen.net> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1309216063 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1929 1.0000 -0.8655 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.17 X-Barracuda-Spam-Status: No, SCORE=-0.17 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, PR0N_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67315 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.20 PR0N_SUBJECT Subject has letters around special characters (pr0n) 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 Mon, Jun 27, 2011 at 04:16:20PM -0500, Eric Sandeen wrote: > On 6/27/11 12:48 AM, Dave Chinner wrote: > > From: Dave Chinner > > > > The recent fallocate/fpunch additions to fsx have not actually be > > executing fallocate/fpunch operations. The logic to select what > > operation to run is broken in such a way that fsx has been executing > > mapped writes and truncates instead of fallocate and fpunch > > operations. > > > > Remove all the (b0rken) smarty-pants selection logic from the test() > > I hope I only extended that smarty-pants logic and didn't invent it. > I suppose maybe I broke it first though, damn. It was convoluted before the fallocate code was added. I can see why it was easy to break.... > > function. Replace it with a clearly defined set of operations for > > each mode and use understandable fallback logic when various > > operation types have been disabled. Then use a simple switch > > statement to execute each of the different operations, removing the > > tortured nesting of if/else statements that only serve to obfuscate > > the code. > > > > NAs a result, fsx uses fallocate/fpunch appropriately during > > operations, and uses/disableÑ• the operations as defined on the > > command line correctly. > > Hm we're back in the fsx maintenance business I guess. As soon as we start modifying it... > Would it be worth doing defines or an enum for the ops/cases, to make it > a little more readable? I think better will be to redefine the OP_* numbers to match this generation technique so we don't have two different sets of op numbers. I'll do this and post a new version. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Jun 27 20:23:05 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 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 p5S1N4FZ167898 for ; Mon, 27 Jun 2011 20:23:05 -0500 X-ASG-Debug-ID: 1309224180-092c02b40000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2912933DA5 for ; Mon, 27 Jun 2011 18:23:01 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id XysxahzwpC5Ba2xz for ; Mon, 27 Jun 2011 18:23:01 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AusCAD4rCU55LChDgWdsb2JhbABSEKcoFQEBFiYliHTAdg6GIgShZ0k Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail07.adl2.internode.on.net with ESMTP; 28 Jun 2011 10:52:59 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QbN0z-00068K-V1; Tue, 28 Jun 2011 11:22:57 +1000 Date: Tue, 28 Jun 2011 11:22:57 +1000 From: Dave Chinner To: Paul Anderson Cc: Eric Sandeen , linux-xfs@oss.sgi.com, Marcus Pereira , Stan Hoeppner X-ASG-Orig-Subj: Re: mkfs.xfs error creating large agcount an raid Subject: Re: mkfs.xfs error creating large agcount an raid Message-ID: <20110628012257.GH32466@dastard> References: <4E063BC6.9000801@task.com.br> <4E0694CC.8050003@hardwarefreak.com> <4E06C967.2060107@task.com.br> <20110626235959.GC32466@dastard> <4E07FA07.4050907@hardwarefreak.com> <4E0803AA.20809@task.com.br> <4E08456F.1090503@hardwarefreak.com> <4E089D4E.1060503@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1309224183 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4861 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.2.67325 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, Jun 27, 2011 at 11:27:00AM -0400, Paul Anderson wrote: > On Mon, Jun 27, 2011 at 11:10 AM, Eric Sandeen wrote: > > On 6/27/11 8:04 AM, Paul Anderson wrote: > >> One thing this thread indicates is the need for a warning in mkfs.xfs > >> - according to several developers, there is, I think, linear increase > >> in allocation time to number of allocation groups. > >> > >> It would be helpful for the end user to simply issue a warning stating > >> this when the AG count seems high with a brief explanation as to why > >> it seems high.  I would allow it, but print the warning.  Even a > >> simple linear check like agroups>500 should suffice for "a while". > > > > I disagree. > > > > There are all sorts of ways a user can shoot themselves in the foot with > > unix commands.  Detecting and warning about all of them is a fool's errand. > > Clearly a philosophical difference. > > In managing complex software, it is far better for users if the > software itself can simply report why something is a problem, without > resorting to expecting users to read source code or ask developers > why. I don't expect users to read code. We have documentation, we expect users to read it first and have some understanding of how stuff works. If you don't understand it, then I expect that users will ask questions on the mailing list. That's -exactly- how the OSS world works and one of it's great strengths - if you don't understand how something works you can ask the developers directly! You seem to be indicating that the XFS developers should be handing everything to users on a silver platter so they don't have to think about anything. i.e. that they need *no prior knowledge* to use XFS effectively and everything should just work. Welcome to the real world, buddy. XFS is aimed at high-end, large-scale, high-performance, high-reliability, 24x7 production workloads. Any user who ticks even one of those boxes tends to have at least some knowledge of their storage and filesystems. If they don't have the necessary knowledge, they generally have a process via which to evaluate new technologies for their environment. If they have neither, then they aren't qualified for the job they've been asked to do..... Hence we assume that users - at minimum - have read the various man pages and some of the user/admin documentation on xfs.org before starting out. Most of these people tend to heed the "use the defaults" recommendations, and we typically never hear from them because Stuff Just Works The Way It Should. In this particular case, the user had obviously read some of the documentation, but was applying scalability concepts inappropriately for the problem he was trying to solve. That is not a bad thing - it happens all the time - and asking questions is the quickest and easiest way to understand why something didn't work as expected. e.g. Just look at Stan's responses about reconfiguring the entire storage stack to be more optimal for the specific workload the user was running. The result of this thread is that the user had a problem, and has come away with a greatly improved storage configuration from top to bottom, along with a better understanding of how XFS works and a better idea of the process needed to evaluate the benefit of changes. In the end, that's a user who is much more likely to be happy with XFS, and a user that knows he'll get good support from the community so is more likely to report problems in future. That's a win-win situation as far as I'm concerned, and it helps keeps a high signal-to-noise ratio on the list. > There is nothing in the man page I see indicating what is good or bad > regarding allocation groups - either document it there or warn in the > software. If allocation algorithms are linear with respect to > allocation groups, the something like this should be stated in the man > pages. It is, in this man page: $ man 5 xfs xfs(5) NAME xfs - layout of the XFS filesystem ..... It warns that too many AGs is bad. So really what you are complaining about is that it doesn't define "too many", right? Well, IMO, changing a config value by more than an order of magnitude should ring alarm bells, let alone a change of 3-5 orders of magnitude. i.e. When your default is 4 ("small"), then 400 is large and 4000 is clearly "very high". That's common sense, yes? However, there may very well be a use case for having 4000 AGs in a small filesystem - just because I haven't seen one doesn't mean it doesn't exist, and therefore the capability to do this remains. IOWs, we cater for people that need to do crazy (good) things, but we also rely on people having the knoweldge and common sense to determine whether they really should be doing something crazy or not... > Doing neither leads to frustrated end users. If you answer is "use > the defaults" then explain why and which parameters is applies to > (again in the documentation). As a developer, I always take the time to explain why something is bad before pointing to the "use the defaults" FAQ entry. I do that to help the education of everyone on the list that is reading, and also to get the "don't do this" reason into google.... We've been doing this often enough now that often it is the long term users that are making such responses and pointing out why something is bad, not the developers. They've learnt enough from us through the same process, and now they are helping educate the new users in turn. This is also a good feedback loop, because when someone else explains the problems in their own words, I get to see how well they understood the previous explainations. As such I'll often let such threads run until I see some small misunderstanding in an explanation - at that point I'll jump in to help these expert-users improve their knowledge further. Users with in-depth knowledge of the systems are a very valuable resource - I often learn from their experience solving problems just like they learn from mine. That's another big win-win situation from my POV. ;) > Also, it is not hard to do, and would have in this instance saved > developer time. Since the issue has come up a few times the last > month or so, it seems worthwhile to deal with. We cannot force people to read the documentation before they twiddle knobs. While I fully agree that user friendly interfaces are needed to make storage administration easy for the technologically challenged, I think that mkfs is not the place for such refinement. User friendly storage tools need to sit above mkfs, fsck, growfs, lvm, md, dm-crypt, etc and hide *all* the deep, dark, nasty corners of the storage stack from view. This is something the Sun engineers got right when designing the ZFS UI. IOWs, if such a UI is well designed, then it can drive mkfs in different directions according to the user's needs without the user needing to know a single thing about how the filesystem actually works. Hell, done right the user won't even know (or need to care) what filesystem they are using.... > It's sort of like the story about giving a person a fish versus > teaching them how to fish. "Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime." - Chinese Proverb. If you want to use that analogy, then consider that it takes months to teach someone how to "fish XFS" properly. So they will have starved before they can catch enough fish to be self-sufficient. Yes, you can learn the basics of how to "fish XFS" from the documentation, but it's not enough by itself to be a self-sufficient expert.... If you think about what I've written above, you'll see that we do indeed have a (long) process for teaching people how to "fish XFS". You'll also see that asking questions or even doing silly things that result in discussion threads like this is a core part of that education process... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Jun 27 20:28:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5S1Sgcs168253 for ; Mon, 27 Jun 2011 20:28:42 -0500 X-ASG-Debug-ID: 1309224520-5d3300840000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2AFC7E316AE for ; Mon, 27 Jun 2011 18:28:40 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id NgD8BrxuWoB65sVY for ; Mon, 27 Jun 2011 18:28:40 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuoCAD4rCU55LChDgWdsb2JhbABSpzgVAQEWJiWIdMB2DoYiBJoJiCc Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail07.adl2.internode.on.net with ESMTP; 28 Jun 2011 10:58:39 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QbN6U-00069I-FE; Tue, 28 Jun 2011 11:28:38 +1000 Date: Tue, 28 Jun 2011 11:28:38 +1000 From: Dave Chinner To: Lukas Czerner Cc: xfs@oss.sgi.com, aelder@sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs_repair: Check if agno is inside the filesystem Subject: Re: [PATCH] xfs_repair: Check if agno is inside the filesystem Message-ID: <20110628012838.GI32466@dastard> References: <1309193610-17078-1-git-send-email-lczerner@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1309193610-17078-1-git-send-email-lczerner@redhat.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1309224522 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0695 1.0000 -1.5783 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.58 X-Barracuda-Spam-Status: No, SCORE=-1.58 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67324 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, Jun 27, 2011 at 06:53:30PM +0200, Lukas Czerner wrote: > When getting an inode tree pointer from an array inode_tree_ptrs, we > should check if agno, which is used as a pointer to the array, lives > within the file system, because if it is not, we can end up touching > uninitialized memory. How do you get an agno outside the bounds of the filesystem? > This commit fixes it by passing xfs_mount_t to affected functions and > checking if agno really is inside the file system. We're slowly removing typedefs as we change code. So probably better to use struct xfs_mount for all the places where you add an xfs_mount_t. Otherwise seems fine. Cheers, Dave. -- Dave Chinner david@fromorbit.com From achender@linux.vnet.ibm.com Mon Jun 27 23:25:10 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p5S4P9SE177357 for ; Mon, 27 Jun 2011 23:25:10 -0500 X-ASG-Debug-ID: 1309235109-7db002b00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e4.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 66DFE32B74 for ; Mon, 27 Jun 2011 21:25:09 -0700 (PDT) Received: from e4.ny.us.ibm.com (e4.ny.us.ibm.com [32.97.182.144]) by cuda.sgi.com with ESMTP id TK4Q9wrr1w4ArHuK for ; Mon, 27 Jun 2011 21:25:09 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay03.pok.ibm.com (d01relay03.pok.ibm.com [9.56.227.235]) by e4.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5S43JWl010918 for ; Tue, 28 Jun 2011 00:03:19 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay03.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5S4P8hr164370 for ; Tue, 28 Jun 2011 00:25:08 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5S4P8b4014787 for ; Tue, 28 Jun 2011 00:25:08 -0400 Received: from elm3c80.beaverton.ibm.com (elm3c80.beaverton.ibm.com [9.47.69.80]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5S4P6Bv014703; Tue, 28 Jun 2011 00:25:07 -0400 From: Allison Henderson To: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org Cc: Allison Henderson X-ASG-Orig-Subj: [PATCH 1/3 v2] XFS TESTS: Fix 252 Failure: Relax fiemap filter Subject: [PATCH 1/3 v2] XFS TESTS: Fix 252 Failure: Relax fiemap filter Date: Mon, 27 Jun 2011 21:27:25 -0700 Message-Id: <1309235247-32650-2-git-send-email-achender@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1309235247-32650-1-git-send-email-achender@linux.vnet.ibm.com> References: <1309235247-32650-1-git-send-email-achender@linux.vnet.ibm.com> X-Barracuda-Connect: e4.ny.us.ibm.com[32.97.182.144] X-Barracuda-Start-Time: 1309235109 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 current test 252 tests punch hole by collecting fiemap information on the test file. However this does not work for all file systems since not all file systems layout their extents in the same way. This patch corrects this by adding a -h flag to the fiemap filter that ignores the extent types in the fiemaps. The result is that the fiemap contains only "extent" or "hole", instead of "unwritten", "data" or "hole". A checksum has also been added to each test to help ensure the file contents are correct. Signed-off-by: Allison Henderson --- v1 -> v2 Moved new golden output for 252 into a seperate patch to help make the set easier to read :100755 100755 5efa243... 1289094... M 252 :100644 100644 ddf63b0... d3c89eb... M common.punch 252 | 8 ++++---- common.punch | 38 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/252 b/252 index 5efa243..1289094 100755 --- a/252 +++ b/252 @@ -53,15 +53,15 @@ _require_xfs_io_fiemap testfile=$TEST_DIR/252.$$ # Standard punch hole tests -_test_generic_punch falloc fpunch fpunch fiemap _filter_fiemap $testfile -F +_test_generic_punch falloc fpunch fpunch fiemap "_filter_fiemap -h" $testfile -F # Delayed allocation punch hole tests -_test_generic_punch -d falloc fpunch fpunch fiemap _filter_fiemap $testfile -F +_test_generic_punch -d falloc fpunch fpunch fiemap "_filter_fiemap -h" $testfile -F # Multi hole punch tests -_test_generic_punch -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F +_test_generic_punch -k falloc fpunch fpunch fiemap "_filter_fiemap -h" $testfile -F # Delayed allocation multi punch hole tests -_test_generic_punch -d -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F +_test_generic_punch -d -k falloc fpunch fpunch fiemap "_filter_fiemap -h" $testfile -F status=0 ; exit diff --git a/common.punch b/common.punch index ddf63b0..d3c89eb 100644 --- a/common.punch +++ b/common.punch @@ -203,17 +203,34 @@ _coalesce_extents() _filter_fiemap() { + + UNWRITTEN_EX="\"unwritten\"" + DATA_EX="\"data\"" + OPTIND=1 + while getopts 'h' OPTION + do + case $OPTION in + h) UNWRITTEN_EX="\"extent\"" + DATA_EX="\"extent\"" + ;; + ?) echo Invalid flag + exit 1 + ;; + esac + done + shift $(($OPTIND - 1)) + awk --posix ' $3 ~ /hole/ { print $1, $2, $3; next; } $5 ~ /0x[[:digit:]]*8[[:digit:]]{2}/ { - print $1, $2, "unwritten"; + print $1, $2, '$UNWRITTEN_EX'; next; } $5 ~ /0x[[:digit:]]+/ { - print $1, $2, "data"; + print $1, $2, '$DATA_EX'; }' | _coalesce_extents } @@ -305,6 +322,7 @@ _test_generic_punch() -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + md5sum $testfile | cut -d ' ' -f1 echo " 2. into allocated space" if [ "$remove_testfile" ]; then @@ -315,6 +333,7 @@ _test_generic_punch() -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + md5sum $testfile | cut -d ' ' -f1 echo " 3. into unwritten space" if [ "$remove_testfile" ]; then @@ -325,6 +344,7 @@ _test_generic_punch() -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + md5sum $testfile | cut -d ' ' -f1 echo " 4. hole -> data" if [ "$remove_testfile" ]; then @@ -335,6 +355,7 @@ _test_generic_punch() -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + md5sum $testfile | cut -d ' ' -f1 echo " 5. hole -> unwritten" if [ "$remove_testfile" ]; then @@ -345,6 +366,7 @@ _test_generic_punch() -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + md5sum $testfile | cut -d ' ' -f1 echo " 6. data -> hole" if [ "$remove_testfile" ]; then @@ -355,6 +377,7 @@ _test_generic_punch() -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + md5sum $testfile | cut -d ' ' -f1 echo " 7. data -> unwritten" if [ "$remove_testfile" ]; then @@ -366,6 +389,7 @@ _test_generic_punch() -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + md5sum $testfile | cut -d ' ' -f1 echo " 8. unwritten -> hole" if [ "$remove_testfile" ]; then @@ -376,6 +400,7 @@ _test_generic_punch() -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + md5sum $testfile | cut -d ' ' -f1 echo " 9. unwritten -> data" if [ "$remove_testfile" ]; then @@ -387,6 +412,7 @@ _test_generic_punch() -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + md5sum $testfile | cut -d ' ' -f1 echo " 10. hole -> data -> hole" if [ "$remove_testfile" ]; then @@ -397,6 +423,7 @@ _test_generic_punch() -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + md5sum $testfile | cut -d ' ' -f1 echo " 11. data -> hole -> data" if [ "$remove_testfile" ]; then @@ -410,6 +437,7 @@ _test_generic_punch() -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + md5sum $testfile | cut -d ' ' -f1 echo " 12. unwritten -> data -> unwritten" if [ "$remove_testfile" ]; then @@ -421,6 +449,7 @@ _test_generic_punch() -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + md5sum $testfile | cut -d ' ' -f1 echo " 13. data -> unwritten -> data" if [ "$remove_testfile" ]; then @@ -433,6 +462,7 @@ _test_generic_punch() -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + md5sum $testfile | cut -d ' ' -f1 echo " 14. data -> hole @ EOF" rm -f $testfile @@ -441,6 +471,7 @@ _test_generic_punch() -c "$zero_cmd 12k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + md5sum $testfile | cut -d ' ' -f1 echo " 15. data -> hole @ 0" if [ "$remove_testfile" ]; then @@ -451,6 +482,7 @@ _test_generic_punch() -c "$zero_cmd 0k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + md5sum $testfile | cut -d ' ' -f1 echo " 16. data -> cache cold ->hole" if [ "$remove_testfile" ]; then @@ -470,6 +502,7 @@ _test_generic_punch() diff $testfile $testfile.2 [ $? -ne 0 ] && die_now rm -f $testfile.2 + md5sum $testfile | cut -d ' ' -f1 echo " 17. data -> hole in single block file" if [ "$remove_testfile" ]; then @@ -481,5 +514,6 @@ _test_generic_punch() -c "$zero_cmd 128 128" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + md5sum $testfile | cut -d ' ' -f1 } -- 1.7.1 From achender@linux.vnet.ibm.com Mon Jun 27 23:25:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5S4PBT4177366 for ; Mon, 27 Jun 2011 23:25:11 -0500 X-ASG-Debug-ID: 1309235110-328900270000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e9.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AFB8C32B77 for ; Mon, 27 Jun 2011 21:25:10 -0700 (PDT) Received: from e9.ny.us.ibm.com (e9.ny.us.ibm.com [32.97.182.139]) by cuda.sgi.com with ESMTP id cfIE1YO0ZQGuF64L for ; Mon, 27 Jun 2011 21:25:10 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay07.pok.ibm.com (d01relay07.pok.ibm.com [9.56.227.147]) by e9.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5S3rtAS023550 for ; Mon, 27 Jun 2011 23:53:55 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay07.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5S4P9Jr1650832 for ; Tue, 28 Jun 2011 00:25:09 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5S4P9NI015222 for ; Tue, 28 Jun 2011 00:25:09 -0400 Received: from elm3c80.beaverton.ibm.com (elm3c80.beaverton.ibm.com [9.47.69.80]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5S4P6Bx014703; Tue, 28 Jun 2011 00:25:08 -0400 From: Allison Henderson To: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org Cc: Allison Henderson X-ASG-Orig-Subj: [PATCH 3/3 v2] XFS TESTS: Fix 252 Failure: Update 242 Golden Output Subject: [PATCH 3/3 v2] XFS TESTS: Fix 252 Failure: Update 242 Golden Output Date: Mon, 27 Jun 2011 21:27:27 -0700 Message-Id: <1309235247-32650-4-git-send-email-achender@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1309235247-32650-1-git-send-email-achender@linux.vnet.ibm.com> References: <1309235247-32650-1-git-send-email-achender@linux.vnet.ibm.com> X-Barracuda-Connect: e9.ny.us.ibm.com[32.97.182.139] X-Barracuda-Start-Time: 1309235110 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 New filtered golden output for test 242. Another patch has been sumbitted that also modifies the 242 output, and this set has been adjusted to apply on top of it. This patch requires Christoph's "[PATCH] xfstests: update test 042 golden output" (06/20/2011) Signed-off-by: Allison Henderson --- :100644 100644 e69382c... 649ac04... M 242.out 242.out | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/242.out b/242.out index e69382c..649ac04 100644 --- a/242.out +++ b/242.out @@ -3,58 +3,75 @@ QA output created by 242 0: [0..7]: hole 1: [8..23]: unwritten 2: [24..39]: hole +daa100df6e6711906b61c9ab5aa16032 2. into allocated space 0: [0..7]: data 1: [8..23]: unwritten 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 3. into unwritten space 0: [0..39]: unwritten +daa100df6e6711906b61c9ab5aa16032 4. hole -> data 0: [0..7]: hole 1: [8..23]: unwritten 2: [24..31]: data 3: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac 5. hole -> unwritten 0: [0..7]: hole 1: [8..31]: unwritten 2: [32..39]: hole +daa100df6e6711906b61c9ab5aa16032 6. data -> hole 0: [0..7]: data 1: [8..23]: unwritten 2: [24..39]: hole +1b3779878366498b28c702ef88c4a773 7. data -> unwritten 0: [0..7]: data 1: [8..31]: unwritten 2: [32..39]: hole +1b3779878366498b28c702ef88c4a773 8. unwritten -> hole 0: [0..23]: unwritten 1: [24..39]: hole +daa100df6e6711906b61c9ab5aa16032 9. unwritten -> data 0: [0..23]: unwritten 1: [24..31]: data 2: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac 10. hole -> data -> hole 0: [0..7]: hole 1: [8..31]: unwritten 2: [32..39]: hole +daa100df6e6711906b61c9ab5aa16032 11. data -> hole -> data 0: [0..7]: data 1: [8..31]: unwritten 2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 12. unwritten -> data -> unwritten 0: [0..39]: unwritten +daa100df6e6711906b61c9ab5aa16032 13. data -> unwritten -> data 0: [0..7]: data 1: [8..31]: unwritten 2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 14. data -> hole @ EOF 0: [0..23]: data 1: [24..39]: unwritten +e1f024eedd27ea6b1c3e9b841c850404 15. data -> hole @ 0 0: [0..15]: unwritten 1: [16..39]: data +eecb7aa303d121835de05028751d301c 16. data -> cache cold ->hole 0: [0..15]: unwritten 1: [16..39]: data +eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: unwritten +56819989ef2d9f40785adce8c06b64d0 -- 1.7.1 From achender@linux.vnet.ibm.com Mon Jun 27 23:25:10 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p5S4P9B6177355 for ; Mon, 27 Jun 2011 23:25:10 -0500 X-ASG-Debug-ID: 1309235108-328a00250000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e2.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 51C8F310DE for ; Mon, 27 Jun 2011 21:25:08 -0700 (PDT) Received: from e2.ny.us.ibm.com (e2.ny.us.ibm.com [32.97.182.142]) by cuda.sgi.com with ESMTP id tCj4DKEQHqFJv7q6 for ; Mon, 27 Jun 2011 21:25:08 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay06.pok.ibm.com (d01relay06.pok.ibm.com [9.56.227.116]) by e2.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5S44P7C030497 for ; Tue, 28 Jun 2011 00:04:25 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay06.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5S4P7Bp1241100 for ; Tue, 28 Jun 2011 00:25:07 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5S4P762014747 for ; Tue, 28 Jun 2011 00:25:07 -0400 Received: from elm3c80.beaverton.ibm.com (elm3c80.beaverton.ibm.com [9.47.69.80]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5S4P6Bu014703; Tue, 28 Jun 2011 00:25:06 -0400 From: Allison Henderson To: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org Cc: Allison Henderson X-ASG-Orig-Subj: [PATCH 0/3 v2] XFS TESTS: Fix 252 failure Subject: [PATCH 0/3 v2] XFS TESTS: Fix 252 failure Date: Mon, 27 Jun 2011 21:27:24 -0700 Message-Id: <1309235247-32650-1-git-send-email-achender@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.1 X-Barracuda-Connect: e2.ny.us.ibm.com[32.97.182.142] X-Barracuda-Start-Time: 1309235109 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 Hi All, Sorry for the delay on this set. I meant to send it a while back, but it looks like the email did not get through, so I am resending it. This patch corrects a 252 test failure when run on ext4. Becuase ext4 and xfs do not handle splitting extents in the same way, it was decided that the fiemap filter should not display an extent type. Only the location of the hole. An md5 check sum has also been added to make sure the file contents are correct. Also, another patch was sumbitted that modifes the same code in 242.out. Assumeing that patch will go through, this set was modifed to be applied on top of Christoph's "[PATCH] xfstests: update test 042 golden output" (06/20/2011). Allison Henderson (3): XFS TESTS: Fix 252 Failure: Relax fiemap filter XFS TESTS: Fix 252 Failure: Update 252 Golden Output XFS TESTS: Fix 252 Failure: Update 242 Golden Output 242.out | 17 ++++ 252 | 8 +- 252.out | 272 ++++++++++++++++++++++++++++++++++++---------------------- common.punch | 38 ++++++++- 4 files changed, 227 insertions(+), 108 deletions(-) From achender@linux.vnet.ibm.com Mon Jun 27 23:25:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5S4PBms177368 for ; Mon, 27 Jun 2011 23:25:11 -0500 X-ASG-Debug-ID: 1309235109-1cd302690000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e3.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BAB611B9BE56 for ; Mon, 27 Jun 2011 21:25:09 -0700 (PDT) Received: from e3.ny.us.ibm.com (e3.ny.us.ibm.com [32.97.182.143]) by cuda.sgi.com with ESMTP id RcnjXV2hkd2lrqHd for ; Mon, 27 Jun 2011 21:25:09 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay04.pok.ibm.com (d01relay04.pok.ibm.com [9.56.227.236]) by e3.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5S42EBT030902 for ; Tue, 28 Jun 2011 00:02:14 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5S4P9cL157106 for ; Tue, 28 Jun 2011 00:25:09 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5S4P8CK015154 for ; Tue, 28 Jun 2011 00:25:08 -0400 Received: from elm3c80.beaverton.ibm.com (elm3c80.beaverton.ibm.com [9.47.69.80]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5S4P6Bw014703; Tue, 28 Jun 2011 00:25:08 -0400 From: Allison Henderson To: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org Cc: Allison Henderson X-ASG-Orig-Subj: [PATCH 2/3 v2] XFS TESTS: Fix 252 Failure: Update 252 Golden Output Subject: [PATCH 2/3 v2] XFS TESTS: Fix 252 Failure: Update 252 Golden Output Date: Mon, 27 Jun 2011 21:27:26 -0700 Message-Id: <1309235247-32650-3-git-send-email-achender@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1309235247-32650-1-git-send-email-achender@linux.vnet.ibm.com> References: <1309235247-32650-1-git-send-email-achender@linux.vnet.ibm.com> X-Barracuda-Connect: e3.ny.us.ibm.com[32.97.182.143] X-Barracuda-Start-Time: 1309235110 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 New filtered golden output for test 252 Signed-off-by: Allison Henderson --- :100644 100644 930c924... fcfd121... M 252.out 252.out | 272 +++++++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 170 insertions(+), 102 deletions(-) diff --git a/252.out b/252.out index 930c924..fcfd121 100644 --- a/252.out +++ b/252.out @@ -1,239 +1,307 @@ QA output created by 252 1. into a hole +daa100df6e6711906b61c9ab5aa16032 2. into allocated space -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: data +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 3. into unwritten space -0: [0..7]: unwritten +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: unwritten +2: [24..39]: extent +daa100df6e6711906b61c9ab5aa16032 4. hole -> data 0: [0..23]: hole -1: [24..31]: data +1: [24..31]: extent 2: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac 5. hole -> unwritten 0: [0..23]: hole -1: [24..31]: unwritten +1: [24..31]: extent 2: [32..39]: hole +daa100df6e6711906b61c9ab5aa16032 6. data -> hole -0: [0..7]: data +0: [0..7]: extent 1: [8..39]: hole +1b3779878366498b28c702ef88c4a773 7. data -> unwritten -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..31]: unwritten +2: [24..31]: extent 3: [32..39]: hole +1b3779878366498b28c702ef88c4a773 8. unwritten -> hole -0: [0..7]: unwritten +0: [0..7]: extent 1: [8..39]: hole +daa100df6e6711906b61c9ab5aa16032 9. unwritten -> data -0: [0..7]: unwritten +0: [0..7]: extent 1: [8..23]: hole -2: [24..31]: data +2: [24..31]: extent 3: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac 10. hole -> data -> hole +daa100df6e6711906b61c9ab5aa16032 11. data -> hole -> data -0: [0..7]: data +0: [0..7]: extent 1: [8..31]: hole -2: [32..39]: data +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 12. unwritten -> data -> unwritten -0: [0..7]: unwritten +0: [0..7]: extent 1: [8..31]: hole -2: [32..39]: unwritten +2: [32..39]: extent +daa100df6e6711906b61c9ab5aa16032 13. data -> unwritten -> data -0: [0..7]: data +0: [0..7]: extent 1: [8..31]: hole -2: [32..39]: data +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 14. data -> hole @ EOF -0: [0..23]: data +0: [0..23]: extent 1: [24..39]: hole +e1f024eedd27ea6b1c3e9b841c850404 15. data -> hole @ 0 0: [0..15]: hole -1: [16..39]: data +1: [16..39]: extent +eecb7aa303d121835de05028751d301c 16. data -> cache cold ->hole 0: [0..15]: hole -1: [16..39]: data +1: [16..39]: extent +eecb7aa303d121835de05028751d301c 17. data -> hole in single block file -0: [0..7]: data +0: [0..7]: extent +13535fd4d496bf0b74bb2335aa4d1b31 1. into a hole +daa100df6e6711906b61c9ab5aa16032 2. into allocated space -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: data +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 3. into unwritten space -0: [0..7]: unwritten +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: unwritten +2: [24..39]: extent +daa100df6e6711906b61c9ab5aa16032 4. hole -> data 0: [0..23]: hole -1: [24..31]: data +1: [24..31]: extent 2: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac 5. hole -> unwritten 0: [0..23]: hole -1: [24..31]: unwritten +1: [24..31]: extent 2: [32..39]: hole +daa100df6e6711906b61c9ab5aa16032 6. data -> hole -0: [0..7]: data +0: [0..7]: extent 1: [8..39]: hole +1b3779878366498b28c702ef88c4a773 7. data -> unwritten -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..31]: unwritten +2: [24..31]: extent 3: [32..39]: hole +1b3779878366498b28c702ef88c4a773 8. unwritten -> hole -0: [0..7]: unwritten +0: [0..7]: extent 1: [8..39]: hole +daa100df6e6711906b61c9ab5aa16032 9. unwritten -> data -0: [0..7]: unwritten +0: [0..7]: extent 1: [8..23]: hole -2: [24..31]: data +2: [24..31]: extent 3: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac 10. hole -> data -> hole +daa100df6e6711906b61c9ab5aa16032 11. data -> hole -> data -0: [0..7]: data +0: [0..7]: extent 1: [8..31]: hole -2: [32..39]: data +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 12. unwritten -> data -> unwritten -0: [0..7]: unwritten +0: [0..7]: extent 1: [8..31]: hole -2: [32..39]: unwritten +2: [32..39]: extent +daa100df6e6711906b61c9ab5aa16032 13. data -> unwritten -> data -0: [0..7]: data +0: [0..7]: extent 1: [8..31]: hole -2: [32..39]: data +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 14. data -> hole @ EOF -0: [0..23]: data +0: [0..23]: extent 1: [24..39]: hole +e1f024eedd27ea6b1c3e9b841c850404 15. data -> hole @ 0 0: [0..15]: hole -1: [16..39]: data +1: [16..39]: extent +eecb7aa303d121835de05028751d301c 16. data -> cache cold ->hole 0: [0..15]: hole -1: [16..39]: data +1: [16..39]: extent +eecb7aa303d121835de05028751d301c 17. data -> hole in single block file -0: [0..7]: data +0: [0..7]: extent +13535fd4d496bf0b74bb2335aa4d1b31 1. into a hole -0: [0..7]: data +0: [0..7]: extent 1: [8..39]: hole +5a58e46082be047d0f13bee7974015b9 2. into allocated space -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: data +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 3. into unwritten space -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: data +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 4. hole -> data -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: data +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 5. hole -> unwritten -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: data +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 6. data -> hole -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: data +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 7. data -> unwritten -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: data +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 8. unwritten -> hole -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: data +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 9. unwritten -> data -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: data +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 10. hole -> data -> hole -0: [0..7]: data +0: [0..7]: extent 1: [8..31]: hole -2: [32..39]: data +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 11. data -> hole -> data -0: [0..7]: data +0: [0..7]: extent 1: [8..31]: hole -2: [32..39]: data +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 12. unwritten -> data -> unwritten -0: [0..7]: data +0: [0..7]: extent 1: [8..31]: hole -2: [32..39]: data +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 13. data -> unwritten -> data -0: [0..7]: data +0: [0..7]: extent 1: [8..31]: hole -2: [32..39]: data +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 14. data -> hole @ EOF -0: [0..23]: data +0: [0..23]: extent 1: [24..39]: hole +e1f024eedd27ea6b1c3e9b841c850404 15. data -> hole @ 0 0: [0..15]: hole -1: [16..39]: data +1: [16..39]: extent +eecb7aa303d121835de05028751d301c 16. data -> cache cold ->hole 0: [0..15]: hole -1: [16..39]: data +1: [16..39]: extent +eecb7aa303d121835de05028751d301c 17. data -> hole in single block file -0: [0..7]: data +0: [0..7]: extent +13535fd4d496bf0b74bb2335aa4d1b31 1. into a hole -0: [0..7]: data +0: [0..7]: extent 1: [8..39]: hole +5a58e46082be047d0f13bee7974015b9 2. into allocated space -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: data +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 3. into unwritten space -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: data +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 4. hole -> data -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: data +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 5. hole -> unwritten -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: data +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 6. data -> hole -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: data +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 7. data -> unwritten -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: data +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 8. unwritten -> hole -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: data +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 9. unwritten -> data -0: [0..7]: data +0: [0..7]: extent 1: [8..23]: hole -2: [24..39]: data +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 10. hole -> data -> hole -0: [0..7]: data +0: [0..7]: extent 1: [8..31]: hole -2: [32..39]: data +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 11. data -> hole -> data -0: [0..7]: data +0: [0..7]: extent 1: [8..31]: hole -2: [32..39]: data +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 12. unwritten -> data -> unwritten -0: [0..7]: data +0: [0..7]: extent 1: [8..31]: hole -2: [32..39]: data +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 13. data -> unwritten -> data -0: [0..7]: data +0: [0..7]: extent 1: [8..31]: hole -2: [32..39]: data +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 14. data -> hole @ EOF -0: [0..23]: data +0: [0..23]: extent 1: [24..39]: hole +e1f024eedd27ea6b1c3e9b841c850404 15. data -> hole @ 0 0: [0..15]: hole -1: [16..39]: data +1: [16..39]: extent +eecb7aa303d121835de05028751d301c 16. data -> cache cold ->hole 0: [0..15]: hole -1: [16..39]: data +1: [16..39]: extent +eecb7aa303d121835de05028751d301c 17. data -> hole in single block file -0: [0..7]: data +0: [0..7]: extent +13535fd4d496bf0b74bb2335aa4d1b31 -- 1.7.1 From david@fromorbit.com Mon Jun 27 23:59:09 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p5S4x8RM178832 for ; Mon, 27 Jun 2011 23:59:09 -0500 X-ASG-Debug-ID: 1309237146-7522004d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 03CF9E30CF8 for ; Mon, 27 Jun 2011 21:59:06 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id PrpGgD7HhaYKc9t1 for ; Mon, 27 Jun 2011 21:59:06 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtECAHVcCU55LChDgWdsb2JhbABSpzkVAQEWJiWIdMJWDoYiBKI8 Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail07.adl2.internode.on.net with ESMTP; 28 Jun 2011 14:29:05 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QbQO7-0006Qh-GJ; Tue, 28 Jun 2011 14:59:03 +1000 Date: Tue, 28 Jun 2011 14:59:03 +1000 From: Dave Chinner To: Allison Henderson Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org X-ASG-Orig-Subj: Re: [PATCH 1/3 v2] XFS TESTS: Fix 252 Failure: Relax fiemap filter Subject: Re: [PATCH 1/3 v2] XFS TESTS: Fix 252 Failure: Relax fiemap filter Message-ID: <20110628045903.GK32466@dastard> References: <1309235247-32650-1-git-send-email-achender@linux.vnet.ibm.com> <1309235247-32650-2-git-send-email-achender@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1309235247-32650-2-git-send-email-achender@linux.vnet.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1309237148 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0066 1.0000 -1.9780 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.2.67338 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, Jun 27, 2011 at 09:27:25PM -0700, Allison Henderson wrote: > The current test 252 tests punch hole by collecting fiemap information > on the test file. However this does not work for all file systems since > not all file systems layout their extents in the same way. > > This patch corrects this by adding a -h flag to the fiemap filter that ignores > the extent types in the fiemaps. The result is that the fiemap contains only > "extent" or "hole", instead of "unwritten", "data" or "hole". A checksum has > also been added to each test to help ensure the file contents are correct. > > Signed-off-by: Allison Henderson > --- > v1 -> v2 > Moved new golden output for 252 into a seperate patch to help make the set > easier to read > > :100755 100755 5efa243... 1289094... M 252 > :100644 100644 ddf63b0... d3c89eb... M common.punch > 252 | 8 ++++---- > common.punch | 38 ++++++++++++++++++++++++++++++++++++-- > 2 files changed, 40 insertions(+), 6 deletions(-) > > diff --git a/252 b/252 > index 5efa243..1289094 100755 > --- a/252 > +++ b/252 > @@ -53,15 +53,15 @@ _require_xfs_io_fiemap > testfile=$TEST_DIR/252.$$ > > # Standard punch hole tests > -_test_generic_punch falloc fpunch fpunch fiemap _filter_fiemap $testfile -F > +_test_generic_punch falloc fpunch fpunch fiemap "_filter_fiemap -h" $testfile -F > > # Delayed allocation punch hole tests > -_test_generic_punch -d falloc fpunch fpunch fiemap _filter_fiemap $testfile -F > +_test_generic_punch -d falloc fpunch fpunch fiemap "_filter_fiemap -h" $testfile -F > > # Multi hole punch tests > -_test_generic_punch -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F > +_test_generic_punch -k falloc fpunch fpunch fiemap "_filter_fiemap -h" $testfile -F > > # Delayed allocation multi punch hole tests > -_test_generic_punch -d -k falloc fpunch fpunch fiemap _filter_fiemap $testfile -F > +_test_generic_punch -d -k falloc fpunch fpunch fiemap "_filter_fiemap -h" $testfile -F > > status=0 ; exit > diff --git a/common.punch b/common.punch > index ddf63b0..d3c89eb 100644 > --- a/common.punch > +++ b/common.punch > @@ -203,17 +203,34 @@ _coalesce_extents() > > _filter_fiemap() > { > + > + UNWRITTEN_EX="\"unwritten\"" > + DATA_EX="\"data\"" > + OPTIND=1 > + while getopts 'h' OPTION > + do > + case $OPTION in > + h) UNWRITTEN_EX="\"extent\"" > + DATA_EX="\"extent\"" > + ;; > + ?) echo Invalid flag > + exit 1 > + ;; > + esac > + done > + shift $(($OPTIND - 1)) > + > awk --posix ' > $3 ~ /hole/ { > print $1, $2, $3; > next; > } > $5 ~ /0x[[:digit:]]*8[[:digit:]]{2}/ { > - print $1, $2, "unwritten"; > + print $1, $2, '$UNWRITTEN_EX'; > next; > } > $5 ~ /0x[[:digit:]]+/ { > - print $1, $2, "data"; > + print $1, $2, '$DATA_EX'; > }' | > _coalesce_extents > } I seriously dislike conditional parameter passing in shell scripts at the best of times, but for filter functions I really think it is the wrong thing to do. It significantly obfuscates the working of the function for no really good reason. Just write a new filter function, and factor out the common parts of them if the amount of code duplication is sufficient to make it desirable to do so. > + md5sum $testfile | cut -d ' ' -f1 Why cut out the file name? It's not like it changes at all.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Jun 28 00:09:05 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5S5941N181539 for ; Tue, 28 Jun 2011 00:09:04 -0500 X-ASG-Debug-ID: 1309237742-1cd103b00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1407F176D265 for ; Mon, 27 Jun 2011 22:09:03 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id Ze2rI2cjkll1nRJS for ; Mon, 27 Jun 2011 22:09:03 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtECAPlfCU55LChDgWdsb2JhbABSpzkVAQEWJiXLVA6GIgSiPA Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail07.adl2.internode.on.net with ESMTP; 28 Jun 2011 14:39:02 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QbQXk-0006S3-9K; Tue, 28 Jun 2011 15:09:00 +1000 Date: Tue, 28 Jun 2011 15:09:00 +1000 From: Dave Chinner To: Allison Henderson Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org X-ASG-Orig-Subj: Re: [PATCH 2/3 v2] XFS TESTS: Fix 252 Failure: Update 252 Golden Output Subject: Re: [PATCH 2/3 v2] XFS TESTS: Fix 252 Failure: Update 252 Golden Output Message-ID: <20110628050900.GL32466@dastard> References: <1309235247-32650-1-git-send-email-achender@linux.vnet.ibm.com> <1309235247-32650-3-git-send-email-achender@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1309235247-32650-3-git-send-email-achender@linux.vnet.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1309237744 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0012 1.0000 -2.0132 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67339 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, Jun 27, 2011 at 09:27:26PM -0700, Allison Henderson wrote: > New filtered golden output for test 252 > > Signed-off-by: Allison Henderson > --- > :100644 100644 930c924... fcfd121... M 252.out > 252.out | 272 +++++++++++++++++++++++++++++++++++++++------------------------ > 1 files changed, 170 insertions(+), 102 deletions(-) > > diff --git a/252.out b/252.out > index 930c924..fcfd121 100644 > --- a/252.out > +++ b/252.out > @@ -1,239 +1,307 @@ > QA output created by 252 > 1. into a hole > +daa100df6e6711906b61c9ab5aa16032 > 2. into allocated space > -0: [0..7]: data > +0: [0..7]: extent > 1: [8..23]: hole > -2: [24..39]: data > +2: [24..39]: extent > +cc58a7417c2d7763adc45b6fcd3fa024 I don't really like the way this weakens the test for XFS. With this change, the test no longer is checking that unwritten extent behaviour is correct. Rather than weakening the test, perhaps it would be better to execute 252 for XFS only (with the md5sums added), and then duplicate it to a new test for all filesystems to run with the weaker result checking that using the new filter function gives us. With the amount of common code the two tests share, it should be trivial to do this.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From achender@linux.vnet.ibm.com Tue Jun 28 00:17:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5S5HH5q181964 for ; Tue, 28 Jun 2011 00:17:17 -0500 X-ASG-Debug-ID: 1309238236-017800660000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e7.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A66E5176D598 for ; Mon, 27 Jun 2011 22:17:16 -0700 (PDT) Received: from e7.ny.us.ibm.com (e7.ny.us.ibm.com [32.97.182.137]) by cuda.sgi.com with ESMTP id HIyzPtbZzuktwAdc for ; Mon, 27 Jun 2011 22:17:16 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay06.pok.ibm.com (d01relay06.pok.ibm.com [9.56.227.116]) by e7.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5S4qc9Y016016 for ; Tue, 28 Jun 2011 00:52:38 -0400 Received: from d01av02.pok.ibm.com (d01av02.pok.ibm.com [9.56.224.216]) by d01relay06.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5S5HF0d1687798 for ; Tue, 28 Jun 2011 01:17:15 -0400 Received: from d01av02.pok.ibm.com (loopback [127.0.0.1]) by d01av02.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5S5HEag000778 for ; Tue, 28 Jun 2011 02:17:15 -0300 Received: from lc4eb0185863151.ibm.com (sig-9-65-20-193.mts.ibm.com [9.65.20.193]) by d01av02.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5S5HDgf000608; Tue, 28 Jun 2011 02:17:13 -0300 Message-ID: <4E0963D8.5030002@linux.vnet.ibm.com> Date: Mon, 27 Jun 2011 22:17:12 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org X-ASG-Orig-Subj: Re: [PATCH 1/3 v2] XFS TESTS: Fix 252 Failure: Relax fiemap filter Subject: Re: [PATCH 1/3 v2] XFS TESTS: Fix 252 Failure: Relax fiemap filter References: <1309235247-32650-1-git-send-email-achender@linux.vnet.ibm.com> <1309235247-32650-2-git-send-email-achender@linux.vnet.ibm.com> <20110628045903.GK32466@dastard> In-Reply-To: <20110628045903.GK32466@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e7.ny.us.ibm.com[32.97.182.137] X-Barracuda-Start-Time: 1309238236 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 06/27/2011 09:59 PM, Dave Chinner wrote: > On Mon, Jun 27, 2011 at 09:27:25PM -0700, Allison Henderson wrote: > I seriously dislike conditional parameter passing in shell scripts > at the best of times, but for filter functions I really think it is > the wrong thing to do. It significantly obfuscates the working of > the function for no really good reason. > > Just write a new filter function, and factor out the common parts of > them if the amount of code duplication is sufficient to make it > desirable to do so. > Ok, it doesn't look like a lot of code, I can separate them into their own functions. >> + md5sum $testfile | cut -d ' ' -f1 > > Why cut out the file name? It's not like it changes at all.... > Oh, it looked like there's a pid attached to the file name, so I thought I should remove that from the output Allison Henderson From achender@linux.vnet.ibm.com Tue Jun 28 00:26:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5S5QtLt182476 for ; Tue, 28 Jun 2011 00:26:56 -0500 X-ASG-Debug-ID: 1309238814-58b500420000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e36.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 48B153433C for ; Mon, 27 Jun 2011 22:26:54 -0700 (PDT) Received: from e36.co.us.ibm.com (e36.co.us.ibm.com [32.97.110.154]) by cuda.sgi.com with ESMTP id fJ4HoB85fVPlMnOv for ; Mon, 27 Jun 2011 22:26:54 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by e36.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5S5KfFl026205 for ; Mon, 27 Jun 2011 23:20:41 -0600 Received: from d03av04.boulder.ibm.com (d03av04.boulder.ibm.com [9.17.195.170]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5S5Qg6d135836 for ; Mon, 27 Jun 2011 23:26:42 -0600 Received: from d03av04.boulder.ibm.com (loopback [127.0.0.1]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5RNQfCp008133 for ; Mon, 27 Jun 2011 17:26:41 -0600 Received: from lc4eb0185863151.ibm.com (sig-9-65-20-193.mts.ibm.com [9.65.20.193]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5RNQeZK008123; Mon, 27 Jun 2011 17:26:41 -0600 Message-ID: <4E09660B.7050706@linux.vnet.ibm.com> Date: Mon, 27 Jun 2011 22:26:35 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, Ext4 Developers List , Eric Sandeen , Josef Bacik X-ASG-Orig-Subj: Re: [PATCH 2/3 v2] XFS TESTS: Fix 252 Failure: Update 252 Golden Output Subject: Re: [PATCH 2/3 v2] XFS TESTS: Fix 252 Failure: Update 252 Golden Output References: <1309235247-32650-1-git-send-email-achender@linux.vnet.ibm.com> <1309235247-32650-3-git-send-email-achender@linux.vnet.ibm.com> <20110628050900.GL32466@dastard> In-Reply-To: <20110628050900.GL32466@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e36.co.us.ibm.com[32.97.110.154] X-Barracuda-Start-Time: 1309238815 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 06/27/2011 10:09 PM, Dave Chinner wrote: > On Mon, Jun 27, 2011 at 09:27:26PM -0700, Allison Henderson wrote: >> New filtered golden output for test 252 >> >> Signed-off-by: Allison Henderson >> --- >> :100644 100644 930c924... fcfd121... M 252.out >> 252.out | 272 +++++++++++++++++++++++++++++++++++++++------------------------ >> 1 files changed, 170 insertions(+), 102 deletions(-) >> >> diff --git a/252.out b/252.out >> index 930c924..fcfd121 100644 >> --- a/252.out >> +++ b/252.out >> @@ -1,239 +1,307 @@ >> QA output created by 252 >> 1. into a hole >> +daa100df6e6711906b61c9ab5aa16032 >> 2. into allocated space >> -0: [0..7]: data >> +0: [0..7]: extent >> 1: [8..23]: hole >> -2: [24..39]: data >> +2: [24..39]: extent >> +cc58a7417c2d7763adc45b6fcd3fa024 > > I don't really like the way this weakens the test for XFS. With this > change, the test no longer is checking that unwritten extent > behaviour is correct. > > Rather than weakening the test, perhaps it would be better to > execute 252 for XFS only (with the md5sums added), and then > duplicate it to a new test for all filesystems to run with the > weaker result checking that using the new filter function gives us. > With the amount of common code the two tests share, it should be > trivial to do this.... > Alrighty, that sounds pretty straight forward, as long as every one is in agreement. I think that would help retain the tests effectiveness. Eric, Josef, what are your thoughts? Allison Henderson > Cheers, > > Dave. From achender@linux.vnet.ibm.com Tue Jun 28 00:30:39 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_62 autolearn=no version=3.4.0-r929098 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 p5S5UcZ9182624 for ; Tue, 28 Jun 2011 00:30:39 -0500 X-ASG-Debug-ID: 1309239037-58b700510000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e35.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6E3183435E for ; Mon, 27 Jun 2011 22:30:38 -0700 (PDT) Received: from e35.co.us.ibm.com (e35.co.us.ibm.com [32.97.110.153]) by cuda.sgi.com with ESMTP id Rd2fbxHuLQCt3gis for ; Mon, 27 Jun 2011 22:30:38 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by e35.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5S5CI0d001693 for ; Mon, 27 Jun 2011 23:12:18 -0600 Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5S5UVww118918 for ; Mon, 27 Jun 2011 23:30:31 -0600 Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5RNU1CK022257 for ; Mon, 27 Jun 2011 17:30:02 -0600 Received: from elm3c80.beaverton.ibm.com (elm3c80.beaverton.ibm.com [9.47.69.80]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5RNTsSD021541; Mon, 27 Jun 2011 17:29:56 -0600 From: Allison Henderson To: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org Cc: Allison Henderson X-ASG-Orig-Subj: [PATCH 1/2 v6] XFS TESTS: ENOSPC Punch Hole: Move su routines in 123 to common.rc Subject: [PATCH 1/2 v6] XFS TESTS: ENOSPC Punch Hole: Move su routines in 123 to common.rc Date: Mon, 27 Jun 2011 22:32:42 -0700 Message-Id: <1309239163-3975-2-git-send-email-achender@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1309239163-3975-1-git-send-email-achender@linux.vnet.ibm.com> References: <1309239163-3975-1-git-send-email-achender@linux.vnet.ibm.com> X-Barracuda-Connect: e35.co.us.ibm.com[32.97.110.153] X-Barracuda-Start-Time: 1309239038 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 patch moves the su routines in test 123 to common.rc so that they can also be used in the new test 255 Signed-off-by: Allison Henderson --- :100755 100755 27c1e66... ee1194d... M 123 :100644 100644 680631d... 9d68574... M common.rc 123 | 24 ------------------------ common.rc | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 24 deletions(-) diff --git a/123 b/123 index 27c1e66..ee1194d 100755 --- a/123 +++ b/123 @@ -42,30 +42,6 @@ _cleanup() _cleanup_testdir } - -_filter_user_do() -{ - perl -ne " -s,.*Permission\sdenied.*,Permission denied,; -s,.*no\saccess\sto\stty.*,,; -s,.*no\sjob\scontrol\sin\sthis\sshell.*,,; -s,^\s*$,,; - print;" -} - - - - -_user_do() -{ - if [ "$HOSTOS" == "IRIX" ] - then - echo $1 | /bin/bash "su $qa_user 2>&1" | _filter_user_do - else - echo $1 | su $qa_user 2>&1 | _filter_user_do - fi -} - # get standard environment, filters and checks . ./common.rc . ./common.filter diff --git a/common.rc b/common.rc index 680631d..9d68574 100644 --- a/common.rc +++ b/common.rc @@ -867,6 +867,26 @@ _require_user() [ "$?" == "0" ] || _notrun "$qa_user user not defined." } +_filter_user_do() +{ + perl -ne " +s,.*Permission\sdenied.*,Permission denied,; +s,.*no\saccess\sto\stty.*,,; +s,.*no\sjob\scontrol\sin\sthis\sshell.*,,; +s,^\s*$,,; + print;" +} + +_user_do() +{ + if [ "$HOSTOS" == "IRIX" ] + then + echo $1 | /bin/bash "su $qa_user 2>&1" | _filter_user_do + else + echo $1 | su $qa_user 2>&1 | _filter_user_do + fi +} + # check that xfs_io, glibc, kernel, and filesystem all (!) support # fallocate # -- 1.7.1 From achender@linux.vnet.ibm.com Tue Jun 28 00:30:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_62, J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p5S5Uj1w182639 for ; Tue, 28 Jun 2011 00:30:45 -0500 X-ASG-Debug-ID: 1309239044-0b44004e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e37.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B125CE31AAE for ; Mon, 27 Jun 2011 22:30:44 -0700 (PDT) Received: from e37.co.us.ibm.com (e37.co.us.ibm.com [32.97.110.158]) by cuda.sgi.com with ESMTP id YMbup8CgQJv6iDip for ; Mon, 27 Jun 2011 22:30:44 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by e37.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5S5Rcuh003639 for ; Mon, 27 Jun 2011 23:27:38 -0600 Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5S5UaiP121248 for ; Mon, 27 Jun 2011 23:30:36 -0600 Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5RNU480022746 for ; Mon, 27 Jun 2011 17:30:07 -0600 Received: from elm3c80.beaverton.ibm.com (elm3c80.beaverton.ibm.com [9.47.69.80]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5RNTsSE021541; Mon, 27 Jun 2011 17:30:00 -0600 From: Allison Henderson To: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org Cc: Allison Henderson X-ASG-Orig-Subj: [PATCH 2/2 v6] XFS TESTS: ENOSPC Punch Hole: Add new test 255 Subject: [PATCH 2/2 v6] XFS TESTS: ENOSPC Punch Hole: Add new test 255 Date: Mon, 27 Jun 2011 22:32:43 -0700 Message-Id: <1309239163-3975-3-git-send-email-achender@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1309239163-3975-1-git-send-email-achender@linux.vnet.ibm.com> References: <1309239163-3975-1-git-send-email-achender@linux.vnet.ibm.com> X-Barracuda-Connect: e37.co.us.ibm.com[32.97.110.158] X-Barracuda-Start-Time: 1309239044 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 patch adds a new test 255 that tests that a hole can be punched even when the disk is full. Reserved blocks should be used to allow a punch hole to proceed even when there is not enough blocks to further fragment the file. To test this, the file system is fragmented by punching holes in regular intervals and filling the file system between punches. This will eventually force the file system to use reserved blocks to proceed with the punch hole operation. The work in this patch is a continuation from a previous patch set that has been partially accepted. Signed-off-by: Allison Henderson --- v5->v6 Test moved out of 252 and put in its own test 255 _fill_fs and _test_full_fs_punch have been moved from common.punch to test 255 and modified to use the _user_do routines in common.rc _fill_fs has been optimized to stop once files smaller than a block cannot be created. :100644 100644 1f86075... c045e70... M group group | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/group b/group index 1f86075..c045e70 100644 --- a/group +++ b/group @@ -368,3 +368,4 @@ deprecated 252 auto quick prealloc 253 auto quick 254 auto quick +255 auto quick -- 1.7.1 From achender@linux.vnet.ibm.com Tue Jun 28 00:41:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_62 autolearn=no version=3.4.0-r929098 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 p5S5fhYT183074 for ; Tue, 28 Jun 2011 00:41:43 -0500 X-ASG-Debug-ID: 1309239702-7af901390000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e37.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A9D6A14F8795 for ; Mon, 27 Jun 2011 22:41:42 -0700 (PDT) Received: from e37.co.us.ibm.com (e37.co.us.ibm.com [32.97.110.158]) by cuda.sgi.com with ESMTP id VTbZk7ngExYmuB7R for ; Mon, 27 Jun 2011 22:41:42 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by e37.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5S5caqp018570 for ; Mon, 27 Jun 2011 23:38:36 -0600 Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5S5fE7d169228 for ; Mon, 27 Jun 2011 23:41:35 -0600 Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5RNTuxB021646 for ; Mon, 27 Jun 2011 17:29:57 -0600 Received: from elm3c80.beaverton.ibm.com (elm3c80.beaverton.ibm.com [9.47.69.80]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5RNTsSC021541; Mon, 27 Jun 2011 17:29:54 -0600 From: Allison Henderson To: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org Cc: Allison Henderson X-ASG-Orig-Subj: [PATCH 0/2 v6] XFS TESTS: Add ENOSPC Punch Hole Test Subject: [PATCH 0/2 v6] XFS TESTS: Add ENOSPC Punch Hole Test Date: Mon, 27 Jun 2011 22:32:41 -0700 Message-Id: <1309239163-3975-1-git-send-email-achender@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.1 X-Barracuda-Connect: e37.co.us.ibm.com[32.97.110.158] X-Barracuda-Start-Time: 1309239702 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 Hi All, This is another set I sent out a while ago, but I didnt see it show up on the lists, so I am resending this one too. The work in this patch is a continuation from a previous patch set that has been partially accepted, so I thought I should retain the v6. This patch set adds the ENOSPC test that was used for ext4 punch hole testing. This test will verify that a hole can be punched even when the disk is full. Reserved blocks should be used to complete the operation when there is not blocks to further fragment the file. Because punching a hole does not always require extra blocks, there needs to be serveal iterations of punching holes, and then filling the file system to 100% usage before it is forced to grow the tree in order to handle the fragmentation. The growing of the tree is what would cause ENOSPC if not for the use of reserved blocks. I could use some opinions on this patch set becuase I am not sure if other filesystems handle their punch holes in the same way. Although xfs appears to pass the test, should this test be an ext4 only test? Thx! Allison Henderson (2): XFS TESTS: Move su routines in 123 to common.rc XFS TESTS: Add ENOSPC Hole Punch Test 123 | 24 ------------------------ common.rc | 20 ++++++++++++++++++++ group | 1 + 3 files changed, 21 insertions(+), 24 deletions(-) From dave@fromorbit.com Tue Jun 28 02:16:34 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5S7GY8Z191489 for ; Tue, 28 Jun 2011 02:16:34 -0500 X-ASG-Debug-ID: 1309245391-2a2b00330000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 04E09348BC for ; Tue, 28 Jun 2011 00:16:31 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id jHLeKiJLLep6ylca for ; Tue, 28 Jun 2011 00:16:31 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuYEAJN/CU55LChDgWdsb2JhbABSmE6ObBUBARYmJatKn1mGMASiQw Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail07.adl2.internode.on.net with ESMTP; 28 Jun 2011 16:46:06 +0930 Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.72) (envelope-from ) id 1QbSWj-0006cf-Aq for xfs@oss.sgi.com; Tue, 28 Jun 2011 17:16:05 +1000 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1QbSWS-0003IO-Hq for xfs@oss.sgi.com; Tue, 28 Jun 2011 17:15:48 +1000 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfsprogs: don't hard code the shell binary Subject: [PATCH] xfsprogs: don't hard code the shell binary Date: Tue, 28 Jun 2011 17:15:48 +1000 Message-Id: <1309245348-12638-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1309245393 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4747 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.2.67347 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 From: Dave Chinner Recent changes to debian unstable user space have caused the xfsprogs build to break as certain shell functionality is being assumed by libtool and friends. The configure scripts test and select the correct shell, but the input files ignore this and hard code the shell to use and hence now break. Fix this by using the shell that the configure scripts decide is the right one to use. Signed-off-by: Dave Chinner --- include/builddefs.in | 1 + include/buildmacros | 1 - 2 files changed, 1 insertions(+), 1 deletions(-) diff --git a/include/builddefs.in b/include/builddefs.in index f895ed9..4c8ec64 100644 --- a/include/builddefs.in +++ b/include/builddefs.in @@ -71,6 +71,7 @@ MAKE = @make@ ECHO = @echo@ SORT = @sort@ LN_S = @LN_S@ +SHELL = @SHELL@ LIBTOOL = @LIBTOOL@ MAKEDEPEND = @makedepend@ diff --git a/include/buildmacros b/include/buildmacros index 62babca..31c7eb0 100644 --- a/include/buildmacros +++ b/include/buildmacros @@ -32,7 +32,6 @@ OBJECTS = $(ASFILES:.s=.o) \ INSTALL = $(TOPDIR)/install-sh -o $(PKG_USER) -g $(PKG_GROUP) -SHELL = /bin/sh IMAGES_DIR = $(TOPDIR)/all-images DIST_DIR = $(TOPDIR)/dist -- 1.7.5.1 From BATV+fad792bc870d2ee6e67f+2865+infradead.org+hch@bombadil.srs.infradead.org Tue Jun 28 02:41:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5S7ffPL195460 for ; Tue, 28 Jun 2011 02:41:42 -0500 X-ASG-Debug-ID: 1309246899-2a1b00ba0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8E2FC34979 for ; Tue, 28 Jun 2011 00:41:39 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id zbjdMmlXaBwtMJgw for ; Tue, 28 Jun 2011 00:41:39 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbSvR-0001cZ-4X; Tue, 28 Jun 2011 07:41:37 +0000 Date: Tue, 28 Jun 2011 03:41:37 -0400 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: don't hard code the shell binary Subject: Re: [PATCH] xfsprogs: don't hard code the shell binary Message-ID: <20110628074137.GA6123@infradead.org> References: <1309245348-12638-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1309245348-12638-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309246899 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0006 1.0000 -2.0168 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67349 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Tue, Jun 28, 2011 at 05:15:48PM +1000, Dave Chinner wrote: > From: Dave Chinner > > Recent changes to debian unstable user space have caused the > xfsprogs build to break as certain shell functionality is being > assumed by libtool and friends. The configure scripts test and > select the correct shell, but the input files ignore this and hard > code the shell to use and hence now break. > > Fix this by using the shell that the configure scripts decide is the > right one to use. Looks good. The same fix should also be applied to xfsdump, xfstests and dmapi. Signed-off-by: Christoph Hellwig From sentto-74162301-131-1309248572-linux-xfs=oss.sgi.com@returns.groups.yahoo.com Tue Jun 28 03:09:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.1 required=5.0 tests=BAYES_50,FREEMAIL_FROM, HTML_MESSAGE,MIME_8BIT_HEADER,T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.4.0-r929098 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 p5S89deG200650 for ; Tue, 28 Jun 2011 03:09:40 -0500 X-ASG-Debug-ID: 1309248574-2ac602fc0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from n56c.bullet.mail.sp1.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id D27841B9CCA4 for ; Tue, 28 Jun 2011 01:09:34 -0700 (PDT) Received: from n56c.bullet.mail.sp1.yahoo.com (n56c.bullet.mail.sp1.yahoo.com [98.136.45.55]) by cuda.sgi.com with SMTP id qWAN8AmnE5b26qV7 for ; Tue, 28 Jun 2011 01:09:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoogroups.com; s=lima; t=1309248573; bh=Hl9ODxO2O1xjMDS5SygHky7foocLz4zkQRDWHgQqgiU=; h=Received:Received:X-Yahoo-Newman-Id:X-Sender:X-Apparently-To:X-Received:X-Received:X-Received:X-Received:X-Received:X-Received:To:Message-ID:User-Agent:X-Mailer:X-Originating-IP:X-Yahoo-Post-IP:From:X-Yahoo-Profile:Sender:MIME-Version:Mailing-List:Delivered-To:List-Id:Precedence:List-Unsubscribe:Date:Subject:Reply-To:X-Yahoo-Newman-Property:Content-Type; b=NeXDU0EEwOLrO1a0Jkd8pHTZix5p1UItqq5k5wMMIF85+qlWuiZrRUPA174PYhKvVqy9sRghKXrYkYVBuQ+UM0Dy1vEjknPLlbkXVIaecxhgpla76dU2oEIr9WhXL8SQ DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=lima; d=yahoogroups.com; b=su0x70w/p6nWKjdL5lQk5/PM9HpaysVbzeXHq5b4eaEaO3Tzt6Oz4eHp14FZjzK/SvPWPTyF9yQ8lMRAp68eTVvMCg5ruhgtTldPNFP7kF4G+rBez8NBfgx3I97Bdpxg; Received: from [69.147.65.171] by n56.bullet.mail.sp1.yahoo.com with NNFMP; 28 Jun 2011 08:09:33 -0000 Received: from [66.196.94.59] by t13.bullet.mail.sp1.yahoo.com with NNFMP; 28 Jun 2011 08:09:33 -0000 X-Yahoo-Newman-Id: 74162301-m131 X-Sender: halenlukekavi@yahoo.com.tw X-Apparently-To: nxgaxk@yahoogroups.com X-Received: (qmail 93233 invoked from network); 28 Jun 2011 08:09:26 -0000 X-Received: from unknown (66.196.94.106) by m14.grp.re1.yahoo.com with QMQP; 28 Jun 2011 08:09:26 -0000 X-Received: from unknown (HELO ng10-ip1.bullet.mail.ne1.yahoo.com) (98.138.215.189) by mta2.grp.re1.yahoo.com with SMTP; 28 Jun 2011 08:09:26 -0000 X-Received: from [98.138.217.179] by ng10.bullet.mail.ne1.yahoo.com with NNFMP; 28 Jun 2011 08:09:26 -0000 X-Received: from [69.147.65.150] by tg4.bullet.mail.ne1.yahoo.com with NNFMP; 28 Jun 2011 08:09:26 -0000 X-Received: from [98.137.34.184] by t7.bullet.mail.sp1.yahoo.com with NNFMP; 28 Jun 2011 08:09:26 -0000 To: nxgaxk@yahoogroups.com Message-ID: User-Agent: eGroups-EW/0.82 X-Mailer: Yahoo Groups Message Poster X-Originating-IP: 98.138.215.189 X-Yahoo-Post-IP: 114.41.12.61 From: "halenlukekavi" X-Yahoo-Profile: halenlukekavi Sender: nxgaxk@yahoogroups.com MIME-Version: 1.0 Mailing-List: list nxgaxk@yahoogroups.com; contact nxgaxk-owner@yahoogroups.com Delivered-To: mailing list nxgaxk@yahoogroups.com List-Id: Precedence: bulk List-Unsubscribe: Date: Tue, 28 Jun 2011 08:09:26 -0000 X-ASG-Orig-Subj: [nxgaxk] =?big5?B?plmmQrDVIahDpn6uTKTRq0So07RYtvSko6VpISFj?= =?big5?B?MHA3dmZzMDc1ZDVycTNjb3UyMjc2ODA=?= Subject: [nxgaxk] =?big5?B?plmmQrDVIahDpn6uTKTRq0So07RYtvSko6VpISFj?= =?big5?B?MHA3dmZzMDc1ZDVycTNjb3UyMjc2ODA=?= Reply-To: nxgaxk@yahoogroups.com X-Yahoo-Newman-Property: groups-email-ff-u Content-Type: multipart/alternative; boundary="F91pC1vOneiCUechOfHw5c2UZCbFTOsn2sCLThS" X-Barracuda-Connect: n56c.bullet.mail.sp1.yahoo.com[98.136.45.55] X-Barracuda-Start-Time: 1309248574 X-Barracuda-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.81 X-Barracuda-Spam-Status: No, SCORE=-0.81 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, BSF_RULE_7582B, BSF_SC2_SA022a, DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE, PR0N_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67351 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 0.01 BSF_SC2_SA022a Custom Rule SA022a 0.20 PR0N_SUBJECT Subject has letters around special characters (pr0n) 0.50 BSF_RULE7568M Custom Rule 7568M 0.50 BSF_RULE_7582B Custom Rule 7582B X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --F91pC1vOneiCUechOfHw5c2UZCbFTOsn2sCLThS Content-Type: text/plain; charset=BIG5 Content-Transfer-Encoding: base64 d2I2ZjB3MWg1NndjdTdvZGE2NGtnNW04bmxjYjZuNzcydGo3NWQ0dmhleDgyMnE3NDZ4NGs2 OGVudzMwdTg2amUzajNzc3E2MDAyYW9iZzByaTI1Mm5iZGdpdDVxNTJycmowcTVlNGV0M2pn bmIxbGs1eDUxYzR1aHhlN2N4cGF0ZzBoNTdoOHRiN2llbDh5ZmtqMzc0ZXU4MzQ1M3lxaDR4 NDQ0NQoKpNGu8KZuvPYhqNPCSbJEqrogrvi0u6RApFUhCgq7sLryplmkQLb0prM1MKZ+u3On QLhnxeequqZuplmyTbJEpOKkdaRUqfqqdqZCu+YKCqhDpn6uTKTRq0So07RYtvSko6VpoUMK Cmh0dHA6Ly90aW55dXJsLmNvbS8zZ2VsMmRzCgqmcKpHpKOv4Kq9sbWzc7WyIL3Qvca7c7r0 p30KCnd3ODdreGVtNTVuNnhoNjQyNnU2NjczMDhrZHNkand3c2E1Nm0yNnQ0cnk2MDNxZWI2 cXVoajc4Y2ppbW9xb3A1ODYwMjhodG1lNXM3c29mMTFxamZqeGJ1b3hyM3R0NXI3aHk4NmVw NXBqMXlqY2U4OHl0dGo1bnk1djVybGU4d2Ezczh5ajI4ajR4eTd1MTg1YWt0NTY2cGp5YTcy NzJkb2cwMTJxdG4xNTNzMjZnb29weHNqaDVvYTV5MWIzMjY4ODE= --F91pC1vOneiCUechOfHw5c2UZCbFTOsn2sCLThS Content-Type: text/html; charset=BIG5 Content-Transfer-Encoding: quoted-printable  
=20=20=20=20=20=20 =20=20=20=20=20=20

wb6f0w1h56wcu7oda64kg5m8nlcb6n772tj75d4vhex822q746x4k68enw30u86je3= j3ssq6002aobg0ri252nbdgit5q52rrj0q5e4et3jgnb1lk5x51c4uhxe7cxpatg0h57h8tb7ie= l8yfkj374eu83453yqh4x4445

=A4=D1=AE=F0=A6n=BC=F6!=A8=D3=C2I=B2D=AA=BA =AE=F8=B4=BB=A4@=A4U!

=BB=B0=BA=F2=A6Y=A4@=B6=F4=A6=B350=A6~=BBs=A7@=B8g=C5=E7=AA=BA=A6n=A6Y=B2M= =B2D=A4=E2=A4u=A4T=A9=FA=AAv=A6B=BB=E6

=A8C=A6~=AEL=A4=D1=ABD=A8=D3=B4X=B6=F4=A4=A3=A5i=A1C

http://tinyurl.com/3gel2ds

=A6p=AAG=A4=A3=AF=E0=AA=BD=B1=B5=B3s=B5=B2 =BD=D0=BD=C6=BBs=BA=F4=A7}

ww87kxem55n6xh6426u667308kdsdjwwsa56m26t4ry603qeb6quhj78cjimoqop586028htme5= s7sof11qjfjxbuoxr3tt5r7hy86ep5pj1yjce88yttj5ny5v5rle8wa3s8yj28j4xy7u185akt5= 66pjya7272dog012qtn153s26goopxsjh5oa5y1b326881

=20=20=20=20=20
__._,_.___
=20=20=20=20=20=20=20=20 =20=20 =20=20=20
.

__,_._,___
--F91pC1vOneiCUechOfHw5c2UZCbFTOsn2sCLThS-- From david@fromorbit.com Tue Jun 28 03:45:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5S8jtck204139 for ; Tue, 28 Jun 2011 03:45:55 -0500 X-ASG-Debug-ID: 1309250752-2a1b02ca0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F33B634CFD for ; Tue, 28 Jun 2011 01:45:52 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id 3u6OsWJJDc7mGgv7 for ; Tue, 28 Jun 2011 01:45:52 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqADAByRCU55LChDgWdsb2JhbABSpzoVAQEWJiXLdA6GIgSiQw Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail07.adl2.internode.on.net with ESMTP; 28 Jun 2011 18:15:52 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QbTvL-0006ms-4j; Tue, 28 Jun 2011 18:45:35 +1000 Date: Tue, 28 Jun 2011 18:45:35 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: don't hard code the shell binary Subject: Re: [PATCH] xfsprogs: don't hard code the shell binary Message-ID: <20110628084535.GM32466@dastard> References: <1309245348-12638-1-git-send-email-david@fromorbit.com> <20110628074137.GA6123@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110628074137.GA6123@infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1309250753 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0407 1.0000 -1.7588 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.76 X-Barracuda-Spam-Status: No, SCORE=-1.76 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67353 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, Jun 28, 2011 at 03:41:37AM -0400, Christoph Hellwig wrote: > On Tue, Jun 28, 2011 at 05:15:48PM +1000, Dave Chinner wrote: > > From: Dave Chinner > > > > Recent changes to debian unstable user space have caused the > > xfsprogs build to break as certain shell functionality is being > > assumed by libtool and friends. The configure scripts test and > > select the correct shell, but the input files ignore this and hard > > code the shell to use and hence now break. > > > > Fix this by using the shell that the configure scripts decide is the > > right one to use. > > Looks good. The same fix should also be applied to xfsdump, xfstests > and dmapi. Yes, it should. I just haven't got to them yet ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Jun 28 03:49:51 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5S8npH0204274 for ; Tue, 28 Jun 2011 03:49:51 -0500 X-ASG-Debug-ID: 1309250989-63e901020000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E657434845 for ; Tue, 28 Jun 2011 01:49:50 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id ps1rEntcngwpr416 for ; Tue, 28 Jun 2011 01:49:50 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqADAKaUCU55LChDgWdsb2JhbABSpzoVAQEWJiXMAQ6GIgSiQw Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail07.adl2.internode.on.net with ESMTP; 28 Jun 2011 18:19:48 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QbTzQ-0006nD-0T; Tue, 28 Jun 2011 18:49:48 +1000 Date: Tue, 28 Jun 2011 18:49:47 +1000 From: Dave Chinner To: Allison Henderson Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org X-ASG-Orig-Subj: Re: [PATCH 1/3 v2] XFS TESTS: Fix 252 Failure: Relax fiemap filter Subject: Re: [PATCH 1/3 v2] XFS TESTS: Fix 252 Failure: Relax fiemap filter Message-ID: <20110628084947.GN32466@dastard> References: <1309235247-32650-1-git-send-email-achender@linux.vnet.ibm.com> <1309235247-32650-2-git-send-email-achender@linux.vnet.ibm.com> <20110628045903.GK32466@dastard> <4E0963D8.5030002@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4E0963D8.5030002@linux.vnet.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1309250990 X-Barracuda-Bayes: INNOCENT GLOBAL 0.2935 1.0000 -0.3760 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.38 X-Barracuda-Spam-Status: No, SCORE=-0.38 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67353 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, Jun 27, 2011 at 10:17:12PM -0700, Allison Henderson wrote: > On 06/27/2011 09:59 PM, Dave Chinner wrote: > >On Mon, Jun 27, 2011 at 09:27:25PM -0700, Allison Henderson wrote: > >I seriously dislike conditional parameter passing in shell scripts > >at the best of times, but for filter functions I really think it is > >the wrong thing to do. It significantly obfuscates the working of > >the function for no really good reason. > > > >Just write a new filter function, and factor out the common parts of > >them if the amount of code duplication is sufficient to make it > >desirable to do so. > > > > Ok, it doesn't look like a lot of code, I can separate them into their > own functions. > > >>+ md5sum $testfile | cut -d ' ' -f1 > > > >Why cut out the file name? It's not like it changes at all.... > > > > Oh, it looked like there's a pid attached to the file name, so I > thought I should remove that from the output Oh, it does too. My mistake, too trigger happy, just looking for ways to keep things relatively simple. Maybe using a wrapper function so if we ever need to modify it we only need to change one line of code would acheive the same thing? Cheers, Dave. -- Dave Chinner david@fromorbit.com From lczerner@redhat.com Tue Jun 28 04:24:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5S9Oux6205695 for ; Tue, 28 Jun 2011 04:24:56 -0500 X-ASG-Debug-ID: 1309253094-599303910000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 886BAE31C58; Tue, 28 Jun 2011 02:24:54 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id Eo31srCoiLkpinX9; Tue, 28 Jun 2011 02:24:54 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5S9OnSS015903 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 28 Jun 2011 05:24:49 -0400 Received: from dhcp-1-248.brq.redhat.com (dhcp-1-248.brq.redhat.com [10.34.1.248]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p5S9Ok2b003751 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 28 Jun 2011 05:24:48 -0400 Date: Tue, 28 Jun 2011 11:24:46 +0200 (CEST) From: Lukas Czerner X-X-Sender: lukas@dhcp-27-109.brq.redhat.com To: Dave Chinner cc: Lukas Czerner , xfs@oss.sgi.com, aelder@sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs_repair: Check if agno is inside the filesystem Subject: Re: [PATCH] xfs_repair: Check if agno is inside the filesystem In-Reply-To: <20110628012838.GI32466@dastard> Message-ID: References: <1309193610-17078-1-git-send-email-lczerner@redhat.com> <20110628012838.GI32466@dastard> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1309253095 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, 28 Jun 2011, Dave Chinner wrote: > On Mon, Jun 27, 2011 at 06:53:30PM +0200, Lukas Czerner wrote: > > When getting an inode tree pointer from an array inode_tree_ptrs, we > > should check if agno, which is used as a pointer to the array, lives > > within the file system, because if it is not, we can end up touching > > uninitialized memory. > > How do you get an agno outside the bounds of the filesystem? Hi Dave, in my particular case the problem was in longform_dir2_entry_check_data(). xfs_dir2_data_entry_t was read and we used inode numbed (xfs_dir2_data_entry_t)->inumber to compute AG number. However it contained garbage so the resulting agno was too high. In modify mode it was not a problem, because the inode was cleared in the earlies phase, but in no_modify mode, the was still there. > > > This commit fixes it by passing xfs_mount_t to affected functions and > > checking if agno really is inside the file system. > > We're slowly removing typedefs as we change code. So probably better > to use struct xfs_mount for all the places where you add an > xfs_mount_t. Will do. Thanks! -Lukas > > Otherwise seems fine. > > Cheers, > > Dave. > -- From lczerner@redhat.com Tue Jun 28 05:01:35 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_63, J_CHICKENPOX_64,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 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 p5SA1Zpo207096 for ; Tue, 28 Jun 2011 05:01:35 -0500 X-ASG-Debug-ID: 1309255294-179700fa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 61BB134D8E; Tue, 28 Jun 2011 03:01:34 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id GLAzl3t9yUGApwPC; Tue, 28 Jun 2011 03:01:34 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5SA1V7C027083 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 28 Jun 2011 06:01:31 -0400 Received: from dhcp-27-109.brq.redhat.com (dhcp-1-248.brq.redhat.com [10.34.1.248]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p5SA1TBA014173; Tue, 28 Jun 2011 06:01:29 -0400 From: Lukas Czerner To: xfs@oss.sgi.com Cc: aelder@sgi.com, david@fromorbit.com, Lukas Czerner X-ASG-Orig-Subj: [PATCH] xfs_repair: Check if agno is inside the filesystem Subject: [PATCH] xfs_repair: Check if agno is inside the filesystem Date: Tue, 28 Jun 2011 12:01:19 +0200 Message-Id: <1309255279-15608-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1309255295 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 When getting an inode tree pointer from an array inode_tree_ptrs, we should check if agno, which is used as a pointer to the array, lives within the file system, because if it is not, we can end up touching uninitialized memory. This commit fixes it by passing xfs_mount to affected functions and checking if agno really is inside the file system. This solves Red Hat bug #694706 Signed-off-by: Lukas Czerner Reviewed-by: Dave Chinner --- repair/dino_chunks.c | 24 ++++++++++++------------ repair/dinode.c | 2 +- repair/dir.c | 5 +++-- repair/dir2.c | 6 ++++-- repair/incore.h | 21 +++++++++++++++------ repair/incore_ino.c | 31 +++++++++++++++++++------------ repair/phase2.c | 4 ++-- repair/phase3.c | 2 +- repair/phase4.c | 6 +++--- repair/phase5.c | 2 +- repair/phase6.c | 25 +++++++++++++------------ repair/scan.c | 6 +++--- 12 files changed, 77 insertions(+), 57 deletions(-) diff --git a/repair/dino_chunks.c b/repair/dino_chunks.c index 734e9a8..9739da2 100644 --- a/repair/dino_chunks.c +++ b/repair/dino_chunks.c @@ -194,9 +194,9 @@ verify_inode_chunk(xfs_mount_t *mp, * put new inode record(s) into inode tree */ for (j = 0; j < chunks_pblock; j++) { - if ((irec_p = find_inode_rec(agno, start_agino)) + if ((irec_p = find_inode_rec(mp, agno, start_agino)) == NULL) { - irec_p = set_inode_free_alloc(agno, + irec_p = set_inode_free_alloc(mp, agno, start_agino); for (i = 1; i < XFS_INODES_PER_CHUNK; i++) set_inode_free(irec_p, i); @@ -254,7 +254,7 @@ verify_inode_chunk(xfs_mount_t *mp, start_agino = XFS_OFFBNO_TO_AGINO(mp, start_agbno, 0); *start_ino = XFS_AGINO_TO_INO(mp, agno, start_agino); - irec_p = set_inode_free_alloc(agno, + irec_p = set_inode_free_alloc(mp, agno, XFS_OFFBNO_TO_AGINO(mp, start_agbno, 0)); for (i = 1; i < XFS_INODES_PER_CHUNK; i++) @@ -292,7 +292,7 @@ verify_inode_chunk(xfs_mount_t *mp, */ irec_before_p = irec_after_p = NULL; - find_inode_rec_range(agno, XFS_OFFBNO_TO_AGINO(mp, start_agbno, 0), + find_inode_rec_range(mp, agno, XFS_OFFBNO_TO_AGINO(mp, start_agbno, 0), XFS_OFFBNO_TO_AGINO(mp, end_agbno, mp->m_sb.sb_inopblock - 1), &irec_before_p, &irec_after_p); @@ -470,9 +470,9 @@ verify_inode_chunk(xfs_mount_t *mp, start_agino = XFS_OFFBNO_TO_AGINO(mp, chunk_start_agbno, 0); *start_ino = XFS_AGINO_TO_INO(mp, agno, start_agino); - ASSERT(find_inode_rec(agno, start_agino) == NULL); + ASSERT(find_inode_rec(mp, agno, start_agino) == NULL); - irec_p = set_inode_free_alloc(agno, start_agino); + irec_p = set_inode_free_alloc(mp, agno, start_agino); for (i = 1; i < XFS_INODES_PER_CHUNK; i++) set_inode_free(irec_p, i); @@ -554,7 +554,7 @@ verify_aginode_chunk_irec(xfs_mount_t *mp, ino_tree_node_t *irec = NULL; if (verify_aginode_chunk(mp, agno, agino, &start_agino)) - irec = find_inode_rec(agno, start_agino); + irec = find_inode_rec(mp, agno, start_agino); return(irec); } @@ -1049,7 +1049,7 @@ process_aginodes( if ((ino_rec = next_ino_rec(ino_rec)) != NULL) num_inos += XFS_INODES_PER_CHUNK; - get_inode_rec(agno, prev_ino_rec); + get_inode_rec(mp, agno, prev_ino_rec); free_inode_rec(agno, prev_ino_rec); } @@ -1117,14 +1117,14 @@ check_uncertain_aginodes(xfs_mount_t *mp, xfs_agnumber_t agno) XFS_INODES_PER_CHUNK) continue; - if ((nrec = find_inode_rec(agno, agino)) == NULL) + if ((nrec = find_inode_rec(mp, agno, agino)) == NULL) if (!verify_aginum(mp, agno, agino)) if (verify_aginode_chunk(mp, agno, agino, &start)) got_some = 1; } - get_uncertain_inode_rec(agno, irec); + get_uncertain_inode_rec(mp, agno, irec); free_inode_rec(agno, irec); irec = findfirst_uncertain_inode_rec(agno); @@ -1207,7 +1207,7 @@ process_uncertain_aginodes(xfs_mount_t *mp, xfs_agnumber_t agno) XFS_INODES_PER_CHUNK) continue; - if ((nrec = find_inode_rec(agno, agino)) != NULL) + if ((nrec = find_inode_rec(mp, agno, agino)) != NULL) continue; /* @@ -1238,7 +1238,7 @@ process_uncertain_aginodes(xfs_mount_t *mp, xfs_agnumber_t agno) * now return the uncertain inode record to the free pool * and pull another one off the list for processing */ - get_uncertain_inode_rec(agno, irec); + get_uncertain_inode_rec(mp, agno, irec); free_inode_rec(agno, irec); irec = findfirst_uncertain_inode_rec(agno); diff --git a/repair/dinode.c b/repair/dinode.c index 3a092e4..f035321 100644 --- a/repair/dinode.c +++ b/repair/dinode.c @@ -854,7 +854,7 @@ get_agino_buf(xfs_mount_t *mp, xfs_buf_t *bp; int size; - if ((irec = find_inode_rec(agno, agino)) == NULL) + if ((irec = find_inode_rec(mp, agno, agino)) == NULL) return(NULL); size = XFS_FSB_TO_BB(mp, MAX(1, XFS_INODES_PER_CHUNK/inodes_per_block)); diff --git a/repair/dir.c b/repair/dir.c index 6e0d54b..9039360 100644 --- a/repair/dir.c +++ b/repair/dir.c @@ -173,7 +173,8 @@ process_shortform_dir( _("entry in shortform dir %llu references group quota inode %llu\n"), ino, lino); junkit = 1; - } else if ((irec_p = find_inode_rec(XFS_INO_TO_AGNO(mp, lino), + } else if ((irec_p = find_inode_rec(mp, + XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino))) != NULL) { /* * if inode is marked free and we're in inode @@ -1658,7 +1659,7 @@ _("entry #%d, bno %d in directory %llu references group quota inode %llu\n"), _("\twould clear ino number in entry %d...\n"), i); } - } else if ((irec_p = find_inode_rec( + } else if ((irec_p = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino))) != NULL) { /* diff --git a/repair/dir2.c b/repair/dir2.c index 55fe8ec..67ee274 100644 --- a/repair/dir2.c +++ b/repair/dir2.c @@ -928,7 +928,8 @@ process_sf_dir2( } else if (lino == mp->m_sb.sb_gquotino) { junkit = 1; junkreason = _("group quota"); - } else if ((irec_p = find_inode_rec(XFS_INO_TO_AGNO(mp, lino), + } else if ((irec_p = find_inode_rec(mp, + XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino))) != NULL) { /* * if inode is marked free and we're in inode @@ -1448,7 +1449,8 @@ process_dir2_data( } else if (ent_ino == mp->m_sb.sb_gquotino) { clearreason = _("group quota"); } else { - irec_p = find_inode_rec(XFS_INO_TO_AGNO(mp, ent_ino), + irec_p = find_inode_rec(mp, + XFS_INO_TO_AGNO(mp, ent_ino), XFS_INO_TO_AGINO(mp, ent_ino)); if (irec_p == NULL) { if (ino_discovery) { diff --git a/repair/incore.h b/repair/incore.h index 99853fb..5e3d95d 100644 --- a/repair/incore.h +++ b/repair/incore.h @@ -307,7 +307,8 @@ void free_inode_rec(xfs_agnumber_t agno, ino_tree_node_t *ino_rec); /* * get pulls the inode record from the good inode tree */ -void get_inode_rec(xfs_agnumber_t agno, ino_tree_node_t *ino_rec); +void get_inode_rec(struct xfs_mount *mp, xfs_agnumber_t agno, + ino_tree_node_t *ino_rec); extern avltree_desc_t **inode_tree_ptrs; static inline ino_tree_node_t * @@ -316,12 +317,17 @@ findfirst_inode_rec(xfs_agnumber_t agno) return((ino_tree_node_t *) inode_tree_ptrs[agno]->avl_firstino); } static inline ino_tree_node_t * -find_inode_rec(xfs_agnumber_t agno, xfs_agino_t ino) +find_inode_rec(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t ino) { + /* + * Is the AG inside the file system + */ + if (agno >= mp->m_sb.sb_agcount) + return NULL; return((ino_tree_node_t *) avl_findrange(inode_tree_ptrs[agno], ino)); } -void find_inode_rec_range(xfs_agnumber_t agno, +void find_inode_rec_range(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t start_ino, xfs_agino_t end_ino, ino_tree_node_t **first, ino_tree_node_t **last); @@ -330,8 +336,10 @@ void find_inode_rec_range(xfs_agnumber_t agno, * automatically marks it as "existing". Note -- all the inode * add/set/get routines assume a valid inode number. */ -ino_tree_node_t *set_inode_used_alloc(xfs_agnumber_t agno, xfs_agino_t ino); -ino_tree_node_t *set_inode_free_alloc(xfs_agnumber_t agno, xfs_agino_t ino); +ino_tree_node_t *set_inode_used_alloc(struct xfs_mount *mp, xfs_agnumber_t agno, + xfs_agino_t ino); +ino_tree_node_t *set_inode_free_alloc(struct xfs_mount *mp, xfs_agnumber_t agno, + xfs_agino_t ino); void print_inode_list(xfs_agnumber_t agno); void print_uncertain_inode_list(xfs_agnumber_t agno); @@ -346,7 +354,8 @@ void add_inode_uncertain(xfs_mount_t *mp, xfs_ino_t ino, int free); void add_aginode_uncertain(xfs_agnumber_t agno, xfs_agino_t agino, int free); -void get_uncertain_inode_rec(xfs_agnumber_t agno, +void get_uncertain_inode_rec(struct xfs_mount *mp, + xfs_agnumber_t agno, ino_tree_node_t *ino_rec); void clear_uncertain_ino_cache(xfs_agnumber_t agno); diff --git a/repair/incore_ino.c b/repair/incore_ino.c index febe0c9..7827ff5 100644 --- a/repair/incore_ino.c +++ b/repair/incore_ino.c @@ -418,9 +418,11 @@ add_inode_uncertain(xfs_mount_t *mp, xfs_ino_t ino, int free) * pull the indicated inode record out of the uncertain inode tree */ void -get_uncertain_inode_rec(xfs_agnumber_t agno, ino_tree_node_t *ino_rec) +get_uncertain_inode_rec(struct xfs_mount *mp, xfs_agnumber_t agno, + ino_tree_node_t *ino_rec) { ASSERT(inode_tree_ptrs != NULL); + ASSERT(agno < mp->m_sb.sb_agcount); ASSERT(inode_tree_ptrs[agno] != NULL); avl_delete(inode_uncertain_tree_ptrs[agno], &ino_rec->avl_node); @@ -474,7 +476,7 @@ clear_uncertain_ino_cache(xfs_agnumber_t agno) * don't. */ static ino_tree_node_t * -add_inode(xfs_agnumber_t agno, xfs_agino_t ino) +add_inode(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t ino) { ino_tree_node_t *ino_rec; @@ -495,9 +497,10 @@ add_inode(xfs_agnumber_t agno, xfs_agino_t ino) * pull the indicated inode record out of the inode tree */ void -get_inode_rec(xfs_agnumber_t agno, ino_tree_node_t *ino_rec) +get_inode_rec(struct xfs_mount *mp, xfs_agnumber_t agno, ino_tree_node_t *ino_rec) { ASSERT(inode_tree_ptrs != NULL); + ASSERT(agno < mp->m_sb.sb_agcount); ASSERT(inode_tree_ptrs[agno] != NULL); avl_delete(inode_tree_ptrs[agno], &ino_rec->avl_node); @@ -518,14 +521,18 @@ free_inode_rec(xfs_agnumber_t agno, ino_tree_node_t *ino_rec) } void -find_inode_rec_range(xfs_agnumber_t agno, xfs_agino_t start_ino, - xfs_agino_t end_ino, ino_tree_node_t **first, - ino_tree_node_t **last) +find_inode_rec_range(struct xfs_mount *mp, xfs_agnumber_t agno, + xfs_agino_t start_ino, xfs_agino_t end_ino, + ino_tree_node_t **first, ino_tree_node_t **last) { *first = *last = NULL; - avl_findranges(inode_tree_ptrs[agno], start_ino, - end_ino, (avlnode_t **) first, (avlnode_t **) last); + /* + * Is the AG inside the file system ? + */ + if (agno < mp->m_sb.sb_agcount) + avl_findranges(inode_tree_ptrs[agno], start_ino, + end_ino, (avlnode_t **) first, (avlnode_t **) last); } /* @@ -534,7 +541,7 @@ find_inode_rec_range(xfs_agnumber_t agno, xfs_agino_t start_ino, * whichever alignment is larger. */ ino_tree_node_t * -set_inode_used_alloc(xfs_agnumber_t agno, xfs_agino_t ino) +set_inode_used_alloc(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t ino) { ino_tree_node_t *ino_rec; @@ -543,7 +550,7 @@ set_inode_used_alloc(xfs_agnumber_t agno, xfs_agino_t ino) * is too see if the chunk overlaps another chunk * already in the tree */ - ino_rec = add_inode(agno, ino); + ino_rec = add_inode(mp, agno, ino); ASSERT(ino_rec != NULL); ASSERT(ino >= ino_rec->ino_startnum && @@ -555,11 +562,11 @@ set_inode_used_alloc(xfs_agnumber_t agno, xfs_agino_t ino) } ino_tree_node_t * -set_inode_free_alloc(xfs_agnumber_t agno, xfs_agino_t ino) +set_inode_free_alloc(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t ino) { ino_tree_node_t *ino_rec; - ino_rec = add_inode(agno, ino); + ino_rec = add_inode(mp, agno, ino); ASSERT(ino_rec != NULL); ASSERT(ino >= ino_rec->ino_startnum && diff --git a/repair/phase2.c b/repair/phase2.c index 1e9377e..51bd04e 100644 --- a/repair/phase2.c +++ b/repair/phase2.c @@ -145,7 +145,7 @@ phase2( /* * make sure we know about the root inode chunk */ - if ((ino_rec = find_inode_rec(0, mp->m_sb.sb_rootino)) == NULL) { + if ((ino_rec = find_inode_rec(mp, 0, mp->m_sb.sb_rootino)) == NULL) { ASSERT(mp->m_sb.sb_rbmino == mp->m_sb.sb_rootino + 1 && mp->m_sb.sb_rsumino == mp->m_sb.sb_rootino + 2); do_warn(_("root inode chunk not found\n")); @@ -153,7 +153,7 @@ phase2( /* * mark the first 3 used, the rest are free */ - ino_rec = set_inode_used_alloc(0, + ino_rec = set_inode_used_alloc(mp, 0, (xfs_agino_t) mp->m_sb.sb_rootino); set_inode_used(ino_rec, 1); set_inode_used(ino_rec, 2); diff --git a/repair/phase3.c b/repair/phase3.c index 32e855c..fea81f8 100644 --- a/repair/phase3.c +++ b/repair/phase3.c @@ -56,7 +56,7 @@ walk_unlinked_list(xfs_mount_t *mp, xfs_agnumber_t agno, xfs_agino_t start_ino) * inode. if so, put it on the uncertain inode list * and set block map appropriately. */ - if (find_inode_rec(agno, current_ino) == NULL) { + if (find_inode_rec(mp, agno, current_ino) == NULL) { add_aginode_uncertain(agno, current_ino, 1); agbno = XFS_AGINO_TO_AGBNO(mp, current_ino); diff --git a/repair/phase4.c b/repair/phase4.c index aaef1f9..374ed39 100644 --- a/repair/phase4.c +++ b/repair/phase4.c @@ -49,7 +49,7 @@ quotino_check(xfs_mount_t *mp) if (verify_inum(mp, mp->m_sb.sb_uquotino)) irec = NULL; else - irec = find_inode_rec( + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_uquotino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_uquotino)); @@ -65,7 +65,7 @@ quotino_check(xfs_mount_t *mp) if (verify_inum(mp, mp->m_sb.sb_gquotino)) irec = NULL; else - irec = find_inode_rec( + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_gquotino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_gquotino)); @@ -206,7 +206,7 @@ phase4(xfs_mount_t *mp) set_progress_msg(PROG_FMT_DUP_EXTENT, (__uint64_t) glob_agcount); - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)); /* diff --git a/repair/phase5.c b/repair/phase5.c index d6a0f6a..125ea01 100644 --- a/repair/phase5.c +++ b/repair/phase5.c @@ -1383,7 +1383,7 @@ keep_fsinos(xfs_mount_t *mp) ino_tree_node_t *irec; int i; - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)); for (i = 0; i < 3; i++) diff --git a/repair/phase6.c b/repair/phase6.c index d056063..ad6d16f 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -806,7 +806,7 @@ mk_root_dir(xfs_mount_t *mp) libxfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES|XFS_TRANS_SYNC); - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)); set_inode_isadir(irec, XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino) - irec->ino_startnum); @@ -897,7 +897,8 @@ mk_orphanage(xfs_mount_t *mp) * for .. in the new directory */ pip->i_d.di_nlink++; - add_inode_ref(find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), + add_inode_ref(find_inode_rec(mp, + XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)), 0); @@ -966,7 +967,7 @@ mv_orphanage( do_error(_("%d - couldn't iget disconnected inode\n"), err); if (isa_dir) { - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, orphanage_ino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, orphanage_ino), XFS_INO_TO_AGINO(mp, orphanage_ino)); if (irec) ino_offset = XFS_INO_TO_AGINO(mp, orphanage_ino) - @@ -1379,7 +1380,7 @@ lf_block_dir_entry_check(xfs_mount_t *mp, /* * ok, now handle the rest of the cases besides '.' and '..' */ - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, lino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino)); if (irec == NULL) { @@ -2044,7 +2045,7 @@ longform_dir2_entry_check_data( fname[dep->namelen] = '\0'; ASSERT(inum != NULLFSINO); - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, inum), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, inum), XFS_INO_TO_AGINO(mp, inum)); if (irec == NULL) { nbad++; @@ -2680,7 +2681,7 @@ shortform_dir_entry_check(xfs_mount_t *mp, ASSERT(no_modify || lino != NULLFSINO); ASSERT(no_modify || !verify_inum(mp, lino)); - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, lino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino)); if (irec == NULL) { do_warn(_("entry \"%s\" in shortform dir %llu " @@ -3004,7 +3005,7 @@ shortform_dir2_entry_check(xfs_mount_t *mp, continue; } - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, lino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino)); if (irec == NULL) { @@ -3493,7 +3494,7 @@ mark_standalone_inodes(xfs_mount_t *mp) ino_tree_node_t *irec; int offset; - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rbmino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rbmino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rbmino)); ASSERT(irec != NULL); @@ -3503,7 +3504,7 @@ mark_standalone_inodes(xfs_mount_t *mp) add_inode_reached(irec, offset); - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rsumino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rsumino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rsumino)); offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rsumino) - @@ -3516,7 +3517,7 @@ mark_standalone_inodes(xfs_mount_t *mp) if (fs_quotas) { if (mp->m_sb.sb_uquotino && mp->m_sb.sb_uquotino != NULLFSINO) { - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_uquotino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_uquotino)); offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_uquotino) @@ -3525,7 +3526,7 @@ mark_standalone_inodes(xfs_mount_t *mp) } if (mp->m_sb.sb_gquotino && mp->m_sb.sb_gquotino != NULLFSINO) { - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_gquotino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_gquotino)); offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_gquotino) @@ -3723,7 +3724,7 @@ _(" - resetting contents of realtime bitmap and summary inodes\n")); do_log(_(" - traversing filesystem ...\n")); - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)); /* diff --git a/repair/scan.c b/repair/scan.c index afed693..aeb31fc 100644 --- a/repair/scan.c +++ b/repair/scan.c @@ -810,7 +810,7 @@ _("inode chunk claims used block, inobt block - agno %d, bno %d, inopb %d\n"), /* * ensure only one avl entry per chunk */ - find_inode_rec_range(agno, ino, ino + XFS_INODES_PER_CHUNK, + find_inode_rec_range(mp, agno, ino, ino + XFS_INODES_PER_CHUNK, &first_rec, &last_rec); if (first_rec != NULL) { /* @@ -841,9 +841,9 @@ _("inode rec for ino %llu (%d/%d) overlaps existing rec (start %d/%d)\n"), if (!suspect) { if (XFS_INOBT_IS_FREE_DISK(rp, 0)) { nfree++; - ino_rec = set_inode_free_alloc(agno, ino); + ino_rec = set_inode_free_alloc(mp, agno, ino); } else { - ino_rec = set_inode_used_alloc(agno, ino); + ino_rec = set_inode_used_alloc(mp, agno, ino); } for (j = 1; j < XFS_INODES_PER_CHUNK; j++) { if (XFS_INOBT_IS_FREE_DISK(rp, j)) { -- 1.7.4.4 From lczerner@redhat.com Tue Jun 28 06:14:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5SBEfvm212075 for ; Tue, 28 Jun 2011 06:14:43 -0500 X-ASG-Debug-ID: 1309259680-365d00750000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 675301D7C1AE; Tue, 28 Jun 2011 04:14:40 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 5iK6uSddcvdCz3rD; Tue, 28 Jun 2011 04:14:40 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5SBEbGG015603 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 28 Jun 2011 07:14:37 -0400 Received: from dhcp-1-248.brq.redhat.com (dhcp-1-248.brq.redhat.com [10.34.1.248]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p5SBEXtY002214 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 28 Jun 2011 07:14:35 -0400 Date: Tue, 28 Jun 2011 13:14:33 +0200 (CEST) From: Lukas Czerner X-X-Sender: lukas@dhcp-27-109.brq.redhat.com To: Lukas Czerner cc: xfs@oss.sgi.com, aelder@sgi.com, david@fromorbit.com X-ASG-Orig-Subj: Re: [PATCH] xfs_repair: Check if agno is inside the filesystem Subject: Re: [PATCH] xfs_repair: Check if agno is inside the filesystem In-Reply-To: <1309255279-15608-1-git-send-email-lczerner@redhat.com> Message-ID: References: <1309255279-15608-1-git-send-email-lczerner@redhat.com> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1309259681 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, 28 Jun 2011, Lukas Czerner wrote: > When getting an inode tree pointer from an array inode_tree_ptrs, we > should check if agno, which is used as a pointer to the array, lives > within the file system, because if it is not, we can end up touching > uninitialized memory. > > This commit fixes it by passing xfs_mount to affected functions and > checking if agno really is inside the file system. > > This solves Red Hat bug #694706 > > Signed-off-by: Lukas Czerner > Reviewed-by: Dave Chinner I forgot to mention a version of the patch. This is version 2. Thanks! -Lukas From david@fromorbit.com Tue Jun 28 06:37:10 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5SBbANE215898 for ; Tue, 28 Jun 2011 06:37:10 -0500 X-ASG-Debug-ID: 1309261027-61a700b00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6CA283516B for ; Tue, 28 Jun 2011 04:37:08 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id vvVnclwLygIsILzq for ; Tue, 28 Jun 2011 04:37:08 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqADAFa7CU55LChDgWdsb2JhbABSpzsVAQEWJiXKXQ6GIgSaF4gs Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail07.adl2.internode.on.net with ESMTP; 28 Jun 2011 21:07:05 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QbWbG-00073C-Tp; Tue, 28 Jun 2011 21:37:02 +1000 Date: Tue, 28 Jun 2011 21:37:02 +1000 From: Dave Chinner To: Lukas Czerner Cc: xfs@oss.sgi.com, aelder@sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs_repair: Check if agno is inside the filesystem Subject: Re: [PATCH] xfs_repair: Check if agno is inside the filesystem Message-ID: <20110628113702.GO32466@dastard> References: <1309193610-17078-1-git-send-email-lczerner@redhat.com> <20110628012838.GI32466@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1309261029 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1232 1.0000 -1.2554 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.26 X-Barracuda-Spam-Status: No, SCORE=-1.26 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67364 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, Jun 28, 2011 at 11:24:46AM +0200, Lukas Czerner wrote: > On Tue, 28 Jun 2011, Dave Chinner wrote: > > > On Mon, Jun 27, 2011 at 06:53:30PM +0200, Lukas Czerner wrote: > > > When getting an inode tree pointer from an array inode_tree_ptrs, we > > > should check if agno, which is used as a pointer to the array, lives > > > within the file system, because if it is not, we can end up touching > > > uninitialized memory. > > > > How do you get an agno outside the bounds of the filesystem? > > Hi Dave, > > in my particular case the problem was in > longform_dir2_entry_check_data(). xfs_dir2_data_entry_t was read and we > used inode numbed (xfs_dir2_data_entry_t)->inumber to compute AG number. > However it contained garbage so the resulting agno was too high. In > modify mode it was not a problem, because the inode was cleared in the > earlies phase, but in no_modify mode, the was still there. Ok, a corrupted directory entry is the cause. Might be worthwhile mentioning that in the commit log. Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@redhat.com Tue Jun 28 08:29:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5SDThrm228471 for ; Tue, 28 Jun 2011 08:29:43 -0500 X-ASG-Debug-ID: 1309267782-4c5802db0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F197F12E5BC3 for ; Tue, 28 Jun 2011 06:29:42 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id gFk2iauZeFy3It9E for ; Tue, 28 Jun 2011 06:29:42 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5SDTRuN004374 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 28 Jun 2011 09:29:27 -0400 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p5SDTP4h000614 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Tue, 28 Jun 2011 09:29:26 -0400 Message-ID: <4E09D735.5060000@redhat.com> Date: Tue, 28 Jun 2011 08:29:25 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11 MIME-Version: 1.0 To: Allison Henderson CC: Dave Chinner , xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, Ext4 Developers List , Josef Bacik X-ASG-Orig-Subj: Re: [PATCH 2/3 v2] XFS TESTS: Fix 252 Failure: Update 252 Golden Output Subject: Re: [PATCH 2/3 v2] XFS TESTS: Fix 252 Failure: Update 252 Golden Output References: <1309235247-32650-1-git-send-email-achender@linux.vnet.ibm.com> <1309235247-32650-3-git-send-email-achender@linux.vnet.ibm.com> <20110628050900.GL32466@dastard> <4E09660B.7050706@linux.vnet.ibm.com> In-Reply-To: <4E09660B.7050706@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1309267782 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 6/28/11 12:26 AM, Allison Henderson wrote: > On 06/27/2011 10:09 PM, Dave Chinner wrote: >> On Mon, Jun 27, 2011 at 09:27:26PM -0700, Allison Henderson wrote: >>> New filtered golden output for test 252 >>> >>> Signed-off-by: Allison Henderson >>> --- >>> :100644 100644 930c924... fcfd121... M 252.out >>> 252.out | 272 +++++++++++++++++++++++++++++++++++++++------------------------ >>> 1 files changed, 170 insertions(+), 102 deletions(-) >>> >>> diff --git a/252.out b/252.out >>> index 930c924..fcfd121 100644 >>> --- a/252.out >>> +++ b/252.out >>> @@ -1,239 +1,307 @@ >>> QA output created by 252 >>> 1. into a hole >>> +daa100df6e6711906b61c9ab5aa16032 >>> 2. into allocated space >>> -0: [0..7]: data >>> +0: [0..7]: extent >>> 1: [8..23]: hole >>> -2: [24..39]: data >>> +2: [24..39]: extent >>> +cc58a7417c2d7763adc45b6fcd3fa024 >> >> I don't really like the way this weakens the test for XFS. With this >> change, the test no longer is checking that unwritten extent >> behaviour is correct. >> >> Rather than weakening the test, perhaps it would be better to >> execute 252 for XFS only (with the md5sums added), and then >> duplicate it to a new test for all filesystems to run with the >> weaker result checking that using the new filter function gives us. >> With the amount of common code the two tests share, it should be >> trivial to do this.... >> > > Alrighty, that sounds pretty straight forward, as long as every one > is in agreement. I think that would help retain the tests > effectiveness. Eric, Josef, what are your thoughts? Yeah, I agree, I share Dave's concerns and that sounds like a good way to go. Thanks, -Eric > Allison Henderson > >> Cheers, >> >> Dave. > From achender@linux.vnet.ibm.com Tue Jun 28 09:03:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_62, J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p5SE37Vp229764 for ; Tue, 28 Jun 2011 09:03:07 -0500 X-ASG-Debug-ID: 1309269787-63e000550000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e37.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6A3931E5339B for ; Tue, 28 Jun 2011 07:03:07 -0700 (PDT) Received: from e37.co.us.ibm.com (e37.co.us.ibm.com [32.97.110.158]) by cuda.sgi.com with ESMTP id 35S5SRLkeZHTXKX8 for ; Tue, 28 Jun 2011 07:03:07 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay02.boulder.ibm.com (d03relay02.boulder.ibm.com [9.17.195.227]) by e37.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5SE00qk003948 for ; Tue, 28 Jun 2011 08:00:00 -0600 Received: from d03av03.boulder.ibm.com (d03av03.boulder.ibm.com [9.17.195.169]) by d03relay02.boulder.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id p5SE2huT021536 for ; Tue, 28 Jun 2011 08:02:45 -0600 Received: from d03av03.boulder.ibm.com (loopback [127.0.0.1]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5S82fZi015371 for ; Tue, 28 Jun 2011 02:02:41 -0600 Received: from lc4eb0185863151.ibm.com (sig-9-65-20-193.mts.ibm.com [9.65.20.193]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5S82Jk5012677; Tue, 28 Jun 2011 02:02:19 -0600 Message-ID: <4E09DEEB.7070908@linux.vnet.ibm.com> Date: Tue, 28 Jun 2011 07:02:19 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Allison Henderson CC: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org X-ASG-Orig-Subj: Re: [PATCH 2/2 v6] XFS TESTS: ENOSPC Punch Hole: Add new test 255 Subject: Re: [PATCH 2/2 v6] XFS TESTS: ENOSPC Punch Hole: Add new test 255 References: <1309239163-3975-1-git-send-email-achender@linux.vnet.ibm.com> <1309239163-3975-3-git-send-email-achender@linux.vnet.ibm.com> In-Reply-To: <1309239163-3975-3-git-send-email-achender@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e37.co.us.ibm.com[32.97.110.158] X-Barracuda-Start-Time: 1309269787 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 06/27/2011 10:32 PM, Allison Henderson wrote: > This patch adds a new test 255 that tests that a hole can be punched even when the > disk is full. Reserved blocks should be used to allow a punch hole to proceed even > when there is not enough blocks to further fragment the file. To test this, the > file system is fragmented by punching holes in regular intervals and filling > the file system between punches. This will eventually force the file system to use > reserved blocks to proceed with the punch hole operation. > > The work in this patch is a continuation from a previous patch set that has been > partially accepted. > > Signed-off-by: Allison Henderson > --- > > v5->v6 > > Test moved out of 252 and put in its own test 255 > > _fill_fs and _test_full_fs_punch have been moved from common.punch > to test 255 and modified to use the _user_do routines in common.rc > > _fill_fs has been optimized to stop once files smaller than a block > cannot be created. > > :100644 100644 1f86075... c045e70... M group > group | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/group b/group > index 1f86075..c045e70 100644 > --- a/group > +++ b/group > @@ -368,3 +368,4 @@ deprecated > 252 auto quick prealloc > 253 auto quick > 254 auto quick > +255 auto quick Ah, sorry I obviously messed up the file add here. My apologies for the confusion! Will resend this one. Allison From lczerner@redhat.com Tue Jun 28 09:26:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_63, J_CHICKENPOX_64,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 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 p5SEQMcV230937 for ; Tue, 28 Jun 2011 09:26:22 -0500 X-ASG-Debug-ID: 1309271180-63de01930000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 99B081E53561; Tue, 28 Jun 2011 07:26:20 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id eXeAl9IV7xdVRnpu; Tue, 28 Jun 2011 07:26:20 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5SEQDc7022918 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 28 Jun 2011 10:26:13 -0400 Received: from dhcp-27-109.brq.redhat.com (dhcp-1-248.brq.redhat.com [10.34.1.248]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p5SEQBnJ028280; Tue, 28 Jun 2011 10:26:12 -0400 From: Lukas Czerner To: xfs@oss.sgi.com Cc: aelder@sgi.com, david@fromorbit.com, Lukas Czerner X-ASG-Orig-Subj: [PATCH v3] xfs_repair: Check if agno is inside the filesystem Subject: [PATCH v3] xfs_repair: Check if agno is inside the filesystem Date: Tue, 28 Jun 2011 16:26:04 +0200 Message-Id: <1309271164-29794-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1309271181 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 When getting an inode tree pointer from an array inode_tree_ptrs, we should check if agno, which is used as a pointer to the array, lives within the file system, because if it is not, we can end up touching uninitialized memory. This may happen if we have corrupted directory entry. This commit fixes it by passing xfs_mount to affected functions and checking if agno really is inside the file system. This solves Red Hat bug #694706 Signed-off-by: Lukas Czerner --- [v2]: use struct xfs_mount instead of xfs_mount_t [v3]: Update commit description repair/dino_chunks.c | 24 ++++++++++++------------ repair/dinode.c | 2 +- repair/dir.c | 5 +++-- repair/dir2.c | 6 ++++-- repair/incore.h | 21 +++++++++++++++------ repair/incore_ino.c | 31 +++++++++++++++++++------------ repair/phase2.c | 4 ++-- repair/phase3.c | 2 +- repair/phase4.c | 6 +++--- repair/phase5.c | 2 +- repair/phase6.c | 25 +++++++++++++------------ repair/scan.c | 6 +++--- 12 files changed, 77 insertions(+), 57 deletions(-) diff --git a/repair/dino_chunks.c b/repair/dino_chunks.c index 734e9a8..9739da2 100644 --- a/repair/dino_chunks.c +++ b/repair/dino_chunks.c @@ -194,9 +194,9 @@ verify_inode_chunk(xfs_mount_t *mp, * put new inode record(s) into inode tree */ for (j = 0; j < chunks_pblock; j++) { - if ((irec_p = find_inode_rec(agno, start_agino)) + if ((irec_p = find_inode_rec(mp, agno, start_agino)) == NULL) { - irec_p = set_inode_free_alloc(agno, + irec_p = set_inode_free_alloc(mp, agno, start_agino); for (i = 1; i < XFS_INODES_PER_CHUNK; i++) set_inode_free(irec_p, i); @@ -254,7 +254,7 @@ verify_inode_chunk(xfs_mount_t *mp, start_agino = XFS_OFFBNO_TO_AGINO(mp, start_agbno, 0); *start_ino = XFS_AGINO_TO_INO(mp, agno, start_agino); - irec_p = set_inode_free_alloc(agno, + irec_p = set_inode_free_alloc(mp, agno, XFS_OFFBNO_TO_AGINO(mp, start_agbno, 0)); for (i = 1; i < XFS_INODES_PER_CHUNK; i++) @@ -292,7 +292,7 @@ verify_inode_chunk(xfs_mount_t *mp, */ irec_before_p = irec_after_p = NULL; - find_inode_rec_range(agno, XFS_OFFBNO_TO_AGINO(mp, start_agbno, 0), + find_inode_rec_range(mp, agno, XFS_OFFBNO_TO_AGINO(mp, start_agbno, 0), XFS_OFFBNO_TO_AGINO(mp, end_agbno, mp->m_sb.sb_inopblock - 1), &irec_before_p, &irec_after_p); @@ -470,9 +470,9 @@ verify_inode_chunk(xfs_mount_t *mp, start_agino = XFS_OFFBNO_TO_AGINO(mp, chunk_start_agbno, 0); *start_ino = XFS_AGINO_TO_INO(mp, agno, start_agino); - ASSERT(find_inode_rec(agno, start_agino) == NULL); + ASSERT(find_inode_rec(mp, agno, start_agino) == NULL); - irec_p = set_inode_free_alloc(agno, start_agino); + irec_p = set_inode_free_alloc(mp, agno, start_agino); for (i = 1; i < XFS_INODES_PER_CHUNK; i++) set_inode_free(irec_p, i); @@ -554,7 +554,7 @@ verify_aginode_chunk_irec(xfs_mount_t *mp, ino_tree_node_t *irec = NULL; if (verify_aginode_chunk(mp, agno, agino, &start_agino)) - irec = find_inode_rec(agno, start_agino); + irec = find_inode_rec(mp, agno, start_agino); return(irec); } @@ -1049,7 +1049,7 @@ process_aginodes( if ((ino_rec = next_ino_rec(ino_rec)) != NULL) num_inos += XFS_INODES_PER_CHUNK; - get_inode_rec(agno, prev_ino_rec); + get_inode_rec(mp, agno, prev_ino_rec); free_inode_rec(agno, prev_ino_rec); } @@ -1117,14 +1117,14 @@ check_uncertain_aginodes(xfs_mount_t *mp, xfs_agnumber_t agno) XFS_INODES_PER_CHUNK) continue; - if ((nrec = find_inode_rec(agno, agino)) == NULL) + if ((nrec = find_inode_rec(mp, agno, agino)) == NULL) if (!verify_aginum(mp, agno, agino)) if (verify_aginode_chunk(mp, agno, agino, &start)) got_some = 1; } - get_uncertain_inode_rec(agno, irec); + get_uncertain_inode_rec(mp, agno, irec); free_inode_rec(agno, irec); irec = findfirst_uncertain_inode_rec(agno); @@ -1207,7 +1207,7 @@ process_uncertain_aginodes(xfs_mount_t *mp, xfs_agnumber_t agno) XFS_INODES_PER_CHUNK) continue; - if ((nrec = find_inode_rec(agno, agino)) != NULL) + if ((nrec = find_inode_rec(mp, agno, agino)) != NULL) continue; /* @@ -1238,7 +1238,7 @@ process_uncertain_aginodes(xfs_mount_t *mp, xfs_agnumber_t agno) * now return the uncertain inode record to the free pool * and pull another one off the list for processing */ - get_uncertain_inode_rec(agno, irec); + get_uncertain_inode_rec(mp, agno, irec); free_inode_rec(agno, irec); irec = findfirst_uncertain_inode_rec(agno); diff --git a/repair/dinode.c b/repair/dinode.c index 3a092e4..f035321 100644 --- a/repair/dinode.c +++ b/repair/dinode.c @@ -854,7 +854,7 @@ get_agino_buf(xfs_mount_t *mp, xfs_buf_t *bp; int size; - if ((irec = find_inode_rec(agno, agino)) == NULL) + if ((irec = find_inode_rec(mp, agno, agino)) == NULL) return(NULL); size = XFS_FSB_TO_BB(mp, MAX(1, XFS_INODES_PER_CHUNK/inodes_per_block)); diff --git a/repair/dir.c b/repair/dir.c index 6e0d54b..9039360 100644 --- a/repair/dir.c +++ b/repair/dir.c @@ -173,7 +173,8 @@ process_shortform_dir( _("entry in shortform dir %llu references group quota inode %llu\n"), ino, lino); junkit = 1; - } else if ((irec_p = find_inode_rec(XFS_INO_TO_AGNO(mp, lino), + } else if ((irec_p = find_inode_rec(mp, + XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino))) != NULL) { /* * if inode is marked free and we're in inode @@ -1658,7 +1659,7 @@ _("entry #%d, bno %d in directory %llu references group quota inode %llu\n"), _("\twould clear ino number in entry %d...\n"), i); } - } else if ((irec_p = find_inode_rec( + } else if ((irec_p = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino))) != NULL) { /* diff --git a/repair/dir2.c b/repair/dir2.c index 55fe8ec..67ee274 100644 --- a/repair/dir2.c +++ b/repair/dir2.c @@ -928,7 +928,8 @@ process_sf_dir2( } else if (lino == mp->m_sb.sb_gquotino) { junkit = 1; junkreason = _("group quota"); - } else if ((irec_p = find_inode_rec(XFS_INO_TO_AGNO(mp, lino), + } else if ((irec_p = find_inode_rec(mp, + XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino))) != NULL) { /* * if inode is marked free and we're in inode @@ -1448,7 +1449,8 @@ process_dir2_data( } else if (ent_ino == mp->m_sb.sb_gquotino) { clearreason = _("group quota"); } else { - irec_p = find_inode_rec(XFS_INO_TO_AGNO(mp, ent_ino), + irec_p = find_inode_rec(mp, + XFS_INO_TO_AGNO(mp, ent_ino), XFS_INO_TO_AGINO(mp, ent_ino)); if (irec_p == NULL) { if (ino_discovery) { diff --git a/repair/incore.h b/repair/incore.h index 99853fb..5e3d95d 100644 --- a/repair/incore.h +++ b/repair/incore.h @@ -307,7 +307,8 @@ void free_inode_rec(xfs_agnumber_t agno, ino_tree_node_t *ino_rec); /* * get pulls the inode record from the good inode tree */ -void get_inode_rec(xfs_agnumber_t agno, ino_tree_node_t *ino_rec); +void get_inode_rec(struct xfs_mount *mp, xfs_agnumber_t agno, + ino_tree_node_t *ino_rec); extern avltree_desc_t **inode_tree_ptrs; static inline ino_tree_node_t * @@ -316,12 +317,17 @@ findfirst_inode_rec(xfs_agnumber_t agno) return((ino_tree_node_t *) inode_tree_ptrs[agno]->avl_firstino); } static inline ino_tree_node_t * -find_inode_rec(xfs_agnumber_t agno, xfs_agino_t ino) +find_inode_rec(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t ino) { + /* + * Is the AG inside the file system + */ + if (agno >= mp->m_sb.sb_agcount) + return NULL; return((ino_tree_node_t *) avl_findrange(inode_tree_ptrs[agno], ino)); } -void find_inode_rec_range(xfs_agnumber_t agno, +void find_inode_rec_range(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t start_ino, xfs_agino_t end_ino, ino_tree_node_t **first, ino_tree_node_t **last); @@ -330,8 +336,10 @@ void find_inode_rec_range(xfs_agnumber_t agno, * automatically marks it as "existing". Note -- all the inode * add/set/get routines assume a valid inode number. */ -ino_tree_node_t *set_inode_used_alloc(xfs_agnumber_t agno, xfs_agino_t ino); -ino_tree_node_t *set_inode_free_alloc(xfs_agnumber_t agno, xfs_agino_t ino); +ino_tree_node_t *set_inode_used_alloc(struct xfs_mount *mp, xfs_agnumber_t agno, + xfs_agino_t ino); +ino_tree_node_t *set_inode_free_alloc(struct xfs_mount *mp, xfs_agnumber_t agno, + xfs_agino_t ino); void print_inode_list(xfs_agnumber_t agno); void print_uncertain_inode_list(xfs_agnumber_t agno); @@ -346,7 +354,8 @@ void add_inode_uncertain(xfs_mount_t *mp, xfs_ino_t ino, int free); void add_aginode_uncertain(xfs_agnumber_t agno, xfs_agino_t agino, int free); -void get_uncertain_inode_rec(xfs_agnumber_t agno, +void get_uncertain_inode_rec(struct xfs_mount *mp, + xfs_agnumber_t agno, ino_tree_node_t *ino_rec); void clear_uncertain_ino_cache(xfs_agnumber_t agno); diff --git a/repair/incore_ino.c b/repair/incore_ino.c index febe0c9..7827ff5 100644 --- a/repair/incore_ino.c +++ b/repair/incore_ino.c @@ -418,9 +418,11 @@ add_inode_uncertain(xfs_mount_t *mp, xfs_ino_t ino, int free) * pull the indicated inode record out of the uncertain inode tree */ void -get_uncertain_inode_rec(xfs_agnumber_t agno, ino_tree_node_t *ino_rec) +get_uncertain_inode_rec(struct xfs_mount *mp, xfs_agnumber_t agno, + ino_tree_node_t *ino_rec) { ASSERT(inode_tree_ptrs != NULL); + ASSERT(agno < mp->m_sb.sb_agcount); ASSERT(inode_tree_ptrs[agno] != NULL); avl_delete(inode_uncertain_tree_ptrs[agno], &ino_rec->avl_node); @@ -474,7 +476,7 @@ clear_uncertain_ino_cache(xfs_agnumber_t agno) * don't. */ static ino_tree_node_t * -add_inode(xfs_agnumber_t agno, xfs_agino_t ino) +add_inode(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t ino) { ino_tree_node_t *ino_rec; @@ -495,9 +497,10 @@ add_inode(xfs_agnumber_t agno, xfs_agino_t ino) * pull the indicated inode record out of the inode tree */ void -get_inode_rec(xfs_agnumber_t agno, ino_tree_node_t *ino_rec) +get_inode_rec(struct xfs_mount *mp, xfs_agnumber_t agno, ino_tree_node_t *ino_rec) { ASSERT(inode_tree_ptrs != NULL); + ASSERT(agno < mp->m_sb.sb_agcount); ASSERT(inode_tree_ptrs[agno] != NULL); avl_delete(inode_tree_ptrs[agno], &ino_rec->avl_node); @@ -518,14 +521,18 @@ free_inode_rec(xfs_agnumber_t agno, ino_tree_node_t *ino_rec) } void -find_inode_rec_range(xfs_agnumber_t agno, xfs_agino_t start_ino, - xfs_agino_t end_ino, ino_tree_node_t **first, - ino_tree_node_t **last) +find_inode_rec_range(struct xfs_mount *mp, xfs_agnumber_t agno, + xfs_agino_t start_ino, xfs_agino_t end_ino, + ino_tree_node_t **first, ino_tree_node_t **last) { *first = *last = NULL; - avl_findranges(inode_tree_ptrs[agno], start_ino, - end_ino, (avlnode_t **) first, (avlnode_t **) last); + /* + * Is the AG inside the file system ? + */ + if (agno < mp->m_sb.sb_agcount) + avl_findranges(inode_tree_ptrs[agno], start_ino, + end_ino, (avlnode_t **) first, (avlnode_t **) last); } /* @@ -534,7 +541,7 @@ find_inode_rec_range(xfs_agnumber_t agno, xfs_agino_t start_ino, * whichever alignment is larger. */ ino_tree_node_t * -set_inode_used_alloc(xfs_agnumber_t agno, xfs_agino_t ino) +set_inode_used_alloc(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t ino) { ino_tree_node_t *ino_rec; @@ -543,7 +550,7 @@ set_inode_used_alloc(xfs_agnumber_t agno, xfs_agino_t ino) * is too see if the chunk overlaps another chunk * already in the tree */ - ino_rec = add_inode(agno, ino); + ino_rec = add_inode(mp, agno, ino); ASSERT(ino_rec != NULL); ASSERT(ino >= ino_rec->ino_startnum && @@ -555,11 +562,11 @@ set_inode_used_alloc(xfs_agnumber_t agno, xfs_agino_t ino) } ino_tree_node_t * -set_inode_free_alloc(xfs_agnumber_t agno, xfs_agino_t ino) +set_inode_free_alloc(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t ino) { ino_tree_node_t *ino_rec; - ino_rec = add_inode(agno, ino); + ino_rec = add_inode(mp, agno, ino); ASSERT(ino_rec != NULL); ASSERT(ino >= ino_rec->ino_startnum && diff --git a/repair/phase2.c b/repair/phase2.c index 1e9377e..51bd04e 100644 --- a/repair/phase2.c +++ b/repair/phase2.c @@ -145,7 +145,7 @@ phase2( /* * make sure we know about the root inode chunk */ - if ((ino_rec = find_inode_rec(0, mp->m_sb.sb_rootino)) == NULL) { + if ((ino_rec = find_inode_rec(mp, 0, mp->m_sb.sb_rootino)) == NULL) { ASSERT(mp->m_sb.sb_rbmino == mp->m_sb.sb_rootino + 1 && mp->m_sb.sb_rsumino == mp->m_sb.sb_rootino + 2); do_warn(_("root inode chunk not found\n")); @@ -153,7 +153,7 @@ phase2( /* * mark the first 3 used, the rest are free */ - ino_rec = set_inode_used_alloc(0, + ino_rec = set_inode_used_alloc(mp, 0, (xfs_agino_t) mp->m_sb.sb_rootino); set_inode_used(ino_rec, 1); set_inode_used(ino_rec, 2); diff --git a/repair/phase3.c b/repair/phase3.c index 32e855c..fea81f8 100644 --- a/repair/phase3.c +++ b/repair/phase3.c @@ -56,7 +56,7 @@ walk_unlinked_list(xfs_mount_t *mp, xfs_agnumber_t agno, xfs_agino_t start_ino) * inode. if so, put it on the uncertain inode list * and set block map appropriately. */ - if (find_inode_rec(agno, current_ino) == NULL) { + if (find_inode_rec(mp, agno, current_ino) == NULL) { add_aginode_uncertain(agno, current_ino, 1); agbno = XFS_AGINO_TO_AGBNO(mp, current_ino); diff --git a/repair/phase4.c b/repair/phase4.c index aaef1f9..374ed39 100644 --- a/repair/phase4.c +++ b/repair/phase4.c @@ -49,7 +49,7 @@ quotino_check(xfs_mount_t *mp) if (verify_inum(mp, mp->m_sb.sb_uquotino)) irec = NULL; else - irec = find_inode_rec( + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_uquotino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_uquotino)); @@ -65,7 +65,7 @@ quotino_check(xfs_mount_t *mp) if (verify_inum(mp, mp->m_sb.sb_gquotino)) irec = NULL; else - irec = find_inode_rec( + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_gquotino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_gquotino)); @@ -206,7 +206,7 @@ phase4(xfs_mount_t *mp) set_progress_msg(PROG_FMT_DUP_EXTENT, (__uint64_t) glob_agcount); - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)); /* diff --git a/repair/phase5.c b/repair/phase5.c index d6a0f6a..125ea01 100644 --- a/repair/phase5.c +++ b/repair/phase5.c @@ -1383,7 +1383,7 @@ keep_fsinos(xfs_mount_t *mp) ino_tree_node_t *irec; int i; - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)); for (i = 0; i < 3; i++) diff --git a/repair/phase6.c b/repair/phase6.c index d056063..ad6d16f 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -806,7 +806,7 @@ mk_root_dir(xfs_mount_t *mp) libxfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES|XFS_TRANS_SYNC); - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)); set_inode_isadir(irec, XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino) - irec->ino_startnum); @@ -897,7 +897,8 @@ mk_orphanage(xfs_mount_t *mp) * for .. in the new directory */ pip->i_d.di_nlink++; - add_inode_ref(find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), + add_inode_ref(find_inode_rec(mp, + XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)), 0); @@ -966,7 +967,7 @@ mv_orphanage( do_error(_("%d - couldn't iget disconnected inode\n"), err); if (isa_dir) { - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, orphanage_ino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, orphanage_ino), XFS_INO_TO_AGINO(mp, orphanage_ino)); if (irec) ino_offset = XFS_INO_TO_AGINO(mp, orphanage_ino) - @@ -1379,7 +1380,7 @@ lf_block_dir_entry_check(xfs_mount_t *mp, /* * ok, now handle the rest of the cases besides '.' and '..' */ - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, lino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino)); if (irec == NULL) { @@ -2044,7 +2045,7 @@ longform_dir2_entry_check_data( fname[dep->namelen] = '\0'; ASSERT(inum != NULLFSINO); - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, inum), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, inum), XFS_INO_TO_AGINO(mp, inum)); if (irec == NULL) { nbad++; @@ -2680,7 +2681,7 @@ shortform_dir_entry_check(xfs_mount_t *mp, ASSERT(no_modify || lino != NULLFSINO); ASSERT(no_modify || !verify_inum(mp, lino)); - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, lino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino)); if (irec == NULL) { do_warn(_("entry \"%s\" in shortform dir %llu " @@ -3004,7 +3005,7 @@ shortform_dir2_entry_check(xfs_mount_t *mp, continue; } - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, lino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino)); if (irec == NULL) { @@ -3493,7 +3494,7 @@ mark_standalone_inodes(xfs_mount_t *mp) ino_tree_node_t *irec; int offset; - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rbmino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rbmino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rbmino)); ASSERT(irec != NULL); @@ -3503,7 +3504,7 @@ mark_standalone_inodes(xfs_mount_t *mp) add_inode_reached(irec, offset); - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rsumino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rsumino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rsumino)); offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rsumino) - @@ -3516,7 +3517,7 @@ mark_standalone_inodes(xfs_mount_t *mp) if (fs_quotas) { if (mp->m_sb.sb_uquotino && mp->m_sb.sb_uquotino != NULLFSINO) { - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_uquotino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_uquotino)); offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_uquotino) @@ -3525,7 +3526,7 @@ mark_standalone_inodes(xfs_mount_t *mp) } if (mp->m_sb.sb_gquotino && mp->m_sb.sb_gquotino != NULLFSINO) { - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_gquotino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_gquotino)); offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_gquotino) @@ -3723,7 +3724,7 @@ _(" - resetting contents of realtime bitmap and summary inodes\n")); do_log(_(" - traversing filesystem ...\n")); - irec = find_inode_rec(XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rootino), XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)); /* diff --git a/repair/scan.c b/repair/scan.c index afed693..aeb31fc 100644 --- a/repair/scan.c +++ b/repair/scan.c @@ -810,7 +810,7 @@ _("inode chunk claims used block, inobt block - agno %d, bno %d, inopb %d\n"), /* * ensure only one avl entry per chunk */ - find_inode_rec_range(agno, ino, ino + XFS_INODES_PER_CHUNK, + find_inode_rec_range(mp, agno, ino, ino + XFS_INODES_PER_CHUNK, &first_rec, &last_rec); if (first_rec != NULL) { /* @@ -841,9 +841,9 @@ _("inode rec for ino %llu (%d/%d) overlaps existing rec (start %d/%d)\n"), if (!suspect) { if (XFS_INOBT_IS_FREE_DISK(rp, 0)) { nfree++; - ino_rec = set_inode_free_alloc(agno, ino); + ino_rec = set_inode_free_alloc(mp, agno, ino); } else { - ino_rec = set_inode_used_alloc(agno, ino); + ino_rec = set_inode_used_alloc(mp, agno, ino); } for (j = 1; j < XFS_INODES_PER_CHUNK; j++) { if (XFS_INOBT_IS_FREE_DISK(rp, j)) { -- 1.7.4.4 From achender@linux.vnet.ibm.com Tue Jun 28 09:42:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_62 autolearn=no version=3.4.0-r929098 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 p5SEgxNw231610 for ; Tue, 28 Jun 2011 09:42:59 -0500 X-ASG-Debug-ID: 1309272178-1e8203040000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e33.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D483115E82D4 for ; Tue, 28 Jun 2011 07:42:58 -0700 (PDT) Received: from e33.co.us.ibm.com (e33.co.us.ibm.com [32.97.110.151]) by cuda.sgi.com with ESMTP id w6iN4o1Tf4Bpdwun for ; Tue, 28 Jun 2011 07:42:58 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by e33.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5SEZNfw017883 for ; Tue, 28 Jun 2011 08:35:23 -0600 Received: from d03av01.boulder.ibm.com (d03av01.boulder.ibm.com [9.17.195.167]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5SEghQN069428 for ; Tue, 28 Jun 2011 08:42:43 -0600 Received: from d03av01.boulder.ibm.com (loopback [127.0.0.1]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5SEgg1v011987 for ; Tue, 28 Jun 2011 08:42:42 -0600 Received: from elm3c80.beaverton.ibm.com (elm3c80.beaverton.ibm.com [9.47.69.80]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5SEgexN011493; Tue, 28 Jun 2011 08:42:40 -0600 From: Allison Henderson To: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org Cc: Allison Henderson X-ASG-Orig-Subj: [PATCH 0/2v v7] XFS TESTS: ENOSPC Punch Hole Test Subject: [PATCH 0/2v v7] XFS TESTS: ENOSPC Punch Hole Test Date: Tue, 28 Jun 2011 07:44:59 -0700 Message-Id: <1309272301-5742-1-git-send-email-achender@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.1 X-Barracuda-Connect: e33.co.us.ibm.com[32.97.110.151] X-Barracuda-Start-Time: 1309272178 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 Hi All, This is another set I sent out a while ago, but I didnt see it show up on the lists, so I am resending this one too. The work in this patch is a continuation from a previous patch set that has been partially accepted, so I thought I should retain the v6. This patch set adds the ENOSPC test that was used for ext4 punch hole testing. This test will verify that a hole can be punched even when the disk is full. Reserved blocks should be used to complete the operation when there is not blocks to further fragment the file. Because punching a hole does not always require extra blocks, there needs to be serveal iterations of punching holes, and then filling the file system to 100% usage before it is forced to grow the tree in order to handle the fragmentation. The growing of the tree is what would cause ENOSPC if not for the use of reserved blocks. I could use some opinions on this patch set becuase I am not sure if other filesystems handle their punch holes in the same way. Although xfs appears to pass the test, should this test be an ext4 only test? Thx! Allison Henderson (2): XFS TESTS: ENOSPC Punch Hole: Move su routines in 123 to common.rc XFS TESTS: Add ENOSPC Hole Punch Test 123 | 24 -------- 255 | 178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 255.out | 1 + common.rc | 20 +++++++ group | 1 + 5 files changed, 200 insertions(+), 24 deletions(-) create mode 100644 255 create mode 100644 255.out From achender@linux.vnet.ibm.com Tue Jun 28 09:42:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_62, J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p5SEgwKN231608 for ; Tue, 28 Jun 2011 09:42:59 -0500 X-ASG-Debug-ID: 1309272177-1e8a02fc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e8.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 616DD15E82D4 for ; Tue, 28 Jun 2011 07:42:57 -0700 (PDT) Received: from e8.ny.us.ibm.com (e8.ny.us.ibm.com [32.97.182.138]) by cuda.sgi.com with ESMTP id xdIj4NfFLfGHJfDB for ; Tue, 28 Jun 2011 07:42:57 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay05.pok.ibm.com (d01relay05.pok.ibm.com [9.56.227.237]) by e8.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5SEV8D4005365 for ; Tue, 28 Jun 2011 10:31:08 -0400 Received: from d03av01.boulder.ibm.com (d03av01.boulder.ibm.com [9.17.195.167]) by d01relay05.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5SEgti9145804 for ; Tue, 28 Jun 2011 10:42:55 -0400 Received: from d03av01.boulder.ibm.com (loopback [127.0.0.1]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5SEghBf012176 for ; Tue, 28 Jun 2011 08:42:44 -0600 Received: from elm3c80.beaverton.ibm.com (elm3c80.beaverton.ibm.com [9.47.69.80]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5SEgexP011493; Tue, 28 Jun 2011 08:42:42 -0600 From: Allison Henderson To: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org Cc: Allison Henderson X-ASG-Orig-Subj: [PATCH 2/2 v7] XFS TESTS: Add ENOSPC Hole Punch Test Subject: [PATCH 2/2 v7] XFS TESTS: Add ENOSPC Hole Punch Test Date: Tue, 28 Jun 2011 07:45:01 -0700 Message-Id: <1309272301-5742-3-git-send-email-achender@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1309272301-5742-1-git-send-email-achender@linux.vnet.ibm.com> References: <1309272301-5742-1-git-send-email-achender@linux.vnet.ibm.com> X-Barracuda-Connect: e8.ny.us.ibm.com[32.97.182.138] X-Barracuda-Start-Time: 1309272178 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 patch adds a new test 255 that tests that a hole can be punched even when the disk is full. Reserved blocks should be used to allow a punch hole to proceed even when there is not enough blocks to further fragment the file. To test this, the file system is fragmented by punching holes in regular intervals and filling the file system between punches. This will eventually force the file system to use reserved blocks to proceed with the punch hole operation. The work in this patch is a continuation from a previous patch set that has been partially accepted. Signed-off-by: Allison Henderson --- v5->v6 Test moved out of 252 and put in its own test 255 _fill_fs and _test_full_fs_punch have been moved from common.punch to test 255 and modified to use the _user_do routines in common.rc _fill_fs has been optimized to stop once files smaller than a block cannot be created. v6->v7 Fixed bad file add :000000 100644 0000000... 3d39fdb... A 255 :000000 100644 0000000... 3525403... A 255.out :100644 100644 1f86075... c045e70... M group 255 | 178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 255.out | 1 + group | 1 + 3 files changed, 180 insertions(+), 0 deletions(-) diff --git a/255 b/255 new file mode 100644 index 0000000..3d39fdb --- /dev/null +++ b/255 @@ -0,0 +1,178 @@ +#! /bin/bash +# FS QA Test No. 255 +# +# Test Full File System Hole Punching +# +#----------------------------------------------------------------------- +# Copyright (c) 2011 IBM Corporation. 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 +# +#----------------------------------------------------------------------- +# +# creator +owner=achender@linux.vnet.ibm.com + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter +. ./common.punch + +# real QA test starts here +_supported_fs generic +_supported_os Linux + +_require_xfs_io_falloc_punch +_require_scratch +_require_user + +testfile=$TEST_DIR/255.$$ + + +# _fill_fs() +# +# Fills a file system by repeatedly creating files in the given folder +# starting with the given file size. Files are reduced in size when +# they can no longer fit untill no more files can be created. +# +# This routine is used by _test_full_fs_punch to test that a hole may +# still be punched when the disk is full by borrowing reserved blocks. +# All files are created as a non root user to prevent reserved blocks +# from being consumed. +# +_fill_fs() { + local file_size=$1 + local dir=$2 + local block_size=$3 + local file_count=1 + local bytes_written=0 + + if [ $# -ne 3 ] + then + echo "USAGE: _fill_fs filesize dir block size" + exit 1 + fi + + # Creation of files or folders + # must not be done as root or + # reserved blocks will be consumed + _user_do "mkdir -p $dir &> /dev/null" + if [ $? -ne 0 ] ; then + return 0 + fi + + if [ $file_size -lt $block_size ] + then + $file_size = $block_size + fi + + while [ $file_size -ge $block_size ] + do + bytes_written=0 + _user_do "$XFS_IO_PROG -F -f -c \"pwrite 0 $file_size\" $dir/$file_count.bin &> /dev/null" + + if [ -f $dir/$file_count.bin ] + then + bytes_written=`$XFS_IO_PROG -F -c "stat" $dir/$file_count.bin | grep size | cut -d ' ' -f3` + fi + + # If there was no room to make the file, + # then divide it in half, and keep going + if [ $bytes_written -lt $file_size ] + then + file_size=$(( $file_size / 2 )) + fi + file_count=$(( $file_count + 1 )) + + done +} + +# _test_full_fs_punch() +# +# This function will test that a hole may be punched +# even when the file system is full. Reserved blocks +# should be used to allow a punch hole to proceed even +# when there is not enough blocks to further fragment the +# file. To test this, this function will fragment the file +# system by punching holes in regular intervals and filling +# the file system between punches. +# +_test_full_fs_punch() +{ + local hole_len=$1 # The length of the holes to punch + local hole_interval=$2 # The interval between the holes + local iterations=$3 # The number of holes to punch + local file_name=$4 # File to punch holes in + local block_size=$5 # File system block size + local file_len=$(( $(( $hole_len + $hole_interval )) * $iterations )) + local path=`dirname $file_name` + local hole_offset=0 + + if [ $# -ne 5 ] + then + echo "USAGE: _test_full_fs_punch hole_len hole_interval iterations file_name block_size" + exit 1 + fi + + rm -f $file_name &> /dev/null + + $XFS_IO_PROG -F -f -c "pwrite 0 $file_len" \ + -c "fsync" $file_name &> /dev/null + chmod 666 $file_name + + _fill_fs $(( 1024 * 1024 * 1024 )) $path/fill $block_size + + for (( i=0; i<$iterations; i++ )) + do + # This part must not be done as root in order to + # test that reserved blocks are used when needed + _user_do "$XFS_IO_PROG -F -f -c \"fpunch $hole_offset $hole_len\" $file_name" + rc=$? + if [ $? -ne 0 ] ; then + echo Punch hole failed + break + fi + + hole_offset=$(( $hole_offset + $hole_len + $hole_interval )) + + _fill_fs $hole_len $path/fill.$i $block_size + + done +} + +# Make a small file system to fill +umount $SCRATCH_DEV &> /dev/null +_scratch_mkfs_sized $(( 1024 * 1024 * 1024 )) &> /dev/null +_scratch_mount +# Test must be able to write files with non-root permissions +chmod 777 $SCRATCH_MNT + +block_size=`stat -f $SCRATCH_DEV | grep "Block size" | cut -d " " -f3` +_test_full_fs_punch $(( $block_size * 2 )) $block_size 500 $SCRATCH_MNT/252.$$ $block_size + +status=0 ; exit diff --git a/255.out b/255.out new file mode 100644 index 0000000..3525403 --- /dev/null +++ b/255.out @@ -0,0 +1 @@ +QA output created by 255 diff --git a/group b/group index 1f86075..c045e70 100644 --- a/group +++ b/group @@ -368,3 +368,4 @@ deprecated 252 auto quick prealloc 253 auto quick 254 auto quick +255 auto quick -- 1.7.1 From achender@linux.vnet.ibm.com Tue Jun 28 09:43:15 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_62 autolearn=no version=3.4.0-r929098 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 p5SEhECW231664 for ; Tue, 28 Jun 2011 09:43:14 -0500 X-ASG-Debug-ID: 1309272193-56a4039f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e31.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7AB9E36108 for ; Tue, 28 Jun 2011 07:43:13 -0700 (PDT) Received: from e31.co.us.ibm.com (e31.co.us.ibm.com [32.97.110.149]) by cuda.sgi.com with ESMTP id SpPOIHjyGP9iXvXz for ; Tue, 28 Jun 2011 07:43:13 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay01.boulder.ibm.com (d03relay01.boulder.ibm.com [9.17.195.226]) by e31.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5SEQ4lZ001871 for ; Tue, 28 Jun 2011 08:26:04 -0600 Received: from d03av01.boulder.ibm.com (d03av01.boulder.ibm.com [9.17.195.167]) by d03relay01.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5SEgkRZ153672 for ; Tue, 28 Jun 2011 08:42:46 -0600 Received: from d03av01.boulder.ibm.com (loopback [127.0.0.1]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5SEgg6H012118 for ; Tue, 28 Jun 2011 08:42:42 -0600 Received: from elm3c80.beaverton.ibm.com (elm3c80.beaverton.ibm.com [9.47.69.80]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5SEgexO011493; Tue, 28 Jun 2011 08:42:42 -0600 From: Allison Henderson To: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org Cc: Allison Henderson X-ASG-Orig-Subj: [PATCH 1/2 v7] XFS TESTS: ENOSPC Punch Hole: Move su routines in 123 to common.rc Subject: [PATCH 1/2 v7] XFS TESTS: ENOSPC Punch Hole: Move su routines in 123 to common.rc Date: Tue, 28 Jun 2011 07:45:00 -0700 Message-Id: <1309272301-5742-2-git-send-email-achender@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1309272301-5742-1-git-send-email-achender@linux.vnet.ibm.com> References: <1309272301-5742-1-git-send-email-achender@linux.vnet.ibm.com> X-Barracuda-Connect: e31.co.us.ibm.com[32.97.110.149] X-Barracuda-Start-Time: 1309272194 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 patch moves the su routines in test 123 to common.rc so that they can also be used in the new test 255 Signed-off-by: Allison Henderson --- :100755 100755 27c1e66... ee1194d... M 123 :100644 100644 680631d... 9d68574... M common.rc 123 | 24 ------------------------ common.rc | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 24 deletions(-) diff --git a/123 b/123 index 27c1e66..ee1194d 100755 --- a/123 +++ b/123 @@ -42,30 +42,6 @@ _cleanup() _cleanup_testdir } - -_filter_user_do() -{ - perl -ne " -s,.*Permission\sdenied.*,Permission denied,; -s,.*no\saccess\sto\stty.*,,; -s,.*no\sjob\scontrol\sin\sthis\sshell.*,,; -s,^\s*$,,; - print;" -} - - - - -_user_do() -{ - if [ "$HOSTOS" == "IRIX" ] - then - echo $1 | /bin/bash "su $qa_user 2>&1" | _filter_user_do - else - echo $1 | su $qa_user 2>&1 | _filter_user_do - fi -} - # get standard environment, filters and checks . ./common.rc . ./common.filter diff --git a/common.rc b/common.rc index 680631d..9d68574 100644 --- a/common.rc +++ b/common.rc @@ -867,6 +867,26 @@ _require_user() [ "$?" == "0" ] || _notrun "$qa_user user not defined." } +_filter_user_do() +{ + perl -ne " +s,.*Permission\sdenied.*,Permission denied,; +s,.*no\saccess\sto\stty.*,,; +s,.*no\sjob\scontrol\sin\sthis\sshell.*,,; +s,^\s*$,,; + print;" +} + +_user_do() +{ + if [ "$HOSTOS" == "IRIX" ] + then + echo $1 | /bin/bash "su $qa_user 2>&1" | _filter_user_do + else + echo $1 | su $qa_user 2>&1 | _filter_user_do + fi +} + # check that xfs_io, glibc, kernel, and filesystem all (!) support # fallocate # -- 1.7.1 From powool@gmail.com Tue Jun 28 10:03:04 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p5SF34tP232788 for ; Tue, 28 Jun 2011 10:03:04 -0500 X-ASG-Debug-ID: 1309273383-648502a10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-wy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0588A1E536D3 for ; Tue, 28 Jun 2011 08:03:03 -0700 (PDT) Received: from mail-wy0-f181.google.com (mail-wy0-f181.google.com [74.125.82.181]) by cuda.sgi.com with ESMTP id cSA83FE7ekpyKOkJ for ; Tue, 28 Jun 2011 08:03:03 -0700 (PDT) Received: by wyh22 with SMTP id 22so231820wyh.26 for ; Tue, 28 Jun 2011 08:03:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:content-type; bh=kMW9NX4UnIH0rdkgB3AKsTd2jKw2nGditrjLvUQKPnQ=; b=OlK7H+Npm3+4uitizpj7HM5E/ZgJx98SiWzmCv95Baa2rRKHPwHPTdSF/6PgzlK74N mGTX9rVvH93cjP4GGUpxDxVdIk7vGdfikuulD1rwzsuL77sD5xL1GN5zHPsr84gE2DTC 9dSC1l3rezhBI2XENtENOlKVSvtLxrvNUd//E= MIME-Version: 1.0 Received: by 10.216.150.150 with SMTP id z22mr621139wej.32.1309273382839; Tue, 28 Jun 2011 08:03:02 -0700 (PDT) Sender: powool@gmail.com Received: by 10.216.80.8 with HTTP; Tue, 28 Jun 2011 08:03:02 -0700 (PDT) Date: Tue, 28 Jun 2011 11:03:02 -0400 X-Google-Sender-Auth: LbBOSMyW0ZAt3mqMxXiUqOM0A_E Message-ID: X-ASG-Orig-Subj: XFS file loss - 2.6.38.5, FC RAID Subject: XFS file loss - 2.6.38.5, FC RAID From: Paul Anderson To: xfs-oss Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: mail-wy0-f181.google.com[74.125.82.181] X-Barracuda-Start-Time: 1309273384 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67379 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I'm sending this error report as an informational point - I'm not sure much can be done about it at the present time. We had a machine crash Sunday night (June 26) around 8PM - the hardware failed due to a Sun J4400 chassis fault. The XFS file loss noted in this report was not on this chassis. On power cycle and subsequent reboot, one of our home directory volumes, a pair of 40TiByte Promise RAID6 fiber channel SAN array together in a single LVM, lost many files. File loss is characterized by numerous files now with length of zero. I lost files that I know were last changed on Friday (June 24), more than 2 days before the crash. Kernel is 2.6.38.5, userland is Ubuntu 10.04, server hardware is a 24 core Dell R900 w/128GiBytes RAM, an LSIFC949E fiber channel card, a bunch of Dell PERC 6 RAID cards, and a lot of direct attach SAS JBOD cabinets (mostly J4400, but a few Dell MD1000's). The boot drive is a pair of matched 1TiByte drives in a HW RAID-1 config. The Promise RAID6 SAN unit where the files were lost is battery backed, and reports no errors. The filesystem showed no signs of distress prior to this. The filesystem was less than 4 weeks old. Here's the fstab mount options: /dev/wonderlandhomet/homet /homet xfs inode64,logbufs=8,noatime 0 0 xfs_info shows: root@wonderland:~# xfs_info /homet meta-data=/dev/mapper/wonderlandhomet-homet isize=256 agcount=81, agsize=268435328 blks = sectsz=512 attr=2 data = bsize=4096 blocks=21484355584, imaxpct=1 = sunit=128 swidth=2816 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=521728, version=2 = sectsz=512 sunit=8 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 The dmesg log shows no signs of hardware or kernel software problems up to the point where the directly attached SAS card reported faults for the cabinet. The vm tuning parameters are defaults (yes, I know this is bad): root@louie:/proc/sys/vm# cat dirty_background_bytes 0 root@louie:/proc/sys/vm# cat dirty_background_ratio 10 root@louie:/proc/sys/vm# cat dirty_bytes 0 root@louie:/proc/sys/vm# cat dirty_expire_centisecs 3000 root@louie:/proc/sys/vm# cat dirty_ratio 40 root@louie:/proc/sys/vm# cat dirty_writeback_centisecs 500 My main question is: what specific action can I take to minimize the likelihood of this happening again? As far as I know, the dirty pages should expire and be flushed to the FC array (2 days? should be enough), and the FC array itself is stable. The machine was moderately busy, but far from overwhelmingly so. Feedback welcome... Thanks, Paul Anderson Center for Statistical Genetics University of Michigan, Ann Arbor From achender@linux.vnet.ibm.com Tue Jun 28 10:04:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5SF4Mxj232860 for ; Tue, 28 Jun 2011 10:04:23 -0500 X-ASG-Debug-ID: 1309273462-248c00700000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e39.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7B04B36250 for ; Tue, 28 Jun 2011 08:04:22 -0700 (PDT) Received: from e39.co.us.ibm.com (e39.co.us.ibm.com [32.97.110.160]) by cuda.sgi.com with ESMTP id I3drzRQihpc1Ni50 for ; Tue, 28 Jun 2011 08:04:22 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by e39.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5SEnd6u027470 for ; Tue, 28 Jun 2011 08:49:39 -0600 Received: from d03av06.boulder.ibm.com (d03av06.boulder.ibm.com [9.17.195.245]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5SF3m1G124208 for ; Tue, 28 Jun 2011 09:03:51 -0600 Received: from d03av06.boulder.ibm.com (loopback [127.0.0.1]) by d03av06.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5SF9AFP010570 for ; Tue, 28 Jun 2011 09:09:10 -0600 Received: from lc4eb0185863151.ibm.com (sig-9-65-20-193.mts.ibm.com [9.65.20.193]) by d03av06.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5SF92cj007382; Tue, 28 Jun 2011 09:09:02 -0600 Message-ID: <4E09ED36.2040903@linux.vnet.ibm.com> Date: Tue, 28 Jun 2011 08:03:18 -0700 From: Allison Henderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Eric Sandeen CC: linux-fsdevel@vger.kernel.org, Ext4 Developers List , Josef Bacik , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/3 v2] XFS TESTS: Fix 252 Failure: Update 252 Golden Output Subject: Re: [PATCH 2/3 v2] XFS TESTS: Fix 252 Failure: Update 252 Golden Output References: <1309235247-32650-1-git-send-email-achender@linux.vnet.ibm.com> <1309235247-32650-3-git-send-email-achender@linux.vnet.ibm.com> <20110628050900.GL32466@dastard> <4E09660B.7050706@linux.vnet.ibm.com> <4E09D735.5060000@redhat.com> In-Reply-To: <4E09D735.5060000@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e39.co.us.ibm.com[32.97.110.160] X-Barracuda-Start-Time: 1309273462 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 06/28/2011 06:29 AM, Eric Sandeen wrote: > On 6/28/11 12:26 AM, Allison Henderson wrote: >> On 06/27/2011 10:09 PM, Dave Chinner wrote: >>> On Mon, Jun 27, 2011 at 09:27:26PM -0700, Allison Henderson wrote: >>>> New filtered golden output for test 252 >>>> >>>> Signed-off-by: Allison Henderson >>>> --- >>>> :100644 100644 930c924... fcfd121... M 252.out >>>> 252.out | 272 +++++++++++++++++++++++++++++++++++++++------------------------ >>>> 1 files changed, 170 insertions(+), 102 deletions(-) >>>> >>>> diff --git a/252.out b/252.out >>>> index 930c924..fcfd121 100644 >>>> --- a/252.out >>>> +++ b/252.out >>>> @@ -1,239 +1,307 @@ >>>> QA output created by 252 >>>> 1. into a hole >>>> +daa100df6e6711906b61c9ab5aa16032 >>>> 2. into allocated space >>>> -0: [0..7]: data >>>> +0: [0..7]: extent >>>> 1: [8..23]: hole >>>> -2: [24..39]: data >>>> +2: [24..39]: extent >>>> +cc58a7417c2d7763adc45b6fcd3fa024 >>> >>> I don't really like the way this weakens the test for XFS. With this >>> change, the test no longer is checking that unwritten extent >>> behaviour is correct. >>> >>> Rather than weakening the test, perhaps it would be better to >>> execute 252 for XFS only (with the md5sums added), and then >>> duplicate it to a new test for all filesystems to run with the >>> weaker result checking that using the new filter function gives us. >>> With the amount of common code the two tests share, it should be >>> trivial to do this.... >>> >> >> Alrighty, that sounds pretty straight forward, as long as every one >> is in agreement. I think that would help retain the tests >> effectiveness. Eric, Josef, what are your thoughts? > > Yeah, I agree, I share Dave's concerns and that sounds like a good > way to go. > > Thanks, > -Eric Ok I will get an update sent out with these adjustments, and also the checksum wrapper that Dave mentioned in the 1/3 patch. Thanks all for your reviews! Allison Henderson > >> Allison Henderson >> >>> Cheers, >>> >>> Dave. >> > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From josef@redhat.com Tue Jun 28 10:33:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5SFXNt2236220 for ; Tue, 28 Jun 2011 10:33:24 -0500 X-ASG-Debug-ID: 1309275202-26b5038f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1CAA414F95EB for ; Tue, 28 Jun 2011 08:33:22 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id dqdGokJkCvPfIw09 for ; Tue, 28 Jun 2011 08:33:22 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5SFXMWN017871 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 28 Jun 2011 11:33:22 -0400 Received: from localhost.localdomain.com (vpn-8-85.rdu.redhat.com [10.11.8.85]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p5SFXKsk009582; Tue, 28 Jun 2011 11:33:21 -0400 From: Josef Bacik To: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, xfs@oss.sgi.com, viro@ZenIV.linux.org.uk X-ASG-Orig-Subj: [PATCH 1/4] fs: add SEEK_HOLE and SEEK_DATA flags Subject: [PATCH 1/4] fs: add SEEK_HOLE and SEEK_DATA flags Date: Tue, 28 Jun 2011 11:33:15 -0400 Message-Id: <1309275199-10801-1-git-send-email-josef@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1309275203 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 just gets us ready to support the SEEK_HOLE and SEEK_DATA flags. Turns out using fiemap in things like cp cause more problems than it solves, so lets try and give userspace an interface that doesn't suck. We need to match solaris here, and the definitions are *o* If /whence/ is SEEK_HOLE, the offset of the start of the next hole greater than or equal to the supplied offset is returned. The definition of a hole is provided near the end of the DESCRIPTION. *o* If /whence/ is SEEK_DATA, the file pointer is set to the start of the next non-hole file region greater than or equal to the supplied offset. So in the generic case the entire file is data and there is a virtual hole at the end. That means we will just return i_size for SEEK_HOLE and will return the same offset for SEEK_DATA. This is how Solaris does it so we have to do it the same way. Thanks, Signed-off-by: Josef Bacik --- fs/read_write.c | 44 +++++++++++++++++++++++++++++++++++++++++--- include/linux/fs.h | 4 +++- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/fs/read_write.c b/fs/read_write.c index 5520f8a..5907b49 100644 --- a/fs/read_write.c +++ b/fs/read_write.c @@ -64,6 +64,23 @@ generic_file_llseek_unlocked(struct file *file, loff_t offset, int origin) return file->f_pos; offset += file->f_pos; break; + case SEEK_DATA: + /* + * In the generic case the entire file is data, so as long as + * offset isn't at the end of the file then the offset is data. + */ + if (offset >= inode->i_size) + return -ENXIO; + break; + case SEEK_HOLE: + /* + * There is a virtual hole at the end of the file, so as long as + * offset isn't i_size or larger, return i_size. + */ + if (offset >= inode->i_size) + return -ENXIO; + offset = inode->i_size; + break; } if (offset < 0 && !unsigned_offsets(file)) @@ -128,12 +145,13 @@ EXPORT_SYMBOL(no_llseek); loff_t default_llseek(struct file *file, loff_t offset, int origin) { + struct inode *inode = file->f_path.dentry->d_inode; loff_t retval; - mutex_lock(&file->f_dentry->d_inode->i_mutex); + mutex_lock(&inode->i_mutex); switch (origin) { case SEEK_END: - offset += i_size_read(file->f_path.dentry->d_inode); + offset += i_size_read(inode); break; case SEEK_CUR: if (offset == 0) { @@ -141,6 +159,26 @@ loff_t default_llseek(struct file *file, loff_t offset, int origin) goto out; } offset += file->f_pos; + break; + case SEEK_DATA: + /* + * In the generic case the entire file is data, so as + * long as offset isn't at the end of the file then the + * offset is data. + */ + if (offset >= inode->i_size) + return -ENXIO; + break; + case SEEK_HOLE: + /* + * There is a virtual hole at the end of the file, so + * as long as offset isn't i_size or larger, return + * i_size. + */ + if (offset >= inode->i_size) + return -ENXIO; + offset = inode->i_size; + break; } retval = -EINVAL; if (offset >= 0 || unsigned_offsets(file)) { @@ -151,7 +189,7 @@ loff_t default_llseek(struct file *file, loff_t offset, int origin) retval = offset; } out: - mutex_unlock(&file->f_dentry->d_inode->i_mutex); + mutex_unlock(&inode->i_mutex); return retval; } EXPORT_SYMBOL(default_llseek); diff --git a/include/linux/fs.h b/include/linux/fs.h index b5b9792..c9156f3 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -32,7 +32,9 @@ #define SEEK_SET 0 /* seek relative to beginning of file */ #define SEEK_CUR 1 /* seek relative to current file position */ #define SEEK_END 2 /* seek relative to end of file */ -#define SEEK_MAX SEEK_END +#define SEEK_DATA 3 /* seek to the next data */ +#define SEEK_HOLE 4 /* seek to the next hole */ +#define SEEK_MAX SEEK_HOLE struct fstrim_range { __u64 start; -- 1.7.5.2 From josef@redhat.com Tue Jun 28 10:33:28 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5SFXRiw236259 for ; Tue, 28 Jun 2011 10:33:28 -0500 X-ASG-Debug-ID: 1309275206-5995010d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F171D14F9718 for ; Tue, 28 Jun 2011 08:33:26 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id MC02FRNbTlo7na4d for ; Tue, 28 Jun 2011 08:33:26 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5SFXQjA018194 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 28 Jun 2011 11:33:26 -0400 Received: from localhost.localdomain.com (vpn-8-85.rdu.redhat.com [10.11.8.85]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p5SFXKsn009582; Tue, 28 Jun 2011 11:33:25 -0400 From: Josef Bacik To: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, xfs@oss.sgi.com, viro@ZenIV.linux.org.uk X-ASG-Orig-Subj: [PATCH 4/4] fs: handle SEEK_HOLE/SEEK_DATA properly in all fs's that define their own llseek Subject: [PATCH 4/4] fs: handle SEEK_HOLE/SEEK_DATA properly in all fs's that define their own llseek Date: Tue, 28 Jun 2011 11:33:18 -0400 Message-Id: <1309275199-10801-4-git-send-email-josef@redhat.com> In-Reply-To: <1309275199-10801-1-git-send-email-josef@redhat.com> References: <1309275199-10801-1-git-send-email-josef@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1309275206 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 converts everybody to handle SEEK_HOLE/SEEK_DATA properly. In some cases we just return -EINVAL, in others we do the normal generic thing, and in others we're simply making sure that the properly due-dilligence is done. For example in NFS/CIFS we need to make sure the file size is update properly for the SEEK_HOLE and SEEK_DATA case, but since it calls the generic llseek stuff itself that is all we have to do. Thanks, Signed-off-by: Josef Bacik --- fs/block_dev.c | 11 ++++++++--- fs/ceph/dir.c | 8 +++++++- fs/ceph/file.c | 20 ++++++++++++++++++-- fs/cifs/cifsfs.c | 7 +++++-- fs/fuse/file.c | 21 +++++++++++++++++++-- fs/hpfs/dir.c | 4 ++++ fs/nfs/file.c | 7 +++++-- 7 files changed, 66 insertions(+), 12 deletions(-) diff --git a/fs/block_dev.c b/fs/block_dev.c index 610e8e0..966617a 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -355,20 +355,25 @@ static loff_t block_llseek(struct file *file, loff_t offset, int origin) mutex_lock(&bd_inode->i_mutex); size = i_size_read(bd_inode); + retval = -EINVAL; switch (origin) { - case 2: + case SEEK_END: offset += size; break; - case 1: + case SEEK_CUR: offset += file->f_pos; + case SEEK_SET: + break; + default: + goto out; } - retval = -EINVAL; if (offset >= 0 && offset <= size) { if (offset != file->f_pos) { file->f_pos = offset; } retval = offset; } +out: mutex_unlock(&bd_inode->i_mutex); return retval; } diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c index ef8f08c..79cd77c 100644 --- a/fs/ceph/dir.c +++ b/fs/ceph/dir.c @@ -446,14 +446,19 @@ static loff_t ceph_dir_llseek(struct file *file, loff_t offset, int origin) loff_t retval; mutex_lock(&inode->i_mutex); + retval = -EINVAL; switch (origin) { case SEEK_END: offset += inode->i_size + 2; /* FIXME */ break; case SEEK_CUR: offset += file->f_pos; + case SEEK_SET: + break; + default: + goto out; } - retval = -EINVAL; + if (offset >= 0 && offset <= inode->i_sb->s_maxbytes) { if (offset != file->f_pos) { file->f_pos = offset; @@ -477,6 +482,7 @@ static loff_t ceph_dir_llseek(struct file *file, loff_t offset, int origin) if (offset > old_offset) fi->dir_release_count--; } +out: mutex_unlock(&inode->i_mutex); return retval; } diff --git a/fs/ceph/file.c b/fs/ceph/file.c index 9542f07..774feb1 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -770,13 +770,16 @@ static loff_t ceph_llseek(struct file *file, loff_t offset, int origin) mutex_lock(&inode->i_mutex); __ceph_do_pending_vmtruncate(inode); - switch (origin) { - case SEEK_END: + if (origin != SEEK_CUR || origin != SEEK_SET) { ret = ceph_do_getattr(inode, CEPH_STAT_CAP_SIZE); if (ret < 0) { offset = ret; goto out; } + } + + switch (origin) { + case SEEK_END: offset += inode->i_size; break; case SEEK_CUR: @@ -792,6 +795,19 @@ static loff_t ceph_llseek(struct file *file, loff_t offset, int origin) } offset += file->f_pos; break; + case SEEK_DATA: + if (offset >= inode->i_size) { + ret = -ENXIO; + goto out; + } + break; + case SEEK_HOLE: + if (offset >= inode->i_size) { + ret = -ENXIO; + goto out; + } + offset = inode->i_size; + break; } if (offset < 0 || offset > inode->i_sb->s_maxbytes) { diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index 35f9154..5feb6bb 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c @@ -746,8 +746,11 @@ static ssize_t cifs_file_aio_write(struct kiocb *iocb, const struct iovec *iov, static loff_t cifs_llseek(struct file *file, loff_t offset, int origin) { - /* origin == SEEK_END => we must revalidate the cached file length */ - if (origin == SEEK_END) { + /* + * origin == SEEK_END || SEEK_DATA || SEEK_HOLE => we must revalidate + * the cached file length + */ + if (origin != SEEK_SET || origin != SEEK_CUR) { int rc; struct inode *inode = file->f_path.dentry->d_inode; diff --git a/fs/fuse/file.c b/fs/fuse/file.c index 82a6646..73b89df 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -1600,15 +1600,32 @@ static loff_t fuse_file_llseek(struct file *file, loff_t offset, int origin) struct inode *inode = file->f_path.dentry->d_inode; mutex_lock(&inode->i_mutex); - switch (origin) { - case SEEK_END: + if (origin != SEEK_CUR || origin != SEEK_SET) { retval = fuse_update_attributes(inode, NULL, file, NULL); if (retval) goto exit; + } + + switch (origin) { + case SEEK_END: offset += i_size_read(inode); break; case SEEK_CUR: offset += file->f_pos; + break; + case SEEK_DATA: + if (offset >= i_size_read(inode)) { + retval = -ENXIO; + goto exit; + } + break; + case SEEK_HOLE: + if (offset >= i_size_read(inode)) { + retval = -ENXIO; + goto exit; + } + offset = i_size_read(inode); + break; } retval = -EINVAL; if (offset >= 0 && offset <= inode->i_sb->s_maxbytes) { diff --git a/fs/hpfs/dir.c b/fs/hpfs/dir.c index f46ae02..96a8ed9 100644 --- a/fs/hpfs/dir.c +++ b/fs/hpfs/dir.c @@ -29,6 +29,10 @@ static loff_t hpfs_dir_lseek(struct file *filp, loff_t off, int whence) struct hpfs_inode_info *hpfs_inode = hpfs_i(i); struct super_block *s = i->i_sb; + /* Somebody else will have to figure out what to do here */ + if (whence == SEEK_DATA || whence == SEEK_HOLE) + return -EINVAL; + hpfs_lock(s); /*printk("dir lseek\n");*/ diff --git a/fs/nfs/file.c b/fs/nfs/file.c index 2f093ed..2c1705b 100644 --- a/fs/nfs/file.c +++ b/fs/nfs/file.c @@ -187,8 +187,11 @@ static loff_t nfs_file_llseek(struct file *filp, loff_t offset, int origin) filp->f_path.dentry->d_name.name, offset, origin); - /* origin == SEEK_END => we must revalidate the cached file length */ - if (origin == SEEK_END) { + /* + * origin == SEEK_END || SEEK_DATA || SEEK_HOLE => we must revalidate + * the cached file length + */ + if (origin != SEEK_SET || origin != SEEK_CUR) { struct inode *inode = filp->f_mapping->host; int retval = nfs_revalidate_file_size(inode, filp); -- 1.7.5.2 From josef@redhat.com Tue Jun 28 10:33:26 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5SFXPOT236237 for ; Tue, 28 Jun 2011 10:33:26 -0500 X-ASG-Debug-ID: 1309275204-63e303780000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7E1B31770BDE for ; Tue, 28 Jun 2011 08:33:25 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id s33a6EwQhV4Lk8yO for ; Tue, 28 Jun 2011 08:33:25 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5SFXOe2018017 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 28 Jun 2011 11:33:24 -0400 Received: from localhost.localdomain.com (vpn-8-85.rdu.redhat.com [10.11.8.85]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p5SFXKsl009582; Tue, 28 Jun 2011 11:33:23 -0400 From: Josef Bacik To: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, xfs@oss.sgi.com, viro@ZenIV.linux.org.uk X-ASG-Orig-Subj: [PATCH 2/4] Btrfs: implement our own ->llseek Subject: [PATCH 2/4] Btrfs: implement our own ->llseek Date: Tue, 28 Jun 2011 11:33:16 -0400 Message-Id: <1309275199-10801-2-git-send-email-josef@redhat.com> In-Reply-To: <1309275199-10801-1-git-send-email-josef@redhat.com> References: <1309275199-10801-1-git-send-email-josef@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1309275205 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 order to handle SEEK_HOLE/SEEK_DATA we need to implement our own llseek. Basically for the normal SEEK_*'s we will just defer to the generic helper, and for SEEK_HOLE/SEEK_DATA we will use our fiemap helper to figure out the nearest hole or data. Currently this helper doesn't check for delalloc bytes for prealloc space, so for now treat prealloc as data until that is fixed. Thanks, Signed-off-by: Josef Bacik --- fs/btrfs/ctree.h | 3 + fs/btrfs/file.c | 148 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 150 insertions(+), 1 deletions(-) diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index f30ac05..32be5e0 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h @@ -2505,6 +2505,9 @@ int btrfs_csum_truncate(struct btrfs_trans_handle *trans, int btrfs_lookup_csums_range(struct btrfs_root *root, u64 start, u64 end, struct list_head *list, int search_commit); /* inode.c */ +struct extent_map *btrfs_get_extent_fiemap(struct inode *inode, struct page *page, + size_t pg_offset, u64 start, u64 len, + int create); /* RHEL and EL kernels have a patch that renames PG_checked to FsMisc */ #if defined(ClearPageFsMisc) && !defined(ClearPageChecked) diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index fa4ef18..bd4d061 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -1664,8 +1664,154 @@ out: return ret; } +static int find_desired_extent(struct inode *inode, loff_t *offset, int origin) +{ + struct btrfs_root *root = BTRFS_I(inode)->root; + struct extent_map *em; + struct extent_state *cached_state = NULL; + u64 lockstart = *offset; + u64 lockend = i_size_read(inode); + u64 start = *offset; + u64 orig_start = *offset; + u64 len = i_size_read(inode); + u64 last_end = 0; + int ret = 0; + + lockend = max_t(u64, root->sectorsize, lockend); + if (lockend <= lockstart) + lockend = lockstart + root->sectorsize; + + len = lockend - lockstart + 1; + + len = max_t(u64, len, root->sectorsize); + if (inode->i_size == 0) + return -ENXIO; + + lock_extent_bits(&BTRFS_I(inode)->io_tree, lockstart, lockend, 0, + &cached_state, GFP_NOFS); + + /* + * Delalloc is such a pain. If we have a hole and we have pending + * delalloc for a portion of the hole we will get back a hole that + * exists for the entire range since it hasn't been actually written + * yet. So to take care of this case we need to look for an extent just + * before the position we want in case there is outstanding delalloc + * going on here. + */ + if (origin == SEEK_HOLE && start != 0) { + if (start <= root->sectorsize) + em = btrfs_get_extent_fiemap(inode, NULL, 0, 0, + root->sectorsize, 0); + else + em = btrfs_get_extent_fiemap(inode, NULL, 0, + start - root->sectorsize, + root->sectorsize, 0); + if (IS_ERR(em)) { + ret = -ENXIO; + goto out; + } + last_end = em->start + em->len; + if (em->block_start == EXTENT_MAP_DELALLOC) + last_end = min_t(u64, last_end, inode->i_size); + free_extent_map(em); + } + + while (1) { + em = btrfs_get_extent_fiemap(inode, NULL, 0, start, len, 0); + if (IS_ERR(em)) { + ret = -ENXIO; + break; + } + + if (em->block_start == EXTENT_MAP_HOLE) { + if (test_bit(EXTENT_FLAG_VACANCY, &em->flags)) { + if (last_end <= orig_start) { + free_extent_map(em); + ret = -ENXIO; + break; + } + } + + if (origin == SEEK_HOLE) { + *offset = start; + free_extent_map(em); + break; + } + } else { + if (origin == SEEK_DATA) { + if (em->block_start == EXTENT_MAP_DELALLOC) { + if (start >= inode->i_size) { + free_extent_map(em); + ret = -ENXIO; + break; + } + } + + *offset = start; + free_extent_map(em); + break; + } + } + + start = em->start + em->len; + last_end = em->start + em->len; + + if (em->block_start == EXTENT_MAP_DELALLOC) + last_end = min_t(u64, last_end, inode->i_size); + + if (test_bit(EXTENT_FLAG_VACANCY, &em->flags)) { + free_extent_map(em); + ret = -ENXIO; + break; + } + free_extent_map(em); + cond_resched(); + } + if (!ret) + *offset = min(*offset, inode->i_size); +out: + unlock_extent_cached(&BTRFS_I(inode)->io_tree, lockstart, lockend, + &cached_state, GFP_NOFS); + return ret; +} + +static loff_t btrfs_file_llseek(struct file *file, loff_t offset, int origin) +{ + struct inode *inode = file->f_mapping->host; + int ret; + + mutex_lock(&inode->i_mutex); + switch (origin) { + case SEEK_END: + case SEEK_CUR: + offset = generic_file_llseek_unlocked(file, offset, origin); + goto out; + case SEEK_DATA: + case SEEK_HOLE: + ret = find_desired_extent(inode, &offset, origin); + if (ret) { + mutex_unlock(&inode->i_mutex); + return ret; + } + } + + if (offset < 0 && !(file->f_mode & FMODE_UNSIGNED_OFFSET)) + return -EINVAL; + if (offset > inode->i_sb->s_maxbytes) + return -EINVAL; + + /* Special lock needed here? */ + if (offset != file->f_pos) { + file->f_pos = offset; + file->f_version = 0; + } +out: + mutex_unlock(&inode->i_mutex); + return offset; +} + const struct file_operations btrfs_file_operations = { - .llseek = generic_file_llseek, + .llseek = btrfs_file_llseek, .read = do_sync_read, .write = do_sync_write, .aio_read = generic_file_aio_read, -- 1.7.5.2 From josef@redhat.com Tue Jun 28 10:33:28 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_52,J_CHICKENPOX_62,J_CHICKENPOX_63,J_CHICKENPOX_64, J_CHICKENPOX_66,J_CHICKENPOX_92 autolearn=no version=3.4.0-r929098 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 p5SFXSWO236269 for ; Tue, 28 Jun 2011 10:33:28 -0500 X-ASG-Debug-ID: 1309275207-649003ae0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 64DAE1770BE5 for ; Tue, 28 Jun 2011 08:33:27 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 7Bqoizz0q5Zw0vka for ; Tue, 28 Jun 2011 08:33:27 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5SFXR0T017915 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 28 Jun 2011 11:33:27 -0400 Received: from localhost.localdomain.com (vpn-8-85.rdu.redhat.com [10.11.8.85]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p5SFXKso009582; Tue, 28 Jun 2011 11:33:26 -0400 From: Josef Bacik To: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, xfs@oss.sgi.com, viro@ZenIV.linux.org.uk X-ASG-Orig-Subj: [PATCH] xfstests 255: add a seek_data/seek_hole tester Subject: [PATCH] xfstests 255: add a seek_data/seek_hole tester Date: Tue, 28 Jun 2011 11:33:19 -0400 Message-Id: <1309275199-10801-5-git-send-email-josef@redhat.com> In-Reply-To: <1309275199-10801-1-git-send-email-josef@redhat.com> References: <1309275199-10801-1-git-send-email-josef@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1309275208 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 test to make sure seek_data/seek_hole is acting like it does on Solaris. It will check to see if the fs supports finding a hole or not and will adjust as necessary. Signed-off-by: Josef Bacik --- 255 | 71 ++++++++ 255.out | 2 + group | 1 + src/Makefile | 2 +- src/seek-tester.c | 475 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 550 insertions(+), 1 deletions(-) create mode 100755 255 create mode 100644 255.out create mode 100644 src/seek-tester.c diff --git a/255 b/255 new file mode 100755 index 0000000..4bb4d0b --- /dev/null +++ b/255 @@ -0,0 +1,71 @@ +#! /bin/bash +# FS QA Test No. 255 +# +# Test SEEK_DATA and SEEK_HOLE +# +#----------------------------------------------------------------------- +# Copyright (c) 2011 Red Hat. 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 +# +#----------------------------------------------------------------------- +# +# creator +owner=josef@redhat.com + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# real QA test starts here +_supported_fs generic +_supported_os Linux + +testfile=$TEST_DIR/seek_test.$$ +logfile=$TEST_DIR/seek_test.$$.log + +[ -x $here/src/seek-tester ] || _notrun "seek-tester not built" + +_cleanup() +{ + rm -f $testfile + rm -f $logfile +} +trap "_cleanup; exit \$status" 0 1 2 3 15 + +echo "Silence is golden" +$here/src/seek-tester -q $testfile 2>&1 | tee -a $logfile + +if grep -q "SEEK_HOLE is not supported" $logfile; then + _notrun "SEEK_HOLE/SEEK_DATA not supported by this kernel" +fi + +rm -f $logfile +rm -f $testfile + +status=0 ; exit diff --git a/255.out b/255.out new file mode 100644 index 0000000..7eefb82 --- /dev/null +++ b/255.out @@ -0,0 +1,2 @@ +QA output created by 255 +Silence is golden diff --git a/group b/group index 1f86075..c045e70 100644 --- a/group +++ b/group @@ -368,3 +368,4 @@ deprecated 252 auto quick prealloc 253 auto quick 254 auto quick +255 auto quick diff --git a/src/Makefile b/src/Makefile index 91088bf..ccdaeec 100644 --- a/src/Makefile +++ b/src/Makefile @@ -17,7 +17,7 @@ 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 t_stripealign \ bulkstat_unlink_test_modified t_dir_offset t_futimens t_immutable \ - stale_handle pwrite_mmap_blocked fstrim + stale_handle pwrite_mmap_blocked fstrim seek-tester SUBDIRS = diff --git a/src/seek-tester.c b/src/seek-tester.c new file mode 100644 index 0000000..5141b45 --- /dev/null +++ b/src/seek-tester.c @@ -0,0 +1,475 @@ +/* + * Copyright (C) 2011 Oracle. All rights reserved. + * Copyright (C) 2011 Red Hat. 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 v2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will 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 to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 021110-1307, USA. + */ + +#define _XOPEN_SOURCE 500 +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef SEEK_DATA +#define SEEK_DATA 3 +#define SEEK_HOLE 4 +#endif + +#define FS_NO_HOLES (1 << 0) +#define QUIET (1 << 1) + +static blksize_t alloc_size; +static unsigned flags = 0; + +static int get_io_sizes(int fd) +{ + struct stat buf; + int ret; + + ret = fstat(fd, &buf); + if (ret) + fprintf(stderr, " ERROR %d: Failed to find io blocksize\n", + errno); + + /* st_blksize is typically also the allocation size */ + alloc_size = buf.st_blksize; + + if (!(flags & QUIET)) + printf("Allocation size: %ld\n", alloc_size); + + return ret; +} + +#define do_free(x) do { if(x) free(x); } while(0); + +static void *do_malloc(size_t size) +{ + void *buf; + + buf = malloc(size); + if (!buf) + fprintf(stderr, " ERROR: Unable to allocate %ld bytes\n", + (long)size); + + return buf; +} + +static int do_truncate(int fd, off_t length) +{ + int ret; + + ret = ftruncate(fd, length); + if (ret) + fprintf(stderr, " ERROR %d: Failed to extend file " + "to %ld bytes\n", errno, (long)length); + return ret; +} + +static ssize_t do_pwrite(int fd, const void *buf, size_t count, off_t offset) +{ + ssize_t ret, written = 0; + + while (count > written) { + ret = pwrite(fd, buf + written, count - written, offset + written); + if (ret < 0) { + fprintf(stderr, " ERROR %d: Failed to write %ld " + "bytes\n", errno, (long)count); + return ret; + } + written += ret; + } + + return 0; +} + +static int do_lseek(int testnum, int subtest, int fd, int origin, off_t set, + off_t exp) +{ + off_t pos; + int ret = -1; + + pos = lseek(fd, set, origin); + + if (pos != exp) { + fprintf(stderr, " ERROR in Test %d.%d: POS expected %ld, " + "got %ld\n", testnum, subtest, (long)exp, (long)pos); + goto out; + } + + if (pos == -1 && errno != ENXIO) { + fprintf(stderr, " ERROR in Test %d.%d: ERRNO expected %d, " + "got %d\n", testnum, subtest, ENXIO, errno); + goto out; + } + + ret = 0; + +out: + return ret; +} + +static int get_flags(int fd) +{ + const char *buf = "ABCDEF"; + ssize_t written; + off_t pos; + int ret; + + ret = do_truncate(fd, alloc_size * 2); + if (ret) + return ret; + + written = do_pwrite(fd, buf, strlen(buf), 0); + if (written) + return -1; + + pos = lseek(fd, 0, SEEK_HOLE); + if (pos == alloc_size * 2) { + if (!(flags & QUIET)) + printf("File system does not recognize holes, the only " + "hole found will be at the end.\n"); + flags |= FS_NO_HOLES; + } else if (pos == (off_t)-1) { + fprintf(stderr, "SEEK_HOLE is not supported\n"); + return -1; + } + + return 0; +} + +/* test hole data hole data */ +static int test06(int fd, int testnum) +{ + int ret = 0; + char *buf = NULL; + int bufsz = alloc_size; + int filsz = bufsz * 4; + int off; + + if (flags & FS_NO_HOLES) + return 1; + + /* HOLE - DATA - HOLE - DATA */ + /* Each unit is bufsz */ + + buf = do_malloc(bufsz); + if (!buf) + goto out; + memset(buf, 'a', bufsz); + + ret = do_pwrite(fd, buf, bufsz, bufsz); + if (!ret) + do_pwrite(fd, buf, bufsz, bufsz * 3); + if (ret) + goto out; + + /* offset at the beginning */ + ret += do_lseek(testnum, 1, fd, SEEK_HOLE, 0, 0); + ret += do_lseek(testnum, 2, fd, SEEK_HOLE, 1, 1); + ret += do_lseek(testnum, 3, fd, SEEK_DATA, 0, bufsz); + ret += do_lseek(testnum, 4, fd, SEEK_DATA, 1, bufsz); + + /* offset around first hole-data boundary */ + off = bufsz; + ret += do_lseek(testnum, 5, fd, SEEK_HOLE, off - 1, off - 1); + ret += do_lseek(testnum, 6, fd, SEEK_DATA, off - 1, off); + ret += do_lseek(testnum, 7, fd, SEEK_HOLE, off, bufsz * 2); + ret += do_lseek(testnum, 8, fd, SEEK_DATA, off, off); + ret += do_lseek(testnum, 9, fd, SEEK_HOLE, off + 1, bufsz * 2); + ret += do_lseek(testnum, 10, fd, SEEK_DATA, off + 1, off + 1); + + /* offset around data-hole boundary */ + off = bufsz * 2; + ret += do_lseek(testnum, 11, fd, SEEK_HOLE, off - 1, off); + ret += do_lseek(testnum, 12, fd, SEEK_DATA, off - 1, off - 1); + ret += do_lseek(testnum, 13, fd, SEEK_HOLE, off, off); + ret += do_lseek(testnum, 14, fd, SEEK_DATA, off, bufsz * 3); + ret += do_lseek(testnum, 15, fd, SEEK_HOLE, off + 1, off + 1); + ret += do_lseek(testnum, 16, fd, SEEK_DATA, off + 1, bufsz * 3); + + /* offset around second hole-data boundary */ + off = bufsz * 3; + ret += do_lseek(testnum, 17, fd, SEEK_HOLE, off - 1, off - 1); + ret += do_lseek(testnum, 18, fd, SEEK_DATA, off - 1, off); + ret += do_lseek(testnum, 19, fd, SEEK_HOLE, off, filsz); + ret += do_lseek(testnum, 20, fd, SEEK_DATA, off, off); + ret += do_lseek(testnum, 21, fd, SEEK_HOLE, off + 1, filsz); + ret += do_lseek(testnum, 22, fd, SEEK_DATA, off + 1, off + 1); + + /* offset around the end of file */ + off = filsz; + ret += do_lseek(testnum, 23, fd, SEEK_HOLE, off - 1, filsz); + ret += do_lseek(testnum, 24, fd, SEEK_DATA, off - 1, filsz - 1); + ret += do_lseek(testnum, 25, fd, SEEK_HOLE, off, -1); + ret += do_lseek(testnum, 26, fd, SEEK_DATA, off, -1); + ret += do_lseek(testnum, 27, fd, SEEK_HOLE, off + 1, -1); + ret += do_lseek(testnum, 28, fd, SEEK_DATA, off + 1, -1); + +out: + do_free(buf); + return ret; +} + +/* test file with data at the beginning and a hole at the end */ +static int test05(int fd, int testnum) +{ + int ret = -1; + char *buf = NULL; + int bufsz = alloc_size; + int filsz = bufsz * 4; + + if (flags & FS_NO_HOLES) + return 1; + + /* DATA - HOLE */ + /* Each unit is bufsz */ + + buf = do_malloc(bufsz); + if (!buf) + goto out; + memset(buf, 'a', bufsz); + + ret = do_truncate(fd, filsz); + if (!ret) + ret = do_pwrite(fd, buf, bufsz, 0); + if (ret) + goto out; + + /* offset at the beginning */ + ret += do_lseek(testnum, 1, fd, SEEK_HOLE, 0, bufsz); + ret += do_lseek(testnum, 2, fd, SEEK_HOLE, 1, bufsz); + ret += do_lseek(testnum, 3, fd, SEEK_DATA, 0, 0); + ret += do_lseek(testnum, 4, fd, SEEK_DATA, 1, 1); + + /* offset around data-hole boundary */ + ret += do_lseek(testnum, 5, fd, SEEK_HOLE, bufsz - 1, bufsz); + ret += do_lseek(testnum, 6, fd, SEEK_DATA, bufsz - 1, bufsz - 1); + ret += do_lseek(testnum, 7, fd, SEEK_HOLE, bufsz, bufsz); + ret += do_lseek(testnum, 8, fd, SEEK_DATA, bufsz, -1); + ret += do_lseek(testnum, 9, fd, SEEK_HOLE, bufsz + 1, bufsz + 1); + ret += do_lseek(testnum, 10, fd, SEEK_DATA, bufsz + 1, -1); + + /* offset around eof */ + ret += do_lseek(testnum, 11, fd, SEEK_HOLE, filsz - 1, filsz - 1); + ret += do_lseek(testnum, 12, fd, SEEK_DATA, filsz - 1, -1); + ret += do_lseek(testnum, 13, fd, SEEK_HOLE, filsz, -1); + ret += do_lseek(testnum, 14, fd, SEEK_DATA, filsz, -1); + ret += do_lseek(testnum, 15, fd, SEEK_HOLE, filsz + 1, -1); + ret += do_lseek(testnum, 16, fd, SEEK_DATA, filsz + 1, -1); + +out: + do_free(buf); + return ret; +} + +/* test hole begin and data end */ +static int test04(int fd, int testnum) +{ + int ret; + char *buf = "ABCDEFGH"; + int bufsz = sizeof(buf); + int holsz = alloc_size * 2; + int filsz = holsz + bufsz; + + if (flags & FS_NO_HOLES) + return 1; + + /* HOLE - DATA */ + + ret = do_pwrite(fd, buf, bufsz, holsz); + if (ret) + goto out; + + /* offset at the beginning */ + ret += do_lseek(testnum, 1, fd, SEEK_HOLE, 0, 0); + ret += do_lseek(testnum, 2, fd, SEEK_HOLE, 1, 1); + ret += do_lseek(testnum, 3, fd, SEEK_DATA, 0, holsz); + ret += do_lseek(testnum, 4, fd, SEEK_DATA, 1, holsz); + + /* offset around hole-data boundary */ + ret += do_lseek(testnum, 5, fd, SEEK_HOLE, holsz - 1, holsz - 1); + ret += do_lseek(testnum, 6, fd, SEEK_DATA, holsz - 1, holsz); + ret += do_lseek(testnum, 7, fd, SEEK_HOLE, holsz, filsz); + ret += do_lseek(testnum, 8, fd, SEEK_DATA, holsz, holsz); + ret += do_lseek(testnum, 9, fd, SEEK_HOLE, holsz + 1, filsz); + ret += do_lseek(testnum, 10, fd, SEEK_DATA, holsz + 1, holsz + 1); + + /* offset around eof */ + ret += do_lseek(testnum, 11, fd, SEEK_HOLE, filsz - 1, filsz); + ret += do_lseek(testnum, 12, fd, SEEK_DATA, filsz - 1, filsz - 1); + ret += do_lseek(testnum, 13, fd, SEEK_HOLE, filsz, -1); + ret += do_lseek(testnum, 14, fd, SEEK_DATA, filsz, -1); + ret += do_lseek(testnum, 15, fd, SEEK_HOLE, filsz + 1, -1); + ret += do_lseek(testnum, 16, fd, SEEK_DATA, filsz + 1, -1); +out: + return ret; +} + +/* test full file */ +static int test03(int fd, int testnum) +{ + char *buf = NULL; + int bufsz = alloc_size + 100; + int ret = -1; + + buf = do_malloc(bufsz); + if (!buf) + goto out; + memset(buf, 'a', bufsz); + + ret = do_pwrite(fd, buf, bufsz, 0); + if (ret) + goto out; + + /* offset at the beginning */ + ret += do_lseek(testnum, 1, fd, SEEK_HOLE, 0, bufsz); + ret += do_lseek(testnum, 2, fd, SEEK_HOLE, 1, bufsz); + ret += do_lseek(testnum, 3, fd, SEEK_DATA, 0, 0); + ret += do_lseek(testnum, 4, fd, SEEK_DATA, 1, 1); + + /* offset around eof */ + ret += do_lseek(testnum, 5, fd, SEEK_HOLE, bufsz - 1, bufsz); + ret += do_lseek(testnum, 6, fd, SEEK_DATA, bufsz - 1, bufsz - 1); + ret += do_lseek(testnum, 7, fd, SEEK_HOLE, bufsz, -1); + ret += do_lseek(testnum, 8, fd, SEEK_DATA, bufsz, -1); + ret += do_lseek(testnum, 9, fd, SEEK_HOLE, bufsz + 1, -1); + ret += do_lseek(testnum, 10, fd, SEEK_DATA, bufsz + 1, -1); + +out: + do_free(buf); + return ret; +} + +/* test empty file */ +static int test02(int fd, int testnum) +{ + int ret = 0; + + ret += do_lseek(testnum, 1, fd, SEEK_DATA, 0, -1); + ret += do_lseek(testnum, 2, fd, SEEK_HOLE, 0, -1); + ret += do_lseek(testnum, 3, fd, SEEK_HOLE, 1, -1); + + return ret; +} + +/* test feature support */ +static int test01(int fd, int testnum) +{ + int ret; + char buf[] = "ABCDEFGH"; + int bufsz = sizeof(buf); + + ret = do_pwrite(fd, buf, bufsz, 0); + if (ret) + goto out; + + ret += do_lseek(testnum, 1, fd, SEEK_DATA, 0, 0); + ret += do_lseek(testnum, 2, fd, SEEK_HOLE, 0, bufsz); + +out: + return ret; +} + +struct testrec { + int test_num; + int (*test_func)(int fd, int testnum); + char *test_desc; +}; + +struct testrec seek_tests[] = { + { 1, test01, "Test basic support" }, + { 2, test02, "Test an empty file" }, + { 3, test03, "Test a full file" }, + { 4, test04, "Test file hole at beg, data at end" }, + { 5, test05, "Test file data at beg, hole at end" }, + { 6, test06, "Test file hole data hole data" }, +}; + +static int run_test(int fd, struct testrec *tr) +{ + int ret; + + ret = tr->test_func(fd, tr->test_num); + if (!(flags & QUIET)) + printf("%02d. %-50s\t%s\n", tr->test_num, tr->test_desc, + ret < 0 ? "FAIL" : (ret == 0 ? "SUCC" : "NOT RUN")); + return ret; +} + +void print_help() +{ + printf("seek-test [-h] [-q] filename\n"); + printf("\t-h - this message\n"); + printf("\t-q - quiet, no output\n"); + printf("\tfilename - file to use for the test\n"); +} + +int main(int argc, char **argv) +{ + int ret = -1; + int i, fd = -1; + int c; + int numtests = sizeof(seek_tests) / sizeof(struct testrec); + + while ((c = getopt(argc, argv, "qh")) != -1) { + switch (c) { + case 'q': + flags |= QUIET; + break; + case 'h': + print_help(); + exit(0); + default: + print_help(); + exit(1); + } + } + + if (optind >= argc) { + print_help(); + exit(1); + } + + fd = open(argv[optind], O_RDWR|O_CREAT|O_TRUNC, 0644); + if (fd < 0) { + fprintf(stderr, "Failed to open testfile: %d\n", errno); + goto out; + } + + ret = get_io_sizes(fd); + if (ret) + goto out; + + ret = get_flags(fd); + if (ret) + goto out; + + for (i = 0; i < numtests; ++i) { + ret = do_truncate(fd, 0); + if (ret) + goto out; + run_test(fd, &seek_tests[i]); + } + +out: + if (fd > -1) + close(fd); + return ret; +} -- 1.7.5.2 From josef@redhat.com Tue Jun 28 10:33:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5SFXlOH236547 for ; Tue, 28 Jun 2011 10:33:48 -0500 X-ASG-Debug-ID: 1309275205-15f302a30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9BC173675F for ; Tue, 28 Jun 2011 08:33:26 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id JXaMNZvMiKyo9Kzl for ; Tue, 28 Jun 2011 08:33:26 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5SFXPX5027132 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 28 Jun 2011 11:33:25 -0400 Received: from localhost.localdomain.com (vpn-8-85.rdu.redhat.com [10.11.8.85]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p5SFXKsm009582; Tue, 28 Jun 2011 11:33:24 -0400 From: Josef Bacik To: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, xfs@oss.sgi.com, viro@ZenIV.linux.org.uk X-ASG-Orig-Subj: [PATCH 3/4] Ext4: handle SEEK_HOLE/SEEK_DATA generically Subject: [PATCH 3/4] Ext4: handle SEEK_HOLE/SEEK_DATA generically Date: Tue, 28 Jun 2011 11:33:17 -0400 Message-Id: <1309275199-10801-3-git-send-email-josef@redhat.com> In-Reply-To: <1309275199-10801-1-git-send-email-josef@redhat.com> References: <1309275199-10801-1-git-send-email-josef@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1309275206 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 Since Ext4 has its own lseek we need to make sure it handles SEEK_HOLE/SEEK_DATA. For now just do the same thing that is done in the generic case, somebody else can come along and make it do fancy things later. Thanks, Signed-off-by: Josef Bacik --- fs/ext4/file.c | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+), 0 deletions(-) diff --git a/fs/ext4/file.c b/fs/ext4/file.c index 2c09723..ce766f9 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c @@ -236,6 +236,27 @@ loff_t ext4_llseek(struct file *file, loff_t offset, int origin) } offset += file->f_pos; break; + case SEEK_DATA: + /* + * In the generic case the entire file is data, so as long as + * offset isn't at the end of the file then the offset is data. + */ + if (offset >= inode->i_size) { + mutex_unlock(&inode->i_mutex); + return -ENXIO; + } + break; + case SEEK_HOLE: + /* + * There is a virtual hole at the end of the file, so as long as + * offset isn't i_size or larger, return i_size. + */ + if (offset >= inode->i_size) { + mutex_unlock(&inode->i_mutex); + return -ENXIO; + } + offset = inode->i_size; + break; } if (offset < 0 || offset > maxbytes) { -- 1.7.5.2 From sekharan@us.ibm.com Tue Jun 28 18:39:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_51, J_CHICKENPOX_61 autolearn=no version=3.4.0-r929098 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 p5SNdOxi013727 for ; Tue, 28 Jun 2011 18:39:24 -0500 X-ASG-Debug-ID: 1309304363-251c00680000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e3.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C86FC1775C6D for ; Tue, 28 Jun 2011 16:39:23 -0700 (PDT) Received: from e3.ny.us.ibm.com (e3.ny.us.ibm.com [32.97.182.143]) by cuda.sgi.com with ESMTP id cMCyui3uoVX53ATl for ; Tue, 28 Jun 2011 16:39:23 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay06.pok.ibm.com (d01relay06.pok.ibm.com [9.56.227.116]) by e3.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5SNGRc0001663 for ; Tue, 28 Jun 2011 19:16:27 -0400 Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay06.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5SNdMbw1658906 for ; Tue, 28 Jun 2011 19:39:22 -0400 Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5SJdAEx032003 for ; Tue, 28 Jun 2011 16:39:10 -0300 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d01av03.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5SJd9WQ031915; Tue, 28 Jun 2011 16:39:10 -0300 X-ASG-Orig-Subj: Re: xfstests test case 180 fails often Subject: Re: xfstests test case 180 fails often From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: aelder@sgi.com Cc: XFS Mailing List In-Reply-To: <1308259762.2717.31.camel@doink> References: <1308077464.7661.473.camel@chandra-lucid.beaverton.ibm.com> <1308259762.2717.31.camel@doink> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Tue, 28 Jun 2011 16:39:21 -0700 Message-ID: <1309304361.5505.6211.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e3.ny.us.ibm.com[32.97.182.143] X-Barracuda-Start-Time: 1309304363 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 Hi Alex, I tried git bisect and it ended up in a qla2xxx fix (and I do not even have qlogic card in that system). I did it couple more times and landed on different patches. My latest (fourth ot fifth, I forgot :) bisect landed on the patch with commit 546a1924224078c6f582e68f890b05b387b42653 ( writeback: write_cache_pages doesn't terminate at nr_to_write <= 0) I verified that this is valid patch by running the test script 180 for nearly 500 times on the tree just prior to this patch. chandra On Thu, 2011-06-16 at 16:29 -0500, Alex Elder wrote: > On Tue, 2011-06-14 at 11:51 -0700, Chandra Seetharaman wrote: > > Hello All, > > > > test case 180 fails often (4 out of 5) in my x86_64 system. > > Any suggestions on how to proceed to debug ? > > I have been seeing failures like that sometimes > (more often recently I think) for a while. I > have not had the chance to really chase it down. > > If you can reproduce it pretty relibly you could > use "git bisect" to try to find out whether the > failures started to occur after a particular > commit. > > -Alex > > > regards, > > > > chandra > > > > 80 176s ... - output mismatch (see 180.out.bad)^M > > --- 180.out 2011-04-20 08:34:36.000000000 -0700^M > > +++ 180.out.bad 2011-06-03 14:10:45.000000000 -0700^M > > @@ -1 +1,4 @@^M > > QA output created by 180^M > > +file /mnt/xfsScratchMntPt/656 has incorrect size - sync failed^M > > +file /mnt/xfsScratchMntPt/818 has incorrect size - sync failed^M > > +file /mnt/xfsScratchMntPt/899 has incorrect size - sync failed^M > > Ran: 180^M > > Failures: 180^M > > Failed 1 of 1 tests^M > > > > > > _______________________________________________ > > xfs mailing list > > xfs@oss.sgi.com > > http://oss.sgi.com/mailman/listinfo/xfs > > > From sekharan@us.ibm.com Tue Jun 28 19:53:13 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_66 autolearn=no version=3.4.0-r929098 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 p5T0rDqV025158 for ; Tue, 28 Jun 2011 19:53:13 -0500 X-ASG-Debug-ID: 1309308792-4a5701330000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e31.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CECDA1775D88 for ; Tue, 28 Jun 2011 17:53:12 -0700 (PDT) Received: from e31.co.us.ibm.com (e31.co.us.ibm.com [32.97.110.149]) by cuda.sgi.com with ESMTP id GEni7kzf3YYMgfzA for ; Tue, 28 Jun 2011 17:53:12 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay02.boulder.ibm.com (d03relay02.boulder.ibm.com [9.17.195.227]) by e31.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5T0a2RT030082 for ; Tue, 28 Jun 2011 18:36:02 -0600 Received: from d03av01.boulder.ibm.com (d03av01.boulder.ibm.com [9.17.195.167]) by d03relay02.boulder.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id p5T0r6V9175918 for ; Tue, 28 Jun 2011 18:53:06 -0600 Received: from d03av01.boulder.ibm.com (loopback [127.0.0.1]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5T0r5Kv009732 for ; Tue, 28 Jun 2011 18:53:05 -0600 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5T0r5Gn009711; Tue, 28 Jun 2011 18:53:05 -0600 X-ASG-Orig-Subj: [PATCH] xfs: replace bp->flags usage with predefined macros Subject: [PATCH] xfs: replace bp->flags usage with predefined macros From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: XFS Mailing List Cc: Alex Elder Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Tue, 28 Jun 2011 17:53:04 -0700 Message-ID: <1309308784.5505.6214.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e31.co.us.ibm.com[32.97.110.149] X-Barracuda-Start-Time: 1309308792 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 Cleanup: Replace bp->flags usage with predefined macros. Signed-off-by: Chandra Seetharaman --- diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index 5e68099..8b24dc4 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c @@ -470,7 +470,7 @@ _xfs_buf_find( * continue searching to the right for an exact match. */ if (bp->b_buffer_length != range_length) { - ASSERT(bp->b_flags & XBF_STALE); + ASSERT(XFS_BUF_ISSTALE(bp)); rbp = &(*rbp)->rb_right; continue; } @@ -516,7 +516,7 @@ found: * it. We need to keep flags such as how we allocated the buffer memory * intact here. */ - if (bp->b_flags & XBF_STALE) { + if (XFS_BUF_ISSTALE(bp)) { ASSERT((bp->b_flags & _XBF_DELWRI_Q) == 0); bp->b_flags &= XBF_MAPPED | _XBF_KMEM | _XBF_PAGES; } @@ -631,7 +631,7 @@ xfs_buf_read( goto no_buffer; } else { /* We do not want read in the flags */ - bp->b_flags &= ~XBF_READ; + XFS_BUF_UNREAD(bp); } } @@ -868,7 +868,7 @@ xfs_buf_rele( ASSERT(atomic_read(&bp->b_hold) > 0); if (atomic_dec_and_lock(&bp->b_hold, &pag->pag_buf_lock)) { - if (!(bp->b_flags & XBF_STALE) && + if (!XFS_BUF_ISSTALE(bp) && atomic_read(&bp->b_lru_ref)) { xfs_buf_lru_add(bp); spin_unlock(&pag->pag_buf_lock); @@ -904,7 +904,7 @@ xfs_buf_cond_lock( locked = down_trylock(&bp->b_sema) == 0; if (locked) XB_SET_OWNER(bp); - else if (atomic_read(&bp->b_pin_count) && (bp->b_flags & XBF_STALE)) + else if (atomic_read(&bp->b_pin_count) && XFS_BUF_ISSTALE(bp)) xfs_log_force(bp->b_target->bt_mount, 0); trace_xfs_buf_cond_lock(bp, _RET_IP_); @@ -933,7 +933,7 @@ xfs_buf_lock( { trace_xfs_buf_lock(bp, _RET_IP_); - if (atomic_read(&bp->b_pin_count) && (bp->b_flags & XBF_STALE)) + if (atomic_read(&bp->b_pin_count) && XFS_BUF_ISSTALE(bp)) xfs_log_force(bp->b_target->bt_mount, 0); down(&bp->b_sema); XB_SET_OWNER(bp); @@ -954,7 +954,7 @@ xfs_buf_unlock( { if ((bp->b_flags & (XBF_DELWRI|_XBF_DELWRI_Q)) == XBF_DELWRI) { atomic_inc(&bp->b_hold); - bp->b_flags |= XBF_ASYNC; + XFS_BUF_ASYNC(bp); xfs_buf_delwri_queue(bp, 0); } @@ -997,7 +997,7 @@ xfs_buf_iodone_work( if (bp->b_iodone) (*(bp->b_iodone))(bp); - else if (bp->b_flags & XBF_ASYNC) + else if (XFS_BUF_ISASYNC(bp)) xfs_buf_relse(bp); } @@ -1010,9 +1010,9 @@ xfs_buf_ioend( bp->b_flags &= ~(XBF_READ | XBF_WRITE | XBF_READ_AHEAD); if (bp->b_error == 0) - bp->b_flags |= XBF_DONE; + XFS_BUF_DONE(bp); - if ((bp->b_iodone) || (bp->b_flags & XBF_ASYNC)) { + if ((bp->b_iodone) || XFS_BUF_ISASYNC(bp)) { if (schedule) { INIT_WORK(&bp->b_iodone_work, xfs_buf_iodone_work); queue_work(xfslogd_workqueue, &bp->b_iodone_work); @@ -1041,8 +1041,9 @@ xfs_bwrite( { int error; - bp->b_flags |= XBF_WRITE; - bp->b_flags &= ~(XBF_ASYNC | XBF_READ); + XFS_BUF_WRITE(bp); + XFS_BUF_UNASYNC(bp); + XFS_BUF_UNREAD(bp); xfs_buf_delwri_dequeue(bp); xfs_bdstrat_cb(bp); @@ -1061,8 +1062,9 @@ xfs_bdwrite( { trace_xfs_buf_bdwrite(bp, _RET_IP_); - bp->b_flags &= ~XBF_READ; - bp->b_flags |= (XBF_DELWRI | XBF_ASYNC); + XFS_BUF_UNREAD(bp); + XFS_BUF_DELAYWRITE(bp); + XFS_BUF_ASYNC(bp); xfs_buf_delwri_queue(bp, 1); } @@ -1108,7 +1110,7 @@ STATIC int xfs_bioerror_relse( struct xfs_buf *bp) { - int64_t fl = XFS_BUF_BFLAGS(bp); + int64_t async = XFS_BUF_ISASYNC(bp); /* * No need to wait until the buffer is unpinned. * We aren't flushing it. @@ -1122,7 +1124,7 @@ xfs_bioerror_relse( XFS_BUF_DONE(bp); XFS_BUF_STALE(bp); XFS_BUF_CLR_IODONE_FUNC(bp); - if (!(fl & XBF_ASYNC)) { + if (!async) { /* * Mark b_error and B_ERROR _both_. * Lot's of chunkcache code assumes that. @@ -1203,7 +1205,7 @@ xfs_buf_bio_end_io( xfs_buf_ioerror(bp, -error); - if (!error && xfs_buf_is_vmapped(bp) && (bp->b_flags & XBF_READ)) + if (!error && xfs_buf_is_vmapped(bp) && (XFS_BUF_ISREAD(bp))) invalidate_kernel_vmap_range(bp->b_addr, xfs_buf_vmap_len(bp)); _xfs_buf_ioend(bp, 1); @@ -1223,19 +1225,19 @@ _xfs_buf_ioapply( total_nr_pages = bp->b_page_count; map_i = 0; - if (bp->b_flags & XBF_ORDERED) { - ASSERT(!(bp->b_flags & XBF_READ)); + if (XFS_BUF_ISORDERED(bp)) { + ASSERT(!(XFS_BUF_ISREAD(bp))); rw = WRITE_FLUSH_FUA; } else if (bp->b_flags & XBF_LOG_BUFFER) { ASSERT(!(bp->b_flags & XBF_READ_AHEAD)); bp->b_flags &= ~_XBF_RUN_QUEUES; - rw = (bp->b_flags & XBF_WRITE) ? WRITE_SYNC : READ_SYNC; + rw = XFS_BUF_ISWRITE(bp) ? WRITE_SYNC : READ_SYNC; } else if (bp->b_flags & _XBF_RUN_QUEUES) { ASSERT(!(bp->b_flags & XBF_READ_AHEAD)); bp->b_flags &= ~_XBF_RUN_QUEUES; - rw = (bp->b_flags & XBF_WRITE) ? WRITE_META : READ_META; + rw = XFS_BUF_ISWRITE(bp) ? WRITE_META : READ_META; } else { - rw = (bp->b_flags & XBF_WRITE) ? WRITE : + rw = XFS_BUF_ISWRITE(bp) ? WRITE : (bp->b_flags & XBF_READ_AHEAD) ? READA : READ; } @@ -1289,14 +1291,13 @@ xfs_buf_iorequest( { trace_xfs_buf_iorequest(bp, _RET_IP_); - if (bp->b_flags & XBF_DELWRI) { + if (XFS_BUF_ISDELAYWRITE(bp)) { xfs_buf_delwri_queue(bp, 1); return 0; } - if (bp->b_flags & XBF_WRITE) { + if (XFS_BUF_ISWRITE(bp)) xfs_buf_wait_unpin(bp); - } xfs_buf_hold(bp); @@ -1622,7 +1623,7 @@ xfs_buf_delwri_dequeue( int dequeued = 0; spin_lock(dwlk); - if ((bp->b_flags & XBF_DELWRI) && !list_empty(&bp->b_list)) { + if (XFS_BUF_ISDELAYWRITE(bp) && !list_empty(&bp->b_list)) { ASSERT(bp->b_flags & _XBF_DELWRI_Q); list_del_init(&bp->b_list); dequeued = 1; @@ -1650,7 +1651,7 @@ xfs_buf_delwri_promote( struct xfs_buftarg *btp = bp->b_target; long age = xfs_buf_age_centisecs * msecs_to_jiffies(10) + 1; - ASSERT(bp->b_flags & XBF_DELWRI); + ASSERT(XFS_BUF_ISDELAYWRITE(bp)); ASSERT(bp->b_flags & _XBF_DELWRI_Q); /* @@ -1692,7 +1693,7 @@ xfs_buf_delwri_split( INIT_LIST_HEAD(list); spin_lock(dwlk); list_for_each_entry_safe(bp, n, dwq, b_list) { - ASSERT(bp->b_flags & XBF_DELWRI); + ASSERT(XFS_BUF_ISDELAYWRITE(bp)); if (!XFS_BUF_ISPINNED(bp) && !xfs_buf_cond_lock(bp)) { if (!force && @@ -1703,7 +1704,7 @@ xfs_buf_delwri_split( bp->b_flags &= ~(XBF_DELWRI|_XBF_DELWRI_Q| _XBF_RUN_QUEUES); - bp->b_flags |= XBF_WRITE; + XFS_BUF_WRITE(bp); list_move_tail(&bp->b_list, list); trace_xfs_buf_delwri_split(bp, _RET_IP_); } else @@ -1826,7 +1827,7 @@ xfs_flush_buftarg( ASSERT(target == bp->b_target); list_del_init(&bp->b_list); if (wait) { - bp->b_flags &= ~XBF_ASYNC; + XFS_BUF_UNASYNC(bp); list_add(&bp->b_list, &wait_list); } xfs_bdstrat_cb(bp); From david@fromorbit.com Tue Jun 28 20:05:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5T152KH025874 for ; Tue, 28 Jun 2011 20:05:03 -0500 X-ASG-Debug-ID: 1309309500-501a025b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AFDAA134CBB7 for ; Tue, 28 Jun 2011 18:05:00 -0700 (PDT) Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id 2HjnWwHRHoW6zmpY for ; Tue, 28 Jun 2011 18:05:00 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Al0DAIN3Ck55LChDgWdsb2JhbABSp0IVAQEWJiWId8EEDoYiBKJD Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail05.adl6.internode.on.net with ESMTP; 29 Jun 2011 10:34:59 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QbjD7-0008Sx-5E; Wed, 29 Jun 2011 11:04:57 +1000 Date: Wed, 29 Jun 2011 11:04:57 +1000 From: Dave Chinner To: Chandra Seetharaman Cc: aelder@sgi.com, XFS Mailing List X-ASG-Orig-Subj: Re: xfstests test case 180 fails often Subject: Re: xfstests test case 180 fails often Message-ID: <20110629010457.GR32466@dastard> References: <1308077464.7661.473.camel@chandra-lucid.beaverton.ibm.com> <1308259762.2717.31.camel@doink> <1309304361.5505.6211.camel@chandra-lucid.beaverton.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1309304361.5505.6211.camel@chandra-lucid.beaverton.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1309309501 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0204 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67418 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, Jun 28, 2011 at 04:39:21PM -0700, Chandra Seetharaman wrote: > On Thu, 2011-06-16 at 16:29 -0500, Alex Elder wrote: > > On Tue, 2011-06-14 at 11:51 -0700, Chandra Seetharaman wrote: > > > Hello All, > > > > > > test case 180 fails often (4 out of 5) in my x86_64 system. > > > Any suggestions on how to proceed to debug ? > > > > I have been seeing failures like that sometimes > > (more often recently I think) for a while. I > > have not had the chance to really chase it down. > > > > If you can reproduce it pretty relibly you could > > use "git bisect" to try to find out whether the > > failures started to occur after a particular > > commit. > > I tried git bisect and it ended up in a qla2xxx fix (and I do not even > have qlogic card in that system). > > I did it couple more times and landed on different patches. That indicates your test case is not 100% reliable. :/ I haven't seen a failure in 180 on any of my test machines for some time (32 or 64 bit). > My latest (fourth ot fifth, I forgot :) bisect landed on the patch with > commit 546a1924224078c6f582e68f890b05b387b42653 ( writeback: > write_cache_pages doesn't terminate at nr_to_write <= 0) That was merged in 2.6.36-rc2, and shouldn't have any sync implications at all.... > I verified that this is valid patch by running the test script 180 for > nearly 500 times on the tree just prior to this patch. Ok, more details about your test setup is needed. What kernel are you running? What storage are you using? How much RAM/CPU, etc? Also, what are the sizes of the files that had reported incorrect size? Cheers, Dave. PS: Please don't top post replies. Please quote and reply inline so that the thread flow is easy to follow. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Jun 28 20:24:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5T1OfS7027251 for ; Tue, 28 Jun 2011 20:24:41 -0500 X-ASG-Debug-ID: 1309310679-328d00150000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0A8BC3C768 for ; Tue, 28 Jun 2011 18:24:40 -0700 (PDT) Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id YZFY1DLdEpYYjkXL for ; Tue, 28 Jun 2011 18:24:40 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Al4DAJp+Ck55LChDgWdsb2JhbABSEKcyFQEBFiYliHfAUA6GIgShekk Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail05.adl6.internode.on.net with ESMTP; 29 Jun 2011 10:54:33 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QbjVo-0008Uj-MA; Wed, 29 Jun 2011 11:24:16 +1000 Date: Wed, 29 Jun 2011 11:24:16 +1000 From: Dave Chinner To: Paul Anderson Cc: xfs-oss X-ASG-Orig-Subj: Re: XFS file loss - 2.6.38.5, FC RAID Subject: Re: XFS file loss - 2.6.38.5, FC RAID Message-ID: <20110629012416.GS32466@dastard> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1309310681 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67421 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, Jun 28, 2011 at 11:03:02AM -0400, Paul Anderson wrote: > I'm sending this error report as an informational point - I'm not sure > much can be done about it at the present time. > > We had a machine crash Sunday night (June 26) around 8PM - the > hardware failed due to a Sun J4400 chassis fault. The XFS file loss > noted in this report was not on this chassis. > > On power cycle and subsequent reboot, one of our home directory > volumes, a pair of 40TiByte Promise RAID6 fiber channel SAN array > together in a single LVM, lost many files. > > File loss is characterized by numerous files now with length of zero. > I lost files that I know were last changed on Friday (June 24), more > than 2 days before the crash. Which means either they weren't written back, or the inode was never written to disk or logged after the data was written. Can you tell us about the files were that were zero length? e.g. their lifecycle, how they are modified, expected size, etc? > Kernel is 2.6.38.5, userland is Ubuntu 10.04, server hardware is a 24 > core Dell R900 w/128GiBytes RAM, an LSIFC949E fiber channel card, a > bunch of Dell PERC 6 RAID cards, and a lot of direct attach SAS JBOD > cabinets (mostly J4400, but a few Dell MD1000's). The boot drive is a > pair of matched 1TiByte drives in a HW RAID-1 config. hmmmm - lots of RAM. I wonder if something in writeback land got stuck and the system never hit dirty memory thresholds or some other writeback trigger. Anything in the log about hung tasks? > The Promise RAID6 SAN unit where the files were lost is battery > backed, and reports no errors. The filesystem showed no signs of > distress prior to this. The filesystem was less than 4 weeks old. > > Here's the fstab mount options: > > /dev/wonderlandhomet/homet /homet xfs > inode64,logbufs=8,noatime 0 0 Ok, so not using delayed logging. > xfs_info shows: > > root@wonderland:~# xfs_info /homet > meta-data=/dev/mapper/wonderlandhomet-homet isize=256 agcount=81, > agsize=268435328 blks > = sectsz=512 attr=2 > data = bsize=4096 blocks=21484355584, imaxpct=1 > = sunit=128 swidth=2816 blks > naming =version 2 bsize=4096 ascii-ci=0 > log =internal bsize=4096 blocks=521728, version=2 > = sectsz=512 sunit=8 blks, lazy-count=1 > realtime =none extsz=4096 blocks=0, rtextents=0 > > The dmesg log shows no signs of hardware or kernel software problems > up to the point where the directly attached SAS card reported faults > for the cabinet. > > The vm tuning parameters are defaults (yes, I know this is bad): > > root@louie:/proc/sys/vm# cat dirty_background_bytes > 0 > root@louie:/proc/sys/vm# cat dirty_background_ratio > 10 > root@louie:/proc/sys/vm# cat dirty_bytes > 0 > root@louie:/proc/sys/vm# cat dirty_expire_centisecs > 3000 > root@louie:/proc/sys/vm# cat dirty_ratio > 40 > root@louie:/proc/sys/vm# cat dirty_writeback_centisecs > 500 Those look like the defaults to me, so background writeback won't start until ~13GB of memory is dirty. Hence it should only be doing kupdate writeback at that point based on inodes aging more than 30s... > My main question is: what specific action can I take to minimize the > likelihood of this happening again? As far as I know, the dirty pages > should expire and be flushed to the FC array (2 days? should be > enough), and the FC array itself is stable. No idea at this point. There is the possibility that the AIL did not get pushed because there wasn't sufficient transaction activity so the inode never got written back (you've got a ~2GB log, so entirely possible), but I would have expect log replay to handle that case just fine. 2.6.39 pushes the AIL every 30s so avoids this problem, but the fix is not a simple backport to 2.6.38 because it is part of a conversion of the xfssyncd/xfsaild to use workqueues. Other than that, I can't really say. A reproducable test case is usually needed to find such problems, and I don't think you have one of those... :/ Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Jun 28 23:31:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5T4VqaU049001 for ; Tue, 28 Jun 2011 23:31:53 -0500 X-ASG-Debug-ID: 1309321907-308c004a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A9B9B3D005 for ; Tue, 28 Jun 2011 21:31:48 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id Yc4Uo73gdO7iIfU2 for ; Tue, 28 Jun 2011 21:31:48 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjcDABeoCk55LChDgWdsb2JhbABJCYRJowUVAQEWJiWIeK9WkQIOgR2Bf4F6gQwEolI Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 29 Jun 2011 14:01:45 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QbmRD-0000JW-Hq; Wed, 29 Jun 2011 14:31:43 +1000 Date: Wed, 29 Jun 2011 14:31:43 +1000 From: Dave Chinner To: Markus Trippelsdorf Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110629043143.GA1026@dastard> References: <20110621212201.GA1755@x4.trippels.de> <20110621185701.GB1723@x4.trippels.de> <20110622000449.GQ32466@dastard> <20110622070647.GA1744@x4.trippels.de> <20110622073047.GT32466@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20110622073047.GT32466@dastard> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1309321910 X-Barracuda-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.2.67433 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, Jun 22, 2011 at 05:30:47PM +1000, Dave Chinner wrote: > On Wed, Jun 22, 2011 at 09:06:47AM +0200, Markus Trippelsdorf wrote: > > On 2011.06.22 at 10:04 +1000, Dave Chinner wrote: > > > On Tue, Jun 21, 2011 at 08:57:01PM +0200, Markus Trippelsdorf wrote: > > > > On 2011.06.21 at 20:24 +0200, Markus Trippelsdorf wrote: > > > > > On 2011.06.21 at 10:02 +0200, Markus Trippelsdorf wrote: > > > > > > On 2011.06.21 at 14:25 +1000, Dave Chinner wrote: > > > > > > > That is, you really need to get a profile of the rm -rf process - or > > > > > > > whatever is consuming the CPU time - (e.g. via perf or ftrace) > > > > > > > across the hang to so we can narrow down the potential cause of the > > > > > > > latency. Speaking of which, latencytop might be helpful in > > > > > > > identifying where input is getting held up.... > > > > > > > > > > > > I've recorded a profile with "perf record -g /home/markus/rm_sync" > > > > > > ~ % cat rm_sync > > > > > > rm -fr /mnt/tmp/tmp/linux && sync > > > > > > > > > > FWIW here are two links to svg time-charts produced by: > > > > > > > > > > perf timechart record /home/markus/rm_sync > > > > > > > > > > http://trippelsdorf.de/timechart1.svg > > > > > http://trippelsdorf.de/timechart2.svg > > > > > > > > > > > > > And this is what the mysterious kworker is doing during the sync. > > > > It's the one consuming most of the CPU time. > > > > > > > > 39.96% kworker/3:0 [kernel.kallsyms] 0xffffffff811da9da k [k] xfs_trans_ail_update_bulk > > > > | > > > > --- xfs_trans_ail_update_bulk > > > > xfs_trans_committed_bulk > > > > xlog_cil_committed > > > > xlog_state_do_callback > > > > xlog_state_done_syncing > > > > xlog_iodone > > > > xfs_buf_iodone_work > > > > process_one_work > > > > worker_thread > > > > kthread > > > > kernel_thread_helper > > > > > > So that is inserting items into the AIL at transaction completion. > > > That can consume lots of CPU time if the CIL checkpoints are being > > > flushed quickly enough. Given you are doing a rm -rf at this point > > > in time, I'd expect to see this trace present in the profile, though > > > maybe not at that extent. > > > > > > I have seen this before but have never been able to it reproduce > > > reliably. If checkpoints are completed "out of order" due to the > > > way the commit records are written into the iclogs. This can cause > > > extra CPU because the AIL insertion then has to skip over all the > > > items that were inserted out of order before splicing each group of > > > items into the AIL. I only rarely see this (maybe once every couple > > > of weeks of performance testing), so I'm not sure it's the problem > > > you are seeing. > > > > > > Adding this debug to xfs_ail_splice() list walk will tell us if this is > > > happening and how many items it had to walk when you see a hang: > > > > > > xfs_lsn_t lsn) > > > { > > > xfs_log_item_t *next_lip; > > > + int walked = 0; > > > > > > /* If the list is empty, just insert the item. */ > > > if (list_empty(&ailp->xa_ail)) { > > > list_splice(list, &ailp->xa_ail); > > > return; > > > } > > > > > > list_for_each_entry_reverse(next_lip, &ailp->xa_ail, li_ail) { > > > if (XFS_LSN_CMP(next_lip->li_lsn, lsn) <= 0) > > > break; > > > + if (!walked++) { > > > + xfs_warn(ailp->xa_mount, > > > + "ail: ooo splice, tail 0x%llx, item 0x%llx\n", > > > + next_lip->li_lsn, lsn); > > > + } > > > } > > > + if (walked > 10) { > > > + xfs_warn(ailp->xa_mount, > > > + "ail: ooo splice, walked %d items\n", walked); > > > + } > > > > > > ASSERT(&next_lip->li_ail == &ailp->xa_ail || > > > XFS_LSN_CMP(next_lip->li_lsn, lsn) <= 0); > > > > > > That will at least tell us if this is the cause of your problem. If > > > it is, I think I know how to avoid most of the list walk overhead > > > fairly easily and that should avoid the need to change workqueue > > > configurations at all. > > > > The kernel log is attached. > > Ok, so that is the cause of the problem∵ THe 3 seconds of output > where it is nothing but: > > Jun 22 08:53:09 x4 kernel: XFS (sdb1): ail: ooo splice, tail 0x12000156e7, item 0x12000156e6 > Jun 22 08:53:09 x4 kernel: XFS (sdb1): ail: ooo splice, walked 15503 items > ..... > Jun 22 08:53:12 x4 kernel: XFS (sdb1): ail: ooo splice, tail 0x12000156e7, item 0x12000156e6 > Jun 22 08:53:12 x4 kernel: XFS (sdb1): ail: ooo splice, walked 16945 items > > Interesting is the LSN of the tail - it's only one sector further on > than the items being inserted. That's what I'd expect from a commit > record write race between two checkpoints. I'll have a deeper look > into whether this can be avoided later tonight and also whether I > can easily implement a "last insert cursor" easily so subsequent > inserts at the same LSN avoid the walk.... Ok, so here's a patch that does just this. I should probably also do a little bit of cleanup on the cursor code as well, but this avoids the repeated walks of the AIL to find the insert position. Can you try it without the WQ changes you made, Marcus, and see if the interactivity problems go away? Cheers, Dave. -- Dave Chinner david@fromorbit.com xfs: use a cursor for bulk AIL insertion From: Dave Chinner Delayed logging can insert tens of thousands of log items into the AIL at the same LSN. When the committing of log commit records occur, we can get insertions occurring at an LSN that is not at the end of the AIL. If there are thousands of items in the AIL on the tail LSN, each insertion has to walk the AIL to find the correct place to insert the new item into the AIL. This can consume large amounts of CPU time and block other operations from occurring while the traversals are in progress. To avoid this repeated walk, use a AIL cursor to record where we should be inserting the new items into the AIL without having to repeat the walk. The cursor infrastructure already provides this functionality for push walks, so is a simple extension of existing code. While this will not avoid the initial walk, it will avoid repeating it tens of thousands of times during a single checkpoint commit. Signed-off-by: Dave Chinner --- fs/xfs/xfs_trans.c | 27 +++++++++-- fs/xfs/xfs_trans_ail.c | 122 +++++++++++++++++++++++++++++++++++++++-------- fs/xfs/xfs_trans_priv.h | 10 +++- 3 files changed, 131 insertions(+), 28 deletions(-) diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c index 7c7bc2b..7d60d7e 100644 --- a/fs/xfs/xfs_trans.c +++ b/fs/xfs/xfs_trans.c @@ -1426,6 +1426,7 @@ xfs_trans_committed( static inline void xfs_log_item_batch_insert( struct xfs_ail *ailp, + struct xfs_ail_cursor *cur, struct xfs_log_item **log_items, int nr_items, xfs_lsn_t commit_lsn) @@ -1434,7 +1435,7 @@ xfs_log_item_batch_insert( spin_lock(&ailp->xa_lock); /* xfs_trans_ail_update_bulk drops ailp->xa_lock */ - xfs_trans_ail_update_bulk(ailp, log_items, nr_items, commit_lsn); + xfs_trans_ail_update_bulk(ailp, cur, log_items, nr_items, commit_lsn); for (i = 0; i < nr_items; i++) IOP_UNPIN(log_items[i], 0); @@ -1452,6 +1453,13 @@ xfs_log_item_batch_insert( * as an iclog write error even though we haven't started any IO yet. Hence in * this case all we need to do is IOP_COMMITTED processing, followed by an * IOP_UNPIN(aborted) call. + * + * The AIL cursor is used to optimise the insert process. If commit_lsn is not + * at the end of the AIL, the insert cursor avoids the need to walk + * the AIL to find the insertion point on every xfs_log_item_batch_insert() + * call. This saves a lot of needless list walking and is a net win, even + * though it slightly increases that amount of AIL lock traffic to set it up + * and tear it down. */ void xfs_trans_committed_bulk( @@ -1463,8 +1471,13 @@ xfs_trans_committed_bulk( #define LOG_ITEM_BATCH_SIZE 32 struct xfs_log_item *log_items[LOG_ITEM_BATCH_SIZE]; struct xfs_log_vec *lv; + struct xfs_ail_cursor cur; int i = 0; + spin_lock(&ailp->xa_lock); + xfs_trans_ail_cursor_last(ailp, &cur, commit_lsn); + spin_unlock(&ailp->xa_lock); + /* unpin all the log items */ for (lv = log_vector; lv; lv = lv->lv_next ) { struct xfs_log_item *lip = lv->lv_item; @@ -1493,7 +1506,9 @@ xfs_trans_committed_bulk( /* * Not a bulk update option due to unusual item_lsn. * Push into AIL immediately, rechecking the lsn once - * we have the ail lock. Then unpin the item. + * we have the ail lock. Then unpin the item. This does + * not affect the AIL cursor the bulk insert path is + * using. */ spin_lock(&ailp->xa_lock); if (XFS_LSN_CMP(item_lsn, lip->li_lsn) > 0) @@ -1507,7 +1522,7 @@ xfs_trans_committed_bulk( /* Item is a candidate for bulk AIL insert. */ log_items[i++] = lv->lv_item; if (i >= LOG_ITEM_BATCH_SIZE) { - xfs_log_item_batch_insert(ailp, log_items, + xfs_log_item_batch_insert(ailp, &cur, log_items, LOG_ITEM_BATCH_SIZE, commit_lsn); i = 0; } @@ -1515,7 +1530,11 @@ xfs_trans_committed_bulk( /* make sure we insert the remainder! */ if (i) - xfs_log_item_batch_insert(ailp, log_items, i, commit_lsn); + xfs_log_item_batch_insert(ailp, &cur, log_items, i, commit_lsn); + + spin_lock(&ailp->xa_lock); + xfs_trans_ail_cursor_done(ailp, &cur); + spin_unlock(&ailp->xa_lock); } /* diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c index 5fc2380..272e7fa 100644 --- a/fs/xfs/xfs_trans_ail.c +++ b/fs/xfs/xfs_trans_ail.c @@ -272,9 +272,9 @@ xfs_trans_ail_cursor_clear( } /* - * Return the item in the AIL with the current lsn. - * Return the current tree generation number for use - * in calls to xfs_trans_next_ail(). + * Initialise the cursor to the first item in the AIL with the given @lsn. + * This searches the list from lowest LSN to highest. Pass a @lsn of zero + * to initialise the cursor to the first item in the AIL. */ xfs_log_item_t * xfs_trans_ail_cursor_first( @@ -300,31 +300,110 @@ out: } /* - * splice the log item list into the AIL at the given LSN. + * Initialise the cursor to the last item in the AIL with the given @lsn. + * This searches the list from highest LSN to lowest. */ -static void -xfs_ail_splice( - struct xfs_ail *ailp, - struct list_head *list, - xfs_lsn_t lsn) +static struct xfs_log_item * +__xfs_trans_ail_cursor_last( + struct xfs_ail *ailp, + struct xfs_ail_cursor *cur, + xfs_lsn_t lsn, + bool do_init) { - xfs_log_item_t *next_lip; + xfs_log_item_t *lip = NULL; - /* If the list is empty, just insert the item. */ - if (list_empty(&ailp->xa_ail)) { - list_splice(list, &ailp->xa_ail); - return; - } + if (do_init) + xfs_trans_ail_cursor_init(ailp, cur); + + if (list_empty(&ailp->xa_ail)) + goto out; - list_for_each_entry_reverse(next_lip, &ailp->xa_ail, li_ail) { - if (XFS_LSN_CMP(next_lip->li_lsn, lsn) <= 0) + list_for_each_entry_reverse(lip, &ailp->xa_ail, li_ail) { + if (XFS_LSN_CMP(lip->li_lsn, lsn) <= 0) break; } +out: + if (cur) + cur->item = lip; + return lip; +} - ASSERT(&next_lip->li_ail == &ailp->xa_ail || - XFS_LSN_CMP(next_lip->li_lsn, lsn) <= 0); +/* + * Initialise the cursor to the last item in the AIL with the given @lsn. + * This searches the list from highest LSN to lowest. + */ +struct xfs_log_item * +xfs_trans_ail_cursor_last( + struct xfs_ail *ailp, + struct xfs_ail_cursor *cur, + xfs_lsn_t lsn) +{ + return __xfs_trans_ail_cursor_last(ailp, cur, lsn, true); +} - list_splice_init(list, &next_lip->li_ail); +/* + * splice the log item list into the AIL at the given LSN. We splice to the + * tail of the given LSN to maintain insert order for push traversals. The + * cursor is optional, allowing repeated updates to the same LSN to avoid + * repeated traversals. + */ +static void +xfs_ail_splice( + struct xfs_ail *ailp, + struct xfs_ail_cursor *cur, + struct list_head *list, + xfs_lsn_t lsn) +{ + struct xfs_log_item *lip = cur ? cur->item : NULL; + struct xfs_log_item *next_lip; + + do { + /* no placeholder, so get our insert location */ + if (!lip) + lip = __xfs_trans_ail_cursor_last(ailp, cur, + lsn, false); + + if (!lip) { + /* + * The list is empty, so just splice and return. Our + * cursor is already guaranteed to be up to date, so we + * don't need to touch it here. + */ + list_splice(list, &ailp->xa_ail); + return; + } + + /* The placeholder was invalidated, need to get a new cursor */ + if ((__psint_t)lip & 1) + lip = NULL; + + } while (lip == NULL); + + /* + * Our cursor points to the item we want to insert _after_, so we have + * to update the cursor to point to the end of the list we are splicing + * in so that it points to the correct location for the next splice. + * i.e. before the splice + * + * lsn -> lsn -> lsn + x -> lsn + x ... + * ^ + * | cursor points here + * + * After the splice we have: + * + * lsn -> lsn -> lsn -> lsn -> .... -> lsn -> lsn + x -> lsn + x ... + * ^ ^ + * | cursor points here | needs to move here + * + * So we set the cursor to the last item in the list to be spliced + * before we execute the splice, resulting in the cursor pointing to + * the correct item after the splice occurs. + */ + if (cur) { + next_lip = list_entry(list->prev, struct xfs_log_item, li_ail); + cur->item = next_lip; + } + list_splice_init(list, &lip->li_ail); } /* @@ -645,6 +724,7 @@ xfs_trans_unlocked_item( void xfs_trans_ail_update_bulk( struct xfs_ail *ailp, + struct xfs_ail_cursor *cur, struct xfs_log_item **log_items, int nr_items, xfs_lsn_t lsn) __releases(ailp->xa_lock) @@ -674,7 +754,7 @@ xfs_trans_ail_update_bulk( list_add(&lip->li_ail, &tmp); } - xfs_ail_splice(ailp, &tmp, lsn); + xfs_ail_splice(ailp, cur, &tmp, lsn); if (!mlip_changed) { spin_unlock(&ailp->xa_lock); diff --git a/fs/xfs/xfs_trans_priv.h b/fs/xfs/xfs_trans_priv.h index 6b164e9..c0cb408 100644 --- a/fs/xfs/xfs_trans_priv.h +++ b/fs/xfs/xfs_trans_priv.h @@ -82,6 +82,7 @@ struct xfs_ail { extern struct workqueue_struct *xfs_ail_wq; /* AIL workqueue */ void xfs_trans_ail_update_bulk(struct xfs_ail *ailp, + struct xfs_ail_cursor *cur, struct xfs_log_item **log_items, int nr_items, xfs_lsn_t lsn) __releases(ailp->xa_lock); static inline void @@ -90,7 +91,7 @@ xfs_trans_ail_update( struct xfs_log_item *lip, xfs_lsn_t lsn) __releases(ailp->xa_lock) { - xfs_trans_ail_update_bulk(ailp, &lip, 1, lsn); + xfs_trans_ail_update_bulk(ailp, NULL, &lip, 1, lsn); } void xfs_trans_ail_delete_bulk(struct xfs_ail *ailp, @@ -111,10 +112,13 @@ xfs_lsn_t xfs_ail_min_lsn(struct xfs_ail *ailp); void xfs_trans_unlocked_item(struct xfs_ail *, xfs_log_item_t *); -struct xfs_log_item *xfs_trans_ail_cursor_first(struct xfs_ail *ailp, +struct xfs_log_item * xfs_trans_ail_cursor_first(struct xfs_ail *ailp, struct xfs_ail_cursor *cur, xfs_lsn_t lsn); -struct xfs_log_item *xfs_trans_ail_cursor_next(struct xfs_ail *ailp, +struct xfs_log_item * xfs_trans_ail_cursor_last(struct xfs_ail *ailp, + struct xfs_ail_cursor *cur, + xfs_lsn_t lsn); +struct xfs_log_item * xfs_trans_ail_cursor_next(struct xfs_ail *ailp, struct xfs_ail_cursor *cur); void xfs_trans_ail_cursor_done(struct xfs_ail *ailp, struct xfs_ail_cursor *cur); From david@fromorbit.com Tue Jun 28 23:46:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5T4kLx5052775 for ; Tue, 28 Jun 2011 23:46:22 -0500 X-ASG-Debug-ID: 1309322778-2b8e01020000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 34A393D690 for ; Tue, 28 Jun 2011 21:46:19 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id U8BywnaO3vtBzcen for ; Tue, 28 Jun 2011 21:46:19 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjUDAKarCk55LChDgWdsb2JhbABSp04VAQEWJiXJSA6GIgSiUg Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 29 Jun 2011 14:16:18 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QbmfI-0000Ks-Mg; Wed, 29 Jun 2011 14:46:16 +1000 Date: Wed, 29 Jun 2011 14:46:16 +1000 From: Dave Chinner To: Chandra Seetharaman Cc: XFS Mailing List , Alex Elder X-ASG-Orig-Subj: Re: [PATCH] xfs: replace bp->flags usage with predefined macros Subject: Re: [PATCH] xfs: replace bp->flags usage with predefined macros Message-ID: <20110629044616.GB1026@dastard> References: <1309308784.5505.6214.camel@chandra-lucid.beaverton.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1309308784.5505.6214.camel@chandra-lucid.beaverton.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1309322781 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67433 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, Jun 28, 2011 at 05:53:04PM -0700, Chandra Seetharaman wrote: > Cleanup: Replace bp->flags usage with predefined macros. > > Signed-off-by: Chandra Seetharaman Christoph can correct me if I'm wrong, but I'm pretty sure his long term direction is to remove the XFS_BUF_* macros completely. Even so, in any new code we add or modify in xfs_buf.c we tend to open code the flags. Hence the only code there that still uses the XFS_BUF_* macros for manipulating flags are those we haven't needed to touch for a long time.... > --- > diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c > index 5e68099..8b24dc4 100644 > --- a/fs/xfs/linux-2.6/xfs_buf.c > +++ b/fs/xfs/linux-2.6/xfs_buf.c > @@ -470,7 +470,7 @@ _xfs_buf_find( > * continue searching to the right for an exact match. > */ > if (bp->b_buffer_length != range_length) { > - ASSERT(bp->b_flags & XBF_STALE); > + ASSERT(XFS_BUF_ISSTALE(bp)); > rbp = &(*rbp)->rb_right; > continue; > } > @@ -516,7 +516,7 @@ found: > * it. We need to keep flags such as how we allocated the buffer memory > * intact here. > */ > - if (bp->b_flags & XBF_STALE) { > + if (XFS_BUF_ISSTALE(bp)) { > ASSERT((bp->b_flags & _XBF_DELWRI_Q) == 0); > bp->b_flags &= XBF_MAPPED | _XBF_KMEM | _XBF_PAGES; > } And this code fragment is an example of why we are open coding the flags checks: we do non-trivial open-coded flag manipulations in many places, and hiding the fact that state is held in b_flags makes it harder to read the code. That is, the code as it stands in this case makes it obvious that that if the buffer was stale, afterwards it is not stale because the bit was cleared from b_flags. Using the macro hides the fact that the stale state is held in b_flags and therefore cleared by the conditional code and that the buffer is no longer stale... Cheers, Dave. -- Dave Chinner david@fromorbit.com From markus@trippelsdorf.de Wed Jun 29 01:20:00 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p5T6JxNh061186 for ; Wed, 29 Jun 2011 01:19:59 -0500 X-ASG-Debug-ID: 1309328397-218503280000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8F0391778A1D for ; Tue, 28 Jun 2011 23:19:57 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id xuKFiq2XH3715m2K for ; Tue, 28 Jun 2011 23:19:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:content-transfer-encoding:in-reply-to; q=dns/txt; s= beta; bh=/XjYjiMicHWRFCDuu0Z0Me0IErs3Zr1GTsnD2fp64RY=; b=tcDiW5n zu2LOY+C3P7BM44IbHUo37yYuMptcEJzSrwOxLIbhzplZAlcXFd3Ku26WDEggEVQ j7kmruHbemE66DV763WkV3gldSl2lg17zkKh2vcbuMzDESDypbA79bWwRvOTAsA9 2Bzi0h/hHpncgsIrST4rdwDDFqGxcZsOGtj8= Received: (qmail 9442 invoked from network); 29 Jun 2011 08:19:55 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.64.57.18) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 29 Jun 2011 08:19:55 +0200 Date: Wed, 29 Jun 2011 08:19:54 +0200 From: Markus Trippelsdorf To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110629061954.GA1711@x4.trippels.de> References: <20110621212201.GA1755@x4.trippels.de> <20110621185701.GB1723@x4.trippels.de> <20110622000449.GQ32466@dastard> <20110622070647.GA1744@x4.trippels.de> <20110622073047.GT32466@dastard> <20110629043143.GA1026@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20110629043143.GA1026@dastard> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1309328398 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0009 1.0000 -2.0149 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67441 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 2011.06.29 at 14:31 +1000, Dave Chinner wrote: > On Wed, Jun 22, 2011 at 05:30:47PM +1000, Dave Chinner wrote: > > On Wed, Jun 22, 2011 at 09:06:47AM +0200, Markus Trippelsdorf wrote: > > > On 2011.06.22 at 10:04 +1000, Dave Chinner wrote: > > > > On Tue, Jun 21, 2011 at 08:57:01PM +0200, Markus Trippelsdorf wrote: > > > > > > > > That will at least tell us if this is the cause of your problem. If > > > > it is, I think I know how to avoid most of the list walk overhead > > > > fairly easily and that should avoid the need to change workqueue > > > > configurations at all. > > > > > > The kernel log is attached. > > > > Ok, so that is the cause of the problem∵ THe 3 seconds of output > > where it is nothing but: > > > > Jun 22 08:53:09 x4 kernel: XFS (sdb1): ail: ooo splice, tail 0x12000156e7, item 0x12000156e6 > > Jun 22 08:53:09 x4 kernel: XFS (sdb1): ail: ooo splice, walked 15503 items > > ..... > > Jun 22 08:53:12 x4 kernel: XFS (sdb1): ail: ooo splice, tail 0x12000156e7, item 0x12000156e6 > > Jun 22 08:53:12 x4 kernel: XFS (sdb1): ail: ooo splice, walked 16945 items > > > > Interesting is the LSN of the tail - it's only one sector further on > > than the items being inserted. That's what I'd expect from a commit > > record write race between two checkpoints. I'll have a deeper look > > into whether this can be avoided later tonight and also whether I > > can easily implement a "last insert cursor" easily so subsequent > > inserts at the same LSN avoid the walk.... > > Ok, so here's a patch that does just this. I should probably also do > a little bit of cleanup on the cursor code as well, but this avoids > the repeated walks of the AIL to find the insert position. > > Can you try it without the WQ changes you made, Marcus, and see if > the interactivity problems go away? Sorry to be the bringer of bad news, but this made things much worse: -------cpu0-usage--------------cpu1-usage--------------cpu2-usage--------------cpu3-usage------ --dsk/sdc-- ---system-- ---load-avg--- --dsk/sdc-- usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq| read writ| int csw | 1m 5m 15m |reads writs 1 1 98 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0| 0 0 | 603 380 |0.66 0.55 0.28| 0 0 1 0 99 0 0 0: 1 0 99 0 0 0: 1 19 80 0 0 0: 0 0 100 0 0 0| 0 0 | 719 383 |0.66 0.55 0.28| 0 0 3 1 96 0 0 0: 3 1 96 0 0 0: 1 52 47 0 0 0: 0 0 100 0 0 0| 0 6464k|1847 919 |0.66 0.55 0.28| 0 202 2 13 85 0 0 0: 2 2 96 0 0 0: 1 56 43 0 0 0: 1 31 69 0 0 0|4096B 256k|1910 1280 |0.68 0.56 0.28| 1 8 > 0 1 99 0 0 0: 0 0 100 0 0 0: 0 1 99 0 0 0: 0 100 0 0 0 0| 0 0 |1256 170 |0.68 0.56 0.28| 0 0 > 0 1 99 0 0 0: 1 1 98 0 0 0: 1 0 99 0 0 0: 0 99 0 0 0 1| 0 0 |1395 229 |0.68 0.56 0.28| 0 0 > 0 0 100 0 0 0: 0 0 100 0 0 0: 0 3 97 0 0 0: 0 100 0 0 0 0| 0 512B|1304 167 |0.68 0.56 0.28| 0 1 > 1 1 98 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0: 0 99 0 0 0 1| 0 0 |1211 146 |0.68 0.56 0.28| 0 0 > 0 0 100 0 0 0: 0 0 100 0 0 0: 0 1 99 0 0 0: 0 97 0 0 0 3| 0 0 |1270 149 |0.87 0.60 0.30| 0 0 5 2 65 29 0 0: 2 3 95 0 0 0: 1 0 99 0 0 0: 2 24 72 0 0 1| 0 8866k|2654 2398 |0.87 0.60 0.30| 0 496 6 2 25 67 0 0: 3 1 59 37 0 0: 0 0 100 0 0 0: 4 4 92 0 0 0| 0 4554k|2224 2494 |0.87 0.60 0.30| 0 399 1 1 98 0 0 0: 0 0 83 17 0 0: 1 3 96 0 0 0: 0 1 99 0 0 0| 0 2270k|1079 1030 |0.87 0.60 0.30| 0 200 1 1 98 0 0 0: 1 1 98 0 0 0: 0 1 99 0 0 0: 1 0 99 0 0 0| 0 9216B| 713 567 |0.87 0.60 0.30| 0 2 0 0 100 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0: 0 1 99 0 0 0| 0 0 | 492 386 |0.80 0.59 0.30| 0 0 As you can see in the table above (resolution 1sec) the hang is now 5-6 seconds long, instead of the 1-3 seconds seen before. -- Markus From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 01:30:14 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5T6UDvD061698 for ; Wed, 29 Jun 2011 01:30:13 -0500 X-ASG-Debug-ID: 1309329011-121903d50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B0A4DE432AF; Tue, 28 Jun 2011 23:30:11 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id unoXsuFXDKlmbLbS; Tue, 28 Jun 2011 23:30:11 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QboHh-0003IO-6v; Wed, 29 Jun 2011 06:30:01 +0000 Date: Wed, 29 Jun 2011 02:30:01 -0400 From: Christoph Hellwig To: Dave Chinner Cc: Chandra Seetharaman , Alex Elder , XFS Mailing List X-ASG-Orig-Subj: Re: [PATCH] xfs: replace bp->flags usage with predefined macros Subject: Re: [PATCH] xfs: replace bp->flags usage with predefined macros Message-ID: <20110629063001.GA12554@infradead.org> References: <1309308784.5505.6214.camel@chandra-lucid.beaverton.ibm.com> <20110629044616.GB1026@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110629044616.GB1026@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309329012 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67440 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Wed, Jun 29, 2011 at 02:46:16PM +1000, Dave Chinner wrote: > On Tue, Jun 28, 2011 at 05:53:04PM -0700, Chandra Seetharaman wrote: > > Cleanup: Replace bp->flags usage with predefined macros. > > > > Signed-off-by: Chandra Seetharaman > > Christoph can correct me if I'm wrong, but I'm pretty sure his long term > direction is to remove the XFS_BUF_* macros completely. Yes, at least those that are simpler flags get/set/clear wrappers. From david@fromorbit.com Wed Jun 29 01:53:31 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5T6rV4h062882 for ; Wed, 29 Jun 2011 01:53:31 -0500 X-ASG-Debug-ID: 1309330406-4ddb02040000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 15DA8E41E56 for ; Tue, 28 Jun 2011 23:53:28 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id c4tivuSbp0qUiGxG for ; Tue, 28 Jun 2011 23:53:28 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjYDAILLCk55LChDgWdsb2JhbABShEmjBxUBARYmJbhDkQEOgR2DeYEMBJokiC4 Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 29 Jun 2011 16:23:08 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1Qboe3-0000X7-20; Wed, 29 Jun 2011 16:53:07 +1000 Date: Wed, 29 Jun 2011 16:53:07 +1000 From: Dave Chinner To: Josef Bacik Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, xfs@oss.sgi.com, viro@ZenIV.linux.org.uk X-ASG-Orig-Subj: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester Subject: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester Message-ID: <20110629065306.GC1026@dastard> References: <1309275199-10801-1-git-send-email-josef@redhat.com> <1309275199-10801-5-git-send-email-josef@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1309275199-10801-5-git-send-email-josef@redhat.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1309330410 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67442 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, Jun 28, 2011 at 11:33:19AM -0400, Josef Bacik wrote: > This is a test to make sure seek_data/seek_hole is acting like it does on > Solaris. It will check to see if the fs supports finding a hole or not and will > adjust as necessary. So I just looked at this with an eye to validating an XFS implementation, and I came up with this list of stuff that the test does not cover that I'd need to test in some way: - files with clean unwritten extents. Are they a hole or data? What's SEEK_DATA supposed to return on layout like hole-unwritten-data? i.e. needs to add fallocate to the picture... - files with dirty unwritten extents (i.e. dirty in memory, not on disk). They are most definitely data, and most filesystems will need a separate lookup path to detect dirty unwritten ranges because the state is kept separately (page cache vs extent cache). Plenty of scope for filesystem specific bugs here so needs a roubust test. - cold cache behaviour - all dirty data ranges the test creates are hot in cache and not even forced to disk, so it is not testing the no-page-cache-over-the-data-range case. i.e. it tests delalloc state tracking but not data-extent-already exists lookups during a seek. - assumes that allocation size is the block size and that holes follows block size alignment. We already know that ext4 does not follow that rule when doing small sparse writes close together in a file, and XFS is also known to fill holes when doing sparse writes past EOF. - only tests single block data extents Ñ•o doesn't cover corner cases like skipping over multiple fragmented data extents to the next hole. Some more comments in line.... > +_cleanup() > +{ > + rm -f $tmp.* > +} > + > +trap "_cleanup ; exit \$status" 0 1 2 3 15 > + > +# get standard environment, filters and checks > +. ./common.rc > +. ./common.filter > + > +# real QA test starts here > +_supported_fs generic > +_supported_os Linux > + > +testfile=$TEST_DIR/seek_test.$$ > +logfile=$TEST_DIR/seek_test.$$.log The log file is usually named $seq.full, and doesn't get placed in the filesystem being tested. It gets saved in the xfstests directory along side $seq.out.bad for analysis whenteh test fails... > +[ -x $here/src/seek-tester ] || _notrun "seek-tester not built" > + > +_cleanup() > +{ > + rm -f $testfile > + rm -f $logfile > +} > +trap "_cleanup; exit \$status" 0 1 2 3 15 > + > +echo "Silence is golden" > +$here/src/seek-tester -q $testfile 2>&1 | tee -a $logfile Personally I'd prefer the test to be a bit noisy about what it is running, especially when there are so many subtests the single invocation is running. It makes no difference to the run time ofthe test, or the output when something fails, but it at least allows you to run the test manually and see what it is doing easily... > + > +if grep -q "SEEK_HOLE is not supported" $logfile; then > + _notrun "SEEK_HOLE/SEEK_DATA not supported by this kernel" > +fi > + > +rm -f $logfile > +rm -f $testfile > + > +status=0 ; exit > diff --git a/255.out b/255.out > new file mode 100644 > index 0000000..7eefb82 > --- /dev/null > +++ b/255.out > @@ -0,0 +1,2 @@ > +QA output created by 255 > +Silence is golden > diff --git a/group b/group > index 1f86075..c045e70 100644 > --- a/group > +++ b/group > @@ -368,3 +368,4 @@ deprecated > 252 auto quick prealloc > 253 auto quick > 254 auto quick > +255 auto quick I'd suggest that rw and prealloc (once unwritten extent testing is added) groups should also be defined for this test. Otherwise, the test code looks ok if a bit over-engineered.... > +struct testrec { > + int test_num; > + int (*test_func)(int fd, int testnum); > + char *test_desc; > +}; > + > +struct testrec seek_tests[] = { > + { 1, test01, "Test basic support" }, > + { 2, test02, "Test an empty file" }, > + { 3, test03, "Test a full file" }, > + { 4, test04, "Test file hole at beg, data at end" }, > + { 5, test05, "Test file data at beg, hole at end" }, > + { 6, test06, "Test file hole data hole data" }, So, to take from the hole punch test matrix, it covers a bunch more file state transitions and cases that are just as relevant to SEEK_HOLE/SEEK_DATA. Those cases are: # 1. into a hole # 2. into allocated space # 3. into unwritten space # 4. hole -> data # 5. hole -> unwritten # 6. data -> hole # 7. data -> unwritten # 8. unwritten -> hole # 9. unwritten -> data # 10. hole -> data -> hole # 11. data -> hole -> data # 12. unwritten -> data -> unwritten # 13. data -> unwritten -> data # 14. data -> hole @ EOF # 15. data -> hole @ 0 # 16. data -> cache cold ->hole # 17. data -> hole in single block file I thikn we also need to cover most of these same cases, right? And SEEK_HOLE/SEEK data also need to explicitly separate the unwritten tests into "clean unwritten" and "dirty unwritten" and cover the transitions between regions of those states as well, right? Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Jun 29 02:24:51 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.4.0-r929098 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 p5T7Opk8064589 for ; Wed, 29 Jun 2011 02:24:51 -0500 X-ASG-Debug-ID: 1309332289-79cf01520000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C7BF23DB08 for ; Wed, 29 Jun 2011 00:24:49 -0700 (PDT) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id Xh8Hdr5ydbyhHcj3 for ; Wed, 29 Jun 2011 00:24:49 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjUDAFvSCk55LChDgWdsb2JhbABSp1EVAQEWJiXJUg6GIgSiUg Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail06.adl6.internode.on.net with ESMTP; 29 Jun 2011 16:54:48 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1Qbp8g-0000a6-Sr; Wed, 29 Jun 2011 17:24:46 +1000 Date: Wed, 29 Jun 2011 17:24:46 +1000 From: Dave Chinner To: Markus Trippelsdorf Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110629072446.GR561@dastard> References: <20110621212201.GA1755@x4.trippels.de> <20110621185701.GB1723@x4.trippels.de> <20110622000449.GQ32466@dastard> <20110622070647.GA1744@x4.trippels.de> <20110622073047.GT32466@dastard> <20110629043143.GA1026@dastard> <20110629061954.GA1711@x4.trippels.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110629061954.GA1711@x4.trippels.de> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1309332290 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.2.67445 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, Jun 29, 2011 at 08:19:54AM +0200, Markus Trippelsdorf wrote: > On 2011.06.29 at 14:31 +1000, Dave Chinner wrote: > > On Wed, Jun 22, 2011 at 05:30:47PM +1000, Dave Chinner wrote: > > > Jun 22 08:53:09 x4 kernel: XFS (sdb1): ail: ooo splice, tail 0x12000156e7, item 0x12000156e6 > > > Jun 22 08:53:09 x4 kernel: XFS (sdb1): ail: ooo splice, walked 15503 items > > > ..... > > > Jun 22 08:53:12 x4 kernel: XFS (sdb1): ail: ooo splice, tail 0x12000156e7, item 0x12000156e6 > > > Jun 22 08:53:12 x4 kernel: XFS (sdb1): ail: ooo splice, walked 16945 items > > > > > > Interesting is the LSN of the tail - it's only one sector further on > > > than the items being inserted. That's what I'd expect from a commit > > > record write race between two checkpoints. I'll have a deeper look > > > into whether this can be avoided later tonight and also whether I > > > can easily implement a "last insert cursor" easily so subsequent > > > inserts at the same LSN avoid the walk.... > > > > Ok, so here's a patch that does just this. I should probably also do > > a little bit of cleanup on the cursor code as well, but this avoids > > the repeated walks of the AIL to find the insert position. > > > > Can you try it without the WQ changes you made, Marcus, and see if > > the interactivity problems go away? > > Sorry to be the bringer of bad news, but this made things much worse: > > -------cpu0-usage--------------cpu1-usage--------------cpu2-usage--------------cpu3-usage------ --dsk/sdc-- ---system-- ---load-avg--- --dsk/sdc-- > usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq| read writ| int csw | 1m 5m 15m |reads writs > 1 1 98 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0| 0 0 | 603 380 |0.66 0.55 0.28| 0 0 > 1 0 99 0 0 0: 1 0 99 0 0 0: 1 19 80 0 0 0: 0 0 100 0 0 0| 0 0 | 719 383 |0.66 0.55 0.28| 0 0 > 3 1 96 0 0 0: 3 1 96 0 0 0: 1 52 47 0 0 0: 0 0 100 0 0 0| 0 6464k|1847 919 |0.66 0.55 0.28| 0 202 > 2 13 85 0 0 0: 2 2 96 0 0 0: 1 56 43 0 0 0: 1 31 69 0 0 0|4096B 256k|1910 1280 |0.68 0.56 0.28| 1 8 > > 0 1 99 0 0 0: 0 0 100 0 0 0: 0 1 99 0 0 0: 0 100 0 0 0 0| 0 0 |1256 170 |0.68 0.56 0.28| 0 0 > > 0 1 99 0 0 0: 1 1 98 0 0 0: 1 0 99 0 0 0: 0 99 0 0 0 1| 0 0 |1395 229 |0.68 0.56 0.28| 0 0 > > 0 0 100 0 0 0: 0 0 100 0 0 0: 0 3 97 0 0 0: 0 100 0 0 0 0| 0 512B|1304 167 |0.68 0.56 0.28| 0 1 > > 1 1 98 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0: 0 99 0 0 0 1| 0 0 |1211 146 |0.68 0.56 0.28| 0 0 > > 0 0 100 0 0 0: 0 0 100 0 0 0: 0 1 99 0 0 0: 0 97 0 0 0 3| 0 0 |1270 149 |0.87 0.60 0.30| 0 0 > 5 2 65 29 0 0: 2 3 95 0 0 0: 1 0 99 0 0 0: 2 24 72 0 0 1| 0 8866k|2654 2398 |0.87 0.60 0.30| 0 496 > 6 2 25 67 0 0: 3 1 59 37 0 0: 0 0 100 0 0 0: 4 4 92 0 0 0| 0 4554k|2224 2494 |0.87 0.60 0.30| 0 399 > 1 1 98 0 0 0: 0 0 83 17 0 0: 1 3 96 0 0 0: 0 1 99 0 0 0| 0 2270k|1079 1030 |0.87 0.60 0.30| 0 200 > 1 1 98 0 0 0: 1 1 98 0 0 0: 0 1 99 0 0 0: 1 0 99 0 0 0| 0 9216B| 713 567 |0.87 0.60 0.30| 0 2 > 0 0 100 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0: 0 1 99 0 0 0| 0 0 | 492 386 |0.80 0.59 0.30| 0 0 > > As you can see in the table above (resolution 1sec) the hang is now > 5-6 seconds long, instead of the 1-3 seconds seen before. Interesting. I checked that the ordering was correct in each case adn that it was behaving correctly here. Can you add the following patch and send me the dmesg output over a hang? It will tell me where the cursor is being initialised and when it is being dropped, so should indicate if a specific insert chain is getting stuck or doing something stoopid. Cheers, Dave -- Dave Chinner david@fromorbit.com --- fs/xfs/xfs_trans_ail.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c index 272e7fa..a087cbb 100644 --- a/fs/xfs/xfs_trans_ail.c +++ b/fs/xfs/xfs_trans_ail.c @@ -234,6 +234,8 @@ xfs_trans_ail_cursor_done( struct xfs_ail_cursor *prev = NULL; struct xfs_ail_cursor *cur; + printk(KERN_WARNING "done cur %p, lip %p/0x%llx\n", + done, done->item, done->item ? done->item->li_lsn : 0); done->item = NULL; if (done == &ailp->xa_cursors) return; @@ -323,6 +325,8 @@ __xfs_trans_ail_cursor_last( break; } out: + printk(KERN_WARNING "last cur %p, init %d lsn 0x%llx, lip %p/0x%llx\n", + cur, do_init, lsn, lip, lip ? lip->li_lsn : 0); if (cur) cur->item = lip; return lip; From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 02:40:30 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5T7eRpI065614 for ; Wed, 29 Jun 2011 02:40:29 -0500 X-ASG-Debug-ID: 1309333226-79c401bf0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 97619343BA for ; Wed, 29 Jun 2011 00:40:26 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id jBty9xLF5gXEbZyV for ; Wed, 29 Jun 2011 00:40:26 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbpNl-0007W5-I0; Wed, 29 Jun 2011 07:40:21 +0000 Date: Wed, 29 Jun 2011 03:40:21 -0400 From: Christoph Hellwig To: Dave Chinner Cc: Josef Bacik , linux-fsdevel@vger.kernel.org, viro@ZenIV.linux.org.uk, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester Subject: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester Message-ID: <20110629074021.GA26086@infradead.org> References: <1309275199-10801-1-git-send-email-josef@redhat.com> <1309275199-10801-5-git-send-email-josef@redhat.com> <20110629065306.GC1026@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110629065306.GC1026@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309333226 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67445 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Wed, Jun 29, 2011 at 04:53:07PM +1000, Dave Chinner wrote: > On Tue, Jun 28, 2011 at 11:33:19AM -0400, Josef Bacik wrote: > > This is a test to make sure seek_data/seek_hole is acting like it does on > > Solaris. It will check to see if the fs supports finding a hole or not and will > > adjust as necessary. > > So I just looked at this with an eye to validating an XFS > implementation, and I came up with this list of stuff that the test > does not cover that I'd need to test in some way: > > - files with clean unwritten extents. Are they a hole or > data? What's SEEK_DATA supposed to return on layout like > hole-unwritten-data? i.e. needs to add fallocate to the > picture... > > - files with dirty unwritten extents (i.e. dirty in memory, > not on disk). They are most definitely data, and most > filesystems will need a separate lookup path to detect > dirty unwritten ranges because the state is kept > separately (page cache vs extent cache). Plenty of scope > for filesystem specific bugs here so needs a roubust test. The discussion leading up to the resurrection of SEEK_HOLE/SEEK_DATA was pretty much about that point. The conclusion based on the Sun documentation and common sense was that SEEK_DATA may only consider unwritten extents as hole if the filesystem has a way to distinguish plain unwritten extents and those that have been dirtied. Else it should be considered data. Testing for making sure dirty preallocated areas aren't wrongly reported sounds relatively easy, the rest falls into implementation details, which imho is fine. Not reporting preallocated extents as holes just is a quality of implementation issue and not a bug. From markus@trippelsdorf.de Wed Jun 29 02:41:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p5T7fWJj065673 for ; Wed, 29 Jun 2011 02:41:33 -0500 X-ASG-Debug-ID: 1309333288-5c0003c50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8BE59176D608 for ; Wed, 29 Jun 2011 00:41:29 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id 8ZvDc1HyIFl1DNY2 for ; Wed, 29 Jun 2011 00:41:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:in-reply-to; q=dns/txt; s=beta; bh=ce0bOvTC/hdehq/h IcNoy9tkyXktxOo+Rb4BF4NqaAs=; b=uAIJRtk7uMdtbJuX/YfG7tdlOVZ8TLkt zt+j3iyGbVvEr9APlil1X5tpJyKZAPt+DxtaMNNZPyLg/56P/zRJVjcIDVkkxv+X Ykc/aS805NWCkaStgqXVzvaRm6k5lIywYKB9Q//aeuaDJ9wHTELnWjQYE8x7oxOz QSszy8AuCtw= Received: (qmail 27875 invoked from network); 29 Jun 2011 09:41:28 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.64.57.18) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 29 Jun 2011 09:41:28 +0200 Date: Wed, 29 Jun 2011 09:41:27 +0200 From: Markus Trippelsdorf To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110629074127.GA1746@x4.trippels.de> References: <20110621212201.GA1755@x4.trippels.de> <20110621185701.GB1723@x4.trippels.de> <20110622000449.GQ32466@dastard> <20110622070647.GA1744@x4.trippels.de> <20110622073047.GT32466@dastard> <20110629043143.GA1026@dastard> <20110629061954.GA1711@x4.trippels.de> <20110629072446.GR561@dastard> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="UlVJffcvxoiEqYs2" Content-Disposition: inline In-Reply-To: <20110629072446.GR561@dastard> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1309333290 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=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67445 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --UlVJffcvxoiEqYs2 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On 2011.06.29 at 17:24 +1000, Dave Chinner wrote: > On Wed, Jun 29, 2011 at 08:19:54AM +0200, Markus Trippelsdorf wrote: > > On 2011.06.29 at 14:31 +1000, Dave Chinner wrote: > > > On Wed, Jun 22, 2011 at 05:30:47PM +1000, Dave Chinner wrote: > > > > Jun 22 08:53:09 x4 kernel: XFS (sdb1): ail: ooo splice, tail 0x12000156e7, item 0x12000156e6 > > > > Jun 22 08:53:09 x4 kernel: XFS (sdb1): ail: ooo splice, walked 15503 items > > > > ..... > > > > Jun 22 08:53:12 x4 kernel: XFS (sdb1): ail: ooo splice, tail 0x12000156e7, item 0x12000156e6 > > > > Jun 22 08:53:12 x4 kernel: XFS (sdb1): ail: ooo splice, walked 16945 items > > > > > > > > Interesting is the LSN of the tail - it's only one sector further on > > > > than the items being inserted. That's what I'd expect from a commit > > > > record write race between two checkpoints. I'll have a deeper look > > > > into whether this can be avoided later tonight and also whether I > > > > can easily implement a "last insert cursor" easily so subsequent > > > > inserts at the same LSN avoid the walk.... > > > > > > Ok, so here's a patch that does just this. I should probably also do > > > a little bit of cleanup on the cursor code as well, but this avoids > > > the repeated walks of the AIL to find the insert position. > > > > > > Can you try it without the WQ changes you made, Marcus, and see if > > > the interactivity problems go away? > > > > Sorry to be the bringer of bad news, but this made things much worse: > > > > -------cpu0-usage--------------cpu1-usage--------------cpu2-usage--------------cpu3-usage------ --dsk/sdc-- ---system-- ---load-avg--- --dsk/sdc-- > > usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq| read writ| int csw | 1m 5m 15m |reads writs > > 1 1 98 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0| 0 0 | 603 380 |0.66 0.55 0.28| 0 0 > > 1 0 99 0 0 0: 1 0 99 0 0 0: 1 19 80 0 0 0: 0 0 100 0 0 0| 0 0 | 719 383 |0.66 0.55 0.28| 0 0 > > 3 1 96 0 0 0: 3 1 96 0 0 0: 1 52 47 0 0 0: 0 0 100 0 0 0| 0 6464k|1847 919 |0.66 0.55 0.28| 0 202 > > 2 13 85 0 0 0: 2 2 96 0 0 0: 1 56 43 0 0 0: 1 31 69 0 0 0|4096B 256k|1910 1280 |0.68 0.56 0.28| 1 8 > > > 0 1 99 0 0 0: 0 0 100 0 0 0: 0 1 99 0 0 0: 0 100 0 0 0 0| 0 0 |1256 170 |0.68 0.56 0.28| 0 0 > > > 0 1 99 0 0 0: 1 1 98 0 0 0: 1 0 99 0 0 0: 0 99 0 0 0 1| 0 0 |1395 229 |0.68 0.56 0.28| 0 0 > > > 0 0 100 0 0 0: 0 0 100 0 0 0: 0 3 97 0 0 0: 0 100 0 0 0 0| 0 512B|1304 167 |0.68 0.56 0.28| 0 1 > > > 1 1 98 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0: 0 99 0 0 0 1| 0 0 |1211 146 |0.68 0.56 0.28| 0 0 > > > 0 0 100 0 0 0: 0 0 100 0 0 0: 0 1 99 0 0 0: 0 97 0 0 0 3| 0 0 |1270 149 |0.87 0.60 0.30| 0 0 > > 5 2 65 29 0 0: 2 3 95 0 0 0: 1 0 99 0 0 0: 2 24 72 0 0 1| 0 8866k|2654 2398 |0.87 0.60 0.30| 0 496 > > 6 2 25 67 0 0: 3 1 59 37 0 0: 0 0 100 0 0 0: 4 4 92 0 0 0| 0 4554k|2224 2494 |0.87 0.60 0.30| 0 399 > > 1 1 98 0 0 0: 0 0 83 17 0 0: 1 3 96 0 0 0: 0 1 99 0 0 0| 0 2270k|1079 1030 |0.87 0.60 0.30| 0 200 > > 1 1 98 0 0 0: 1 1 98 0 0 0: 0 1 99 0 0 0: 1 0 99 0 0 0| 0 9216B| 713 567 |0.87 0.60 0.30| 0 2 > > 0 0 100 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0: 0 1 99 0 0 0| 0 0 | 492 386 |0.80 0.59 0.30| 0 0 > > > > As you can see in the table above (resolution 1sec) the hang is now > > 5-6 seconds long, instead of the 1-3 seconds seen before. > > Interesting. I checked that the ordering was correct in each case > adn that it was behaving correctly here. > > Can you add the following patch and send me the dmesg output over a > hang? It will tell me where the cursor is being initialised and when > it is being dropped, so should indicate if a specific insert chain > is getting stuck or doing something stoopid. The kernel log is attached. rm -fr && sync starts at Jun 29 09:32:24. -- Markus --UlVJffcvxoiEqYs2 Content-Type: application/x-bzip2 Content-Disposition: attachment; filename="kern_.log.bz2" Content-Transfer-Encoding: base64 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 --UlVJffcvxoiEqYs2-- From sentto-74162301-133-1309335655-linux-xfs=oss.sgi.com@returns.groups.yahoo.com Wed Jun 29 03:21:00 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.1 required=5.0 tests=BAYES_50,FREEMAIL_FROM, HTML_MESSAGE,MIME_8BIT_HEADER,T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.4.0-r929098 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 p5T8KxfX072603 for ; Wed, 29 Jun 2011 03:21:00 -0500 X-ASG-Debug-ID: 1309335657-79d402880000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from n54c.bullet.mail.sp1.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id E12C63ED61 for ; Wed, 29 Jun 2011 01:20:57 -0700 (PDT) Received: from n54c.bullet.mail.sp1.yahoo.com (n54c.bullet.mail.sp1.yahoo.com [98.136.45.53]) by cuda.sgi.com with SMTP id VCnJHPtUGifbSDlZ for ; Wed, 29 Jun 2011 01:20:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoogroups.com; s=lima; t=1309335657; bh=CYDn16iiB9z5PP4Qxt0ebAO9G2P9vEgu6/fjmEVRKQM=; h=Received:Received:X-Yahoo-Newman-Id:X-Sender:X-Apparently-To:X-Received:X-Received:X-Received:X-Received:X-Received:X-Received:To:Message-ID:User-Agent:X-Mailer:X-Originating-IP:X-Yahoo-Post-IP:From:X-Yahoo-Profile:Sender:MIME-Version:Mailing-List:Delivered-To:List-Id:Precedence:List-Unsubscribe:Date:Subject:Reply-To:X-Yahoo-Newman-Property:Content-Type; b=MQp444V7dkzD0GR+9kBS+9hAOeCvY0g56RDvDiAbYwfDQ4zGRqX60Xm5XraxtFopcdZfFFZy7fL73k3LYc8WKgjLbV/H81ysdg3ODqxaWALWfO0688RYItGmri7Hkxai DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=lima; d=yahoogroups.com; b=ekBV9/HIABw0o/aFc/IiOgzq7mAtdzRvG2SMPwN+AswN7bJoTCXwurnn1ZOy6JsZFxeob8cF294pGiqy+eNEGnczJslKgUpt6ekkwr8KaLTvFqkhHKosqVox/7SWt9+b; Received: from [69.147.65.149] by n54.bullet.mail.sp1.yahoo.com with NNFMP; 29 Jun 2011 08:20:57 -0000 Received: from [66.196.95.32] by t9.bullet.mail.sp1.yahoo.com with NNFMP; 29 Jun 2011 08:20:56 -0000 X-Yahoo-Newman-Id: 74162301-m133 X-Sender: halenlukekavi@yahoo.com.tw X-Apparently-To: nxgaxk@yahoogroups.com X-Received: (qmail 53340 invoked from network); 29 Jun 2011 08:20:49 -0000 X-Received: from unknown (66.196.94.107) by m15.grp.re1.yahoo.com with QMQP; 29 Jun 2011 08:20:49 -0000 X-Received: from unknown (HELO ng8-ip2.bullet.mail.bf1.yahoo.com) (98.139.165.58) by mta3.grp.re1.yahoo.com with SMTP; 29 Jun 2011 08:20:49 -0000 X-Received: from [98.139.164.126] by ng8.bullet.mail.bf1.yahoo.com with NNFMP; 29 Jun 2011 08:20:49 -0000 X-Received: from [69.147.65.148] by tg7.bullet.mail.bf1.yahoo.com with NNFMP; 29 Jun 2011 08:20:49 -0000 X-Received: from [98.137.34.36] by t11.bullet.mail.sp1.yahoo.com with NNFMP; 29 Jun 2011 08:20:49 -0000 To: nxgaxk@yahoogroups.com Message-ID: User-Agent: eGroups-EW/0.82 X-Mailer: Yahoo Groups Message Poster X-Originating-IP: 98.139.165.58 X-Yahoo-Post-IP: 114.41.25.204 From: "halenlukekavi" X-Yahoo-Profile: halenlukekavi Sender: nxgaxk@yahoogroups.com MIME-Version: 1.0 Mailing-List: list nxgaxk@yahoogroups.com; contact nxgaxk-owner@yahoogroups.com Delivered-To: mailing list nxgaxk@yahoogroups.com List-Id: Precedence: bulk List-Unsubscribe: Date: Wed, 29 Jun 2011 08:20:48 -0000 X-ASG-Orig-Subj: [nxgaxk] =?big5?B?tFWqdbZLLatPxUC0Vap1pKOvZKbDq6+mvbp7ZWV3?= =?big5?B?MjRtaTRwbTgzcWtpb2c3bDIy?= Subject: [nxgaxk] =?big5?B?tFWqdbZLLatPxUC0Vap1pKOvZKbDq6+mvbp7ZWV3?= =?big5?B?MjRtaTRwbTgzcWtpb2c3bDIy?= Reply-To: nxgaxk@yahoogroups.com X-Yahoo-Newman-Property: groups-email-ff-u Content-Type: multipart/alternative; boundary="emsln9JWp8JUEtRMhjHFLd5RrN6KDrlINh9pabL" X-Barracuda-Connect: n54c.bullet.mail.sp1.yahoo.com[98.136.45.53] X-Barracuda-Start-Time: 1309335657 X-Barracuda-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, DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67449 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 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 --emsln9JWp8JUEtRMhjHFLd5RrN6KDrlINh9pabL Content-Type: text/plain; charset=BIG5 Content-Transfer-Encoding: base64 dGQ3ZzFpajVhNXVqZWowNzEzNTQ3cXYzMGgzbm54bDZyZzF3NjZrcm00ODgzbTg2bnRoNDgz amtsaThxMjJkNnQ4cjQxM3AwMDZsNDRvNnQxbmdoeWYxNWp0bHM1NDVud3U4czQxNDQzbDJx MmxlbWMzbTNoaG9mNzNwbTN2OGkyNWoKCrRVqnW2Sy2rT8VAtFWqdaSjr2Smw6uvpr26ewoK qqakcyCuyLlDIKXwtqIguUKwyiCk4aV+pbKzxqq6uHSrfgoKaHR0cDovL3guY28vWTEzdAoK vdDCSb/vtmmo07N9s32nYaFJCgoKq0/FQLRVqnWko69kpsOrr6a9unsKCmk3bTQzaTdqN3h2 b2wyNHFwNHVuaTNuZDNhNDNnM3ViNDQ3bTIwcDUzdWlyMzdlaWhrcWdma2traWE1bHM0MnBw NzFrcjNob3g2ajIzaGVja2k0eGw0Nmc3bDY0czIyZnRpbG1ucGYzaGYyY3g0ZTZvODdiNzMx bzY4dDFoaWFrdWVrYWtyNHY4bXE1cjQwdnhqNmwydnliM2ZuaGEwNG40bmU1cTA0ZHBvMmU4 Z2k3c2V5ajBrNzFtMTRvc3FxNmxjMzVtY2Rqd2czcGo4NDVqbjMyMjJtYnRkN2cxaWo1YTV1 amVqMDcxMzU0N3F2MzBoM25ueGw2cg== --emsln9JWp8JUEtRMhjHFLd5RrN6KDrlINh9pabL Content-Type: text/html; charset=BIG5 Content-Transfer-Encoding: quoted-printable  
=20=20=20=20=20=20 =20=20=20=20=20=20

td7g1ij5a5ujej0713547qv30h3nnxl6rg1w66krm4883m86nth483jkli8q22d6t8= r413p006l44o6t1nghyf15jtls545nwu8s41443l2q2lemc3m3hhof73pm3v8i25j

=B4U=AAu=B6K-=ABO=C5@=B4U=AAu=A4=A3=AFd=A6=C3=AB=AF=A6=BD=BA{

=AA=A6=A4s =AE=C8=B9C =A5=F0=B6=A2 =B9B=B0=CA =A4=E1=A5~=A5=B2=B3=C6=AA=BA= =B8t=AB~

http://x.co/Y13t

=BD=D0=C2I=BF=EF=B6i=A8=D3=B3}=B3}=A7a=A1I

=ABO=C5@=B4U=AAu=A4=A3=AFd=A6=C3=AB=AF=A6=BD=BA{

i7m43i7j7xvol24qp4uni3nd3a43g3ub447m20p53uir37eihkqgfkkkia5ls42pp71kr3hox6j= 23hecki4xl46g7l64s22ftilmnpf3hf2cx4e6o87b731o68t1hiakuekakr4v8mq5r40vxj6l2v= yb3fnha04n4ne5q04dpo2e8gi7seyj0k71m14osqq6lc35mcdjwg3pj845jn3222mbtd7g1ij5a= 5ujej0713547qv30h3nnxl6r

=20=20=20=20=20
__._,_.___
=20=20=20=20=20=20=20=20 =20=20 =20=20=20
.

__,_._,___
--emsln9JWp8JUEtRMhjHFLd5RrN6KDrlINh9pabL-- From P@draigBrady.com Wed Jun 29 05:43:19 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 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 p5TAhJA8085301 for ; Wed, 29 Jun 2011 05:43:19 -0500 X-ASG-Debug-ID: 1309344196-244d013a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail1.slb.deg.dub.stisp.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id E96AF14F7529 for ; Wed, 29 Jun 2011 03:43:17 -0700 (PDT) Received: from mail1.slb.deg.dub.stisp.net (mail1.slb.deg.dub.stisp.net [84.203.253.98]) by cuda.sgi.com with SMTP id rerOSPuiTQpqAJBt for ; Wed, 29 Jun 2011 03:43:17 -0700 (PDT) Received: (qmail 13922 invoked from network); 29 Jun 2011 10:43:15 -0000 Received: from unknown (HELO ?192.168.2.25?) (84.203.137.218) by mail1.slb.deg.dub.stisp.net with SMTP; 29 Jun 2011 10:43:15 -0000 Message-ID: <4E0B019E.8080800@draigBrady.com> Date: Wed, 29 Jun 2011 11:42:38 +0100 From: =?ISO-8859-1?Q?P=E1draig_Brady?= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.8) Gecko/20100227 Thunderbird/3.0.3 MIME-Version: 1.0 To: Christoph Hellwig CC: Dave Chinner , Josef Bacik , linux-fsdevel@vger.kernel.org, viro@ZenIV.linux.org.uk, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester Subject: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester References: <1309275199-10801-1-git-send-email-josef@redhat.com> <1309275199-10801-5-git-send-email-josef@redhat.com> <20110629065306.GC1026@dastard> <20110629074021.GA26086@infradead.org> In-Reply-To: <20110629074021.GA26086@infradead.org> X-Enigmail-Version: 1.0.1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: mail1.slb.deg.dub.stisp.net[84.203.253.98] X-Barracuda-Start-Time: 1309344197 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67458 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 29/06/11 08:40, Christoph Hellwig wrote: > On Wed, Jun 29, 2011 at 04:53:07PM +1000, Dave Chinner wrote: >> On Tue, Jun 28, 2011 at 11:33:19AM -0400, Josef Bacik wrote: >>> This is a test to make sure seek_data/seek_hole is acting like it does on >>> Solaris. It will check to see if the fs supports finding a hole or not and will >>> adjust as necessary. >> >> So I just looked at this with an eye to validating an XFS >> implementation, and I came up with this list of stuff that the test >> does not cover that I'd need to test in some way: >> >> - files with clean unwritten extents. Are they a hole or >> data? What's SEEK_DATA supposed to return on layout like >> hole-unwritten-data? i.e. needs to add fallocate to the >> picture... >> >> - files with dirty unwritten extents (i.e. dirty in memory, >> not on disk). They are most definitely data, and most >> filesystems will need a separate lookup path to detect >> dirty unwritten ranges because the state is kept >> separately (page cache vs extent cache). Plenty of scope >> for filesystem specific bugs here so needs a roubust test. > > The discussion leading up to the resurrection of SEEK_HOLE/SEEK_DATA > was pretty much about that point. The conclusion based on the Sun > documentation and common sense was that SEEK_DATA may only consider > unwritten extents as hole if the filesystem has a way to distinguish > plain unwritten extents and those that have been dirtied. Else it > should be considered data. > > Testing for making sure dirty preallocated areas aren't wrongly > reported sounds relatively easy, the rest falls into implementation > details, which imho is fine. Not reporting preallocated extents > as holes just is a quality of implementation issue and not a bug. There is the argument, that if this interface can distinguish these dirty unwritten extents, then why can't the fiemap interface too? The advantage of the fiemap interface is that it can distinguish empty extents vs holes. Empty extents will become increasingly common I think, given the fragmentation and space guarantee benefits they give. It would be cool for cp for example to be able to efficiently copy empty extents from source to dest. cheers, Pádraig. From david@fromorbit.com Wed Jun 29 07:10:10 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.4.0-r929098 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 p5TCAA92094616 for ; Wed, 29 Jun 2011 07:10:10 -0500 X-ASG-Debug-ID: 1309349405-22f801ef0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5D0291E5526B for ; Wed, 29 Jun 2011 05:10:06 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id sHh4USdFi7vAZaZS for ; Wed, 29 Jun 2011 05:10:06 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqQDAOgTC055LChDgWdsb2JhbABShEmjDxUBARYmJbhZkRUOgR2DeYEMBKJT Received: from ppp121-44-40-67.lns20.syd6.internode.on.net (HELO dastard) ([121.44.40.67]) by ipmail07.adl2.internode.on.net with ESMTP; 29 Jun 2011 21:40:04 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1Qbtak-00014F-1V; Wed, 29 Jun 2011 22:10:02 +1000 Date: Wed, 29 Jun 2011 22:10:01 +1000 From: Dave Chinner To: Markus Trippelsdorf Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110629121001.GS561@dastard> References: <20110621212201.GA1755@x4.trippels.de> <20110621185701.GB1723@x4.trippels.de> <20110622000449.GQ32466@dastard> <20110622070647.GA1744@x4.trippels.de> <20110622073047.GT32466@dastard> <20110629043143.GA1026@dastard> <20110629061954.GA1711@x4.trippels.de> <20110629072446.GR561@dastard> <20110629074127.GA1746@x4.trippels.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20110629074127.GA1746@x4.trippels.de> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1309349408 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67463 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, Jun 29, 2011 at 09:41:27AM +0200, Markus Trippelsdorf wrote: > On 2011.06.29 at 17:24 +1000, Dave Chinner wrote: > > On Wed, Jun 29, 2011 at 08:19:54AM +0200, Markus Trippelsdorf wrote: > > > On 2011.06.29 at 14:31 +1000, Dave Chinner wrote: > > > > On Wed, Jun 22, 2011 at 05:30:47PM +1000, Dave Chinner wrote: > > > > > Jun 22 08:53:09 x4 kernel: XFS (sdb1): ail: ooo splice, tail 0x12000156e7, item 0x12000156e6 > > > > > Jun 22 08:53:09 x4 kernel: XFS (sdb1): ail: ooo splice, walked 15503 items > > > > > ..... > > > > > Jun 22 08:53:12 x4 kernel: XFS (sdb1): ail: ooo splice, tail 0x12000156e7, item 0x12000156e6 > > > > > Jun 22 08:53:12 x4 kernel: XFS (sdb1): ail: ooo splice, walked 16945 items > > > > > > > > > > Interesting is the LSN of the tail - it's only one sector further on > > > > > than the items being inserted. That's what I'd expect from a commit > > > > > record write race between two checkpoints. I'll have a deeper look > > > > > into whether this can be avoided later tonight and also whether I > > > > > can easily implement a "last insert cursor" easily so subsequent > > > > > inserts at the same LSN avoid the walk.... > > > > > > > > Ok, so here's a patch that does just this. I should probably also do > > > > a little bit of cleanup on the cursor code as well, but this avoids > > > > the repeated walks of the AIL to find the insert position. > > > > > > > > Can you try it without the WQ changes you made, Marcus, and see if > > > > the interactivity problems go away? > > > > > > Sorry to be the bringer of bad news, but this made things much worse: > > > > > > -------cpu0-usage--------------cpu1-usage--------------cpu2-usage--------------cpu3-usage------ --dsk/sdc-- ---system-- ---load-avg--- --dsk/sdc-- > > > usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq| read writ| int csw | 1m 5m 15m |reads writs > > > 1 1 98 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0| 0 0 | 603 380 |0.66 0.55 0.28| 0 0 > > > 1 0 99 0 0 0: 1 0 99 0 0 0: 1 19 80 0 0 0: 0 0 100 0 0 0| 0 0 | 719 383 |0.66 0.55 0.28| 0 0 > > > 3 1 96 0 0 0: 3 1 96 0 0 0: 1 52 47 0 0 0: 0 0 100 0 0 0| 0 6464k|1847 919 |0.66 0.55 0.28| 0 202 > > > 2 13 85 0 0 0: 2 2 96 0 0 0: 1 56 43 0 0 0: 1 31 69 0 0 0|4096B 256k|1910 1280 |0.68 0.56 0.28| 1 8 > > > > 0 1 99 0 0 0: 0 0 100 0 0 0: 0 1 99 0 0 0: 0 100 0 0 0 0| 0 0 |1256 170 |0.68 0.56 0.28| 0 0 > > > > 0 1 99 0 0 0: 1 1 98 0 0 0: 1 0 99 0 0 0: 0 99 0 0 0 1| 0 0 |1395 229 |0.68 0.56 0.28| 0 0 > > > > 0 0 100 0 0 0: 0 0 100 0 0 0: 0 3 97 0 0 0: 0 100 0 0 0 0| 0 512B|1304 167 |0.68 0.56 0.28| 0 1 > > > > 1 1 98 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0: 0 99 0 0 0 1| 0 0 |1211 146 |0.68 0.56 0.28| 0 0 > > > > 0 0 100 0 0 0: 0 0 100 0 0 0: 0 1 99 0 0 0: 0 97 0 0 0 3| 0 0 |1270 149 |0.87 0.60 0.30| 0 0 > > > 5 2 65 29 0 0: 2 3 95 0 0 0: 1 0 99 0 0 0: 2 24 72 0 0 1| 0 8866k|2654 2398 |0.87 0.60 0.30| 0 496 > > > 6 2 25 67 0 0: 3 1 59 37 0 0: 0 0 100 0 0 0: 4 4 92 0 0 0| 0 4554k|2224 2494 |0.87 0.60 0.30| 0 399 > > > 1 1 98 0 0 0: 0 0 83 17 0 0: 1 3 96 0 0 0: 0 1 99 0 0 0| 0 2270k|1079 1030 |0.87 0.60 0.30| 0 200 > > > 1 1 98 0 0 0: 1 1 98 0 0 0: 0 1 99 0 0 0: 1 0 99 0 0 0| 0 9216B| 713 567 |0.87 0.60 0.30| 0 2 > > > 0 0 100 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0: 0 1 99 0 0 0| 0 0 | 492 386 |0.80 0.59 0.30| 0 0 > > > > > > As you can see in the table above (resolution 1sec) the hang is now > > > 5-6 seconds long, instead of the 1-3 seconds seen before. > > > > Interesting. I checked that the ordering was correct in each case > > adn that it was behaving correctly here. > > > > Can you add the following patch and send me the dmesg output over a > > hang? It will tell me where the cursor is being initialised and when > > it is being dropped, so should indicate if a specific insert chain > > is getting stuck or doing something stoopid. > > The kernel log is attached. > rm -fr && sync starts at Jun 29 09:32:24. Add this patch on top of the first one I sent. If it doesn't fix the problem, can you readd the debug patch and send the log again? Cheers, Dave. -- Dave Chinner david@fromorbit.com xfs: unpin stale inodes directly in IOP_COMMITTED From: Dave Chinner When inodes are marked stale in a transaction, they are treated specially when the iinode log item is being inserted into the AIL. It trieÑ• to avoid moving the log item forward in the AIL due to a race condition with the writing the underlying buffer back to disk. The was "fixed" in commit de25c18 ("xfs: avoid moving stale inodes in the AIL"). To avoid moving the item forward, we return a LSN smaller than the commit_lsn of the completing transaction, thereby trying to trick the commit code into not moving the inode forward at all. I'm not sure this ever worked as intended - it assumes the inode is already in the AIL, but I don't think the returned LSN would have been small enough to prevent moving the inode. It appears that the reason it worked is that the lower LSN of the inodes meant they were inserted into the AIL and flushed before the inode buffer (which was moved to the commit_lsn of the transaction). The big problem is that with delayed logging, the returning of the different LSN means insertion takes the slow, non-bulk path. Worse yet is that insertion is to a position -before- the commit_lsn so it is doing a AIL traversal on every insertion, and has to walk over all the items that have already been inserted into the AIL. It's expensive. To compound the matter further, with delayed logging inodes are likely to go from clean to stale in a single checkpoint, which means they aren't even in the AIL at all when we come across them at AIL insertion time. Hence these were all getting inserted into the AIL when they simply do not need to be as inodes marked XFS_ISTALE are never written back. Transactional/recovery integrity is maintained in this case by the other items in the unlink transaction that were modified (e.g. the AGI btree blocks) and committed in the same checkpoint. So to fix this, simply unpin the stale inodes directly in xfs_inode_item_committed() and return -1 to indicate that the AIL insertion code does not need to do any further processing of these inodes. Signed-off-by: Dave Chinner --- fs/xfs/xfs_inode_item.c | 14 ++++++++------ fs/xfs/xfs_trans.c | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index 09983a3..b1e88d5 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c @@ -681,15 +681,15 @@ xfs_inode_item_unlock( * where the cluster buffer may be unpinned before the inode is inserted into * the AIL during transaction committed processing. If the buffer is unpinned * before the inode item has been committed and inserted, then it is possible - * for the buffer to be written and IO completions before the inode is inserted + * for the buffer to be written and IO completes before the inode is inserted * into the AIL. In that case, we'd be inserting a clean, stale inode into the * AIL which will never get removed. It will, however, get reclaimed which * triggers an assert in xfs_inode_free() complaining about freein an inode * still in the AIL. * - * To avoid this, return a lower LSN than the one passed in so that the - * transaction committed code will not move the inode forward in the AIL but - * will still unpin it properly. + * To avoid this, just unpin the inode directly and return a LSN of -1 so the + * transaction committed code knows that it does not need to do any further + * processing on the item. */ STATIC xfs_lsn_t xfs_inode_item_committed( @@ -699,8 +699,10 @@ xfs_inode_item_committed( struct xfs_inode_log_item *iip = INODE_ITEM(lip); struct xfs_inode *ip = iip->ili_inode; - if (xfs_iflags_test(ip, XFS_ISTALE)) - return lsn - 1; + if (xfs_iflags_test(ip, XFS_ISTALE)) { + xfs_inode_item_unpin(lip, 0); + return -1; + } return lsn; } diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c index 7d60d7e..d5d5708 100644 --- a/fs/xfs/xfs_trans.c +++ b/fs/xfs/xfs_trans.c @@ -1487,7 +1487,7 @@ xfs_trans_committed_bulk( lip->li_flags |= XFS_LI_ABORTED; item_lsn = IOP_COMMITTED(lip, commit_lsn); - /* item_lsn of -1 means the item was freed */ + /* item_lsn of -1 means the item needs no further processing */ if (XFS_LSN_CMP(item_lsn, (xfs_lsn_t)-1) == 0) continue; From markus@trippelsdorf.de Wed Jun 29 07:48:18 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p5TCmIhj101236 for ; Wed, 29 Jun 2011 07:48:18 -0500 X-ASG-Debug-ID: 1309351696-19b803a50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ud10.udmedia.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 94EEB1EE0F61 for ; Wed, 29 Jun 2011 05:48:16 -0700 (PDT) Received: from mail.ud10.udmedia.de (ud10.udmedia.de [194.117.254.50]) by cuda.sgi.com with ESMTP id 9mnAHhzD7CnHXWlE for ; Wed, 29 Jun 2011 05:48:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:in-reply-to; q=dns/txt; s=beta; bh=IM38Je8YisVvrufo R1obyciS86gExM07LvnK93QEreg=; b=Bi+DY/62ewZtiz2GfY7/SCcbwFdfA9ih 4hcNki57ba93uyQhKD0QF0DB7tquWOm+tCk9H2Dv+YNRdSAEWMKp04RYLoznZvpN yTkMu5syRFZSMbjOqazjf8Y/h7cI/QzEgpZ3aDMQdehdCTv+W5bAqNemOnCAS8+6 tmNYDOY1uDY= Received: (qmail 16106 invoked from network); 29 Jun 2011 14:48:15 +0200 Received: from unknown (HELO x4.trippels.de) (ud10?360p3@91.64.57.18) by mail.ud10.udmedia.de with ESMTPSA (DHE-RSA-AES256-SHA encrypted, authenticated); 29 Jun 2011 14:48:15 +0200 Date: Wed, 29 Jun 2011 14:48:14 +0200 From: Markus Trippelsdorf To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110629124814.GA1762@x4.trippels.de> References: <20110621212201.GA1755@x4.trippels.de> <20110621185701.GB1723@x4.trippels.de> <20110622000449.GQ32466@dastard> <20110622070647.GA1744@x4.trippels.de> <20110622073047.GT32466@dastard> <20110629043143.GA1026@dastard> <20110629061954.GA1711@x4.trippels.de> <20110629072446.GR561@dastard> <20110629074127.GA1746@x4.trippels.de> <20110629121001.GS561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110629121001.GS561@dastard> X-Barracuda-Connect: ud10.udmedia.de[194.117.254.50] X-Barracuda-Start-Time: 1309351697 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67465 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 2011.06.29 at 22:10 +1000, Dave Chinner wrote: > On Wed, Jun 29, 2011 at 09:41:27AM +0200, Markus Trippelsdorf wrote: > > On 2011.06.29 at 17:24 +1000, Dave Chinner wrote: > > > On Wed, Jun 29, 2011 at 08:19:54AM +0200, Markus Trippelsdorf wrote: > > > > On 2011.06.29 at 14:31 +1000, Dave Chinner wrote: > > > > > On Wed, Jun 22, 2011 at 05:30:47PM +1000, Dave Chinner wrote: > > > > > > Jun 22 08:53:09 x4 kernel: XFS (sdb1): ail: ooo splice, tail 0x12000156e7, item 0x12000156e6 > > > > > > Jun 22 08:53:09 x4 kernel: XFS (sdb1): ail: ooo splice, walked 15503 items > > > > > > ..... > > > > > > Jun 22 08:53:12 x4 kernel: XFS (sdb1): ail: ooo splice, tail 0x12000156e7, item 0x12000156e6 > > > > > > Jun 22 08:53:12 x4 kernel: XFS (sdb1): ail: ooo splice, walked 16945 items > > > > > > > > > > > > Interesting is the LSN of the tail - it's only one sector further on > > > > > > than the items being inserted. That's what I'd expect from a commit > > > > > > record write race between two checkpoints. I'll have a deeper look > > > > > > into whether this can be avoided later tonight and also whether I > > > > > > can easily implement a "last insert cursor" easily so subsequent > > > > > > inserts at the same LSN avoid the walk.... > > > > > > > > > > Ok, so here's a patch that does just this. I should probably also do > > > > > a little bit of cleanup on the cursor code as well, but this avoids > > > > > the repeated walks of the AIL to find the insert position. > > > > > > > > > > Can you try it without the WQ changes you made, Marcus, and see if > > > > > the interactivity problems go away? > > > > > > > > Sorry to be the bringer of bad news, but this made things much worse: > > > > > > > > -------cpu0-usage--------------cpu1-usage--------------cpu2-usage--------------cpu3-usage------ --dsk/sdc-- ---system-- ---load-avg--- --dsk/sdc-- > > > > usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq| read writ| int csw | 1m 5m 15m |reads writs > > > > 1 1 98 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0: 0 1 99 0 0 0| 0 0 | 603 380 |0.66 0.55 0.28| 0 0 > > > > 1 0 99 0 0 0: 1 0 99 0 0 0: 1 19 80 0 0 0: 0 0 100 0 0 0| 0 0 | 719 383 |0.66 0.55 0.28| 0 0 > > > > 3 1 96 0 0 0: 3 1 96 0 0 0: 1 52 47 0 0 0: 0 0 100 0 0 0| 0 6464k|1847 919 |0.66 0.55 0.28| 0 202 > > > > 2 13 85 0 0 0: 2 2 96 0 0 0: 1 56 43 0 0 0: 1 31 69 0 0 0|4096B 256k|1910 1280 |0.68 0.56 0.28| 1 8 > > > > > 0 1 99 0 0 0: 0 0 100 0 0 0: 0 1 99 0 0 0: 0 100 0 0 0 0| 0 0 |1256 170 |0.68 0.56 0.28| 0 0 > > > > > 0 1 99 0 0 0: 1 1 98 0 0 0: 1 0 99 0 0 0: 0 99 0 0 0 1| 0 0 |1395 229 |0.68 0.56 0.28| 0 0 > > > > > 0 0 100 0 0 0: 0 0 100 0 0 0: 0 3 97 0 0 0: 0 100 0 0 0 0| 0 512B|1304 167 |0.68 0.56 0.28| 0 1 > > > > > 1 1 98 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0: 0 99 0 0 0 1| 0 0 |1211 146 |0.68 0.56 0.28| 0 0 > > > > > 0 0 100 0 0 0: 0 0 100 0 0 0: 0 1 99 0 0 0: 0 97 0 0 0 3| 0 0 |1270 149 |0.87 0.60 0.30| 0 0 > > > > 5 2 65 29 0 0: 2 3 95 0 0 0: 1 0 99 0 0 0: 2 24 72 0 0 1| 0 8866k|2654 2398 |0.87 0.60 0.30| 0 496 > > > > 6 2 25 67 0 0: 3 1 59 37 0 0: 0 0 100 0 0 0: 4 4 92 0 0 0| 0 4554k|2224 2494 |0.87 0.60 0.30| 0 399 > > > > 1 1 98 0 0 0: 0 0 83 17 0 0: 1 3 96 0 0 0: 0 1 99 0 0 0| 0 2270k|1079 1030 |0.87 0.60 0.30| 0 200 > > > > 1 1 98 0 0 0: 1 1 98 0 0 0: 0 1 99 0 0 0: 1 0 99 0 0 0| 0 9216B| 713 567 |0.87 0.60 0.30| 0 2 > > > > 0 0 100 0 0 0: 1 1 98 0 0 0: 0 0 100 0 0 0: 0 1 99 0 0 0| 0 0 | 492 386 |0.80 0.59 0.30| 0 0 > > > > > > > > As you can see in the table above (resolution 1sec) the hang is now > > > > 5-6 seconds long, instead of the 1-3 seconds seen before. > > > > > > Interesting. I checked that the ordering was correct in each case > > > adn that it was behaving correctly here. > > > > > > Can you add the following patch and send me the dmesg output over a > > > hang? It will tell me where the cursor is being initialised and when > > > it is being dropped, so should indicate if a specific insert chain > > > is getting stuck or doing something stoopid. > > > > The kernel log is attached. > > rm -fr && sync starts at Jun 29 09:32:24. > > Add this patch on top of the first one I sent. If it doesn't fix the > problem, can you readd the debug patch and send the log again? This completely fixes the issue. As a bonus "rm -fr && sync" completes much quicker now. Here are three different examples of the "remove kernel tree" workload: -------cpu0-usage--------------cpu1-usage--------------cpu2-usage--------------cpu3-usage------ --dsk/sdb-- ---system-- ---load-avg--- --dsk/sdb-- usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq| read writ| int csw | 1m 5m 15m |reads writs 0 0 100 0 0 0: 1 0 99 0 0 0: 0 0 100 0 0 0: 1 20 79 0 0 0| 0 0 | 761 254 |0.86 0.29 0.10| 0 0 9 1 90 0 0 0: 3 8 89 0 0 0: 7 5 88 0 0 0: 7 51 41 0 0 0| 0 6464k|3250 2742 |0.86 0.29 0.10| 0 202 1 0 99 0 0 0: 2 51 47 0 0 0: 1 1 98 0 0 0: 0 3 97 0 0 0|4096B 5856k|1895 905 |0.86 0.29 0.10| 1 177 5 1 94 0 0 0: 1 0 99 0 0 0: 4 0 96 0 0 0: 8 9 83 0 0 0| 0 559k|1662 1470 |0.86 0.29 0.10| 0 148 5 1 94 0 0 0: 1 1 98 0 0 0: 1 1 98 0 0 0: 6 5 89 0 0 0| 0 0 |1697 1568 |0.86 0.29 0.10| 0 0 1 1 98 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0: 0 1 99 0 0 0| 0 0 | 741 392 |1.04 0.43 0.16| 0 0 9 6 85 0 0 0: 6 1 93 0 0 0: 1 1 98 0 0 0: 2 61 37 0 0 0| 0 32k|2070 1383 |0.96 0.42 0.16| 0 0 6 3 91 0 0 0: 3 1 95 0 0 0: 2 44 54 0 0 0: 3 4 92 0 0 0| 0 6432k|2495 1663 |0.96 0.42 0.16| 0 202 2 6 92 0 0 0: 2 1 97 0 0 0: 2 7 91 0 0 0: 3 8 90 0 0 0|4096B 6140k|2394 1805 |0.96 0.42 0.16| 1 258 4 1 95 0 0 0: 3 3 94 0 0 0: 0 0 100 0 0 0: 3 2 95 0 0 0| 0 0 |1473 730 |0.96 0.42 0.16| 0 0 1 1 98 0 0 0: 0 1 99 0 0 0: 1 3 96 0 0 0: 1 1 98 0 0 0| 0 0 | 926 433 |0.60 0.42 0.19| 0 0 5 2 93 0 0 0: 3 0 97 0 0 0: 2 60 38 0 0 0: 7 3 90 0 0 0| 0 5312k|2328 1897 |0.60 0.42 0.19| 0 161 2 62 36 0 0 0: 6 2 92 0 0 0: 2 0 98 0 0 0: 8 7 85 0 0 0|4096B 4000k|2439 1827 |0.60 0.42 0.19| 1 129 8 1 91 0 0 0: 3 1 96 0 0 0: 0 0 100 0 0 0: 12 18 69 0 0 1| 0 3293k|2568 2223 |0.63 0.43 0.20| 0 170 4 1 95 0 0 0: 1 2 97 0 0 0: 2 1 97 0 0 0: 6 7 87 0 0 0| 0 0 |1606 1627 |0.63 0.43 0.20| 0 0 So many thanks Dave. Your prompt help is very much appreciated. -- Markus From josef@redhat.com Wed Jun 29 08:20:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TDKHHV102796 for ; Wed, 29 Jun 2011 08:20:17 -0500 X-ASG-Debug-ID: 1309353592-2a0501c00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3DA4840327 for ; Wed, 29 Jun 2011 06:19:52 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id zHtEk7LVG5s122t7 for ; Wed, 29 Jun 2011 06:19:52 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5TDJkfu017751 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 29 Jun 2011 09:19:46 -0400 Received: from localhost.localdomain (vpn-9-51.rdu.redhat.com [10.11.9.51]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id p5TDJjxZ025674; Wed, 29 Jun 2011 09:19:45 -0400 Message-ID: <4E0B266D.30000@redhat.com> Date: Wed, 29 Jun 2011 09:19:41 -0400 From: Josef Bacik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc15 Thunderbird/3.1.10 MIME-Version: 1.0 To: Dave Chinner CC: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, xfs@oss.sgi.com, viro@ZenIV.linux.org.uk X-ASG-Orig-Subj: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester Subject: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester References: <1309275199-10801-1-git-send-email-josef@redhat.com> <1309275199-10801-5-git-send-email-josef@redhat.com> <20110629065306.GC1026@dastard> In-Reply-To: <20110629065306.GC1026@dastard> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1309353593 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 06/29/2011 02:53 AM, Dave Chinner wrote: > On Tue, Jun 28, 2011 at 11:33:19AM -0400, Josef Bacik wrote: >> This is a test to make sure seek_data/seek_hole is acting like it does on >> Solaris. It will check to see if the fs supports finding a hole or not and will >> adjust as necessary. > > So I just looked at this with an eye to validating an XFS > implementation, and I came up with this list of stuff that the test > does not cover that I'd need to test in some way: > > - files with clean unwritten extents. Are they a hole or > data? What's SEEK_DATA supposed to return on layout like > hole-unwritten-data? i.e. needs to add fallocate to the > picture... > > - files with dirty unwritten extents (i.e. dirty in memory, > not on disk). They are most definitely data, and most > filesystems will need a separate lookup path to detect > dirty unwritten ranges because the state is kept > separately (page cache vs extent cache). Plenty of scope > for filesystem specific bugs here so needs a roubust test. > > - cold cache behaviour - all dirty data ranges the test > creates are hot in cache and not even forced to disk, so > it is not testing the no-page-cache-over-the-data-range > case. i.e. it tests delalloc state tracking but not > data-extent-already exists lookups during a seek. > > - assumes that allocation size is the block size and that > holes follows block size alignment. We already know that > ext4 does not follow that rule when doing small sparse > writes close together in a file, and XFS is also known to > fill holes when doing sparse writes past EOF. > > - only tests single block data extents Ñ•o doesn't cover > corner cases like skipping over multiple fragmented data > extents to the next hole. > Yeah I intentionally left out preallocated stuff because these are going to be implementation specific, so I was going to leave that for a later exercise when people actually start doing proper implementations. > Some more comments in line.... > >> +_cleanup() >> +{ >> + rm -f $tmp.* >> +} >> + >> +trap "_cleanup ; exit \$status" 0 1 2 3 15 >> + >> +# get standard environment, filters and checks >> +. ./common.rc >> +. ./common.filter >> + >> +# real QA test starts here >> +_supported_fs generic >> +_supported_os Linux >> + >> +testfile=$TEST_DIR/seek_test.$$ >> +logfile=$TEST_DIR/seek_test.$$.log > > The log file is usually named $seq.full, and doesn't get placed in > the filesystem being tested. It gets saved in the xfstests directory > along side $seq.out.bad for analysis whenteh test fails... > I only want it to see if SEEK_HOLE fails so I can say it didn't run. I followed the same example as the fiemap test that Eric wrote. >> +[ -x $here/src/seek-tester ] || _notrun "seek-tester not built" >> + >> +_cleanup() >> +{ >> + rm -f $testfile >> + rm -f $logfile >> +} >> +trap "_cleanup; exit \$status" 0 1 2 3 15 >> + >> +echo "Silence is golden" >> +$here/src/seek-tester -q $testfile 2>&1 | tee -a $logfile > > Personally I'd prefer the test to be a bit noisy about what it is > running, especially when there are so many subtests the single > invocation is running. It makes no difference to the run time ofthe > test, or the output when something fails, but it at least allows you > to run the test manually and see what it is doing easily... > Right, the problem with this test is it will run differently depending on the implementation. I agree, I really like the noisy output tests, but unfortunately if I run this test on ext4 where it currently treats the entire file as data, and then run it on btrfs where it is smarter and actually recognizes holes, we end up with two different outputs that are both correct. >> + >> +if grep -q "SEEK_HOLE is not supported" $logfile; then >> + _notrun "SEEK_HOLE/SEEK_DATA not supported by this kernel" >> +fi >> + >> +rm -f $logfile >> +rm -f $testfile >> + >> +status=0 ; exit >> diff --git a/255.out b/255.out >> new file mode 100644 >> index 0000000..7eefb82 >> --- /dev/null >> +++ b/255.out >> @@ -0,0 +1,2 @@ >> +QA output created by 255 >> +Silence is golden >> diff --git a/group b/group >> index 1f86075..c045e70 100644 >> --- a/group >> +++ b/group >> @@ -368,3 +368,4 @@ deprecated >> 252 auto quick prealloc >> 253 auto quick >> 254 auto quick >> +255 auto quick > > I'd suggest that rw and prealloc (once unwritten extent > testing is added) groups should also be defined for this test. > > Otherwise, the test code looks ok if a bit over-engineered.... > >> +struct testrec { >> + int test_num; >> + int (*test_func)(int fd, int testnum); >> + char *test_desc; >> +}; >> + >> +struct testrec seek_tests[] = { >> + { 1, test01, "Test basic support" }, >> + { 2, test02, "Test an empty file" }, >> + { 3, test03, "Test a full file" }, >> + { 4, test04, "Test file hole at beg, data at end" }, >> + { 5, test05, "Test file data at beg, hole at end" }, >> + { 6, test06, "Test file hole data hole data" }, > > So, to take from the hole punch test matrix, it covers a bunch more > file state transitions and cases that are just as relevant to > SEEK_HOLE/SEEK_DATA. Those cases are: > > # 1. into a hole > # 2. into allocated space > # 3. into unwritten space > # 4. hole -> data > # 5. hole -> unwritten > # 6. data -> hole > # 7. data -> unwritten > # 8. unwritten -> hole > # 9. unwritten -> data > # 10. hole -> data -> hole > # 11. data -> hole -> data > # 12. unwritten -> data -> unwritten > # 13. data -> unwritten -> data > # 14. data -> hole @ EOF > # 15. data -> hole @ 0 > # 16. data -> cache cold ->hole > # 17. data -> hole in single block file > > I thikn we also need to cover most of these same cases, right? And > SEEK_HOLE/SEEK data also need to explicitly separate the unwritten > tests into "clean unwritten" and "dirty unwritten" and cover the > transitions between regions of those states as well, right? > Yeah you are right, but again doing preallocated stuff is tricky, but I can expand it now if that's what we want. Thanks, Josef From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:39 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TE3cRV104728 for ; Wed, 29 Jun 2011 09:03:39 -0500 X-ASG-Debug-ID: 1309356217-093902090000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5E1281D7DD2A for ; Wed, 29 Jun 2011 07:03:37 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id ABoAl8QYgEXMLgOa for ; Wed, 29 Jun 2011 07:03:37 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMe-0008Aw-OE for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:36 +0000 Message-Id: <20110629140336.717434334@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:11 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 02/27] xfs: remove the unused ilock_nowait codepath in writepage Subject: [PATCH 02/27] xfs: remove the unused ilock_nowait codepath in writepage References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-writepage-remove-nonblock X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356217 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 wbc->nonblocking is never set, so this whole code has been unreachable for a long time. I'm also not sure it would make a lot of sense - we'd rather finish our writeout after a short wait for the ilock instead of cancelling the whole ioend. Signed-off-by: Christoph Hellwig Reviewed-by: Alex Elder Index: linux-2.6/fs/xfs/linux-2.6/xfs_aops.c =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_aops.c 2011-04-27 20:54:19.763046444 +0200 +++ linux-2.6/fs/xfs/linux-2.6/xfs_aops.c 2011-04-27 20:54:41.922926393 +0200 @@ -305,8 +305,7 @@ xfs_map_blocks( struct inode *inode, loff_t offset, struct xfs_bmbt_irec *imap, - int type, - int nonblocking) + int type) { struct xfs_inode *ip = XFS_I(inode); struct xfs_mount *mp = ip->i_mount; @@ -322,11 +321,7 @@ xfs_map_blocks( if (type == IO_UNWRITTEN) bmapi_flags |= XFS_BMAPI_IGSTATE; - if (!xfs_ilock_nowait(ip, XFS_ILOCK_SHARED)) { - if (nonblocking) - return -XFS_ERROR(EAGAIN); - xfs_ilock(ip, XFS_ILOCK_SHARED); - } + xfs_ilock(ip, XFS_ILOCK_SHARED); ASSERT(ip->i_d.di_format != XFS_DINODE_FMT_BTREE || (ip->i_df.if_flags & XFS_IFEXTENTS)); @@ -916,7 +911,6 @@ xfs_vm_writepage( ssize_t len; int err, imap_valid = 0, uptodate = 1; int count = 0; - int nonblocking = 0; trace_xfs_writepage(inode, page, 0); @@ -964,9 +958,6 @@ xfs_vm_writepage( offset = page_offset(page); type = IO_OVERWRITE; - if (wbc->sync_mode == WB_SYNC_NONE && wbc->nonblocking) - nonblocking = 1; - do { int new_ioend = 0; @@ -1021,8 +1012,7 @@ xfs_vm_writepage( * time. */ new_ioend = 1; - err = xfs_map_blocks(inode, offset, &imap, type, - nonblocking); + err = xfs_map_blocks(inode, offset, &imap, type); if (err) goto error; imap_valid = xfs_imap_valid(inode, &imap, offset); From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:39 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TE3dfg104730 for ; Wed, 29 Jun 2011 09:03:39 -0500 X-ASG-Debug-ID: 1309356218-089a021e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 692A61D7DD2A for ; Wed, 29 Jun 2011 07:03:38 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id YZkSGn6nzNsFykND for ; Wed, 29 Jun 2011 07:03:38 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMf-0008DW-TO for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:37 +0000 Message-Id: <20110629140337.876449102@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:16 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 07/27] xfs: always log timestamp updates in xfs_setattr_size Subject: [PATCH 07/27] xfs: always log timestamp updates in xfs_setattr_size References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-simplify-setattr X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356218 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Get rid of the special case where we use unlogged timestamp updates for a truncate to the current inode size, and just call xfs_setattr_nonsize for it to treat it like a utimes calls. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Index: xfs/fs/xfs/linux-2.6/xfs_iops.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_iops.c 2011-06-21 11:12:11.008794493 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_iops.c 2011-06-21 11:12:22.398793917 +0200 @@ -773,14 +773,16 @@ xfs_setattr_size( */ if (iattr->ia_size == 0 && ip->i_size == 0 && ip->i_d.di_nextents == 0) { - xfs_iunlock(ip, XFS_ILOCK_EXCL); - lock_flags &= ~XFS_ILOCK_EXCL; - if (mask & ATTR_CTIME) { - inode->i_mtime = inode->i_ctime = - current_fs_time(inode->i_sb); - xfs_mark_inode_dirty_sync(ip); - } - goto out_unlock; + if (!(mask & ATTR_CTIME)) + goto out_unlock; + + /* + * Use the regular setattr path to update the timestamps. + */ + xfs_iunlock(ip, lock_flags); + iattr->ia_valid &= ~ATTR_SIZE; + iattr->ia_valid |= ATTR_MTIME; + return xfs_setattr_nonsize(ip, iattr, 0); } /* From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TE3doT104740 for ; Wed, 29 Jun 2011 09:03:39 -0500 X-ASG-Debug-ID: 1309356217-203001180000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D31851D7DD2C for ; Wed, 29 Jun 2011 07:03:37 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id uxvsRJFAeG0pRqVm for ; Wed, 29 Jun 2011 07:03:37 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMf-0008By-5W for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:37 +0000 Message-Id: <20110629140337.137341800@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:13 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 04/27] xfs: cleanup xfs_add_to_ioend Subject: [PATCH 04/27] xfs: cleanup xfs_add_to_ioend References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-cleanup-xfs_add_to_ioend X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356217 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Pass the writeback context to xfs_add_to_ioend to make the ioend chain manipulations self-contained in this function. Signed-off-by: Christoph Hellwig Index: linux-2.6/fs/xfs/linux-2.6/xfs_aops.c =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_aops.c 2011-04-28 11:22:42.747447011 +0200 +++ linux-2.6/fs/xfs/linux-2.6/xfs_aops.c 2011-04-28 11:22:46.124095385 +0200 @@ -560,39 +560,39 @@ xfs_cancel_ioend( } /* - * Test to see if we've been building up a completion structure for - * earlier buffers -- if so, we try to append to this ioend if we - * can, otherwise we finish off any current ioend and start another. - * Return true if we've finished the given ioend. + * Test to see if we've been building up a completion structure for earlier + * buffers -- if so, we try to append to this ioend if we can, otherwise we + * finish off any current ioend and start another. */ STATIC void xfs_add_to_ioend( + struct xfs_writeback_ctx *ctx, struct inode *inode, struct buffer_head *bh, xfs_off_t offset, unsigned int type, - xfs_ioend_t **result, int need_ioend) { - xfs_ioend_t *ioend = *result; + if (!ctx->ioend || need_ioend || type != ctx->ioend->io_type) { + struct xfs_ioend *new; - if (!ioend || need_ioend || type != ioend->io_type) { - xfs_ioend_t *previous = *result; - - ioend = xfs_alloc_ioend(inode, type); - ioend->io_offset = offset; - ioend->io_buffer_head = bh; - ioend->io_buffer_tail = bh; - if (previous) - previous->io_list = ioend; - *result = ioend; + new = xfs_alloc_ioend(inode, type); + new->io_offset = offset; + new->io_buffer_head = bh; + new->io_buffer_tail = bh; + + if (ctx->ioend) + ctx->ioend->io_list = new; + ctx->ioend = new; + if (!ctx->iohead) + ctx->iohead = new; } else { - ioend->io_buffer_tail->b_private = bh; - ioend->io_buffer_tail = bh; + ctx->ioend->io_buffer_tail->b_private = bh; + ctx->ioend->io_buffer_tail = bh; } bh->b_private = NULL; - ioend->io_size += bh->b_size; + ctx->ioend->io_size += bh->b_size; } STATIC void @@ -874,14 +874,9 @@ __xfs_vm_writepage( xfs_map_at_offset(inode, bh, &ctx->imap, offset); } - xfs_add_to_ioend(inode, bh, offset, type, &ctx->ioend, - new_ioend); + xfs_add_to_ioend(ctx, inode, bh, offset, type, new_ioend); count++; } - - if (!ctx->iohead) - ctx->iohead = ctx->ioend; - } while (offset += len, ((bh = bh->b_this_page) != head)); if (uptodate && bh == head) From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:39 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TE3ds9104731 for ; Wed, 29 Jun 2011 09:03:39 -0500 X-ASG-Debug-ID: 1309356217-433d016f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 56A89E4B577 for ; Wed, 29 Jun 2011 07:03:38 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id DYGFMs3MMYVuN92v for ; Wed, 29 Jun 2011 07:03:38 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMf-0008CU-Eo for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:37 +0000 Message-Id: <20110629140337.417478423@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:14 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 05/27] xfs: work around bogus gcc warning in xfs_allocbt_init_cursor Subject: [PATCH 05/27] xfs: work around bogus gcc warning in xfs_allocbt_init_cursor References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-fix-xfs_allocbt_init_cursor-warning X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356218 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67470 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 GCC 4.6 complains about an array subscript is above array bounds when using the btree index to index into the agf_levels array. The only two indices passed in are 0 and 1, and we have an assert insuring that. Replace the trick of using the array index directly with using constants in the already existing branch for assigning the XFS_BTREE_LASTREC_UPDATE flag. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Index: xfs/fs/xfs/xfs_alloc_btree.c =================================================================== --- xfs.orig/fs/xfs/xfs_alloc_btree.c 2011-06-17 14:16:27.929065669 +0200 +++ xfs/fs/xfs/xfs_alloc_btree.c 2011-06-17 14:17:22.145729599 +0200 @@ -427,13 +427,16 @@ xfs_allocbt_init_cursor( cur->bc_tp = tp; cur->bc_mp = mp; - cur->bc_nlevels = be32_to_cpu(agf->agf_levels[btnum]); cur->bc_btnum = btnum; cur->bc_blocklog = mp->m_sb.sb_blocklog; - cur->bc_ops = &xfs_allocbt_ops; - if (btnum == XFS_BTNUM_CNT) + + if (btnum == XFS_BTNUM_CNT) { + cur->bc_nlevels = be32_to_cpu(agf->agf_levels[XFS_BTNUM_CNT]); cur->bc_flags = XFS_BTREE_LASTREC_UPDATE; + } else { + cur->bc_nlevels = be32_to_cpu(agf->agf_levels[XFS_BTNUM_BNO]); + } cur->bc_private.a.agbp = agbp; cur->bc_private.a.agno = agno; From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TE3e6M104756 for ; Wed, 29 Jun 2011 09:03:40 -0500 X-ASG-Debug-ID: 1309356218-67b500ef0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B9523409DD for ; Wed, 29 Jun 2011 07:03:38 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id wguBUwyx3SG42mF3 for ; Wed, 29 Jun 2011 07:03:38 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMg-0008E2-4M for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:38 +0000 Message-Id: <20110629140338.098991196@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:17 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 08/27] xfs: kill xfs_itruncate_start Subject: [PATCH 08/27] xfs: kill xfs_itruncate_start References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-kill-xfs_itruncate_start X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356218 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 xfs_itruncate_start is a rather length wrapper that evaluates to a call to xfs_ioend_wait and xfs_tosspages, and only has two callers. Instead of using the complicated checks left over from IRIX where we can to truncate the pagecache just call xfs_tosspages (aka truncate_inode_pages) directly as we want to get rid of all data after i_size, and truncate_inode_pages handles incorrect alignments and too large offsets just fine. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Index: xfs/fs/xfs/xfs_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode.c 2011-06-29 11:29:02.494973804 +0200 +++ xfs/fs/xfs/xfs_inode.c 2011-06-29 11:29:11.888256249 +0200 @@ -1217,165 +1217,8 @@ xfs_isize_check( #endif /* DEBUG */ /* - * Calculate the last possible buffered byte in a file. This must - * include data that was buffered beyond the EOF by the write code. - * This also needs to deal with overflowing the xfs_fsize_t type - * which can happen for sizes near the limit. - * - * We also need to take into account any blocks beyond the EOF. It - * may be the case that they were buffered by a write which failed. - * In that case the pages will still be in memory, but the inode size - * will never have been updated. - */ -STATIC xfs_fsize_t -xfs_file_last_byte( - xfs_inode_t *ip) -{ - xfs_mount_t *mp; - xfs_fsize_t last_byte; - xfs_fileoff_t last_block; - xfs_fileoff_t size_last_block; - int error; - - ASSERT(xfs_isilocked(ip, XFS_IOLOCK_EXCL|XFS_IOLOCK_SHARED)); - - mp = ip->i_mount; - /* - * Only check for blocks beyond the EOF if the extents have - * been read in. This eliminates the need for the inode lock, - * and it also saves us from looking when it really isn't - * necessary. - */ - if (ip->i_df.if_flags & XFS_IFEXTENTS) { - xfs_ilock(ip, XFS_ILOCK_SHARED); - error = xfs_bmap_last_offset(NULL, ip, &last_block, - XFS_DATA_FORK); - xfs_iunlock(ip, XFS_ILOCK_SHARED); - if (error) { - last_block = 0; - } - } else { - last_block = 0; - } - size_last_block = XFS_B_TO_FSB(mp, (xfs_ufsize_t)ip->i_size); - last_block = XFS_FILEOFF_MAX(last_block, size_last_block); - - last_byte = XFS_FSB_TO_B(mp, last_block); - if (last_byte < 0) { - return XFS_MAXIOFFSET(mp); - } - last_byte += (1 << mp->m_writeio_log); - if (last_byte < 0) { - return XFS_MAXIOFFSET(mp); - } - return last_byte; -} - -/* - * Start the truncation of the file to new_size. The new size - * must be smaller than the current size. This routine will - * clear the buffer and page caches of file data in the removed - * range, and xfs_itruncate_finish() will remove the underlying - * disk blocks. - * - * The inode must have its I/O lock locked EXCLUSIVELY, and it - * must NOT have the inode lock held at all. This is because we're - * calling into the buffer/page cache code and we can't hold the - * inode lock when we do so. - * - * We need to wait for any direct I/Os in flight to complete before we - * proceed with the truncate. This is needed to prevent the extents - * being read or written by the direct I/Os from being removed while the - * I/O is in flight as there is no other method of synchronising - * direct I/O with the truncate operation. Also, because we hold - * the IOLOCK in exclusive mode, we prevent new direct I/Os from being - * started until the truncate completes and drops the lock. Essentially, - * the xfs_ioend_wait() call forms an I/O barrier that provides strict - * ordering between direct I/Os and the truncate operation. - * - * The flags parameter can have either the value XFS_ITRUNC_DEFINITE - * or XFS_ITRUNC_MAYBE. The XFS_ITRUNC_MAYBE value should be used - * in the case that the caller is locking things out of order and - * may not be able to call xfs_itruncate_finish() with the inode lock - * held without dropping the I/O lock. If the caller must drop the - * I/O lock before calling xfs_itruncate_finish(), then xfs_itruncate_start() - * must be called again with all the same restrictions as the initial - * call. - */ -int -xfs_itruncate_start( - xfs_inode_t *ip, - uint flags, - xfs_fsize_t new_size) -{ - xfs_fsize_t last_byte; - xfs_off_t toss_start; - xfs_mount_t *mp; - int error = 0; - - ASSERT(xfs_isilocked(ip, XFS_IOLOCK_EXCL)); - ASSERT((new_size == 0) || (new_size <= ip->i_size)); - ASSERT((flags == XFS_ITRUNC_DEFINITE) || - (flags == XFS_ITRUNC_MAYBE)); - - mp = ip->i_mount; - - /* wait for the completion of any pending DIOs */ - if (new_size == 0 || new_size < ip->i_size) - xfs_ioend_wait(ip); - - /* - * Call toss_pages or flushinval_pages to get rid of pages - * overlapping the region being removed. We have to use - * the less efficient flushinval_pages in the case that the - * caller may not be able to finish the truncate without - * dropping the inode's I/O lock. Make sure - * to catch any pages brought in by buffers overlapping - * the EOF by searching out beyond the isize by our - * block size. We round new_size up to a block boundary - * so that we don't toss things on the same block as - * new_size but before it. - * - * Before calling toss_page or flushinval_pages, make sure to - * call remapf() over the same region if the file is mapped. - * This frees up mapped file references to the pages in the - * given range and for the flushinval_pages case it ensures - * that we get the latest mapped changes flushed out. - */ - toss_start = XFS_B_TO_FSB(mp, (xfs_ufsize_t)new_size); - toss_start = XFS_FSB_TO_B(mp, toss_start); - if (toss_start < 0) { - /* - * The place to start tossing is beyond our maximum - * file size, so there is no way that the data extended - * out there. - */ - return 0; - } - last_byte = xfs_file_last_byte(ip); - trace_xfs_itruncate_start(ip, new_size, flags, toss_start, last_byte); - if (last_byte > toss_start) { - if (flags & XFS_ITRUNC_DEFINITE) { - xfs_tosspages(ip, toss_start, - -1, FI_REMAPF_LOCKED); - } else { - error = xfs_flushinval_pages(ip, toss_start, - -1, FI_REMAPF_LOCKED); - } - } - -#ifdef DEBUG - if (new_size == 0) { - ASSERT(VN_CACHED(VFS_I(ip)) == 0); - } -#endif - return error; -} - -/* - * Shrink the file to the given new_size. The new size must be smaller than - * the current size. This will free up the underlying blocks in the removed - * range after a call to xfs_itruncate_start() or xfs_atruncate_start(). + * Free up the underlying blocks past new_size. The new size must be + * smaller than the current size. * * The transaction passed to this routine must have made a permanent log * reservation of at least XFS_ITRUNCATE_LOG_RES. This routine may commit the @@ -1387,7 +1230,7 @@ xfs_itruncate_start( * will be "held" within the returned transaction. This routine does NOT * require any disk space to be reserved for it within the transaction. * - * The fork parameter must be either xfs_attr_fork or xfs_data_fork, and it + * The fork parameter must be either XFS_ATTR_FORK or XFS_DATA_FORK, and it * indicates the fork which is to be truncated. For the attribute fork we only * support truncation to size 0. * Index: xfs/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.c 2011-06-29 11:29:07.158281874 +0200 +++ xfs/fs/xfs/xfs_vnodeops.c 2011-06-29 11:29:11.888256249 +0200 @@ -197,13 +197,6 @@ xfs_free_eofblocks( */ tp = xfs_trans_alloc(mp, XFS_TRANS_INACTIVE); - /* - * Do the xfs_itruncate_start() call before - * reserving any log space because - * itruncate_start will call into the buffer - * cache and we can't - * do that within a transaction. - */ if (flags & XFS_FREE_EOF_TRYLOCK) { if (!xfs_ilock_nowait(ip, XFS_IOLOCK_EXCL)) { xfs_trans_cancel(tp, 0); @@ -212,13 +205,6 @@ xfs_free_eofblocks( } else { xfs_ilock(ip, XFS_IOLOCK_EXCL); } - error = xfs_itruncate_start(ip, XFS_ITRUNC_DEFINITE, - ip->i_size); - if (error) { - xfs_trans_cancel(tp, 0); - xfs_iunlock(ip, XFS_IOLOCK_EXCL); - return error; - } error = xfs_trans_reserve(tp, 0, XFS_ITRUNCATE_LOG_RES(mp), @@ -660,20 +646,9 @@ xfs_inactive( tp = xfs_trans_alloc(mp, XFS_TRANS_INACTIVE); if (truncate) { - /* - * Do the xfs_itruncate_start() call before - * reserving any log space because itruncate_start - * will call into the buffer cache and we can't - * do that within a transaction. - */ xfs_ilock(ip, XFS_IOLOCK_EXCL); - error = xfs_itruncate_start(ip, XFS_ITRUNC_DEFINITE, 0); - if (error) { - xfs_trans_cancel(tp, 0); - xfs_iunlock(ip, XFS_IOLOCK_EXCL); - return VN_INACTIVE_CACHE; - } + xfs_ioend_wait(ip); error = xfs_trans_reserve(tp, 0, XFS_ITRUNCATE_LOG_RES(mp), Index: xfs/fs/xfs/linux-2.6/xfs_trace.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_trace.h 2011-06-29 11:29:02.518307010 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_trace.h 2011-06-29 11:29:11.891589564 +0200 @@ -1029,40 +1029,6 @@ DEFINE_SIMPLE_IO_EVENT(xfs_delalloc_enos DEFINE_SIMPLE_IO_EVENT(xfs_unwritten_convert); DEFINE_SIMPLE_IO_EVENT(xfs_get_blocks_notfound); - -TRACE_EVENT(xfs_itruncate_start, - TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size, int flag, - xfs_off_t toss_start, xfs_off_t toss_finish), - TP_ARGS(ip, new_size, flag, toss_start, toss_finish), - TP_STRUCT__entry( - __field(dev_t, dev) - __field(xfs_ino_t, ino) - __field(xfs_fsize_t, size) - __field(xfs_fsize_t, new_size) - __field(xfs_off_t, toss_start) - __field(xfs_off_t, toss_finish) - __field(int, flag) - ), - TP_fast_assign( - __entry->dev = VFS_I(ip)->i_sb->s_dev; - __entry->ino = ip->i_ino; - __entry->size = ip->i_d.di_size; - __entry->new_size = new_size; - __entry->toss_start = toss_start; - __entry->toss_finish = toss_finish; - __entry->flag = flag; - ), - TP_printk("dev %d:%d ino 0x%llx %s size 0x%llx new_size 0x%llx " - "toss start 0x%llx toss finish 0x%llx", - MAJOR(__entry->dev), MINOR(__entry->dev), - __entry->ino, - __print_flags(__entry->flag, "|", XFS_ITRUNC_FLAGS), - __entry->size, - __entry->new_size, - __entry->toss_start, - __entry->toss_finish) -); - DECLARE_EVENT_CLASS(xfs_itrunc_class, TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size), TP_ARGS(ip, new_size), Index: xfs/fs/xfs/xfs_inode.h =================================================================== --- xfs.orig/fs/xfs/xfs_inode.h 2011-06-29 11:29:02.531640272 +0200 +++ xfs/fs/xfs/xfs_inode.h 2011-06-29 11:29:11.891589564 +0200 @@ -458,16 +458,6 @@ static inline void xfs_ifunlock(xfs_inod extern struct lock_class_key xfs_iolock_reclaimable; /* - * Flags for xfs_itruncate_start(). - */ -#define XFS_ITRUNC_DEFINITE 0x1 -#define XFS_ITRUNC_MAYBE 0x2 - -#define XFS_ITRUNC_FLAGS \ - { XFS_ITRUNC_DEFINITE, "DEFINITE" }, \ - { XFS_ITRUNC_MAYBE, "MAYBE" } - -/* * For multiple groups support: if S_ISGID bit is set in the parent * directory, group of new file is set to that of the parent, and * new subdirectory gets S_ISGID bit from parent. @@ -501,7 +491,6 @@ uint xfs_ip2xflags(struct xfs_inode *); uint xfs_dic2xflags(struct xfs_dinode *); int xfs_ifree(struct xfs_trans *, xfs_inode_t *, struct xfs_bmap_free *); -int xfs_itruncate_start(xfs_inode_t *, uint, xfs_fsize_t); int xfs_itruncate_finish(struct xfs_trans **, xfs_inode_t *, xfs_fsize_t, int, int); int xfs_iunlink(struct xfs_trans *, xfs_inode_t *); From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 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 p5TE3emF104754 for ; Wed, 29 Jun 2011 09:03:40 -0500 X-ASG-Debug-ID: 1309356218-3e40024b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2D3E3409DE for ; Wed, 29 Jun 2011 07:03:38 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id dFQQwmkRWIQKZ9s9 for ; Wed, 29 Jun 2011 07:03:38 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMg-0008F4-GB for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:38 +0000 Message-Id: <20110629140338.467151398@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:19 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 10/27] xfs: improve sync behaviour in the fact of aggressive dirtying Subject: [PATCH 10/27] xfs: improve sync behaviour in the fact of aggressive dirtying References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-simplify-sync X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356219 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 The following script from Wu Fengguang shows very bad behaviour in XFS when aggressively dirtying data during a sync on XFS, with sync times up to almost 10 times as long as ext4. A large part of the issue is that XFS writes data out itself two times in the ->sync_fs method, overriding the lifelock protection in the core writeback code, and another issue is the lock-less xfs_ioend_wait call, which doesn't prevent new ioend from beeing queue up while waiting for the count to reach zero. This patch removes the XFS-internal sync calls and relies on the VFS to do it's work just like all other filesystems do. Note that the i_iocount wait which is rather suboptimal is simply removed here. We already do it in ->write_inode, which keeps the current supoptimal behaviour. We'll eventually need to remove that as well, but that's material for a separate commit. ------------------------------ snip ------------------------------ #!/bin/sh umount /dev/sda7 mkfs.xfs -f /dev/sda7 # mkfs.ext4 /dev/sda7 # mkfs.btrfs /dev/sda7 mount /dev/sda7 /fs echo $((50<<20)) > /proc/sys/vm/dirty_bytes pid= for i in `seq 10` do dd if=/dev/zero of=/fs/zero-$i bs=1M count=1000 & pid="$pid $!" done sleep 1 tic=$(date +'%s') sync tac=$(date +'%s') echo echo sync time: $((tac-tic)) egrep '(Dirty|Writeback|NFS_Unstable)' /proc/meminfo pidof dd > /dev/null && { kill -9 $pid; echo sync NOT livelocked; } ------------------------------ snip ------------------------------ Reported-by: Wu Fengguang 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 2011-06-29 11:26:14.109219361 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2011-06-29 11:37:20.642275110 +0200 @@ -359,14 +359,12 @@ xfs_quiesce_data( { int error, error2 = 0; - /* push non-blocking */ - xfs_sync_data(mp, 0); xfs_qm_sync(mp, SYNC_TRYLOCK); - - /* push and block till complete */ - xfs_sync_data(mp, SYNC_WAIT); xfs_qm_sync(mp, SYNC_WAIT); + /* force out the newly dirtied log buffers */ + xfs_log_force(mp, XFS_LOG_SYNC); + /* write superblock and hoover up shutdown errors */ error = xfs_sync_fsdata(mp); From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TE3dj6104742 for ; Wed, 29 Jun 2011 09:03:39 -0500 X-ASG-Debug-ID: 1309356216-064601ff0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 285171D7DD29 for ; Wed, 29 Jun 2011 07:03:36 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id toGiizS4yGjzmiIb for ; Wed, 29 Jun 2011 07:03:36 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMe-00089q-Ct for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:36 +0000 Message-Id: <20110629140109.003209430@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:09 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 00/27] patch queue for Linux 3.1 Subject: [PATCH 00/27] patch queue for Linux 3.1 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356217 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0204 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 This is my current patch queue for Linux 3.1. It includes the previously all previously sent patches I'm planning for Linux 3.1 inclusion through the XFS tree and a few new ones. The most important new bits is a cleanup of the structures describing the dir2 on-disk format, which got a bit more urgent due to more recent gcc versions complaining about the hacks used in the current version. The sync lifelock fix is included only in a minimal version that removes the data syncs. I plan to sort out the iocount waiting via the i_alloc_sem removal patches that have been sent for inclusion in the VFS tree. I'll cc the XFS list on the updated version with XFS chances. From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TE3eKB104755 for ; Wed, 29 Jun 2011 09:03:40 -0500 X-ASG-Debug-ID: 1309356217-095e01e90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 975D91D7DD2B for ; Wed, 29 Jun 2011 07:03:37 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id z0JZoArVIc45DiG7 for ; Wed, 29 Jun 2011 07:03:37 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMe-0008BS-Vy for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:37 +0000 Message-Id: <20110629140336.950805096@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:12 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 03/27] xfs: use write_cache_pages for writeback clustering Subject: [PATCH 03/27] xfs: use write_cache_pages for writeback clustering References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-implement-writepages X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356217 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Instead of implementing our own writeback clustering use write_cache_pages to do it for us. This means the guts of the current writepage implementation become a new helper used both for implementing ->writepage and as a callback to write_cache_pages for ->writepages. A new struct xfs_writeback_ctx is used to track block mapping state and the ioend chain over multiple invocation of it. The advantage over the old code is that we avoid a double pagevec lookup, and a more efficient handling of extent boundaries inside a page for small blocksize filesystems, as well as having less XFS specific code. The downside is that we don't do writeback clustering when called from kswapd anyore, but that is a case that should be avoided anyway. Note that we still convert the whole delalloc range from ->writepage, so the on-disk allocation pattern is not affected. Signed-off-by: Christoph Hellwig Index: linux-2.6/fs/xfs/linux-2.6/xfs_aops.c =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_aops.c 2011-04-27 20:55:01.482820427 +0200 +++ linux-2.6/fs/xfs/linux-2.6/xfs_aops.c 2011-04-28 11:22:42.747447011 +0200 @@ -38,6 +38,12 @@ #include #include +struct xfs_writeback_ctx { + unsigned int imap_valid; + struct xfs_bmbt_irec imap; + struct xfs_ioend *iohead; + struct xfs_ioend *ioend; +}; /* * Prime number of hash buckets since address is used as the key. @@ -487,6 +493,7 @@ xfs_submit_ioend( struct buffer_head *bh; struct bio *bio; sector_t lastblock = 0; + struct blk_plug plug; /* Pass 1 - start writeback */ do { @@ -496,6 +503,7 @@ xfs_submit_ioend( } while ((ioend = next) != NULL); /* Pass 2 - submit I/O */ + blk_start_plug(&plug); ioend = head; do { next = ioend->io_list; @@ -522,6 +530,7 @@ xfs_submit_ioend( xfs_submit_ioend_bio(wbc, ioend, bio); xfs_finish_ioend(ioend); } while ((ioend = next) != NULL); + blk_finish_plug(&plug); } /* @@ -661,153 +670,6 @@ xfs_is_delayed_page( return 0; } -/* - * Allocate & map buffers for page given the extent map. Write it out. - * except for the original page of a writepage, this is called on - * delalloc/unwritten pages only, for the original page it is possible - * that the page has no mapping at all. - */ -STATIC int -xfs_convert_page( - struct inode *inode, - struct page *page, - loff_t tindex, - struct xfs_bmbt_irec *imap, - xfs_ioend_t **ioendp, - struct writeback_control *wbc) -{ - struct buffer_head *bh, *head; - xfs_off_t end_offset; - unsigned long p_offset; - unsigned int type; - int len, page_dirty; - int count = 0, done = 0, uptodate = 1; - xfs_off_t offset = page_offset(page); - - if (page->index != tindex) - goto fail; - if (!trylock_page(page)) - goto fail; - if (PageWriteback(page)) - goto fail_unlock_page; - if (page->mapping != inode->i_mapping) - goto fail_unlock_page; - if (!xfs_is_delayed_page(page, (*ioendp)->io_type)) - goto fail_unlock_page; - - /* - * page_dirty is initially a count of buffers on the page before - * EOF and is decremented as we move each into a cleanable state. - * - * Derivation: - * - * End offset is the highest offset that this page should represent. - * If we are on the last page, (end_offset & (PAGE_CACHE_SIZE - 1)) - * will evaluate non-zero and be less than PAGE_CACHE_SIZE and - * hence give us the correct page_dirty count. On any other page, - * it will be zero and in that case we need page_dirty to be the - * count of buffers on the page. - */ - end_offset = min_t(unsigned long long, - (xfs_off_t)(page->index + 1) << PAGE_CACHE_SHIFT, - i_size_read(inode)); - - len = 1 << inode->i_blkbits; - p_offset = min_t(unsigned long, end_offset & (PAGE_CACHE_SIZE - 1), - PAGE_CACHE_SIZE); - p_offset = p_offset ? roundup(p_offset, len) : PAGE_CACHE_SIZE; - page_dirty = p_offset / len; - - bh = head = page_buffers(page); - do { - if (offset >= end_offset) - break; - if (!buffer_uptodate(bh)) - uptodate = 0; - if (!(PageUptodate(page) || buffer_uptodate(bh))) { - done = 1; - continue; - } - - if (buffer_unwritten(bh) || buffer_delay(bh) || - buffer_mapped(bh)) { - if (buffer_unwritten(bh)) - type = IO_UNWRITTEN; - else if (buffer_delay(bh)) - type = IO_DELALLOC; - else - type = IO_OVERWRITE; - - if (!xfs_imap_valid(inode, imap, offset)) { - done = 1; - continue; - } - - lock_buffer(bh); - if (type != IO_OVERWRITE) - xfs_map_at_offset(inode, bh, imap, offset); - xfs_add_to_ioend(inode, bh, offset, type, - ioendp, done); - - page_dirty--; - count++; - } else { - done = 1; - } - } while (offset += len, (bh = bh->b_this_page) != head); - - if (uptodate && bh == head) - SetPageUptodate(page); - - if (count) { - if (--wbc->nr_to_write <= 0 && - wbc->sync_mode == WB_SYNC_NONE) - done = 1; - } - xfs_start_page_writeback(page, !page_dirty, count); - - return done; - fail_unlock_page: - unlock_page(page); - fail: - return 1; -} - -/* - * Convert & write out a cluster of pages in the same extent as defined - * by mp and following the start page. - */ -STATIC void -xfs_cluster_write( - struct inode *inode, - pgoff_t tindex, - struct xfs_bmbt_irec *imap, - xfs_ioend_t **ioendp, - struct writeback_control *wbc, - pgoff_t tlast) -{ - struct pagevec pvec; - int done = 0, i; - - pagevec_init(&pvec, 0); - while (!done && tindex <= tlast) { - unsigned len = min_t(pgoff_t, PAGEVEC_SIZE, tlast - tindex + 1); - - if (!pagevec_lookup(&pvec, inode->i_mapping, tindex, len)) - break; - - for (i = 0; i < pagevec_count(&pvec); i++) { - done = xfs_convert_page(inode, pvec.pages[i], tindex++, - imap, ioendp, wbc); - if (done) - break; - } - - pagevec_release(&pvec); - cond_resched(); - } -} - STATIC void xfs_vm_invalidatepage( struct page *page, @@ -896,20 +758,20 @@ out_invalidate: * redirty the page. */ STATIC int -xfs_vm_writepage( +__xfs_vm_writepage( struct page *page, - struct writeback_control *wbc) + struct writeback_control *wbc, + void *data) { + struct xfs_writeback_ctx *ctx = data; struct inode *inode = page->mapping->host; struct buffer_head *bh, *head; - struct xfs_bmbt_irec imap; - xfs_ioend_t *ioend = NULL, *iohead = NULL; loff_t offset; unsigned int type; __uint64_t end_offset; pgoff_t end_index, last_index; ssize_t len; - int err, imap_valid = 0, uptodate = 1; + int err, uptodate = 1; int count = 0; trace_xfs_writepage(inode, page, 0); @@ -917,20 +779,6 @@ xfs_vm_writepage( ASSERT(page_has_buffers(page)); /* - * Refuse to write the page out if we are called from reclaim context. - * - * This avoids stack overflows when called from deeply used stacks in - * random callers for direct reclaim or memcg reclaim. We explicitly - * allow reclaim from kswapd as the stack usage there is relatively low. - * - * This should really be done by the core VM, but until that happens - * filesystems like XFS, btrfs and ext4 have to take care of this - * by themselves. - */ - if ((current->flags & (PF_MEMALLOC|PF_KSWAPD)) == PF_MEMALLOC) - goto redirty; - - /* * Given that we do not allow direct reclaim to call us we should * never be called while in a filesystem transaction. */ @@ -973,36 +821,38 @@ xfs_vm_writepage( * buffers covering holes here. */ if (!buffer_mapped(bh) && buffer_uptodate(bh)) { - imap_valid = 0; + ctx->imap_valid = 0; continue; } if (buffer_unwritten(bh)) { if (type != IO_UNWRITTEN) { type = IO_UNWRITTEN; - imap_valid = 0; + ctx->imap_valid = 0; } } else if (buffer_delay(bh)) { if (type != IO_DELALLOC) { type = IO_DELALLOC; - imap_valid = 0; + ctx->imap_valid = 0; } } else if (buffer_uptodate(bh)) { if (type != IO_OVERWRITE) { type = IO_OVERWRITE; - imap_valid = 0; + ctx->imap_valid = 0; } } else { if (PageUptodate(page)) { ASSERT(buffer_mapped(bh)); - imap_valid = 0; + ctx->imap_valid = 0; } continue; } - if (imap_valid) - imap_valid = xfs_imap_valid(inode, &imap, offset); - if (!imap_valid) { + if (ctx->imap_valid) { + ctx->imap_valid = + xfs_imap_valid(inode, &ctx->imap, offset); + } + if (!ctx->imap_valid) { /* * If we didn't have a valid mapping then we need to * put the new mapping into a separate ioend structure. @@ -1012,22 +862,25 @@ xfs_vm_writepage( * time. */ new_ioend = 1; - err = xfs_map_blocks(inode, offset, &imap, type); + err = xfs_map_blocks(inode, offset, &ctx->imap, type); if (err) goto error; - imap_valid = xfs_imap_valid(inode, &imap, offset); + ctx->imap_valid = + xfs_imap_valid(inode, &ctx->imap, offset); } - if (imap_valid) { + if (ctx->imap_valid) { lock_buffer(bh); - if (type != IO_OVERWRITE) - xfs_map_at_offset(inode, bh, &imap, offset); - xfs_add_to_ioend(inode, bh, offset, type, &ioend, + if (type != IO_OVERWRITE) { + xfs_map_at_offset(inode, bh, &ctx->imap, + offset); + } + xfs_add_to_ioend(inode, bh, offset, type, &ctx->ioend, new_ioend); count++; } - if (!iohead) - iohead = ioend; + if (!ctx->iohead) + ctx->iohead = ctx->ioend; } while (offset += len, ((bh = bh->b_this_page) != head)); @@ -1035,38 +888,9 @@ xfs_vm_writepage( SetPageUptodate(page); xfs_start_page_writeback(page, 1, count); - - if (ioend && imap_valid) { - xfs_off_t end_index; - - end_index = imap.br_startoff + imap.br_blockcount; - - /* to bytes */ - end_index <<= inode->i_blkbits; - - /* to pages */ - end_index = (end_index - 1) >> PAGE_CACHE_SHIFT; - - /* check against file size */ - if (end_index > last_index) - end_index = last_index; - - xfs_cluster_write(inode, page->index + 1, &imap, &ioend, - wbc, end_index); - } - - if (iohead) - xfs_submit_ioend(wbc, iohead); - return 0; error: - if (iohead) - xfs_cancel_ioend(iohead); - - if (err == -EAGAIN) - goto redirty; - xfs_aops_discard_page(page); ClearPageUptodate(page); unlock_page(page); @@ -1079,12 +903,62 @@ redirty: } STATIC int +xfs_vm_writepage( + struct page *page, + struct writeback_control *wbc) +{ + struct xfs_writeback_ctx ctx = { }; + int ret; + + /* + * Refuse to write the page out if we are called from reclaim context. + * + * This avoids stack overflows when called from deeply used stacks in + * random callers for direct reclaim or memcg reclaim. We explicitly + * allow reclaim from kswapd as the stack usage there is relatively low. + * + * This should really be done by the core VM, but until that happens + * filesystems like XFS, btrfs and ext4 have to take care of this + * by themselves. + */ + if ((current->flags & (PF_MEMALLOC|PF_KSWAPD)) == PF_MEMALLOC) { + redirty_page_for_writepage(wbc, page); + unlock_page(page); + return 0; + } + + ret = __xfs_vm_writepage(page, wbc, &ctx); + + if (ctx.iohead) { + if (ret) + xfs_cancel_ioend(ctx.iohead); + else + xfs_submit_ioend(wbc, ctx.iohead); + } + + return ret; +} + +STATIC int xfs_vm_writepages( struct address_space *mapping, struct writeback_control *wbc) { + struct xfs_writeback_ctx ctx = { }; + int ret; + xfs_iflags_clear(XFS_I(mapping->host), XFS_ITRUNCATED); - return generic_writepages(mapping, wbc); + + ret = write_cache_pages(mapping, wbc, __xfs_vm_writepage, &ctx); + + if (ctx.iohead) { + if (ret) + xfs_cancel_ioend(ctx.iohead); + else + xfs_submit_ioend(wbc, ctx.iohead); + } + + return ret; } /* From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00,J_CHICKENPOX_35, J_CHICKENPOX_38,J_CHICKENPOX_39,J_CHICKENPOX_65,J_CHICKENPOX_73 autolearn=no version=3.4.0-r929098 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 p5TE3eNA104771 for ; Wed, 29 Jun 2011 09:03:41 -0500 X-ASG-Debug-ID: 1309356219-750600470000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A5111409E3 for ; Wed, 29 Jun 2011 07:03:39 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id mBvRrYVaZiquh5aN for ; Wed, 29 Jun 2011 07:03:39 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMh-0008Gc-3u for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:39 +0000 Message-Id: <20110629140339.086201354@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:22 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 13/27] xfs: factor out xfs_dir2_leaf_find_entry Subject: [PATCH 13/27] xfs: factor out xfs_dir2_leaf_find_entry References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-factor-dir2-leaf-code X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356219 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Add a new xfs_dir2_leaf_find_entry helper to factor out some duplicate code from xfs_dir2_leaf_addname xfs_dir2_leafn_add. Found by Eric Sandeen using an automated code duplication checked. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_dir2_leaf.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_leaf.c 2011-06-22 21:56:26.102462981 +0200 +++ xfs/fs/xfs/xfs_dir2_leaf.c 2011-06-23 12:41:51.716439911 +0200 @@ -152,6 +152,118 @@ xfs_dir2_block_to_leaf( return 0; } +xfs_dir2_leaf_entry_t * +xfs_dir2_leaf_find_entry( + xfs_dir2_leaf_t *leaf, /* leaf structure */ + int index, /* leaf table position */ + int compact, /* need to compact leaves */ + int lowstale, /* index of prev stale leaf */ + int highstale, /* index of next stale leaf */ + int *lfloglow, /* low leaf logging index */ + int *lfloghigh) /* high leaf logging index */ +{ + xfs_dir2_leaf_entry_t *lep; /* leaf entry table pointer */ + + if (!leaf->hdr.stale) { + /* + * Now we need to make room to insert the leaf entry. + * + * If there are no stale entries, just insert a hole at index. + */ + lep = &leaf->ents[index]; + if (index < be16_to_cpu(leaf->hdr.count)) + memmove(lep + 1, lep, + (be16_to_cpu(leaf->hdr.count) - index) * + sizeof(*lep)); + + /* + * Record low and high logging indices for the leaf. + */ + *lfloglow = index; + *lfloghigh = be16_to_cpu(leaf->hdr.count); + be16_add_cpu(&leaf->hdr.count, 1); + } else { + /* + * There are stale entries. + * + * We will use one of them for the new entry. It's probably + * not at the right location, so we'll have to shift some up + * or down first. + * + * If we didn't compact before, we need to find the nearest + * stale entries before and after our insertion point. + */ + if (compact == 0) { + /* + * Find the first stale entry before the insertion + * point, if any. + */ + for (lowstale = index - 1; + lowstale >= 0 && + be32_to_cpu(leaf->ents[lowstale].address) != + XFS_DIR2_NULL_DATAPTR; + lowstale--) + continue; + /* + * Find the next stale entry at or after the insertion + * point, if any. Stop if we go so far that the + * lowstale entry would be better. + */ + for (highstale = index; + highstale < be16_to_cpu(leaf->hdr.count) && + be32_to_cpu(leaf->ents[highstale].address) != + XFS_DIR2_NULL_DATAPTR && + (lowstale < 0 || + index - lowstale - 1 >= highstale - index); + highstale++) + continue; + } + /* + * If the low one is better, use it. + */ + if (lowstale >= 0 && + (highstale == be16_to_cpu(leaf->hdr.count) || + index - lowstale - 1 < highstale - index)) { + ASSERT(index - lowstale - 1 >= 0); + ASSERT(be32_to_cpu(leaf->ents[lowstale].address) == + XFS_DIR2_NULL_DATAPTR); + /* + * Copy entries up to cover the stale entry + * and make room for the new entry. + */ + if (index - lowstale - 1 > 0) + memmove(&leaf->ents[lowstale], + &leaf->ents[lowstale + 1], + (index - lowstale - 1) * sizeof(*lep)); + lep = &leaf->ents[index - 1]; + *lfloglow = MIN(lowstale, *lfloglow); + *lfloghigh = MAX(index - 1, *lfloghigh); + + /* + * The high one is better, so use that one. + */ + } else { + ASSERT(highstale - index >= 0); + ASSERT(be32_to_cpu(leaf->ents[highstale].address) == + XFS_DIR2_NULL_DATAPTR); + /* + * Copy entries down to cover the stale entry + * and make room for the new entry. + */ + if (highstale - index > 0) + memmove(&leaf->ents[index + 1], + &leaf->ents[index], + (highstale - index) * sizeof(*lep)); + lep = &leaf->ents[index]; + *lfloglow = MIN(index, *lfloglow); + *lfloghigh = MAX(highstale, *lfloghigh); + } + be16_add_cpu(&leaf->hdr.stale, -1); + } + + return lep; +} + /* * Add an entry to a leaf form directory. */ @@ -430,102 +542,11 @@ xfs_dir2_leaf_addname( if (!grown) xfs_dir2_leaf_log_bests(tp, lbp, use_block, use_block); } - /* - * Now we need to make room to insert the leaf entry. - * If there are no stale entries, we just insert a hole at index. - */ - if (!leaf->hdr.stale) { - /* - * lep is still good as the index leaf entry. - */ - if (index < be16_to_cpu(leaf->hdr.count)) - memmove(lep + 1, lep, - (be16_to_cpu(leaf->hdr.count) - index) * sizeof(*lep)); - /* - * Record low and high logging indices for the leaf. - */ - lfloglow = index; - lfloghigh = be16_to_cpu(leaf->hdr.count); - be16_add_cpu(&leaf->hdr.count, 1); - } - /* - * There are stale entries. - * We will use one of them for the new entry. - * It's probably not at the right location, so we'll have to - * shift some up or down first. - */ - else { - /* - * If we didn't compact before, we need to find the nearest - * stale entries before and after our insertion point. - */ - if (compact == 0) { - /* - * Find the first stale entry before the insertion - * point, if any. - */ - for (lowstale = index - 1; - lowstale >= 0 && - be32_to_cpu(leaf->ents[lowstale].address) != - XFS_DIR2_NULL_DATAPTR; - lowstale--) - continue; - /* - * Find the next stale entry at or after the insertion - * point, if any. Stop if we go so far that the - * lowstale entry would be better. - */ - for (highstale = index; - highstale < be16_to_cpu(leaf->hdr.count) && - be32_to_cpu(leaf->ents[highstale].address) != - XFS_DIR2_NULL_DATAPTR && - (lowstale < 0 || - index - lowstale - 1 >= highstale - index); - highstale++) - continue; - } - /* - * If the low one is better, use it. - */ - if (lowstale >= 0 && - (highstale == be16_to_cpu(leaf->hdr.count) || - index - lowstale - 1 < highstale - index)) { - ASSERT(index - lowstale - 1 >= 0); - ASSERT(be32_to_cpu(leaf->ents[lowstale].address) == - XFS_DIR2_NULL_DATAPTR); - /* - * Copy entries up to cover the stale entry - * and make room for the new entry. - */ - if (index - lowstale - 1 > 0) - memmove(&leaf->ents[lowstale], - &leaf->ents[lowstale + 1], - (index - lowstale - 1) * sizeof(*lep)); - lep = &leaf->ents[index - 1]; - lfloglow = MIN(lowstale, lfloglow); - lfloghigh = MAX(index - 1, lfloghigh); - } - /* - * The high one is better, so use that one. - */ - else { - ASSERT(highstale - index >= 0); - ASSERT(be32_to_cpu(leaf->ents[highstale].address) == - XFS_DIR2_NULL_DATAPTR); - /* - * Copy entries down to cover the stale entry - * and make room for the new entry. - */ - if (highstale - index > 0) - memmove(&leaf->ents[index + 1], - &leaf->ents[index], - (highstale - index) * sizeof(*lep)); - lep = &leaf->ents[index]; - lfloglow = MIN(index, lfloglow); - lfloghigh = MAX(highstale, lfloghigh); - } - be16_add_cpu(&leaf->hdr.stale, -1); - } + + + lep = xfs_dir2_leaf_find_entry(leaf, index, compact, lowstale, + highstale, &lfloglow, &lfloghigh); + /* * Fill in the new leaf entry. */ Index: xfs/fs/xfs/xfs_dir2_leaf.h =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_leaf.h 2011-06-22 21:56:26.119129649 +0200 +++ xfs/fs/xfs/xfs_dir2_leaf.h 2011-06-23 12:40:42.889776728 +0200 @@ -248,6 +248,9 @@ extern int xfs_dir2_leaf_search_hash(str struct xfs_dabuf *lbp); extern int xfs_dir2_leaf_trim_data(struct xfs_da_args *args, struct xfs_dabuf *lbp, xfs_dir2_db_t db); +extern xfs_dir2_leaf_entry_t *xfs_dir2_leaf_find_entry(xfs_dir2_leaf_t *, int, + int, int, int, + int *, int *); extern int xfs_dir2_node_to_leaf(struct xfs_da_state *state); #endif /* __XFS_DIR2_LEAF_H__ */ Index: xfs/fs/xfs/xfs_dir2_node.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_node.c 2011-06-22 21:56:26.089129649 +0200 +++ xfs/fs/xfs/xfs_dir2_node.c 2011-06-23 12:40:42.919776727 +0200 @@ -244,89 +244,14 @@ xfs_dir2_leafn_add( lfloglow = be16_to_cpu(leaf->hdr.count); lfloghigh = -1; } - /* - * No stale entries, just insert a space for the new entry. - */ - if (!leaf->hdr.stale) { - lep = &leaf->ents[index]; - if (index < be16_to_cpu(leaf->hdr.count)) - memmove(lep + 1, lep, - (be16_to_cpu(leaf->hdr.count) - index) * sizeof(*lep)); - lfloglow = index; - lfloghigh = be16_to_cpu(leaf->hdr.count); - be16_add_cpu(&leaf->hdr.count, 1); - } - /* - * There are stale entries. We'll use one for the new entry. - */ - else { - /* - * If we didn't do a compact then we need to figure out - * which stale entry will be used. - */ - if (compact == 0) { - /* - * Find first stale entry before our insertion point. - */ - for (lowstale = index - 1; - lowstale >= 0 && - be32_to_cpu(leaf->ents[lowstale].address) != - XFS_DIR2_NULL_DATAPTR; - lowstale--) - continue; - /* - * Find next stale entry after insertion point. - * Stop looking if the answer would be worse than - * lowstale already found. - */ - for (highstale = index; - highstale < be16_to_cpu(leaf->hdr.count) && - be32_to_cpu(leaf->ents[highstale].address) != - XFS_DIR2_NULL_DATAPTR && - (lowstale < 0 || - index - lowstale - 1 >= highstale - index); - highstale++) - continue; - } - /* - * Using the low stale entry. - * Shift entries up toward the stale slot. - */ - if (lowstale >= 0 && - (highstale == be16_to_cpu(leaf->hdr.count) || - index - lowstale - 1 < highstale - index)) { - ASSERT(be32_to_cpu(leaf->ents[lowstale].address) == - XFS_DIR2_NULL_DATAPTR); - ASSERT(index - lowstale - 1 >= 0); - if (index - lowstale - 1 > 0) - memmove(&leaf->ents[lowstale], - &leaf->ents[lowstale + 1], - (index - lowstale - 1) * sizeof(*lep)); - lep = &leaf->ents[index - 1]; - lfloglow = MIN(lowstale, lfloglow); - lfloghigh = MAX(index - 1, lfloghigh); - } - /* - * Using the high stale entry. - * Shift entries down toward the stale slot. - */ - else { - ASSERT(be32_to_cpu(leaf->ents[highstale].address) == - XFS_DIR2_NULL_DATAPTR); - ASSERT(highstale - index >= 0); - if (highstale - index > 0) - memmove(&leaf->ents[index + 1], - &leaf->ents[index], - (highstale - index) * sizeof(*lep)); - lep = &leaf->ents[index]; - lfloglow = MIN(index, lfloglow); - lfloghigh = MAX(highstale, lfloghigh); - } - be16_add_cpu(&leaf->hdr.stale, -1); - } + + /* * Insert the new entry, log everything. */ + lep = xfs_dir2_leaf_find_entry(leaf, index, compact, lowstale, + highstale, &lfloglow, &lfloghigh); + lep->hashval = cpu_to_be32(args->hashval); lep->address = cpu_to_be32(xfs_dir2_db_off_to_dataptr(mp, args->blkno, args->index)); From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable version=3.4.0-r929098 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 p5TE3dBl104750 for ; Wed, 29 Jun 2011 09:03:39 -0500 X-ASG-Debug-ID: 1309356216-18a801550000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1FA621D7DD26 for ; Wed, 29 Jun 2011 07:03:36 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id rASmvx8Tx4oWotib for ; Wed, 29 Jun 2011 07:03:36 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMe-0008AQ-IL for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:36 +0000 Message-Id: <20110629140336.532726362@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:10 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 01/27] xfs: PF_FSTRANS should never be set in ->writepage Subject: [PATCH 01/27] xfs: PF_FSTRANS should never be set in ->writepage References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-writepage-simplify-fstrans-check X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356217 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Now that we reject direct reclaim in addition to always using GFP_NOFS allocation there's no chance we'll ever end up in ->writepage with PF_FSTRANS set. Add a WARN_ON if we hit this case, and stop checking if we'd actually need to start a transaction. Signed-off-by: Christoph Hellwig Reviewed-by: Alex Elder Index: linux-2.6/fs/xfs/linux-2.6/xfs_aops.c =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_aops.c 2011-04-27 20:51:57.503817127 +0200 +++ linux-2.6/fs/xfs/linux-2.6/xfs_aops.c 2011-04-27 20:53:02.186800044 +0200 @@ -906,7 +906,6 @@ xfs_vm_writepage( struct writeback_control *wbc) { struct inode *inode = page->mapping->host; - int delalloc, unwritten; struct buffer_head *bh, *head; struct xfs_bmbt_irec imap; xfs_ioend_t *ioend = NULL, *iohead = NULL; @@ -938,15 +937,10 @@ xfs_vm_writepage( goto redirty; /* - * We need a transaction if there are delalloc or unwritten buffers - * on the page. - * - * If we need a transaction and the process flags say we are already - * in a transaction, or no IO is allowed then mark the page dirty - * again and leave the page as is. + * Given that we do not allow direct reclaim to call us we should + * never be called while in a filesystem transaction. */ - xfs_count_page_state(page, &delalloc, &unwritten); - if ((current->flags & PF_FSTRANS) && (delalloc || unwritten)) + if (WARN_ON(current->flags & PF_FSTRANS)) goto redirty; /* Is this page beyond the end of the file? */ From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TE3e8H104766 for ; Wed, 29 Jun 2011 09:03:40 -0500 X-ASG-Debug-ID: 1309356219-2a05035e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6CACE409E0 for ; Wed, 29 Jun 2011 07:03:39 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id N2b2pwJDgMygfMMD for ; Wed, 29 Jun 2011 07:03:39 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMg-0008Fa-ON for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:38 +0000 Message-Id: <20110629140338.719775353@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:20 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 11/27] xfs: fix filesystsem freeze race in xfs_trans_alloc Subject: [PATCH 11/27] xfs: fix filesystsem freeze race in xfs_trans_alloc References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-fix-freeze-race X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356219 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 As pointed out by Jan xfs_trans_alloc can race with a concurrent filesystem free when it sleeps during the memory allocation. Fix this by moving the wait_for_freeze call after the memory allocation. This means moving the freeze into the low-level _xfs_trans_alloc helper, which thus grows a new argument. Also fix up some comments in that area while at it. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_fsops.c =================================================================== --- xfs.orig/fs/xfs/xfs_fsops.c 2011-06-18 17:50:43.477373715 +0200 +++ xfs/fs/xfs/xfs_fsops.c 2011-06-20 09:17:00.933518761 +0200 @@ -626,7 +626,7 @@ xfs_fs_log_dummy( xfs_trans_t *tp; int error; - tp = _xfs_trans_alloc(mp, XFS_TRANS_DUMMY1, KM_SLEEP); + tp = _xfs_trans_alloc(mp, XFS_TRANS_DUMMY1, KM_SLEEP, false); error = xfs_trans_reserve(tp, 0, mp->m_sb.sb_sectsize + 128, 0, 0, XFS_DEFAULT_LOG_COUNT); if (error) { Index: xfs/fs/xfs/xfs_iomap.c =================================================================== --- xfs.orig/fs/xfs/xfs_iomap.c 2011-06-18 17:50:43.487373714 +0200 +++ xfs/fs/xfs/xfs_iomap.c 2011-06-20 09:17:00.933518761 +0200 @@ -688,8 +688,7 @@ xfs_iomap_write_unwritten( * the same inode that we complete here and might deadlock * on the iolock. */ - xfs_wait_for_freeze(mp, SB_FREEZE_TRANS); - tp = _xfs_trans_alloc(mp, XFS_TRANS_STRAT_WRITE, KM_NOFS); + tp = _xfs_trans_alloc(mp, XFS_TRANS_STRAT_WRITE, KM_NOFS, true); tp->t_flags |= XFS_TRANS_RESERVE; error = xfs_trans_reserve(tp, resblks, XFS_WRITE_LOG_RES(mp), 0, Index: xfs/fs/xfs/xfs_trans.h =================================================================== --- xfs.orig/fs/xfs/xfs_trans.h 2011-06-18 17:50:43.497373713 +0200 +++ xfs/fs/xfs/xfs_trans.h 2011-06-21 10:57:04.908840421 +0200 @@ -447,8 +447,14 @@ typedef struct xfs_trans { /* * XFS transaction mechanism exported interfaces. */ -xfs_trans_t *xfs_trans_alloc(struct xfs_mount *, uint); -xfs_trans_t *_xfs_trans_alloc(struct xfs_mount *, uint, uint); +xfs_trans_t *_xfs_trans_alloc(struct xfs_mount *, uint, uint, bool); + +static inline struct xfs_trans * +xfs_trans_alloc(struct xfs_mount *mp, uint type) +{ + return _xfs_trans_alloc(mp, type, KM_SLEEP, true); +} + xfs_trans_t *xfs_trans_dup(xfs_trans_t *); int xfs_trans_reserve(xfs_trans_t *, uint, uint, uint, uint, uint); Index: xfs/fs/xfs/xfs_mount.c =================================================================== --- xfs.orig/fs/xfs/xfs_mount.c 2011-06-18 17:50:43.510707047 +0200 +++ xfs/fs/xfs/xfs_mount.c 2011-06-20 09:17:00.936852094 +0200 @@ -1566,15 +1566,9 @@ xfs_fs_writable(xfs_mount_t *mp) } /* - * xfs_log_sbcount - * * Called either periodically to keep the on disk superblock values * roughly up to date or from unmount to make sure the values are * correct on a clean unmount. - * - * Note this code can be called during the process of freezing, so - * we may need to use the transaction allocator which does not not - * block when the transaction subsystem is in its frozen state. */ int xfs_log_sbcount( @@ -1596,7 +1590,13 @@ xfs_log_sbcount( if (!xfs_sb_version_haslazysbcount(&mp->m_sb)) return 0; - tp = _xfs_trans_alloc(mp, XFS_TRANS_SB_COUNT, KM_SLEEP); + /* + * We can be called during the process of freezing, so make sure + * we go ahead even if the frozen for new transactions. We will + * always use a sync transaction in the freeze path to make sure + * the transaction has completed by the time we return. + */ + tp = _xfs_trans_alloc(mp, XFS_TRANS_SB_COUNT, KM_SLEEP, false); error = xfs_trans_reserve(tp, 0, mp->m_sb.sb_sectsize + 128, 0, 0, XFS_DEFAULT_LOG_COUNT); if (error) { Index: xfs/fs/xfs/xfs_trans.c =================================================================== --- xfs.orig/fs/xfs/xfs_trans.c 2011-06-18 17:50:43.524040379 +0200 +++ xfs/fs/xfs/xfs_trans.c 2011-06-21 10:56:25.305509042 +0200 @@ -566,31 +566,24 @@ xfs_trans_init( /* * This routine is called to allocate a transaction structure. + * * The type parameter indicates the type of the transaction. These * are enumerated in xfs_trans.h. - * - * Dynamically allocate the transaction structure from the transaction - * zone, initialize it, and return it to the caller. */ -xfs_trans_t * -xfs_trans_alloc( - xfs_mount_t *mp, - uint type) -{ - xfs_wait_for_freeze(mp, SB_FREEZE_TRANS); - return _xfs_trans_alloc(mp, type, KM_SLEEP); -} - -xfs_trans_t * +struct xfs_trans * _xfs_trans_alloc( - xfs_mount_t *mp, - uint type, - uint memflags) + struct xfs_mount *mp, + uint type, + uint memflags, + bool wait_for_freeze) { - xfs_trans_t *tp; + struct xfs_trans *tp; atomic_inc(&mp->m_active_trans); + if (wait_for_freeze) + xfs_wait_for_freeze(mp, SB_FREEZE_TRANS); + tp = kmem_zone_zalloc(xfs_trans_zone, memflags); tp->t_magic = XFS_TRANS_MAGIC; tp->t_type = type; From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TE3fav104849 for ; Wed, 29 Jun 2011 09:03:42 -0500 X-ASG-Debug-ID: 1309356220-203301310000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2B56B1D7DD36 for ; Wed, 29 Jun 2011 07:03:40 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id mH8ml6aDwCT1bzDX for ; Wed, 29 Jun 2011 07:03:40 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMi-0008Kk-Kn for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:40 +0000 Message-Id: <20110629140340.611673214@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:30 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 21/27] xfs: cleanup the defintion of struct xfs_dir2_data_entry Subject: [PATCH 21/27] xfs: cleanup the defintion of struct xfs_dir2_data_entry References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-cleanup-xfs_dir2_data_entry X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356221 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0075 1.0000 -1.9722 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.37 X-Barracuda-Spam-Status: No, SCORE=-1.37 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Remove the tag member which is at a variable offset after the actual name, and make name a real variable sized C99 array instead of the incorrect one-sized array which confuses (not only) gcc. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_dir2_data.h =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_data.h 2011-06-29 13:42:35.521563513 +0200 +++ xfs/fs/xfs/xfs_dir2_data.h 2011-06-29 13:43:03.284746440 +0200 @@ -98,14 +98,14 @@ typedef struct xfs_dir2_data_hdr { /* * Active entry in a data block. Aligned to 8 bytes. - * Tag appears as the last 2 bytes. + * + * After the variable length name field there is a 2 byte tag field, which + * can be accessed using xfs_dir2_data_entry_tag_p. */ typedef struct xfs_dir2_data_entry { __be64 inumber; /* inode number */ __u8 namelen; /* name length */ - __u8 name[1]; /* name bytes, no null */ - /* variable offset */ - __be16 tag; /* starting offset of us */ + __u8 name[]; /* name bytes, no null */ } xfs_dir2_data_entry_t; /* From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_63 autolearn=no version=3.4.0-r929098 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 p5TE3exg104788 for ; Wed, 29 Jun 2011 09:03:41 -0500 X-ASG-Debug-ID: 1309356219-433b01700000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CF0E8E4B581 for ; Wed, 29 Jun 2011 07:03:39 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id GpGb54krzmLpLWQM for ; Wed, 29 Jun 2011 07:03:39 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMg-0008G6-UT for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:39 +0000 Message-Id: <20110629140338.898243621@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:21 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 12/27] xfs: remove i_transp Subject: [PATCH 12/27] xfs: remove i_transp References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-kill-i_transp X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356219 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67470 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Remove the transaction pointer in the inode. It's only used to avoid passing down an argument in the bmap code, and for a few asserts in the transaction code right now. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/quota/xfs_trans_dquot.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_trans_dquot.c 2011-06-29 11:26:14.000000000 +0200 +++ xfs/fs/xfs/quota/xfs_trans_dquot.c 2011-06-29 11:38:58.095080494 +0200 @@ -59,7 +59,7 @@ xfs_trans_dqjoin( xfs_trans_add_item(tp, &dqp->q_logitem.qli_item); /* - * Initialize i_transp so we can later determine if this dquot is + * Initialize d_transp so we can later determine if this dquot is * associated with this transaction. */ dqp->q_transp = tp; Index: xfs/fs/xfs/xfs_bmap.c =================================================================== --- xfs.orig/fs/xfs/xfs_bmap.c 2011-06-29 11:26:14.000000000 +0200 +++ xfs/fs/xfs/xfs_bmap.c 2011-06-29 11:38:58.098413810 +0200 @@ -94,6 +94,7 @@ xfs_bmap_add_attrfork_local( */ STATIC int /* error */ xfs_bmap_add_extent_delay_real( + struct xfs_trans *tp, /* transaction pointer */ xfs_inode_t *ip, /* incore inode pointer */ xfs_extnum_t *idx, /* extent number to update/insert */ xfs_btree_cur_t **curp, /* if *curp is null, not a btree */ @@ -439,6 +440,7 @@ xfs_bmap_add_attrfork_local( */ STATIC int /* error */ xfs_bmap_add_extent( + struct xfs_trans *tp, /* transaction pointer */ xfs_inode_t *ip, /* incore inode pointer */ xfs_extnum_t *idx, /* extent number to update/insert */ xfs_btree_cur_t **curp, /* if *curp is null, not a btree */ @@ -524,7 +526,7 @@ xfs_bmap_add_extent( if (cur) ASSERT(cur->bc_private.b.flags & XFS_BTCUR_BPRV_WASDEL); - error = xfs_bmap_add_extent_delay_real(ip, + error = xfs_bmap_add_extent_delay_real(tp, ip, idx, &cur, new, &da_new, first, flist, &logflags); } else { @@ -561,7 +563,7 @@ xfs_bmap_add_extent( int tmp_logflags; /* partial log flag return val */ ASSERT(cur == NULL); - error = xfs_bmap_extents_to_btree(ip->i_transp, ip, first, + error = xfs_bmap_extents_to_btree(tp, ip, first, flist, &cur, da_old > 0, &tmp_logflags, whichfork); logflags |= tmp_logflags; if (error) @@ -604,6 +606,7 @@ done: */ STATIC int /* error */ xfs_bmap_add_extent_delay_real( + struct xfs_trans *tp, /* transaction pointer */ xfs_inode_t *ip, /* incore inode pointer */ xfs_extnum_t *idx, /* extent number to update/insert */ xfs_btree_cur_t **curp, /* if *curp is null, not a btree */ @@ -901,7 +904,7 @@ xfs_bmap_add_extent_delay_real( } if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS && ip->i_d.di_nextents > ip->i_df.if_ext_max) { - error = xfs_bmap_extents_to_btree(ip->i_transp, ip, + error = xfs_bmap_extents_to_btree(tp, ip, first, flist, &cur, 1, &tmp_rval, XFS_DATA_FORK); rval |= tmp_rval; @@ -984,7 +987,7 @@ xfs_bmap_add_extent_delay_real( } if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS && ip->i_d.di_nextents > ip->i_df.if_ext_max) { - error = xfs_bmap_extents_to_btree(ip->i_transp, ip, + error = xfs_bmap_extents_to_btree(tp, ip, first, flist, &cur, 1, &tmp_rval, XFS_DATA_FORK); rval |= tmp_rval; @@ -1052,7 +1055,7 @@ xfs_bmap_add_extent_delay_real( } if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS && ip->i_d.di_nextents > ip->i_df.if_ext_max) { - error = xfs_bmap_extents_to_btree(ip->i_transp, ip, + error = xfs_bmap_extents_to_btree(tp, ip, first, flist, &cur, 1, &tmp_rval, XFS_DATA_FORK); rval |= tmp_rval; @@ -2871,8 +2874,8 @@ xfs_bmap_del_extent( len = del->br_blockcount; do_div(bno, mp->m_sb.sb_rextsize); do_div(len, mp->m_sb.sb_rextsize); - if ((error = xfs_rtfree_extent(ip->i_transp, bno, - (xfs_extlen_t)len))) + error = xfs_rtfree_extent(tp, bno, (xfs_extlen_t)len); + if (error) goto done; do_fx = 0; nblks = len * mp->m_sb.sb_rextsize; @@ -4662,7 +4665,7 @@ xfs_bmapi( if (!wasdelay && (flags & XFS_BMAPI_PREALLOC)) got.br_state = XFS_EXT_UNWRITTEN; } - error = xfs_bmap_add_extent(ip, &lastx, &cur, &got, + error = xfs_bmap_add_extent(tp, ip, &lastx, &cur, &got, firstblock, flist, &tmp_logflags, whichfork); logflags |= tmp_logflags; @@ -4763,7 +4766,7 @@ xfs_bmapi( mval->br_state = (mval->br_state == XFS_EXT_UNWRITTEN) ? XFS_EXT_NORM : XFS_EXT_UNWRITTEN; - error = xfs_bmap_add_extent(ip, &lastx, &cur, mval, + error = xfs_bmap_add_extent(tp, ip, &lastx, &cur, mval, firstblock, flist, &tmp_logflags, whichfork); logflags |= tmp_logflags; @@ -5117,7 +5120,7 @@ xfs_bunmapi( del.br_blockcount = mod; } del.br_state = XFS_EXT_UNWRITTEN; - error = xfs_bmap_add_extent(ip, &lastx, &cur, &del, + error = xfs_bmap_add_extent(tp, ip, &lastx, &cur, &del, firstblock, flist, &logflags, XFS_DATA_FORK); if (error) @@ -5175,18 +5178,18 @@ xfs_bunmapi( } prev.br_state = XFS_EXT_UNWRITTEN; lastx--; - error = xfs_bmap_add_extent(ip, &lastx, &cur, - &prev, firstblock, flist, &logflags, - XFS_DATA_FORK); + error = xfs_bmap_add_extent(tp, ip, &lastx, + &cur, &prev, firstblock, flist, + &logflags, XFS_DATA_FORK); if (error) goto error0; goto nodelete; } else { ASSERT(del.br_state == XFS_EXT_NORM); del.br_state = XFS_EXT_UNWRITTEN; - error = xfs_bmap_add_extent(ip, &lastx, &cur, - &del, firstblock, flist, &logflags, - XFS_DATA_FORK); + error = xfs_bmap_add_extent(tp, ip, &lastx, + &cur, &del, firstblock, flist, + &logflags, XFS_DATA_FORK); if (error) goto error0; goto nodelete; Index: xfs/fs/xfs/xfs_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode.c 2011-06-29 11:38:24.000000000 +0200 +++ xfs/fs/xfs/xfs_inode.c 2011-06-29 11:39:10.101682115 +0200 @@ -1259,7 +1259,6 @@ xfs_itruncate_extents( ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_IOLOCK_EXCL)); ASSERT(new_size == 0 || new_size <= ip->i_size); ASSERT((*tpp)->t_flags & XFS_TRANS_PERM_LOG_RES); - ASSERT(ip->i_transp == *tpp); ASSERT(ip->i_itemp != NULL); ASSERT(ip->i_itemp->ili_lock_flags == 0); ASSERT(!XFS_NOT_DQATTACHED(mp, ip)); @@ -1435,7 +1434,6 @@ xfs_iunlink( ASSERT(ip->i_d.di_nlink == 0); ASSERT(ip->i_d.di_mode != 0); - ASSERT(ip->i_transp == tp); mp = tp->t_mountp; @@ -1827,7 +1825,6 @@ xfs_ifree( xfs_buf_t *ibp; ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); - ASSERT(ip->i_transp == tp); ASSERT(ip->i_d.di_nlink == 0); ASSERT(ip->i_d.di_nextents == 0); ASSERT(ip->i_d.di_anextents == 0); Index: xfs/fs/xfs/xfs_inode.h =================================================================== --- xfs.orig/fs/xfs/xfs_inode.h 2011-06-29 11:35:45.000000000 +0200 +++ xfs/fs/xfs/xfs_inode.h 2011-06-29 11:38:58.105080440 +0200 @@ -241,7 +241,6 @@ typedef struct xfs_inode { xfs_ifork_t i_df; /* data fork */ /* Transaction and locking information. */ - struct xfs_trans *i_transp; /* ptr to owning transaction*/ struct xfs_inode_log_item *i_itemp; /* logging information */ mrlock_t i_lock; /* inode lock */ mrlock_t i_iolock; /* inode IO lock */ Index: xfs/fs/xfs/xfs_inode_item.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode_item.c 2011-06-29 11:26:14.729216003 +0200 +++ xfs/fs/xfs/xfs_inode_item.c 2011-06-29 11:38:58.108413755 +0200 @@ -636,11 +636,6 @@ xfs_inode_item_unlock( ASSERT(xfs_isilocked(iip->ili_inode, XFS_ILOCK_EXCL)); /* - * Clear the transaction pointer in the inode. - */ - ip->i_transp = NULL; - - /* * If the inode needed a separate buffer with which to log * its extents, then free it now. */ Index: xfs/fs/xfs/xfs_trans_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_trans_inode.c 2011-06-29 11:26:14.745882578 +0200 +++ xfs/fs/xfs/xfs_trans_inode.c 2011-06-29 11:38:58.108413755 +0200 @@ -55,7 +55,6 @@ xfs_trans_ijoin( { xfs_inode_log_item_t *iip; - ASSERT(ip->i_transp == NULL); ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); if (ip->i_itemp == NULL) xfs_inode_item_init(ip, ip->i_mount); @@ -68,12 +67,6 @@ xfs_trans_ijoin( xfs_trans_add_item(tp, &iip->ili_item); xfs_trans_inode_broot_debug(ip); - - /* - * Initialize i_transp so we can find it with xfs_inode_incore() - * in xfs_trans_iget() above. - */ - ip->i_transp = tp; } /* @@ -111,7 +104,6 @@ xfs_trans_ichgtime( ASSERT(tp); ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); - ASSERT(ip->i_transp == tp); tv = current_fs_time(inode->i_sb); @@ -140,7 +132,6 @@ xfs_trans_log_inode( xfs_inode_t *ip, uint flags) { - ASSERT(ip->i_transp == tp); ASSERT(ip->i_itemp != NULL); ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TE3fjF104789 for ; Wed, 29 Jun 2011 09:03:41 -0500 X-ASG-Debug-ID: 1309356219-203201280000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 35E7A1D7DD36 for ; Wed, 29 Jun 2011 07:03:40 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id ByfzgpYVskFoan9b for ; Wed, 29 Jun 2011 07:03:40 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMh-0008IA-N2 for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:39 +0000 Message-Id: <20110629140339.678322915@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:25 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 16/27] xfs: cleanup the defintion of struct xfs_dir2_sf_entry Subject: [PATCH 16/27] xfs: cleanup the defintion of struct xfs_dir2_sf_entry References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-cleanup-xfs_dir2_sf_entry X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356220 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Remove the inumber member which is at a variable offset after the actual name, and make name a real variable sized C99 array instead of the incorrect one-sized array which confuses (not only) gcc. Based on this clean up the helpers to calculate the entry size. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_dir2_sf.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_sf.c 2011-06-29 13:15:18.790430446 +0200 +++ xfs/fs/xfs/xfs_dir2_sf.c 2011-06-29 13:15:26.800387051 +0200 @@ -375,7 +375,7 @@ xfs_dir2_sf_addname( /* * Compute entry (and change in) size. */ - add_entsize = xfs_dir2_sf_entsize_byname(sfp, args->namelen); + add_entsize = xfs_dir2_sf_entsize(sfp, args->namelen); incr_isize = add_entsize; objchange = 0; #if XFS_BIG_INUMS @@ -469,7 +469,7 @@ xfs_dir2_sf_addname_easy( /* * Grow the in-inode space. */ - xfs_idata_realloc(dp, xfs_dir2_sf_entsize_byname(sfp, args->namelen), + xfs_idata_realloc(dp, xfs_dir2_sf_entsize(sfp, args->namelen), XFS_DATA_FORK); /* * Need to set up again due to realloc of the inode data. @@ -1005,7 +1005,7 @@ xfs_dir2_sf_removename( * Calculate sizes. */ byteoff = (int)((char *)sfep - (char *)sfp); - entsize = xfs_dir2_sf_entsize_byname(sfp, args->namelen); + entsize = xfs_dir2_sf_entsize(sfp, args->namelen); newsize = oldsize - entsize; /* * Copy the part if any after the removed entry, sliding it down. Index: xfs/fs/xfs/xfs_dir2_sf.h =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_sf.h 2011-06-29 13:15:18.807097021 +0200 +++ xfs/fs/xfs/xfs_dir2_sf.h 2011-06-29 13:17:15.143133442 +0200 @@ -76,10 +76,13 @@ typedef struct xfs_dir2_sf_hdr { } __arch_pack xfs_dir2_sf_hdr_t; typedef struct xfs_dir2_sf_entry { - __uint8_t namelen; /* actual name length */ + __u8 namelen; /* actual name length */ xfs_dir2_sf_off_t offset; /* saved offset */ - __uint8_t name[1]; /* name, variable size */ - xfs_dir2_inou_t inumber; /* inode number, var. offset */ + __u8 name[]; /* name, variable size */ + /* + * A xfs_dir2_ino8_t or xfs_dir2_ino4_t follows here, at a + * variable offset after the name. + */ } __arch_pack xfs_dir2_sf_entry_t; static inline int xfs_dir2_sf_hdr_size(int i8count) @@ -101,32 +104,27 @@ xfs_dir2_sf_put_offset(xfs_dir2_sf_entry INT_SET_UNALIGNED_16_BE(&(sfep)->offset.i, off); } -static inline int xfs_dir2_sf_entsize_byname(xfs_dir2_sf_hdr_t *sfp, int len) -{ - return ((uint)sizeof(xfs_dir2_sf_entry_t) - 1 + (len) - \ - ((sfp)->i8count == 0) * \ - ((uint)sizeof(xfs_dir2_ino8_t) - (uint)sizeof(xfs_dir2_ino4_t))); -} - static inline int -xfs_dir2_sf_entsize_byentry(xfs_dir2_sf_hdr_t *sfp, xfs_dir2_sf_entry_t *sfep) +xfs_dir2_sf_entsize(xfs_dir2_sf_hdr_t *sfp, int len) { - return ((uint)sizeof(xfs_dir2_sf_entry_t) - 1 + (sfep)->namelen - \ - ((sfp)->i8count == 0) * \ - ((uint)sizeof(xfs_dir2_ino8_t) - (uint)sizeof(xfs_dir2_ino4_t))); + return sizeof(xfs_dir2_sf_entry_t) + /* namelen + offset */ + len + /* name */ + (sfp->i8count ? /* ino */ + sizeof(xfs_dir2_ino8_t) : + sizeof(xfs_dir2_ino4_t)); } static inline xfs_dir2_sf_entry_t *xfs_dir2_sf_firstentry(xfs_dir2_sf_hdr_t *sfp) { - return ((xfs_dir2_sf_entry_t *) \ - ((char *)(sfp) + xfs_dir2_sf_hdr_size(sfp->i8count))); + return (xfs_dir2_sf_entry_t *) + ((char *)sfp + xfs_dir2_sf_hdr_size(sfp->i8count)); } static inline xfs_dir2_sf_entry_t * xfs_dir2_sf_nextentry(xfs_dir2_sf_hdr_t *sfp, xfs_dir2_sf_entry_t *sfep) { - return ((xfs_dir2_sf_entry_t *) \ - ((char *)(sfep) + xfs_dir2_sf_entsize_byentry(sfp,sfep))); + return (xfs_dir2_sf_entry_t *) + ((char *)sfep + xfs_dir2_sf_entsize(sfp, sfep->namelen)); } /* From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_63, J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p5TE3fFM104850 for ; Wed, 29 Jun 2011 09:03:42 -0500 X-ASG-Debug-ID: 1309356220-093801fe0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B28DD1D7DD37 for ; Wed, 29 Jun 2011 07:03:40 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id EQVcCp0vnoAsVE0R for ; Wed, 29 Jun 2011 07:03:40 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMi-0008JC-3i for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:40 +0000 Message-Id: <20110629140340.079801018@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:27 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 18/27] xfs: kill struct xfs_dir2_block Subject: [PATCH 18/27] xfs: kill struct xfs_dir2_block References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-kill-xfs_dir2_block_t X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356220 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Remove the confusing xfs_dir2_block structure. It is supposed to describe an XFS dir2 block format btree block, but due to the variable sized nature of almost all elements in it it can't actuall do anything close to that job. In addition to accessing the fixed offset header structure it was only used to get a pointer to the first dir or unused entry after it, which can be trivially replaced by pointer arithmetics on the header pointer. For most users that is actually more natural anyway, as they don't use a typed pointer but rather a character pointer for further arithmetics. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_dir2_block.h =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_block.h 2011-06-29 13:19:30.639066065 +0200 +++ xfs/fs/xfs/xfs_dir2_block.h 2011-06-29 13:22:03.604904045 +0200 @@ -19,10 +19,30 @@ #define __XFS_DIR2_BLOCK_H__ /* - * xfs_dir2_block.h - * Directory version 2, single block format structures + * Directory version 2, single block format structures. + * + * The single block format looks like the following drawing on disk: + * + * +-------------------------------------------------+ + * | xfs_dir2_data_hdr_t | + * +-------------------------------------------------+ + * | xfs_dir2_data_entry_t OR xfs_dir2_data_unused_t | + * | xfs_dir2_data_entry_t OR xfs_dir2_data_unused_t | + * | xfs_dir2_data_entry_t OR xfs_dir2_data_unused_t | + * | ... | + * +-------------------------------------------------+ + * | unused space | + * +-------------------------------------------------+ + * | ... | + * | xfs_dir2_leaf_entry_t | + * | xfs_dir2_leaf_entry_t | + * +-------------------------------------------------+ + * | xfs_dir2_block_tail_t | + * +-------------------------------------------------+ + * + * As all the entries are variable sized structures the accessors in this + * file and xfs_dir2_data.h need to be used to iterate over them. */ - struct uio; struct xfs_dabuf; struct xfs_da_args; @@ -32,14 +52,6 @@ struct xfs_inode; struct xfs_mount; struct xfs_trans; -/* - * The single block format is as follows: - * xfs_dir2_data_hdr_t structure - * xfs_dir2_data_entry_t and xfs_dir2_data_unused_t structures - * xfs_dir2_leaf_entry_t structures - * xfs_dir2_block_tail_t structure - */ - #define XFS_DIR2_BLOCK_MAGIC 0x58443242 /* XD2B: for one block dirs */ typedef struct xfs_dir2_block_tail { @@ -48,16 +60,6 @@ typedef struct xfs_dir2_block_tail { } xfs_dir2_block_tail_t; /* - * Generic single-block structure, for xfs_db. - */ -typedef struct xfs_dir2_block { - xfs_dir2_data_hdr_t hdr; /* magic XFS_DIR2_BLOCK_MAGIC */ - xfs_dir2_data_union_t u[1]; - xfs_dir2_leaf_entry_t leaf[1]; - xfs_dir2_block_tail_t tail; -} xfs_dir2_block_t; - -/* * Pointer to the leaf header embedded in a data block (1-block format) */ static inline xfs_dir2_block_tail_t * Index: xfs/fs/xfs/xfs_dir2_block.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_block.c 2011-06-29 13:19:30.649066010 +0200 +++ xfs/fs/xfs/xfs_dir2_block.c 2011-06-29 13:19:45.908983340 +0200 @@ -437,7 +437,6 @@ xfs_dir2_block_getdents( xfs_off_t *offset, filldir_t filldir) { - xfs_dir2_block_t *block; /* directory block structure */ xfs_dir2_data_hdr_t *hdr; /* block header */ xfs_dabuf_t *bp; /* buffer for block */ xfs_dir2_block_tail_t *btp; /* block tail */ @@ -471,14 +470,13 @@ xfs_dir2_block_getdents( * We'll skip entries before this. */ wantoff = xfs_dir2_dataptr_to_off(mp, *offset); - block = bp->data; - hdr = &block->hdr; + hdr = bp->data; xfs_dir2_data_check(dp, bp); /* * Set up values for the loop. */ btp = xfs_dir2_block_tail_p(mp, hdr); - ptr = (char *)block->u; + ptr = (char *)(hdr + 1); endptr = (char *)xfs_dir2_block_leaf_p(btp); /* @@ -1020,7 +1018,6 @@ xfs_dir2_sf_to_block( xfs_da_args_t *args) /* operation arguments */ { xfs_dir2_db_t blkno; /* dir-relative block # (0) */ - xfs_dir2_block_t *block; /* block structure */ xfs_dir2_data_hdr_t *hdr; /* block header */ xfs_dir2_leaf_entry_t *blp; /* block leaf entries */ xfs_dabuf_t *bp; /* block buffer */ @@ -1091,8 +1088,7 @@ xfs_dir2_sf_to_block( kmem_free(sfp); return error; } - block = bp->data; - hdr = &block->hdr; + hdr = bp->data; hdr->magic = cpu_to_be32(XFS_DIR2_BLOCK_MAGIC); /* * Compute size of block "tail" area. @@ -1103,7 +1099,7 @@ xfs_dir2_sf_to_block( * The whole thing is initialized to free by the init routine. * Say we're using the leaf and tail area. */ - dup = (xfs_dir2_data_unused_t *)block->u; + dup = (xfs_dir2_data_unused_t *)(hdr + 1); needlog = needscan = 0; xfs_dir2_data_use_free(tp, bp, dup, mp->m_dirblksize - i, i, &needlog, &needscan); Index: xfs/fs/xfs/xfs_dir2_sf.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_sf.c 2011-06-29 13:19:30.662399271 +0200 +++ xfs/fs/xfs/xfs_dir2_sf.c 2011-06-29 13:19:45.912316655 +0200 @@ -230,7 +230,7 @@ xfs_dir2_block_to_sf( int size, /* shortform directory size */ xfs_dir2_sf_hdr_t *sfhp) /* shortform directory hdr */ { - xfs_dir2_block_t *block; /* block structure */ + xfs_dir2_data_hdr_t *hdr; /* block header */ xfs_dir2_block_tail_t *btp; /* block tail pointer */ xfs_dir2_data_entry_t *dep; /* data entry pointer */ xfs_inode_t *dp; /* incore directory inode */ @@ -252,8 +252,8 @@ xfs_dir2_block_to_sf( * Make a copy of the block data, so we can shrink the inode * and add local data. */ - block = kmem_alloc(mp->m_dirblksize, KM_SLEEP); - memcpy(block, bp->data, mp->m_dirblksize); + hdr = kmem_alloc(mp->m_dirblksize, KM_SLEEP); + memcpy(hdr, bp->data, mp->m_dirblksize); logflags = XFS_ILOG_CORE; if ((error = xfs_dir2_shrink_inode(args, mp->m_dirdatablk, bp))) { ASSERT(error != ENOSPC); @@ -281,8 +281,8 @@ xfs_dir2_block_to_sf( /* * Set up to loop over the block's entries. */ - btp = xfs_dir2_block_tail_p(mp, &block->hdr); - ptr = (char *)block->u; + btp = xfs_dir2_block_tail_p(mp, hdr); + ptr = (char *)(hdr + 1); endptr = (char *)xfs_dir2_block_leaf_p(btp); sfep = xfs_dir2_sf_firstentry(sfp); /* @@ -318,7 +318,7 @@ xfs_dir2_block_to_sf( sfep->namelen = dep->namelen; xfs_dir2_sf_put_offset(sfep, (xfs_dir2_data_aoff_t) - ((char *)dep - (char *)block)); + ((char *)dep - (char *)hdr)); memcpy(sfep->name, dep->name, dep->namelen); xfs_dir2_sfe_put_ino(sfp, sfep, be64_to_cpu(dep->inumber)); @@ -331,7 +331,7 @@ xfs_dir2_block_to_sf( xfs_dir2_sf_check(args); out: xfs_trans_log_inode(args->trans, dp, logflags); - kmem_free(block); + kmem_free(hdr); return error; } From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 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 p5TE3f4s104823 for ; Wed, 29 Jun 2011 09:03:41 -0500 X-ASG-Debug-ID: 1309356218-251400fa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F0A0E1D7DD2F for ; Wed, 29 Jun 2011 07:03:38 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id NLqKziKcDC6ZKNcF for ; Wed, 29 Jun 2011 07:03:38 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMg-0008EY-AG for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:38 +0000 Message-Id: <20110629140338.286808024@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:18 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 09/27] xfs: split xfs_itruncate_finish Subject: [PATCH 09/27] xfs: split xfs_itruncate_finish References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-split-xfs_itruncate_finish X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356219 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Split the guts of xfs_itruncate_finish that loop over the existing extents and calls xfs_bunmapi on them into a new helper, xfs_itruncate_externs. Make xfs_attr_inactive call it directly instead of xfs_itruncate_finish, which allows to simplify the latter a lot, by only letting it deal with the data fork. As a result xfs_itruncate_finish is renamed to xfs_itruncate_data to make its use case more obvious. Also remove the sync parameter from xfs_itruncate_data, which has been unessecary since the introduction of the busy extent list in 2002, and completely dead code since 2003 when the XFS_BMAPI_ASYNC parameter was made a no-op. I can't actually see why the xfs_attr_inactive needs to set the transaction sync, but let's keep this patch simple and without changes in behaviour. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_iops.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_iops.c 2011-06-29 11:35:39.086158618 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_iops.c 2011-06-29 11:35:45.779455690 +0200 @@ -880,15 +880,7 @@ xfs_setattr_size( ip->i_size = iattr->ia_size; } else if (iattr->ia_size <= ip->i_size || (iattr->ia_size == 0 && ip->i_d.di_nextents)) { - /* - * Signal a sync transaction unless we are truncating an - * already unlinked file on a wsync filesystem. - */ - error = xfs_itruncate_finish(&tp, ip, iattr->ia_size, - XFS_DATA_FORK, - ((ip->i_d.di_nlink != 0 || - !(mp->m_flags & XFS_MOUNT_WSYNC)) - ? 1 : 0)); + error = xfs_itruncate_data(&tp, ip, iattr->ia_size); if (error) goto out_trans_abort; Index: xfs/fs/xfs/quota/xfs_qm_syscalls.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_qm_syscalls.c 2011-06-29 11:35:39.112825141 +0200 +++ xfs/fs/xfs/quota/xfs_qm_syscalls.c 2011-06-29 11:35:45.782789005 +0200 @@ -263,7 +263,7 @@ xfs_qm_scall_trunc_qfile( xfs_ilock(ip, XFS_ILOCK_EXCL); xfs_trans_ijoin(tp, ip); - error = xfs_itruncate_finish(&tp, ip, 0, XFS_DATA_FORK, 1); + error = xfs_itruncate_data(&tp, ip, 0); if (error) { xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT); Index: xfs/fs/xfs/xfs_attr.c =================================================================== --- xfs.orig/fs/xfs/xfs_attr.c 2011-06-29 11:35:39.126158401 +0200 +++ xfs/fs/xfs/xfs_attr.c 2011-06-29 11:35:45.782789005 +0200 @@ -822,17 +822,21 @@ xfs_attr_inactive(xfs_inode_t *dp) error = xfs_attr_root_inactive(&trans, dp); if (error) goto out; + /* - * signal synchronous inactive transactions unless this - * is a synchronous mount filesystem in which case we - * know that we're here because we've been called out of - * xfs_inactive which means that the last reference is gone - * and the unlink transaction has already hit the disk so - * async inactive transactions are safe. + * Signal synchronous inactive transactions unless this is a + * synchronous mount filesystem in which case we know that we're here + * because we've been called out of xfs_inactive which means that the + * last reference is gone and the unlink transaction has already hit + * the disk so async inactive transactions are safe. */ - if ((error = xfs_itruncate_finish(&trans, dp, 0LL, XFS_ATTR_FORK, - (!(mp->m_flags & XFS_MOUNT_WSYNC) - ? 1 : 0)))) + if (!(mp->m_flags & XFS_MOUNT_WSYNC)) { + if (dp->i_d.di_anextents > 0) + xfs_trans_set_sync(trans); + } + + error = xfs_itruncate_extents(&trans, dp, XFS_ATTR_FORK, 0); + if (error) goto out; /* Index: xfs/fs/xfs/xfs_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode.c 2011-06-29 11:35:39.136158346 +0200 +++ xfs/fs/xfs/xfs_inode.c 2011-06-29 11:38:24.515262411 +0200 @@ -52,7 +52,7 @@ kmem_zone_t *xfs_ifork_zone; kmem_zone_t *xfs_inode_zone; /* - * Used in xfs_itruncate(). This is the maximum number of extents + * Used in xfs_itruncate_extents(). This is the maximum number of extents * freed from a file in a single transaction. */ #define XFS_ITRUNC_MAX_EXTENTS 2 @@ -1218,7 +1218,9 @@ xfs_isize_check( /* * Free up the underlying blocks past new_size. The new size must be - * smaller than the current size. + * smaller than the current size. This routine can be used both for + * the attribute and data fork, and does not modify the inode size, + * which is left to the caller. * * The transaction passed to this routine must have made a permanent log * reservation of at least XFS_ITRUNCATE_LOG_RES. This routine may commit the @@ -1230,31 +1232,6 @@ xfs_isize_check( * will be "held" within the returned transaction. This routine does NOT * require any disk space to be reserved for it within the transaction. * - * The fork parameter must be either XFS_ATTR_FORK or XFS_DATA_FORK, and it - * indicates the fork which is to be truncated. For the attribute fork we only - * support truncation to size 0. - * - * We use the sync parameter to indicate whether or not the first transaction - * we perform might have to be synchronous. For the attr fork, it needs to be - * so if the unlink of the inode is not yet known to be permanent in the log. - * This keeps us from freeing and reusing the blocks of the attribute fork - * before the unlink of the inode becomes permanent. - * - * For the data fork, we normally have to run synchronously if we're being - * called out of the inactive path or we're being called out of the create path - * where we're truncating an existing file. Either way, the truncate needs to - * be sync so blocks don't reappear in the file with altered data in case of a - * crash. wsync filesystems can run the first case async because anything that - * shrinks the inode has to run sync so by the time we're called here from - * inactive, the inode size is permanently set to 0. - * - * Calls from the truncate path always need to be sync unless we're in a wsync - * filesystem and the file has already been unlinked. - * - * The caller is responsible for correctly setting the sync parameter. It gets - * too hard for us to guess here which path we're being called out of just - * based on inode state. - * * If we get an error, we must return with the inode locked and linked into the * current transaction. This keeps things simple for the higher level code, * because it always knows that the inode is locked and held in the transaction @@ -1262,124 +1239,30 @@ xfs_isize_check( * dirty on error so that transactions can be easily aborted if possible. */ int -xfs_itruncate_finish( - xfs_trans_t **tp, - xfs_inode_t *ip, - xfs_fsize_t new_size, - int fork, - int sync) +xfs_itruncate_extents( + struct xfs_trans **tpp, + struct xfs_inode *ip, + int whichfork, + xfs_fsize_t new_size) { - xfs_fsblock_t first_block; - xfs_fileoff_t first_unmap_block; - xfs_fileoff_t last_block; - xfs_filblks_t unmap_len=0; - xfs_mount_t *mp; - xfs_trans_t *ntp; - int done; - int committed; - xfs_bmap_free_t free_list; - int error; + struct xfs_mount *mp = ip->i_mount; + struct xfs_trans *ntp = *tpp; + xfs_bmap_free_t free_list; + xfs_fsblock_t first_block; + xfs_fileoff_t first_unmap_block; + xfs_fileoff_t last_block; + xfs_filblks_t unmap_len; + int committed; + int error = 0; + int done = 0; ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_IOLOCK_EXCL)); - ASSERT((new_size == 0) || (new_size <= ip->i_size)); - ASSERT(*tp != NULL); - ASSERT((*tp)->t_flags & XFS_TRANS_PERM_LOG_RES); - ASSERT(ip->i_transp == *tp); + ASSERT(new_size == 0 || new_size <= ip->i_size); + ASSERT((*tpp)->t_flags & XFS_TRANS_PERM_LOG_RES); + ASSERT(ip->i_transp == *tpp); ASSERT(ip->i_itemp != NULL); ASSERT(ip->i_itemp->ili_lock_flags == 0); - - - ntp = *tp; - mp = (ntp)->t_mountp; - ASSERT(! XFS_NOT_DQATTACHED(mp, ip)); - - /* - * We only support truncating the entire attribute fork. - */ - if (fork == XFS_ATTR_FORK) { - new_size = 0LL; - } - first_unmap_block = XFS_B_TO_FSB(mp, (xfs_ufsize_t)new_size); - trace_xfs_itruncate_finish_start(ip, new_size); - - /* - * The first thing we do is set the size to new_size permanently - * on disk. This way we don't have to worry about anyone ever - * being able to look at the data being freed even in the face - * of a crash. What we're getting around here is the case where - * we free a block, it is allocated to another file, it is written - * to, and then we crash. If the new data gets written to the - * file but the log buffers containing the free and reallocation - * don't, then we'd end up with garbage in the blocks being freed. - * As long as we make the new_size permanent before actually - * freeing any blocks it doesn't matter if they get written to. - * - * The callers must signal into us whether or not the size - * setting here must be synchronous. There are a few cases - * where it doesn't have to be synchronous. Those cases - * occur if the file is unlinked and we know the unlink is - * permanent or if the blocks being truncated are guaranteed - * to be beyond the inode eof (regardless of the link count) - * and the eof value is permanent. Both of these cases occur - * only on wsync-mounted filesystems. In those cases, we're - * guaranteed that no user will ever see the data in the blocks - * that are being truncated so the truncate can run async. - * In the free beyond eof case, the file may wind up with - * more blocks allocated to it than it needs if we crash - * and that won't get fixed until the next time the file - * is re-opened and closed but that's ok as that shouldn't - * be too many blocks. - * - * However, we can't just make all wsync xactions run async - * because there's one call out of the create path that needs - * to run sync where it's truncating an existing file to size - * 0 whose size is > 0. - * - * It's probably possible to come up with a test in this - * routine that would correctly distinguish all the above - * cases from the values of the function parameters and the - * inode state but for sanity's sake, I've decided to let the - * layers above just tell us. It's simpler to correctly figure - * out in the layer above exactly under what conditions we - * can run async and I think it's easier for others read and - * follow the logic in case something has to be changed. - * cscope is your friend -- rcc. - * - * The attribute fork is much simpler. - * - * For the attribute fork we allow the caller to tell us whether - * the unlink of the inode that led to this call is yet permanent - * in the on disk log. If it is not and we will be freeing extents - * in this inode then we make the first transaction synchronous - * to make sure that the unlink is permanent by the time we free - * the blocks. - */ - if (fork == XFS_DATA_FORK) { - if (ip->i_d.di_nextents > 0) { - /* - * If we are not changing the file size then do - * not update the on-disk file size - we may be - * called from xfs_inactive_free_eofblocks(). If we - * update the on-disk file size and then the system - * crashes before the contents of the file are - * flushed to disk then the files may be full of - * holes (ie NULL files bug). - */ - if (ip->i_size != new_size) { - ip->i_d.di_size = new_size; - ip->i_size = new_size; - xfs_trans_log_inode(ntp, ip, XFS_ILOG_CORE); - } - } - } else if (sync) { - ASSERT(!(mp->m_flags & XFS_MOUNT_WSYNC)); - if (ip->i_d.di_anextents > 0) - xfs_trans_set_sync(ntp); - } - ASSERT(fork == XFS_DATA_FORK || - (fork == XFS_ATTR_FORK && - ((sync && !(mp->m_flags & XFS_MOUNT_WSYNC)) || - (sync == 0 && (mp->m_flags & XFS_MOUNT_WSYNC))))); + ASSERT(!XFS_NOT_DQATTACHED(mp, ip)); /* * Since it is possible for space to become allocated beyond @@ -1390,70 +1273,34 @@ xfs_itruncate_finish( * beyond the maximum file size (ie it is the same as last_block), * then there is nothing to do. */ + first_unmap_block = XFS_B_TO_FSB(mp, (xfs_ufsize_t)new_size); last_block = XFS_B_TO_FSB(mp, (xfs_ufsize_t)XFS_MAXIOFFSET(mp)); - ASSERT(first_unmap_block <= last_block); - done = 0; - if (last_block == first_unmap_block) { - done = 1; - } else { - unmap_len = last_block - first_unmap_block + 1; - } + if (first_unmap_block == last_block) + return 0; + + ASSERT(first_unmap_block < last_block); + unmap_len = last_block - first_unmap_block + 1; while (!done) { - /* - * Free up up to XFS_ITRUNC_MAX_EXTENTS. xfs_bunmapi() - * will tell us whether it freed the entire range or - * not. If this is a synchronous mount (wsync), - * then we can tell bunmapi to keep all the - * transactions asynchronous since the unlink - * transaction that made this inode inactive has - * already hit the disk. There's no danger of - * the freed blocks being reused, there being a - * crash, and the reused blocks suddenly reappearing - * in this file with garbage in them once recovery - * runs. - */ xfs_bmap_init(&free_list, &first_block); error = xfs_bunmapi(ntp, ip, first_unmap_block, unmap_len, - xfs_bmapi_aflag(fork), + xfs_bmapi_aflag(whichfork), XFS_ITRUNC_MAX_EXTENTS, &first_block, &free_list, &done); - if (error) { - /* - * If the bunmapi call encounters an error, - * return to the caller where the transaction - * can be properly aborted. We just need to - * make sure we're not holding any resources - * that we were not when we came in. - */ - xfs_bmap_cancel(&free_list); - return error; - } + if (error) + goto out_bmap_cancel; /* * Duplicate the transaction that has the permanent * reservation and commit the old transaction. */ - error = xfs_bmap_finish(tp, &free_list, &committed); - ntp = *tp; + error = xfs_bmap_finish(tpp, &free_list, &committed); + ntp = *tpp; if (committed) xfs_trans_ijoin(ntp, ip); - - if (error) { - /* - * If the bmap finish call encounters an error, return - * to the caller where the transaction can be properly - * aborted. We just need to make sure we're not - * holding any resources that we were not when we came - * in. - * - * Aborting from this point might lose some blocks in - * the file system, but oh well. - */ - xfs_bmap_cancel(&free_list); - return error; - } + if (error) + goto out_bmap_cancel; if (committed) { /* @@ -1464,15 +1311,16 @@ xfs_itruncate_finish( } ntp = xfs_trans_dup(ntp); - error = xfs_trans_commit(*tp, 0); - *tp = ntp; + error = xfs_trans_commit(*tpp, 0); + *tpp = ntp; xfs_trans_ijoin(ntp, ip); if (error) return error; + /* - * transaction commit worked ok so we can drop the extra ticket + * Transaction commit worked ok so we can drop the extra ticket * reference that we gained in xfs_trans_dup() */ xfs_log_ticket_put(ntp->t_ticket); @@ -1483,35 +1331,85 @@ xfs_itruncate_finish( if (error) return error; } + + return 0; + +out_bmap_cancel: + /* + * If the bunmapi call encounters an error, return to the caller where + * the transaction can be properly aborted. We just need to make sure + * we're not holding any resources that we were not when we came in. + */ + xfs_bmap_cancel(&free_list); + return error; +} + +int +xfs_itruncate_data( + struct xfs_trans **tpp, + struct xfs_inode *ip, + xfs_fsize_t new_size) +{ + struct xfs_mount *mp = ip->i_mount; + int error; + + trace_xfs_itruncate_data_start(ip, new_size); + /* - * Only update the size in the case of the data fork, but - * always re-log the inode so that our permanent transaction - * can keep on rolling it forward in the log. + * The first thing we do is set the size to new_size permanently on + * disk. This way we don't have to worry about anyone ever being able + * to look at the data being freed even in the face of a crash. + * What we're getting around here is the case where we free a block, it + * is allocated to another file, it is written to, and then we crash. + * If the new data gets written to the file but the log buffers + * containing the free and reallocation don't, then we'd end up with + * garbage in the blocks being freed. As long as we make the new_size + * permanent before actually freeing any blocks it doesn't matter if + * they get written to. */ - if (fork == XFS_DATA_FORK) { - xfs_isize_check(mp, ip, new_size); + if (ip->i_d.di_nextents > 0) { /* - * If we are not changing the file size then do - * not update the on-disk file size - we may be - * called from xfs_inactive_free_eofblocks(). If we - * update the on-disk file size and then the system - * crashes before the contents of the file are - * flushed to disk then the files may be full of - * holes (ie NULL files bug). + * If we are not changing the file size then do not update + * the on-disk file size - we may be called from + * xfs_inactive_free_eofblocks(). If we update the on-disk + * file size and then the system crashes before the contents + * of the file are flushed to disk then the files may be + * full of holes (ie NULL files bug). */ if (ip->i_size != new_size) { ip->i_d.di_size = new_size; ip->i_size = new_size; + xfs_trans_log_inode(*tpp, ip, XFS_ILOG_CORE); } } - xfs_trans_log_inode(ntp, ip, XFS_ILOG_CORE); - ASSERT((new_size != 0) || - (fork == XFS_ATTR_FORK) || - (ip->i_delayed_blks == 0)); - ASSERT((new_size != 0) || - (fork == XFS_ATTR_FORK) || - (ip->i_d.di_nextents == 0)); - trace_xfs_itruncate_finish_end(ip, new_size); + + error = xfs_itruncate_extents(tpp, ip, XFS_DATA_FORK, new_size); + if (error) + return error; + + /* + * If we are not changing the file size then do not update the on-disk + * file size - we may be called from xfs_inactive_free_eofblocks(). + * If we update the on-disk file size and then the system crashes + * before the contents of the file are flushed to disk then the files + * may be full of holes (ie NULL files bug). + */ + xfs_isize_check(mp, ip, new_size); + if (ip->i_size != new_size) { + ip->i_d.di_size = new_size; + ip->i_size = new_size; + } + + ASSERT(new_size != 0 || ip->i_delayed_blks == 0); + ASSERT(new_size != 0 || ip->i_d.di_nextents == 0); + + /* + * Always re-log the inode so that our permanent transaction can keep + * on rolling it forward in the log. + */ + xfs_trans_log_inode(*tpp, ip, XFS_ILOG_CORE); + + trace_xfs_itruncate_data_end(ip, new_size); return 0; } Index: xfs/fs/xfs/xfs_inode.h =================================================================== --- xfs.orig/fs/xfs/xfs_inode.h 2011-06-29 11:35:39.146158294 +0200 +++ xfs/fs/xfs/xfs_inode.h 2011-06-29 11:35:45.789455635 +0200 @@ -491,8 +491,10 @@ uint xfs_ip2xflags(struct xfs_inode *); uint xfs_dic2xflags(struct xfs_dinode *); int xfs_ifree(struct xfs_trans *, xfs_inode_t *, struct xfs_bmap_free *); -int xfs_itruncate_finish(struct xfs_trans **, xfs_inode_t *, - xfs_fsize_t, int, int); +int xfs_itruncate_extents(struct xfs_trans **, struct xfs_inode *, + int, xfs_fsize_t); +int xfs_itruncate_data(struct xfs_trans **, struct xfs_inode *, + xfs_fsize_t); int xfs_iunlink(struct xfs_trans *, xfs_inode_t *); void xfs_iext_realloc(xfs_inode_t *, int, int); Index: xfs/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.c 2011-06-29 11:35:39.162824869 +0200 +++ xfs/fs/xfs/xfs_vnodeops.c 2011-06-29 11:35:45.789455635 +0200 @@ -220,15 +220,12 @@ xfs_free_eofblocks( xfs_ilock(ip, XFS_ILOCK_EXCL); xfs_trans_ijoin(tp, ip); - error = xfs_itruncate_finish(&tp, ip, - ip->i_size, - XFS_DATA_FORK, - 0); - /* - * If we get an error at this point we - * simply don't bother truncating the file. - */ + error = xfs_itruncate_data(&tp, ip, ip->i_size); if (error) { + /* + * If we get an error at this point we simply don't + * bother truncating the file. + */ xfs_trans_cancel(tp, (XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT)); @@ -665,16 +662,7 @@ xfs_inactive( xfs_ilock(ip, XFS_ILOCK_EXCL); xfs_trans_ijoin(tp, ip); - /* - * normally, we have to run xfs_itruncate_finish sync. - * But if filesystem is wsync and we're in the inactive - * path, then we know that nlink == 0, and that the - * xaction that made nlink == 0 is permanently committed - * since xfs_remove runs as a synchronous transaction. - */ - error = xfs_itruncate_finish(&tp, ip, 0, XFS_DATA_FORK, - (!(mp->m_flags & XFS_MOUNT_WSYNC) ? 1 : 0)); - + error = xfs_itruncate_data(&tp, ip, 0); if (error) { xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT); Index: xfs/fs/xfs/linux-2.6/xfs_trace.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_trace.h 2011-06-29 11:35:39.099491878 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_trace.h 2011-06-29 11:35:45.792788951 +0200 @@ -1055,8 +1055,8 @@ DECLARE_EVENT_CLASS(xfs_itrunc_class, DEFINE_EVENT(xfs_itrunc_class, name, \ TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size), \ TP_ARGS(ip, new_size)) -DEFINE_ITRUNC_EVENT(xfs_itruncate_finish_start); -DEFINE_ITRUNC_EVENT(xfs_itruncate_finish_end); +DEFINE_ITRUNC_EVENT(xfs_itruncate_data_start); +DEFINE_ITRUNC_EVENT(xfs_itruncate_data_end); TRACE_EVENT(xfs_pagecache_inval, TP_PROTO(struct xfs_inode *ip, xfs_off_t start, xfs_off_t finish), From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TE3fsp104819 for ; Wed, 29 Jun 2011 09:03:41 -0500 X-ASG-Debug-ID: 1309356219-202203380000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3BCC9E4B815 for ; Wed, 29 Jun 2011 07:03:39 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id qxxIRoNJeOjvpwWG for ; Wed, 29 Jun 2011 07:03:39 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMh-0008H8-9o for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:39 +0000 Message-Id: <20110629140339.266356959@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:23 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 14/27] xfs: cleanup shortform directory inode number handling Subject: [PATCH 14/27] xfs: cleanup shortform directory inode number handling References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-dir2_sf-cleanup-inum-handling X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356220 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67470 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Refactor the shortform directory helpers that deal with the 32-bit vs 64-bit wide inode numbers into more sensible helpers, and kill the xfs_intino_t typedef that is now superflous. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_dir2_sf.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_sf.c 2010-05-25 11:40:59.357006075 +0200 +++ xfs/fs/xfs/xfs_dir2_sf.c 2010-05-27 14:48:16.709004470 +0200 @@ -59,6 +59,83 @@ static void xfs_dir2_sf_toino4(xfs_da_ar static void xfs_dir2_sf_toino8(xfs_da_args_t *args); #endif /* XFS_BIG_INUMS */ + +/* + * Inode numbers in short-form directories can come in two versions, + * either 4 bytes or 8 bytes wide. These helpers deal with the + * two forms transparently by looking at the headers i8count field. + */ + +static xfs_ino_t +xfs_dir2_sf_get_ino( + struct xfs_dir2_sf *sfp, + xfs_dir2_inou_t *from) +{ + if (sfp->hdr.i8count) + return XFS_GET_DIR_INO8(from->i8); + else + return XFS_GET_DIR_INO4(from->i4); +} +static void +xfs_dir2_sf_put_inumber( + struct xfs_dir2_sf *sfp, + xfs_dir2_inou_t *to, + xfs_ino_t ino) +{ + if (sfp->hdr.i8count) + XFS_PUT_DIR_INO8(ino, to->i8); + else + XFS_PUT_DIR_INO4(ino, to->i4); +} + +xfs_ino_t +xfs_dir2_sf_get_parent_ino( + struct xfs_dir2_sf *sfp) +{ + return xfs_dir2_sf_get_ino(sfp, &sfp->hdr.parent); +} + + +static void +xfs_dir2_sf_put_parent_ino( + struct xfs_dir2_sf *sfp, + xfs_ino_t ino) +{ + xfs_dir2_sf_put_inumber(sfp, &sfp->hdr.parent, ino); +} + + +/* + * In short-form directory entries the inode numbers are stored at variable + * offset behind the entry name. The inode numbers may only be accessed + * through the helpers below. + */ + +static xfs_dir2_inou_t * +xfs_dir2_sf_inop( + struct xfs_dir2_sf_entry *sfep) +{ + return (xfs_dir2_inou_t *)&sfep->name[sfep->namelen]; +} + +xfs_ino_t +xfs_dir2_sfe_get_ino( + struct xfs_dir2_sf *sfp, + struct xfs_dir2_sf_entry *sfep) +{ + return xfs_dir2_sf_get_ino(sfp, xfs_dir2_sf_inop(sfep)); +} + +static void +xfs_dir2_sfe_put_ino( + struct xfs_dir2_sf *sfp, + struct xfs_dir2_sf_entry *sfep, + xfs_ino_t ino) +{ + xfs_dir2_sf_put_inumber(sfp, xfs_dir2_sf_inop(sfep), ino); +} + + /* * Given a block directory (dp/block), calculate its size as a shortform (sf) * directory and a header for the sf directory, if it will fit it the @@ -138,7 +215,7 @@ xfs_dir2_block_sfsize( */ sfhp->count = count; sfhp->i8count = i8count; - xfs_dir2_sf_put_inumber((xfs_dir2_sf_t *)sfhp, &parent, &sfhp->parent); + xfs_dir2_sf_put_parent_ino((xfs_dir2_sf_t *)sfhp, parent); return size; } @@ -165,7 +242,6 @@ xfs_dir2_block_to_sf( char *ptr; /* current data pointer */ xfs_dir2_sf_entry_t *sfep; /* shortform entry */ xfs_dir2_sf_t *sfp; /* shortform structure */ - xfs_ino_t temp; trace_xfs_dir2_block_to_sf(args); @@ -233,7 +309,7 @@ xfs_dir2_block_to_sf( else if (dep->namelen == 2 && dep->name[0] == '.' && dep->name[1] == '.') ASSERT(be64_to_cpu(dep->inumber) == - xfs_dir2_sf_get_inumber(sfp, &sfp->hdr.parent)); + xfs_dir2_sf_get_parent_ino(sfp)); /* * Normal entry, copy it into shortform. */ @@ -243,9 +319,9 @@ xfs_dir2_block_to_sf( (xfs_dir2_data_aoff_t) ((char *)dep - (char *)block)); memcpy(sfep->name, dep->name, dep->namelen); - temp = be64_to_cpu(dep->inumber); - xfs_dir2_sf_put_inumber(sfp, &temp, - xfs_dir2_sf_inumberp(sfep)); + xfs_dir2_sfe_put_ino(sfp, sfep, + be64_to_cpu(dep->inumber)); + sfep = xfs_dir2_sf_nextentry(sfp, sfep); } ptr += xfs_dir2_data_entsize(dep->namelen); @@ -406,8 +482,7 @@ xfs_dir2_sf_addname_easy( sfep->namelen = args->namelen; xfs_dir2_sf_put_offset(sfep, offset); memcpy(sfep->name, args->name, sfep->namelen); - xfs_dir2_sf_put_inumber(sfp, &args->inumber, - xfs_dir2_sf_inumberp(sfep)); + xfs_dir2_sfe_put_ino(sfp, sfep, args->inumber); /* * Update the header and inode. */ @@ -498,8 +573,7 @@ xfs_dir2_sf_addname_hard( sfep->namelen = args->namelen; xfs_dir2_sf_put_offset(sfep, offset); memcpy(sfep->name, args->name, sfep->namelen); - xfs_dir2_sf_put_inumber(sfp, &args->inumber, - xfs_dir2_sf_inumberp(sfep)); + xfs_dir2_sfe_put_ino(sfp, sfep, args->inumber); sfp->hdr.count++; #if XFS_BIG_INUMS if (args->inumber > XFS_DIR2_MAX_SHORT_INUM && !objchange) @@ -618,14 +692,14 @@ xfs_dir2_sf_check( sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; offset = XFS_DIR2_DATA_FIRST_OFFSET; - ino = xfs_dir2_sf_get_inumber(sfp, &sfp->hdr.parent); + ino = xfs_dir2_sf_get_parent_ino(sfp); i8count = ino > XFS_DIR2_MAX_SHORT_INUM; for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp); i < sfp->hdr.count; i++, sfep = xfs_dir2_sf_nextentry(sfp, sfep)) { ASSERT(xfs_dir2_sf_get_offset(sfep) >= offset); - ino = xfs_dir2_sf_get_inumber(sfp, xfs_dir2_sf_inumberp(sfep)); + ino = xfs_dir2_sfe_get_ino(sfp, sfep); i8count += ino > XFS_DIR2_MAX_SHORT_INUM; offset = xfs_dir2_sf_get_offset(sfep) + @@ -686,7 +760,7 @@ xfs_dir2_sf_create( /* * Now can put in the inode number, since i8count is set. */ - xfs_dir2_sf_put_inumber(sfp, &pino, &sfp->hdr.parent); + xfs_dir2_sf_put_parent_ino(sfp, pino); sfp->hdr.count = 0; dp->i_d.di_size = size; xfs_dir2_sf_check(args); @@ -759,7 +833,7 @@ xfs_dir2_sf_getdents( * Put .. entry unless we're starting past it. */ if (*offset <= dotdot_offset) { - ino = xfs_dir2_sf_get_inumber(sfp, &sfp->hdr.parent); + ino = xfs_dir2_sf_get_parent_ino(sfp); if (filldir(dirent, "..", 2, dotdot_offset & 0x7fffffff, ino, DT_DIR)) { *offset = dotdot_offset & 0x7fffffff; return 0; @@ -779,7 +853,7 @@ xfs_dir2_sf_getdents( continue; } - ino = xfs_dir2_sf_get_inumber(sfp, xfs_dir2_sf_inumberp(sfep)); + ino = xfs_dir2_sfe_get_ino(sfp, sfep); if (filldir(dirent, (char *)sfep->name, sfep->namelen, off & 0x7fffffff, ino, DT_UNKNOWN)) { *offset = off & 0x7fffffff; @@ -839,7 +913,7 @@ xfs_dir2_sf_lookup( */ if (args->namelen == 2 && args->name[0] == '.' && args->name[1] == '.') { - args->inumber = xfs_dir2_sf_get_inumber(sfp, &sfp->hdr.parent); + args->inumber = xfs_dir2_sf_get_parent_ino(sfp); args->cmpresult = XFS_CMP_EXACT; return XFS_ERROR(EEXIST); } @@ -858,8 +932,7 @@ xfs_dir2_sf_lookup( sfep->namelen); if (cmp != XFS_CMP_DIFFERENT && cmp != args->cmpresult) { args->cmpresult = cmp; - args->inumber = xfs_dir2_sf_get_inumber(sfp, - xfs_dir2_sf_inumberp(sfep)); + args->inumber = xfs_dir2_sfe_get_ino(sfp, sfep); if (cmp == XFS_CMP_EXACT) return XFS_ERROR(EEXIST); ci_sfep = sfep; @@ -918,9 +991,8 @@ xfs_dir2_sf_removename( i++, sfep = xfs_dir2_sf_nextentry(sfp, sfep)) { if (xfs_da_compname(args, sfep->name, sfep->namelen) == XFS_CMP_EXACT) { - ASSERT(xfs_dir2_sf_get_inumber(sfp, - xfs_dir2_sf_inumberp(sfep)) == - args->inumber); + ASSERT(xfs_dir2_sfe_get_ino(sfp, sfep) == + args->inumber); break; } } @@ -1040,10 +1112,10 @@ xfs_dir2_sf_replace( if (args->namelen == 2 && args->name[0] == '.' && args->name[1] == '.') { #if XFS_BIG_INUMS || defined(DEBUG) - ino = xfs_dir2_sf_get_inumber(sfp, &sfp->hdr.parent); + ino = xfs_dir2_sf_get_parent_ino(sfp); ASSERT(args->inumber != ino); #endif - xfs_dir2_sf_put_inumber(sfp, &args->inumber, &sfp->hdr.parent); + xfs_dir2_sf_put_parent_ino(sfp, args->inumber); } /* * Normal entry, look for the name. @@ -1055,12 +1127,10 @@ xfs_dir2_sf_replace( if (xfs_da_compname(args, sfep->name, sfep->namelen) == XFS_CMP_EXACT) { #if XFS_BIG_INUMS || defined(DEBUG) - ino = xfs_dir2_sf_get_inumber(sfp, - xfs_dir2_sf_inumberp(sfep)); + ino = xfs_dir2_sfe_get_ino(sfp, sfep); ASSERT(args->inumber != ino); #endif - xfs_dir2_sf_put_inumber(sfp, &args->inumber, - xfs_dir2_sf_inumberp(sfep)); + xfs_dir2_sfe_put_ino(sfp, sfep, args->inumber); break; } } @@ -1121,7 +1191,6 @@ xfs_dir2_sf_toino4( char *buf; /* old dir's buffer */ xfs_inode_t *dp; /* incore directory inode */ int i; /* entry index */ - xfs_ino_t ino; /* entry inode number */ int newsize; /* new inode size */ xfs_dir2_sf_entry_t *oldsfep; /* old sf entry */ xfs_dir2_sf_t *oldsfp; /* old sf directory */ @@ -1162,8 +1231,7 @@ xfs_dir2_sf_toino4( */ sfp->hdr.count = oldsfp->hdr.count; sfp->hdr.i8count = 0; - ino = xfs_dir2_sf_get_inumber(oldsfp, &oldsfp->hdr.parent); - xfs_dir2_sf_put_inumber(sfp, &ino, &sfp->hdr.parent); + xfs_dir2_sf_put_parent_ino(sfp, xfs_dir2_sf_get_parent_ino(oldsfp)); /* * Copy the entries field by field. */ @@ -1175,9 +1243,8 @@ xfs_dir2_sf_toino4( sfep->namelen = oldsfep->namelen; sfep->offset = oldsfep->offset; memcpy(sfep->name, oldsfep->name, sfep->namelen); - ino = xfs_dir2_sf_get_inumber(oldsfp, - xfs_dir2_sf_inumberp(oldsfep)); - xfs_dir2_sf_put_inumber(sfp, &ino, xfs_dir2_sf_inumberp(sfep)); + xfs_dir2_sfe_put_ino(sfp, sfep, + xfs_dir2_sfe_get_ino(oldsfp, oldsfep)); } /* * Clean up the inode. @@ -1199,7 +1266,6 @@ xfs_dir2_sf_toino8( char *buf; /* old dir's buffer */ xfs_inode_t *dp; /* incore directory inode */ int i; /* entry index */ - xfs_ino_t ino; /* entry inode number */ int newsize; /* new inode size */ xfs_dir2_sf_entry_t *oldsfep; /* old sf entry */ xfs_dir2_sf_t *oldsfp; /* old sf directory */ @@ -1240,8 +1306,7 @@ xfs_dir2_sf_toino8( */ sfp->hdr.count = oldsfp->hdr.count; sfp->hdr.i8count = 1; - ino = xfs_dir2_sf_get_inumber(oldsfp, &oldsfp->hdr.parent); - xfs_dir2_sf_put_inumber(sfp, &ino, &sfp->hdr.parent); + xfs_dir2_sf_put_parent_ino(sfp, xfs_dir2_sf_get_parent_ino(oldsfp)); /* * Copy the entries field by field. */ @@ -1253,9 +1318,8 @@ xfs_dir2_sf_toino8( sfep->namelen = oldsfep->namelen; sfep->offset = oldsfep->offset; memcpy(sfep->name, oldsfep->name, sfep->namelen); - ino = xfs_dir2_sf_get_inumber(oldsfp, - xfs_dir2_sf_inumberp(oldsfep)); - xfs_dir2_sf_put_inumber(sfp, &ino, xfs_dir2_sf_inumberp(sfep)); + xfs_dir2_sfe_put_ino(sfp, sfep, + xfs_dir2_sfe_get_ino(oldsfp, oldsfep)); } /* * Clean up the inode. Index: xfs/fs/xfs/xfs_dir2_sf.h =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_sf.h 2010-05-18 13:04:38.259255428 +0200 +++ xfs/fs/xfs/xfs_dir2_sf.h 2010-05-27 14:48:16.710004889 +0200 @@ -90,28 +90,6 @@ static inline int xfs_dir2_sf_hdr_size(i ((uint)sizeof(xfs_dir2_ino8_t) - (uint)sizeof(xfs_dir2_ino4_t))); } -static inline xfs_dir2_inou_t *xfs_dir2_sf_inumberp(xfs_dir2_sf_entry_t *sfep) -{ - return (xfs_dir2_inou_t *)&(sfep)->name[(sfep)->namelen]; -} - -static inline xfs_intino_t -xfs_dir2_sf_get_inumber(xfs_dir2_sf_t *sfp, xfs_dir2_inou_t *from) -{ - return ((sfp)->hdr.i8count == 0 ? \ - (xfs_intino_t)XFS_GET_DIR_INO4((from)->i4) : \ - (xfs_intino_t)XFS_GET_DIR_INO8((from)->i8)); -} - -static inline void xfs_dir2_sf_put_inumber(xfs_dir2_sf_t *sfp, xfs_ino_t *from, - xfs_dir2_inou_t *to) -{ - if ((sfp)->hdr.i8count == 0) - XFS_PUT_DIR_INO4(*(from), (to)->i4); - else - XFS_PUT_DIR_INO8(*(from), (to)->i8); -} - static inline xfs_dir2_data_aoff_t xfs_dir2_sf_get_offset(xfs_dir2_sf_entry_t *sfep) { @@ -155,6 +133,9 @@ xfs_dir2_sf_nextentry(xfs_dir2_sf_t *sfp /* * Functions. */ +extern xfs_ino_t xfs_dir2_sf_get_parent_ino(struct xfs_dir2_sf *sfp); +extern xfs_ino_t xfs_dir2_sfe_get_ino(struct xfs_dir2_sf *sfp, + struct xfs_dir2_sf_entry *sfep); extern int xfs_dir2_block_sfsize(struct xfs_inode *dp, struct xfs_dir2_block *block, xfs_dir2_sf_hdr_t *sfhp); Index: xfs/fs/xfs/xfs_inum.h =================================================================== --- xfs.orig/fs/xfs/xfs_inum.h 2010-05-18 13:04:38.266255847 +0200 +++ xfs/fs/xfs/xfs_inum.h 2010-05-27 14:48:16.712037505 +0200 @@ -28,17 +28,6 @@ typedef __uint32_t xfs_agino_t; /* within allocation grp inode number */ -/* - * Useful inode bits for this kernel. - * Used in some places where having 64-bits in the 32-bit kernels - * costs too much. - */ -#if XFS_BIG_INUMS -typedef xfs_ino_t xfs_intino_t; -#else -typedef __uint32_t xfs_intino_t; -#endif - #define NULLFSINO ((xfs_ino_t)-1) #define NULLAGINO ((xfs_agino_t)-1) Index: xfs/fs/xfs/xfs_dir2_block.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_block.c 2010-05-25 11:40:59.336004958 +0200 +++ xfs/fs/xfs/xfs_dir2_block.c 2010-05-27 14:48:16.718003421 +0200 @@ -1146,7 +1146,7 @@ xfs_dir2_sf_to_block( */ dep = (xfs_dir2_data_entry_t *) ((char *)block + XFS_DIR2_DATA_DOTDOT_OFFSET); - dep->inumber = cpu_to_be64(xfs_dir2_sf_get_inumber(sfp, &sfp->hdr.parent)); + dep->inumber = cpu_to_be64(xfs_dir2_sf_get_parent_ino(sfp)); dep->namelen = 2; dep->name[0] = dep->name[1] = '.'; tagp = xfs_dir2_data_entry_tag_p(dep); @@ -1195,8 +1195,7 @@ xfs_dir2_sf_to_block( * Copy a real entry. */ dep = (xfs_dir2_data_entry_t *)((char *)block + newoffset); - dep->inumber = cpu_to_be64(xfs_dir2_sf_get_inumber(sfp, - xfs_dir2_sf_inumberp(sfep))); + dep->inumber = cpu_to_be64(xfs_dir2_sfe_get_ino(sfp, sfep)); dep->namelen = sfep->namelen; memcpy(dep->name, sfep->name, dep->namelen); tagp = xfs_dir2_data_entry_tag_p(dep); From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TE3g3V104882 for ; Wed, 29 Jun 2011 09:03:42 -0500 X-ASG-Debug-ID: 1309356221-1de603e40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 01EEF409EA for ; Wed, 29 Jun 2011 07:03:41 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id AEqayYOezStAf1bj for ; Wed, 29 Jun 2011 07:03:41 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMj-0008Mo-Dp for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:41 +0000 Message-Id: <20110629140341.393577147@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:34 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 25/27] xfs: return the buffer locked from xfs_buf_get_uncached Subject: [PATCH 25/27] xfs: return the buffer locked from xfs_buf_get_uncached References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-buf_get_uncached-locked-buffer X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356222 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 All other xfs_buf_get/read-like helpers return the buffer locked, make sure xfs_buf_get_uncached isn't different for no reason. Half of the callers already lock it directly after, and the others probably should also keep it locked if only for consistency and beeing able to use xfs_buf_rele, but I'll leave that for later. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_buf.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.c 2011-06-29 13:57:15.596795734 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_buf.c 2011-06-29 13:57:32.243372220 +0200 @@ -679,7 +679,6 @@ xfs_buf_read_uncached( return NULL; /* set up the buffer for a read IO */ - xfs_buf_lock(bp); XFS_BUF_SET_ADDR(bp, daddr); XFS_BUF_READ(bp); XFS_BUF_BUSY(bp); @@ -814,8 +813,6 @@ xfs_buf_get_uncached( goto fail_free_mem; } - xfs_buf_unlock(bp); - trace_xfs_buf_get_uncached(bp, _RET_IP_); return bp; Index: xfs/fs/xfs/xfs_log.c =================================================================== --- xfs.orig/fs/xfs/xfs_log.c 2011-06-29 13:53:33.954663139 +0200 +++ xfs/fs/xfs/xfs_log.c 2011-06-29 13:57:32.243372220 +0200 @@ -1090,8 +1090,7 @@ xlog_alloc_log(xfs_mount_t *mp, log->l_iclog_size, 0); if (!bp) goto out_free_iclog; - if (!xfs_buf_trylock(bp)) - ASSERT(0); + XFS_BUF_SET_IODONE_FUNC(bp, xlog_iodone); XFS_BUF_SET_FSPRIVATE2(bp, (unsigned long)1); iclog->ic_bp = bp; Index: xfs/fs/xfs/xfs_log_recover.c =================================================================== --- xfs.orig/fs/xfs/xfs_log_recover.c 2011-06-29 13:51:20.425386530 +0200 +++ xfs/fs/xfs/xfs_log_recover.c 2011-06-29 13:57:32.246705535 +0200 @@ -91,6 +91,8 @@ xlog_get_bp( xlog_t *log, int nbblks) { + struct xfs_buf *bp; + if (!xlog_buf_bbcount_valid(log, nbblks)) { xfs_warn(log->l_mp, "Invalid block length (0x%x) for buffer", nbblks); @@ -118,8 +120,10 @@ xlog_get_bp( nbblks += log->l_sectBBsize; nbblks = round_up(nbblks, log->l_sectBBsize); - return xfs_buf_get_uncached(log->l_mp->m_logdev_targp, - BBTOB(nbblks), 0); + bp = xfs_buf_get_uncached(log->l_mp->m_logdev_targp, BBTOB(nbblks), 0); + if (bp) + xfs_buf_unlock(bp); + return bp; } STATIC void Index: xfs/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.c 2011-06-29 11:35:45.789455635 +0200 +++ xfs/fs/xfs/xfs_vnodeops.c 2011-06-29 13:57:32.250038850 +0200 @@ -1969,6 +1969,8 @@ xfs_zero_remaining_bytes( if (!bp) return XFS_ERROR(ENOMEM); + xfs_buf_unlock(bp); + for (offset = startoff; offset <= endoff; offset = lastoffset + 1) { offset_fsb = XFS_B_TO_FSBT(mp, offset); nimap = 1; From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 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 p5TE3gSZ104872 for ; Wed, 29 Jun 2011 09:03:42 -0500 X-ASG-Debug-ID: 1309356220-34ea02130000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5DC38E4B815 for ; Wed, 29 Jun 2011 07:03:40 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id WqGAPAsKa2I6RWZL for ; Wed, 29 Jun 2011 07:03:40 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMi-0008KE-F9 for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:40 +0000 Message-Id: <20110629140340.434391854@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:29 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 20/27] xfs: kill struct xfs_dir2_data Subject: [PATCH 20/27] xfs: kill struct xfs_dir2_data References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-kill-xfs_dir2_data_t X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356221 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67470 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Remove the confusing xfs_dir2_data structure. It is supposed to describe an XFS dir2 data btree block, but due to the variable sized nature of almost all elements in it it can't actuall do anything close to that job. In addition to accessing the fixed offset header structure it was only used to get a pointer to the first dir or unused entry after it, which can be trivially replaced by pointer arithmetics on the header pointer. For most users that is actually more natural anyway, as they don't use a typed pointer but rather a character pointer for further arithmetics. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_dir2_data.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_data.c 2011-06-29 13:41:14.272003679 +0200 +++ xfs/fs/xfs/xfs_dir2_data.c 2011-06-29 13:41:15.021999615 +0200 @@ -53,7 +53,6 @@ xfs_dir2_data_check( xfs_dir2_data_free_t *bf; /* bestfree table */ xfs_dir2_block_tail_t *btp=NULL; /* block tail */ int count; /* count of entries found */ - xfs_dir2_data_t *d; /* data block pointer */ xfs_dir2_data_hdr_t *hdr; /* data block header */ xfs_dir2_data_entry_t *dep; /* data entry */ xfs_dir2_data_free_t *dfp; /* bestfree entry */ @@ -70,10 +69,9 @@ xfs_dir2_data_check( struct xfs_name name; mp = dp->i_mount; - d = bp->data; - hdr = &d->hdr; + hdr = bp->data; bf = hdr->bestfree; - p = (char *)d->u; + p = (char *)(hdr + 1); if (hdr->magic == cpu_to_be32(XFS_DIR2_BLOCK_MAGIC)) { btp = xfs_dir2_block_tail_p(mp, hdr); @@ -336,7 +334,6 @@ xfs_dir2_data_freescan( xfs_dir2_data_hdr_t *hdr, /* data block header */ int *loghead) /* out: log data header */ { - xfs_dir2_data_t *d = (xfs_dir2_data_t *)hdr; xfs_dir2_block_tail_t *btp; /* block tail */ xfs_dir2_data_entry_t *dep; /* active data entry */ xfs_dir2_data_unused_t *dup; /* unused data entry */ @@ -355,7 +352,7 @@ xfs_dir2_data_freescan( /* * Set up pointers. */ - p = (char *)d->u; + p = (char *)(hdr + 1); if (be32_to_cpu(hdr->magic) == XFS_DIR2_BLOCK_MAGIC) { btp = xfs_dir2_block_tail_p(mp, hdr); endp = (char *)xfs_dir2_block_leaf_p(btp); @@ -398,7 +395,6 @@ xfs_dir2_data_init( xfs_dabuf_t **bpp) /* output block buffer */ { xfs_dabuf_t *bp; /* block buffer */ - xfs_dir2_data_t *d; /* pointer to block */ xfs_dir2_data_hdr_t *hdr; /* data block header */ xfs_inode_t *dp; /* incore directory inode */ xfs_dir2_data_unused_t *dup; /* unused entry pointer */ @@ -424,8 +420,7 @@ xfs_dir2_data_init( /* * Initialize the header. */ - d = bp->data; - hdr = &d->hdr; + hdr = bp->data; hdr->magic = cpu_to_be32(XFS_DIR2_DATA_MAGIC); hdr->bestfree[0].offset = cpu_to_be16(sizeof(*hdr)); for (i = 1; i < XFS_DIR2_DATA_FD_COUNT; i++) { @@ -436,7 +431,7 @@ xfs_dir2_data_init( /* * Set up an unused entry for the block's body. */ - dup = &d->u[0].unused; + dup = (xfs_dir2_data_unused_t *)(hdr + 1); dup->freetag = cpu_to_be16(XFS_DIR2_DATA_FREE_TAG); t = mp->m_dirblksize - (uint)sizeof(*hdr); Index: xfs/fs/xfs/xfs_dir2_data.h =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_data.h 2011-06-29 13:41:14.272003679 +0200 +++ xfs/fs/xfs/xfs_dir2_data.h 2011-06-29 13:42:35.521563513 +0200 @@ -20,6 +20,22 @@ /* * Directory format 2, data block structures. + * + * A pure data block looks like the following drawing on disk: + * + * +-------------------------------------------------+ + * | xfs_dir2_data_hdr_t | + * +-------------------------------------------------+ + * | xfs_dir2_data_entry_t OR xfs_dir2_data_unused_t | + * | xfs_dir2_data_entry_t OR xfs_dir2_data_unused_t | + * | xfs_dir2_data_entry_t OR xfs_dir2_data_unused_t | + * | ... | + * +-------------------------------------------------+ + * | unused space | + * +-------------------------------------------------+ + * + * As all the entries are variable sized structures the accessors in this + * file need to be used to iterate over them. */ struct xfs_dabuf; @@ -103,23 +119,6 @@ typedef struct xfs_dir2_data_unused { __be16 tag; /* starting offset of us */ } xfs_dir2_data_unused_t; -typedef union { - xfs_dir2_data_entry_t entry; - xfs_dir2_data_unused_t unused; -} xfs_dir2_data_union_t; - -/* - * Generic data block structure, for xfs_db. - */ -typedef struct xfs_dir2_data { - xfs_dir2_data_hdr_t hdr; /* magic XFS_DIR2_DATA_MAGIC */ - xfs_dir2_data_union_t u[1]; -} xfs_dir2_data_t; - -/* - * Macros. - */ - /* * Size of a data entry. */ Index: xfs/fs/xfs/xfs_dir2_leaf.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_leaf.c 2011-06-29 13:41:14.275336994 +0200 +++ xfs/fs/xfs/xfs_dir2_leaf.c 2011-06-29 13:41:15.025332931 +0200 @@ -781,7 +781,6 @@ xfs_dir2_leaf_getdents( int byteoff; /* offset in current block */ xfs_dir2_db_t curdb; /* db for current block */ xfs_dir2_off_t curoff; /* current overall offset */ - xfs_dir2_data_t *data; /* data block structure */ xfs_dir2_data_hdr_t *hdr; /* data block header */ xfs_dir2_data_entry_t *dep; /* data entry */ xfs_dir2_data_unused_t *dup; /* unused entry */ @@ -1040,13 +1039,12 @@ xfs_dir2_leaf_getdents( else if (curoff > newoff) ASSERT(xfs_dir2_byte_to_db(mp, curoff) == curdb); - data = bp->data; - hdr = &data->hdr; + hdr = bp->data; xfs_dir2_data_check(dp, bp); /* * Find our position in the block. */ - ptr = (char *)&data->u; + ptr = (char *)(hdr + 1); byteoff = xfs_dir2_byte_to_off(mp, curoff); /* * Skip past the header. From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64, LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 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 p5TE3exZ104783 for ; Wed, 29 Jun 2011 09:03:41 -0500 X-ASG-Debug-ID: 1309356218-3b4302a60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 91264409D4 for ; Wed, 29 Jun 2011 07:03:38 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id jYIFZvBg10hvMVxC for ; Wed, 29 Jun 2011 07:03:38 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMf-0008D0-Lo for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:37 +0000 Message-Id: <20110629140337.641422449@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:15 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 06/27] xfs: split xfs_setattr Subject: [PATCH 06/27] xfs: split xfs_setattr References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-split-setattr X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356218 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Split up xfs_setattr into two functions, one for the complex truncate handling, and one for the trivial attribute updates. Also move both new routines to xfs_iops.c as they are fairly Linux-specific. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_iops.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_iops.c 2011-06-29 11:29:02.684972774 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_iops.c 2011-06-29 11:29:07.154948558 +0200 @@ -39,6 +39,7 @@ #include "xfs_buf_item.h" #include "xfs_utils.h" #include "xfs_vnodeops.h" +#include "xfs_inode_item.h" #include "xfs_trace.h" #include @@ -497,12 +498,449 @@ xfs_vn_getattr( return 0; } +int +xfs_setattr_nonsize( + struct xfs_inode *ip, + struct iattr *iattr, + int flags) +{ + xfs_mount_t *mp = ip->i_mount; + struct inode *inode = VFS_I(ip); + int mask = iattr->ia_valid; + xfs_trans_t *tp; + int error; + uid_t uid = 0, iuid = 0; + gid_t gid = 0, igid = 0; + struct xfs_dquot *udqp = NULL, *gdqp = NULL; + struct xfs_dquot *olddquot1 = NULL, *olddquot2 = NULL; + + trace_xfs_setattr(ip); + + if (mp->m_flags & XFS_MOUNT_RDONLY) + return XFS_ERROR(EROFS); + + if (XFS_FORCED_SHUTDOWN(mp)) + return XFS_ERROR(EIO); + + error = -inode_change_ok(inode, iattr); + if (error) + return XFS_ERROR(error); + + ASSERT((mask & ATTR_SIZE) == 0); + + /* + * If disk quotas is on, we make sure that the dquots do exist on disk, + * before we start any other transactions. Trying to do this later + * is messy. We don't care to take a readlock to look at the ids + * in inode here, because we can't hold it across the trans_reserve. + * If the IDs do change before we take the ilock, we're covered + * because the i_*dquot fields will get updated anyway. + */ + if (XFS_IS_QUOTA_ON(mp) && (mask & (ATTR_UID|ATTR_GID))) { + uint qflags = 0; + + if ((mask & ATTR_UID) && XFS_IS_UQUOTA_ON(mp)) { + uid = iattr->ia_uid; + qflags |= XFS_QMOPT_UQUOTA; + } else { + uid = ip->i_d.di_uid; + } + if ((mask & ATTR_GID) && XFS_IS_GQUOTA_ON(mp)) { + gid = iattr->ia_gid; + qflags |= XFS_QMOPT_GQUOTA; + } else { + gid = ip->i_d.di_gid; + } + + /* + * We take a reference when we initialize udqp and gdqp, + * so it is important that we never blindly double trip on + * the same variable. See xfs_create() for an example. + */ + ASSERT(udqp == NULL); + ASSERT(gdqp == NULL); + error = xfs_qm_vop_dqalloc(ip, uid, gid, xfs_get_projid(ip), + qflags, &udqp, &gdqp); + if (error) + return error; + } + + tp = xfs_trans_alloc(mp, XFS_TRANS_SETATTR_NOT_SIZE); + error = xfs_trans_reserve(tp, 0, XFS_ICHANGE_LOG_RES(mp), 0, 0, 0); + if (error) + goto out_dqrele; + + xfs_ilock(ip, XFS_ILOCK_EXCL); + + /* + * Change file ownership. Must be the owner or privileged. + */ + if (mask & (ATTR_UID|ATTR_GID)) { + /* + * These IDs could have changed since we last looked at them. + * But, we're assured that if the ownership did change + * while we didn't have the inode locked, inode's dquot(s) + * would have changed also. + */ + iuid = ip->i_d.di_uid; + igid = ip->i_d.di_gid; + gid = (mask & ATTR_GID) ? iattr->ia_gid : igid; + uid = (mask & ATTR_UID) ? iattr->ia_uid : iuid; + + /* + * Do a quota reservation only if uid/gid is actually + * going to change. + */ + if (XFS_IS_QUOTA_RUNNING(mp) && + ((XFS_IS_UQUOTA_ON(mp) && iuid != uid) || + (XFS_IS_GQUOTA_ON(mp) && igid != gid))) { + ASSERT(tp); + error = xfs_qm_vop_chown_reserve(tp, ip, udqp, gdqp, + capable(CAP_FOWNER) ? + XFS_QMOPT_FORCE_RES : 0); + if (error) /* out of quota */ + goto out_trans_cancel; + } + } + + xfs_trans_ijoin(tp, ip); + + /* + * Change file ownership. Must be the owner or privileged. + */ + if (mask & (ATTR_UID|ATTR_GID)) { + /* + * CAP_FSETID overrides the following restrictions: + * + * The set-user-ID and set-group-ID bits of a file will be + * cleared upon successful return from chown() + */ + if ((ip->i_d.di_mode & (S_ISUID|S_ISGID)) && + !capable(CAP_FSETID)) + ip->i_d.di_mode &= ~(S_ISUID|S_ISGID); + + /* + * Change the ownerships and register quota modifications + * in the transaction. + */ + if (iuid != uid) { + if (XFS_IS_QUOTA_RUNNING(mp) && XFS_IS_UQUOTA_ON(mp)) { + ASSERT(mask & ATTR_UID); + ASSERT(udqp); + 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_QUOTA_RUNNING(mp) && XFS_IS_GQUOTA_ON(mp)) { + ASSERT(!XFS_IS_PQUOTA_ON(mp)); + ASSERT(mask & ATTR_GID); + ASSERT(gdqp); + olddquot2 = xfs_qm_vop_chown(tp, ip, + &ip->i_gdquot, gdqp); + } + ip->i_d.di_gid = gid; + inode->i_gid = gid; + } + } + + /* + * Change file access modes. + */ + if (mask & ATTR_MODE) { + umode_t mode = iattr->ia_mode; + + if (!in_group_p(inode->i_gid) && !capable(CAP_FSETID)) + mode &= ~S_ISGID; + + ip->i_d.di_mode &= S_IFMT; + ip->i_d.di_mode |= mode & ~S_IFMT; + + inode->i_mode &= S_IFMT; + inode->i_mode |= mode & ~S_IFMT; + } + + /* + * Change file access or modified times. + */ + if (mask & ATTR_ATIME) { + inode->i_atime = iattr->ia_atime; + ip->i_d.di_atime.t_sec = iattr->ia_atime.tv_sec; + ip->i_d.di_atime.t_nsec = iattr->ia_atime.tv_nsec; + ip->i_update_core = 1; + } + if (mask & ATTR_CTIME) { + inode->i_ctime = iattr->ia_ctime; + ip->i_d.di_ctime.t_sec = iattr->ia_ctime.tv_sec; + ip->i_d.di_ctime.t_nsec = iattr->ia_ctime.tv_nsec; + ip->i_update_core = 1; + } + if (mask & ATTR_MTIME) { + inode->i_mtime = iattr->ia_mtime; + ip->i_d.di_mtime.t_sec = iattr->ia_mtime.tv_sec; + ip->i_d.di_mtime.t_nsec = iattr->ia_mtime.tv_nsec; + ip->i_update_core = 1; + } + + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); + + XFS_STATS_INC(xs_ig_attrchg); + + if (mp->m_flags & XFS_MOUNT_WSYNC) + xfs_trans_set_sync(tp); + error = xfs_trans_commit(tp, 0); + + xfs_iunlock(ip, XFS_ILOCK_EXCL); + + /* + * Release any dquot(s) the inode had kept before chown. + */ + xfs_qm_dqrele(olddquot1); + xfs_qm_dqrele(olddquot2); + xfs_qm_dqrele(udqp); + xfs_qm_dqrele(gdqp); + + if (error) + return XFS_ERROR(error); + + /* + * XXX(hch): Updating the ACL entries is not atomic vs the i_mode + * update. We could avoid this with linked transactions + * and passing down the transaction pointer all the way + * to attr_set. No previous user of the generic + * Posix ACL code seems to care about this issue either. + */ + if ((mask & ATTR_MODE) && !(flags & XFS_ATTR_NOACL)) { + error = -xfs_acl_chmod(inode); + if (error) + return XFS_ERROR(error); + } + + return 0; + +out_trans_cancel: + xfs_trans_cancel(tp, 0); + xfs_iunlock(ip, XFS_ILOCK_EXCL); +out_dqrele: + xfs_qm_dqrele(udqp); + xfs_qm_dqrele(gdqp); + return error; +} + +/* + * Truncate file. Must have write permission and not be a directory. + */ +int +xfs_setattr_size( + struct xfs_inode *ip, + struct iattr *iattr, + int flags) +{ + struct xfs_mount *mp = ip->i_mount; + struct inode *inode = VFS_I(ip); + int mask = iattr->ia_valid; + struct xfs_trans *tp; + int error; + uint lock_flags; + uint commit_flags = 0; + + trace_xfs_setattr(ip); + + if (mp->m_flags & XFS_MOUNT_RDONLY) + return XFS_ERROR(EROFS); + + if (XFS_FORCED_SHUTDOWN(mp)) + return XFS_ERROR(EIO); + + error = -inode_change_ok(inode, iattr); + if (error) + return XFS_ERROR(error); + + ASSERT(S_ISREG(ip->i_d.di_mode)); + ASSERT((mask & (ATTR_MODE|ATTR_UID|ATTR_GID|ATTR_ATIME|ATTR_ATIME_SET| + ATTR_MTIME_SET|ATTR_KILL_SUID|ATTR_KILL_SGID| + ATTR_KILL_PRIV|ATTR_TIMES_SET)) == 0); + + lock_flags = XFS_ILOCK_EXCL; + if (!(flags & XFS_ATTR_NOLOCK)) + lock_flags |= XFS_IOLOCK_EXCL; + xfs_ilock(ip, lock_flags); + + /* + * Short circuit the truncate case for zero length files. + */ + if (iattr->ia_size == 0 && + ip->i_size == 0 && ip->i_d.di_nextents == 0) { + xfs_iunlock(ip, XFS_ILOCK_EXCL); + lock_flags &= ~XFS_ILOCK_EXCL; + if (mask & ATTR_CTIME) { + inode->i_mtime = inode->i_ctime = + current_fs_time(inode->i_sb); + xfs_mark_inode_dirty_sync(ip); + } + goto out_unlock; + } + + /* + * Make sure that the dquots are attached to the inode. + */ + error = xfs_qm_dqattach_locked(ip, 0); + if (error) + goto out_unlock; + + /* + * Now we can make the changes. Before we join the inode to the + * transaction, take care of the part of the truncation that must be + * done without the inode lock. This needs to be done before joining + * the inode to the transaction, because the inode cannot be unlocked + * once it is a part of the transaction. + */ + if (iattr->ia_size > ip->i_size) { + /* + * Do the first part of growing a file: zero any data in the + * last block that is beyond the old EOF. We need to do this + * before the inode is joined to the transaction to modify + * i_size. + */ + error = xfs_zero_eof(ip, iattr->ia_size, ip->i_size); + if (error) + goto out_unlock; + } + xfs_iunlock(ip, XFS_ILOCK_EXCL); + lock_flags &= ~XFS_ILOCK_EXCL; + + /* + * We are going to log the inode size change in this transaction so + * any previous writes that are beyond the on disk EOF and the new + * EOF that have not been written out need to be written here. If we + * do not write the data out, we expose ourselves to the null files + * problem. + * + * Only flush from the on disk size to the smaller of the in memory + * file size or the new size as that's the range we really care about + * here and prevents waiting for other data not within the range we + * care about here. + */ + if (ip->i_size != ip->i_d.di_size && iattr->ia_size > ip->i_d.di_size) { + error = xfs_flush_pages(ip, ip->i_d.di_size, iattr->ia_size, + XBF_ASYNC, FI_NONE); + if (error) + goto out_unlock; + } + + /* + * Wait for all I/O to complete. + */ + xfs_ioend_wait(ip); + + error = -block_truncate_page(inode->i_mapping, iattr->ia_size, + xfs_get_blocks); + if (error) + goto out_unlock; + + tp = xfs_trans_alloc(mp, XFS_TRANS_SETATTR_SIZE); + error = xfs_trans_reserve(tp, 0, XFS_ITRUNCATE_LOG_RES(mp), 0, + XFS_TRANS_PERM_LOG_RES, + XFS_ITRUNCATE_LOG_COUNT); + if (error) + goto out_trans_cancel; + + truncate_setsize(inode, iattr->ia_size); + + commit_flags = XFS_TRANS_RELEASE_LOG_RES; + lock_flags |= XFS_ILOCK_EXCL; + + xfs_ilock(ip, XFS_ILOCK_EXCL); + + xfs_trans_ijoin(tp, ip); + + /* + * Only change the c/mtime if we are changing the size or we are + * explicitly asked to change it. This handles the semantic difference + * between truncate() and ftruncate() as implemented in the VFS. + * + * The regular truncate() case without ATTR_CTIME and ATTR_MTIME is a + * special case where we need to update the times despite not having + * these flags set. For all other operations the VFS set these flags + * explicitly if it wants a timestamp update. + */ + if (iattr->ia_size != ip->i_size && + (!(mask & (ATTR_CTIME | ATTR_MTIME)))) { + iattr->ia_ctime = iattr->ia_mtime = + current_fs_time(inode->i_sb); + mask |= ATTR_CTIME | ATTR_MTIME; + } + + if (iattr->ia_size > ip->i_size) { + ip->i_d.di_size = iattr->ia_size; + ip->i_size = iattr->ia_size; + } else if (iattr->ia_size <= ip->i_size || + (iattr->ia_size == 0 && ip->i_d.di_nextents)) { + /* + * Signal a sync transaction unless we are truncating an + * already unlinked file on a wsync filesystem. + */ + error = xfs_itruncate_finish(&tp, ip, iattr->ia_size, + XFS_DATA_FORK, + ((ip->i_d.di_nlink != 0 || + !(mp->m_flags & XFS_MOUNT_WSYNC)) + ? 1 : 0)); + if (error) + goto out_trans_abort; + + /* + * Truncated "down", so we're removing references to old data + * here - if we delay flushing for a long time, we expose + * ourselves unduly to the notorious NULL files problem. So, + * we mark this inode and flush it when the file is closed, + * and do not wait the usual (long) time for writeout. + */ + xfs_iflags_set(ip, XFS_ITRUNCATED); + } + + if (mask & ATTR_CTIME) { + inode->i_ctime = iattr->ia_ctime; + ip->i_d.di_ctime.t_sec = iattr->ia_ctime.tv_sec; + ip->i_d.di_ctime.t_nsec = iattr->ia_ctime.tv_nsec; + ip->i_update_core = 1; + } + if (mask & ATTR_MTIME) { + inode->i_mtime = iattr->ia_mtime; + ip->i_d.di_mtime.t_sec = iattr->ia_mtime.tv_sec; + ip->i_d.di_mtime.t_nsec = iattr->ia_mtime.tv_nsec; + ip->i_update_core = 1; + } + + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); + + XFS_STATS_INC(xs_ig_attrchg); + + if (mp->m_flags & XFS_MOUNT_WSYNC) + xfs_trans_set_sync(tp); + + error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); +out_unlock: + if (lock_flags) + xfs_iunlock(ip, lock_flags); + return error; + +out_trans_abort: + commit_flags |= XFS_TRANS_ABORT; +out_trans_cancel: + xfs_trans_cancel(tp, commit_flags); + goto out_unlock; +} + STATIC int xfs_vn_setattr( struct dentry *dentry, struct iattr *iattr) { - return -xfs_setattr(XFS_I(dentry->d_inode), iattr, 0); + if (iattr->ia_valid & ATTR_SIZE) + return -xfs_setattr_size(XFS_I(dentry->d_inode), iattr, 0); + return -xfs_setattr_nonsize(XFS_I(dentry->d_inode), iattr, 0); } #define XFS_FIEMAP_FLAGS (FIEMAP_FLAG_SYNC|FIEMAP_FLAG_XATTR) Index: xfs/fs/xfs/linux-2.6/xfs_acl.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_acl.c 2011-06-29 11:29:02.698306035 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_acl.c 2011-06-29 11:29:07.154948558 +0200 @@ -264,7 +264,7 @@ xfs_set_mode(struct inode *inode, mode_t iattr.ia_mode = mode; iattr.ia_ctime = current_fs_time(inode->i_sb); - error = -xfs_setattr(XFS_I(inode), &iattr, XFS_ATTR_NOACL); + error = -xfs_setattr_nonsize(XFS_I(inode), &iattr, XFS_ATTR_NOACL); } return error; Index: xfs/fs/xfs/linux-2.6/xfs_file.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_file.c 2011-06-29 11:29:02.711639297 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_file.c 2011-06-29 11:29:07.158281874 +0200 @@ -944,7 +944,7 @@ xfs_file_fallocate( iattr.ia_valid = ATTR_SIZE; iattr.ia_size = new_size; - error = -xfs_setattr(ip, &iattr, XFS_ATTR_NOLOCK); + error = -xfs_setattr_size(ip, &iattr, XFS_ATTR_NOLOCK); } out_unlock: Index: xfs/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.c 2011-06-29 11:29:02.721639242 +0200 +++ xfs/fs/xfs/xfs_vnodeops.c 2011-06-29 11:29:07.158281874 +0200 @@ -50,430 +50,6 @@ #include "xfs_vnodeops.h" #include "xfs_trace.h" -int -xfs_setattr( - struct xfs_inode *ip, - struct iattr *iattr, - int flags) -{ - xfs_mount_t *mp = ip->i_mount; - struct inode *inode = VFS_I(ip); - int mask = iattr->ia_valid; - xfs_trans_t *tp; - int code; - uint lock_flags; - uint commit_flags=0; - uid_t uid=0, iuid=0; - gid_t gid=0, igid=0; - struct xfs_dquot *udqp, *gdqp, *olddquot1, *olddquot2; - int need_iolock = 1; - - trace_xfs_setattr(ip); - - if (mp->m_flags & XFS_MOUNT_RDONLY) - return XFS_ERROR(EROFS); - - if (XFS_FORCED_SHUTDOWN(mp)) - return XFS_ERROR(EIO); - - code = -inode_change_ok(inode, iattr); - if (code) - return code; - - olddquot1 = olddquot2 = NULL; - udqp = gdqp = NULL; - - /* - * If disk quotas is on, we make sure that the dquots do exist on disk, - * before we start any other transactions. Trying to do this later - * is messy. We don't care to take a readlock to look at the ids - * in inode here, because we can't hold it across the trans_reserve. - * If the IDs do change before we take the ilock, we're covered - * because the i_*dquot fields will get updated anyway. - */ - if (XFS_IS_QUOTA_ON(mp) && (mask & (ATTR_UID|ATTR_GID))) { - uint qflags = 0; - - if ((mask & ATTR_UID) && XFS_IS_UQUOTA_ON(mp)) { - uid = iattr->ia_uid; - qflags |= XFS_QMOPT_UQUOTA; - } else { - uid = ip->i_d.di_uid; - } - if ((mask & ATTR_GID) && XFS_IS_GQUOTA_ON(mp)) { - gid = iattr->ia_gid; - qflags |= XFS_QMOPT_GQUOTA; - } else { - gid = ip->i_d.di_gid; - } - - /* - * We take a reference when we initialize udqp and gdqp, - * so it is important that we never blindly double trip on - * the same variable. See xfs_create() for an example. - */ - ASSERT(udqp == NULL); - ASSERT(gdqp == NULL); - code = xfs_qm_vop_dqalloc(ip, uid, gid, xfs_get_projid(ip), - qflags, &udqp, &gdqp); - if (code) - return code; - } - - /* - * For the other attributes, we acquire the inode lock and - * first do an error checking pass. - */ - tp = NULL; - lock_flags = XFS_ILOCK_EXCL; - if (flags & XFS_ATTR_NOLOCK) - need_iolock = 0; - if (!(mask & ATTR_SIZE)) { - tp = xfs_trans_alloc(mp, XFS_TRANS_SETATTR_NOT_SIZE); - commit_flags = 0; - code = xfs_trans_reserve(tp, 0, XFS_ICHANGE_LOG_RES(mp), - 0, 0, 0); - if (code) { - lock_flags = 0; - goto error_return; - } - } else { - if (need_iolock) - lock_flags |= XFS_IOLOCK_EXCL; - } - - xfs_ilock(ip, lock_flags); - - /* - * Change file ownership. Must be the owner or privileged. - */ - if (mask & (ATTR_UID|ATTR_GID)) { - /* - * These IDs could have changed since we last looked at them. - * But, we're assured that if the ownership did change - * while we didn't have the inode locked, inode's dquot(s) - * would have changed also. - */ - iuid = ip->i_d.di_uid; - igid = ip->i_d.di_gid; - gid = (mask & ATTR_GID) ? iattr->ia_gid : igid; - uid = (mask & ATTR_UID) ? iattr->ia_uid : iuid; - - /* - * Do a quota reservation only if uid/gid is actually - * going to change. - */ - 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_vop_chown_reserve(tp, ip, udqp, gdqp, - capable(CAP_FOWNER) ? - XFS_QMOPT_FORCE_RES : 0); - if (code) /* out of quota */ - goto error_return; - } - } - - /* - * Truncate file. Must have write permission and not be a directory. - */ - if (mask & ATTR_SIZE) { - /* Short circuit the truncate case for zero length files */ - if (iattr->ia_size == 0 && - ip->i_size == 0 && ip->i_d.di_nextents == 0) { - xfs_iunlock(ip, XFS_ILOCK_EXCL); - lock_flags &= ~XFS_ILOCK_EXCL; - if (mask & ATTR_CTIME) { - inode->i_mtime = inode->i_ctime = - current_fs_time(inode->i_sb); - xfs_mark_inode_dirty_sync(ip); - } - code = 0; - goto error_return; - } - - if (S_ISDIR(ip->i_d.di_mode)) { - code = XFS_ERROR(EISDIR); - goto error_return; - } else if (!S_ISREG(ip->i_d.di_mode)) { - code = XFS_ERROR(EINVAL); - goto error_return; - } - - /* - * Make sure that the dquots are attached to the inode. - */ - code = xfs_qm_dqattach_locked(ip, 0); - if (code) - goto error_return; - - /* - * Now we can make the changes. Before we join the inode - * to the transaction, if ATTR_SIZE is set then take care of - * the part of the truncation that must be done without the - * inode lock. This needs to be done before joining the inode - * to the transaction, because the inode cannot be unlocked - * once it is a part of the transaction. - */ - if (iattr->ia_size > ip->i_size) { - /* - * Do the first part of growing a file: zero any data - * in the last block that is beyond the old EOF. We - * need to do this before the inode is joined to the - * transaction to modify the i_size. - */ - code = xfs_zero_eof(ip, iattr->ia_size, ip->i_size); - if (code) - goto error_return; - } - xfs_iunlock(ip, XFS_ILOCK_EXCL); - lock_flags &= ~XFS_ILOCK_EXCL; - - /* - * We are going to log the inode size change in this - * transaction so any previous writes that are beyond the on - * disk EOF and the new EOF that have not been written out need - * to be written here. If we do not write the data out, we - * expose ourselves to the null files problem. - * - * Only flush from the on disk size to the smaller of the in - * memory file size or the new size as that's the range we - * really care about here and prevents waiting for other data - * not within the range we care about here. - */ - if (ip->i_size != ip->i_d.di_size && - iattr->ia_size > ip->i_d.di_size) { - code = xfs_flush_pages(ip, - ip->i_d.di_size, iattr->ia_size, - XBF_ASYNC, FI_NONE); - if (code) - goto error_return; - } - - /* wait for all I/O to complete */ - xfs_ioend_wait(ip); - - code = -block_truncate_page(inode->i_mapping, iattr->ia_size, - xfs_get_blocks); - if (code) - goto error_return; - - tp = xfs_trans_alloc(mp, XFS_TRANS_SETATTR_SIZE); - code = xfs_trans_reserve(tp, 0, XFS_ITRUNCATE_LOG_RES(mp), 0, - XFS_TRANS_PERM_LOG_RES, - XFS_ITRUNCATE_LOG_COUNT); - if (code) - goto error_return; - - truncate_setsize(inode, iattr->ia_size); - - commit_flags = XFS_TRANS_RELEASE_LOG_RES; - lock_flags |= XFS_ILOCK_EXCL; - - xfs_ilock(ip, XFS_ILOCK_EXCL); - - xfs_trans_ijoin(tp, ip); - - /* - * Only change the c/mtime if we are changing the size - * or we are explicitly asked to change it. This handles - * the semantic difference between truncate() and ftruncate() - * as implemented in the VFS. - * - * The regular truncate() case without ATTR_CTIME and ATTR_MTIME - * is a special case where we need to update the times despite - * not having these flags set. For all other operations the - * VFS set these flags explicitly if it wants a timestamp - * update. - */ - if (iattr->ia_size != ip->i_size && - (!(mask & (ATTR_CTIME | ATTR_MTIME)))) { - iattr->ia_ctime = iattr->ia_mtime = - current_fs_time(inode->i_sb); - mask |= ATTR_CTIME | ATTR_MTIME; - } - - if (iattr->ia_size > ip->i_size) { - ip->i_d.di_size = iattr->ia_size; - ip->i_size = iattr->ia_size; - xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); - } else if (iattr->ia_size <= ip->i_size || - (iattr->ia_size == 0 && ip->i_d.di_nextents)) { - /* - * signal a sync transaction unless - * we're truncating an already unlinked - * file on a wsync filesystem - */ - code = xfs_itruncate_finish(&tp, ip, iattr->ia_size, - XFS_DATA_FORK, - ((ip->i_d.di_nlink != 0 || - !(mp->m_flags & XFS_MOUNT_WSYNC)) - ? 1 : 0)); - if (code) - goto abort_return; - /* - * Truncated "down", so we're removing references - * to old data here - if we now delay flushing for - * a long time, we expose ourselves unduly to the - * notorious NULL files problem. So, we mark this - * vnode and flush it when the file is closed, and - * do not wait the usual (long) time for writeout. - */ - xfs_iflags_set(ip, XFS_ITRUNCATED); - } - } else if (tp) { - xfs_trans_ijoin(tp, ip); - } - - /* - * Change file ownership. Must be the owner or privileged. - */ - if (mask & (ATTR_UID|ATTR_GID)) { - /* - * CAP_FSETID overrides the following restrictions: - * - * The set-user-ID and set-group-ID bits of a file will be - * cleared upon successful return from chown() - */ - if ((ip->i_d.di_mode & (S_ISUID|S_ISGID)) && - !capable(CAP_FSETID)) { - ip->i_d.di_mode &= ~(S_ISUID|S_ISGID); - } - - /* - * Change the ownerships and register quota modifications - * in the transaction. - */ - if (iuid != uid) { - if (XFS_IS_QUOTA_RUNNING(mp) && XFS_IS_UQUOTA_ON(mp)) { - ASSERT(mask & ATTR_UID); - ASSERT(udqp); - 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_QUOTA_RUNNING(mp) && XFS_IS_GQUOTA_ON(mp)) { - ASSERT(!XFS_IS_PQUOTA_ON(mp)); - ASSERT(mask & ATTR_GID); - ASSERT(gdqp); - olddquot2 = xfs_qm_vop_chown(tp, ip, - &ip->i_gdquot, gdqp); - } - ip->i_d.di_gid = gid; - inode->i_gid = gid; - } - } - - /* - * Change file access modes. - */ - if (mask & ATTR_MODE) { - umode_t mode = iattr->ia_mode; - - if (!in_group_p(inode->i_gid) && !capable(CAP_FSETID)) - mode &= ~S_ISGID; - - ip->i_d.di_mode &= S_IFMT; - ip->i_d.di_mode |= mode & ~S_IFMT; - - inode->i_mode &= S_IFMT; - inode->i_mode |= mode & ~S_IFMT; - } - - /* - * Change file access or modified times. - */ - if (mask & ATTR_ATIME) { - inode->i_atime = iattr->ia_atime; - ip->i_d.di_atime.t_sec = iattr->ia_atime.tv_sec; - ip->i_d.di_atime.t_nsec = iattr->ia_atime.tv_nsec; - ip->i_update_core = 1; - } - if (mask & ATTR_CTIME) { - inode->i_ctime = iattr->ia_ctime; - ip->i_d.di_ctime.t_sec = iattr->ia_ctime.tv_sec; - ip->i_d.di_ctime.t_nsec = iattr->ia_ctime.tv_nsec; - ip->i_update_core = 1; - } - if (mask & ATTR_MTIME) { - inode->i_mtime = iattr->ia_mtime; - ip->i_d.di_mtime.t_sec = iattr->ia_mtime.tv_sec; - ip->i_d.di_mtime.t_nsec = iattr->ia_mtime.tv_nsec; - ip->i_update_core = 1; - } - - /* - * And finally, log the inode core if any attribute in it - * has been changed. - */ - if (mask & (ATTR_UID|ATTR_GID|ATTR_MODE| - ATTR_ATIME|ATTR_CTIME|ATTR_MTIME)) - xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); - - XFS_STATS_INC(xs_ig_attrchg); - - /* - * If this is a synchronous mount, make sure that the - * transaction goes to disk before returning to the user. - * This is slightly sub-optimal in that truncates require - * two sync transactions instead of one for wsync filesystems. - * One for the truncate and one for the timestamps since we - * don't want to change the timestamps unless we're sure the - * truncate worked. Truncates are less than 1% of the laddis - * mix so this probably isn't worth the trouble to optimize. - */ - code = 0; - if (mp->m_flags & XFS_MOUNT_WSYNC) - xfs_trans_set_sync(tp); - - code = xfs_trans_commit(tp, commit_flags); - - xfs_iunlock(ip, lock_flags); - - /* - * Release any dquot(s) the inode had kept before chown. - */ - xfs_qm_dqrele(olddquot1); - xfs_qm_dqrele(olddquot2); - xfs_qm_dqrele(udqp); - xfs_qm_dqrele(gdqp); - - if (code) - return code; - - /* - * XXX(hch): Updating the ACL entries is not atomic vs the i_mode - * update. We could avoid this with linked transactions - * and passing down the transaction pointer all the way - * to attr_set. No previous user of the generic - * Posix ACL code seems to care about this issue either. - */ - if ((mask & ATTR_MODE) && !(flags & XFS_ATTR_NOACL)) { - code = -xfs_acl_chmod(inode); - if (code) - return XFS_ERROR(code); - } - - return 0; - - abort_return: - commit_flags |= XFS_TRANS_ABORT; - error_return: - xfs_qm_dqrele(udqp); - xfs_qm_dqrele(gdqp); - if (tp) { - xfs_trans_cancel(tp, commit_flags); - } - if (lock_flags != 0) { - xfs_iunlock(ip, lock_flags); - } - return code; -} - /* * The maximum pathlen is 1024 bytes. Since the minimum file system * blocksize is 512 bytes, we can get a max of 2 extents back from @@ -2784,7 +2360,7 @@ xfs_change_file_space( iattr.ia_valid = ATTR_SIZE; iattr.ia_size = startoffset; - error = xfs_setattr(ip, &iattr, attr_flags); + error = xfs_setattr_size(ip, &iattr, attr_flags); if (error) return error; Index: xfs/fs/xfs/xfs_vnodeops.h =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.h 2011-06-29 11:29:02.734972504 +0200 +++ xfs/fs/xfs/xfs_vnodeops.h 2011-06-29 11:29:07.161615190 +0200 @@ -13,7 +13,8 @@ struct xfs_inode; struct xfs_iomap; -int xfs_setattr(struct xfs_inode *ip, struct iattr *vap, int flags); +int xfs_setattr_nonsize(struct xfs_inode *ip, struct iattr *vap, int flags); +int xfs_setattr_size(struct xfs_inode *ip, struct iattr *vap, int flags); #define XFS_ATTR_DMI 0x01 /* invocation from a DMI function */ #define XFS_ATTR_NONBLOCK 0x02 /* return EAGAIN if operation would block */ #define XFS_ATTR_NOLOCK 0x04 /* Don't grab any conflicting locks */ From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable version=3.4.0-r929098 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 p5TE3gHr104879 for ; Wed, 29 Jun 2011 09:03:42 -0500 X-ASG-Debug-ID: 1309356221-351c02300000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CD05AE4B82C for ; Wed, 29 Jun 2011 07:03:41 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 1k3rmHeqJoFpuN1s for ; Wed, 29 Jun 2011 07:03:41 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMj-0008Lm-25 for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:41 +0000 Message-Id: <20110629140341.028983322@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:32 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 23/27] xfs: remove the unused xfs_bufhash structure Subject: [PATCH 23/27] xfs: remove the unused xfs_bufhash structure References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-remove-bufhash X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356221 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67470 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_buf.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.h 2011-06-29 11:26:14.542550346 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_buf.h 2011-06-29 13:50:40.648935352 +0200 @@ -91,11 +91,6 @@ typedef enum { XBT_FORCE_FLUSH = 1, } xfs_buftarg_flags_t; -typedef struct xfs_bufhash { - struct list_head bh_list; - spinlock_t bh_lock; -} xfs_bufhash_t; - typedef struct xfs_buftarg { dev_t bt_dev; struct block_device *bt_bdev; From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_63,J_CHICKENPOX_66,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 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 p5TE3gcs104881 for ; Wed, 29 Jun 2011 09:03:42 -0500 X-ASG-Debug-ID: 1309356219-093702000000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2C6071D7DD2B for ; Wed, 29 Jun 2011 07:03:39 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id DrAlCPiycjFMmDeJ for ; Wed, 29 Jun 2011 07:03:39 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMh-0008He-G6 for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:39 +0000 Message-Id: <20110629140339.466443510@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:24 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 15/27] xfs: kill struct xfs_dir2_sf Subject: [PATCH 15/27] xfs: kill struct xfs_dir2_sf References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-kill-xfs_dir2_sf_t X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356220 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 The list field of it is never cactually used, so all uses can simply be replaced with the xfs_dir2_sf_hdr_t type that it has as first member. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_dir2.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2.c 2011-06-29 11:26:13.842554139 +0200 +++ xfs/fs/xfs/xfs_dir2.c 2011-06-29 13:06:35.083267610 +0200 @@ -122,15 +122,15 @@ int xfs_dir_isempty( xfs_inode_t *dp) { - xfs_dir2_sf_t *sfp; + xfs_dir2_sf_hdr_t *sfp; ASSERT((dp->i_d.di_mode & S_IFMT) == S_IFDIR); if (dp->i_d.di_size == 0) /* might happen during shutdown. */ return 1; if (dp->i_d.di_size > XFS_IFORK_DSIZE(dp)) return 0; - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; - return !sfp->hdr.count; + sfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; + return !sfp->count; } /* Index: xfs/fs/xfs/xfs_dir2_block.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_block.c 2011-06-29 13:03:56.590792904 +0200 +++ xfs/fs/xfs/xfs_dir2_block.c 2011-06-29 13:06:35.083267610 +0200 @@ -1028,8 +1028,6 @@ xfs_dir2_sf_to_block( xfs_dir2_leaf_entry_t *blp; /* block leaf entries */ xfs_dabuf_t *bp; /* block buffer */ xfs_dir2_block_tail_t *btp; /* block tail pointer */ - char *buf; /* sf buffer */ - int buf_len; xfs_dir2_data_entry_t *dep; /* data entry pointer */ xfs_inode_t *dp; /* incore directory inode */ int dummy; /* trash */ @@ -1043,7 +1041,8 @@ xfs_dir2_sf_to_block( int newoffset; /* offset from current entry */ int offset; /* target block offset */ xfs_dir2_sf_entry_t *sfep; /* sf entry pointer */ - xfs_dir2_sf_t *sfp; /* shortform structure */ + xfs_dir2_sf_hdr_t *oldsfp; /* old shortform header */ + xfs_dir2_sf_hdr_t *sfp; /* shortform header */ __be16 *tagp; /* end of data entry */ xfs_trans_t *tp; /* transaction pointer */ struct xfs_name name; @@ -1061,32 +1060,30 @@ xfs_dir2_sf_to_block( ASSERT(XFS_FORCED_SHUTDOWN(mp)); return XFS_ERROR(EIO); } + + oldsfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; + ASSERT(dp->i_df.if_bytes == dp->i_d.di_size); ASSERT(dp->i_df.if_u1.if_data != NULL); - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; - ASSERT(dp->i_d.di_size >= xfs_dir2_sf_hdr_size(sfp->hdr.i8count)); + ASSERT(dp->i_d.di_size >= xfs_dir2_sf_hdr_size(oldsfp->i8count)); + /* - * Copy the directory into the stack buffer. + * Copy the directory into a temporary buffer. * Then pitch the incore inode data so we can make extents. */ + sfp = kmem_alloc(dp->i_df.if_bytes, KM_SLEEP); + memcpy(sfp, oldsfp, dp->i_df.if_bytes); - buf_len = dp->i_df.if_bytes; - buf = kmem_alloc(buf_len, KM_SLEEP); - - memcpy(buf, sfp, buf_len); - xfs_idata_realloc(dp, -buf_len, XFS_DATA_FORK); + xfs_idata_realloc(dp, -dp->i_df.if_bytes, XFS_DATA_FORK); dp->i_d.di_size = 0; xfs_trans_log_inode(tp, dp, XFS_ILOG_CORE); - /* - * Reset pointer - old sfp is gone. - */ - sfp = (xfs_dir2_sf_t *)buf; + /* * Add block 0 to the inode. */ error = xfs_dir2_grow_inode(args, XFS_DIR2_DATA_SPACE, &blkno); if (error) { - kmem_free(buf); + kmem_free(sfp); return error; } /* @@ -1094,7 +1091,7 @@ xfs_dir2_sf_to_block( */ error = xfs_dir2_data_init(args, blkno, &bp); if (error) { - kmem_free(buf); + kmem_free(sfp); return error; } block = bp->data; @@ -1103,7 +1100,7 @@ xfs_dir2_sf_to_block( * Compute size of block "tail" area. */ i = (uint)sizeof(*btp) + - (sfp->hdr.count + 2) * (uint)sizeof(xfs_dir2_leaf_entry_t); + (sfp->count + 2) * (uint)sizeof(xfs_dir2_leaf_entry_t); /* * The whole thing is initialized to free by the init routine. * Say we're using the leaf and tail area. @@ -1117,7 +1114,7 @@ xfs_dir2_sf_to_block( * Fill in the tail. */ btp = xfs_dir2_block_tail_p(mp, block); - btp->count = cpu_to_be32(sfp->hdr.count + 2); /* ., .. */ + btp->count = cpu_to_be32(sfp->count + 2); /* ., .. */ btp->stale = 0; blp = xfs_dir2_block_leaf_p(btp); endoffset = (uint)((char *)blp - (char *)block); @@ -1159,7 +1156,8 @@ xfs_dir2_sf_to_block( /* * Loop over existing entries, stuff them in. */ - if ((i = 0) == sfp->hdr.count) + i = 0; + if (!sfp->count) sfep = NULL; else sfep = xfs_dir2_sf_firstentry(sfp); @@ -1208,13 +1206,13 @@ xfs_dir2_sf_to_block( blp[2 + i].address = cpu_to_be32(xfs_dir2_byte_to_dataptr(mp, (char *)dep - (char *)block)); offset = (int)((char *)(tagp + 1) - (char *)block); - if (++i == sfp->hdr.count) + if (++i == sfp->count) sfep = NULL; else sfep = xfs_dir2_sf_nextentry(sfp, sfep); } /* Done with the temporary buffer */ - kmem_free(buf); + kmem_free(sfp); /* * Sort the leaf entries by hash value. */ Index: xfs/fs/xfs/xfs_dir2_sf.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_sf.c 2011-06-29 13:03:56.587459589 +0200 +++ xfs/fs/xfs/xfs_dir2_sf.c 2011-06-29 13:06:35.086600926 +0200 @@ -68,21 +68,21 @@ static void xfs_dir2_sf_toino8(xfs_da_ar static xfs_ino_t xfs_dir2_sf_get_ino( - struct xfs_dir2_sf *sfp, + struct xfs_dir2_sf_hdr *hdr, xfs_dir2_inou_t *from) { - if (sfp->hdr.i8count) + if (hdr->i8count) return XFS_GET_DIR_INO8(from->i8); else return XFS_GET_DIR_INO4(from->i4); } static void xfs_dir2_sf_put_inumber( - struct xfs_dir2_sf *sfp, + struct xfs_dir2_sf_hdr *hdr, xfs_dir2_inou_t *to, xfs_ino_t ino) { - if (sfp->hdr.i8count) + if (hdr->i8count) XFS_PUT_DIR_INO8(ino, to->i8); else XFS_PUT_DIR_INO4(ino, to->i4); @@ -90,18 +90,18 @@ xfs_dir2_sf_put_inumber( xfs_ino_t xfs_dir2_sf_get_parent_ino( - struct xfs_dir2_sf *sfp) + struct xfs_dir2_sf_hdr *hdr) { - return xfs_dir2_sf_get_ino(sfp, &sfp->hdr.parent); + return xfs_dir2_sf_get_ino(hdr, &hdr->parent); } static void xfs_dir2_sf_put_parent_ino( - struct xfs_dir2_sf *sfp, + struct xfs_dir2_sf_hdr *hdr, xfs_ino_t ino) { - xfs_dir2_sf_put_inumber(sfp, &sfp->hdr.parent, ino); + xfs_dir2_sf_put_inumber(hdr, &hdr->parent, ino); } @@ -120,19 +120,19 @@ xfs_dir2_sf_inop( xfs_ino_t xfs_dir2_sfe_get_ino( - struct xfs_dir2_sf *sfp, + struct xfs_dir2_sf_hdr *hdr, struct xfs_dir2_sf_entry *sfep) { - return xfs_dir2_sf_get_ino(sfp, xfs_dir2_sf_inop(sfep)); + return xfs_dir2_sf_get_ino(hdr, xfs_dir2_sf_inop(sfep)); } static void xfs_dir2_sfe_put_ino( - struct xfs_dir2_sf *sfp, + struct xfs_dir2_sf_hdr *hdr, struct xfs_dir2_sf_entry *sfep, xfs_ino_t ino) { - xfs_dir2_sf_put_inumber(sfp, xfs_dir2_sf_inop(sfep), ino); + xfs_dir2_sf_put_inumber(hdr, xfs_dir2_sf_inop(sfep), ino); } @@ -215,7 +215,7 @@ xfs_dir2_block_sfsize( */ sfhp->count = count; sfhp->i8count = i8count; - xfs_dir2_sf_put_parent_ino((xfs_dir2_sf_t *)sfhp, parent); + xfs_dir2_sf_put_parent_ino(sfhp, parent); return size; } @@ -241,7 +241,7 @@ xfs_dir2_block_to_sf( xfs_mount_t *mp; /* filesystem mount point */ char *ptr; /* current data pointer */ xfs_dir2_sf_entry_t *sfep; /* shortform entry */ - xfs_dir2_sf_t *sfp; /* shortform structure */ + xfs_dir2_sf_hdr_t *sfp; /* shortform structure */ trace_xfs_dir2_block_to_sf(args); @@ -274,7 +274,7 @@ xfs_dir2_block_to_sf( /* * Copy the header into the newly allocate local space. */ - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; + sfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; memcpy(sfp, sfhp, xfs_dir2_sf_hdr_size(sfhp->i8count)); dp->i_d.di_size = size; /* @@ -353,7 +353,7 @@ xfs_dir2_sf_addname( xfs_dir2_data_aoff_t offset = 0; /* offset for new entry */ int old_isize; /* di_size before adding name */ int pick; /* which algorithm to use */ - xfs_dir2_sf_t *sfp; /* shortform structure */ + xfs_dir2_sf_hdr_t *sfp; /* shortform structure */ xfs_dir2_sf_entry_t *sfep = NULL; /* shortform entry */ trace_xfs_dir2_sf_addname(args); @@ -370,8 +370,8 @@ xfs_dir2_sf_addname( } ASSERT(dp->i_df.if_bytes == dp->i_d.di_size); ASSERT(dp->i_df.if_u1.if_data != NULL); - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; - ASSERT(dp->i_d.di_size >= xfs_dir2_sf_hdr_size(sfp->hdr.i8count)); + sfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; + ASSERT(dp->i_d.di_size >= xfs_dir2_sf_hdr_size(sfp->i8count)); /* * Compute entry (and change in) size. */ @@ -382,7 +382,7 @@ xfs_dir2_sf_addname( /* * Do we have to change to 8 byte inodes? */ - if (args->inumber > XFS_DIR2_MAX_SHORT_INUM && sfp->hdr.i8count == 0) { + if (args->inumber > XFS_DIR2_MAX_SHORT_INUM && sfp->i8count == 0) { /* * Yes, adjust the entry size and the total size. */ @@ -390,7 +390,7 @@ xfs_dir2_sf_addname( (uint)sizeof(xfs_dir2_ino8_t) - (uint)sizeof(xfs_dir2_ino4_t); incr_isize += - (sfp->hdr.count + 2) * + (sfp->count + 2) * ((uint)sizeof(xfs_dir2_ino8_t) - (uint)sizeof(xfs_dir2_ino4_t)); objchange = 1; @@ -460,11 +460,11 @@ xfs_dir2_sf_addname_easy( { int byteoff; /* byte offset in sf dir */ xfs_inode_t *dp; /* incore directory inode */ - xfs_dir2_sf_t *sfp; /* shortform structure */ + xfs_dir2_sf_hdr_t *sfp; /* shortform structure */ dp = args->dp; - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; + sfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; byteoff = (int)((char *)sfep - (char *)sfp); /* * Grow the in-inode space. @@ -474,7 +474,7 @@ xfs_dir2_sf_addname_easy( /* * Need to set up again due to realloc of the inode data. */ - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; + sfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; sfep = (xfs_dir2_sf_entry_t *)((char *)sfp + byteoff); /* * Fill in the new entry. @@ -486,10 +486,10 @@ xfs_dir2_sf_addname_easy( /* * Update the header and inode. */ - sfp->hdr.count++; + sfp->count++; #if XFS_BIG_INUMS if (args->inumber > XFS_DIR2_MAX_SHORT_INUM) - sfp->hdr.i8count++; + sfp->i8count++; #endif dp->i_d.di_size = new_isize; xfs_dir2_sf_check(args); @@ -519,19 +519,19 @@ xfs_dir2_sf_addname_hard( xfs_dir2_data_aoff_t offset; /* current offset value */ int old_isize; /* previous di_size */ xfs_dir2_sf_entry_t *oldsfep; /* entry in original dir */ - xfs_dir2_sf_t *oldsfp; /* original shortform dir */ + xfs_dir2_sf_hdr_t *oldsfp; /* original shortform dir */ xfs_dir2_sf_entry_t *sfep; /* entry in new dir */ - xfs_dir2_sf_t *sfp; /* new shortform dir */ + xfs_dir2_sf_hdr_t *sfp; /* new shortform dir */ /* * Copy the old directory to the stack buffer. */ dp = args->dp; - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; + sfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; old_isize = (int)dp->i_d.di_size; buf = kmem_alloc(old_isize, KM_SLEEP); - oldsfp = (xfs_dir2_sf_t *)buf; + oldsfp = (xfs_dir2_sf_hdr_t *)buf; memcpy(oldsfp, sfp, old_isize); /* * Loop over the old directory finding the place we're going @@ -560,7 +560,7 @@ xfs_dir2_sf_addname_hard( /* * Reset the pointer since the buffer was reallocated. */ - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; + sfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; /* * Copy the first part of the directory, including the header. */ @@ -574,10 +574,10 @@ xfs_dir2_sf_addname_hard( xfs_dir2_sf_put_offset(sfep, offset); memcpy(sfep->name, args->name, sfep->namelen); xfs_dir2_sfe_put_ino(sfp, sfep, args->inumber); - sfp->hdr.count++; + sfp->count++; #if XFS_BIG_INUMS if (args->inumber > XFS_DIR2_MAX_SHORT_INUM && !objchange) - sfp->hdr.i8count++; + sfp->i8count++; #endif /* * If there's more left to copy, do that. @@ -611,14 +611,14 @@ xfs_dir2_sf_addname_pick( xfs_mount_t *mp; /* filesystem mount point */ xfs_dir2_data_aoff_t offset; /* data block offset */ xfs_dir2_sf_entry_t *sfep; /* shortform entry */ - xfs_dir2_sf_t *sfp; /* shortform structure */ + xfs_dir2_sf_hdr_t *sfp; /* shortform structure */ int size; /* entry's data size */ int used; /* data bytes used */ dp = args->dp; mp = dp->i_mount; - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; + sfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; size = xfs_dir2_data_entsize(args->namelen); offset = XFS_DIR2_DATA_FIRST_OFFSET; sfep = xfs_dir2_sf_firstentry(sfp); @@ -628,7 +628,7 @@ xfs_dir2_sf_addname_pick( * Keep track of data offset and whether we've seen a place * to insert the new entry. */ - for (i = 0; i < sfp->hdr.count; i++) { + for (i = 0; i < sfp->count; i++) { if (!holefit) holefit = offset + size <= xfs_dir2_sf_get_offset(sfep); offset = xfs_dir2_sf_get_offset(sfep) + @@ -640,7 +640,7 @@ xfs_dir2_sf_addname_pick( * was a data block (block form directory). */ used = offset + - (sfp->hdr.count + 3) * (uint)sizeof(xfs_dir2_leaf_entry_t) + + (sfp->count + 3) * (uint)sizeof(xfs_dir2_leaf_entry_t) + (uint)sizeof(xfs_dir2_block_tail_t); /* * If it won't fit in a block form then we can't insert it, @@ -686,17 +686,17 @@ xfs_dir2_sf_check( xfs_ino_t ino; /* entry inode number */ int offset; /* data offset */ xfs_dir2_sf_entry_t *sfep; /* shortform dir entry */ - xfs_dir2_sf_t *sfp; /* shortform structure */ + xfs_dir2_sf_hdr_t *sfp; /* shortform structure */ dp = args->dp; - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; + sfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; offset = XFS_DIR2_DATA_FIRST_OFFSET; ino = xfs_dir2_sf_get_parent_ino(sfp); i8count = ino > XFS_DIR2_MAX_SHORT_INUM; for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp); - i < sfp->hdr.count; + i < sfp->count; i++, sfep = xfs_dir2_sf_nextentry(sfp, sfep)) { ASSERT(xfs_dir2_sf_get_offset(sfep) >= offset); ino = xfs_dir2_sfe_get_ino(sfp, sfep); @@ -705,11 +705,11 @@ xfs_dir2_sf_check( xfs_dir2_sf_get_offset(sfep) + xfs_dir2_data_entsize(sfep->namelen); } - ASSERT(i8count == sfp->hdr.i8count); + ASSERT(i8count == sfp->i8count); ASSERT(XFS_BIG_INUMS || i8count == 0); ASSERT((char *)sfep - (char *)sfp == dp->i_d.di_size); ASSERT(offset + - (sfp->hdr.count + 2) * (uint)sizeof(xfs_dir2_leaf_entry_t) + + (sfp->count + 2) * (uint)sizeof(xfs_dir2_leaf_entry_t) + (uint)sizeof(xfs_dir2_block_tail_t) <= dp->i_mount->m_dirblksize); } @@ -725,7 +725,7 @@ xfs_dir2_sf_create( { xfs_inode_t *dp; /* incore directory inode */ int i8count; /* parent inode is an 8-byte number */ - xfs_dir2_sf_t *sfp; /* shortform structure */ + xfs_dir2_sf_hdr_t *sfp; /* shortform structure */ int size; /* directory size */ trace_xfs_dir2_sf_create(args); @@ -755,13 +755,13 @@ xfs_dir2_sf_create( /* * Fill in the header, */ - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; - sfp->hdr.i8count = i8count; + sfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; + sfp->i8count = i8count; /* * Now can put in the inode number, since i8count is set. */ xfs_dir2_sf_put_parent_ino(sfp, pino); - sfp->hdr.count = 0; + sfp->count = 0; dp->i_d.di_size = size; xfs_dir2_sf_check(args); xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_DDATA); @@ -779,7 +779,7 @@ xfs_dir2_sf_getdents( xfs_mount_t *mp; /* filesystem mount point */ xfs_dir2_dataptr_t off; /* current entry's offset */ xfs_dir2_sf_entry_t *sfep; /* shortform directory entry */ - xfs_dir2_sf_t *sfp; /* shortform structure */ + xfs_dir2_sf_hdr_t *sfp; /* shortform structure */ xfs_dir2_dataptr_t dot_offset; xfs_dir2_dataptr_t dotdot_offset; xfs_ino_t ino; @@ -798,9 +798,9 @@ xfs_dir2_sf_getdents( ASSERT(dp->i_df.if_bytes == dp->i_d.di_size); ASSERT(dp->i_df.if_u1.if_data != NULL); - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; + sfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; - ASSERT(dp->i_d.di_size >= xfs_dir2_sf_hdr_size(sfp->hdr.i8count)); + ASSERT(dp->i_d.di_size >= xfs_dir2_sf_hdr_size(sfp->i8count)); /* * If the block number in the offset is out of range, we're done. @@ -844,7 +844,7 @@ xfs_dir2_sf_getdents( * Loop while there are more entries and put'ing works. */ sfep = xfs_dir2_sf_firstentry(sfp); - for (i = 0; i < sfp->hdr.count; i++) { + for (i = 0; i < sfp->count; i++) { off = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk, xfs_dir2_sf_get_offset(sfep)); @@ -879,7 +879,7 @@ xfs_dir2_sf_lookup( int i; /* entry index */ int error; xfs_dir2_sf_entry_t *sfep; /* shortform directory entry */ - xfs_dir2_sf_t *sfp; /* shortform structure */ + xfs_dir2_sf_hdr_t *sfp; /* shortform structure */ enum xfs_dacmp cmp; /* comparison result */ xfs_dir2_sf_entry_t *ci_sfep; /* case-insens. entry */ @@ -898,8 +898,8 @@ xfs_dir2_sf_lookup( } ASSERT(dp->i_df.if_bytes == dp->i_d.di_size); ASSERT(dp->i_df.if_u1.if_data != NULL); - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; - ASSERT(dp->i_d.di_size >= xfs_dir2_sf_hdr_size(sfp->hdr.i8count)); + sfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; + ASSERT(dp->i_d.di_size >= xfs_dir2_sf_hdr_size(sfp->i8count)); /* * Special case for . */ @@ -921,7 +921,7 @@ xfs_dir2_sf_lookup( * Loop over all the entries trying to match ours. */ ci_sfep = NULL; - for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp); i < sfp->hdr.count; + for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp); i < sfp->count; i++, sfep = xfs_dir2_sf_nextentry(sfp, sfep)) { /* * Compare name and if it's an exact match, return the inode @@ -964,7 +964,7 @@ xfs_dir2_sf_removename( int newsize; /* new inode size */ int oldsize; /* old inode size */ xfs_dir2_sf_entry_t *sfep; /* shortform directory entry */ - xfs_dir2_sf_t *sfp; /* shortform structure */ + xfs_dir2_sf_hdr_t *sfp; /* shortform structure */ trace_xfs_dir2_sf_removename(args); @@ -981,13 +981,13 @@ xfs_dir2_sf_removename( } ASSERT(dp->i_df.if_bytes == oldsize); ASSERT(dp->i_df.if_u1.if_data != NULL); - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; - ASSERT(oldsize >= xfs_dir2_sf_hdr_size(sfp->hdr.i8count)); + sfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; + ASSERT(oldsize >= xfs_dir2_sf_hdr_size(sfp->i8count)); /* * Loop over the old directory entries. * Find the one we're deleting. */ - for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp); i < sfp->hdr.count; + for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp); i < sfp->count; i++, sfep = xfs_dir2_sf_nextentry(sfp, sfep)) { if (xfs_da_compname(args, sfep->name, sfep->namelen) == XFS_CMP_EXACT) { @@ -999,7 +999,7 @@ xfs_dir2_sf_removename( /* * Didn't find it. */ - if (i == sfp->hdr.count) + if (i == sfp->count) return XFS_ERROR(ENOENT); /* * Calculate sizes. @@ -1016,22 +1016,22 @@ xfs_dir2_sf_removename( /* * Fix up the header and file size. */ - sfp->hdr.count--; + sfp->count--; dp->i_d.di_size = newsize; /* * Reallocate, making it smaller. */ xfs_idata_realloc(dp, newsize - oldsize, XFS_DATA_FORK); - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; + sfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; #if XFS_BIG_INUMS /* * Are we changing inode number size? */ if (args->inumber > XFS_DIR2_MAX_SHORT_INUM) { - if (sfp->hdr.i8count == 1) + if (sfp->i8count == 1) xfs_dir2_sf_toino4(args); else - sfp->hdr.i8count--; + sfp->i8count--; } #endif xfs_dir2_sf_check(args); @@ -1055,7 +1055,7 @@ xfs_dir2_sf_replace( int i8elevated; /* sf_toino8 set i8count=1 */ #endif xfs_dir2_sf_entry_t *sfep; /* shortform directory entry */ - xfs_dir2_sf_t *sfp; /* shortform structure */ + xfs_dir2_sf_hdr_t *sfp; /* shortform structure */ trace_xfs_dir2_sf_replace(args); @@ -1071,19 +1071,19 @@ xfs_dir2_sf_replace( } ASSERT(dp->i_df.if_bytes == dp->i_d.di_size); ASSERT(dp->i_df.if_u1.if_data != NULL); - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; - ASSERT(dp->i_d.di_size >= xfs_dir2_sf_hdr_size(sfp->hdr.i8count)); + sfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; + ASSERT(dp->i_d.di_size >= xfs_dir2_sf_hdr_size(sfp->i8count)); #if XFS_BIG_INUMS /* * New inode number is large, and need to convert to 8-byte inodes. */ - if (args->inumber > XFS_DIR2_MAX_SHORT_INUM && sfp->hdr.i8count == 0) { + if (args->inumber > XFS_DIR2_MAX_SHORT_INUM && sfp->i8count == 0) { int error; /* error return value */ int newsize; /* new inode size */ newsize = dp->i_df.if_bytes + - (sfp->hdr.count + 1) * + (sfp->count + 1) * ((uint)sizeof(xfs_dir2_ino8_t) - (uint)sizeof(xfs_dir2_ino4_t)); /* @@ -1101,7 +1101,7 @@ xfs_dir2_sf_replace( */ xfs_dir2_sf_toino8(args); i8elevated = 1; - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; + sfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; } else i8elevated = 0; #endif @@ -1122,7 +1122,7 @@ xfs_dir2_sf_replace( */ else { for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp); - i < sfp->hdr.count; + i < sfp->count; i++, sfep = xfs_dir2_sf_nextentry(sfp, sfep)) { if (xfs_da_compname(args, sfep->name, sfep->namelen) == XFS_CMP_EXACT) { @@ -1137,7 +1137,7 @@ xfs_dir2_sf_replace( /* * Didn't find it. */ - if (i == sfp->hdr.count) { + if (i == sfp->count) { ASSERT(args->op_flags & XFS_DA_OP_OKNOENT); #if XFS_BIG_INUMS if (i8elevated) @@ -1155,10 +1155,10 @@ xfs_dir2_sf_replace( /* * And the old count was one, so need to convert to small. */ - if (sfp->hdr.i8count == 1) + if (sfp->i8count == 1) xfs_dir2_sf_toino4(args); else - sfp->hdr.i8count--; + sfp->i8count--; } /* * See if the old number was small, the new number is large. @@ -1169,9 +1169,9 @@ xfs_dir2_sf_replace( * add to the i8count unless we just converted to 8-byte * inodes (which does an implied i8count = 1) */ - ASSERT(sfp->hdr.i8count != 0); + ASSERT(sfp->i8count != 0); if (!i8elevated) - sfp->hdr.i8count++; + sfp->i8count++; } #endif xfs_dir2_sf_check(args); @@ -1193,10 +1193,10 @@ xfs_dir2_sf_toino4( int i; /* entry index */ int newsize; /* new inode size */ xfs_dir2_sf_entry_t *oldsfep; /* old sf entry */ - xfs_dir2_sf_t *oldsfp; /* old sf directory */ + xfs_dir2_sf_hdr_t *oldsfp; /* old sf directory */ int oldsize; /* old inode size */ xfs_dir2_sf_entry_t *sfep; /* new sf entry */ - xfs_dir2_sf_t *sfp; /* new sf directory */ + xfs_dir2_sf_hdr_t *sfp; /* new sf directory */ trace_xfs_dir2_sf_toino4(args); @@ -1209,35 +1209,35 @@ xfs_dir2_sf_toino4( */ oldsize = dp->i_df.if_bytes; buf = kmem_alloc(oldsize, KM_SLEEP); - oldsfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; - ASSERT(oldsfp->hdr.i8count == 1); + oldsfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; + ASSERT(oldsfp->i8count == 1); memcpy(buf, oldsfp, oldsize); /* * Compute the new inode size. */ newsize = oldsize - - (oldsfp->hdr.count + 1) * + (oldsfp->count + 1) * ((uint)sizeof(xfs_dir2_ino8_t) - (uint)sizeof(xfs_dir2_ino4_t)); xfs_idata_realloc(dp, -oldsize, XFS_DATA_FORK); xfs_idata_realloc(dp, newsize, XFS_DATA_FORK); /* * Reset our pointers, the data has moved. */ - oldsfp = (xfs_dir2_sf_t *)buf; - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; + oldsfp = (xfs_dir2_sf_hdr_t *)buf; + sfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; /* * Fill in the new header. */ - sfp->hdr.count = oldsfp->hdr.count; - sfp->hdr.i8count = 0; + sfp->count = oldsfp->count; + sfp->i8count = 0; xfs_dir2_sf_put_parent_ino(sfp, xfs_dir2_sf_get_parent_ino(oldsfp)); /* * Copy the entries field by field. */ for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp), oldsfep = xfs_dir2_sf_firstentry(oldsfp); - i < sfp->hdr.count; + i < sfp->count; i++, sfep = xfs_dir2_sf_nextentry(sfp, sfep), oldsfep = xfs_dir2_sf_nextentry(oldsfp, oldsfep)) { sfep->namelen = oldsfep->namelen; @@ -1268,10 +1268,10 @@ xfs_dir2_sf_toino8( int i; /* entry index */ int newsize; /* new inode size */ xfs_dir2_sf_entry_t *oldsfep; /* old sf entry */ - xfs_dir2_sf_t *oldsfp; /* old sf directory */ + xfs_dir2_sf_hdr_t *oldsfp; /* old sf directory */ int oldsize; /* old inode size */ xfs_dir2_sf_entry_t *sfep; /* new sf entry */ - xfs_dir2_sf_t *sfp; /* new sf directory */ + xfs_dir2_sf_hdr_t *sfp; /* new sf directory */ trace_xfs_dir2_sf_toino8(args); @@ -1284,35 +1284,35 @@ xfs_dir2_sf_toino8( */ oldsize = dp->i_df.if_bytes; buf = kmem_alloc(oldsize, KM_SLEEP); - oldsfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; - ASSERT(oldsfp->hdr.i8count == 0); + oldsfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; + ASSERT(oldsfp->i8count == 0); memcpy(buf, oldsfp, oldsize); /* * Compute the new inode size. */ newsize = oldsize + - (oldsfp->hdr.count + 1) * + (oldsfp->count + 1) * ((uint)sizeof(xfs_dir2_ino8_t) - (uint)sizeof(xfs_dir2_ino4_t)); xfs_idata_realloc(dp, -oldsize, XFS_DATA_FORK); xfs_idata_realloc(dp, newsize, XFS_DATA_FORK); /* * Reset our pointers, the data has moved. */ - oldsfp = (xfs_dir2_sf_t *)buf; - sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; + oldsfp = (xfs_dir2_sf_hdr_t *)buf; + sfp = (xfs_dir2_sf_hdr_t *)dp->i_df.if_u1.if_data; /* * Fill in the new header. */ - sfp->hdr.count = oldsfp->hdr.count; - sfp->hdr.i8count = 1; + sfp->count = oldsfp->count; + sfp->i8count = 1; xfs_dir2_sf_put_parent_ino(sfp, xfs_dir2_sf_get_parent_ino(oldsfp)); /* * Copy the entries field by field. */ for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp), oldsfep = xfs_dir2_sf_firstentry(oldsfp); - i < sfp->hdr.count; + i < sfp->count; i++, sfep = xfs_dir2_sf_nextentry(sfp, sfep), oldsfep = xfs_dir2_sf_nextentry(oldsfp, oldsfep)) { sfep->namelen = oldsfep->namelen; Index: xfs/fs/xfs/xfs_dir2_sf.h =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_sf.h 2011-06-29 13:03:56.587459589 +0200 +++ xfs/fs/xfs/xfs_dir2_sf.h 2011-06-29 13:10:20.955377290 +0200 @@ -21,8 +21,12 @@ /* * Directory layout when stored internal to an inode. * - * Small directories are packed as tightly as possible so as to - * fit into the literal area of the inode. + * Small directories are packed as tightly as possible so as to fit into the + * literal area of the inode. They consist of a single xfs_dir2_sf_hdr header + * followed by zero or more xfs_dir2_sf_entry structures. Due the different + * inode number storage sized and the variable length name filed in + * the xfs_dir2_sf_entry all these structure are variable length, and the + * accessors in this file need to be used to iterate over them. */ struct uio; @@ -61,9 +65,9 @@ typedef struct { __uint8_t i[2]; } __arc * The parent directory has a dedicated field, and the self-pointer must * be calculated on the fly. * - * Entries are packed toward the top as tightly as possible. The header - * and the elements must be memcpy'd out into a work area to get correct - * alignment for the inode number fields. + * Entries are packed toward the top as tightly as possible, and thus may + * be misaligned. Care needs to be taken to access them through special + * helpers or copy them into aligned variables first. */ typedef struct xfs_dir2_sf_hdr { __uint8_t count; /* count of entries */ @@ -78,11 +82,6 @@ typedef struct xfs_dir2_sf_entry { xfs_dir2_inou_t inumber; /* inode number, var. offset */ } __arch_pack xfs_dir2_sf_entry_t; -typedef struct xfs_dir2_sf { - xfs_dir2_sf_hdr_t hdr; /* shortform header */ - xfs_dir2_sf_entry_t list[1]; /* shortform entries */ -} xfs_dir2_sf_t; - static inline int xfs_dir2_sf_hdr_size(int i8count) { return ((uint)sizeof(xfs_dir2_sf_hdr_t) - \ @@ -102,29 +101,29 @@ xfs_dir2_sf_put_offset(xfs_dir2_sf_entry INT_SET_UNALIGNED_16_BE(&(sfep)->offset.i, off); } -static inline int xfs_dir2_sf_entsize_byname(xfs_dir2_sf_t *sfp, int len) +static inline int xfs_dir2_sf_entsize_byname(xfs_dir2_sf_hdr_t *sfp, int len) { return ((uint)sizeof(xfs_dir2_sf_entry_t) - 1 + (len) - \ - ((sfp)->hdr.i8count == 0) * \ + ((sfp)->i8count == 0) * \ ((uint)sizeof(xfs_dir2_ino8_t) - (uint)sizeof(xfs_dir2_ino4_t))); } static inline int -xfs_dir2_sf_entsize_byentry(xfs_dir2_sf_t *sfp, xfs_dir2_sf_entry_t *sfep) +xfs_dir2_sf_entsize_byentry(xfs_dir2_sf_hdr_t *sfp, xfs_dir2_sf_entry_t *sfep) { return ((uint)sizeof(xfs_dir2_sf_entry_t) - 1 + (sfep)->namelen - \ - ((sfp)->hdr.i8count == 0) * \ + ((sfp)->i8count == 0) * \ ((uint)sizeof(xfs_dir2_ino8_t) - (uint)sizeof(xfs_dir2_ino4_t))); } -static inline xfs_dir2_sf_entry_t *xfs_dir2_sf_firstentry(xfs_dir2_sf_t *sfp) +static inline xfs_dir2_sf_entry_t *xfs_dir2_sf_firstentry(xfs_dir2_sf_hdr_t *sfp) { return ((xfs_dir2_sf_entry_t *) \ - ((char *)(sfp) + xfs_dir2_sf_hdr_size(sfp->hdr.i8count))); + ((char *)(sfp) + xfs_dir2_sf_hdr_size(sfp->i8count))); } static inline xfs_dir2_sf_entry_t * -xfs_dir2_sf_nextentry(xfs_dir2_sf_t *sfp, xfs_dir2_sf_entry_t *sfep) +xfs_dir2_sf_nextentry(xfs_dir2_sf_hdr_t *sfp, xfs_dir2_sf_entry_t *sfep) { return ((xfs_dir2_sf_entry_t *) \ ((char *)(sfep) + xfs_dir2_sf_entsize_byentry(sfp,sfep))); @@ -133,8 +132,8 @@ xfs_dir2_sf_nextentry(xfs_dir2_sf_t *sfp /* * Functions. */ -extern xfs_ino_t xfs_dir2_sf_get_parent_ino(struct xfs_dir2_sf *sfp); -extern xfs_ino_t xfs_dir2_sfe_get_ino(struct xfs_dir2_sf *sfp, +extern xfs_ino_t xfs_dir2_sf_get_parent_ino(struct xfs_dir2_sf_hdr *sfp); +extern xfs_ino_t xfs_dir2_sfe_get_ino(struct xfs_dir2_sf_hdr *sfp, struct xfs_dir2_sf_entry *sfep); extern int xfs_dir2_block_sfsize(struct xfs_inode *dp, struct xfs_dir2_block *block, From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable version=3.4.0-r929098 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 p5TE3gKL104892 for ; Wed, 29 Jun 2011 09:03:43 -0500 X-ASG-Debug-ID: 1309356222-67b500f00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 42C77409ED for ; Wed, 29 Jun 2011 07:03:42 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id t3viMJZqtjaSeOLE for ; Wed, 29 Jun 2011 07:03:42 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMj-0008Nq-PW for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:41 +0000 Message-Id: <20110629140341.756763307@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:36 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 27/27] xfs: avoid a few disk cache flushes Subject: [PATCH 27/27] xfs: avoid a few disk cache flushes References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-avoid-cache-flushes X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356222 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 There is no need for a pre-flush when doing writing the second part of a split log buffer, and if we are using an external log there is no need to do a full cache flush of the log device at all given that all writes to it use the FUA flag. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_log.c =================================================================== --- xfs.orig/fs/xfs/xfs_log.c 2011-06-29 14:27:59.166808258 +0200 +++ xfs/fs/xfs/xfs_log.c 2011-06-29 14:30:22.779363576 +0200 @@ -1371,15 +1371,21 @@ xlog_sync(xlog_t *log, bp->b_flags |= XBF_SYNCIO; if (log->l_mp->m_flags & XFS_MOUNT_BARRIER) { + bp->b_flags |= XBF_FUA; + /* - * If we have an external log device, flush the data device - * before flushing the log to make sure all meta data - * written back from the AIL actually made it to disk - * before writing out the new log tail LSN in the log buffer. + * Flush the data device before flushing the log to make + * sure all meta data written back from the AIL actually made + * it to disk before stamping the new log tail LSN into the + * log buffer. For an external log we need to issue the + * flush explicitly, and unfortunately synchronously here; + * for an internal log we can simply use the block layer + * state machine for preflushes. */ if (log->l_mp->m_logdev_targp != log->l_mp->m_ddev_targp) xfs_blkdev_issue_flush(log->l_mp->m_ddev_targp); - bp->b_flags |= XBF_FUA | XBF_FLUSH; + else + bp->b_flags |= XBF_FLUSH; } ASSERT(XFS_BUF_ADDR(bp) <= log->l_logBBsize-1); @@ -1414,7 +1420,7 @@ xlog_sync(xlog_t *log, XFS_BUF_ASYNC(bp); bp->b_flags |= XBF_SYNCIO; if (log->l_mp->m_flags & XFS_MOUNT_BARRIER) - bp->b_flags |= XBF_FUA | XBF_FLUSH; + bp->b_flags |= XBF_FUA; dptr = XFS_BUF_PTR(bp); /* * Bump the cycle numbers at the start of each block From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TE3gFt104893 for ; Wed, 29 Jun 2011 09:03:43 -0500 X-ASG-Debug-ID: 1309356221-358701f50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E4F4AE4B838 for ; Wed, 29 Jun 2011 07:03:41 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id Gvb8Bo1vyCyxMnEO for ; Wed, 29 Jun 2011 07:03:41 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMi-0008LG-Qs for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:40 +0000 Message-Id: <20110629140340.796889253@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:31 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 22/27] xfs: cleanup struct xfs_dir2_leaf Subject: [PATCH 22/27] xfs: cleanup struct xfs_dir2_leaf References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-cleanup-xfs_dir2_leaf_t X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356221 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67470 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Simplify the confusing xfs_dir2_leaf structure. It is supposed to describe an XFS dir2 leaf format btree block, but due to the variable sized nature of almost all elements in it it can't actuall do anything close to that job. Remove the members that are after the first variable sized array, given that they could only be used for sizeof expressions that can as well just use the underlying types directly, and make the ents array a real C99 variable sized array. Also factor out the xfs_dir2_leaf_size, to make the sizing of a leaf entry which already was convoluted somewhat readable after using the longer type names in the sizeof expressions. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_dir2_leaf.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_leaf.c 2011-06-29 13:41:15.025332931 +0200 +++ xfs/fs/xfs/xfs_dir2_leaf.c 2011-06-29 13:44:03.487753624 +0200 @@ -362,9 +362,12 @@ xfs_dir2_leaf_addname( /* * How many bytes do we need in the leaf block? */ - needbytes = - (leaf->hdr.stale ? 0 : (uint)sizeof(leaf->ents[0])) + - (use_block != -1 ? 0 : (uint)sizeof(leaf->bests[0])); + needbytes = 0; + if (!leaf->hdr.stale) + needbytes += sizeof(xfs_dir2_leaf_entry_t); + if (use_block == -1) + needbytes += sizeof(xfs_dir2_data_off_t); + /* * Now kill use_block if it refers to a missing block, so we * can use it as an indication of allocation needed. @@ -1759,6 +1762,20 @@ xfs_dir2_leaf_trim_data( return 0; } +static inline size_t +xfs_dir2_leaf_size( + struct xfs_dir2_leaf_hdr *hdr, + int counts) +{ + int entries; + + entries = be16_to_cpu(hdr->count) - be16_to_cpu(hdr->stale); + return sizeof(xfs_dir2_leaf_hdr_t) + + entries * sizeof(xfs_dir2_leaf_entry_t) + + counts * sizeof(xfs_dir2_data_off_t) + + sizeof(xfs_dir2_leaf_tail_t); +} + /* * Convert node form directory to leaf form directory. * The root of the node form dir needs to already be a LEAFN block. @@ -1840,18 +1857,17 @@ xfs_dir2_node_to_leaf( free = fbp->data; ASSERT(be32_to_cpu(free->hdr.magic) == XFS_DIR2_FREE_MAGIC); ASSERT(!free->hdr.firstdb); + /* * Now see if the leafn and free data will fit in a leaf1. * If not, release the buffer and give up. */ - if ((uint)sizeof(leaf->hdr) + - (be16_to_cpu(leaf->hdr.count) - be16_to_cpu(leaf->hdr.stale)) * (uint)sizeof(leaf->ents[0]) + - be32_to_cpu(free->hdr.nvalid) * (uint)sizeof(leaf->bests[0]) + - (uint)sizeof(leaf->tail) > - mp->m_dirblksize) { + if (xfs_dir2_leaf_size(&leaf->hdr, be32_to_cpu(free->hdr.nvalid)) > + mp->m_dirblksize) { xfs_da_brelse(tp, fbp); return 0; } + /* * If the leaf has any stale entries in it, compress them out. * The compact routine will log the header. @@ -1870,7 +1886,7 @@ xfs_dir2_node_to_leaf( * Set up the leaf bests table. */ memcpy(xfs_dir2_leaf_bests_p(ltp), free->bests, - be32_to_cpu(ltp->bestcount) * sizeof(leaf->bests[0])); + be32_to_cpu(ltp->bestcount) * sizeof(xfs_dir2_data_off_t)); xfs_dir2_leaf_log_bests(tp, lbp, 0, be32_to_cpu(ltp->bestcount) - 1); xfs_dir2_leaf_log_tail(tp, lbp); xfs_dir2_leaf_check(dp, lbp); Index: xfs/fs/xfs/xfs_dir2_leaf.h =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_leaf.h 2011-06-29 13:02:38.617881987 +0200 +++ xfs/fs/xfs/xfs_dir2_leaf.h 2011-06-29 13:44:03.491086939 +0200 @@ -72,10 +72,7 @@ typedef struct xfs_dir2_leaf_tail { */ typedef struct xfs_dir2_leaf { xfs_dir2_leaf_hdr_t hdr; /* leaf header */ - xfs_dir2_leaf_entry_t ents[1]; /* entries */ - /* ... */ - xfs_dir2_data_off_t bests[1]; /* best free counts */ - xfs_dir2_leaf_tail_t tail; /* leaf tail */ + xfs_dir2_leaf_entry_t ents[]; /* entries */ } xfs_dir2_leaf_t; /* From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TE3hkH104918 for ; Wed, 29 Jun 2011 09:03:43 -0500 X-ASG-Debug-ID: 1309356221-3b4302a70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3406D409EC for ; Wed, 29 Jun 2011 07:03:41 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id X1MCGkvDM8BZ9n5A for ; Wed, 29 Jun 2011 07:03:41 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMj-0008NK-Jc for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:41 +0000 Message-Id: <20110629140341.573417594@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:35 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 26/27] xfs: cleanup I/O-related buffer flags Subject: [PATCH 26/27] xfs: cleanup I/O-related buffer flags References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-buf-cleanup-flags X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356222 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Remove the unused and misnamed _XBF_RUN_QUEUES flag, rename XBF_LOG_BUFFER to the more fitting XBF_SYNCIO, and split XBF_ORDERED into XBF_FUA and XBF_FLUSH to allow more fine grained control over the bio flags. Also cleanup processing of the flags in _xfs_buf_ioapply to make more sense, and renumber the sparse flag number space to group flags by purpose. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_buf.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.c 2011-06-29 14:04:28.084452749 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_buf.c 2011-06-29 14:13:45.171434748 +0200 @@ -592,10 +592,8 @@ _xfs_buf_read( ASSERT(!(flags & (XBF_DELWRI|XBF_WRITE))); ASSERT(bp->b_bn != XFS_BUF_DADDR_NULL); - bp->b_flags &= ~(XBF_WRITE | XBF_ASYNC | XBF_DELWRI | \ - XBF_READ_AHEAD | _XBF_RUN_QUEUES); - bp->b_flags |= flags & (XBF_READ | XBF_ASYNC | \ - XBF_READ_AHEAD | _XBF_RUN_QUEUES); + bp->b_flags &= ~(XBF_WRITE | XBF_ASYNC | XBF_DELWRI | XBF_READ_AHEAD); + bp->b_flags |= flags & (XBF_READ | XBF_ASYNC | XBF_READ_AHEAD); status = xfs_buf_iorequest(bp); if (status || XFS_BUF_ISERROR(bp) || (flags & XBF_ASYNC)) @@ -1211,23 +1209,21 @@ _xfs_buf_ioapply( total_nr_pages = bp->b_page_count; map_i = 0; - if (bp->b_flags & XBF_ORDERED) { - ASSERT(!(bp->b_flags & XBF_READ)); - rw = WRITE_FLUSH_FUA; - } else if (bp->b_flags & XBF_LOG_BUFFER) { - ASSERT(!(bp->b_flags & XBF_READ_AHEAD)); - bp->b_flags &= ~_XBF_RUN_QUEUES; - rw = (bp->b_flags & XBF_WRITE) ? WRITE_SYNC : READ_SYNC; - } else if (bp->b_flags & _XBF_RUN_QUEUES) { - ASSERT(!(bp->b_flags & XBF_READ_AHEAD)); - bp->b_flags &= ~_XBF_RUN_QUEUES; - rw = (bp->b_flags & XBF_WRITE) ? WRITE_META : READ_META; + if (bp->b_flags & XBF_WRITE) { + if (bp->b_flags & XBF_SYNCIO) + rw = WRITE_SYNC; + else + rw = WRITE; + if (bp->b_flags & XBF_FUA) + rw |= REQ_FUA; + if (bp->b_flags & XBF_FLUSH) + rw |= REQ_FLUSH; + } else if (bp->b_flags & XBF_READ_AHEAD) { + rw = READ; } else { - rw = (bp->b_flags & XBF_WRITE) ? WRITE : - (bp->b_flags & XBF_READ_AHEAD) ? READA : READ; + rw = READ; } - next_chunk: atomic_inc(&bp->b_io_remaining); nr_pages = BIO_MAX_SECTORS >> (PAGE_SHIFT - BBSHIFT); @@ -1689,8 +1685,7 @@ xfs_buf_delwri_split( break; } - bp->b_flags &= ~(XBF_DELWRI|_XBF_DELWRI_Q| - _XBF_RUN_QUEUES); + bp->b_flags &= ~(XBF_DELWRI | _XBF_DELWRI_Q); bp->b_flags |= XBF_WRITE; list_move_tail(&bp->b_list, list); trace_xfs_buf_delwri_split(bp, _RET_IP_); Index: xfs/fs/xfs/linux-2.6/xfs_buf.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.h 2011-06-29 14:03:57.994615760 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_buf.h 2011-06-29 14:18:16.806629842 +0200 @@ -46,43 +46,46 @@ typedef enum { #define XBF_READ (1 << 0) /* buffer intended for reading from device */ #define XBF_WRITE (1 << 1) /* buffer intended for writing to device */ -#define XBF_MAPPED (1 << 2) /* buffer mapped (b_addr valid) */ +#define XBF_READ_AHEAD (1 << 2) /* asynchronous read-ahead */ +#define XBF_MAPPED (1 << 3) /* buffer mapped (b_addr valid) */ #define XBF_ASYNC (1 << 4) /* initiator will not wait for completion */ #define XBF_DONE (1 << 5) /* all pages in the buffer uptodate */ #define XBF_DELWRI (1 << 6) /* buffer has dirty pages */ #define XBF_STALE (1 << 7) /* buffer has been staled, do not find it */ -#define XBF_ORDERED (1 << 11)/* use ordered writes */ -#define XBF_READ_AHEAD (1 << 12)/* asynchronous read-ahead */ -#define XBF_LOG_BUFFER (1 << 13)/* this is a buffer used for the log */ + +/* I/O hints for the BIO layer */ +#define XBF_SYNCIO (1 << 10)/* treat this buffer as synchronous I/O */ +#define XBF_FUA (1 << 11)/* force cache write through mode */ +#define XBF_FLUSH (1 << 12)/* flush the disk cache before a write */ /* flags used only as arguments to access routines */ -#define XBF_LOCK (1 << 14)/* lock requested */ -#define XBF_TRYLOCK (1 << 15)/* lock requested, but do not wait */ -#define XBF_DONT_BLOCK (1 << 16)/* do not block in current thread */ +#define XBF_LOCK (1 << 15)/* lock requested */ +#define XBF_TRYLOCK (1 << 16)/* lock requested, but do not wait */ +#define XBF_DONT_BLOCK (1 << 17)/* do not block in current thread */ /* flags used only internally */ -#define _XBF_PAGES (1 << 18)/* backed by refcounted pages */ -#define _XBF_RUN_QUEUES (1 << 19)/* run block device task queue */ -#define _XBF_KMEM (1 << 20)/* backed by heap memory */ -#define _XBF_DELWRI_Q (1 << 21)/* buffer on delwri queue */ +#define _XBF_PAGES (1 << 20)/* backed by refcounted pages */ +#define _XBF_KMEM (1 << 21)/* backed by heap memory */ +#define _XBF_DELWRI_Q (1 << 22)/* buffer on delwri queue */ typedef unsigned int xfs_buf_flags_t; #define XFS_BUF_FLAGS \ { XBF_READ, "READ" }, \ { XBF_WRITE, "WRITE" }, \ + { XBF_READ_AHEAD, "READ_AHEAD" }, \ { XBF_MAPPED, "MAPPED" }, \ { XBF_ASYNC, "ASYNC" }, \ { XBF_DONE, "DONE" }, \ { XBF_DELWRI, "DELWRI" }, \ { XBF_STALE, "STALE" }, \ - { XBF_ORDERED, "ORDERED" }, \ - { XBF_READ_AHEAD, "READ_AHEAD" }, \ + { XBF_SYNCIO, "SYNCIO" }, \ + { XBF_FUA, "FUA" }, \ + { XBF_FLUSH, "FLUSH" }, \ { XBF_LOCK, "LOCK" }, /* should never be set */\ { XBF_TRYLOCK, "TRYLOCK" }, /* ditto */\ { XBF_DONT_BLOCK, "DONT_BLOCK" }, /* ditto */\ { _XBF_PAGES, "PAGES" }, \ - { _XBF_RUN_QUEUES, "RUN_QUEUES" }, \ { _XBF_KMEM, "KMEM" }, \ { _XBF_DELWRI_Q, "DELWRI_Q" } @@ -230,8 +233,9 @@ extern void xfs_buf_terminate(void); #define XFS_BUF_BFLAGS(bp) ((bp)->b_flags) -#define XFS_BUF_ZEROFLAGS(bp) ((bp)->b_flags &= \ - ~(XBF_READ|XBF_WRITE|XBF_ASYNC|XBF_DELWRI|XBF_ORDERED)) +#define XFS_BUF_ZEROFLAGS(bp) \ + ((bp)->b_flags &= ~(XBF_READ|XBF_WRITE|XBF_ASYNC|XBF_DELWRI| \ + XBF_SYNCIO|XBF_FUA|XBF_FLUSH)) void xfs_buf_stale(struct xfs_buf *bp); #define XFS_BUF_STALE(bp) xfs_buf_stale(bp); @@ -263,10 +267,6 @@ void xfs_buf_stale(struct xfs_buf *bp); #define XFS_BUF_UNASYNC(bp) ((bp)->b_flags &= ~XBF_ASYNC) #define XFS_BUF_ISASYNC(bp) ((bp)->b_flags & XBF_ASYNC) -#define XFS_BUF_ORDERED(bp) ((bp)->b_flags |= XBF_ORDERED) -#define XFS_BUF_UNORDERED(bp) ((bp)->b_flags &= ~XBF_ORDERED) -#define XFS_BUF_ISORDERED(bp) ((bp)->b_flags & XBF_ORDERED) - #define XFS_BUF_HOLD(bp) xfs_buf_hold(bp) #define XFS_BUF_READ(bp) ((bp)->b_flags |= XBF_READ) #define XFS_BUF_UNREAD(bp) ((bp)->b_flags &= ~XBF_READ) Index: xfs/fs/xfs/xfs_log.c =================================================================== --- xfs.orig/fs/xfs/xfs_log.c 2011-06-29 14:04:18.587837528 +0200 +++ xfs/fs/xfs/xfs_log.c 2011-06-29 14:13:47.761420718 +0200 @@ -1268,7 +1268,6 @@ xlog_bdstrat( return 0; } - bp->b_flags |= _XBF_RUN_QUEUES; xfs_buf_iorequest(bp); return 0; } @@ -1369,7 +1368,7 @@ xlog_sync(xlog_t *log, XFS_BUF_ZEROFLAGS(bp); XFS_BUF_BUSY(bp); XFS_BUF_ASYNC(bp); - bp->b_flags |= XBF_LOG_BUFFER; + bp->b_flags |= XBF_SYNCIO; if (log->l_mp->m_flags & XFS_MOUNT_BARRIER) { /* @@ -1380,7 +1379,7 @@ xlog_sync(xlog_t *log, */ if (log->l_mp->m_logdev_targp != log->l_mp->m_ddev_targp) xfs_blkdev_issue_flush(log->l_mp->m_ddev_targp); - XFS_BUF_ORDERED(bp); + bp->b_flags |= XBF_FUA | XBF_FLUSH; } ASSERT(XFS_BUF_ADDR(bp) <= log->l_logBBsize-1); @@ -1413,9 +1412,9 @@ xlog_sync(xlog_t *log, XFS_BUF_ZEROFLAGS(bp); XFS_BUF_BUSY(bp); XFS_BUF_ASYNC(bp); - bp->b_flags |= XBF_LOG_BUFFER; + bp->b_flags |= XBF_SYNCIO; if (log->l_mp->m_flags & XFS_MOUNT_BARRIER) - XFS_BUF_ORDERED(bp); + bp->b_flags |= XBF_FUA | XBF_FLUSH; dptr = XFS_BUF_PTR(bp); /* * Bump the cycle numbers at the start of each block Index: xfs/fs/xfs/linux-2.6/xfs_buf.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.c 2011-06-29 14:04:28.084452749 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_buf.c 2011-06-29 14:13:45.171434748 +0200 @@ -592,10 +592,8 @@ _xfs_buf_read( ASSERT(!(flags & (XBF_DELWRI|XBF_WRITE))); ASSERT(bp->b_bn != XFS_BUF_DADDR_NULL); - bp->b_flags &= ~(XBF_WRITE | XBF_ASYNC | XBF_DELWRI | \ - XBF_READ_AHEAD | _XBF_RUN_QUEUES); - bp->b_flags |= flags & (XBF_READ | XBF_ASYNC | \ - XBF_READ_AHEAD | _XBF_RUN_QUEUES); + bp->b_flags &= ~(XBF_WRITE | XBF_ASYNC | XBF_DELWRI | XBF_READ_AHEAD); + bp->b_flags |= flags & (XBF_READ | XBF_ASYNC | XBF_READ_AHEAD); status = xfs_buf_iorequest(bp); if (status || XFS_BUF_ISERROR(bp) || (flags & XBF_ASYNC)) @@ -1211,23 +1209,21 @@ _xfs_buf_ioapply( total_nr_pages = bp->b_page_count; map_i = 0; - if (bp->b_flags & XBF_ORDERED) { - ASSERT(!(bp->b_flags & XBF_READ)); - rw = WRITE_FLUSH_FUA; - } else if (bp->b_flags & XBF_LOG_BUFFER) { - ASSERT(!(bp->b_flags & XBF_READ_AHEAD)); - bp->b_flags &= ~_XBF_RUN_QUEUES; - rw = (bp->b_flags & XBF_WRITE) ? WRITE_SYNC : READ_SYNC; - } else if (bp->b_flags & _XBF_RUN_QUEUES) { - ASSERT(!(bp->b_flags & XBF_READ_AHEAD)); - bp->b_flags &= ~_XBF_RUN_QUEUES; - rw = (bp->b_flags & XBF_WRITE) ? WRITE_META : READ_META; + if (bp->b_flags & XBF_WRITE) { + if (bp->b_flags & XBF_SYNCIO) + rw = WRITE_SYNC; + else + rw = WRITE; + if (bp->b_flags & XBF_FUA) + rw |= REQ_FUA; + if (bp->b_flags & XBF_FLUSH) + rw |= REQ_FLUSH; + } else if (bp->b_flags & XBF_READ_AHEAD) { + rw = READ; } else { - rw = (bp->b_flags & XBF_WRITE) ? WRITE : - (bp->b_flags & XBF_READ_AHEAD) ? READA : READ; + rw = READ; } - next_chunk: atomic_inc(&bp->b_io_remaining); nr_pages = BIO_MAX_SECTORS >> (PAGE_SHIFT - BBSHIFT); @@ -1689,8 +1685,7 @@ xfs_buf_delwri_split( break; } - bp->b_flags &= ~(XBF_DELWRI|_XBF_DELWRI_Q| - _XBF_RUN_QUEUES); + bp->b_flags &= ~(XBF_DELWRI | _XBF_DELWRI_Q); bp->b_flags |= XBF_WRITE; list_move_tail(&bp->b_list, list); trace_xfs_buf_delwri_split(bp, _RET_IP_); Index: xfs/fs/xfs/linux-2.6/xfs_buf.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.h 2011-06-29 14:03:57.994615760 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_buf.h 2011-06-29 14:18:16.806629842 +0200 @@ -46,43 +46,46 @@ typedef enum { #define XBF_READ (1 << 0) /* buffer intended for reading from device */ #define XBF_WRITE (1 << 1) /* buffer intended for writing to device */ -#define XBF_MAPPED (1 << 2) /* buffer mapped (b_addr valid) */ +#define XBF_READ_AHEAD (1 << 2) /* asynchronous read-ahead */ +#define XBF_MAPPED (1 << 3) /* buffer mapped (b_addr valid) */ #define XBF_ASYNC (1 << 4) /* initiator will not wait for completion */ #define XBF_DONE (1 << 5) /* all pages in the buffer uptodate */ #define XBF_DELWRI (1 << 6) /* buffer has dirty pages */ #define XBF_STALE (1 << 7) /* buffer has been staled, do not find it */ -#define XBF_ORDERED (1 << 11)/* use ordered writes */ -#define XBF_READ_AHEAD (1 << 12)/* asynchronous read-ahead */ -#define XBF_LOG_BUFFER (1 << 13)/* this is a buffer used for the log */ + +/* I/O hints for the BIO layer */ +#define XBF_SYNCIO (1 << 10)/* treat this buffer as synchronous I/O */ +#define XBF_FUA (1 << 11)/* force cache write through mode */ +#define XBF_FLUSH (1 << 12)/* flush the disk cache before a write */ /* flags used only as arguments to access routines */ -#define XBF_LOCK (1 << 14)/* lock requested */ -#define XBF_TRYLOCK (1 << 15)/* lock requested, but do not wait */ -#define XBF_DONT_BLOCK (1 << 16)/* do not block in current thread */ +#define XBF_LOCK (1 << 15)/* lock requested */ +#define XBF_TRYLOCK (1 << 16)/* lock requested, but do not wait */ +#define XBF_DONT_BLOCK (1 << 17)/* do not block in current thread */ /* flags used only internally */ -#define _XBF_PAGES (1 << 18)/* backed by refcounted pages */ -#define _XBF_RUN_QUEUES (1 << 19)/* run block device task queue */ -#define _XBF_KMEM (1 << 20)/* backed by heap memory */ -#define _XBF_DELWRI_Q (1 << 21)/* buffer on delwri queue */ +#define _XBF_PAGES (1 << 20)/* backed by refcounted pages */ +#define _XBF_KMEM (1 << 21)/* backed by heap memory */ +#define _XBF_DELWRI_Q (1 << 22)/* buffer on delwri queue */ typedef unsigned int xfs_buf_flags_t; #define XFS_BUF_FLAGS \ { XBF_READ, "READ" }, \ { XBF_WRITE, "WRITE" }, \ + { XBF_READ_AHEAD, "READ_AHEAD" }, \ { XBF_MAPPED, "MAPPED" }, \ { XBF_ASYNC, "ASYNC" }, \ { XBF_DONE, "DONE" }, \ { XBF_DELWRI, "DELWRI" }, \ { XBF_STALE, "STALE" }, \ - { XBF_ORDERED, "ORDERED" }, \ - { XBF_READ_AHEAD, "READ_AHEAD" }, \ + { XBF_SYNCIO, "SYNCIO" }, \ + { XBF_FUA, "FUA" }, \ + { XBF_FLUSH, "FLUSH" }, \ { XBF_LOCK, "LOCK" }, /* should never be set */\ { XBF_TRYLOCK, "TRYLOCK" }, /* ditto */\ { XBF_DONT_BLOCK, "DONT_BLOCK" }, /* ditto */\ { _XBF_PAGES, "PAGES" }, \ - { _XBF_RUN_QUEUES, "RUN_QUEUES" }, \ { _XBF_KMEM, "KMEM" }, \ { _XBF_DELWRI_Q, "DELWRI_Q" } @@ -230,8 +233,9 @@ extern void xfs_buf_terminate(void); #define XFS_BUF_BFLAGS(bp) ((bp)->b_flags) -#define XFS_BUF_ZEROFLAGS(bp) ((bp)->b_flags &= \ - ~(XBF_READ|XBF_WRITE|XBF_ASYNC|XBF_DELWRI|XBF_ORDERED)) +#define XFS_BUF_ZEROFLAGS(bp) \ + ((bp)->b_flags &= ~(XBF_READ|XBF_WRITE|XBF_ASYNC|XBF_DELWRI| \ + XBF_SYNCIO|XBF_FUA|XBF_FLUSH)) void xfs_buf_stale(struct xfs_buf *bp); #define XFS_BUF_STALE(bp) xfs_buf_stale(bp); @@ -263,10 +267,6 @@ void xfs_buf_stale(struct xfs_buf *bp); #define XFS_BUF_UNASYNC(bp) ((bp)->b_flags &= ~XBF_ASYNC) #define XFS_BUF_ISASYNC(bp) ((bp)->b_flags & XBF_ASYNC) -#define XFS_BUF_ORDERED(bp) ((bp)->b_flags |= XBF_ORDERED) -#define XFS_BUF_UNORDERED(bp) ((bp)->b_flags &= ~XBF_ORDERED) -#define XFS_BUF_ISORDERED(bp) ((bp)->b_flags & XBF_ORDERED) - #define XFS_BUF_HOLD(bp) xfs_buf_hold(bp) #define XFS_BUF_READ(bp) ((bp)->b_flags |= XBF_READ) #define XFS_BUF_UNREAD(bp) ((bp)->b_flags &= ~XBF_READ) Index: xfs/fs/xfs/xfs_log.c =================================================================== --- xfs.orig/fs/xfs/xfs_log.c 2011-06-29 14:04:18.587837528 +0200 +++ xfs/fs/xfs/xfs_log.c 2011-06-29 14:13:47.761420718 +0200 @@ -1268,7 +1268,6 @@ xlog_bdstrat( return 0; } - bp->b_flags |= _XBF_RUN_QUEUES; xfs_buf_iorequest(bp); return 0; } @@ -1369,7 +1368,7 @@ xlog_sync(xlog_t *log, XFS_BUF_ZEROFLAGS(bp); XFS_BUF_BUSY(bp); XFS_BUF_ASYNC(bp); - bp->b_flags |= XBF_LOG_BUFFER; + bp->b_flags |= XBF_SYNCIO; if (log->l_mp->m_flags & XFS_MOUNT_BARRIER) { /* @@ -1380,7 +1379,7 @@ xlog_sync(xlog_t *log, */ if (log->l_mp->m_logdev_targp != log->l_mp->m_ddev_targp) xfs_blkdev_issue_flush(log->l_mp->m_ddev_targp); - XFS_BUF_ORDERED(bp); + bp->b_flags |= XBF_FUA | XBF_FLUSH; } ASSERT(XFS_BUF_ADDR(bp) <= log->l_logBBsize-1); @@ -1413,9 +1412,9 @@ xlog_sync(xlog_t *log, XFS_BUF_ZEROFLAGS(bp); XFS_BUF_BUSY(bp); XFS_BUF_ASYNC(bp); - bp->b_flags |= XBF_LOG_BUFFER; + bp->b_flags |= XBF_SYNCIO; if (log->l_mp->m_flags & XFS_MOUNT_BARRIER) - XFS_BUF_ORDERED(bp); + bp->b_flags |= XBF_FUA | XBF_FLUSH; dptr = XFS_BUF_PTR(bp); /* * Bump the cycle numbers at the start of each block From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 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 p5TE3h6d104896 for ; Wed, 29 Jun 2011 09:03:43 -0500 X-ASG-Debug-ID: 1309356221-203001190000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D7F571D7DD40 for ; Wed, 29 Jun 2011 07:03:41 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id fC2YcKmVTxFAZEqY for ; Wed, 29 Jun 2011 07:03:41 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMj-0008MI-7r for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:41 +0000 Message-Id: <20110629140341.198066346@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:33 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 24/27] xfs: clean up buffer locking helpers Subject: [PATCH 24/27] xfs: clean up buffer locking helpers References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-cleanup-buffer-locking X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356221 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Rename xfs_buf_cond_lock and reverse it's return value to fit most other trylock operations in the Kernel and XFS (with the exception of down_trylock, after which xfs_buf_cond_lock was modelled), and replace xfs_buf_lock_val with an xfs_buf_islocked for use in asserts, or and opencoded variant in tracing. remove the XFS_BUF_* wrappers for all the locking helpers. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_buf.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.c 2011-06-29 11:26:14.000000000 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_buf.c 2011-06-29 13:57:15.596795734 +0200 @@ -499,16 +499,14 @@ found: spin_unlock(&pag->pag_buf_lock); xfs_perag_put(pag); - if (xfs_buf_cond_lock(bp)) { - /* failed, so wait for the lock if requested. */ - if (!(flags & XBF_TRYLOCK)) { - xfs_buf_lock(bp); - XFS_STATS_INC(xb_get_locked_waited); - } else { + if (!xfs_buf_trylock(bp)) { + if (flags & XBF_TRYLOCK) { xfs_buf_rele(bp); XFS_STATS_INC(xb_busy_locked); return NULL; } + xfs_buf_lock(bp); + XFS_STATS_INC(xb_get_locked_waited); } /* @@ -896,8 +894,8 @@ xfs_buf_rele( * to push on stale inode buffers. */ int -xfs_buf_cond_lock( - xfs_buf_t *bp) +xfs_buf_trylock( + struct xfs_buf *bp) { int locked; @@ -907,15 +905,8 @@ xfs_buf_cond_lock( else if (atomic_read(&bp->b_pin_count) && (bp->b_flags & XBF_STALE)) xfs_log_force(bp->b_target->bt_mount, 0); - trace_xfs_buf_cond_lock(bp, _RET_IP_); - return locked ? 0 : -EBUSY; -} - -int -xfs_buf_lock_value( - xfs_buf_t *bp) -{ - return bp->b_sema.count; + trace_xfs_buf_trylock(bp, _RET_IP_); + return locked; } /* @@ -929,7 +920,7 @@ xfs_buf_lock_value( */ void xfs_buf_lock( - xfs_buf_t *bp) + struct xfs_buf *bp) { trace_xfs_buf_lock(bp, _RET_IP_); @@ -950,7 +941,7 @@ xfs_buf_lock( */ void xfs_buf_unlock( - xfs_buf_t *bp) + struct xfs_buf *bp) { if ((bp->b_flags & (XBF_DELWRI|_XBF_DELWRI_Q)) == XBF_DELWRI) { atomic_inc(&bp->b_hold); @@ -1694,7 +1685,7 @@ xfs_buf_delwri_split( list_for_each_entry_safe(bp, n, dwq, b_list) { ASSERT(bp->b_flags & XBF_DELWRI); - if (!XFS_BUF_ISPINNED(bp) && !xfs_buf_cond_lock(bp)) { + if (!XFS_BUF_ISPINNED(bp) && xfs_buf_trylock(bp)) { if (!force && time_before(jiffies, bp->b_queuetime + age)) { xfs_buf_unlock(bp); Index: xfs/fs/xfs/linux-2.6/xfs_buf.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.h 2011-06-29 13:50:40.000000000 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_buf.h 2011-06-29 13:54:35.250997736 +0200 @@ -187,10 +187,11 @@ extern void xfs_buf_free(xfs_buf_t *); extern void xfs_buf_rele(xfs_buf_t *); /* Locking and Unlocking Buffers */ -extern int xfs_buf_cond_lock(xfs_buf_t *); -extern int xfs_buf_lock_value(xfs_buf_t *); +extern int xfs_buf_trylock(xfs_buf_t *); extern void xfs_buf_lock(xfs_buf_t *); extern void xfs_buf_unlock(xfs_buf_t *); +#define xfs_buf_islocked(bp) \ + ((bp)->b_sema.count <= 0) /* Buffer Read and Write Routines */ extern int xfs_bwrite(struct xfs_mount *mp, struct xfs_buf *bp); @@ -308,10 +309,6 @@ xfs_buf_set_ref( #define XFS_BUF_ISPINNED(bp) atomic_read(&((bp)->b_pin_count)) -#define XFS_BUF_VALUSEMA(bp) xfs_buf_lock_value(bp) -#define XFS_BUF_CPSEMA(bp) (xfs_buf_cond_lock(bp) == 0) -#define XFS_BUF_VSEMA(bp) xfs_buf_unlock(bp) -#define XFS_BUF_PSEMA(bp,x) xfs_buf_lock(bp) #define XFS_BUF_FINISH_IOWAIT(bp) complete(&bp->b_iowait); #define XFS_BUF_SET_TARGET(bp, target) ((bp)->b_target = (target)) Index: xfs/fs/xfs/linux-2.6/xfs_trace.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_trace.h 2011-06-29 11:35:45.000000000 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_trace.h 2011-06-29 13:54:32.974343403 +0200 @@ -293,7 +293,7 @@ DECLARE_EVENT_CLASS(xfs_buf_class, __entry->buffer_length = bp->b_buffer_length; __entry->hold = atomic_read(&bp->b_hold); __entry->pincount = atomic_read(&bp->b_pin_count); - __entry->lockval = xfs_buf_lock_value(bp); + __entry->lockval = bp->b_sema.count; __entry->flags = bp->b_flags; __entry->caller_ip = caller_ip; ), @@ -323,7 +323,7 @@ DEFINE_BUF_EVENT(xfs_buf_bawrite); DEFINE_BUF_EVENT(xfs_buf_bdwrite); DEFINE_BUF_EVENT(xfs_buf_lock); DEFINE_BUF_EVENT(xfs_buf_lock_done); -DEFINE_BUF_EVENT(xfs_buf_cond_lock); +DEFINE_BUF_EVENT(xfs_buf_trylock); DEFINE_BUF_EVENT(xfs_buf_unlock); DEFINE_BUF_EVENT(xfs_buf_iowait); DEFINE_BUF_EVENT(xfs_buf_iowait_done); @@ -366,7 +366,7 @@ DECLARE_EVENT_CLASS(xfs_buf_flags_class, __entry->flags = flags; __entry->hold = atomic_read(&bp->b_hold); __entry->pincount = atomic_read(&bp->b_pin_count); - __entry->lockval = xfs_buf_lock_value(bp); + __entry->lockval = bp->b_sema.count; __entry->caller_ip = caller_ip; ), TP_printk("dev %d:%d bno 0x%llx len 0x%zx hold %d pincount %d " @@ -409,7 +409,7 @@ TRACE_EVENT(xfs_buf_ioerror, __entry->buffer_length = bp->b_buffer_length; __entry->hold = atomic_read(&bp->b_hold); __entry->pincount = atomic_read(&bp->b_pin_count); - __entry->lockval = xfs_buf_lock_value(bp); + __entry->lockval = bp->b_sema.count; __entry->error = error; __entry->flags = bp->b_flags; __entry->caller_ip = caller_ip; @@ -454,7 +454,7 @@ DECLARE_EVENT_CLASS(xfs_buf_item_class, __entry->buf_flags = bip->bli_buf->b_flags; __entry->buf_hold = atomic_read(&bip->bli_buf->b_hold); __entry->buf_pincount = atomic_read(&bip->bli_buf->b_pin_count); - __entry->buf_lockval = xfs_buf_lock_value(bip->bli_buf); + __entry->buf_lockval = bip->bli_buf->b_sema.count; __entry->li_desc = bip->bli_item.li_desc; __entry->li_flags = bip->bli_item.li_flags; ), Index: xfs/fs/xfs/quota/xfs_dquot.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_dquot.c 2011-05-11 08:41:56.000000000 +0200 +++ xfs/fs/xfs/quota/xfs_dquot.c 2011-06-29 13:53:07.801471491 +0200 @@ -318,7 +318,7 @@ xfs_qm_init_dquot_blk( ASSERT(tp); ASSERT(XFS_BUF_ISBUSY(bp)); - ASSERT(XFS_BUF_VALUSEMA(bp) <= 0); + ASSERT(xfs_buf_islocked(bp)); d = (xfs_dqblk_t *)XFS_BUF_PTR(bp); @@ -534,7 +534,7 @@ xfs_qm_dqtobp( } ASSERT(XFS_BUF_ISBUSY(bp)); - ASSERT(XFS_BUF_VALUSEMA(bp) <= 0); + ASSERT(xfs_buf_islocked(bp)); /* * calculate the location of the dquot inside the buffer. @@ -622,7 +622,7 @@ xfs_qm_dqread( * brelse it because we have the changes incore. */ ASSERT(XFS_BUF_ISBUSY(bp)); - ASSERT(XFS_BUF_VALUSEMA(bp) <= 0); + ASSERT(xfs_buf_islocked(bp)); xfs_trans_brelse(tp, bp); return (error); Index: xfs/fs/xfs/xfs_buf_item.c =================================================================== --- xfs.orig/fs/xfs/xfs_buf_item.c 2011-04-22 06:21:45.000000000 +0200 +++ xfs/fs/xfs/xfs_buf_item.c 2011-06-29 13:53:20.938066990 +0200 @@ -420,7 +420,7 @@ xfs_buf_item_unpin( if (freed && stale) { ASSERT(bip->bli_flags & XFS_BLI_STALE); - ASSERT(XFS_BUF_VALUSEMA(bp) <= 0); + ASSERT(xfs_buf_islocked(bp)); ASSERT(!(XFS_BUF_ISDELAYWRITE(bp))); ASSERT(XFS_BUF_ISSTALE(bp)); ASSERT(bip->bli_format.blf_flags & XFS_BLF_CANCEL); @@ -483,7 +483,7 @@ xfs_buf_item_trylock( if (XFS_BUF_ISPINNED(bp)) return XFS_ITEM_PINNED; - if (!XFS_BUF_CPSEMA(bp)) + if (!xfs_buf_trylock(bp)) return XFS_ITEM_LOCKED; /* take a reference to the buffer. */ @@ -905,7 +905,7 @@ xfs_buf_attach_iodone( xfs_log_item_t *head_lip; ASSERT(XFS_BUF_ISBUSY(bp)); - ASSERT(XFS_BUF_VALUSEMA(bp) <= 0); + ASSERT(xfs_buf_islocked(bp)); lip->li_cb = cb; if (XFS_BUF_FSPRIVATE(bp, void *) != NULL) { Index: xfs/fs/xfs/xfs_log.c =================================================================== --- xfs.orig/fs/xfs/xfs_log.c 2011-06-17 14:07:57.000000000 +0200 +++ xfs/fs/xfs/xfs_log.c 2011-06-29 13:53:33.954663139 +0200 @@ -1059,7 +1059,7 @@ xlog_alloc_log(xfs_mount_t *mp, XFS_BUF_SET_IODONE_FUNC(bp, xlog_iodone); XFS_BUF_SET_FSPRIVATE2(bp, (unsigned long)1); ASSERT(XFS_BUF_ISBUSY(bp)); - ASSERT(XFS_BUF_VALUSEMA(bp) <= 0); + ASSERT(xfs_buf_islocked(bp)); log->l_xbuf = bp; spin_lock_init(&log->l_icloglock); @@ -1090,7 +1090,7 @@ xlog_alloc_log(xfs_mount_t *mp, log->l_iclog_size, 0); if (!bp) goto out_free_iclog; - if (!XFS_BUF_CPSEMA(bp)) + if (!xfs_buf_trylock(bp)) ASSERT(0); XFS_BUF_SET_IODONE_FUNC(bp, xlog_iodone); XFS_BUF_SET_FSPRIVATE2(bp, (unsigned long)1); @@ -1118,7 +1118,7 @@ xlog_alloc_log(xfs_mount_t *mp, iclog->ic_datap = (char *)iclog->ic_data + log->l_iclog_hsize; ASSERT(XFS_BUF_ISBUSY(iclog->ic_bp)); - ASSERT(XFS_BUF_VALUSEMA(iclog->ic_bp) <= 0); + ASSERT(xfs_buf_islocked(iclog->ic_bp)); init_waitqueue_head(&iclog->ic_force_wait); init_waitqueue_head(&iclog->ic_write_wait); Index: xfs/fs/xfs/xfs_log_recover.c =================================================================== --- xfs.orig/fs/xfs/xfs_log_recover.c 2011-05-20 15:25:52.000000000 +0200 +++ xfs/fs/xfs/xfs_log_recover.c 2011-06-29 13:51:20.425386530 +0200 @@ -264,7 +264,7 @@ xlog_bwrite( XFS_BUF_ZEROFLAGS(bp); XFS_BUF_BUSY(bp); XFS_BUF_HOLD(bp); - XFS_BUF_PSEMA(bp, PRIBIO); + xfs_buf_lock(bp); XFS_BUF_SET_COUNT(bp, BBTOB(nbblks)); XFS_BUF_SET_TARGET(bp, log->l_mp->m_logdev_targp); Index: xfs/fs/xfs/xfs_mount.c =================================================================== --- xfs.orig/fs/xfs/xfs_mount.c 2011-06-29 11:38:53.000000000 +0200 +++ xfs/fs/xfs/xfs_mount.c 2011-06-29 13:51:20.425386530 +0200 @@ -1941,22 +1941,19 @@ unwind: * the superblock buffer if it can be locked without sleeping. * If it can't then we'll return NULL. */ -xfs_buf_t * +struct xfs_buf * xfs_getsb( - xfs_mount_t *mp, - int flags) + struct xfs_mount *mp, + int flags) { - xfs_buf_t *bp; + struct xfs_buf *bp = mp->m_sb_bp; - ASSERT(mp->m_sb_bp != NULL); - bp = mp->m_sb_bp; - if (flags & XBF_TRYLOCK) { - if (!XFS_BUF_CPSEMA(bp)) { + if (!xfs_buf_trylock(bp)) { + if (flags & XBF_TRYLOCK) return NULL; - } - } else { - XFS_BUF_PSEMA(bp, PRIBIO); + xfs_buf_lock(bp); } + XFS_BUF_HOLD(bp); ASSERT(XFS_BUF_ISDONE(bp)); return bp; Index: xfs/fs/xfs/xfs_trans_buf.c =================================================================== --- xfs.orig/fs/xfs/xfs_trans_buf.c 2011-03-27 23:52:57.000000000 +0200 +++ xfs/fs/xfs/xfs_trans_buf.c 2011-06-29 13:53:47.084592005 +0200 @@ -160,7 +160,7 @@ xfs_trans_get_buf(xfs_trans_t *tp, */ bp = xfs_trans_buf_item_match(tp, target_dev, blkno, len); if (bp != NULL) { - ASSERT(XFS_BUF_VALUSEMA(bp) <= 0); + ASSERT(xfs_buf_islocked(bp)); if (XFS_FORCED_SHUTDOWN(tp->t_mountp)) XFS_BUF_SUPER_STALE(bp); @@ -327,7 +327,7 @@ xfs_trans_read_buf( */ bp = xfs_trans_buf_item_match(tp, target, blkno, len); if (bp != NULL) { - ASSERT(XFS_BUF_VALUSEMA(bp) <= 0); + ASSERT(xfs_buf_islocked(bp)); ASSERT(XFS_BUF_FSPRIVATE2(bp, xfs_trans_t *) == tp); ASSERT(XFS_BUF_FSPRIVATE(bp, void *) != NULL); ASSERT((XFS_BUF_ISERROR(bp)) == 0); From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_62,J_CHICKENPOX_63,J_CHICKENPOX_65,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 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 p5TE3hYL104904 for ; Wed, 29 Jun 2011 09:03:43 -0500 X-ASG-Debug-ID: 1309356220-358802140000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3535BE4B581 for ; Wed, 29 Jun 2011 07:03:40 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id c6Z7jdAbrtolmhfe for ; Wed, 29 Jun 2011 07:03:40 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMh-0008Ig-TI for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:39 +0000 Message-Id: <20110629140339.876785989@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:26 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 17/27] xfs: avoid usage of struct xfs_dir2_block Subject: [PATCH 17/27] xfs: avoid usage of struct xfs_dir2_block References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-avoid-xfs_dir2_block_t X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356221 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67470 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 In most places we can simply pass around and use the struct xfs_dir2_data_hdr, which is the first and most important member of struct xfs_dir2_block instead of the full structure. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_dir2_block.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_block.c 2011-06-29 13:06:35.083267610 +0200 +++ xfs/fs/xfs/xfs_dir2_block.c 2011-06-29 13:17:34.256363230 +0200 @@ -67,7 +67,7 @@ xfs_dir2_block_addname( xfs_da_args_t *args) /* directory op arguments */ { xfs_dir2_data_free_t *bf; /* bestfree table in block */ - xfs_dir2_block_t *block; /* directory block structure */ + xfs_dir2_data_hdr_t *hdr; /* block header */ xfs_dir2_leaf_entry_t *blp; /* block leaf entries */ xfs_dabuf_t *bp; /* buffer for block */ xfs_dir2_block_tail_t *btp; /* block tail */ @@ -105,13 +105,13 @@ xfs_dir2_block_addname( return error; } ASSERT(bp != NULL); - block = bp->data; + hdr = bp->data; /* * Check the magic number, corrupted if wrong. */ - if (unlikely(be32_to_cpu(block->hdr.magic) != XFS_DIR2_BLOCK_MAGIC)) { + if (unlikely(hdr->magic != cpu_to_be32(XFS_DIR2_BLOCK_MAGIC))) { XFS_CORRUPTION_ERROR("xfs_dir2_block_addname", - XFS_ERRLEVEL_LOW, mp, block); + XFS_ERRLEVEL_LOW, mp, hdr); xfs_da_brelse(tp, bp); return XFS_ERROR(EFSCORRUPTED); } @@ -119,8 +119,8 @@ xfs_dir2_block_addname( /* * Set up pointers to parts of the block. */ - bf = block->hdr.bestfree; - btp = xfs_dir2_block_tail_p(mp, block); + bf = hdr->bestfree; + btp = xfs_dir2_block_tail_p(mp, hdr); blp = xfs_dir2_block_leaf_p(btp); /* * No stale entries? Need space for entry and new leaf. @@ -133,7 +133,7 @@ xfs_dir2_block_addname( /* * Data object just before the first leaf entry. */ - enddup = (xfs_dir2_data_unused_t *)((char *)block + be16_to_cpu(*tagp)); + enddup = (xfs_dir2_data_unused_t *)((char *)hdr + be16_to_cpu(*tagp)); /* * If it's not free then can't do this add without cleaning up: * the space before the first leaf entry needs to be free so it @@ -146,7 +146,7 @@ xfs_dir2_block_addname( */ else { dup = (xfs_dir2_data_unused_t *) - ((char *)block + be16_to_cpu(bf[0].offset)); + ((char *)hdr + be16_to_cpu(bf[0].offset)); if (dup == enddup) { /* * It is the biggest freespace, is it too small @@ -159,7 +159,7 @@ xfs_dir2_block_addname( */ if (be16_to_cpu(bf[1].length) >= len) dup = (xfs_dir2_data_unused_t *) - ((char *)block + + ((char *)hdr + be16_to_cpu(bf[1].offset)); else dup = NULL; @@ -182,7 +182,7 @@ xfs_dir2_block_addname( */ else if (be16_to_cpu(bf[0].length) >= len) { dup = (xfs_dir2_data_unused_t *) - ((char *)block + be16_to_cpu(bf[0].offset)); + ((char *)hdr + be16_to_cpu(bf[0].offset)); compact = 0; } /* @@ -196,7 +196,7 @@ xfs_dir2_block_addname( /* * Data object just before the first leaf entry. */ - dup = (xfs_dir2_data_unused_t *)((char *)block + be16_to_cpu(*tagp)); + dup = (xfs_dir2_data_unused_t *)((char *)hdr + be16_to_cpu(*tagp)); /* * If it's not free then the data will go where the * leaf data starts now, if it works at all. @@ -272,7 +272,7 @@ xfs_dir2_block_addname( lfloghigh -= be32_to_cpu(btp->stale) - 1; be32_add_cpu(&btp->count, -(be32_to_cpu(btp->stale) - 1)); xfs_dir2_data_make_free(tp, bp, - (xfs_dir2_data_aoff_t)((char *)blp - (char *)block), + (xfs_dir2_data_aoff_t)((char *)blp - (char *)hdr), (xfs_dir2_data_aoff_t)((be32_to_cpu(btp->stale) - 1) * sizeof(*blp)), &needlog, &needscan); blp += be32_to_cpu(btp->stale) - 1; @@ -282,7 +282,7 @@ xfs_dir2_block_addname( * This needs to happen before the next call to use_free. */ if (needscan) { - xfs_dir2_data_freescan(mp, (xfs_dir2_data_t *)block, &needlog); + xfs_dir2_data_freescan(mp, (xfs_dir2_data_t *)hdr, &needlog); needscan = 0; } } @@ -318,7 +318,7 @@ xfs_dir2_block_addname( */ xfs_dir2_data_use_free(tp, bp, enddup, (xfs_dir2_data_aoff_t) - ((char *)enddup - (char *)block + be16_to_cpu(enddup->length) - + ((char *)enddup - (char *)hdr + be16_to_cpu(enddup->length) - sizeof(*blp)), (xfs_dir2_data_aoff_t)sizeof(*blp), &needlog, &needscan); @@ -331,7 +331,7 @@ xfs_dir2_block_addname( * This needs to happen before the next call to use_free. */ if (needscan) { - xfs_dir2_data_freescan(mp, (xfs_dir2_data_t *)block, + xfs_dir2_data_freescan(mp, (xfs_dir2_data_t *)hdr, &needlog); needscan = 0; } @@ -397,13 +397,13 @@ xfs_dir2_block_addname( */ blp[mid].hashval = cpu_to_be32(args->hashval); blp[mid].address = cpu_to_be32(xfs_dir2_byte_to_dataptr(mp, - (char *)dep - (char *)block)); + (char *)dep - (char *)hdr)); xfs_dir2_block_log_leaf(tp, bp, lfloglow, lfloghigh); /* * Mark space for the data entry used. */ xfs_dir2_data_use_free(tp, bp, dup, - (xfs_dir2_data_aoff_t)((char *)dup - (char *)block), + (xfs_dir2_data_aoff_t)((char *)dup - (char *)hdr), (xfs_dir2_data_aoff_t)len, &needlog, &needscan); /* * Create the new data entry. @@ -412,12 +412,12 @@ xfs_dir2_block_addname( dep->namelen = args->namelen; memcpy(dep->name, args->name, args->namelen); tagp = xfs_dir2_data_entry_tag_p(dep); - *tagp = cpu_to_be16((char *)dep - (char *)block); + *tagp = cpu_to_be16((char *)dep - (char *)hdr); /* * Clean up the bestfree array and log the header, tail, and entry. */ if (needscan) - xfs_dir2_data_freescan(mp, (xfs_dir2_data_t *)block, &needlog); + xfs_dir2_data_freescan(mp, (xfs_dir2_data_t *)hdr, &needlog); if (needlog) xfs_dir2_data_log_header(tp, bp); xfs_dir2_block_log_tail(tp, bp); @@ -438,6 +438,7 @@ xfs_dir2_block_getdents( filldir_t filldir) { xfs_dir2_block_t *block; /* directory block structure */ + xfs_dir2_data_hdr_t *hdr; /* block header */ xfs_dabuf_t *bp; /* buffer for block */ xfs_dir2_block_tail_t *btp; /* block tail */ xfs_dir2_data_entry_t *dep; /* block data entry */ @@ -471,11 +472,12 @@ xfs_dir2_block_getdents( */ wantoff = xfs_dir2_dataptr_to_off(mp, *offset); block = bp->data; + hdr = &block->hdr; xfs_dir2_data_check(dp, bp); /* * Set up values for the loop. */ - btp = xfs_dir2_block_tail_p(mp, block); + btp = xfs_dir2_block_tail_p(mp, hdr); ptr = (char *)block->u; endptr = (char *)xfs_dir2_block_leaf_p(btp); @@ -502,11 +504,11 @@ xfs_dir2_block_getdents( /* * The entry is before the desired starting point, skip it. */ - if ((char *)dep - (char *)block < wantoff) + if ((char *)dep - (char *)hdr < wantoff) continue; cook = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk, - (char *)dep - (char *)block); + (char *)dep - (char *)hdr); /* * If it didn't fit, set the final offset to here & return. @@ -540,17 +542,14 @@ xfs_dir2_block_log_leaf( int first, /* index of first logged leaf */ int last) /* index of last logged leaf */ { - xfs_dir2_block_t *block; /* directory block structure */ - xfs_dir2_leaf_entry_t *blp; /* block leaf entries */ - xfs_dir2_block_tail_t *btp; /* block tail */ - xfs_mount_t *mp; /* filesystem mount point */ + xfs_dir2_data_hdr_t *hdr = bp->data; + xfs_dir2_leaf_entry_t *blp; + xfs_dir2_block_tail_t *btp; - mp = tp->t_mountp; - block = bp->data; - btp = xfs_dir2_block_tail_p(mp, block); + btp = xfs_dir2_block_tail_p(tp->t_mountp, hdr); blp = xfs_dir2_block_leaf_p(btp); - xfs_da_log_buf(tp, bp, (uint)((char *)&blp[first] - (char *)block), - (uint)((char *)&blp[last + 1] - (char *)block - 1)); + xfs_da_log_buf(tp, bp, (uint)((char *)&blp[first] - (char *)hdr), + (uint)((char *)&blp[last + 1] - (char *)hdr - 1)); } /* @@ -561,15 +560,12 @@ xfs_dir2_block_log_tail( xfs_trans_t *tp, /* transaction structure */ xfs_dabuf_t *bp) /* block buffer */ { - xfs_dir2_block_t *block; /* directory block structure */ - xfs_dir2_block_tail_t *btp; /* block tail */ - xfs_mount_t *mp; /* filesystem mount point */ + xfs_dir2_data_hdr_t *hdr = bp->data; + xfs_dir2_block_tail_t *btp; - mp = tp->t_mountp; - block = bp->data; - btp = xfs_dir2_block_tail_p(mp, block); - xfs_da_log_buf(tp, bp, (uint)((char *)btp - (char *)block), - (uint)((char *)(btp + 1) - (char *)block - 1)); + btp = xfs_dir2_block_tail_p(tp->t_mountp, hdr); + xfs_da_log_buf(tp, bp, (uint)((char *)btp - (char *)hdr), + (uint)((char *)(btp + 1) - (char *)hdr - 1)); } /* @@ -580,7 +576,7 @@ int /* error */ xfs_dir2_block_lookup( xfs_da_args_t *args) /* dir lookup arguments */ { - xfs_dir2_block_t *block; /* block structure */ + xfs_dir2_data_hdr_t *hdr; /* block header */ xfs_dir2_leaf_entry_t *blp; /* block leaf entries */ xfs_dabuf_t *bp; /* block buffer */ xfs_dir2_block_tail_t *btp; /* block tail */ @@ -600,14 +596,14 @@ xfs_dir2_block_lookup( return error; dp = args->dp; mp = dp->i_mount; - block = bp->data; + hdr = bp->data; xfs_dir2_data_check(dp, bp); - btp = xfs_dir2_block_tail_p(mp, block); + btp = xfs_dir2_block_tail_p(mp, hdr); blp = xfs_dir2_block_leaf_p(btp); /* * Get the offset from the leaf entry, to point to the data. */ - dep = (xfs_dir2_data_entry_t *)((char *)block + + dep = (xfs_dir2_data_entry_t *)((char *)hdr + xfs_dir2_dataptr_to_off(mp, be32_to_cpu(blp[ent].address))); /* * Fill in inode number, CI name if appropriate, release the block. @@ -628,7 +624,7 @@ xfs_dir2_block_lookup_int( int *entno) /* returned entry number */ { xfs_dir2_dataptr_t addr; /* data entry address */ - xfs_dir2_block_t *block; /* block structure */ + xfs_dir2_data_hdr_t *hdr; /* block header */ xfs_dir2_leaf_entry_t *blp; /* block leaf entries */ xfs_dabuf_t *bp; /* block buffer */ xfs_dir2_block_tail_t *btp; /* block tail */ @@ -654,9 +650,9 @@ xfs_dir2_block_lookup_int( return error; } ASSERT(bp != NULL); - block = bp->data; + hdr = bp->data; xfs_dir2_data_check(dp, bp); - btp = xfs_dir2_block_tail_p(mp, block); + btp = xfs_dir2_block_tail_p(mp, hdr); blp = xfs_dir2_block_leaf_p(btp); /* * Loop doing a binary search for our hash value. @@ -694,7 +690,7 @@ xfs_dir2_block_lookup_int( * Get pointer to the entry from the leaf. */ dep = (xfs_dir2_data_entry_t *) - ((char *)block + xfs_dir2_dataptr_to_off(mp, addr)); + ((char *)hdr + xfs_dir2_dataptr_to_off(mp, addr)); /* * Compare name and if it's an exact match, return the index * and buffer. If it's the first case-insensitive match, store @@ -733,7 +729,7 @@ int /* error */ xfs_dir2_block_removename( xfs_da_args_t *args) /* directory operation args */ { - xfs_dir2_block_t *block; /* block structure */ + xfs_dir2_data_hdr_t *hdr; /* block header */ xfs_dir2_leaf_entry_t *blp; /* block leaf pointer */ xfs_dabuf_t *bp; /* block buffer */ xfs_dir2_block_tail_t *btp; /* block tail */ @@ -760,20 +756,20 @@ xfs_dir2_block_removename( dp = args->dp; tp = args->trans; mp = dp->i_mount; - block = bp->data; - btp = xfs_dir2_block_tail_p(mp, block); + hdr = bp->data; + btp = xfs_dir2_block_tail_p(mp, hdr); blp = xfs_dir2_block_leaf_p(btp); /* * Point to the data entry using the leaf entry. */ dep = (xfs_dir2_data_entry_t *) - ((char *)block + xfs_dir2_dataptr_to_off(mp, be32_to_cpu(blp[ent].address))); + ((char *)hdr + xfs_dir2_dataptr_to_off(mp, be32_to_cpu(blp[ent].address))); /* * Mark the data entry's space free. */ needlog = needscan = 0; xfs_dir2_data_make_free(tp, bp, - (xfs_dir2_data_aoff_t)((char *)dep - (char *)block), + (xfs_dir2_data_aoff_t)((char *)dep - (char *)hdr), xfs_dir2_data_entsize(dep->namelen), &needlog, &needscan); /* * Fix up the block tail. @@ -789,15 +785,15 @@ xfs_dir2_block_removename( * Fix up bestfree, log the header if necessary. */ if (needscan) - xfs_dir2_data_freescan(mp, (xfs_dir2_data_t *)block, &needlog); + xfs_dir2_data_freescan(mp, (xfs_dir2_data_t *)hdr, &needlog); if (needlog) xfs_dir2_data_log_header(tp, bp); xfs_dir2_data_check(dp, bp); /* * See if the size as a shortform is good enough. */ - if ((size = xfs_dir2_block_sfsize(dp, block, &sfh)) > - XFS_IFORK_DSIZE(dp)) { + size = xfs_dir2_block_sfsize(dp, hdr, &sfh); + if (size > XFS_IFORK_DSIZE(dp)) { xfs_da_buf_done(bp); return 0; } @@ -815,7 +811,7 @@ int /* error */ xfs_dir2_block_replace( xfs_da_args_t *args) /* directory operation args */ { - xfs_dir2_block_t *block; /* block structure */ + xfs_dir2_data_hdr_t *hdr; /* block header */ xfs_dir2_leaf_entry_t *blp; /* block leaf entries */ xfs_dabuf_t *bp; /* block buffer */ xfs_dir2_block_tail_t *btp; /* block tail */ @@ -836,14 +832,14 @@ xfs_dir2_block_replace( } dp = args->dp; mp = dp->i_mount; - block = bp->data; - btp = xfs_dir2_block_tail_p(mp, block); + hdr = bp->data; + btp = xfs_dir2_block_tail_p(mp, hdr); blp = xfs_dir2_block_leaf_p(btp); /* * Point to the data entry we need to change. */ dep = (xfs_dir2_data_entry_t *) - ((char *)block + xfs_dir2_dataptr_to_off(mp, be32_to_cpu(blp[ent].address))); + ((char *)hdr + xfs_dir2_dataptr_to_off(mp, be32_to_cpu(blp[ent].address))); ASSERT(be64_to_cpu(dep->inumber) != args->inumber); /* * Change the inode number to the new value. @@ -882,7 +878,7 @@ xfs_dir2_leaf_to_block( xfs_dabuf_t *dbp) /* data buffer */ { __be16 *bestsp; /* leaf bests table */ - xfs_dir2_block_t *block; /* block structure */ + xfs_dir2_data_hdr_t *hdr; /* block header */ xfs_dir2_block_tail_t *btp; /* block tail */ xfs_inode_t *dp; /* incore directory inode */ xfs_dir2_data_unused_t *dup; /* unused data entry */ @@ -917,7 +913,7 @@ xfs_dir2_leaf_to_block( while (dp->i_d.di_size > mp->m_dirblksize) { bestsp = xfs_dir2_leaf_bests_p(ltp); if (be16_to_cpu(bestsp[be32_to_cpu(ltp->bestcount) - 1]) == - mp->m_dirblksize - (uint)sizeof(block->hdr)) { + mp->m_dirblksize - (uint)sizeof(*hdr)) { if ((error = xfs_dir2_leaf_trim_data(args, lbp, (xfs_dir2_db_t)(be32_to_cpu(ltp->bestcount) - 1)))) @@ -935,18 +931,18 @@ xfs_dir2_leaf_to_block( XFS_DATA_FORK))) { goto out; } - block = dbp->data; - ASSERT(be32_to_cpu(block->hdr.magic) == XFS_DIR2_DATA_MAGIC); + hdr = dbp->data; + ASSERT(be32_to_cpu(hdr->magic) == XFS_DIR2_DATA_MAGIC); /* * Size of the "leaf" area in the block. */ - size = (uint)sizeof(block->tail) + + size = (uint)sizeof(xfs_dir2_block_tail_t) + (uint)sizeof(*lep) * (be16_to_cpu(leaf->hdr.count) - be16_to_cpu(leaf->hdr.stale)); /* * Look at the last data entry. */ - tagp = (__be16 *)((char *)block + mp->m_dirblksize) - 1; - dup = (xfs_dir2_data_unused_t *)((char *)block + be16_to_cpu(*tagp)); + tagp = (__be16 *)((char *)hdr + mp->m_dirblksize) - 1; + dup = (xfs_dir2_data_unused_t *)((char *)hdr + be16_to_cpu(*tagp)); /* * If it's not free or is too short we can't do it. */ @@ -958,7 +954,7 @@ xfs_dir2_leaf_to_block( /* * Start converting it to block form. */ - block->hdr.magic = cpu_to_be32(XFS_DIR2_BLOCK_MAGIC); + hdr->magic = cpu_to_be32(XFS_DIR2_BLOCK_MAGIC); needlog = 1; needscan = 0; /* @@ -969,7 +965,7 @@ xfs_dir2_leaf_to_block( /* * Initialize the block tail. */ - btp = xfs_dir2_block_tail_p(mp, block); + btp = xfs_dir2_block_tail_p(mp, hdr); btp->count = cpu_to_be32(be16_to_cpu(leaf->hdr.count) - be16_to_cpu(leaf->hdr.stale)); btp->stale = 0; xfs_dir2_block_log_tail(tp, dbp); @@ -988,7 +984,7 @@ xfs_dir2_leaf_to_block( * Scan the bestfree if we need it and log the data block header. */ if (needscan) - xfs_dir2_data_freescan(mp, (xfs_dir2_data_t *)block, &needlog); + xfs_dir2_data_freescan(mp, (xfs_dir2_data_t *)hdr, &needlog); if (needlog) xfs_dir2_data_log_header(tp, dbp); /* @@ -1002,8 +998,8 @@ xfs_dir2_leaf_to_block( /* * Now see if the resulting block can be shrunken to shortform. */ - if ((size = xfs_dir2_block_sfsize(dp, block, &sfh)) > - XFS_IFORK_DSIZE(dp)) { + size = xfs_dir2_block_sfsize(dp, hdr, &sfh); + if (size > XFS_IFORK_DSIZE(dp)) { error = 0; goto out; } @@ -1025,6 +1021,7 @@ xfs_dir2_sf_to_block( { xfs_dir2_db_t blkno; /* dir-relative block # (0) */ xfs_dir2_block_t *block; /* block structure */ + xfs_dir2_data_hdr_t *hdr; /* block header */ xfs_dir2_leaf_entry_t *blp; /* block leaf entries */ xfs_dabuf_t *bp; /* block buffer */ xfs_dir2_block_tail_t *btp; /* block tail pointer */ @@ -1095,7 +1092,8 @@ xfs_dir2_sf_to_block( return error; } block = bp->data; - block->hdr.magic = cpu_to_be32(XFS_DIR2_BLOCK_MAGIC); + hdr = &block->hdr; + hdr->magic = cpu_to_be32(XFS_DIR2_BLOCK_MAGIC); /* * Compute size of block "tail" area. */ @@ -1113,45 +1111,45 @@ xfs_dir2_sf_to_block( /* * Fill in the tail. */ - btp = xfs_dir2_block_tail_p(mp, block); + btp = xfs_dir2_block_tail_p(mp, hdr); btp->count = cpu_to_be32(sfp->count + 2); /* ., .. */ btp->stale = 0; blp = xfs_dir2_block_leaf_p(btp); - endoffset = (uint)((char *)blp - (char *)block); + endoffset = (uint)((char *)blp - (char *)hdr); /* * Remove the freespace, we'll manage it. */ xfs_dir2_data_use_free(tp, bp, dup, - (xfs_dir2_data_aoff_t)((char *)dup - (char *)block), + (xfs_dir2_data_aoff_t)((char *)dup - (char *)hdr), be16_to_cpu(dup->length), &needlog, &needscan); /* * Create entry for . */ dep = (xfs_dir2_data_entry_t *) - ((char *)block + XFS_DIR2_DATA_DOT_OFFSET); + ((char *)hdr + XFS_DIR2_DATA_DOT_OFFSET); dep->inumber = cpu_to_be64(dp->i_ino); dep->namelen = 1; dep->name[0] = '.'; tagp = xfs_dir2_data_entry_tag_p(dep); - *tagp = cpu_to_be16((char *)dep - (char *)block); + *tagp = cpu_to_be16((char *)dep - (char *)hdr); xfs_dir2_data_log_entry(tp, bp, dep); blp[0].hashval = cpu_to_be32(xfs_dir_hash_dot); blp[0].address = cpu_to_be32(xfs_dir2_byte_to_dataptr(mp, - (char *)dep - (char *)block)); + (char *)dep - (char *)hdr)); /* * Create entry for .. */ dep = (xfs_dir2_data_entry_t *) - ((char *)block + XFS_DIR2_DATA_DOTDOT_OFFSET); + ((char *)hdr + XFS_DIR2_DATA_DOTDOT_OFFSET); dep->inumber = cpu_to_be64(xfs_dir2_sf_get_parent_ino(sfp)); dep->namelen = 2; dep->name[0] = dep->name[1] = '.'; tagp = xfs_dir2_data_entry_tag_p(dep); - *tagp = cpu_to_be16((char *)dep - (char *)block); + *tagp = cpu_to_be16((char *)dep - (char *)hdr); xfs_dir2_data_log_entry(tp, bp, dep); blp[1].hashval = cpu_to_be32(xfs_dir_hash_dotdot); blp[1].address = cpu_to_be32(xfs_dir2_byte_to_dataptr(mp, - (char *)dep - (char *)block)); + (char *)dep - (char *)hdr)); offset = XFS_DIR2_DATA_FIRST_OFFSET; /* * Loop over existing entries, stuff them in. @@ -1177,14 +1175,13 @@ xfs_dir2_sf_to_block( * There should be a hole here, make one. */ if (offset < newoffset) { - dup = (xfs_dir2_data_unused_t *) - ((char *)block + offset); + dup = (xfs_dir2_data_unused_t *)((char *)hdr + offset); dup->freetag = cpu_to_be16(XFS_DIR2_DATA_FREE_TAG); dup->length = cpu_to_be16(newoffset - offset); *xfs_dir2_data_unused_tag_p(dup) = cpu_to_be16( - ((char *)dup - (char *)block)); + ((char *)dup - (char *)hdr)); xfs_dir2_data_log_unused(tp, bp, dup); - (void)xfs_dir2_data_freeinsert((xfs_dir2_data_t *)block, + (void)xfs_dir2_data_freeinsert((xfs_dir2_data_t *)hdr, dup, &dummy); offset += be16_to_cpu(dup->length); continue; @@ -1192,20 +1189,20 @@ xfs_dir2_sf_to_block( /* * Copy a real entry. */ - dep = (xfs_dir2_data_entry_t *)((char *)block + newoffset); + dep = (xfs_dir2_data_entry_t *)((char *)hdr + newoffset); dep->inumber = cpu_to_be64(xfs_dir2_sfe_get_ino(sfp, sfep)); dep->namelen = sfep->namelen; memcpy(dep->name, sfep->name, dep->namelen); tagp = xfs_dir2_data_entry_tag_p(dep); - *tagp = cpu_to_be16((char *)dep - (char *)block); + *tagp = cpu_to_be16((char *)dep - (char *)hdr); xfs_dir2_data_log_entry(tp, bp, dep); name.name = sfep->name; name.len = sfep->namelen; blp[2 + i].hashval = cpu_to_be32(mp->m_dirnameops-> hashname(&name)); blp[2 + i].address = cpu_to_be32(xfs_dir2_byte_to_dataptr(mp, - (char *)dep - (char *)block)); - offset = (int)((char *)(tagp + 1) - (char *)block); + (char *)dep - (char *)hdr)); + offset = (int)((char *)(tagp + 1) - (char *)hdr); if (++i == sfp->count) sfep = NULL; else Index: xfs/fs/xfs/xfs_dir2_data.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_data.c 2011-06-29 11:26:13.699221583 +0200 +++ xfs/fs/xfs/xfs_dir2_data.c 2011-06-29 13:17:34.256363230 +0200 @@ -72,7 +72,7 @@ xfs_dir2_data_check( bf = d->hdr.bestfree; p = (char *)d->u; if (be32_to_cpu(d->hdr.magic) == XFS_DIR2_BLOCK_MAGIC) { - btp = xfs_dir2_block_tail_p(mp, (xfs_dir2_block_t *)d); + btp = xfs_dir2_block_tail_p(mp, &d->hdr); lep = xfs_dir2_block_leaf_p(btp); endp = (char *)lep; } else @@ -348,7 +348,7 @@ xfs_dir2_data_freescan( */ p = (char *)d->u; if (be32_to_cpu(d->hdr.magic) == XFS_DIR2_BLOCK_MAGIC) { - btp = xfs_dir2_block_tail_p(mp, (xfs_dir2_block_t *)d); + btp = xfs_dir2_block_tail_p(mp, &d->hdr); endp = (char *)xfs_dir2_block_leaf_p(btp); } else endp = (char *)d + mp->m_dirblksize; @@ -537,7 +537,7 @@ xfs_dir2_data_make_free( xfs_dir2_block_tail_t *btp; /* block tail */ ASSERT(be32_to_cpu(d->hdr.magic) == XFS_DIR2_BLOCK_MAGIC); - btp = xfs_dir2_block_tail_p(mp, (xfs_dir2_block_t *)d); + btp = xfs_dir2_block_tail_p(mp, &d->hdr); endptr = (char *)xfs_dir2_block_leaf_p(btp); } /* Index: xfs/fs/xfs/xfs_dir2_leaf.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_leaf.c 2011-06-29 13:02:38.617881987 +0200 +++ xfs/fs/xfs/xfs_dir2_leaf.c 2011-06-29 13:17:34.259696546 +0200 @@ -64,7 +64,7 @@ xfs_dir2_block_to_leaf( { __be16 *bestsp; /* leaf's bestsp entries */ xfs_dablk_t blkno; /* leaf block's bno */ - xfs_dir2_block_t *block; /* block structure */ + xfs_dir2_data_hdr_t *hdr; /* block header */ xfs_dir2_leaf_entry_t *blp; /* block's leaf entries */ xfs_dir2_block_tail_t *btp; /* block's tail */ xfs_inode_t *dp; /* incore directory inode */ @@ -101,9 +101,9 @@ xfs_dir2_block_to_leaf( } ASSERT(lbp != NULL); leaf = lbp->data; - block = dbp->data; + hdr = dbp->data; xfs_dir2_data_check(dp, dbp); - btp = xfs_dir2_block_tail_p(mp, block); + btp = xfs_dir2_block_tail_p(mp, hdr); blp = xfs_dir2_block_leaf_p(btp); /* * Set the counts in the leaf header. @@ -123,23 +123,23 @@ xfs_dir2_block_to_leaf( * tail be free. */ xfs_dir2_data_make_free(tp, dbp, - (xfs_dir2_data_aoff_t)((char *)blp - (char *)block), - (xfs_dir2_data_aoff_t)((char *)block + mp->m_dirblksize - + (xfs_dir2_data_aoff_t)((char *)blp - (char *)hdr), + (xfs_dir2_data_aoff_t)((char *)hdr + mp->m_dirblksize - (char *)blp), &needlog, &needscan); /* * Fix up the block header, make it a data block. */ - block->hdr.magic = cpu_to_be32(XFS_DIR2_DATA_MAGIC); + hdr->magic = cpu_to_be32(XFS_DIR2_DATA_MAGIC); if (needscan) - xfs_dir2_data_freescan(mp, (xfs_dir2_data_t *)block, &needlog); + xfs_dir2_data_freescan(mp, (xfs_dir2_data_t *)hdr, &needlog); /* * Set up leaf tail and bests table. */ ltp = xfs_dir2_leaf_tail_p(mp, leaf); ltp->bestcount = cpu_to_be32(1); bestsp = xfs_dir2_leaf_bests_p(ltp); - bestsp[0] = block->hdr.bestfree[0].length; + bestsp[0] = hdr->bestfree[0].length; /* * Log the data header and leaf bests table. */ Index: xfs/fs/xfs/xfs_dir2_sf.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_sf.c 2011-06-29 13:15:26.800387051 +0200 +++ xfs/fs/xfs/xfs_dir2_sf.c 2011-06-29 13:17:34.263029862 +0200 @@ -145,7 +145,7 @@ xfs_dir2_sfe_put_ino( int /* size for sf form */ xfs_dir2_block_sfsize( xfs_inode_t *dp, /* incore inode pointer */ - xfs_dir2_block_t *block, /* block directory data */ + xfs_dir2_data_hdr_t *hdr, /* block directory data */ xfs_dir2_sf_hdr_t *sfhp) /* output: header for sf form */ { xfs_dir2_dataptr_t addr; /* data entry address */ @@ -165,7 +165,7 @@ xfs_dir2_block_sfsize( mp = dp->i_mount; count = i8count = namelen = 0; - btp = xfs_dir2_block_tail_p(mp, block); + btp = xfs_dir2_block_tail_p(mp, hdr); blp = xfs_dir2_block_leaf_p(btp); /* @@ -178,7 +178,7 @@ xfs_dir2_block_sfsize( * Calculate the pointer to the entry at hand. */ dep = (xfs_dir2_data_entry_t *) - ((char *)block + xfs_dir2_dataptr_to_off(mp, addr)); + ((char *)hdr + xfs_dir2_dataptr_to_off(mp, addr)); /* * Detect . and .., so we can special-case them. * . is not included in sf directories. @@ -259,6 +259,7 @@ xfs_dir2_block_to_sf( ASSERT(error != ENOSPC); goto out; } + /* * The buffer is now unconditionally gone, whether * xfs_dir2_shrink_inode worked or not. @@ -280,7 +281,7 @@ xfs_dir2_block_to_sf( /* * Set up to loop over the block's entries. */ - btp = xfs_dir2_block_tail_p(mp, block); + btp = xfs_dir2_block_tail_p(mp, &block->hdr); ptr = (char *)block->u; endptr = (char *)xfs_dir2_block_leaf_p(btp); sfep = xfs_dir2_sf_firstentry(sfp); Index: xfs/fs/xfs/xfs_dir2_sf.h =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_sf.h 2011-06-29 13:17:15.143133442 +0200 +++ xfs/fs/xfs/xfs_dir2_sf.h 2011-06-29 13:17:34.263029862 +0200 @@ -32,7 +32,7 @@ struct uio; struct xfs_dabuf; struct xfs_da_args; -struct xfs_dir2_block; +struct xfs_dir2_data_hdr; struct xfs_inode; struct xfs_mount; struct xfs_trans; @@ -134,7 +134,7 @@ extern xfs_ino_t xfs_dir2_sf_get_parent_ extern xfs_ino_t xfs_dir2_sfe_get_ino(struct xfs_dir2_sf_hdr *sfp, struct xfs_dir2_sf_entry *sfep); extern int xfs_dir2_block_sfsize(struct xfs_inode *dp, - struct xfs_dir2_block *block, + struct xfs_dir2_data_hdr *block, xfs_dir2_sf_hdr_t *sfhp); extern int xfs_dir2_block_to_sf(struct xfs_da_args *args, struct xfs_dabuf *bp, int size, xfs_dir2_sf_hdr_t *sfhp); Index: xfs/fs/xfs/xfs_dir2_block.h =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_block.h 2011-06-29 11:26:13.725888103 +0200 +++ xfs/fs/xfs/xfs_dir2_block.h 2011-06-29 13:17:34.266363177 +0200 @@ -61,10 +61,9 @@ typedef struct xfs_dir2_block { * Pointer to the leaf header embedded in a data block (1-block format) */ static inline xfs_dir2_block_tail_t * -xfs_dir2_block_tail_p(struct xfs_mount *mp, xfs_dir2_block_t *block) +xfs_dir2_block_tail_p(struct xfs_mount *mp, xfs_dir2_data_hdr_t *hdr) { - return (((xfs_dir2_block_tail_t *) - ((char *)(block) + (mp)->m_dirblksize)) - 1); + return ((xfs_dir2_block_tail_t *)((char *)hdr + mp->m_dirblksize)) - 1; } /* From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 09:03:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,J_CHICKENPOX_36, J_CHICKENPOX_43,J_CHICKENPOX_62,J_CHICKENPOX_63,J_CHICKENPOX_64, J_CHICKENPOX_66,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 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 p5TE3hqX104921 for ; Wed, 29 Jun 2011 09:03:43 -0500 X-ASG-Debug-ID: 1309356220-785800340000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 27314409E5 for ; Wed, 29 Jun 2011 07:03:40 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id hcr2HW9U4qBeGb9i for ; Wed, 29 Jun 2011 07:03:40 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QbvMi-0008Ji-8z for xfs@oss.sgi.com; Wed, 29 Jun 2011 14:03:40 +0000 Message-Id: <20110629140340.246204787@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Wed, 29 Jun 2011 10:01:28 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 19/27] xfs: avoid usage of struct xfs_dir2_data Subject: [PATCH 19/27] xfs: avoid usage of struct xfs_dir2_data References: <20110629140109.003209430@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-avoid-xfs_dir2_data_t X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309356221 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 In most places we can simply pass around and use the struct xfs_dir2_data_hdr, which is the first and most important member of struct xfs_dir2_data instead of the full structure. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_da_btree.c =================================================================== --- xfs.orig/fs/xfs/xfs_da_btree.c 2011-06-27 10:47:35.889487280 +0200 +++ xfs/fs/xfs/xfs_da_btree.c 2011-06-27 10:51:33.638199284 +0200 @@ -2079,16 +2079,13 @@ xfs_da_do_buf( * For read_buf, check the magic number. */ if (caller == 1) { - xfs_dir2_data_t *data; - xfs_dir2_free_t *free; - xfs_da_blkinfo_t *info; + xfs_dir2_data_hdr_t *hdr = rbp->data; + xfs_dir2_free_t *free = rbp->data; + xfs_da_blkinfo_t *info = rbp->data; uint magic, magic1; - info = rbp->data; - data = rbp->data; - free = rbp->data; magic = be16_to_cpu(info->magic); - magic1 = be32_to_cpu(data->hdr.magic); + magic1 = be32_to_cpu(hdr->magic); if (unlikely( XFS_TEST_ERROR((magic != XFS_DA_NODE_MAGIC) && (magic != XFS_ATTR_LEAF_MAGIC) && Index: xfs/fs/xfs/xfs_dir2_block.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_block.c 2011-06-27 10:49:37.012164015 +0200 +++ xfs/fs/xfs/xfs_dir2_block.c 2011-06-27 10:51:33.641532599 +0200 @@ -282,7 +282,7 @@ xfs_dir2_block_addname( * This needs to happen before the next call to use_free. */ if (needscan) { - xfs_dir2_data_freescan(mp, (xfs_dir2_data_t *)hdr, &needlog); + xfs_dir2_data_freescan(mp, hdr, &needlog); needscan = 0; } } @@ -331,8 +331,7 @@ xfs_dir2_block_addname( * This needs to happen before the next call to use_free. */ if (needscan) { - xfs_dir2_data_freescan(mp, (xfs_dir2_data_t *)hdr, - &needlog); + xfs_dir2_data_freescan(mp, hdr, &needlog); needscan = 0; } /* @@ -417,7 +416,7 @@ xfs_dir2_block_addname( * Clean up the bestfree array and log the header, tail, and entry. */ if (needscan) - xfs_dir2_data_freescan(mp, (xfs_dir2_data_t *)hdr, &needlog); + xfs_dir2_data_freescan(mp, hdr, &needlog); if (needlog) xfs_dir2_data_log_header(tp, bp); xfs_dir2_block_log_tail(tp, bp); @@ -783,7 +782,7 @@ xfs_dir2_block_removename( * Fix up bestfree, log the header if necessary. */ if (needscan) - xfs_dir2_data_freescan(mp, (xfs_dir2_data_t *)hdr, &needlog); + xfs_dir2_data_freescan(mp, hdr, &needlog); if (needlog) xfs_dir2_data_log_header(tp, bp); xfs_dir2_data_check(dp, bp); @@ -982,7 +981,7 @@ xfs_dir2_leaf_to_block( * Scan the bestfree if we need it and log the data block header. */ if (needscan) - xfs_dir2_data_freescan(mp, (xfs_dir2_data_t *)hdr, &needlog); + xfs_dir2_data_freescan(mp, hdr, &needlog); if (needlog) xfs_dir2_data_log_header(tp, dbp); /* @@ -1177,8 +1176,7 @@ xfs_dir2_sf_to_block( *xfs_dir2_data_unused_tag_p(dup) = cpu_to_be16( ((char *)dup - (char *)hdr)); xfs_dir2_data_log_unused(tp, bp, dup); - (void)xfs_dir2_data_freeinsert((xfs_dir2_data_t *)hdr, - dup, &dummy); + (void)xfs_dir2_data_freeinsert(hdr, dup, &dummy); offset += be16_to_cpu(dup->length); continue; } Index: xfs/fs/xfs/xfs_dir2_data.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_data.c 2011-06-27 10:47:35.909487170 +0200 +++ xfs/fs/xfs/xfs_dir2_data.c 2011-06-27 10:51:33.644865914 +0200 @@ -35,6 +35,9 @@ #include "xfs_dir2_block.h" #include "xfs_error.h" +STATIC xfs_dir2_data_free_t * +xfs_dir2_data_freefind(xfs_dir2_data_hdr_t *hdr, xfs_dir2_data_unused_t *dup); + #ifdef DEBUG /* * Check the consistency of the data block. @@ -51,6 +54,7 @@ xfs_dir2_data_check( xfs_dir2_block_tail_t *btp=NULL; /* block tail */ int count; /* count of entries found */ xfs_dir2_data_t *d; /* data block pointer */ + xfs_dir2_data_hdr_t *hdr; /* data block header */ xfs_dir2_data_entry_t *dep; /* data entry */ xfs_dir2_data_free_t *dfp; /* bestfree entry */ xfs_dir2_data_unused_t *dup; /* unused entry */ @@ -67,16 +71,19 @@ xfs_dir2_data_check( mp = dp->i_mount; d = bp->data; - ASSERT(be32_to_cpu(d->hdr.magic) == XFS_DIR2_DATA_MAGIC || - be32_to_cpu(d->hdr.magic) == XFS_DIR2_BLOCK_MAGIC); - bf = d->hdr.bestfree; + hdr = &d->hdr; + bf = hdr->bestfree; p = (char *)d->u; - if (be32_to_cpu(d->hdr.magic) == XFS_DIR2_BLOCK_MAGIC) { - btp = xfs_dir2_block_tail_p(mp, &d->hdr); + + if (hdr->magic == cpu_to_be32(XFS_DIR2_BLOCK_MAGIC)) { + btp = xfs_dir2_block_tail_p(mp, hdr); lep = xfs_dir2_block_leaf_p(btp); endp = (char *)lep; - } else - endp = (char *)d + mp->m_dirblksize; + } else { + ASSERT(hdr->magic == cpu_to_be32(XFS_DIR2_DATA_MAGIC)); + endp = (char *)hdr + mp->m_dirblksize; + } + count = lastfree = freeseen = 0; /* * Account for zero bestfree entries. @@ -108,8 +115,8 @@ xfs_dir2_data_check( if (be16_to_cpu(dup->freetag) == XFS_DIR2_DATA_FREE_TAG) { ASSERT(lastfree == 0); ASSERT(be16_to_cpu(*xfs_dir2_data_unused_tag_p(dup)) == - (char *)dup - (char *)d); - dfp = xfs_dir2_data_freefind(d, dup); + (char *)dup - (char *)hdr); + dfp = xfs_dir2_data_freefind(hdr, dup); if (dfp) { i = (int)(dfp - bf); ASSERT((freeseen & (1 << i)) == 0); @@ -132,13 +139,13 @@ xfs_dir2_data_check( ASSERT(dep->namelen != 0); ASSERT(xfs_dir_ino_validate(mp, be64_to_cpu(dep->inumber)) == 0); ASSERT(be16_to_cpu(*xfs_dir2_data_entry_tag_p(dep)) == - (char *)dep - (char *)d); + (char *)dep - (char *)hdr); count++; lastfree = 0; - if (be32_to_cpu(d->hdr.magic) == XFS_DIR2_BLOCK_MAGIC) { + if (hdr->magic == cpu_to_be32(XFS_DIR2_BLOCK_MAGIC)) { addr = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk, (xfs_dir2_data_aoff_t) - ((char *)dep - (char *)d)); + ((char *)dep - (char *)hdr)); name.name = dep->name; name.len = dep->namelen; hash = mp->m_dirnameops->hashname(&name); @@ -155,7 +162,7 @@ xfs_dir2_data_check( * Need to have seen all the entries and all the bestfree slots. */ ASSERT(freeseen == 7); - if (be32_to_cpu(d->hdr.magic) == XFS_DIR2_BLOCK_MAGIC) { + if (hdr->magic == cpu_to_be32(XFS_DIR2_BLOCK_MAGIC)) { for (i = stale = 0; i < be32_to_cpu(btp->count); i++) { if (be32_to_cpu(lep[i].address) == XFS_DIR2_NULL_DATAPTR) stale++; @@ -172,9 +179,9 @@ xfs_dir2_data_check( * Given a data block and an unused entry from that block, * return the bestfree entry if any that corresponds to it. */ -xfs_dir2_data_free_t * +STATIC xfs_dir2_data_free_t * xfs_dir2_data_freefind( - xfs_dir2_data_t *d, /* data block */ + xfs_dir2_data_hdr_t *hdr, /* data block */ xfs_dir2_data_unused_t *dup) /* data unused entry */ { xfs_dir2_data_free_t *dfp; /* bestfree entry */ @@ -184,17 +191,17 @@ xfs_dir2_data_freefind( int seenzero; /* saw a 0 bestfree entry */ #endif - off = (xfs_dir2_data_aoff_t)((char *)dup - (char *)d); + off = (xfs_dir2_data_aoff_t)((char *)dup - (char *)hdr); #if defined(DEBUG) && defined(__KERNEL__) /* * Validate some consistency in the bestfree table. * Check order, non-overlapping entries, and if we find the * one we're looking for it has to be exact. */ - ASSERT(be32_to_cpu(d->hdr.magic) == XFS_DIR2_DATA_MAGIC || - be32_to_cpu(d->hdr.magic) == XFS_DIR2_BLOCK_MAGIC); - for (dfp = &d->hdr.bestfree[0], seenzero = matched = 0; - dfp < &d->hdr.bestfree[XFS_DIR2_DATA_FD_COUNT]; + ASSERT(be32_to_cpu(hdr->magic) == XFS_DIR2_DATA_MAGIC || + be32_to_cpu(hdr->magic) == XFS_DIR2_BLOCK_MAGIC); + for (dfp = &hdr->bestfree[0], seenzero = matched = 0; + dfp < &hdr->bestfree[XFS_DIR2_DATA_FD_COUNT]; dfp++) { if (!dfp->offset) { ASSERT(!dfp->length); @@ -210,7 +217,7 @@ xfs_dir2_data_freefind( else ASSERT(be16_to_cpu(dfp->offset) + be16_to_cpu(dfp->length) <= off); ASSERT(matched || be16_to_cpu(dfp->length) >= be16_to_cpu(dup->length)); - if (dfp > &d->hdr.bestfree[0]) + if (dfp > &hdr->bestfree[0]) ASSERT(be16_to_cpu(dfp[-1].length) >= be16_to_cpu(dfp[0].length)); } #endif @@ -219,13 +226,13 @@ xfs_dir2_data_freefind( * it can't be there since they're sorted. */ if (be16_to_cpu(dup->length) < - be16_to_cpu(d->hdr.bestfree[XFS_DIR2_DATA_FD_COUNT - 1].length)) + be16_to_cpu(hdr->bestfree[XFS_DIR2_DATA_FD_COUNT - 1].length)) return NULL; /* * Look at the three bestfree entries for our guy. */ - for (dfp = &d->hdr.bestfree[0]; - dfp < &d->hdr.bestfree[XFS_DIR2_DATA_FD_COUNT]; + for (dfp = &hdr->bestfree[0]; + dfp < &hdr->bestfree[XFS_DIR2_DATA_FD_COUNT]; dfp++) { if (!dfp->offset) return NULL; @@ -243,7 +250,7 @@ xfs_dir2_data_freefind( */ xfs_dir2_data_free_t * /* entry inserted */ xfs_dir2_data_freeinsert( - xfs_dir2_data_t *d, /* data block pointer */ + xfs_dir2_data_hdr_t *hdr, /* data block pointer */ xfs_dir2_data_unused_t *dup, /* unused space */ int *loghead) /* log the data header (out) */ { @@ -251,12 +258,13 @@ xfs_dir2_data_freeinsert( xfs_dir2_data_free_t new; /* new bestfree entry */ #ifdef __KERNEL__ - ASSERT(be32_to_cpu(d->hdr.magic) == XFS_DIR2_DATA_MAGIC || - be32_to_cpu(d->hdr.magic) == XFS_DIR2_BLOCK_MAGIC); + ASSERT(be32_to_cpu(hdr->magic) == XFS_DIR2_DATA_MAGIC || + be32_to_cpu(hdr->magic) == XFS_DIR2_BLOCK_MAGIC); #endif - dfp = d->hdr.bestfree; + dfp = hdr->bestfree; new.length = dup->length; - new.offset = cpu_to_be16((char *)dup - (char *)d); + new.offset = cpu_to_be16((char *)dup - (char *)hdr); + /* * Insert at position 0, 1, or 2; or not at all. */ @@ -286,36 +294,36 @@ xfs_dir2_data_freeinsert( */ STATIC void xfs_dir2_data_freeremove( - xfs_dir2_data_t *d, /* data block pointer */ + xfs_dir2_data_hdr_t *hdr, /* data block header */ xfs_dir2_data_free_t *dfp, /* bestfree entry pointer */ int *loghead) /* out: log data header */ { #ifdef __KERNEL__ - ASSERT(be32_to_cpu(d->hdr.magic) == XFS_DIR2_DATA_MAGIC || - be32_to_cpu(d->hdr.magic) == XFS_DIR2_BLOCK_MAGIC); + ASSERT(be32_to_cpu(hdr->magic) == XFS_DIR2_DATA_MAGIC || + be32_to_cpu(hdr->magic) == XFS_DIR2_BLOCK_MAGIC); #endif /* * It's the first entry, slide the next 2 up. */ - if (dfp == &d->hdr.bestfree[0]) { - d->hdr.bestfree[0] = d->hdr.bestfree[1]; - d->hdr.bestfree[1] = d->hdr.bestfree[2]; + if (dfp == &hdr->bestfree[0]) { + hdr->bestfree[0] = hdr->bestfree[1]; + hdr->bestfree[1] = hdr->bestfree[2]; } /* * It's the second entry, slide the 3rd entry up. */ - else if (dfp == &d->hdr.bestfree[1]) - d->hdr.bestfree[1] = d->hdr.bestfree[2]; + else if (dfp == &hdr->bestfree[1]) + hdr->bestfree[1] = hdr->bestfree[2]; /* * Must be the last entry. */ else - ASSERT(dfp == &d->hdr.bestfree[2]); + ASSERT(dfp == &hdr->bestfree[2]); /* * Clear the 3rd entry, must be zero now. */ - d->hdr.bestfree[2].length = 0; - d->hdr.bestfree[2].offset = 0; + hdr->bestfree[2].length = 0; + hdr->bestfree[2].offset = 0; *loghead = 1; } @@ -325,9 +333,10 @@ xfs_dir2_data_freeremove( void xfs_dir2_data_freescan( xfs_mount_t *mp, /* filesystem mount point */ - xfs_dir2_data_t *d, /* data block pointer */ + xfs_dir2_data_hdr_t *hdr, /* data block header */ int *loghead) /* out: log data header */ { + xfs_dir2_data_t *d = (xfs_dir2_data_t *)hdr; xfs_dir2_block_tail_t *btp; /* block tail */ xfs_dir2_data_entry_t *dep; /* active data entry */ xfs_dir2_data_unused_t *dup; /* unused data entry */ @@ -335,23 +344,23 @@ xfs_dir2_data_freescan( char *p; /* current entry pointer */ #ifdef __KERNEL__ - ASSERT(be32_to_cpu(d->hdr.magic) == XFS_DIR2_DATA_MAGIC || - be32_to_cpu(d->hdr.magic) == XFS_DIR2_BLOCK_MAGIC); + ASSERT(hdr->magic == cpu_to_be32(XFS_DIR2_DATA_MAGIC) || + hdr->magic == cpu_to_be32(XFS_DIR2_BLOCK_MAGIC)); #endif /* * Start by clearing the table. */ - memset(d->hdr.bestfree, 0, sizeof(d->hdr.bestfree)); + memset(hdr->bestfree, 0, sizeof(hdr->bestfree)); *loghead = 1; /* * Set up pointers. */ p = (char *)d->u; - if (be32_to_cpu(d->hdr.magic) == XFS_DIR2_BLOCK_MAGIC) { - btp = xfs_dir2_block_tail_p(mp, &d->hdr); + if (be32_to_cpu(hdr->magic) == XFS_DIR2_BLOCK_MAGIC) { + btp = xfs_dir2_block_tail_p(mp, hdr); endp = (char *)xfs_dir2_block_leaf_p(btp); } else - endp = (char *)d + mp->m_dirblksize; + endp = (char *)hdr + mp->m_dirblksize; /* * Loop over the block's entries. */ @@ -361,9 +370,9 @@ xfs_dir2_data_freescan( * If it's a free entry, insert it. */ if (be16_to_cpu(dup->freetag) == XFS_DIR2_DATA_FREE_TAG) { - ASSERT((char *)dup - (char *)d == + ASSERT((char *)dup - (char *)hdr == be16_to_cpu(*xfs_dir2_data_unused_tag_p(dup))); - xfs_dir2_data_freeinsert(d, dup, loghead); + xfs_dir2_data_freeinsert(hdr, dup, loghead); p += be16_to_cpu(dup->length); } /* @@ -371,7 +380,7 @@ xfs_dir2_data_freescan( */ else { dep = (xfs_dir2_data_entry_t *)p; - ASSERT((char *)dep - (char *)d == + ASSERT((char *)dep - (char *)hdr == be16_to_cpu(*xfs_dir2_data_entry_tag_p(dep))); p += xfs_dir2_data_entsize(dep->namelen); } @@ -390,6 +399,7 @@ xfs_dir2_data_init( { xfs_dabuf_t *bp; /* block buffer */ xfs_dir2_data_t *d; /* pointer to block */ + xfs_dir2_data_hdr_t *hdr; /* data block header */ xfs_inode_t *dp; /* incore directory inode */ xfs_dir2_data_unused_t *dup; /* unused entry pointer */ int error; /* error return value */ @@ -410,26 +420,29 @@ xfs_dir2_data_init( return error; } ASSERT(bp != NULL); + /* * Initialize the header. */ d = bp->data; - d->hdr.magic = cpu_to_be32(XFS_DIR2_DATA_MAGIC); - d->hdr.bestfree[0].offset = cpu_to_be16(sizeof(d->hdr)); + hdr = &d->hdr; + hdr->magic = cpu_to_be32(XFS_DIR2_DATA_MAGIC); + hdr->bestfree[0].offset = cpu_to_be16(sizeof(*hdr)); for (i = 1; i < XFS_DIR2_DATA_FD_COUNT; i++) { - d->hdr.bestfree[i].length = 0; - d->hdr.bestfree[i].offset = 0; + hdr->bestfree[i].length = 0; + hdr->bestfree[i].offset = 0; } + /* * Set up an unused entry for the block's body. */ dup = &d->u[0].unused; dup->freetag = cpu_to_be16(XFS_DIR2_DATA_FREE_TAG); - t=mp->m_dirblksize - (uint)sizeof(d->hdr); - d->hdr.bestfree[0].length = cpu_to_be16(t); + t = mp->m_dirblksize - (uint)sizeof(*hdr); + hdr->bestfree[0].length = cpu_to_be16(t); dup->length = cpu_to_be16(t); - *xfs_dir2_data_unused_tag_p(dup) = cpu_to_be16((char *)dup - (char *)d); + *xfs_dir2_data_unused_tag_p(dup) = cpu_to_be16((char *)dup - (char *)hdr); /* * Log it and return it. */ @@ -448,14 +461,14 @@ xfs_dir2_data_log_entry( xfs_dabuf_t *bp, /* block buffer */ xfs_dir2_data_entry_t *dep) /* data entry pointer */ { - xfs_dir2_data_t *d; /* data block pointer */ + xfs_dir2_data_hdr_t *hdr = bp->data; - d = bp->data; - ASSERT(be32_to_cpu(d->hdr.magic) == XFS_DIR2_DATA_MAGIC || - be32_to_cpu(d->hdr.magic) == XFS_DIR2_BLOCK_MAGIC); - xfs_da_log_buf(tp, bp, (uint)((char *)dep - (char *)d), + ASSERT(hdr->magic == cpu_to_be32(XFS_DIR2_DATA_MAGIC) || + hdr->magic == cpu_to_be32(XFS_DIR2_BLOCK_MAGIC)); + + xfs_da_log_buf(tp, bp, (uint)((char *)dep - (char *)hdr), (uint)((char *)(xfs_dir2_data_entry_tag_p(dep) + 1) - - (char *)d - 1)); + (char *)hdr - 1)); } /* @@ -466,13 +479,12 @@ xfs_dir2_data_log_header( xfs_trans_t *tp, /* transaction pointer */ xfs_dabuf_t *bp) /* block buffer */ { - xfs_dir2_data_t *d; /* data block pointer */ + xfs_dir2_data_hdr_t *hdr = bp->data; - d = bp->data; - ASSERT(be32_to_cpu(d->hdr.magic) == XFS_DIR2_DATA_MAGIC || - be32_to_cpu(d->hdr.magic) == XFS_DIR2_BLOCK_MAGIC); - xfs_da_log_buf(tp, bp, (uint)((char *)&d->hdr - (char *)d), - (uint)(sizeof(d->hdr) - 1)); + ASSERT(hdr->magic == cpu_to_be32(XFS_DIR2_DATA_MAGIC) || + hdr->magic == cpu_to_be32(XFS_DIR2_BLOCK_MAGIC)); + + xfs_da_log_buf(tp, bp, 0, sizeof(*hdr) - 1); } /* @@ -484,23 +496,23 @@ xfs_dir2_data_log_unused( xfs_dabuf_t *bp, /* block buffer */ xfs_dir2_data_unused_t *dup) /* data unused pointer */ { - xfs_dir2_data_t *d; /* data block pointer */ + xfs_dir2_data_hdr_t *hdr = bp->data; + + ASSERT(hdr->magic == cpu_to_be32(XFS_DIR2_DATA_MAGIC) || + hdr->magic == cpu_to_be32(XFS_DIR2_BLOCK_MAGIC)); - d = bp->data; - ASSERT(be32_to_cpu(d->hdr.magic) == XFS_DIR2_DATA_MAGIC || - be32_to_cpu(d->hdr.magic) == XFS_DIR2_BLOCK_MAGIC); /* * Log the first part of the unused entry. */ - xfs_da_log_buf(tp, bp, (uint)((char *)dup - (char *)d), + xfs_da_log_buf(tp, bp, (uint)((char *)dup - (char *)hdr), (uint)((char *)&dup->length + sizeof(dup->length) - - 1 - (char *)d)); + 1 - (char *)hdr)); /* * Log the end (tag) of the unused entry. */ xfs_da_log_buf(tp, bp, - (uint)((char *)xfs_dir2_data_unused_tag_p(dup) - (char *)d), - (uint)((char *)xfs_dir2_data_unused_tag_p(dup) - (char *)d + + (uint)((char *)xfs_dir2_data_unused_tag_p(dup) - (char *)hdr), + (uint)((char *)xfs_dir2_data_unused_tag_p(dup) - (char *)hdr + sizeof(xfs_dir2_data_off_t) - 1)); } @@ -517,7 +529,7 @@ xfs_dir2_data_make_free( int *needlogp, /* out: log header */ int *needscanp) /* out: regen bestfree */ { - xfs_dir2_data_t *d; /* data block pointer */ + xfs_dir2_data_hdr_t *hdr; /* data block pointer */ xfs_dir2_data_free_t *dfp; /* bestfree pointer */ char *endptr; /* end of data area */ xfs_mount_t *mp; /* filesystem mount point */ @@ -527,28 +539,29 @@ xfs_dir2_data_make_free( xfs_dir2_data_unused_t *prevdup; /* unused entry before us */ mp = tp->t_mountp; - d = bp->data; + hdr = bp->data; + /* * Figure out where the end of the data area is. */ - if (be32_to_cpu(d->hdr.magic) == XFS_DIR2_DATA_MAGIC) - endptr = (char *)d + mp->m_dirblksize; + if (hdr->magic == cpu_to_be32(XFS_DIR2_DATA_MAGIC)) + endptr = (char *)hdr + mp->m_dirblksize; else { xfs_dir2_block_tail_t *btp; /* block tail */ - ASSERT(be32_to_cpu(d->hdr.magic) == XFS_DIR2_BLOCK_MAGIC); - btp = xfs_dir2_block_tail_p(mp, &d->hdr); + ASSERT(hdr->magic == cpu_to_be32(XFS_DIR2_BLOCK_MAGIC)); + btp = xfs_dir2_block_tail_p(mp, hdr); endptr = (char *)xfs_dir2_block_leaf_p(btp); } /* * If this isn't the start of the block, then back up to * the previous entry and see if it's free. */ - if (offset > sizeof(d->hdr)) { + if (offset > sizeof(*hdr)) { __be16 *tagp; /* tag just before us */ - tagp = (__be16 *)((char *)d + offset) - 1; - prevdup = (xfs_dir2_data_unused_t *)((char *)d + be16_to_cpu(*tagp)); + tagp = (__be16 *)((char *)hdr + offset) - 1; + prevdup = (xfs_dir2_data_unused_t *)((char *)hdr + be16_to_cpu(*tagp)); if (be16_to_cpu(prevdup->freetag) != XFS_DIR2_DATA_FREE_TAG) prevdup = NULL; } else @@ -557,9 +570,9 @@ xfs_dir2_data_make_free( * If this isn't the end of the block, see if the entry after * us is free. */ - if ((char *)d + offset + len < endptr) { + if ((char *)hdr + offset + len < endptr) { postdup = - (xfs_dir2_data_unused_t *)((char *)d + offset + len); + (xfs_dir2_data_unused_t *)((char *)hdr + offset + len); if (be16_to_cpu(postdup->freetag) != XFS_DIR2_DATA_FREE_TAG) postdup = NULL; } else @@ -576,21 +589,21 @@ xfs_dir2_data_make_free( /* * See if prevdup and/or postdup are in bestfree table. */ - dfp = xfs_dir2_data_freefind(d, prevdup); - dfp2 = xfs_dir2_data_freefind(d, postdup); + dfp = xfs_dir2_data_freefind(hdr, prevdup); + dfp2 = xfs_dir2_data_freefind(hdr, postdup); /* * We need a rescan unless there are exactly 2 free entries * namely our two. Then we know what's happening, otherwise * since the third bestfree is there, there might be more * entries. */ - needscan = (d->hdr.bestfree[2].length != 0); + needscan = (hdr->bestfree[2].length != 0); /* * Fix up the new big freespace. */ be16_add_cpu(&prevdup->length, len + be16_to_cpu(postdup->length)); *xfs_dir2_data_unused_tag_p(prevdup) = - cpu_to_be16((char *)prevdup - (char *)d); + cpu_to_be16((char *)prevdup - (char *)hdr); xfs_dir2_data_log_unused(tp, bp, prevdup); if (!needscan) { /* @@ -600,18 +613,18 @@ xfs_dir2_data_make_free( * Remove entry 1 first then entry 0. */ ASSERT(dfp && dfp2); - if (dfp == &d->hdr.bestfree[1]) { - dfp = &d->hdr.bestfree[0]; + if (dfp == &hdr->bestfree[1]) { + dfp = &hdr->bestfree[0]; ASSERT(dfp2 == dfp); - dfp2 = &d->hdr.bestfree[1]; + dfp2 = &hdr->bestfree[1]; } - xfs_dir2_data_freeremove(d, dfp2, needlogp); - xfs_dir2_data_freeremove(d, dfp, needlogp); + xfs_dir2_data_freeremove(hdr, dfp2, needlogp); + xfs_dir2_data_freeremove(hdr, dfp, needlogp); /* * Now insert the new entry. */ - dfp = xfs_dir2_data_freeinsert(d, prevdup, needlogp); - ASSERT(dfp == &d->hdr.bestfree[0]); + dfp = xfs_dir2_data_freeinsert(hdr, prevdup, needlogp); + ASSERT(dfp == &hdr->bestfree[0]); ASSERT(dfp->length == prevdup->length); ASSERT(!dfp[1].length); ASSERT(!dfp[2].length); @@ -621,10 +634,10 @@ xfs_dir2_data_make_free( * The entry before us is free, merge with it. */ else if (prevdup) { - dfp = xfs_dir2_data_freefind(d, prevdup); + dfp = xfs_dir2_data_freefind(hdr, prevdup); be16_add_cpu(&prevdup->length, len); *xfs_dir2_data_unused_tag_p(prevdup) = - cpu_to_be16((char *)prevdup - (char *)d); + cpu_to_be16((char *)prevdup - (char *)hdr); xfs_dir2_data_log_unused(tp, bp, prevdup); /* * If the previous entry was in the table, the new entry @@ -632,27 +645,27 @@ xfs_dir2_data_make_free( * the old one and add the new one. */ if (dfp) { - xfs_dir2_data_freeremove(d, dfp, needlogp); - (void)xfs_dir2_data_freeinsert(d, prevdup, needlogp); + xfs_dir2_data_freeremove(hdr, dfp, needlogp); + (void)xfs_dir2_data_freeinsert(hdr, prevdup, needlogp); } /* * Otherwise we need a scan if the new entry is big enough. */ else { needscan = be16_to_cpu(prevdup->length) > - be16_to_cpu(d->hdr.bestfree[2].length); + be16_to_cpu(hdr->bestfree[2].length); } } /* * The following entry is free, merge with it. */ else if (postdup) { - dfp = xfs_dir2_data_freefind(d, postdup); - newdup = (xfs_dir2_data_unused_t *)((char *)d + offset); + dfp = xfs_dir2_data_freefind(hdr, postdup); + newdup = (xfs_dir2_data_unused_t *)((char *)hdr + offset); newdup->freetag = cpu_to_be16(XFS_DIR2_DATA_FREE_TAG); newdup->length = cpu_to_be16(len + be16_to_cpu(postdup->length)); *xfs_dir2_data_unused_tag_p(newdup) = - cpu_to_be16((char *)newdup - (char *)d); + cpu_to_be16((char *)newdup - (char *)hdr); xfs_dir2_data_log_unused(tp, bp, newdup); /* * If the following entry was in the table, the new entry @@ -660,28 +673,28 @@ xfs_dir2_data_make_free( * the old one and add the new one. */ if (dfp) { - xfs_dir2_data_freeremove(d, dfp, needlogp); - (void)xfs_dir2_data_freeinsert(d, newdup, needlogp); + xfs_dir2_data_freeremove(hdr, dfp, needlogp); + (void)xfs_dir2_data_freeinsert(hdr, newdup, needlogp); } /* * Otherwise we need a scan if the new entry is big enough. */ else { needscan = be16_to_cpu(newdup->length) > - be16_to_cpu(d->hdr.bestfree[2].length); + be16_to_cpu(hdr->bestfree[2].length); } } /* * Neither neighbor is free. Make a new entry. */ else { - newdup = (xfs_dir2_data_unused_t *)((char *)d + offset); + newdup = (xfs_dir2_data_unused_t *)((char *)hdr + offset); newdup->freetag = cpu_to_be16(XFS_DIR2_DATA_FREE_TAG); newdup->length = cpu_to_be16(len); *xfs_dir2_data_unused_tag_p(newdup) = - cpu_to_be16((char *)newdup - (char *)d); + cpu_to_be16((char *)newdup - (char *)hdr); xfs_dir2_data_log_unused(tp, bp, newdup); - (void)xfs_dir2_data_freeinsert(d, newdup, needlogp); + (void)xfs_dir2_data_freeinsert(hdr, newdup, needlogp); } *needscanp = needscan; } @@ -699,7 +712,7 @@ xfs_dir2_data_use_free( int *needlogp, /* out: need to log header */ int *needscanp) /* out: need regen bestfree */ { - xfs_dir2_data_t *d; /* data block */ + xfs_dir2_data_hdr_t *hdr; /* data block header */ xfs_dir2_data_free_t *dfp; /* bestfree pointer */ int matchback; /* matches end of freespace */ int matchfront; /* matches start of freespace */ @@ -708,24 +721,24 @@ xfs_dir2_data_use_free( xfs_dir2_data_unused_t *newdup2; /* another new unused entry */ int oldlen; /* old unused entry's length */ - d = bp->data; - ASSERT(be32_to_cpu(d->hdr.magic) == XFS_DIR2_DATA_MAGIC || - be32_to_cpu(d->hdr.magic) == XFS_DIR2_BLOCK_MAGIC); + hdr = bp->data; + ASSERT(be32_to_cpu(hdr->magic) == XFS_DIR2_DATA_MAGIC || + be32_to_cpu(hdr->magic) == XFS_DIR2_BLOCK_MAGIC); ASSERT(be16_to_cpu(dup->freetag) == XFS_DIR2_DATA_FREE_TAG); - ASSERT(offset >= (char *)dup - (char *)d); - ASSERT(offset + len <= (char *)dup + be16_to_cpu(dup->length) - (char *)d); - ASSERT((char *)dup - (char *)d == be16_to_cpu(*xfs_dir2_data_unused_tag_p(dup))); + ASSERT(offset >= (char *)dup - (char *)hdr); + ASSERT(offset + len <= (char *)dup + be16_to_cpu(dup->length) - (char *)hdr); + ASSERT((char *)dup - (char *)hdr == be16_to_cpu(*xfs_dir2_data_unused_tag_p(dup))); /* * Look up the entry in the bestfree table. */ - dfp = xfs_dir2_data_freefind(d, dup); + dfp = xfs_dir2_data_freefind(hdr, dup); oldlen = be16_to_cpu(dup->length); - ASSERT(dfp || oldlen <= be16_to_cpu(d->hdr.bestfree[2].length)); + ASSERT(dfp || oldlen <= be16_to_cpu(hdr->bestfree[2].length)); /* * Check for alignment with front and back of the entry. */ - matchfront = (char *)dup - (char *)d == offset; - matchback = (char *)dup + oldlen - (char *)d == offset + len; + matchfront = (char *)dup - (char *)hdr == offset; + matchback = (char *)dup + oldlen - (char *)hdr == offset + len; ASSERT(*needscanp == 0); needscan = 0; /* @@ -734,9 +747,9 @@ xfs_dir2_data_use_free( */ if (matchfront && matchback) { if (dfp) { - needscan = (d->hdr.bestfree[2].offset != 0); + needscan = (hdr->bestfree[2].offset != 0); if (!needscan) - xfs_dir2_data_freeremove(d, dfp, needlogp); + xfs_dir2_data_freeremove(hdr, dfp, needlogp); } } /* @@ -744,27 +757,27 @@ xfs_dir2_data_use_free( * Make a new entry with the remaining freespace. */ else if (matchfront) { - newdup = (xfs_dir2_data_unused_t *)((char *)d + offset + len); + newdup = (xfs_dir2_data_unused_t *)((char *)hdr + offset + len); newdup->freetag = cpu_to_be16(XFS_DIR2_DATA_FREE_TAG); newdup->length = cpu_to_be16(oldlen - len); *xfs_dir2_data_unused_tag_p(newdup) = - cpu_to_be16((char *)newdup - (char *)d); + cpu_to_be16((char *)newdup - (char *)hdr); xfs_dir2_data_log_unused(tp, bp, newdup); /* * If it was in the table, remove it and add the new one. */ if (dfp) { - xfs_dir2_data_freeremove(d, dfp, needlogp); - dfp = xfs_dir2_data_freeinsert(d, newdup, needlogp); + xfs_dir2_data_freeremove(hdr, dfp, needlogp); + dfp = xfs_dir2_data_freeinsert(hdr, newdup, needlogp); ASSERT(dfp != NULL); ASSERT(dfp->length == newdup->length); - ASSERT(be16_to_cpu(dfp->offset) == (char *)newdup - (char *)d); + ASSERT(be16_to_cpu(dfp->offset) == (char *)newdup - (char *)hdr); /* * If we got inserted at the last slot, * that means we don't know if there was a better * choice for the last slot, or not. Rescan. */ - needscan = dfp == &d->hdr.bestfree[2]; + needscan = dfp == &hdr->bestfree[2]; } } /* @@ -773,25 +786,25 @@ xfs_dir2_data_use_free( */ else if (matchback) { newdup = dup; - newdup->length = cpu_to_be16(((char *)d + offset) - (char *)newdup); + newdup->length = cpu_to_be16(((char *)hdr + offset) - (char *)newdup); *xfs_dir2_data_unused_tag_p(newdup) = - cpu_to_be16((char *)newdup - (char *)d); + cpu_to_be16((char *)newdup - (char *)hdr); xfs_dir2_data_log_unused(tp, bp, newdup); /* * If it was in the table, remove it and add the new one. */ if (dfp) { - xfs_dir2_data_freeremove(d, dfp, needlogp); - dfp = xfs_dir2_data_freeinsert(d, newdup, needlogp); + xfs_dir2_data_freeremove(hdr, dfp, needlogp); + dfp = xfs_dir2_data_freeinsert(hdr, newdup, needlogp); ASSERT(dfp != NULL); ASSERT(dfp->length == newdup->length); - ASSERT(be16_to_cpu(dfp->offset) == (char *)newdup - (char *)d); + ASSERT(be16_to_cpu(dfp->offset) == (char *)newdup - (char *)hdr); /* * If we got inserted at the last slot, * that means we don't know if there was a better * choice for the last slot, or not. Rescan. */ - needscan = dfp == &d->hdr.bestfree[2]; + needscan = dfp == &hdr->bestfree[2]; } } /* @@ -800,15 +813,15 @@ xfs_dir2_data_use_free( */ else { newdup = dup; - newdup->length = cpu_to_be16(((char *)d + offset) - (char *)newdup); + newdup->length = cpu_to_be16(((char *)hdr + offset) - (char *)newdup); *xfs_dir2_data_unused_tag_p(newdup) = - cpu_to_be16((char *)newdup - (char *)d); + cpu_to_be16((char *)newdup - (char *)hdr); xfs_dir2_data_log_unused(tp, bp, newdup); - newdup2 = (xfs_dir2_data_unused_t *)((char *)d + offset + len); + newdup2 = (xfs_dir2_data_unused_t *)((char *)hdr + offset + len); newdup2->freetag = cpu_to_be16(XFS_DIR2_DATA_FREE_TAG); newdup2->length = cpu_to_be16(oldlen - len - be16_to_cpu(newdup->length)); *xfs_dir2_data_unused_tag_p(newdup2) = - cpu_to_be16((char *)newdup2 - (char *)d); + cpu_to_be16((char *)newdup2 - (char *)hdr); xfs_dir2_data_log_unused(tp, bp, newdup2); /* * If the old entry was in the table, we need to scan @@ -819,12 +832,12 @@ xfs_dir2_data_use_free( * the 2 new will work. */ if (dfp) { - needscan = (d->hdr.bestfree[2].length != 0); + needscan = (hdr->bestfree[2].length != 0); if (!needscan) { - xfs_dir2_data_freeremove(d, dfp, needlogp); - (void)xfs_dir2_data_freeinsert(d, newdup, + xfs_dir2_data_freeremove(hdr, dfp, needlogp); + (void)xfs_dir2_data_freeinsert(hdr, newdup, needlogp); - (void)xfs_dir2_data_freeinsert(d, newdup2, + (void)xfs_dir2_data_freeinsert(hdr, newdup2, needlogp); } } Index: xfs/fs/xfs/xfs_dir2_data.h =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_data.h 2011-06-27 10:47:35.919487117 +0200 +++ xfs/fs/xfs/xfs_dir2_data.h 2011-06-27 10:51:33.644865914 +0200 @@ -157,12 +157,10 @@ extern void xfs_dir2_data_check(struct x #else #define xfs_dir2_data_check(dp,bp) #endif -extern xfs_dir2_data_free_t *xfs_dir2_data_freefind(xfs_dir2_data_t *d, - xfs_dir2_data_unused_t *dup); -extern xfs_dir2_data_free_t *xfs_dir2_data_freeinsert(xfs_dir2_data_t *d, +extern xfs_dir2_data_free_t *xfs_dir2_data_freeinsert(xfs_dir2_data_hdr_t *hdr, xfs_dir2_data_unused_t *dup, int *loghead); -extern void xfs_dir2_data_freescan(struct xfs_mount *mp, xfs_dir2_data_t *d, - int *loghead); +extern void xfs_dir2_data_freescan(struct xfs_mount *mp, + xfs_dir2_data_hdr_t *hdr, int *loghead); extern int xfs_dir2_data_init(struct xfs_da_args *args, xfs_dir2_db_t blkno, struct xfs_dabuf **bpp); extern void xfs_dir2_data_log_entry(struct xfs_trans *tp, struct xfs_dabuf *bp, Index: xfs/fs/xfs/xfs_dir2_leaf.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_leaf.c 2011-06-27 10:47:35.932820377 +0200 +++ xfs/fs/xfs/xfs_dir2_leaf.c 2011-06-27 10:51:33.648199229 +0200 @@ -132,7 +132,7 @@ xfs_dir2_block_to_leaf( */ hdr->magic = cpu_to_be32(XFS_DIR2_DATA_MAGIC); if (needscan) - xfs_dir2_data_freescan(mp, (xfs_dir2_data_t *)hdr, &needlog); + xfs_dir2_data_freescan(mp, hdr, &needlog); /* * Set up leaf tail and bests table. */ @@ -273,7 +273,7 @@ xfs_dir2_leaf_addname( { __be16 *bestsp; /* freespace table in leaf */ int compact; /* need to compact leaves */ - xfs_dir2_data_t *data; /* data block structure */ + xfs_dir2_data_hdr_t *hdr; /* data block header */ xfs_dabuf_t *dbp; /* data block buffer */ xfs_dir2_data_entry_t *dep; /* data block entry */ xfs_inode_t *dp; /* incore directory inode */ @@ -481,8 +481,8 @@ xfs_dir2_leaf_addname( */ else xfs_dir2_leaf_log_bests(tp, lbp, use_block, use_block); - data = dbp->data; - bestsp[use_block] = data->hdr.bestfree[0].length; + hdr = dbp->data; + bestsp[use_block] = hdr->bestfree[0].length; grown = 1; } /* @@ -496,7 +496,7 @@ xfs_dir2_leaf_addname( xfs_da_brelse(tp, lbp); return error; } - data = dbp->data; + hdr = dbp->data; grown = 0; } xfs_dir2_data_check(dp, dbp); @@ -504,14 +504,14 @@ xfs_dir2_leaf_addname( * Point to the biggest freespace in our data block. */ dup = (xfs_dir2_data_unused_t *) - ((char *)data + be16_to_cpu(data->hdr.bestfree[0].offset)); + ((char *)hdr + be16_to_cpu(hdr->bestfree[0].offset)); ASSERT(be16_to_cpu(dup->length) >= length); needscan = needlog = 0; /* * Mark the initial part of our freespace in use for the new entry. */ xfs_dir2_data_use_free(tp, dbp, dup, - (xfs_dir2_data_aoff_t)((char *)dup - (char *)data), length, + (xfs_dir2_data_aoff_t)((char *)dup - (char *)hdr), length, &needlog, &needscan); /* * Initialize our new entry (at last). @@ -521,12 +521,12 @@ xfs_dir2_leaf_addname( dep->namelen = args->namelen; memcpy(dep->name, args->name, dep->namelen); tagp = xfs_dir2_data_entry_tag_p(dep); - *tagp = cpu_to_be16((char *)dep - (char *)data); + *tagp = cpu_to_be16((char *)dep - (char *)hdr); /* * Need to scan fix up the bestfree table. */ if (needscan) - xfs_dir2_data_freescan(mp, data, &needlog); + xfs_dir2_data_freescan(mp, hdr, &needlog); /* * Need to log the data block's header. */ @@ -537,8 +537,8 @@ xfs_dir2_leaf_addname( * If the bests table needs to be changed, do it. * Log the change unless we've already done that. */ - if (be16_to_cpu(bestsp[use_block]) != be16_to_cpu(data->hdr.bestfree[0].length)) { - bestsp[use_block] = data->hdr.bestfree[0].length; + if (be16_to_cpu(bestsp[use_block]) != be16_to_cpu(hdr->bestfree[0].length)) { + bestsp[use_block] = hdr->bestfree[0].length; if (!grown) xfs_dir2_leaf_log_bests(tp, lbp, use_block, use_block); } @@ -782,6 +782,7 @@ xfs_dir2_leaf_getdents( xfs_dir2_db_t curdb; /* db for current block */ xfs_dir2_off_t curoff; /* current overall offset */ xfs_dir2_data_t *data; /* data block structure */ + xfs_dir2_data_hdr_t *hdr; /* data block header */ xfs_dir2_data_entry_t *dep; /* data entry */ xfs_dir2_data_unused_t *dup; /* unused entry */ int error = 0; /* error return value */ @@ -1040,6 +1041,7 @@ xfs_dir2_leaf_getdents( ASSERT(xfs_dir2_byte_to_db(mp, curoff) == curdb); data = bp->data; + hdr = &data->hdr; xfs_dir2_data_check(dp, bp); /* * Find our position in the block. @@ -1050,12 +1052,12 @@ xfs_dir2_leaf_getdents( * Skip past the header. */ if (byteoff == 0) - curoff += (uint)sizeof(data->hdr); + curoff += (uint)sizeof(*hdr); /* * Skip past entries until we reach our offset. */ else { - while ((char *)ptr - (char *)data < byteoff) { + while ((char *)ptr - (char *)hdr < byteoff) { dup = (xfs_dir2_data_unused_t *)ptr; if (be16_to_cpu(dup->freetag) @@ -1076,8 +1078,8 @@ xfs_dir2_leaf_getdents( curoff = xfs_dir2_db_off_to_byte(mp, xfs_dir2_byte_to_db(mp, curoff), - (char *)ptr - (char *)data); - if (ptr >= (char *)data + mp->m_dirblksize) { + (char *)ptr - (char *)hdr); + if (ptr >= (char *)hdr + mp->m_dirblksize) { continue; } } @@ -1458,7 +1460,7 @@ xfs_dir2_leaf_removename( xfs_da_args_t *args) /* operation arguments */ { __be16 *bestsp; /* leaf block best freespace */ - xfs_dir2_data_t *data; /* data block structure */ + xfs_dir2_data_hdr_t *hdr; /* data block header */ xfs_dir2_db_t db; /* data block number */ xfs_dabuf_t *dbp; /* data block buffer */ xfs_dir2_data_entry_t *dep; /* data entry structure */ @@ -1488,7 +1490,7 @@ xfs_dir2_leaf_removename( tp = args->trans; mp = dp->i_mount; leaf = lbp->data; - data = dbp->data; + hdr = dbp->data; xfs_dir2_data_check(dp, dbp); /* * Point to the leaf entry, use that to point to the data entry. @@ -1496,9 +1498,9 @@ xfs_dir2_leaf_removename( lep = &leaf->ents[index]; db = xfs_dir2_dataptr_to_db(mp, be32_to_cpu(lep->address)); dep = (xfs_dir2_data_entry_t *) - ((char *)data + xfs_dir2_dataptr_to_off(mp, be32_to_cpu(lep->address))); + ((char *)hdr + xfs_dir2_dataptr_to_off(mp, be32_to_cpu(lep->address))); needscan = needlog = 0; - oldbest = be16_to_cpu(data->hdr.bestfree[0].length); + oldbest = be16_to_cpu(hdr->bestfree[0].length); ltp = xfs_dir2_leaf_tail_p(mp, leaf); bestsp = xfs_dir2_leaf_bests_p(ltp); ASSERT(be16_to_cpu(bestsp[db]) == oldbest); @@ -1506,7 +1508,7 @@ xfs_dir2_leaf_removename( * Mark the former data entry unused. */ xfs_dir2_data_make_free(tp, dbp, - (xfs_dir2_data_aoff_t)((char *)dep - (char *)data), + (xfs_dir2_data_aoff_t)((char *)dep - (char *)hdr), xfs_dir2_data_entsize(dep->namelen), &needlog, &needscan); /* * We just mark the leaf entry stale by putting a null in it. @@ -1520,23 +1522,23 @@ xfs_dir2_leaf_removename( * log the data block header if necessary. */ if (needscan) - xfs_dir2_data_freescan(mp, data, &needlog); + xfs_dir2_data_freescan(mp, hdr, &needlog); if (needlog) xfs_dir2_data_log_header(tp, dbp); /* * If the longest freespace in the data block has changed, * put the new value in the bests table and log that. */ - if (be16_to_cpu(data->hdr.bestfree[0].length) != oldbest) { - bestsp[db] = data->hdr.bestfree[0].length; + if (be16_to_cpu(hdr->bestfree[0].length) != oldbest) { + bestsp[db] = hdr->bestfree[0].length; xfs_dir2_leaf_log_bests(tp, lbp, db, db); } xfs_dir2_data_check(dp, dbp); /* * If the data block is now empty then get rid of the data block. */ - if (be16_to_cpu(data->hdr.bestfree[0].length) == - mp->m_dirblksize - (uint)sizeof(data->hdr)) { + if (be16_to_cpu(hdr->bestfree[0].length) == + mp->m_dirblksize - (uint)sizeof(*hdr)) { ASSERT(db != mp->m_dirdatablk); if ((error = xfs_dir2_shrink_inode(args, db, dbp))) { /* @@ -1707,9 +1709,6 @@ xfs_dir2_leaf_trim_data( xfs_dir2_db_t db) /* data block number */ { __be16 *bestsp; /* leaf bests table */ -#ifdef DEBUG - xfs_dir2_data_t *data; /* data block structure */ -#endif xfs_dabuf_t *dbp; /* data block buffer */ xfs_inode_t *dp; /* incore directory inode */ int error; /* error return value */ @@ -1728,20 +1727,21 @@ xfs_dir2_leaf_trim_data( XFS_DATA_FORK))) { return error; } -#ifdef DEBUG - data = dbp->data; - ASSERT(be32_to_cpu(data->hdr.magic) == XFS_DIR2_DATA_MAGIC); -#endif - /* this seems to be an error - * data is only valid if DEBUG is defined? - * RMC 09/08/1999 - */ leaf = lbp->data; ltp = xfs_dir2_leaf_tail_p(mp, leaf); - ASSERT(be16_to_cpu(data->hdr.bestfree[0].length) == - mp->m_dirblksize - (uint)sizeof(data->hdr)); + +#ifdef DEBUG +{ + struct xfs_dir2_data_hdr *hdr = dbp->data; + + ASSERT(be32_to_cpu(hdr->magic) == XFS_DIR2_DATA_MAGIC); + ASSERT(be16_to_cpu(hdr->bestfree[0].length) == + mp->m_dirblksize - (uint)sizeof(*hdr)); ASSERT(db == be32_to_cpu(ltp->bestcount) - 1); +} +#endif + /* * Get rid of the data block. */ Index: xfs/fs/xfs/xfs_dir2_node.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_node.c 2011-06-27 10:47:35.946153639 +0200 +++ xfs/fs/xfs/xfs_dir2_node.c 2011-06-27 10:51:33.648199229 +0200 @@ -843,7 +843,7 @@ xfs_dir2_leafn_remove( xfs_da_state_blk_t *dblk, /* data block */ int *rval) /* resulting block needs join */ { - xfs_dir2_data_t *data; /* data block structure */ + xfs_dir2_data_hdr_t *hdr; /* data block header */ xfs_dir2_db_t db; /* data block number */ xfs_dabuf_t *dbp; /* data block buffer */ xfs_dir2_data_entry_t *dep; /* data block entry */ @@ -888,9 +888,9 @@ xfs_dir2_leafn_remove( * in the data block in case it changes. */ dbp = dblk->bp; - data = dbp->data; - dep = (xfs_dir2_data_entry_t *)((char *)data + off); - longest = be16_to_cpu(data->hdr.bestfree[0].length); + hdr = dbp->data; + dep = (xfs_dir2_data_entry_t *)((char *)hdr + off); + longest = be16_to_cpu(hdr->bestfree[0].length); needlog = needscan = 0; xfs_dir2_data_make_free(tp, dbp, off, xfs_dir2_data_entsize(dep->namelen), &needlog, &needscan); @@ -899,7 +899,7 @@ xfs_dir2_leafn_remove( * Log the data block header if needed. */ if (needscan) - xfs_dir2_data_freescan(mp, data, &needlog); + xfs_dir2_data_freescan(mp, hdr, &needlog); if (needlog) xfs_dir2_data_log_header(tp, dbp); xfs_dir2_data_check(dp, dbp); @@ -907,7 +907,7 @@ xfs_dir2_leafn_remove( * If the longest data block freespace changes, need to update * the corresponding freeblock entry. */ - if (longest < be16_to_cpu(data->hdr.bestfree[0].length)) { + if (longest < be16_to_cpu(hdr->bestfree[0].length)) { int error; /* error return value */ xfs_dabuf_t *fbp; /* freeblock buffer */ xfs_dir2_db_t fdb; /* freeblock block number */ @@ -933,19 +933,19 @@ xfs_dir2_leafn_remove( * Calculate which entry we need to fix. */ findex = xfs_dir2_db_to_fdindex(mp, db); - longest = be16_to_cpu(data->hdr.bestfree[0].length); + longest = be16_to_cpu(hdr->bestfree[0].length); /* * If the data block is now empty we can get rid of it * (usually). */ - if (longest == mp->m_dirblksize - (uint)sizeof(data->hdr)) { + if (longest == mp->m_dirblksize - (uint)sizeof(*hdr)) { /* * Try to punch out the data block. */ error = xfs_dir2_shrink_inode(args, db, dbp); if (error == 0) { dblk->bp = NULL; - data = NULL; + hdr = NULL; } /* * We can get ENOSPC if there's no space reservation. @@ -961,7 +961,7 @@ xfs_dir2_leafn_remove( * If we got rid of the data block, we can eliminate that entry * in the free block. */ - if (data == NULL) { + if (hdr == NULL) { /* * One less used entry in the free table. */ @@ -1357,7 +1357,7 @@ xfs_dir2_node_addname_int( xfs_da_args_t *args, /* operation arguments */ xfs_da_state_blk_t *fblk) /* optional freespace block */ { - xfs_dir2_data_t *data; /* data block structure */ + xfs_dir2_data_hdr_t *hdr; /* data block header */ xfs_dir2_db_t dbno; /* data block number */ xfs_dabuf_t *dbp; /* data block buffer */ xfs_dir2_data_entry_t *dep; /* data entry pointer */ @@ -1642,8 +1642,8 @@ xfs_dir2_node_addname_int( * We haven't allocated the data entry yet so this will * change again. */ - data = dbp->data; - free->bests[findex] = data->hdr.bestfree[0].length; + hdr = dbp->data; + free->bests[findex] = hdr->bestfree[0].length; logfree = 1; } /* @@ -1668,21 +1668,21 @@ xfs_dir2_node_addname_int( xfs_da_buf_done(fbp); return error; } - data = dbp->data; + hdr = dbp->data; logfree = 0; } - ASSERT(be16_to_cpu(data->hdr.bestfree[0].length) >= length); + ASSERT(be16_to_cpu(hdr->bestfree[0].length) >= length); /* * Point to the existing unused space. */ dup = (xfs_dir2_data_unused_t *) - ((char *)data + be16_to_cpu(data->hdr.bestfree[0].offset)); + ((char *)hdr + be16_to_cpu(hdr->bestfree[0].offset)); needscan = needlog = 0; /* * Mark the first part of the unused space, inuse for us. */ xfs_dir2_data_use_free(tp, dbp, dup, - (xfs_dir2_data_aoff_t)((char *)dup - (char *)data), length, + (xfs_dir2_data_aoff_t)((char *)dup - (char *)hdr), length, &needlog, &needscan); /* * Fill in the new entry and log it. @@ -1692,13 +1692,13 @@ xfs_dir2_node_addname_int( dep->namelen = args->namelen; memcpy(dep->name, args->name, dep->namelen); tagp = xfs_dir2_data_entry_tag_p(dep); - *tagp = cpu_to_be16((char *)dep - (char *)data); + *tagp = cpu_to_be16((char *)dep - (char *)hdr); xfs_dir2_data_log_entry(tp, dbp, dep); /* * Rescan the block for bestfree if needed. */ if (needscan) - xfs_dir2_data_freescan(mp, data, &needlog); + xfs_dir2_data_freescan(mp, hdr, &needlog); /* * Log the data block header if needed. */ @@ -1707,8 +1707,8 @@ xfs_dir2_node_addname_int( /* * If the freespace entry is now wrong, update it. */ - if (be16_to_cpu(free->bests[findex]) != be16_to_cpu(data->hdr.bestfree[0].length)) { - free->bests[findex] = data->hdr.bestfree[0].length; + if (be16_to_cpu(free->bests[findex]) != be16_to_cpu(hdr->bestfree[0].length)) { + free->bests[findex] = hdr->bestfree[0].length; logfree = 1; } /* @@ -1858,7 +1858,7 @@ xfs_dir2_node_replace( xfs_da_args_t *args) /* operation arguments */ { xfs_da_state_blk_t *blk; /* leaf block */ - xfs_dir2_data_t *data; /* data block structure */ + xfs_dir2_data_hdr_t *hdr; /* data block header */ xfs_dir2_data_entry_t *dep; /* data entry changed */ int error; /* error return value */ int i; /* btree level */ @@ -1902,10 +1902,10 @@ xfs_dir2_node_replace( /* * Point to the data entry. */ - data = state->extrablk.bp->data; - ASSERT(be32_to_cpu(data->hdr.magic) == XFS_DIR2_DATA_MAGIC); + hdr = state->extrablk.bp->data; + ASSERT(be32_to_cpu(hdr->magic) == XFS_DIR2_DATA_MAGIC); dep = (xfs_dir2_data_entry_t *) - ((char *)data + + ((char *)hdr + xfs_dir2_dataptr_to_off(state->mp, be32_to_cpu(lep->address))); ASSERT(inum != be64_to_cpu(dep->inumber)); /* From data-3197906@yq99.net Wed Jun 29 09:08:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=ADVANCE_FEE_2_NEW_MONEY, ADVANCE_FEE_3_NEW,ADVANCE_FEE_3_NEW_MONEY,BAYES_50,T_LOTS_OF_MONEY, T_LOTTO_DEPT autolearn=no version=3.4.0-r929098 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 p5TE8YQZ105481 for ; Wed, 29 Jun 2011 09:08:41 -0500 X-ASG-Debug-ID: 1309356507-093902350000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.iuncapped.co.za (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7B8601D7DE54 for ; Wed, 29 Jun 2011 07:08:28 -0700 (PDT) Received: from mail.iuncapped.co.za (mail.iuncapped.co.za [196.214.93.189]) by cuda.sgi.com with ESMTP id LtSQjE13ufbSo6wa for ; Wed, 29 Jun 2011 07:08:28 -0700 (PDT) Received: by mail.iuncapped.co.za (Postfix, from userid 48) id 0FC237D84A5; Wed, 29 Jun 2011 15:43:40 +0200 (SAST) Received: from 41.71.145.105 (SquirrelMail authenticated user mike.maher) by mail.iuncapped.co.za with HTTP; Wed, 29 Jun 2011 15:43:40 +0200 (SAST) Message-ID: <50746.41.71.145.105.1309355020.squirrel@mail.iuncapped.co.za> Date: Wed, 29 Jun 2011 15:43:40 +0200 (SAST) X-ASG-Orig-Subj: Albukhary Foundation Subject: Albukhary Foundation From: "Albukhary Foundation" Reply-To: data-31979006@yq99.net User-Agent: SquirrelMail/1.4.8-5.el5.centos.10 MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 1 (Highest) Importance: High To: undisclosed-recipients:; X-IUncapped-MailScanner-Information: Please contact DcData Support (support@dcdata.co.za) X-IUncapped-MailScanner-ID: 0FC237D84A5.A5756 X-IUncapped-MailScanner: Found to be clean X-IUncapped-MailScanner-SpamScore: s X-IUncapped-MailScanner-From: data-3197906@yq99.net X-Barracuda-Connect: mail.iuncapped.co.za[196.214.93.189] X-Barracuda-Start-Time: 1309356509 X-Barracuda-Bayes: INNOCENT GLOBAL 0.6898 1.0000 1.2930 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.29 X-Barracuda-Spam-Status: No, SCORE=1.29 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67471 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 Albukhary Foundation 26HR DOVER ROAD, ELTHAM, LONDON ,UK, POST CODE:SE3 0EF. The award committee of the foundation has selected you as one Of the three(3) nominees for the award of 910,000 GBP from the foundation electronic Draws in line with the Philanthropy work been carried out by the Foundation. For details and processing of the above sum, please contact the secretary of the award Committee with the given details below: Name: Frank Souza Email:Frank-Souza@yq99.net Tel: +447035981107 please contact the secretary of the award Committee to enable us transfer your award as soon as possible. Yours faithfully, Mrs.Mary Nazim From mw@dermichi.com Wed Jun 29 10:08:10 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TF8Amx109123 for ; Wed, 29 Jun 2011 10:08:10 -0500 X-ASG-Debug-ID: 1309360088-6dc400a00000-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 572301D7DB49 for ; Wed, 29 Jun 2011 08:08:08 -0700 (PDT) Received: from firestarter.dermichi.com (firestarter.dermichi.com [78.41.115.230]) by cuda.sgi.com with ESMTP id iTvTQ0MlNYDNpjnI for ; Wed, 29 Jun 2011 08:08:08 -0700 (PDT) Received: from dermichi-2-pt.tunnel.tserv23.zrh1.ipv6.he.net ([2001:470:25:4f4::2]) by firestarter.dermichi.com with esmtpsa (TLSv1:CAMELLIA256-SHA:256) (Exim 4.76) (envelope-from ) id 1QbwN4-0005s0-M8 for xfs@oss.sgi.com; Wed, 29 Jun 2011 17:08:06 +0200 Message-ID: <4E0B3FD4.4090704@dermichi.com> Date: Wed, 29 Jun 2011 17:08:04 +0200 From: Michael Weissenbacher User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110516 Thunderbird/3.1.10 MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) References: <20110621212201.GA1755@x4.trippels.de> <20110621185701.GB1723@x4.trippels.de> <20110622000449.GQ32466@dastard> <20110622070647.GA1744@x4.trippels.de> <20110622073047.GT32466@dastard> <20110629043143.GA1026@dastard> <20110629061954.GA1711@x4.trippels.de> <20110629072446.GR561@dastard> <20110629074127.GA1746@x4.trippels.de> <20110629121001.GS561@dastard> <20110629124814.GA1762@x4.trippels.de> In-Reply-To: <20110629124814.GA1762@x4.trippels.de> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: firestarter.dermichi.com[78.41.115.230] X-Barracuda-Start-Time: 1309360089 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5014 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.2.67475 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 Marcus / Dave! > > This completely fixes the issue. As a bonus "rm -fr && sync" completes > much quicker now. > ... > So many thanks Dave. Your prompt help is very much appreciated. > I just wanna add that i've seen these kinds of hangs too when removing directories with millions of files. My "solution" was to recreate the filesystem - which was several years old at that time. Looking forward to the fix. Thanks for the great work going on here - both for the in-depth investigation and the fix. cheers, Michael From jack@suse.cz Wed Jun 29 11:04:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TG4ltj117983 for ; Wed, 29 Jun 2011 11:04:47 -0500 X-ASG-Debug-ID: 1309363484-461001650000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8C6EB1673493 for ; Wed, 29 Jun 2011 09:04:44 -0700 (PDT) Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id NZEP2Ezo6MbCBqS8 for ; Wed, 29 Jun 2011 09:04:44 -0700 (PDT) Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id C5B788AC33 for ; Wed, 29 Jun 2011 18:04:43 +0200 (CEST) Received: by quack.suse.cz (Postfix, from userid 1000) id 81FFE20583; Wed, 29 Jun 2011 18:04:42 +0200 (CEST) From: Jan Kara To: xfs@oss.sgi.com Cc: Jan Kara X-ASG-Orig-Subj: [PATCH v3] xfstests: Improve test 219 to work with different filesystems Subject: [PATCH v3] xfstests: Improve test 219 to work with different filesystems Date: Wed, 29 Jun 2011 18:04:40 +0200 Message-Id: <1309363480-22268-1-git-send-email-jack@suse.cz> X-Mailer: git-send-email 1.7.1 X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1309363485 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0011 1.0000 -2.0140 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67478 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 Different filesystems account different amount of metadata in quota. Thus it is impractical to check for a particular amount of space occupied by a file because there is no right value. Change the test to verify whether the amount of space is between the expected amount of space and the expected amount +5%. The number of files is checked exactly as previously. Signed-off-by: Jan Kara --- 219 | 25 +++++++++++++++++++++++-- 219.out | 18 ++---------------- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/219 b/219 index 836d703..ad4e64d 100755 --- a/219 +++ b/219 @@ -58,6 +58,23 @@ test_files() done } +check_usage() +{ + wroteblocks=$1 + wrotefiles=$2 + read id exceed blocks bsoft bhard inodes isoft ihard + if [ "$blocks" -lt "$wroteblocks" ]; then + echo "Too few blocks used (type=$type)" + # Save 5% for overhead of metadata or different block size + elif [ "$blocks" -gt $((wroteblocks+wroteblocks/20)) ]; then + echo "Too many blocks used (type=$type)" + elif [ "$inodes" != "$wrotefiles" ]; then + echo "Bad number of inodes used (type=$type)" + else + echo "Usage OK (type=$type)" + fi +} + test_accounting() { echo "### some controlled buffered, direct and mmapd IO (type=$type)" @@ -77,8 +94,12 @@ test_accounting() $here/src/lstat64 $file | head -3 | _filter_scratch done - repquota -$type -n $SCRATCH_MNT | grep -v "^#0" | _filter_scratch | - awk '/^#/ { if (seen[$1]) next; seen[$1]++; } { print; }' + if [ $type == 'u' ]; then + id=$uid + else + id=$gid + fi + repquota -$type -n $SCRATCH_MNT | grep "^#$id" | check_usage 144 3 } # real QA test starts here diff --git a/219.out b/219.out index fadfafc..23ec57c 100644 --- a/219.out +++ b/219.out @@ -22,14 +22,7 @@ QA output created by 219 File: "SCRATCH_MNT/mmap" Size: 49152 Filetype: Regular File Mode: (0644/-rw-r--r--) Uid: (1) Gid: (2) -*** Report for user quotas on device SCRATCH_DEV -Block grace time: 7days; Inode grace time: 7days - Block limits File limits -User used soft hard grace used soft hard grace ----------------------------------------------------------------------- -#1 -- 144 0 0 3 0 0 - - +Usage OK (type=u) ### test group accounting @@ -53,11 +46,4 @@ User used soft hard grace used soft hard grace File: "SCRATCH_MNT/mmap" Size: 49152 Filetype: Regular File Mode: (0644/-rw-r--r--) Uid: (1) Gid: (2) -*** Report for group quotas on device SCRATCH_DEV -Block grace time: 7days; Inode grace time: 7days - Block limits File limits -Group used soft hard grace used soft hard grace ----------------------------------------------------------------------- -#2 -- 144 0 0 3 0 0 - - +Usage OK (type=g) -- 1.7.1 From sunil.mushran@oracle.com Wed Jun 29 12:10:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5THAwvg124909 for ; Wed, 29 Jun 2011 12:10:58 -0500 X-ASG-Debug-ID: 1309367456-4ecf02fa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rcsinet10.oracle.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8152DE259D7 for ; Wed, 29 Jun 2011 10:10:57 -0700 (PDT) Received: from rcsinet10.oracle.com (rcsinet10.oracle.com [148.87.113.121]) by cuda.sgi.com with ESMTP id aLUZwPAV33k8VlCZ for ; Wed, 29 Jun 2011 10:10:57 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5THAStU003586 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 29 Jun 2011 17:10:30 GMT Received: from acsmt358.oracle.com (acsmt358.oracle.com [141.146.40.158]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5THARSk007611 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 29 Jun 2011 17:10:27 GMT Received: from abhmt120.oracle.com (abhmt120.oracle.com [141.146.116.72]) by acsmt358.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5THAL6J027137; Wed, 29 Jun 2011 12:10:21 -0500 Received: from [130.35.68.118] (/130.35.68.118) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 29 Jun 2011 10:10:20 -0700 Message-ID: <4E0B5C6F.3060803@oracle.com> Date: Wed, 29 Jun 2011 10:10:07 -0700 From: Sunil Mushran User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110516 Lightning/1.0b2 Thunderbird/3.1.10 MIME-Version: 1.0 To: Christoph Hellwig CC: Dave Chinner , Josef Bacik , linux-fsdevel@vger.kernel.org, viro@ZenIV.linux.org.uk, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester Subject: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester References: <1309275199-10801-1-git-send-email-josef@redhat.com> <1309275199-10801-5-git-send-email-josef@redhat.com> <20110629065306.GC1026@dastard> <20110629074021.GA26086@infradead.org> In-Reply-To: <20110629074021.GA26086@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090204.4E0B5C87.0066:SCFMA922111,ss=1,re=-4.000,fgs=0 X-Barracuda-Connect: rcsinet10.oracle.com[148.87.113.121] X-Barracuda-Start-Time: 1309367457 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 06/29/2011 12:40 AM, Christoph Hellwig wrote: > On Wed, Jun 29, 2011 at 04:53:07PM +1000, Dave Chinner wrote: >> On Tue, Jun 28, 2011 at 11:33:19AM -0400, Josef Bacik wrote: >>> This is a test to make sure seek_data/seek_hole is acting like it does on >>> Solaris. It will check to see if the fs supports finding a hole or not and will >>> adjust as necessary. >> So I just looked at this with an eye to validating an XFS >> implementation, and I came up with this list of stuff that the test >> does not cover that I'd need to test in some way: >> >> - files with clean unwritten extents. Are they a hole or >> data? What's SEEK_DATA supposed to return on layout like >> hole-unwritten-data? i.e. needs to add fallocate to the >> picture... >> >> - files with dirty unwritten extents (i.e. dirty in memory, >> not on disk). They are most definitely data, and most >> filesystems will need a separate lookup path to detect >> dirty unwritten ranges because the state is kept >> separately (page cache vs extent cache). Plenty of scope >> for filesystem specific bugs here so needs a roubust test. > The discussion leading up to the resurrection of SEEK_HOLE/SEEK_DATA > was pretty much about that point. The conclusion based on the Sun > documentation and common sense was that SEEK_DATA may only consider > unwritten extents as hole if the filesystem has a way to distinguish > plain unwritten extents and those that have been dirtied. Else it > should be considered data. > > Testing for making sure dirty preallocated areas aren't wrongly > reported sounds relatively easy, the rest falls into implementation > details, which imho is fine. Not reporting preallocated extents > as holes just is a quality of implementation issue and not a bug. I agree. And if I might add my 2 cents that it would be much easier if we added another test that created files with all the worrisome boundary conditions and used SEEK_DATA/HOLE to copy the files and compared using md5sum. This would be far easier than one that expects a certain pos for each operation. From sunil.mushran@oracle.com Wed Jun 29 12:29:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 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 p5THTg3U125658 for ; Wed, 29 Jun 2011 12:29:42 -0500 X-ASG-Debug-ID: 1309368581-707e01c20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rcsinet10.oracle.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8AA521E56152 for ; Wed, 29 Jun 2011 10:29:42 -0700 (PDT) Received: from rcsinet10.oracle.com (rcsinet10.oracle.com [148.87.113.121]) by cuda.sgi.com with ESMTP id j3e6Zlr49QcQBl0b for ; Wed, 29 Jun 2011 10:29:42 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from rtcsinet22.oracle.com (rtcsinet22.oracle.com [66.248.204.30]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5THTNaY004859 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 29 Jun 2011 17:29:25 GMT Received: from acsmt356.oracle.com (acsmt356.oracle.com [141.146.40.156]) by rtcsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5THTLS5019349 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 29 Jun 2011 17:29:22 GMT Received: from abhmt114.oracle.com (abhmt114.oracle.com [141.146.116.66]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5THTGhU003908; Wed, 29 Jun 2011 12:29:16 -0500 Received: from [130.35.68.118] (/130.35.68.118) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 29 Jun 2011 10:29:15 -0700 Message-ID: <4E0B60DE.50908@oracle.com> Date: Wed, 29 Jun 2011 10:29:02 -0700 From: Sunil Mushran User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110516 Lightning/1.0b2 Thunderbird/3.1.10 MIME-Version: 1.0 To: =?ISO-8859-1?Q?P=E1draig_Brady?= CC: Christoph Hellwig , Dave Chinner , Josef Bacik , linux-fsdevel@vger.kernel.org, viro@ZenIV.linux.org.uk, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester Subject: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester References: <1309275199-10801-1-git-send-email-josef@redhat.com> <1309275199-10801-5-git-send-email-josef@redhat.com> <20110629065306.GC1026@dastard> <20110629074021.GA26086@infradead.org> <4E0B019E.8080800@draigBrady.com> In-Reply-To: <4E0B019E.8080800@draigBrady.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-Source-IP: rtcsinet22.oracle.com [66.248.204.30] X-CT-RefId: str=0001.0A090209.4E0B60F5.014F:SCFSTAT5015188,ss=1,re=-4.000,fgs=0 X-Barracuda-Connect: rcsinet10.oracle.com[148.87.113.121] X-Barracuda-Start-Time: 1309368582 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 06/29/2011 03:42 AM, Pádraig Brady wrote: > There is the argument, that if this interface can distinguish > these dirty unwritten extents, then why can't the fiemap interface too? > The advantage of the fiemap interface is that it can distinguish > empty extents vs holes. Empty extents will become increasingly common > I think, given the fragmentation and space guarantee benefits they give. > It would be cool for cp for example to be able to efficiently copy > empty extents from source to dest. I'm not too sure about that. Atleast not enabled by default. Most users use cp to backup data. Not empty space. In this case, this empty extent may not even be de-dupable. Frankly I'd be happier of cp started to exploited fallocate() to create larger extents before copying data into them. Atleast for the large files. From BATV+5c4d58addf64ca498f06+2866+infradead.org+hch@bombadil.srs.infradead.org Wed Jun 29 12:37:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5THb2vj125897 for ; Wed, 29 Jun 2011 12:37:03 -0500 X-ASG-Debug-ID: 1309369020-385f00a20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7F4401673745 for ; Wed, 29 Jun 2011 10:37:01 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 0GCTSDZerTPuTDVe for ; Wed, 29 Jun 2011 10:37:01 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1Qbygy-0005p8-FW; Wed, 29 Jun 2011 17:36:48 +0000 Date: Wed, 29 Jun 2011 13:36:48 -0400 From: Christoph Hellwig To: Sunil Mushran Cc: P?draig Brady , Christoph Hellwig , Dave Chinner , Josef Bacik , linux-fsdevel@vger.kernel.org, viro@ZenIV.linux.org.uk, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester Subject: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester Message-ID: <20110629173648.GA22293@infradead.org> References: <1309275199-10801-1-git-send-email-josef@redhat.com> <1309275199-10801-5-git-send-email-josef@redhat.com> <20110629065306.GC1026@dastard> <20110629074021.GA26086@infradead.org> <4E0B019E.8080800@draigBrady.com> <4E0B60DE.50908@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4E0B60DE.50908@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309369021 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67486 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Wed, Jun 29, 2011 at 10:29:02AM -0700, Sunil Mushran wrote: > I'm not too sure about that. Atleast not enabled by default. Most users > use cp to backup data. Not empty space. In this case, this empty extent > may not even be de-dupable. > > Frankly I'd be happier of cp started to exploited fallocate() to create larger > extents before copying data into them. Atleast for the large files. That's what delayed allocation is for. From sunil.mushran@oracle.com Wed Jun 29 12:40:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5THeeeP126015 for ; Wed, 29 Jun 2011 12:40:40 -0500 X-ASG-Debug-ID: 1309369239-746402d10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rcsinet10.oracle.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 345144285A0 for ; Wed, 29 Jun 2011 10:40:39 -0700 (PDT) Received: from rcsinet10.oracle.com (rcsinet10.oracle.com [148.87.113.121]) by cuda.sgi.com with ESMTP id U5d5KUSw0aszi2cO for ; Wed, 29 Jun 2011 10:40:39 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from rtcsinet21.oracle.com (rtcsinet21.oracle.com [66.248.204.29]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5THePg5023884 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 29 Jun 2011 17:40:27 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by rtcsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5THeMPU012579 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 29 Jun 2011 17:40:23 GMT Received: from abhmt102.oracle.com (abhmt102.oracle.com [141.146.116.54]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5THeFKa020932; Wed, 29 Jun 2011 12:40:15 -0500 Received: from [130.35.68.118] (/130.35.68.118) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 29 Jun 2011 10:40:15 -0700 Message-ID: <4E0B6371.3000104@oracle.com> Date: Wed, 29 Jun 2011 10:40:01 -0700 From: Sunil Mushran User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110516 Lightning/1.0b2 Thunderbird/3.1.10 MIME-Version: 1.0 To: Christoph Hellwig CC: P?draig Brady , Dave Chinner , Josef Bacik , linux-fsdevel@vger.kernel.org, viro@ZenIV.linux.org.uk, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester Subject: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester References: <1309275199-10801-1-git-send-email-josef@redhat.com> <1309275199-10801-5-git-send-email-josef@redhat.com> <20110629065306.GC1026@dastard> <20110629074021.GA26086@infradead.org> <4E0B019E.8080800@draigBrady.com> <4E0B60DE.50908@oracle.com> <20110629173648.GA22293@infradead.org> In-Reply-To: <20110629173648.GA22293@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Source-IP: rtcsinet21.oracle.com [66.248.204.29] X-CT-RefId: str=0001.0A090203.4E0B638B.0121:SCFSTAT5015188,ss=1,re=-4.000,fgs=0 X-Barracuda-Connect: rcsinet10.oracle.com[148.87.113.121] X-Barracuda-Start-Time: 1309369240 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 06/29/2011 10:36 AM, Christoph Hellwig wrote: > On Wed, Jun 29, 2011 at 10:29:02AM -0700, Sunil Mushran wrote: >> I'm not too sure about that. Atleast not enabled by default. Most users >> use cp to backup data. Not empty space. In this case, this empty extent >> may not even be de-dupable. >> >> Frankly I'd be happier of cp started to exploited fallocate() to create larger >> extents before copying data into them. Atleast for the large files. > That's what delayed allocation is for. A feature fewer file systems support than fallocate(). ;) From josef@redhat.com Wed Jun 29 12:52:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5THqwHl126522 for ; Wed, 29 Jun 2011 12:52:59 -0500 X-ASG-Debug-ID: 1309369978-3981010f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 86529E4C713 for ; Wed, 29 Jun 2011 10:52:58 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id zCq298UH4tHKeYze for ; Wed, 29 Jun 2011 10:52:58 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5THqklW025238 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 29 Jun 2011 13:52:47 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id p5THqkYJ025019; Wed, 29 Jun 2011 13:52:46 -0400 Received: from localhost.localdomain (vpn-10-29.rdu.redhat.com [10.11.10.29]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id p5THqiaU011077; Wed, 29 Jun 2011 13:52:44 -0400 Message-ID: <4E0B666C.4000902@redhat.com> Date: Wed, 29 Jun 2011 13:52:44 -0400 From: Josef Bacik User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc15 Lightning/1.0b2 Thunderbird/3.1.10 MIME-Version: 1.0 To: Sunil Mushran CC: Christoph Hellwig , Dave Chinner , linux-fsdevel@vger.kernel.org, viro@ZenIV.linux.org.uk, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester Subject: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester References: <1309275199-10801-1-git-send-email-josef@redhat.com> <1309275199-10801-5-git-send-email-josef@redhat.com> <20110629065306.GC1026@dastard> <20110629074021.GA26086@infradead.org> <4E0B5C6F.3060803@oracle.com> In-Reply-To: <4E0B5C6F.3060803@oracle.com> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1309369978 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 06/29/2011 01:10 PM, Sunil Mushran wrote: > On 06/29/2011 12:40 AM, Christoph Hellwig wrote: >> On Wed, Jun 29, 2011 at 04:53:07PM +1000, Dave Chinner wrote: >>> On Tue, Jun 28, 2011 at 11:33:19AM -0400, Josef Bacik wrote: >>>> This is a test to make sure seek_data/seek_hole is acting like it >>>> does on >>>> Solaris. It will check to see if the fs supports finding a hole or >>>> not and will >>>> adjust as necessary. >>> So I just looked at this with an eye to validating an XFS >>> implementation, and I came up with this list of stuff that the test >>> does not cover that I'd need to test in some way: >>> >>> - files with clean unwritten extents. Are they a hole or >>> data? What's SEEK_DATA supposed to return on layout like >>> hole-unwritten-data? i.e. needs to add fallocate to the >>> picture... >>> >>> - files with dirty unwritten extents (i.e. dirty in memory, >>> not on disk). They are most definitely data, and most >>> filesystems will need a separate lookup path to detect >>> dirty unwritten ranges because the state is kept >>> separately (page cache vs extent cache). Plenty of scope >>> for filesystem specific bugs here so needs a roubust test. >> The discussion leading up to the resurrection of SEEK_HOLE/SEEK_DATA >> was pretty much about that point. The conclusion based on the Sun >> documentation and common sense was that SEEK_DATA may only consider >> unwritten extents as hole if the filesystem has a way to distinguish >> plain unwritten extents and those that have been dirtied. Else it >> should be considered data. >> >> Testing for making sure dirty preallocated areas aren't wrongly >> reported sounds relatively easy, the rest falls into implementation >> details, which imho is fine. Not reporting preallocated extents >> as holes just is a quality of implementation issue and not a bug. > > I agree. And if I might add my 2 cents that it would be much easier > if we added another test that created files with all the worrisome boundary > conditions and used SEEK_DATA/HOLE to copy the files and compared > using md5sum. This would be far easier than one that expects a certain > pos for each operation. That's a great point, I think I will rig something like that up. Thanks, Josef From aelder@sgi.com Wed Jun 29 13:26:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TIQMVs127759 for ; Wed, 29 Jun 2011 13:26:22 -0500 Received: from cas.corp.sgi.com (pv-excas1-dc21.corp.sgi.com [137.38.102.116]) by relay3.corp.sgi.com (Postfix) with ESMTP id B0E9CAC001; Wed, 29 Jun 2011 11:26:18 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Wed, 29 Jun 2011 13:26:18 -0500 Subject: Re: [Fwd: PATCH: remove varibale that serve no purpose in xfs_alloc_ag_vextent_exact()] From: Alex Elder Reply-To: To: CC: In-Reply-To: <1309308374.5505.6212.camel@chandra-lucid.beaverton.ibm.com> References: <1309308374.5505.6212.camel@chandra-lucid.beaverton.ibm.com> Content-Type: text/plain; charset="UTF-8" Date: Wed, 29 Jun 2011 13:26:17 -0500 Message-ID: <1309371977.4646.44.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, 2011-06-28 at 17:46 -0700, Chandra Seetharaman wrote: > Hi Alex, > > Looks like this patch fell into the cracks. > > Just wanted to bring it to your attention. It did make it to the mailing list but I can't find it in my mailbox for some reason. > regards, > > chandra > -------- Forwarded Message -------- > From: Chandra Seetharaman > Reply-to: sekharan@us.ibm.com > To: xfs@oss.sgi.com > Cc: Alex Elder > Subject: PATCH: remove varibale that serve no purpose in > xfs_alloc_ag_vextent_exact() > Date: Thu, 09 Jun 2011 09:48:01 -0700 > > Hi, > > As per Alex Elder suggestion, here is a patch to remove non-purpose > variables in xfs_alloc_ag_vextent_exact() > > chandra > > -------------------- This looks good. I expect to get this in this week. I plan to tweak the description slightly--hope that's OK. Reviewed-by: Alex Elder > Remove the variables that serves no purpose. > > Signed-off-by: Chandra Seetharaman > --- > diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c > index 95862bb..7a53c8f 100644 > --- a/fs/xfs/xfs_alloc.c > +++ b/fs/xfs/xfs_alloc.c > @@ -570,9 +570,7 @@ xfs_alloc_ag_vextent_exact( > xfs_agblock_t tbno; /* start block of trimmed extent */ > xfs_extlen_t tlen; /* length of trimmed extent */ > xfs_agblock_t tend; /* end block of trimmed extent */ > - xfs_agblock_t end; /* end of allocated extent */ > int i; /* success/failure of operation */ > - xfs_extlen_t rlen; /* length of returned extent */ > > ASSERT(args->alignment == 1); > > @@ -625,18 +623,16 @@ xfs_alloc_ag_vextent_exact( > * > * Fix the length according to mod and prod if given. > */ > - end = XFS_AGBLOCK_MIN(tend, args->agbno + args->maxlen); > - args->len = end - args->agbno; > + args->len = XFS_AGBLOCK_MIN(tend, args->agbno + args->maxlen) > + - args->agbno; > xfs_alloc_fix_len(args); > if (!xfs_alloc_fix_minleft(args)) > goto not_found; > > - rlen = args->len; > - ASSERT(args->agbno + rlen <= tend); > - end = args->agbno + rlen; > + ASSERT(args->agbno + args->len <= tend); > > /* > - * We are allocating agbno for rlen [agbno .. end] > + * We are allocating agbno for args->len > * Allocate/initialize a cursor for the by-size btree. > */ > cnt_cur = xfs_allocbt_init_cursor(args->mp, args->tp, args->agbp, > --- > > From aelder@sgi.com Wed Jun 29 13:36:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TIabd6128031 for ; Wed, 29 Jun 2011 13:36:37 -0500 Received: from cas.corp.sgi.com (pv-excas1-dc21-nlb.corp.sgi.com [137.38.102.126]) by relay1.corp.sgi.com (Postfix) with ESMTP id CF3BD8F804B; Wed, 29 Jun 2011 11:36:33 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Wed, 29 Jun 2011 13:36:33 -0500 Subject: Re: sbcount comment change From: Alex Elder Reply-To: To: CC: In-Reply-To: <1309366188.5505.6215.camel@chandra-lucid.beaverton.ibm.com> References: <1309366188.5505.6215.camel@chandra-lucid.beaverton.ibm.com> Content-Type: text/plain; charset="UTF-8" Date: Wed, 29 Jun 2011 13:36:32 -0500 Message-ID: <1309372592.4646.45.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, 2011-06-29 at 09:49 -0700, Chandra Seetharaman wrote: > Hi Alex, > > Does this look fine ? Yes. But it's small enough that I think you should just include this change with another change (especially if you decide to drop the "sync" flag from this function as I suggested). -Alex > -------------- > @@ -1568,18 +1568,14 @@ xfs_fs_writable(xfs_mount_t *mp) > /* > * xfs_log_sbcount > * > - * Called either periodically to keep the on disk superblock values > - * roughly up to date or from unmount to make sure the values are > - * correct on a clean unmount. > + * Sync the superblock counters to disk. > * > * Note this code can be called during the process of freezing, so > - * we may need to use the transaction allocator which does not not > + * we may need to use the transaction allocator which does not > * block when the transaction subsystem is in its frozen state. > */ > ---------------- > From sekharan@us.ibm.com Wed Jun 29 15:33:52 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TKXoKD140392 for ; Wed, 29 Jun 2011 15:33:51 -0500 X-ASG-Debug-ID: 1309379629-10e503920000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e1.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6777741778 for ; Wed, 29 Jun 2011 13:33:49 -0700 (PDT) Received: from e1.ny.us.ibm.com (e1.ny.us.ibm.com [32.97.182.141]) by cuda.sgi.com with ESMTP id h1YpRdlmBYWe7UDX for ; Wed, 29 Jun 2011 13:33:49 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay04.pok.ibm.com (d01relay04.pok.ibm.com [9.56.227.236]) by e1.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5TKLmA5028570 for ; Wed, 29 Jun 2011 16:21:48 -0400 Received: from d01av01.pok.ibm.com (d01av01.pok.ibm.com [9.56.224.215]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5TKXmvV054426 for ; Wed, 29 Jun 2011 16:33:48 -0400 Received: from d01av01.pok.ibm.com (loopback [127.0.0.1]) by d01av01.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5TKXj9O000572 for ; Wed, 29 Jun 2011 16:33:47 -0400 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d01av01.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5TKXifp000444; Wed, 29 Jun 2011 16:33:44 -0400 X-ASG-Orig-Subj: Re: [PATCH] xfs: replace bp->flags usage with predefined macros Subject: Re: [PATCH] xfs: replace bp->flags usage with predefined macros From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: Christoph Hellwig Cc: Dave Chinner , Alex Elder , XFS Mailing List In-Reply-To: <20110629063001.GA12554@infradead.org> References: <1309308784.5505.6214.camel@chandra-lucid.beaverton.ibm.com> <20110629044616.GB1026@dastard> <20110629063001.GA12554@infradead.org> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Wed, 29 Jun 2011 13:33:43 -0700 Message-ID: <1309379623.5505.6222.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e1.ny.us.ibm.com[32.97.182.141] X-Barracuda-Start-Time: 1309379630 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, 2011-06-29 at 02:30 -0400, Christoph Hellwig wrote: > On Wed, Jun 29, 2011 at 02:46:16PM +1000, Dave Chinner wrote: > > On Tue, Jun 28, 2011 at 05:53:04PM -0700, Chandra Seetharaman wrote: > > > Cleanup: Replace bp->flags usage with predefined macros. > > > > > > Signed-off-by: Chandra Seetharaman > > > > Christoph can correct me if I'm wrong, but I'm pretty sure his long term > > direction is to remove the XFS_BUF_* macros completely. > > Yes, at least those that are simpler flags get/set/clear wrappers. So, the suggestion is to go the other way and remove all the wrappers and use bp->flags directly ? > From P@draigBrady.com Wed Jun 29 16:30:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 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 p5TLUdG6143963 for ; Wed, 29 Jun 2011 16:30:39 -0500 X-ASG-Debug-ID: 1309383037-35da02ee0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail1.slb.deg.dub.stisp.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id AFAAE17801BF for ; Wed, 29 Jun 2011 14:30:38 -0700 (PDT) Received: from mail1.slb.deg.dub.stisp.net (mail1.slb.deg.dub.stisp.net [84.203.253.98]) by cuda.sgi.com with SMTP id HHfv9nNg5EBBBazF for ; Wed, 29 Jun 2011 14:30:38 -0700 (PDT) Received: (qmail 39802 invoked from network); 29 Jun 2011 21:30:36 -0000 Received: from unknown (HELO ?192.168.2.25?) (84.203.137.218) by mail1.slb.deg.dub.stisp.net with SMTP; 29 Jun 2011 21:30:36 -0000 Message-ID: <4E0B9955.3040905@draigBrady.com> Date: Wed, 29 Jun 2011 22:29:57 +0100 From: =?ISO-8859-1?Q?P=E1draig_Brady?= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.8) Gecko/20100227 Thunderbird/3.0.3 MIME-Version: 1.0 To: Sunil Mushran CC: Christoph Hellwig , Dave Chinner , Josef Bacik , linux-fsdevel@vger.kernel.org, viro@ZenIV.linux.org.uk, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester Subject: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester References: <1309275199-10801-1-git-send-email-josef@redhat.com> <1309275199-10801-5-git-send-email-josef@redhat.com> <20110629065306.GC1026@dastard> <20110629074021.GA26086@infradead.org> <4E0B019E.8080800@draigBrady.com> <4E0B60DE.50908@oracle.com> In-Reply-To: <4E0B60DE.50908@oracle.com> X-Enigmail-Version: 1.0.1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: mail1.slb.deg.dub.stisp.net[84.203.253.98] X-Barracuda-Start-Time: 1309383038 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0201 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67501 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 29/06/11 18:29, Sunil Mushran wrote: > On 06/29/2011 03:42 AM, Pádraig Brady wrote: >> There is the argument, that if this interface can distinguish >> these dirty unwritten extents, then why can't the fiemap interface too? >> The advantage of the fiemap interface is that it can distinguish >> empty extents vs holes. Empty extents will become increasingly common >> I think, given the fragmentation and space guarantee benefits they give. >> It would be cool for cp for example to be able to efficiently copy >> empty extents from source to dest. > > I'm not too sure about that. Atleast not enabled by default. Most users > use cp to backup data. Not empty space. In this case, this empty extent > may not even be de-dupable. That's a fair point. On the other hand if you wanted to start working with the backup copy, you might want it allocated to avoid fragmentation and ENOSPC issues. What we were going with was empty -> hole with cp --sparse=always and empty -> empty otherwise. If empty and hole can not be distinguished though, then this process will be impacted. > > Frankly I'd be happier of cp started to exploited fallocate() to create > larger > extents before copying data into them. Atleast for the large files. Yes we definitely will start doing that. That will help fragmentation and give early ENOSPC. We can't use fiemap for this at the moment (on XSF or ext4 (without a sync)) but the seek_data interface should allow us to do this to some extent (pardon the pun). cheers, Pádraig. From sekharan@us.ibm.com Wed Jun 29 16:54:31 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TLsTKg144792 for ; Wed, 29 Jun 2011 16:54:30 -0500 X-ASG-Debug-ID: 1309384468-4a1302e10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e33.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 46A5414FA5D6 for ; Wed, 29 Jun 2011 14:54:28 -0700 (PDT) Received: from e33.co.us.ibm.com (e33.co.us.ibm.com [32.97.110.151]) by cuda.sgi.com with ESMTP id CEShJazZPDt8LKmL for ; Wed, 29 Jun 2011 14:54:28 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by e33.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5TLkrmv023556 for ; Wed, 29 Jun 2011 15:46:53 -0600 Received: from d03av03.boulder.ibm.com (d03av03.boulder.ibm.com [9.17.195.169]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5TLsNb9180252 for ; Wed, 29 Jun 2011 15:54:23 -0600 Received: from d03av03.boulder.ibm.com (loopback [127.0.0.1]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5TFsMdE004232 for ; Wed, 29 Jun 2011 09:54:22 -0600 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5TFsLc7004212; Wed, 29 Jun 2011 09:54:22 -0600 X-ASG-Orig-Subj: Re: xfstests test case 180 fails often Subject: Re: xfstests test case 180 fails often From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: Dave Chinner Cc: XFS Mailing List , aelder@sgi.com In-Reply-To: <20110629010457.GR32466@dastard> References: <1308077464.7661.473.camel@chandra-lucid.beaverton.ibm.com> <1308259762.2717.31.camel@doink> <1309304361.5505.6211.camel@chandra-lucid.beaverton.ibm.com> <20110629010457.GR32466@dastard> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Wed, 29 Jun 2011 14:54:22 -0700 Message-ID: <1309384462.5505.6279.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e33.co.us.ibm.com[32.97.110.151] X-Barracuda-Start-Time: 1309384469 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, 2011-06-29 at 11:04 +1000, Dave Chinner wrote: > On Tue, Jun 28, 2011 at 04:39:21PM -0700, Chandra Seetharaman wrote: > > On Thu, 2011-06-16 at 16:29 -0500, Alex Elder wrote: > > > On Tue, 2011-06-14 at 11:51 -0700, Chandra Seetharaman wrote: > > > > Hello All, > > > > > > > > test case 180 fails often (4 out of 5) in my x86_64 system. > > > > Any suggestions on how to proceed to debug ? > > > > > > I have been seeing failures like that sometimes > > > (more often recently I think) for a while. I > > > have not had the chance to really chase it down. > > > > > > If you can reproduce it pretty relibly you could > > > use "git bisect" to try to find out whether the > > > failures started to occur after a particular > > > commit. > > > > I tried git bisect and it ended up in a qla2xxx fix (and I do not even > > have qlogic card in that system). > > > > I did it couple more times and landed on different patches. > > That indicates your test case is not 100% reliable. :/ > Agreed. That is why I tested the "supposedly"(thru git bisect) good one for about 500 iterations to verfify the failing patch. OTOH, can you suggest a test that does what 180 does in a reliable way ? > I haven't seen a failure in 180 on any of my test machines for some > time (32 or 64 bit). > > > My latest (fourth ot fifth, I forgot :) bisect landed on the patch with > > commit 546a1924224078c6f582e68f890b05b387b42653 ( writeback: > > write_cache_pages doesn't terminate at nr_to_write <= 0) > > That was merged in 2.6.36-rc2, and shouldn't have any sync > implications at all.... > > > I verified that this is valid patch by running the test script 180 for > > nearly 500 times on the tree just prior to this patch. > > Ok, more details about your test setup is needed. What kernel are > you running? What storage are you using? How much RAM/CPU, etc? > Kernel: mainline with up to commit #546a1924224078c6f582e68f890b05b387b42653 Storage: 2TB megaraid (IBM ServeRAID M1015) local storage. Partition: only 20GB RAM: 25GB Proc: Intel(R) Xeon(R) CPU E5607 @ 2.27GHz #of procs: 4 > Also, what are the sizes of the files that had reported incorrect > size? It failed with varied sizes. Here are the 10 failures from 3.0.0-rc5 kernel: +file /mnt/xfsScratchMntPt/966 has incorrect size - sync failed +-rw-------. 1 root root 8663040 Jun 29 13:46 /mnt/xfsScratchMntPt/966 +file /mnt/xfsScratchMntPt/644 has incorrect size - sync failed +-rw-------. 1 root root 8724480 Jun 29 13:53 /mnt/xfsScratchMntPt/644 +file /mnt/xfsScratchMntPt/381 has incorrect size - sync failed +-rw-------. 1 root root 10096640 Jun 29 14:03 /mnt/xfsScratchMntPt/381 +file /mnt/xfsScratchMntPt/569 has incorrect size - sync failed +-rw-------. 1 root root 10383360 Jun 29 14:04 /mnt/xfsScratchMntPt/569 +file /mnt/xfsScratchMntPt/650 has incorrect size - sync failed +-rw-------. 1 root root 9216000 Jun 29 14:04 /mnt/xfsScratchMntPt/650 +file /mnt/xfsScratchMntPt/947 has incorrect size - sync failed +-rw-------. 1 root root 8663040 Jun 29 14:04 /mnt/xfsScratchMntPt/947 +file /mnt/xfsScratchMntPt/569 has incorrect size - sync failed +-rw-------. 1 root root 7761920 Jun 29 14:10 /mnt/xfsScratchMntPt/569 +file /mnt/xfsScratchMntPt/905 has incorrect size - sync failed +-rw-------. 1 root root 8417280 Jun 29 14:11 /mnt/xfsScratchMntPt/905 +file /mnt/xfsScratchMntPt/617 has incorrect size - sync failed +-rw-------. 1 root root 10403840 Jun 29 14:13 /mnt/xfsScratchMntPt/617 +file /mnt/xfsScratchMntPt/654 has incorrect size - sync failed +-rw-------. 1 root root 9216000 Jun 29 14:15 /mnt/xfsScratchMntPt/654 +file /mnt/xfsScratchMntPt/569 has incorrect size - sync failed +-rw-------. 1 root root 7802880 Jun 29 14:17 /mnt/xfsScratchMntPt/569 +file /mnt/xfsScratchMntPt/740 has incorrect size - sync failed +-rw-------. 1 root root 9216000 Jun 29 14:17 /mnt/xfsScratchMntPt/740 +file /mnt/xfsScratchMntPt/574 has incorrect size - sync failed +-rw-------. 1 root root 10260480 Jun 29 14:26 /mnt/xfsScratchMntPt/574 +file /mnt/xfsScratchMntPt/655 has incorrect size - sync failed +-rw-------. 1 root root 9216000 Jun 29 14:26 /mnt/xfsScratchMntPt/655 +file /mnt/xfsScratchMntPt/952 has incorrect size - sync failed +-rw-------. 1 root root 8663040 Jun 29 14:27 /mnt/xfsScratchMntPt/952 +file /mnt/xfsScratchMntPt/575 has incorrect size - sync failed +-rw-------. 1 root root 10260480 Jun 29 14:28 /mnt/xfsScratchMntPt/575 +file /mnt/xfsScratchMntPt/656 has incorrect size - sync failed +-rw-------. 1 root root 9216000 Jun 29 14:28 /mnt/xfsScratchMntPt/656 +file /mnt/xfsScratchMntPt/926 has incorrect size - sync failed +-rw-------. 1 root root 8663040 Jun 29 14:29 /mnt/xfsScratchMntPt/926 +file /mnt/xfsScratchMntPt/941 has incorrect size - sync failed +-rw-------. 1 root root 8417280 Jun 29 14:31 /mnt/xfsScratchMntPt/941 +file /mnt/xfsScratchMntPt/544 has incorrect size - sync failed +-rw-------. 1 root root 7413760 Jun 29 14:35 /mnt/xfsScratchMntPt/544 > > Cheers, > > Dave. > > PS: Please don't top post replies. Please quote and reply inline so > that the thread flow is easy to follow. sorry :( From aelder@sgi.com Wed Jun 29 16:58:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TLwWQj144941 for ; Wed, 29 Jun 2011 16:58:32 -0500 Received: from cas.corp.sgi.com (pv-excas1-dc21-nlb.corp.sgi.com [137.38.102.126]) by relay2.corp.sgi.com (Postfix) with ESMTP id F269430404E; Wed, 29 Jun 2011 14:58:28 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Wed, 29 Jun 2011 16:58:28 -0500 Subject: Re: [PATCH] xfs: replace bp->flags usage with predefined macros From: Alex Elder Reply-To: To: CC: Christoph Hellwig , Dave Chinner , XFS Mailing List In-Reply-To: <1309379623.5505.6222.camel@chandra-lucid.beaverton.ibm.com> References: <1309308784.5505.6214.camel@chandra-lucid.beaverton.ibm.com> <20110629044616.GB1026@dastard> <20110629063001.GA12554@infradead.org> <1309379623.5505.6222.camel@chandra-lucid.beaverton.ibm.com> Content-Type: text/plain; charset="UTF-8" Date: Wed, 29 Jun 2011 16:58:26 -0500 Message-ID: <1309384706.8649.31.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, 2011-06-29 at 13:33 -0700, Chandra Seetharaman wrote: > On Wed, 2011-06-29 at 02:30 -0400, Christoph Hellwig wrote: > > On Wed, Jun 29, 2011 at 02:46:16PM +1000, Dave Chinner wrote: > > > On Tue, Jun 28, 2011 at 05:53:04PM -0700, Chandra Seetharaman wrote: > > > > Cleanup: Replace bp->flags usage with predefined macros. > > > > > > > > Signed-off-by: Chandra Seetharaman > > > > > > Christoph can correct me if I'm wrong, but I'm pretty sure his long term > > > direction is to remove the XFS_BUF_* macros completely. > > > > Yes, at least those that are simpler flags get/set/clear wrappers. > > So, the suggestion is to go the other way and remove all the wrappers > and use bp->flags directly ? Yes, that's right. Sorry about that. Chandra asked me for some things to do on XFS so I fired a few small simple odds and ends I had made note of along the way. This was one--I said that the use of macros should be consistent. I said we should eventually do away with them entirely, but I didn't recommend he do that right now since this was being done by a new contributor. Chandra, I think if you're up to it, doing away with the macros is the right way to go. -Alex From sekharan@us.ibm.com Wed Jun 29 17:02:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TM2iGZ145115 for ; Wed, 29 Jun 2011 17:02:44 -0500 X-ASG-Debug-ID: 1309384960-1ec400a90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e5.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 309A31782258 for ; Wed, 29 Jun 2011 15:02:40 -0700 (PDT) Received: from e5.ny.us.ibm.com (e5.ny.us.ibm.com [32.97.182.145]) by cuda.sgi.com with ESMTP id MF5fHEdlHrMY0KTB for ; Wed, 29 Jun 2011 15:02:40 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay07.pok.ibm.com (d01relay07.pok.ibm.com [9.56.227.147]) by e5.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5TLYMbf017384 for ; Wed, 29 Jun 2011 17:34:22 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay07.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5TM2evE1454096 for ; Wed, 29 Jun 2011 18:02:40 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5TM2d8n007321 for ; Wed, 29 Jun 2011 18:02:39 -0400 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5TM2cii007140; Wed, 29 Jun 2011 18:02:38 -0400 X-ASG-Orig-Subj: Re: [PATCH] xfs: replace bp->flags usage with predefined macros Subject: Re: [PATCH] xfs: replace bp->flags usage with predefined macros From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: aelder@sgi.com Cc: Christoph Hellwig , Dave Chinner , XFS Mailing List In-Reply-To: <1309384706.8649.31.camel@doink> References: <1309308784.5505.6214.camel@chandra-lucid.beaverton.ibm.com> <20110629044616.GB1026@dastard> <20110629063001.GA12554@infradead.org> <1309379623.5505.6222.camel@chandra-lucid.beaverton.ibm.com> <1309384706.8649.31.camel@doink> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Wed, 29 Jun 2011 15:02:37 -0700 Message-ID: <1309384957.5505.6280.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e5.ny.us.ibm.com[32.97.182.145] X-Barracuda-Start-Time: 1309384964 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, 2011-06-29 at 16:58 -0500, Alex Elder wrote: > On Wed, 2011-06-29 at 13:33 -0700, Chandra Seetharaman wrote: > > On Wed, 2011-06-29 at 02:30 -0400, Christoph Hellwig wrote: > > > On Wed, Jun 29, 2011 at 02:46:16PM +1000, Dave Chinner wrote: > > > > On Tue, Jun 28, 2011 at 05:53:04PM -0700, Chandra Seetharaman wrote: > > > > > Cleanup: Replace bp->flags usage with predefined macros. > > > > > > > > > > Signed-off-by: Chandra Seetharaman > > > > > > > > Christoph can correct me if I'm wrong, but I'm pretty sure his long term > > > > direction is to remove the XFS_BUF_* macros completely. > > > > > > Yes, at least those that are simpler flags get/set/clear wrappers. > > > > So, the suggestion is to go the other way and remove all the wrappers > > and use bp->flags directly ? > > Yes, that's right. > > Sorry about that. Chandra asked me for some things to do > on XFS so I fired a few small simple odds and ends I had > made note of along the way. This was one--I said that the > use of macros should be consistent. I said we should > eventually do away with them entirely, but I didn't recommend > he do that right now since this was being done by a new > contributor. > > Chandra, I think if you're up to it, doing away with the > macros is the right way to go. Will do. > > -Alex > From sekharan@us.ibm.com Wed Jun 29 17:10:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 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 p5TMAnZZ145388 for ; Wed, 29 Jun 2011 17:10:50 -0500 X-ASG-Debug-ID: 1309385449-090401ed0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e33.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 708CA42333 for ; Wed, 29 Jun 2011 15:10:49 -0700 (PDT) Received: from e33.co.us.ibm.com (e33.co.us.ibm.com [32.97.110.151]) by cuda.sgi.com with ESMTP id 2ftZdxJ7sMaTgK6p for ; Wed, 29 Jun 2011 15:10:49 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by e33.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5TM3GMW008063 for ; Wed, 29 Jun 2011 16:03:16 -0600 Received: from d03av03.boulder.ibm.com (d03av03.boulder.ibm.com [9.17.195.169]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5TMAFc9096700 for ; Wed, 29 Jun 2011 16:10:31 -0600 Received: from d03av03.boulder.ibm.com (loopback [127.0.0.1]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5TGAEAG012106 for ; Wed, 29 Jun 2011 10:10:14 -0600 Received: from [9.47.24.164] (chandra-lucid.beaverton.ibm.com [9.47.24.164]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5TGADQY012082; Wed, 29 Jun 2011 10:10:14 -0600 X-ASG-Orig-Subj: [PATCH] xfs: Remove the second parameter to xfs_sb_count() Subject: [PATCH] xfs: Remove the second parameter to xfs_sb_count() From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: XFS Mailing List Cc: Alex Elder Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Wed, 29 Jun 2011 15:10:14 -0700 Message-ID: <1309385414.5505.6282.camel@chandra-lucid.beaverton.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e33.co.us.ibm.com[32.97.110.151] X-Barracuda-Start-Time: 1309385449 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 Remove the second parameter to xfs_sb_count() since all callers of the function set them. Also, fix the header comment regarding it being called periodically. Signed-off-by: Chandra Seetharaman --- fs/xfs/linux-2.6/xfs_sync.c | 2 +- fs/xfs/xfs_mount.c | 15 +++++---------- fs/xfs/xfs_mount.h | 2 +- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index 8ecad5f..b32c09e 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c @@ -436,7 +436,7 @@ xfs_quiesce_attr( WARN_ON(atomic_read(&mp->m_active_trans) != 0); /* Push the superblock and write an unmount record */ - error = xfs_log_sbcount(mp, 1); + error = xfs_log_sbcount(mp); if (error) xfs_warn(mp, "xfs_attr_quiesce: failed to log sb changes. " "Frozen image may not be consistent."); diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index b49b823..e569b77 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -1532,7 +1532,7 @@ xfs_unmountfs( xfs_warn(mp, "Unable to free reserved block pool. " "Freespace may not be correct on next mount."); - error = xfs_log_sbcount(mp, 1); + error = xfs_log_sbcount(mp); if (error) xfs_warn(mp, "Unable to update superblock counters. " "Freespace may not be correct on next mount."); @@ -1568,18 +1568,14 @@ xfs_fs_writable(xfs_mount_t *mp) /* * xfs_log_sbcount * - * Called either periodically to keep the on disk superblock values - * roughly up to date or from unmount to make sure the values are - * correct on a clean unmount. + * Sync the superblock counters to disk. * * Note this code can be called during the process of freezing, so - * we may need to use the transaction allocator which does not not + * we may need to use the transaction allocator which does not * block when the transaction subsystem is in its frozen state. */ int -xfs_log_sbcount( - xfs_mount_t *mp, - uint sync) +xfs_log_sbcount(xfs_mount_t *mp) { xfs_trans_t *tp; int error; @@ -1605,8 +1601,7 @@ xfs_log_sbcount( } xfs_mod_sb(tp, XFS_SB_IFREE | XFS_SB_ICOUNT | XFS_SB_FDBLOCKS); - if (sync) - xfs_trans_set_sync(tp); + xfs_trans_set_sync(tp); error = xfs_trans_commit(tp, 0); return error; } diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index 3d68bb2..bb24dac 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h @@ -371,7 +371,7 @@ typedef struct xfs_mod_sb { int64_t msb_delta; /* Change to make to specified field */ } xfs_mod_sb_t; -extern int xfs_log_sbcount(xfs_mount_t *, uint); +extern int xfs_log_sbcount(xfs_mount_t *); extern __uint64_t xfs_default_resblks(xfs_mount_t *mp); extern int xfs_mountfs(xfs_mount_t *mp); -- 1.7.1 From aelder@sgi.com Wed Jun 29 17:13:04 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TMD4Mt145469 for ; Wed, 29 Jun 2011 17:13:04 -0500 Received: from cas.corp.sgi.com (pv-excas1-dc21-nlb.corp.sgi.com [137.38.102.126]) by relay1.corp.sgi.com (Postfix) with ESMTP id 743D28F806F; Wed, 29 Jun 2011 15:13:01 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Wed, 29 Jun 2011 17:13:01 -0500 Subject: Re: [PATCH 04/27] xfs: cleanup xfs_add_to_ioend From: Alex Elder Reply-To: To: Christoph Hellwig CC: In-Reply-To: <20110629140337.137341800@bombadil.infradead.org> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140337.137341800@bombadil.infradead.org> Content-Type: text/plain; charset="UTF-8" Date: Wed, 29 Jun 2011 17:13:00 -0500 Message-ID: <1309385580.8649.34.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, 2011-06-29 at 10:01 -0400, Christoph Hellwig wrote: > plain text document attachment (xfs-cleanup-xfs_add_to_ioend) > Pass the writeback context to xfs_add_to_ioend to make the ioend > chain manipulations self-contained in this function. > > Signed-off-by: Christoph Hellwig Looks good. I much prefer what you've done to how it was before. Reviewed-by: Alex Elder PS I still have to review patch 3 in this series. From aelder@sgi.com Wed Jun 29 17:13:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TMDB3J145481 for ; Wed, 29 Jun 2011 17:13:11 -0500 Received: from cas.corp.sgi.com (pv-excas1-dc21-nlb.corp.sgi.com [137.38.102.126]) by relay1.corp.sgi.com (Postfix) with ESMTP id D8C0E8F80AC; Wed, 29 Jun 2011 15:13:10 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Wed, 29 Jun 2011 17:13:10 -0500 Subject: Re: [PATCH 05/27] xfs: work around bogus gcc warning in xfs_allocbt_init_cursor From: Alex Elder Reply-To: To: Christoph Hellwig CC: In-Reply-To: <20110629140337.417478423@bombadil.infradead.org> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140337.417478423@bombadil.infradead.org> Content-Type: text/plain; charset="UTF-8" Date: Wed, 29 Jun 2011 17:13:09 -0500 Message-ID: <1309385589.8649.35.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, 2011-06-29 at 10:01 -0400, Christoph Hellwig wrote: > plain text document attachment > (xfs-fix-xfs_allocbt_init_cursor-warning) > GCC 4.6 complains about an array subscript is above array bounds when > using the btree index to index into the agf_levels array. The only > two indices passed in are 0 and 1, and we have an assert insuring that. > > Replace the trick of using the array index directly with using constants > in the already existing branch for assigning the XFS_BTREE_LASTREC_UPDATE > flag. > > Signed-off-by: Christoph Hellwig > Reviewed-by: Dave Chinner Looks good. Reviewed-by: Alex Elder From aelder@sgi.com Wed Jun 29 17:13:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TMDK9i145506 for ; Wed, 29 Jun 2011 17:13:20 -0500 Received: from cas.corp.sgi.com (pv-excas1-dc21-nlb.corp.sgi.com [137.38.102.126]) by relay2.corp.sgi.com (Postfix) with ESMTP id 05BE8304048; Wed, 29 Jun 2011 15:13:17 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Wed, 29 Jun 2011 17:13:16 -0500 Subject: Re: [PATCH 06/27] xfs: split xfs_setattr From: Alex Elder Reply-To: To: Christoph Hellwig CC: In-Reply-To: <20110629140337.641422449@bombadil.infradead.org> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140337.641422449@bombadil.infradead.org> Content-Type: text/plain; charset="UTF-8" Date: Wed, 29 Jun 2011 17:13:16 -0500 Message-ID: <1309385596.8649.36.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, 2011-06-29 at 10:01 -0400, Christoph Hellwig wrote: > plain text document attachment (xfs-split-setattr) > Split up xfs_setattr into two functions, one for the complex truncate > handling, and one for the trivial attribute updates. Also move both > new routines to xfs_iops.c as they are fairly Linux-specific. > > Signed-off-by: Christoph Hellwig Nice simplification (good start anyway...). Looks good but I think that you need to mask off the ia_valid bits in the calls now made in xfs_vn_setattr(). Also, I think you may still need to check the file type for the size-setting function. Details below. Seems like a semi-exhaustive setattr() checker test program would be pretty easy to create. If you fix these things (or you point out I'm mistaken), you can consider this: Reviewed-by: Alex Elder > Index: xfs/fs/xfs/linux-2.6/xfs_iops.c > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_iops.c 2011-06-29 11:29:02.684972774 +0200 > +++ xfs/fs/xfs/linux-2.6/xfs_iops.c 2011-06-29 11:29:07.154948558 +0200 > @@ -39,6 +39,7 @@ > #include "xfs_buf_item.h" > #include "xfs_utils.h" > #include "xfs_vnodeops.h" > +#include "xfs_inode_item.h" > #include "xfs_trace.h" > > #include > @@ -497,12 +498,449 @@ xfs_vn_getattr( > return 0; > } > > +int > +xfs_setattr_nonsize( > + struct xfs_inode *ip, > + struct iattr *iattr, > + int flags) > +{ > + xfs_mount_t *mp = ip->i_mount; > + struct inode *inode = VFS_I(ip); > + int mask = iattr->ia_valid; > + xfs_trans_t *tp; > + int error; > + uid_t uid = 0, iuid = 0; > + gid_t gid = 0, igid = 0; > + struct xfs_dquot *udqp = NULL, *gdqp = NULL; > + struct xfs_dquot *olddquot1 = NULL, *olddquot2 = NULL; > + > + trace_xfs_setattr(ip); > + > + if (mp->m_flags & XFS_MOUNT_RDONLY) > + return XFS_ERROR(EROFS); > + > + if (XFS_FORCED_SHUTDOWN(mp)) > + return XFS_ERROR(EIO); > + > + error = -inode_change_ok(inode, iattr); > + if (error) > + return XFS_ERROR(error); > + > + ASSERT((mask & ATTR_SIZE) == 0); You need to mask ATTR_SIZE off in xfs_vn_setattr() if you're going to make this assertion. But you might as well just mask it off locally I suppose (though it's nice to have the explicitness of the assertion here). > + > + /* > + * If disk quotas is on, we make sure that the dquots do exist on disk, > + * before we start any other transactions. Trying to do this later > + * is messy. We don't care to take a readlock to look at the ids > + * in inode here, because we can't hold it across the trans_reserve. . . . > +} > + > +/* > + * Truncate file. Must have write permission and not be a directory. > + */ > +int > +xfs_setattr_size( > + struct xfs_inode *ip, > + struct iattr *iattr, > + int flags) > +{ > + struct xfs_mount *mp = ip->i_mount; > + struct inode *inode = VFS_I(ip); > + int mask = iattr->ia_valid; > + struct xfs_trans *tp; > + int error; > + uint lock_flags; > + uint commit_flags = 0; > + > + trace_xfs_setattr(ip); > + > + if (mp->m_flags & XFS_MOUNT_RDONLY) > + return XFS_ERROR(EROFS); > + > + if (XFS_FORCED_SHUTDOWN(mp)) > + return XFS_ERROR(EIO); > + > + error = -inode_change_ok(inode, iattr); > + if (error) > + return XFS_ERROR(error); > + > + ASSERT(S_ISREG(ip->i_d.di_mode)); There is nothing in xfs_vn_setattr(), nor--as far as I can tell--anywhere else that reaches xfs_vn_seattr() that will ensure this. (Maybe it's unreachable for a directory or whatever, but that's not obvious.) You may have to put back the code that returns EISDIR or EINVAL based on the file type rather than do this assertion. Seems like inode_change_ok() might have been able to do this check for us. > + ASSERT((mask & (ATTR_MODE|ATTR_UID|ATTR_GID|ATTR_ATIME|ATTR_ATIME_SET| > + ATTR_MTIME_SET|ATTR_KILL_SUID|ATTR_KILL_SGID| > + ATTR_KILL_PRIV|ATTR_TIMES_SET)) == 0); You'll have to mask these off in xfs_vn_setattr() if you're going to make this assertion. > + > + lock_flags = XFS_ILOCK_EXCL; > + if (!(flags & XFS_ATTR_NOLOCK)) > + lock_flags |= XFS_IOLOCK_EXCL; > + xfs_ilock(ip, lock_flags); > + > + /* > + * Short circuit the truncate case for zero length files. > + */ . . . > + goto out_unlock; > +} > + > STATIC int > xfs_vn_setattr( > struct dentry *dentry, > struct iattr *iattr) > { > - return -xfs_setattr(XFS_I(dentry->d_inode), iattr, 0); > + if (iattr->ia_valid & ATTR_SIZE) > + return -xfs_setattr_size(XFS_I(dentry->d_inode), iattr, 0); > + return -xfs_setattr_nonsize(XFS_I(dentry->d_inode), iattr, 0); > } Just leaving this part in so you can see what I'm talking about. > #define XFS_FIEMAP_FLAGS (FIEMAP_FLAG_SYNC|FIEMAP_FLAG_XATTR) . . . > Index: xfs/fs/xfs/xfs_vnodeops.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_vnodeops.c 2011-06-29 11:29:02.721639242 +0200 > +++ xfs/fs/xfs/xfs_vnodeops.c 2011-06-29 11:29:07.158281874 +0200 > @@ -50,430 +50,6 @@ > #include "xfs_vnodeops.h" > #include "xfs_trace.h" > > -int > -xfs_setattr( > - struct xfs_inode *ip, > - struct iattr *iattr, > - int flags) > -{ > - xfs_mount_t *mp = ip->i_mount; > - struct inode *inode = VFS_I(ip); > - int mask = iattr->ia_valid; > - xfs_trans_t *tp; > - int code; > - uint lock_flags; > - uint commit_flags=0; > - uid_t uid=0, iuid=0; > - gid_t gid=0, igid=0; > - struct xfs_dquot *udqp, *gdqp, *olddquot1, *olddquot2; > - int need_iolock = 1; > - . . . > - /* > - * Truncate file. Must have write permission and not be a directory. > - */ > - if (mask & ATTR_SIZE) { > - /* Short circuit the truncate case for zero length files */ > - if (iattr->ia_size == 0 && > - ip->i_size == 0 && ip->i_d.di_nextents == 0) { > - xfs_iunlock(ip, XFS_ILOCK_EXCL); > - lock_flags &= ~XFS_ILOCK_EXCL; > - if (mask & ATTR_CTIME) { > - inode->i_mtime = inode->i_ctime = > - current_fs_time(inode->i_sb); > - xfs_mark_inode_dirty_sync(ip); > - } > - code = 0; > - goto error_return; > - } > - > - if (S_ISDIR(ip->i_d.di_mode)) { > - code = XFS_ERROR(EISDIR); > - goto error_return; > - } else if (!S_ISREG(ip->i_d.di_mode)) { > - code = XFS_ERROR(EINVAL); > - goto error_return; > - } This is the file type checking code I referred to above. > - > - /* From aelder@sgi.com Wed Jun 29 17:13:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TMDOks145520 for ; Wed, 29 Jun 2011 17:13:24 -0500 Received: from cas.corp.sgi.com (pv-excas1-dc21-nlb.corp.sgi.com [137.38.102.126]) by relay2.corp.sgi.com (Postfix) with ESMTP id 1D486304048; Wed, 29 Jun 2011 15:13:24 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Wed, 29 Jun 2011 17:13:23 -0500 Subject: Re: [PATCH 07/27] xfs: always log timestamp updates in xfs_setattr_size From: Alex Elder Reply-To: To: Christoph Hellwig CC: In-Reply-To: <20110629140337.876449102@bombadil.infradead.org> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140337.876449102@bombadil.infradead.org> Content-Type: text/plain; charset="UTF-8" Date: Wed, 29 Jun 2011 17:13:23 -0500 Message-ID: <1309385603.8649.37.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, 2011-06-29 at 10:01 -0400, Christoph Hellwig wrote: > plain text document attachment (xfs-simplify-setattr) > Get rid of the special case where we use unlogged timestamp updates for > a truncate to the current inode size, and just call xfs_setattr_nonsize > for it to treat it like a utimes calls. I'm probably just missing something, but I have a question below. If it does in fact call out a problem, it will be easily fixed. Reviewed-by: Alex Elder > Signed-off-by: Christoph Hellwig > Reviewed-by: Dave Chinner > > Index: xfs/fs/xfs/linux-2.6/xfs_iops.c > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_iops.c 2011-06-21 11:12:11.008794493 +0200 > +++ xfs/fs/xfs/linux-2.6/xfs_iops.c 2011-06-21 11:12:22.398793917 +0200 > @@ -773,14 +773,16 @@ xfs_setattr_size( > */ > if (iattr->ia_size == 0 && > ip->i_size == 0 && ip->i_d.di_nextents == 0) { > - xfs_iunlock(ip, XFS_ILOCK_EXCL); > - lock_flags &= ~XFS_ILOCK_EXCL; > - if (mask & ATTR_CTIME) { > - inode->i_mtime = inode->i_ctime = > - current_fs_time(inode->i_sb); > - xfs_mark_inode_dirty_sync(ip); > - } > - goto out_unlock; > + if (!(mask & ATTR_CTIME)) > + goto out_unlock; > + > + /* > + * Use the regular setattr path to update the timestamps. > + */ > + xfs_iunlock(ip, lock_flags); > + iattr->ia_valid &= ~ATTR_SIZE; > + iattr->ia_valid |= ATTR_MTIME; How/where does iattr->ia_mtime get initialized to the current value (I believe it would just match iattr->ia_ctime)? > + return xfs_setattr_nonsize(ip, iattr, 0); > } > > /* > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From aelder@sgi.com Wed Jun 29 17:13:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TMDbBg145547 for ; Wed, 29 Jun 2011 17:13:37 -0500 Received: from cas.corp.sgi.com (pv-excas1-dc21.corp.sgi.com [137.38.102.116]) by relay3.corp.sgi.com (Postfix) with ESMTP id A09B3AC004; Wed, 29 Jun 2011 15:13:33 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Wed, 29 Jun 2011 17:13:33 -0500 Subject: Re: [PATCH 08/27] xfs: kill xfs_itruncate_start From: Alex Elder Reply-To: To: Christoph Hellwig CC: In-Reply-To: <20110629140338.098991196@bombadil.infradead.org> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140338.098991196@bombadil.infradead.org> Content-Type: text/plain; charset="UTF-8" Date: Wed, 29 Jun 2011 17:13:32 -0500 Message-ID: <1309385612.8649.38.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, 2011-06-29 at 10:01 -0400, Christoph Hellwig wrote: > plain text document attachment (xfs-kill-xfs_itruncate_start) > xfs_itruncate_start is a rather length wrapper that evaluates to a call > to xfs_ioend_wait and xfs_tosspages, and only has two callers. > > Instead of using the complicated checks left over from IRIX where we > can to truncate the pagecache just call xfs_tosspages > (aka truncate_inode_pages) directly as we want to get rid of all data > after i_size, and truncate_inode_pages handles incorrect alignments > and too large offsets just fine. > > Signed-off-by: Christoph Hellwig > Reviewed-by: Dave Chinner Nice cleanup. Looks good. I will continue reviewing this series tomorrow. Reviewed-by: Alex Elder From david@fromorbit.com Wed Jun 29 18:53:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5TNrVTg152992 for ; Wed, 29 Jun 2011 18:53:31 -0500 X-ASG-Debug-ID: 1309391607-797002b40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 629BC15E8F0F for ; Wed, 29 Jun 2011 16:53:27 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id l99YGyhcAHHTHBfQ for ; Wed, 29 Jun 2011 16:53:27 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAEO6C055LCkB/2dsb2JhbABSp1x4ygIOhiIEolI Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail06.adl2.internode.on.net with ESMTP; 30 Jun 2011 09:23:24 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1Qc4ZP-0002NJ-4g; Thu, 30 Jun 2011 09:53:23 +1000 Date: Thu, 30 Jun 2011 09:53:23 +1000 From: Dave Chinner To: Markus Trippelsdorf Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: long hangs when deleting large directories (3.0-rc3) Subject: Re: long hangs when deleting large directories (3.0-rc3) Message-ID: <20110629235323.GT561@dastard> References: <20110621185701.GB1723@x4.trippels.de> <20110622000449.GQ32466@dastard> <20110622070647.GA1744@x4.trippels.de> <20110622073047.GT32466@dastard> <20110629043143.GA1026@dastard> <20110629061954.GA1711@x4.trippels.de> <20110629072446.GR561@dastard> <20110629074127.GA1746@x4.trippels.de> <20110629121001.GS561@dastard> <20110629124814.GA1762@x4.trippels.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110629124814.GA1762@x4.trippels.de> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1309391610 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67510 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, Jun 29, 2011 at 02:48:14PM +0200, Markus Trippelsdorf wrote: > On 2011.06.29 at 22:10 +1000, Dave Chinner wrote: > > On Wed, Jun 29, 2011 at 09:41:27AM +0200, Markus Trippelsdorf wrote: > > > On 2011.06.29 at 17:24 +1000, Dave Chinner wrote: > > > > On Wed, Jun 29, 2011 at 08:19:54AM +0200, Markus Trippelsdorf wrote: > > > > > On 2011.06.29 at 14:31 +1000, Dave Chinner wrote: > > > > > > On Wed, Jun 22, 2011 at 05:30:47PM +1000, Dave Chinner wrote: > > > > > > > Jun 22 08:53:09 x4 kernel: XFS (sdb1): ail: ooo splice, tail 0x12000156e7, item 0x12000156e6 > > > > > > > Jun 22 08:53:09 x4 kernel: XFS (sdb1): ail: ooo splice, walked 15503 items > > > > > > > ..... > > > > > > > Jun 22 08:53:12 x4 kernel: XFS (sdb1): ail: ooo splice, tail 0x12000156e7, item 0x12000156e6 > > > > > > > Jun 22 08:53:12 x4 kernel: XFS (sdb1): ail: ooo splice, walked 16945 items > > > > > > > > > > > > > > Interesting is the LSN of the tail - it's only one sector further on > > > > > > > than the items being inserted. That's what I'd expect from a commit > > > > > > > record write race between two checkpoints. I'll have a deeper look > > > > > > > into whether this can be avoided later tonight and also whether I > > > > > > > can easily implement a "last insert cursor" easily so subsequent > > > > > > > inserts at the same LSN avoid the walk.... > > > > > > > > > > > > Ok, so here's a patch that does just this. I should probably also do > > > > > > a little bit of cleanup on the cursor code as well, but this avoids > > > > > > the repeated walks of the AIL to find the insert position. > > > > > > > > > > > > Can you try it without the WQ changes you made, Marcus, and see if > > > > > > the interactivity problems go away? > > > > > > > > > > Sorry to be the bringer of bad news, but this made things much worse: .... > > > > > As you can see in the table above (resolution 1sec) the hang is now > > > > > 5-6 seconds long, instead of the 1-3 seconds seen before. > > > > > > > > Interesting. I checked that the ordering was correct in each case > > > > adn that it was behaving correctly here. > > > > > > > > Can you add the following patch and send me the dmesg output over a > > > > hang? It will tell me where the cursor is being initialised and when > > > > it is being dropped, so should indicate if a specific insert chain > > > > is getting stuck or doing something stoopid. > > > > > > The kernel log is attached. > > > rm -fr && sync starts at Jun 29 09:32:24. > > > > Add this patch on top of the first one I sent. If it doesn't fix the > > problem, can you readd the debug patch and send the log again? > > This completely fixes the issue. As a bonus "rm -fr && sync" completes > much quicker now. Great to hear the hang has gone away. I'm also seeing performance improvements on unlink workloads with these two patches - quite significant, too. Cold cache parallel rm -rf tests over tens of millions of inodes are finishing 15-20% faster. Hot cache parallel rm -rf now go to being CPU bound on a 8p system with the unlink rate improving by about 50%.... As I always say, the hardest part of fixing a bug is getting a reproducable test case to analyse and test. Thank's for providing the test case and the testing, Markus! Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Jun 29 19:15:30 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U0FUOq157160 for ; Wed, 29 Jun 2011 19:15:30 -0500 X-ASG-Debug-ID: 1309392927-15e001110000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 43F96177560E for ; Wed, 29 Jun 2011 17:15:28 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id IzyZJlJ0duhEFpmF for ; Wed, 29 Jun 2011 17:15:28 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAMm9C055LCkB/2dsb2JhbABSp1x4yiYOhiIEmiSILg Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail06.adl2.internode.on.net with ESMTP; 30 Jun 2011 09:45:27 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1Qc4uj-0002Ri-Io; Thu, 30 Jun 2011 10:15:25 +1000 Date: Thu, 30 Jun 2011 10:15:25 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 02/27] xfs: remove the unused ilock_nowait codepath in writepage Subject: Re: [PATCH 02/27] xfs: remove the unused ilock_nowait codepath in writepage Message-ID: <20110630001525.GU561@dastard> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140336.717434334@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110629140336.717434334@bombadil.infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1309392929 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1129 1.0000 -1.3157 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.32 X-Barracuda-Spam-Status: No, SCORE=-1.32 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67511 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, Jun 29, 2011 at 10:01:11AM -0400, Christoph Hellwig wrote: > wbc->nonblocking is never set, so this whole code has been unreachable > for a long time. I'm also not sure it would make a lot of sense - > we'd rather finish our writeout after a short wait for the ilock > instead of cancelling the whole ioend. The problem that the non-blocking code is trying to solve is only obvious when the disk subsystem is fast enough to drive the flusher thread to being CPU bound. e.g. when you have a disk subsystem doing background writeback 10GB/s and the flusher thread is put to sleep for 50ms while we wait for the lock, it can now only push 9.5GB/s. If we just move on, then we'll spend that 50ms doing useful work on another dirty inode rather than sleeping onthis one and hence maintaining a 10GB/s background write rate. I'd suggest that the only thing that should be dropped is the wbc->nonblocking check. Numbers would be good to validate that this is still relevant, but I don't have a storage subsystem with enough bandwidth to drive a flusher thread to being CPU bound... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Jun 29 20:27:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U1R2pi163729 for ; Wed, 29 Jun 2011 20:27:03 -0500 X-ASG-Debug-ID: 1309397220-55bb00910000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E901EE524B9 for ; Wed, 29 Jun 2011 18:27:01 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 8iYE1Y6kGn5p1RWk for ; Wed, 29 Jun 2011 18:27:01 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAF7PC055LCkB/2dsb2JhbABSp1x4yiAOhiIEmiSILg Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail06.adl2.internode.on.net with ESMTP; 30 Jun 2011 10:57:00 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1Qc61y-0002Xq-CZ; Thu, 30 Jun 2011 11:26:58 +1000 Date: Thu, 30 Jun 2011 11:26:58 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 02/27] xfs: remove the unused ilock_nowait codepath in writepage Subject: Re: [PATCH 02/27] xfs: remove the unused ilock_nowait codepath in writepage Message-ID: <20110630012658.GV561@dastard> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140336.717434334@bombadil.infradead.org> <20110630001525.GU561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110630001525.GU561@dastard> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1309397221 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67516 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, Jun 30, 2011 at 10:15:25AM +1000, Dave Chinner wrote: > On Wed, Jun 29, 2011 at 10:01:11AM -0400, Christoph Hellwig wrote: > > wbc->nonblocking is never set, so this whole code has been unreachable > > for a long time. I'm also not sure it would make a lot of sense - > > we'd rather finish our writeout after a short wait for the ilock > > instead of cancelling the whole ioend. > > The problem that the non-blocking code is trying to solve is only > obvious when the disk subsystem is fast enough to drive the flusher > thread to being CPU bound. > > e.g. when you have a disk subsystem doing background writeback > 10GB/s and the flusher thread is put to sleep for 50ms while we wait > for the lock, it can now only push 9.5GB/s. If we just move on, then > we'll spend that 50ms doing useful work on another dirty inode > rather than sleeping onthis one and hence maintaining a 10GB/s > background write rate. > > I'd suggest that the only thing that should be dropped is the > wbc->nonblocking check. Numbers would be good to validate that this > is still relevant, but I don't have a storage subsystem with enough > bandwidth to drive a flusher thread to being CPU bound... I just confirmed that I don't have a fast enough storage system to test this - the flusher thread uses only ~15% of a CPU @ 800MB/s writeback, so I'd need somewhere above 5GB/s of throughput to see any sort of artifact from this change.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Jun 29 20:34:14 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U1YESg163987 for ; Wed, 29 Jun 2011 20:34:14 -0500 X-ASG-Debug-ID: 1309397652-3a0000910000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 90C5C4C2548 for ; Wed, 29 Jun 2011 18:34:12 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id VDPurO6rC4G51C07 for ; Wed, 29 Jun 2011 18:34:12 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAF7PC055LCkB/2dsb2JhbABSp1x4yiAOhiIEmiSILg Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail06.adl2.internode.on.net with ESMTP; 30 Jun 2011 11:04:11 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1Qc68w-0002YL-8X; Thu, 30 Jun 2011 11:34:10 +1000 Date: Thu, 30 Jun 2011 11:34:10 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 01/27] xfs: PF_FSTRANS should never be set in ->writepage Subject: Re: [PATCH 01/27] xfs: PF_FSTRANS should never be set in ->writepage Message-ID: <20110630013410.GW561@dastard> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140336.532726362@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110629140336.532726362@bombadil.infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1309397653 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0087 1.0000 -1.9645 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.96 X-Barracuda-Spam-Status: No, SCORE=-1.96 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67517 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, Jun 29, 2011 at 10:01:10AM -0400, Christoph Hellwig wrote: > Now that we reject direct reclaim in addition to always using GFP_NOFS > allocation there's no chance we'll ever end up in ->writepage with > PF_FSTRANS set. Add a WARN_ON if we hit this case, and stop checking > if we'd actually need to start a transaction. > > Signed-off-by: Christoph Hellwig > Reviewed-by: Alex Elder Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Jun 29 21:00:19 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_36 autolearn=no version=3.4.0-r929098 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 p5U20Jjr164889 for ; Wed, 29 Jun 2011 21:00:19 -0500 X-ASG-Debug-ID: 1309399217-4d8500a50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A74854C25CF for ; Wed, 29 Jun 2011 19:00:17 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id cUyqOikSE5xpjGEz for ; Wed, 29 Jun 2011 19:00:17 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EALXWC055LCkB/2dsb2JhbABSp1h4iHjBPA6GIgSaMYgv Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail06.adl2.internode.on.net with ESMTP; 30 Jun 2011 11:30:16 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1Qc6Y9-0002b7-GS; Thu, 30 Jun 2011 12:00:13 +1000 Date: Thu, 30 Jun 2011 12:00:13 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 03/27] xfs: use write_cache_pages for writeback clustering Subject: Re: [PATCH 03/27] xfs: use write_cache_pages for writeback clustering Message-ID: <20110630020013.GX561@dastard> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140336.950805096@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110629140336.950805096@bombadil.infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1309399218 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0205 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67519 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, Jun 29, 2011 at 10:01:12AM -0400, Christoph Hellwig wrote: > Instead of implementing our own writeback clustering use write_cache_pages > to do it for us. This means the guts of the current writepage implementation > become a new helper used both for implementing ->writepage and as a callback > to write_cache_pages for ->writepages. A new struct xfs_writeback_ctx > is used to track block mapping state and the ioend chain over multiple > invocation of it. > > The advantage over the old code is that we avoid a double pagevec lookup, > and a more efficient handling of extent boundaries inside a page for > small blocksize filesystems, as well as having less XFS specific code. Yes, it should be, but I can't actually measure any noticable CPU usage difference @800MB/s writeback. The profiles change shape around the changed code, but overall cpu usage does not change. I think this is because the second pagevec lookup is pretty much free because the radix tree is already hot in cache when we do the second lookup... > The downside is that we don't do writeback clustering when called from > kswapd anyore, but that is a case that should be avoided anyway. Note > that we still convert the whole delalloc range from ->writepage, so > the on-disk allocation pattern is not affected. All the more reason to ensure the mm subsystem doesn't do this.... ..... > error: > - if (iohead) > - xfs_cancel_ioend(iohead); > - > - if (err == -EAGAIN) > - goto redirty; > - Should this EAGAIN handling be dealt with in the removing-the-non- blocking-mode patch? > +STATIC int > xfs_vm_writepages( > struct address_space *mapping, > struct writeback_control *wbc) > { > + struct xfs_writeback_ctx ctx = { }; > + int ret; > + > xfs_iflags_clear(XFS_I(mapping->host), XFS_ITRUNCATED); > - return generic_writepages(mapping, wbc); > + > + ret = write_cache_pages(mapping, wbc, __xfs_vm_writepage, &ctx); > + > + if (ctx.iohead) { > + if (ret) > + xfs_cancel_ioend(ctx.iohead); > + else > + xfs_submit_ioend(wbc, ctx.iohead); > + } I think this error handling does not work. If we have put pages into the ioend (i.e. successful ->writepage calls) and then have a ->writepage call fail, we'll get all the pages under writeback (i.e. those on the ioend) remain in that state, and not ever get written back (so move into the clean state) or redirtied (so written again later) xfs_cancel_ioend() was only ever called for the first page sent down to ->writepage, and on error that page was redirtied separately. Hence it doesn't handle this case at all as it never occurs in the existing code. I'd suggest that regardless of whether an error is returned here, the existence of ctx.iohead indicates a valid ioend that needs to be submitted.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Jun 29 21:00:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U20m1g164914 for ; Wed, 29 Jun 2011 21:00:48 -0500 X-ASG-Debug-ID: 1309399246-48aa00f20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C734C4C25D1 for ; Wed, 29 Jun 2011 19:00:46 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id c2s6DdDU8NDqGVaV for ; Wed, 29 Jun 2011 19:00:46 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EALXWC055LCkB/2dsb2JhbABSp1h4yjQOhiIEmjGILw Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail06.adl2.internode.on.net with ESMTP; 30 Jun 2011 11:30:46 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1Qc6Yf-0002bE-3J; Thu, 30 Jun 2011 12:00:45 +1000 Date: Thu, 30 Jun 2011 12:00:45 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 04/27] xfs: cleanup xfs_add_to_ioend Subject: Re: [PATCH 04/27] xfs: cleanup xfs_add_to_ioend Message-ID: <20110630020045.GY561@dastard> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140337.137341800@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110629140337.137341800@bombadil.infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1309399247 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0271 1.0000 -1.8456 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= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67519 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, Jun 29, 2011 at 10:01:13AM -0400, Christoph Hellwig wrote: > Pass the writeback context to xfs_add_to_ioend to make the ioend > chain manipulations self-contained in this function. > > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Jun 29 21:10:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U2AqoR165221 for ; Wed, 29 Jun 2011 21:10:52 -0500 X-ASG-Debug-ID: 1309399850-48b901200000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CD8004C2798 for ; Wed, 29 Jun 2011 19:10:50 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id cbk41KGFwfcETc3M for ; Wed, 29 Jun 2011 19:10:50 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAAPaC055LCkB/2dsb2JhbABSp1h4yicOhiIEmjGILw Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail06.adl2.internode.on.net with ESMTP; 30 Jun 2011 11:40:49 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1Qc6i9-0002c6-3J; Thu, 30 Jun 2011 12:10:33 +1000 Date: Thu, 30 Jun 2011 12:10:33 +1000 From: Dave Chinner To: Alex Elder Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 07/27] xfs: always log timestamp updates in xfs_setattr_size Subject: Re: [PATCH 07/27] xfs: always log timestamp updates in xfs_setattr_size Message-ID: <20110630021033.GZ561@dastard> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140337.876449102@bombadil.infradead.org> <1309385603.8649.37.camel@doink> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1309385603.8649.37.camel@doink> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1309399851 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67519 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, Jun 29, 2011 at 05:13:23PM -0500, Alex Elder wrote: > On Wed, 2011-06-29 at 10:01 -0400, Christoph Hellwig wrote: > > plain text document attachment (xfs-simplify-setattr) > > Get rid of the special case where we use unlogged timestamp updates for > > a truncate to the current inode size, and just call xfs_setattr_nonsize > > for it to treat it like a utimes calls. > > I'm probably just missing something, but I have a > question below. If it does in fact call out a > problem, it will be easily fixed. > > Reviewed-by: Alex Elder > > > Signed-off-by: Christoph Hellwig > > Reviewed-by: Dave Chinner > > > > Index: xfs/fs/xfs/linux-2.6/xfs_iops.c > > =================================================================== > > --- xfs.orig/fs/xfs/linux-2.6/xfs_iops.c 2011-06-21 11:12:11.008794493 +0200 > > +++ xfs/fs/xfs/linux-2.6/xfs_iops.c 2011-06-21 11:12:22.398793917 +0200 > > @@ -773,14 +773,16 @@ xfs_setattr_size( > > */ > > if (iattr->ia_size == 0 && > > ip->i_size == 0 && ip->i_d.di_nextents == 0) { > > - xfs_iunlock(ip, XFS_ILOCK_EXCL); > > - lock_flags &= ~XFS_ILOCK_EXCL; > > - if (mask & ATTR_CTIME) { > > - inode->i_mtime = inode->i_ctime = > > - current_fs_time(inode->i_sb); > > - xfs_mark_inode_dirty_sync(ip); > > - } > > - goto out_unlock; > > + if (!(mask & ATTR_CTIME)) > > + goto out_unlock; > > + > > + /* > > + * Use the regular setattr path to update the timestamps. > > + */ > > + xfs_iunlock(ip, lock_flags); > > + iattr->ia_valid &= ~ATTR_SIZE; > > + iattr->ia_valid |= ATTR_MTIME; > > How/where does iattr->ia_mtime get initialized to the current > value (I believe it would just match iattr->ia_ctime)? notify_change() always sets both the ia_ctime and ia_mtime to the current time unless the caller has specified ATTR_MTIME_SET, in which case they've set a specific ia_mtime themselves. IOWs, I'm pretty sure we can rely on both ia_mtime and ia_ctime being correct through the ATTR_SIZE truncate path without having to touch it here... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Jun 29 21:12:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U2C3Na165278 for ; Wed, 29 Jun 2011 21:12:03 -0500 X-ASG-Debug-ID: 1309399921-48b9012f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D3B1C4C280D for ; Wed, 29 Jun 2011 19:12:01 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 1HAknkIPsdBdFZiC for ; Wed, 29 Jun 2011 19:12:01 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAAPaC055LCkB/2dsb2JhbABSp1h4yicOhiIEmjGILw Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail06.adl2.internode.on.net with ESMTP; 30 Jun 2011 11:42:01 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1Qc6jX-0002cZ-Ox; Thu, 30 Jun 2011 12:11:59 +1000 Date: Thu, 30 Jun 2011 12:11:59 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 06/27] xfs: split xfs_setattr Subject: Re: [PATCH 06/27] xfs: split xfs_setattr Message-ID: <20110630021159.GA561@dastard> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140337.641422449@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110629140337.641422449@bombadil.infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1309399922 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.2.67519 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, Jun 29, 2011 at 10:01:15AM -0400, Christoph Hellwig wrote: > Split up xfs_setattr into two functions, one for the complex truncate > handling, and one for the trivial attribute updates. Also move both > new routines to xfs_iops.c as they are fairly Linux-specific. > > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Jun 29 21:44:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U2iXFC166289 for ; Wed, 29 Jun 2011 21:44:33 -0500 X-ASG-Debug-ID: 1309401870-4d8502230000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AC7984C2739 for ; Wed, 29 Jun 2011 19:44:31 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id DzID4BUJoQLpaL2e for ; Wed, 29 Jun 2011 19:44:31 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAPzgC055LCkB/2dsb2JhbABSp1h4yiMOhiIEmjGILw Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail06.adl2.internode.on.net with ESMTP; 30 Jun 2011 12:14:30 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1Qc7Ey-0002fU-NS; Thu, 30 Jun 2011 12:44:28 +1000 Date: Thu, 30 Jun 2011 12:44:28 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 09/27] xfs: split xfs_itruncate_finish Subject: Re: [PATCH 09/27] xfs: split xfs_itruncate_finish Message-ID: <20110630024428.GB561@dastard> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140338.286808024@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110629140338.286808024@bombadil.infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1309401872 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67521 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, Jun 29, 2011 at 10:01:18AM -0400, Christoph Hellwig wrote: > Split the guts of xfs_itruncate_finish that loop over the existing extents > and calls xfs_bunmapi on them into a new helper, xfs_itruncate_externs. > Make xfs_attr_inactive call it directly instead of xfs_itruncate_finish, > which allows to simplify the latter a lot, by only letting it deal with > the data fork. As a result xfs_itruncate_finish is renamed to > xfs_itruncate_data to make its use case more obvious. > > Also remove the sync parameter from xfs_itruncate_data, which has been > unessecary since the introduction of the busy extent list in 2002, and > completely dead code since 2003 when the XFS_BMAPI_ASYNC parameter was > made a no-op. > > I can't actually see why the xfs_attr_inactive needs to set the transaction > sync, but let's keep this patch simple and without changes in behaviour. > > Signed-off-by: Christoph Hellwig Overall, looks good. A few minor comments in line, but consider it Reviewed-by: Dave Chinner > + struct xfs_mount *mp = ip->i_mount; > + struct xfs_trans *ntp = *tpp; > + xfs_bmap_free_t free_list; > + xfs_fsblock_t first_block; > + xfs_fileoff_t first_unmap_block; > + xfs_fileoff_t last_block; > + xfs_filblks_t unmap_len; > + int committed; > + int error = 0; > + int done = 0; > > ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_IOLOCK_EXCL)); > - ASSERT((new_size == 0) || (new_size <= ip->i_size)); > - ASSERT(*tp != NULL); > - ASSERT((*tp)->t_flags & XFS_TRANS_PERM_LOG_RES); > - ASSERT(ip->i_transp == *tp); > + ASSERT(new_size == 0 || new_size <= ip->i_size); If new_size == 0, then it will always be <= ip->i_size, so that's kind of a redundant check. I think this really should be two different asserts, one that validates the data fork new_size range, and one that validates the attr fork truncate to zero length only condition: ASSERT(new_size <= ip->i_size); ASSERT(whichfork != XFS_ATTR_FORK || new_size == 0); > @@ -1464,15 +1311,16 @@ xfs_itruncate_finish( > } > > ntp = xfs_trans_dup(ntp); > - error = xfs_trans_commit(*tp, 0); > - *tp = ntp; > + error = xfs_trans_commit(*tpp, 0); > + *tpp = ntp; I've always found this a mess to follow which transaction is which because of the rewriting of ntp. This is easier to follow: ntp = xfs_trans_dup(*tpp); error = xfs_trans_commit(*tpp, 0); *tpp = ntp; Now it's clear that we are duplicating *tpp, then committing it, and then setting it to the duplicated transaction. Now I don't have to go look at all the surrounding code to remind myself what ntp contains to validate that the fragment of code is doing the right thing..... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Jun 29 21:48:51 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_36 autolearn=no version=3.4.0-r929098 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 p5U2moQV166420 for ; Wed, 29 Jun 2011 21:48:51 -0500 X-ASG-Debug-ID: 1309402127-4d8402420000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E21114C28F9 for ; Wed, 29 Jun 2011 19:48:48 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id R32sbtFhFuXYjctG for ; Wed, 29 Jun 2011 19:48:48 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAPzgC055LCkB/2dsb2JhbABSp1h4yiMOhiIEmjGILw Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail06.adl2.internode.on.net with ESMTP; 30 Jun 2011 12:18:46 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1Qc7J7-0002ft-TV; Thu, 30 Jun 2011 12:48:45 +1000 Date: Thu, 30 Jun 2011 12:48:45 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 03/27] xfs: use write_cache_pages for writeback clustering Subject: Re: [PATCH 03/27] xfs: use write_cache_pages for writeback clustering Message-ID: <20110630024845.GC561@dastard> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140336.950805096@bombadil.infradead.org> <20110630020013.GX561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110630020013.GX561@dastard> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1309402129 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67521 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, Jun 30, 2011 at 12:00:13PM +1000, Dave Chinner wrote: > On Wed, Jun 29, 2011 at 10:01:12AM -0400, Christoph Hellwig wrote: > > Instead of implementing our own writeback clustering use write_cache_pages > > to do it for us. This means the guts of the current writepage implementation > > become a new helper used both for implementing ->writepage and as a callback > > to write_cache_pages for ->writepages. A new struct xfs_writeback_ctx > > is used to track block mapping state and the ioend chain over multiple > > invocation of it. > > > > The advantage over the old code is that we avoid a double pagevec lookup, > > and a more efficient handling of extent boundaries inside a page for > > small blocksize filesystems, as well as having less XFS specific code. > > Yes, it should be, but I can't actually measure any noticable CPU > usage difference @800MB/s writeback. The profiles change shape > around the changed code, but overall cpu usage does not change. I > think this is because the second pagevec lookup is pretty much free > because the radix tree is already hot in cache when we do the second > lookup... > > > The downside is that we don't do writeback clustering when called from > > kswapd anyore, but that is a case that should be avoided anyway. Note > > that we still convert the whole delalloc range from ->writepage, so > > the on-disk allocation pattern is not affected. > > All the more reason to ensure the mm subsystem doesn't do this.... > > ..... > > error: > > - if (iohead) > > - xfs_cancel_ioend(iohead); > > - > > - if (err == -EAGAIN) > > - goto redirty; > > - > > Should this EAGAIN handling be dealt with in the removing-the-non- > blocking-mode patch? > > > +STATIC int > > xfs_vm_writepages( > > struct address_space *mapping, > > struct writeback_control *wbc) > > { > > + struct xfs_writeback_ctx ctx = { }; > > + int ret; > > + > > xfs_iflags_clear(XFS_I(mapping->host), XFS_ITRUNCATED); > > - return generic_writepages(mapping, wbc); > > + > > + ret = write_cache_pages(mapping, wbc, __xfs_vm_writepage, &ctx); > > + > > + if (ctx.iohead) { > > + if (ret) > > + xfs_cancel_ioend(ctx.iohead); > > + else > > + xfs_submit_ioend(wbc, ctx.iohead); > > + } > > I think this error handling does not work. If we have put pages into > the ioend (i.e. successful ->writepage calls) and then have a > ->writepage call fail, we'll get all the pages under writeback (i.e. > those on the ioend) remain in that state, and not ever get written > back (so move into the clean state) or redirtied (so written again > later) > > xfs_cancel_ioend() was only ever called for the first page sent down > to ->writepage, and on error that page was redirtied separately. > Hence it doesn't handle this case at all as it never occurs in the > existing code. > > I'd suggest that regardless of whether an error is returned here, > the existence of ctx.iohead indicates a valid ioend that needs to be > submitted.... I think i just tripped this. I'm running a 1k block size filesystem, and test 224 has hung with waiting on IO completion after .writepage errors: [ 2850.300979] XFS (vdb): Mounting Filesystem [ 2850.310069] XFS (vdb): Ending clean mount [ 2867.246341] Filesystem "vdb": reserve blocks depleted! Consider increasing reserve pool size. [ 2867.247652] XFS (vdb): page discard on page ffffea0000257b40, inode 0x1c6, offset 1187840. [ 2867.254135] XFS (vdb): page discard on page ffffea0000025f40, inode 0x423, offset 1839104. [ 2867.256289] XFS (vdb): page discard on page ffffea0000a21aa0, inode 0x34e, offset 28672. [ 2867.258845] XFS (vdb): page discard on page ffffea00001830d0, inode 0xe5, offset 3637248. [ 2867.260637] XFS (vdb): page discard on page ffffea0000776af8, inode 0x132, offset 6283264. [ 2867.269380] XFS (vdb): page discard on page ffffea00009d5d38, inode 0xf1, offset 5632000. [ 2867.277851] XFS (vdb): page discard on page ffffea0000017e60, inode 0x27a, offset 32768. [ 2867.281165] XFS (vdb): page discard on page ffffea0000258278, inode 0x274, offset 32768. [ 2867.282802] XFS (vdb): page discard on page ffffea00009a3c60, inode 0x48a, offset 32768. [ 2867.284166] XFS (vdb): page discard on page ffffea0000cc7808, inode 0x42e, offset 32768. [ 2867.287138] XFS (vdb): page discard on page ffffea00004d4440, inode 0x4e0, offset 32768. [ 2867.288500] XFS (vdb): page discard on page ffffea0000b34978, inode 0x4cd, offset 32768. [ 2867.289381] XFS (vdb): page discard on page ffffea00003f40f8, inode 0x4c4, offset 155648. [ 2867.291536] XFS (vdb): page discard on page ffffea0000023578, inode 0x4c7, offset 32768. [ 2867.300880] XFS (vdb): page discard on page ffffea00005276e8, inode 0x4cc, offset 32768. [ 2867.318819] XFS (vdb): page discard on page ffffea0000777230, inode 0x449, offset 8581120. [ 4701.141666] SysRq : Show Blocked State [ 4701.142093] task PC stack pid father [ 4701.142707] dd D ffff8800076edbe8 0 14211 8946 0x00000000 [ 4701.143509] ffff88002b03fa58 0000000000000086 ffffea00002db598 ffffea0000000000 [ 4701.144009] ffff88002b03f9d8 ffffffff81113a35 ffff8800076ed860 0000000000010f80 [ 4701.144009] ffff88002b03ffd8 ffff88002b03e010 ffff88002b03ffd8 0000000000010f80 [ 4701.144009] Call Trace: [ 4701.144009] [] ? __free_pages+0x35/0x40 [ 4701.144009] [] ? default_spin_lock_flags+0x9/0x10 [ 4701.144009] [] ? __lock_page+0x70/0x70 [ 4701.144009] [] io_schedule+0x60/0x80 [ 4701.144009] [] sleep_on_page+0xe/0x20 [ 4701.144009] [] __wait_on_bit+0x5f/0x90 [ 4701.144009] [] wait_on_page_bit+0x73/0x80 [ 4701.144009] [] ? autoremove_wake_function+0x40/0x40 [ 4701.144009] [] ? pagevec_lookup_tag+0x25/0x40 [ 4701.144009] [] filemap_fdatawait_range+0x112/0x1a0 [ 4701.144009] [] xfs_wait_on_pages+0x59/0x80 [ 4701.144009] [] xfs_flush_pages+0x8d/0xb0 [ 4701.144009] [] xfs_file_buffered_aio_write+0x104/0x190 [ 4701.144009] [] ? do_page_fault+0x1e8/0x450 [ 4701.144009] [] xfs_file_aio_write+0x1bf/0x300 [ 4701.144009] [] ? path_openat+0x104/0x3f0 [ 4701.144009] [] do_sync_write+0xda/0x120 [ 4701.144009] [] ? security_file_permission+0x23/0x90 [ 4701.144009] [] vfs_write+0xc8/0x180 [ 4701.144009] [] sys_write+0x51/0x90 [ 4701.144009] [] system_call_fastpath+0x16/0x1b Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Jun 29 21:52:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 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 p5U2qglf166650 for ; Wed, 29 Jun 2011 21:52:42 -0500 X-ASG-Debug-ID: 1309402360-75ee01b50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 30BA0178295D for ; Wed, 29 Jun 2011 19:52:41 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id x58s70uLgeLvs9dh for ; Wed, 29 Jun 2011 19:52:41 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAHDkC055LCkB/2dsb2JhbABSp1h4yXUOhiIEomA Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail06.adl2.internode.on.net with ESMTP; 30 Jun 2011 12:22:12 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1Qc7MR-0002g5-Px; Thu, 30 Jun 2011 12:52:11 +1000 Date: Thu, 30 Jun 2011 12:52:11 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 10/27] xfs: improve sync behaviour in the fact of aggressive dirtying Subject: Re: [PATCH 10/27] xfs: improve sync behaviour in the fact of aggressive dirtying Message-ID: <20110630025211.GD561@dastard> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140338.467151398@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110629140338.467151398@bombadil.infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1309402362 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67523 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, Jun 29, 2011 at 10:01:19AM -0400, Christoph Hellwig wrote: > The following script from Wu Fengguang shows very bad behaviour in XFS > when aggressively dirtying data during a sync on XFS, with sync times > up to almost 10 times as long as ext4. > > A large part of the issue is that XFS writes data out itself two times > in the ->sync_fs method, overriding the lifelock protection in the core > writeback code, and another issue is the lock-less xfs_ioend_wait call, > which doesn't prevent new ioend from beeing queue up while waiting for > the count to reach zero. > > This patch removes the XFS-internal sync calls and relies on the VFS > to do it's work just like all other filesystems do. Note that the > i_iocount wait which is rather suboptimal is simply removed here. > We already do it in ->write_inode, which keeps the current supoptimal > behaviour. We'll eventually need to remove that as well, but that's > material for a separate commit. > > ------------------------------ snip ------------------------------ > #!/bin/sh > > umount /dev/sda7 > mkfs.xfs -f /dev/sda7 > # mkfs.ext4 /dev/sda7 > # mkfs.btrfs /dev/sda7 > mount /dev/sda7 /fs > > echo $((50<<20)) > /proc/sys/vm/dirty_bytes > > pid= > for i in `seq 10` > do > dd if=/dev/zero of=/fs/zero-$i bs=1M count=1000 & > pid="$pid $!" > done > > sleep 1 > > tic=$(date +'%s') > sync > tac=$(date +'%s') > > echo > echo sync time: $((tac-tic)) > egrep '(Dirty|Writeback|NFS_Unstable)' /proc/meminfo > > pidof dd > /dev/null && { kill -9 $pid; echo sync NOT livelocked; } > ------------------------------ snip ------------------------------ > > Reported-by: Wu Fengguang > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Jun 29 21:59:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U2xNCr166835 for ; Wed, 29 Jun 2011 21:59:23 -0500 X-ASG-Debug-ID: 1309402760-75f201df0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4FF221782992 for ; Wed, 29 Jun 2011 19:59:21 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id CEzooPXYc2yOYAyb for ; Wed, 29 Jun 2011 19:59:21 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAHDkC055LCkB/2dsb2JhbABSp1h4iHjAfQ6GIgSaMYgv Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail06.adl2.internode.on.net with ESMTP; 30 Jun 2011 12:29:20 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1Qc7TK-0002gr-TH; Thu, 30 Jun 2011 12:59:18 +1000 Date: Thu, 30 Jun 2011 12:59:18 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 11/27] xfs: fix filesystsem freeze race in xfs_trans_alloc Subject: Re: [PATCH 11/27] xfs: fix filesystsem freeze race in xfs_trans_alloc Message-ID: <20110630025918.GE561@dastard> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140338.719775353@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110629140338.719775353@bombadil.infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1309402762 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0664 1.0000 -1.5975 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.60 X-Barracuda-Spam-Status: No, SCORE=-1.60 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67523 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, Jun 29, 2011 at 10:01:20AM -0400, Christoph Hellwig wrote: > As pointed out by Jan xfs_trans_alloc can race with a concurrent filesystem > free when it sleeps during the memory allocation. Fix this by moving the freeze > wait_for_freeze call after the memory allocation. This means moving the > freeze into the low-level _xfs_trans_alloc helper, which thus grows a new > argument. Also fix up some comments in that area while at it. > > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner > /* > - * xfs_log_sbcount > - * > * Called either periodically to keep the on disk superblock values > * roughly up to date or from unmount to make sure the values are > * correct on a clean unmount. > - * > - * Note this code can be called during the process of freezing, so > - * we may need to use the transaction allocator which does not not > - * block when the transaction subsystem is in its frozen state. > */ I't s not called periodically any more from xfssyncd. Hmmm, that was removed because it was preventing the filesystem from idling, but we really should be doing this every so often when the filesystem is dirty. I'll have a think about that.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Jun 29 22:00:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U30dG3166897 for ; Wed, 29 Jun 2011 22:00:40 -0500 X-ASG-Debug-ID: 1309402837-5085025c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 16D8A4C2764 for ; Wed, 29 Jun 2011 20:00:38 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 8yLt4HtpySA5PTBI for ; Wed, 29 Jun 2011 20:00:38 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAHDkC055LCkB/2dsb2JhbABSp1h4yXUOhiIEmjGILw Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail06.adl2.internode.on.net with ESMTP; 30 Jun 2011 12:30:36 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1Qc7UZ-0002hM-Q4; Thu, 30 Jun 2011 13:00:35 +1000 Date: Thu, 30 Jun 2011 13:00:35 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 12/27] xfs: remove i_transp Subject: Re: [PATCH 12/27] xfs: remove i_transp Message-ID: <20110630030035.GF561@dastard> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140338.898243621@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110629140338.898243621@bombadil.infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1309402839 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67523 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, Jun 29, 2011 at 10:01:21AM -0400, Christoph Hellwig wrote: > Remove the transaction pointer in the inode. It's only used to avoid > passing down an argument in the bmap code, and for a few asserts in > the transaction code right now. > > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From achender@linux.vnet.ibm.com Thu Jun 30 00:21:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p5U5Lgac183968 for ; Thu, 30 Jun 2011 00:21:42 -0500 X-ASG-Debug-ID: 1309411301-257e02cd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e2.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F352040E92 for ; Wed, 29 Jun 2011 22:21:41 -0700 (PDT) Received: from e2.ny.us.ibm.com (e2.ny.us.ibm.com [32.97.182.142]) by cuda.sgi.com with ESMTP id uLDlriGgb5dqZZKU for ; Wed, 29 Jun 2011 22:21:41 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay07.pok.ibm.com (d01relay07.pok.ibm.com [9.56.227.147]) by e2.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5U50tHg028779 for ; Thu, 30 Jun 2011 01:00:55 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay07.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5U5Le5T1785982 for ; Thu, 30 Jun 2011 01:21:40 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5U5LdGV031673 for ; Thu, 30 Jun 2011 01:21:40 -0400 Received: from elm3c80.beaverton.ibm.com (elm3c80.beaverton.ibm.com [9.47.69.80]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5U5Ldmb031644; Thu, 30 Jun 2011 01:21:39 -0400 From: Allison Henderson To: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Cc: Allison Henderson X-ASG-Orig-Subj: [PATCH 0/4 v3] XFS TESTS: Fix 252 failure Subject: [PATCH 0/4 v3] XFS TESTS: Fix 252 failure Date: Wed, 29 Jun 2011 22:23:57 -0700 Message-Id: <1309411441-2491-1-git-send-email-achender@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.1 X-Barracuda-Connect: e2.ny.us.ibm.com[32.97.182.142] X-Barracuda-Start-Time: 1309411301 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 patch corrects a 252 test failure when run on ext4. This failure occures because ext4 and xfs do not handle splitting extents in the same way, and do not create the same fiemap outout. To correct this, this patch set will make test 252 an xfs only test, and a new test 255 will be added. The new test is similar to 252, but uses a weaker fiemap filter that only shows the location of the hole, and not the extent type. An md5 check sum has also been added to the tests to help ensure the contents are correct. Also, another patch was submitted that modifies the same code in 242.out. Assuming that patch will go through, this set was modified to be applied on top of Christoph's "[PATCH] xfstests: update test 042 golden output" (06/20/2011). I noticed there are some other patches that are trying to add a test 255, so we may need another version of this set depending on which ones go in first. Allison Henderson (4): XFS TESTS: Fix 252 Failure: Make 252 xfs only with MD5 checksum XFS TESTS: Fix 252 Failure: Update 252 Golden Output XFS TESTS: Fix 252 Failure: Update 242 Golden Output XFS TESTS: Fix 252 Failure: Add Generic FS Punch Hole Test 255 242.out | 17 +++ 252 | 2 +- 252.out | 68 +++++++++++++ 255 | 67 +++++++++++++ 255.out | 307 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ common.punch | 40 ++++++++ group | 1 + 7 files changed, 501 insertions(+), 1 deletions(-) create mode 100644 255 create mode 100644 255.out From achender@linux.vnet.ibm.com Thu Jun 30 00:21:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p5U5LgIq183971 for ; Thu, 30 Jun 2011 00:21:43 -0500 X-ASG-Debug-ID: 1309411301-0673002a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e2.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 77A91E53544 for ; Wed, 29 Jun 2011 22:21:41 -0700 (PDT) Received: from e2.ny.us.ibm.com (e2.ny.us.ibm.com [32.97.182.142]) by cuda.sgi.com with ESMTP id lOro1mBpLNuK4EOB for ; Wed, 29 Jun 2011 22:21:41 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay03.pok.ibm.com (d01relay03.pok.ibm.com [9.56.227.235]) by e2.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5U50t9I028803 for ; Thu, 30 Jun 2011 01:00:55 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay03.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5U5LeB2125212 for ; Thu, 30 Jun 2011 01:21:40 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5U5LeLs031688 for ; Thu, 30 Jun 2011 01:21:40 -0400 Received: from elm3c80.beaverton.ibm.com (elm3c80.beaverton.ibm.com [9.47.69.80]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5U5Ldmc031644; Thu, 30 Jun 2011 01:21:40 -0400 From: Allison Henderson To: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Cc: Allison Henderson X-ASG-Orig-Subj: [PATCH 1/4 v3] XFS TESTS: Fix 252 Failure: Make 252 xfs only with MD5 checksum Subject: [PATCH 1/4 v3] XFS TESTS: Fix 252 Failure: Make 252 xfs only with MD5 checksum Date: Wed, 29 Jun 2011 22:23:58 -0700 Message-Id: <1309411441-2491-2-git-send-email-achender@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1309411441-2491-1-git-send-email-achender@linux.vnet.ibm.com> References: <1309411441-2491-1-git-send-email-achender@linux.vnet.ibm.com> X-Barracuda-Connect: e2.ny.us.ibm.com[32.97.182.142] X-Barracuda-Start-Time: 1309411302 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 patch modifies test 252 to run for only xfs, and also adds an md5 checksum to each of the punch hole tests Signed-off-by: Allison Henderson --- :100755 100755 5efa243... 441bed0... M 252 :100644 100644 ddf63b0... c18f88a... M common.punch 252 | 2 +- common.punch | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletions(-) diff --git a/252 b/252 index 5efa243..441bed0 100755 --- a/252 +++ b/252 @@ -44,7 +44,7 @@ trap "_cleanup ; exit \$status" 0 1 2 3 15 . ./common.punch # real QA test starts here -_supported_fs generic +_supported_fs xfs _supported_os Linux _require_xfs_io_falloc_punch diff --git a/common.punch b/common.punch index ddf63b0..c18f88a 100644 --- a/common.punch +++ b/common.punch @@ -218,6 +218,12 @@ _filter_fiemap() _coalesce_extents } +# Prints the md5 checksum of a given file +_md5_checksum() +{ + md5sum $1 | cut -d ' ' -f1 +} + _filter_bmap() { awk ' @@ -305,6 +311,7 @@ _test_generic_punch() -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + _md5_checksum $testfile echo " 2. into allocated space" if [ "$remove_testfile" ]; then @@ -315,6 +322,7 @@ _test_generic_punch() -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + _md5_checksum $testfile echo " 3. into unwritten space" if [ "$remove_testfile" ]; then @@ -325,6 +333,7 @@ _test_generic_punch() -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + _md5_checksum $testfile echo " 4. hole -> data" if [ "$remove_testfile" ]; then @@ -335,6 +344,7 @@ _test_generic_punch() -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + _md5_checksum $testfile echo " 5. hole -> unwritten" if [ "$remove_testfile" ]; then @@ -345,6 +355,7 @@ _test_generic_punch() -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + _md5_checksum $testfile echo " 6. data -> hole" if [ "$remove_testfile" ]; then @@ -355,6 +366,7 @@ _test_generic_punch() -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + _md5_checksum $testfile echo " 7. data -> unwritten" if [ "$remove_testfile" ]; then @@ -366,6 +378,7 @@ _test_generic_punch() -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + _md5_checksum $testfile echo " 8. unwritten -> hole" if [ "$remove_testfile" ]; then @@ -376,6 +389,7 @@ _test_generic_punch() -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + _md5_checksum $testfile echo " 9. unwritten -> data" if [ "$remove_testfile" ]; then @@ -387,6 +401,7 @@ _test_generic_punch() -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + _md5_checksum $testfile echo " 10. hole -> data -> hole" if [ "$remove_testfile" ]; then @@ -397,6 +412,7 @@ _test_generic_punch() -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + _md5_checksum $testfile echo " 11. data -> hole -> data" if [ "$remove_testfile" ]; then @@ -410,6 +426,7 @@ _test_generic_punch() -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + _md5_checksum $testfile echo " 12. unwritten -> data -> unwritten" if [ "$remove_testfile" ]; then @@ -421,6 +438,7 @@ _test_generic_punch() -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + _md5_checksum $testfile echo " 13. data -> unwritten -> data" if [ "$remove_testfile" ]; then @@ -433,6 +451,7 @@ _test_generic_punch() -c "$zero_cmd 4k 12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + _md5_checksum $testfile echo " 14. data -> hole @ EOF" rm -f $testfile @@ -441,6 +460,7 @@ _test_generic_punch() -c "$zero_cmd 12k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + _md5_checksum $testfile echo " 15. data -> hole @ 0" if [ "$remove_testfile" ]; then @@ -451,6 +471,7 @@ _test_generic_punch() -c "$zero_cmd 0k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + _md5_checksum $testfile echo " 16. data -> cache cold ->hole" if [ "$remove_testfile" ]; then @@ -470,6 +491,7 @@ _test_generic_punch() diff $testfile $testfile.2 [ $? -ne 0 ] && die_now rm -f $testfile.2 + _md5_checksum $testfile echo " 17. data -> hole in single block file" if [ "$remove_testfile" ]; then @@ -481,5 +503,6 @@ _test_generic_punch() -c "$zero_cmd 128 128" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now + _md5_checksum $testfile } -- 1.7.1 From achender@linux.vnet.ibm.com Thu Jun 30 00:21:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U5LgC6183970 for ; Thu, 30 Jun 2011 00:21:42 -0500 X-ASG-Debug-ID: 1309411301-268900330000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e5.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 725301E56F35 for ; Wed, 29 Jun 2011 22:21:42 -0700 (PDT) Received: from e5.ny.us.ibm.com (e5.ny.us.ibm.com [32.97.182.145]) by cuda.sgi.com with ESMTP id QLsmUeCRN6sdirzV for ; Wed, 29 Jun 2011 22:21:42 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay01.pok.ibm.com (d01relay01.pok.ibm.com [9.56.227.233]) by e5.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5U4rNDm024153 for ; Thu, 30 Jun 2011 00:53:23 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay01.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5U5Lfxk118720 for ; Thu, 30 Jun 2011 01:21:41 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5U5LfAI031707 for ; Thu, 30 Jun 2011 01:21:41 -0400 Received: from elm3c80.beaverton.ibm.com (elm3c80.beaverton.ibm.com [9.47.69.80]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5U5Ldmd031644; Thu, 30 Jun 2011 01:21:40 -0400 From: Allison Henderson To: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Cc: Allison Henderson X-ASG-Orig-Subj: [PATCH 2/4 v3] XFS TESTS: Fix 252 Failure: Update 252 Golden Output Subject: [PATCH 2/4 v3] XFS TESTS: Fix 252 Failure: Update 252 Golden Output Date: Wed, 29 Jun 2011 22:23:59 -0700 Message-Id: <1309411441-2491-3-git-send-email-achender@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1309411441-2491-1-git-send-email-achender@linux.vnet.ibm.com> References: <1309411441-2491-1-git-send-email-achender@linux.vnet.ibm.com> X-Barracuda-Connect: e5.ny.us.ibm.com[32.97.182.145] X-Barracuda-Start-Time: 1309411302 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 New filtered golden output for test 252 Signed-off-by: Allison Henderson --- :100644 100644 930c924... 3caf9d6... M 252.out 252.out | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 68 insertions(+), 0 deletions(-) diff --git a/252.out b/252.out index 930c924..3caf9d6 100644 --- a/252.out +++ b/252.out @@ -1,239 +1,307 @@ QA output created by 252 1. into a hole +daa100df6e6711906b61c9ab5aa16032 2. into allocated space 0: [0..7]: data 1: [8..23]: hole 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 3. into unwritten space 0: [0..7]: unwritten 1: [8..23]: hole 2: [24..39]: unwritten +daa100df6e6711906b61c9ab5aa16032 4. hole -> data 0: [0..23]: hole 1: [24..31]: data 2: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac 5. hole -> unwritten 0: [0..23]: hole 1: [24..31]: unwritten 2: [32..39]: hole +daa100df6e6711906b61c9ab5aa16032 6. data -> hole 0: [0..7]: data 1: [8..39]: hole +1b3779878366498b28c702ef88c4a773 7. data -> unwritten 0: [0..7]: data 1: [8..23]: hole 2: [24..31]: unwritten 3: [32..39]: hole +1b3779878366498b28c702ef88c4a773 8. unwritten -> hole 0: [0..7]: unwritten 1: [8..39]: hole +daa100df6e6711906b61c9ab5aa16032 9. unwritten -> data 0: [0..7]: unwritten 1: [8..23]: hole 2: [24..31]: data 3: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac 10. hole -> data -> hole +daa100df6e6711906b61c9ab5aa16032 11. data -> hole -> data 0: [0..7]: data 1: [8..31]: hole 2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 12. unwritten -> data -> unwritten 0: [0..7]: unwritten 1: [8..31]: hole 2: [32..39]: unwritten +daa100df6e6711906b61c9ab5aa16032 13. data -> unwritten -> data 0: [0..7]: data 1: [8..31]: hole 2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 14. data -> hole @ EOF 0: [0..23]: data 1: [24..39]: hole +e1f024eedd27ea6b1c3e9b841c850404 15. data -> hole @ 0 0: [0..15]: hole 1: [16..39]: data +eecb7aa303d121835de05028751d301c 16. data -> cache cold ->hole 0: [0..15]: hole 1: [16..39]: data +eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: data +13535fd4d496bf0b74bb2335aa4d1b31 1. into a hole +daa100df6e6711906b61c9ab5aa16032 2. into allocated space 0: [0..7]: data 1: [8..23]: hole 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 3. into unwritten space 0: [0..7]: unwritten 1: [8..23]: hole 2: [24..39]: unwritten +daa100df6e6711906b61c9ab5aa16032 4. hole -> data 0: [0..23]: hole 1: [24..31]: data 2: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac 5. hole -> unwritten 0: [0..23]: hole 1: [24..31]: unwritten 2: [32..39]: hole +daa100df6e6711906b61c9ab5aa16032 6. data -> hole 0: [0..7]: data 1: [8..39]: hole +1b3779878366498b28c702ef88c4a773 7. data -> unwritten 0: [0..7]: data 1: [8..23]: hole 2: [24..31]: unwritten 3: [32..39]: hole +1b3779878366498b28c702ef88c4a773 8. unwritten -> hole 0: [0..7]: unwritten 1: [8..39]: hole +daa100df6e6711906b61c9ab5aa16032 9. unwritten -> data 0: [0..7]: unwritten 1: [8..23]: hole 2: [24..31]: data 3: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac 10. hole -> data -> hole +daa100df6e6711906b61c9ab5aa16032 11. data -> hole -> data 0: [0..7]: data 1: [8..31]: hole 2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 12. unwritten -> data -> unwritten 0: [0..7]: unwritten 1: [8..31]: hole 2: [32..39]: unwritten +daa100df6e6711906b61c9ab5aa16032 13. data -> unwritten -> data 0: [0..7]: data 1: [8..31]: hole 2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 14. data -> hole @ EOF 0: [0..23]: data 1: [24..39]: hole +e1f024eedd27ea6b1c3e9b841c850404 15. data -> hole @ 0 0: [0..15]: hole 1: [16..39]: data +eecb7aa303d121835de05028751d301c 16. data -> cache cold ->hole 0: [0..15]: hole 1: [16..39]: data +eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: data +13535fd4d496bf0b74bb2335aa4d1b31 1. into a hole 0: [0..7]: data 1: [8..39]: hole +5a58e46082be047d0f13bee7974015b9 2. into allocated space 0: [0..7]: data 1: [8..23]: hole 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 3. into unwritten space 0: [0..7]: data 1: [8..23]: hole 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 4. hole -> data 0: [0..7]: data 1: [8..23]: hole 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 5. hole -> unwritten 0: [0..7]: data 1: [8..23]: hole 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 6. data -> hole 0: [0..7]: data 1: [8..23]: hole 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 7. data -> unwritten 0: [0..7]: data 1: [8..23]: hole 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 8. unwritten -> hole 0: [0..7]: data 1: [8..23]: hole 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 9. unwritten -> data 0: [0..7]: data 1: [8..23]: hole 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 10. hole -> data -> hole 0: [0..7]: data 1: [8..31]: hole 2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 11. data -> hole -> data 0: [0..7]: data 1: [8..31]: hole 2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 12. unwritten -> data -> unwritten 0: [0..7]: data 1: [8..31]: hole 2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 13. data -> unwritten -> data 0: [0..7]: data 1: [8..31]: hole 2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 14. data -> hole @ EOF 0: [0..23]: data 1: [24..39]: hole +e1f024eedd27ea6b1c3e9b841c850404 15. data -> hole @ 0 0: [0..15]: hole 1: [16..39]: data +eecb7aa303d121835de05028751d301c 16. data -> cache cold ->hole 0: [0..15]: hole 1: [16..39]: data +eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: data +13535fd4d496bf0b74bb2335aa4d1b31 1. into a hole 0: [0..7]: data 1: [8..39]: hole +5a58e46082be047d0f13bee7974015b9 2. into allocated space 0: [0..7]: data 1: [8..23]: hole 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 3. into unwritten space 0: [0..7]: data 1: [8..23]: hole 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 4. hole -> data 0: [0..7]: data 1: [8..23]: hole 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 5. hole -> unwritten 0: [0..7]: data 1: [8..23]: hole 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 6. data -> hole 0: [0..7]: data 1: [8..23]: hole 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 7. data -> unwritten 0: [0..7]: data 1: [8..23]: hole 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 8. unwritten -> hole 0: [0..7]: data 1: [8..23]: hole 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 9. unwritten -> data 0: [0..7]: data 1: [8..23]: hole 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 10. hole -> data -> hole 0: [0..7]: data 1: [8..31]: hole 2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 11. data -> hole -> data 0: [0..7]: data 1: [8..31]: hole 2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 12. unwritten -> data -> unwritten 0: [0..7]: data 1: [8..31]: hole 2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 13. data -> unwritten -> data 0: [0..7]: data 1: [8..31]: hole 2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 14. data -> hole @ EOF 0: [0..23]: data 1: [24..39]: hole +e1f024eedd27ea6b1c3e9b841c850404 15. data -> hole @ 0 0: [0..15]: hole 1: [16..39]: data +eecb7aa303d121835de05028751d301c 16. data -> cache cold ->hole 0: [0..15]: hole 1: [16..39]: data +eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: data +13535fd4d496bf0b74bb2335aa4d1b31 -- 1.7.1 From achender@linux.vnet.ibm.com Thu Jun 30 00:21:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 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 p5U5LiE0184000 for ; Thu, 30 Jun 2011 00:21:44 -0500 X-ASG-Debug-ID: 1309411303-2a1202630000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e3.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 51EE74C28DB for ; Wed, 29 Jun 2011 22:21:43 -0700 (PDT) Received: from e3.ny.us.ibm.com (e3.ny.us.ibm.com [32.97.182.143]) by cuda.sgi.com with ESMTP id kvHxAoFnTZ3d1EVR for ; Wed, 29 Jun 2011 22:21:43 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay06.pok.ibm.com (d01relay06.pok.ibm.com [9.56.227.116]) by e3.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5U4wjQ1012571 for ; Thu, 30 Jun 2011 00:58:45 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay06.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5U5LhB3630840 for ; Thu, 30 Jun 2011 01:21:43 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5U5LgFM032094 for ; Thu, 30 Jun 2011 01:21:43 -0400 Received: from elm3c80.beaverton.ibm.com (elm3c80.beaverton.ibm.com [9.47.69.80]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5U5Ldmf031644; Thu, 30 Jun 2011 01:21:42 -0400 From: Allison Henderson To: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Cc: Allison Henderson X-ASG-Orig-Subj: [PATCH 4/4 v3] XFS TESTS: Fix 252 Failure: Add Generic FS Punch Hole Test 255 Subject: [PATCH 4/4 v3] XFS TESTS: Fix 252 Failure: Add Generic FS Punch Hole Test 255 Date: Wed, 29 Jun 2011 22:24:01 -0700 Message-Id: <1309411441-2491-5-git-send-email-achender@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1309411441-2491-1-git-send-email-achender@linux.vnet.ibm.com> References: <1309411441-2491-1-git-send-email-achender@linux.vnet.ibm.com> X-Barracuda-Connect: e3.ny.us.ibm.com[32.97.182.143] X-Barracuda-Start-Time: 1309411304 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 patch adds a new test 255 that tests fallocate punch hole, but is for use by generic filesystems. It is similar to 252, but uses a weaker fiemap filter that only displays the location of the hole, and not the extent types. Signed-off-by: Allison Henderson --- :000000 100644 0000000... 0083963... A 255 :000000 100644 0000000... 2ce882b... A 255.out :100644 100644 c18f88a... a48b7ae... M common.punch :100644 100644 1f86075... 9558bc7... M group 255 | 67 +++++++++++++ 255.out | 307 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ common.punch | 17 +++ group | 1 + 4 files changed, 392 insertions(+), 0 deletions(-) diff --git a/255 b/255 new file mode 100644 index 0000000..0083963 --- /dev/null +++ b/255 @@ -0,0 +1,67 @@ +#! /bin/bash +# FS QA Test No. 255 +# +# Test Generic fallocate hole punching +# +#----------------------------------------------------------------------- +# Copyright (c) 2010 Red Hat. 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 +# +#----------------------------------------------------------------------- +# +# creator +owner=josef@redhat.com + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter +. ./common.punch + +# real QA test starts here +_supported_fs generic +_supported_os Linux + +_require_xfs_io_falloc_punch +_require_xfs_io_fiemap + +testfile=$TEST_DIR/255.$$ + +# Standard punch hole tests +_test_generic_punch falloc fpunch fpunch fiemap _filter_hole_fiemap $testfile -F + +# Delayed allocation punch hole tests +_test_generic_punch -d falloc fpunch fpunch fiemap _filter_hole_fiemap $testfile -F + +# Multi hole punch tests +_test_generic_punch -k falloc fpunch fpunch fiemap _filter_hole_fiemap $testfile -F + +# Delayed allocation multi punch hole tests +_test_generic_punch -d -k falloc fpunch fpunch fiemap _filter_hole_fiemap $testfile -F + +status=0 ; exit diff --git a/255.out b/255.out new file mode 100644 index 0000000..2ce882b --- /dev/null +++ b/255.out @@ -0,0 +1,307 @@ +QA output created by 255 + 1. into a hole +daa100df6e6711906b61c9ab5aa16032 + 2. into allocated space +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 3. into unwritten space +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +daa100df6e6711906b61c9ab5aa16032 + 4. hole -> data +0: [0..23]: hole +1: [24..31]: extent +2: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac + 5. hole -> unwritten +0: [0..23]: hole +1: [24..31]: extent +2: [32..39]: hole +daa100df6e6711906b61c9ab5aa16032 + 6. data -> hole +0: [0..7]: extent +1: [8..39]: hole +1b3779878366498b28c702ef88c4a773 + 7. data -> unwritten +0: [0..7]: extent +1: [8..23]: hole +2: [24..31]: extent +3: [32..39]: hole +1b3779878366498b28c702ef88c4a773 + 8. unwritten -> hole +0: [0..7]: extent +1: [8..39]: hole +daa100df6e6711906b61c9ab5aa16032 + 9. unwritten -> data +0: [0..7]: extent +1: [8..23]: hole +2: [24..31]: extent +3: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac + 10. hole -> data -> hole +daa100df6e6711906b61c9ab5aa16032 + 11. data -> hole -> data +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 12. unwritten -> data -> unwritten +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +daa100df6e6711906b61c9ab5aa16032 + 13. data -> unwritten -> data +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 14. data -> hole @ EOF +0: [0..23]: extent +1: [24..39]: hole +e1f024eedd27ea6b1c3e9b841c850404 + 15. data -> hole @ 0 +0: [0..15]: hole +1: [16..39]: extent +eecb7aa303d121835de05028751d301c + 16. data -> cache cold ->hole +0: [0..15]: hole +1: [16..39]: extent +eecb7aa303d121835de05028751d301c + 17. data -> hole in single block file +0: [0..7]: extent +13535fd4d496bf0b74bb2335aa4d1b31 + 1. into a hole +daa100df6e6711906b61c9ab5aa16032 + 2. into allocated space +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 3. into unwritten space +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +daa100df6e6711906b61c9ab5aa16032 + 4. hole -> data +0: [0..23]: hole +1: [24..31]: extent +2: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac + 5. hole -> unwritten +0: [0..23]: hole +1: [24..31]: extent +2: [32..39]: hole +daa100df6e6711906b61c9ab5aa16032 + 6. data -> hole +0: [0..7]: extent +1: [8..39]: hole +1b3779878366498b28c702ef88c4a773 + 7. data -> unwritten +0: [0..7]: extent +1: [8..23]: hole +2: [24..31]: extent +3: [32..39]: hole +1b3779878366498b28c702ef88c4a773 + 8. unwritten -> hole +0: [0..7]: extent +1: [8..39]: hole +daa100df6e6711906b61c9ab5aa16032 + 9. unwritten -> data +0: [0..7]: extent +1: [8..23]: hole +2: [24..31]: extent +3: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac + 10. hole -> data -> hole +daa100df6e6711906b61c9ab5aa16032 + 11. data -> hole -> data +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 12. unwritten -> data -> unwritten +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +daa100df6e6711906b61c9ab5aa16032 + 13. data -> unwritten -> data +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 14. data -> hole @ EOF +0: [0..23]: extent +1: [24..39]: hole +e1f024eedd27ea6b1c3e9b841c850404 + 15. data -> hole @ 0 +0: [0..15]: hole +1: [16..39]: extent +eecb7aa303d121835de05028751d301c + 16. data -> cache cold ->hole +0: [0..15]: hole +1: [16..39]: extent +eecb7aa303d121835de05028751d301c + 17. data -> hole in single block file +0: [0..7]: extent +13535fd4d496bf0b74bb2335aa4d1b31 + 1. into a hole +0: [0..7]: extent +1: [8..39]: hole +5a58e46082be047d0f13bee7974015b9 + 2. into allocated space +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 3. into unwritten space +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 4. hole -> data +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 5. hole -> unwritten +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 6. data -> hole +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 7. data -> unwritten +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 8. unwritten -> hole +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 9. unwritten -> data +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 10. hole -> data -> hole +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 11. data -> hole -> data +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 12. unwritten -> data -> unwritten +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 13. data -> unwritten -> data +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 14. data -> hole @ EOF +0: [0..23]: extent +1: [24..39]: hole +e1f024eedd27ea6b1c3e9b841c850404 + 15. data -> hole @ 0 +0: [0..15]: hole +1: [16..39]: extent +eecb7aa303d121835de05028751d301c + 16. data -> cache cold ->hole +0: [0..15]: hole +1: [16..39]: extent +eecb7aa303d121835de05028751d301c + 17. data -> hole in single block file +0: [0..7]: extent +13535fd4d496bf0b74bb2335aa4d1b31 + 1. into a hole +0: [0..7]: extent +1: [8..39]: hole +5a58e46082be047d0f13bee7974015b9 + 2. into allocated space +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 3. into unwritten space +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 4. hole -> data +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 5. hole -> unwritten +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 6. data -> hole +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 7. data -> unwritten +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 8. unwritten -> hole +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 9. unwritten -> data +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 10. hole -> data -> hole +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 11. data -> hole -> data +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 12. unwritten -> data -> unwritten +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 13. data -> unwritten -> data +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 14. data -> hole @ EOF +0: [0..23]: extent +1: [24..39]: hole +e1f024eedd27ea6b1c3e9b841c850404 + 15. data -> hole @ 0 +0: [0..15]: hole +1: [16..39]: extent +eecb7aa303d121835de05028751d301c + 16. data -> cache cold ->hole +0: [0..15]: hole +1: [16..39]: extent +eecb7aa303d121835de05028751d301c + 17. data -> hole in single block file +0: [0..7]: extent +13535fd4d496bf0b74bb2335aa4d1b31 diff --git a/common.punch b/common.punch index c18f88a..a48b7ae 100644 --- a/common.punch +++ b/common.punch @@ -218,6 +218,23 @@ _filter_fiemap() _coalesce_extents } +# Filters fiemap output to only print the +# file offset column and whether or not +# it is an extent or a hole +_filter_hole_fiemap() +{ + awk --posix ' + $3 ~ /hole/ { + print $1, $2, $3; + next; + } + $5 ~ /0x[[:digit:]]+/ { + print $1, $2, "extent"; + }' | + _coalesce_extents +} + + # Prints the md5 checksum of a given file _md5_checksum() { diff --git a/group b/group index 1f86075..9558bc7 100644 --- a/group +++ b/group @@ -368,3 +368,4 @@ deprecated 252 auto quick prealloc 253 auto quick 254 auto quick +255 auto quick prealloc -- 1.7.1 From achender@linux.vnet.ibm.com Thu Jun 30 00:21:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U5Lhbk183988 for ; Thu, 30 Jun 2011 00:21:43 -0500 X-ASG-Debug-ID: 1309411303-2a0102990000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e5.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 627664C28A6 for ; Wed, 29 Jun 2011 22:21:43 -0700 (PDT) Received: from e5.ny.us.ibm.com (e5.ny.us.ibm.com [32.97.182.145]) by cuda.sgi.com with ESMTP id DyIS0hrZcLxnIXbA for ; Wed, 29 Jun 2011 22:21:43 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from d01relay07.pok.ibm.com (d01relay07.pok.ibm.com [9.56.227.147]) by e5.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p5U4rOIT024160 for ; Thu, 30 Jun 2011 00:53:24 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay07.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5U5LgCO1585370 for ; Thu, 30 Jun 2011 01:21:42 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5U5Lg1H031731 for ; Thu, 30 Jun 2011 01:21:42 -0400 Received: from elm3c80.beaverton.ibm.com (elm3c80.beaverton.ibm.com [9.47.69.80]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5U5Ldme031644; Thu, 30 Jun 2011 01:21:41 -0400 From: Allison Henderson To: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Cc: Allison Henderson X-ASG-Orig-Subj: [PATCH 3/4 v3] XFS TESTS: Fix 252 Failure: Update 242 Golden Output Subject: [PATCH 3/4 v3] XFS TESTS: Fix 252 Failure: Update 242 Golden Output Date: Wed, 29 Jun 2011 22:24:00 -0700 Message-Id: <1309411441-2491-4-git-send-email-achender@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1309411441-2491-1-git-send-email-achender@linux.vnet.ibm.com> References: <1309411441-2491-1-git-send-email-achender@linux.vnet.ibm.com> X-Barracuda-Connect: e5.ny.us.ibm.com[32.97.182.145] X-Barracuda-Start-Time: 1309411303 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 New filtered golden output for test 242. Another patch has been sumbitted that also modifies the 242 output, and this set has been adjusted to apply on top of it. This patch requires Christoph's "[PATCH] xfstests: update test 042 golden output" (06/20/2011) Signed-off-by: Allison Henderson --- :100644 100644 e69382c... 649ac04... M 242.out 242.out | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/242.out b/242.out index e69382c..649ac04 100644 --- a/242.out +++ b/242.out @@ -3,58 +3,75 @@ QA output created by 242 0: [0..7]: hole 1: [8..23]: unwritten 2: [24..39]: hole +daa100df6e6711906b61c9ab5aa16032 2. into allocated space 0: [0..7]: data 1: [8..23]: unwritten 2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 3. into unwritten space 0: [0..39]: unwritten +daa100df6e6711906b61c9ab5aa16032 4. hole -> data 0: [0..7]: hole 1: [8..23]: unwritten 2: [24..31]: data 3: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac 5. hole -> unwritten 0: [0..7]: hole 1: [8..31]: unwritten 2: [32..39]: hole +daa100df6e6711906b61c9ab5aa16032 6. data -> hole 0: [0..7]: data 1: [8..23]: unwritten 2: [24..39]: hole +1b3779878366498b28c702ef88c4a773 7. data -> unwritten 0: [0..7]: data 1: [8..31]: unwritten 2: [32..39]: hole +1b3779878366498b28c702ef88c4a773 8. unwritten -> hole 0: [0..23]: unwritten 1: [24..39]: hole +daa100df6e6711906b61c9ab5aa16032 9. unwritten -> data 0: [0..23]: unwritten 1: [24..31]: data 2: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac 10. hole -> data -> hole 0: [0..7]: hole 1: [8..31]: unwritten 2: [32..39]: hole +daa100df6e6711906b61c9ab5aa16032 11. data -> hole -> data 0: [0..7]: data 1: [8..31]: unwritten 2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 12. unwritten -> data -> unwritten 0: [0..39]: unwritten +daa100df6e6711906b61c9ab5aa16032 13. data -> unwritten -> data 0: [0..7]: data 1: [8..31]: unwritten 2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 14. data -> hole @ EOF 0: [0..23]: data 1: [24..39]: unwritten +e1f024eedd27ea6b1c3e9b841c850404 15. data -> hole @ 0 0: [0..15]: unwritten 1: [16..39]: data +eecb7aa303d121835de05028751d301c 16. data -> cache cold ->hole 0: [0..15]: unwritten 1: [16..39]: data +eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: unwritten +56819989ef2d9f40785adce8c06b64d0 -- 1.7.1 From david@fromorbit.com Thu Jun 30 01:11:09 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00,J_CHICKENPOX_35, J_CHICKENPOX_38,J_CHICKENPOX_39,J_CHICKENPOX_65,J_CHICKENPOX_73 autolearn=no version=3.4.0-r929098 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 p5U6B8lp186126 for ; Thu, 30 Jun 2011 01:11:09 -0500 X-ASG-Debug-ID: 1309414265-6e6d03a30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B9FD91E57017 for ; Wed, 29 Jun 2011 23:11:05 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id YMMYnvCSiDpBydmc for ; Wed, 29 Jun 2011 23:11:05 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAHERDE55LCkB/2dsb2JhbABSp1h4iHjAKA6GIgSaMYgv Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail04.adl6.internode.on.net with ESMTP; 30 Jun 2011 15:41:03 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QcASs-0002zd-4l; Thu, 30 Jun 2011 16:11:02 +1000 Date: Thu, 30 Jun 2011 16:11:02 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 13/27] xfs: factor out xfs_dir2_leaf_find_entry Subject: Re: [PATCH 13/27] xfs: factor out xfs_dir2_leaf_find_entry Message-ID: <20110630061102.GG561@dastard> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140339.086201354@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110629140339.086201354@bombadil.infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1309414266 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67535 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, Jun 29, 2011 at 10:01:22AM -0400, Christoph Hellwig wrote: > Add a new xfs_dir2_leaf_find_entry helper to factor out some duplicate code > from xfs_dir2_leaf_addname xfs_dir2_leafn_add. Found by Eric Sandeen using > an automated code duplication checked. > > Signed-off-by: Christoph Hellwig Looks sane - a couple of minor whitespacy comments, otherwise: Reviewed-by: Dave Chinner > > Index: xfs/fs/xfs/xfs_dir2_leaf.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_dir2_leaf.c 2011-06-22 21:56:26.102462981 +0200 > +++ xfs/fs/xfs/xfs_dir2_leaf.c 2011-06-23 12:41:51.716439911 +0200 > @@ -152,6 +152,118 @@ xfs_dir2_block_to_leaf( > return 0; > } > > +xfs_dir2_leaf_entry_t * > +xfs_dir2_leaf_find_entry( > + xfs_dir2_leaf_t *leaf, /* leaf structure */ > + int index, /* leaf table position */ > + int compact, /* need to compact leaves */ > + int lowstale, /* index of prev stale leaf */ > + int highstale, /* index of next stale leaf */ > + int *lfloglow, /* low leaf logging index */ > + int *lfloghigh) /* high leaf logging index */ > +{ > + xfs_dir2_leaf_entry_t *lep; /* leaf entry table pointer */ > + > + if (!leaf->hdr.stale) { > + /* > + * Now we need to make room to insert the leaf entry. > + * > + * If there are no stale entries, just insert a hole at index. > + */ > + lep = &leaf->ents[index]; > + if (index < be16_to_cpu(leaf->hdr.count)) > + memmove(lep + 1, lep, > + (be16_to_cpu(leaf->hdr.count) - index) * > + sizeof(*lep)); > + > + /* > + * Record low and high logging indices for the leaf. > + */ > + *lfloglow = index; > + *lfloghigh = be16_to_cpu(leaf->hdr.count); > + be16_add_cpu(&leaf->hdr.count, 1); You could probably just return here, and that would remove the: > + } else { and the indenting that the else branch causes. > + /* > + * There are stale entries. > + * > + * We will use one of them for the new entry. It's probably > + * not at the right location, so we'll have to shift some up > + * or down first. > + * > + * If we didn't compact before, we need to find the nearest > + * stale entries before and after our insertion point. > + */ > + if (compact == 0) { > + /* > + * Find the first stale entry before the insertion > + * point, if any. > + */ > + for (lowstale = index - 1; > + lowstale >= 0 && > + be32_to_cpu(leaf->ents[lowstale].address) != > + XFS_DIR2_NULL_DATAPTR; > + lowstale--) > + continue; > + /* > + * Find the next stale entry at or after the insertion > + * point, if any. Stop if we go so far that the > + * lowstale entry would be better. > + */ > + for (highstale = index; > + highstale < be16_to_cpu(leaf->hdr.count) && > + be32_to_cpu(leaf->ents[highstale].address) != > + XFS_DIR2_NULL_DATAPTR && > + (lowstale < 0 || > + index - lowstale - 1 >= highstale - index); > + highstale++) > + continue; > + } > + /* > + * If the low one is better, use it. > + */ Line of whitespace before the comment. > + if (lowstale >= 0 && > + (highstale == be16_to_cpu(leaf->hdr.count) || > + index - lowstale - 1 < highstale - index)) { > + ASSERT(index - lowstale - 1 >= 0); > + ASSERT(be32_to_cpu(leaf->ents[lowstale].address) == > + XFS_DIR2_NULL_DATAPTR); > + /* > + * Copy entries up to cover the stale entry > + * and make room for the new entry. > + */ > + if (index - lowstale - 1 > 0) > + memmove(&leaf->ents[lowstale], > + &leaf->ents[lowstale + 1], > + (index - lowstale - 1) * sizeof(*lep)); > + lep = &leaf->ents[index - 1]; > + *lfloglow = MIN(lowstale, *lfloglow); > + *lfloghigh = MAX(index - 1, *lfloghigh); > + > + /* > + * The high one is better, so use that one. > + */ > + } else { I prefer comments inside the else branch... > + ASSERT(highstale - index >= 0); > + ASSERT(be32_to_cpu(leaf->ents[highstale].address) == > + XFS_DIR2_NULL_DATAPTR); > + /* > + * Copy entries down to cover the stale entry > + * and make room for the new entry. > + */ > + if (highstale - index > 0) > + memmove(&leaf->ents[index + 1], > + &leaf->ents[index], > + (highstale - index) * sizeof(*lep)); > + lep = &leaf->ents[index]; > + *lfloglow = MIN(index, *lfloglow); > + *lfloghigh = MAX(highstale, *lfloghigh); > + } > + be16_add_cpu(&leaf->hdr.stale, -1); > + } > + > + return lep; > +} > + > /* > * Add an entry to a leaf form directory. > */ > @@ -430,102 +542,11 @@ xfs_dir2_leaf_addname( ..... > - } > - be16_add_cpu(&leaf->hdr.stale, -1); > - } > + > + > + lep = xfs_dir2_leaf_find_entry(leaf, index, compact, lowstale, > + highstale, &lfloglow, &lfloghigh); > + Only need one line of whitespace before the function call. ..... > - lep = &leaf->ents[index]; > - lfloglow = MIN(index, lfloglow); > - lfloghigh = MAX(highstale, lfloghigh); > - } > - be16_add_cpu(&leaf->hdr.stale, -1); > - } > + > + > /* > * Insert the new entry, log everything. > */ > + lep = xfs_dir2_leaf_find_entry(leaf, index, compact, lowstale, > + highstale, &lfloglow, &lfloghigh); > + Same for the whitespace before the comment. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Jun 30 01:35:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U6ZHFd186937 for ; Thu, 30 Jun 2011 01:35:17 -0500 X-ASG-Debug-ID: 1309415714-115402f70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 372F41E570FE for ; Wed, 29 Jun 2011 23:35:15 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id oKN8LlEYRIpeaz9J for ; Wed, 29 Jun 2011 23:35:15 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAIAYDE55LCkB/2dsb2JhbABSp1Z4iHjAHw6GIgSiYA Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail04.adl6.internode.on.net with ESMTP; 30 Jun 2011 16:05:13 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QcAqD-00031V-1z; Thu, 30 Jun 2011 16:35:09 +1000 Date: Thu, 30 Jun 2011 16:35:08 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 14/27] xfs: cleanup shortform directory inode number handling Subject: Re: [PATCH 14/27] xfs: cleanup shortform directory inode number handling Message-ID: <20110630063508.GH561@dastard> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140339.266356959@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110629140339.266356959@bombadil.infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1309415716 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67537 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, Jun 29, 2011 at 10:01:23AM -0400, Christoph Hellwig wrote: > Refactor the shortform directory helpers that deal with the 32-bit vs > 64-bit wide inode numbers into more sensible helpers, and kill the > xfs_intino_t typedef that is now superflous. > > Signed-off-by: Christoph Hellwig A few consistency things, and a bit whitespacy, otherwise: Reviewed-by: Dave Chinner > > Index: xfs/fs/xfs/xfs_dir2_sf.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_dir2_sf.c 2010-05-25 11:40:59.357006075 +0200 > +++ xfs/fs/xfs/xfs_dir2_sf.c 2010-05-27 14:48:16.709004470 +0200 > @@ -59,6 +59,83 @@ static void xfs_dir2_sf_toino4(xfs_da_ar > static void xfs_dir2_sf_toino8(xfs_da_args_t *args); > #endif /* XFS_BIG_INUMS */ > > + > +/* > + * Inode numbers in short-form directories can come in two versions, > + * either 4 bytes or 8 bytes wide. These helpers deal with the > + * two forms transparently by looking at the headers i8count field. > + */ > + > +static xfs_ino_t Extra line there... > +xfs_dir2_sf_get_ino( > + struct xfs_dir2_sf *sfp, > + xfs_dir2_inou_t *from) > +{ > + if (sfp->hdr.i8count) > + return XFS_GET_DIR_INO8(from->i8); > + else > + return XFS_GET_DIR_INO4(from->i4); > +} > +static void And none there. > +xfs_dir2_sf_put_inumber( > + struct xfs_dir2_sf *sfp, > + xfs_dir2_inou_t *to, > + xfs_ino_t ino) > +{ > + if (sfp->hdr.i8count) > + XFS_PUT_DIR_INO8(ino, to->i8); > + else > + XFS_PUT_DIR_INO4(ino, to->i4); > +} Also, xfs_dir2_sf_get_ino() vs xfs_dir2_sf_put_inumber() - either use _ino or _inumber as the suffix for both. _ino is probably more consistent with the other functions... > + > +xfs_ino_t > +xfs_dir2_sf_get_parent_ino( > + struct xfs_dir2_sf *sfp) > +{ > + return xfs_dir2_sf_get_ino(sfp, &sfp->hdr.parent); > +} > + > + Extra whitespace. > +static void > +xfs_dir2_sf_put_parent_ino( > + struct xfs_dir2_sf *sfp, > + xfs_ino_t ino) > +{ > + xfs_dir2_sf_put_inumber(sfp, &sfp->hdr.parent, ino); > +} > + > + Extra whitespace. > +/* > + * In short-form directory entries the inode numbers are stored at variable > + * offset behind the entry name. The inode numbers may only be accessed > + * through the helpers below. > + */ > + Extra whitespace. > +static xfs_dir2_inou_t * > +xfs_dir2_sf_inop( > + struct xfs_dir2_sf_entry *sfep) > +{ > + return (xfs_dir2_inou_t *)&sfep->name[sfep->namelen]; > +} Probably should be called xfs_dir2_sfe_inop() because it takes a xfs_dir2_sf_entry, similar to the following functions use "sfe". > + > +xfs_ino_t > +xfs_dir2_sfe_get_ino( > + struct xfs_dir2_sf *sfp, > + struct xfs_dir2_sf_entry *sfep) > +{ > + return xfs_dir2_sf_get_ino(sfp, xfs_dir2_sf_inop(sfep)); > +} > + > +static void > +xfs_dir2_sfe_put_ino( > + struct xfs_dir2_sf *sfp, > + struct xfs_dir2_sf_entry *sfep, > + xfs_ino_t ino) > +{ > + xfs_dir2_sf_put_inumber(sfp, xfs_dir2_sf_inop(sfep), ino); > +} > + > + Extra whitespace. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Jun 30 01:37:04 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U6b4tl187025 for ; Thu, 30 Jun 2011 01:37:04 -0500 X-ASG-Debug-ID: 1309415822-4e6f038c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9AB844C287F for ; Wed, 29 Jun 2011 23:37:02 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id qrtqXKVAHBBDNP7d for ; Wed, 29 Jun 2011 23:37:02 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAIAYDE55LCkB/2dsb2JhbABSp1Z4yRcOhiIEomA Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail04.adl6.internode.on.net with ESMTP; 30 Jun 2011 16:07:00 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QcAry-000324-TA; Thu, 30 Jun 2011 16:36:58 +1000 Date: Thu, 30 Jun 2011 16:36:58 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 00/27] patch queue for Linux 3.1 Subject: Re: [PATCH 00/27] patch queue for Linux 3.1 Message-ID: <20110630063658.GI561@dastard> References: <20110629140109.003209430@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110629140109.003209430@bombadil.infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1309415823 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0010 1.0000 -2.0142 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67537 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, Jun 29, 2011 at 10:01:09AM -0400, Christoph Hellwig wrote: > This is my current patch queue for Linux 3.1. It includes the previously > all previously sent patches I'm planning for Linux 3.1 inclusion through > the XFS tree and a few new ones. The most important new bits is a cleanup > of the structures describing the dir2 on-disk format, which got a bit > more urgent due to more recent gcc versions complaining about the hacks > used in the current version. > > The sync lifelock fix is included only in a minimal version that removes > the data syncs. I plan to sort out the iocount waiting via the i_alloc_sem > removal patches that have been sent for inclusion in the VFS tree. I'll > cc the XFS list on the updated version with XFS chances. With this series I'm seeing test 180 fail relatively frequently with 1k block size filesystem. I shall try to debug this given the other reports of 180 failing that have recently come to light... Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+e11cde4e9d21b258205a+2867+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 30 01:50:26 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U6oQ3K187385 for ; Thu, 30 Jun 2011 01:50:26 -0500 X-ASG-Debug-ID: 1309416625-169b00870000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5FC254C2886 for ; Wed, 29 Jun 2011 23:50:25 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id T6vaQyri4BUCeJ5y for ; Wed, 29 Jun 2011 23:50:25 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QcB4y-0002pW-Ok; Thu, 30 Jun 2011 06:50:24 +0000 Date: Thu, 30 Jun 2011 02:50:24 -0400 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 00/27] patch queue for Linux 3.1 Subject: Re: [PATCH 00/27] patch queue for Linux 3.1 Message-ID: <20110630065024.GA6566@infradead.org> References: <20110629140109.003209430@bombadil.infradead.org> <20110630063658.GI561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110630063658.GI561@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309416625 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67539 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Thu, Jun 30, 2011 at 04:36:58PM +1000, Dave Chinner wrote: > On Wed, Jun 29, 2011 at 10:01:09AM -0400, Christoph Hellwig wrote: > > This is my current patch queue for Linux 3.1. It includes the previously > > all previously sent patches I'm planning for Linux 3.1 inclusion through > > the XFS tree and a few new ones. The most important new bits is a cleanup > > of the structures describing the dir2 on-disk format, which got a bit > > more urgent due to more recent gcc versions complaining about the hacks > > used in the current version. > > > > The sync lifelock fix is included only in a minimal version that removes > > the data syncs. I plan to sort out the iocount waiting via the i_alloc_sem > > removal patches that have been sent for inclusion in the VFS tree. I'll > > cc the XFS list on the updated version with XFS chances. > > With this series I'm seeing test 180 fail relatively frequently with > 1k block size filesystem. I shall try to debug this given the other > reports of 180 failing that have recently come to light... Interesting. I've not seen 180 fail any time recently, with either 4k of 512 byte block size filesystems. From BATV+e11cde4e9d21b258205a+2867+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 30 01:55:31 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U6tU4u187713 for ; Thu, 30 Jun 2011 01:55:31 -0500 X-ASG-Debug-ID: 1309416929-6498012d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3127F1E57226 for ; Wed, 29 Jun 2011 23:55:29 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id tMSfENt6opLQtJNY for ; Wed, 29 Jun 2011 23:55:29 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QcB9t-0003bI-A0; Thu, 30 Jun 2011 06:55:29 +0000 Date: Thu, 30 Jun 2011 02:55:29 -0400 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 02/27] xfs: remove the unused ilock_nowait codepath in writepage Subject: Re: [PATCH 02/27] xfs: remove the unused ilock_nowait codepath in writepage Message-ID: <20110630065529.GA10893@infradead.org> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140336.717434334@bombadil.infradead.org> <20110630001525.GU561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110630001525.GU561@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309416930 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0091 1.0000 -1.9613 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.86 X-Barracuda-Spam-Status: No, SCORE=-1.86 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67539 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Thu, Jun 30, 2011 at 10:15:25AM +1000, Dave Chinner wrote: > On Wed, Jun 29, 2011 at 10:01:11AM -0400, Christoph Hellwig wrote: > > wbc->nonblocking is never set, so this whole code has been unreachable > > for a long time. I'm also not sure it would make a lot of sense - > > we'd rather finish our writeout after a short wait for the ilock > > instead of cancelling the whole ioend. > > I'd suggest that the only thing that should be dropped is the > wbc->nonblocking check. Numbers would be good to validate that this > is still relevant, but I don't have a storage subsystem with enough > bandwidth to drive a flusher thread to being CPU bound... I don't mind re-introducing this if we actuall have a testcase for it. Note that simply keeping the code won't work for the writepages implementation as we'd cancel the whole ioend if one lock fails, discarding potentially a lot of I/O. It's already bad enough with the simpler clustering we have in the current code. Back in SLES10 / 2.6.16 when the code could still be reached we only did it for the bmap calls directly from writepage, but not from the writeout clustering. From BATV+e11cde4e9d21b258205a+2867+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 30 01:57:36 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_36 autolearn=no version=3.4.0-r929098 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 p5U6vapi187777 for ; Thu, 30 Jun 2011 01:57:36 -0500 X-ASG-Debug-ID: 1309417055-068102080000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D5046E54800 for ; Wed, 29 Jun 2011 23:57:35 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id tCLjoWmU2t7wu53g for ; Wed, 29 Jun 2011 23:57:35 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QcBBu-0003cy-LJ; Thu, 30 Jun 2011 06:57:34 +0000 Date: Thu, 30 Jun 2011 02:57:34 -0400 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 03/27] xfs: use write_cache_pages for writeback clustering Subject: Re: [PATCH 03/27] xfs: use write_cache_pages for writeback clustering Message-ID: <20110630065734.GB10893@infradead.org> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140336.950805096@bombadil.infradead.org> <20110630020013.GX561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110630020013.GX561@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309417055 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67538 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Thu, Jun 30, 2011 at 12:00:13PM +1000, Dave Chinner wrote: > > - if (iohead) > > - xfs_cancel_ioend(iohead); > > - > > - if (err == -EAGAIN) > > - goto redirty; > > - > > Should this EAGAIN handling be dealt with in the removing-the-non- > blocking-mode patch? Probably. > > + ret = write_cache_pages(mapping, wbc, __xfs_vm_writepage, &ctx); > > + > > + if (ctx.iohead) { > > + if (ret) > > + xfs_cancel_ioend(ctx.iohead); > > + else > > + xfs_submit_ioend(wbc, ctx.iohead); > > + } > > I think this error handling does not work. If we have put pages into > the ioend (i.e. successful ->writepage calls) and then have a > ->writepage call fail, we'll get all the pages under writeback (i.e. > those on the ioend) remain in that state, and not ever get written > back (so move into the clean state) or redirtied (so written again > later) > > xfs_cancel_ioend() was only ever called for the first page sent down > to ->writepage, and on error that page was redirtied separately. > Hence it doesn't handle this case at all as it never occurs in the > existing code. > > I'd suggest that regardless of whether an error is returned here, > the existence of ctx.iohead indicates a valid ioend that needs to be > submitted.... Ok. That would also solve the problem of the trylock failures. I'll see how we can deal with it nicely. From BATV+e11cde4e9d21b258205a+2867+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 30 02:03:36 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U73a2E188021 for ; Thu, 30 Jun 2011 02:03:36 -0500 X-ASG-Debug-ID: 1309417414-6497016c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 477A81782DF9; Thu, 30 Jun 2011 00:03:34 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id Cpw6XA0EDtz6X0tB; Thu, 30 Jun 2011 00:03:34 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QcBHh-0004iM-Hc; Thu, 30 Jun 2011 07:03:33 +0000 Date: Thu, 30 Jun 2011 03:03:33 -0400 From: Christoph Hellwig To: Alex Elder Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 06/27] xfs: split xfs_setattr Subject: Re: [PATCH 06/27] xfs: split xfs_setattr Message-ID: <20110630070333.GC10893@infradead.org> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140337.641422449@bombadil.infradead.org> <1309385596.8649.36.camel@doink> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1309385596.8649.36.camel@doink> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309417415 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67539 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Wed, Jun 29, 2011 at 05:13:16PM -0500, Alex Elder wrote: > Looks good but I think that you need to mask off the > ia_valid bits in the calls now made in xfs_vn_setattr(). Why? We call xfs_setattr_size if ATTR_SIZE is set. The ATTR_SIZE may also have a few other attributes we can handle, and assert on those that it can't just to make sure. Similarly xfs_setattr_nonsize can handle everything but ATTR_SIZE, and again we have an assert to protect against breeding incorrect XFS-internal callers. > Also, I think you may still need to check the file type > for the size-setting function. Details below. The VFS only ever does an ATTR_SIZE setattr on regular files. We have an assert to ensure that for debug builds, which is a lot more than most other filesystems do. > > + ASSERT((mask & (ATTR_MODE|ATTR_UID|ATTR_GID|ATTR_ATIME|ATTR_ATIME_SET| > > + ATTR_MTIME_SET|ATTR_KILL_SUID|ATTR_KILL_SGID| > > + ATTR_KILL_PRIV|ATTR_TIMES_SET)) == 0); > > You'll have to mask these off in xfs_vn_setattr() if you're > going to make this assertion. No, this is the (implicit) calling convention by the VFS. > > - if (S_ISDIR(ip->i_d.di_mode)) { > > - code = XFS_ERROR(EISDIR); > > - goto error_return; > > - } else if (!S_ISREG(ip->i_d.di_mode)) { > > - code = XFS_ERROR(EINVAL); > > - goto error_return; > > - } > > This is the file type checking code I referred to above. It simply was a leftover from IRIX that we can't hit on Linux. From david@fromorbit.com Thu Jun 30 02:04:54 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U74r7P188075 for ; Thu, 30 Jun 2011 02:04:54 -0500 X-ASG-Debug-ID: 1309417492-0f5101370000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6DE9A4C2AB6 for ; Thu, 30 Jun 2011 00:04:52 -0700 (PDT) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id izqpSbrYI7FzkmS1 for ; Thu, 30 Jun 2011 00:04:52 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAH8fDE55LCkB/2dsb2JhbABSp1F4yGYOhiIEmjGILw Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail04.adl6.internode.on.net with ESMTP; 30 Jun 2011 16:34:51 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QcBIv-00034t-NG; Thu, 30 Jun 2011 17:04:49 +1000 Date: Thu, 30 Jun 2011 17:04:49 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 15/27] xfs: kill struct xfs_dir2_sf Subject: Re: [PATCH 15/27] xfs: kill struct xfs_dir2_sf Message-ID: <20110630070449.GJ561@dastard> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140339.466443510@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110629140339.466443510@bombadil.infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1309417493 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0146 1.0000 -1.9262 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.2.67539 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, Jun 29, 2011 at 10:01:24AM -0400, Christoph Hellwig wrote: > The list field of it is never cactually used, so all uses can simply be > replaced with the xfs_dir2_sf_hdr_t type that it has as first member. > > Signed-off-by: Christoph Hellwig I can't help but think this would have been a much smaller patch if you rolled the contents of the xfs_dir2_sf_hdr_t into xfs_dir2_sf_t and killed the xfs_dir2_sf_hdr_t instead. There's many more occurrences of xfs_dir2_sf_t than there are xfs_dir2_sf_hdr_t. Anyway, gotta run now so I'll look at this more later.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+e11cde4e9d21b258205a+2867+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 30 02:07:04 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U774ZC188153 for ; Thu, 30 Jun 2011 02:07:04 -0500 X-ASG-Debug-ID: 1309417622-268a03410000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C79571E5725C; Thu, 30 Jun 2011 00:07:03 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id Nzr4rYe6tyPL2lef; Thu, 30 Jun 2011 00:07:03 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QcBL4-0005Y4-1c; Thu, 30 Jun 2011 07:07:02 +0000 Date: Thu, 30 Jun 2011 03:07:02 -0400 From: Christoph Hellwig To: Alex Elder Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 07/27] xfs: always log timestamp updates in xfs_setattr_size Subject: Re: [PATCH 07/27] xfs: always log timestamp updates in xfs_setattr_size Message-ID: <20110630070701.GD10893@infradead.org> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140337.876449102@bombadil.infradead.org> <1309385603.8649.37.camel@doink> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1309385603.8649.37.camel@doink> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309417623 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1068 1.0000 -1.3520 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.25 X-Barracuda-Spam-Status: No, SCORE=-1.25 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67539 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Wed, Jun 29, 2011 at 05:13:23PM -0500, Alex Elder wrote: > How/where does iattr->ia_mtime get initialized to the current > value (I believe it would just match iattr->ia_ctime)? As Dave mentioned it's set by the caller. Maybe the code is a bit cleaner if I check for both ATTR_CTIME and ATTR_MTIME? The add MTIME to the mask stuff also is superflous from a quick looks as we always have both set anyway. From BATV+e11cde4e9d21b258205a+2867+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 30 02:09:21 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U79L4c188242 for ; Thu, 30 Jun 2011 02:09:21 -0500 X-ASG-Debug-ID: 1309417759-0685025e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B72AE124053B for ; Thu, 30 Jun 2011 00:09:20 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id l0at5e0rq2Rg1Dke for ; Thu, 30 Jun 2011 00:09:20 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QcBNG-0005i1-MU; Thu, 30 Jun 2011 07:09:18 +0000 Date: Thu, 30 Jun 2011 03:09:18 -0400 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 15/27] xfs: kill struct xfs_dir2_sf Subject: Re: [PATCH 15/27] xfs: kill struct xfs_dir2_sf Message-ID: <20110630070918.GA21449@infradead.org> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140339.466443510@bombadil.infradead.org> <20110630070449.GJ561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110630070449.GJ561@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309417760 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: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67540 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Thu, Jun 30, 2011 at 05:04:49PM +1000, Dave Chinner wrote: > On Wed, Jun 29, 2011 at 10:01:24AM -0400, Christoph Hellwig wrote: > > The list field of it is never cactually used, so all uses can simply be > > replaced with the xfs_dir2_sf_hdr_t type that it has as first member. > > > > Signed-off-by: Christoph Hellwig > > I can't help but think this would have been a much smaller patch if > you rolled the contents of the xfs_dir2_sf_hdr_t into xfs_dir2_sf_t > and killed the xfs_dir2_sf_hdr_t instead. There's many more > occurrences of xfs_dir2_sf_t than there are xfs_dir2_sf_hdr_t. It would have been simpler, but using the xfs_dir2_sf_hdr_t makes more sense to me. If there's broad disagreement with this (and the similar changes for the other structures) I'll revisit the naming scheme. From BATV+e11cde4e9d21b258205a+2867+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 30 02:18:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U7IbiH188537 for ; Thu, 30 Jun 2011 02:18:37 -0500 X-ASG-Debug-ID: 1309418316-068b02980000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 88A8ED51794 for ; Thu, 30 Jun 2011 00:18:36 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id amxig4rvtlNEwgD6 for ; Thu, 30 Jun 2011 00:18:36 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QcBWD-0007Rr-VX; Thu, 30 Jun 2011 07:18:34 +0000 Date: Thu, 30 Jun 2011 03:18:33 -0400 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 09/27] xfs: split xfs_itruncate_finish Subject: Re: [PATCH 09/27] xfs: split xfs_itruncate_finish Message-ID: <20110630071833.GA21960@infradead.org> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140338.286808024@bombadil.infradead.org> <20110630024428.GB561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110630024428.GB561@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309418316 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67540 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Thu, Jun 30, 2011 at 12:44:28PM +1000, Dave Chinner wrote: > > > > ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_IOLOCK_EXCL)); > > - ASSERT((new_size == 0) || (new_size <= ip->i_size)); > > - ASSERT(*tp != NULL); > > - ASSERT((*tp)->t_flags & XFS_TRANS_PERM_LOG_RES); > > - ASSERT(ip->i_transp == *tp); > > + ASSERT(new_size == 0 || new_size <= ip->i_size); > > If new_size == 0, then it will always be <= ip->i_size, so that's > kind of a redundant check. I think this really should be two > different asserts, one that validates the data fork new_size range, > and one that validates the attr fork truncate to zero length only > condition: > > ASSERT(new_size <= ip->i_size); > ASSERT(whichfork != XFS_ATTR_FORK || new_size == 0); For now I was just keeping the existing assert, but changing this one sounds ok. OTOH I kept the whole routine fork agnostic, so I think I'll rather just make the assert read: ASSERT(new_size <= ip->i_size); and assume the one and only attr fork caller does the right thing. > > @@ -1464,15 +1311,16 @@ xfs_itruncate_finish( > > } > > > > ntp = xfs_trans_dup(ntp); > > - error = xfs_trans_commit(*tp, 0); > > - *tp = ntp; > > + error = xfs_trans_commit(*tpp, 0); > > + *tpp = ntp; > > I've always found this a mess to follow which transaction is which > because of the rewriting of ntp. This is easier to follow: > > ntp = xfs_trans_dup(*tpp); > error = xfs_trans_commit(*tpp, 0); > *tpp = ntp; > > Now it's clear that we are duplicating *tpp, then committing it, and > then setting it to the duplicated transaction. Now I don't have to > go look at all the surrounding code to remind myself what ntp > contains to validate that the fragment of code is doing the right > thing..... I've cleaned this up even further and added a local tp variable that has the current transaction as a normal pointer. *tpp is only assigned back to in a single place after goto out, and ntp is only used for the switching around to the duplicated transaction. From BATV+e11cde4e9d21b258205a+2867+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 30 02:35:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U7Z1ES190018 for ; Thu, 30 Jun 2011 02:35:01 -0500 X-ASG-Debug-ID: 1309419299-076902550000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A36A84C2C26 for ; Thu, 30 Jun 2011 00:34:59 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id FGE0NYReXRZoPx7K for ; Thu, 30 Jun 2011 00:34:59 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QcBm7-0001Lh-6B; Thu, 30 Jun 2011 07:34:59 +0000 Date: Thu, 30 Jun 2011 03:34:59 -0400 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 13/27] xfs: factor out xfs_dir2_leaf_find_entry Subject: Re: [PATCH 13/27] xfs: factor out xfs_dir2_leaf_find_entry Message-ID: <20110630073459.GA31334@infradead.org> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140339.086201354@bombadil.infradead.org> <20110630061102.GG561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110630061102.GG561@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309419300 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67541 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 On Thu, Jun 30, 2011 at 04:11:02PM +1000, Dave Chinner wrote: > You could probably just return here, and that would remove the: Indeed. We can do the same near the end, too. It means duplicating the be16_add_cpu, but allows to directly return the expression that lead to lep, so I did it. > > + continue; > > + } > > + /* > > + * If the low one is better, use it. > > + */ > > Line of whitespace before the comment. Fixed. > > + /* > > + * The high one is better, so use that one. > > + */ > > + } else { > > I prefer comments inside the else branch... The else is completely gone now, fixing that issue. > > - be16_add_cpu(&leaf->hdr.stale, -1); > > - } > > + > > + > > + lep = xfs_dir2_leaf_find_entry(leaf, index, compact, lowstale, > > + highstale, &lfloglow, &lfloghigh); > > + > > Only need one line of whitespace before the function call. Fixed. > > + > > + > > /* > > * Insert the new entry, log everything. > > */ > > + lep = xfs_dir2_leaf_find_entry(leaf, index, compact, lowstale, > > + highstale, &lfloglow, &lfloghigh); > > + > > Same for the whitespace before the comment. Fixed. From BATV+e11cde4e9d21b258205a+2867+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 30 02:39:39 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5U7ddm2190591 for ; Thu, 30 Jun 2011 02:39:39 -0500 X-ASG-Debug-ID: 1309419578-076802940000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7C68F4C2E5B for ; Thu, 30 Jun 2011 00:39:38 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 7qbJwfNRm9mGEse2 for ; Thu, 30 Jun 2011 00:39:38 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QcBqb-00028m-N9; Thu, 30 Jun 2011 07:39:37 +0000 Date: Thu, 30 Jun 2011 03:39:37 -0400 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 14/27] xfs: cleanup shortform directory inode number handling Subject: Re: [PATCH 14/27] xfs: cleanup shortform directory inode number handling Message-ID: <20110630073937.GB31334@infradead.org> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140339.266356959@bombadil.infradead.org> <20110630063508.GH561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110630063508.GH561@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309419578 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67541 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 > > +static xfs_ino_t > > Extra line there... Fixed. > > +} > > +static void > > And none there. Fixed. > > +xfs_dir2_sf_put_inumber( > > + struct xfs_dir2_sf *sfp, > > + xfs_dir2_inou_t *to, > > + xfs_ino_t ino) > > +{ > > + if (sfp->hdr.i8count) > > + XFS_PUT_DIR_INO8(ino, to->i8); > > + else > > + XFS_PUT_DIR_INO4(ino, to->i4); > > +} > > Also, xfs_dir2_sf_get_ino() vs xfs_dir2_sf_put_inumber() - either > use _ino or _inumber as the suffix for both. _ino is probably more > consistent with the other functions... xfs_dir2_sf_put_inumber already exists in the current code and I just moved it blindly. I've renamed it to xfs_dir2_sf_put_ino for the next version. > > + > > +xfs_ino_t > > +xfs_dir2_sf_get_parent_ino( > > + struct xfs_dir2_sf *sfp) > > +{ > > + return xfs_dir2_sf_get_ino(sfp, &sfp->hdr.parent); > > +} > > + > > + > > Extra whitespace. Fixed. > > +static void > > +xfs_dir2_sf_put_parent_ino( > > + struct xfs_dir2_sf *sfp, > > + xfs_ino_t ino) > > +{ > > + xfs_dir2_sf_put_inumber(sfp, &sfp->hdr.parent, ino); > > +} > > + > > + > > Extra whitespace. > Fixed. > > +/* > > + * In short-form directory entries the inode numbers are stored at variable > > + * offset behind the entry name. The inode numbers may only be accessed > > + * through the helpers below. > > + */ > > + > > Extra whitespace. > Fixed. > > +static xfs_dir2_inou_t * > > +xfs_dir2_sf_inop( > > + struct xfs_dir2_sf_entry *sfep) > > +{ > > + return (xfs_dir2_inou_t *)&sfep->name[sfep->namelen]; > > +} > > Probably should be called xfs_dir2_sfe_inop() because it takes a > xfs_dir2_sf_entry, similar to the following functions use "sfe". Ok. > > > + > > +xfs_ino_t > > +xfs_dir2_sfe_get_ino( > > + struct xfs_dir2_sf *sfp, > > + struct xfs_dir2_sf_entry *sfep) > > +{ > > + return xfs_dir2_sf_get_ino(sfp, xfs_dir2_sf_inop(sfep)); > > +} > > + > > +static void > > +xfs_dir2_sfe_put_ino( > > + struct xfs_dir2_sf *sfp, > > + struct xfs_dir2_sf_entry *sfep, > > + xfs_ino_t ino) > > +{ > > + xfs_dir2_sf_put_inumber(sfp, xfs_dir2_sf_inop(sfep), ino); > > +} > > + > > + > > Extra whitespace. Fixed. From amit.sahrawat83@gmail.com Thu Jun 30 06:27:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 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 p5UBRiYC207987 for ; Thu, 30 Jun 2011 06:27:44 -0500 X-ASG-Debug-ID: 1309433262-65c400c50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ew0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 72EC117837F0 for ; Thu, 30 Jun 2011 04:27:42 -0700 (PDT) Received: from mail-ew0-f53.google.com (mail-ew0-f53.google.com [209.85.215.53]) by cuda.sgi.com with ESMTP id x4mJrqq0b5PGvbOs for ; Thu, 30 Jun 2011 04:27:42 -0700 (PDT) Received: by ewy8 with SMTP id 8so748993ewy.26 for ; Thu, 30 Jun 2011 04:27:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; bh=niD+7c7Y1GCyBAirgicChvCvlA0yhW/prMJWCUIbuTI=; b=sBtTkYxHeXeZzTaZ1T6qX75JVB6YUU1K1RmY7vGxsTjzNGEBVDxYLXYjObKTU6+zyW B4w9noet8olz00fQ6+9MDojtnd7FgFp9OVSGcst5xGcC3cvdzUBm3/APVPtRa1O2wkMt IHO9QvvELB8s0Dxu8d0jntWjTMg45Imr6bPtQ= MIME-Version: 1.0 Received: by 10.14.2.85 with SMTP id 61mr541517eee.46.1309433262089; Thu, 30 Jun 2011 04:27:42 -0700 (PDT) Received: by 10.14.37.15 with HTTP; Thu, 30 Jun 2011 04:27:42 -0700 (PDT) Date: Thu, 30 Jun 2011 16:57:42 +0530 Message-ID: X-ASG-Orig-Subj: XFS and USB Hang on 2.6.35.13 Subject: XFS and USB Hang on 2.6.35.13 From: Amit Sahrawat To: xfs@oss.sgi.com, Dave Chinner Content-Type: multipart/alternative; boundary=00163641668771a4ac04a6ec30f7 X-Barracuda-Connect: mail-ew0-f53.google.com[209.85.215.53] X-Barracuda-Start-Time: 1309433263 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.02 X-Barracuda-Spam-Status: No, SCORE=-1.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, BSF_RULE_7582B, DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67556 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 0.50 BSF_RULE7568M Custom Rule 7568M 0.50 BSF_RULE_7582B Custom Rule 7582B X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --00163641668771a4ac04a6ec30f7 Content-Type: text/plain; charset=ISO-8859-1 Hi All, I encountered a hang on XFS during unplug. *Test Case:* #!/bin/sh index=0 while [ "$?" == 0 ] do index=$(($index+1)) sync cp /mnt/1KB.txt /tmp/"$index".test done Where /mnt - mount point for vfat and /tmp mount point for XFS, both can be XFS also. During this operation, unplug the USB. I am getting HANG almost everytime I unplug. *Kernel Version:* 2.6.35.13 (extremely sorry, I know next question will be why am I not using TOT kernel - I tried but my PC does not boot up with the latest one) *Target=ARM* *Logs Using Kernel Hung Task Feature* # sh test.sh usb 2-1: USB disconnect, address 2 sd 0:0:0:0: [sda] Unhandled error code sd 0:0:0:0: [sda] Result: hostbyte=0x01 driverbyte=0x00 sd 0:0:0:0: [sda] CDB: cdb[0]=0x2a: 2a 00 00 40 08 01 00 00 02 00 end_request: I/O error, dev sda, sector 4196353 sd 0:0:0:0: [sda] Unhandled error code sd 0:0:0:0: [sda] Result: hostbyte=0x01 driverbyte=0x00 sd 0:0:0:0: [sda] CDB: cdb[0]=0x2a: 2a 00 00 40 08 08 00 00 18 00 end_request: I/O error, dev sda, sector 4196360 end_request: I/O error, dev sda, sector 6293645 Device sda3, XFS metadata write error block 0x1 in sda3 xfs_force_shutdown(sda3,0x1) called from line 1031 of file fs/xfs/xfs_buf_item.c. Return address = 0xc0507b1c *INFO: task khubd:*33 blocked for more than 120 seconds. "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. khubd D c06c261c 0 33 2 0x00000000 Backtrace: [] (schedule+0x0/0x500) from [] (_xfs_log_force+0x230/0x284) [] (_xfs_log_force+0x0/0x284) from [] (xfs_log_force+0x18/0x38) [] (xfs_log_force+0x0/0x38) from [] (xfs_sync_data+0x48/0x58) r4:00000001 r3:00000005 [] (xfs_sync_data+0x0/0x58) from [] (xfs_quiesce_data+0x24/0x80) r6:dbd0dd08 r5:00000001 r4:db46e000 [] (xfs_quiesce_data+0x0/0x80) from [] (xfs_fs_sync_fs+0x24/0xe0) r6:dbd0dd08 r5:00000001 r4:db46e000 r3:c05421e4 [] (xfs_fs_sync_fs+0x0/0xe0) from [] (__sync_filesystem+0x84/0xa0) r8:0000001f r7:db46eae0 r6:dbd0dd08 r5:00000001 r4:db470200 [] (__sync_filesystem+0x0/0xa0) from [] (sync_filesystem+0x58/0x60) r5:db470200 r4:db470200 [] (sync_filesystem+0x0/0x60) from [] (fsync_bdev+0x20/0x44) r4:db89e0a0 r3:00000006 [] (fsync_bdev+0x0/0x44) from [] (invalidate_partition+0x20/0x3c) r5:dbdc1a00 r4:db89e0a0 [] (invalidate_partition+0x0/0x3c) from [] (del_gendisk+0x34/0x140) r5:dbdc1a00 r4:db470e00 [] (del_gendisk+0x0/0x140) from [] (sd_remove+0x48/0x84) r6:db44a5e8 r5:c07e8fc4 r4:db46e4c0 [] (sd_remove+0x0/0x84) from [] (__device_release_driver+0x6c/0xac) r6:60000013 r5:c07e901c r4:db46e4c0 r3:c05c78a0 [] (__device_release_driver+0x0/0xac) from [] (device_release_driver+0x24/0x30) r5:db46e4c0 r4:db46e4f4 [] (device_release_driver+0x0/0x30) from [] (bus_remove_device+0x7c/0x8c) r5:dad9d018 r4:db46e4c0 [] (bus_remove_device+0x0/0x8c) from [] (device_del+0x118/0x170) r4:db46e4c0 r3:00000000 [] (device_del+0x0/0x170) from [] (__scsi_remove_device+0x48/0x90) r6:60000013 r5:db46e4c0 r4:db46e400 r3:c07e8760 [] (__scsi_remove_device+0x0/0x90) from [] (scsi_forget_host+0x48/0x6c) r5:db46e400 r4:db46e800 [] (scsi_forget_host+0x0/0x6c) from [] (scsi_remove_host+0x7c/0x104) r5:db46e838 r4:db46e800 [] (scsi_remove_host+0x0/0x104) from [] (quiesce_and_remove_host+0x68/0x9c) r6:db46ebb4 r5:db46e800 r4:db46eab8 r3:00000000 [] (quiesce_and_remove_host+0x0/0x9c) from [] (usb_stor_disconnect+0x1c/0x28) r7:c07eb2f4 r6:db46ec00 r5:db49a200 r4:db46eab8 [] (usb_stor_disconnect+0x0/0x28) from [] (usb_unbind_interface+0x54/0xdc) r4:db49a220 r3:c06130b4 [] (usb_unbind_interface+0x0/0xdc) from [] (__device_release_driver+0x6c/0xac) r7:00000000 r6:db49a200 r5:c07eb2f4 r4:db49a220 [] (__device_release_driver+0x0/0xac) from [] (device_release_driver+0x24/0x30) r5:db49a220 r4:db49a254 [] (device_release_driver+0x0/0x30) from [] (bus_remove_device+0x7c/0x8c) r5:db46ec68 r4:db49a220 [] (bus_remove_device+0x0/0x8c) from [] (device_del+0x118/0x170) r4:db49a220 r3:00000000 [] (device_del+0x0/0x170) from [] (usb_disable_device+0x58/0xf8) r6:db49a200 r5:00000000 r4:db46ec00 r3:00000005 [] (usb_disable_device+0x0/0xf8) from [] (usb_disconnect+0x98/0xf4) r7:dbd70200 r6:db46ec68 r5:db46ec9c r4:db46ec00 [] (usb_disconnect+0x0/0xf4) from [] (hub_thread+0x3e4/0xd78) [] (hub_thread+0x0/0xd78) from [] (kthread+0x84/0x8c) [] (kthread+0x0/0x8c) from [] (do_exit+0x0/0x61c) r7:00000013 r6:c040c04c r5:c041e61c r4:dbc2df24 *INFO: task xfslogd/1*:40 blocked for more than 120 seconds. "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. xfslogd/1 D c06c261c 0 40 2 0x00000000 Backtrace: [] (schedule+0x0/0x500) from [] (_xfs_log_force+0x230/0x284) [] (_xfs_log_force+0x0/0x284) from [] (xfs_log_force_umount+0x1a8/0x1dc) [] (xfs_log_force_umount+0x0/0x1dc) from [] (xfs_do_force_shutdown+0x70/0x164) [] (xfs_do_force_shutdown+0x0/0x164) from [] (xfs_buf_iodone_callbacks+0x14c/0x184) r7:db469f20 r6:db46e000 r5:daf58968 r4:db445ec0 [] (xfs_buf_iodone_callbacks+0x0/0x184) from [] (xfs_buf_iodone_work+0x58/0x7c) r7:c0bed1d0 r6:c053b888 r5:db468000 r4:db445ec0 [] (xfs_buf_iodone_work+0x0/0x7c) from [] (worker_thread+0x154/0x1e4) r4:c0bed1c0 r3:00000001 [] (worker_thread+0x0/0x1e4) from [] (kthread+0x84/0x8c) [] (kthread+0x0/0x8c) from [] (do_exit+0x0/0x61c) r7:00000013 r6:c040c04c r5:c041e61c r4:dbc2decc *INFO: task sync:*164 blocked for more than 120 seconds. "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. sync D c06c261c 0 164 136 0x00000000 Backtrace: [] (schedule+0x0/0x500) from [] (schedule_timeout+0x20/0x200) [] (schedule_timeout+0x0/0x200) from [] (wait_for_common+0xd0/0x164) r7:db44534c r6:daed4000 r5:7fffffff r4:db445348 [] (wait_for_common+0x0/0x164) from [] (wait_for_completion+0x18/0x1c) [] (wait_for_completion+0x0/0x1c) from [] (xfs_buf_iowait+0x54/0x5c) [] (xfs_buf_iowait+0x0/0x5c) from [] (xfs_flush_buftarg+0x14c/0x180) r4:db4452c0 r3:db4452ec [] (xfs_flush_buftarg+0x0/0x180) from [] (xfs_quiesce_data+0x3c/0x80) r7:c048fb14 r6:00000000 r5:00000001 r4:db46e000 [] (xfs_quiesce_data+0x0/0x80) from [] (xfs_fs_sync_fs+0x24/0xe0) r6:daed5f84 r5:00000001 r4:db46e000 r3:c05421e4 [] (xfs_fs_sync_fs+0x0/0xe0) from [] (__sync_filesystem+0x84/0xa0) r8:c0394264 r7:c048fb14 r6:daed5f84 r5:00000001 r4:db470200 [] (__sync_filesystem+0x0/0xa0) from [] (sync_one_sb+0x2c/0x30) r5:db470240 r4:db470200 [] (sync_one_sb+0x0/0x30) from [] (iterate_supers+0x74/0xb8) [] (iterate_supers+0x0/0xb8) from [] (sync_filesystems+0x20/0x2c) r7:00000024 r6:bef48db4 r5:00000001 r4:000f78be [] (sync_filesystems+0x0/0x2c) from [] (sys_sync+0x24/0x44) [] (sys_sync+0x0/0x44) from [] (ret_fast_syscall+0x0/0x30) *On Analysis:* I found that both the *"khubd"* and *"xfslogd"* are waiting for signal (sv_wait() (xfs_log.c - _xfs_log_force())) *In normal case:* I found that xfslogd does the callback and signal that through xlog_state_do_callback() ( sv_broadcast(&iclog->ic_force_wait) - xfs_log.c); But during hang, xfslogd itself is waiting. So who does the callback in this case? Is xfslogd supposed to wait(sv_wait(&iclog->ic_force_wait, PINOD, &log->l_icloglock, s);) ? Please let me know in case of any issues also update if my analysis is right or wrong. I do not expect a solution but please guide me in my findings. Thanks & Regards, Amit Sahrawat --00163641668771a4ac04a6ec30f7 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

Hi All,

I encountered a hang on XFS during unplug.
Te= st Case:
#!/bin/sh
index=3D0
while [ "$?" =3D= =3D 0 ]
do
=A0=A0=A0=A0=A0=A0=A0 index=3D$(($index+1))
=A0=A0=A0= =A0=A0=A0=A0 sync
=A0=A0=A0=A0=A0=A0=A0 cp /mnt/1KB.txt /tmp/"$inde= x".test
done
Where /mnt - mount point for vfat and /tmp mount point for X= FS, both can be XFS also.

During this operation, unplug the USB. I = am getting HANG almost everytime I unplug.

Kernel Version: 2.6.35.13 (extremely sorry, I know next question will be why am I no= t using TOT kernel - I tried but my PC does not boot up with the latest one= )

Target=3DARM

Logs Using Kernel Hung Tas= k Feature
# sh test.sh
usb 2-1: USB disconnect, addr= ess 2
sd 0:0:0:0: [sda] Unhandled error code
sd 0:0:0:0: [sda] Result= : hostbyte=3D0x01 driverbyte=3D0x00
sd 0:0:0:0: [sda] CDB: cdb[0]=3D0x2a: 2a 00 00 40 08 01 00 00 02 00
end_= request: I/O error, dev sda, sector 4196353
sd 0:0:0:0: [sda] Unhandled = error code
sd 0:0:0:0: [sda] Result: hostbyte=3D0x01 driverbyte=3D0x00 sd 0:0:0:0: [sda] CDB: cdb[0]=3D0x2a: 2a 00 00 40 08 08 00 00 18 00
end_= request: I/O error, dev sda, sector 4196360
end_request: I/O error, dev = sda, sector 6293645
Device sda3, XFS metadata write error block 0x1 in s= da3
xfs_force_shutdown(sda3,0x1) called from line 1031 of file fs/xfs/xfs_buf_i= tem.c.=A0 Return address =3D 0xc0507b1c

INFO: task khubd:33 blocked for more than 120 seconds.
"echo 0 > /proc/sys= /kernel/hung_task_timeout_secs" disables this message.
khubd=A0=A0=A0=A0=A0=A0=A0=A0 D c06c261c=A0=A0=A0=A0 0=A0=A0=A0 33=A0=A0=A0= =A0=A0 2 0x00000000
Backtrace:
[<c06c2210>] (schedule+0x0/0x50= 0) from [<c0523f4c>] (_xfs_log_force+0x230/0x284)
[<c0523d1c>= ;] (_xfs_log_force+0x0/0x284) from [<c0524194>] (xfs_log_force+0x18/0= x38)
[<c052417c>] (xfs_log_force+0x0/0x38) from [<c0544edc>] (xfs_sy= nc_data+0x48/0x58)
=A0r4:00000001 r3:00000005
[<c0544e94>] (xfs= _sync_data+0x0/0x58) from [<c0544f44>] (xfs_quiesce_data+0x24/0x80) =A0r6:dbd0dd08 r5:00000001 r4:db46e000
[<c0544f20>] (xfs_quiesce_d= ata+0x0/0x80) from [<c0542208>] (xfs_fs_sync_fs+0x24/0xe0)
=A0r6:d= bd0dd08 r5:00000001 r4:db46e000 r3:c05421e4
[<c05421e4>] (xfs_fs_s= ync_fs+0x0/0xe0) from [<c048faf8>] (__sync_filesystem+0x84/0xa0)
=A0r8:0000001f r7:db46eae0 r6:dbd0dd08 r5:00000001 r4:db470200
[<c048= fa74>] (__sync_filesystem+0x0/0xa0) from [<c048fbe0>] (sync_filesy= stem+0x58/0x60)
=A0r5:db470200 r4:db470200
[<c048fb88>] (sync_f= ilesystem+0x0/0x60) from [<c0499124>] (fsync_bdev+0x20/0x44)
=A0r4:db89e0a0 r3:00000006
[<c0499104>] (fsync_bdev+0x0/0x44) from= [<c056c6a0>] (invalidate_partition+0x20/0x3c)
=A0r5:dbdc1a00 r4:d= b89e0a0
[<c056c680>] (invalidate_partition+0x0/0x3c) from [<c04= b8914>] (del_gendisk+0x34/0x140)
=A0r5:dbdc1a00 r4:db470e00
[<c04b88e0>] (del_gendisk+0x0/0x140) fr= om [<c05c78e8>] (sd_remove+0x48/0x84)
=A0r6:db44a5e8 r5:c07e8fc4 r= 4:db46e4c0
[<c05c78a0>] (sd_remove+0x0/0x84) from [<c05b2860>= ;] (__device_release_driver+0x6c/0xac)
=A0r6:60000013 r5:c07e901c r4:db46e4c0 r3:c05c78a0
[<c05b27f4>] (_= _device_release_driver+0x0/0xac) from [<c05b2978>] (device_release_dr= iver+0x24/0x30)
=A0r5:db46e4c0 r4:db46e4f4
[<c05b2954>] (device= _release_driver+0x0/0x30) from [<c05b1e58>] (bus_remove_device+0x7c/0= x8c)
=A0r5:dad9d018 r4:db46e4c0
[<c05b1ddc>] (bus_remove_device+0x0/0x8= c) from [<c05b03f0>] (device_del+0x118/0x170)
=A0r4:db46e4c0 r3:00= 000000
[<c05b02d8>] (device_del+0x0/0x170) from [<c05c4da4>]= (__scsi_remove_device+0x48/0x90)
=A0r6:60000013 r5:db46e4c0 r4:db46e400 r3:c07e8760
[<c05c4d5c>] (_= _scsi_remove_device+0x0/0x90) from [<c05c2404>] (scsi_forget_host+0x4= 8/0x6c)
=A0r5:db46e400 r4:db46e800
[<c05c23bc>] (scsi_forget_ho= st+0x0/0x6c) from [<c05bc408>] (scsi_remove_host+0x7c/0x104)
=A0r5:db46e838 r4:db46e800
[<c05bc38c>] (scsi_remove_host+0x0/0x10= 4) from [<c0612ffc>] (quiesce_and_remove_host+0x68/0x9c)
=A0r6:db4= 6ebb4 r5:db46e800 r4:db46eab8 r3:00000000
[<c0612f94>] (quiesce_an= d_remove_host+0x0/0x9c) from [<c06130d0>] (usb_stor_disconnect+0x1c/0= x28)
=A0r7:c07eb2f4 r6:db46ec00 r5:db49a200 r4:db46eab8
[<c06130b4>] (u= sb_stor_disconnect+0x0/0x28) from [<c0601668>] (usb_unbind_interface+= 0x54/0xdc)
=A0r4:db49a220 r3:c06130b4
[<c0601614>] (usb_unbind_= interface+0x0/0xdc) from [<c05b2860>] (__device_release_driver+0x6c/0= xac)
=A0r7:00000000 r6:db49a200 r5:c07eb2f4 r4:db49a220
[<c05b27f4>] (_= _device_release_driver+0x0/0xac) from [<c05b2978>] (device_release_dr= iver+0x24/0x30)
=A0r5:db49a220 r4:db49a254
[<c05b2954>] (device= _release_driver+0x0/0x30) from [<c05b1e58>] (bus_remove_device+0x7c/0= x8c)
=A0r5:db46ec68 r4:db49a220
[<c05b1ddc>] (bus_remove_device+0x0/0x8= c) from [<c05b03f0>] (device_del+0x118/0x170)
=A0r4:db49a220 r3:00= 000000
[<c05b02d8>] (device_del+0x0/0x170) from [<c05ff0c4>]= (usb_disable_device+0x58/0xf8)
=A0r6:db49a200 r5:00000000 r4:db46ec00 r3:00000005
[<c05ff06c>] (u= sb_disable_device+0x0/0xf8) from [<c05fa978>] (usb_disconnect+0x98/0x= f4)
=A0r7:dbd70200 r6:db46ec68 r5:db46ec9c r4:db46ec00
[<c05fa8e0&= gt;] (usb_disconnect+0x0/0xf4) from [<c05fafbc>] (hub_thread+0x3e4/0x= d78)
[<c05fabd8>] (hub_thread+0x0/0xd78) from [<c041e6a0>] (kthread+= 0x84/0x8c)
[<c041e61c>] (kthread+0x0/0x8c) from [<c040c04c>]= (do_exit+0x0/0x61c)
=A0r7:00000013 r6:c040c04c r5:c041e61c r4:dbc2df24<= br> INFO: task xfslogd/1:40 blocked for more than 120 seconds.=
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disable= s this message.
xfslogd/1=A0=A0=A0=A0 D c06c261c=A0=A0=A0=A0 0=A0=A0=A0 = 40=A0=A0=A0=A0=A0 2 0x00000000
Backtrace:
[<c06c2210>] (schedule+0x0/0x500) from [<c0523f4c&g= t;] (_xfs_log_force+0x230/0x284)
[<c0523d1c>] (_xfs_log_force+0x0/= 0x284) from [<c0524148>] (xfs_log_force_umount+0x1a8/0x1dc)
[<c= 0523fa0>] (xfs_log_force_umount+0x0/0x1dc) from [<c053753c>] (xfs_= do_force_shutdown+0x70/0x164)
[<c05374cc>] (xfs_do_force_shutdown+0x0/0x164) from [<c0507b1c>= ] (xfs_buf_iodone_callbacks+0x14c/0x184)
=A0r7:db469f20 r6:db46e000 r5:d= af58968 r4:db445ec0
[<c05079d0>] (xfs_buf_iodone_callbacks+0x0/0x1= 84) from [<c053b8e0>] (xfs_buf_iodone_work+0x58/0x7c)
=A0r7:c0bed1d0 r6:c053b888 r5:db468000 r4:db445ec0
[<c053b888>] (x= fs_buf_iodone_work+0x0/0x7c) from [<c041a8bc>] (worker_thread+0x154/0= x1e4)
=A0r4:c0bed1c0 r3:00000001
[<c041a768>] (worker_thread+0x= 0/0x1e4) from [<c041e6a0>] (kthread+0x84/0x8c)
[<c041e61c>] (kthread+0x0/0x8c) from [<c040c04c>] (do_exit+0x0/= 0x61c)
=A0r7:00000013 r6:c040c04c r5:c041e61c r4:dbc2decc
INF= O: task sync:164 blocked for more than 120 seconds.
"echo = 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.=
sync=A0=A0=A0=A0=A0=A0=A0=A0=A0 D c06c261c=A0=A0=A0=A0 0=A0=A0 164=A0=A0=A0= 136 0x00000000
Backtrace:
[<c06c2210>] (schedule+0x0/0x500) f= rom [<c06c297c>] (schedule_timeout+0x20/0x200)
[<c06c295c>] = (schedule_timeout+0x0/0x200) from [<c06c20d0>] (wait_for_common+0xd0/= 0x164)
=A0r7:db44534c r6:daed4000 r5:7fffffff r4:db445348
[<c06c2000>] (w= ait_for_common+0x0/0x164) from [<c06c220c>] (wait_for_completion+0x18= /0x1c)
[<c06c21f4>] (wait_for_completion+0x0/0x1c) from [<c053a= 74c>] (xfs_buf_iowait+0x54/0x5c)
[<c053a6f8>] (xfs_buf_iowait+0x0/0x5c) from [<c053bb9c>] (xfs_f= lush_buftarg+0x14c/0x180)
=A0r4:db4452c0 r3:db4452ec
[<c053ba50>= ;] (xfs_flush_buftarg+0x0/0x180) from [<c0544f5c>] (xfs_quiesce_data+= 0x3c/0x80)
=A0r7:c048fb14 r6:00000000 r5:00000001 r4:db46e000
[<c0544f20>] (x= fs_quiesce_data+0x0/0x80) from [<c0542208>] (xfs_fs_sync_fs+0x24/0xe0= )
=A0r6:daed5f84 r5:00000001 r4:db46e000 r3:c05421e4
[<c05421e4>= ;] (xfs_fs_sync_fs+0x0/0xe0) from [<c048faf8>] (__sync_filesystem+0x8= 4/0xa0)
=A0r8:c0394264 r7:c048fb14 r6:daed5f84 r5:00000001 r4:db470200
[<c048= fa74>] (__sync_filesystem+0x0/0xa0) from [<c048fb40>] (sync_one_sb= +0x2c/0x30)
=A0r5:db470240 r4:db470200
[<c048fb14>] (sync_one_s= b+0x0/0x30) from [<c0470ca0>] (iterate_supers+0x74/0xb8)
[<c0470c2c>] (iterate_supers+0x0/0xb8) from [<c048fa30>] (sync_= filesystems+0x20/0x2c)
=A0r7:00000024 r6:bef48db4 r5:00000001 r4:000f78b= e
[<c048fa10>] (sync_filesystems+0x0/0x2c) from [<c048fb68>]= (sys_sync+0x24/0x44)
[<c048fb44>] (sys_sync+0x0/0x44) from [<c03940e0>] (ret_fast_sy= scall+0x0/0x30)

On Analysis:
I found tha= t both the "khubd" and "xfslogd&quo= t; are waiting for signal (sv_wait() (xfs_log.c - _xfs_log_force()= ))
In normal case:
I found that xfslogd does the callback = and signal that through xlog_state_do_callback() ( sv_broadcast(&iclog-= >ic_force_wait) - xfs_log.c);
But during hang, xfslogd itself is wait= ing. So who does the callback in this case?
Is xfslogd supposed to wait(sv_wait(&iclog->ic_force_wait, PINOD, &a= mp;log->l_icloglock, s);) ?

Please let me know in case of any is= sues also update if my analysis is right or wrong. I do not expect a soluti= on but please guide me in my findings.

Thanks & Regards,
Amit Sahrawat

--00163641668771a4ac04a6ec30f7-- From david@fromorbit.com Thu Jun 30 07:19:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5UCJPnB215021 for ; Thu, 30 Jun 2011 07:19:25 -0500 X-ASG-Debug-ID: 1309436362-741501cd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B40BF4E42F1 for ; Thu, 30 Jun 2011 05:19:23 -0700 (PDT) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id 8CNU9ZLnuSllE7jU for ; Thu, 30 Jun 2011 05:19:23 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAOJoDE55LCkB/2dsb2JhbABSp1N4iHi/KA6GIwSibw Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail07.adl2.internode.on.net with ESMTP; 30 Jun 2011 21:49:20 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QcGDG-0003c1-If; Thu, 30 Jun 2011 22:19:18 +1000 Date: Thu, 30 Jun 2011 22:19:18 +1000 From: Dave Chinner To: Amit Sahrawat Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS and USB Hang on 2.6.35.13 Subject: Re: XFS and USB Hang on 2.6.35.13 Message-ID: <20110630121918.GK561@dastard> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1309436364 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE_7582B X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67559 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE_7582B Custom Rule 7582B X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jun 30, 2011 at 04:57:42PM +0530, Amit Sahrawat wrote: > Hi All, > I encountered a hang on XFS during unplug. > *Test Case:* > #!/bin/sh > index=0 > while [ "$?" == 0 ] > do > index=$(($index+1)) > sync > cp /mnt/1KB.txt /tmp/"$index".test > done > Where /mnt - mount point for vfat and /tmp mount point for XFS, both can be > XFS also. > > During this operation, unplug the USB. I am getting HANG almost everytime I > unplug. Well, that's no surprise. The unplug appears to be losing IOs in progress. > *Kernel Version:* 2.6.35.13 (extremely sorry, I know next question will be > why am I not using TOT kernel - I tried but my PC does not boot up with the > latest one) > > *Target=ARM* > *Logs Using Kernel Hung Task Feature* > # sh test.sh > usb 2-1: USB disconnect, address 2 > sd 0:0:0:0: [sda] Unhandled error code > sd 0:0:0:0: [sda] Result: hostbyte=0x01 driverbyte=0x00 > sd 0:0:0:0: [sda] CDB: cdb[0]=0x2a: 2a 00 00 40 08 01 00 00 02 00 > end_request: I/O error, dev sda, sector 4196353 > sd 0:0:0:0: [sda] Unhandled error code > sd 0:0:0:0: [sda] Result: hostbyte=0x01 driverbyte=0x00 > sd 0:0:0:0: [sda] CDB: cdb[0]=0x2a: 2a 00 00 40 08 08 00 00 18 00 > end_request: I/O error, dev sda, sector 4196360 > end_request: I/O error, dev sda, sector 6293645 > Device sda3, XFS metadata write error block 0x1 in sda3 > xfs_force_shutdown(sda3,0x1) called from line 1031 of file > fs/xfs/xfs_buf_item.c. Return address = 0xc0507b1c So the device was unplugged, there was a disconnect error, a few IO errors and then a shutdown. > > *INFO: task khubd:*33 blocked for more than 120 seconds. > "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. > khubd D c06c261c 0 33 2 0x00000000 > Backtrace: > [] (schedule+0x0/0x500) from [] > (_xfs_log_force+0x230/0x284) You need to turn off line wrapping for stuff you paste into email. The cleaned up (i.e. relevant part) trace is: [] (schedule+0x0/0x500) [] (_xfs_log_force+0x0/0x284) [] (xfs_log_force+0x0/0x38) [] (xfs_sync_data+0x0/0x58) [] (xfs_quiesce_data+0x0/0x80) [] (xfs_fs_sync_fs+0x0/0xe0) [] (__sync_filesystem+0x0/0xa0) [] (sync_filesystem+0x0/0x60) [] (fsync_bdev+0x0/0x44) [] (invalidate_partition+0x0/0x3c) [] (del_gendisk+0x0/0x140) [] (sd_remove+0x0/0x84) [] (__device_release_driver+0x0/0xac) [] (device_release_driver+0x0/0x30) [] (bus_remove_device+0x0/0x8c) [] (device_del+0x0/0x170) [] (__scsi_remove_device+0x0/0x90) [] (scsi_forget_host+0x0/0x6c) [] (scsi_remove_host+0x0/0x104) [] (quiesce_and_remove_host+0x0/0x9c) [] (usb_stor_disconnect+0x0/0x28) [] (usb_unbind_interface+0x0/0xdc) [] (__device_release_driver+0x0/0xac) [] (device_release_driver+0x0/0x30) [] (bus_remove_device+0x0/0x8c) [] (device_del+0x0/0x170) [] (usb_disable_device+0x0/0xf8) [] (usb_disconnect+0x0/0xf4) [] (hub_thread+0x0/0xd78) [] (kthread+0x0/0x8c) Well, that just looks utterly braindamaged to me. We just had the device containing the filesystem removed from the system, so the error handling routine ends up trying to sync the filesystem to the device that doesn't exist anymore. WTF? Anyway, that's not the cause of the hang, but just an example of someone not thinking through what their error handling actually does... > *INFO: task xfslogd/1*:40 blocked for more than 120 seconds. > "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. > xfslogd/1 D c06c261c 0 40 2 0x00000000 > Backtrace: [] (schedule+0x0/0x500) [] (_xfs_log_force+0x0/0x284) [] (xfs_log_force_umount+0x0/0x1dc) [] (xfs_do_force_shutdown+0x0/0x164) [] (xfs_buf_iodone_callbacks+0x0/0x184) [] (xfs_buf_iodone_work+0x0/0x7c) [] (worker_thread+0x0/0x1e4) [] (kthread+0x0/0x8c) That's where the shutdown has hung - only the xfslogd can complete the IO that will allow the log force to complete, and that is not occurring because it is waiting for the log force to complete before it can complete the IO that will complete the log force... AFAICT, this problem doesn't exist in TOT - the conversion of the xfslogd workqueue to CMWQ allows processing of other xfslogd workqueue events to continue even though this one has gone to sleep. You probably need to change the shutdown type to SHUTDOWN_LOG_IO_ERROR to prevent a log flush from occurring in this shutdown context. > r7:00000013 r6:c040c04c r5:c041e61c r4:dbc2decc > *INFO: task sync:*164 blocked for more than 120 seconds. > "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. > sync D c06c261c 0 164 136 0x00000000 > Backtrace: [] (schedule+0x0/0x500) [] (schedule_timeout+0x0/0x200) [] (wait_for_common+0x0/0x164) [] (wait_for_completion+0x0/0x1c) [] (xfs_buf_iowait+0x0/0x5c) [] (xfs_flush_buftarg+0x0/0x180) [] (xfs_quiesce_data+0x0/0x80) [] (xfs_fs_sync_fs+0x0/0xe0) [] (__sync_filesystem+0x0/0xa0) [] (sync_one_sb+0x0/0x30) [] (iterate_supers+0x0/0xb8) [] (sync_filesystems+0x0/0x2c) [] (sys_sync+0x0/0x44) And that one is probably stuck waiting for the xfslogd to complete the IO. Cheers, Dave. -- Dave Chinner david@fromorbit.com From aelder@sgi.com Thu Jun 30 07:28:27 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p5UCSRLO217197 for ; Thu, 30 Jun 2011 07:28:27 -0500 Received: from cas.corp.sgi.com (pv-excas2-dc21-nlb.corp.sgi.com [137.38.102.197]) by relay2.corp.sgi.com (Postfix) with ESMTP id 911C9304053; Thu, 30 Jun 2011 05:28:24 -0700 (PDT) Received: from [127.0.0.1] (198.149.20.12) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.289.1; Thu, 30 Jun 2011 07:28:24 -0500 Subject: Re: [PATCH 06/27] xfs: split xfs_setattr From: Alex Elder Reply-To: To: Christoph Hellwig CC: In-Reply-To: <20110630070333.GC10893@infradead.org> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140337.641422449@bombadil.infradead.org> <1309385596.8649.36.camel@doink> <20110630070333.GC10893@infradead.org> Content-Type: text/plain; charset="UTF-8" Date: Thu, 30 Jun 2011 07:28:23 -0500 Message-ID: <1309436903.3001.3.camel@doink> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit X-Originating-IP: [198.149.20.12] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, 2011-06-30 at 03:03 -0400, Christoph Hellwig wrote: > On Wed, Jun 29, 2011 at 05:13:16PM -0500, Alex Elder wrote: > > Looks good but I think that you need to mask off the > > ia_valid bits in the calls now made in xfs_vn_setattr(). > > Why? We call xfs_setattr_size if ATTR_SIZE is set. The ATTR_SIZE > may also have a few other attributes we can handle, and assert on > those that it can't just to make sure. Similarly xfs_setattr_nonsize > can handle everything but ATTR_SIZE, and again we have an assert to > protect against breeding incorrect XFS-internal callers. OK. I didn't go that far back, or at least didn't check all the notify_change() calls. I now have, and although I'm not 100% sure on encryptfs and nfsd setattr it looks like you're right. That basically explains all of my comments--the VFS prevents those conditions from occurring, and therefore an assertion to communicate and enforce that is proper. Reviewed-by: Alex Elder > > Also, I think you may still need to check the file type > > for the size-setting function. Details below. > > The VFS only ever does an ATTR_SIZE setattr on regular files. We have > an assert to ensure that for debug builds, which is a lot more than > most other filesystems do. > > > > + ASSERT((mask & (ATTR_MODE|ATTR_UID|ATTR_GID|ATTR_ATIME|ATTR_ATIME_SET| > > > + ATTR_MTIME_SET|ATTR_KILL_SUID|ATTR_KILL_SGID| > > > + ATTR_KILL_PRIV|ATTR_TIMES_SET)) == 0); > > > > You'll have to mask these off in xfs_vn_setattr() if you're > > going to make this assertion. > > No, this is the (implicit) calling convention by the VFS. > > > > - if (S_ISDIR(ip->i_d.di_mode)) { > > > - code = XFS_ERROR(EISDIR); > > > - goto error_return; > > > - } else if (!S_ISREG(ip->i_d.di_mode)) { > > > - code = XFS_ERROR(EINVAL); > > > - goto error_return; > > > - } > > > > This is the file type checking code I referred to above. > > It simply was a leftover from IRIX that we can't hit on Linux. > From BATV+e11cde4e9d21b258205a+2867+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 30 15:16:36 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_62,J_CHICKENPOX_63,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 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 p5UKGZdR254360 for ; Thu, 30 Jun 2011 15:16:36 -0500 X-ASG-Debug-ID: 1309464988-16d301920000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C582243A1A for ; Thu, 30 Jun 2011 13:16:29 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id RPbF7JuY5DAhHr6m for ; Thu, 30 Jun 2011 13:16:29 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QcNf2-0005Ha-E2 for xfs@oss.sgi.com; Thu, 30 Jun 2011 20:16:28 +0000 Date: Thu, 30 Jun 2011 16:16:28 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfs_repair: add printf format checking and fix the fallout Subject: [PATCH] xfs_repair: add printf format checking and fix the fallout Message-ID: <20110630201628.GA20239@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309464989 X-Barracuda-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=BSF_SC5_MJ1963, BSF_SC5_SA210e, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67591 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 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 Add the gcc printf like attribute to the xfs_repair-internal logging helpers, and fix the massive fallout. A large part of it is dealing with the correct format for fixed size 64-bit types, but there were a lot of real bug in there, including some that lead to crashed when repairing certain corrupted filesystems on ARM based systems. Signed-off-by: Christoph Hellwig Reported-by: Anisse Astier Index: xfsprogs-dev/repair/err_protos.h =================================================================== --- xfsprogs-dev.orig/repair/err_protos.h 2011-06-30 22:03:18.592845743 +0200 +++ xfsprogs-dev/repair/err_protos.h 2011-06-30 22:03:24.649512334 +0200 @@ -17,10 +17,14 @@ */ /* abort, internal error */ -void __attribute__((noreturn)) do_abort(char const *, ...); +void __attribute__((noreturn)) do_abort(char const *, ...) + __attribute__((format(printf,1,2))); /* abort, system error */ -void __attribute__((noreturn)) do_error(char const *, ...); +void __attribute__((noreturn)) do_error(char const *, ...) + __attribute__((format(printf,1,2))); /* issue warning */ -void do_warn(char const *, ...); +void do_warn(char const *, ...) + __attribute__((format(printf,1,2))); /* issue log message */ -void do_log(char const *, ...); +void do_log(char const *, ...) + __attribute__((format(printf,1,2))); Index: xfsprogs-dev/repair/xfs_repair.c =================================================================== --- xfsprogs-dev.orig/repair/xfs_repair.c 2011-06-30 22:03:18.602845744 +0200 +++ xfsprogs-dev/repair/xfs_repair.c 2011-06-30 22:03:24.652845668 +0200 @@ -457,18 +457,18 @@ calc_mkfs(xfs_mount_t *mp) */ if (mp->m_sb.sb_rootino != first_prealloc_ino) { do_warn( -_("sb root inode value %llu %sinconsistent with calculated value %lu\n"), +_("sb root inode value %" PRIu64 " %sinconsistent with calculated value %u\n"), mp->m_sb.sb_rootino, (mp->m_sb.sb_rootino == NULLFSINO ? "(NULLFSINO) ":""), first_prealloc_ino); if (!no_modify) do_warn( - _("resetting superblock root inode pointer to %lu\n"), + _("resetting superblock root inode pointer to %u\n"), first_prealloc_ino); else do_warn( - _("would reset superblock root inode pointer to %lu\n"), + _("would reset superblock root inode pointer to %u\n"), first_prealloc_ino); /* @@ -480,18 +480,18 @@ _("sb root inode value %llu %sinconsiste if (mp->m_sb.sb_rbmino != first_prealloc_ino + 1) { do_warn( -_("sb realtime bitmap inode %llu %sinconsistent with calculated value %lu\n"), +_("sb realtime bitmap inode %" PRIu64 " %sinconsistent with calculated value %u\n"), mp->m_sb.sb_rbmino, (mp->m_sb.sb_rbmino == NULLFSINO ? "(NULLFSINO) ":""), first_prealloc_ino + 1); if (!no_modify) do_warn( - _("resetting superblock realtime bitmap ino pointer to %lu\n"), + _("resetting superblock realtime bitmap ino pointer to %u\n"), first_prealloc_ino + 1); else do_warn( - _("would reset superblock realtime bitmap ino pointer to %lu\n"), + _("would reset superblock realtime bitmap ino pointer to %u\n"), first_prealloc_ino + 1); /* @@ -503,18 +503,18 @@ _("sb realtime bitmap inode %llu %sincon if (mp->m_sb.sb_rsumino != first_prealloc_ino + 2) { do_warn( -_("sb realtime summary inode %llu %sinconsistent with calculated value %lu\n"), - mp->m_sb.sb_rsumino, - (mp->m_sb.sb_rsumino == NULLFSINO ? "(NULLFSINO) ":""), - first_prealloc_ino + 2); +_("sb realtime summary inode %" PRIu64 " %sinconsistent with calculated value %u\n"), + mp->m_sb.sb_rsumino, + (mp->m_sb.sb_rsumino == NULLFSINO ? "(NULLFSINO) ":""), + first_prealloc_ino + 2); if (!no_modify) do_warn( - _("resetting superblock realtime summary ino pointer to %lu\n"), + _("resetting superblock realtime summary ino pointer to %u\n"), first_prealloc_ino + 2); else do_warn( - _("would reset superblock realtime summary ino pointer to %lu\n"), + _("would reset superblock realtime summary ino pointer to %u\n"), first_prealloc_ino + 2); /* @@ -644,8 +644,8 @@ main(int argc, char **argv) max_mem = MIN(max_mem, (LONG_MAX >> 10) + 1); if (verbose > 1) - do_log(_(" - max_mem = %lu, icount = %llu, " - "imem = %llu, dblock = %llu, dmem = %llu\n"), + do_log( + _(" - max_mem = %lu, icount = %" PRIu64 ", imem = %" PRIu64 ", dblock = %" PRIu64 ", dmem = %" PRIu64 "\n"), max_mem, mp->m_sb.sb_icount, mp->m_sb.sb_icount >> (10 - 2), mp->m_sb.sb_dblocks, Index: xfsprogs-dev/include/linux.h =================================================================== --- xfsprogs-dev.orig/include/linux.h 2011-06-30 22:03:18.796179074 +0200 +++ xfsprogs-dev/include/linux.h 2011-06-30 22:03:24.652845668 +0200 @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include Index: xfsprogs-dev/repair/agheader.c =================================================================== --- xfsprogs-dev.orig/repair/agheader.c 2011-06-30 22:03:18.612845744 +0200 +++ xfsprogs-dev/repair/agheader.c 2011-06-30 22:07:38.649509180 +0200 @@ -73,7 +73,7 @@ verify_set_agf(xfs_mount_t *mp, xfs_agf_ if (be32_to_cpu(agf->agf_length) != agblocks) { retval = XR_AG_AGF; do_warn( - _("bad length %d for agf %d, should be %llu\n"), + _("bad length %d for agf %d, should be %" PRIu64 "\n"), be32_to_cpu(agf->agf_length), i, agblocks); if (!no_modify) @@ -87,15 +87,17 @@ verify_set_agf(xfs_mount_t *mp, xfs_agf_ * space in the AGFL, we'll reclaim it later. */ if (be32_to_cpu(agf->agf_flfirst) >= XFS_AGFL_SIZE(mp)) { - do_warn(_("flfirst %d in agf %d too large (max = %d)\n"), - be32_to_cpu(agf->agf_flfirst), i, XFS_AGFL_SIZE(mp)); + do_warn(_("flfirst %d in agf %d too large (max = %zu)\n"), + be32_to_cpu(agf->agf_flfirst), + i, XFS_AGFL_SIZE(mp)); if (!no_modify) agf->agf_flfirst = cpu_to_be32(0); } if (be32_to_cpu(agf->agf_fllast) >= XFS_AGFL_SIZE(mp)) { - do_warn(_("fllast %d in agf %d too large (max = %d)\n"), - be32_to_cpu(agf->agf_fllast), i, XFS_AGFL_SIZE(mp)); + do_warn(_("fllast %d in agf %d too large (max = %zu)\n"), + be32_to_cpu(agf->agf_fllast), + i, XFS_AGFL_SIZE(mp)); if (!no_modify) agf->agf_fllast = cpu_to_be32(0); } @@ -156,7 +158,7 @@ verify_set_agi(xfs_mount_t *mp, xfs_agi_ if (be32_to_cpu(agi->agi_length) != agblocks) { retval = XR_AG_AGI; do_warn( - _("bad length # %d for agi %d, should be %llu\n"), + _("bad length # %d for agi %d, should be %" PRIu64 "\n"), be32_to_cpu(agi->agi_length), agno, agblocks); if (!no_modify) Index: xfsprogs-dev/repair/progress.c =================================================================== --- xfsprogs-dev.orig/repair/progress.c 2011-06-30 22:03:18.626179076 +0200 +++ xfsprogs-dev/repair/progress.c 2011-06-30 22:03:24.659512335 +0200 @@ -261,7 +261,7 @@ progress_rpt_thread (void *p) current_phase, duration(elapsed, msgbuf), (int) (60*sum/(elapsed)), *msgp->format->type); do_log( - _("\t- %02d:%02d:%02d: Phase %d: %llu%% done - estimated remaining time %s\n"), + _("\t- %02d:%02d:%02d: Phase %d: %" PRIu64 "%% done - estimated remaining time %s\n"), tmp->tm_hour, tmp->tm_min, tmp->tm_sec, current_phase, percent, duration((int) ((*msgp->total - sum) * (elapsed)/sum), msgbuf)); Index: xfsprogs-dev/repair/sb.c =================================================================== --- xfsprogs-dev.orig/repair/sb.c 2011-06-30 22:03:18.636179077 +0200 +++ xfsprogs-dev/repair/sb.c 2011-06-30 22:03:24.662845668 +0200 @@ -488,7 +488,7 @@ get_sb(xfs_sb_t *sbp, xfs_off_t off, int if (buf == NULL) { do_error( _("error reading superblock %u -- failed to memalign buffer\n"), - agno, off); + agno); exit(1); } memset(buf, 0, size); @@ -497,7 +497,7 @@ get_sb(xfs_sb_t *sbp, xfs_off_t off, int if (lseek64(x.dfd, off, SEEK_SET) != off) { do_warn( - _("error reading superblock %u -- seek to offset %lld failed\n"), + _("error reading superblock %u -- seek to offset %" PRId64 " failed\n"), agno, off); return(XR_EOF); } @@ -505,7 +505,7 @@ get_sb(xfs_sb_t *sbp, xfs_off_t off, int if ((rval = read(x.dfd, buf, size)) != size) { error = errno; do_warn( - _("superblock read failed, offset %lld, size %d, ag %u, rval %d\n"), + _("superblock read failed, offset %" PRId64 ", size %d, ag %u, rval %d\n"), off, size, agno, rval); do_error("%s\n", strerror(error)); } Index: xfsprogs-dev/repair/bmap.c =================================================================== --- xfsprogs-dev.orig/repair/bmap.c 2011-06-30 22:03:18.646179077 +0200 +++ xfsprogs-dev/repair/bmap.c 2011-06-30 22:03:24.662845668 +0200 @@ -52,7 +52,7 @@ blkmap_alloc( if (!blkmap || blkmap->naexts < nex) { blkmap = realloc(blkmap, BLKMAP_SIZE(nex)); if (!blkmap) { - do_warn(_("malloc failed in blkmap_alloc (%u bytes)\n"), + do_warn(_("malloc failed in blkmap_alloc (%zu bytes)\n"), BLKMAP_SIZE(nex)); return NULL; } @@ -141,7 +141,7 @@ blkmap_getn( */ bmp = malloc(nb * sizeof(bmap_ext_t)); if (!bmp) - do_error(_("blkmap_getn malloc failed (%u bytes)\n"), + do_error(_("blkmap_getn malloc failed (%" PRIu64 " bytes)\n"), nb * sizeof(bmap_ext_t)); bmp[nex].startblock = ext->startblock + (o - ext->startoff); Index: xfsprogs-dev/repair/incore.c =================================================================== --- xfsprogs-dev.orig/repair/incore.c 2011-06-30 22:03:18.659512409 +0200 +++ xfsprogs-dev/repair/incore.c 2011-06-30 22:03:24.666179001 +0200 @@ -227,7 +227,7 @@ init_rt_bmap( rt_bmap = memalign(sizeof(__uint64_t), rt_bmap_size); if (!rt_bmap) { do_error( - _("couldn't allocate realtime block map, size = %llu\n"), + _("couldn't allocate realtime block map, size = %" PRIu64 "\n"), mp->m_sb.sb_rextents); return; } Index: xfsprogs-dev/repair/phase7.c =================================================================== --- xfsprogs-dev.orig/repair/phase7.c 2011-06-30 22:03:18.669512409 +0200 +++ xfsprogs-dev/repair/phase7.c 2011-06-30 22:03:24.666179001 +0200 @@ -40,19 +40,19 @@ set_nlinks( if (!no_modify) { *dirty = 1; - do_warn(_("resetting inode %llu nlinks from %d to %d\n"), + do_warn(_("resetting inode %" PRIu64 " nlinks from %d to %d\n"), ino, dinoc->di_nlink, nrefs); if (nrefs > XFS_MAXLINK_1) { ASSERT(fs_inode_nlink); do_warn( -_("nlinks %d will overflow v1 ino, ino %llu will be converted to version 2\n"), +_("nlinks %d will overflow v1 ino, ino %" PRIu64 " will be converted to version 2\n"), nrefs, ino); } dinoc->di_nlink = nrefs; } else { - do_warn(_("would have reset inode %llu nlinks from %d to %d\n"), + do_warn(_("would have reset inode %" PRIu64 " nlinks from %d to %d\n"), ino, dinoc->di_nlink, nrefs); } } @@ -80,11 +80,12 @@ update_inode_nlinks( if (error) { if (!no_modify) - do_error(_("couldn't map inode %llu, err = %d\n"), + do_error( + _("couldn't map inode %" PRIu64 ", err = %d\n"), ino, error); else { do_warn( - _("couldn't map inode %llu, err = %d, can't compare link counts\n"), + _("couldn't map inode %" PRIu64 ", err = %d, can't compare link counts\n"), ino, error); return; } Index: xfsprogs-dev/repair/attr_repair.c =================================================================== --- xfsprogs-dev.orig/repair/attr_repair.c 2011-06-30 22:03:18.679512410 +0200 +++ xfsprogs-dev/repair/attr_repair.c 2011-06-30 22:03:24.669512334 +0200 @@ -170,7 +170,7 @@ process_shortform_attr( /* whoops there's a discrepancy. Clear the hdr */ if (!no_modify) { do_warn( - _("there are no attributes in the fork for inode %llu\n"), + _("there are no attributes in the fork for inode %" PRIu64 "\n"), ino); asf->hdr.totsize = cpu_to_be16(sizeof(xfs_attr_sf_hdr_t)); @@ -178,7 +178,7 @@ process_shortform_attr( return(1); } else { do_warn( - _("would junk the attribute fork since count is 0 for inode %llu\n"), + _("would junk the attribute fork since count is 0 for inode %" PRIu64 "\n"), ino); return(1); } @@ -201,12 +201,12 @@ process_shortform_attr( do_warn(_("zero length name entry in attribute fork,")); if (!no_modify) { do_warn( - _(" truncating attributes for inode %llu to %d\n"), ino, i); + _(" truncating attributes for inode %" PRIu64 " to %d\n"), ino, i); *repair = 1; break; /* and then update hdr fields */ } else { do_warn( - _(" would truncate attributes for inode %llu to %d\n"), ino, i); + _(" would truncate attributes for inode %" PRIu64 " to %d\n"), ino, i); break; } } else { @@ -218,16 +218,16 @@ process_shortform_attr( ((remainingspace - currententry-> namelen) < currententry->valuelen)) { do_warn( - _("name or value attribute lengths are too large,\n")); + _("name or value attribute lengths are too large,\n")); if (!no_modify) { do_warn( - _(" truncating attributes for inode %llu to %d\n"), + _(" truncating attributes for inode %" PRIu64 " to %d\n"), ino, i); *repair = 1; break; /* and then update hdr fields */ } else { do_warn( - _(" would truncate attributes for inode %llu to %d\n"), + _(" would truncate attributes for inode %" PRIu64 " to %d\n"), ino, i); break; } @@ -263,7 +263,7 @@ process_shortform_attr( if (!no_modify) { /* get rid of only this entry */ do_warn( - _("removing attribute entry %d for inode %llu\n"), + _("removing attribute entry %d for inode %" PRIu64 "\n"), i, ino); tempentry = (xfs_attr_sf_entry_t *) ((__psint_t) currententry + @@ -275,7 +275,7 @@ process_shortform_attr( continue; /* go back up now */ } else { do_warn( - _("would remove attribute entry %d for inode %llu\n"), + _("would remove attribute entry %d for inode %" PRIu64 "\n"), i, ino); } } @@ -289,12 +289,12 @@ process_shortform_attr( if (asf->hdr.count != i) { if (no_modify) { - do_warn(_("would have corrected attribute entry count " - "in inode %llu from %d to %d\n"), + do_warn( + _("would have corrected attribute entry count in inode %" PRIu64 " from %d to %d\n"), ino, asf->hdr.count, i); } else { - do_warn(_("corrected attribute entry count in inode " - "%llu, was %d, now %d\n"), + do_warn( + _("corrected attribute entry count in inode %" PRIu64 ", was %d, now %d\n"), ino, asf->hdr.count, i); asf->hdr.count = i; *repair = 1; @@ -304,13 +304,13 @@ process_shortform_attr( /* ASSUMPTION: currentsize <= totsize */ if (be16_to_cpu(asf->hdr.totsize) != currentsize) { if (no_modify) { - do_warn(_("would have corrected attribute totsize in " - "inode %llu from %d to %d\n"), + do_warn( + _("would have corrected attribute totsize in inode %" PRIu64 " from %d to %d\n"), ino, be16_to_cpu(asf->hdr.totsize), currentsize); } else { - do_warn(_("corrected attribute entry totsize in " - "inode %llu, was %d, now %d\n"), + do_warn( + _("corrected attribute entry totsize in inode %" PRIu64 ", was %d, now %d\n"), ino, be16_to_cpu(asf->hdr.totsize), currentsize); asf->hdr.totsize = cpu_to_be16(currentsize); @@ -339,16 +339,16 @@ rmtval_get(xfs_mount_t *mp, xfs_ino_t in while (amountdone < valuelen) { bno = blkmap_get(blkmap, blocknum + i); if (bno == NULLDFSBNO) { - do_warn(_("remote block for attributes of inode %llu" - " is missing\n"), ino); + do_warn( + _("remote block for attributes of inode %" PRIu64 " is missing\n"), ino); clearit = 1; break; } bp = libxfs_readbuf(mp->m_dev, XFS_FSB_TO_DADDR(mp, bno), XFS_FSB_TO_BB(mp, 1), 0); if (!bp) { - do_warn(_("can't read remote block for attributes" - " of inode %llu\n"), ino); + do_warn( + _("can't read remote block for attributes of inode %" PRIu64 "\n"), ino); clearit = 1; break; } @@ -391,8 +391,8 @@ process_leaf_attr_local( local = XFS_ATTR_LEAF_NAME_LOCAL(leaf, i); if (local->namelen == 0 || namecheck((char *)&local->nameval[0], local->namelen)) { - do_warn(_("attribute entry %d in attr block %u, inode %llu " - "has bad name (namelen = %d)\n"), + do_warn( + _("attribute entry %d in attr block %u, inode %" PRIu64 " has bad name (namelen = %d)\n"), i, da_bno, ino, local->namelen); return -1; } @@ -408,8 +408,9 @@ process_leaf_attr_local( if (be32_to_cpu(entry->hashval) != libxfs_da_hashname( &local->nameval[0], local->namelen) || be32_to_cpu(entry->hashval) < last_hashval) { - do_warn(_("bad hashvalue for attribute entry %d in " - "attr block %u, inode %llu\n"), i, da_bno, ino); + do_warn( + _("bad hashvalue for attribute entry %d in attr block %u, inode %" PRIu64 "\n"), + i, da_bno, ino); return -1; } @@ -417,8 +418,8 @@ process_leaf_attr_local( if (entry->flags & XFS_ATTR_ROOT) { if (valuecheck((char *)&local->nameval[0], NULL, local->namelen, be16_to_cpu(local->valuelen))) { - do_warn(_("bad security value for attribute entry %d " - "in attr block %u, inode %llu\n"), + do_warn( + _("bad security value for attribute entry %d in attr block %u, inode %" PRIu64 "\n"), i, da_bno, ino); return -1; } @@ -450,8 +451,8 @@ process_leaf_attr_remote( remotep->namelen) || be32_to_cpu(entry->hashval) < last_hashval || be32_to_cpu(remotep->valueblk) == 0) { - do_warn(_("inconsistent remote attribute entry %d in " - "attr block %u, ino %llu\n"), i, da_bno, ino); + do_warn( + _("inconsistent remote attribute entry %d in attr block %u, ino %" PRIu64 "\n"), i, da_bno, ino); return -1; } @@ -460,21 +461,24 @@ process_leaf_attr_remote( value = malloc(be32_to_cpu(remotep->valuelen)); if (value == NULL) { - do_warn(_("cannot malloc enough for remotevalue attribute " - "for inode %llu\n"), ino); + do_warn( + _("cannot malloc enough for remotevalue attribute for inode %" PRIu64 "\n"), + ino); do_warn(_("SKIPPING this remote attribute\n")); goto out; } if (rmtval_get(mp, ino, blkmap, be32_to_cpu(remotep->valueblk), be32_to_cpu(remotep->valuelen), value)) { - do_warn(_("remote attribute get failed for entry %d, " - "inode %llu\n"), i, ino); + do_warn( + _("remote attribute get failed for entry %d, inode %" PRIu64 "\n"), + i, ino); goto bad_free_out; } if (valuecheck((char *)&remotep->name[0], value, remotep->namelen, be32_to_cpu(remotep->valuelen))) { - do_warn(_("remote attribute value check failed for entry %d, " - "inode %llu\n"), i, ino); + do_warn( + _("remote attribute value check failed for entry %d, inode %" PRIu64 "\n"), + i, ino); goto bad_free_out; } free(value); @@ -510,7 +514,7 @@ process_leaf_attr_block( if (be16_to_cpu(leaf->hdr.count) * sizeof(xfs_attr_leaf_entry_t) + sizeof(xfs_attr_leaf_hdr_t) > XFS_LBSIZE(mp)) { do_warn( - _("bad attribute count %d in attr block %u, inode %llu\n"), + _("bad attribute count %d in attr block %u, inode %" PRIu64 "\n"), be16_to_cpu(leaf->hdr.count), da_bno, ino); return (1); } @@ -525,7 +529,7 @@ process_leaf_attr_block( /* check if index is within some boundary. */ if (be16_to_cpu(entry->nameidx) > XFS_LBSIZE(mp)) { do_warn( - _("bad attribute nameidx %d in attr block %u, inode %llu\n"), + _("bad attribute nameidx %d in attr block %u, inode %" PRIu64 "\n"), be16_to_cpu(entry->nameidx), da_bno, ino); clearit = 1; break; @@ -534,7 +538,7 @@ process_leaf_attr_block( if (entry->flags & XFS_ATTR_INCOMPLETE) { /* we are inconsistent state. get rid of us */ do_warn( - _("attribute entry #%d in attr block %u, inode %llu is INCOMPLETE\n"), + _("attribute entry #%d in attr block %u, inode %" PRIu64 " is INCOMPLETE\n"), i, da_bno, ino); clearit = 1; break; @@ -545,8 +549,7 @@ process_leaf_attr_block( stop = start + sizeof(xfs_attr_leaf_entry_t); if (set_da_freemap(mp, attr_freemap, start, stop)) { do_warn( - _("attribute entry %d in attr block %u, inode %llu claims " - "already used space\n"), + _("attribute entry %d in attr block %u, inode %" PRIu64 " claims already used space\n"), i, da_bno, ino); clearit = 1; break; /* got an overlap */ @@ -568,8 +571,8 @@ process_leaf_attr_block( if (set_da_freemap(mp, attr_freemap, be16_to_cpu(entry->nameidx), be16_to_cpu(entry->nameidx) + thissize)) { - do_warn(_("attribute entry %d in attr block %u, " - "inode %llu claims used space\n"), + do_warn( + _("attribute entry %d in attr block %u, inode %" PRIu64 " claims used space\n"), i, da_bno, ino); clearit = 1; break; /* got an overlap */ @@ -594,7 +597,7 @@ process_leaf_attr_block( if (!no_modify) { do_warn( _("- resetting first used heap value from %d to %d in " - "block %u of attribute fork of inode %llu\n"), + "block %u of attribute fork of inode %" PRIu64 "\n"), be16_to_cpu(leaf->hdr.firstused), firstb, da_bno, ino); leaf->hdr.firstused = cpu_to_be16(firstb); @@ -602,7 +605,7 @@ process_leaf_attr_block( } else { do_warn( _("- would reset first used value from %d to %d in " - "block %u of attribute fork of inode %llu\n"), + "block %u of attribute fork of inode %" PRIu64 "\n"), be16_to_cpu(leaf->hdr.firstused), firstb, da_bno, ino); } @@ -612,7 +615,7 @@ process_leaf_attr_block( if (!no_modify) { do_warn( _("- resetting usedbytes cnt from %d to %d in " - "block %u of attribute fork of inode %llu\n"), + "block %u of attribute fork of inode %" PRIu64 "\n"), be16_to_cpu(leaf->hdr.usedbytes), usedbs, da_bno, ino); leaf->hdr.usedbytes = cpu_to_be16(usedbs); @@ -620,7 +623,7 @@ process_leaf_attr_block( } else { do_warn( _("- would reset usedbytes cnt from %d to %d in " - "block %u of attribute fork of %llu\n"), + "block %u of attribute fork of %" PRIu64 "\n"), be16_to_cpu(leaf->hdr.usedbytes), usedbs, da_bno, ino); } @@ -668,16 +671,17 @@ process_leaf_attr_level(xfs_mount_t *mp, ASSERT(da_bno != 0); if (dev_bno == NULLDFSBNO) { - do_warn(_("can't map block %u for attribute fork " - "for inode %llu\n"), da_bno, ino); + do_warn( + _("can't map block %u for attribute fork for inode %" PRIu64 "\n"), + da_bno, ino); goto error_out; } bp = libxfs_readbuf(mp->m_dev, XFS_FSB_TO_DADDR(mp, dev_bno), XFS_FSB_TO_BB(mp, 1), 0); if (!bp) { - do_warn(_("can't read file block %u (fsbno %llu) for" - " attribute fork of inode %llu\n"), + do_warn( + _("can't read file block %u (fsbno %" PRIu64 ") for attribute fork of inode %" PRIu64 "\n"), da_bno, dev_bno, ino); goto error_out; } @@ -686,8 +690,8 @@ process_leaf_attr_level(xfs_mount_t *mp, /* check magic number for leaf directory btree block */ if (be16_to_cpu(leaf->hdr.info.magic) != XFS_ATTR_LEAF_MAGIC) { - do_warn(_("bad attribute leaf magic %#x " - "for inode %llu\n"), + do_warn( + _("bad attribute leaf magic %#x for inode %" PRIu64 "\n"), leaf->hdr.info.magic, ino); libxfs_putbuf(bp); goto error_out; @@ -717,8 +721,8 @@ process_leaf_attr_level(xfs_mount_t *mp, da_cursor->level[0].dirty = repair; if (be32_to_cpu(leaf->hdr.info.back) != prev_bno) { - do_warn(_("bad sibling back pointer for block %u in " - "attribute fork for inode %llu\n"), + do_warn( + _("bad sibling back pointer for block %u in attribute fork for inode %" PRIu64 "\n"), da_bno, ino); libxfs_putbuf(bp); goto error_out; @@ -744,7 +748,8 @@ process_leaf_attr_level(xfs_mount_t *mp, /* * verify the final path up (right-hand-side) if still ok */ - do_warn(_("bad hash path in attribute fork for inode %llu\n"), + do_warn( + _("bad hash path in attribute fork for inode %" PRIu64 "\n"), da_cursor->ino); goto error_out; } @@ -843,21 +848,23 @@ process_longform_attr( if (dip->di_core.di_aformat == XFS_DINODE_FMT_EXTENTS && be16_to_cpu(dip->di_core.di_anextents) == 0) return(0); /* the kernel can handle this state */ - do_warn(_("block 0 of inode %llu attribute fork is missing\n"), + do_warn( + _("block 0 of inode %" PRIu64 " attribute fork is missing\n"), ino); return(1); } /* FIX FOR bug 653709 -- EKN */ if (mp->m_sb.sb_agcount < XFS_FSB_TO_AGNO(mp, bno)) { - do_warn(_("agno of attribute fork of inode %llu out of " - "regular partition\n"), ino); + do_warn( + _("agno of attribute fork of inode %" PRIu64 " out of regular partition\n"), ino); return(1); } bp = libxfs_readbuf(mp->m_dev, XFS_FSB_TO_DADDR(mp, bno), XFS_FSB_TO_BB(mp, 1), 0); if (!bp) { - do_warn(_("can't read block 0 of inode %llu attribute fork\n"), + do_warn( + _("can't read block 0 of inode %" PRIu64 " attribute fork\n"), ino); return(1); } @@ -871,14 +878,15 @@ process_longform_attr( if (be32_to_cpu(leaf->hdr.info.forw) != 0 || be32_to_cpu(leaf->hdr.info.back) != 0) { if (!no_modify) { - do_warn(_("clearing forw/back pointers in block 0 " - "for attributes in inode %llu\n"), ino); + do_warn( + _("clearing forw/back pointers in block 0 for attributes in inode %" PRIu64 "\n"), + ino); repairlinks = 1; leaf->hdr.info.forw = cpu_to_be32(0); leaf->hdr.info.back = cpu_to_be32(0); } else { - do_warn(_("would clear forw/back pointers in block 0 " - "for attributes in inode %llu\n"), ino); + do_warn( + _("would clear forw/back pointers in block 0 for attributes in inode %" PRIu64 "\n"), ino); } } @@ -907,7 +915,8 @@ process_longform_attr( libxfs_putbuf(bp); return (process_node_attr(mp, ino, dip, blkmap)); /* + repair */ default: - do_warn(_("bad attribute leaf magic # %#x for dir ino %llu\n"), + do_warn( + _("bad attribute leaf magic # %#x for dir ino %" PRIu64 "\n"), be16_to_cpu(leaf->hdr.info.magic), ino); libxfs_putbuf(bp); return(1); @@ -974,7 +983,7 @@ process_attributes( /* if err, convert this to shortform and clear it */ /* if repair and no error, it's taken care of */ } else { - do_warn(_("illegal attribute format %d, ino %llu\n"), + do_warn(_("illegal attribute format %d, ino %" PRIu64 "\n"), aformat, ino); err = 1; } Index: xfsprogs-dev/repair/dino_chunks.c =================================================================== --- xfsprogs-dev.orig/repair/dino_chunks.c 2011-06-30 22:03:18.692845742 +0200 +++ xfsprogs-dev/repair/dino_chunks.c 2011-06-30 22:03:24.669512334 +0200 @@ -56,8 +56,8 @@ check_aginode_block(xfs_mount_t *mp, bp = libxfs_readbuf(mp->m_dev, XFS_AGB_TO_DADDR(mp, agno, agbno), XFS_FSB_TO_BB(mp, 1), 0); if (!bp) { - do_warn(_("cannot read agbno (%u/%u), disk block %lld\n"), agno, - agbno, (xfs_daddr_t)XFS_AGB_TO_DADDR(mp, agno, agbno)); + do_warn(_("cannot read agbno (%u/%u), disk block %" PRId64 "\n"), + agno, agbno, XFS_AGB_TO_DADDR(mp, agno, agbno)); return(0); } @@ -444,14 +444,14 @@ verify_inode_chunk(xfs_mount_t *mp, case XR_E_INUSE_FS: case XR_E_FS_MAP: do_warn( - _("inode block %d/%d multiply claimed, (state %d)\n"), + _("inode block %d/%d multiply claimed, (state %d)\n"), agno, cur_agbno, state); set_bmap_ext(agno, cur_agbno, blen, XR_E_MULT); pthread_mutex_unlock(&ag_locks[agno]); return 0; case XR_E_INO: do_error( - _("uncertain inode block overlap, agbno = %d, ino = %llu\n"), + _("uncertain inode block overlap, agbno = %d, ino = %" PRIu64 "\n"), agbno, ino); break; default: @@ -490,7 +490,7 @@ verify_inode_chunk(xfs_mount_t *mp, switch (state) { case XR_E_INO: do_error( - _("uncertain inode block %llu already known\n"), + _("uncertain inode block %" PRIu64 " already known\n"), XFS_AGB_TO_FSB(mp, agno, cur_agbno)); break; case XR_E_UNKNOWN: @@ -593,6 +593,7 @@ process_inode_chunk( int ibuf_offset; xfs_agino_t agino; xfs_agblock_t agbno; + xfs_ino_t ino; int dirty = 0; int isa_dir = 0; int blks_per_cluster; @@ -626,21 +627,21 @@ process_inode_chunk( bplist = malloc(cluster_count * sizeof(xfs_buf_t *)); if (bplist == NULL) - do_error(_("failed to allocate %d bytes of memory\n"), - cluster_count * sizeof(xfs_buf_t*)); + do_error(_("failed to allocate %zd bytes of memory\n"), + cluster_count * sizeof(xfs_buf_t *)); for (bp_index = 0; bp_index < cluster_count; bp_index++) { pftrace("about to read off %llu in AG %d", - (long long)XFS_AGB_TO_DADDR(mp, agno, agbno), agno); + XFS_AGB_TO_DADDR(mp, agno, agbno), agno); bplist[bp_index] = libxfs_readbuf(mp->m_dev, XFS_AGB_TO_DADDR(mp, agno, agbno), XFS_FSB_TO_BB(mp, blks_per_cluster), 0); if (!bplist[bp_index]) { - do_warn(_("cannot read inode %llu, disk block %lld, cnt %d\n"), + do_warn(_("cannot read inode %" PRIu64 ", disk block %" PRId64 ", cnt %d\n"), XFS_AGINO_TO_INO(mp, agno, first_irec->ino_startnum), XFS_AGB_TO_DADDR(mp, agno, agbno), - (int)XFS_FSB_TO_BB(mp, blks_per_cluster)); + XFS_FSB_TO_BB(mp, blks_per_cluster)); while (bp_index > 0) { bp_index--; libxfs_putbuf(bplist[bp_index]); @@ -757,7 +758,7 @@ process_inode_chunk( break; default: set_bmap(agno, agbno, XR_E_MULT); - do_warn(_("inode block %llu multiply claimed, state was %d\n"), + do_warn(_("inode block %" PRIu64 " multiply claimed, state was %d\n"), XFS_AGB_TO_FSB(mp, agno, agbno), state); break; } @@ -769,6 +770,7 @@ process_inode_chunk( */ dino = XFS_MAKE_IPTR(mp, bplist[bp_index], cluster_offset); agino = irec_offset + ino_rec->ino_startnum; + ino = XFS_AGINO_TO_INO(mp, agno, agino); is_used = 3; ino_dirty = 0; @@ -792,10 +794,9 @@ process_inode_chunk( if (is_used) { if (is_inode_free(ino_rec, irec_offset)) { if (verbose || no_modify) { - do_warn(_("imap claims in-use inode " - "%llu is free, "), - XFS_AGINO_TO_INO(mp, agno, - agino)); + do_warn( + _("imap claims in-use inode %" PRIu64 " is free, "), + ino); } if (verbose || !no_modify) @@ -842,55 +843,48 @@ process_inode_chunk( } if (status) { - if (mp->m_sb.sb_rootino == - XFS_AGINO_TO_INO(mp, agno, agino)) { + if (mp->m_sb.sb_rootino == ino) { need_root_inode = 1; if (!no_modify) { - do_warn(_("cleared root inode %llu\n"), - XFS_AGINO_TO_INO(mp, agno, - agino)); + do_warn( + _("cleared root inode %" PRIu64 "\n"), + ino); } else { - do_warn(_("would clear root inode %llu\n"), - XFS_AGINO_TO_INO(mp, agno, - agino)); + do_warn( + _("would clear root inode %" PRIu64 "\n"), + ino); } - } else if (mp->m_sb.sb_rbmino == - XFS_AGINO_TO_INO(mp, agno, agino)) { + } else if (mp->m_sb.sb_rbmino == ino) { need_rbmino = 1; if (!no_modify) { - do_warn(_("cleared realtime bitmap " - "inode %llu\n"), - XFS_AGINO_TO_INO(mp, agno, - agino)); + do_warn( + _("cleared realtime bitmap inode %" PRIu64 "\n"), + ino); } else { - do_warn(_("would clear realtime bitmap " - "inode %llu\n"), - XFS_AGINO_TO_INO(mp, agno, - agino)); + do_warn( + _("would clear realtime bitmap inode %" PRIu64 "\n"), + ino); } - } else if (mp->m_sb.sb_rsumino == - XFS_AGINO_TO_INO(mp, agno, agino)) { + } else if (mp->m_sb.sb_rsumino == ino) { need_rsumino = 1; if (!no_modify) { - do_warn(_("cleared realtime summary " - "inode %llu\n"), - XFS_AGINO_TO_INO(mp, agno, - agino)); + do_warn( + _("cleared realtime summary inode %" PRIu64 "\n"), + ino); } else { - do_warn(_("would clear realtime summary" - " inode %llu\n"), - XFS_AGINO_TO_INO(mp, agno, - agino)); + do_warn( + _("would clear realtime summary inode %" PRIu64 "\n"), + ino); } } else if (!no_modify) { - do_warn(_("cleared inode %llu\n"), - XFS_AGINO_TO_INO(mp, agno, agino)); + do_warn(_("cleared inode %" PRIu64 "\n"), + ino); } else { - do_warn(_("would have cleared inode %llu\n"), - XFS_AGINO_TO_INO(mp, agno, agino)); + do_warn(_("would have cleared inode %" PRIu64 "\n"), + ino); } } @@ -940,8 +934,8 @@ process_inode_chunk( break; default: set_bmap(agno, agbno, XR_E_MULT); - do_warn(_("inode block %llu multiply claimed, " - "state was %d\n"), + do_warn( + _("inode block %" PRIu64 " multiply claimed, state was %d\n"), XFS_AGB_TO_FSB(mp, agno, agbno), state); break; } Index: xfsprogs-dev/repair/phase6.c =================================================================== --- xfsprogs-dev.orig/repair/phase6.c 2011-06-30 22:03:18.702845742 +0200 +++ xfsprogs-dev/repair/phase6.c 2011-06-30 22:03:24.672845668 +0200 @@ -60,7 +60,7 @@ add_dotdot_update( dotdot_update_t *dir = malloc(sizeof(dotdot_update_t)); if (!dir) - do_error(_("malloc failed add_dotdot_update (%u bytes)\n"), + do_error(_("malloc failed add_dotdot_update (%zu bytes)\n"), sizeof(dotdot_update_t)); dir->next = dotdot_update_list; @@ -171,7 +171,7 @@ dir_hash_add( } if ((p = malloc(sizeof(*p))) == NULL) - do_error(_("malloc failed in dir_hash_add (%u bytes)\n"), + do_error(_("malloc failed in dir_hash_add (%zu bytes)\n"), sizeof(*p)); p->nextbyaddr = hashtab->byaddr[byaddr]; @@ -238,7 +238,7 @@ dir_hash_check( seeval = DIR_HASH_CK_NOLEAF; if (seeval == DIR_HASH_CK_OK) return 0; - do_warn(_("bad hash table for directory inode %llu (%s): "), + do_warn(_("bad hash table for directory inode %" PRIu64 " (%s): "), ip->i_ino, seevalstr[seeval]); if (!no_modify) do_warn(_("rebuilding\n")); @@ -546,7 +546,7 @@ fill_rbmino(xfs_mount_t *mp) &first, 1, &map, &nmap, NULL, NULL); if (error || nmap != 1) { do_error( - _("couldn't map realtime bitmap block %llu, error = %d\n"), + _("couldn't map realtime bitmap block %" PRIu64 ", error = %d\n"), bno, error); } @@ -559,7 +559,7 @@ fill_rbmino(xfs_mount_t *mp) if (error) { do_warn( -_("can't access block %llu (fsbno %llu) of realtime bitmap inode %llu\n"), +_("can't access block %" PRIu64 " (fsbno %" PRIu64 ") of realtime bitmap inode %" PRIu64 "\n"), bno, map.br_startblock, mp->m_sb.sb_rbmino); return(1); } @@ -615,7 +615,7 @@ fill_rsumino(xfs_mount_t *mp) &first, 1, &map, &nmap, NULL, NULL); if (error || nmap != 1) { do_error( - _("couldn't map realtime summary inode block %llu, error = %d\n"), + _("couldn't map realtime summary inode block %" PRIu64 ", error = %d\n"), bno, error); } @@ -628,7 +628,7 @@ fill_rsumino(xfs_mount_t *mp) if (error) { do_warn( -_("can't access block %llu (fsbno %llu) of realtime summary inode %llu\n"), +_("can't access block %" PRIu64 " (fsbno %" PRIu64 ") of realtime summary inode %" PRIu64 "\n"), bno, map.br_startblock, mp->m_sb.sb_rsumino); return(1); } @@ -1155,11 +1155,11 @@ map_first_dblock_fsbno(xfs_mount_t *mp, if (error || nmap != 1) { if (!no_modify) do_error( -_("can't map block %d in %s inode %llu, xfs_bmapi returns %d, nmap = %d\n"), +_("can't map block %d in %s inode %" PRIu64 ", xfs_bmapi returns %d, nmap = %d\n"), da_bno, ftype, ino, error, nmap); else { do_warn( -_("can't map block %d in %s inode %llu, xfs_bmapi returns %d, nmap = %d\n"), +_("can't map block %d in %s inode %" PRIu64 ", xfs_bmapi returns %d, nmap = %d\n"), da_bno, ftype, ino, error, nmap); return(NULLDFSBNO); } @@ -1167,10 +1167,12 @@ _("can't map block %d in %s inode %llu, if ((fsbno = map.br_startblock) == HOLESTARTBLOCK) { if (!no_modify) - do_error(_("block %d in %s ino %llu doesn't exist\n"), + do_error( + _("block %d in %s ino %" PRIu64 " doesn't exist\n"), da_bno, ftype, ino); else { - do_warn(_("block %d in %s ino %llu doesn't exist\n"), + do_warn( + _("block %d in %s ino %" PRIu64 " doesn't exist\n"), da_bno, ftype, ino); return(NULLDFSBNO); } @@ -1195,7 +1197,7 @@ _("can't map block %d in %s inode %llu, if (!bp) { do_warn( - _("can't read block %u (fsbno %llu) for directory inode %llu\n"), + _("can't read block %u (fsbno %" PRIu64 ") for directory inode %" PRIu64 "\n"), da_bno, fsbno, ino); return(NULLDFSBNO); } @@ -1205,7 +1207,7 @@ _("can't map block %d in %s inode %llu, if (be16_to_cpu(node->hdr.info.magic) != XFS_DA_NODE_MAGIC) { libxfs_putbuf(bp); do_warn( -_("bad dir/attr magic number in inode %llu, file bno = %u, fsbno = %llu\n"), +_("bad dir/attr magic number in inode %" PRIu64 ", file bno = %u, fsbno = %" PRIu64 "\n"), ino, da_bno, fsbno); return(NULLDFSBNO); } @@ -1225,11 +1227,11 @@ _("bad dir/attr magic number in inode %l if (error || nmap != 1) { if (!no_modify) do_error( -_("can't map block %d in %s ino %llu, xfs_bmapi returns %d, nmap = %d\n"), +_("can't map block %d in %s ino %" PRIu64 ", xfs_bmapi returns %d, nmap = %d\n"), da_bno, ftype, ino, error, nmap); else { do_warn( -_("can't map block %d in %s ino %llu, xfs_bmapi returns %d, nmap = %d\n"), +_("can't map block %d in %s ino %" PRIu64 ", xfs_bmapi returns %d, nmap = %d\n"), da_bno, ftype, ino, error, nmap); return(NULLDFSBNO); } @@ -1237,11 +1239,11 @@ _("can't map block %d in %s ino %llu, xf if ((fsbno = map.br_startblock) == HOLESTARTBLOCK) { if (!no_modify) do_error( - _("block %d in %s inode %llu doesn't exist\n"), + _("block %d in %s inode %" PRIu64 " doesn't exist\n"), da_bno, ftype, ino); else { do_warn( - _("block %d in %s inode %llu doesn't exist\n"), + _("block %d in %s inode %" PRIu64 " doesn't exist\n"), da_bno, ftype, ino); return(NULLDFSBNO); } @@ -1471,8 +1473,8 @@ lf_block_dir_entry_check(xfs_mount_t *m */ if (is_inode_reached(irec, ino_offset)) { junkit = 1; - do_warn(_("entry \"%s\" in dir %llu points to an " - "already connected dir inode %llu,\n"), + do_warn( + _("entry \"%s\" in dir ino %" PRIu64 " points to an already connected dir inode %" PRIu64 ",\n"), fname, ino, lino); } else if (parent == ino) { add_inode_reached(irec, ino_offset); @@ -1480,16 +1482,16 @@ lf_block_dir_entry_check(xfs_mount_t *m } else if (parent == NULLFSINO) { /* ".." was missing, but this entry refers to it, so, set it as the parent and mark for rebuild */ - do_warn(_("entry \"%s\" in dir ino %llu doesn't have a" - " .. entry, will set it in ino %llu.\n"), + do_warn( + _("entry \"%s\" in dir ino %" PRIu64 " doesn't have a .. entry, will set it in ino %" PRIu64 ".\n"), fname, ino, lino); set_inode_parent(irec, ino_offset, ino); add_inode_reached(irec, ino_offset); add_inode_ref(current_irec, current_ino_offset); } else { junkit = 1; - do_warn(_("entry \"%s\" in dir ino %llu not consistent" - " with .. value (%llu) in ino %llu,\n"), + do_warn( + _("entry \"%s\" in dir ino %" PRIu64 " not consistent with .. value (%" PRIu64 ") in ino %" PRIu64 ",\n"), fname, ino, parent, lino); } @@ -1550,7 +1552,8 @@ longform_dir_entry_check(xfs_mount_t *mp fsbno = map_first_dblock_fsbno(mp, ino, ip, &da_bno); if (fsbno == NULLDFSBNO && no_modify) { - do_warn(_("cannot map block 0 of directory inode %llu\n"), ino); + do_warn( + _("cannot map block 0 of directory inode %" PRIu64 "\n"), ino); return; } @@ -1563,7 +1566,7 @@ longform_dir_entry_check(xfs_mount_t *mp if (!bp) { do_error( - _("can't read block %u (fsbno %llu) for directory inode %llu\n"), + _("can't read block %u (fsbno %" PRIu64 ") for directory inode %" PRIu64 "\n"), da_bno, fsbno, ino); /* NOTREACHED */ } @@ -1573,7 +1576,7 @@ longform_dir_entry_check(xfs_mount_t *mp if (be16_to_cpu(leaf->hdr.info.magic) != XFS_DIR_LEAF_MAGIC) { if (!no_modify) { do_error( -_("bad magic # (0x%x) for dir ino %llu leaf block (bno %u fsbno %llu)\n"), +_("bad magic # (0x%x) for dir ino %" PRIu64 " leaf block (bno %u fsbno %" PRIu64 ")\n"), be16_to_cpu(leaf->hdr.info.magic), ino, da_bno, fsbno); /* NOTREACHED */ @@ -1610,11 +1613,11 @@ _("bad magic # (0x%x) for dir ino %llu l if (error || nmap != 1) { if (!no_modify) do_error( -_("can't map leaf block %d in dir %llu, xfs_bmapi returns %d, nmap = %d\n"), +_("can't map leaf block %d in dir %" PRIu64 ", xfs_bmapi returns %d, nmap = %d\n"), da_bno, ino, error, nmap); else { do_warn( -_("can't map leaf block %d in dir %llu, xfs_bmapi returns %d, nmap = %d\n"), +_("can't map leaf block %d in dir %" PRIu64 ", xfs_bmapi returns %d, nmap = %d\n"), da_bno, ino, error, nmap); return; } @@ -1623,11 +1626,11 @@ _("can't map leaf block %d in dir %llu, if (fsbno == HOLESTARTBLOCK) { if (!no_modify) do_error( - _("block %d in %s ino %llu doesn't exist\n"), + _("block %d in %s ino %" PRIu64 " doesn't exist\n"), da_bno, ftype, ino); else { do_warn( - _("block %d in %s ino %llu doesn't exist\n"), + _("block %d in %s ino %" PRIu64 " doesn't exist\n"), da_bno, ftype, ino); return; } @@ -1666,7 +1669,7 @@ longform_dir2_rebuild( * name/inode pairs in the hash table */ - do_warn(_("rebuilding directory inode %llu\n"), ino); + do_warn(_("rebuilding directory inode %" PRIu64 "\n"), ino); /* * first attempt to locate the parent inode, if it can't be @@ -1740,7 +1743,7 @@ longform_dir2_rebuild( &firstblock, &flist, nres); if (error) { do_warn( -_("name create failed in ino %llu (%d), filesystem may be out of space\n"), +_("name create failed in ino %" PRIu64 " (%d), filesystem may be out of space\n"), ino, error); libxfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT); @@ -1805,7 +1808,7 @@ dir2_kill_block( error = libxfs_dir2_shrink_inode(&args, xfs_dir2_da_to_db(mp, da_bno), bp); if (error) - do_error(_("shrink_inode failed inode %llu block %u\n"), + do_error(_("shrink_inode failed inode %" PRIu64 " block %u\n"), ip->i_ino, da_bno); libxfs_bmap_finish(&tp, &flist, &committed); libxfs_trans_commit(tp, 0); @@ -1886,7 +1889,7 @@ longform_dir2_entry_check_data( *freetabp = freetab = realloc(freetab, FREETAB_SIZE(db + 1)); if (!freetab) { do_error( - _("realloc failed in longform_dir2_entry_check_data (%u bytes)\n"), + _("realloc failed in longform_dir2_entry_check_data (%zu bytes)\n"), FREETAB_SIZE(db + 1)); } e.v = NULLDATAOFF; @@ -1943,10 +1946,11 @@ longform_dir2_entry_check_data( if (ptr != endptr) { if (junkit) { do_warn( - _("empty data block %u in directory inode %llu: "), + _("empty data block %u in directory inode %" PRIu64 ": "), da_bno, ip->i_ino); } else { - do_warn(_("corrupt block %u in directory inode %llu: "), + do_warn(_ + ("corrupt block %u in directory inode %" PRIu64 ": "), da_bno, ip->i_ino); } if (!no_modify) { @@ -1976,8 +1980,8 @@ longform_dir2_entry_check_data( libxfs_da_bhold(tp, bp); XFS_BMAP_INIT(&flist, &firstblock); if (be32_to_cpu(d->hdr.magic) != wantmagic) { - do_warn(_("bad directory block magic # %#x for directory inode " - "%llu block %d: "), + do_warn( + _("bad directory block magic # %#x for directory inode %" PRIu64 " block %d: "), be32_to_cpu(d->hdr.magic), ip->i_ino, da_bno); if (!no_modify) { do_warn(_("fixing magic # to %#x\n"), wantmagic); @@ -2004,8 +2008,8 @@ longform_dir2_entry_check_data( dup = (xfs_dir2_data_unused_t *)ptr; if (be16_to_cpu(dup->freetag) == XFS_DIR2_DATA_FREE_TAG) { if (lastfree) { - do_warn(_("directory inode %llu block %u has " - "consecutive free entries: "), + do_warn( + _("directory inode %" PRIu64 " block %u has consecutive free entries: "), ip->i_ino, da_bno); if (!no_modify) { do_warn(_("joining together\n")); @@ -2048,8 +2052,8 @@ longform_dir2_entry_check_data( XFS_INO_TO_AGINO(mp, inum)); if (irec == NULL) { nbad++; - if (entry_junked(_("entry \"%s\" in directory inode " - "%llu points to non-existent inode %llu"), + if (entry_junked( + _("entry \"%s\" in directory inode %" PRIu64 " points to non-existent inode %llu"), fname, ip->i_ino, inum)) { dep->name[0] = '/'; libxfs_dir2_data_log_entry(tp, bp, dep); @@ -2065,8 +2069,8 @@ longform_dir2_entry_check_data( */ if (is_inode_free(irec, ino_offset)) { nbad++; - if (entry_junked(_("entry \"%s\" in directory inode " - "%llu points to free inode %llu"), + if (entry_junked( + _("entry \"%s\" in directory inode %" PRIu64 " points to free inode %llu"), fname, ip->i_ino, inum)) { dep->name[0] = '/'; libxfs_dir2_data_log_entry(tp, bp, dep); @@ -2083,8 +2087,8 @@ longform_dir2_entry_check_data( */ if (!inode_isadir(irec, ino_offset)) { nbad++; - if (entry_junked(_("%s (ino %llu) in root " - "(%llu) is not a directory"), + if (entry_junked( + _("%s (ino %" PRIu64 ") in root (%" PRIu64 ") is not a directory"), ORPHANAGE, inum, ip->i_ino)) { dep->name[0] = '/'; libxfs_dir2_data_log_entry(tp, bp, dep); @@ -2104,8 +2108,8 @@ longform_dir2_entry_check_data( if (!dir_hash_add(mp, hashtab, addr, inum, dep->namelen, (char *)dep->name)) { nbad++; - if (entry_junked(_("entry \"%s\" (ino %llu) in dir " - "%llu is a duplicate name"), + if (entry_junked( + _("entry \"%s\" (ino %" PRIu64 ") in dir %" PRIu64 " is a duplicate name"), fname, inum, ip->i_ino)) { dep->name[0] = '/'; libxfs_dir2_data_log_entry(tp, bp, dep); @@ -2135,9 +2139,8 @@ longform_dir2_entry_check_data( if (da_bno != 0) { /* ".." should be in the first block */ nbad++; - if (entry_junked(_("entry \"%s\" (ino %llu) " - "in dir %llu is not in the " - "the first block"), fname, + if (entry_junked( + _("entry \"%s\" (ino %" PRIu64 ") in dir %" PRIu64 " is not in the the first block"), fname, inum, ip->i_ino)) { dep->name[0] = '/'; libxfs_dir2_data_log_entry(tp, bp, dep); @@ -2161,8 +2164,8 @@ longform_dir2_entry_check_data( if (da_bno != 0 || dep != (xfs_dir2_data_entry_t *)d->u) { /* "." should be the first entry */ nbad++; - if (entry_junked(_("entry \"%s\" in dir %llu is " - "not the first entry"), + if (entry_junked( + _("entry \"%s\" in dir %" PRIu64 " is not the first entry"), fname, inum, ip->i_ino)) { dep->name[0] = '/'; libxfs_dir2_data_log_entry(tp, bp, dep); @@ -2197,7 +2200,7 @@ longform_dir2_entry_check_data( if (is_inode_reached(irec, ino_offset)) { junkit = 1; do_warn( -_("entry \"%s\" in dir %llu points to an already connected directory inode %llu\n"), +_("entry \"%s\" in dir %" PRIu64" points to an already connected directory inode %" PRIu64 "\n"), fname, ip->i_ino, inum); } else if (parent == ip->i_ino) { add_inode_reached(irec, ino_offset); @@ -2205,8 +2208,8 @@ _("entry \"%s\" in dir %llu points to an } else if (parent == NULLFSINO) { /* ".." was missing, but this entry refers to it, so, set it as the parent and mark for rebuild */ - do_warn(_("entry \"%s\" in dir ino %llu doesn't have a" - " .. entry, will set it in ino %llu.\n"), + do_warn( + _("entry \"%s\" in dir ino %" PRIu64 " doesn't have a .. entry, will set it in ino %" PRIu64 ".\n"), fname, ip->i_ino, inum); set_inode_parent(irec, ino_offset, ip->i_ino); add_inode_reached(irec, ino_offset); @@ -2216,7 +2219,7 @@ _("entry \"%s\" in dir %llu points to an } else { junkit = 1; do_warn( -_("entry \"%s\" in dir inode %llu inconsistent with .. value (%llu) in ino %llu\n"), +_("entry \"%s\" in dir inode %" PRIu64 " inconsistent with .. value (%" PRIu64 ") in ino %" PRIu64 "\n"), fname, ip->i_ino, parent, inum); } if (junkit) { @@ -2269,7 +2272,8 @@ longform_dir2_check_leaf( da_bno = mp->m_dirleafblk; if (libxfs_da_read_bufr(NULL, ip, da_bno, -1, &bp, XFS_DATA_FORK)) { - do_error(_("can't read block %u for directory inode %llu\n"), + do_error( + _("can't read block %u for directory inode %" PRIu64 "\n"), da_bno, ip->i_ino); /* NOTREACHED */ } @@ -2286,7 +2290,7 @@ longform_dir2_check_leaf( (char *)&leaf->ents[be16_to_cpu( leaf->hdr.count)] > (char *)bestsp) { do_warn( - _("leaf block %u for directory inode %llu bad header\n"), + _("leaf block %u for directory inode %" PRIu64 " bad header\n"), da_bno, ip->i_ino); libxfs_da_brelse(NULL, bp); return 1; @@ -2304,7 +2308,8 @@ longform_dir2_check_leaf( badtail = freetab->ents[i].v != be16_to_cpu(bestsp[i]); } if (badtail) { - do_warn(_("leaf block %u for directory inode %llu bad tail\n"), + do_warn( + _("leaf block %u for directory inode %" PRIu64 " bad tail\n"), da_bno, ip->i_ino); libxfs_da_brelse(NULL, bp); return 1; @@ -2343,7 +2348,7 @@ longform_dir2_check_node( if (libxfs_da_read_bufr(NULL, ip, da_bno, -1, &bp, XFS_DATA_FORK)) { do_warn( - _("can't read leaf block %u for directory inode %llu\n"), + _("can't read leaf block %u for directory inode %" PRIu64 "\n"), da_bno, ip->i_ino); return 1; } @@ -2354,8 +2359,8 @@ longform_dir2_check_node( libxfs_da_brelse(NULL, bp); continue; } - do_warn(_("unknown magic number %#x for block %u in " - "directory inode %llu\n"), + do_warn( + _("unknown magic number %#x for block %u in directory inode %" PRIu64 "\n"), be16_to_cpu(leaf->hdr.info.magic), da_bno, ip->i_ino); libxfs_da_brelse(NULL, bp); @@ -2364,8 +2369,8 @@ longform_dir2_check_node( if (be16_to_cpu(leaf->hdr.count) > xfs_dir2_max_leaf_ents(mp) || be16_to_cpu(leaf->hdr.count) < be16_to_cpu(leaf->hdr.stale)) { - do_warn(_("leaf block %u for directory inode %llu bad " - "header\n"), + do_warn( + _("leaf block %u for directory inode %" PRIu64 " bad header\n"), da_bno, ip->i_ino); libxfs_da_brelse(NULL, bp); return 1; @@ -2389,7 +2394,7 @@ longform_dir2_check_node( if (libxfs_da_read_bufr(NULL, ip, da_bno, -1, &bp, XFS_DATA_FORK)) { do_warn( - _("can't read freespace block %u for directory inode %llu\n"), + _("can't read freespace block %u for directory inode %" PRIu64 "\n"), da_bno, ip->i_ino); return 1; } @@ -2401,8 +2406,8 @@ longform_dir2_check_node( XFS_DIR2_MAX_FREE_BESTS(mp) || be32_to_cpu(free->hdr.nvalid) < be32_to_cpu(free->hdr.nused)) { - do_warn(_("free block %u for directory inode %llu bad " - "header\n"), + do_warn( + _("free block %u for directory inode %" PRIu64 " bad header\n"), da_bno, ip->i_ino); libxfs_da_brelse(NULL, bp); return 1; @@ -2414,7 +2419,7 @@ longform_dir2_check_node( free->hdr.firstdb)].v != be16_to_cpu(free->bests[i])) { do_warn( - _("free block %u entry %i for directory ino %llu bad\n"), + _("free block %u entry %i for directory ino %" PRIu64 " bad\n"), da_bno, i, ip->i_ino); libxfs_da_brelse(NULL, bp); return 1; @@ -2423,8 +2428,8 @@ longform_dir2_check_node( freetab->ents[i + be32_to_cpu(free->hdr.firstdb)].s = 1; } if (used != be32_to_cpu(free->hdr.nused)) { - do_warn(_("free block %u for directory inode %llu bad " - "nused\n"), + do_warn( + _("free block %u for directory inode %" PRIu64 " bad nused\n"), da_bno, ip->i_ino); libxfs_da_brelse(NULL, bp); return 1; @@ -2434,8 +2439,8 @@ longform_dir2_check_node( for (i = 0; i < freetab->nents; i++) { if ((freetab->ents[i].s == 0) && (freetab->ents[i].v != NULLDATAOFF)) { - do_warn(_("missing freetab entry %u for " - "directory inode %llu\n"), + do_warn( + _("missing freetab entry %u for directory inode %" PRIu64 "\n"), i, ip->i_ino); return 1; } @@ -2475,7 +2480,7 @@ longform_dir2_entry_check(xfs_mount_t *m freetab = malloc(FREETAB_SIZE(ip->i_d.di_size / mp->m_dirblksize)); if (!freetab) { do_error( - _("malloc failed in longform_dir2_entry_check (%u bytes)\n"), + _("malloc failed in longform_dir2_entry_check (%" PRId64 " bytes)\n"), FREETAB_SIZE(ip->i_d.di_size / mp->m_dirblksize)); exit(1); } @@ -2505,13 +2510,13 @@ longform_dir2_entry_check(xfs_mount_t *m bplist = realloc(bplist, num_bps * sizeof(xfs_dabuf_t*)); if (!bplist) do_error( - _("realloc failed in longform_dir2_entry_check (%u bytes)\n"), + _("realloc failed in longform_dir2_entry_check (%zu bytes)\n"), num_bps * sizeof(xfs_dabuf_t*)); } if (libxfs_da_read_bufr(NULL, ip, da_bno, -1, &bplist[db], XFS_DATA_FORK)) { - do_warn(_( - "can't read data block %u for directory inode %llu\n"), + do_warn( + _("can't read data block %u for directory inode %" PRIu64 "\n"), da_bno, ino); *num_illegal += 1; continue; /* try and read all "data" blocks */ @@ -2616,7 +2621,8 @@ shortform_dir_entry_check(xfs_mount_t *m sf_entry = next_sfe = &sf->list[0]; if (sf == NULL) { junkit = 1; - do_warn(_("shortform dir inode %llu has null data entries \n"), + do_warn( + _("shortform dir inode %" PRIu64 " has null data entries \n"), ino); } @@ -2683,8 +2689,8 @@ shortform_dir_entry_check(xfs_mount_t *m irec = find_inode_rec(XFS_INO_TO_AGNO(mp, lino), XFS_INO_TO_AGINO(mp, lino)); if (irec == NULL) { - do_warn(_("entry \"%s\" in shortform dir %llu " - "references non-existent ino %llu"), + do_warn( + _("entry \"%s\" in shortform dir %" PRIu64 " references non-existent ino %" PRIu64 "\n"), fname, ino, lino); goto do_junkit; } @@ -2696,8 +2702,9 @@ shortform_dir_entry_check(xfs_mount_t *m * really is free. */ if (!is_inode_free(irec, ino_offset)) { - do_warn(_("entry \"%s\" in shortform dir inode %llu " - "points to free inode %llu"), fname, ino, lino); + do_warn( + _("entry \"%s\" in shortform dir inode %" PRIu64 " points to free inode %" PRIu64"\n"), + fname, ino, lino); goto do_junkit; } /* @@ -2708,8 +2715,9 @@ shortform_dir_entry_check(xfs_mount_t *m * if it's not a directory, trash it */ if (!inode_isadir(irec, ino_offset)) { - do_warn(_("%s (ino %llu) in root (%llu) is not " - "a directory"), ORPHANAGE, lino, ino); + do_warn( + _("%s (ino %" PRIu64 ") in root (%" PRIu64 ") is not a directory"), + ORPHANAGE, lino, ino); goto do_junkit; } /* @@ -2725,8 +2733,9 @@ shortform_dir_entry_check(xfs_mount_t *m if (!dir_hash_add(mp, hashtab, (xfs_dir2_dataptr_t) (sf_entry - &sf->list[0]), lino, sf_entry->namelen, (char *)sf_entry->name)) { - do_warn(_("entry \"%s\" (ino %llu) in dir %llu is a " - "duplicate name"), fname, lino, ino); + do_warn( + _("entry \"%s\" (ino %" PRIu64 ") in dir %" PRIu64 " is a duplicate name"), + fname, lino, ino); goto do_junkit; } if (!inode_isadir(irec, ino_offset)) { @@ -2749,8 +2758,8 @@ shortform_dir_entry_check(xfs_mount_t *m */ if (is_inode_reached(irec, ino_offset)) { junkit = 1; - do_warn(_("entry \"%s\" in dir %llu references " - "already connected dir ino %llu,\n"), + do_warn( + _("entry \"%s\" in dir %" PRIu64 " references already connected dir ino %" PRIu64 ".\n"), fname, ino, lino); } else if (parent == ino) { add_inode_reached(irec, ino_offset); @@ -2758,17 +2767,16 @@ shortform_dir_entry_check(xfs_mount_t *m } else if (parent == NULLFSINO) { /* ".." was missing, but this entry refers to it, so, set it as the parent and mark for rebuild */ - do_warn(_("entry \"%s\" in dir ino %llu doesn't have a" - " .. entry, will set it in ino %llu.\n"), + do_warn( + _("entry \"%s\" in dir ino %" PRIu64 " doesn't have a .. entry, will set it in ino %" PRIu64 ".\n"), fname, ino, lino); set_inode_parent(irec, ino_offset, ino); add_inode_reached(irec, ino_offset); add_inode_ref(current_irec, current_ino_offset); } else { junkit = 1; - do_warn(_("entry \"%s\" in dir %llu not " - "consistent with .. value (%llu) in " - "dir ino %llu"), + do_warn( + _("entry \"%s\" in dir %" PRIu64 " not consistent with .. value (%" PRIu64 ") in dir ino %" PRIu64".\n"), fname, ino, parent, lino); } } @@ -2812,7 +2820,7 @@ do_junkit: else do_warn("\n"); } else { - do_warn(_("would junk entry\n"), fname); + do_warn(_("would junk entry\n")); } } @@ -2851,7 +2859,7 @@ do_junkit: ip->i_d.di_size = (xfs_fsize_t) ((__psint_t) next_sfe - (__psint_t) sf); do_warn( - _("setting size to %lld bytes to reflect junked entries\n"), + _("setting size to %" PRId64 " bytes to reflect junked entries\n"), ip->i_d.di_size); *ino_dirty = 1; } @@ -2902,10 +2910,12 @@ shortform_dir2_entry_check(xfs_mount_t * if (dotdot_update) { parent = get_inode_parent(current_irec, current_ino_offset); if (no_modify) { - do_warn(_("would set .. in sf dir inode %llu to %llu\n"), + do_warn( + _("would set .. in sf dir inode %" PRIu64 " to %" PRIu64 "\n"), ino, parent); } else { - do_warn(_("setting .. in sf dir inode %llu to %llu\n"), + do_warn( + _("setting .. in sf dir inode %" PRIu64 " to %" PRIu64 "\n"), ino, parent); xfs_dir2_sf_put_inumber(sfp, &parent, &sfp->hdr.parent); *ino_dirty = 1; @@ -3008,8 +3018,8 @@ shortform_dir2_entry_check(xfs_mount_t * XFS_INO_TO_AGINO(mp, lino)); if (irec == NULL) { - do_warn(_("entry \"%s\" in shortform directory %llu " - "references non-existent inode %llu"), + do_warn( + _("entry \"%s\" in shortform directory %" PRIu64 " references non-existent inode %" PRIu64 "\n"), fname, ino, lino); goto do_junkit; } @@ -3022,8 +3032,8 @@ shortform_dir2_entry_check(xfs_mount_t * * really is free. */ if (is_inode_free(irec, ino_offset)) { - do_warn(_("entry \"%s\" in shortform directory " - "inode %llu points to free inode %llu"), + do_warn( + _("entry \"%s\" in shortform directory inode %" PRIu64 " points to free inode %" PRIu64 "\n"), fname, ino, lino); goto do_junkit; } @@ -3035,8 +3045,9 @@ shortform_dir2_entry_check(xfs_mount_t * * if it's not a directory, trash it */ if (!inode_isadir(irec, ino_offset)) { - do_warn(_("%s (ino %llu) in root (%llu) is not " - "a directory"), ORPHANAGE, lino, ino); + do_warn( + _("%s (ino %" PRIu64 ") in root (%" PRIu64 ") is not a directory"), + ORPHANAGE, lino, ino); goto do_junkit; } /* @@ -3052,8 +3063,9 @@ shortform_dir2_entry_check(xfs_mount_t * if (!dir_hash_add(mp, hashtab, (xfs_dir2_dataptr_t) (sfep - xfs_dir2_sf_firstentry(sfp)), lino, sfep->namelen, (char *)sfep->name)) { - do_warn(_("entry \"%s\" (ino %llu) in dir %llu is a " - "duplicate name"), fname, lino, ino); + do_warn( + _("entry \"%s\" (ino %" PRIu64 ") in dir %" PRIu64 " is a duplicate name"), + fname, lino, ino); goto do_junkit; } @@ -3073,9 +3085,9 @@ shortform_dir2_entry_check(xfs_mount_t * */ if (is_inode_reached(irec, ino_offset)) { junkit = 1; - do_warn(_("entry \"%s\" in directory inode %llu" - " references already connected inode " - "%llu,\n"), + do_warn( + _("entry \"%s\" in directory inode %" PRIu64 + " references already connected inode %" PRIu64 ".\n"), fname, ino, lino); } else if (parent == ino) { add_inode_reached(irec, ino_offset); @@ -3083,8 +3095,8 @@ shortform_dir2_entry_check(xfs_mount_t * } else if (parent == NULLFSINO) { /* ".." was missing, but this entry refers to it, so, set it as the parent and mark for rebuild */ - do_warn(_("entry \"%s\" in dir ino %llu doesn't have a" - " .. entry, will set it in ino %llu.\n"), + do_warn( + _("entry \"%s\" in dir ino %" PRIu64 " doesn't have a .. entry, will set it in ino %" PRIu64 ".\n"), fname, ino, lino); set_inode_parent(irec, ino_offset, ino); add_inode_reached(irec, ino_offset); @@ -3093,9 +3105,10 @@ shortform_dir2_entry_check(xfs_mount_t * irec, ino_offset); } else { junkit = 1; - do_warn(_("entry \"%s\" in directory inode %llu" - " not consistent with .. value (%llu)" - " in inode %llu,\n"), + do_warn( + _("entry \"%s\" in directory inode %" PRIu64 + " not consistent with .. value (%" PRIu64 + ") in inode %" PRIu64 ",\n"), fname, ino, parent, lino); } } @@ -3164,7 +3177,8 @@ do_junkit: if (sfp->hdr.i8count != i8) { if (no_modify) { - do_warn(_("would fix i8count in inode %llu\n"), ino); + do_warn(_("would fix i8count in inode %" PRIu64 "\n"), + ino); } else { if (i8 == 0) { tmp_sfep = next_sfep; @@ -3176,7 +3190,8 @@ do_junkit: } else sfp->hdr.i8count = i8; *ino_dirty = 1; - do_warn(_("fixing i8count in inode %llu\n"), ino); + do_warn(_("fixing i8count in inode %" PRIu64 "\n"), + ino); } } @@ -3195,8 +3210,8 @@ do_junkit: ((__psint_t) next_sfep - (__psint_t) sfp)); ip->i_d.di_size = (xfs_fsize_t) ((__psint_t) next_sfep - (__psint_t) sfp); - do_warn(_("setting size to %lld bytes to reflect junked " - "entries\n"), + do_warn( + _("setting size to %" PRId64 " bytes to reflect junked entries\n"), ip->i_d.di_size); *ino_dirty = 1; } @@ -3235,10 +3250,12 @@ process_dir_inode( error = libxfs_iget(mp, NULL, ino, 0, &ip, 0); if (error) { if (!no_modify) - do_error(_("couldn't map inode %llu, err = %d\n"), + do_error( + _("couldn't map inode %" PRIu64 ", err = %d\n"), ino, error); else { - do_warn(_("couldn't map inode %llu, err = %d\n"), + do_warn( + _("couldn't map inode %" PRIu64 ", err = %d\n"), ino, error); /* * see below for what we're doing if this @@ -3357,15 +3374,15 @@ process_dir_inode( if (num_illegal > 0) { ASSERT(ip->i_d.di_format != XFS_DINODE_FMT_LOCAL); - do_warn(_("%d bad entries found in dir inode %llu, " - "cannot fix in V1 dir filesystem\n"), + do_warn( + _("%d bad entries found in dir inode %" PRIu64 ", cannot fix in V1 dir filesystem\n"), num_illegal, ino); } if (need_dot) { add_inode_ref(irec, ino_offset); - do_warn(_("missing \".\" entry in dir ino %llu, " - "cannot in fix V1 dir filesystem\n"), ino); + do_warn( + _("missing \".\" entry in dir ino %" PRIu64 ", cannot in fix V1 dir filesystem\n"), ino); } goto out; } @@ -3402,8 +3419,8 @@ process_dir_inode( error = libxfs_dir_createname(tp, ip, &xfs_name_dotdot, ip->i_ino, &first, &flist, nres); if (error) - do_error(_("can't make \"..\" entry in root inode " - "%llu, createname error %d\n"), ino, error); + do_error( + _("can't make \"..\" entry in root inode %" PRIu64 ", createname error %d\n"), ino, error); libxfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); @@ -3437,14 +3454,15 @@ process_dir_inode( add_inode_ref(irec, ino_offset); if (no_modify) { - do_warn(_("would create missing \".\" entry in dir ino %llu\n"), + do_warn( + _("would create missing \".\" entry in dir ino %" PRIu64 "\n"), ino); } else if (ip->i_d.di_format != XFS_DINODE_FMT_LOCAL) { /* * need to create . entry in longform dir. */ - do_warn(_("creating missing \".\" entry in dir ino %llu\n"), - ino); + do_warn( + _("creating missing \".\" entry in dir ino %" PRIu64 "\n"), ino); tp = libxfs_trans_alloc(mp, 0); ASSERT(tp != NULL); @@ -3467,8 +3485,8 @@ process_dir_inode( error = libxfs_dir_createname(tp, ip, &xfs_name_dot, ip->i_ino, &first, &flist, nres); if (error) - do_error(_("can't make \".\" entry in dir ino " - "%llu, createname error %d\n"), + do_error( + _("can't make \".\" entry in dir ino %" PRIu64 ", createname error %d\n"), ino, error); libxfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); @@ -3557,9 +3575,9 @@ check_for_orphaned_inodes( ino = XFS_AGINO_TO_INO(mp, agno, i + irec->ino_startnum); if (inode_isadir(irec, i)) - do_warn(_("disconnected dir inode %llu, "), ino); + do_warn(_("disconnected dir inode %" PRIu64 ", "), ino); else - do_warn(_("disconnected inode %llu, "), ino); + do_warn(_("disconnected inode %" PRIu64 ", "), ino); if (!xfs_sb_version_hasdirv2(&mp->m_sb)) do_warn(_("cannot fix in V1 dir filesystem\n")); else if (!no_modify) { Index: xfsprogs-dev/repair/scan.c =================================================================== --- xfsprogs-dev.orig/repair/scan.c 2011-06-30 22:03:18.716179076 +0200 +++ xfsprogs-dev/repair/scan.c 2011-06-30 22:03:24.676179002 +0200 @@ -196,15 +196,16 @@ scanfunc_bmap( * highly unlikely. */ if (be32_to_cpu(block->bb_magic) != XFS_BMAP_MAGIC) { - do_warn(_("bad magic # %#x in inode %llu (%s fork) bmbt " - "block %llu\n"), be32_to_cpu(block->bb_magic), - ino, forkname, bno); + do_warn( +_("bad magic # %#x in inode %" PRIu64 " (%s fork) bmbt block %" PRIu64 "\n"), + be32_to_cpu(block->bb_magic), ino, forkname, bno); return(1); } if (be16_to_cpu(block->bb_level) != level) { - do_warn(_("expected level %d got %d in inode %llu, (%s fork) " - "bmbt block %llu\n"), level, - be16_to_cpu(block->bb_level), ino, forkname, bno); + do_warn( +_("expected level %d got %d in inode %" PRIu64 ", (%s fork) bmbt block %" PRIu64 "\n"), + level, be16_to_cpu(block->bb_level), + ino, forkname, bno); return(1); } @@ -222,8 +223,8 @@ scanfunc_bmap( */ if (bno != bm_cursor->level[level].right_fsbno) { do_warn( -_("bad fwd (right) sibling pointer (saw %llu parent block says %llu)\n" - "\tin inode %llu (%s fork) bmap btree block %llu\n"), +_("bad fwd (right) sibling pointer (saw %" PRIu64 " parent block says %" PRIu64 ")\n" + "\tin inode %" PRIu64 " (%s fork) bmap btree block %" PRIu64 "\n"), bm_cursor->level[level].right_fsbno, bno, ino, forkname, bm_cursor->level[level].fsbno); @@ -232,8 +233,8 @@ _("bad fwd (right) sibling pointer (saw if (be64_to_cpu(block->bb_u.l.bb_leftsib) != bm_cursor->level[level].fsbno) { do_warn( -_("bad back (left) sibling pointer (saw %llu parent block says %llu)\n" - "\tin inode %llu (%s fork) bmap btree block %llu\n"), +_("bad back (left) sibling pointer (saw %llu parent block says %" PRIu64 ")\n" + "\tin inode %" PRIu64 " (%s fork) bmap btree block %" PRIu64 "\n"), be64_to_cpu(block->bb_u.l.bb_leftsib), bm_cursor->level[level].fsbno, ino, forkname, bno); @@ -247,7 +248,7 @@ _("bad back (left) sibling pointer (saw if (be64_to_cpu(block->bb_u.l.bb_leftsib) != NULLDFSBNO) { do_warn( _("bad back (left) sibling pointer (saw %llu should be NULL (0))\n" - "\tin inode %llu (%s fork) bmap btree block %llu\n"), + "\tin inode %" PRIu64 " (%s fork) bmap btree block %" PRIu64 "\n"), be64_to_cpu(block->bb_u.l.bb_leftsib), ino, forkname, bno); return(1); @@ -286,15 +287,15 @@ _("bad back (left) sibling pointer (saw */ set_bmap(agno, agbno, XR_E_MULT); do_warn( - _("inode 0x%llx bmap block 0x%llx claimed, state is %d\n"), - ino, (__uint64_t) bno, state); +_("inode 0x%" PRIu64 "bmap block 0x%" PRIu64 " claimed, state is %d\n"), + ino, bno, state); break; case XR_E_MULT: case XR_E_INUSE_FS: set_bmap(agno, agbno, XR_E_MULT); do_warn( - _("inode 0x%llx bmap block 0x%llx claimed, state is %d\n"), - ino, (__uint64_t) bno, state); +_("inode 0x%" PRIu64 " bmap block 0x%" PRIu64 " claimed, state is %d\n"), + ino, bno, state); /* * if we made it to here, this is probably a bmap block * that is being used by *another* file as a bmap block @@ -308,8 +309,8 @@ _("bad back (left) sibling pointer (saw case XR_E_BAD_STATE: default: do_warn( - _("bad state %d, inode 0x%llx bmap block 0x%llx\n"), - state, ino, (__uint64_t) bno); +_("bad state %d, inode 0x%" PRIu64 " bmap block 0x%" PRIu64 "\n"), + state, ino, bno); break; } pthread_mutex_unlock(&ag_locks[agno]); @@ -335,7 +336,7 @@ _("bad back (left) sibling pointer (saw if (numrecs > mp->m_bmap_dmxr[0] || (isroot == 0 && numrecs < mp->m_bmap_dmnr[0])) { do_warn( - _("inode 0x%llx bad # of bmap records (%u, min - %u, max - %u)\n"), +_("inode 0x%" PRIu64 " bad # of bmap records (%u, min - %u, max - %u)\n"), ino, numrecs, mp->m_bmap_dmnr[0], mp->m_bmap_dmxr[0]); return(1); @@ -365,7 +366,7 @@ _("bad back (left) sibling pointer (saw bm_cursor->level[level].last_key != NULLDFILOFF) { do_warn( -_("out-of-order bmap key (file offset) in inode %llu, %s fork, fsbno %llu\n"), +_("out-of-order bmap key (file offset) in inode %" PRIu64 ", %s fork, fsbno %" PRIu64 "\n"), ino, forkname, bno); return(1); } @@ -385,7 +386,7 @@ _("out-of-order bmap key (file offset) i if (numrecs > mp->m_bmap_dmxr[1] || (isroot == 0 && numrecs < mp->m_bmap_dmnr[1])) { do_warn( - _("inode 0x%llx bad # of bmap records (%u, min - %u, max - %u)\n"), +_("inode 0x%" PRIu64 " bad # of bmap records (%u, min - %u, max - %u)\n"), ino, numrecs, mp->m_bmap_dmnr[1], mp->m_bmap_dmxr[1]); return(1); } @@ -401,7 +402,8 @@ _("out-of-order bmap key (file offset) i * we'll bail out and presumably clear the inode. */ if (!verify_dfsbno(mp, be64_to_cpu(pp[i]))) { - do_warn(_("bad bmap btree ptr 0x%llx in ino %llu\n"), + do_warn( +_("bad bmap btree ptr 0x%llx in ino %" PRIu64 "\n"), be64_to_cpu(pp[i]), ino); return(1); } @@ -428,8 +430,8 @@ _("out-of-order bmap key (file offset) i bm_cursor->level[level-1].first_key) { if (!no_modify) { do_warn( - _("correcting bt key (was %llu, now %llu) in inode %llu\n" - "\t\t%s fork, btree block %llu\n"), +_("correcting bt key (was %llu, now %" PRIu64 ") in inode %" PRIu64 "\n" + "\t\t%s fork, btree block %" PRIu64 "\n"), be64_to_cpu(pkey[i].br_startoff), bm_cursor->level[level-1].first_key, ino, @@ -439,8 +441,8 @@ _("out-of-order bmap key (file offset) i bm_cursor->level[level-1].first_key); } else { do_warn( - _("bad btree key (is %llu, should be %llu) in inode %llu\n" - "\t\t%s fork, btree block %llu\n"), +_("bad btree key (is %llu, should be %" PRIu64 ") in inode %" PRIu64 "\n" + "\t\t%s fork, btree block %" PRIu64 "\n"), be64_to_cpu(pkey[i].br_startoff), bm_cursor->level[level-1].first_key, ino, forkname, bno); @@ -456,8 +458,8 @@ _("out-of-order bmap key (file offset) i bm_cursor->level[level].right_fsbno == NULLDFSBNO && bm_cursor->level[level - 1].right_fsbno != NULLDFSBNO) { do_warn( - _("bad fwd (right) sibling pointer (saw %llu should be NULLDFSBNO)\n" - "\tin inode %llu (%s fork) bmap btree block %llu\n"), +_("bad fwd (right) sibling pointer (saw %" PRIu64 " should be NULLDFSBNO)\n" + "\tin inode %" PRIu64 " (%s fork) bmap btree block %" PRIu64 "\n"), bm_cursor->level[level - 1].right_fsbno, ino, forkname, bm_cursor->level[level - 1].fsbno); return(1); @@ -600,13 +602,13 @@ _("%s freespace btree block claimed (sta if (b == 0 || !verify_agbno(mp, agno, b)) { do_warn( - _("invalid start block %u in record %u of %d btree block %u/%u\n"), + _("invalid start block %u in record %u of %s btree block %u/%u\n"), b, i, name, agno, bno); continue; } if (len == 0 || !verify_agbno(mp, agno, end - 1)) { do_warn( - _("invalid length %u in record %u of %d btree block %u/%u\n"), + _("invalid length %u in record %u of %s btree block %u/%u\n"), len, i, name, agno, bno); continue; } @@ -748,7 +750,7 @@ scan_single_ino_chunk( off % XFS_INODES_PER_CHUNK != 0) || (fs_aligned_inodes && agbno % fs_ino_alignment != 0)) { do_warn( - _("badly aligned inode rec (starting inode = %llu)\n"), + _("badly aligned inode rec (starting inode = %" PRIu64 ")\n"), lino); suspect++; } @@ -764,7 +766,7 @@ scan_single_ino_chunk( */ if (verify_aginum(mp, agno, ino)) { do_warn( -_("bad starting inode # (%llu (0x%x 0x%x)) in ino rec, skipping rec\n"), +_("bad starting inode # (%" PRIu64 " (0x%x 0x%x)) in ino rec, skipping rec\n"), lino, agno, ino); return ++suspect; } @@ -772,9 +774,10 @@ _("bad starting inode # (%llu (0x%x 0x%x if (verify_aginum(mp, agno, ino + XFS_INODES_PER_CHUNK - 1)) { do_warn( -_("bad ending inode # (%llu (0x%x 0x%x)) in ino rec, skipping rec\n"), +_("bad ending inode # (%" PRIu64 " (0x%x 0x%zx)) in ino rec, skipping rec\n"), lino + XFS_INODES_PER_CHUNK - 1, - agno, ino + XFS_INODES_PER_CHUNK - 1); + agno, + ino + XFS_INODES_PER_CHUNK - 1); return ++suspect; } @@ -818,7 +821,7 @@ _("inode chunk claims used block, inobt * already in the tree */ do_warn( -_("inode rec for ino %llu (%d/%d) overlaps existing rec (start %d/%d)\n"), +_("inode rec for ino %" PRIu64 " (%d/%d) overlaps existing rec (start %d/%d)\n"), lino, agno, ino, agno, first_rec->ino_startnum); suspect++; @@ -866,7 +869,7 @@ _("inode rec for ino %llu (%d/%d) overla if (nfree != be32_to_cpu(rp->ir_freecount)) { do_warn(_("ir_freecount/free mismatch, inode " - "chunk %d/%d, freecount %d nfree %d\n"), + "chunk %d/%u, freecount %d nfree %d\n"), agno, ino, be32_to_cpu(rp->ir_freecount), nfree); } @@ -1124,7 +1127,7 @@ validate_agf( if (xfs_sb_version_haslazysbcount(&mp->m_sb) && be32_to_cpu(agf->agf_btreeblks) != agcnts->agfbtreeblks) { - do_warn(_("agf_btreeblks %u, counted %u in ag %u\n"), + do_warn(_("agf_btreeblks %u, counted %" PRIu64 " in ag %u\n"), be32_to_cpu(agf->agf_btreeblks), agcnts->agfbtreeblks, agno); } } @@ -1162,7 +1165,7 @@ validate_agi( if (agino != NULLAGINO) { do_warn( - _("agi unlinked bucket %d is %u in ag %u (inode=%lld)\n"), + _("agi unlinked bucket %d is %u in ag %u (inode=%" PRIu64 ")\n"), i, agino, agno, XFS_AGINO_TO_INO(mp, agno, agino)); } @@ -1355,17 +1358,17 @@ scan_ags( * Validate that our manual counts match the superblock. */ if (mp->m_sb.sb_icount != icount) { - do_warn(_("sb_icount %lld, counted %lld\n"), + do_warn(_("sb_icount %" PRIu64 ", counted %" PRIu64 "\n"), mp->m_sb.sb_icount, icount); } if (mp->m_sb.sb_ifree != ifreecount) { - do_warn(_("sb_ifree %lld, counted %lld\n"), + do_warn(_("sb_ifree %" PRIu64 ", counted %" PRIu64 "\n"), mp->m_sb.sb_ifree, ifreecount); } if (mp->m_sb.sb_fdblocks != fdblocks) { - do_warn(_("sb_fdblocks %lld, counted %lld\n"), + do_warn(_("sb_fdblocks %" PRIu64 ", counted %" PRIu64 "\n"), mp->m_sb.sb_fdblocks, fdblocks); } } Index: xfsprogs-dev/repair/phase4.c =================================================================== --- xfsprogs-dev.orig/repair/phase4.c 2011-06-30 22:03:18.726179075 +0200 +++ xfsprogs-dev/repair/phase4.c 2011-06-30 22:03:24.676179002 +0200 @@ -267,7 +267,8 @@ phase4(xfs_mount_t *mp) switch (bstate) { case XR_E_BAD_STATE: default: - do_warn(_("unknown rt extent state, extent %llu\n"), + do_warn( + _("unknown rt extent state, extent %" PRIu64 "\n"), bno); /* fall through .. */ case XR_E_UNKNOWN: Index: xfsprogs-dev/repair/dir.c =================================================================== --- xfsprogs-dev.orig/repair/dir.c 2011-06-30 22:03:18.736179075 +0200 +++ xfsprogs-dev/repair/dir.c 2011-06-30 22:03:24.679512336 +0200 @@ -150,27 +150,27 @@ process_shortform_dir( * junk the entry, mark lino as NULL since it's bad */ do_warn( - _("invalid inode number %llu in directory %llu\n"), lino, ino); + _("invalid inode number %" PRIu64 " in directory %" PRIu64 "\n"), lino, ino); lino = NULLFSINO; junkit = 1; } else if (lino == mp->m_sb.sb_rbmino) { do_warn( - _("entry in shortform dir %llu references rt bitmap inode %llu\n"), + _("entry in shortform dir %" PRIu64 " references rt bitmap inode %" PRIu64 "\n"), ino, lino); junkit = 1; } else if (lino == mp->m_sb.sb_rsumino) { do_warn( - _("entry in shortform dir %llu references rt summary inode %llu\n"), + _("entry in shortform dir %" PRIu64 " references rt summary inode %" PRIu64 "\n"), ino, lino); junkit = 1; } else if (lino == mp->m_sb.sb_uquotino) { do_warn( - _("entry in shortform dir %llu references user quota inode %llu\n"), + _("entry in shortform dir %" PRIu64 " references user quota inode %" PRIu64 "\n"), ino, lino); junkit = 1; } else if (lino == mp->m_sb.sb_gquotino) { do_warn( - _("entry in shortform dir %llu references group quota inode %llu\n"), + _("entry in shortform dir %" PRIu64 " references group quota inode %" PRIu64 "\n"), ino, lino); junkit = 1; } else if ((irec_p = find_inode_rec(XFS_INO_TO_AGNO(mp, lino), @@ -190,7 +190,7 @@ process_shortform_dir( if (!ino_discovery && is_inode_free(irec_p, ino_off)) { do_warn( - _("entry references free inode %llu in shortform directory %llu\n"), + _("entry references free inode %" PRIu64 " in shortform directory %" PRIu64 "\n"), lino, ino); junkit = 1; } @@ -209,7 +209,7 @@ process_shortform_dir( * phase) so this is clearly a bogus entry. */ do_warn( - _("entry references non-existent inode %llu in shortform dir %llu\n"), + _("entry references non-existent inode %" PRIu64 " in shortform dir %" PRIu64 "\n"), lino, ino); junkit = 1; } @@ -233,17 +233,17 @@ process_shortform_dir( (__psint_t) sf); if (!no_modify) { do_warn( - _("zero length entry in shortform dir %llu, resetting to %d\n"), + _("zero length entry in shortform dir %" PRIu64 ", resetting to %d\n"), ino, namelen); sf_entry->namelen = namelen; } else { do_warn( - _("zero length entry in shortform dir %llu, would set to %d\n"), + _("zero length entry in shortform dir %" PRIu64 ", would set to %d\n"), ino, namelen); } } else { do_warn( - _("zero length entry in shortform dir %llu, "), + _("zero length entry in shortform dir %" PRIu64 ", "), ino); if (!no_modify) do_warn(_("junking %d entries\n"), @@ -267,7 +267,7 @@ process_shortform_dir( ((__psint_t) &sf_entry->name[0] - (__psint_t) sf); do_warn( - _("size of last entry overflows space left in in shortform dir %llu, "), + _("size of last entry overflows space left in in shortform dir %" PRIu64 ", "), ino); if (!no_modify) { do_warn(_("resetting to %d\n"), @@ -280,7 +280,7 @@ process_shortform_dir( } } else { do_warn( - _("size of entry #%d overflows space left in in shortform dir %llu\n"), + _("size of entry #%d overflows space left in in shortform dir %" PRIu64 "\n"), i, ino); if (!no_modify) { if (i == num_entries - 1) @@ -317,7 +317,7 @@ process_shortform_dir( * junk entry */ do_warn( - _("entry contains illegal character in shortform dir %llu\n"), + _("entry contains illegal character in shortform dir %" PRIu64 "\n"), ino); junkit = 1; } @@ -371,11 +371,11 @@ process_shortform_dir( *repair = 1; do_warn( - _("junking entry \"%s\" in directory inode %llu\n"), + _("junking entry \"%s\" in directory inode %" PRIu64 "\n"), name, ino); } else { do_warn( - _("would have junked entry \"%s\" in directory inode %llu\n"), + _("would have junked entry \"%s\" in directory inode %" PRIu64 "\n"), name, ino); } } @@ -401,11 +401,11 @@ process_shortform_dir( if (sf->hdr.count != i) { if (no_modify) { do_warn( - _("would have corrected entry count in directory %llu from %d to %d\n"), + _("would have corrected entry count in directory %" PRIu64 " from %d to %d\n"), ino, sf->hdr.count, i); } else { do_warn( - _("corrected entry count in directory %llu, was %d, now %d\n"), + _("corrected entry count in directory %" PRIu64 ", was %d, now %d\n"), ino, sf->hdr.count, i); sf->hdr.count = i; *dino_dirty = 1; @@ -416,14 +416,14 @@ process_shortform_dir( if ((__psint_t) next_sfe - (__psint_t) sf != ino_dir_size) { if (no_modify) { do_warn( - _("would have corrected directory %llu size from %lld to %lld\n"), - ino, (__int64_t) ino_dir_size, - (__int64_t)((__psint_t) next_sfe - (__psint_t) sf)); + _("would have corrected directory %" PRIu64 " size from %" PRId64 "to %" PRIdPTR "\n"), + ino, ino_dir_size, + (intptr_t)next_sfe - (intptr_t )sf); } else { do_warn( - _("corrected directory %llu size, was %lld, now %lld\n"), - ino, (__int64_t) ino_dir_size, - (__int64_t)((__psint_t) next_sfe - (__psint_t) sf)); + _("corrected directory %" PRIu64 " size, was %" PRId64 ", now %" PRIdPTR "\n"), + ino, ino_dir_size, + (intptr_t)next_sfe - (intptr_t)sf); dip->di_core.di_size = cpu_to_be64((__psint_t)next_sfe - (__psint_t)sf); @@ -443,7 +443,7 @@ process_shortform_dir( *parent = NULLFSINO; do_warn( - _("bogus .. inode number (%llu) in directory inode %llu, "), + _("bogus .. inode number (%" PRIu64 ") in directory inode %" PRIu64 ", "), *parent, ino); if (!no_modify) { do_warn(_("clearing inode number\n")); @@ -460,7 +460,7 @@ process_shortform_dir( */ if (!no_modify) { do_warn( - _("corrected root directory %llu .. entry, was %llu, now %llu\n"), + _("corrected root directory %" PRIu64 " .. entry, was %" PRIu64 ", now %" PRIu64 "\n"), ino, *parent, ino); *parent = ino; xfs_dir_sf_put_dirino(parent, &sf->hdr.parent); @@ -468,7 +468,7 @@ process_shortform_dir( *repair = 1; } else { do_warn( - _("would have corrected root directory %llu .. entry from %llu to %llu\n"), + _("would have corrected root directory %" PRIu64 " .. entry from %" PRIu64 " to %" PRIu64 "\n"), ino, *parent, ino); } } else if (ino == *parent && ino != mp->m_sb.sb_rootino) { @@ -477,7 +477,7 @@ process_shortform_dir( * to . */ *parent = NULLFSINO; - do_warn(_("bad .. entry in dir ino %llu, points to self, "), + do_warn(_("bad .. entry in dir ino %" PRIu64 ", points to self, "), ino); if (!no_modify) { do_warn(_("clearing inode number\n")); @@ -569,7 +569,7 @@ verify_da_freemap(xfs_mount_t *mp, da_fr if (start >= mp->m_sb.sb_blocksize || start + len > mp->m_sb.sb_blocksize) { do_warn( - _("hole (start %d, len %d) out of range, block %d, dir ino %llu\n"), + _("hole (start %d, len %d) out of range, block %d, dir ino %" PRIu64 "\n"), start, len, da_bno, ino); return(1); } @@ -580,7 +580,7 @@ verify_da_freemap(xfs_mount_t *mp, da_fr * bad news -- hole claims a used byte is free */ do_warn( - _("hole claims used byte %d, block %d, dir ino %llu\n"), + _("hole claims used byte %d, block %d, dir ino %" PRIu64 "\n"), j, da_bno, ino); return(1); } @@ -695,7 +695,7 @@ compare_da_freemaps(xfs_mount_t *mp, da_ if ((holemap->lost_holes > 0 ? 1 : 0) != block_hmap->lost_holes) { if (verbose) { do_warn( - _("- derived hole value %d, saw %d, block %d, dir ino %llu\n"), + _("- derived hole value %d, saw %d, block %d, dir ino %" PRIu64 "\n"), holemap->lost_holes, block_hmap->lost_holes, da_bno, ino); res = 1; @@ -714,7 +714,7 @@ compare_da_freemaps(xfs_mount_t *mp, da_ if (!found) { if (verbose) { do_warn( -_("- derived hole (base %d, size %d) in block %d, dir inode %llu not found\n"), +_("- derived hole (base %d, size %d) in block %d, dir inode %" PRIu64 " not found\n"), holemap->hentries[i].base, holemap->hentries[i].size, da_bno, ino); @@ -790,12 +790,12 @@ traverse_int_dablock(xfs_mount_t *mp, XFS_FSB_TO_BB(mp, 1), 0); if (!bp) { if (whichfork == XFS_DATA_FORK) - do_warn(_("can't read block %u (fsbno %llu) " - "for directory inode %llu\n"), + do_warn( + _("can't read block %u (fsbno %" PRIu64 ") for directory inode %" PRIu64 "\n"), bno, fsbno, da_cursor->ino); else - do_warn(_("can't read block %u (fsbno %llu) " - "for attrbute fork of inode %llu\n"), + do_warn( + _("can't read block %u (fsbno %" PRIu64 ") for attrbute fork of inode %" PRIu64 "\n"), bno, fsbno, da_cursor->ino); goto error_out; } @@ -803,15 +803,15 @@ traverse_int_dablock(xfs_mount_t *mp, node = (xfs_da_intnode_t *)XFS_BUF_PTR(bp); if (be16_to_cpu(node->hdr.info.magic) != XFS_DA_NODE_MAGIC) { - do_warn(_("bad dir/attr magic number in inode %llu, " - "file bno = %u, fsbno = %llu\n"), + do_warn(_("bad dir/attr magic number in inode %" PRIu64 ", " + "file bno = %u, fsbno = %" PRIu64 "\n"), da_cursor->ino, bno, fsbno); libxfs_putbuf(bp); goto error_out; } if (be16_to_cpu(node->hdr.count) > mp->m_dir_node_ents) { - do_warn(_("bad record count in inode %llu, " + do_warn(_("bad record count in inode %" PRIu64 ", " "count = %d, max = %d\n"), da_cursor->ino, be16_to_cpu(node->hdr.count), @@ -831,11 +831,11 @@ traverse_int_dablock(xfs_mount_t *mp, } else { if (whichfork == XFS_DATA_FORK) do_warn(_("bad directory btree for " - "directory inode %llu\n"), + "directory inode %" PRIu64 "\n"), da_cursor->ino); else do_warn(_("bad attribute fork btree " - "for inode %llu\n"), + "for inode %" PRIu64 "\n"), da_cursor->ino); libxfs_putbuf(bp); goto error_out; @@ -949,7 +949,7 @@ get_first_dblock_fsbno(xfs_mount_t *mp, fsbno = get_bmapi(mp, dino, ino, bno, XFS_DATA_FORK); if (fsbno == NULLDFSBNO) { - do_warn(_("bmap of block #%u of inode %llu failed\n"), + do_warn(_("bmap of block #%u of inode %" PRIu64 " failed\n"), bno, ino); return(fsbno); } @@ -968,8 +968,8 @@ get_first_dblock_fsbno(xfs_mount_t *mp, bp = libxfs_readbuf(mp->m_dev, XFS_FSB_TO_DADDR(mp, fsbno), XFS_FSB_TO_BB(mp, 1), 0); if (!bp) { - do_warn(_("can't read block %u (fsbno %llu) " - "for directory inode %llu\n"), + do_warn( + _("can't read block %u (fsbno %" PRIu64 ") for directory inode %" PRIu64 "\n"), bno, fsbno, ino); return(NULLDFSBNO); } @@ -978,8 +978,8 @@ get_first_dblock_fsbno(xfs_mount_t *mp, if (XFS_DA_NODE_MAGIC != be16_to_cpu(node->hdr.info.magic)) { - do_warn(_("bad dir/attr magic number in inode %llu, " - "file bno = %u, fsbno = %llu\n"), + do_warn( + _("bad dir/attr magic number in inode %" PRIu64 ", file bno = %u, fsbno = %" PRIu64 "\n"), ino, bno, fsbno); libxfs_putbuf(bp); return(NULLDFSBNO); @@ -994,7 +994,7 @@ get_first_dblock_fsbno(xfs_mount_t *mp, fsbno = get_bmapi(mp, dino, ino, bno, XFS_DATA_FORK); if (fsbno == NULLDFSBNO) { - do_warn(_("bmap of block #%u of inode %llu failed\n"), + do_warn(_("bmap of block #%u of inode %" PRIu64 " failed\n"), bno, ino); return(NULLDFSBNO); } @@ -1063,7 +1063,7 @@ verify_final_da_path(xfs_mount_t *mp, bad++; } if (bad) { - do_warn(_("bad directory block in dir ino %llu\n"), + do_warn(_("bad directory block in dir ino %" PRIu64 "\n"), cursor->ino); return(1); } @@ -1095,7 +1095,7 @@ verify_final_da_path(xfs_mount_t *mp, if (!no_modify) { do_warn(_("correcting bad hashval in non-leaf " "dir/attr block\n\tin (level %d) in " - "inode %llu.\n"), + "inode %" PRIu64 ".\n"), this_level, cursor->ino); node->btree[entry].hashval = cpu_to_be32( cursor->level[p_level].hashval); @@ -1103,7 +1103,7 @@ verify_final_da_path(xfs_mount_t *mp, } else { do_warn(_("would correct bad hashval in non-leaf " "dir/attr block\n\tin (level %d) in " - "inode %llu.\n"), + "inode %" PRIu64 ".\n"), this_level, cursor->ino); } } @@ -1240,7 +1240,7 @@ verify_da_path(xfs_mount_t *mp, if (fsbno == NULLDFSBNO) { do_warn(_("can't get map info for block %u " - "of directory inode %llu\n"), + "of directory inode %" PRIu64 "\n"), dabno, cursor->ino); return(1); } @@ -1248,8 +1248,8 @@ verify_da_path(xfs_mount_t *mp, bp = libxfs_readbuf(mp->m_dev, XFS_FSB_TO_DADDR(mp, fsbno), XFS_FSB_TO_BB(mp, 1), 0); if (!bp) { - do_warn(_("can't read block %u (%llu) " - "for directory inode %llu\n"), + do_warn( + _("can't read block %u (%" PRIu64 ") for directory inode %" PRIu64 "\n"), dabno, fsbno, cursor->ino); return(1); } @@ -1261,29 +1261,29 @@ verify_da_path(xfs_mount_t *mp, */ bad = 0; if (XFS_DA_NODE_MAGIC != be16_to_cpu(newnode->hdr.info.magic)) { - do_warn(_("bad magic number %x in block %u (%llu) " - "for directory inode %llu\n"), + do_warn( + _("bad magic number %x in block %u (%" PRIu64 ") for directory inode %" PRIu64 "\n"), be16_to_cpu(newnode->hdr.info.magic), dabno, fsbno, cursor->ino); bad++; } if (be32_to_cpu(newnode->hdr.info.back) != cursor->level[this_level].bno) { - do_warn(_("bad back pointer in block %u (%llu) " - "for directory inode %llu\n"), + do_warn( + _("bad back pointer in block %u (%"PRIu64 ") for directory inode %" PRIu64 "\n"), dabno, fsbno, cursor->ino); bad++; } if (be16_to_cpu(newnode->hdr.count) > mp->m_dir_node_ents) { - do_warn(_("entry count %d too large in block %u (%llu) " - "for directory inode %llu\n"), + do_warn( + _("entry count %d too large in block %u (%" PRIu64 ") for directory inode %" PRIu64 "\n"), be16_to_cpu(newnode->hdr.count), dabno, fsbno, cursor->ino); bad++; } if (be16_to_cpu(newnode->hdr.level) != this_level) { - do_warn(_("bad level %d in block %u (%llu) " - "for directory inode %llu\n"), + do_warn( + _("bad level %d in block %u (%" PRIu64 ") for directory inode %" PRIu64 "\n"), be16_to_cpu(newnode->hdr.level), dabno, fsbno, cursor->ino); bad++; @@ -1342,7 +1342,7 @@ verify_da_path(xfs_mount_t *mp, if (!no_modify) { do_warn(_("correcting bad hashval in interior " "dir/attr block\n\tin (level %d) in " - "inode %llu.\n"), + "inode %" PRIu64 ".\n"), this_level, cursor->ino); node->btree[entry].hashval = cpu_to_be32( cursor->level[p_level].hashval); @@ -1350,7 +1350,7 @@ verify_da_path(xfs_mount_t *mp, } else { do_warn(_("would correct bad hashval in interior " "dir/attr block\n\tin (level %d) in " - "inode %llu.\n"), + "inode %" PRIu64 ".\n"), this_level, cursor->ino); } } @@ -1443,7 +1443,7 @@ process_leaf_dir_block( unsigned char *dir_freemap = ts_dir_freemap(); #ifdef XR_DIR_TRACE - fprintf(stderr, "\tprocess_leaf_dir_block - ino %llu\n", ino); + fprintf(stderr, "\tprocess_leaf_dir_block - ino %" PRIu64 "\n", ino); #endif /* @@ -1459,7 +1459,7 @@ process_leaf_dir_block( i = stop = sizeof(xfs_dir_leaf_hdr_t); if (set_da_freemap(mp, dir_freemap, 0, stop)) { do_warn( -_("directory block header conflicts with used space in directory inode %llu\n"), +_("directory block header conflicts with used space in directory inode %" PRIu64 "\n"), ino); return(1); } @@ -1488,7 +1488,7 @@ _("directory block header conflicts with if (be16_to_cpu(leaf->hdr.count) > 1) { do_warn( -_("nameidx %d for entry #%d, bno %d, ino %llu > fs blocksize, deleting entry\n"), +_("nameidx %d for entry #%d, bno %d, ino %" PRIu64 " > fs blocksize, deleting entry\n"), be16_to_cpu(entry->nameidx), i, da_bno, ino); ASSERT(be16_to_cpu(leaf->hdr.count) > i); @@ -1525,7 +1525,7 @@ _("nameidx %d for entry #%d, bno %d, ino entry--; } else { do_warn( -_("nameidx %d, entry #%d, bno %d, ino %llu > fs blocksize, marking entry bad\n"), +_("nameidx %d, entry #%d, bno %d, ino %" PRIu64 " > fs blocksize, marking entry bad\n"), be16_to_cpu(entry->nameidx), i, da_bno, ino); entry->nameidx = cpu_to_be16( @@ -1540,7 +1540,7 @@ _("nameidx %d, entry #%d, bno %d, ino %l } } else { do_warn( -_("nameidx %d, entry #%d, bno %d, ino %llu > fs blocksize, would delete entry\n"), +_("nameidx %d, entry #%d, bno %d, ino %" PRIu64 " > fs blocksize, would delete entry\n"), be16_to_cpu(entry->nameidx), i, da_bno, ino); } @@ -1577,7 +1577,7 @@ _("nameidx %d, entry #%d, bno %d, ino %l * since it's still structurally intact. */ do_warn( - _("invalid ino number %llu in dir ino %llu, entry #%d, bno %d\n"), +_("invalid ino number %" PRIu64 " in dir ino %" PRIu64 ", entry #%d, bno %d\n"), lino, ino, i, da_bno); if (!no_modify) { do_warn( @@ -1593,7 +1593,7 @@ _("nameidx %d, entry #%d, bno %d, ino %l } } else if (lino == mp->m_sb.sb_rbmino) { do_warn( -_("entry #%d, bno %d in directory %llu references realtime bitmap inode %llu\n"), +_("entry #%d, bno %d in directory %" PRIu64 " references realtime bitmap inode %" PRIu64 "\n"), i, da_bno, ino, lino); if (!no_modify) { do_warn( @@ -1610,7 +1610,7 @@ _("entry #%d, bno %d in directory %llu r } } else if (lino == mp->m_sb.sb_rsumino) { do_warn( -_("entry #%d, bno %d in directory %llu references realtime summary inode %llu\n"), +_("entry #%d, bno %d in directory %" PRIu64 " references realtime summary inode %" PRIu64 "\n"), i, da_bno, ino, lino); if (!no_modify) { do_warn( @@ -1626,7 +1626,7 @@ _("entry #%d, bno %d in directory %llu r } } else if (lino == mp->m_sb.sb_uquotino) { do_warn( -_("entry #%d, bno %d in directory %llu references user quota inode %llu\n"), +_("entry #%d, bno %d in directory %" PRIu64 " references user quota inode %" PRIu64 "\n"), i, da_bno, ino, lino); if (!no_modify) { do_warn( @@ -1643,7 +1643,7 @@ _("entry #%d, bno %d in directory %llu r } } else if (lino == mp->m_sb.sb_gquotino) { do_warn( -_("entry #%d, bno %d in directory %llu references group quota inode %llu\n"), +_("entry #%d, bno %d in directory %" PRIu64 " references group quota inode %" PRIu64 "\n"), i, da_bno, ino, lino); if (!no_modify) { do_warn( @@ -1680,7 +1680,7 @@ _("entry #%d, bno %d in directory %llu r if (!ino_discovery && is_inode_free(irec_p, ino_off)) { if (!no_modify) { do_warn( -_("entry references free inode %llu in directory %llu, will clear entry\n"), +_("entry references free inode %" PRIu64 " in directory %" PRIu64 ", will clear entry\n"), lino, ino); lino = NULLFSINO; xfs_dir_sf_put_dirino(&lino, @@ -1688,7 +1688,7 @@ _("entry references free inode %llu in d *buf_dirty = 1; } else { do_warn( -_("entry references free inode %llu in directory %llu, would clear entry\n"), +_("entry references free inode %" PRIu64 " in directory %" PRIu64 ", would clear entry\n"), lino, ino); } } @@ -1696,7 +1696,7 @@ _("entry references free inode %llu in d add_inode_uncertain(mp, lino, 0); } else { do_warn( - _("bad ino number %llu in dir ino %llu, entry #%d, bno %d\n"), + _("bad ino number %" PRIu64 " in dir ino %" PRIu64 ", entry #%d, bno %d\n"), lino, ino, i, da_bno); if (!no_modify) { do_warn(_("clearing inode number...\n")); @@ -1724,7 +1724,7 @@ _("entry references free inode %llu in d if (be16_to_cpu(leaf->hdr.count) > 1) { do_warn( - _("entry #%d, dir inode %llu, has zero-len name, deleting entry\n"), + _("entry #%d, dir inode %" PRIu64 ", has zero-len name, deleting entry\n"), i, ino); ASSERT(be16_to_cpu(leaf->hdr.count) > i); @@ -1762,7 +1762,7 @@ _("entry references free inode %llu in d * inode number for now */ do_warn( - _("entry #%d, dir inode %llu, has zero-len name, marking entry bad\n"), + _("entry #%d, dir inode %" PRIu64 ", has zero-len name, marking entry bad\n"), i, ino); entry->nameidx = cpu_to_be16( mp->m_sb.sb_blocksize - @@ -1775,7 +1775,7 @@ _("entry references free inode %llu in d } else if (be16_to_cpu(entry->nameidx) + entry->namelen > XFS_LBSIZE(mp)) { do_warn( -_("bad size, entry #%d in dir inode %llu, block %u -- entry overflows block\n"), +_("bad size, entry #%d in dir inode %" PRIu64 ", block %u -- entry overflows block\n"), i, ino, da_bno); return(1); @@ -1786,7 +1786,7 @@ _("bad size, entry #%d in dir inode %llu if (set_da_freemap(mp, dir_freemap, start, stop)) { do_warn( -_("dir entry slot %d in block %u conflicts with used space in dir inode %llu\n"), +_("dir entry slot %d in block %u conflicts with used space in dir inode %" PRIu64 "\n"), i, da_bno, ino); return(1); } @@ -1825,13 +1825,13 @@ _("dir entry slot %d in block %u conflic */ if (!no_modify) { do_warn( -_("illegal name \"%s\" in directory inode %llu, entry will be cleared\n"), +_("illegal name \"%s\" in directory inode %" PRIu64 ", entry will be cleared\n"), fname, ino); namest->name[0] = '/'; *buf_dirty = 1; } else { do_warn( -_("illegal name \"%s\" in directory inode %llu, entry would be cleared\n"), +_("illegal name \"%s\" in directory inode %" PRIu64 ", entry would be cleared\n"), fname, ino); } } else if (!nm_illegal && @@ -1845,13 +1845,13 @@ _("illegal name \"%s\" in directory inod fname); if (!no_modify) { do_warn( - _("\t\tin directory inode %llu. resetting hash value.\n"), + _("\t\tin directory inode %" PRIu64 ". resetting hash value.\n"), ino); entry->hashval = cpu_to_be32(hashval); *buf_dirty = 1; } else { do_warn( - _("\t\tin directory inode %llu. would reset hash value.\n"), + _("\t\tin directory inode %" PRIu64 ". would reset hash value.\n"), ino); } } @@ -1885,14 +1885,14 @@ _("illegal name \"%s\" in directory inod fname); if (!no_modify) { do_warn( - _("\t\tin directory inode %llu. will clear entry\n"), + _("\t\tin directory inode %" PRIu64 ". will clear entry\n"), ino); entry->hashval = cpu_to_be32(last_hashval); namest->name[0] = '/'; *buf_dirty = 1; } else { do_warn( - _("\t\tin directory inode %llu. would clear entry\n"), + _("\t\tin directory inode %" PRIu64 ". would clear entry\n"), ino); } } @@ -1908,18 +1908,18 @@ _("illegal name \"%s\" in directory inod + sizeof(xfs_dir_leaf_name_t) + entry->namelen - 1)) { do_warn( -_("name \"%s\" (block %u, slot %d) conflicts with used space in dir inode %llu\n"), +_("name \"%s\" (block %u, slot %d) conflicts with used space in dir inode %" PRIu64 "\n"), fname, da_bno, i, ino); if (!no_modify) { entry->namelen = 0; *buf_dirty = 1; do_warn( - _("will clear entry \"%s\" (#%d) in directory inode %llu\n"), + _("will clear entry \"%s\" (#%d) in directory inode %" PRIu64 "\n"), fname, i, ino); } else { do_warn( - _("would clear entry \"%s\" (#%d)in directory inode %llu\n"), + _("would clear entry \"%s\" (#%d)in directory inode %" PRIu64 "\n"), fname, i, ino); } continue; @@ -1944,7 +1944,7 @@ _("name \"%s\" (block %u, slot %d) confl (*dotdot)++; *parent = lino; #ifdef XR_DIR_TRACE - fprintf(stderr, "process_leaf_dir_block found .. entry (parent) = %llu\n", lino); + fprintf(stderr, "process_leaf_dir_block found .. entry (parent) = %" PRIu64 "\n", lino); #endif /* * what if .. == .? legal only in @@ -1955,7 +1955,7 @@ _("name \"%s\" (block %u, slot %d) confl ino != mp->m_sb.sb_rootino) { *parent = NULLFSINO; do_warn( - _("bad .. entry in dir ino %llu, points to self"), + _("bad .. entry in dir ino %" PRIu64 ", points to self"), ino); if (!no_modify) { do_warn( @@ -1974,14 +1974,14 @@ _("name \"%s\" (block %u, slot %d) confl */ if (!no_modify) { do_warn( - _("correcting .. entry in root inode %llu, was %llu\n"), + _("correcting .. entry in root inode %" PRIu64 ", was %" PRIu64 "\n"), ino, *parent); xfs_dir_sf_put_dirino( &ino, &namest->inumber); *buf_dirty = 1; } else { do_warn( - _("bad .. entry (%llu) in root inode %llu should be %llu\n"), + _("bad .. entry (%" PRIu64 ") in root inode %" PRIu64 " should be %" PRIu64 "\n"), *parent, ino, ino); } @@ -1998,13 +1998,13 @@ _("name \"%s\" (block %u, slot %d) confl */ if (!no_modify) { do_warn( -_("multiple .. entries in directory inode %llu, will clear second entry\n"), +_("multiple .. entries in directory inode %" PRIu64 ", will clear second entry\n"), ino); namest->name[0] = '/'; *buf_dirty = 1; } else { do_warn( -_("multiple .. entries in directory inode %llu, would clear second entry\n"), +_("multiple .. entries in directory inode %" PRIu64 ", would clear second entry\n"), ino); } } @@ -2017,33 +2017,33 @@ _("multiple .. entries in directory inod if (lino != ino) { if (!no_modify) { do_warn( -_(". in directory inode %llu has wrong value (%llu), fixing entry...\n"), +_(". in directory inode %" PRIu64 " has wrong value (%" PRIu64 "), fixing entry...\n"), ino, lino); xfs_dir_sf_put_dirino(&ino, &namest->inumber); *buf_dirty = 1; } else { do_warn( - _(". in directory inode %llu has wrong value (%llu)\n"), +_(". in directory inode %" PRIu64 " has wrong value (%" PRIu64 ")\n"), ino, lino); } } } else { do_warn( - _("multiple . entries in directory inode %llu\n"), +_("multiple . entries in directory inode %" PRIu64 "\n"), ino); /* * mark entry as to be junked. */ if (!no_modify) { do_warn( - _("will clear one . entry in directory inode %llu\n"), +_("will clear one . entry in directory inode %" PRIu64 "\n"), ino); namest->name[0] = '/'; *buf_dirty = 1; } else { do_warn( - _("would clear one . entry in directory inode %llu\n"), +_("would clear one . entry in directory inode %" PRIu64 "\n"), ino); } } @@ -2053,7 +2053,7 @@ _(". in directory inode %llu has wrong v */ if (lino == ino) { do_warn( - _("entry \"%s\" in directory inode %llu points to self, "), + _("entry \"%s\" in directory inode %" PRIu64 " points to self, "), fname, ino); if (!no_modify) { do_warn(_("will clear entry\n")); @@ -2078,7 +2078,7 @@ _(". in directory inode %llu has wrong v if (!no_modify) { if (verbose) do_warn( -_("- resetting first used heap value from %d to %d in block %u of dir ino %llu\n"), +_("- resetting first used heap value from %d to %d in block %u of dir ino %" PRIu64 "\n"), be16_to_cpu(leaf->hdr.firstused), first_used, da_bno, ino); leaf->hdr.firstused = cpu_to_be16(first_used); @@ -2086,7 +2086,7 @@ _("- resetting first used heap value fro } else { if (verbose) do_warn( -_("- would reset first used value from %d to %d in block %u of dir ino %llu\n"), +_("- would reset first used value from %d to %d in block %u of dir ino %" PRIu64 "\n"), be16_to_cpu(leaf->hdr.firstused), first_used, da_bno, ino); } @@ -2096,7 +2096,7 @@ _("- would reset first used value from % if (!no_modify) { if (verbose) do_warn( -_("- resetting namebytes cnt from %d to %d in block %u of dir inode %llu\n"), +_("- resetting namebytes cnt from %d to %d in block %u of dir inode %" PRIu64 "\n"), be16_to_cpu(leaf->hdr.namebytes), bytes_used, da_bno, ino); leaf->hdr.namebytes = cpu_to_be16(bytes_used); @@ -2104,7 +2104,7 @@ _("- resetting namebytes cnt from %d to } else { if (verbose) do_warn( -_("- would reset namebytes cnt from %d to %d in block %u of dir inode %llu\n"), +_("- would reset namebytes cnt from %d to %d in block %u of dir inode %" PRIu64 "\n"), be16_to_cpu(leaf->hdr.namebytes), bytes_used, da_bno, ino); } @@ -2139,7 +2139,7 @@ _("- would reset namebytes cnt from %d t if (holemap.lost_holes > 0) { if (verbose) do_warn( - _("- found unexpected lost holes in block %u, dir inode %llu\n"), + _("- found unexpected lost holes in block %u, dir inode %" PRIu64 "\n"), da_bno, ino); reset_holes = 1; @@ -2147,14 +2147,14 @@ _("- would reset namebytes cnt from %d t XFS_DIR_LEAF_MAPSIZE, ino, da_bno)) { if (verbose) do_warn( - _("- hole info non-optimal in block %u, dir inode %llu\n"), + _("- hole info non-optimal in block %u, dir inode %" PRIu64 "\n"), da_bno, ino); reset_holes = 1; } } else if (verify_da_freemap(mp, dir_freemap, &holemap, ino, da_bno)) { if (verbose) do_warn( - _("- hole info incorrect in block %u, dir inode %llu\n"), + _("- hole info incorrect in block %u, dir inode %" PRIu64 "\n"), da_bno, ino); reset_holes = 1; } @@ -2165,7 +2165,7 @@ _("- would reset namebytes cnt from %d t */ if (verbose) { do_warn( -_("- existing hole info for block %d, dir inode %llu (base, size) - \n"), +_("- existing hole info for block %d, dir inode %" PRIu64 " (base, size) - \n"), da_bno, ino); do_warn("- \t"); for (i = 0; i < XFS_DIR_LEAF_MAPSIZE; i++) { @@ -2179,7 +2179,7 @@ _("- existing hole info for block %d, di if (!no_modify) { if (verbose) do_warn( - _("- compacting block %u in dir inode %llu\n"), + _("- compacting block %u in dir inode %" PRIu64 "\n"), da_bno, ino); new_leaf = (xfs_dir_leafblock_t *) ts_dirbuf(); @@ -2220,7 +2220,7 @@ _("- existing hole info for block %d, di sizeof(xfs_dir_leaf_entry_t) + (__psint_t) d_entry) { do_warn( - _("not enough space in block %u of dir inode %llu for all entries\n"), + _("not enough space in block %u of dir inode %" PRIu64 " for all entries\n"), da_bno, ino); break; } @@ -2288,7 +2288,7 @@ _("- existing hole info for block %d, di } else { if (verbose) do_warn( - _("- would compact block %u in dir inode %llu\n"), + _("- would compact block %u in dir inode %" PRIu64 "\n"), da_bno, ino); } } @@ -2332,7 +2332,7 @@ process_leaf_dir_level(xfs_mount_t *mp, xfs_dahash_t greatest_hashval; #ifdef XR_DIR_TRACE - fprintf(stderr, "process_leaf_dir_level - ino %llu\n", da_cursor->ino); + fprintf(stderr, "process_leaf_dir_level - ino %" PRIu64 "\n", da_cursor->ino); #endif *repair = 0; da_bno = da_cursor->level[0].bno; @@ -2350,7 +2350,7 @@ process_leaf_dir_level(xfs_mount_t *mp, if (dev_bno == NULLDFSBNO) { do_warn( - _("can't map block %u for directory inode %llu\n"), + _("can't map block %u for directory inode %" PRIu64 "\n"), da_bno, ino); goto error_out; } @@ -2361,9 +2361,9 @@ process_leaf_dir_level(xfs_mount_t *mp, XFS_FSB_TO_BB(mp, 1), 0); if (!bp) { do_warn( - _("can't read file block %u (fsbno %llu, daddr %lld) " - "for directory inode %llu\n"), - da_bno, dev_bno, (__int64_t) bd_addr, ino); + _("can't read file block %u (fsbno %" PRIu64 ", daddr %" PRId64 ") " + "for directory inode %" PRIu64 "\n"), + da_bno, dev_bno, bd_addr, ino); goto error_out; } @@ -2375,7 +2375,7 @@ process_leaf_dir_level(xfs_mount_t *mp, if (XFS_DIR_LEAF_MAGIC != be16_to_cpu(leaf->hdr.info.magic)) { do_warn( - _("bad directory leaf magic # %#x for dir ino %llu\n"), + _("bad directory leaf magic # %#x for dir ino %" PRIu64"\n"), be16_to_cpu(leaf->hdr.info.magic), ino); libxfs_putbuf(bp); @@ -2414,8 +2414,8 @@ process_leaf_dir_level(xfs_mount_t *mp, da_cursor->level[0].dirty = buf_dirty; if (be32_to_cpu(leaf->hdr.info.back) != prev_bno) { - do_warn(_("bad sibling back pointer for directory " - "block %u in directory inode %llu\n"), + do_warn( + _("bad sibling back pointer for directory block %u in directory inode %" PRIu64 "\n"), da_bno, ino); libxfs_putbuf(bp); goto error_out; @@ -2446,7 +2446,7 @@ process_leaf_dir_level(xfs_mount_t *mp, /* * verify the final path up (right-hand-side) if still ok */ - do_warn(_("bad hash path in directory %llu\n"), da_cursor->ino); + do_warn(_("bad hash path in directory %" PRIu64 "\n"), da_cursor->ino); goto error_out; } @@ -2507,7 +2507,7 @@ process_node_dir( da_bt_cursor_t da_cursor; #ifdef XR_DIR_TRACE - fprintf(stderr, "process_node_dir - ino %llu\n", ino); + fprintf(stderr, "process_node_dir - ino %" PRIu64 "\n", ino); #endif *repair = *dot = *dotdot = 0; *parent = NULLFSINO; @@ -2556,16 +2556,16 @@ process_node_dir( if ((xfs_fsize_t) da_cursor.greatest_bno * mp->m_sb.sb_blocksize > UINT_MAX) { do_warn( - _("out of range internal directory block numbers (inode %llu)\n"), + _("out of range internal directory block numbers (inode %" PRIu64 ")\n"), ino); return(1); } do_warn( -_("setting directory inode (%llu) size to %llu bytes, was %lld bytes\n"), +_("setting directory inode (%" PRIu64 ") size to %" PRIu64 " bytes, was %" PRId64 " bytes\n"), ino, (xfs_dfiloff_t) (da_cursor.greatest_bno + 1) * mp->m_sb.sb_blocksize, - be64_to_cpu(dip->di_core.di_size)); + (__int64_t)be64_to_cpu(dip->di_core.di_size)); dip->di_core.di_size = cpu_to_be64((da_cursor.greatest_bno + 1) * mp->m_sb.sb_blocksize); @@ -2609,21 +2609,21 @@ process_leaf_dir( int buf_dirty = 0; #ifdef XR_DIR_TRACE - fprintf(stderr, "process_leaf_dir - ino %llu\n", ino); + fprintf(stderr, "process_leaf_dir - ino %" PRIu64 "\n", ino); #endif *repair = *dot = *dotdot = 0; *parent = NULLFSINO; bno = blkmap_get(blkmap, 0); if (bno == NULLDFSBNO) { - do_warn(_("block 0 for directory inode %llu is missing\n"), + do_warn(_("block 0 for directory inode %" PRIu64 " is missing\n"), ino); return(1); } bp = libxfs_readbuf(mp->m_dev, XFS_FSB_TO_DADDR(mp, bno), XFS_FSB_TO_BB(mp, 1), 0); if (!bp) { - do_warn(_("can't read block 0 for directory inode %llu\n"), + do_warn(_("can't read block 0 for directory inode %" PRIu64 "\n"), ino); return(1); } @@ -2636,7 +2636,7 @@ process_leaf_dir( * check magic number for leaf directory btree block */ if (be16_to_cpu(leaf->hdr.info.magic) != XFS_DIR_LEAF_MAGIC) { - do_warn(_("bad directory leaf magic # %#x for dir ino %llu\n"), + do_warn(_("bad directory leaf magic # %#x for dir ino %" PRIu64 "\n"), be16_to_cpu(leaf->hdr.info.magic), ino); libxfs_putbuf(bp); return(1); @@ -2660,13 +2660,13 @@ process_leaf_dir( if (leaf->hdr.info.forw || leaf->hdr.info.back) { if (!no_modify) { do_warn(_("clearing forw/back pointers for " - "directory inode %llu\n"), ino); + "directory inode %" PRIu64 "\n"), ino); buf_dirty = 1; leaf->hdr.info.forw = 0; leaf->hdr.info.back = 0; } else { do_warn(_("would clear forw/back pointers for " - "directory inode %llu\n"), ino); + "directory inode %" PRIu64 "\n"), ino); } } @@ -2730,7 +2730,7 @@ process_dir( * bad . entries in all directories will be fixed up in phase 6 */ if (dot == 0) - do_warn(_("no . entry for directory %llu\n"), ino); + do_warn(_("no . entry for directory %" PRIu64 "\n"), ino); /* * shortform dirs always have a .. entry. .. for all longform @@ -2739,14 +2739,14 @@ process_dir( * fixed in place since we know what it should be */ if (dotdot == 0 && ino != mp->m_sb.sb_rootino) { - do_warn(_("no .. entry for directory %llu\n"), ino); + do_warn(_("no .. entry for directory %" PRIu64 "\n"), ino); } else if (dotdot == 0 && ino == mp->m_sb.sb_rootino) { - do_warn(_("no .. entry for root directory %llu\n"), ino); + do_warn(_("no .. entry for root directory %" PRIu64 "\n"), ino); need_root_dotdot = 1; } #ifdef XR_DIR_TRACE - fprintf(stderr, "(process_dir), parent of %llu is %llu\n", ino, parent); + fprintf(stderr, "(process_dir), parent of %" PRIu64 " is %" PRIu64 "\n", ino, parent); #endif return(res); } Index: xfsprogs-dev/repair/dir2.c =================================================================== --- xfsprogs-dev.orig/repair/dir2.c 2011-06-30 22:03:18.749512409 +0200 +++ xfsprogs-dev/repair/dir2.c 2011-06-30 22:03:24.686179002 +0200 @@ -53,7 +53,7 @@ dir2_add_badlist( if ((l = malloc(sizeof(dir2_bad_t))) == NULL) { do_error( - _("malloc failed (%u bytes) dir2_add_badlist:ino %llu\n"), +_("malloc failed (%zu bytes) dir2_add_badlist:ino %" PRIu64 "\n"), sizeof(dir2_bad_t), ino); exit(1); } @@ -300,8 +300,8 @@ traverse_int_dir2block(xfs_mount_t *mp, if (bmp != &lbmp) free(bmp); if (bp == NULL) { - do_warn(_("can't read block %u for directory inode " - "%llu\n"), + do_warn( +_("can't read block %u for directory inode %" PRIu64 "\n"), bno, da_cursor->ino); goto error_out; } @@ -310,8 +310,8 @@ traverse_int_dir2block(xfs_mount_t *mp, if (be16_to_cpu(info->magic) == XFS_DIR2_LEAFN_MAGIC) { if ( i != -1 ) { - do_warn(_("found non-root LEAFN node in inode " - "%llu bno = %u\n"), + do_warn( +_("found non-root LEAFN node in inode %" PRIu64 " bno = %u\n"), da_cursor->ino, bno); } *rbno = 0; @@ -319,8 +319,8 @@ traverse_int_dir2block(xfs_mount_t *mp, return(1); } else if (be16_to_cpu(info->magic) != XFS_DA_NODE_MAGIC) { da_brelse(bp); - do_warn(_("bad dir magic number 0x%x in inode %llu " - "bno = %u\n"), + do_warn( +_("bad dir magic number 0x%x in inode %" PRIu64 " bno = %u\n"), be16_to_cpu(info->magic), da_cursor->ino, bno); goto error_out; @@ -328,8 +328,8 @@ traverse_int_dir2block(xfs_mount_t *mp, node = (xfs_da_intnode_t*)info; if (be16_to_cpu(node->hdr.count) > mp->m_dir_node_ents) { da_brelse(bp); - do_warn(_("bad record count in inode %llu, count = %d, " - "max = %d\n"), da_cursor->ino, + do_warn( +_("bad record count in inode %" PRIu64 ", count = %d, max = %d\n"), da_cursor->ino, be16_to_cpu(node->hdr.count), mp->m_dir_node_ents); goto error_out; @@ -340,8 +340,8 @@ traverse_int_dir2block(xfs_mount_t *mp, if (i == -1) { i = da_cursor->active = be16_to_cpu(node->hdr.level); if (i >= XFS_DA_NODE_MAXDEPTH) { - do_warn(_("bad header depth for directory " - "inode %llu\n"), + do_warn( +_("bad header depth for directory inode %" PRIu64 "\n"), da_cursor->ino); da_brelse(bp); i = -1; @@ -351,8 +351,8 @@ traverse_int_dir2block(xfs_mount_t *mp, if (be16_to_cpu(node->hdr.level) == i - 1) { i--; } else { - do_warn(_("bad directory btree for directory " - "inode %llu\n"), + do_warn( +_("bad directory btree for directory inode %" PRIu64 "\n"), da_cursor->ino); da_brelse(bp); goto error_out; @@ -487,7 +487,7 @@ verify_final_dir2_path(xfs_mount_t *mp, bad++; } if (bad) { - do_warn(_("bad directory block in inode %llu\n"), cursor->ino); + do_warn(_("bad directory block in inode %" PRIu64 "\n"), cursor->ino); return(1); } /* @@ -507,15 +507,17 @@ verify_final_dir2_path(xfs_mount_t *mp, if (cursor->level[p_level].hashval != be32_to_cpu(node->btree[entry].hashval)) { if (!no_modify) { - do_warn(_("correcting bad hashval in non-leaf dir " - "block\n\tin (level %d) in inode %llu.\n"), + do_warn( +_("correcting bad hashval in non-leaf dir block\n" + "\tin (level %d) in inode %" PRIu64 ".\n"), this_level, cursor->ino); node->btree[entry].hashval = cpu_to_be32( cursor->level[p_level].hashval); cursor->level[this_level].dirty++; } else { - do_warn(_("would correct bad hashval in non-leaf dir " - "block\n\tin (level %d) in inode %llu.\n"), + do_warn( +_("would correct bad hashval in non-leaf dir block\n" + "\tin (level %d) in inode %" PRIu64 ".\n"), this_level, cursor->ino); } } @@ -645,8 +647,8 @@ verify_dir2_path(xfs_mount_t *mp, nex = blkmap_getn(cursor->blkmap, dabno, mp->m_dirblkfsbs, &bmp, &lbmp); if (nex == 0) { - do_warn(_("can't get map info for block %u of " - "directory inode %llu\n"), + do_warn( +_("can't get map info for block %u of directory inode %" PRIu64 "\n"), dabno, cursor->ino); return(1); } @@ -656,8 +658,8 @@ verify_dir2_path(xfs_mount_t *mp, free(bmp); if (bp == NULL) { - do_warn(_("can't read block %u for directory inode " - "%llu\n"), + do_warn( +_("can't read block %u for directory inode %" PRIu64 "\n"), dabno, cursor->ino); return(1); } @@ -669,29 +671,29 @@ verify_dir2_path(xfs_mount_t *mp, */ bad = 0; if (XFS_DA_NODE_MAGIC != be16_to_cpu(newnode->hdr.info.magic)) { - do_warn(_("bad magic number %x in block %u for " - "directory inode %llu\n"), + do_warn( +_("bad magic number %x in block %u for directory inode %" PRIu64 "\n"), be16_to_cpu(newnode->hdr.info.magic), dabno, cursor->ino); bad++; } if (be32_to_cpu(newnode->hdr.info.back) != cursor->level[this_level].bno) { - do_warn(_("bad back pointer in block %u for directory " - "inode %llu\n"), + do_warn( +_("bad back pointer in block %u for directory inode %" PRIu64 "\n"), dabno, cursor->ino); bad++; } if (be16_to_cpu(newnode->hdr.count) > mp->m_dir_node_ents) { - do_warn(_("entry count %d too large in block %u for " - "directory inode %llu\n"), + do_warn( +_("entry count %d too large in block %u for directory inode %" PRIu64 "\n"), be16_to_cpu(newnode->hdr.count), dabno, cursor->ino); bad++; } if (be16_to_cpu(newnode->hdr.level) != this_level) { - do_warn(_("bad level %d in block %u for directory " - "inode %llu\n"), + do_warn( +_("bad level %d in block %u for directory inode %" PRIu64 "\n"), be16_to_cpu(newnode->hdr.level), dabno, cursor->ino); bad++; @@ -733,15 +735,17 @@ verify_dir2_path(xfs_mount_t *mp, if (cursor->level[p_level].hashval != be32_to_cpu(node->btree[entry].hashval)) { if (!no_modify) { - do_warn(_("correcting bad hashval in interior dir " - "block\n\tin (level %d) in inode %llu.\n"), + do_warn( +_("correcting bad hashval in interior dir block\n" + "\tin (level %d) in inode %" PRIu64 ".\n"), this_level, cursor->ino); node->btree[entry].hashval = cpu_to_be32( cursor->level[p_level].hashval); cursor->level[this_level].dirty++; } else { - do_warn(_("would correct bad hashval in interior dir " - "block\n\tin (level %d) in inode %llu.\n"), + do_warn( +_("would correct bad hashval in interior dir block\n" + "\tin (level %d) in inode %" PRIu64 ".\n"), this_level, cursor->ino); } } @@ -965,8 +969,8 @@ process_sf_dir2( } namelen = sfep->namelen; if (junkit) - do_warn(_("entry \"%*.*s\" in shortform directory %llu " - "references %s inode %llu\n"), + do_warn( +_("entry \"%*.*s\" in shortform directory %" PRIu64 " references %s inode %" PRIu64 "\n"), namelen, namelen, sfep->name, ino, junkreason, lino); if (namelen == 0) { @@ -985,20 +989,18 @@ process_sf_dir2( ((__psint_t) &sfep->name[0] - (__psint_t) sfp); if (!no_modify) { - do_warn(_("zero length entry in " - "shortform dir %llu, " - "resetting to %d\n"), + do_warn( +_("zero length entry in shortform dir %" PRIu64 ", resetting to %d\n"), ino, namelen); sfep->namelen = namelen; } else { - do_warn(_("zero length entry in " - "shortform dir %llu, " - "would set to %d\n"), + do_warn( +_("zero length entry in shortform dir %" PRIu64 ", would set to %d\n"), ino, namelen); } } else { - do_warn(_("zero length entry in shortform dir " - "%llu"), + do_warn( +_("zero length entry in shortform dir %" PRIu64 ""), ino); if (!no_modify) do_warn(_(", junking %d entries\n"), @@ -1021,8 +1023,8 @@ process_sf_dir2( namelen = ino_dir_size - ((__psint_t) &sfep->name[0] - (__psint_t) sfp); - do_warn(_("size of last entry overflows space " - "left in in shortform dir %llu, "), + do_warn( +_("size of last entry overflows space left in in shortform dir %" PRIu64 ", "), ino); if (!no_modify) { do_warn(_("resetting to %d\n"), @@ -1034,8 +1036,8 @@ process_sf_dir2( namelen); } } else { - do_warn(_("size of entry #%d overflows space " - "left in in shortform dir %llu\n"), + do_warn( +_("size of entry #%d overflows space left in in shortform dir %" PRIu64 "\n"), i, ino); if (!no_modify) { if (i == num_entries - 1) @@ -1071,15 +1073,15 @@ process_sf_dir2( /* * junk entry */ - do_warn(_("entry contains illegal character " - "in shortform dir %llu\n"), + do_warn( +_("entry contains illegal character in shortform dir %" PRIu64 "\n"), ino); junkit = 1; } if (xfs_dir2_sf_get_offset(sfep) < offset) { - do_warn(_("entry contains offset out of order in " - "shortform dir %llu\n"), + do_warn( +_("entry contains offset out of order in shortform dir %" PRIu64 "\n"), ino); bad_offset = 1; } @@ -1135,12 +1137,12 @@ process_sf_dir2( *dino_dirty = 1; *repair = 1; - do_warn(_("junking entry \"%s\" in directory " - "inode %llu\n"), + do_warn( +_("junking entry \"%s\" in directory inode %" PRIu64 "\n"), name, ino); } else { - do_warn(_("would have junked entry \"%s\" in " - "directory inode %llu\n"), + do_warn( +_("would have junked entry \"%s\" in directory inode %" PRIu64 "\n"), name, ino); } } else if (lino > XFS_DIR2_MAX_SHORT_INUM) @@ -1166,12 +1168,12 @@ process_sf_dir2( if (sfp->hdr.count != i) { if (no_modify) { - do_warn(_("would have corrected entry count " - "in directory %llu from %d to %d\n"), + do_warn( +_("would have corrected entry count in directory %" PRIu64 " from %d to %d\n"), ino, sfp->hdr.count, i); } else { - do_warn(_("corrected entry count in directory %llu, " - "was %d, now %d\n"), + do_warn( +_("corrected entry count in directory %" PRIu64 "u, was %d, now %d\n"), ino, sfp->hdr.count, i); sfp->hdr.count = i; *dino_dirty = 1; @@ -1181,12 +1183,12 @@ process_sf_dir2( if (sfp->hdr.i8count != i8) { if (no_modify) { - do_warn(_("would have corrected i8 count in directory " - "%llu from %d to %d\n"), + do_warn( +_("would have corrected i8 count in directory %" PRIu64 " from %d to %d\n"), ino, sfp->hdr.i8count, i8); } else { - do_warn(_("corrected i8 count in directory %llu, " - "was %d, now %d\n"), + do_warn( +_("corrected i8 count in directory %" PRIu64 ", was %d, now %d\n"), ino, sfp->hdr.i8count, i8); if (i8 == 0) process_sf_dir2_fixi8(sfp, &next_sfep); @@ -1197,19 +1199,17 @@ process_sf_dir2( } } - if ((__psint_t) next_sfep - (__psint_t) sfp != ino_dir_size) { + if ((intptr_t)next_sfep - (intptr_t)sfp != ino_dir_size) { if (no_modify) { - do_warn(_("would have corrected directory %llu size " - "from %lld to %lld\n"), - ino, (__int64_t) ino_dir_size, - (__int64_t)((__psint_t)next_sfep - - (__psint_t)sfp)); + do_warn( +_("would have corrected directory %" PRIu64 " size from %" PRId64 " to %" PRIdPTR "\n"), + ino, ino_dir_size, + (intptr_t)next_sfep - (intptr_t)sfp); } else { - do_warn(_("corrected directory %llu size, was %lld, " - "now %lld\n"), - ino, (__int64_t) ino_dir_size, - (__int64_t)((__psint_t)next_sfep - - (__psint_t)sfp)); + do_warn( +_("corrected directory %" PRIu64 " size, was %" PRId64 ", now %" PRIdPTR "\n"), + ino, ino_dir_size, + (intptr_t)next_sfep - (intptr_t)sfp); dip->di_core.di_size = cpu_to_be64( (__psint_t)next_sfep - (__psint_t)sfp); @@ -1219,17 +1219,17 @@ process_sf_dir2( } if (offset + (sfp->hdr.count + 2) * sizeof(xfs_dir2_leaf_entry_t) + sizeof(xfs_dir2_block_tail_t) > mp->m_dirblksize) { - do_warn(_("directory %llu offsets too high\n"), ino); + do_warn(_("directory %" PRIu64 " offsets too high\n"), ino); bad_offset = 1; } if (bad_offset) { if (no_modify) { - do_warn(_("would have corrected entry offsets in " - "directory %llu\n"), + do_warn( +_("would have corrected entry offsets in directory %" PRIu64 "\n"), ino); } else { - do_warn(_("corrected entry offsets in " - "directory %llu\n"), + do_warn( +_("corrected entry offsets in directory %" PRIu64 "\n"), ino); process_sf_dir2_fixoff(dip); *dino_dirty = 1; @@ -1247,8 +1247,8 @@ process_sf_dir2( */ if (verify_inum(mp, *parent)) { - do_warn(_("bogus .. inode number (%llu) in directory inode " - "%llu, "), + do_warn( +_("bogus .. inode number (%" PRIu64 ") in directory inode %" PRIu64 ", "), *parent, ino); *parent = NULLFSINO; if (!no_modify) { @@ -1265,16 +1265,16 @@ process_sf_dir2( * root directories must have .. == . */ if (!no_modify) { - do_warn(_("corrected root directory %llu .. entry, " - "was %llu, now %llu\n"), + do_warn( +_("corrected root directory %" PRIu64 " .. entry, was %" PRIu64 ", now %" PRIu64 "\n"), ino, *parent, ino); *parent = ino; xfs_dir2_sf_put_inumber(sfp, parent, &sfp->hdr.parent); *dino_dirty = 1; *repair = 1; } else { - do_warn(_("would have corrected root directory %llu .. " - "entry from %llu to %llu\n"), + do_warn( +_("would have corrected root directory %" PRIu64 " .. entry from %" PRIu64" to %" PRIu64 "\n"), ino, *parent, ino); } } else if (ino == *parent && ino != mp->m_sb.sb_rootino) { @@ -1283,8 +1283,8 @@ process_sf_dir2( * to . */ *parent = NULLFSINO; - do_warn(_("bad .. entry in directory inode %llu, points to " - "self, "), + do_warn( +_("bad .. entry in directory inode %" PRIu64 ", points to self, "), ino); if (!no_modify) { do_warn(_("clearing inode number\n")); @@ -1396,7 +1396,7 @@ process_dir2_data( * Phase 6 will kill this block if we don't kill the inode. */ if (ptr != endptr) { - do_warn(_("corrupt block %u in directory inode %llu\n"), + do_warn(_("corrupt block %u in directory inode %" PRIu64 "\n"), da_bno, ino); if (!no_modify) do_warn(_("\twill junk block\n")); @@ -1483,20 +1483,21 @@ process_dir2_data( ASSERT((clearino == 0 && clearreason == NULL) || (clearino != 0 && clearreason != NULL)); if (clearino) - do_warn(_("entry \"%*.*s\" at block %u offset %d in " - "directory inode %llu references %s inode " - "%llu\n"), + do_warn( +_("entry \"%*.*s\" at block %d offset %" PRIdPTR " in directory inode %" PRIu64 + " references %s inode %" PRIu64 "\n"), dep->namelen, dep->namelen, dep->name, - da_bno, (char *)ptr - (char *)d, ino, + da_bno, (intptr_t)ptr - (intptr_t)d, ino, clearreason, ent_ino); /* * If the name length is 0 (illegal) make it 1 and blast * the entry. */ if (dep->namelen == 0) { - do_warn(_("entry at block %u offset %d in directory " - "inode %llu has 0 namelength\n"), - da_bno, (char *)ptr - (char *)d, ino); + do_warn( +_("entry at block %u offset %" PRIdPTR " in directory inode %" PRIu64 + "has 0 namelength\n"), + da_bno, (intptr_t)ptr - (intptr_t)d, ino); if (!no_modify) dep->namelen = 1; clearino = 1; @@ -1506,16 +1507,16 @@ process_dir2_data( */ if (clearino) { if (!no_modify) { - do_warn(_("\tclearing inode number in entry at " - "offset %d...\n"), - (char *)ptr - (char *)d); + do_warn( +_("\tclearing inode number in entry at offset %" PRIdPTR "...\n"), + (intptr_t)ptr - (intptr_t)d); dep->inumber = cpu_to_be64(BADFSINO); ent_ino = BADFSINO; bp->dirty = 1; } else { - do_warn(_("\twould clear inode number in entry " - "at offset %d...\n"), - (char *)ptr - (char *)d); + do_warn( +_("\twould clear inode number in entry at offset %" PRIdPTR "...\n"), + (intptr_t)ptr - (intptr_t)d); } } /* @@ -1526,9 +1527,9 @@ process_dir2_data( junkit = ent_ino == BADFSINO; nm_illegal = namecheck((char *)dep->name, dep->namelen); if (ino_discovery && nm_illegal) { - do_warn(_("entry at block %u offset %d in directory " - "inode %llu has illegal name \"%*.*s\": "), - da_bno, (char *)ptr - (char *)d, ino, + do_warn( +_("entry at block %u offset %" PRIdPTR " in directory inode %" PRIu64 " has illegal name \"%*.*s\": "), + da_bno, (intptr_t)ptr - (intptr_t)d, ino, dep->namelen, dep->namelen, dep->name); junkit = 1; } @@ -1556,8 +1557,8 @@ process_dir2_data( if (ino == ent_ino && ino != mp->m_sb.sb_rootino) { *parent = NULLFSINO; - do_warn(_("bad .. entry in directory " - "inode %llu, points to self: "), + do_warn( +_("bad .. entry in directory inode %" PRIu64 ", points to self: "), ino); junkit = 1; } @@ -1567,9 +1568,8 @@ process_dir2_data( */ else if (ino != ent_ino && ino == mp->m_sb.sb_rootino) { - do_warn(_("bad .. entry in root " - "directory inode %llu, was " - "%llu: "), + do_warn( +_("bad .. entry in root directory inode %" PRIu64 ", was %" PRIu64 ": "), ino, ent_ino); if (!no_modify) { do_warn(_("correcting\n")); @@ -1587,8 +1587,8 @@ process_dir2_data( * seem equally valid, trash this one. */ else { - do_warn(_("multiple .. entries in directory " - "inode %llu: "), + do_warn( +_("multiple .. entries in directory inode %" PRIu64 ": "), ino); junkit = 1; } @@ -1600,8 +1600,8 @@ process_dir2_data( if (!*dot) { (*dot)++; if (ent_ino != ino) { - do_warn(_("bad . entry in directory " - "inode %llu, was %llu: "), + do_warn( +_("bad . entry in directory inode %" PRIu64 ", was %" PRIu64 ": "), ino, ent_ino); if (!no_modify) { do_warn(_("correcting\n")); @@ -1612,8 +1612,8 @@ process_dir2_data( } } } else { - do_warn(_("multiple . entries in directory " - "inode %llu: "), + do_warn( +_("multiple . entries in directory inode %" PRIu64 ": "), ino); junkit = 1; } @@ -1622,8 +1622,8 @@ process_dir2_data( * All other entries -- make sure only . references self. */ else if (ent_ino == ino) { - do_warn(_("entry \"%*.*s\" in directory inode %llu " - "points to self: "), + do_warn( +_("entry \"%*.*s\" in directory inode %" PRIu64 " points to self: "), dep->namelen, dep->namelen, dep->name, ino); junkit = 1; } @@ -1648,8 +1648,9 @@ process_dir2_data( * Check the bestfree table. */ if (freeseen != 7 || badbest) { - do_warn(_("bad bestfree table in block %u in directory inode " - "%llu: "), da_bno, ino); + do_warn( +_("bad bestfree table in block %u in directory inode %" PRIu64 ": "), + da_bno, ino); if (!no_modify) { do_warn(_("repairing table\n")); libxfs_dir2_data_freescan(mp, d, &i); @@ -1692,7 +1693,8 @@ process_block_dir2( *parent = NULLFSINO; nex = blkmap_getn(blkmap, mp->m_dirdatablk, mp->m_dirblkfsbs, &bmp, &lbmp); if (nex == 0) { - do_warn(_("block %u for directory inode %llu is missing\n"), + do_warn( +_("block %u for directory inode %" PRIu64 " is missing\n"), mp->m_dirdatablk, ino); return 1; } @@ -1700,7 +1702,8 @@ process_block_dir2( if (bmp != &lbmp) free(bmp); if (bp == NULL) { - do_warn(_("can't read block %u for directory inode %llu\n"), + do_warn( +_("can't read block %u for directory inode %" PRIu64 "\n"), mp->m_dirdatablk, ino); return 1; } @@ -1709,8 +1712,8 @@ process_block_dir2( */ block = bp->data; if (be32_to_cpu(block->hdr.magic) != XFS_DIR2_BLOCK_MAGIC) - do_warn(_("bad directory block magic # %#x in block %u for " - "directory inode %llu\n"), + do_warn( +_("bad directory block magic # %#x in block %u for directory inode %" PRIu64 "\n"), be32_to_cpu(block->hdr.magic), mp->m_dirdatablk, ino); /* * process the data area @@ -1753,16 +1756,16 @@ process_leaf_block_dir2( for (i = stale = 0; i < be16_to_cpu(leaf->hdr.count); i++) { if ((char *)&leaf->ents[i] >= (char *)leaf + mp->m_dirblksize) { - do_warn(_("bad entry count in block %u of directory " - "inode %llu\n"), + do_warn( +_("bad entry count in block %u of directory inode %" PRIu64 "\n"), da_bno, ino); return 1; } if (be32_to_cpu(leaf->ents[i].address) == XFS_DIR2_NULL_DATAPTR) stale++; else if (be32_to_cpu(leaf->ents[i].hashval) < last_hashval) { - do_warn(_("bad hash ordering in block %u of directory " - "inode %llu\n"), + do_warn( +_("bad hash ordering in block %u of directory inode %" PRIu64 "\n"), da_bno, ino); return 1; } @@ -1770,8 +1773,8 @@ process_leaf_block_dir2( be32_to_cpu(leaf->ents[i].hashval); } if (stale != be16_to_cpu(leaf->hdr.stale)) { - do_warn(_("bad stale count in block %u of directory " - "inode %llu\n"), + do_warn( +_("bad stale count in block %u of directory inode %" PRIu64 "\n"), da_bno, ino); return 1; } @@ -1818,8 +1821,8 @@ process_leaf_level_dir2( ASSERT(da_bno != 0); if (nex == 0) { - do_warn(_("can't map block %u for directory " - "inode %llu\n"), + do_warn( +_("can't map block %u for directory inode %" PRIu64 "\n"), da_bno, ino); goto error_out; } @@ -1828,8 +1831,8 @@ process_leaf_level_dir2( free(bmp); bmp = NULL; if (bp == NULL) { - do_warn(_("can't read file block %u for directory " - "inode %llu\n"), + do_warn( +_("can't read file block %u for directory inode %" PRIu64 "\n"), da_bno, ino); goto error_out; } @@ -1839,8 +1842,8 @@ process_leaf_level_dir2( */ if (be16_to_cpu(leaf->hdr.info.magic) != XFS_DIR2_LEAFN_MAGIC) { - do_warn(_("bad directory leaf magic # %#x for " - "directory inode %llu block %u\n"), + do_warn( +_("bad directory leaf magic # %#x for directory inode %" PRIu64 " block %u\n"), be16_to_cpu(leaf->hdr.info.magic), ino, da_bno); da_brelse(bp); @@ -1869,8 +1872,8 @@ process_leaf_level_dir2( da_cursor->level[0].dirty = buf_dirty; if (be32_to_cpu(leaf->hdr.info.back) != prev_bno) { - do_warn(_("bad sibling back pointer for block %u in " - "directory inode %llu\n"), + do_warn( +_("bad sibling back pointer for block %u in directory inode %" PRIu64 "\n"), da_bno, ino); da_brelse(bp); goto error_out; @@ -1895,7 +1898,7 @@ process_leaf_level_dir2( /* * Verify the final path up (right-hand-side) if still ok. */ - do_warn(_("bad hash path in directory %llu\n"), ino); + do_warn(_("bad hash path in directory %" PRIu64 "\n"), ino); goto error_out; } /* @@ -1999,8 +2002,8 @@ process_leaf_node_dir2( nex = blkmap_getn(blkmap, dbno, mp->m_dirblkfsbs, &bmp, &lbmp); ndbno = dbno + mp->m_dirblkfsbs - 1; if (nex == 0) { - do_warn(_("block %llu for directory inode %llu is " - "missing\n"), + do_warn( +_("block %" PRIu64 " for directory inode %" PRIu64 " is missing\n"), dbno, ino); continue; } @@ -2008,15 +2011,15 @@ process_leaf_node_dir2( if (bmp != &lbmp) free(bmp); if (bp == NULL) { - do_warn(_("can't read block %llu for directory inode " - "%llu\n"), + do_warn( +_("can't read block %" PRIu64 " for directory inode %" PRIu64 "\n"), dbno, ino); continue; } data = bp->data; if (be32_to_cpu(data->hdr.magic) != XFS_DIR2_DATA_MAGIC) - do_warn(_("bad directory block magic # %#x in block " - "%llu for directory inode %llu\n"), + do_warn( +_("bad directory block magic # %#x in block %" PRIu64 " for directory inode %" PRIu64 "\n"), be32_to_cpu(data->hdr.magic), dbno, ino); i = process_dir2_data(mp, ino, dip, ino_discovery, dirname, parent, bp, dot, dotdot, (xfs_dablk_t)dbno, @@ -2093,14 +2096,14 @@ process_dir2( dirname, parent, blkmap, &dot, &dotdot, &repair, last > mp->m_dirleafblk + mp->m_dirblkfsbs); } else { - do_warn(_("bad size/format for directory %llu\n"), ino); + do_warn(_("bad size/format for directory %" PRIu64 "\n"), ino); return 1; } /* * bad . entries in all directories will be fixed up in phase 6 */ if (dot == 0) { - do_warn(_("no . entry for directory %llu\n"), ino); + do_warn(_("no . entry for directory %" PRIu64 "\n"), ino); } /* @@ -2110,9 +2113,9 @@ process_dir2( * fixed in place since we know what it should be */ if (dotdot == 0 && ino != mp->m_sb.sb_rootino) { - do_warn(_("no .. entry for directory %llu\n"), ino); + do_warn(_("no .. entry for directory %" PRIu64 "\n"), ino); } else if (dotdot == 0 && ino == mp->m_sb.sb_rootino) { - do_warn(_("no .. entry for root directory %llu\n"), ino); + do_warn(_("no .. entry for root directory %" PRIu64 "\n"), ino); need_root_dotdot = 1; } Index: xfsprogs-dev/repair/dinode.c =================================================================== --- xfsprogs-dev.orig/repair/dinode.c 2011-06-30 22:03:18.759512408 +0200 +++ xfsprogs-dev/repair/dinode.c 2011-06-30 22:03:24.686179002 +0200 @@ -490,22 +490,29 @@ process_rt_rec( * check numeric validity of the extent */ if (irec->br_startblock >= mp->m_sb.sb_rblocks) { - do_warn(_("inode %llu - bad rt extent start block number " - "%llu, offset %llu\n"), ino, - irec->br_startblock, irec->br_startoff); + do_warn( +_("inode %" PRIu64 " - bad rt extent start block number %" PRIu64 ", offset %" PRIu64 "\n"), + ino, + irec->br_startblock, + irec->br_startoff); return 1; } if (irec->br_startblock + irec->br_blockcount - 1 >= mp->m_sb.sb_rblocks) { - do_warn(_("inode %llu - bad rt extent last block number %llu, " - "offset %llu\n"), ino, irec->br_startblock + - irec->br_blockcount - 1, irec->br_startoff); + do_warn( +_("inode %" PRIu64 " - bad rt extent last block number %" PRIu64 ", offset %" PRIu64 "\n"), + ino, + irec->br_startblock + irec->br_blockcount - 1, + irec->br_startoff); return 1; } if (irec->br_startblock + irec->br_blockcount - 1 < irec->br_startblock) { - do_warn(_("inode %llu - bad rt extent overflows - start %llu, " - "end %llu, offset %llu\n"), ino, - irec->br_startblock, irec->br_startblock + - irec->br_blockcount - 1, irec->br_startoff); + do_warn( +_("inode %" PRIu64 " - bad rt extent overflows - start %" PRIu64 ", " + "end %" PRIu64 ", offset %" PRIu64 "\n"), + ino, + irec->br_startblock, + irec->br_startblock + irec->br_blockcount - 1, + irec->br_startoff); return 1; } @@ -516,9 +523,11 @@ process_rt_rec( if (xfs_sb_version_hasextflgbit(&mp->m_sb) == 0 && (irec->br_startblock % mp->m_sb.sb_rextsize != 0 || irec->br_blockcount % mp->m_sb.sb_rextsize != 0)) { - do_warn(_("malformed rt inode extent [%llu %llu] (fs rtext " - "size = %u)\n"), irec->br_startblock, - irec->br_blockcount, mp->m_sb.sb_rextsize); + do_warn( +_("malformed rt inode extent [%" PRIu64 " %" PRIu64 "] (fs rtext size = %u)\n"), + irec->br_startblock, + irec->br_blockcount, + mp->m_sb.sb_rextsize); return 1; } @@ -535,12 +544,13 @@ process_rt_rec( if (check_dups == 1) { if (search_rt_dup_extent(mp, ext) && !pwe) { - do_warn(_("data fork in rt ino %llu claims " - "dup rt extent, off - %llu, " - "start - %llu, count %llu\n"), - ino, irec->br_startoff, - irec->br_startblock, - irec->br_blockcount); + do_warn( +_("data fork in rt ino %" PRIu64 " claims dup rt extent," + "off - %" PRIu64 ", start - %" PRIu64 ", count %" PRIu64 "\n"), + ino, + irec->br_startoff, + irec->br_startblock, + irec->br_blockcount); return 1; } continue; @@ -553,26 +563,29 @@ process_rt_rec( set_rtbmap(ext, XR_E_INUSE); break; case XR_E_BAD_STATE: - do_error(_("bad state in rt block map %llu\n"), ext); + do_error( +_("bad state in rt block map %" PRIu64 "\n"), + ext); case XR_E_FS_MAP: case XR_E_INO: case XR_E_INUSE_FS: - do_error(_("data fork in rt inode %llu found " - "metadata block %llu in rt bmap\n"), + do_error( +_("data fork in rt inode %" PRIu64 " found metadata block %" PRIu64 " in rt bmap\n"), ino, ext); case XR_E_INUSE: if (pwe) break; case XR_E_MULT: set_rtbmap(ext, XR_E_MULT); - do_warn(_("data fork in rt inode %llu claims " - "used rt block %llu\n"), - ino, ext); + do_warn( +_("data fork in rt inode %" PRIu64 " claims used rt block %" PRIu64 "\n"), + ino, ext); return 1; case XR_E_FREE1: default: - do_error(_("illegal state %d in rt block map " - "%llu\n"), state, b); + do_error( +_("illegal state %d in rt block map %" PRIu64 "\n"), + state, b); } } @@ -639,8 +652,10 @@ process_bmbt_reclist_int( else *last_key = irec.br_startoff; if (i > 0 && op + cp > irec.br_startoff) { - do_warn(_("bmap rec out of order, inode %llu entry %d " - "[o s c] [%llu %llu %llu], %d [%llu %llu %llu]\n"), + do_warn( +_("bmap rec out of order, inode %" PRIu64" entry %d " + "[o s c] [%" PRIu64 " %" PRIu64 " %" PRIu64 "], " + "%d [%" PRIu64 " %" PRIu64 " %" PRIu64 "]\n"), ino, i, irec.br_startoff, irec.br_startblock, irec.br_blockcount, i - 1, op, sp, cp); goto done; @@ -653,9 +668,11 @@ process_bmbt_reclist_int( * check numeric validity of the extent */ if (irec.br_blockcount == 0) { - do_warn(_("zero length extent (off = %llu, fsbno = " - "%llu) in ino %llu\n"), irec.br_startoff, - irec.br_startblock, ino); + do_warn( +_("zero length extent (off = %" PRIu64 ", fsbno = %" PRIu64 ") in ino %" PRIu64 "\n"), + irec.br_startoff, + irec.br_startblock, + ino); goto done; } @@ -682,30 +699,35 @@ process_bmbt_reclist_int( break; case XR_DFSBNORANGE_BADSTART: - do_warn(_("inode %llu - bad extent starting " - "block number %llu, offset %llu\n"), - ino, irec.br_startblock, + do_warn( +_("inode %" PRIu64 " - bad extent starting block number %" PRIu64 ", offset %" PRIu64 "\n"), + ino, + irec.br_startblock, irec.br_startoff); goto done; case XR_DFSBNORANGE_BADEND: - do_warn(_("inode %llu - bad extent last block " - "number %llu, offset %llu\n"), ino, - irec.br_startblock + irec.br_blockcount - - 1, irec.br_startoff); + do_warn( +_("inode %" PRIu64 " - bad extent last block number %" PRIu64 ", offset %" PRIu64 "\n"), + ino, + irec.br_startblock + irec.br_blockcount - 1, + irec.br_startoff); goto done; case XR_DFSBNORANGE_OVERFLOW: - do_warn(_("inode %llu - bad extent overflows - " - "start %llu, end %llu, offset %llu\n"), - ino, irec.br_startblock, - irec.br_startblock + irec.br_blockcount - - 1, irec.br_startoff); + do_warn( +_("inode %" PRIu64 " - bad extent overflows - start %" PRIu64 ", " + "end %" PRIu64 ", offset %" PRIu64 "\n"), + ino, + irec.br_startblock, + irec.br_startblock + irec.br_blockcount - 1, + irec.br_startoff); goto done; } if (irec.br_startoff >= fs_max_file_offset) { - do_warn(_("inode %llu - extent offset too large - " - "start %llu, count %llu, offset %llu\n"), + do_warn( +_("inode %" PRIu64 " - extent offset too large - start %" PRIu64 ", " + "count %" PRIu64 ", offset %" PRIu64 "\n"), ino, irec.br_startblock, irec.br_blockcount, irec.br_startoff); goto done; @@ -736,9 +758,9 @@ process_bmbt_reclist_int( * block bitmap */ if (search_dup_extent(agno, agbno, ebno)) { - do_warn(_("%s fork in ino %llu claims " - "dup extent, off - %llu, " - "start - %llu, cnt %llu\n"), + do_warn( +_("%s fork in ino %" PRIu64 " claims dup extent, " + "off - %" PRIu64 ", start - %" PRIu64 ", cnt %" PRIu64 "\n"), forkname, ino, irec.br_startoff, irec.br_startblock, irec.br_blockcount); @@ -755,8 +777,8 @@ process_bmbt_reclist_int( switch (state) { case XR_E_FREE: case XR_E_FREE1: - do_warn(_("%s fork in ino %llu claims free " - "block %llu\n"), + do_warn( +_("%s fork in ino %" PRIu64 " claims free block %" PRIu64 "\n"), forkname, ino, (__uint64_t) b); /* fall through ... */ case XR_E_UNKNOWN: @@ -764,26 +786,27 @@ process_bmbt_reclist_int( break; case XR_E_BAD_STATE: - do_error(_("bad state in block map %llu\n"), b); + do_error(_("bad state in block map %" PRIu64 "\n"), b); case XR_E_FS_MAP: case XR_E_INO: case XR_E_INUSE_FS: - do_warn(_("%s fork in inode %llu claims " - "metadata block %llu\n"), - forkname, ino, (__uint64_t) b); + do_warn( +_("%s fork in inode %" PRIu64 " claims metadata block %" PRIu64 "\n"), + forkname, ino, b); goto done; case XR_E_INUSE: case XR_E_MULT: set_bmap_ext(agno, agbno, blen, XR_E_MULT); - do_warn(_("%s fork in %s inode %llu claims " - "used block %llu\n"), - forkname, ftype, ino, (__uint64_t) b); + do_warn( +_("%s fork in %s inode %" PRIu64 " claims used block %" PRIu64 "\n"), + forkname, ftype, ino, b); goto done; default: - do_error(_("illegal state %d in block map %llu\n"), + do_error( +_("illegal state %d in block map %" PRIu64 "\n"), state, b); } } @@ -861,7 +884,7 @@ get_agino_buf(xfs_mount_t *mp, bp = libxfs_readbuf(mp->m_dev, XFS_AGB_TO_DADDR(mp, agno, XFS_AGINO_TO_AGBNO(mp, irec->ino_startnum)), size, 0); if (!bp) { - do_warn(_("cannot read inode (%u/%u), disk block %lld\n"), + do_warn(_("cannot read inode (%u/%u), disk block %" PRIu64 "\n"), agno, irec->ino_startnum, XFS_AGB_TO_DADDR(mp, agno, XFS_AGINO_TO_AGBNO(mp, irec->ino_startnum))); @@ -972,7 +995,7 @@ getfunc_btree(xfs_mount_t *mp, bp = libxfs_readbuf(mp->m_dev, XFS_FSB_TO_DADDR(mp, fsbno), XFS_FSB_TO_BB(mp, 1), 0); if (!bp) { - do_error(_("cannot read bmap block %llu\n"), fsbno); + do_error(_("cannot read bmap block %" PRIu64 "\n"), fsbno); return(NULLDFSBNO); } block = XFS_BUF_TO_BLOCK(bp); @@ -992,16 +1015,16 @@ getfunc_btree(xfs_mount_t *mp, prev_level = be16_to_cpu(block->bb_level); #endif if (numrecs > mp->m_bmap_dmxr[1]) { - do_warn(_("# of bmap records in inode %llu exceeds max " - "(%u, max - %u)\n"), + do_warn( +_("# of bmap records in inode %" PRIu64 " exceeds max (%u, max - %u)\n"), ino, numrecs, mp->m_bmap_dmxr[1]); libxfs_putbuf(bp); return(NULLDFSBNO); } if (verbose && numrecs < mp->m_bmap_dmnr[1]) { - do_warn(_("- # of bmap records in inode %llu less than " - "minimum (%u, min - %u), proceeding ...\n"), + do_warn( +_("- # of bmap records in inode %" PRIu64 " less than minimum (%u, min - %u), proceeding ...\n"), ino, numrecs, mp->m_bmap_dmnr[1]); } key = XFS_BMBT_KEY_ADDR(mp, block, 1); @@ -1029,7 +1052,8 @@ getfunc_btree(xfs_mount_t *mp, bp = libxfs_readbuf(mp->m_dev, XFS_FSB_TO_DADDR(mp, fsbno), XFS_FSB_TO_BB(mp, 1), 0); if (!bp) { - do_error(_("cannot read bmap block %llu\n"), fsbno); + do_error(_("cannot read bmap block %" PRIu64 "\n"), + fsbno); return(NULLDFSBNO); } block = XFS_BUF_TO_BLOCK(bp); @@ -1041,15 +1065,15 @@ getfunc_btree(xfs_mount_t *mp, */ ASSERT(be16_to_cpu(block->bb_level) == 0); if (numrecs > mp->m_bmap_dmxr[0]) { - do_warn(_("# of bmap records in inode %llu greater than " - "maximum (%u, max - %u)\n"), + do_warn( +_("# of bmap records in inode %" PRIu64 " greater than maximum (%u, max - %u)\n"), ino, numrecs, mp->m_bmap_dmxr[0]); libxfs_putbuf(bp); return(NULLDFSBNO); } if (verbose && numrecs < mp->m_bmap_dmnr[0]) - do_warn(_("- # of bmap records in inode %llu less than minimum " - "(%u, min - %u), continuing...\n"), + do_warn( +_("- # of bmap records in inode %" PRIu64 " less than minimum (%u, min - %u), continuing...\n"), ino, numrecs, mp->m_bmap_dmnr[0]); rec = XFS_BMBT_REC_ADDR(mp, block, 1); @@ -1065,7 +1089,7 @@ getfunc_btree(xfs_mount_t *mp, libxfs_putbuf(bp); if (final_fsbno == NULLDFSBNO) - do_warn(_("could not map block %llu\n"), bno); + do_warn(_("could not map block %" PRIu64 "\n"), bno); return(final_fsbno); } @@ -1099,7 +1123,7 @@ get_bmapi(xfs_mount_t *mp, xfs_dinode_t fsbno = getfunc_btree(mp, ino_num, dino_p, bno, whichfork); break; case XFS_DINODE_FMT_LOCAL: - do_error(_("get_bmapi() called for local inode %llu\n"), + do_error(_("get_bmapi() called for local inode %" PRIu64 "\n"), ino_num); fsbno = NULLDFSBNO; break; @@ -1107,7 +1131,7 @@ get_bmapi(xfs_mount_t *mp, xfs_dinode_t /* * shouldn't happen */ - do_error(_("bad inode format for inode %llu\n"), ino_num); + do_error(_("bad inode format for inode %" PRIu64 "\n"), ino_num); fsbno = NULLDFSBNO; } @@ -1171,12 +1195,14 @@ process_btinode( * to by the pointers in the fork. For now * though, we just bail (and blow out the inode). */ - do_warn(_("bad level %d in inode %llu bmap btree root block\n"), + do_warn( +_("bad level %d in inode %" PRIu64 " bmap btree root block\n"), level, XFS_AGINO_TO_INO(mp, agno, ino)); return(1); } if (numrecs == 0) { - do_warn(_("bad numrecs 0 in inode %llu bmap btree root block\n"), + do_warn( +_("bad numrecs 0 in inode %" PRIu64 " bmap btree root block\n"), XFS_AGINO_TO_INO(mp, agno, ino)); return(1); } @@ -1186,7 +1212,7 @@ process_btinode( if (XFS_BMDR_SPACE_CALC(numrecs) > XFS_DFORK_SIZE(dip, mp, whichfork)) { do_warn( _("indicated size of %s btree root (%d bytes) greater than space in " - "inode %llu %s fork\n"), + "inode %" PRIu64 " %s fork\n"), forkname, XFS_BMDR_SPACE_CALC(numrecs), lino, forkname); return(1); } @@ -1205,7 +1231,7 @@ process_btinode( * problem, we'll bail out and presumably clear the inode. */ if (!verify_dfsbno(mp, be64_to_cpu(pp[i]))) { - do_warn(_("bad bmap btree ptr 0x%llx in ino %llu\n"), + do_warn(_("bad bmap btree ptr 0x%llx in ino %" PRIu64 "\n"), be64_to_cpu(pp[i]), lino); return(1); } @@ -1224,8 +1250,8 @@ process_btinode( be64_to_cpu(pkey[i].br_startoff)) { if (!no_modify) { do_warn( - _("correcting key in bmbt root (was %llu, now %llu) in inode " - "%llu %s fork\n"), + _("correcting key in bmbt root (was %llu, now %" PRIu64") in inode " + "%" PRIu64" %s fork\n"), be64_to_cpu(pkey[i].br_startoff), cursor.level[level-1].first_key, XFS_AGINO_TO_INO(mp, agno, ino), @@ -1235,8 +1261,8 @@ process_btinode( cursor.level[level-1].first_key); } else { do_warn( - _("bad key in bmbt root (is %llu, would reset to %llu) in inode " - "%llu %s fork\n"), + _("bad key in bmbt root (is %llu, would reset to %" PRIu64 ") in inode " + "%" PRIu64 " %s fork\n"), be64_to_cpu(pkey[i].br_startoff), cursor.level[level-1].first_key, XFS_AGINO_TO_INO(mp, agno, ino), @@ -1251,7 +1277,7 @@ process_btinode( if (last_key != NULLDFILOFF && last_key >= cursor.level[level-1].first_key) { do_warn( - _("out of order bmbt root key %llu in inode %llu %s fork\n"), + _("out of order bmbt root key %" PRIu64 " in inode %" PRIu64 " %s fork\n"), first_key, XFS_AGINO_TO_INO(mp, agno, ino), forkname); @@ -1268,7 +1294,7 @@ process_btinode( if (*nex <= XFS_DFORK_SIZE(dip, mp, whichfork) / sizeof(xfs_bmbt_rec_t)) { do_warn( - _("extent count for ino %lld %s fork too low (%d) for file format\n"), + _("extent count for ino %" PRIu64 " %s fork too low (%" PRIu64 ") for file format\n"), lino, forkname, *nex); return(1); } @@ -1279,10 +1305,10 @@ process_btinode( if (check_dups == 0 && cursor.level[0].right_fsbno != NULLDFSBNO) { do_warn( - _("bad fwd (right) sibling pointer (saw %llu should be NULLDFSBNO)\n"), + _("bad fwd (right) sibling pointer (saw %" PRIu64 " should be NULLDFSBNO)\n"), cursor.level[0].right_fsbno); do_warn( - _("\tin inode %u (%s fork) bmap btree block %llu\n"), + _("\tin inode %" PRIu64 " (%s fork) bmap btree block %" PRIu64 "\n"), XFS_AGINO_TO_INO(mp, agno, ino), forkname, cursor.level[0].fsbno); return(1); @@ -1350,7 +1376,7 @@ process_lclinode( if (whichfork == XFS_DATA_FORK && be64_to_cpu(dip->di_core.di_size) > XFS_DFORK_DSIZE(dip, mp)) { do_warn( - _("local inode %llu data fork is too large (size = %lld, max = %d)\n"), + _("local inode %" PRIu64 " data fork is too large (size = %lld, max = %d)\n"), lino, be64_to_cpu(dip->di_core.di_size), XFS_DFORK_DSIZE(dip, mp)); return(1); @@ -1358,14 +1384,14 @@ process_lclinode( asf = (xfs_attr_shortform_t *)XFS_DFORK_APTR(dip); if (be16_to_cpu(asf->hdr.totsize) > XFS_DFORK_ASIZE(dip, mp)) { do_warn( - _("local inode %llu attr fork too large (size %d, max = %d)\n"), + _("local inode %" PRIu64 " attr fork too large (size %d, max = %d)\n"), lino, be16_to_cpu(asf->hdr.totsize), XFS_DFORK_ASIZE(dip, mp)); return(1); } if (be16_to_cpu(asf->hdr.totsize) < sizeof(xfs_attr_sf_hdr_t)) { do_warn( - _("local inode %llu attr too small (size = %d, min size = %d)\n"), + _("local inode %" PRIu64 " attr too small (size = %d, min size = %zd)\n"), lino, be16_to_cpu(asf->hdr.totsize), sizeof(xfs_attr_sf_hdr_t)); return(1); @@ -1388,14 +1414,16 @@ process_symlink_extlist(xfs_mount_t *mp, if (be64_to_cpu(dino->di_core.di_size) <= XFS_DFORK_DSIZE(dino, mp)) { if (dino->di_core.di_format == XFS_DINODE_FMT_LOCAL) return 0; - do_warn(_("mismatch between format (%d) and size (%lld) in " - "symlink ino %llu\n"), dino->di_core.di_format, + do_warn( +_("mismatch between format (%d) and size (%lld) in symlink ino %" PRIu64 "\n"), + dino->di_core.di_format, be64_to_cpu(dino->di_core.di_size), lino); return 1; } if (dino->di_core.di_format == XFS_DINODE_FMT_LOCAL) { - do_warn(_("mismatch between format (%d) and size (%lld) in " - "symlink inode %llu\n"), dino->di_core.di_format, + do_warn( +_("mismatch between format (%d) and size (%lld) in symlink inode %" PRIu64 "\n"), + dino->di_core.di_format, be64_to_cpu(dino->di_core.di_size), lino); return 1; } @@ -1409,7 +1437,7 @@ process_symlink_extlist(xfs_mount_t *mp, */ if (numrecs > max_symlink_blocks) { do_warn( - _("bad number of extents (%d) in symlink %llu data fork\n"), +_("bad number of extents (%d) in symlink %" PRIu64 " data fork\n"), numrecs, lino); return(1); } @@ -1422,13 +1450,13 @@ process_symlink_extlist(xfs_mount_t *mp, if (irec.br_startoff != expected_offset) { do_warn( - _("bad extent #%d offset (%llu) in symlink %llu data fork\n"), +_("bad extent #%d offset (%" PRIu64 ") in symlink %" PRIu64 " data fork\n"), i, irec.br_startoff, lino); return(1); } if (irec.br_blockcount == 0 || irec.br_blockcount > max_blocks) { do_warn( - _("bad extent #%d count (%llu) in symlink %llu data fork\n"), +_("bad extent #%d count (%" PRIu64 ") in symlink %" PRIu64 " data fork\n"), i, irec.br_blockcount, lino); return(1); } @@ -1484,7 +1512,8 @@ process_symlink( * for that */ if (be64_to_cpu(dinoc->di_size) >= MAXPATHLEN) { - do_warn(_("symlink in inode %llu too long (%lld chars)\n"), + do_warn( +_("symlink in inode %" PRIu64 " too long (%lld chars)\n"), lino, be64_to_cpu(dinoc->di_size)); return(1); } @@ -1517,7 +1546,7 @@ process_symlink( XFS_FSB_TO_BB(mp, 1), 0); if (!bp || fsbno == NULLDFSBNO) { do_warn( - _("cannot read inode %llu, file block %d, disk block %llu\n"), +_("cannot read inode %" PRIu64 ", file block %d, disk block %" PRIu64 "\n"), lino, i, fsbno); return(1); } @@ -1539,7 +1568,7 @@ process_symlink( */ if (null_check(symlink, be64_to_cpu(dinoc->di_size))) { do_warn( - _("found illegal null character in symlink inode %llu\n"), +_("found illegal null character in symlink inode %" PRIu64 "\n"), lino); return(1); } @@ -1553,7 +1582,7 @@ process_symlink( while (cptr != NULL) { if (cptr - symlink >= MAXNAMELEN) { do_warn( - _("component of symlink in inode %llu too long\n"), +_("component of symlink in inode %" PRIu64 " too long\n"), lino); return(1); } @@ -1563,7 +1592,7 @@ process_symlink( if (strlen(symlink) >= MAXNAMELEN) { do_warn( - _("component of symlink in inode %llu too long\n"), +_("component of symlink in inode %" PRIu64 " too long\n"), lino); return(1); } @@ -1588,7 +1617,8 @@ process_misc_ino_types(xfs_mount_t *mp, * probably require a superblock version rev, sigh). */ if (type == XR_INO_MOUNTPOINT) { - do_warn(_("inode %llu has bad inode type (IFMNT)\n"), lino); + do_warn( +_("inode %" PRIu64 " has bad inode type (IFMNT)\n"), lino); return(1); } @@ -1598,28 +1628,28 @@ process_misc_ino_types(xfs_mount_t *mp, if (be64_to_cpu(dino->di_core.di_size) != 0) { switch (type) { case XR_INO_CHRDEV: - do_warn(_("size of character device inode %llu != 0 " - "(%lld bytes)\n"), lino, + do_warn( +_("size of character device inode %" PRIu64 " != 0 (%lld bytes)\n"), lino, be64_to_cpu(dino->di_core.di_size)); break; case XR_INO_BLKDEV: - do_warn(_("size of block device inode %llu != 0 " - "(%lld bytes)\n"), lino, + do_warn( +_("size of block device inode %" PRIu64 " != 0 (%lld bytes)\n"), lino, be64_to_cpu(dino->di_core.di_size)); break; case XR_INO_SOCK: - do_warn(_("size of socket inode %llu != 0 " - "(%lld bytes)\n"), lino, + do_warn( +_("size of socket inode %" PRIu64 " != 0 (%lld bytes)\n"), lino, be64_to_cpu(dino->di_core.di_size)); break; case XR_INO_FIFO: - do_warn(_("size of fifo inode %llu != 0 " - "(%lld bytes)\n"), lino, + do_warn( +_("size of fifo inode %" PRIu64 " != 0 (%lld bytes)\n"), lino, be64_to_cpu(dino->di_core.di_size)); break; default: - do_warn(_("Internal error - process_misc_ino_types, " - "illegal type %d\n"), type); + do_warn( +_("Internal error - process_misc_ino_types, illegal type %d\n"), type); abort(); } @@ -1645,22 +1675,22 @@ process_misc_ino_types_blocks(xfs_drfsbn switch (type) { case XR_INO_CHRDEV: do_warn( - _("size of character device inode %llu != 0 (%llu blocks)\n"), +_("size of character device inode %" PRIu64 " != 0 (%" PRIu64 " blocks)\n"), lino, totblocks); break; case XR_INO_BLKDEV: do_warn( - _("size of block device inode %llu != 0 (%llu blocks)\n"), +_("size of block device inode %" PRIu64 " != 0 (%" PRIu64 " blocks)\n"), lino, totblocks); break; case XR_INO_SOCK: do_warn( - _("size of socket inode %llu != 0 (%llu blocks)\n"), +_("size of socket inode %" PRIu64 " != 0 (%" PRIu64 " blocks)\n"), lino, totblocks); break; case XR_INO_FIFO: do_warn( - _("size of fifo inode %llu != 0 (%llu blocks)\n"), +_("size of fifo inode %" PRIu64 " != 0 (%" PRIu64 " blocks)\n"), lino, totblocks); break; default: @@ -1738,7 +1768,7 @@ process_check_sb_inodes( { if (lino == mp->m_sb.sb_rootino) { if (*type != XR_INO_DIR) { - do_warn(_("root inode %llu has bad type 0x%x\n"), + do_warn(_("root inode %" PRIu64 " has bad type 0x%x\n"), lino, dinode_fmt(dinoc)); *type = XR_INO_DIR; if (!no_modify) { @@ -1752,7 +1782,7 @@ process_check_sb_inodes( } if (lino == mp->m_sb.sb_uquotino) { if (*type != XR_INO_DATA) { - do_warn(_("user quota inode %llu has bad type 0x%x\n"), + do_warn(_("user quota inode %" PRIu64 " has bad type 0x%x\n"), lino, dinode_fmt(dinoc)); mp->m_sb.sb_uquotino = NULLFSINO; return 1; @@ -1761,7 +1791,7 @@ process_check_sb_inodes( } if (lino == mp->m_sb.sb_gquotino) { if (*type != XR_INO_DATA) { - do_warn(_("group quota inode %llu has bad type 0x%x\n"), + do_warn(_("group quota inode %" PRIu64 " has bad type 0x%x\n"), lino, dinode_fmt(dinoc)); mp->m_sb.sb_gquotino = NULLFSINO; return 1; @@ -1770,7 +1800,8 @@ process_check_sb_inodes( } if (lino == mp->m_sb.sb_rsumino) { if (*type != XR_INO_RTSUM) { - do_warn(_("realtime summary inode %llu has bad type 0x%x, "), + do_warn( +_("realtime summary inode %" PRIu64 " has bad type 0x%x, "), lino, dinode_fmt(dinoc)); if (!no_modify) { do_warn(_("resetting to regular file\n")); @@ -1781,7 +1812,8 @@ process_check_sb_inodes( } } if (mp->m_sb.sb_rblocks == 0 && dinoc->di_nextents != 0) { - do_warn(_("bad # of extents (%u) for realtime summary inode %llu\n"), + do_warn( +_("bad # of extents (%u) for realtime summary inode %" PRIu64 "\n"), be32_to_cpu(dinoc->di_nextents), lino); return 1; } @@ -1789,7 +1821,8 @@ process_check_sb_inodes( } if (lino == mp->m_sb.sb_rbmino) { if (*type != XR_INO_RTBITMAP) { - do_warn(_("realtime bitmap inode %llu has bad type 0x%x, "), + do_warn( +_("realtime bitmap inode %" PRIu64 " has bad type 0x%x, "), lino, dinode_fmt(dinoc)); if (!no_modify) { do_warn(_("resetting to regular file\n")); @@ -1800,7 +1833,8 @@ process_check_sb_inodes( } } if (mp->m_sb.sb_rblocks == 0 && dinoc->di_nextents != 0) { - do_warn(_("bad # of extents (%u) for realtime bitmap inode %llu\n"), + do_warn( +_("bad # of extents (%u) for realtime bitmap inode %" PRIu64 "\n"), be32_to_cpu(dinoc->di_nextents), lino); return 1; } @@ -1835,21 +1869,21 @@ process_check_inode_sizes( case XR_INO_DIR: if (size <= XFS_DFORK_DSIZE(dino, mp) && dinoc->di_format != XFS_DINODE_FMT_LOCAL) { - do_warn(_("mismatch between format (%d) and size " - "(%lld) in directory ino %llu\n"), + do_warn( +_("mismatch between format (%d) and size (%" PRId64 ") in directory ino %" PRIu64 "\n"), dinoc->di_format, size, lino); return 1; } if (size > XFS_DIR2_LEAF_OFFSET) { - do_warn(_("directory inode %llu has bad size %lld\n"), - lino, size); + do_warn( +_("directory inode %" PRIu64 " has bad size %" PRId64 "\n"), lino, size); return 1; } break; case XR_INO_SYMLINK: if (process_symlink_extlist(mp, lino, dino)) { - do_warn(_("bad data fork in symlink %llu\n"), lino); + do_warn(_("bad data fork in symlink %" PRIu64 "\n"), lino); return 1; } break; @@ -1869,8 +1903,8 @@ process_check_inode_sizes( * to be a real-time file is bogus */ if (mp->m_sb.sb_rblocks == 0) { - do_warn(_("found inode %llu claiming to be a " - "real-time file\n"), lino); + do_warn( +_("found inode %" PRIu64 " claiming to be a real-time file\n"), lino); return 1; } break; @@ -1878,9 +1912,10 @@ process_check_inode_sizes( case XR_INO_RTBITMAP: if (size != (__int64_t)mp->m_sb.sb_rbmblocks * mp->m_sb.sb_blocksize) { - do_warn(_("realtime bitmap inode %llu has bad size " - "%lld (should be %lld)\n"), - lino, size, (__int64_t) mp->m_sb.sb_rbmblocks * + do_warn( +_("realtime bitmap inode %" PRIu64 " has bad size %" PRId64 " (should be %" PRIu64 ")\n"), + lino, size, + (__int64_t) mp->m_sb.sb_rbmblocks * mp->m_sb.sb_blocksize); return 1; } @@ -1888,8 +1923,8 @@ process_check_inode_sizes( case XR_INO_RTSUM: if (size != mp->m_rsumsize) { - do_warn(_("realtime summary inode %llu has bad size " - "%lld (should be %d)\n"), + do_warn( +_("realtime summary inode %" PRIu64 " has bad size %" PRId64 " (should be %d)\n"), lino, size, mp->m_rsumsize); return 1; } @@ -1916,8 +1951,9 @@ process_check_inode_forkoff( switch (dinoc->di_format) { case XFS_DINODE_FMT_DEV: if (dinoc->di_forkoff != (roundup(sizeof(xfs_dev_t), 8) >> 3)) { - do_warn(_("bad attr fork offset %d in dev inode %llu, " - "should be %d\n"), dinoc->di_forkoff, lino, + do_warn( + _("bad attr fork offset %d in dev inode %" PRIu64 ", should be %d\n"), + dinoc->di_forkoff, lino, (int)(roundup(sizeof(xfs_dev_t), 8) >> 3)); return 1; } @@ -1926,8 +1962,9 @@ process_check_inode_forkoff( case XFS_DINODE_FMT_EXTENTS: /* fall through ... */ case XFS_DINODE_FMT_BTREE: if (dinoc->di_forkoff >= (XFS_LITINO(mp) >> 3)) { - do_warn(_("bad attr fork offset %d in inode %llu, " - "max=%d\n"), dinoc->di_forkoff, lino, + do_warn( + _("bad attr fork offset %d in inode %" PRIu64 ", max=%d\n"), + dinoc->di_forkoff, lino, XFS_LITINO(mp) >> 3); return 1; } @@ -1953,52 +1990,58 @@ process_inode_blocks_and_extents( { if (nblocks != be64_to_cpu(dinoc->di_nblocks)) { if (!no_modify) { - do_warn(_("correcting nblocks for inode %llu, " - "was %llu - counted %llu\n"), lino, - be64_to_cpu(dinoc->di_nblocks), nblocks); + do_warn( + _("correcting nblocks for inode %" PRIu64 ", was %llu - counted %" PRIu64 "\n"), + lino, be64_to_cpu(dinoc->di_nblocks), nblocks); dinoc->di_nblocks = cpu_to_be64(nblocks); *dirty = 1; } else { - do_warn(_("bad nblocks %llu for inode %llu, " - "would reset to %llu\n"), + do_warn( + _("bad nblocks %llu for inode %" PRIu64 ", would reset to %" PRIu64 "\n"), be64_to_cpu(dinoc->di_nblocks), lino, nblocks); } } if (nextents > MAXEXTNUM) { - do_warn(_("too many data fork extents (%llu) in inode %llu\n"), + do_warn( + _("too many data fork extents (%" PRIu64 ") in inode %" PRIu64 "\n"), nextents, lino); return 1; } if (nextents != be32_to_cpu(dinoc->di_nextents)) { if (!no_modify) { - do_warn(_("correcting nextents for inode %llu, " - "was %d - counted %llu\n"), lino, + do_warn( + _("correcting nextents for inode %" PRIu64 ", was %d - counted %" PRIu64 "\n"), + lino, be32_to_cpu(dinoc->di_nextents), nextents); dinoc->di_nextents = cpu_to_be32(nextents); *dirty = 1; } else { - do_warn(_("bad nextents %d for inode %llu, would reset " - "to %llu\n"), be32_to_cpu(dinoc->di_nextents), + do_warn( + _("bad nextents %d for inode %" PRIu64 ", would reset to %" PRIu64 "\n"), + be32_to_cpu(dinoc->di_nextents), lino, nextents); } } if (anextents > MAXAEXTNUM) { - do_warn(_("too many attr fork extents (%llu) in inode %llu\n"), + do_warn( + _("too many attr fork extents (%" PRIu64 ") in inode %" PRIu64 "\n"), anextents, lino); return 1; } if (anextents != be16_to_cpu(dinoc->di_anextents)) { if (!no_modify) { - do_warn(_("correcting anextents for inode %llu, " - "was %d - counted %llu\n"), lino, - be16_to_cpu(dinoc->di_anextents), anextents); + do_warn( + _("correcting anextents for inode %" PRIu64 ", was %d - counted %" PRIu64 "\n"), + lino, be16_to_cpu(dinoc->di_anextents), + anextents); dinoc->di_anextents = cpu_to_be16(anextents); *dirty = 1; } else { - do_warn(_("bad anextents %d for inode %llu, would reset" - " to %llu\n"), be16_to_cpu(dinoc->di_anextents), + do_warn( + _("bad anextents %d for inode %" PRIu64 ", would reset to %" PRIu64 "\n"), + be16_to_cpu(dinoc->di_anextents), lino, anextents); } } @@ -2052,12 +2095,12 @@ process_inode_data_fork( err = 0; break; default: - do_error(_("unknown format %d, ino %llu (mode = %d)\n"), + do_error(_("unknown format %d, ino %" PRIu64 " (mode = %d)\n"), dinoc->di_format, lino, be16_to_cpu(dinoc->di_mode)); } if (err) { - do_warn(_("bad data fork in inode %llu\n"), lino); + do_warn(_("bad data fork in inode %" PRIu64 "\n"), lino); if (!no_modify) { *dirty += clear_dinode(mp, dino, lino); ASSERT(*dirty > 0); @@ -2090,7 +2133,8 @@ process_inode_data_fork( err = 0; break; default: - do_error(_("unknown format %d, ino %llu (mode = %d)\n"), + do_error( + _("unknown format %d, ino %" PRIu64 " (mode = %d)\n"), dinoc->di_format, lino, be16_to_cpu(dinoc->di_mode)); } @@ -2129,7 +2173,8 @@ process_inode_attr_fork( if (!XFS_DFORK_Q(dino)) { *anextents = 0; if (dinoc->di_aformat != XFS_DINODE_FMT_EXTENTS) { - do_warn(_("bad attribute format %d in inode %llu, "), + do_warn( + _("bad attribute format %d in inode %" PRIu64 ", "), dinoc->di_aformat, lino); if (!no_modify) { do_warn(_("resetting value\n")); @@ -2166,7 +2211,8 @@ process_inode_attr_fork( XFS_ATTR_FORK, check_dups); break; default: - do_warn(_("illegal attribute format %d, ino %llu\n"), + do_warn( + _("illegal attribute format %d, ino %" PRIu64 "\n"), dinoc->di_aformat, lino); err = 1; break; @@ -2181,7 +2227,7 @@ process_inode_attr_fork( * XXX - put the inode onto the "move it" list and * log the the attribute scrubbing */ - do_warn(_("bad attribute fork in inode %llu"), lino); + do_warn(_("bad attribute fork in inode %" PRIu64), lino); if (!no_modify) { if (delete_attr_ok) { @@ -2222,7 +2268,8 @@ process_inode_attr_fork( &ablkmap, XFS_ATTR_FORK, 0); break; default: - do_error(_("illegal attribute fmt %d, ino %llu\n"), + do_error( + _("illegal attribute fmt %d, ino %" PRIu64"\n"), dinoc->di_aformat, lino); } @@ -2241,7 +2288,8 @@ process_inode_attr_fork( /* get this only in phase 3, not in both phase 3 and 4 */ if (extra_attr_check && process_attributes(mp, lino, dino, ablkmap, &repair)) { - do_warn(_("problem with attribute contents in inode %llu\n"), + do_warn( + _("problem with attribute contents in inode %" PRIu64 "\n"), lino); if (!repair) { /* clear attributes if not done already */ @@ -2291,22 +2339,23 @@ process_check_inode_nlink_version( * cause sb to be updated later. */ fs_inode_nlink = 1; - do_warn(_("version 2 inode %llu claims > %u links, "), + do_warn + (_("version 2 inode %" PRIu64 " claims > %u links, "), lino, XFS_MAXLINK_1); if (!no_modify) { - do_warn(_("updating superblock " - "version number\n")); + do_warn( + _("updating superblock version number\n")); } else { - do_warn(_("would update superblock " - "version number\n")); + do_warn( + _("would update superblock version number\n")); } } else { /* * no, have to convert back to onlinks * even if we lose some links */ - do_warn(_("WARNING: version 2 inode %llu " - "claims > %u links, "), + do_warn( + _("WARNING: version 2 inode %" PRIu64 " claims > %u links, "), lino, XFS_MAXLINK_1); if (!no_modify) { do_warn(_("converting back to version 1,\n" @@ -2334,7 +2383,7 @@ process_check_inode_nlink_version( * * the case where we lost links was handled above. */ - do_warn(_("found version 2 inode %llu, "), lino); + do_warn(_("found version 2 inode %" PRIu64 ", "), lino); if (!no_modify) { do_warn(_("converting back to version 1\n")); dinoc->di_version = XFS_DINODE_VERSION_1; @@ -2355,14 +2404,16 @@ process_check_inode_nlink_version( if (dinoc->di_version > XFS_DINODE_VERSION_1 && dinoc->di_onlink != 0 && fs_inode_nlink > 0) { if (!no_modify) { - do_warn(_("clearing obsolete nlink field in " - "version 2 inode %llu, was %d, now 0\n"), + do_warn( + _("clearing obsolete nlink field in version 2 inode %" PRIu64 "," + "was %d, now 0\n"), lino, be16_to_cpu(dinoc->di_onlink)); dinoc->di_onlink = 0; dirty = 1; } else { - do_warn(_("would clear obsolete nlink field in " - "version 2 inode %llu, currently %d\n"), + do_warn( + _("would clear obsolete nlink field in version 2 inode %" PRIu64 "," + "currently %d\n"), lino, be16_to_cpu(dinoc->di_onlink)); } } @@ -2434,7 +2485,8 @@ process_dinode_int(xfs_mount_t *mp, if (be16_to_cpu(dinoc->di_magic) != XFS_DINODE_MAGIC) { retval = 1; if (!uncertain) - do_warn(_("bad magic number 0x%x on inode %llu%c"), + do_warn( + _("bad magic number 0x%x on inode %"PRIu64 "%c"), be16_to_cpu(dinoc->di_magic), lino, verify_mode ? '\n' : ','); if (!verify_mode) { @@ -2451,7 +2503,8 @@ process_dinode_int(xfs_mount_t *mp, (!fs_inode_nlink && dinoc->di_version > XFS_DINODE_VERSION_1)) { retval = 1; if (!uncertain) - do_warn(_("bad version number 0x%x on inode %llu%c"), + do_warn( + _("bad version number 0x%x on inode %" PRIu64 "%c"), (__s8)dinoc->di_version, lino, verify_mode ? '\n' : ','); if (!verify_mode) { @@ -2471,7 +2524,8 @@ process_dinode_int(xfs_mount_t *mp, */ if ((xfs_fsize_t)be64_to_cpu(dinoc->di_size) < 0) { if (!uncertain) - do_warn(_("bad (negative) size %lld on inode %llu\n"), + do_warn( + _("bad (negative) size %lld on inode %" PRIu64 "\n"), be64_to_cpu(dinoc->di_size), lino); if (verify_mode) return 1; @@ -2502,7 +2556,8 @@ process_dinode_int(xfs_mount_t *mp, * clear the inode just to be safe and mark the inode * free. */ - do_warn(_("imap claims a free inode %llu is in use, "), lino); + do_warn( + _("imap claims a free inode %" PRIu64 " is in use, "), lino); if (!no_modify) { do_warn(_("correcting imap and clearing inode\n")); *dirty += clear_dinode(mp, dino, lino); @@ -2524,7 +2579,8 @@ process_dinode_int(xfs_mount_t *mp, */ if (di_mode != 0 && check_dinode_mode_format(dinoc) != 0) { if (!uncertain) - do_warn(_("bad inode format in inode %llu\n"), lino); + do_warn( + _("bad inode format in inode %" PRIu64 "\n"), lino); if (verify_mode) return 1; goto clear_bad_out; @@ -2538,15 +2594,16 @@ process_dinode_int(xfs_mount_t *mp, uint16_t flags = be16_to_cpu(dinoc->di_flags); if (flags & ~XFS_DIFLAG_ANY) { - do_warn(_("Bad flags set in inode %llu"), lino); + do_warn(_("Bad flags set in inode %" PRIu64), lino); flags &= ~XFS_DIFLAG_ANY; } if (flags & (XFS_DIFLAG_REALTIME | XFS_DIFLAG_RTINHERIT)) { /* need an rt-dev! */ if (!rt_name) { - do_warn(_( - "inode %llu has RT flag set but there is no RT device"), lino); + do_warn( + _("inode %" PRIu64 " has RT flag set but there is no RT device"), + lino); flags &= ~(XFS_DIFLAG_REALTIME | XFS_DIFLAG_RTINHERIT); } @@ -2554,7 +2611,8 @@ process_dinode_int(xfs_mount_t *mp, if (flags & XFS_DIFLAG_NEWRTBM) { /* must be a rt bitmap inode */ if (lino != mp->m_sb.sb_rbmino) { - do_warn(_("inode %llu not rt bitmap"), lino); + do_warn(_("inode %" PRIu64 " not rt bitmap"), + lino); flags &= ~XFS_DIFLAG_NEWRTBM; } } @@ -2564,8 +2622,8 @@ process_dinode_int(xfs_mount_t *mp, XFS_DIFLAG_NOSYMLINKS)) { /* must be a directory */ if (di_mode && !S_ISDIR(di_mode)) { - do_warn(_( - "directory flags set on non-directory inode %llu"), + do_warn( + _("directory flags set on non-directory inode %" PRIu64 ), lino); flags &= ~(XFS_DIFLAG_RTINHERIT | XFS_DIFLAG_EXTSZINHERIT | @@ -2576,8 +2634,9 @@ process_dinode_int(xfs_mount_t *mp, if (flags & (XFS_DIFLAG_REALTIME | XFS_XFLAG_EXTSIZE)) { /* must be a file */ if (di_mode && !S_ISREG(di_mode)) { - do_warn(_( - "file flags set on non-file inode %llu"), lino); + do_warn( + _("file flags set on non-file inode %" PRIu64), + lino); flags &= ~(XFS_DIFLAG_REALTIME | XFS_XFLAG_EXTSIZE); } @@ -2639,7 +2698,7 @@ process_dinode_int(xfs_mount_t *mp, type = XR_INO_FIFO; break; default: - do_warn(_("bad inode type %#o inode %llu\n"), + do_warn(_("bad inode type %#o inode %" PRIu64 "\n"), di_mode & S_IFMT, lino); goto clear_bad_out; } @@ -2662,9 +2721,9 @@ process_dinode_int(xfs_mount_t *mp, XFS_DIFLAG_EXTSIZE))) { /* s'okay */ ; } else { - do_warn(_("bad non-zero extent size %u for " - "non-realtime/extsize inode %llu, "), - be32_to_cpu(dinoc->di_extsize), lino); + do_warn( + _("bad non-zero extent size %u for non-realtime/extsize inode %" PRIu64 ", "), + be32_to_cpu(dinoc->di_extsize), lino); if (!no_modify) { do_warn(_("resetting to zero\n")); dinoc->di_extsize = 0; @@ -2725,14 +2784,16 @@ process_dinode_int(xfs_mount_t *mp, dirty, "", parent, dblkmap) : process_dir(mp, lino, dino, ino_discovery, dirty, "", parent, dblkmap)) { - do_warn(_("problem with directory contents in " - "inode %llu\n"), lino); + do_warn( + _("problem with directory contents in inode %" PRIu64 "\n"), + lino); goto clear_bad_out; } break; case XR_INO_SYMLINK: if (process_symlink(mp, lino, dino, dblkmap) != 0) { - do_warn(_("problem with symbolic link in inode %llu\n"), + do_warn( + _("problem with symbolic link in inode %" PRIu64 "\n"), lino); goto clear_bad_out; } Index: xfsprogs-dev/repair/phase2.c =================================================================== --- xfsprogs-dev.orig/repair/phase2.c 2011-06-30 22:03:18.772845740 +0200 +++ xfsprogs-dev/repair/phase2.c 2011-06-30 22:03:24.689512335 +0200 @@ -67,7 +67,8 @@ zero_log(xfs_mount_t *mp) error); } else { if (verbose) { - do_warn(_("zero_log: head block %lld tail block %lld\n"), + do_warn( + _("zero_log: head block %" PRId64 " tail block %" PRId64 "\n"), head_blk, tail_blk); } if (head_blk != tail_blk) { Index: xfsprogs-dev/repair/phase3.c =================================================================== --- xfsprogs-dev.orig/repair/phase3.c 2011-06-30 22:03:18.782845742 +0200 +++ xfsprogs-dev/repair/phase3.c 2011-06-30 22:03:24.692845668 +0200 @@ -107,7 +107,7 @@ process_agi_unlinked(xfs_mount_t *mp, xf XFS_AG_DADDR(mp, agno, XFS_AGI_DADDR(mp)), mp->m_sb.sb_sectsize/BBSIZE, 0); if (!bp) - do_error(_("cannot read agi block %lld for ag %u\n"), + do_error(_("cannot read agi block %" PRId64 " for ag %u\n"), XFS_AG_DADDR(mp, agno, XFS_AGI_DADDR(mp)), agno); agip = XFS_BUF_TO_AGI(bp); From BATV+e11cde4e9d21b258205a+2867+infradead.org+hch@bombadil.srs.infradead.org Thu Jun 30 15:25:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_38, J_CHICKENPOX_43,J_CHICKENPOX_63,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 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 p5UKP7g9255609 for ; Thu, 30 Jun 2011 15:25:07 -0500 X-ASG-Debug-ID: 1309465505-747c01fd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4C0EAE5CDE9 for ; Thu, 30 Jun 2011 13:25:05 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id B4Sdvv9s0qLg4hal for ; Thu, 30 Jun 2011 13:25:05 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1QcNnN-0006pV-7L for xfs@oss.sgi.com; Thu, 30 Jun 2011 20:25:05 +0000 Date: Thu, 30 Jun 2011 16:25:05 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfsprogs: fix gcc 4.6 variable set but not used warnings Subject: [PATCH] xfsprogs: fix gcc 4.6 variable set but not used warnings Message-ID: <20110630202505.GA23276@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1309465506 X-Barracuda-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=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67592 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking 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 Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/db/bmroot.c =================================================================== --- xfsprogs-dev.orig/db/bmroot.c 2011-06-30 22:16:37.986169145 +0200 +++ xfsprogs-dev/db/bmroot.c 2011-06-30 22:16:53.036168961 +0200 @@ -192,11 +192,9 @@ bmrootd_key_offset( { xfs_bmdr_block_t *block; xfs_bmdr_key_t *kp; - xfs_dinode_t *dip; ASSERT(bitoffs(startoff) == 0); ASSERT(obj == iocur_top->data); - dip = obj; block = (xfs_bmdr_block_t *)((char *)obj + byteize(startoff)); ASSERT(be16_to_cpu(block->bb_level) > 0); kp = XFS_BMDR_KEY_ADDR(block, idx); Index: xfsprogs-dev/growfs/xfs_growfs.c =================================================================== --- xfsprogs-dev.orig/growfs/xfs_growfs.c 2011-06-30 22:15:46.909503114 +0200 +++ xfsprogs-dev/growfs/xfs_growfs.c 2011-06-30 22:16:15.546169457 +0200 @@ -304,7 +304,6 @@ main(int argc, char **argv) error = 0; if (dflag | aflag) { xfs_growfs_data_t in; - __uint64_t new_agcount; if (!mflag) maxpct = geo.imaxpct; @@ -318,9 +317,6 @@ main(int argc, char **argv) error = 1; } - new_agcount = dsize / geo.agblocks - + (dsize % geo.agblocks != 0); - if (!error && dsize < geo.datablocks) { fprintf(stderr, _("data size %lld too small," " old size is %lld\n"), Index: xfsprogs-dev/repair/phase6.c =================================================================== --- xfsprogs-dev.orig/repair/phase6.c 2011-06-30 22:16:58.736168887 +0200 +++ xfsprogs-dev/repair/phase6.c 2011-06-30 22:17:12.169502056 +0200 @@ -3217,7 +3217,6 @@ process_dir_inode( xfs_fsblock_t first; xfs_inode_t *ip; xfs_trans_t *tp; - xfs_dahash_t hashval; dir_hash_tab_t *hashtab; int need_dot, committed; int dirty, num_illegal, error, nres; @@ -3344,8 +3343,6 @@ process_dir_inode( } dir_hash_done(hashtab); - hashval = 0; - /* * We don't support repairing of v1 dir anymore, report errors and exit */ Index: xfsprogs-dev/rtcp/xfs_rtcp.c =================================================================== --- xfsprogs-dev.orig/rtcp/xfs_rtcp.c 2011-06-30 22:15:12.339503542 +0200 +++ xfsprogs-dev/rtcp/xfs_rtcp.c 2011-06-30 22:15:31.239503313 +0200 @@ -36,7 +36,6 @@ main(int argc, char **argv) { register int c, i, r, errflg = 0; struct stat64 s2; - int eflag; int extsize = - 1; progname = basename(argv[0]); @@ -47,7 +46,6 @@ main(int argc, char **argv) while ((c = getopt(argc, argv, "pe:V")) != EOF) { switch (c) { case 'e': - eflag = 1; extsize = atoi(optarg); break; case 'p': Index: xfsprogs-dev/db/attrset.c =================================================================== --- xfsprogs-dev.orig/db/attrset.c 2011-06-30 22:17:29.352835173 +0200 +++ xfsprogs-dev/db/attrset.c 2011-06-30 22:17:54.212834865 +0200 @@ -80,7 +80,7 @@ attr_set_f( { xfs_inode_t *ip = NULL; char *name, *value, *sp; - int c, namelen, valuelen = 0, flags = 0; + int c, valuelen = 0, flags = 0; if (cur_typ == NULL) { dbprintf(_("no current type\n")); @@ -139,7 +139,6 @@ attr_set_f( } name = argv[optind]; - namelen = strlen(name); if (valuelen) { value = (char *)memalign(getpagesize(), valuelen); @@ -184,7 +183,7 @@ attr_remove_f( { xfs_inode_t *ip = NULL; char *name; - int c, namelen, flags = 0; + int c, flags = 0; if (cur_typ == NULL) { dbprintf(_("no current type\n")); @@ -226,7 +225,6 @@ attr_remove_f( } name = argv[optind]; - namelen = strlen(name); if (libxfs_iget(mp, NULL, iocur_top->ino, 0, &ip, 0)) { dbprintf(_("failed to iget inode %llu\n"), From kkeller@sonic.net Thu Jun 30 16:42:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_63 autolearn=no version=3.4.0-r929098 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 p5ULgTmW260957 for ; Thu, 30 Jun 2011 16:42:29 -0500 X-ASG-Debug-ID: 1309470147-16c102580000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from a.mail.sonic.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AED2A44806 for ; Thu, 30 Jun 2011 14:42:28 -0700 (PDT) Received: from a.mail.sonic.net (a.mail.sonic.net [64.142.16.245]) by cuda.sgi.com with ESMTP id DZvsbJltIKaaxhPJ for ; Thu, 30 Jun 2011 14:42:28 -0700 (PDT) Received: from webmail.sonic.net (d.webmail.sonic.net [69.12.208.81]) by a.mail.sonic.net (8.13.8.Beta0-Sonic/8.13.7) with ESMTP id p5ULgRnN000598 for ; Thu, 30 Jun 2011 14:42:27 -0700 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Priority: Normal X-Mailer: AtMail PHP 5.62 Message-ID: <47455.1309470147@sonic.net> To: Reply-To: kkeller@sonic.net X-Origin: 128.32.252.13 X-Atmail-Account: kkeller@sonic.net Date: Thu, 30 Jun 2011 14:42:27 -0700 X-ASG-Orig-Subj: xfs_growfs doesn't resize Subject: xfs_growfs doesn't resize From: kkeller@sonic.net X-Barracuda-Connect: a.mail.sonic.net[64.142.16.245] X-Barracuda-Start-Time: 1309470148 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67597 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hello kind XFS folks, I am having a strange issue with xfs_growfs, and before I attempt to do something potentially unsafe, I thought I would check in with the list for advice. Our fileserver had an ~11TB xfs filesystem hosted under linux lvm. I recently added more disks to create a new 9TB container, and used the lvm tools to add the container to the existing volume group. When I went to xfs_growfs the filesystem, I had the first issue that this user had, where the metadata was reported, but there was no message about the new number of blocks: http://oss.sgi.com/archives/xfs/2008-01/msg00085.html Fortunately, I have not yet seen the other symptoms that the OP saw: I can still read from and write to the original filesystem. But the filesystem size hasn't changed, and I'm not experienced enough to interpret the xfs_info output properly. I read through that thread (and others), but none seemed specific to my issue. Plus, since my filesystem still seems healthy, I'm hoping that there's a graceful way to resolve the issue and add the new disk space. Here's some of the information I've seen asked for in the past. I apologize for it being fairly long. /proc/partitions: major minor #blocks name 8 0 244129792 sda 8 1 104391 sda1 8 2 8385930 sda2 8 3 21205800 sda3 8 4 1 sda4 8 5 30876898 sda5 8 6 51761398 sda6 8 7 20555136 sda7 8 8 8233281 sda8 8 9 20603331 sda9 8 16 11718684672 sdb 8 17 11718684638 sdb1 253 1 21484244992 dm-1 8 48 9765570560 sdd 8 49 9765568085 sdd1 sdb1 is the original member of the volume group. sdd1 is the new PV. I believe dm-1 is the LV where the volume group is hosted (and all the LVM tools report a 20TB logical volume). # lvdisplay=20 --- Logical volume --- LV Name /dev/saharaVG/saharaLV VG Name saharaVG LV UUID DjacPa-p9mk-mBmv-69c2-dmXF-LfxQ-wsRUOD LV Write Access read/write LV Status available # open 1 LV Size 20.01 TB Current LE 5245177 Segments 2 Allocation inherit Read ahead sectors 0 Block device 253:1 # uname -a Linux sahara.xxx 2.6.18-128.1.6.el5 #1 SMP Wed Apr 1 09:10:25 EDT 2009 x86_= 64 x86_64 x86_64 GNU/Linux Yes, it's not a completely current kernel. This box is running CentOS 5 with some yum updates. # xfs_growfs -V xfs_growfs version 2.9.4 This xfs_info is from after the xfs_growfs attempt. I regret that I don't = have one from before; I was actually thinking of it, but the resize went so= smoothly on my test machine (and went fine in the past as well on other pl= atforms) that I didn't give it much thought till it was too late. # xfs_info /export/ meta-data=3D/dev/mapper/saharaVG-saharaLV isize=3D256 agcount=3D32, agsi= ze=3D91552192 blks =3D sectsz=3D512 attr=3D0 data =3D bsize=3D4096 blocks=3D2929670144, imaxpct=3D25 =3D sunit=3D0 swidth=3D0 blks, unwritte= n=3D1 naming =3Dversion 2 bsize=3D4096 log =3Dinternal bsize=3D4096 blocks=3D32768, version= =3D1 =3D sectsz=3D512 sunit=3D0 blks, lazy-coun= t=3D0 realtime =3Dnone extsz=3D4096 blocks=3D0, rtextents=3D0 I saw requests to run xfs_db, but I don't want to mess up the syntax, even = if -r should be safe. Thanks for any help you can provide! --keith --=20 kkeller@sonic.net From kkeller@sonic.net Thu Jun 30 18:30:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_05 autolearn=ham version=3.4.0-r929098 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 p5UNUMww003523 for ; Thu, 30 Jun 2011 18:30:22 -0500 X-ASG-Debug-ID: 1309476620-673e00450000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from a.mail.sonic.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 457C3442E0 for ; Thu, 30 Jun 2011 16:30:20 -0700 (PDT) Received: from a.mail.sonic.net (a.mail.sonic.net [64.142.16.245]) by cuda.sgi.com with ESMTP id KCsA5jjzcwrtxJcT for ; Thu, 30 Jun 2011 16:30:20 -0700 (PDT) Received: from webmail.sonic.net (d.webmail.sonic.net [69.12.208.81]) by a.mail.sonic.net (8.13.8.Beta0-Sonic/8.13.7) with ESMTP id p5UNUKb1000554 for ; Thu, 30 Jun 2011 16:30:20 -0700 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Priority: Normal X-Mailer: AtMail PHP 5.62 Message-ID: <55283.1309476620@sonic.net> To: Reply-To: kkeller@sonic.net X-Origin: 128.32.252.13 X-Atmail-Account: kkeller@sonic.net Date: Thu, 30 Jun 2011 16:30:20 -0700 X-ASG-Orig-Subj: Re: xfs_growfs doesn't resize Subject: Re: xfs_growfs doesn't resize From: kkeller@sonic.net X-Barracuda-Connect: a.mail.sonic.net[64.142.16.245] X-Barracuda-Start-Time: 1309476621 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0035 1.0000 -1.9982 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.00 X-Barracuda-Spam-Status: No, SCORE=-2.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67605 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hello again all, I apologize for following up my own post, but I found some new information= =2E On Thu 30/06/11 2:42 PM , kkeller@sonic.net wrote: > http://oss.sgi.com/archives/xfs/2008-01/msg00085.html I found a newer thread in the archives which might be more relevant to my i= ssue: http://oss.sgi.com/archives/xfs/2009-09/msg00206.html But I haven't yet done a umount, and don't really wish to. So, my followup= questions are: =3D=3DIs there a simple way to figure out what xfs_growfs did, and whether = it caused any problems? =3D=3DWill I be able to fix these problems, if any, without needing a umoun= t? =3D=3DAssuming my filesystem is healthy, will a simple kernel update (and r= eboot of course!) allow me to resize the filesystem in one step, instead of= 2TB increments? Again, many thanks! --keith --=20 kkeller@sonic.net From david@fromorbit.com Thu Jun 30 21:22:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p612Ms1t017511 for ; Thu, 30 Jun 2011 21:22:55 -0500 X-ASG-Debug-ID: 1309486971-4ec503590000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2615614FB70F for ; Thu, 30 Jun 2011 19:22:51 -0700 (PDT) Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id HfwDbHtEu9z5tNPl for ; Thu, 30 Jun 2011 19:22:51 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EADUsDU55LCkB/2dsb2JhbABShEKjGni4GJBjDoEdg3uBDASaQogw Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail05.adl6.internode.on.net with ESMTP; 01 Jul 2011 11:52:50 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QcTNY-000544-Og; Fri, 01 Jul 2011 12:22:48 +1000 Date: Fri, 1 Jul 2011 12:22:48 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 03/27] xfs: use write_cache_pages for writeback clustering Subject: Re: [PATCH 03/27] xfs: use write_cache_pages for writeback clustering Message-ID: <20110701022248.GM561@dastard> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140336.950805096@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20110629140336.950805096@bombadil.infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1309486973 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67616 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, Jun 29, 2011 at 10:01:12AM -0400, Christoph Hellwig wrote: > Instead of implementing our own writeback clustering use write_cache_pages > to do it for us. This means the guts of the current writepage implementation > become a new helper used both for implementing ->writepage and as a callback > to write_cache_pages for ->writepages. A new struct xfs_writeback_ctx > is used to track block mapping state and the ioend chain over multiple > invocation of it. > > The advantage over the old code is that we avoid a double pagevec lookup, > and a more efficient handling of extent boundaries inside a page for > small blocksize filesystems, as well as having less XFS specific code. It's not more efficient right now, due to a little bug: > @@ -973,36 +821,38 @@ xfs_vm_writepage( > * buffers covering holes here. > */ > if (!buffer_mapped(bh) && buffer_uptodate(bh)) { > - imap_valid = 0; > + ctx->imap_valid = 0; > continue; > } > > if (buffer_unwritten(bh)) { > if (type != IO_UNWRITTEN) { > type = IO_UNWRITTEN; > - imap_valid = 0; > + ctx->imap_valid = 0; > } > } else if (buffer_delay(bh)) { > if (type != IO_DELALLOC) { > type = IO_DELALLOC; > - imap_valid = 0; > + ctx->imap_valid = 0; > } > } else if (buffer_uptodate(bh)) { > if (type != IO_OVERWRITE) { > type = IO_OVERWRITE; > - imap_valid = 0; > + ctx->imap_valid = 0; > } > } else { > if (PageUptodate(page)) { > ASSERT(buffer_mapped(bh)); > - imap_valid = 0; > + ctx->imap_valid = 0; > } > continue; > } This piece of logic checks is the type of buffer has changed from the previous buffer. This used to work just fine, but now "type" is local to the __xfs_vm_writepage() function, while the imap life spanѕ multiple calls to the __xfs_vm_writepage() function. Hence type is reinitialised to IO_OVERWRITE on every page that written, and so for delalloc we are invalidating the imap and looking it up again on every page. Traces show this sort of behaviour: <...>-514 [000] 689640.881953: xfs_writepage: dev 253:16 ino 0x552248 pgoff 0xf7000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-514 [000] 689640.881954: xfs_ilock: dev 253:16 ino 0x552248 flags ILOCK_SHARED caller xfs_map_blocks <...>-514 [000] 689640.881954: xfs_iunlock: dev 253:16 ino 0x552248 flags ILOCK_SHARED caller xfs_map_blocks <...>-514 [000] 689640.881954: xfs_map_blocks_found: dev 253:16 ino 0x552248 size 0x0 new_size 0x0 offset 0xf7000 count 1024 type startoff 0x0 startblock 6297609 blockcount 0x2800 <...>-514 [000] 689640.881956: xfs_writepage: dev 253:16 ino 0x552248 pgoff 0xf8000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-514 [000] 689640.881957: xfs_ilock: dev 253:16 ino 0x552248 flags ILOCK_SHARED caller xfs_map_blocks <...>-514 [000] 689640.881957: xfs_iunlock: dev 253:16 ino 0x552248 flags ILOCK_SHARED caller xfs_map_blocks <...>-514 [000] 689640.881957: xfs_map_blocks_found: dev 253:16 ino 0x552248 size 0x0 new_size 0x0 offset 0xf8000 count 1024 type startoff 0x0 startblock 6297609 blockcount 0x2800 <...>-514 [000] 689640.881960: xfs_writepage: dev 253:16 ino 0x552248 pgoff 0xf9000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-514 [000] 689640.881960: xfs_ilock: dev 253:16 ino 0x552248 flags ILOCK_SHARED caller xfs_map_blocks <...>-514 [000] 689640.881961: xfs_iunlock: dev 253:16 ino 0x552248 flags ILOCK_SHARED caller xfs_map_blocks <...>-514 [000] 689640.881961: xfs_map_blocks_found: dev 253:16 ino 0x552248 size 0x0 new_size 0x0 offset 0xf9000 count 1024 type startoff 0x0 startblock 6297609 blockcount 0x2800 IOWs, the type field also needs to be moved into the writepage context structure so that we don't keep doing needless extent map lookups. With the following patch, the trace output now looks like this for delalloc writeback: <...>-12623 [000] 694093.594883: xfs_writepage: dev 253:16 ino 0x2300a5 pgoff 0x505000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-12623 [000] 694093.594884: xfs_writepage: dev 253:16 ino 0x2300a5 pgoff 0x506000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-12623 [000] 694093.594884: xfs_writepage: dev 253:16 ino 0x2300a5 pgoff 0x507000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-12623 [000] 694093.594885: xfs_writepage: dev 253:16 ino 0x2300a5 pgoff 0x508000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-12623 [000] 694093.594885: xfs_writepage: dev 253:16 ino 0x2300a5 pgoff 0x509000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-12623 [000] 694093.594886: xfs_writepage: dev 253:16 ino 0x2300a5 pgoff 0x50a000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-12623 [000] 694093.594887: xfs_writepage: dev 253:16 ino 0x2300a5 pgoff 0x50b000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-12623 [000] 694093.594888: xfs_writepage: dev 253:16 ino 0x2300a5 pgoff 0x50c000 size 0xa00000 offset 0 delalloc 1 unwritten 0 i.e. there mapping lookup is no longer occurring for every page. As a side effect, the failure case I'm seeing with test 180 has gone from 5-10 files with the wrong size to >200 files with the wrong size with this patch, so clearly there is something wrong with file size updates getting to disk that this patch set makes worse. Cheers, Dave. -- Dave Chinner david@fromorbit.com xfs: io type needs to be part of the writepage context From: Dave Chinner If we don't pass the IO type we are mapping with the writeage context, then the imap is recalculated on every delalloc page that is passed to _xfs_vm_writepage(). This defeats the purpose of having a cached imap between calls and increases the overhead of delalloc writeback significantly. Fix this by moving the io type into the writepage context structure so that it moves with the cached imap through the stack. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_aops.c | 30 ++++++++++++++++++------------ 1 files changed, 18 insertions(+), 12 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c index 73dac4b..25b63cd 100644 --- a/fs/xfs/linux-2.6/xfs_aops.c +++ b/fs/xfs/linux-2.6/xfs_aops.c @@ -40,6 +40,7 @@ struct xfs_writeback_ctx { unsigned int imap_valid; + unsigned int io_type; struct xfs_bmbt_irec imap; struct xfs_ioend *iohead; struct xfs_ioend *ioend; @@ -804,7 +805,6 @@ __xfs_vm_writepage( bh = head = page_buffers(page); offset = page_offset(page); - type = IO_OVERWRITE; do { int new_ioend = 0; @@ -826,18 +826,18 @@ __xfs_vm_writepage( } if (buffer_unwritten(bh)) { - if (type != IO_UNWRITTEN) { - type = IO_UNWRITTEN; + if (ctx->io_type != IO_UNWRITTEN) { + ctx->io_type = IO_UNWRITTEN; ctx->imap_valid = 0; } } else if (buffer_delay(bh)) { - if (type != IO_DELALLOC) { - type = IO_DELALLOC; + if (ctx->io_type != IO_DELALLOC) { + ctx->io_type = IO_DELALLOC; ctx->imap_valid = 0; } } else if (buffer_uptodate(bh)) { - if (type != IO_OVERWRITE) { - type = IO_OVERWRITE; + if (ctx->io_type != IO_OVERWRITE) { + ctx->io_type = IO_OVERWRITE; ctx->imap_valid = 0; } } else { @@ -862,7 +862,8 @@ __xfs_vm_writepage( * time. */ new_ioend = 1; - err = xfs_map_blocks(inode, offset, &ctx->imap, type); + err = xfs_map_blocks(inode, offset, &ctx->imap, + ctx->io_type); if (err) goto error; ctx->imap_valid = @@ -870,11 +871,12 @@ __xfs_vm_writepage( } if (ctx->imap_valid) { lock_buffer(bh); - if (type != IO_OVERWRITE) { + if (ctx->io_type != IO_OVERWRITE) { xfs_map_at_offset(inode, bh, &ctx->imap, offset); } - xfs_add_to_ioend(ctx, inode, bh, offset, type, new_ioend); + xfs_add_to_ioend(ctx, inode, bh, offset, ctx->io_type, + new_ioend); count++; } } while (offset += len, ((bh = bh->b_this_page) != head)); @@ -902,7 +904,9 @@ xfs_vm_writepage( struct page *page, struct writeback_control *wbc) { - struct xfs_writeback_ctx ctx = { }; + struct xfs_writeback_ctx ctx = { + .io_type = IO_OVERWRITE, + }; int ret; /* @@ -939,7 +943,9 @@ xfs_vm_writepages( struct address_space *mapping, struct writeback_control *wbc) { - struct xfs_writeback_ctx ctx = { }; + struct xfs_writeback_ctx ctx = { + .io_type = IO_OVERWRITE, + }; int ret; xfs_iflags_clear(XFS_I(mapping->host), XFS_ITRUNCATED); From david@fromorbit.com Thu Jun 30 23:18:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 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 p614Iwqw028257 for ; Thu, 30 Jun 2011 23:18:58 -0500 X-ASG-Debug-ID: 1309493934-5d7900200000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E5206178ADED for ; Thu, 30 Jun 2011 21:18:54 -0700 (PDT) Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id OdA17FrAyDNF2ha0 for ; Thu, 30 Jun 2011 21:18:54 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAE1IDU55LCkB/2dsb2JhbAA0HqdceLwvjSoOgySDAASaQogw Received: from ppp121-44-41-1.lns20.syd6.internode.on.net (HELO dastard) ([121.44.41.1]) by ipmail05.adl6.internode.on.net with ESMTP; 01 Jul 2011 13:48:53 +0930 Received: from dave by dastard with local (Exim 4.72) (envelope-from ) id 1QcVBr-0005EQ-R8; Fri, 01 Jul 2011 14:18:51 +1000 Date: Fri, 1 Jul 2011 14:18:51 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 03/27] xfs: use write_cache_pages for writeback clustering Subject: Re: [PATCH 03/27] xfs: use write_cache_pages for writeback clustering Message-ID: <20110701041851.GN561@dastard> References: <20110629140109.003209430@bombadil.infradead.org> <20110629140336.950805096@bombadil.infradead.org> <20110701022248.GM561@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110701022248.GM561@dastard> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1309493936 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.2.67623 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, Jul 01, 2011 at 12:22:48PM +1000, Dave Chinner wrote: > On Wed, Jun 29, 2011 at 10:01:12AM -0400, Christoph Hellwig wrote: > > Instead of implementing our own writeback clustering use write_cache_pages > > to do it for us. This means the guts of the current writepage implementation > > become a new helper used both for implementing ->writepage and as a callback > > to write_cache_pages for ->writepages. A new struct xfs_writeback_ctx > > is used to track block mapping state and the ioend chain over multiple > > invocation of it. > > > > The advantage over the old code is that we avoid a double pagevec lookup, > > and a more efficient handling of extent boundaries inside a page for > > small blocksize filesystems, as well as having less XFS specific code. > > It's not more efficient right now, due to a little bug: ..... > With the following patch, the trace output now looks like this for > delalloc writeback: > > <...>-12623 [000] 694093.594883: xfs_writepage: dev 253:16 ino 0x2300a5 pgoff 0x505000 size 0xa00000 offset 0 delalloc 1 unwritten 0 > <...>-12623 [000] 694093.594884: xfs_writepage: dev 253:16 ino 0x2300a5 pgoff 0x506000 size 0xa00000 offset 0 delalloc 1 unwritten 0 > <...>-12623 [000] 694093.594884: xfs_writepage: dev 253:16 ino 0x2300a5 pgoff 0x507000 size 0xa00000 offset 0 delalloc 1 unwritten 0 > <...>-12623 [000] 694093.594885: xfs_writepage: dev 253:16 ino 0x2300a5 pgoff 0x508000 size 0xa00000 offset 0 delalloc 1 unwritten 0 > <...>-12623 [000] 694093.594885: xfs_writepage: dev 253:16 ino 0x2300a5 pgoff 0x509000 size 0xa00000 offset 0 delalloc 1 unwritten 0 > <...>-12623 [000] 694093.594886: xfs_writepage: dev 253:16 ino 0x2300a5 pgoff 0x50a000 size 0xa00000 offset 0 delalloc 1 unwritten 0 > <...>-12623 [000] 694093.594887: xfs_writepage: dev 253:16 ino 0x2300a5 pgoff 0x50b000 size 0xa00000 offset 0 delalloc 1 unwritten 0 > <...>-12623 [000] 694093.594888: xfs_writepage: dev 253:16 ino 0x2300a5 pgoff 0x50c000 size 0xa00000 offset 0 delalloc 1 unwritten 0 > > > i.e. there mapping lookup is no longer occurring for every page. > > As a side effect, the failure case I'm seeing with test 180 has gone > from 5-10 files with the wrong size to >200 files with the wrong > size with this patch, so clearly there is something wrong with file > size updates getting to disk that this patch set makes worse. I'm now only running test 180 on 100 files rather than the 1000 the test normally runs on, because it's faster and still shows the problem. That means the test is only using 1GB of disk space, and I'm running on a VM with 1GB RAM. It appears to be related to the VM triggering random page writeback from the LRU - 100x10MB files more than fills memory, hence it being the smallest test case i could reproduce the problem on. My triage notes are as follows, and the patch that fixes the bug is attached below. --- 180.out 2010-04-28 15:00:22.000000000 +1000 +++ 180.out.bad 2011-07-01 12:44:12.000000000 +1000 @@ -1 +1,9 @@ QA output created by 180 +file /mnt/scratch/81 has incorrect size 10473472 - sync failed +file /mnt/scratch/86 has incorrect size 10371072 - sync failed +file /mnt/scratch/87 has incorrect size 10104832 - sync failed +file /mnt/scratch/88 has incorrect size 10125312 - sync failed +file /mnt/scratch/89 has incorrect size 10469376 - sync failed +file /mnt/scratch/90 has incorrect size 10240000 - sync failed +file /mnt/scratch/91 has incorrect size 10362880 - sync failed +file /mnt/scratch/92 has incorrect size 10366976 - sync failed $ ls -li /mnt/scratch/ | awk '/rw/ { printf("0x%x %d %d\n", $1, $6, $10); }' 0x244093 10473472 81 0x244098 10371072 86 0x244099 10104832 87 0x24409a 10125312 88 0x24409b 10469376 89 0x24409c 10240000 90 0x24409d 10362880 91 0x24409e 10366976 92 So looking at inode 0x244099 (/mnt/scratch/87), the last setfilesize call in the trace (got a separate patch for that) is: <...>-393 [000] 696245.229559: xfs_ilock_nowait: dev 253:16 ino 0x244099 flags ILOCK_EXCL caller xfs_setfilesize <...>-393 [000] 696245.229560: xfs_setfilesize: dev 253:16 ino 0x244099 isize 0xa00000 disize 0x94e000 new_size 0x0 offset 0x600000 count 3813376 <...>-393 [000] 696245.229561: xfs_iunlock: dev 253:16 ino 0x244099 flags ILOCK_EXCL caller xfs_setfilesize For an IO that was from offset 0x600000 for just under 4MB. The end of that IO is at byte 10104832, which is _exactly_ what the inode size says it is. It is very clear that from the IO completions that we are getting a *lot* of kswapd driven writeback directly through .writepage: $ grep "xfs_setfilesize:" t.t |grep "4096$" | wc -l 801 $ grep "xfs_setfilesize:" t.t |grep -v "4096$" | wc -l 78 So there's ~900 IO completions that change the file size, and 90% of them are single page updates. $ ps -ef |grep [k]swap root 514 2 0 12:43 ? 00:00:00 [kswapd0] $ grep "writepage:" t.t | grep "514 " |wc -l 799 Oh, now that is too close to just be a co-incidence. We're getting significant amounts of random page writeback from the the ends of the LRUs done by the VM. back on topic: <...>-393 [000] 696245.511905: xfs_ilock_nowait: dev 253:16 ino 0x24409e flags ILOCK_EXCL caller xfs_setfilesize <...>-393 [000] 696245.511906: xfs_setfilesize: dev 253:16 ino 0x24409e isize 0xa00000 disize 0x99e000 new_size 0x0 offset 0x99e000 count 4096 <...>-393 [000] 696245.511906: xfs_iunlock: dev 253:16 ino 0x24409e flags ILOCK_EXCL caller xfs_setfilesize Completion that updated the file size <...>-393 [000] 696245.515279: xfs_ilock_nowait: dev 253:16 ino 0x24409e flags ILOCK_EXCL caller xfs_setfilesize <...>-393 [000] 696245.515280: xfs_iunlock: dev 253:16 ino 0x24409e flags ILOCK_EXCL caller xfs_setfilesize Immediately followed by one that didn't. <...>-2619 [000] 696245.806576: xfs_writepage: dev 253:16 ino 0x24409e pgoff 0x858000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-2619 [000] 696245.806578: xfs_ilock: dev 253:16 ino 0x24409e flags ILOCK_SHARED caller xfs_map_blocks <...>-2619 [000] 696245.806579: xfs_iunlock: dev 253:16 ino 0x24409e flags ILOCK_SHARED caller xfs_map_blocks <...>-2619 [000] 696245.806579: xfs_map_blocks_found: dev 253:16 ino 0x24409e size 0x99f000 new_size 0x0 offset 0x858000 count 1024 type startoff 0x0 startblock 931888 blockcount 0x2800 New writepage call, showing the on disk file size matches with the last xfs_setfilesize call. <...>-2619 [000] 696245.806581: xfs_writepage: dev 253:16 ino 0x24409e pgoff 0x859000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-2619 [000] 696245.806582: xfs_writepage: dev 253:16 ino 0x24409e pgoff 0x85a000 size 0xa00000 offset 0 delalloc 1 unwritten 0 ..... <...>-2619 [000] 696245.806825: xfs_writepage: dev 253:16 ino 0x24409e pgoff 0x9fc000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-2619 [000] 696245.806826: xfs_writepage: dev 253:16 ino 0x24409e pgoff 0x9fd000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-2619 [000] 696245.806827: xfs_writepage: dev 253:16 ino 0x24409e pgoff 0x9fe000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-2619 [000] 696245.806828: xfs_writepage: dev 253:16 ino 0x24409e pgoff 0x9ff000 size 0xa00000 offset 0 delalloc 1 unwritten 0 Ummmm, hold on just a second there. We've already written the page at pgoff 0x9fe000: how else did we get that completion and file size update? So how come that page is still considered to be dirty *and* delalloc? WTF? Ok, so limit the tracing to writepage, block map and setfilesize events to try to see what is going on. <...>-514 [000] 699227.049423: xfs_writepage: dev 253:16 ino 0x21c098 pgoff 0x88a000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-514 [000] 699227.049426: xfs_map_blocks_found: dev 253:16 ino 0x21c098 size 0x0 new_size 0x0 offset 0x88a000 count 1024 type startoff 0x0 startblock 870448 blockcount 0x2800 <...>-393 [000] 699227.229449: xfs_setfilesize: dev 253:16 ino 0x21c098 isize 0xa00000 disize 0x0 new_size 0x0 offset 0x0 count 2097152 <...>-514 [000] 699227.251726: xfs_writepage: dev 253:16 ino 0x21c098 pgoff 0x88b000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-514 [000] 699227.251729: xfs_map_blocks_found: dev 253:16 ino 0x21c098 size 0x200000 new_size 0x0 offset 0x88b000 count 1024 type startoff 0x0 startblock 870448 blockcount 0x2800 ..... Ok, a bunch of kswapd writeback, then: <...>-4070 [000] 699227.987373: xfs_writepage: dev 253:16 ino 0x21c098 pgoff 0x800000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-4070 [000] 699227.987376: xfs_map_blocks_found: dev 253:16 ino 0x21c098 size 0x8ab000 new_size 0x0 offset 0x800000 count 1024 type startoff 0x0 startblock 870448 blockcount 0x2800 <...>-4070 [000] 699227.987377: xfs_writepage: dev 253:16 ino 0x21c098 pgoff 0x801000 size 0xa00000 offset 0 delalloc 1 unwritten 0 ..... <...>-4070 [000] 699227.987706: xfs_writepage: dev 253:16 ino 0x21c098 pgoff 0x9fe000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-4070 [000] 699227.987707: xfs_writepage: dev 253:16 ino 0x21c098 pgoff 0x9ff000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-393 [000] 699228.154118: xfs_setfilesize: dev 253:16 ino 0x21c098 isize 0xa00000 disize 0x8ab000 new_size 0x0 offset 0x800000 count 1961984 Normal writeback. Ok, writeback there spanned a range of 0x200000 (2^21 bytes or 2MiB) pages, but we get an ioend count of on 1961984 bytes, which is 136KiB short. Ok, looking back at the kswapd writeback, it fell right in the middle of this range, and what we see is this during the scanning: <...>-4070 [000] 699227.987474: xfs_writepage: dev 253:16 ino 0x21c098 pgoff 0x888000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-4070 [000] 699227.987475: xfs_writepage: dev 253:16 ino 0x21c098 pgoff 0x889000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-4070 [000] 699227.987476: xfs_writepage: dev 253:16 ino 0x21c098 pgoff 0x8ab000 size 0xa00000 offset 0 delalloc 1 unwritten 0 <...>-4070 [000] 699227.987477: xfs_writepage: dev 253:16 ino 0x21c098 pgoff 0x8ac000 size 0xa00000 offset 0 delalloc 1 unwritten 0 A non contiguous page range. That's 132KiB long, so matches the incorrect ioned value pretty closely. There's probably another single page hole in the scan somewhere. What this means is that the ioend is aggregating a non-contiguous range of pages, which is being submitted as multiple IO so the data is being written to the correct place. The problem is that the ioend size doesn't include the holes, so doesn't reflect the range of IO correctly and so if not setting the file size correctly. The old code used to terminate an ioend when a discontiguity in the mapping was discovered by the clustering page cache lookup. The callback we have now doesn't do this discontiguity discovery, so is simply placing discontiguous pages in the same ioend. We need to start a new ioend when we get a discontiguity. Cheers, Dave. -- Dave Chinner david@fromorbit.com xfs: writepage context needs to handle discontiguous page ranges From: Dave Chinner If the pages sent down by write_cache_pages to the writepage callback are discontiguous, we need to detect this and put each discontiguous page range into individual ioends. This is needed to ensure that the ioend accurately represents the range of the file that it covers so that file size updates during IO completion set the size correctly. Failure to take into account the discontiguous ranges results in files being too small when writeback patterns are non-sequential. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_aops.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c index 9f3f387..eadff82 100644 --- a/fs/xfs/linux-2.6/xfs_aops.c +++ b/fs/xfs/linux-2.6/xfs_aops.c @@ -44,6 +44,7 @@ struct xfs_writeback_ctx { struct xfs_bmbt_irec imap; struct xfs_ioend *iohead; struct xfs_ioend *ioend; + sector_t last_block; }; /* @@ -575,7 +576,10 @@ xfs_add_to_ioend( unsigned int type, int need_ioend) { - if (!ctx->ioend || need_ioend || type != ctx->ioend->io_type) { + if (!ctx->ioend || + need_ioend || + type != ctx->ioend->io_type || + bh->b_blocknr != ctx->last_block + 1) { struct xfs_ioend *new; new = xfs_alloc_ioend(inode, type); @@ -595,6 +599,7 @@ xfs_add_to_ioend( bh->b_private = NULL; ctx->ioend->io_size += bh->b_size; + ctx->last_block = bh->b_blocknr; } STATIC void From amit.sahrawat83@gmail.com Thu Jun 30 23:30:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 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 p614UuXr030308 for ; Thu, 30 Jun 2011 23:30:57 -0500 X-ASG-Debug-ID: 1309494655-720e03a90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ey0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DF0CE1D7EC86 for ; Thu, 30 Jun 2011 21:30:55 -0700 (PDT) Received: from mail-ey0-f181.google.com (mail-ey0-f181.google.com [209.85.215.181]) by cuda.sgi.com with ESMTP id tGbuFTsX3E6h7SOw for ; Thu, 30 Jun 2011 21:30:55 -0700 (PDT) Received: by eyh5 with SMTP id 5so1020879eyh.26 for ; Thu, 30 Jun 2011 21:30:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=rZIFjfYoXaUYTlCshAREwmxezoPvMDxuu1gT8cuna2A=; b=WpB8vJA+TNhEqt0BQkPlcMjSvyxU/R9fr7oLMAfYgBxJvU7D3DPMM71LYT+rAYhX2U DOFn5PLlYlQAwTjtUhNqjyVw4ZGBI6i2JDBXs/xrZi/KV2EJXi/Q+x+umnDoQnINdNFY wNTg95qQsOrrLOnXCqIYLi7j/hUKyGkR7nAEY= MIME-Version: 1.0 Received: by 10.14.126.137 with SMTP id b9mr893098eei.238.1309494654241; Thu, 30 Jun 2011 21:30:54 -0700 (PDT) Received: by 10.14.37.15 with HTTP; Thu, 30 Jun 2011 21:30:54 -0700 (PDT) In-Reply-To: <20110630121918.GK561@dastard> References: <20110630121918.GK561@dastard> Date: Fri, 1 Jul 2011 10:00:54 +0530 Message-ID: X-ASG-Orig-Subj: Re: XFS and USB Hang on 2.6.35.13 Subject: Re: XFS and USB Hang on 2.6.35.13 From: Amit Sahrawat To: Dave Chinner Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-ey0-f181.google.com[209.85.215.181] X-Barracuda-Start-Time: 1309494655 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE_7582B, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.67625 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.50 BSF_RULE_7582B Custom Rule 7582B X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jun 30, 2011 at 5:49 PM, Dave Chinner wrote: > > On Thu, Jun 30, 2011 at 04:57:42PM +0530, Amit Sahrawat wrote: > > Hi All, > > I encountered a hang on XFS during unplug. > > *Test Case:* > > #!/bin/sh > > index=3D0 > > while [ "$?" =3D=3D 0 ] > > do > > =A0 =A0 =A0 =A0 index=3D$(($index+1)) > > =A0 =A0 =A0 =A0 sync > > =A0 =A0 =A0 =A0 cp /mnt/1KB.txt /tmp/"$index".test > > done > > Where /mnt - mount point for vfat and /tmp mount point for XFS, both ca= n be > > XFS also. > > > > During this operation, unplug the USB. I am getting HANG almost everyti= me I > > unplug. > > Well, that's no surprise. The unplug appears to be losing IOs in > progress. > > > *Kernel Version:* 2.6.35.13 (extremely sorry, I know next question will= be > > why am I not using TOT kernel - I tried but my PC does not boot up with= the > > latest one) > > > > *Target=3DARM* > > *Logs Using Kernel Hung Task Feature* > > # sh test.sh > > usb 2-1: USB disconnect, address 2 > > sd 0:0:0:0: [sda] Unhandled error code > > sd 0:0:0:0: [sda] Result: hostbyte=3D0x01 driverbyte=3D0x00 > > sd 0:0:0:0: [sda] CDB: cdb[0]=3D0x2a: 2a 00 00 40 08 01 00 00 02 00 > > end_request: I/O error, dev sda, sector 4196353 > > sd 0:0:0:0: [sda] Unhandled error code > > sd 0:0:0:0: [sda] Result: hostbyte=3D0x01 driverbyte=3D0x00 > > sd 0:0:0:0: [sda] CDB: cdb[0]=3D0x2a: 2a 00 00 40 08 08 00 00 18 00 > > end_request: I/O error, dev sda, sector 4196360 > > end_request: I/O error, dev sda, sector 6293645 > > Device sda3, XFS metadata write error block 0x1 in sda3 > > xfs_force_shutdown(sda3,0x1) called from line 1031 of file > > fs/xfs/xfs_buf_item.c. =A0Return address =3D 0xc0507b1c > > So the device was unplugged, there was a disconnect error, a few IO > errors and then a shutdown. > > > > > *INFO: task khubd:*33 blocked for more than 120 seconds. > > "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this messag= e. > > khubd =A0 =A0 =A0 =A0 D c06c261c =A0 =A0 0 =A0 =A033 =A0 =A0 =A02 0x000= 00000 > > Backtrace: > > [] (schedule+0x0/0x500) from [] > > (_xfs_log_force+0x230/0x284) > > You need to turn off line wrapping for stuff you paste into email. > The cleaned up (i.e. relevant part) trace is: > > [] (schedule+0x0/0x500) > [] (_xfs_log_force+0x0/0x284) > [] (xfs_log_force+0x0/0x38) > [] (xfs_sync_data+0x0/0x58) > [] (xfs_quiesce_data+0x0/0x80) > [] (xfs_fs_sync_fs+0x0/0xe0) > [] (__sync_filesystem+0x0/0xa0) > [] (sync_filesystem+0x0/0x60) > [] (fsync_bdev+0x0/0x44) > [] (invalidate_partition+0x0/0x3c) > [] (del_gendisk+0x0/0x140) > [] (sd_remove+0x0/0x84) > [] (__device_release_driver+0x0/0xac) > [] (device_release_driver+0x0/0x30) > [] (bus_remove_device+0x0/0x8c) > [] (device_del+0x0/0x170) > [] (__scsi_remove_device+0x0/0x90) > [] (scsi_forget_host+0x0/0x6c) > [] (scsi_remove_host+0x0/0x104) > [] (quiesce_and_remove_host+0x0/0x9c) > [] (usb_stor_disconnect+0x0/0x28) > [] (usb_unbind_interface+0x0/0xdc) > [] (__device_release_driver+0x0/0xac) > [] (device_release_driver+0x0/0x30) > [] (bus_remove_device+0x0/0x8c) > [] (device_del+0x0/0x170) > [] (usb_disable_device+0x0/0xf8) > [] (usb_disconnect+0x0/0xf4) > [] (hub_thread+0x0/0xd78) > [] (kthread+0x0/0x8c) > > Well, that just looks utterly braindamaged to me. > > We just had the device containing the filesystem removed from the > system, so the error handling routine ends up trying to sync the > filesystem to the device that doesn't exist anymore. WTF? > >>> This is what I think, why is syncing taking place when the device doesn= 't exist anymore. What is the gain in doing so? I will try and propose this= feature. > Anyway, that's not the cause of the hang, but just an example of > someone not thinking through what their error handling actually > does... > > > *INFO: task xfslogd/1*:40 blocked for more than 120 seconds. > > "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this messag= e. > > xfslogd/1 =A0 =A0 D c06c261c =A0 =A0 0 =A0 =A040 =A0 =A0 =A02 0x0000000= 0 > > Backtrace: > > [] (schedule+0x0/0x500) > [] (_xfs_log_force+0x0/0x284) > [] (xfs_log_force_umount+0x0/0x1dc) > [] (xfs_do_force_shutdown+0x0/0x164) > [] (xfs_buf_iodone_callbacks+0x0/0x184) > [] (xfs_buf_iodone_work+0x0/0x7c) > [] (worker_thread+0x0/0x1e4) > [] (kthread+0x0/0x8c) > > That's where the shutdown has hung - only the xfslogd can complete > the IO that will allow the log force to complete, and that is not > occurring because it is waiting for the log force to complete before > it can complete the IO that will complete the log force... > > AFAICT, this problem doesn't exist in TOT - the conversion of the >>> Again I have a problem which seems fixed in TOT :) > xfslogd workqueue to CMWQ allows processing of other xfslogd > workqueue events to continue even though this one has gone to sleep. > > You probably need to change the shutdown type to > SHUTDOWN_LOG_IO_ERROR to prevent a log flush from occurring in this > shutdown context. >>> This will fix the error for this kernel version, I will give this a try= . >>> Is this the patchwork for CMWQ: http://patchwork.xfs.org/patch/2037/ (x= fs: improve sync behaviour in face of aggressive dirtying) ? Please let me = know. > > > =A0r7:00000013 r6:c040c04c r5:c041e61c r4:dbc2decc > > *INFO: task sync:*164 blocked for more than 120 seconds. > > "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this messag= e. > > sync =A0 =A0 =A0 =A0 =A0D c06c261c =A0 =A0 0 =A0 164 =A0 =A0136 0x00000= 000 > > Backtrace: > [] (schedule+0x0/0x500) > [] (schedule_timeout+0x0/0x200) > [] (wait_for_common+0x0/0x164) > [] (wait_for_completion+0x0/0x1c) > [] (xfs_buf_iowait+0x0/0x5c) > [] (xfs_flush_buftarg+0x0/0x180) > [] (xfs_quiesce_data+0x0/0x80) > [] (xfs_fs_sync_fs+0x0/0xe0) > [] (__sync_filesystem+0x0/0xa0) > [] (sync_one_sb+0x0/0x30) > [] (iterate_supers+0x0/0xb8) > [] (sync_filesystems+0x0/0x2c) > [] (sys_sync+0x0/0x44) > > And that one is probably stuck waiting for the xfslogd to complete > the IO. >>>Yes, Both are waiting for signal to come. Waiting [_xfs_log_force()][3125][Name:khubd] end_request: I/O error, dev sda, sector 4226672 end_request: I/O error, dev sda, sector 5283400 Device sda3, XFS metadata write error block 0x1 in sda3 xfs_force_shutdown(sda3,0x1) called from line 1031 of file fs/xfs/xfs_buf_item.c. Return address =3D 0xc0507b1c Waiting [_xfs_log_force()][3125][Name:xfslogd/0] > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com Thanks & Regards, Amit Sahrawat