From stefanrin@gmail.com Tue May 1 05:46:43 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-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 q41AkgKs120929 for ; Tue, 1 May 2012 05:46:42 -0500 X-ASG-Debug-ID: 1335869201-04cb6c24fa47230001-NocioJ Received: from mail-yw0-f53.google.com (mail-yw0-f53.google.com [209.85.213.53]) by cuda.sgi.com with ESMTP id MKJr8Q1aNfD0IG8E (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 01 May 2012 03:46:42 -0700 (PDT) X-Barracuda-Envelope-From: stefanrin@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.213.53 Received: by yhjj72 with SMTP id j72so142468yhj.26 for ; Tue, 01 May 2012 03:46:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=ZNOZioot5sbWv1R/8pNmD/y0TJYeyfaD9oWXzt1EIj8=; b=OJ9DnLzAjE8c3YXBEtZOJsR2hjFBCGpgBo2HJMGrsCxTGdOl0yr0gvnDP4GElsgbXK S2+ZUBz3IKQ9BqLJuBGMXr65oQ5t7EaKHdwucmymidF8Cmo2toiwk+tOpAalyxn3q3M9 AKMUZS83qorAVl1aLjcC9/bDTJ/HJ1yDJiyVcxzfbFDalI2cYZZtTCEtyJjvJHkrX05l UjaN4ew0N+ikdorAgnlITyKU3vY8/75eyEtWj7PhB+zKe+TdAILgcA1TqMIgJVSwxqfD CLnquZ54SHLSKim4lEDCG3BZe5uJWRbI8oJp/+0ndz/Qqi3N4rn4IBHSJ5pH1H78ri4f Uh1A== MIME-Version: 1.0 Received: by 10.236.115.74 with SMTP id d50mr19483959yhh.95.1335869201694; Tue, 01 May 2012 03:46:41 -0700 (PDT) Received: by 10.236.179.41 with HTTP; Tue, 1 May 2012 03:46:41 -0700 (PDT) In-Reply-To: <4F9AA43A.1060509@hardwarefreak.com> References: <4F9AA43A.1060509@hardwarefreak.com> Date: Tue, 1 May 2012 12:46:41 +0200 Message-ID: Subject: Re: A little RAID experiment From: Stefan Ring X-ASG-Orig-Subj: Re: A little RAID experiment To: stan@hardwarefreak.com Cc: Linux fs XFS Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-yw0-f53.google.com[209.85.213.53] X-Barracuda-Start-Time: 1335869201 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.95678 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 > Stefan, you should be able to simply clear the P410i configuration in > the BIOS, power down, then simply connect the 6 drive backplane cable to > the 410i, load the config from the disks, and go. =C2=A0This allows head = to > head RAID6 comparison between the P400 and P410i. =C2=A0No doubt the 410i > will be quicker. =C2=A0This procedure will tell you how much quicker. Unfortunately, the server is located at a hosting facility at the opposite end of town, and I'd spend an entire day just traveling to and fro, so that's not currently an option. I might get lucky though, because we should soon get another server with an external P410i. From tinguely@sgi.com Tue May 1 08:17:02 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-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 q41DH2Ow140184 for ; Tue, 1 May 2012 08:17:02 -0500 Received: from [128.162.232.130] (eagdhcp-232-130.americas.sgi.com [128.162.232.130]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4CF238F8040; Tue, 1 May 2012 06:16:59 -0700 (PDT) Message-ID: <4F9FE24B.3090603@sgi.com> Date: Tue, 01 May 2012 08:16:59 -0500 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH 02/10] xfs: separate buffer indexing from block map References: <1335249220-22274-1-git-send-email-david@fromorbit.com> <1335249220-22274-3-git-send-email-david@fromorbit.com> <4F9EE7EC.4030203@sgi.com> <20120430232410.GP7015@dastard> In-Reply-To: <20120430232410.GP7015@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 04/30/12 18:24, Dave Chinner wrote: > On Mon, Apr 30, 2012 at 02:28:44PM -0500, Mark Tinguely wrote: >> On 04/24/12 01:33, Dave Chinner wrote: >>> From: Dave Chinner >>> >>> To support discontiguous buffers in the buffer cache, we need to >>> separate the cache index variables from the I/O map. While this is >>> currently a 1:1 mapping, discontiguous buffer support will break >>> this relationship. >>> >>> However, for caching purposes, we can still treat them the same as a >>> contiguous buffer - the block number of the first block and the >>> length of the buffer - as that is still a unique representation. >>> Also, the only way we will ever access the discontiguous regions of >>> buffers is via bulding the complete buffer in the first place, so >>> using the initial block number and entire buffer length is a sane >>> way to index the buffers. >>> >>> Add a block mapping vector construct to the xfs_buf and use it in >>> the places where we are doing IO instead of the current >>> b_bn/b_length variables. >>> >>> Signed-off-by: Dave Chinner >> ... >>> +struct xfs_buf_map { >>> + xfs_daddr_t bm_bn; /* block number for I/O */ >>> + int bm_len; /* size of I/O */ >>> +}; >>> + >>> typedef struct xfs_buf { >>> /* >>> * first cacheline holds all the fields needed for an uncontended cache >>> @@ -107,7 +114,7 @@ typedef struct xfs_buf { >>> * fast-path on locking. >>> */ >>> struct rb_node b_rbnode; /* rbtree node */ >>> - xfs_daddr_t b_bn; /* block number for I/O */ >>> + xfs_daddr_t b_bn; /* block number of buffer */ >>> int b_length; /* size of buffer in BBs */ >> >> Looks good. >> Do you plan to eventually remove b_bn and b_length from xfs_buf? > > No. b_bn is a fast way of identifying unique buffers for cache > lookups and is located in the same cacheline as the tree node so we > don't take an extra cache miss on every buffer we traverse during > tree walks in _xfs_buf_find(). Also, b_length is used so often it is > much cleaner to keep it around than it s to iterate over all the > maps to calculate it every time it is needed. > > Cheers, > > Dave. Thanks for the reply. I was thinking that maybe the "inline" map could do both of those things. It is not used if there are multiple maps and is the same value as the original variables if there is only one map. --Mark Tinguely. From tinguely@sgi.com Tue May 1 10:13:39 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-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 q41FDdh9153557 for ; Tue, 1 May 2012 10:13:39 -0500 Received: from [128.162.232.130] (eagdhcp-232-130.americas.sgi.com [128.162.232.130]) by relay2.corp.sgi.com (Postfix) with ESMTP id C324D304075; Tue, 1 May 2012 08:13:35 -0700 (PDT) Message-ID: <4F9FFD9F.60203@sgi.com> Date: Tue, 01 May 2012 10:13:35 -0500 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH 03/10] xfs: convert internal buffer functions to pass maps References: <1335249220-22274-1-git-send-email-david@fromorbit.com> <1335249220-22274-4-git-send-email-david@fromorbit.com> In-Reply-To: <1335249220-22274-4-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 04/24/12 01:33, Dave Chinner wrote: > From: Dave Chinner > > While the external interface currently uses separate blockno/length > variables, we need to move internal interfaces to passing and > parsing vector maps. This will then allow us to add external > interfaces to support discontiguous buffer maps as the internal code > will already support them. > > Signed-off-by: Dave Chinner Looks good. Reviewed-by: Mark Tinguely From tinguely@sgi.com Tue May 1 13:11:03 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-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 q41IB3Wh174556 for ; Tue, 1 May 2012 13:11:03 -0500 Received: from [128.162.232.130] (eagdhcp-232-130.americas.sgi.com [128.162.232.130]) by relay2.corp.sgi.com (Postfix) with ESMTP id EFB40304064; Tue, 1 May 2012 11:10:59 -0700 (PDT) Message-ID: <4FA02733.5080409@sgi.com> Date: Tue, 01 May 2012 13:10:59 -0500 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH 04/10] xfs: add discontiguous buffer map interface References: <1335249220-22274-1-git-send-email-david@fromorbit.com> <1335249220-22274-5-git-send-email-david@fromorbit.com> In-Reply-To: <1335249220-22274-5-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 04/24/12 01:33, Dave Chinner wrote: > From: Dave Chinner > > With the internal interfaces supporting discontiguous buffer maps, > add external lookup, read and get interfaces so they can start to be > used. > > Signed-off-by: Dave Chinner Looks good. Reviewed-by: Mark Tinguely From david@fromorbit.com Tue May 1 20:16:16 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q421GF5J226405 for ; Tue, 1 May 2012 20:16:16 -0500 X-ASG-Debug-ID: 1335921373-04bdf034f0102ce0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id t2VfmF3VSsdH9WVH for ; Tue, 01 May 2012 18:16:14 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ah4FAC2KoE95LbQl/2dsb2JhbABEr3qDAYEIggkBAQUnExwcBxAIAxUDLhQlAyETiAy6ExOQEmMElX2QQ4J6 Received: from ppp121-45-180-37.lns20.syd7.internode.on.net (HELO dastard) ([121.45.180.37]) by ipmail04.adl6.internode.on.net with ESMTP; 02 May 2012 10:46:11 +0930 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1SPOAs-0006h1-D2; Wed, 02 May 2012 11:16:10 +1000 Date: Wed, 2 May 2012 11:16:10 +1000 From: Dave Chinner To: Mark Tinguely Cc: xfs@oss.sgi.com Subject: Re: [PATCH 02/10] xfs: separate buffer indexing from block map Message-ID: <20120502011610.GC25351@dastard> X-ASG-Orig-Subj: Re: [PATCH 02/10] xfs: separate buffer indexing from block map References: <1335249220-22274-1-git-send-email-david@fromorbit.com> <1335249220-22274-3-git-send-email-david@fromorbit.com> <4F9EE7EC.4030203@sgi.com> <20120430232410.GP7015@dastard> <4F9FE24B.3090603@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4F9FE24B.3090603@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1335921373 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.95736 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, May 01, 2012 at 08:16:59AM -0500, Mark Tinguely wrote: > On 04/30/12 18:24, Dave Chinner wrote: > >On Mon, Apr 30, 2012 at 02:28:44PM -0500, Mark Tinguely wrote: > >>On 04/24/12 01:33, Dave Chinner wrote: > >>>From: Dave Chinner > >>> > >>>To support discontiguous buffers in the buffer cache, we need to > >>>separate the cache index variables from the I/O map. While this is > >>>currently a 1:1 mapping, discontiguous buffer support will break > >>>this relationship. > >>> > >>>However, for caching purposes, we can still treat them the same as a > >>>contiguous buffer - the block number of the first block and the > >>>length of the buffer - as that is still a unique representation. > >>>Also, the only way we will ever access the discontiguous regions of > >>>buffers is via bulding the complete buffer in the first place, so > >>>using the initial block number and entire buffer length is a sane > >>>way to index the buffers. > >>> > >>>Add a block mapping vector construct to the xfs_buf and use it in > >>>the places where we are doing IO instead of the current > >>>b_bn/b_length variables. > >>> > >>>Signed-off-by: Dave Chinner > >>... > >>>+struct xfs_buf_map { > >>>+ xfs_daddr_t bm_bn; /* block number for I/O */ > >>>+ int bm_len; /* size of I/O */ > >>>+}; > >>>+ > >>> typedef struct xfs_buf { > >>> /* > >>> * first cacheline holds all the fields needed for an uncontended cache > >>>@@ -107,7 +114,7 @@ typedef struct xfs_buf { > >>> * fast-path on locking. > >>> */ > >>> struct rb_node b_rbnode; /* rbtree node */ > >>>- xfs_daddr_t b_bn; /* block number for I/O */ > >>>+ xfs_daddr_t b_bn; /* block number of buffer */ > >>> int b_length; /* size of buffer in BBs */ > >> > >>Looks good. > >>Do you plan to eventually remove b_bn and b_length from xfs_buf? > > > >No. b_bn is a fast way of identifying unique buffers for cache > >lookups and is located in the same cacheline as the tree node so we > >don't take an extra cache miss on every buffer we traverse during > >tree walks in _xfs_buf_find(). Also, b_length is used so often it is > >much cleaner to keep it around than it s to iterate over all the > >maps to calculate it every time it is needed. > > Thanks for the reply. I was thinking that maybe the "inline" map > could do both of those things. It is not used if there are multiple > maps and is the same value as the original variables if there is > only one map. I thought about doing that, but then the code gets harder to follow. e.g. why do we use bp->b_map.b_bn in some places, and bp->b_maps[0].b_bn in others when most of the time they both point to the same thing? It just maps it too easy to misunderstand/misuse/confuse the difference between the buffer identifiers and the real IO block addresses. I prefer the clarity of purpose that retaining b_bn/b_length gives, even though there is a slight increase in memory usage.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@redhat.com Tue May 1 22:54:07 2012 X-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 q423s6a6244262 for ; Tue, 1 May 2012 22:54:07 -0500 X-ASG-Debug-ID: 1335930845-04bdf034ef10d5d0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id B2ILZ2IvniVDKlAi for ; Tue, 01 May 2012 20:54:05 -0700 (PDT) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 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 q423s4jA022273 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 1 May 2012 23:54:05 -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 q423s3eD005607 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO) for ; Tue, 1 May 2012 23:54:04 -0400 Message-ID: <4FA0AFDB.5060009@redhat.com> Date: Tue, 01 May 2012 22:54:03 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:12.0) Gecko/20120420 Thunderbird/12.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] xfs_repair: fix for fragmented multiblock dirs X-Enigmail-Version: 1.4.1 X-ASG-Orig-Subj: [PATCH] xfs_repair: fix for fragmented multiblock dirs 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: 1335930845 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.95748 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- blkmap_getn() was reallocating the bmap_ext_t *bmp array for each extent in the loop, thereby losing previously filled-in elements, and generally making a mess of things. Allocating it only the first time through the loop fixes this right up. Signed-off-by: Eric Sandeen --- diff --git a/repair/bmap.c b/repair/bmap.c index 2f1c307..c43ca7f 100644 --- a/repair/bmap.c +++ b/repair/bmap.c @@ -168,7 +168,8 @@ blkmap_getn( /* * rare case - multiple extents for a single dir block */ - bmp = malloc(nb * sizeof(bmap_ext_t)); + if (!bmp) + bmp = malloc(nb * sizeof(bmap_ext_t)); if (!bmp) do_error(_("blkmap_getn malloc failed (%" PRIu64 " bytes)\n"), nb * sizeof(bmap_ext_t)); From synthia.huang30@yahoo.cn Tue May 1 23:22:26 2012 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id q424MQvn247075 for ; Tue, 1 May 2012 23:22:26 -0500 X-ASG-Debug-ID: 1335932539-04cbb03c17114000001-NocioJ Received: from nm10.bullet.mail.tp2.yahoo.com (nm10.bullet.mail.tp2.yahoo.com [203.188.200.211]) by cuda.sgi.com with SMTP id IoCXonX7d8Ig41bP for ; Tue, 01 May 2012 21:22:20 -0700 (PDT) X-Barracuda-Envelope-From: synthia.huang30@yahoo.cn X-Barracuda-Apparent-Source-IP: 203.188.200.211 Received: from [203.188.200.81] by nm10.bullet.mail.tp2.yahoo.com with NNFMP; 02 May 2012 04:22:19 -0000 Received: from [203.188.200.160] by tm2.bullet.mail.tp2.yahoo.com with NNFMP; 02 May 2012 04:22:18 -0000 Received: from [127.0.0.1] by omp1005.mail.tp2.yahoo.com with NNFMP; 02 May 2012 04:22:18 -0000 X-Yahoo-Newman-Property: ymail-3 X-Yahoo-Newman-Id: 440165.41640.bm@omp1005.mail.tp2.yahoo.com Received: (qmail 9974 invoked by uid 60001); 2 May 2012 04:22:16 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.cn; s=s1024; t=1335932535; bh=WBYnJFWRxbttmRitMjIr73TgT8vm6OWCf+iuLUxZPLE=; h=X-YMail-OSG:Received:X-Mailer:References:Message-ID:Date:From:Reply-To:Subject:To:In-Reply-To:MIME-Version:Content-Type; b=VeJKrtfJYNuS/T00VqxYc02a3dZ9B5m/OS9JGwK04KSnBb7t3cwCqHqyXlE5veNnloRUIxHE2FRsO0kl9fzVCW2nQUk2k3G2sLfPvrgNbVRoz0Im6XbrA15m6H7hdrd559VqZds3vYK+DGUJX807tfvhP1C0vMl89HDvkT9594M= DomainKey-Signature:a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.cn; h=X-YMail-OSG:Received:X-Mailer:References:Message-ID:Date:From:Reply-To:Subject:To:In-Reply-To:MIME-Version:Content-Type; b=gxsxTO2kgFlcmMkbuGgSVm9Tehf3VHQC/Zi4vbEgj43LFpIqC0puqh7OJ/zKyQtI2/gOEXqDDvk78Re7p8m8iOO9KphS3XK61QFZge4VYyEJngMLAjt2aJ7hddA/2i0hMMgSEce4XQ2FIdwFLV+rZvY0O+JXwYLLnlLkmOvxU7g=; X-YMail-OSG: ifAGG74VM1nqQyhexzeFDWYBuXSSvUgTv66ZvI1bpUU9beF 2mFKPaF0L6N7DXH60ghceZ6G4orWVs2rpeONlBCB75n61ZgqMu4yRcjQjXGb iudXSEuTArPQqROmv6ezNeuYs3wX0r8JTJgE5ALKpdLyLD8bm674tOL4m.ms TrtwAjtwy4ApuadUgXAB1xLgA.lHoQ5NOje8RN4u71xLW7gPeqb2okjECV3N MBsMh67H80oe1XMOcYSv8EeOOEv6w1CK7S_ld9Jv3G5bNqf688t3Jvr.AQE8 ODBpYLBHB_TIElQ4Ns_Ij8rSJm5IN8JyBpsx3q0qqcPJGDrgX9ofdzAtL9tj ps91wWiRBFcuzRz6BND.V4IFz2aFGklItgW38N5YvzQOZHsUn1AC48lGeyze IdELQQFxcPJzCpEF8mVY9SIk8wqkgDGxUV.9AubIQIKAuHeaSEsK12TbeJhB oDqWf Received: from [183.54.114.67] by web92401.mail.cnh.yahoo.com via HTTP; Wed, 02 May 2012 12:22:15 CST X-Mailer: YahooMailWebService/0.8.117.340979 References: <1334313113.52117.YahooMailNeo@web92401.mail.cnh.yahoo.com> <1334359693.96103.YahooMailNeo@web92412.mail.cnh.yahoo.com> <1334359707.67388.YahooMailNeo@web92403.mail.cnh.yahoo.com> <1334359726.17606.YahooMailNeo@web92416.mail.cnh.yahoo.com> <1334359740.66833.YahooMailNeo@web92411.mail.cnh.yahoo.com> <1334556822.80435.YahooMailNeo@web92410.mail.cnh.yahoo.com> <1334556837.80028.YahooMailNeo@web92406.mail.cnh.yahoo.com> <1334556857.91872.YahooMailNeo@web92404.mail.cnh.yahoo.com> <1334622675.88972.YahooMailNeo@web92402.mail.cnh.yahoo.com> <1334622691.45979.YahooMailNeo@web92407.mail.cnh.yahoo.com> <1334622707.53291.YahooMailNeo@web92407.mail.cnh.yahoo.com> <1334738099.74548.YahooMailNeo@web92416.mail.cnh.yahoo.com> <1334738117.82452.YahooMailNeo@web92407.mail.cnh.yahoo.com> <1334738137.43245.YahooMailNeo@web92410.mail.cnh.yahoo.com> <1334791000.17436.YahooMailNeo@web92416.mail.cnh.yahoo.com> <1334791027.11386.YahooMailNeo@web92415.mail.cnh.yahoo.com> <1334791059.17732. YahooMailNeo@web92416.mail.cnh.yahoo.com> <1334890618.80289.YahooMailNeo@web92415.mail.cnh.yahoo.com> <1334890634.56726.YahooMailNeo@web92414.mail.cnh.yahoo.com> <1334890650.80289.YahooMailNeo@web92415.mail.cnh.yahoo.com> <1334967439.62661.YahooMailNeo@web92410.mail.cnh.yahoo.com> <1334967456.92225.YahooMailNeo@web92406.mail.cnh.yahoo.com> <1334967491.57376.YahooMailNeo@web92404.mail.cnh.yahoo.com> <1335084147.71101.YahooMailNeo@web92414.mail.cnh.yahoo.com> <1335084165.54922.YahooMailNeo@web92407.mail.cnh.yahoo.com> <1335084182.54922.YahooMailNeo@web92407.mail.cnh.yahoo.com> <1335147075.23851.YahooMailNeo@web92401.mail.cnh.yahoo.com> <1335147099.35844.YahooMailNeo@web92403.mail.cnh.yahoo.com> <1335147128.81771.YahooMailNeo@web92415.mail.cnh.yahoo.com> <1335234303.35545.YahooMailNeo@web92403.mail.cnh.yahoo.com> <1335234321.9069.YahooMailNeo@web92405.mail.cnh.yahoo.com> <1335234335.8534.YahooMailNeo@web92404.mail.cnh.yahoo.com> <1335317495.98429.YahooMailNeo@web92416.mail.cnh.y ahoo.com> <1335317514.29254.YahooMailNeo@web92408.mail.cnh.yahoo.com> <1335317533.84344.YahooMailNeo@web92402.mail.cnh.yahoo.com> <1335429087.66560.YahooMailNeo@web92401.mail.cnh.yahoo.com> <1335429106.13991.YahooMailNeo@web92410.mail.cnh.yahoo.com> <1335429121.62823.YahooMailNeo@web92401.mail.cnh.yahoo.com> <1335488890.81254.YahooMailNeo@web92414.mail.cnh.yahoo.com> <1335488919.24173.YahooMailNeo@web92409.mail.cnh.yahoo.com> <1335488941.76894.YahooMailNeo@web92414.mail.cnh.yahoo.com> <1335576613.71787.YahooMailNeo@web92402.mail.cnh.yahoo.com> <1335576636.63171.YahooMailNeo@web92407.mail.cnh.yahoo.com> <1335704365.33708.YahooMailNeo@web92411.mail.cnh.yahoo.com> <1335704381.35860.YahooMailNeo@web92403.mail.cnh.yahoo.com> <1335704402.14125.YahooMailNeo@web92401.mail.cnh.yahoo.com> <1335858168.53912.YahooMailNeo@web92409.mail.cnh.yahoo.com> <1335858184.46685.YahooMailNeo@web92416.mail.cnh.yahoo.com> <1335858198.79539.YahooMailNeo@web92414.mail.cnh.yahoo.com> <1335932431.83074.Ya hooMailNeo@web92404.mail.cnh.yahoo.com> <1335932466.69658.YahooMailNeo@web92401.mail.cnh.yahoo.com> Message-ID: <1335932535.1644.YahooMailNeo@web92401.mail.cnh.yahoo.com> Date: Wed, 2 May 2012 12:22:15 +0800 (CST) From: Synthia Huang Reply-To: Synthia Huang Subject: RE :tablet pc supplier To: undisclosed recipients: ; X-ASG-Orig-Subj: RE :tablet pc supplier In-Reply-To: <1335932466.69658.YahooMailNeo@web92401.mail.cnh.yahoo.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="1371035315-1314841719-1335932535=:1644" X-Barracuda-Connect: nm10.bullet.mail.tp2.yahoo.com[203.188.200.211] X-Barracuda-Start-Time: 1335932539 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.95750 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 --1371035315-1314841719-1335932535=:1644 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Dear Sir/Madam,=0A=0AWe supply tablet PC, mini laptop=A0and accessories lik= e protection case of IPAD and all kinds of tablet PC. Please feel free to i= nquire about us. We hope to hear from you soon.=0AThanks and best regards.= =0ASynthia. HUANG =0ACeliam International ( Hong Kong ) Co., Ltd=0ATel: 86 = 755 36958118 =0AEmail: synthia.huang@celiamtrade.com=0AMSN:hisynthia@hotmai= l.com=A0=0ASkype: synthia.huang=0AWebsite: www.celiamtrade.com --1371035315-1314841719-1335932535=:1644 Content-Type: image/jpeg; name=JY7A10 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="JY7A10 promotion S.jpg" /9j/4AAQSkZJRgABAgEBLAEsAAD/4RPZRXhpZgAATU0AKgAAAAgABwESAAMA AAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAEx AAIAAAAUAAAAcgEyAAIAAAAUAAAAhodpAAQAAAABAAAAnAAAAMgAAAEsAAAA AQAAASwAAAABQWRvYmUgUGhvdG9zaG9wIDcuMAAyMDEyOjA0OjEzIDE0OjU2 OjM4AAAAAAOgAQADAAAAAf//AACgAgAEAAAAAQAAA+igAwAEAAAAAQAAAsUA AAAAAAAABgEDAAMAAAABAAYAAAEaAAUAAAABAAABFgEbAAUAAAABAAABHgEo AAMAAAABAAIAAAIBAAQAAAABAAABJgICAAQAAAABAAASqwAAAAAAAABIAAAA AQAAAEgAAAAB/9j/4AAQSkZJRgABAgEASABIAAD/7QAMQWRvYmVfQ00AAv/u AA5BZG9iZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUT ExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4N EA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwM DAwMDAwMDAwMDAwMDP/AABEIAFsAgAMBIgACEQEDEQH/3QAEAAj/xAE/AAAB BQEBAQEBAQAAAAAAAAADAAECBAUGBwgJCgsBAAEFAQEBAQEBAAAAAAAAAAEA AgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIxBUFRYRMicYEy BhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV 4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eX p7fH1+f3EQACAgECBAQDBAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGx QiPBUtHwMyRi4XKCkkNTFWNzNPElBhaisoMHJjXC0kSTVKMXZEVVNnRl4vKz hMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdHV2d3h5ent8f/ 2gAMAwEAAhEDEQA/AO4DGem32N+i380eA8k7Ws42N/zQphv6Nn9Vv5Ah8Kdr 2zHp/uN/zR/chZ3UMPp+Mb7wwdmiBJJ9v0Ppubuc31PTUie6zetZAxhVlW1O ycettjbaGn2ne30/UsDm+nW1m/8ApHq7/wDB11XJEM3LQGTNCEgSDfpj80qH FwR/rTaTPrtUbRuxK20mJ1DnNn0udv0/T/WXe3+e/QfzfvXSYeTiZuOzJxwx 1bwDw0kEjdscWbmeoz/CbXLlG/WLD+0h9uJbZjxkB9TvTmbsj7RU9n6d1e+r EdbW/wBtf6T8+7/B7n1adk2YVmTeC37Ta+6phLiGssc+6tlcufR6ba7Gbfs3 /XPemfSm/wA7gxxxCccEuXI09UuLj14a9X+O6npN/wBG3X+SP7lNlTS4fo2/ 5o/uWUzomM7Pzci2oNryNjawxzml0OGVfdZtf/OWZWz/AK1Sn6t0WvK6Z9lx qx6rLBZRue4QX2eplfpJ/wAJW+5E00448RnCPumpGPFLgHDATH+0/Ql6Zux6 de76DZ8No/uS2V/uN059o/uWFmdM6x61+NgvFfS3Y1mPVQXt2jdSWU7G7PVY 5uV9N77H+z/ttDZ07r/6u91wFuMMptDrLGvLBZSynF9X06aq7/1llln81+ip TaHdm+7QoS9/GLHFRPqHplKMZD9/979x6D9H+43T+SP7koZH822D/JH9y5+j D6563Trcm9z249lxvZvbu2PaG0+rtHp5W39J/wAJ6b0x6Lluyeo5Tb/RvyPX bilpPFrK21uvtad+2t1f6OvZ+g/nUeFb7OMGjnhsTcRxji9z2+D/ANS8T0Dq qTzW0f2R/cptqYR9Bp/sj+5ZHRcd2HjOrdjMxAXAiplrruGhjrHOd7Gusc3/ AAf/AF39ItOu4Nd5FAxLDMRjMxB4gP0vT/3EskP+ep9VY/Mb/mj+5DcxkOGx ugP5o8FcO141Ve6sjc4cQfyJA9Fkh1D/AP/Q9C2/o2f1W/kCr2Ng/FHz2Z/2 A/s0VnM2M9AXT6ZPs3+pt/4Pesn/ALLPTDbcbCNgY0l/qODXWFtnqN2D6FLL fQ2f4T2WKaGo3H2sUotufuUXBrhte0PbIMOAIkatMO/dcqrh9YBYX+liurca B6Rc4FoLZ6jaLgP0uy79HjV/6P8ASf8ABoAs+soG52HiHdA2es4Bpm2Zf7/U 3NGN7fzN9ifXiPtWfVLV0DpDXhwp4iBJ7N2f5+4er6n856y2mQB7QAOYAgSd XcLFZb18Oj7LiOaDG4WvEj0927a//u3+i2f6H/txbTI1jjsmzFMksuXIR7k5 TrbilxUkAQLeo9NotNV+Zj1Ws+lXZaxrhP7zHO3NUbOqYtHU8Tpbg85Way22 vaAWtbSJc610jbv+jVtauW619Z/8XnTeqZOJl9PryMtjycq2nFrsHqu91ost c6v1L9389/LURKRF6k9Y6R/5YYv/AG/X/wCTUHdY6R/3Pxf+36//ACa40fXL /Fu76PST/wCwdX/pRS/5z/UF/wBDpUf+glQ/9GpBRB7F6p3WOk/9zsY/9er/ APJoZ610r/udjf8Ab1f/AJNc0Ot/Up/HSx/7DVf+lVax+qfUjl3Sd7v/AAvT H/n1P4q7LeEnuHoaclmQwWYz231mQH1OD2yORurLmqZNsasdHfQoWL1DoeD0 G/qnT8YUYFIsvuox621v3s0uDqZYz7R7W/n+/wBnvRstlmbl9PyMHMrZXRuu tYXu99djG7HnHY5m/wBrv8Ls9LekJ+C+GESNGfCKJ4iP3Y8X/Ob1O4Nh5945 Ui72u7iD+Rc/idMyqhiOs6nXaMZxda/1XOMbt5aJf6dv2hr2U2faG/oWbPR/ SLYLyJkyCDtI76JpGq/LCOMiMZjINfUARsf6z//R7z6wV47/AKvZDcmvJupN Td9eDJySJZ/R9pb7t30v+DVJ9OE1z9tfU63Odud6LrvcQK3b3bHbG+zbXt/c VvrOWKeg5FlmaemNZS0nPaz1DV9Ab/R/wn7m1Qf1DFgCvrVTXVuAtFjWOJLm 0+m3Ydjq/bayz+vkf2FJG6+vijdpPqxJZ6beqF142byLZBPp4zbbfW/m7GV5 HrNf+5RkWfzlag+nCDyR+0nFrns9Qeu4Ha7a9of+dVv/AJr99XXZLnmuujrN Fjm7BZ+iZYXbntxwXem/azfbbWz/AIxR+1RHq9ZrkAAgUNA9zn0se6uXOZ+k xsmv/raeJH+XF/3q0wadNeIXNa09VBO0Df64GpP0jZ7f+Mc9bdFYrYysFzgw Bgc8lziANu59jvc9/wC89Zz8prG+7rmMC1nuIrrJ3NGyyz0/Uc7b6o3+l+Z/ NqxjZ2Iwlt/U8fJe9zWVhvpsIcSGtY1lTnus3+rShMkj/f8A4IEXNyp/8cHp I/7o3fluXm2RS2z64dec5ocKszJcJaHAE22NkseHt7r0rNEf4w+k/wDhK78t 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 /////////////////wPoAAAAAP////////////////////////////8D6AAA AAD/////////////////////////////A+gAAAAA//////////////////// /////////wPoAAA4QklNBAgAAAAAABAAAAABAAACQAAAAkAAAAAAOEJJTQQe AAAAAAAEAAAAADhCSU0EGgAAAAADVQAAAAYAAAAAAAAAAAAAAsUAAAPoAAAA EABKAFkANwBBADEAMAAgAHAAcgBvAG0AbwB0AGkAbwBuAAAAAQAAAAAAAAAA AAAAAAAAAAAAAAABAAAAAAAAAAAAAAPoAAACxQAAAAAAAAAAAAAAAAAAAAAB AAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAGYm91 bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAA TGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAACxQAAAABSZ2h0bG9uZwAAA+gA AAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNsaWNlAAAAEgAAAAdz bGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVu dW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVu dW0AAAAKRVNsaWNlVHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAA AAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAA AABCdG9tbG9uZwAAAsUAAAAAUmdodGxvbmcAAAPoAAAAA3VybFRFWFQAAAAB AAAAAAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQAAAABAAAAAAAGYWx0 VGFnVEVYVAAAAAEAAAAAAA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxU ZXh0VEVYVAAAAAEAAAAAAAlob3J6QWxpZ25lbnVtAAAAD0VTbGljZUhvcnpB bGlnbgAAAAdkZWZhdWx0AAAACXZlcnRBbGlnbmVudW0AAAAPRVNsaWNlVmVy dEFsaWduAAAAB2RlZmF1bHQAAAALYmdDb2xvclR5cGVlbnVtAAAAEUVTbGlj ZUJHQ29sb3JUeXBlAAAAAE5vbmUAAAAJdG9wT3V0c2V0bG9uZwAAAAAAAAAK bGVmdE91dHNldGxvbmcAAAAAAAAADGJvdHRvbU91dHNldGxvbmcAAAAAAAAA C3JpZ2h0T3V0c2V0bG9uZwAAAAAAOEJJTQQRAAAAAAABAQA4QklNBBQAAAAA AAQAAAABOEJJTQQMAAAAABLHAAAAAQAAAIAAAABbAAABgAAAiIAAABKrABgA Af/Y/+AAEEpGSUYAAQIBAEgASAAA/+0ADEFkb2JlX0NNAAL/7gAOQWRvYmUA ZIAAAAAB/9sAhAAMCAgICQgMCQkMEQsKCxEVDwwMDxUYExMVExMYEQwMDAwM DBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQ0LCw0ODRAODhAUDg4O FBQODg4OFBEMDAwMDBERDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM DAwMDAz/wAARCABbAIADASIAAhEBAxEB/90ABAAI/8QBPwAAAQUBAQEBAQEA AAAAAAAAAwABAgQFBgcICQoLAQABBQEBAQEBAQAAAAAAAAABAAIDBAUGBwgJ CgsQAAEEAQMCBAIFBwYIBQMMMwEAAhEDBCESMQVBUWETInGBMgYUkaGxQiMk FVLBYjM0coLRQwclklPw4fFjczUWorKDJkSTVGRFwqN0NhfSVeJl8rOEw9N1 4/NGJ5SkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2N0dXZ3eHl6e3x9fn9xEA AgIBAgQEAwQFBgcHBgU1AQACEQMhMRIEQVFhcSITBTKBkRShsUIjwVLR8DMk YuFygpJDUxVjczTxJQYWorKDByY1wtJEk1SjF2RFVTZ0ZeLys4TD03Xj80aU pIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9ic3R1dnd4eXp7fH/9oADAMBAAIR AxEAPwDuAxnpt9jfot/NHgPJO1rONjf80KYb+jZ/Vb+QIfCna9sx6f7jf80f 3IWd1DD6fjG+8MHZogSSfb9D6bm7nN9T01Inus3rWQMYVZVtTsnHrbY22hp9 p3t9P1LA5vp1tZv/AKR6u/8AwddVyRDNy0BkzQhIEg36Y/NKhxcEf602kz67 VG0bsSttJidQ5zZ9Lnb9P0/1l3t/nv0H83710mHk4mbjsyccMdW8A8NJBI3b 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 +h7HexWsPMYpRibEq0lUYevi2r+45szMyNH2xk1hGWWf6j2/mjk4o+r3f8my fh0VujYzcIsBDW/nAO27Y27W/ufzaWbQ2jHLf0ZdW9o3V7SJcZd+kYPf/wB8 VSu25jj+jcHEANJ0h25s7wfpV+l6v83/AITYrfUXhvT3jbB9SuQe2v0SpJwH DIj9GJ/R+fTSUZf1WbFkInAE3xyFeri4PVrGTqYjp+ofWhOsX6jX/B0CV0PS sLBd0zDudQw224dDLLI9zmmpjdjnD+R7VzOESfqL1nTX9Y0b/Vp0Zquk6TaR 0rAH/dWj/wA9sVQA9G+ZNuzA6e90uxaidpZOwfRcQ5zP6jnsY5O5oa1zQAGB sBvYACGx/VRZAE+KE90tPwKQJUX/0vRs6vMf0t46eyh+YawKW5QPok+3+e9L 37Nqr2V9Zbu24uHbBHpne5p2hrXe5pqd7vtHq7Pf+4rlV36Ng/kt/IEQWhOB rpaNHPfR1ksdGPhbtNgl7gYsY529xrr/AMF6r2+3+kemoNPVpDLcPEY1up/S OguAcWmtvo/R9YV/T+hW/wBT+cWqHgpyQRB1CXF4BTlUjqXrl1mLg7bNrbLG udvIHtPNHv2sc/09yNTXnG0uyaMWtke01EvfuGzaZfXXtb9P/tupWrKmRI9p 8uFBtjq4D+/dK/BThZuLkj68dIzBU92MMW+t9zWksa4Bzttr2+2rf6n6Pf8A TXA9QwPrH0X62dXymdEu6jVm3221OZXZZUa7Hvurf6mOx3va2z+b/wAHYvYB tfweeVhZX1h69j5N1Dfq9k3V1vc2q6u6stsYD+jubA9nqM93pu99aaQJCiL/ ALFPm7Oo/Wmp+4fV7M0A2tdVc5oI/Oh2P793529EZ1X6yOc0v+rVzy2Za6i3 a6f32Mob9D/B/uLvXfWbrx/9Z3NH/XW/+RQ/+cnXGva7/m/mc8G1us6fupsc MAKjGuqycYk6gG9HjsbrPWK6zW/6uOduBaXGu5rtTyNlQ97EG6/OyaTSOm5F PuDpix0QZjaamrsb+udcZd9p/YOXU2QSDY2Nx5+iPz1M9f6tfz9Wsywdn+pX /wBF8blMNBoTUt1ntx4r4BxDUfxaGBhZtP1F6lj3Y9gyL67rasbaTa5rhWxg 9H6e+z0/bWujwsZ+PgYtFv06aKq3Dwc1jWuH+cpdJuyMjEFuRg2dNeHuayi1 zXv2iIt3M+j6n7qNZqY7IA9lxGmqg4wmGoPwP5FBzmsBLyGgCdf7kXFLbA9w 4AMTzwgZAIjqQ//T9Ard+jZ/Vb+QKQeVSzMh+P0zIyK430Yz7GE6jcysvaSP kgZFuTjMa/1LC1tuMxl7ntc3IbfbXTs9HZ7Hek9+7Z6f6T0/s/6NOJA+rGAT ZHR1xYpeqfFZuXX1N9zHYN9VbK2uD6rmF7bHks9P1PT/AEra2V+r/M2s/Ten /OVJmvzcXBt9d4zMqlttjXNbt3gb7KGOrY1nv9PZ6mxDckUfPovMagJ8UTZr g9XGPP08P/OdNthcZPATuh4P4hee9J+unUr+rV0HddVc+tlZ3DbZvLWvYygf zW3c9/t/mvTXcZGtVxNl9bKRuL8bbuIALtu57Xf9BKRoE9kLusfQ6Zlh4KsV 5bHjVZr85t3Scq+p72GqsxbaGh7XADe92wej7Z+ltWRXlu+0uZTkmw/aGsx2 eq15srJe2xtlbfp7Wt9RltKUZxkIkH5/lIXRBMZSFVHfXu9PaK38GFTux3u0 BXOZ3W3YvU7quodUd0usV1mmks3yS3e+39HXbt/tuVunqeUz6t2dQNwzL6mX OrscQ1j9tr6qrrHN2/oW17bXf8GjjneSUACDDrKPoP8Adn+ksyR9IkaN9AfU 9NQPVpHqQSRtsbyCfztP5SVeDVSCKTsYeWHUT/JP0lyuD9ZcpvWOn4IIubm0 kZAYw7GvYH2faGXfmt2M/wCu/wA4yulX87qnUhkZjaHuZ6dHqUs0LTrDnB2x 225rt3sc76CGX9XEyv0nXT/0JMakQCPUHeFbWj3Hd5cBU8uxoBjT4aLL671j Nwfq27Mx/wBJlgNbuIEt3O2ut2n2bmt+j/LWD0nr+fk9Xdgm4dQxzQ2wXA6N s2Msf7vc79Ha99F38v8A0Sj4ZzHp08/SVSIAPg9Ex3u2Ac+53w/NRcXJ9PM2 H6LmHd8/o/8AUrOHTc21wezqeTV9oJJbXTUWM/we3c9rnO/0n+uxFxarrrvU cILpJjgABSQxCPUEV07rI3dl/9Tumk+kIgnYAAdRq3usrC+rPT8HKZl0Mq9W oy2KK2wT9I1bfbj+3/QMrWlX6mxn0voj/R+AUj6n8r/wNPYR1QZeN67mvFnp loIPt3A/u/ns+ip4tZqrcK3e8AxZH55H09ri76PtUbPU/lf+BqVPqen+dyf9 GnaUUa6dnOweinF6o7qMUm6wn1XtoYxx3fzmx7Hfonu/Pe36au5uAMt4eXsb tYWFrq22SSdzHbnub9D9xFHqfyv/AANOfUj87/oJpql3qQ1YLGdNtwYr/TMe x5FbQw+oNri6j6H0fzFn4n1WxunZtGbS2iaSduyjY7UOr9lnq2en7HfuLUb6 s/nf+BozvV9H87nv6aArSlRujYcjqfQmdSzDlFuMCa21k30eq6Wzr6rXNdtb P0FZo6e7F6WMTHdU2ytjmM2sArlxdr9lLv5v3e6rerVfq/yv/A01vqR/fsTh dmlHYOV0zo93S7Q2htTaHB24Mq2kT7vTrPqv9Jm/91itO6VmZd9z6XMZXZUG Wte2ySZPDqrqm7Nv+DcxRs36z+G1avRt/oujd9LtsnjzRyVwfUf41ohxcevZ Bm9KynYL6aCC9zdoD2+oIJ9/qNsP6T2fvLM6L9Vsnpl1jC5llFjQSdmx+4R7 S/fb+i9z/wBGurPqfy/+goO9X+X8/TUU+Lh+nRkPB1eet+qzrbLLLMmH2kuM CwAEnX215Fbfo/urXfW2ussAAFbAz2iBMe726qwPV/lf+Bqtf6vp2fS5d/o5 TYXev0SarR//2QA4QklNBCEAAAAAAFUAAAABAQAAAA8AQQBkAG8AYgBlACAA UABoAG8AdABvAHMAaABvAHAAAAATAEEAZABvAGIAZQAgAFAAaABvAHQAbwBz AGgAbwBwACAANwAuADAAAAABADhCSU0EBgAAAAAABwAIAAAAAQEA/+ESSGh0 dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfv u78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPD9hZG9iZS14 YXAtZmlsdGVycyBlc2M9IkNSIj8+Cjx4OnhhcG1ldGEgeG1sbnM6eD0nYWRv YmU6bnM6bWV0YS8nIHg6eGFwdGs9J1hNUCB0b29sa2l0IDIuOC4yLTMzLCBm cmFtZXdvcmsgMS41Jz4KPHJkZjpSREYgeG1sbnM6cmRmPSdodHRwOi8vd3d3 LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjJyB4bWxuczppWD0n aHR0cDovL25zLmFkb2JlLmNvbS9pWC8xLjAvJz4KCiA8cmRmOkRlc2NyaXB0 aW9uIGFib3V0PSd1dWlkOmE3ZTcyYWI2LTg1MzUtMTFlMS1iYWE4LWQ0ZjJh ZmMzZTE2YicKICB4bWxuczp4YXBNTT0naHR0cDovL25zLmFkb2JlLmNvbS94 YXAvMS4wL21tLyc+CiAgPHhhcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6 cGhvdG9zaG9wOmE3ZTcyYWI0LTg1MzUtMTFlMS1iYWE4LWQ0ZjJhZmMzZTE2 YjwveGFwTU06RG9jdW1lbnRJRD4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKPC9y ZGY6UkRGPgo8L3g6eGFwbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9J3cnPz7/7gAO QWRvYmUAZEAAAAAB/9sAhAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgIDAwMDAwMDAwMDAQEBAQEBAQEB AQECAgECAgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD AwMDAwMDAwMDAwP/wAARCALFA+gDAREAAhEBAxEB/90ABAB9/8QBogAAAAYC AwEAAAAAAAAAAAAABwgGBQQJAwoCAQALAQAABgMBAQEAAAAAAAAAAAAGBQQD BwIIAQkACgsQAAIBAwQBAwMCAwMDAgYJdQECAwQRBRIGIQcTIgAIMRRBMiMV CVFCFmEkMxdScYEYYpElQ6Gx8CY0cgoZwdE1J+FTNoLxkqJEVHNFRjdHYyhV VlcassLS4vJkg3SThGWjs8PT4yk4ZvN1Kjk6SElKWFlaZ2hpanZ3eHl6hYaH iImKlJWWl5iZmqSlpqeoqaq0tba3uLm6xMXGx8jJytTV1tfY2drk5ebn6Onq 9PX29/j5+hEAAgEDAgQEAwUEBAQGBgVtAQIDEQQhEgUxBgAiE0FRBzJhFHEI QoEjkRVSoWIWMwmxJMHRQ3LwF+GCNCWSUxhjRPGisiY1GVQ2RWQnCnODk0Z0 wtLi8lVldVY3hIWjs8PT4/MpGpSktMTU5PSVpbXF1eX1KEdXZjh2hpamtsbW 5vZnd4eXp7fH1+f3SFhoeIiYqLjI2Oj4OUlZaXmJmam5ydnp+So6Slpqeoqa qrrK2ur6/9oADAMBAAIRAxEAPwDYy6T6S6Sqek+lamp6V6cqamp6c6rqKmpq eq9g1FTU1E+wdvSz1FRPNt55Z6ieVy7u5LOxJJJPuSre2t/p4P0EroX8I9B8 uosubq5F1c0uZB+o34j/ABH59CZ/oL6Lvf8A0HdK3+l/9EvXt7G1x/x7n5t7 e+nt/wDlHj/3kf5umPqro8bmT/em/wA/Xf8AoL6L/wCfHdLf+il69/8Asc9+ +nt/+UeP/eR/m699Vdf8pUn+9N/n64/6C+iwOOjelv8AWHUvXv8A9jnvX01v /wAo6f7yP83Xvq7r/lKk/wB6b/P1Hbo3owWv0b0sf9fqXr3g/wDoOcH3v6e3 /wCUdP8AeR/m6st5cr/xIk/3pv8AP1Gl6P6NN9PR/S4P/iJ+vrf+85z739PB /wAo6f7yP83T4u5/+UiSn+mb/P01y9I9Hi4HSHTFzxf/AEUdfC/HBJ/u578L e3JH+Lx/7yP83T4ubjT/AG7/AO9H/P1Iquj+jvKn/GD+mNL09OxH+ijr63MK hjb+7nNyOfezb29B/i8fn+Ef5uky3VzqcfUyf703+frinSHR/A/0IdMm31P+ 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 wD/r249vo2aAY6aZajqI4sb/APEe1KkDj0nI8uo5Ia/Fvre35/p/sfdw1c9M sKUzjqK4sbc/T8+3gaivTMi17usLAX+tj/re3F49NdY/devddm34Nx7917rj 7917rrUv9f8Ae/dgh8x1rr2of14sPe9HCg691yuP6j/bj3YJQ1HXuugR/Ue7 OKjHVFwc9d+2tLenV6j16971pb069UevQT9+f8yD75/8Qf3B/wC+43L7am/s pf8ASn/B0/b/AO5Fv/p1/wAI6//R2f8Aoz/mRnR//iF+pv8A33u3PcoW/wDu Pb/6Rf8AAOoluv8Acq5/5qN/x49CebfkX/2APt7pPjrr02vp/wBhbn37r1R1 j/2/v3W+sMnI/wBv/wAR791ryJ6gSG1h/wAV9uICQR1vpvm/IH+P+3t7v5/K p6WRk6RU9cpHH2lC/wCQk8RNv9RKWsf+pnvw4sPLpPWjMQM164IwJ/w44P1/ x92IxjrRJNKnqSpW4AP++/2PvxrQgDPWusgK/n/iePdUUr1odZgf96/x96dC eHWzSmBnqRBIY5EkH1R1YfX6A3Nv9h7ZNaU6pxp0pcuizUYmU8ppkHH4P15H 459trg9OtSmOk8kh0i7W/pz7c6ZbqXqH+qH+wPvfVeuSvYg3uP6X/H596Ir1 7qRrX8N/xX23Q1zw61nz67DX4Df7C/8Axv3fA8ur1H2dZ1N+QbH8i/Puhx17 UPPrKH4sfqBwR+T/AI+9deB8wcdc1ckfWxH4/r/sPfutg5pWvWcSE8Hj6f63 9P8AYe/UB695ih6zLJxx/rcf8bP196AI+zq3WdZSPSGv/rH8f7a/vxBOQada rXJPUlJGP9r6fQ35v/t/p7oBXiOrdSo5L/m/9fp9f6j3ShHEde6lq9/pxcf7 x7qV6dV6n59Zwb8jj2wy56dqfXrmrkfk2P5/p/xFvdDXyPTitXHn1m1sPz/j 79hhWnVvn060r+eI0xI1Al4GP4a3qQ3/AAfwPaaVfDbWOB49KYzrXwye7y6h T1VPQwVNZXOIqSgp6isrZGOgRUtFE9RVSMxvpCQxsSfwBf37jkcem4rea4mi tIVLXMrqiLxq7kKop6liBTokfwd+YuJ+VuzdyLXiixfY+x81XwZ7C04WFMjt WuydWdo7rx1OzM321VjwlLWKCRDXRN9FljHt2eFoiK/CR/PzHWUP3n/u6X/s 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 1cKCf97/AOKe96iB3U69TrC8ItwALfgfX/jfv2rI9OtUJr6dQHX+o5/P+t7c +3pooTjqIy/VSOP6nn/jXuwPA1z0mZfUZ6guuklTyD/vH+tf+nt4ODmmemWA OfPqI6f1/wBYf77/AGPtUrah8+krDT5Y6hONLf6/1B/3n/b+3FYcRnppgCCP LrA6fW30tc/6x/p7UK2OPSYr+Lz6iMLf63twGvTTHVnz6xN9P9c/8R7dQ1PV OsZIHtzj1omnWB3Xjnn/AH3/ABT24hAr02esRcX/AKi34+t/9j+Pbhrigx1r rl5Ba2rj/W/417aNDUjrfWcEEcf7b3qlOt9euB9Tb3rrXXfv3W+go76N+hO+ LG//ABg/t/8AP/fudy+2bj+wm/0p/wAHT1sT9Rb5/Gv+Edf/1NoXo0qOi+jb j/mi3UtuB9f9Hu3P959ybb1MEGfwL/gHUP3Nfqrn/mo3/Hj0J/Df2W/2Jt7e 4eY6aqR1jawJFre7jI62COsDm54/Fwfe+tdYHP8Ar8fQ/j37r1T69R5LEWt/ sfx/t/bgrRaderTpqn/pci/It/sL/wCt7cBBHTinHz6j0Lf5aIjcLURzUxJ/ 5uR+n/YhwPfmHaSBwz15uAr1xUaW0k/S408/UDn/AAtf3v7OvRmta9ZF0/Uk /wCBH+8/T37q3WYOPpcf4XB+v+29+6qfXrOhH+sef9t/vXvx6bJ+fXP3QMD1 rrJHIY3Rx+pGDL/rgj/ex70TqBHl1YGin7elJkBHV49Z4xZlCyj6/jgj/XH+ 9e2Uqj0PWyarXpgiYEavpxa1vz/vPtRTNeqdZta/1/3g/wDFPe+vddal/wBb /Ye60Brjr3Xeofhh/X6/n3Rsnt6913c/1J/2PvWk+XXsdcw5Fjc2+lr8nj62 /wBf3ogjiOt9ZkcXPq/3m/PvXXusgk5sDx/xP+x9+691IWW/Go/7A8f7wfeq D069j0x1z1seAx/1tR/4r79QfLrWPy6kxytccm4HNz9f8R+fdaCh9OvUHUtJ AbXP1/Btx/r359061w4dSkcE2uP6/Xn8e/db1GvHoA/lJ0xS/IDonsDrKSKG TLZPEnK7SmlVWFHvLAk5Pbkykj9sVNZD9tIRY+GocfT37HU0/d+905/Zz3c5 N58SVhtsFx4N4oJ77K4/SuVNOOlG8VR/HGp8utZnqj5ZfJLoSoGO2V2TuTG0 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 R9Pz791dUC8Ou9TW+vv3WmLAjSMdd62Hv3TZkbgesiuT9Dz/AK59+6ulDkE1 678h1W4/4j34gUp1p3Iag4dZVN+fpa3uuherq+odZNZ/wPurg/l1ssVOfh6y pIRxx9f9h9Bxe/19t9WrTPl1mWQjT+L/AF/4jj8e/dVbg2MdVHfzB/hZNuyn yvfvTuOnXddFBJXdkbPxIlU7ooaaPVPu/CUlORq3HQQpeugRb1sK+VQZkYS0 ZfMddMfuR/ezi5cm232W90b5Dy3K4j2u9mofpJGPbZTu3/EWRjS3djSBz4bE RMvh0bQZ3NwANS53N04+qmnzGSh/23iqUt7p12Am2jaZiRcbRaOfPVDE3+FD 17IZ3NZdII8vncxl46Yu1NHlcvkMlHTNIFWRqZK2pnWBpQgDFANQAvew9+69 ZbRtW2vK+27Ra2zyABjDDHEWArTUY1UtSppWtKmnHpt9+6Xddal/qP8Abj37 rdD6dd3H1/H9ffuvddal/wBUP9uPfuvUPp17Uv8AUf7ce/deofTrxIH1IH+u ffuvUJ4DrwIP0IP+sffuvUI4jrxIH1IH+uffuvUJ4DrwIP0N/wDW9+69w49e uP6j/bj37r1D6dSaKjrMlWUeOxtJU5HI5GrpqDH4+hheprK6vrJkp6OipKeI NJPVVVRIqRooLMzAD37hk8OmLm4t7K2uLy9uEhs4Y2kkkchUREBZ3djhVVQW YnAAJ62tvgL8PKP4t9bHJ7npaao7n3/SUlXvmvXxznbmPFqnH7CxlQLgU2Ld hJXSIbVVdc8xxRWKLibxWx8A4f5+uCv3sfvFXPvnzmLHZJ3T222mR0so8r9R J8Ml9Kv8Uo7YFOYoKDDvJ0fj2x1if17n+n+8j37Hr1UtQ0p1iJBP592HVWFc 9e9+r1Trtf1f7Aj/AG/uvVlPAdR1Us7IqlnL8Kq3J4JsAOT7ufXptmVQSxoB 1xakqrkmnm+v/HKT8/8AIPt9WWgAPVPqbf8A38v7R119rU/8q8//AFJk/wCj fe6j16aNxAeEy0+0dcGpagD/AICzXP8AzZf/AKN97DAGtetePB/v5P2jrC0E yKWeGVFH1Zo3VRfgXJAHJ931qeNOtrLEx0rIpPyI64KjOwVEZ2P0VAWY2FzY AE8D3olPTqzMFGpmAHz6y/aVH4pp/wDYQyf9G+/M4OAcdUE8HnOn7R1jaysA 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 TazGjBQzXIub+wjzKkcd3brGiqPD8gB5n064zf3o/LfLPK/u/wC3Flyxy/Yb bbSctF3jtIIbdWf62dQ7pCiAtQUDMK0FK0HV0Tfjm3+H9fp7DXr1zNUVI6zU ihqumUjUGqYAVNiGvIosQfqD70eHXpwBBMR/Cf8AB1oWdl9694U3ZnZVNTd0 dt09NTdjb8p6ang7I3lDBT08G7MxFBBBDHmVjhhhiQKiKAqqAAAB7lKC1tjB BW2jroX8K+g+XX1m8j+0/tVPyRyRPN7Y8uvO+zWDMzbbZFmZrSEszMYSSzEk kkkkkk56Ro7+76X9PePcY/1uz97j/es57cNnZnjaRf7wv+boUj2k9qBw9ruX P+5bZf8AWnrmPkH38Pp3r3KP9btHfA/+Tl/evobL/lDi/wB4X/N1b/Wn9qv/ AAmPLv8A3LbP/rT13/swnyA/5/t3P/6NLfH+9fxz376Gy/5Q4f8AeF/zde/1 p/av/wAJjy7/ANy2z/609XW/yLu0Ozd8fJrtbG727I39vLG0vRldXUuP3ZvH cW4qGmrV3xtKAVlPSZfI1lPDViGV08iqH0MRexPsIc5W9vDt9q0NuiN43FVA Pwt6DrnN/eYck8l8tezXI95y3yftW3XknMqI0lraQW7sn0d0dDNFGjFagHST SoBpUdbTFvpe1/8AffT3HfXEbr1h/T3vr3XrD+g/2w9+6916w/oP9t7917rv 37r3Wol/Of7Z7W2b85c3g9n9odjbTwqdTdV1aYfbG+Nz4DFJVVWPyjVVUuOx WUpKNaipZAZHCanIFybe5O5UtreXaEeW3Rn8R8lQT5eZHXe7+7v5C5E5h+7T tu58wck7Rf7kd83JTLc2dtPKVWSMKpkljZ9K/hFaDyHWb+S32z2tvL5wY3Cb w7P7F3bhW6i7Pq2w+5977mz+KarpqXDmmqmx+WydXSGopy58b6NSXNiL+/c2 WttFtDPHbxq/ipkKAfPzA6b/ALxTkPkbl37td5ufL3JW0WG5DftuQS21nbwS 6GaXUviRRq2lqDUK0NBXrbmP0P8Avvz7jA8OuDCEk5PXH8H/AFveh59WJFOP WE/Q/wCsfel6a61CP5x/bXa+z/nTu3B7R7Q7G2phIuteq6mLDba3xufA4qKp qsDO9VUR47FZSko0nqXGqRwgZzyST7lPlW2tpdmieW3Rn8R8lQTxHmR132/u 9eQeQ+YfuybFue/8kbPfbk287kpmuLK2nlKrOoVTJLGzkKMKK0A4dP8A/Ja7 V7S3n8z5MPvHszsLduH/ANDfYdZ/Cd0b13LuDGfd01Rt0U9X9hlsnV0n3MAl bRJo1rqNiLn23zZbW0W064rdFfxVyFAPn5gdEn949yJyPy593SLceXeS9o2/ cP6xWCeLbWdvBJoZbjUuuKNW0tQVWtDQVGOtsRz9OObf73/xPuO14Drg/wBY ybC/vfVGrQAcT1gJ/J/33+29+6ZZq4BNOoMjkng/n63/ANgPp7UqAAKda6ju 3+Nz+f8AD/jfu3XuuIv+Tz/r/T/Y39uKKZ6advQ9U1fNP+b/ALC+O+6N29P9 UbLreye3dp11RgtxV24xVYHr3aWbijR5aWZ4ymb3bWUglUtHSCmpSePuTyPY l2zl6W8jjuJ5QluwqKZYj/APzr9nXR/7s/8Ad282+8excv8AuLz9zNFsvt3u ESz26W+mfcLuAkgOoNYLRHoaNL4ktM+AMHoN/wCUh8pu9flF2x8lNzd076rt 0Pjtp7AO38BTww4naW1YqzPbh+4g23t2hVKLHidIkWSZvJVTBB5JXsPanfbC 1soLOO2iAqzVJyTgcT/qHQv/ALwv2I9qvYj2/wDZPZPbPlWKxWfcL8XFwxMt 3dFILfS1zcOS8mkliqDTEhY6I1r1eYz3+pAt/j7DQSlT1yv1KPMdYjL/AK5/ 1zb3uhpx6ZMlePDrsSf1aw/1z7sqg+fW0alSSadafv8AM97e7Z2385u9MJtr tPsjb2EoqvZIocPgd9boxGJoxN15tSomFJjsflKejphNUSvI2hF1OxY8kn2P tnt4G262LQIWoclQT8R8yOvo3+4x7d+3m+/dX9q913vkLZL3c5Y73XNPY2s0 r6dwulXXJJEztRQFGomigAYA6IO3f3eiKWfvDt5FH1Zuzt6KovwLk5wDk+zP 6W2/5Ro/95X/ADdZar7Q+1LHSvtZy6T8tssv+tHXcXyC71LB4O9O3iym4aPt DebFT/W4zht799Lbf8o0f+8r/m68/s/7UqNMntVy6AfXbLP/AK0dG1+Pn8z7 5cdD7hxlVWdk5/t3ZENTCM11/wBn5So3JTZDHB1FTDh9x5E1O4duZLw38E0V Q0KPbyQyJdfaC72WwulakIjk8mUUz8xwPWPvu/8AcZ+717r7PfQW3JVpy7zQ yHwb/bIltmjkp2ma2j029xHX40eMORXRIjUPW4F0323tHvLq3YvbuxZ5Z9rb +wFLnsWtSEWuoWkMkGQxGSSNikWTwuSgmpKhQbCWFrcWPsAXNrJbTSQS/Gpo fT7fsPXzne5PIXMHtVz5zV7dc2RKnMG0XbQS6KlHAo0c0ZOTFNGySxk50OK5 r0oN99g7S6w2VujsTfucpNt7N2bhqvPbizdcT4aHHUa3dkjW8tTVVEjLFBBG DJPPIkaAswHtuK3aaRIolLSMaAdFXKXKvMHPfM2xcncpbXJe8y7lcpBbwJ8T yOcVJwqqAXkdqKiKzsQqk9anvy0/m7/IXvDO5bB9M57M9FdSRzT0uLpdtzpQ 9ibloQzImS3Vuun1V2KlrI/WKDGyQRU4Ol5J2Bf2OrDl+ztVV7hBLcfPKj7B /lPX0Bfd9/u8faD2u2rb919ytrt+avcIqrStcqX2+2fBMdratRJQhx49ysjS EalSJTp6qwzO7N07hqpK/cW69y56ulcvJW53cOXy1XI7HUzNU5GtqJmJJv8A q9nixxoNKRqB8gB1njtuwbFs8CWmzbDY2lqooEgt4YlA9AsaKP5dLXr7vLuf qnJ02Z607Z7E2RkKV1khl27u/N0VMSpDBZ8aKx8XWwsR6o5oZI2HBBHtua1t p1KzQIwPqB0Geb/a7215+sptt515A2fc7SQEEXFpC7Z81k0CVG9GR1YcQR1s vfyz/wCaRkfkVnaPoL5BnE0fb09FNLsTfWOpoMTjeyxj6d6itweXxUAShxe9 oaOF54mpljpsjHG4WOOZQsoK3rYltEN1agm3r3Lx0/MH0+3h1xR++x9xi09n NquPdn2iFxJ7dpIovrGRmll23xGCpPFK1Xlsi5COJC0luzKWd42ql3nP4PH+ vb2GNK+nXMUOD1yDsP8AW/17f71x7oUPl1aox1kWY/1P+x4/3n3Tq1T69ZVn B55v/h+P9596p1bWesvmFxzf/X4/5H70VqKdbLg9ZPKOCB/vv9f3XS3r1rUf 4v5dcDIbc/7zc+3KdaYg9ZqSsMMwJNlJCn62IJ+p/pa/tmaNWThkdOQSeHIp 8ulvDOGVbAX4sbjn/YAf09lZShJr0ehqhSD07Qy2PNwP96/4p7YYVWnShH9a 9OSvexB96C4NMHp/7OpCyHgXP4/PH+9+61Bxo7qde/LqUbEfgj/b+6J8WetD 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 Bdwu/p5HKppJqOOPt6kH7pfsXsn3ifd6L235h32727bm2u7uvGtljeXVbiMq lJQU0trNTSuBQ9aYfd/auU7z7f7H7jzeJx2Cy/ZO6a7deRw2Ilqp8XjKqvSF HpKCatZ6uSmjEI0mQluefcj2tutrbQ2ysSqLQE8T19KvtfyDYe1nt1yZ7b7X uE13tuy2CWsc0wVZZFjJIeQJRAx1ZCinRiPhb84t7fCbLdhZfZexdpb3m7Ex eAxWQh3ZW5qiix0W36yvraeWiOGmieSSofIMriS4AUW5v7Tbhtse4iESSMug k4p5/b1DX3mvus8r/eg27k/buZua9x2qPZp7iWM2iQuZDcJGjB/GBACiMFdO ak162wvhV8hdwfKL45bK7r3Pt3CbVzW6MhuujqsJt+or6rE0qbe3HkMJTvTz ZKSSsZqiCjV31EgOxtx7BW42q2V3JboxZQBk8civXz2/eh9ntn9hfermf2v2 Hebq/wBrsIbR1nuFjWVjcW0c7BliAQBWcqtBkAVz0aksT/vv+J+vtCFFeHWP 9euix/P/ABHtwRr+E9b+w9aYf81P/svfvz/qL2N/77faPse7MKbdbD7f+PHr 6a/uBf8AiI/tH/zTvv8Au43fXX8rPA4Lc3zk6fwu5MJh9x4arouw2q8PnsZR ZnF1Rp+vtx1EDVOOyMFRSTmCeNXQsh0uoYWIB973dmXb5irEGq5BofiHn1v7 /O77rsX3VPcjdNk3W5stzjl27RNBK8MqatwtlbTJGyuupSVNCKgkHBI62Fv5 gPxi+MOQ+KPdW7M91n1zsfM7J2NmNx7Q3xt/bGC2pmsXu2ghMm3cbBkMRSUE mQi3FlfHQvRS+VKgVHCawrKGNtubxb2BVnZlZgCpJOPP14ca9cb/ALn3vt77 Wn3g/bDl3aOed63XbN13WG2vLG4up7uCW0kalzK0czyCM28WqcTrpMZjy2kk HThFyASLEgXH9Dbkexz19KppU04dbdv8l+uyU/wfw8VcZWpaDtbs2jwzSXIX HmuxtXNHDq/3SmUqqiwHAYt7A3MAX94tTzRa/wA/8lOvnR/vNraxg+9PuMlo FE83L+2PNT/fmiVAT8zEsf5AdFs/nrd0ZPD7G6a6FxVbJTUu+8pmOw94QxOU Nfidny0uM2xj6gKRrpGz2Qnqip9Jlo4jY6RZVy3bIZbi5IyoCj5V4/yx1OH9 1D7aWO580+5Xu3uFur3G0wQ7dZkivhy3geW6kX0cQRxxAjOiZx5nrWuo6Oqy FZR46ghapr8jV0uPoaZTZqmtrp46Wkp1PNmnqJVUf4n2LiQASTgdduLi4t7O 3uLy7lCWkMbSSMeCoilnY/JVBP5dblvxa/lk/GbovrjAY7fPWGy+2u0qvF0l RvreW/sJSbphbOVNOkuQxW2sRmEqsThsBi53aCDxw/cTqnklkZmsoAvt2vbq ZjHOyQVwFNMepI4k9fNX77ffm97/AHW5z3e95U543Ll7kSO4dbGzsJ2tWECs RHLcywlJZriVQJH1P4aFtEaBVqSafzGv5VW391YXB9k/Dvq2lxHYAz9Hh94d Y7SloMLtrcOFyYlVN1YyhyddR4bbuRwFWiCrWF4aaellL+MSRXddtO9yRM0O 4zExUqGOSCPIkZIPl8+slvuZff73fYdz3Xkr7x/Pklxyj9G81nud2JJrm3mi pW1lkiR5riOdCfBLq8kcqBdZR6KVDor+TL8xsfuraO/c1v3rLpTMbUz+G3Rh apczkN7bkxuTwtfBkaKZKHbFNHiRIk1OAynIhWBKm6k+1t1zFt7RyQrE8isC Digoftz/AC6yB91f7yv7t93sHMPKe18p75zPt1/aTWsy+DHZW0kUyNG4L3LG ahDEgi3qDQjI62pIpp/FEamSNqnxx/cvBEYoHqNC+d4InLNFC8uoohZiqkC5 tf2BiorgGn29cHHMIdxCCIdR0hjVgte0MaAFgKAmgqc0HDrMswvybj88e6lT 6darwz1k8sR/tD/ev+I91KE8R1sMw65gkfpII/r9fdCnV9Y8z1z1cfTn8+9a T1vWvr135OLWa3+t7rkdbqPXrsyXFtV/9gf97t79Q+nW+uOviw/I+o/BH+Nh 7svmtOqGoIOrpU4msV0CEjyRroe/1029L/7f2XXEZRq+R6N7KYOuknI6U0E4 Zfr/AK/0+n4P+v7ROuejFT5eXTpBNbjk3P8Ahx/r/ke2mBHnnp9HxkefTkpH 1uLe6sPhI4jp7qRHKLW+o/4r/wAR78Vr3DDde6zXHFvyLj/H3VWOQ3Xuu/dy AR8uvdYZIxf6Gx5uBe3/ABQe6ggk+TdeH8+m+opYpRpkQMPrf6H6Wvx9T7uG I889VZQwNR0nKnFMLtCdS83Q3BFv6f6/t5Xr8XSR7etDx6YpoWQsroQR/qvr /t/boNekLxECpOem2WGw+lx9fof9gL3/AB7URudQPnTpK6+o6l0sf7AU/wCP P+uT7K701lA8yenoFqtB1kdeNJ4tx/rj/D/X9pS9QhGCp6sV1Bh0EtdTmOon T6BZXH04+t/ckWcga2tz6qOgbcR0dl8weosaEEWH5sfaliCCD00qlK8M9OSC y88fT2mYkDHHpQoI6yBGI/oL/Q3/AN6t7ZrmnV+ugptq4/P+vx7tpNK9e6Cj vk/8YF73/wDEIdv/APvudy+2J/7Gb/SH/B09bAC5t6D8a/4R1//R2nei4r9E 9GHUL/6E+pPz/wB+823/AIe5Mtj/AIvb1GNC/wCAdRDdNS6ufTxW/wCPHoSz cfX8cXHtQBk0PHpPx6wsxItcfn8H/kXPvYFKY68aAVPDqK31PN/+R/T3bqjF SKMadYXX88/63/FPfumOosi8Eji/9P6+/dbLEgD06gygm/PPP5HH/Eke3U4E dV+zprnX+txc24P+HPu/WumqW6MsisQ0bB055DKwZf8AbEe3wBSnl0+vw/On TlVhWmEyn0VMUdSnIsPKP3EH/BJVI/2Pui6aZ8sdMH1HA9YF5+pPB+l/x7qc VwOt1J4nrn7r1rr3v3Xuu/8AbfT/AH3+x9+6911cfS4/2/v3Xuui1iB/h9fz 9f8AiPdwoK1690o6GYVdJJTvyyK0Zv8AUqRYMPxce2GFCD09G34fPpNOr08z Qv8AVW4PHI/B4/B49qBpZdQ6vxBzw66Ln+gHuhp5DpgNTIFD11rb/fD3rq3i N69d6z/Qe949OqVqanrkrajaw/3n/ivvagE06soDGlOuZa3FyP8AWv72UNcD HWnAU0HXINYH8359060PXrkJWH9Pfut6jWvWZZNQ54+t7XuOPx9ffutu2qh6 yrIAeDz/ALH37qoJFfQ9Fc+QXw/6d+RcE1buPEttvfRi8dD2DtiGCmz3kAtD HnKYqKPc9GpsNFSDMq8Ryx+6NGrfI9ZJexv3qvdX2HmitNj3MbhyZqrJtl2z Pb0/Ebdq67Rz/FEdBOZIn615e4unK3ojt4ddV+7tp7zqcXlcPK2U2nX/AHUU KTZKIR0WaomvLg89EiBp6N3kaLUPUwI9obgUiuF40Rv8B67te0furae83ttb 8+WXLG5bTb3MMoEN7HoZiqGskEg7bi2Ymkc6qoeh7QQR1v8AVKpfH06anjL0 cK60IDoWgUakJBAdb3FwRf3GA4DrgPL/AGkn+mP+Hqub+X98ldqfzCfh3uOP fkeN3Pntu7q7r+JnyO27UQwinr93dcZ/Odb7vTI0Mdkio9/bV+1ywjCqggyo RRYe3GGlscOmVOpaHo4vx+6tk6O6O6l6YfOz7ni6n6+2r1zQZ+rjaOsymI2Z iKXb2Eqq1XklZq5sRj4BO2o65Qzfn3THkKDp1nkkZpJXLSsSSTkknJJPmTxJ 9etDf46f9xEXzb/8aQbL/wDfgZP2dWn/ACTd3/5pL/h6zT+69/05372H/ivp /wBWb7r6E5IUFmICqCSSbAAC5JP4AHsl6wq6p6+bX8zL4D5D4g/Lbb2zfnF8 Xq3sCp+Ove2G2vhMJ3r1xWblqt5Sdc7ooMNisTjKfcEtbVZ2XOGOGCnjjaV6 ghApbj24qMGUlTSvSiw3O82q9s902u7aHcraVJYpENGjkjYMjqfJlYBgfUda Pnwf7E3xmOhuqex87uDJ5vfNBkq7NJnsjNrycmS27uuqmxUksyLEQ9K1DEq8 AgKPY42wyXe3ETyFmfWtTk0NR13K+7XvO7+4XsJyxuHOm6TbjuO4R3sVxLMQ zyIbmeGjGgBpHRRjgB19IyOow3yb+MEksK09Vg++ujqqB4Sf8nai7I2NLS1N JKbnSsa5d4nB5WxB+nsDFTHIyN8StQ/keuJvNvL9xytzPzHyxdgi5sL2e3av mYpGjr+emo+R6KB3nm5/5eP8obeVfjKyPb+V+JfwgpMJh6yjqVC0W5eteqaD beIejqgwWSSTcFDEImB/cdhb6j34UaTPCvQcNRHQcadDR8hensP8zOjOiKqi +0rqLH90/Ez5NYN6tYRTVFF1z2fsXtCdtM91DVW2qWpVFHqZnCi97HQOkt9h 62RqAp6jou388H5Hn4s/ysPmP2XRZBMfuTL9V5HqrZkmvRO+7O4qml61xr0j eOS1VQRbllrFNuBTE3Fr+/IKsOtORpNfPrQe+BWxk2N8a9lSS04Sq3fVZHed Uj61MtNkKhaPExyFXVwjYbGwm6lTZ7gg8+xxskPh2IfzkYt+XAf4Ou3P3POU jyr7CcryyIUvd2ee/c0zSdtEJzUYgijIqCM5BHHb3+Dfz9+NM+09udM5Tam3 fjdm6JYaShpaeQr1xunJuEikr13TWs1fQ57JSDVJ/GpXaRzZauThQ7Nbyglw 2ofzH+r5dYH/AHo/ul+9kXMG8+5Fjv15zptUpLuzCu42sYJIjNqgEckEYwv0 aqFAqbdMnq3xSrKkiMrxyoksUiMrxyxSKGjlikQlJIpFIKspIYG4NvaPrniQ VZkYEOpIIOCCMEEHIIOCDkHj13791rr3v3Xuux71025Bx6ddEE8/0/w/4372 OHVRWopx64yD93Ub2K24t+Le7Dh15/i68dJsFBv9AP6kn/Yk+99V4ZPDrUl/ nDfKmp7m7+l6U2zkmk626Fq6nD1MVNMTR5/tCaIRbrzEwQ+OdduRsMTTXv43 iqWX/On2POXrEW9r9S6/rS5+xfIfnx/Z19Dv9257Awe2ntCnujvdkBztzdGs ylh32+1qa2kIrlfqT/jcv8QaAH+zHSt/ku/F6i7R7h3B8gN34xK7afR70VNt GCrhElHkO08xC9RQVpRxom/ubhlasX66Kyppn+qe6cxXxgt1tY275OP+lH+c 4+wHoN/3nXvxc8h+22z+z3Ll8YuYeag7XbIaPHtULBZEqMj62akJ9YYp14N1 tQ8m5PJv+fz7A3XATTjHXXPvfWqE9ctTflmt+eT791rSBnT1yQA2/wAObe7r RRq8+nF4dSk4JAZrDngkD22TUk+fWiATUgV65kk3vz/jfn/b+/HA6dCLQddr pH4vxc35N/8Abe22agr1cAKOudh+VH+2HvwNQCerZHHrkoAYcC9/dXrpx14c R1Rv/Pu/7J66F/8AE1Zb/wB4TJ+xDyh/ude/80h/x4ddXP7qD/p7Hup/4rcX /abH1qvVf/ASq/6h5v8ArW3uQhxHXdmD+3h/04/w9fRc6JYf6BekLHkdO9X/ APvD4Mf8T7gi8/3MvP8Amq//AB49fJl7nivuX7kV/wCmg3H/ALTJuhNJA+p9 puo9JFc9U3/NL+UPS/MTuvcPd9T8jdybTzOXw+AwmP2vVbBxu5dv7cw228al FTUGNqIdx4XIfbT1JnrJmfnz1Mh+lvYs2nmn912iWYsVZASS2ogkk+eCPQfY OugX3dfv8z/d99uNp9tofaOzv9vguJ5nuVvpLeeeW4kLs8im3mj1KuiJQPwR r516Jl1L/LM+F/xP7Fy+7/mr8p+g+zdpY7DNFtfrzJ5o7Tf+PtVKajKbt25S 7jyOYzcFFQxlaeih1I00heVWCKCbXPMO67nAsW07dNHITlgNWPQGgA+35dZD 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 i9gVY8f7Y+/FdSn162DpNRx6c8zS+RErIRcqBqsbEofobe6wtQlT0/8ADRgS QemEc24IuCD+ObX/ANv7U9WoM464EG9r39+6TspBAJr11yP8PfuPVKEddgm4 5/P9ffutjiM9ZCbm4Jv/AF+o91zU+nTpqWJUZp1yuQOSePrb/D+nuuitT17w +2pOevAkker0n/E390Ip9vTXWcEgcE/7f/efeuvdN2d3Fgtq4TI7j3Pmcbt/ AYemesymZy9XDRY+gpox6paipnZUW54VRd3YhVBYge/GgyTjo52TY945n3Ow 2Dlzabi+326cJDBAjSSyOfJVUEn1JNFUVZiACeqSvlP/ADH85vAZLYXQFRkN sbUk8tHlOxJUkot1bhhN45ottwvabbOImW4+4a1fMp48ANineQnC8OuwH3bP uCbPyp+7+dffCGDceZl0yQ7WCJLO1bipumHbdzL/AL6FbZCM+McirXFsz5nF SOzSSSZrGySSSM0kkssmSp3kllkcl5JJHJLMxJYm59pZv7Gb/SN/gPXSe6VV sbpEUKiwOAAAAAEIAAGAAMADAGB19F6i/wCAVJ/1C0//AFqT3GI4D7Ovm0l/ tJP9Mf8AD1pFf8J0Pkq3WXz0/mMdE7hyJh2h3j8yO5jgI55dNNQdmYDdm7an HGPVcRvubBRT0jBbGWeClU3sPaz6QvDc3a8UKA/YQc/kf8PU8cte2z81fd55 z55sINW6cvb+hkoMtZ3NtEsv2+FKsUmfhRpT69bv/tJ1AnXz1/jp/wBxEXzb /wDGj+y//fgZP2d2n/JM3b/mkv8AhPWa33Xv+nO/ew/8V9P+rN919CZ0EiOj fpdWRvxwwIPP+sfZJ1hT1rqZb/hLN/J7yNblszVdP9qPX5KtyWXqpE747IiV q7IVM9dUuiJlgsatUzMQALKOBx7uZGp5dUEagipNOtUToCo6dh2VlNq9F1eY qthbC3tvDaMAzqZH+I0uSpMzU1tdSyVGThgqaxI2rVKy2KkG1zb2O9oe3azC 2+vSrEHVSteJ4YpnHXen7u+6e2N97Zbbt/tJeXE3Ke3zSQEzLKJFuGpcTqTM qsw1TVVgNNCADjreQ/k19pjsP4TbT29U1CzZXqTc25+uqqMuGmTHQVi7j288 i2BWP+C7gihQm9xAeePYV3mHwdxnA4NRh+fH+deuZn30+VDy3757xuMcZFpv FrBeqaY1svgzAfPxYWY/6bokv/CqDuM9Xfyge29rwVKw13fHYvVHTcUViZam grNzLvzPRRWI0h8FsOoVz9NLW+rD2XRjOeFOsSJW0oT6f5M9WefytN3ZbfH8 uL4R7hz1Q1VnX+NPU2HzdQ9vJLmNr7Sx218m0tvrL97h3DE8lrk8+6kOCwkX S9eFa/z+zoUc28r33Jm/3nLm5EG9gSFmpX/RoI5145wsgHWuF/wsM70qz018 OPhrtyt1Zvu7uTJdlZ/GQt/lD4Tr3HwbT2uJ0R/Iaat3X2EZUBQq0mPJB1IP bkSk10irHA6Jtt2u633dtq2OxUm8vbmKBAPN5nWNf5t1VBtvA0m1du4DbFAq pQ7cwmKwVKqgKogxNDBQoQFAUaxBqNvyfckQRCGGKEcFUD9g6+jnZNmteXdl 2bl+xQLZ2FpDboB/DDGsY4eoWv59K3C4LNboyEeG23hMvuXK1DCOLFYHF1ua r5mchQq0WOgqahtRNv029uEhck0HT257rtmxWj7lvW529lYIKmWeVIYxTzLy Mq/z6vG+C20P5lvWpxWLG0KZOmy8fl2h31uJsF/DaJ29cmzhTx5re23Jghus Bo3oifrBe5BdcNatUg/qfLz+3y65c/en5j+5RzqL++/rG59yKGl3sVv4/iOO Au9RhsrgVwX8YTAcJaYN6keoxxmRFSQohkRXMipIVBdEkKRmRVe4DaVuObD6 e0PXK9mAZgjVSpoSKEjyJFTQkcRU04VPHrnx/T/e/fuq6z11/W39OPfuvVxW meu/futA0Neum5kH+A/3tfe0pTrz/FXoIO/e0qbpTpLtjt2rKAdd7B3JualR yAs+WocfMuDpTc8mrzctPFb86/aq1gNzcwW4/G4H5Vz/AC6kL2j5Dn90fdL2 +9urcHVvO721sxHFYnkBnf8A2kAkb8utA7IZKvy1dkMzmKqStyuWra3LZaum YvNWZLI1EtdkKuZ2JZpKirmd2J+pPuVAAoCqKKBQdfXdZ2Vpt9rZ7Zt1usW3 28SQxIooEjjUJGgA4BUUAfZ1uo/yzeoo+nfhT0zi5KZafNb4w83au5G0aJpc nv6VctQJObamai22KCnF/oIrcfT3HG9XBuNxuGr2qdI/2uP8NevmD+/N7iv7 k/eg9zb9Ji+17VcjarbNVEW3jwpCvl33PjyGnEt0fE/7b2WqKmnWJBr5ddhS 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 sRSVk1PTtKwUO6hSxAvf2IeUZIor68MsiqPCHEgfiHr11B/ut992PYvdH3Ou N+3uzsbeTl6NVa5nigVm+tjJVWldAzUFaAk0zTrWHqulu52pqgDpztokwTAD /RpvXkmNgB/xY/cgC8swQfq4v96X/P125h9xvboTRE+4OxU1D/loWnr/AM1u voJdHwz0vR/S1HVwT0tXS9SdaU9VS1MMkFTTVMGysLFPT1EEqpNBPBKpV0cB lYEEAj3B92Qbu7I4eK//AB49fLD7lzRTe43uJcQSq8D79uDKykMrK15MVZWF QykEEEEgg1HQmk25H1BB/wBsfafqP3GoEevWoP8AzWP5fPcXXnfPYffnXOyt w7+6c7XztbvnIV+08VWZ7Idf7qzLip3Nh9zYvGxVORpsXV5ZpauirxG1M0c5 idkkjs0pct75aT2cFjPMsd3EoUBjQMBwIJxWmCOPn13w+4396/2+5s9r+U/a znDmS02r3C2K2SyjS6lWCO+toRpt5beWQrG0qRBYpodQkDJrVWRqit74/wDf nyS+OG68nlfj9ureuy9y7gpYcRm8bhtvjOR56Cmmklo6XKbXyuHy1DkJ6Gol doGamM0LO2hhqYE/vrKwv4lW9jR41yCTSnrQgj8806zA91vaz2d939isrH3W 2Tbdx2a1kMsMks/gmFmADtFcxSxOiuoAcCTQ4C6gdIIOxuz4jfzHflv192R8 pO/I+xMlD11sqozm08P2LR1tJvDedLDV0ctfg+s+tKOlopMJjafGNNWySrRU qVLU6pEk8jakKItz2HbJ4NusvDBd6EqRRfm7eZrjiafLrG/Yffv7oPsLzXyf 7Je1j7TDJu+5LDdTWDo1paMVcJNuO4uziaQyaIVTxpTGHLO0SrRq6o+n+6Ke SKqTpvtp2p5YqlEHWu9LuYJFmVBfB2u5S3s8N3Zmq/Vxf70v+frLh/cH26lV 4W9w9hAdStf3hZ41Aiv9t5V6+hLsPc1LvfYmyt40MNVS0m69o7b3DBS19JU0 FdRrlsPR1zUdbQ1sUFXR1lG8xililRHSRCCAR7g+aEwzzREglWIxngevk+5p 2aflzmfmTl65kR57G/uIGZGV0cxSumtHQlHRwAyspKlSCDTrU2/nR9bdjbm+ c+by22OvN+7mxL9S9VUyZXbuzdyZzGtU02OyYqKda/F42rpWnpy4Dpr1KTYg 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 /Ln5LZT5I9kS5OmepouvNrtVYvYGDlLR2omktVbkyNPfSM1uAxq73uYKcRwj 9LFkEjB3LDh5dfRH91r7vW2/d/8Ab+LbrhI5efNyCTbncLQ/qAdlrE3H6e2B Kr5SSGSU/EoBWFllQaVkkUf0V2A/2wIHutesm1kkUUVyB8ieuLO72LuzkfQs xa3+tcn37rTMz5Zift67WWRBZJHUfWyuyi/9bAj37rayOoorkD5HrzSO9tbu 9vpqYtb/AFrk29+60zu9NTE/aeuxNMoAWWQAfQB2AH+sAbD36p9erCWQAASM B9p6788//HaX/qY//Fffqn16940v+/W/aeuDO7m7szm1rsxY2/pck8e9dVZm Y1ZiT8+ugSpBBII5BBsQf6gjke/daBIIIOeuZmmIIMshBFiC7EEH8EE8j3up 9ermWUggyMR9p64q7obozIbWurFTb+lwRx711VWZTVWIPy67aWRhZ5HZfrZn Zhx+bEn3vrZkkcUZyR8z1GNRAv6pol/4NIq/72R711sRSnhGx/I9HZ+EfzPy 3xT38RkKmbNdQ7vqqaHf+1oJ0mlpGXTBBvHbsDSBI8/iIj+5GNIrqUGFjqET IxPD4qGnxgY6xi+8/wDdq27395SBs4EtvcTbo2NhdMpAcfE1ncMBUwSn4WNT BKRIvaZFba42xufbu9du4Xd20c1j9xbY3HjabL4LOYudKmgyeOrIxLT1MEqH 8g2dGs8bgowDKQCggqSrDIPXAffNi3nlnedz5d5i2yay3yynaGeCVSskUiGj KwP7QRUMpDKSpBL+pI5t/hb8/wCw9+J8uioih49Zveutde9+6910QTa30vyP fhx6stPPrz/5xrG3A/px9Lf6/vQwACOttxoB1yR5YzqjleNrW1RsUNjYkXUg 2uPdqj06aZEcUdQR8xXrm1VVgf8AAqpI+hvPL/0d9PewQfLpv6eD/fKfsH+b qJ7t071737rfXvfuvde9668BU9clHF/9t70T04nn69ZlAP8Avr+2XYg6R1fi adZgoA/x/r/xT21inHPTyoAKEV6zAKAGP/E+9dXAAFB13YNzzz/re91Pr1rT XzPXYUD36p9evAU8z09Y+aWE6oZZImKqrGN2QkXBtdSCRx7QS0P8+jKBEkUB 1DD5ivSiSurAf+BdTzax88v/AEd7Y0j06XLawUWsC/sH+brGSSbkkkkkkm5J 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 f9b37rYPr1i1D8n/AF/futitRnHU7G1ppZgh/wAxLZWH9pXJsG/pxf21Impf mOrA6WqOsmZo/C/3UX+bf/OheQjnnVxxZveonqNJ4jp0NpJA6ZldWF7/ANB/ Xk/j28QRx627AgUPXK3v1cU63qUkNq68eAT+bH/H/eL+/DJA8utMVOQc9eBu Af8AkfvxFCR1YMumhOevX5tfn+l/fqGlaY69qQefXZaw+th9D/yL3rppyDSl OvBiPoeP949+6p0VH5W9L9tfIDbWM672Xvra+w9j1Mq1+9Z8nDmq3Mbjnppl fG4ZKfHRJBFgqV0FRKrTaqicIGASP1NSxs4opAHWUn3YfeH2t9jOYdw595v5 N3Le+c408Pb1haCOC0V1ImnLSsWNw4PhIQlIoy5BLP2kxxH8p6D0ncPeMx+m uPBbHjW39dFRktwPf/YxD2z9Kf4+svd0/vQZe4bF7MqPQ3O4k/tWK1H8n6C3 5U/Czp7429PS7xh3zvvcu8srncTtza1FkTt/HYuesqGkrcpV1dFR46Srmp6H D0czaUnS0rR3JHBbkiVFrU6q9Sb92b73/ur94T3Wj5Tl5M2Xb+U7Wxmu7ySL 6mWZUUCOFEkeUIrSTyIKmNqor0AIqKw/bHXRzr3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de6lUFfWYqvocrjpvt8ji62kyWPnKrIIK6gqI6qk lMbhkkWOoiUlWBVgLEWPv1AcHh0nu7S23C0u7C9j12c8TxyLUjUkilHFRkVU kVGRxGetwToTcXWXfvTXX3bFLsTYcjbt2/TTZikbaO2p/wCG7lotWO3Li314 x9P2WapZlUHnxlT+fZZIDHVQSM9fOF7t7Pz17Q+5nOPt9cc17sF268ZYX+ru R4ts9JLaUUkzrhZCT/FqHl0Kz9W9Wy8y9YdbyX+vk2HtRj/vOJ9s6m/iP7eg LHz/AM+xYj563oD5X11/1t6VuDwmD25josTt3DYnAYqB5pYMVhMdSYrGwSVM rT1EkFBQQwUsLTzOXcqg1OSTyb+23JPHol3Hdd03m8k3HeNzuLvcHChpZ5Hl kYKAqhnkLMdKgBak0AAGB08gkfT/AIj3oAU+fSIcc8OvB2JsOeOPfqCvVwoA 7uuQMlxx79jrRCU49ZB9R/rj/e/eutLhh1xBJLn6XNhx/T/D/Y+/cOtv8XXr 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 Xcz7h/P39d/u7ct2E8+vc9gnl22SpqfDjIltSfl9PKiD/mmfTo2f8r348apq /wCR26aL0wNXbc6vhqY/rNZqXc27YlcciJS2PpHH9o1DA8Kfdol/EeHWM394 z78BI7H2D5bve9xHdbuynguHtLIkfxYuZlPl4APEjpl/mYfF0YLJt8jdjY1U wudqqei7Sx1FCFjxmfqGWnx28VijFo6TPvpgrmtZazRIeZ2I1IhrqHDo6/u9 /vGnetuX2G5x3Atu9nG0m0SyNma2UFpbGp4vbCsluOJg1xjEKjpMfymNkjMd 2b733PFqp9j7BOOpZWUFY8rvLJxUqaT/AGZBisTVD/WY+6xCrfLoV/3lvNp2 v2k5O5OhlpPvG9eK48zDYxFzX5eNND+YHV7W99ibP7N2vlNk7+29jt07WzMR jrsTlIfLEXUHxVdJMpWox+RpWbVDUwPHNE3KsPdiPXrjvyjznzT7f8xbdzby Xvk+3cw2rVjmiahp5o6mqyROMPFIGRxhlPVZvUnwY3T8ZfmB172HsGrq939L 5Zd4YSuqKp4zufYgzO2MqtDSbiRBGmVw8mRihhiyMKg6mVZ40Yh2bI/Z10K9 wvvfcve/v3ZudOSucrWPbPdS2NlPGqg/S7h4F3D4j2xNTDMIzI72zngGMLuA VW4vHVJp6qJ7jQfQ/N+DYf7Hnn2huIvEjaoz5dc5rOTw5gfLpwroTBUmx/bk GtLf4m5A/wBY+0kDVQDiQT0ouYmSYsvwkV64I7N9Rxfngf7D28RihHTatqFe pCfn/Yf8T7THier9SEJvb8f8a90PA9ODrKCR/h7r1vrmpJvc/Qf776cn37q/ AAjieshI08fUsP8Aknn+v+PuuS1fIdXFSM9dD6+/OaKetnrmAT9PafqvXMJ/ U2/w/wB8fe+vdc0T/bn8fj3rqy1rjrnpI/Hv3TlZPTrIo4/1/wDfD37q6rir ceufv3Dj05Q+nXgOfbbOOA62F8z1lVSP6f655v8A7yPp7bJz1fzr1z96qfXr 3Xvfuvde9+691xP6gLfg8/77/W9+61TNesyXt/sRf/W9+IqKdPxefTjHcIh/ Nv8AivtMeOel0Zx1LA/INvdSOrajWlOvXJA/w/x/r791vA49der+v+8/8b96 z16q9d8/6/8Asf8AjfvYGeHVXIIx1g926b6xs3AsbH82P0/wPv3XusRJJP8A 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 /wAD7100RTj1wZbW/wBY3/w+v+8e/dbXiOsV7fm3vfT3WE2/3k/7b/W/x976 91lp6iamcSROVb82+jC/0I/1veioftI69WnSoiqaTLReGoVUkCadJNr/AO1R f1Jv9PaZkaE6lyOvY9OmOuw1RRlnh1SwixAA1Oqn/VAX9uxzLJgih62CaZ4d Navc2sVN7f0v/wAT7dpTz6tpBqRx6yi5v9b3H559+6r5fn1kF7gg2H+2/wB5 +o96611JjN2/1r/T6fQ/T37r3UkfW3PP9P6fn3vr3UlSb8n2ywzUDHVhwPr1 KS5HP+w91Pl1Q1xT16nQsLAD6gc/T+tufbTioOOttwPTpCSSL3Itb8Xvb222 CD59eyKevTlFc/2hb/U35/4r7r1rp0j+v+xH+8+6uO3p5cgdOUP0PJ+jfn2n k+E9K4+C/b04xAlbXt/vjz/vHtO2CppinSnpZIxrsUoHqlpuDbliIxb/AGIZ D7ICBbXTV+Fuj7/cmyCj406gJdeBa/0/1hb/AGPNvb9DknpBw889SYx9T/sP +K39tt8JPn1YHgB1IT8/7D/X/wALe2Ca0rx6v1LUcAH3o0pnpSg7RUdSALD6 391OBjq4x1IT9I9sn4j9vTozTrKqm4vx+feq049OKh1CvUlPp9fr7YJrjpQB QdZQCTYD8fX3XpwcB1nAA/pf6fge9fn1ahPl12Fvze34HvR6dUUHXPSPyB/t re9dW61kf+FHPzt7V+Nuzem/j51vKmKw/fmJ3fluw8xRV9Zjc/Vbc23WUFBD tmiraUrJSYvLT1bNWFCskyKI76SwO+AB6dRKqSOPWoHtjuFpjEIdrY2lMh4Y Vc5Cm9tS6luSx5Jv+fdgeqtHpBNejA7e3vW5MxxCkgpw3DGOV3sbfUX/AKn3 7qg4/PpcfxKqWwBcfS/JPA+mn6WuPe+vVPqesgylVY+sgnn9RHA+hP5B9+69 qPr1xGTrDfxym1yTdibH88k8+/deqfXrpcrVkm7yagfqL6WP9LfX37r2pvXr tsrW/wBmUgG31LE88/64sT7917UfXrs5St4VZiTb1E6hZl5PP0uffuvaj69e /itbYhpfxxdjyR9B7917UfXro5StC6hLc/pChj9P8Pfuvam9eu/4nWj1eUqP oPUTa/1HJ9+69qPr12cpXKV/cc3AIIJsVI/3kge/de1H16xjJ1xPqlABL+m7 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 g63+/wCf/lHT9p6wP/I0+ObEs/cvfbnSB6shss8D6WJ2vce9HYLYHFw/7B1o 8wTqCRbp+09YT/I6+OS3Udx99c2+uQ2STx+P+PV492OwW9K+O9fsHTf9ZLj/ AJRkr9p6wv8AyO/jmH1f6Y++72+n8R2Vb/3lefp7oeX7egP1D/sHXv6y3HD6 ZKfaeuK/yPPjmDqPcPfRNzYnI7K4v9bf79b3o7Bb+Vw/7B17+sk/nbJ+09ZF /ke/HZXRk7j77UpyCMjswc/g3G1x/vHu39Xran+5L1+wdPDmCcgf4utPtPWU /wAkP48gH/jM/f1iTcfxTZv5/wDJY/w91/q/b/7/AH/l1ocwTH/iMn7T10P5 IPx6YC/c/f8AYAAf7ldnfg/4bY/Hvf8AV62IJ8d/5dbG/wAo/wCI6ftPXX/D G/x0P/NYu+rk8n7/AGUSf9cnaxPP9fdv6u21K/Uyfy6bbmO4HC2U/mes6fyO fjutwncvfqXPJjyOzEN73t6drC4v78Ngt+CzOfyHWv6xT/8AKKn7T1JX+Rt8 eTx/po+QIuSxIyezeef/AA2Px7p/V+3z/jD/ALB06N+lJH6CftPUuH+Rd8fK hhHH3R8hJZGNljTI7Odzfj0hNrMSCfen2G1RdTXT6R5468m+3Tmn0Q/ael9h v+E9fRuRtJX92/IHGUxAIaXJbMap0/0SEbZFgR+SfZNdR7fB2wzNI/5UH8uj e2mvpsyW6Iv516Vx/wCE63xgcaH7++SJA+tq/Yqhvx9Dtcn/AFvZaW6M4xxJ rX5dQpf+E33xLqg33HefyNl1WZtWQ2PYEfQgDbAt71X5dbCVHwn9vTbL/wAJ mvhhXEmo7g+REgJuScnstbk/kFdtgg/63vTOAM9XVADXIb9vVyvw9+H3VHwi 6K2/8fum/wCPSbPwWTzeckyG5a9cjm8vnNw1Yq8rlK+eKGCnjkqJEVRHDGka hBYXJPtsyZ4dWopyQa9GjSnFxcH/AFzwP9jc8+6mQ+Q6c0+vUjwxj8D8cj+o 91LMfPrVCQRSnXvEhPC/77/evftTDHVgopnrMI/9b/eSf9hf3WnXtI678Q/w /wBt/wAb9+63T0NOveMf1H+2/wCN+/dbp17xj+v+8f8AG/fuvUHp17x/6x/1 x/yP37rRWtOtXf8AmufzRe5Nvdzbu+M3x03bW9a7e63miwXYm/duGOn3lufe ElJBV5XCYfNskk+3NvbdWqWmd6Tx1dVVrKTKsaohknlflq0e0i3HcIhJJJlV PwqtcEjzJ45wBTHXZb7kf3Lvb7dOQNj94PdjYo943TdlM1jZT1Npb2oYrHNL CCBPPPpMiiXVFHEUAQuSRT9XdYfMHce/+oq/JR9sZztft/Ytf2X07V1+9MrX 9hbi2RRxZ+sfNbfranOPnMbFkKbC101LTmSCesj9UUbiZNYsFztMcF0qmIW0 ThJKKAobGDihpUV8h58Os9rXnD2E2nlbny1sv3Hbcj7DuSbfuqJaRpYwXjGB BFOiwiGQo0sKSSaXSJsO6+G2k5XwL/mq9/8ATXa+z9ndub+3V3H0puHOY7be 58LvCrq91bq2RT5OrjoE3PtbNVf3G4IZMFNKJanHzyy09RTI6KkcoR1Kd85Z sru1mltIVhvFUlSvarEeTDhnyIyD8usefvO/ci9q/cDkjfuYOReVrHl/3FtL aS4t5bVEtra8MaFzb3MK6YCJgNMc6KrpIVYs6FlO5nNJR0NLU1lTNFDQ0dNP X1VZYtHFQ0sL1NRVfhmSOmiZ/wAGw9xGNb0wSa0/2Ovn6hgmuJIbaGItcyOq KvmXYhVX7SxA+3rSQ+ZP8zf5H/KfsbO4jYu9t39cdOHOT4TYHXOwcpX7fr87 jjXGgxOS3dkcLNTZfcW49wEpIadpftadpVhiiupd5j2jlzb9st0aaFZLrTVm bIBpUhQcAD14niT19F33f/ube0fspyltt/zNy5Ybvz+LYTXt/expOkEmjXLH axzBooIIMr4gXxJApkd8hVh92fCr+YV8SOtsR37v3Nbt21t6Ssw8GVyG0e5s 5ktz7HyOadUxEW8KTG5SGbHPUVjrTmWGWqhhqmWOR1Zlvuz3jYd1uGsYEVpK GgaMaWA46ajOPsx0/wC3f3hvup++3N9/7Xcs7XYXm6iOUxpdbRBHb3kcIJlN q0kZEgVQXCusbNGC6qQDSzz+UP8AzF+1e3+w3+L3yBz9V2FkMlt3L53q/sPM iOTdSVG2aUV2Y2hufIRxxtnoKnDpLU0VZOGq43p3jleRXQoHuaNhtrSEblYJ 4YDAOo+HPBgPLOCOGcdYS/f8+6DyHyJyivvT7W7PHtdnDdxQ7jYRVFtpuG0R XVshJ8BllKxzRIREwdXRUKsGuj+S3bG0fjh0h2P3fumKWbEbCwEmRixEEoiq NwZurqIcbt3b1JK+oRT5vN1kFPrsfEjs9iFI9hja1uLy8t7OM9znj6DiT+Qq euZ/tP7T7t7ze5PKPtry/KItw3W6EZlI1LBCqmS4uGHmIYUd6VGogLUautNX fXyg+Z3zf7Wxu1aTeO+Mrm96Zl6HZnUXXOZyG2Np40OstQlBRY6grsfTzQY6 hhaSpyGSmkk8cbyzSqt7SxFZ7ftduXKKFUZdsn9vz8gOvoi5V9hfux/dZ9v7 7mC55Z2qDa9rthJe7vuUEd1dyUopkeSSORg0jkLHb2yKupljjjJpVm3xjfmx 8F+xcFFujcvZ3U28aqjGd29XUW+Zs7gs9QRTiCpeCalyuY2znqeCf9qqpp1k KFgJIwGUm8bbfuUL6FSSLgcf6iOl/Kd591f72PJm6zcv7BsHMPLkUvgXCPYL b3FvIV1KCGhhurdmXuiljK6qEo5KsBs+/wAuX5oVPzC6WqsxueChx/a3XWTp Nsdj0mMiWlx2VlrKV6vA7vxdEGb7Gj3FSwSiWnBKQVlPMqHxlAANvG1CxuAq VMDiq/5Qfs9fTrhh9837tafdq90bfbdhuJZvb7eoHuttaU6pYgjhJ7OV6d72 7shWQ5khkjZu/UerD46u/wBbgj8Hkfn2H5YAuQ2OsT1moQOpcMxkdVB+rKOL fT/D2nmTQhY8KdPpLrxTri01nYaub/154J5/PvYWsQ7cdb19xFcdeWW5+tj/ AK/++497Kmgp6dXDZoOuYZhexuD/AIn/AIr7p9vHp8MD9vWeOY/Tnn/Hkf4g n6290dajHHq+TivUgSAcauePz/vY9taW6uVAodfWRJjf9R4H0596oc48utg5 +Kop0F/fc7HoHvzm9+jO4hbn/n2+5ufr+PbbqCj/AGH/AAdOxOGkQD+If4ev /9Dcv+P8N/j30A34/wBBPTfHH/PttsC3PPtRExCL6dJZY6M5rmvQmumn/b8c fj2+G1VHSYgU+fTfMATe3F/6W/Hu4wB02VBwR03uNJ/pfjj6f8j92HSaRMsB w6gToAePyD9Pza3t1WJNa9I3Gc9NcoF+fz9ODwSP8PamPj0gcdB7kd/df46s qKDIb/2Hj66klenq6Cv3ptmirqOeM2eCro6rKRVNLOn9pHVWH5Hs1htLt4w6 WkpU8CEYgj5ECh6TGKQmojYj7D06Y/JYzM0kVfhsnjczjqgyCmyOHr6TKY+c xu0Ugp66hmqKWYxTIyNoc6XBB5BHuro8TFZEZXHEEEH8wc9MSKQW1ChHSUqu weu6eeamquxOv6WqpZpIKmmqd77Wp6mnnhcpNBU082WSaCaKRSro4DKwIIB9 q0tb0gEWcxU/0Gp9oxTqvhSEYiYj7D0+UtXj8pRQZDG11FksfVxrNSV+Nq6a vx9XCSVE1JW0ck1NUwkqQGR2UkHn2oOqNiHUq4OQRQj7QcjpMQQSCKHrooee R+bDnke3tanFOqNobBOesDR/n6H/ABP++/HuuAaq3TRUjpPZnJYjC0jZDN5f E4OhWSOFq/NZOixNAJZiVhhesyM9NSiaYghFLamI4B9q4BLKwWKNmf0UEn9g zTpl4y+FUk/IVPTBQZrb+4Yqmfb+4MFn4aaRYqmXA5rGZqKmlZdaRVMuMqqq OnldPUquVZl5At7VtHLGQJoWQn+IEV+yo6QSxuhXWhH2inUSsg4b/iv1tyOP 6+7q2BQdMstaU49J4tLSzxVMJ0ywOJFF9KsEPKEflXHpN/wfb4o6kMM9Jj2F ZF4jp6qFjlWOsgt9vWK0ka/8c5hzPAw/Hjbgf4W9pgWHaSar0/UsNansPAf4 R03y6I0aR3VERGeR5HVEjRFLO7sxCpGigkk8AC593UsTQjPW6k0p0iz2H11/ z8Xr8f0P9+Nq/wC8f7lre1X0l3/yiS/7w3+bp/wZuJhf/eT/AJusZ7B67/HY nX5v/TfG1vz9P+Xtzf3v6S7p/uJL/vDf5utCGf8A3y/+8n/N0qjZlBVuGUFW DXDKRcFTcggg8H2nANfz6p1hKk/Q/ixuT7f611gYXHF/9b+v0+vv3XusDKfo eP8AbfS/+x9+691hPBP+HH49+616564MoNje34597FPMdaJIPDrEwCI0jsqR oUDyOypGpkdYogzsQoMsjhVH1ZiAOT7tpB4HNOHXq1+3r3++PuoBPVaMcN1x 5FySCP8Aebe/cTQDrakAaTx65xySQt5InaN+CGQ2Ygc2P9f9b34jyI6uDxoe lBTZ59JWsjVgfrIgBYAcXZeNXH1t7ZeFf9DNOvVOK9THocbkhqhdBITqvF6H Bt9WU/T3QO8QIJx1unp01T4SupyWh0VEXN+bSAf6x4PtxZY3ArhuvUYcDx6h kzQf56J4z9LFeP8AXv8AT6e74/C3WvtHUqKQMB6luebE8/763vQBAPr14mvD qchLAcgn/W/PH+359smvnx61Wg9ep0f0+nNvr/xof4+6OxFKHrxJrTp0p2bS o44v+PyD9fbdQD28T1vHl05wvzclbj/fX/r70VpXFB1vgMHHTtCzOVVAXYg/ pUkWHIP+sT7o1NJqcdORDUaDp+p6Z9KmVljH9oHm/P0vwPaGVwGIXPRlHAQA 1aDpxSWNf24ha1uRx/vd/r7SnLAMcHp8MoooHUyCRkZJfo0bhhb/AHu3+t7T XCVWhHHp6ByHDcCD0pskokjp6xfpIoV7fX6Arf8AHsptiVeSI+XRxep4kUc3 r03x/U3+tr/77/b+1b8KevSDiF6mw3ubf4f8T7SsSDw6cjrq6lD8f6/vVdS1 6UefUgH2x04DXqTGOBcfjj20/wAXShBU1I8upSXt+LD/AG/unT3WdLXFx/vr 8e9dXApnz6zj6/S/+xt7rw+3q4WtOsg/p/vv96966dAA4DrkouQOf8ffunlW g1HrIU/obf7En/inv3Wg48x14Kf6n/YH37q3ij06xkWPPv3V8OvXEgEc+/dM aD3fLqOwvcfQ/T/jXvYNOq9Yiv1HH0/33+sfe+OeqPw6jSAgc/1t/h/X3vpr rADcX/3v34ihp17rv37r3XRNufeuvdcGf6gfUH8+7igIJ61x+zrC5Yrb68/0 /wCKe3x011hY354/x49uBlUUHHpqQ0x1Hd1H/Fbe9klwAOPTXHrEzgggX5t7 cQaaV6aJyadYWcAG319vg14dN6gK9RWf63+g+g/Pva5LdMk8acOocji9z9Of 9t7eUeVemic54+XUKSZTwOP944/3s+3fCPmeqNiprnpulmCk3PPNhbj/AF/a uKPhjptpAB01TTi5FzqJvc/8R7XKoAFOHSJmNa1z0zTVOrUOTyQF+n+sTb26 qVoadJ2ccAc9QmjdwdTeNbE2/r/xPP8AtvbgGeHDpihavWDwQx3IFzb6sbj/ AGx4Bv7t04FArUeXUSY2/Sbf8V/r/rD37pqhHl1FZuBci35/H5/3i/u4pSpG elI4AV6iMTduePx/r+/CuT59UFat1Ed2va/497AHFuPTTFq5PUNma55P1Put T1XriST70TXy691wJsf1W/wtf3YCo+Dr1D1lDHgXH+H093AFK6c9KRUKPs65 KWJIP4H4t7qCfSg6oXIwVoes6LwDc3NvyP8AinvxNaca/Z1WvA1J6mRxkmwI uf68X90JJIPT4Xz6lxU8jMAAxJ4CoNRJ/CgC5JN/oBc+/F6VJNB1cLqNF49C ftvrrI5PRPXlqCmNisRX/Kph9TpU3ES/4tz/AIeyO93uG3LJGNb/AMh0b2my zXADOSq/z6GjE7bxOFTRQ0yJIF5ncK8z/g65SCef6D2GLi9urnE0lV9PLoUW 9hBb0Kr3U4+f7elGIy4UW4X/AHs/7yCLe0IKDUdXHpYQpAAAp1nSAAc3Yn62 H+8e9ayTReHVgPJR1IWFfpYX/wBYf8T/AIe6aj6nq4TOTjrJ47WuALfSwFv+ J97A1VoM9WoBw65c/wBfe/D+fWtK+nXtJ/offgorxHVuuwpP092AC8T17rsK bg2/I/3v3ohTU1691k9tde697917rKqggX/3v/H37r3XHQf8P95/4p7917rs IwIPHBv+f+Ke/deORTrR5/m2/HLfPRvzE7T3dncTWt193funI9j7A3cIJWw+ S/vAIqrPbbkr9P28O4Nu5h5o5aZmWRqdoplBjcH3M3Ku4Q3u020SOPHhUIy+ YpwNPQjgftHX0a/cb92eW/cf2E5L2Lbb6Mc08uWUdhe2uoeLH4NVhuAnxGCe IKyyAFRIHjJDLToI+p/nX2jsTu/4wdzb1oMd2ZL8Vtor13sbC1Mv926nIbDg pM/RY7DZXO0VLXPPWYWDcMiU1U9O7+KGKOQOFLFVdbLbTWe42kLGP6l9bHjR sZAxxpkV+zodc7fds5N5k9uveX2/5eupdnTnW/N9eTKPqFS8LQO8scLsgCyt ApkjDgandkK1A62ZvhF/Mk+EPyB3DjdgbQ6+wPx07f3BUTHH7OzW09n4mk3b l6lpKmpptr7625QUlBmstVys7rTVa0VbUMT445G49x3u/L272KNNNO1xar+I Mx0j5qTUD7KgfLrj19437o/3jPa7arrmffuZ7nmvkS1Ua7qG5upWtoloqtcW c7s8MSigMkZlijFNTqOrbamipshSVePrYjNRZCkqsfW097eejrYJKWrguOVM sErL/hf2GdQQjTxBr+fWDME81tNBd276biJ1dD6MhDKfyYA9aA3yy6Ay3ww+ TG4evMXvXam65NlbnpN07Lzu28xjszVY6jpcuuX21Q7xxNPNLNtzd+HNPElb j6oKxZPIuqKRT7m/bL5N329J2iZQ60YEEVxQ6T5qfIj7OPX1A+x3uhY/eD9n tr5pveXb2yXcLNra7hnikiWR2i8K4e0lYAT2supjFPGSADoajow6Oh8vP5xH ZXy2+PU/Q1f1NtTYku5anb1R2TuzFbiyGZO4Rt3JUebhpMBg6zHUo2zS5DN0 ENRN5KmtkVI/EjAEt7KNq5Ut9rv/AK1bpnC10KQBSoIya5wacB69Y9ew/wBw XlH2M91Yvc6255vdzSzSdbC2kt0h8Dx43hLzzLI31DJC7ommOFSW1sCQB0YP +RP8XYdy9k7i+VeX3RtmaDragzOzdqbHx2bo6zd0O4dz0X8PyG6d0YWCRqzA YGDByzwY5p1U5CeZ3T0Q3ZDzpuXhwRbYsbVkIZmI7aLkAHzNaE04D7eoo/vM feeXaOT9p9kbDZbxZd3lhu7m8khdLUwWz+IltbTEaZ5jMEefQSIERVbukop6 f58O4avFfDfauDp5GSDdve20KPIKpIE1Lhdu7uz0cT2/UoyFHA1jwSt/x7J+ S0DbtI5GVhan5lR/g6xi/ux9nt737wu+bpKgMtjyzdulfJpri1gJH/Nt3H5/ Pqpn+RrgKLL/ADZrspVwRzS7W6S7BylAZFVvBVZGv2xt15k1A6ZBRZeVARzZ yPyfYm5ykZNoVVNNUyj9gJ/wjrOP+803Oey+7bb2ETkRX3MlhFIB+JY0ubgA +o1xKaeoHVgH8/bauMPS3QO7IqaOPI43tncODWdVAf7LObOlrJ6cH6iM1OCi cgcEqP6eyfku5le5u4HaqeGD+xv9nrEb+6lvZbX3N929pRiLW52C3mZfw64L wKrU9Qs7ivoT0Sn+Rvu6sw3e3c+2leRsbn+p8fmqqBbmMVO2d346lp6ggcB1 h3HKoP4DH+vsT79CsttFq4hsfmOpp/vaNmgm9pPavmUr/jVlzJJAD5+HdWcr MPs1WyH7QOtoaOrjlVWUhlYAh7g3B55P4t7AMsBQlSeuFySVAJ4dOmNJaqj0 tdV1Mw+vFj+efofZfuPZF0qgJ1inDqBUVWmokHPEkikkfT1cXH9Le1VrFqtk J8x1rXVmPnXr0dXcggsSB/h/tufdmjoKEdXViGBavTnDVaxbm4/wH19pHjAP DHSlJCRk16k6wR/rf71/j/j7ZZaZHDpSj1Ar1kU35W1/6f8AEG/HuvTgahHX MOykc3AN/wCvupUNx6sG4V6C3vuov0H30CLX6N7huR9P+Zcbm4t/T208dEcg +R/wdORFfETH4h/h+3r/0d0L4+Qhvjx8f/6norp4f61uudtAW/w9vR/AvTcg qzD59CRNCUJv/X/ehx/rce3BTgeHSdkoC1em2SO9rf7D/A/0P+HHt0OQMjPS Yih4Y6bKiPn6f7H6/wCx9uA+fTMq41V6b5k1KQOSB9eeP8LfT3cHII6ROPUc emuRbEf64/H+P+8+1CSZFOkMy5z18wP+ZPtHL73/AJpHzS2vtyg/iOdy3yN7 QOPokH7tXJjqeozE8MQAYvO9HjpNC/2nsPz7z35HuY7TkDle4nfTEtlFU+lT pH8yOhzt7hNttGY0URr1saf8J8/mDh9j/wAtb5YUe58lGIfhrmd9du0UM0vK 7J3jsmu3vjIIgW1LBNvfa+SiQDjyVICi55hj3h5cluueOXmgTO5rHCf9OjiM /wDGHU/l0GOYrJn3O0KD+3AU/aDT/AR1pybgo91bqocr3HuKB6iLe3YO5KfJ ZmclmyG96+GDem44gxH7jxR7iilkN+POo95Jwtb27x7bCaGKFaD0QVRf+On9 nQzUohEKn4VH7OA/wdfST/lCqF/lffBvgIB0PhzcsqoFGe3CSzMxCoqgXJNg Bz7wp9xDTnvmkf8AL2f+Or1F+9D/AHa35/4Yf8nRae7f5/v8tnpXeGb2OewN +9qZfbmQqsVmcl1HsKXce0KfI0UzU9ZS0W78vldvYbNmlqEaNpaF6imLKdEr Dn2Itp9p+ddyt4rr6OK3ikAIE0ml6HgSgDFa+jUPqB0/Dy3udyiv4Sop/iND +wAkfnnoQPiz/Oo+Afy67FwfUnX3YG7dn9k7rnNHtHbPa2y6nZ8e7cmUaWPD bd3BBXZjbtXnKiNG8NJJVQzVDDTCJHIX2n33235t5fs5NwvLOOSyjFXaJ9eg erKQrBR5kAgedOk95y9uNlG00kamEcSprT5kYNOo/wDOt2p0Fu74H7iwvyX7 T3n011RJ211LVVm+dhdfns7cdPuCly+Rbb+Ki2n9/jfNRZWpZ0mqPKPtwoNj e3u/trcbrBzRA+y2MdxfiCWiO/hrpIGo6qHh5CmetbCbuLclazhWSbQ1AzaR Smc0PRX/AOQrsP4obL6c+R9J8TO9Ox+99u5DtnZlRvPMdkdTf6I67bufi2RN DjcVi8acplRmqOsxZM8lRqTxSDRY3v7EXufd79cbjtB3/bIbWYQPoEcvihl1 5JNBQg4p58et82Pfz3Fob61SNxGdIV9YI1ZJNBToye5v5vPwV2x8jMn8V8/v 3emJ7bw/ZP8Aopy8WQ68zNJs3GbtFZHQytXb1nmjw1JgKSSXXNkJCtPFEGdi FB9lMPIPM0+0JvcdrG1g0PirRxrK0rhOJY+S8ScdFP8AVrdpLIX6QobYpqFG GqnyXjX5dFz3J/Ps/lwYnsKbYy777FzGMpsm2JquzMH1rlK7rhJY5jTyZCmy Bq4Nw5HBRuC33lPjZI3jHkQOliTiD2v5ve1F19LErla+GZAJPsp8Ib5Fvlx6 sOSt9eESiFAaV0FwG/ZSlfkW6uE2buLBbmw2IyWAy1DuDa27MZjdwbYz2LqY 63GZOhy1FFW4fK42siZoqjH5ShnRkZTZldT7AN1BJDK6yoUmjJVlIoQQaEEe oPQYRXhd7eVSrhiKHiGGKH/AemvsddPXnYyMpUjr/fSlWBBDJtbLhlP15Qix 96s6/WWdOHjJ/wAeHT8FfHgqe4Ov+EdfM6+KHx/qflH8heoPj1jdy47ZVf2x uYbYpt15THT5XHYOT+FZHJ/e1eOpamjqKuLTjimhZUN3Bvx7zK33dRsm07hu zQmRYE1aQaFsgUBzTj1Pe53o26xur5oy4iWtBgnIHH8+tgBf+EzG/wBZI2Hz B6zcpNG2ler9yFm0Or6VUbqJJbT/AE9xSfeW2of+Q/N/zkX/AKB6BP8ArgQ0 P+6qT/ex/m62mN+9i9edFdbZHf3bG9cBsTYWxsJQf3h3duOsXH4qkipqenoY dN/JUVNZkKhQlNSwpLUzyuscaO5A9wjaWl3ud6lrYWzy3UjnSqipNTX9g8ya ADJ6jmCCe7uFgtomeZ2NFGT6/wAvMnA6qFyn/Cg7+XZj8+2Hp8l3dl6FJ2hG 5Md1TJHip0RtLVVLRZPP4/PzUpA1AmjVyv8AZB49yGvtVzXJEJGS2VqfCZc/ ZUKVr+fQsXkrfCmsrED6F8/yBH8+rQvj18muiflfsFOyuguw8T2BtZKv+GZN qRKrH5rbmYEQnOF3Tt3KQ0mZ2/lPAwdY6iJVljOuJpE9XsFbps257HdfRbna NFNSorkMPVWFQw+w486dBy/sLvbpvpr6Bkl4jzBHqCMEfZ0EPy1+f/xW+E0W Ch787CnxW5Ny0k2R27sTa2Ert3b5yuMgmemky4wWN0rjcN90jRLVVs1NDJKr LGzsjAL9i5V3vmIyHa7TVChozswVAfSp4n5AEgcen9t2Pcd3LfRQVjXBZjRQ fSp4n5CvRCsJ/wAKDP5eOYyiY+uq+8NtwPMsL5bKdWrWUNKGbSKisiwO4svk 4qdfqxWndwB+knj2KJfarmyNC6LbOfQSUJ+Q1KB/Po4k5G3xRVRCx9A+f5gD +fVpWT+RHTlJ0FkflBRbxpt0dHYvYVd2Y+9NoQTZ+Kv2djYJKiursVQwLHWV dZTrDJG9KVSojnjaJ1WRWUAqPaL990XZXgKbkZRHobtox4AngB8+FM8Og9HY Xf1o25otN2XCaWxRjwqf8v59aWPbf80Dszu/509fdh7+7h3nU/E7rD5Q7X3x s3ZGExVVt3C0nU+0OxaPLYjMZbYmKaCo3Lu87XoUllORapqjUkqhj4UZE2PJ dnt3LV3aWu3xjfZ7Jkd2IY+K8ZBAc/Cuo07aCnGvUtW3LtvZ7PPBDap+85LZ lZianWy0IDHgtT5UFOtxLrj5k9E9t/GrcPy52Tmdx1fSO2sRv/cGVy+Q2rkc ZuCLGdarXS7skh2xUMa+ompkx8vhRTeosNP194/XnLu6bfvEWxXMaDcXZFAD ArWSmnu4eYr6dRXcbTdWu4ptk6qLtioABqKvTT3DHn+XQTfFf+Zl8S/mbv8A y3WXQ+5t65rd2E2jW74yFLuPr/M7UoY9vY/KYfDVM8WQyLNDNVLX52mUQj1s rM30U+1298mb9y7ax3u5wxpA0gQFZAx1EE8B8lOen9z5e3PaYUubyJFhLBQQ wOSCeA+QPSL7G/m5/CXqrvTPfHHeW7uwaTtPbW/Mb1rlsbQdZZ/JYeLdmWqs bR0VNDnYHFHUUTz5eANUKNCgkn9J9qLTkLmS+2yLeLe3iNi8RkBMig6RUk6e NcHHT9tyvu9zZx7hCiG2ZC4JcA0FfL8ujS/KX5TdO/DbruLtTvfKZ3DbOm3Z jdlR1e3NuV26645/LQZGpooTjscVnWmeHFTFpf0qVAP6h7Jtl2TcOYLs2O1o rXHhl6MwUaRQHJ88jHSHbtuut1nNtZqpl0lsmgoKVz+fRD9yfzyv5fe2dibb 7Bg3t2JnafdOdzmEx228L15XpvKmj239gMrn8thsnkMdFi9vCXIpFTTyzh62 VJVhjfxSECaH205rmuprRraFTGoYsZBo7q0UEA1bFSKYFKnI6OI+T97knkh8 JFZVBJLdueABANTjIpjz6s6298huv8h0nhvkPWbni2t1FmNh47sobp7Dp5Nm R4jZuUoYslR5PcVJmhBU4VnpJ0IilHkcyIEDl0uDJtpul3GXaRDrv1lMelO+ rg0IWmDnzGPXoia0uEu3sdGu5DlaL3VIxQU49Ve7h/4UNfy6sHuCXBpke393 UkU70zbn2x1fMcDVeN7NUY5Nw5nBZqupCOVdaRS4+g+nsZQ+03N0kQk026N/ C0nd+ekMAfz6E0fJe8ugYxxKfQvn86Aj+fVknxi+YHxX+Ze0a7evx/7Ex28K PCzwUm5cJPQ1u3d47SrKxXkpafc+1srDBk8YKxImME4WSlqNDCKVyrWCG87B vnLlwltutoYywqpqGRgOOlhg08xxHmB0Rbhtd5tkqxXsBQngeKn7CMf5R6dJ X5b/ADk+JHwgxGEynyA7HqMFld0pVT7T2NtjFV27d97kpaGRYqzIY/buNXVT YilnYRvW1ktLS+U6FdnBUKNg5b37mR5Y9ptAyJTU7EKik8AWPEn0AJpkinTm 3bLf7qzLZxVVeLE0UfmfP5Cp6ITsn/hQP/LT3bn6TC5DcvdWxaWsrI6P+8+7 esy+2qBpHCCozFVtnObiyOOoY73klNK4jW5YAAn2J7r2q5zgjaVIbaVwK6Vk 7j9gYKCflXPRvJyRvMalgI2IHANk/ZUAH9vVzma331vtvrHM9y1O5Ycz1xhN hZHs2Xce26hdwUuS2VjsBNuaTNYH+Gs6ZqKqwsJmpxEx891Cm59x3Ha3s15H t4h03rSiPSw0kOW06Wr8NDg14dEEdoDOlqwpOXC0OKEmlD6Z6I78XP5t3wS+ XnbGJ6S6J3V2HnOws3gs/uTHUG4+sNwbWxsmL2zQrksvJLmMnKaWGeKlYFEI vIeBz7Em98h817DYSbjulvCtmrqpKyKxqxoMDPH9nRxe8u3+1wNeXUK+ECBh gTUmgx1Z5HXsLLDEka2AH5Nv6ekAD2CmhqBVj0T/AFDDCqAOpccjyElnJv8A 2SfSPx/sPbRUKB2ivTiuzEEk9OUN+L2/w5+n+PtMx49KVJFaHp0jsFH9Tb8j /ffn2ikFanp8UoKcOlTjrVeOmpnN2iuy8c2sWUDn+o9k90PDuEccD0d2v69o Ya9y16bY+Cf6gfn/AHm/tWxB01OOkPn1PQ2At+bX9p2/F0oXKjqSn1H+8f6/ trVRQBx6vTz6kp9R/sf969tNwPTgHWdAb/63P+x9sZ6dQEsK8B1JBNuPx/re /E1NT0pAFB1JiHFzyb8f7b/jfvXVh8us6qDe/wDX3Tz6fA+E/LrKAeLe/dOq pJB8us4VmNhyf9h+Pz+Pfjivp08EUGoHWTxvb1C3+J/4j6296DA8D1sAHgOu xGLC/wBf8PfurUHr1jljFuPrf8/63+8e99aoK1HWAqR+P99/t/fum2ViDTrA 4IN/6/77n/H37qjjSqgjPUY3BN/e6n8umiKgjrDNcC4+h+v+HFr/AFt7t0wR 5dRCtze/Nx/vHv3XuunJA4+p/p9fdkpqFeHXh8+uAvzxq5/1uLf8Qfd3NKU6 qxyD1hZyG5H5/r/xT3tUFAa9bC1FT14v/h/vPu/TXWL37pmRuK9QpG5YfgH6 /wC8/T2pAAAAGemXwOsRbg25Nr/7D3cIa54dNV6iPKeePb4Xy6Zd8Y4dRGlH N/8Aef8AeOf8fd6dMs2KefUGWbg3I02t/vv6e3VANO3potTzz02Szhb8g/4g 8C/Nr3v9Pa2KItnpmSQAaumiWdjfQNV+OBf/AHq9va4KMV6Rs2qvUQxs97m1 uSAef9vbn3cCtemu7iT1gaNVtp/pex+t/wDinvfClDx6qcitMH/V+3rFJz/W 9uRf/ejf2915SampzTqBI4AIIN/9b37q2qnH16bZHBJax/3x9+6YdgxqOozG wP8Are3AMafPp1BRR03seSf8f+Ne68WoOmWOSeosrAn/AG3+9e95Wteq8esN 7+/Egih49e67VwLkgj8fT3vQc0OenYuJ652Dc6T/AK/H/E/09+FVxqHT3XkR f6k88/65/wAB/Qf097LE1HVdS+uepKxi39QLWsP+I+vutT50p6dVaj6dOaHq ZHCDf6jT9fqAf+I/PvbDz6cVvJR0uttbKyOdZZUT7WhuNVVKDYn6FYUuC5/x +nsqvd0t7UFa1kPkP8vRhZ7dNdkGmlPXod8JsnF4ELLDTrPVt9aupAkmvb+w v6I1P9B7Cd5uc96aM1EHkP8AL69C612uK0UFQC58z0soYDYn8cEfX+n0tx7L mYDFc9GCLQUPWcU6/Qarn+n0/wB8fdfEHnjpzSPPqRHGEH+H+v8A77n3VmBO OrACvz6yfT6e6Ek56t1m1r/X/eD/AMU966913qX+v/Ef737917r1x/Uf7ce/ de67uP6j/b+/de68SB9ffuvddXH9R/t/fuvdd+/de67vb6e/de69c/1P+3Pv 3XuvXP8AU/7c+/de67Go8LqY/hVuWY/hVA5LH8D8n37r1QMk0HVI3dP853+X pksVuPYG8Nidmdy4iGqrsbndpZjp/C1GEnrsZPNR1UM1HvzNUEIqKaeJ0Egi EqEHTz7GVnyhvytHPFPHC3EMJDXOfwg/4euint7/AHfv3qbW92nmfYOZNn2C +ZEkhuYt0lWZUkAdSGsonOlgQaatJ88dV1fJ74S/GXsf56/Ebp3onH/6Ieqf lP0pH2K+R2VNNm6akr8pR71zGHzOGxmcyOQoIKYwYeliqKOnkipyFkCaHOr2 INt3jcrfZdzur1vFurabRRsYBUEEinqaE56yv9m/vEe8PKf3ZffXn33Ku/37 ztyVzEbER3YETMkbWkUsUskKRuzVlkZJXVnqV1alx1S/2/sPM9Ddx9i9b/3l pMhuDqDsDPbah3ftuaWnp58ts7MSw0mfxEokM9FMlTRpMq6zJTzKV1Fkv7F1 pOl9aW9x4ZEcsYOk+jDgfX/L10F5D5m2/wBzeQeU+bTtDxbXv21w3BtZwGYR XUQLQyilHBVihNKOprSjU63pN59ydgYb+Xnm++0WWn7Qp/iNH2QZPFaek3pW dX0+Vlypi0+mWhytU1YRawMf4HuF4bOB9+SxP+4xutH+1D0p+zHXzccvcg8r 7h96bbvbJircmtz0bClcNaLuLRiOvo8aiL8+tGTpTbWH7P7z6o2j2Bnqulwf YvbGysFvfc1XXN/EDj917sx1FuHL1WUqWd/v6mKtld6iRiwkfWTfn3M97I9t ZXUsCd8cTFQOFVU0FPTHDr6QfcPd7/k322533zlfbEfcdp2O7ms7dU7NdtbO 8ESxqKaFKKBGoppGkDra6/mdfBv4j7T+D3aO6NpdQ9f9U7l6X29jMvsDc21M NR4LNTZGHN4nERbYzuUgVK3dke54axoGFe9TOallmRhICTGHLm87rJvVtFNd SSxzMQysSRShNQOC044pjHXEf7nP3j/fPe/vH8mbLvnPe6b3tHMN3JFe29zK 80QQwyym4hjaqWxtyocGERoIwYyNJAGvX/K+7Q3h1d85+gJNpVlZHT7/AN6U HWe8MTTySCm3DtLd3koq2kyFOh0VC4uoMdfAzAmCemDrbm485ktYrrZb4SgV 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 HWnzJI1rXV8xSmOhC/k5fH75q/HT56dcZ3dXx079696w3rhN7bD7JzO7eu91 YXbMW3q3bmSzGAk3Dkq/HU+PV8duvEUDwSylSJmISxkIKT3A3Tlzd+WLuKDd rWW9jZHjCSKW1BgG0gGuVJrTy+zpPzTe7Vf7NOkN/C9wjKygMCa1ANBWuQT0 cP8Anify4/lX3t3ntP5P9A7Aznde2ouuNv7K3PsrbMEGU3Rs6v2dk8vXU9fR 7XqJY5dw7Y3BBlC8y0azTRVSSiWIpKrew/7bc37Htm3T7Jut0ttOZmdXbCuH AFC34WWmK0FKUOOizlDfNvs7OXb76dYpPELBjgMGAxXyIpivl9nVbnYvzrlX c2xaP53/AMqD4+5uu2Zj2wNAqdd9mfFvclbik+1FZAKTFTR7Zz08H2ytGlRR Tw0xdgixq7XF9nyyDDctyxz1dqkhqf1I7lQc049w4+RBPnXo9h2c+HMdm5km XUanuSYA+XHI/Iivz620Pjlub40fJv8Al30f+gimTpX46766Z7E6+p8RUClp j0pj5sfn9u70xVcuUyNRjom2TW1NVNreq+ykiVZVdYXFoJ3aHeNm5tYbm31G 7RXEclRX9Y1VkIoK94oOFa4pXqObuO/27eiL0+NfpKrV/j4FaUFe4U+fl1Xn /La/lkfDv4t/KTavbvTHz1wPyB31iNl74wFD1tj8l1PU1WSxm4MIlBlMwkO0 d05XNNHhqZRMxSFowP1sBz7FvOHOXMG9bHcWO48sNaWrSIxkIlwVaoHeoGeH Ho+3zftz3CwktrvZ2hhLqdXfgg1AyAM9bG8TAgcf0v8A1/w/17e4feoGOgcq 9wz06QsvNhYni31H055+vtO9QMmvS5FpQenTrDyOfoQf9t7SNnHShaUavDpy jsdP+A/3kD2ilFCF6fXAHT/hZxFV6CfTMuj/AFmNrG30PHsvvULRhxxHRvtU gjmIYAqw/n1kq4lgqZ0H01XA/wAGIPukTGSIE8R/k6pOgillUefWSOwC88fW /vTZqQOPXkppFD1LW3HNjf8Ap7TdPD+XUpOWHvRNBXpxPiGOpKryCTb+vH+H tpm1eXSmmQTx6kLb9I5/qfof98PbZ416vQ4PUhCB6f6/T+nvfTlDSvl1mXj6 /lrf8U909enhwHWS/v3T8YFOOepkNg45ta/H+w/1vdWFVI6d49Tb/wBOfaeh HHrYQnj1x+pPJv8A4fgf7z7tUUA046sFHDrg4/N7n+h+vuy1JrTt60RTyx1g dPqbj/Af631/2PuyscKR1XqFKPrxf8/X/D24OtMoYUPDqG9v9j/yL3sfZjpK RQ0PWFgSpHNv96H0+v8Ar+7eXTL0rjqG3BIv+fe/THTZB9esZb8fX3qvXgD6 9cGb6WsLX/3n3vJ8utEU6wNyRb8fX26laGvVhgGvXEm1z+Px/h7cArivTDV4 A56wSSFTx7dVVoK0r0yaCgpnqKx4JP1P/E+3VFSPQdMMST1DdwLj8/717UDp MzVJ6gySWBJP+sf6/wCsP6+7gcOmX8s9QZJrnn6/kX4/2/59vCImhr022B03 VEjkWQhifqAfoB/j9efayCIBs8KdJ2en29Qnhlk/XwDb0/Q2/wBfjj2rBRRg 9J2BZqnrrxeMELYWHP1/pzf63971VpjrWnFPLqNIrKdf1vxYD6f63u6NnHVC PLz6iOt7t9D9fz7dVQRXppQTUHiD1BkY3Nvre3+9+7g1r8utMNPcPi6gzXJb gf1v+Pp731tyQK9NsinSf9fgW/3n3sUrnh0n6gu7i4t/r/7f24OIqc06uHYC nUN7/jn+vH/E+6VKk+vVOPUZrn8X/wBhyP8Ail/dhQip49e64EX4I93GaGnW uvKvIJF/wD/gP9jbn3rzpwHV42oTivUkKT9Pp/vVve8DpRWnHrKsZ4sv05+n 1Fjzf20K1rWg6ZC6mNG6c6SklqJI4YkaSWRgEjiUu7EmwsoFyb/7D3WR0jWr MAg6UJGxIRBU9DhtbrVEWOuz1mY2aPHKSUtbUDVtxdh/qRYewrf720mqK2Wg /i/zf5+hPt2yAaZrluPlT/D0NVNTQwRokcKxoihURFCog4FlQAAewy7s5JL5 6E0cccYARBT5dS1QsxJsVH6RaxX/AGPN/dCcUHHpwKxrU46zhQPxf/X/AB/r e6dXpnrv37rfXvfuvde9+691737r3Xvfuvde9+6912DY39+691z8n+H+8/8A GvfuvddWZjqA/wB5H49+691kBP5W3+Nx7917rscf1P8Ar+/de697917r3v3X uu1JUhlJDKQVINiCDcEH8EH37rxAIIIwetaT+Yz/ACa+wd6dl7p75+JVJiM7 HvrJ1e498dN1uTodv5TH7pyMr1OZzuw8jlJqXC12MzlY7VE2NnmppaapkcwN JG6xxyJy/wA2wQ20dlurEaBRZKEgqOAYDNRwqK1HGnXXv7p33/uV+XuUNl9s /fKae2bbYVgs91SN543tkAWKG8jjDTJJCoCLOiSLJGF8QIylmpel6l+cXT/c 3WHWn90u8Nk960WGy0HTG2KSprl3lRbeyRzwy69cvR19StDiappMkzmiljjV mncaWLN7GAutmu7O5uPFheyJHiE00kilNdRx4cfl10GTnn7uPPnt9znzed85 c3H21kuIm3a4dU+leePwfCN+HRS8q0twPGUsQI1NRQdWK/DD+S93x2P2Dh96 /LPb9V1d1XisrDm83tPNZajruyOyJ4qla18HLR4+syLbdxOVn4yFdWzLVvEz rDEzv5UD+8c32NvbvBtbiS5IoCBRE8q+VSPIDHqesTvvB/3hHtpylytf8u+x u6JvPOs8BhhuYonSwsFK6BMGkRPHljX+whiQxBgpdwq6G20crtvAZ/a+T2bl 8RR1e1c1t6u2pksD4xFQT7cyOMlw1Vh0iQWhpGxcphUL+hLW+g9xckkiSLMj kShtQPnUGtf29cQLDd902zd7LmCxvpE3u3ukuY5q1cTxyCVZSTxbxAHJPE1r x606/lH/ACVvlN1Hu7M1XRG2Z++eqZ62oqdsVW28hjKfsHCYx5WkpMRufa+R rMfUVmQxsREf3uOeohqdAkKwsTGJZ2znDbLqJBfSiC6pmoOkn1BFcH0NKfPr vX7M/wB4Z7L887Ht8PuXu68s87LGq3CzpI1jNIBRpbe4jV1RJD3eFOI2jqUB kADEON69Lfzfe+Nrbb6k7G6/+Ve+9mbYlpGwm2t5UstPgaSfHxGloKzJZHKT 4+HLTY2BtEE9fUVLwKSUYG59qIbzlSykkuree1SZuJU5zxoBWlfOgFehVy77 h/cN9s953bnvlLmnkrbeYLxW8W4tGDTMHOp1jjjDmISHLpDHGHPxA8OrWP5X f8p7f3QnZNB8jfksmDx28tt0NbH1l1piMpS7gn29l8tSS4+r3du3LY9pcQuV oMbUSw0NHSS1AikmaaSUMkaewtzLzTBfW7bft2owsRrcilQDXSoOaE8SaelO sIvvoffi5Y9zuULn2l9oDcy8v3kqHcNwljaATxROHW1tYnpL4byKrTSyrGWV RGiFWZurwO3Ostn90dc736n3/QNk9m9g7br9s7gpYpBDVCjr0slZQVBV/tsl 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 bhgQRxz7NpEDio6TISrVB6eUl+hW/wDxF/yf+Re0EkRByMfz6WxyhxWnU+GY tx+bc2+jD/W/ofaV0p9nT32dBz3qofoPvgjg/wChLt02/r/xjrcl/aWckRyD +if8B6U2v9pH6a1/w9f/1d2z42qD8cvj8eb/AOg3qPj/AMp9t73VfhX7Oqyf F+fQtVEQsf8AH6/Ti3txSQa+XWiCemKojuL3/TYf7Ake3+qEEjBp02ypxa/9 f99b37qmghSNXTLVR2VufoCbn/ev9t7vGSDTpM4ApQ9J6cGx54PNuPz7U1HR bKMn1r00Tp+b/q/3j24nGvRdItM149N8iBuPrb/Yf8i9qlbTXHSN11D59Rig /qb/AOPA93DimeqqRSnn1jdOfqbW9262y6j8R64eNb3PP+w92DMMA46qIwOJ 67ZARwB/rfj37U3r05QcKdRniN7/AO8fj3YPpxxHTbR8SOokkTAf1/17X9vK +oV6YaOn29Q5Ev8A0v8A0/r/ALH28jkZ8umaceoE0RI4AH+ve4/4nn2sin9R 0nkQGtBnppngsGuoPBP0sf8Ab8g+1qNqzWnSN0xnphq6csOFFwDew/ULcfX8 +18bigB6LXTPDpL1EMscizx3jlidZEKryGQ3H9D/AK/+HtTUU0kY6SupjYOv r08zeOtp48jCoRJWKVEQAtTVZ5eMD6hJidSf4f63thSY3MTZxUH1H+rj0qDC VBMooCcj0P8Aq4dQWiN7AcAfWwuf9sfb3XusZj/wU/6459+61TNa9RHT8gaf r/rE/wDEX9+6qy1zXrCQPoQP6c/74+9dVp9vUYxc8Wsf9sPdsdXpmoPWBktq FvoeL/n/AG3vYI4daJzSnWBlI5I+n++t7sCQKeXVcjyx1jIP+pH+8/8AEe7A imWHWseY6xMh+v04/pa59745HVaefl1jKkfj37rXXVj/AEPvdOraT6det+Ob /wC29+6soPAjrmqnni5PA/1v9h791bSOs6qbj024/JH+uePwfeiPn1rQOs4+ oAH15+v/ABr2y2OtltOKdTEBKg2t9OP629662AcE8enCEcA8i3/E39+6t05Q qPobk/4Wt71Th17gKDpyisObfQ/7f/jXuknl1YCtc9OcIuP8f+Jv9fackAt8 h0/HQVPn05x+kaf8Pr/vfH+PtI3dnpUPwnp0hU6V/wAAL/737SSmmOlUY8+n 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 nuHScq4aJSqk6EAHFD2s1ckHA6XXtktrbQOWrKxIPp9g+zpv+X/8wP50Zf5k 9l/DL+XF1n0rujdPxq6Qp+8/kBu/up8lVUlWK6goc1jeuNnUNBlcVBDmKvFZ WjRGkZpaqrqWRZKaOBpHc5c5M5Rj5YseaOeL66jt766+nt0goCKEqZXJBwCG 4YAANGJp1S0trY26XN27BXYqoHy8z/q/b1YR/Lp+Z2N+fPxC6x+StLt2HZ2b 3Ic5tnfuz6aqmraLbHYWzslJh9z47G1VSBVzYiokSKso/N+8tLVIkhZ0ZiB+ duVn5N5l3DYmn8WJNLRuRQtG41ISBjUMq1MVBIwekl9C1rPJCcgcD6g9G5yz aZYifyHFv9Y/j/b+yayJKkdEVzWozmnTXHUaGBDf4H68j/H2tYBgQekyuVNa 9PUU6sFYMNNrkE/QX+tv6W9oXSmoUz0vR60oePTLmcFDkQayldIKsAn0gLHU WFgr6bWcfg29rbG+e3pDKCU9fMdVlgV+5D3dIeKpeJ2gm1RzRErIjAh008Xs eWBP59n5CyDUKEdI1OjA9eninqVYfUH88H8/4X/HtHNAe4g9KUlNQD0gO8qr /jA/eq3/AFdI9u2555673Jf2VzxnwpjQ4U/4D0YWz/qxL5ax/hHX/9bdv+Nf /ZOXx9/x6O6j/wDff7e91Hwj7OvN8RPQxTrcOAPx+P625926bBNAemCZL6gf zwfbqMSaHrxFD01yRkfUWNv9uPbnVSKjpsnTgi3N/wCn1v8An3vpIRg9MDUo mqI6cNp8s0ceq19PlcIWtcatN7/j2+CQmo8adIZ18/PrUO7R/wCFSFL112Z2 P1y3wiqMuevewN6bF/jA7+iohljtDcmS28coKE9U1P2QyH8O8vh8svj16dTW ucldu9gGvbCxvhzUF8eGOSn09dOtQ1K+LmlaVoK9LP3F4qK31NKgH4eFR9vQ fP8A8Ku6QaiPgnU2AJt/sw0P45/59H7XD7vDcP62D/sn/wCuvVP6tn/lM/4z /s9bRfxp7jX5GfHfpHv1duHaA7k6y2l2ONqtkxmzt4bpxcOSGHOYFFjRkzQ+ XR5xTweS19C/T3AO+7Z+5N63XZzN4v0s7x66U1aDTVpqaV9KnoM3Vv4NxNEG qUYivrT5dVOd6fzvMX1J8qe6fiVsn4J/KH5Gb86Or6Wm3Lk+mJ8DuCGpx9Vj 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 VrqSCDb2W3VndWMrQ3cJSQIDno6s72z3SBbqxnDwaiK/Z1zie+kj+ouP8eP9 59p+lCNQjp4gk9Iv/W/9f9a4/wAPfulHT3TSW41H8EX+mq1iQPwCPx7917pt 3syvszciMbr/AAmpPP0JTS4B/wCQlHvVOHXiKgg9bIf8gqtqqv8Al6YSKoqJ Jkx/cfbNDRqxutPSLlaGoWniHASJZahyAOLsfaeb4hT069GQEAp69XS/8hH/ AH3+x9s6ur6h6ddFrfUk/wC9/wC9+/Vr1ViDwHXKNx5I/r+tf+hh791Xr51/ zLhlf5kfM3I3jFNi+/N/VdbMzBViplqlYuRwzBApNhe9va4cB9nTMmXYfPoj 3YdVT122aKtoZI56apgkqqWeNTaeGaAskif4Opv/AID3vqgGR9vW9z/IkqzU /wAq74vM2q8VFv6l/wALU3YW5IgB+bWX2jk+M9Kjjq2ytcfYZDg/8W+v/wDc Sb/H3pPjj/0w/wAPWvTrTA+AR/7ZoP5k4H/PTfJS/wD5wdWW95S85/8AT+OR P+adt/hm6Npv9z4PsH+Xq3T4jfIno/pf+RH01uXsns7r/B0O3/gln8fX4fI7 t28mcrcxk9qbuxmL2zSYB8h/Fq3OZrJV8NLDSJC00kkoGn62jXmTZN33T3e3 SCw2+Z3fd1IYI2kKHQly1KBVAJJJoAK9JpYna8bSvF/8vQPfygPj31Xub+Q5 1x1T80MfiKPortiXsHe26cfvXdtZ17gx19uDtQZXZtRX7spsxt2rwWPyeSw1 PWU0qVkAnSojsSsukmvuXvW4we8F9uXKrsd2tvDjQoniN4iw0eiUYMQGKkUN KH063dSN9YzxHuFPKuaZx1fb1ZtjY20uuetdl9VJjl612zsvam2Ot0xWYkz2 JXZGJw1DjNprjs/PWZGXNUAw0EAiq3qJ2qI7SGR9WoxFuFxd3F7fXW4FvrpJ XeWo0nWWJeq0Gk6iaigpwp0jZizMSe6ueqOfnh/MM+MnzA/lP/zSE6p3Tk8Z ken8Fn+id17f7Gx9BsrdE+/RuXbtJSxYTbtTlqvJ5HE5SvhmpqSfQjTz00yh BoJ9ytyjyXv3LXuLyAdwt1ZLp1uEaIl18PSxOpqAAgULDyBBrnpfbwyRywlh g9WBfyxNq4/Lfyt/hXsvemCpsphNx/E7YeD3JtzMUyzUOY27unbc8dbjMjSS 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 epLD1Em5ueRwP9jb2O5ACcE8PXoNJJRg1eHQpdU5br3CbrSt7N23Wbq2z/Dq uFsZQ1T0swyEip9tU+VCraYSDxexv7iH3e2v3H3PlZofa/eBacwl072pQLXu 4+vocdTD7V3vJNpzHBLz3aCbZGjPaa/FUU4UPCvVhW0+3/5b9HgaCnz3xxy2 QyoRkq6ipzOa8hYytYv9vWrEVKW+g49gnk3bPfa05fW35kv7afelkID47gDk mmOhtzLuXs3cb1eNs+3FbEnsCg/5T0STuPL9abg7K3Lleott1W0evqueB9v7 fqqmWqloIlp4knQTTFpXjedWZdTE2PuftngvktI13hke90itDgHz6h3eJNsN 7IdnjaO08gekFEbWA1EkaR/W5+n9LX9nkSGNj/ARwHRR4hLEhzpKmufTq8/4 odhdZz9U7VxV8VTrgNtDGTUqUcP3sWaqZ5pNwT1LxIapslkJDG8Mkh8ekC5s PeKXuPY80jmWb6c3D2LJ2BSaBvy6nHli8ik2mykimVSqUNTn51+Z8uiF/K7L 7Wy/aqS7ZmoqqopsBQ0m5qygaJoajNRTVDKks8IEE9dTULRpO63vIv1v7m/2 4ttzi5ctk3Mt4xoe7j869RrzvcW0u9K9u4JRNLUNe7ov1PK1gbgq1+VtYH/X sCR7kMqoYtpFegXqK/F0XbtJrbsYEm/8No7A/wBP3Lj/AB9xRzrr/fj1P+hp /MZ6nX2/0HltFpSkrn9nSQgcEfXg8j/Y/wCH1/HsKdDF+NRwPTnDJYBeb6vp e3Hv3TsbVFPPp7p5Bfg/6/0Nvxz79051B3hJ/vztxc/8uirFuOfRa9v6G/v3 WmNAT1sdfyA5SP5fdID+O7+2gNJ/H32JP9f6n2xIlW49eRaoM+Z6um8g/wBU f9592oPTq3XvIP8AVH/effqD0691zikHlj9R/wA4n9f9UPfqD069187/AOYt VKvzG+ZtCNBo8t35v6kr4pI1YT05rUJjJYEqDfm1uD7c6TyHubokfYUEFFt6 io6aNKamo0engiVbRwwpT2iRQOFAUaQPfuqAVI+3reV/kKzl/wCVd8btTsSt X2onJPATtDdShR/go490NCa06V9XBPpmjliYsUlikicAkExyo0bgH8Eqx5/H vwwQQMjr3RE+t/5bfxI6k+KXafwq2Rs3dGP+PfdFXuqt7A21Wb93Hk87kqje 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 evadXlN+7nm3BvNKdK7OQYPJ7hJo8Bio6WOGgw0OQSKGFLtM8rySuUy86Ndc 5WfNh2uCJYJkdYIgI1CpwWoXLGpLOVqT5UAALpb0tuUV/wCAqhWBCrgUHlX1 9TTodvhT8cD8PPjD0r8bxu//AEhf6H9vz4L++P8ABP7s/wB4fPuHLZ77r+Bn KZv+GaP4p4tH3U99Gq/NgV8z72eZN93Te/p/B+pfVo1atPaFpqoK8K8B0gv7 n626nudGnWa040xTj0XP4Ffy/X+D27Plhule1v8ASW3yd7nft5aP+5g2mdjs 9duetGBE/wDeTcH94NJ3Hp+50Ul/Dfx+qyn3NPOf9Z4OX7c7f4Asbbwa69Wv CjVTSun4eGePHq+6X/7xjs4zDoMMenjWvD5CnDomMf8AJ97a6++QXyH3v8fP nPvjonoL5XbjyW5O7ep9t9fYHK71q1zdZl67M4PZ2/cxVVVLtuOeTcFfBSZW GkiyVFR1bRfvaFf2Lk9xLC92naLbduWY7rdrBAsMrSMEwAAzIANXwqStdJIr ivTk2+QSWtpFd7Us13AtEYsQuKUJUceANK0JHQvfFb+WVH8VvhR3z8OaXuJt 4U3dNT23LTb9bZBwb7Tpuz9iY7ZENO2323TlWzb7fhx4naQ1tOarUVIj/UWN 65z/AH9zDtfMDWAja2EVU16tRjcvx0imqtOBp0TbrvbX27We6G20mLR26q10 sW40FK19MdGf+B/xOHwp+KHWfx0i32ey02JVbwkm3gdt/wB1GrajdG7Mvufw vglzOf8AsxRplRCrfdSeUJrsurSA/wAz8wnmPf77dTaeCZdHbq1YVAta0Wta emOqbreDdruXcVj0B6ArWtCBTJoONKjqjn+ZL1Xle6f53fwa63272Xunpzde W+P9fldodobLjo59ybI3XtWv7o3Pt3PUVDkB9llKWHLYeNKuklKpV0bywllD 3Eo8oX0e2+23Mt5NZpcQLdANG9dLqwhVlJGQaHBHA0PQk2WdbXlbdZnt1kjE 1GU8GBCAj5YOD5HPVjHxP/lr756o+Tm6vmj8qvktkflX8lMntR9g7P3ENl0G wNqbD2jLAtFUDEbeoaqopxlajGq1NGsEdLSUkU9QVSWWdpQEd85ytr3Z4OXd k2cWWziTW66y7O3EVYgYrnNSSBwAp0RblvaXFgm17dYC3sQ2phq1FjxyfSuf Mmg9Og07Q/lZd1be757v7x+DPzU3B8TB8mzNU96bBl2BQ7427k87Wfdvkdzb Qnlr6WbAZapqcjVVMLCJamiqauY09XHHJoVfZc67fLtm27bzLy6l99HiF9ZR gopRWwdQoAD5EAVBIr05b8wWz2drZ7vtQuPp/wCzbUVIHocZGB8iAKjz6MZt 3+X/AEW1vgH2B8H6bunsPd1f2Lsbdu2twd29nVeT3xuWXP7xSnWtzUGFyefP 2eCxiU0cNDiIa9IoYU9UryvJI5RNzQ0/NFrzIduijWKVWWGMBF0pwFQuWNal iKk+VKDpFJvLSbzBuxtI1COpCLRRRfKoGSfMkdDl8N/jw3xJ+NnTfx5O6xv7 /RJgZ8J/e3+Df3cOe82fyuc+5/gv8SzIx2n+J+LR9zNfRqvzYFfMO6/v3edx 3bwPC8dq6a6tPaF40FeFeHSLc71tyv7u9MWgStWla0wBxoPToBfgr8DX+Fe6 vlLuZe0f9IzfJTuB+11ozs9drjZhet3JWDBGY7izwz4U7h0/cFKUHw38fqsp pzNzP/WODZIPovB+jt/Crq1a8KNXAU+Hhnjx6Wbxu372j25PA8P6eLRxrq4Z 4CnD59FA3J/KT7n6z7D7h3H8FPnHvD4odd/ILMV2e7N6ol2NR7zxOMy+VerO SyPX+V/iVDV4OfTkJ1pWVIKykikEK1hjSMIfwc87de2m3w8zctx315aKFjk1 lCQKUDihDcBXiDx01r0YrzJaTQW0e8bStzPAoCPq0kgfxChrwFfI8adGz6M/ l09YfHX4X9l/EHrXcWWM3bW0OwMZvrtrcdDBkdx7i3p2Ftao2vWb0yOIpquj galxFJJElHjY6hVjghCGZpHkmYi3Tmy93bmKy3+8iUiCRCkSmiqsbBggOeOa tTieFKDoqut8uL/d7fc7iMfpupVBwCqahQfn5n16FT4J/FdvhV8Z+uPjr/fb /SR/o/rN01f98P7vHav8W/vNuvK7n8f8D/i+e+y+y/ifgv8AdS+TRrst9IL+ Z96/rJvN3u303g+KFGjVqppULxoK1pXh01vN9+99wnvfC8PWBiteAA40Hp6d Fg+Mv8sn/Zcug/mh0d/poO7/APZvc72Jmv7zHYX8D/uB/f3amZ2wKb+E/wB6 8n/eX+FHL+bX9xRebx6LJfUDreucv3vunLm5fu/w/oEjGnXXXoYNWukaa0pw NOl+4779dfbRefS6Taqopqrq0sDxoKVpTz6TNR/KmNT/ACxKb+XH/pzK/b5s Zj/TCOvNWvT2ZU9ifbf3H/veNN/uPs9X8UP08ludHt9ed6c6Hm/928Vp4Wv/ AIWI/j0/Kvw/Lp1eYT/WE799JilNGr+hp+Kn58OlX8tf5ZafJf45/F7qfCdx 5DrjtL4jnZFd1d2tT7ZTKYurzW0ts4PbtRVZvaTZRHhhyM236WtgMVVJJRzx BT542dSxsPOJ2bd96vpNvE1lf6xJHqoQrsWoGp5aiDjIPl03tm+/QX24XLW3 iW1zqDpWhoSTg08qkH1+XSK2N/LD7uh+Y3R3zm7q+aWS7o7s63psviN6UWQ6 hwm3Nn5/alfg83tyh2psKhwO4cd/celoKDcldPLUzw5B6uvqDM0cfKlVcc5b aeXtz5Z27l5bbbpiChEpZwwZWLOSDrJKqKDTRRSvTk2/2o2u62ez2oRWklCv eSwaoNWqO7IGMUGOjIY74INSfzJcv/MJPZ+v+K9LR9Qf6Jf7ohft/HhaDDjc P99P7wHyX+y8n2v8NH6tPk4uShuZtXJ8fKn0fw3Hi+Lq+ZOnTT58dX5dJP3u TsSbKbfhLr16vmTTTT58a9S/jl8Dm6B+a3zD+YS9ojdJ+WBxLL182zhiRsM4 zK0eT53Idw5IbkE5pNBBoaOwa/P0Pt25m/enLuwbCbPR9DXv1V11BHw0Gnj6 nq17uxvNr23bPp9P09e6tdVQRwpj9p6Jfub+Tr3Rsjd3etP8LPnXur4w9G/J nKZXLdr9Nz7Apd40tDU7hjrKfPrsfODL0FVi4KujyNRTwFRSVkFJIKdqqWNI 9Ihi5+265t9tbmLlpL3crNQIpdeiumhXWKGtCATxBOdIJPRtFzLayx2h3PaV nu4AAr6qcOGoU/ziuaDo27fyn/jlUfy94v5d8tduk7Bp9O4YOyWNC++oe1ly bZwdnJA6nFrV/wASdojjgBS/ww/aBrfu+w0eet4Xm083KE+r+Ex50eFSnh+t KZ1cdXd8uka7/fHeP3uFXxTjTnTopTT+zz41z0EPT/8ALC+VUHavRW6vlL/M f7U7260+Mz079V9YbPwNd1OM8MclDHiabtTcWE3G1dvDGwQ4qlSphq/v56yC AQNUrE8odVuXO+xmw3ODZOToLW9vf7SR2EumtamJWWiHJoRpAJrSoFDCbeLA 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 /j8fgXv/AMbPsQNx6KwRw6yBtIta9/8AHj3Xj1dVr1yV7m1v95/417bK6Rls dbK0zXrmCQb2uByf999fdaCla560Pt6mxyg88jgXB+v+N/8AY+2yMnp5Wpjy 6DrvWYf6BO9Qfz0j29bni/8Ao63Jb/Y8e006/oy6R+E/4D0ttX/XhBr8a/4R 1//S3e/jP/2Tf8fP/EHdS/8AvAbf96HAfZ1Zvib7ehoYc3va/wDxFv8AD3vq jAkdQXHqbVwefpyP8L/7D37qoqMDh1CnF7/4Wuf8fdk4jrxpTHTY4Fz/AK/5 /wB593HbTPHqnTcyD1f1H+24/p9PqPbgNRUcOvcePTbU42pa5WmqLfVWEMhu D9D+g3Fj/sffg6qa1HSR18j0nqjGVanilqP63MMgv/sNPt8OpFdQ/b0gljA+ zpmlhZWIIKsCQwIIIYfgg/Q+3FNekzIePWGOnkqH0RRySSWJ0xoztYfU2UHg e9s2kVPDpomnXCWlngYLNE8ZI1KJEZCyn6MAwF1P9fflYMMdbFD1wCG/0/17 n3vqwA65FOePp/vX/GveurdYGT68c/7f8fT/AGPvfWh1HdL825H1/wCN+7K1 MHh1o+fp1HZf9hx9P99/X2/qXzyeminH0PUaSLVYngi9j/xBsfe1enDh0zIo XhwPUNk+twfqfqPp/rX+o9qFbgQekzKOB4dRpIQ3IHIHB+n+vf2+j+vHpp49 WCM9QjTvI2hY2kcgkLGrO1h9TpUE2Ht0sAK16SMpByOmqpp9JZXVlZSykMCC COCCDaxB+v8AT2ohloy04Y6ZZdQp00SY6ee4hhklsAXEaNJZRz6tINg3+Ps0 juIwQSwBr0Xy29KnrNQq0sRoZQTPB5GpCTyyXGumb6XcfVf9iPbNyaSi4HwE DV9vr09bEungtkjh/m65/bAi4P8AhwAOfp9P9f376hSMHPTjQgGoz1gkpjfk c/TgAX/4g+3Y5geDY6ZeAHiOoUtNzcDj+p+vH4+l7e3hIDgmh6TtCclR1FaK 1zYWP4/Fx+R/T28j0+3pMycKg9Q5Ilt9P688fU+3/EbqukdYBAov+OSfqT/s fbgcHj1UqfLh1jMP1sL/AFtx/wAT7tqT/UetFPl1jMR/of8Ab+9nR5Hquj5H r3hJ5Cm/0/4n/ifeqpTjnrej5Y694jccf7z79UdeCCo6yCP+vv1er0+XXIRC 4/Pv2rTnr1Osqxj8H6nj/evdGkPn1sKB1KWE8f0J5HN7f8VPtOZAfPq9OpaR C9wp/ra3F/zf+vtpnqKE9XCErqHU6NLcWsTwbC4A/px7TM9WABx0qRKAHqbG gB/4i5v/ALb3SR6VAI4dPLTjXPU5RYi3tC3A9KEUAH7OpqCy/jnn/ff7D2m4 k9ODh1MiH+9X9tSHHTqcD69TYlIa5/p7T9KEQggnqeinj/G/+w/x9tsQpJ/F 0pAFK9OFMdEsTj+wym/+8e2HypHr0/E1JE+3p+y0eqSOUf7sjUAj+ig/7G9r e0seAV6Mr5Q2hvIj/B1AT9J/px/t/die4dJTgKOpEf1P4/wH59+xQZ62nWRx 6JR/SCb6f8sn96BNadPfiFT5jr5Yqeru/uTgC3dfYygkWNv755rnnn3vzI+f SmXBXowZclrBlUKH+gt6bEXB/Jf3bprreE/kmWP8tzoIg3Affgt/QnemZH+3 Htibh0pT4F6tcWwYfj/ip/4m/tnjxOenlp5dZ1+vvYFT1cV8utN7/hUv/wAf r0mfyfjb2x/thu2kAv7eQUjk/wBXl02/xw/6vPrQ9H0H+sP969p+l/Xfv3Xu nDE/8XbF/wDayoP/AHLh92XDKfmOk93/ALiXf/NJ/wDjp6uZ2zASYmC/7qht b/lmuo8e5uRzoQk/hH+Adceua5wJ7oV4SP8A8ePRldvRCOg4/K/6/wCP97Pt wEHhx6gPeHL3XyJ6astJYyMLabaufxx/h7PtvapjGMtTPS7b1woB7q9GO686 LxO6ti4HKHdf8M3lueqr5qDFyCCGgosNTxvHFW5KqnukEckgL6rcWAP19xJ7 g8/7vt28zbRtV3FE8SkkcBXyFeum/wB2/wC75yNu/JNpzpzzsUt+084AUH4Y vxFT69CVmfiZW5Ks2rtvrPeFJlplpsfJvHcZhospHSyPMzVU6tAyUywOqtGq LdiBf+vuPIfcv3JsbHx13Iy3ocAqOGhjStR5gZ6ywHsF93K/3meCLlI2m2rF VGcVOsCtOHmcHoQOyMv8cOiotv7Ej2zhs3umWZZsvuXcCTVMushC5amgnhjj oTMCsYH0H5PsY7Z7kc33QU/vGYYqx1UofMGvUM7v7A+3Alk+n5QTww7BG4gi vGnl0enqjZ3we+U+zZdp7MXAbE7hoaGZ4ThauSiMuRSEtFUJS1lTLT5GkmdS DEDqAJI9yFsXubzbtN1DPNe+PZ1Wofu7SeIp/h6jDm/7uXtjvuz3dlBsn0u7 aHMckfAsBivkaenVY26EqcXvLIbZqFFO+2q7J4GqjQAJNW0ZmpKqrHJBEkqG 31sPeZW13Q3Lb7e/AAMqAigpxz1y83jaZNl3a82aZyJ7SZo2yMnIr0B06std IhAAHFvqbgkcf1uPacxMbhy5qadDG0A+igDEatA6dIQxsPqPxcW/2HvZQHz6 sjoB8Q4+vSy28/imU/Q3XgfQnVzzzb2ptSAxWnSC9o4B/D/l6sJ+MXx/318j NyR4DaiRY/FYdqap3HuyvjdsXt+kkICJoWzVuRqACYoFP+J49hHnnn/aeRbL xriku5OP04geJ9T6D59ST7R+znMXuvu5tts/Q2mJv1p2BZUHovkWPkK48+rV 91fB74T/AB92PJvbvfObhzktXIaenmq8wcfWZvJmO7UuAwVCy+gt+piWWIWL H3hh7i/ek5h5XtW3e+vkt4q0jhjUM7egAIqftOPXrPrbPuw+03LG3Rnd4Zr6 8p/aO1GZvQKKU6K+/wDL9y/bmMrOwekdnZbrzr+po62tws2+dxS1NZlvGjPR Q0eNlolkkoq22kzBvTe4v7AXtP8Aey96ec94t9z3blNLfktZNIaXtkkSuXUC nl58Ogdvn3XOXt+trq85cs57OQBjGrvUMaGgI8x1XzmOrd54DO5HCZzDvg8l iqs0WQp619JjqYuG8Z/3ZDIgDRsBZkN/fS7bt527erCG/sZ9cDgMAPIECox8 +sFN82Xc+V9yvtj3eB4twt5SGUigA8qV4g8elTj9gY+GFZ8lWNO4sWhhBEXP 41g3P+tb2vNw7nQqdlOilSxyz1PlT/P1NmpqLG3SgpI4EC+ltAMhN7cubtwP aV0oVBerV6qxYEKGz0mMhNI02pmN+NLaiTpP1B/oCfbUigaQB0/G9HC+vULh 20nkN9f63AuCf8PbHr0qDEUPnXp52Rh9v5rfG1cHu/LtgNr5XPUFHnszGmuT HYyadVqJ1VgVFk4DG4Um5HsNc03t5tmz7le7baiW9jt2Kj5jPUie3m2bXv8A zZy9te93Hg7Xc3KxyP5AE8SfLoxvdXxI3Tt/c2ayPV+Iq8z1y8iT7fmFUK+v WiEKPJ99OiiNQCS3kbSjKeD+PcHcqe8Fjd7PEOaX+n3gBtZ0kAFa0FeHD+fW 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 ksJ9SIEjViOTb23s3tVv11cxtuFr4UINDUEYJzny6J+dPvQch7NtbS7HuYub 5wQpGQD5GleqxqDee7915fIbn3vlZ8vuXO1b12YrZ+GqKiW3pRRxHBEPTGn0 RQAPeXew7da7Rt8e1WwCxxoK0GCeuZXNvMt9zTzJufMF/OZbm4krqPp5DqRk KlUqGYF11NqufqOP8Pxf2cElNNGz0SqQSW8j1KhrjPTWBJvYXP10/kH2pRg6 gjp4VoR59M9XMSv4C82/1X4+nusjsnwnHn0ttiQ4PTFPUaQNJBP9Ofp+b/kW 9lskpBJA6OrerniKV6GHobfcezt+R11StAYsjishhvNkJ1gpKaWup2EM9RO6 sIY0lUXP1A9xn7l2txuXLjrao7SxyBiF8wPTqbvZfc7Pbub4Ibl0QSqQGagA r6k9GT2v3t2BldxZ+inwWKyCbd2zkqF8jU5yghwEsskZi82FrZ3iXJFk5CrZ /wCg94zSieAI8u23Kg5+A9ZqQwxTm5S23uxeVAa1mUD8iaA9Fw2Xk9nYGgy+ /t7NUy7tjrq6q2lt3yxvDJUs7CjnraeL9wUtLUHyi7KpsPr7kPlq15w3SNdr sLcRcvykGaQikmjzUVHn9vUcb7echbSZeY9wka45xt1IgjjcMhYYBbTUUHr0 BlXnp6maVi2nzzvPUMnpaV5nLyFrfhifp/h7n2KOK3jSKGulUCivy6xnkWe8 u7vcLhi1xPIWcHgK+nUyjrFV9Qe4sDe+o/7yfp7Vw1ahOT0nkiyq+HT16EHG VAdFYWsSp/o39T+fp7VJ8XRdKg1dKF1WdNQOlrcX+hH5H5t7fpTFOk8Erox9 B01srJKoW8ZVw6stxIrJYo6EWKSI3KsDcEe013YQXcE1vcxq8DoVZWFVZWwQ Qfl0JrDcJrdo7qKZkmQgqQaGoPRgq7uPL5rqDsTa9buHJbf3DkttUtBLkce2 mDdUNNVRhamqghX7k7njo7wO8RU1UH6+Rf3zS95vu77/AMl837PvPtztT3Ow Xt5qaAfHA7cdP/Cyc8cU66PeyH3iNu5g2GPZfcC/hhvrGOqzOf7VFGAfMkUp w6LttqYY2hw1HQbTNTTYykp6dshuSrmx0U/hqmrUlgwVG7SxyGqcsS7h3AF/ ZtsX3U+f+ZLj6zmffV2+0eQsURQ7kYopqKfLj0t5s+91ypYNLFyzaC6uSunV QhaVIoPn0q8RjjSCdpJDNJUzzVMhsVVXmkaUxxqfUI49dhc3sOfefPL+xpy/ s23bRHKzi3iVNRAFdIpWgwOsB+ZuY237eb3dTbrEZpGcqPIsa/z6WlJGSAyg 8G9uBx/sfx7O/CpSop0GBMKlc0r0sMXTSVVTTUqJeWokVLj6gH6n/AKOT/T3 SRwkbMPhHWyWYEqeHl556r3+Z3jh7wnpogPDTbVwECr/AMs4pgT/AK7Nf3ib 7plm5qZn87ZP+fuszvYY6uRz6LezD+SdFhikIK/S3+t7jbqaCAV1gZ6eoJOA b355/wCR+/dVJyrgdPlPKD/vv9b37p4EMMcOou5HP93Mytv+UCb/AF+bC3P+ v791QdpK+Q62Sf5Ir6fgdgAeP+Mqdo/Ugf8AL5p+fz7N7JCYa/M9BndGpc0+ X+U9W6LP/T+lrH+n+It7Ush8x0XhgDx6zJUKLHWF+nF/9uf6+22QkUIx1YSH 16mwVYEkYJ1DWt/6fqFuP9j7aaI8R0+s1KA9fPz+aOPlzHyp+YOJgyddhZsh 3jvuCLLY1o462iLVUJSekd1KJKoBAuPz7KX+JhXz6EyHtQ0x0UzflM9BtnG0 jzzVslJAYHq6tleoq5IqfxtV1DKoBnntqe3BJ9669+XW5X/wn8qQn8sfqdWI uOw+6rXPC37Ey5Itz7UwxExBvmei69cC5YfIf4OrsYqpT+f+Rfjj8j3VoSKm nVVmB4jHU1Zw1v8ADix/1vxf2yUavDp9HBrQ9ZxL9Be3H9OOP9f3rSfTHV9Q 68HuL3/3v3qg61X5deLcE+/U63XB6jM3qjP9JP8AeOLf717cUYrTHTLmhT7e nsm9j/gP8fbXSpq4+zrC55+v/I+f95976r1FkPJ54+n+8D3tfPqjECnUeS/P 1/Sf+J93jHH06o3wn7OobKWYG/8Ah+b/AF/H+39u6iqn06YK1KmvlnpyUBEV VPCjm/11H6j8eyqasjV8q9K1WigdeJ5t9T/T6ce69UIoadYSSx/3r37qpVTx HXDR9Wa4v9P+N2t731sQgGvXibXtz/xT/W97X4h1R6AgV8+ori2r/b3H1P0I 59rl4gdOeXUMn6/4/wBfahQQR8ukhPcft6wv9R/wX/ifb4NRX59Vbgeojk3P +BI9ux/Efs6RljqOeohJ+p/w9v8AVCadBN3xz0T3r/T/AEJ9un/Yf6O9ye6y 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 ZsD3XuLrztncPyW6/wBl9zbo6Nzm5uvMFvqoO0l/vTRU9FDWU+UTZuZzCPUx Y6qZxEHCm+kH2H/abauX9633nLxtrSfbksJJIEnVJGjGvsJNKa1XBYcerbWI p3uF0VjCVWuaZ/w9Fi/4UDdF53cvzn/lmZik7y7W2rB3V29iepsHg8FkYIMX 0dmMJvHriin7X6sjZ1OO7CzT7shnqZ30o0uJpDf0n2fezO7w2/KPPsTbRbSG 1tTMzMKmdWSQiGb1iXQQB6O3S3bm0wXAKgsoqfnxwf2dGc/m7b+76+Jcn8n7 qfrT5J93q2R+Re2up+1N8rvbLYPdfeuEwtT1liqms7YkwtZBT7lqc8Kuomq4 pvJE8lVLxZjci9trLZ+Yx7l7jf7Hadti00MfhhkgZvFI8HUDp00AUjIAHp1q 2SOX6pmjX4ajHDjw6Eb+YN2z3N8Kf5rPwV71qO0uwP8AZNfk7lKz4z9s9Y12 6MrN1Zs/smsZ8Jt3eVNtiaobCYfI1dLnMbkPOkaMTiKxr/uPdFyZtu181e3f Nu0Db4f6z2Ci6hlCDxniHcyF6aiAVZaf019OmYoUls54gg8ZRqB8/s6YfgD3 L3B8yv5lv8wT5Iy9o9iN8NvjbXy/Hbp3rCh3Rl4es9y7zwVOKDc29RtWKcYT J5enxW26zICoaN3EmcpmvdFs7zjtm28r8icmbGu3wf1ovl+pmlKr4qo2Vj10 1Basq0qP7NvXpPewJDZ20IQeM3cTTNPT/V6dUY4v5y9lfMWh+SXyS7G+fXzZ +PHcGI3fuul+I3Qnxp6q7V3H0bhcVt6gjye0sRv3I7F2/k9v19Tn6qaHHVf3 UrVsbiSsqjLFLHCJbk5UseV32PYrHk/ar3bWiQ3lxczRLOxY0cxiRgw0irCg 0kUVaEE9LDZx23gW6WcUkdBrZyNRrxIr6f7A62o/5XXyL7R+WHwd6a7h7w2/ kNudw1EW49mdjwZPbtXtKoy+5NkZ2qwb7oXb9ZSUDY4bnxsVPWSJHElP9xLL 4QI9IEAc/bNt3LvNm57btU4fbQVeIhg4CuobTqBNdJqM5oBXPQV3Oyht7yWO Bv08EZrg5p+XVIP82rv/ALw6s+eyYX5M78+d3TH8vVesduP1fvD4QV9HtZsr v6spKKXceY31umsgTH5asxma+9p5sZPVJVQ08VI9NFokkZ5X9uto2vceUDLs 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 ZZDrkkZmP19+4deLVfWeHSXz0gOBygvyaNxx+eV9+61TSxpwPWzf/JOkU/BD bKEhT/pM7PIP4P8AucjFvr+PYg26Mm1DeWo9BLeSPrKV4L/l6tqYKf8Ajf19 mAqaV6QkgefUOQL+P8b/AOv/ALH3dCQwpwPXlavnnrEovJH/AF1p/wBDD26e 018j1UkBiP8AV9vXzyf5jeMrct8p++4MfBJUyQ/KDdFQ8UYuwiQqJHFr86mH 1t7Bc4/Wlp/EehzAwEUdeGj/ACDoPe0qwVG18FTrS/ay46gWkYq6v5mSC7EE WKWZmvfn1H20etdbbH8hSYp/La60Btcdh9w/T8A79ytr/wCNvYp2pA1ih/pN /h6De8Ppv3H9Ef4OrmkqlHH5vfj6/wCw5HtU0JoaDpCJQTTpygqbAWI5+v8A rfkf7H2heLPz63q6yuQw1wkK31KEXDn/AAP4vb3UJxDDHWyDxHWWGstcElSD YqwsR/rj220R40qOtq5GD08x1VwLtxbg/wBf+I9pmSnDpUspxXh1JE4I+q/0 /P1/3j3XS3p06HX16f8AGuPt/r9Ga31P5v8A7z7Qz/HX5dGNu1Y/lXqUx+p/ 1yfbI6dbrAym5PFj9Lfn3vrXXBYxcfXn26zgA+vTQiHn1NjQMbDgD6n6XPHA /wBv7LpZRXj0+i6RX16kMFWwFgPyAef8PaIrq7iPPq4Yj7Oo8jfUX+n/ABFv d1WuR1VqkE9Q3Y/0P/EDn6X9u6R5cem69Q5G5sfyf9vf24qk5HAdJ3csaDh1 g12J4/PH+t/t/alSaCvHphzwz1gdzc2PN/qP969rIlqoI4dWDnQV8uoUjXaw tzxz7VAZHSdz5DiesDn6Lb/ig9qcdM9YHtfi3H9Pdl6ZPXBmvc/4e6+dOtdB L3xc9Ed6m/A6T7cb/bdd7j9+loIpB/RP+A9O29Tc2/8AzUX/AAjr/9Hbx6CF uguheSf+MHdPfX/xHG2fZovwr9g/wdBmXEsv+mP+HoXFdlIItx/vQ/HvfW0c qcdOMFc6gfT8fUm5/rx7oYwePS2OYg+nTzS5FgB9DYkfm/P4Bv7bZBx6UrKQ KdPdPkQdN9IN/wAn/evp7oVI+zp9XDfb08wVqhla4uLG17ng3/2F/bRSo6cr 1qyfKH/hMFsv5NfI/vP5E1nzS3Ts6q7t7Q3Z2ZUbTpelsLmabbk26slJkXw8 GWm35QzZKKiMmgTNDEz2uVHvILYPfy72HY9p2ReVY5VtLdIg/jsurQKaqeGa V9KnpStwQoFOA6A1P+EhuxXvb567x4/78JgP/tj+zY/eUuxx5Oj/AOyhv+tX VvqT/D1s5fBz4r0Pwn+JvS3xYx+9qvsaj6dwGUwMG9a7Bwbbq8+uT3Nm9yGq nwlNkMrBj2hfNGEKtRLcRhrgmwgTmzmGTmnmPdOYXthA104bwwxYLRFSmogE /DXgOPSdyGd2Pn0U7vH+XZu3uf8AmofE7+YFk+z9rx9bfFzrDPbPxvTdbt7L 1W48lu/N0/YYO7MfuFKxcLQQw127aCUxvA0p/hv6rsthJs/Olvtft7zFybHY P9duFwrmcMNIRTH2FaVOEYVrTu62GCxsg4nq1GUAhWAtcEW9x4SwNCaivTPV T3zA/l07t+Tfz6/l/fMrDdpbZ2jt74X5bL5HcOw8rt3L5LOb9XJ52LMJFgsz RVkOOwzRRx+MmpjkBY3+nuR+W+drfYuT+ceV5NveSbdEAWQMAsdFK9ykEt+R HTqyARunmem7sD+XLuzeX83Hpv8AmUwdqbXoNn9W9JVvU9b1NPt3MzbrzFdV 7d7Awi5qk3LFVrhaWiSTekchieFpCtO4vdltuz53t7X243TkVtvdrm4uxMJt Q0KA0baStNRPYRWvn1sSARGOmSa9Zupf5eG7esf5sfyT/mQ1HaW2MptTvbpv B9X4nquk29mKbdO2chh8b1DRNmshuOaqfDV9JLJ1nM6xRQrIBVxgn0Neu5c6 29/7dbFyONukW4s7ppTKWBVgTMdIWmoH9UZJp2/PrRcGJY6ZBr0Sjd38on5q 9E95fJXsP+WP839kfG/q/wCXuar9z9tdUdn9bT7vGz92Zl8pLldwdZ5mkocu tJUQT52tfHy+KjrKKOo8BlmSGF4xTbe5PK277RsVlz7ypLfX+2KEhmil0a0W lFlUkV+FdWWVqVoCSDcSoVUSpUjh0PeM/lD/ANzf5UHan8uHaXemVz++O28Z U1m6u+ezafPZ2kqN7ZTcm2M1kK2l2yM1kMjiNpY/HbZhoMfj4apnRV80rtLJ KSTSe5JufcXb+ebjaFS0tmAS3iKrSNVdQC2kAuSxZmI+QFAOqawZllK8PLpp +TX8qHe/fH8o/p/+WpjO6Nnbc3f1liumcfW9tZHaufrtqZd+rJ8nNWy0m26S tTN0q5gV4EIklYxaDqvf27sXuJbbR7j7nz2+1ySW87TkQh1DqJqU7iNJ00zQ Z6b8YRTtLpqDXq3HrzbFRsfrzrvZNRVxV9VsjYGyNm1GRpopIYMhU7S2xitv zZCnhlLSwQVsuNMqI5LIrAE3B9xxfTreXt7dqukSzO4B8g7FqfOgNOkbdzE/ OvVG/aX8qb5gdU/Knvz5O/yy/mRsr42r8rZf4p3l1l2p1y+99uw7vmnrK2q3 jseqgoczFS1v8WyVXX0yy0sVRQ1VbUIk8kEgjSWLD3F5av8Al/Z9g595Ylvv 3di3lil8NtGAEkFVxQBTQkMFUkAipUC4iMccc8RbTwI6Vu0/5L+Gwf8ALN7r +Be6PkLvjem/+/swvYO/e+83HlMjCnZtBncHuPb/APB9n5POVctL19jMht6G KehFWlTWrUVNQ7pNIqxp7j3Slm572rnC22aGKys18OO3Wg/SKsrVcKKyEMSG pRaKBUDNDck3CTqoCr5fL/P0TnsL+Sl/MA756Q+NnUnenzw6Oqcb8Nc3ss/H faGzOjc3jtkjD7TFJSyZnsrLxVeL3Jn93vh8PRUNEYIEp4oPuHmaSeUuRPZe 6vJ+z7rvu47Ryhdh90ST6l3nUyan/DEKFVTUWZqmpOkCgFOrfWxRtIVgajcT X19PL/UOmX/hQDszJdmfLT+Th15T71yXXG5N/wDee+dt47fu1RDJmtl7jyu6 +hoKLde2qevaKOqrNvZd0qqeOXSJPGquRc+3vZu7jsOW/c69Nqs8ENojmN/h dQk9UYjgGXBI4Vx1TbiFivW01AUY9ePRveof5X/yp3h82usfmf8AzEPllsj5 HZ342YquxPx62X1d1nL1ztygyk5rBHvTd1DIlPRwZVaitavlpqVKg1GRWFnq BBTxwsGdy5/5ftuVL/lfkrlyWxivmBuZJZfFYjHYhydNBpqaUWtBUk9J5bqN bZ7e1hK6/iJNfyHTVvn+WD8w9ifPb5B/Mn4T/LvrPpmk+W2BpcF3Nj+z+pqv sfd+0A0GIhyeQ6vnWojxUlUlRh0q8aKmSkWlmkMUwnhSMre05/5ZvOT9m5Y5 q5anum219UJimESPk0EuK0oaNStQKihJ6oLuFraKC4gLFDihoD9v+XoVP5df 8rGf4XdE/K34zdp9l4PvzqX5H7z3HlopYNv5XbG6k2pvDZ8+x9z4neclRU1m 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 62ytuVMTSf307JqqDZWJNMia3qITl5IJpljiBYlVJA5t7Pra5sSv1+4b8J42 UFdDBgTxPA0+fUwcqe1XuTzAIYtk5clhZzQFkoT5cDnPAYz0X7fnQPYuyN/1 +D7eyNBaggpMk2VweXps3ic1jq6IVFLVYGupXaGemmTi/BB4tf2Il5utIYob HY01zSj4qCg+degRz9yxzFyDvUm0c1WMkV0q1OpSta+agjPn0md77/ix1BTb R27GuKw9MoP2lIukyuVFqqudSGqKuUc3Y+m/09izlfYYzcHcd3czXbU48BTI oOggu43W4wmDUYrNcADBY/0vXHQSQZhg4YlVGr1XHI55/wASdR5/r7lqF9SV KUp5fLy60LNeyOKGtfMnj8/l0rIMnNDS/eTtTwUqNoE9S6wwtL/xyiJIaaX/ AAUEj2mvt5sbDwo5BrnPAAE/4OhFsnt7vPMUclzZ2yJZLxkkbQvz4kA9KKjz U/2prgmuh8io1ZTzCWKnmY2jjqQvrpxKeFLgA/g+3bLmKzuZ47aSMwysaLqr Rj6dLN29st226ze8t54rm3Rat4XfQedfPp3g3QyG4klHFiFYix/qTqFx7FkZ eVFUqtfs6Ab7UtT+kdXT/TbvmQKy1lSDYAfuEAcfgE2Pt02yN/bqpWnkOtLs rDKqtfnWvVbXyryb5Xt2oqpJmmkbb+Ij1sSWsiy29RuDa/vGb3VjSLmySKMU T6eP/L1nb9321Nt7eQRlzr+snJ+wlaf4OgBgksVW9rH/AGP+w/1/ccdTQ2Ga nTvExsLc3/4j8/X629+6r08wSf4/8b/2/v3Xus+Re+Kqx/WIf9Dof9uPfunw aoPt621/5KzX+AewyR9N99nA254O6J7X+n49m9p/Yj7egvun+5Z+zq126ni1 uP8AAf8AE+1QoTnosKj06h1NPFOpDKQfqCALqfwfrz9Pb8c0kLY4HpNLCsgP b0npIZIJowQSpkWzj6H1AWP5BP8AtvZtDIkgLA5pw6K3iaNgCMdaCvzQ2kN7 /KH5RYQVMlHLL8gty1NFVKkUghr6PI0lTSNJFOjwSxLUQqWWRZI2HDAgkewL OAZpf9MepPhJWKEj+Ef4B0UXPbQ/uZteXEvVvXVUmUydZkKt1hiM9fUvPUVT xQ08cNNBEZ5WISJEjW4CgAe2vLpxsmp49be/8g+sEP8ALr2NE1zH/pG7VJ+h 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 S6hpLAsAb+w9DbtdT29tER4ksioteFWIUV9BUivTiEsaefQGfBr5qdRfPz4/ Yj5I9G0m9KHr7M7p3VtKkpt/4Wj2/uRcrtCppqTKvNjaDK5qmSjeSrTwuKhi 4vdV9nHNfK258nbxJse7tEb1I0c+GxZaOKjJCmuM46cZGQ6W49HIRmIB5A/B F7G39D9Lj2G+q9Tk5v8Ak+9fi+VOt+Q9esulv6Ef7A+9VqcD8+t+lT1ieMNc Hm/+++vumpgaautaOo7UxHOliL2FgSo/1iOPe9fnTqmnTmmOoMtOCStm/wBY A3/raw593BqAemXWhwMdQpKdlBtqFh9GUg/X6/7H3vHTLKKcOiO9IfO7pX5A /K/5N/DrYlDvyDtv4ntjE7Rqtw4Chx2zao5XJUuLpTtPNU+YrqzLWqaxC/mp aayXIva3sVbryjuuzcubDzLetEdt3CvhBWJcUBJ1qVAHDyJ69JBLGiSGmg/t 6i/E/wCevSXzN3p8kNjdRUG/aPN/Fnsj/RZ2W+8tv0OFoKncwyG5cb5drVFH mcq+Vxf3G1ak+WVKdtJQ6PUQHuYOUN05WtNiu9zeEw7hB40Whix0UU94IFD3 jAr59bkheJYy9O4V6Ow7KFN2UH88j/D2Elrq86dMMaA0OeoRcH+0LX4+nt/r ZIAyc06jyObt6ubcc/4f4e/dJevUscjSowUmzXPBPH0P+9+9GlMmnW41OpTT PSsMBuhZTytx/h/W39PaY9L3U1WoNOnCiib7mmNjYTxfQcfrU/X8c+99XVSa enXy1O74TD80vlhBcnx/JvtoC3+O9su9v+TvaseXSKX4gfmf8PSwKkWSwJ9R azWBJ5Gr/W/Hu3TPW7l/IWcJ/LW6sFwT/fntYnn6E7uqeOR+Paeb4+HkOjKC TTEgp1cgH1cCwP8AW9/bXT6vqNKddsSHT/U83/23HvXWzXUvp1pnf8KoT/v9 ukxb6fGztf8A5O3XSj/X/N/b0X9m/wBv+TpPOP1Yv9XmOtDIfQf6w/3r2z0r 679+690/7UNt1bYP9Nx4M/7bKUp9p7z/AHDu/wDmk/8Ax09WTLxj+kP8PW5H TZ9EpaILIoAoaK/+IFJDxYj+n+398o5dpczXBIOZX/48epZEyIKlzgDHQ4fH 75h9l/FTf9Xu7YW2dubnx+48PBh9xQZWlZ8lBTUtSamMY2piljkp0qGI8gAb UFHvIj2E5y5W5Fl3W35ot5PBuCAJUFXQD0rxGcgU6jjne35huzbXmwNExSup GPxfIeh6O12h/Mj6w7r673Ptmp66xvX27d5V2ArN55SjqpIafc1Nt+RqqCmr 4XhgkllWoVf3PU5RbXPA9528l+4ntYl+u8Rc5RSwwwOypIpRwQCQM4J+Q6x5 53vOb73Z5tkPLDQbhM48Rl7lK+fDzPr1WNlMuM5uau3HjIqqrxtS0vilncyv 5GsJaqFHCyq09uAw4jAUfT3gv94f3B2jnvmNxtd44tEbAbgfz9OpV9stkn5X 2qCCeM62QE4zniD8+o5zzK4URkSXNhKpVhb8EEfn3j2u30GvVj5GvUktuZft iioPP59JjftMm9dm7k2pVJVxU+fxNXjJ2pJvBUFKiIhkilABjaX9NwbgH2IO WLuPZN/2nc3YNFBMrkEVqAf9VPn0hury+WGWSyOm7Aqrfwn1x0QHa/TnyU6o NanRHcsO1IazEVmEmwGfpkxdelHknRqqKPLxRRpLVFYwEqdRkjB9JBJ99B7U e0fuRDtjx73aJuMfcEkOltZ8qtQMB6V6DVt75+5/KkMtnulpJPt5qBIiioUf YK/n0bTpbbm5Nn7S3zm+0ZMXiuxewN101ZFiMBWfx2i/heNo4qdKmOeRp5tM 87PL6iCJXJJ9nnMs/L3tf7c33LcG+p492WclWVgx8sA4oMdRnv3M27e6PO1l v52sx2drbaBqBqTWpJ/ydGNoMnBFTUqLZWjhjQwhwzR6RY3LXu1/r/j75s3U kkt1cSatUWs5pxBNeHUtLNGLdJNAAIGD5UAH+Tp0j3FRxkh1sQ1wSFYc/wCA HH097h1Iysrk8f20p0invYPDFEX7KdFu7TqNz47dmJ3Tt/IymhpzGlOvm0xY +Q1H3DxRuLrSySzHUHNlt9effW77mH3gthblWz9tOaNxjtN6tCRbtIQsc8bf g1HGpfRuIOOsWvdvkCDcr/ct4mszJtt3GmoqKmN088ZocZHAjrFubtbsvcm2 v7rTeWmoWmnqEyFfk/JR0dVVxhJayKnikfzVJBYr/XUbj3n7eb9sVjb3G5S3 VnbRGOjza41GgcAWB4fZ1jbsXIPLu1bil425y3UMMutLejvR65IUjBOKnpT/ AB+21jutIK/MTSySZTLkmXIyxtTy1avbXKlM95I4j/ZLDU17/T3yu+9h767T z7f7fyXyjeibl+ylZppx8E01KAIfMKMfMnrL3kyK+gW73ndbQQyPGI4otWVS tanyqfT0x0Z2Hsf+zFUTN/QiIkCxNv3AoH494gwzsBQso/LoWy7pIyOFFMea 9L7r7s/KY3fGycl/EloYKbdWDeSsmnVBSRPXxQyztciyxJLcn6WHsX8vyg7l BrAMJORwqKcK/Pqm07teW+4280cqqUauei99odCdj7+7X7G3rkMPKMbk+xN7 0m0MSMNOcLLVLM64/P10FOohkptwpCSapRqOsEk39g+a4Fjv1xstjtl2fEer T0Z2ILE6A1K0WuBWnW9yF3dXF2SgCtIWxQ1r9nQjfGXMZTq6lzud3DSV/Tu2 8bsyjg3fg65chVYWfflRu6CnmnxaRUbTTyZPDUzMsQJVdRJt7lv2osbDZ+a9 3vuZ453iMLJFO8ZUhadqmvoeqzyyWG2vKk3hoBktxI+XSi/2a5KeaVKKEzQL JIkErL4jJEJG8L6GAdA8VjY8i/s4SS4SWSS3nYxNI2mpriuPsr1DV3z/ACRX Motpy1DnBpX5Y6eYPl5XRj1uILAAfvEm/wDwUj6n2eW+47sGTROdHy6SL7jc xlWaK50qDgAn/N0Wz5B7tqu89ydf7lG4YKV9jUG4qH+H1KEffjPLTDXHUrZY TCaccMLG/sT2+7XDRLFdULV9M9Td7Ffeci9vt/vTzfts13ZTgCsZGpf966T/ AFlTYTAZHKZPMYjF1O4JJscuLy9esVUaOBabJQ1MwmYyNpRpoTpWxsBb2ebf HtSRXMzWSNK6UNfMnz6mz3t+8n7Qc2cs2lxyxPIu6rKfEtwpWVWPkTXT+fVo Wz/k5s2hxdNQZPLfe1EZlZ6tgIYwJneQwRKBYRRl7KTzYc+3bRoDBHC7OCvp w/4rrFe2+8JZ20S29xs9YlNKstSQOGfWnn0IUPyK6uqlBlrqOxUf5yWK5H9D cc+zaNGlCiO6kTPn05L78chXCA3ezDxP9KP8o6dcV3h1jisrid0Yqqiiye38 rQ5ikkp2QN/ks6vOlomLFXpi44ufZg0TlZFlv0dfQmv2eXHpHbe7ntOb+O+F k0F4mAUA/wAnR6M18s/jDtjNx77odzbX3NuDceJjaGHZ1BS5reVRHLGCMdWT 0sP3ONWOUaXFTLGFI/PvAblnkj3Q5W+9lu8217Nc3Ht7uMLNJLwhjdlJUhjg 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 naHc9D17j8zE1TiV3jvbsDZuzNq1+aplkiNbjcJX51K2eDUoqFpzGSAxPtnn /lyLmv3xsdhuZCttNBAZCuG0Rxu7hT5FgukHyrXy6vKmu4Cn06I7SfzM/kF0 H1n0b8u9o/zYu3/lh8jszunZ2d+R3wb3j0xvWk6b/uNuYzVu59r7QzNRsnH7 Yo6/ZdH46Warx0lMpml82PYpAFmFp5D2feL/AHblq49urbbtjWN1tr9J0M3i JhHceIWIkOQGBwKPk1F/CDFl8Ki0wer5P5o/zM+Tu7Pkp8Cv5dnwm7Mb497y +bWCXszevfz4imye69idXTwVlZQ4rasFanjo8y2KwmTq6uWHx1ckkNPTRTU6 ySye4j5A5Y2G32Lm/nXmmx+ttdqfwkt9RCSS4BLkcVqygA1ABYkNQDpmJF0v I4qB0Ce1+2fm1/Ku/ma/Ef4id5fL/fnzk+L/AM5oanb+3M73HiaCn7Q6w35H kv4BHkKDJ0dTkKs0FPuOsofLB9zLR1WPrZP2YaimWVzS523lX3A5D5k5k2nl uLad+2mjMsDHwpY6aiCpoK6Q2aBgyjJDUF+ySNnC0I6vo+c3yJl+IXw9+SHy ZpMNBuLKdL9Vbj3fgsFWtIuPym5o0hxm2aTJtC0c38KbcGRpjVBGVzTq4Ugk EQ7yjsg5m5m2PYWk0R3VwqMw4hOLEf0tINPn0zGC7gVxXrXr+NPxj/nNfKL4 r9GfPzq3+alvGD5E90z4ntCk6B7AwmOx3xUx3XGVz9bGu2azBYDC51/NTYWl Wd6eHFGN0c0yukqirM077v3tfy/zDu3J1/7exnZrUGI3EbE3ZkCjuDMy/ixU t/SoQdPT7NErGMx9v8+rDf5u3Ynb+wOi+goa3+YJ0z/Ljxu5N14+l+Q3YdPT boznae74qPE4htwbR+MGLpcDltxZFqPIVFZO4elp6qWM0Uc08CNKsgL9t7Lb rzdt4K8m3O+OkZ+mjqqxJUtpe6JYKKjSMEqDqIBNKNRIhdj4ZJpw/wA/VaP8 m35o917m/mVd6/D6o+WffXy++MA6KrOz+r98fJzYWT2L2nS5zDVWxpHydFjN yY7Hbqo9vZKPcdbTp5lWlyUEdPVxQwm+od+53K20wci7RzKnLlntu/fWCKWO 1kEkJVg+CVJQsNKk0NVOpST1W5iQQiQIA1aY6FX+V4D/AMP6fzvfSWtPsj0j 6m+8cF9L+y33A/6c/wC1f2Sf8dbrVyK20Q+3pn/kBnT8kv50BsePmc5tbn/j 7u6OP9f3f3kFdi9qwP8Ao1/8+Q9M3wolt/pP83WynKdVyD/if9v9PcH9Fjrx YceobyBPqP8AiPfumGNMnrih8jaren/ez9Pfj1Vakk+XT/RxBSB/X+n4t/gf ofbMjVx8+liIBQDpSyrZYT9P2zx/tubn/D230rlGEp1LouJIT/SZD9P6Ov8A r+/dOR/COvl1fKHGnDfPb5e0TKUMHyV7JkEa3UA1W6K2ouQfyVk/3n2sXgOi 2Yd1Pmf8PU06msb+oXBUkfUXsSfra3u3TIFSB1u1fyHCF/ls9WD+u+O1jx/j u+p45P8Ah7TSmrA/IdLY/wCzUfb/AIerjoZQHFxYEEX+v+P9P8PbXTyEKwJ4 dSGlViAL/n6/8j976eDqfPrTa/4VOUk8+9ujZo45GSf449uU0ZC3jM0G46Oo kQt+XERvb629vR/2b/6vLpNcGksPp/sjrQrH0H+sPbHSzr3v3XupFJVTUVXS 1tM2ioo6mCrp3sGCT00qTQsVPBCyIDb8+6uqujo4qrAg/YcHrwJBBHHo5q/z BPlCqIi71xwWONI0vtvEEhI0CJyYCSQq+4xPs37dsSTsRqST/aycSan8XS/9 6XunT42Ouv8AhwP5Q/X++2Pv9b/3cxP1H0/3Rbj3b/Wc9u/+jF/1Uk/6C6ob +5Iprx1238wT5PvYybyxUhH0L7YwzkW+hGqnNj70PZz28X4dkYD5Syj/AJ+6 8b+5ZdLMD8yAT+3j1Ni/mK/K2G3h33QRFTdWj23iFN/8bQWYW/qOPbD+yXtp JXxOXqg+ssh/5+619dc+T/y6cZP5lHy1lXTJvjDuLWu20sFqNvyW+1vf2wvs T7YIary8w/5vTU/Zr6qLy4HCT+XUI/zGflcST/fvHWJuV/u1htJ/2H29re3x 7Je2o/51/wD6qy/9BdeN5cEU8THWCT+Yh8p5eJN64pxxw218MwNv8GgI9ur7 M+3aGqbGwPyllH/P3VGnlegchh8wOsEH8wf5Q0sjS0+8sVFI36nTbGHViPwL iC4Uf0HHtTP7SciXUaRXO1SSRrwDTSkD9rdJkjSMuUUDUc0x1JP8xP5VMhV9 845786221h9d/wCuoQD6e049mfboEEbDT/m7JT/j3W2VXFGGOvL/ADE/lWos N9Y88W9W28Qwt/iGgI92/wBZz27rX9w/9VJP+gumjbQH8HXcn8xP5VSxtE+9 8W0bDSyHa+EKsP8AFTTFSf8AX9up7R8gxurpszBxwIlkBH56um2srdvijqPQ 8P2dM8Xzz+SMMwnj3RhFlB1B/wC62FOlv9UAafSCP9b2bScg8tywG3khuGg/ hNxMR+wv0XNy3szyeMbJPF9QKf4KdKan/mLfK6Ngyb7xYItydr4ZuOOCGpyp HHtJ/rWclHQP3W1BUj9R+J4n4uPWjy7tVa+AT+Z6cZP5jPyxqkAk33iVt+Yd q4WFj/rmOAXv7svtnycuP3a35yP/AJ+qPsG2yKdUT04U1HqJL8+PlBUoRNvy lcOOQMBjVBB/FljH49qY/b7lWFqxbewI/pt/n6Lbjkfl+5o8tvISDXEjj/A3 XSfOr5NEof8ASC9lFgPsowvHC2AcKukADgfQe16cnbGDrWGTUP8Ahjf5+kzc jcusSTBNn0mk/Z8XTpB87/kz+h99QTpfVoqsPSVSFv8AVFJ/IpYX+tr/AOPt 88qbQ6lWWUoeIMjGv7T01JyBy1KpSS3mZPQzSH/L1Jf5wfIqoI8u6sUL2F49 u42MD62ACoAAL+7xcsbNFQR25AHzPSQ+2PJxXSduan+nb/P1Og+aPyCa5O6s YzWX64DHsTb+t0PPtUNj25KaIyB0yvtZyTHw2x6H/hjdOSfM75AvYtunGfi4 /u/jgAfwQBGB/vft5dos1KkIcdNf61XJOQdsan+nbpzj+ZvyCOkHdlAQDwP4 FjgBbjgeO1yPapbO3T4Vx6dNv7ScjyJoO2vprWniNx9a1rXqbH8yO/pbK27q UAEAKMPQqL/14Qe3wgWgUAD7OmJPZvkCX+02mQ/83X/z9TYvlx3tISW3ZT3t b/i1Uf0/5J4v7UJNInw06Rn2M9tXYtJs8pHp4z/5+n2l+X3flOi+DeMMdh/Y xVIL3v8AnTex9vpeXKEujLq+aj/B0yfYX2vqCmwsD6+K9f8AD0+Y35nfIWgd pKPedPSPLfymDD4+NpCSeXZYwWIN/rf2+u73qMzRsoJp5Ywa9MTfd+9r3qf3 PPWnncSk/lnHS0pPnh8oKcDx9h/TgH+E0BNuLcmL2+m/biihFeOlSfhGa/n0 1/rAe16BANqusDyuZR/l6VtD/MM+V8ITx9jxcWtrwWMe3+HqiIP+Pu/7+3Go JaM09V/2en09jPbiOmiyvgK/8pcn8v8AUenjHfzBvlNSVWbrBvrG1J3JQ0WO zlJX7ZxNXQZKlxszVGOSoo5YvEXpJmLK30P5BHtUnN++ItvH4sWmIkrVBgkU 416F2ycjcucu201ntcM4gdwza5WcmnDJ/wAlOnPZf8wn5X7Fye4crtnsiChr N2ZGly24mfbmFqVylfRF2pJZUqKWTQKcyHSqaVH9OPe9w5t3rcY7aO7ljZYf g7Bgef7ejeDY9st3laGN118aNx/l01Yv5o/IjH1Yq4d7RSo2Trsy1BV4mgqs U+SyLCSrqnxksbUbtNKoaxQrqVTbj2qbnvmORVQzxUAAH6YrQcBUU4dNDlrZ FdWWCQca95zX8uldtj53fJ/bFJnKPCdiikg3FkqjMZRXw2LqWkytXTzUdVka VqmCRqGrqaSdo3eHQWQ29p7nm/e7uSGWeSIyRpoU6B8Na0PrkA56cj2LbYlZ FibSeNW6c8H84/kxg9tttHH9gRR4ATST09JNgsTVS46abyGabGVdTTy1VBK5 lY6o2UqWJFrn3ubnDfZ7k3bzR+MQKnQMkfnw+XWk5f2iNJokhk8FxldZI/LH QLb67F3Z2Xno9y7xyMeTyyY+ixa1MdNFTKaHHoUpo2jiGlmRWNz9ST7Ib/cL zdLs3l7IGuTTNKCgHCnDpvlzlvZ+U9vl2zY4XitGnaWhcsdT01Z9DTh5dMVP KSU/1v8AbD/e7+03R5wp08xOCAL8j6f73+Pfun/7RCPPp0p5dXB4P45+tv8A iffumOplS5NLIqnlggsfobyxqCxH0Ck8/wCHv3WwaEHrbD/k/CRfgr15KpKO u8ex5EYDkgbrrAkiH6FGKn2NNkp9AgYYJP2cegHzAabkxrmgPVxOMrFr6SKo NgzLokTi6yJw1+fqRyP8D7L7uA28zR+Xl9nTtvN40Qfz8+pFhfgf8aH49t+Q 6vQAk0z1yjb9yPg/5xP+hh791UPnCnrQP+VIUfLX5SWX9Xem9ri9xf7mM29k L5dvt6Go+BM+X+QdFH7L1fwiMEE2aoZNB4NofqSb/n3Q9bHkPn1uQfyPdt/w z+WZ0L9ytny+R7Kzi2BDLDkOwM+YfUeTqjjBv9CD7Ee2S+Fbx/aegnvkKTX0 pbFAB/Lq1CSkeFgdLFforW5sPpe9j7PhciUEBh0GmtipNeHXHRf63H++/Hur SAUB6ssI9OHWdCI7fUq3Fj9V/wBb/X9o5DrzXpanofLp1gp1sWIP9U/xB/1+ faGSSvA56WJGB3Hj1wkUD/iD/Tnj3qM8a8erHy6gMQouDz/iPz7d6Rmnlw6x qbEc/W4/2J+nupNB8+mxQn59TqdtLL/iCP8Aef8AjXtmTPn08BXHU6M2dr2s Tx/rf74e0jjz6eTh1J5H0JF/r7p08GFBUddhiFt+b/X/AA97BGT59VYgnHXB m4PPP+x97U1YV6oSMjz6wkgfX/evb3SWp9eu/euvf4eo7tc/X8C/19uqMdbH Drh9Pdut9cubD1WubWJP+3t/T3XFaUz17rq5/qf9ufduvdSIibLyfr/vHttv xetOnUrUg+nTpCbEC/8Are2n4DpWvwgjpxezxI97MhAtfix4+n4N/aCTtZh5 dHdu40hT0GveQP8AoF74uf8AmiHb1h/rddblFvaSQ9jn5Ho7tf7RPtHX/9Ld 1+NP/ZOHx8/8Qd1J/wC+/wBve6r8K/Z1Zvib7ehtBIvb3bqvXLWf6e/de671 /S4sD+bk+/daH29crg/Sx/33+3Hv3Xs+vXJTZgf6EH/bH37rfWh185f+E3v8 wz5FfMz5Sd9df5n46Q7H7i7x3/2JtKHcPZO5MdnosBubNT5DGpmMfT7Br4KL ICCQeSNJ5VVuAx+vvLnlP3v5M2Xljl/aLyG++rtrSON9MaFdSrQ6SZBUehoO lSTIqqDWoHRV/wDoFY/md/8AO9+Ln/o1t1f/AGtvYg/4ILkP/fO4f84k/wCt vVvHT59buv8AK6+NfY3w8+Avxr+NXbM+3Kjsbqbaebwu6J9oZOpzO25K3Ib2 3NuGnOKydZj8VU1cAoMvEGZ6eIiQMLEAE4q8/b7Zczc4b7vm3K4sriVWTWAG oI0XIBIGVPmek0hDOWHDqqTuT+UJ86+iPmf3r8y/5TPyu6s6QqvlDXvuHvDp ru7alTltlZDdtXWT5TJZjF1FFtbelFW09Tna6ryFMsuPpa3Gz11TFFVPTzGJ ZC2z3I5T3flfaeWPcTl64u128aYJoHCuEAACmrIR2gKe4hgqkqGFerq6FQsi 8Oh3/lvfypu/OiPlb25/MG+eXyN2/wDJH5hdp7RGwaGo2Lgp8F1/sPakpwq1 keM+4x2Aatq2oNv0mPpIIMZj6LH0UcoCTSztKpRzv7hbRu/L228m8o7K9jy1 byeIRIwaSR+6mrLUFWLElmZmpkAU6rJIukIinT0DGQ/lTfzEOif5g3ym+UHw Q+VfQfWnVnzYysGY7fpO3ev9w7z3515X1FU+RyeT2Bt6hpl21uXM4nL5Cvqs RLWZGgpwKzwVcEyxrITNfcLkzd+TeX9g5t5fvJ9w2pdMJhkVI5ABQCRj3KpA UPpVj21Ugkjr3jIyhXU1HQgfy/8A+WV2T/LK+Hf8xXZfY3au1O2j3JP292dt rcG36bM02VjwS9UZrERnegytFQ07bryEkP3NWaMNS+WRghtb2k5y57see+ZO S7qy2+S2+lEMTKxUjV4oPZQk6BwXVmnHrbuHZCBw6os/k6fE3+Z/3x/KhyW1 fhj8sOkOt+h/kbvLtzYPbuy+4Nm5+q3Z1ysYoNl7r3D03u/bVHmWmG/9sIse Roa2CmNNUIZaSeOSZ5Elf3L5i5D2n3DS45n5dup92sYoZIXhdQkvF0WZGI/s 2+FlJqMMCBQuyNGH7lNR1aL/ADS/h5sj4Bf8JyOxPi3sfLVO5MZ1nH1Aczu3 I0sWPrN47vz/AMgdnbi3buWooYZJosdDlM5kpvtqYSSfa0ixQ63Ka2AXIHMt 3zh72WO/3cYSSczUQGoRFtpFRQfOigVOKmpoK9URi8wY9ARsn+VP/Mp+a3wj +GXxk7H+anTj/wAuXJ9ddCdr1NPS9f5ui+Tw2jNtLC7rw3UtfXRU1RtTcGM2 Q+Wko8PkGr6b9uCmmqoJ2p0hJtc+4XJHK/NXM+/WXK9z/XZZ7iIHxFNrr1sj TAYdS9NTrQ5LBSKk9b1orMwXv6tv/mS/ylqb5d7E+MeY+N/aA+NfyP8AhLkc PXfGjsOXGTZ3buPxWFpcBT0uz91UUDfxA42OXa2PqKeriWoaCWGRZKeoiqJY zHPI/uGeW7vfot72/wCu2PdVIuo66WJbVV0PCvewIxWooykA9Mo6jVqFVbj0 U3rr+Ub85/kX8uejfld/NU+SvSXZlP8AFmdcv0h0n8ctoZnAbJqd3U9fTZel 3Tu+tzeF24YC2dxtHX1cMNNUy1slDTw+aCmiMTiG+9xeVNk5a3fl3292K6t3 3AUnnuXVpNBBBRApb8JZQSQFDE0LGo8fDSN44QQG4noyG7/5anbWX/nCbC/m QQ742Oer9pfHur6eruv2gzz9gVmcqcBujEjMU1QtGdvjFCfOxuQ8wm0o3pvb 2Q23PNhF7Z3nIxs5f3hJeicSdvhhQyHSRXVq7T5U6YI02zQBamta/s6Rn84X +XH238/eq+i6LpDf2y+vO2vjv3ZSdw7Ql7Hp8u2z83KmNjo5KHIVmFxuZrqC soK+ipKqEmjqIJljkikC6wwf9s+eNt5O3Ddm3ayln229tDC/hU1rmtQCQCCC QcgjBHVLc+A0hdCVZaGnVgnReG71xXT3XtJ8k9zbK3l37S4S/aW6ut8ZUYTY 2a3VJkK2olrds4qrpKCoocclHLBGFMEV3jZgoB9gvdpNom3K9fY4JYtnL/pJ KayKlBhyCQTWp4nB6RvTU2kdvVF/aH8pn5s9D/Lbu75Y/wArT5RdZdMD5K5G bPdwdOdy7Yq8ltCp3LW11TmMlX42ppdtbxx+SoHz9dVV9EJqKlrsbLWzwx1D 076Pcubf7jcq7xy1tPLfuFy9cXX0ChYJ4HAcIAAAashB0gK1GKsFBKgivStL mJ4ljuYidPAjj0PX8vP+WR3X0D8ke3PnR81fkHiPkR8uO3ttR7JNfs3DVGG2 RsnajNh1raXHmrx+FevrZqDbtDQUsUGOoKLH0EDIiSPM7qT868+7VvGx7byj yrszWPLVtIZKO2qSR+6hNC1BVmYkszMxqSAAOqT3CsiwxJpiGeg66y/kzUkm +v5rFX8g8/1zvfYn8wvNV1Zsc7Zw+SffXU9NLvDeG9MXkKnJZvHQQwZjDbgy mIrkWgmaGapxgEhKafa3cPdFxae3a7JDPFebIgEmth4cx0IhFFNSGUOvcKgP jPXjdGlr4ZIMfH0PRs/h9sHdnwV+C+D6d/mCd99JZ7Z/VsFb1nSduZDNZDau z67p/Op/CNqbQ3vX79hxyQ5qhpa+fD04Ekq1NEtNEpaVSGDPM97b83c3Tbny Zs93Hc3BEphCh3Ey9zvGI69pIDnhRtR4dUlYTTF4FNTmnz+X+Hqhv/hOX8Z9 v5P5V/LL5N7WyeV3n0T0JWb2+OnxY3XmqesipqzF703xl9yZGv29T1pZaFaT YcdO1QkVisu4XZgHlf3MXvhzBPHy7y3sFxGsW8XgjubtFIqGSNVAanGslaV8 ox5AdLb6Q+HFGR3tk9Dj/Ol2Zvfs7+br/KL2L1r2NJ1B2RuDA7sj2D2bBiYM +dlbuxnYNVncBnKjA1MsEOaxseSxccVZSswE9HLKnN7Ep9rLu1sfbb3Ju7+x FzYo6eJESV1oYwrLqFdJoSVPkwB6paMFtrkstV8x0eL47fy5vmDu755bX+f/ APMa706Z7L3/ANK7LrtjdA9dfH/bOdwGxcB/EKbMUUu7cuu4Mdi5qOqjj3BX VKUka1cktfUrJJUCOnhiIT3vnjlm25PuOTeR9ouoLK6lElxLcOrSNSh0DSTU dqippRRQCrE9NPcRiEwwIQCck8fs6Ze1v5b/AM4OlvmN358vP5Z/f3ROwm+W FFSyd49TfIrZ2Yzu2qPeFOWlbe2zK3DYbPo9T/EpZq+CKaGnanqauojdqink VEc27njlPdeWNm5a592a8mG3E/TzWzqrlP8AfbhiuKUUkE1Cqe0ip2lzE0SR zxk6eBHVj/wP+PneHxq6IpNkfIz5Mbw+VPcGXz+R3TuvsHdE1QcRh5MhHBHT bM2FSVyLk6baeFjhLq9UfPU1M0kmiGPxwoB+b942jft4a72TYYtu2xUCJGnx NTi8hGC7egwAAKk1JZllWR6pGFT/AFcesH8xL4g4353fEHtn421GTxm3txbp pMTnuud3ZWCpqKHZ3Ze0snT5naW4apKJXr/sVnhkpKvwAymjq5QoJIBvyTzN JyhzLtu+rGzwRkrKgoC8TjS6iuK8CK41AdWhl8KRX8vP7Ogw/lSfAmo/l2/G BupN07pwnYHbO8+xd1dn9vdhYGPKrj907jzNRFQ4aKlmzkUWaqabCbZx9NFr qVDvVyVEn+7Lkw9xOcV525g/eVvbPBtsUCRQxtSqKuWrp7QWck48go8urXEw mfUoogFAOkF8E/5eW+vi18pP5jPeHYO9Nh732Z82OyF3btnam3qXPxZbbu35 dx9h5Wvw28XytHTUE9RV43eiQE0byJqjk5sVJWc3862fMPL/ACPtNlaTRXW0 waGditGbTGAyUNcFCe6nEdWmnEkcKKCCg6Ix1b/KM/mE/GzD9+/E74y/NHqP ZfwF76zm8szM259gZjP/ACL67xG98UcRuHaex5/sU23QZDNYSGHGVOWNcyGF Pu46SKpLhhbuHuTyZvsmz8x79ytcy842aovZIFtpWjaqvIK6iFarBNPHtLFa dONcQuUlaM+MP2Hoz/xa/lEt19/Kf7A/ls/IHfe3t0pv/cHZmWr989Y0mUNH tqXdO4MJujY2bwtFualx9VV5fZ+ewNPUTRSosM4jMYYBywD3MPuV9Z7jWfPW y2jxmFIgI5SKsFVkkVipIAdWIBGRx6uZwzidRgdAR1D/AC8v5x+HwPQXxq3l /MO6o2N8U+gc/gfst/8AQm2dz7d+TW+OutrRvQ4TrzLZTJ4GHFQ42HCSfaQ/ c1tVHAoieb7xqeIE43Lnb2xll3nfbTku5m5hvEasdw6NaxyvlpAA1a6smgBO QNNT04ZYjqIjOo/s6PH/ADKv5bm8/mBvT46/Jf4091Ufx5+Y/wATcpV1nUm/ twYefceztwYGsq4sjNtPetJTxVFasUWQSVo6laesikhrKqCoppI5gYwpyJz1 a8tWm9bFvu1m95Z3FQJo1bS6sBQPGcCtKVFVNVUqwIzWKQJqVhVT0Cvx5/lh /MHsz5udZ/Pb+aH8hOou3Owvj1hJ8T8eun/j9tjMYDrPaOWm+9YbuzFXnMXh KmerpavIy1qU0dPLJPkBDJLUeGmip/ZxvXPvLVlyrf8AJ/IOzXNtZXr1uZrh laV1x2KFJFDQLWoAWoAqxbqxlUIUjWleJPV0Xf3Seyfkr0f2z8feyoaufYfc mw9xbA3P/D5EiyVJj9wUMlMuUxc0qSRRZXD1fiq6ZnVkE8CagVuDFm07pdbB u227zYEC7tplkWvAlTWh+TDB+R6ohIOocR1rcYn+Tx/N9ouitt/y+6X+Yf0x tv4L7T3RQTYff2y9pb3258oaTYOL3U26sftGhqcZSUMFFHSZJvNFAueMKSqs TTvRqKczhJ7m+2r7vPzk3JV0/NskZrG7o1oZCmguQak1GCfD9TQMdXT7SxA6 ynf/AC6Ob/MW/lR919376+A3evw/7c2Lh+3vgNQ0e3Nobe+UY3PvfY+/8Ljz gJqDP7szOPo87mazeJqcHqyE81O75DziVZ6eeGNyF+SfcXatptOcNo5l2yVt s3glna00xyRsdVVRSVUJ3doBotKaWBI6bjmUag4wfTps+Kf8sn5n9W/zNMx/ MZ+R3yH6P7d3D210pnOvO39sbE2du7ZMW1svV0eFx+18J1VS14ydNkNlbTxu z8XT/cZSogyFYZKmV01adbvMPP3K+48hx8k7Js13bQ212ssLyOj61BYs0pFK O5djRAVHaAaVp53R4vDVTSvQ3fET+Xf2P8bf5k/8wX5s7n3/ALH3FsT5gy7e fZWzcBT5+Pd+1Bh87jsrMN1TZGjgw0nlhomVftJpvURewv7KuZOdbHfeR+T+ VoLOVLvbdWt206H1AjsoS3n5gdNytrjWOnDpn/lr/wAu7sn4QdrfPff+/t/b F3rjvlt303bWzaHZ1Nn4K3auHOb37lRit0NmqOkp5sn4d3QrekaSLVE/NtN7 c986WPNe3cnWVnZzRPttn4LlytHakY1JpJNOw/FQ5HTdzIHWIBeAoerTJ4ym oAEj8f1+v5/2PuP1YMB69Fj8CPPqA0RkcAr9Lfnj6/7D3fpKU1kevTnBSGw4 Ki5/oBx9P9vf22ZKHAr0oSMLTFW6eoE0kErf6/6w/wCI9tY9M9KQKCnT3UH0 Qiw5jXk/UcLf/b+6rwP2np+T4U+zqL9yUIVbLb+h5uebj8j3vqgcgUHDr5xX 81LbEGzf5qPzApKbHwYuhynYmH3XS09PGsMBTP7bwtfVVUcaALqqamR5Ht9X Zj+fata6V+zpFNh89Ft/iVGSCsgYEE8/W+ki/u3TQwa1HW7t/IgJ/wCG2Oqi R/zGvapABuLf3vqiOfaeXDfl0si/s1/P/D1cVGwJB5vex/pa3+HP59tdX6lA AFT/AF1f7C3vfV0+JadULf8AChzoOTsr4cbZ7bx2EOUrej98pU7lqKenWSqo utt90Mm2NzVUzhTKcfQ5B6GaQcqgu9uCfd4W/UZCcEdauk1RB14qevmP742p X7I3ZnNsZFCs+LrpYonN9FTRO3loauJj+uGppXVlP+P+HurDSxHT0bh0VgfL pKe69Ode9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691Ijf+tr/AJ/1uOfd1PketdT4nsQPx782Rq8+qEUN fI8enGKS3pY8fj/X/p78e4VAz1RG0kqxx1NjP496Q0PVZBRj6dS4nt/vubce 3a0PyPTfTpC9wDf6W4/2/wCfz9PemwQade6daeQ6iQ9uLf0/2/Hu2CPl17p8 gkBCn8EfX/e/z/X34GuDx6bPHpzhcCwuOf8AH83P0/r7t17h04RtyD/Q/wC+ PvXWz8uHTvTy6fzx/wAa+nHvdaZ610+08lyBccj/AHxB4uPdh/Lr3U9G0kfS 17/0/wB5/wAfdSKde6doJeQLix+v/GvfumWWhz8PTxBJYgX/AON8fj/H250z 08wTXsPpe9/+N+6kefXuneJx9b86f+Ke/A4p17p4ge6gXH0/3w964HrfTrTS Wvf+vP4P5/p/Ue79a6fIJOf6/wCsf8PfuvdOsUgHpJFvwfxf+l/ej6jj17p0 gktYk8j6X+luP8f6+/Dh17p6gk9IPH1+n+x+n1+vvfVkbSa+XTtG/OoEf7H6 f7H+ht791d0p3Dh1xrpp5YkpKKKSprqmWGKjpadWknq6uplWlx9HAigmSatr 5Y0jAF3/AAPfumjjrd++H3TM3x7+M3S/VVXTx0+X23srHS7ojQctujNF85uJ nY+qSVMrkJIyx/CAfj3IW3QrFZQwniBU/acnqNdzuDcX08wylaD7Bjo3+2Kv RUS0+q8VSmuMj9KyqSCD+CSo+n+Htnd4gUR1HcvH7Or7fIFkZNWG/wAPS1YH k/X+v+sDYf7e3sgUjHRsQa169Ffyx2B/zif9DD3fHnw60AajHWgF8sKqCH5b fKWN2CMO9d6MPUPzUx/UfgX9kLfE329DMDtXPl/k6KR2JVR1OGaOn1TyhalI 4kUl5ZZEEaRxqLks8jWA+t/dT14YIr19AP4RdQP0b8Qvjj1TJAaes2j1JtCn y0b2WQ5rIYyLLZeSVVAVZXr699Q/B9nUNEijWvAdBO7/AF7maUnix6NAYg3p eMFfzwbf4Hk+1AlYZB6TGIEUK46gy0J5Kf6+kH6f4D8m/t0XJNNVK9Nm2IBK 8OscNIXblLKtixvyTf8AT9bX/r71JOVBIOT1uKEs3d8PTk40EKBZfoBf6Xt/ h7RKSy1PS6QUAAGOoM1luTwOR/j/AMbHt+PP29JmoufLppcFrseLfQf1/wB4 P59v9IHfJx1jH9OB/vPH+8fn3XSOqBzmo6mRnnj63HP/AAYfj3RxTp1GJz6d SlY6iP6Xt/sD7TMK162HYEtXJ6kCawsfx/sfbH29OeJXzp15pbk2v/xT37Pl 1ouCa1z1xL6bf4fW30v/AE/w9uKgNDXPWjIaAD0668gvexva3JFvr/vft0qR 1QrTz66aQngfQix5v7sq+Z68OsXu/W+umNhcf19+6910CWHJI5/HH4Hv1M18 +vdcx/j/AE/3n37rYFes0bgWW3N/9h/X3Rl8+nVBPeT0507XZf8AX/3v2y/w 9Ko+FPXp2T/NOBY/S39QRyPZfJkkEY6M7WvaPLUOg17xBPQve5P/AD4/t/8A 3nrrcvHtFIao/wBh6ElsAJF+0f4ev//T3cvjUxHxx+PigA/8YN6k/wDff7eP vS/CPs60ynUe7z6G0Em/Fve+tAUPHrlY/wBD791ao669+6912Tf8Af6wt791 7r1z/U/7f37r3Xesn6W5/p9Tb37r3XNTxyeb/n/euffuvdc/fuvde9+6911c f1H+3Hv3XuuV/pz+PfutaQfLqDksbjszjshh8vQUeUxOWoavGZTGZCmhrKDJ Y6vp5KSuoK6kqEkgqqOspZnjljdWR0YqQQfdkd4nSSNysikEEGhBGQQfIg8D 1sCnSF6s6f6l6L2jT9f9K9ZbA6i2JS11dk6XZnWu0cDsja1PkcnIs2Sr4cDt yhx2MirK+VQ00giDyMLsSfau/wBx3Ddblrzc76a4uyAC8js7EDAGpiTQeWet kknJz1N7I6x617k2flOvO3Ng7L7Q2DnGonzWyewNtYfd+1Mu+NrafJY5slt/ PUldi61qHI0sU8JkibxzRq62ZQfdLK+vdtuY7zb7uWC7Sul42ZHFQQaMpBFQ SDngevAkGoOelHt7b2B2lgcJtXa2FxW29sbaxOPwO3du4KgpcVhMDg8RSRUG Kw2HxdFFDRY3F42hgSGCCFEiiiRVVQoA9szTSzyyzzyM87sWZmJLMzGpJJyS SaknJPVWNAT08+2umixPHro/n6/7D37jjrYY4Hl1jv8AkLc/4rf/AGF7+/cM dXZhw6jzU0NQNMsEb/4FB/vf9fe+vAj16Yqza+PqLlEanc/VkN0N/rdW4AJ/ p7uJHHTZiRhwz0mqzZ9StzSmOdR/Z/S9vrcajb26Jq01Hpprf0OekjU4aqgJ E9LOmk2uyHQP9YqLe3xIh4HpO0bAfCem16JLG1wwH+9fi1v6+/axUenTekYq o6C7tbp3rPvDZGX6z7j2Btjs7r3cLUEmb2VvPEQZvb2UkxVbBk8bLWY+oHje XH5GmjnhcWaORAym49mG3bnfbTdx3+13slvfR10yRtpYVBBoR6gkH5dbXUhB jJDD06y9ddV9d9O7OxPXnU+wtp9Z7EwInGH2fsfb+N21tzHNVSmarlp8Xiqe npvuaydi80zBpZn9Tsx591vdwvt0upL7cbyS4vH+J5GLMacKkkmg8hwHl1om RjqY1P516bdy9L9T7x31sntHeHVvX+6OyutDL/o67B3FtDBZjeew/uJnqJ/7 n7mr6GfL7d808jO/2k0Wp2JPJPtyDc9xtrS62+23CaOxn/tI1dlSSn8ag0b8 werhnA0gkKePQk6yOCwueTbix/PPtD1XrvX/ALV/yd/xv37r3WVXHH1/1/8A Yf1v+ffuvdZRIP6j/Yn/AI3711bB6yKykfqF/wDX4/4n3RiwOBjrRwccOueo X/UPz9CPe61p2nrwY9cg3P1uP8f979+Ix8+ravl1KimKHjkWII/BDfW5/N/6 e9Cp4r1YMRiuOsM0Rgb7iEt9u/DJf/Mv/qbX+jH6f09+BPDz6UKOJBx040VZ YAE3H+v/ALa35I96Za0oM9XB6UUE1wpBA4P5/wAT/j9PbXW+nSGoLEAj8/qv cfT/AF/emFRTrw6c1cWBBAJ/Fxzb/iPbFCDSmOvEjgc9ds2o3HvXVwuKHrxS /wBRxb688f7f3rqpJwBx6gTxm36SRcnn8f4j2+lKAjj141r01TRXBH0bgg2s eL2Hu/VGFVI6aJYS5K6TZuDbg3/J/NvdhjI4jpGy16xrQAEfqa/N7/X+gJHv fiN69aEagUFenGGAKoUnTb+v+9H+o91Jqa9XCivDqYYQoJA/H4J/p/T6e9dO GNvLrNVagkH1/Rz/ALxb/D8e9Dz+3q0vBPs6bWNmPAP55Fz9Pe+metJD/hQ9 0xunbPzd2r3ZNteopth9o9TbewGP3VF9t9hlN4bHSsp8rjJTC3mhylLjJ4JC JVvJCwZSQOFURGgDzHSa4Bqp8ute9d2qVIWawXWCHf1/Q/oI4Yce759Ok/W/ n/IVbV/LL6dkP1l3R2ZLza58m6qlgePre/tPL8fS2L+zXq46MgfUger88f09 tdOdOCFbACzG7W/PHHv3Tyqp+fUXcO19v722zndnbuw9BuHa26MPkMBuHB5O BKnH5bD5SnkpK6gq4JAyvFPTykf1B5HIv7bBo+oHp8AaQtMdfOh/nc/yfsp8 Wuy4Mxstaup6p3fNVSdPb6r1Z6aC7vUz9Rb4ySqIqTMYJWP8LrJSBV0pUH1K 3tSpEy1/GOkJBtJPMwt/LrWO3HtnP7Ryk+G3LiqzD5Gnco9PWRNHr/pJBL/m qiJxyroSrDke2yCpoR0rV1cVU16Yveurde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdclNiPfuvdTI3/xHH05H ++/HtwZofXj1oioI6cEYFRz7qCVOOHTRXVgmhHU+KQsAfoRa9/z78cUI69/a KcZHU1W/I5/4p7uKMuT0zw6mwyWIFxa4PP8Ar/T3sGtVPWunaKTSb8EEfX/i lvflJ4Hr3TzTy/pXgD8c83te/wDre9nB1DqrDz8+naJuBfjn6cX/AN5926r0 5xPcj/ff4X9+62PTpwhc6vqP+RA+99a6fKaU3H0+gP8At/6e9ivAde6eYn1o Obke98ft691NgksbMR9Ra/1v7r1oioI6e4ZLgX+o5/px7sOk5FRXz8+nWCUC 1j7t1Tp7ikHN2t6Rza9v9h+fdOB6907QyW0gH8f8T/X/AB97IxXr3TtDIbXv 9Ta/0/2P+Fr+/L17p5gk5B+ht/rf7H/Y+7de6eoX1KOLH/fH/Yce/de6dUbh W+vH/GvdRgnr3TnBKdIsb2tcD6j/AGP0Fh/X3br3TgK1ESQhoysSeSV3dY4Y EUX1VEzERxIn55JP49+6cD0FDnq7D+VJ/L93d2X2Htf5Ody7XyOG6j2a9Luv q3HZunbH1fZu745A+C3MmNqI2nbZOA0tNAz+P7mdYyNSBrme32hkkWaVSIhn 7T5fl0S7pfJDC0MbDxmx9g8/z9OtompS+snnVfk/W5uTz/ifYwikOAT0BpY6 VPl000VYcfW07s+mJZVYgc2Ym7cf6lgfayeL6m3k7avTpLDJ4EqPWgr0MupX RXQ3DBTcHhgw1Aj2DCCpIIyOhUCGAI65Rf52Mf1kT/oYe9E46sK46+db85s2 uL+aXynpg+k/6aN3OwZitg9SLEW/xHslY1Y/b0LaUA+zoO+gsFU9rdxdRbRo KafITbi7c66wQpY6d6qSWCq3PjmyBFNHcyJFQpI7r+UUk2HPvy/EPt6q+FY/ I9fSXFElMFpoLLBSqlNAqiwWGnUQxKoBsAI0Fh7NzIox0GghOdOeuPiN/qfp /vuP9h7r4v8AR6voX1HWEwtewueQD/rf1928RaE0oetBTWnWaSnWNRpvq4J/ pc25t7YEpcnXw6deLSAUFemuY2YG/wDj/h7Uxjtz0kcnHTPNKWZgSfrx/T6/ 8SPbwxQjpFMamleojX5Fzx/j/vPt/pCTU16xgWJJa9/62H+29+611JjJ/wCI /wBgB/xHurAEHq6Eg08uuaSMDe9/6359pWFDgY6cPWcSM36Rz/iDb6/4H8D3 QqD5de6zjjg/X/e/9hz78APIY6cVVIqzdeIv9T/r/T+v5uPdh9nVGADUBx1h kP4Bv/UAAj/XuPbgJPHqxpXHDrCGNz9RY/6wP+wHu/l1Xz656z/h711vriSf 6k/7H37r3XgT/Uj/AFj7914fPrmHP04+h/3ge/dbBp1nF1IsAT/t/dagmhOO nY31Eigp0605swJH9D/vd/bT0oR0qVs9O0ZbSbD+0t/9a/8AxT2XzYJzmnRl agnTjz6D7u9b9Cd8EgW/0Hdv/wBfr/o53L+Pp7L3+B/sPQltMulf4h1//9Td t+NTqvx0+Pl7/wDMjeo/95692970vwj7Ott8Tfb0N3mT+p/23vfVSAePXesn lTx/sP8AkfvWOq0Th135B/Q+9/n1ujfxdcgwa/H09+69Rv4uuXHv3XqN/F16 wWx4uDxwP9j7117VXFOuyxP1+n9Pe+tgDy49dXP9T/t/fut9euf6n/b+/de6 69+691zDkWHH++/2Pv3Xuuetf6/73/xT37r3XiA/N+B/vf8AsffuvdY2XT+f r7917qRb/H3qvVC/oOvXt/j/AK/v3Wh3cR14H/Af7z79Tregde9+6b697917 ri36W5/B/P8Ah791sVqOo97c/S3vfTpwOPXQ8ciFX0spJBUjUpH+Nweeffh1 4evTNV7fxdW2p6cRte94T47n/ELx7sHYefVDEjZIz0wVmzgQTRzD63CTA3Bt c+oc8/093WWnTbwpTGD0kqzb+RpSTLSvoH9tBqT6/W6k/j28ko4Vz0nMTKOG Ok/NTzcrpBt+BfUBxyQfp7dDLWvA9MnUOHUVqMckavybcc/7z73rX+IV691h MFvov0+uoe7de64lSvH+29+691w9Y+oB/wBY2/3v37r3XJZNIsbA/Wx/4r9P fuvdcvL/AIr/AL7/AGPv3XuuQnH5PH+B5/5F7116vWRagAi3+w5F/fut1PUy OoDakZQ0cg0Ol+Cp/U1/wwH096I8x09G+VFR1hYPRyi76oiLxP8AQFL30t/q So/r70e4U4Hp9Wqenmkr7lebKRcH6/X8n+gPuhTFfPq3Shp57/Q2/N/63H1/ w9t9b6cY5iCuo8KTfn8H/D8+/de6c4pFIA/173tYf63+Htp0PEcOt1PGvWYN qFwT/sT/AMR7bIK4PXg1OIHWOT6Dn3dMnh1vUD1ClRGNze/A4F/6fT/W9vZ8 uq9RDR/822JJ/UNQBv8A8V96JPl1Qop+3rKlMACGiIAtbgj/AGx/PvxJxQZ6 2FAFAOuzCg40kf7E3/4p72K+Yz1umKeXWJvTwb88e/cetHHAY65Vy2ij/qI/ r/W/496Hr1SUVAPTO5sSf9a3+2HvfTBIGT0WD5XfFfqL5hdVZfp3uDbj5DD5 WOerwm6scKaLcWwdx00LDF7iwFdL+/DWRSTMGis0FTHqilUq1xZXKmo6o2ll IJ609Nzf8JjvnPS5jMQ7S7n+OefwCZPIJg6/MZbeW38nV4kVEn8NqMjj4dr5 WGirpaXS0sSTSpG5KqzDn28ZFPmR02FUeQ62zP5cnxYznwv+HnUPx73Vncfu Pd20qPK1+7sph5JZsG+4s9lajJZCnwU1RS0dVPiaXyIkTzRLK9iSOQPbLNqN enEWgB6O+/6j/sP96HuvV+nCn+q3/Aa3+9e/EgCp4dPRHiOnmn/za+2yPjx0 oHl0i+yOruue5dn5Xr3tbZW3OwdkZyMR5bbO6cbDk8XWBOUcwyjVDURE3SWN kkQ/Rh7pqZGNDnrTBWVgRUHrW2+W/wDwml6t382UzHxg7GpNo08sFTNTdS90 YuffO0Y6xjB4KLb+9oHTdm2se37rt5lr9BZVQBR7ULc1FJFr0ha1ANYnKnqp rc3/AAlc+UFEFqsbgfjrn5ZZwj0mD7W3hihChUuagxZXa8EKxXGnSsjMCfpb n3fxYD+HrYiuwBSQEf6vl0kW/wCEuvy2U/8AMsumDe/H+mvJCw/JBOG978S3 69ou/wDfg/1fl1i/6Be/lmOf9GPTJ/w/015Hn/1j2971Q14H+fXtF3/GOuB/ 4S+/LMX/AOMZdN8f07qyHP8A6x/x73qh9Oq6Lz+Mfy64n/hMB8sP+fZdOf6/ +mrI/wC9HD+9aov4et6Lv/fg64n/AITBfLAcnrLpv6/nurIDj8H/AItB971R fw9e0XQ/0QdYj/wmI+Vigaus+nLi4YDunIlf8CD/AAi/09+/R9Oq/wCNVprz 1j/6BjvlQDY9Z9PD+tu58if9b/l0D3v9L061W6H4/wDV+zpsm/4TP/KyKV41 6i6snVTYSxdzzeN+Abr5KON7C9uQPfqRUr16tz/vwdYT/wAJpflYouenOsLX +v8ApokAP+H/AAF9+AiJpTPVddx/vwV64H/hNR8qxcnpzq+3/iaX4v8AT/lF 920x/wAPXtdz/vwf6vy64H/hNZ8qP+fP9Ynj6DuZ7A/65pgfftMfmv8Ah6r4 03+/B1xP/Ca/5TAG/UHWAI+h/wBMz8kj/qG4t78EQ/g62ZJwKmTrEf8AhNp8 pE5PT/WF/wCn+mZyD/t6b3vw09OmzcyjHidcP+gbv5SKeOn+r1ufoO5W4H9T elNz79oUcF60bqT/AH71yH/CcP5SJ9eoesOOf+ZyN/8AUn5HvegH8OOtG6fg ZOuB/wCE6XyijuT1J1hZQSSO4WP0/wBejHvYiyF08emmvuJMn8unXE/8JwPl pmo5pMZ1F1bKISFlDdy6CrEXAs9H9Lfn21cGK1xMKdP280l4C0MgNOnv/oGo +Yw5Xp3qzn6f8ZlW4HH1/wAj9pvrbMD4v5HpT9Pdeo65f9A2XzJi9R6f6rQD ix7lU/1tf/Ivev3hZkga/wCXXvp7ocSP29IvPfyAflJtfIfw3MdVdZUdT4Fn jt228iSQubBo3WhKsNXBH1B9nNlYzbgAbVQw+2nRNfbtBtz+HdylW+yvTWP5 E3yX40dc9Z2uSD/pXf8A3n/Ib+1/7g3GpHgjHz6QjmXbTQi54/LqQP5FXyaU 3XrrrQcfT/Su1v8AYXoPr7t/V3cv98j9vW/6ybb/AMpP8uuQ/kYfJ4X/AOMe dYjn0kdqOf8A4xt72OXNzIxAP2jr39ZNt4/Vfy64zfyQPlHShGj6464mvcFY e1UUr/Q3lpUFj78eXd1X/iOP2jrw5j2wk/43/I/5uo5/ktfKaEgHrTr1LXLE dq01h/1hPvQ5d3Y/8Rf5jr39Y9rJxe/yP+bqLJ/Ju+TsTaW666/Rl5I/0pU9 xxcGwg5uPfv6ubtitqP2j/P1b+sO2Z/xz+R/zdYT/KG+TULc7D69jNrEHtKA 3/2Bp+Df24vK+8n4bQH/AGw/z9JjzRsi11Xv/GW/zddj+Uj8m1/TsXr82W5P +k2A+r8nin5Fvbp5U3z/AJQ/+ND/AD9U/rXsP/KcP95b/N1mX+Uz8oR+nY3X ouOCezoCLfjg0/up5U33gbL/AI0P8/Wv617D/wApw/3lv83WdP5TnynH/MF9 fj8AHs6m+nAH/KNf6+9f1W3v/lD/AOND/P1b+tGx/wDKcP2N/m6zp/Kg+Vtv TszYA5P07OpPr/S/2vvX9Vt6/wCUP+Y/z9b/AK0bHU/46P2H/N1nT+VN8tF4 TZvXo/1+zaW//uN/h73/AFX3v/lD/mP8/Wv60bH/AMpo/Y3+bqUv8qr5dqAU 2jsAW5t/pMpCB+LW+0v7r/VneeH0mftH+fr39aNj/wCU0fsb/N1nX+Vh8wgt xs/YHB/5+XR3t/WxpSPe/wCq+9MQBaZ+0dbPNOxKKm9FPsb/ADdKTbH8pX5W 57ICjy79S7NgbSFyud3nksxQmR3CrEKbA4yoqVk0m5ZgqAD63sPdxyrvOdVs FxXLD/JXpk83bFgJdFiTTCnHzNaY6uA+OH8kDprYOV27vTvXf1f3hmMRW0OZ pdoUOKptu9WyTxU0cqU1fjPLWZPcFPT5EFg8k0KTRqFki9TD2lG2GFgLj4we H+Q9PSb0JEb6ZaAjDH/CAP8AL1d0kEFNBDTU0ENLTUsMNNS0tNDHT01LTQIs UFNTU8SpDBTwRIEREAVFAAAAt7N0KlQAMU6D7EsWJNT59QakXBv/AInj/X5/ 2/tdH5dJZqGMnpLVyKQTY2ta355+lv8AEH2cWjalKkYPRVMlBXoT8BWtPjaM vckwxqST/aQaD/sTb2Fdwh03EtPU9H1jOGijDelOlJF6ZFaxbSymw+vBB/4j 2XnAz0b01KOtTP5jfyEvlh3h8oe3+3esOzelIdj9jbsq92Y2PeGU3Ni9wUEm UCzVdDV47G7eylIy0091SRai8g5Kj2UPE9Sa46ESX0BRQVNej9fysv5Nj/DH cFZ298gd07W7K7loK+qHX9Ps9MidobHpKik+0nziz5amo63J7pqYZZIo3MSR UkTHTqdrraJQpq3TFxciQaYlIB49XxaP8f8AeP8AjftR4g9OkNOsbqB9QT9P oLH/AF+D9Bb3sOCade0VFaDrqFAAZCDb/H8/7fi3PukhqQK8OnEjrU1HWGYg An+htzYcc/7z78gr5+fVGbRUE9ME7XsDYE/7wP6f7H2YeRp0Wyvx9OmmWwcA X4+v45ufp/h7cStRXovkbUCfl1DlI1WH4+v+8e3+k3HrCSB9ffutdZ4nCggm 1/oLfX/iB7bc/wCDqwOCOs8X7jH6hQeT/T2w3Hqwyepy6VQ6ebf1/P8AvH59 0U6urimQRnriktwdXHPHB5Htwp6dbp15pRpNv625HBvx78FNetHGesf0/wB9 /vH+t7t1pWJ64P8Ai39Lc2HP9B72ATXrT1x1x1fg/X6fUe96WIqBjr2oDt66 5v8A77n37Sck9VBNcHrJ+be9U6drmnWTTYE/4H/evezgFfOvXqVINcU6kobs LG/P4/w9sU4149ORYLfZ06QryCSf8L3J/FwfbLkE46XRrgV6eokJWNASdbXJ /wAAf6/19l0z1Yg8Oj6zhNFoOkT3jT26B7545/0HdwH/AFv+Mcblt/sfaKVq BqHy6PoE741BxqH+Hr//1d2T43Of9l0+Po4/5kZ1D/77zbp96HAdbfDN9vQ0 h7fUD/YD/ip9+6phuBPXMTcaQP8AeP8AjfvfXtIBrU9c+f6n/YE396r17UDw 49clfT9NXP8AWx97Bp6Hr3Hi2OsgYkfXg/778e7av6I69QevXeoDm/8At+f9 690z17v4UHXflH9V/wBsfe89eAapwOsqkFQb/X/X96z6de7vl142Avf/AH3+ 29+z17v9B1x1L+L+99eqR8XXO1+b+9V69rHXrH36vXtQ9eujqH0PP+x/4j3Y U8+tg14ddC/5t78dPlXrfWTyN/h/tvesdV0Dr3kb8gf8b/P09+x5dbAA4Dr3 kP8Ah/vv9j791vrNqH+qH+3HvXTND6HrsEH6Ef7ce/de0n064GMEk8j/AFrf 8U9+r1vWRjrg8ahfz9R/T/inv3HrYOrB6jtGrEcsP9Y8cc397pxPXidOBw67 EYBuNRt/U8e/Cnmetaz1zs35sf8Aff4+99vAV69rPoOu7mxVuQTcg2IP9CR/ j7qQCa9XVq1r03VeGxlcP36ddZUjXEoRwT+bqALg+7aiua46qyBjlR0lK3Za 8tQVBBHPjnAJ4F7agoN7n24sg8xjplrZaEjj0j63A5Om9U9M6ID/AJxV8in6 8G36b+1CyR0Cg9M+C46Y5KcgkEEc245F+f6j25XgK9NkAGh49RTCAfVq+nFz Yf8AEce9169QDieo0kZvdbWtzyL3H1/p/X3sU8+tfMcOsGlha4H5vb/e/r9P du3rXWNza3NuT7tQdMSEigrnrGJbcAj/AFyCf+J59+6qJGAp1kSp0kWH5/PI +v1/qPddPV/G+WenFKoSIY5tLxyG7G1irEWDqR9Cv5/qPdCvSqKXh6dYVllp pDFIQ1rGJx+mVDzqDH6W/wB49+HAEdKA3qelHSV9tINiBb8EkcD8/T6e2yoP DpyvT9DV67cg34/5FyefbZBHHrfTrFUKALnm1voT+T9Lf4+9derTqYtYFuPr +bEf7z+PdGTVxI69g+XWRpw4X9N78Wvb+vvQVlrTrYpXiadZoUL+r+vP+HHv wc0qeHXjTgOpgi/x/wBt+B/j7qXPkcdeBFMjHXB41t9T/sOf94t72rmtDw63 QHyI6hsBf9NyOLn8/Ujj6e7kkeWOtEU6wNEHbS1wfwVH0/P1/A9+LY1KK9V+ zrDXA2jA/SFtYjni3/Ee9rXpuWtAPLplYckfT/fcc+99Jzw4dR3BCkEfS3P1 t7102VxXz6xKSt7fn8/X/be9/l1qh9OpURun9Pxx/h799nVgaaQePWUetuf9 4/339ffunOp0PpKg/n6/1+n+92HvTAMKHp6Knd08wMBGo5uf+K296JqSKY6U AUFenBIhwbt9bWFv97/p7YJqanj1pqDHy6zaB/j/ALx/xT3rqnWNgAT/ALD/ AHr37qwcgU6iyvyQf8QP99/sfdqUCnrfEGg6iD8gXsLW4P0/P+PtzxB6Y69T h1hc2uf97/xPu6mor1rqN7317rFJyD/QcXt+fz/j731oiop00SvYsCOL2t9b f8i966aDBWavUGV7c3tc/wBPdgK16bYgsT1Ecjn+lxz/ALC3/E+76TpA6r1H Y+k2+v15/wAL+94DV6aY5PUORiVtx9f+K+3OtMaAnqKzCxA/rY+94pQdNKyK Pn1FlYC3P9eB/vvr79k9NlicHqBJIBySf97H+sP8fdwK4HTL5PUGSS9z9B/X n6e3BkaV+HpstTA6hSygA8i3N/8AW/r7sqgdMSNQfM9MlVMCj8j+htc/i3+t 7fWMlwRw6SOwAYeo6VXWVeseVr6DULVFMJVXm+qFgPSb8XDc+y/fYS0Ik/F0 u5emCzSw1wc9DfcfS/8AsL8+wbnhXPQv6xS6WGn6m1xbmx/BFvyPdYiWchh2 jqpODXoCe6to/wAb282To4y2Tw+upj0Ld5aYj/KIQbEkgHWB9Lj2N+V9yFte xxTGkZND0Dua9rN3YNPED4yZ+0dEtiq1LA6rcm34P1+hF+Le5fVASWT4Tn8j 1EYlVexviGD+XU+OoViRrJ/1zf8A3n28Vx8+rBq+Yp1m1oQPURz+LfT/AAPP vYFOrVHUWWRbH1AkX+p/oOAf8feiCcdUJJ+zpOVhLMFBGt2AAP6bkgDj8/X/ AB93pg061xYAHo1u2NnYHC4iki/h1JNWGnharq6iGKomqJ5EV5SXlRiBqPA4 sPcc3+5Xs1zIBMwj1GgFRw+zof2G3WsFtFWMNJSpJz1KrtqbXySla7b2IqAb gs1DTq/P9GREYH/Y+6RbjfQmsd24/Mn/AA9KZdtsJhR7VKfZT/B0HmY6G2Fl 1c0lNWYSbg68bVN4h+Qft6gSRjn68j2a2/Ne5WxHiFJFPqKfzHRPc8qbbcf2 etD8j/n/AM/QTZv45Z6lLyYLNUeRjFylPXRSUkxH4AmjEkN/9cAexDa84Wkg H1MZU/LI/wA/Qcu+T7uMn6Vwy+h4/wCboHc1sfeO3GcZfAZGCMX/AMoiiNVT cD6/cU5kQD/X9iC23Tb7yn09wCf9Xl0RXNle2tVe2cEeZyOkvHVBTpLWYCxU 2DA/Xlbkjn+vsx8JmyrDotaWeKniDB4Y6lJUC/1t/Q3BAP8AsT+PdSjAUbJ6 cRpHGCPz6nxVF/owP+uQL/42/p7ZZFXip6cVZaZK16mpKWH1UW+lrcnn6j/H 3pXWtFU9WdCNPiOOpFgRe/6rD0n6gf2TcWt79wNKV+3rRCkYIA+XQm7E35Ng J0xuUmebDSNpDufI+OkNvVGWa5p2J9S/j6j2R7vti3cRliUC4H8/t6Nto3N7 cBJjWM/y+zoxn3EUyLJA6zQyxrLHMjB43VxdWQjhlI/PsH/TyQqPEw+ajoVm aN1DIaqfTpqqpgqki4HIIZeR/vX1t7VWzIT+rIB0llkovwnpM1T3a17j/X/3 v+n19nVn4Wg6D3D16L7hpODDHS222/8AuKpiOSplVT/T1ki3+Iv7JNwjJuZN RFMdGFkawIQfM9Lqjk8lgeHVuTx6hb8f6/8AvfsgmUCteHQgtpRMAD5dOyfQ j+nPtEVHRiMcOsl/bVOr6j13+PeureXWII0jhf8AA6v62H4HuxAUVBx1tAXa nWaXSiH8Wt/tv8f9iPdK5pTp5qRr28emGomJ1H8An6XN/wCn+w9qYxgdFc0h JI8gemWU/VvyAP8AY+1gPl5HpBJwYfLptlY6r8fm/wDh+f6/4+3kA/Z0ickY 6b3k9RJHJP8AsOf9h7d8+meuAJbi1lHP+P5/3v35yFrTrfUyGEudR4UH8/63 1Fx7TO5NK9WA8/LqaoCISgtwbAn888kgD3QnURXpzrH5W+lhyD/vvqf6+76B 69bp12H/AMD/ALDn/inu3W+vXuQP8bj6fjn+n+Hv3Vfir6dZPfuthQOHXEi9 v8Df3sGnXiNVOsZvweLt/T+vFv8AYe76/l02U869cgQBx9f8feqhjQ9eB0io 49cl/J9+Y0oPLqyCvdXPWXUx4AH0t/xH9fdCfMnq/AdTKdBcfX0/7a/ttjiv l0/Ele48D08U8d2A/H1b6X+v+8H2ikYKla93RjChZgKYHSmoYbvf1G1wPoAL 2/3n/ifZXIxNSeHQntI9KdIvveEr0B30fqB0b3CT9D/zTfc3A9pJD2OT6dGk CsJEI8mHX//W3XfjjKV+Ofx+4Nv9BnUHIHHPXm3P8f6n3VRhceXVJAdbU4V6 GVZvrf6/0PHPPtwITjpvPXMSk2Fv95/4i3v3hH1HVvz6zXI5BP8AyPj+vule rAhsU65GQ/0/xHPvfW9Oag9cw4IBLW/wv79nrR1DFOuw4B4N/wCgvx/tvfut 1Pnw6562H+p/2P8Axs+/db1A+fXHWwN72/wDcf737916teHWUSA8G4/1yf8A ivv359VOodd3X8MB/sfeuvAnzHXIXHN/pz9T79Xr2peuZkP++Pv35dWGfLr3 l/w/259+p1orXz678v8Agf8Aff4+/U69pHXvL/tJ/wBv/wAa9+p1rSv8fXRk B/B/2/vfVgKVzjrwcH8G/v3W+uy1vqGH+w/43791oEHgessUi2Nzbn88e9Hq rAmlOsnkT/VD/b+/dU0n0671p/qh71Xr1D1hdgW9IJCjnSPyfp7sDg9bC1pU 9cdX9VYD/Ee9fn1vR6HrgzBgLE3BB449+61QjriHC/rbn+vJ/r/r+/DqyefX ZmW31vYXH+P9fxx731aoznroTLcccf42Iv8A6/5FvehivWgT58euRkRgV+qm 9xY2/wBax+vvfWznHTRVYDE1x1TQpGf+OkLeNyeTyqgL9f6+7iR1wDjqjRI3 EZ6S9fsqNtTUU6Ej6Ry6v9sJAQL+3Ump8Q6ae3Brp6R1Xgquj1CenkVRf1BS 0Z/1pBwV9vCRWAIYdJ/BZAQVx0yTQBVJ5B5A/wCIH+t7cBqRTqhAAJ6b2hJ/ Fz/S3+H1Ptyvrw6aKhs9RXiKgi305PFjf/W/x9+r8+mjGRwz1gIN72sPr9OB b6/4e9elD1UqRkjHXYlK/Qi39Px/T+vHv3p69bVyvDh1JE8M6eCYj9WpGDcx P+JAbXK/gj6fn3qhDVXpRHLqGk8evRVT00hjnYLIh4/1Dqf0sv8AUe9Fa8OH StGWnHPSgpcgllJYfUc8kD8Xtbge2yp6dqKV8un6KuUgWYH/AIK3J/2BP9fd NP5db6cUqb/kHgG1/p/t/wDX91p1vqfTy6j+Lf1H0v8A7H+lveuvdPkD/Ti9 weB/h/sefbPlpOM9bIoKg9Th9Gt/Qf73z7pQjq3mteugrfUA+/fb1uo8z1jk hDAEtpb8jj6X+v8Ar+7AsBwx1qvpw6wSReklG1N/Qjm/5Fzxx7sDkEig6qeO D1Bq1chdXJAJA/IP+P4sfbnzrinVWFcg56ZpEDfW31F/8H+nI976TEFTTqMy kixUlT9fx/vr+/dNsK5rnrgYU/oR/re/daqf4h1lAAAA4A4HvXVDx49cltqN yBx9T/sPe+nVrQV6nU/+c+pb8cj8m/09+6fj88dPUAsvq/BHH+xve3PFvdDn UR6dKBTHTlGykAKb2P8Ar82+l/p9D7ZII49aYGpPWQkD6kD3rqgBPAdQpCdb WJtf+v8Ah7UIO0Y6t1Eckt9T9R+f9v7aYglqcOrcF6wubkfS4H4/r/T/AGHv Q48M9eUcfTqPITf6n6e31+EdVPE9Y/e+vdRZSBclrDm4vbm/+88e/da4dM85 Bc2PH+8f09+6TMasSOoU30H++/r7eTh1TqExNyCf6f630Hu3XusZdQbEgcf7 wfdWFRUdNtxPr1DmdSW0m5/w/wBb6/63u6/CK8eqOpYCnUJmC8/n/X/2/u1M fPpkqAASc9QZXXi/5ubXt9f6297GK9UJoK9Ns8qGwBvb6fn8e3kDAHHHph2o Cem6WUC9zYX/ADc3P9B7dUeQHSZ308DnptlnuD/ZH+3/AB+fb6oBilT0w7cT 59MtTIbMLjkWt+fahUA019ekMkmGB406z7Krftd2YxidK1DTUj+q3+dT08/4 uo9s7pCXtGOnA61sk/h7hECaVNP29GdDC1y4v/UX5J/p/t/ceygAkfPqRwQe u25X0n+n05vb8e0GspKtfXPW6Vr1CqkV45I2AdXXS0fBDxm91N/9V9PZrGdM yur5p024DRMpWvVevbe0H2VuYmnjkjxOZM1VQA2IhdXH3FKrC9ljeS6/khv8 Pc0cs7u19BHEzAyIoB/LqEeadoG23LSBCInJI/bkdB3FVjg82tf/ABv/AI+x YQa5GOgzHIKepp1NSpDc3P8At+P8R70R08rMfwHrm8q/1B4N/wDbe9dOnyx0 zVcukiRedDB7cAkp6uL3/p7cUYanmOmywR8nHRzsJVrkMLjaxPpVUVLNYEGx eJSwNvyGBv7iu8QxXcyEfCxH8+pNspBJawyAjKj/AAdT7e2a9KdY9OuQW/8A aC/48/7b8e6seHbXqrksO1qHr2hvoCGH4sfp/tyffh/padaUsK63r1kYI6lZ ItaMCCpAIN+D+COfegHTMbkHrbGJ10mIU6ROe642NuLUcltmheaxvUU8f2VS f9aelaO5F/z7NLXeN2tCdF6xT0Of8PRXc7Rtl1/aWY1fLHQSZb427enDtgs1 kcXISSsVaUyEA/2nV+1Oqj/XPsQ23Ot1F23NqHHqMH/N0Q3PJttMS1vdFPkc j/J0FWZ6K33iNclHFR5uFSbGhm8dRoHN/t6krqP+AN/Z9bc1bZcEB28Mnybh +0Y6D93yxuluCY18RR6dBtV4zLYZjFlcbXY5g1j91TTwAtexAZgYz9RyDzf2 dxXVrcittMrfYQeg9LbXdq1LiJwD69coplHOq4+hH4/3ni/t+jHgOmjKoOcd c9ZmdIlUtNK6pGEGpmkZgoVPr6iSB/T21iJGZ6BBkk9OmQSSKIDVOFRno4fW mGfbGJpabPStkHn01Bge/hxfl9Qgg/tOEvdr8X+g9w/zDu7Xd5Ilqw8JKgEe fUibHAtpGv1fcGoaeS9Di1PRSxgx09O6FQRphQixH6uV/P8AT2FVnuixrIR0 M2itZEBjhVqj06TNdtfCVgOukWJ+NLwF4mH+IAIW/wDr+zGLebyBgFLU6LJt rtZhRkofl1IoNpRUlDElNUSOA0rKJ7F7Fr2JXgfX2YfvmaZtUozQdNx7KscS iJycnrN/D62n5WKQ241Iddhfm5tz7t9TFJXU46stnPCMQtT5Z6cYmbTZkYOP 1XBF/wDePr7TMy+TCnS1NRGVNest+Po3+uf6e6UBzrHV8+nXTFtKkAi54/x/ 3n6e6jTU9w4dWWvn1yU+Hm/7h5JJHC/gfSwPtsnUKA46cBCCoOeoFTIW+rG1 jexuOfbiKBTFekk7sad2OmmZvTwf6/4fm3tSAfTpIzD16aZW5vfgD+v554/p 7VJw+fSSRsAA8emuaQ8/69/9fkD/AB9vp/h6ROanj1CbUbf1NueLWuL3/wBh 7uCD1Q1pjrLDCX5DFY1Nzybsf9p/NuPdHIyKZ62q1Na46ckuo44U/RTyR/r/ AOv7TtQkdPHrlc/1Puo4jrXWNgVF7f7yPb3VqgefWMF/xf6/0966aLE9SU+l vz/vufexmnV1JINTnrrUf6+3aKKdU1t69cXLW4JvcfQf77j3Vgvp17U3r1HA fgm/9fpx/X6+9ADhTrVT1k1n/D/bf8b9uEA9a6zpe3PHP09tNQHHTqcOs0eo tZfzYE2vYf1/HupA8+nApbyx07QoRx+B/h9Sf+R+00hoPl0tiXgK1PSiooGY oLWJYauPoDbn+n59lVxMNVNQ6P7K3YlSVNK9LCmpCltIFuObC4H55ve/stMl TnoRLCoC0NR0gO/Iinx+77J/58X3F/rf8y33OeQfbEjkgmnS2JKaa8a9f//X 3SvjpUGP49fH6zj/AJkV09qUtYG/XG2j9L/n25GvYPWnTTtSRs/6v29DXHPD Jq1MEP4sbrqP4Fr/AFPvTJSgBr1UGvWS7LwdRB5U3BGn+pIPH+x90oetnjw6 4ie1+Cb2+v0/2HtzQ3EPnr3WWOo+vH9Prf8Ax/qfdWBqK561xHWT7gflR/r3 /wB4/wBf3rHoerhiMdZBKOD6f9cNz70dOaVr17WeuzKT/j/r2Pv1K+fWq+mO uxIeDpH1/p79T59a1H16keRf6f71/wAV966sNR8+veQf0/3r3v8APrelv4uu VwbH6Aj37rWojHn1yBt9D/vv9v79n063r+XXMOPyCT/tP09+63qJ66Ln+nH+ IP8AvNvfut165Bj9GZbW/wB9+PfuvYBwvXIc/Sx9+68SBxPXfv3XqilevXP9 T791unXXv3Xuuxz/AIf6/v3XuuX0+pBH9Ba/+9e9U60R6ddiQrfT9Db68/T/ AIr731rTUCvXJpnYEEKAR+Af+JJ9+61pAIOesPv3V+uwurnTf8XsL+/dVNBw PXEqL/Sx+n/G7e/depUZ6xlGH+P+t7916oPXrleLf48/8j9+62DXr2s/8iH+ +Hv3WiTwpjr2s3JsP6f63+tz+ffuvaRw65DS6lHVSp4ZSAQR/TSeAPfh16gp x6Yq3beLrGv4zBI1/XCAt/8Agy/Q+3BI4xXHVWjRvLpH5TaNVCGajX7lAuoa SFf/AGI/Nre3UlFe49MPDglePSNloXS6zRMkn5DqVb/YBrXA9qA2qhHDpNpY cRnpqmgK3BU2N/qLf4WJ4592BrwPVGB0kUz03PFb8W/33593r0lIp59RSQjf Tkfn+t+fr/T3vrwJBqOPWTyJVBIZSI5EsKaY/wBm5/zTGxJjcn6n6e9cMjh0 qjmGBwPWJKmWFzHKSrq2hl+hUhrXP0DKT+fz79RTmnT6yau0npQ09cBYXvz9 bj/XP+v7bI8j08tFFPL16fqSq8hVfyT+P6fXmx+h9tkaSSDQdOdKime+kAiw +n05NvqPwfbfDrfTzDPpYc3v+Da/5/H+I90ddQxx62D06JIGU8/7AH6/7zyP bPCtePVvSnWQSEAAk/7x7sGWmVz1rTU4p1yvq5/r7dFKCgx1Xh1j0kfkf7H/ AG3tsRnj1ao9Oo9QpDWNm/x/NuPp78NdcHHWsGh6anjABvzz9AOdJ+l/8fbv VGTVnqI8XpJU/wBL/wCA96DV8umWSgqOsGg/1/3i/vdOmiAfLr2k/wCq/wB4 Hv1OvUHp12qWP4P+vxb37q3ThSkAj68OCf8AefdHBpUeh6dj/FnHTspsfzyO B/rf6/090QgY6UDIB6kU5AIJ/wAb/wDEe6gFjTrzVp8us7sGIsLe3VXTUHqo x59R3IFz/sPbbV1Hr1KnqKPdert8J6wNZTyRzz9fbgDGlBw60CAOorsATfm9 7W/3r26OA6r1hDH+p+h/3r37r3UKoYWJ5NzYn/Gx9+6oxwQOmx2F/wDYW/H9 f9f/AB97p5dNKFBqSKdRZmH9fzYfT/H3cGg0jj1RqEkgY6gsQSf9h7sQdJB4 9V6hTMtzyL3t9Rfgcj/YH3ZeA6oeJ6iagCT/AFB/3x93pwz1WtOoUrg/XgWv /r2/Hvfz6SSvXI6bJ5TyBb1X/wBtxY/63uwoSKnpktXj02ysEBsfqfr/AF/r /hb2pA1GnSeQlioPDprnkJI5P0/2A/r+T7UxqoNKZ6TSGoY9QZnsOeT9B9P8 bX/Pt4KAajpM70Wp8umSqlILWIv9ef8AD8e3lWoyOi2aShDeZPTGlY1FXUdY CA9LV081/wDWlXUOD/qSfaiWPxrJ09ek0cxgukl9G6OHBKtRBTzKQUniimW3 IKSIHU/jgBvcZ3EelnB4gnqVYpNSRyDgQD+3qUDpTj68/wCtYfn/AFh7J5gA Q/n0oPr1GdiASObgD6Xsb/09vrKFPHrRzSvQS9sbNi3ntqppFQDIUiyVuOlC jXHWRJqCoSCwWZE0W/N/Ys5Z3d7G6Vm4Vofs6DHM21Ludi6qP1FyPt9Oq5hU zwSSQTL45omMc0TgiSOWNisiSA8rIrKRb/D3O1vKlxAkoNQeoHcNBPJE2AOn GCqLWHH9bfUfX8c+76RXh0oSUjgcenTiJrgEkW/I/wCKe9GgpRa9PCVfn1Cq yHW35uCP8Ob/AI5AIHuwxx49NyMHpQcM9GC6h3CK3Dy4OZwarEuxh1El2opy WjaxPIilup/oLewRzFt4ilF0vwPx+0f5+hly7fiWNrY/GnD7D/m6F3yN/Qf7 z/xX2GadCnQDmvXJHLEg2+l+PfuqsoAqOpSfpH+x/wB7PvXVeuXv3Xuuvfuv desP6D37r3UdmNi1vobAD+lvr/gL+9AU4mp6s2Tg+XUGeko62Noq6mhqoiP8 3PHHKjX+oKSKy/T/AAPtRHPNAa28pSvpXpK9tBIKXEYK/MdB5mOqti5UuzYV aGZwR58dI1G1yOWKIDET/sPZxbb/ALrGP9yNQHqK/wA+iW42DaZmNLanzGP5 dMe3ejsTi8xFmosjU1ENIJPtaCuhjdEnK6IpzNGFLtCrcXH19s73zlMbdrNE AZhkg/t6R2PKUEMglSTsHAEefQkVODyKBiFjmDaiSrgXP9dNrgn8ewOt1Gw7 jRvPo2m2+4VTQVXrPiK6soZFoqyGZYpOIpHUlInH9kuL3BHvRkjIJqNXTllN cwN4MqNpPD5dKSTjULWtY2v/AL1/r+91JcdGrVpU9P8AApSnhX86LkX5u3P9 b+1YHS+LCj7Ostv99b/efe69W1cfXrExH5v+eDax/wBce7dNswBz1Hcj+g5/ Fh/sffgKkevVA1Rwz1GYoTYi9vpb/iOffjxOemyKEjqLKeSTyD/vX09uLwB+ 3qjGgPTVKw9X+9/74+1aCnSF8mvTVO/J/wBv/wAU9qE4HpLJx6apXBt/h9f9 c/8AE+3lFOkjnJNcdNcjfW/5J/3g+3q0YA9JK4J64RR+VuCQoPJt9P8Akfve vjwPWgurIr06KoUAAWAHHPthmoD09QDzz10WX+v049060e7h17UOefp/vP8A re9169Q9cCwJt9Bz/vre3Oq9dqQB9fz/AL7/AB9+691y1A/T8+/dWUGo6xlg bf4H/evdqdbLDHyPXLUCP6f6/vXDr1QakceugRa1/wDD3rrYIoBXrkFX6/kf T3vPAdeKg+WOs0as7cfQfX8D3pmpk8ergcAPPpzhjAHFh+b3+trcf7H2yXoc 8elaJQdPdNCLK5PF+L35P4H0+g9ltzPpBU8OjS1t/EYMR0rcbTE6SQCSfrzz x7JZZBIxYcAOhPaR0T516WFPAB9P6cC/0/r7YZiAT0aogpUjoNO/4SPj937e 3HRXcf0P9Ottz/63tObitR08vxL9vX//0NzX49uR8fOgOB/zIrpz/wB9ttn/ AB9vx/Av2dIZSPEfPn0MUcrKDyouRwQPxfnn/X926qGpwPUlKuVRYFSp/ULX B/H9ePddC+nVxI2K8Os4kjcquoxOf7JIYN/yF9B73q8/LpyqnFAD12S8f6tK jngHWL/izDj/AF/etRx59Wz50p17y6R6rA/U/wDGvp78dRrT/B16oUZPXYnJ I9IA/rf/AH1/bWjz1de/PrMs9r2YA/4A+/BCRjqwp58OpCzXAJY/7z794bda I9OHXhO1/wDD/AC/+9j37w263U+vWVJr34bi35t9f9j/AIe9FSPiNOvaiOsg lPAIP9L8f8V9210GD1qvmesnlUfUgD/Dnn3YOT5db+w9c1nUDhvz+VP/ABS/ vx0txHWj13572sR/ySfdSEpXreOuaygnki1vx/vr+/FVI7TnrZ1ep67aULax /wB4PupUrxPW186565xzluLg/gDn36mK9eIHp1lDn8i/9P8AX9663UHg3XYY 35Fh/sffutj7euQI/qD/ALH37rZ679+61WnHr3+vx7916vp13/sfz7916vr1 yNz/AE/2A/4171XqoZR5nry8fkj/AFhf37rda8OuyQQRck/4i3vfXhq9MdY/ fut0Hp13pB5I/wB7966bbj1hYWJH+F/fvTrYAoD5164j8/7D/iffj1t+A6jT OQ9hxYD/AH3+w978uvIMZ64+Zvpc/wCvfkf61/fhTq1AOA65icLyq2P0JP8A vfFufdqL5k9aoa9RKumpK5LVcMchJPOgBltY+kixB97DaSaMetMobiOkhkdp U0ik0Uz+UqzRwynjXf0rqA0n/Y+3VnNe7h0w0CkGldXSDyGFr6K/3FOY7G2o DWhH9Qw4F/apZEJ49JXiK0LDpPVMTjkgcG/0H0/r+D7cB6SOAGoOm11IF+Dz cDj+v4H1Huyip+XTRIr8+scr/dhI5CI54zpgnP0mA/TDKRbTYfQ/j34qUJpw 6UwSBqAnuHWKnrmWVYnVkcelltyCODx9Rz/vHvxTt1dLVcVHSvx1SQQB+Bc3 +vI/3ke2XX5dXVyWp5dK6kq+Bz/T/ef8PbDCnTvTwk5vf6j6fkHj+l/6e69b 6cKeq0kC9gbAr+Rb8j+pt70RUU69XpyFQg/tEj+hBP8AvNvbRjPl1uo+w9SR MLC17fUEW/P+Bv70GZcdbAqK9c9RP9ofT/D3vxG9OtYrSnXUgDH6/Qf77/X9 1LGoNOvVIxTqI0akAm/Nyef8fbgYnTTz63QCvUSeAaTpIX/iQOeR+be7A4BP VGWoK1z1C8PIDN9bcgHg/ni/I926Z0AGh8+uJgkBIS0gH0IsNQ/2P0t791rw 28uHXNIGLKG4F+fofx78TQE9bER8zjpxip0j5s1/r9f95txb21qLGmAvTqpQ VAx1NRQQv+2/4j3Q0Bxw6dAAFOpBQRrdf6+9hgOC56qDqND1x1n/AA978Rur aR1gdiSR/vX190JqST16meHWFyVtb68/j88WNvd4wGrXqpJOCOochLNz+Bbj g82549vAU611gfiw/wBf/fX9+691iY2Un+nv3Wjw6bJJCwP9Pr/sfp/X3scR 1QEFWp03yfW39D/t/p/xHu1ATXyPTIQmtPI9RJWOn8AA+7gBaHqjEjqCz/qt zcX/AKfp/wBj+fd6dU1HpunI1XA/UBcX/r9f8be9j06qSaE9RWYL+n88fnn/ AIp73T9nScyMQQemiomsdItq/pz/AF/J+nt1FDVJ4dMPnqBI5P1IuP8AD24E UGtOkryacdN88tiL2P8Avvx7dRdVa8Ok5JYknpslk1WH0AN7+3kAWlT02xAB z02zOl+CT/hzYe1i5yOHSCQqa1PHpmqH1uR/Qf7Gwt/vHtSoIUHosnoTx6Tt cfQ4BI/UB/h/sD+f+Ke1KAgBCOzpDKTXo0vX2X/i+1sXI7KXggFI/NzqpbRg H6EEgA/63uPd1tvAupEodJY/zPUobLc/U7fbsSNSqB+zHS4EpCjTb6n8X/41 7Dl2NLhB8NK9HSmo+fWI+0bYXHVuoM8Vw4UXv9Ln6E83FzYW/HtZDMVeLUaU A6adNSkDieiJfILruTB1rb3xkP8AuOrpljzMMSf8B6yQ2jrgBb9mpItIbelu fc08ob2ki/QzuKhar6/YeoW515fa2k/eMKGjtRvQfP8APouEFWDpIa3+xubD g/63P+8e5B0Erq8ugHDMUb9bh07R1hNhqPPI+ptx9L/63vWnTxHSlZEcnS2O pHm1g+rm39fdSM+o6UqYwrH8VOnLbu4Z9r52ky0IaSJGEVXEGIM9LIR5ktfm yjUP9qFvaa/s0vrZ4HxXh8j5Hp6wu3sblJ4vXIPmOjoUNdS5Ojpq+kkWaCqh SeKRTwyuoP0/slfyPcWzwy28skUgoykjqUYLmO4iR0fBHUoNpPA/A9tdeDMS QeHWdWJA5I/1if6+/dW65XP9T/tz7917rlc2Buf6f4fn227EGg62oB661N/X /eveg7Y63pHr1wIB4Pt3rQJHDrjpUD6fj/jfv3HrxJbB4dYlVpX0KvLMo4H9 be6lwnFuk1Cz0pnpRRxLEqqo/SNNvwbfk/1J9hG4laWXxny38ujqOJUFKdeZ fqbjn/AcW+lj9efaVhqZnPE/s6cKrTh5dNc6fqA+l7883I4B5/I91LGta9IJ AAQAMdTMbULWTR0kihpb8OyqNaA8gm3LAD2ttp5XepI6dheOQiJh3dK96SAk WWw0jheBccf8R7NvEcKCePS3w19Oo8tLEo41X/xN7fQf8T72jk16oUAOOm50 BYjngkD/AGHt0HHTbRq3HqLLGovZifr+fe1Y58umilFNK9Q344AH0/pz730x 1AqWIJXjiw/178/19vR/B0mmaoApx6aJGsrH/Y/8T7VKMZ49JWPTVM31/wAb /wDFeP6+304dJZmpSnHplkkIseOASb/4/wCP+PtTU1xx6QMxyPLqEiyVD6EF hflzcqgtyT/r+9v20qcnphdT4FAvTlpSJAgta/Jv+b/X/EE+2tR9OlCgAaV4 dcpGKjV/sPre4P5t+PbIYnqlT+fWIMTzx/sPp7sprWo4dbBp1xkf6D6fT/X+ tv8AYe3VA49aqevB7m1v95/417t17rn7917rtGuwH05IH+w5v791ZTkdcdfN rC1z/wAV93IoKk9aLZIoOPXZP5Nh7pxOOvceuSqPr9PzcX5I/wBt9fe/Trai tMdSI4yxFwbG/wBPdSwH29PKNRoOnCJAtgVsL/1vf/fD20SzHt6UJEQa17en ELHCiySnSpP0/tN/gqj6/wCJ/HtBcXUUAYuw1UP7el8cNQtTg9PWOQ1MkbFb JcFFvf0/1J/DW9hi53Dx2otCOj+xhVQBTHQj0NLbSQAPrYC3HF7j2mMmnB49 H0cYQA+dOn2GIKD9eb/74f4e6tLUFadKhgU6Cj5Aov8Asv3f3H/NCu5P6/8A Pttz/wCPtrqy/Ev29f/R3I/j7OB8fugBqI/4wV02P1fT/jGu2P8AX9qEVtK9 vl0VyE+I/wBp/wAPQvCZj+li39efp/sb+7Go/DTquo+Qp1zWWTi5Asfyv+P9 b8+9V69rPWX7lv8AH/kn/jfv3TmoevUqCrIBAIH09LC6kfng30n/AFre/UBN fPq6yU4GvWfXBIbI3jf/AFJN43P/AAdr296yBxr1btauaHrx1xkagVvci/I4 +vNyPfjQ4PXiWUio67E5H5Xnkc/j/Dn3oIBwJ694h9OuX3LD8j/b/wDG/e6f Prfin06zeY/6of7f/jfv2fXr3in06yJO3NiP9v8A8U96YV4gHq6yA8cdZRUc Dnn82Jt/sL/n3Xwx69b1L/F14TXP0f6fn/evr7sVBFBjq3WQTH8a7f4E2908 IevXqfPrkJXJHD2uL3Y/71714aj8WevU+fWYTkH6L/sLj/ifddLenXqnzJ65 rNq/ULkf0920s3E562CfLrMrrcG9uRxf3rS4qPLrxJPUtZVJNzbjjnj/AJH7 0VAGDXrxUjy65GUf2bH3tU1Dj1qnr1yDDgkgHg+/FTUgDHVgx4eXWbyL+GH+ w91ofTq1AfP+fXetf9f/AFvfqU68QR8Jx12CCeCP8OffvLrflXru5/qffuvU Hp176/U+9daJpQAdde99W67sffuq6l9evcj/AH1x71jreD1xKrYnn6H8+/dU r5VHWKw/Df7wR/xX3vqxNOI6wTIDc3Grj/bf6/v3Xgc8MdRiNP8AsR/vv9t7 91unDPXG9he1/futMfKueuPkQC7ELf8ABPv1D1U14Vz1hM0ZZdJ+l/pxf/b/ AOv7sBhgePWxUZPDruRlkRo3COpFgj2K/X86r/j3oBq1oadaJB8ukbktt0NT qeH/ACadtRC6tUVz/UfUAn+ntSkjCgbpiS3RuA6DfK4auxxPngYx2JE0akxk X+uoDgH2pRwwFG49Fk9u6GtP+K6SEyhQx1WFyRe/9eL/AOx9qVJai6a9I9dO PThT0zVkXm9P3ca+g/QTR2tyT/uzT+fyOPr7o3adIOOlkEmoUr3D/B1Lo6go HB9LqQCLEFf8P6i1vbbDhTowjc0wK9KSkq7aSGF/z9Obfn+vtsgHiOn69P0F cpUXYC3BF7fn8e2inp1vpzjqFIBBHAuLH6W/3j3TrfUxah7DS4P+2/P4t9Pf uvdOUFT6BdlvzcE2tzx9f8PeiAeI68DTqZHMG0m6nkfkG39f9t71pHp1utRx 6lmQEkX1ccWA+v8ATjj22EqAevZGRjryx3UXvf8AN7Dn/W96LCp04HVgR5nr iYRb9VgLfUf4/j68+/aiTXrVKeXXXjT6a+D+LKL/AO8+96ifw9ep1HKoGYX4 uTccX/2A493DDSK9eIp5Z6zQorniwbmwtc/42H5496OkA1BPVSPl1mMTagBy Pybabf737oSKUC06uoPRXPlD83Pix8K8TtfK/JjuDbnWEO86uso9q0eSStr8 tnpMeiS5CWhxOKpqyuejollQSzsixKzgXube9pG8ldI6q8iIO456Jof57n8r GRf2vlBipbjUPHtHeb3H+AGEv7v9PL6DphZ4galqDrmv883+V9Jp8fyRglJ+ gTY+92J/1guDv799PL6D9vWzdw+UnXB/54v8swE2+RK2P0/34e+Qf95wXuwt ZONOt+PAc689cP8Ah8P+WawP/OQ6/wCudhb6+o/8gPPuywSK3lT7eq/U2/lJ n8+sB/nf/wAs36/7MQpv/TYe+f8AiMF+fd/Cf06r9TD/AB9Z0/nY/wAs6VBI fknQR358cuyt+LItz+VG3Wt/t/fvCf0699TD/H1wl/nWfyz2jOn5LYwG4sTs zfgv/Xn+7nv3hP6daa5ip2vnqC386T+WkbW+SuM/2Gzt93t+B/x7v19+8J/T rxmiNO/qI/8AOg/lrlj/AM5KYzk8f783ff8A9jv493VCBwz0206Z0uAOo8n8 5z+WyeF+SeKuTchtn75AP+329/h7sVJ8sdNtJGR8XUT/AIeW/ltSfT5KYhbX uH2jvpSR+SP9+4ePe6H06rrT+LqPJ/ON/lvubp8lcIeLc7T32L2/AP8Advk+ 9gEZ6ozA8G8uob/zi/5cYJA+SeELG9r7U3zc/wCt/v3L8e7eXSdgaYOem5v5 wH8ulrsPkjhGuTb/AH6m+Qf95239PbisoHTLI54U6iyfzfP5djDj5IYXnnna u+Rb/b7c93WQAk06TtBKTUAdQZf5u/8ALuYFv9mQwl72v/dbfH+9nbnt5ZU8 26obebyUft6hP/Nz/l5lePkbhDc8W2vvckn/ANBy/u4lhrXXjpiSzuW4KOoM n82v+XuwOn5F4Q/+Svve/wDrf8e5fn2pW5txSr46SybfeHggJ+3qC/8ANh/l 9y2K/I/b4v8AUNtve6ni/pN9ue1YvrMU/Uz9nSVtrviSfBz9o6aqr+at8AZA dPyM29f8j+729eeTz/x7nt8bhZV/tM/Z0lfZdwJqIfL1HQm9W/zfP5eeApsh RZr5KbfpInqVqaR221veRCHXRKvo225XS3JPsN794V3Ij2h1GmfLPQm5bjub KOeK7XSuqq+f+DoYR/OU/loWt/s1O0wAf+eZ38Of6D/fq8jn2D7rbryVgUiN PtHQqW5gAzIK9cv+Hkv5aH/eVW0+f+zZ3/8A/Yp7Y/dl9/vg/tH+frf1MH+/ B1jf+cf/ACz9IP8As1O0/UbkHbW/eT9eL7V9uR7XeE1eOlPs68bqClRIOk3u D+bn/LI3DjK3FZD5QbSqKSvglimjfbO/TrSRGUgX2sfWL3B/Hs3skvLOaOVV OD6jotvo7W/tpLec1UjqvbN/zCfg/jcxXU+H+Re2MtiY5mNBXrhd4J5qZuYx Iku3Y3EkY9J4/APuZdt5psZLZEvZgktM4P8Am6hHcuT95N1Ittbl7euCCvD8 z1xh/mOfCxQC3fu2QOL3xG7f97G3+D7X/wBYtlp/uaP2H/N0wvKnMK0I29v2 r/n6cF/mQfCYAX7+2yDxwcPu76f+g/7b/rDslT/jwp9h/wA3Sv8AqxvxABsC P9sv+fr0n8x74SOCP9mA2wTe4th93Gw/r/x71xz9Pe05j2Ycb5QPsb/N16Tl rflHZYEn7V/z9DF1X/NZ+DWDgqMLn/kRtqmx6ap8dVPhd4yiJ2Y+akk0bddl jb9SEAgHj2GeYL3abvRPZ3StLwIoRX55HEdCTl7bt5tg0V9aMsfEEkcfTBPQ wj+bR/LtZiR8ndpE2F7YDfH5JP0/uwPr7DPjR6QC2a9CYW0+o9mPy67H82v+ XZyB8ntqcfUf3f3z/wDYx7r4sf8AF1b6ab+DrKP5tn8uom3+zPbU/wBjt7fP /wBjHv3ix/xde+mm/g65j+bX/LrPp/2aDaQt/Xb++f8A7F/bbyIaUOerC2mF ezrx/m0/y6h/3NBtC39f4Dvj/wCxi/u6SIAAWz142sxNdI/b13/w7R/LruR/ s0G0Lj6j+A74/wDsY5928RAAdWOq/Sz/AMHXOL+bL/LrlcRj5SbLjJudU+F3 vFGAASQZG2xpBP4H9ffvFj/i699LP/B06U381v8Alzxl3k+V3XiMAAt8fvIc fk3/ALscWt7LdwaR4yIBVun4bZwSXWnUmT+bT/LcQ6X+XPW6H8lqTeA/+Vge yI2t2f8AQT/LpXpb06jSfzcf5aiC5+YHVq2BPqi3Yt7D8X22Pdfo7r/fR/aO tFGOPPo6mw+xdi9ubG212X1nubG7x2JvDHrlts7ow7StjczjmllgFXSmeKCf R5oXUh0VgykEe0sivG5jZO4ceksyUBBw3S7wdMyTSVhBAjHijJ+pcn1EH/W9 mG2KdOUz01bx6HeUg8KdKyOYyg82YHkAm/P9b/09m1RXT0uVi464yk2+v4P/ ABr3vrxBHHpuYEXb6Dn/AHr/AIn36vl1RiKEDj1Ek5LW+nJ/3j8e3AQAKnPT bcD606gSc/S97f4+7dMyEY+zppnI1jkXt/X/ABPt+OtPz6QTEFhQ9NFQ/wBQ OOPr/wAR7WDPDpKxAyT0y1LkW5/AA/pz/wAT7UoMdI5WBqPOvTS4MrCNL3JN rf2SBck/4D3cErk9ICC2B04RRCCLxr+phdze/q/qD7aZ9Tjp1UCCg64Hn68/ 6/8Ah791v8+sT/pt/j/yP6+/UHTLmi466QgA3PvwAHAdURqAlm66Ygm4/p7c HThIHE9doOf9h7316oOAesvv3W+uSj1L/rj/AHv37rY4jrrSVYixvc3uP9v7 3UmnW6MCaDrkFuRc2/x49+INCerBS3Hj1MjgU2Act/gFvf8A3j3QsVFSOHTi RvUduOp0cNiFsb/j8n+nFvqefbLOSuofD69LET5UPTdldw43DfsMwqcgRaOk iKuyX+hqHDEQqCPoefYe3PerayRtFwplp8IOT+XVpLhIuwDVJ6D/ACnpvwdX V5WraorHuxUBEjuscQY38ccZJAFuL/Uj2C/3lLuZcy9gHCvn0YbWWlkOvLY/ LoY8NTaUU2A/wIAt9Bf/AHm3tRCI1QkSCvQvtogKU8uhCoovSCRY8D6c/j/b D3ZZSVJPGuB0ZKoNOnaNADe4+n5/P+sPd1avE5PV9IpQDPQRfINB/sv/AH// AOIK7k/w+nW25/x/sPbnWkBLD7ev/9LcH6Akb/QD0GAz/wDMjOnQB6h/zTfb P09mCfAn2DonklHiSY/Ef8PQwRSumq/ka9v6/wCP/FfenFaZA6bMo9Osv3JF vS4+nP8AT/H3TSP4h1sSCox1n8xP0kB/5C/437ppb0PTmofLrsVOj6uOf8b/ AE/2/velj5HrYYVPXP75bABhf83+n+8W970v6db1HPp1Pjr2jXT6GRrXjYEg fnn88e6euerLKwBqa9ZPLDOfQfHweG/QSf8AU8cD3vq2pTnh1wkLRMFYEXP1 HqTjkXYGwv731rIqD1y+6/2of8kn36nzH7evah1ljqL3sf8AeCP969+68GHr 1kFQeCGH+sSf+K+9dbqB59ZPuj/Uf8lH37q2pv4j1kSqP9W+vNj/AMV+vv3X tbfxdZxVGw9f+3vf36g9Or+IwHl1lE17cjn/AFv949+6uJAePXMVAjFyb3/p /wAaHujqWpQ9WBB4HrmtUDblv9bj/Yfge6lXzgdbx8usv3LXtc3tf/YfT3Qo QKnrfb6dZFne3/FRf3tRX8dOvAj59ZRUNwD/ALHgW92z5P1rz446zJUDV+r8 H6W91LMfLHVj/pepCzgj6k/X/ff7D3U9aAr5dc9Z/wBp/wBc/X37qwbhjrvy N+CD/rE/8V9+62GHWWOWwOo83/3jj+vv3W8N1k8q/wBf96/4r791rSvp12JF P0P+9H/ivvXXiFGSOumc/g/6/H/Ive8dVagpjrkWBX68kf4/W3vXVK5r1gZg o/PP+t/xT37j1cHVinWJmUm+n/ef+Ke99XAoOuDkfW1rf0+v+8+/db6wf4fj /ff7b3rrRA40z1BqR6uBxYW/3n6e3B8Bp69UU+Z6hltPPvZIABC5PWySPOvU Z6zSfr9PzYfX3cA/i6ZMgH29Q5a3km9wLDn6+7aa1x1sSKRUmh6gyVYcFJAG Rrhg3rWx/AVrjn3ulKZz1UupOnip6SuTwmOrH8kKeGXSQRFYRyEWNyv0HP8A T26krr546Q3EETfCKHps/h0lJZShC2ADqOAD/U+3NevNemUiZaE4z1jrMZ9z pnpwqVSLZlH/ACkAD+g/3YbcH6e/BqVrw6WJlhTj0yw1JQjVwwJUrexUqbMG 440sPdiPTp8HyPTrDXWtze3H4/J/J90oerBj+Lp5p8gpt6iB+bH/AA+hH1/H ttlJrTq4PTlHkEv+v6XN/p/sLe66G6905xVWrnVwebf0/H0/xt70QR17qdFV 2dbMQPyPoP8AX5/PuvW+nFK0FhYn/YEf8a9+6904xz61BDt+Rcn8j/WPuuFG R16lcgdSBJqHqtY/jm/+9+2TpHCtetgd3XIaD9AOP8P+Kj3sAngermnn1lWJ SAbL/T9I+nPvRqDk56bJFfPr3isdQAuPyBa3vWo0pXHW1IrTPXMavzbj/ef9 59+6c61FP+FUPxj7V7Uwvxf7o2ZtxsnsjrSm33tbfOe1EU2259zVmJq8HLky kcr0tFWPSyIJmCxhwFJuR7V25GllrmvSK67aPQ6etQva3Tu7aZ4WeTDPpa48 OSDggt9Qoi51f7Ye1YFOkDuGBHRitu7PzOOeCSeOkIjJuYpw4P05BCi4Hv3T QpXPDpf/AGVQB/mwebj9N1Fvxb/H3vrXXZoanUtwGRvqABqJP9ePx71nrflw z12lHNcgRAKFJDD+v540/X3vrXXH7KoBYrGLBbfT8/1sR7917rtqKpYrdB6Q NNgP1nn+gHJHv3XuuRoamzHwi5NybAG/9RYEe/de68KGdlRTGFCFuTyTf/YD 37rdD6ddGhqFUehb6gSdANx+VHBt7916h9OumpKgcLEL/T1DSCCLkC4sOPfu tdclopuLxEfkqFBAb/gwH0NvfuHXuuzQzAE+EAg2W0YBueSb2J96z6jrf5Hr j/D6g/VQv9ePz/Q8e99a65fZVDctEraebKOOBYH9P9PfuvdeNHUF9PiX+pUk NpH1/Ci/+t7917rgKKoH0iDEn0nSLL9QL8DSfes9b65GjqBY+Mlr2IA9JP5u Qp5/2PvfWuuf2VQCreGPi45+vP8AQW9+69177Oe4AhUC1jcCxufpcrwffuvd cXoZ/J6Il0gXK29Nz9eQtxf37r3XD7WqGoGNSSRYAr6R/sQPqPfuvdeFLMCC ackBib+kk/4cgcX/AN49+691xFLVaiftSRckfpsLn6AW+nv3W+uJpasNq+2I 54NkJB/1rW9+6112Keq5cQgEkXJQa7D/AAsB71nr3XnhmVgRTEqOAPT9T9fp 6Sf8CPe+tilc8OuhDUMwJp244Uvb8/qXj+0fxx79nrxAxQ9chTTgj/J34FhZ A1uTcMTYG/8AX37rXWI001jendCRYegG1j+LX5Pv3XuuSRzsyIKaViTpBEYD H/abEAkk+/Z8uvYzXqH95SKxjEsRbUQxLxhlKmxBUm/pvz791sCvDrn54JCw E0dmBBa8YW9+LXNwD791rrkmk61XRYH6LoYtb+hv9P8AX9+691n8LFVKRzOz AgWiLEtbgDSG4Pv3XuPWN5gFIkFnX6/tWa/Fr8X9J4t9ffut0J66MiEW9N1K l20BRc/6lQB7916hx1gq5UaBlDofwfSLlRzxx+PfutheNR5dBHuSxVgQGJch W029PNuLcEe9evVegA3Lo/cLgRtyLj9FlX1WA+htyPrz715DpyM91Ovoffyi qaQ/y3fiLSopDy9byOobksKjc2elDf6zK4PsM3RZ7yankf8AJ0iuBrmKDiT1 aOKZaeGOBCdKKObfqY8sTcc8+zi2QRgDzPVygVQo4dRg5gYsbnV+AbE/0+v1 9qKd3z6oraCes7uGUsPpa/8At/8Aih93HkOnC1adQnbULAf7z79wPTR7afb1 Fc6Qf9Yj374qnpsniem55AH+h+nt/TqBPy6TytUkdMtSw8hP9B/xJ/4r7fiH AdIJPiPTNM4Ia/1F+eLfT2rU0NPLpFKaUPTNLqncJGCxvYf0H9b/AOAHt4Np yekNGdqKKk9SUplpozxdmtrkt9eLWW/0A90eUt08IgABTPy6wlgp+h/w91Rc VHHppwUIB6wn6X/wv7vrANPPpotXqPrDAD6fQ82/21h+fd/Ppg1dQo68GCg+ km/PNv8AiSffutqukGq16yAqf7J/x4B92HrXq4Vf4euQI/At/tv96B97qPz6 3SnAdZFXUbf8QT/vXv1QB1cLXPUiOEhxz9GW3B5sbm3upcU6ui9w8z1IMQLN cflv8eb/AJ/Pugk8gelAiqSadZY4kB5Xkmw4IH+x491Zich6DpwQg56bM9uX b21aV5s3XQ08oUtDRoRLW1BP6RDTL+4xufqbAey24v4oQ8jyjSoJ/ZnrcssV uO9qHGPP9nQK5PtvI5iT7XDU5wtA5MbVch8uQmX8HWgEdMG44Qah+T7Bu48z S3FYrKor0ia8klqqDQnr5n/N+XWTFQF38sjtJIzB3kcszO7W9TOfU5t+T7CM wlD6ppdTnNf8nXrZQJfy6GPbMSRyX/w/3kf0/wBj7W2gBXj0KdnSszfZ0N+D RXVLE2a1/wDbi319rRig8+hjAtO7z6EKlRQFB+lzyOPbq1oD0tHAdTyFsf8A AcfT/eP9b24hbUtR59b6Bv5Bgj4/d/k/8+K7lt/6Lbc/tX14YYH1I6//09vn oCaQdBdCAAkjo3p4fX8f6N9s88+zJVoiD5D/AAdByVz4sv8Apj/hPQuieT8j /eT/AL3f3vT69UEh9Ou/O39D/sD9f95P19+0/Idb8T5dclmjH1v/AK3/ABF/ fiD04WBI9esgkVh6AB9b6j/X+nH9Pes+Z62rMOB67F/8Dx/xv3vq5lY8BTrM Jn+hNx+Tbn/iPdNCg1p1oux65CdlFlPBtwQD9P8AY+/FAT1tGArU56kJXyoN P1BPIYArY/mxvY8+6+Hnjjp9XNMcD1ND08gAWRYpBb0tIWjf8n1EcD23pPoe vAq2Bg9cZNcI1G6j63ADxsvNijjk2/PvwHAac9aofMdclqrqhJFja1x9f+K+ /BckU4deHUhJlJ5Zfp/T3Xr2pvXrn5kXjWB+fpf/AIj3vqwcjjnrmJgbWII/ rY8+/dW1cOpAnt/aW/0+vv3Vq9ZEnvfkH8cD/eDb37ravp4HrP5VAvqF7Xt/ sP8AWv791vWSa4r12swJ4Zr2/wB99ffsefTpeoFDnrMstxySfetIPXlY+Yr1 kDjj/er8/wC8e6lT5N/Lq44V4dZ/Iv8Aj/vPutZK8M9bz69ZEmK30kW/o4/3 r3okfjB1deqR59ZRN9B/tz73pVhUdW1E06kLNGpve/Fv99yfdCPmOtnOKdZP Lq5WxH0/r/vXvXW14dZFdeNX+x+o/wB9b37rR1Vxw6yAxj6SAe9dVqx4jrmH Qf2wf9c/8j9+60dR8uvFk0khnJtcHm3+2/p730528KCvWEyg2uTx/h791UBh w65KUIub/X/eP6e/db7+uDfQ8fj37q/WD37rx4HqLNcsx+n4H+H/ABX28goo 6oCKcOm6YWVr/gE+9AZA9OtN6+XTNLp/2HJ/2BHtzpG/mV8+m6Vksfr/AIfU e7Enh1StBnj01TzkgqpOo3/F+P8AW/Hu6pTJ60SaUrnr1KkgYM19J+o+v9fr 9ePfnKnFc9V48T06iNSPWA9/9VyLfjj6e6k6eB6cp1Gkx6EmSP8AbexK25Or 8FV/Fvfg54HPXqUNRx6RuZxcrl6inj0VKC8sIFlqB/alj5/WQObfU+31b1OO ramNT0kYqtrn6rYkFWHqFvqrD+vtwj06cXTpIPTvBUi1vwP8CD9OCDx7oVxX q2oLjpyiqwOBfn63H/EfT3UgjretenSCuPAv/hc/4/Tn/Ye6lfXqwNeHTtTV tyAxv9bcfT8W91ZRTHW69O0dQpNgbE/gj/ibce2yKdb6c4KmxUA/k8H6G4+t /qT7117p4jnU/m1x/viPqPp7bZDXUOPW61p1LUqfzf8A1vpb3otQ9y069WnU iOS3pPAH+9E/7zb3rDk0GevEAivUj+v+w/3x9t/4evKeAp1173050wbm2zgd 54HMbU3ZhMVuTa+4MfUYvOYDN0NPksTlsdVxmOoo66iqUkhnhkQ/Qjg8ixA9 2B05HxdaIBwRjrW6+Xv/AAnQ6+33uXL9gfD3sun6Oq8hG9XJ1FurH12e64/i UFIQq7dzENTLn9uxZSrUa45RU08BYsll9AUpcnAcfn0ilslYkxtT5dU974/k z/zSes8lHj6Donb/AGxSGnSYZrrTfu3a/HgySSKaeSHP1GDrIqmPRdk8ZFmF ib+3xPER8XSU2syHC1Py6DF/5dX8zTHySRVfwb7clkUlWejG1auElfr45INx EOp/BFwfe/EjP4x1Xw5608PrgPgH/MfQnV8Fu7QTzqXG4Bl/xtbP8kW9+8WP +MdbMM/+++uQ+BX8xNSNXwc7uWws3+4nBkXv/X+Onn3vWn8XWvBm4eGf29cW +CH8w9QNXwe7tAH6z/CcHbTze/8Auc+oH9PftafxdaMUoyUPWBvgz/ME/wC8 Ju7ABzb+DYe/H0F/41+Pe9S+vXhFLn9Mn8+uH+yP/wAwFQL/AAn7rH+viMPz /tsyffgV9eq6HH4T+3ri3wl+f1jf4Ud0iwH0w+HBP9f+XzwB73UevWtL/wAJ /b1hPwo+fSgX+FndH0Jt/CcOef6H/cx73jrRJGGBr9vXAfC356j6/C/uYgD6 HEYg8/43y5Pv3WtQ64f7Jl88vq/wy7mvf6fwrD2A/pb+L+/UrwHWvEUeeft6 4n4bfO4X/wCcM+5Qf8cViD9P6D+L+7aW9OqmVBxf+fWN/hz86V5/2TbuQf1v i8SLn+vGX4B97Ebn8J6qZ4vOT+fWP/ZPPnQjaj8OO47N+P4XiT/veY9+EUhO EPXvqoOHiCn29OVF8Kfnjkkmem+HnairEwQmqXbGPe7AkBFrtwU7yC31Kggf k+7i2mPCM9UN7ajjOP29Sv8AZGvnwLhvh92QAT/yu7LH44v/AL+jn3v6W4/3 03VTuNmONyv7T1xPwg+eq21fELsfj6/5bsu1/wDH/fz+7iyuvKButfvKxoa3 K/t64H4S/PAW1fEPsQH+n32zOP6c/wB6Ob+7Dbr08LZum/3rt4/4mLT7esbf Cv52J+r4j9hj82Ndsz/Y8/3n92G2X54WjnrR3bbf+UxP2/7HUaT4a/OKIkv8 TewV+hschs0Dj+v+/lP9Pdv3TuP/AChv+zps75tIr/j6Ur6/7HSoov5f38w3 KU0VdQfDDs6spJ41eCaGt2QySKSfUCd1A2uD/tvZbKywOY5jpcHgejSBvqI1 lgOqJuBB49TV/l3fzGwSf9kl7T+p4+72Rzf+g/vX+Padry0T4p1HTwgnP+hn 9vXv+G6v5j3BHwm7W4vwKvZABv8AT/mK+PbZ3KwFR9Ulfz6t9PN/vo/t64f8 N2/zHQP+yJ+1FPH/ACl7IP8AW/P96/6+9/vGwOBdJXrxt5/99H9vXj/Lv/mO f94UdqWtzer2Rz/rf7+v8+3FvLVuE69aMMgagjP7eoNR/L7/AJh9JFLUVPws 7RjhgR3kb7nZT+NUF2bSm6XZiBzxz7ejkSVgsbgsempCYlZ5BRBx49Bn/ssP y8UmNvjRvUMrMjo1dtFXR1JDqwO4gVZCLEGxB9na8v72yh122QofPFP8PRA3 NXLyOUbdog44ip/zdZ1+LnzAawj+Me+G/wADkdn/AEv9f+Pi596/cG9V/wCS bL+wf5+rf1n2BuG6xftP+brm3xT+Y1jp+MO9yfwxyG0LH/D/AI+Mn3v+r+9c f3bJ+wf5+rHmfYv+jrF+3/Y6cYviL8xjC7J8dtz0M0tPMkMrZPaDy00ssbIJ WgOfCs0YNwL/AF592HLm94P7uf8Al/n6aPNOwZX95x8fn/m6CPIfydvnNvPB 1K0vTHYpps1GzDI43KbMWYeSTyM8TjdHB1D1Dg+y24srq3cxTwsrjiOjO33K xmCzQXCOvl6dBoP5CPzoubdZ9zc/T/cvs78fTkbrPtN9M48m6V/vOClf0+sy /wAhL53X/b637nuP+rztEW/226ve/Af0PWxuUBwNH7OhX2n/ACav5h21KCho aDp3s6rNBOZ4qqvzG15ZnbyrKEkK7ot4wRa39PexGyihB6baeORi2pa+g6MR V/y3/wCYLUyCQfEzd8kpSLzz/wAX2XEJKhUtJLHENyXSNyPoTf34gjj1rWvC o6hSfy0f5hrgafiTvC1v1Lmtmi1/oedx+6MyopZjRR1uo9em6b+WJ/MVfiP4 m7uHA/Xn9lIbmxuG/vBwLe0wvbU/6KOrCnTTUfyo/wCZRlfRB8Xq6i1+ny5T eGyqVFubXYjMysFH+Hv31tr5zAdbNPOgHRofj5/wnn7/AN+ZaizPyk37s7qj ZzIKit2tsh4d5b9rUcypJjvvXji29hZTZS0pap9DcLce00u6W6krDV3+yg/b 1RnVBUGv2dbbnx96T2n8f+pOv+o9jxVkO0+u9sUG1NsrlJ0qsl/D6FGAqK6e OKGOWrqXdpGZUUXbgAe0dsvjSyTsuTk9VVWzK4AY8Ps6GSU3sf8AX/4j2ZDj 148D02zrq+t7KTzzxb3cOa56aZQfLPWFHIHjJBv/ALCw/pf8+3QetAgVXy66 Kkc3uP8AbH/iffuOettSnUGUn/eTf/ePd18+qlRTh01zGxY/kKT/ALa/twEj AOOkEla449MMzE83F/8AbD2rSih/TpA5JFT00yIZGMUalixHPNgfyD/Rbfn2 4SAK16SspkNKdZ1plhQBLFyRrf8AJ/Nv9Ye6tIxI9OnFhRQaDPWGdvwv+834 t/xX3ZTqHTLK1Kr02yA3/wBb24j6TQ8Ok0wqRjrCdd7C1vx72CnE8ek9D/Ce uvGPyAB/he/vSsxPVQM8OvaF/wBf/b/8V9ug0GergE+XWVI/SSL8mw/pcC/4 /wAPfvEFQAcdXCGldPWVYGKm6G/9T/vre22bSRS5Wn2DpxYmNO3P59SooGHJ GgD8X5PH1+n59+aUEgBga+fSjwwvlXqZFCzMulbLqF2Nvr/iTYA29tySpCpM 0oHT0cILLRc1p0mt0bwwO1MfX5KuqhUCiiaRqOh0zVMpDBRGCDoRi7Dkkgf0 9kF9zNtVipEkw1/I9WmKwBi2SPIf6qdFmzXem7s8ZKXb1HDtyha6mdf8syjr 9CVqHUQ076froBI9g685uu7mRTZOFhpTIBqeip76WSqx9o+XH9vSKpoKuuna rrp5qyoksz1NTK80zf1HkclwvP0Fhf8AHsraSW9k1TuxPyJAP5cOkoUsSSK/ PpW0FERY6BpQXQE/p+gFrfX2r7QnhqoH+r16ejiAyRnoT9vsLLG17rbSx5uL Dg/6x9l0sIjaqA6T869GFuq+J3cadDBg2Ef1Uizfk8jnn2ps2rjoS7SAshpx r0M+CkXQun6j8/8AFB9Pa1iQfl0L4aEDoRaVr2H+BJ/17c+7oxIFfXpV5Ajp x0/71/X8+16KKVp1UZrXh0D3yEU/7L73/f8AHRXcv/vtdz+3OrIASuPPr//U 25OgpivQfQ36eOjunx9SP+acbZ/ow9mq/Cn2D/B0F5WPiy/6Y/4T0LiVWm99 PNrc3+l7/Vr+906pq9esn3f+B/3j36nXtQ66FSAf08f4+/U69q6yCUt+lR/j pNv9v791sfLrIJJBbg8f7V/vXvVOrh6eXWQSqOdfP9CT/sf9j71TrYfOeHXN agAWuG+vLHnn8e/U6sGHr1zFUnA/P+B496p8urax/F1kEoJueP8AWH1/3m9v fqdbDhTUMOpcNZMgKqdaHhlf1AKfqBfkf7D3RgPPHTizmh7es/kppDpUfbge qzEvAT/W31Q+9CornPTmpTUVp8+upPuYyrMFZbHRJFZkI/qSp4/2Pvw8OhH/ ABfXiWUV04+XXAVL/ljf68c/7z73pQ8B1USA8RTrkKlri7Na4vwPp78UWhx1 sOpNPPqUKhT9GBP1/V/xr2zpb06vnqRFOACS1uf8Tf8Ar+OfftLenWwTSnUg Tta4deQB9OP9t/j71wwRnrdcfPrItVERy3P5/wBb/ePdtLenXiSeBp1njnUg +Nha/PP5/wBv71QjiOrqWAPd1JWS9jq/x+vH+PvXVg5B+LrIJrfTT/t/funf FPp1nSa4N/8AeP8AipPvVAeI6urahXrn5f8ABj/gLc/7z79pHp1ag678h/1D /wC8D/ifbfhfPquo+h6yxTNY2BXn6H+o96IKYB62GqMg9ZRM9xz+fz70GYkA jHVtXy6yfcf4j/b+7+EPU9eqfXr3nP8Ah/t/dSijix69U+vXJahtQuwt79pj /Cc9a4cOsplX8Ef43vb/AHv3oD+IHq2pj10agjjg3/p9P97970r6kde7j59c BUNfkIF/PH+2/Pv2mP8AiPXu7j120ykcsoH14uPdl0gkAGvWtR9eo8jqeQwP B5v/AIE+3B9nXvLqJO40H+lvz9f9c/1v791okAVPDpiqTccfUE/1/P04tb3u hz0ncqTjpnqSQPUeQTx/sBY/0IHv1BQ+vTLVFT03wwanD+sgNcD8H62JuQbe 3CxAC4rTqmSadO8URX9QH+I/w9tk1OOnSKjqT/rfT8e9dbFaZ49cWOkX/H5P 9P8AYfn3sCuB17qFUCOUEPzpIZeSNJ/BBA5t/S9ve1JU9e6QeewDVLNVUNhP a8yX0+YCwuoHHkPtTHIowx49azTHSISoeJyDqUxtpdSSCrD+ybm4Pt/SG4Hr QLfE3DpxirtRH+I/r/r8H3XTTienQ4PkOnWCt4B1f7AseefoefofbbKK8erg nJHH06eKeusLnSvB/PH/ABv3Sn7erBhU1FD06w1xLL6v6Wtxz/sP6n3UqD9v V+niKusQrMAQeb3sP8fr9fdSnp16vTzDWhhYPquf68/6w90KkcR17pwiqG+g LEEXtf8A2B+nuuOt9OsU/ADcn+v5B/5H7oUHEYPWx8unKGQMLXBv/U/7H8+6 MMCp7utigNes/unV+ve/de67t9f8Pfuvdd3/AMDYf1+lj9P8PeqdU0t69dm5 Frn6f8R791Q4OePUJkYXuTpH0JP5/wBh7uApagPV61ofPppnVg5PPN2vf6gn j8+3hw6r02P5AOSbfk/i9z731ogHj03Sl1DEkgcfn+v+x92Br2nh0y5oxNem aofkjUeQLc+3VBAoemn0hjQ46bJHIQ+om305P+t79kOMdvTTGmfKnTXJJfgt yD/U/T25TA9ekzEMKk93TZPMUXhuf6G/H+P193ycDph2pjy6bZJW+ur6c/U/ 64/P5PtxFOekzE0wOoE07AGx5v8Ag8C//E+3kAJzwHTDsGNPLpsmlP1LXtz+ o/6x/wBt7UoteHDpOzccdNUk5NwDfm/6j/Xj82v7fUUFKdInJyR02Tym7En/ AGJJ/wBtf/Ye1caMKYx0hlYjHl02S1AsbEfXgG/+8fT2oWJiaEdI2LcCMdNk s3BP0FiT/r8+1Sg4JGekxlP5dNryWOq4Nxzc/wBfa+NUzVsdJi1aj/VTpmrJ eD/Rb3P9Db6e10Uammc06ZeQDA6S1Y/L8XuBYX5NvqP9j7WqorUjHr0UzOdJ C1rXozXRe4v4ht+bESOfuMRUlES9r007F4mH59DMV59xfzXYtFdGZUPhvwPz 6lDky/E1mbR3/Vj8vkeHRgw5JAbhrcW/w/P+v7AkyagT5AdDwEggE56zD1AW /wACbf70fZM0T1LBcV6f4ddtYA34+vJ/xHtujDyNetima9R2taxI/wAD/vv6 +1kMhCkPg9NMBxB6bZ1uri17hrngk34/I54/PsyWQiRJFfgB0yygoyt0Q3vv oKfy1299lUutmMtVnMLCpAka4MldQoq3DMOZF/tHke5c5V5t7UsL6XSoA0k/ 4D/k6hnm7kxg77ntkWpixLqPT1HRNKWuIYBl0lSVsQVZbcFSOOQRz7lJU8SJ Zh8JHHqK2lMTmMD9UeXT9DkBIARbg8WNr2/21xx7qRSnp0pR9f29TxUB7Acn 6344/HPHFife6ECvr1tXRiykjUOhb6x7BfatauLyDSNgq6YAMTq/h1S50ioj F7CGQn1j8fX2H972dL+LxIl/xlR+35dCPY95axk8OZz9OT+w+vRw42RwrxsJ EdVdWUgqyuLqykcFSPp7jZgQSpFDX+fUm6lIBDYIB/b1OgB+oB54H+P/ABX2 maik1Ir09EprwwenaCM6RcG5NjaxP1+lr+0zlQTnoyjXSOGenumgBYar2H4+ v+v9L3PtMTUfLpSiE/b05SRlIiQpuWA4tzf8D/bey7cJdEOnzbpRoKipXqBI +gEEer+g+v8AXj2HiaR0/Eeqk06iSSA2t/S/N7W+p/p9PeiVK0B7uqEinHqb isa1UfuJgVp0IKpb1Tkc2H/Ns/k+3re3kY6nQgdWij8Qhj8HStYAKAB9PoPw gtYKOeQo49m66YkCoM9KWCnDYHUKSIn/AH31F/z/AE9uqw4E56TEefn1EliA X1WFrkXv9fxz/X3auQB1ryz02vFJrULfg/7Aj/X/AMPdw1K18+mmBJFOpUpG n8XtY/7b/b/X35Ca06cYVA6aJrC5+lz/AI/63tQvEenTDEV+XTLUSDV9fwQP rYk349vAgAgnJ6L5TlqVp00eF5mKJYj6O1jYW/x/J9ua6DPHpGsbSMQOHUla SOBWUNyeSfyTb6H88H3RnZtOc9KRCEUgdQZVNvryCbgf8QPdlYmoPSR1oDQe fUCZQOR+B/vf+PtxXpwOOmSKinUF1V782P8AW9j/AK3P4Hu+o46YdQw+fWIR nj1fQfke6l6ZJHTIQsMHHXvH/j/vP+8f6/u6ya8oK9eELeS9So4bi/FlsSSR pH9Fv/j780gSmutT0oSGgyOsrBYo2llkjp4o/rJKyRoB/UsxCj/b39tyXNui O0ki6ACTngBx/l06EODTHSUr9+bUxpZHysdXMpN4MaoqJC39GfUqXH+vb2Ct w9weU9tRtF2JX8gA3+anTgSmCCfs6S9Z2m0noweKC3ufucpIv+tdYKYsSf8A XPsA7n7wlj/ut26lB5kVPz49KEjLZC0+3/Y6YjmdxZ2aJa/JzCF3X9imIpYF Ab6eNLlgQP6+wXPzfv2/P+u7RL5UNPyx04LfK1Yn5cP5dI7sSFIcNFjwA0mT rNT/ANVgpW8rX+hu8uke1lnZvIRJdXRaQep6R3wCq2oUr0HWOxekoQvP+wst x9Rf88+xLB+ooKx0AIH29EqxBdWluPSwpaFkIYgm/wDrAW/4r7O4l08R04FF OHT7DAQOB+fxb6jn2oqPXp9EzU9KGgdonjsedSGwt/xr6e7FQ0ZPzp0oSiy1 /Dp6FbF1SiETXPDqW5FgSfof8L+2YI28Sig0J6PNpeklfU9DHt6qMkYItwVH HH4H0F/ZhJDKKdp6GcJoDXoV8dIGXn6kf1/w/p9effo0kH4c16Ug0UdO6n6f 649rEJAoet4zXoJPkIP+cfe/+P8AmhPcv/vttz+3CTigx1sAEpXjjr//1dtL oSf/AIwL0OLf80Q6gF//ACnO2vZwjDQnHgPT06CMsg8aUU/Gf8J6Fnyj+q/7 z7vVfXrWpf4h1yWccAn8/g+91TPr1rUv8Q6z+n/VN/t/bXVq9e8gT+23P+J9 7ALcOvV65iYj6M3P+P8AxU+/afs63XroObg/0N7lh9fzx/j7117rIsoA5P5P 9P8Aivv3XgSOsgkXglrfQ/429663U9ZvOv8Aqif8NQP/ABPvWkevWwSDXrLH NqBsWH0/IH+9H3rSeriT16yeQjkk2uL+ri39Pdc16trHHqZDXSxH9uQKCLEF bqw/2peV5H596KA8Rnp4THFCOs3np5h6gaZ73LxAtCxtf1Rn1Lf+o496AI4Z HVgyPxFG/l1jcSIoe6vGSbPHZ1P+tpF7f7b3avWipHd5fLriHY8g/wC+/wBt f3vpwaT9p+fWZJioOom9+PqOPfunBQefUiOdWKqWA/HIawA+nP0591aoU0Ge t1HUoMg/tEf0sf8Aivtqj8SK9az1IimRQfUx5/1/9691IPmAOvZHDrOJzxb6 ccm/+9X96+Xn1YMMYz1yFWt/1gj/AIKR/wAU920sOI6tq9epUVVdSVPF/wDi n+PvRBHHqwYjg3WUTnj1f7x/xq3vXVtbVrXrJ9yv++H/ABv3vq3iN1nim1Ak EfX8/wC+v7104j1rXrIZDZuRyP8Abcfjn3vq9QeBz1hDn/D/AG3/ABv37qlH HAjrNHIQD9Pr/vvz7qVDcR1vuHEjrL5OL3/F/etCen+Hr1fka9cfuB9Ltf8A wt/xX3ug61rAwQa9d/cr+WI/1x/xT3rStakdWEnpXrH92rG3q/2IFj71pAyF 62WPmeumnS3qBA/17X4/wN/dgWP4eqGVR1geqQGylgNI45P9f68/T36hPGo6 qZc9vDqNJVagwBJNrcg8n8j/AFvfqDzz02XJBr03Sz2vcXP+HH0H/Ee7jgx8 uq9NrP5ZLEEgj9Q/ra30/wBYe9mlAR69UaufTqZTwgWIBA/B5P491alTnPWw B+fU4KB+L+9dW64uv5/oALf7H37r3URyQTcmx/21v8fdgDmnHr3UGWVblbf0 5Frfg/j3amoVp1TV8uocjm6lbA2YfXg/7a3uoYLXHVa0NR0jNwYFawSV1GCt cvM0NvRVKBfygg2WUf63tXDKBpB+H/B1YklTpOT0HazSRuUcGJ1YqyM3qBX6 hh9R7VEAnBqOvRk5rx6nR1lj9S30/oP9t/T22UoOHTtamvTtDWjQRq+hHBI/ 33Htumfn1sHIJHTxT1guPV/j9f6/0/w90Yeg6sGK+eOnaGtu12Nzb8n/AH1/ dPs6cBB8+nmmrgrA3BFz9CPqQf8AbD/D3Uiop1bpQwVn6SH+v0sSOePr7ZIp WvDr3TrHVj6lif62+lvz/T8e9AU6304wVgDjk25+t/p9Rx9PemFRTrw6dUqk YDi3+N/959t6GGQer1z8upaMWsQ3+IueLg35/HuhFMEZ62DXrOJNfp4Fx9Tx 9Px9fz711vrmCFFjzf8Ap/tvfuvdRynJsePxx+P9h7uEJFa9VLUNKdYn4Fv9 qA/3n6+6gZIr14n5Zp1An+o4PAIufzY/4e3VPHPn1QDB6bX03Zb/AEP9Dx/T 8e79e6aaqM6G/N7WP+9+9gVPTEinLVx0nKi9/pfTYH+n1/437dUgKNXSd+HT bP8Ap/2I4/2Pu/VTkD7OmecHV9bf1/r+T7cBx0j6Zqh7OfobL/tx/re3I/Pp K/HqDI9l4/P+t+fp7d6ZkNFPr02Tv9bnm/1v7UAAAY8ukhbTknHTXO5sQDa9 /wA24/pfm3tSgGkdJnkAGOmxyRfn/W/4g+3kpUdJHfjnHTXM/DAH6g/42Htc i/iPSCRqmvlXpqmfSth+oWP9P8P9v7UxipJPDpJLJkjz6bZXLD+g/wBf6/6/ tSq+fHpKxpgHpsmm0j62ubAccf7ew9mEUIIBp0yWGR59M9TKNJBN7m9r/k/7 17Xxx0PDpHOwPaOk9VPfUb8gEj6Xuv0/259qAKADpBK1COlZ1PuFsHvKCGRg KbNKaGQA2vObPSk/UAmRbf7H2HuZrHx9uLqvdG1fypQ9H3K24fTbqisaK40/ nXH+Do88c+po2BABB+g/qL/717hqWPT4i0x1NeupRgfLpxjdvyfryBxYj6H/ AGPsuePSKjh59KB8+sjMGFrEWP8Ah/xX2iYEGp6c49cSLj3Xr3UV0vx/hb/X 9q4XXy4dMsuKdNs9OGBVyQrAg2H6gR+R+f8AW+hHs0in8I6x0meESAq/A/z6 ID390DV0dVXb02NTGaGYvV5vBxJ+4jctJW49ATdeLyRgX/I9y3yjzepWO03B +wYBP+A/5OoY515MkjaW92tKk5YDiPmPl0TilqnRiGuGBYFCpU3XhgVb1KVb gg8r7k1WScBoh2nqLozJAxV+PDpR0kxa1vSCAfr/ALb3UlhUHp8EHI49KOKN pOFFwRp+hYEHn6fQWI+vvXkenlNcGnRpeot43ih21mZP3Ig38LqnYkSJf1UU zHgPGf0c8j/W9gPmfaitby0X/TD/AC/5+h9yxvAkK2d43d+E/wCQ/wCToyFP CbliLLZQvH1+t7D8W9gORu0Anu8+pGijFK07Tw6fKam+jMOPx/j/AIW/1/aQ mpJ6WooJGMdPsEFiOL3P+8n/AHn6+2yf2dL0jC5PXWRbwRRLwC5J5/AW4sR7 KNzIpDX1P+TrUxoq1GOk1LOPx9f63+v9fZHI4x0kLVPUnFUElcxkdStKhvqv +tgf82t7XUn6/wCHt+3tmZqtXr0StLVj/Zj+fS0jCooUAIoAVFHAVR9APZyQ AqgdLFYZrgeXXbkHi/8Avre9f4etOwNAD1hY+k/7D/e/ewaGvTPUeUKQL2/B F/8AEC/u4f1GOtEdRwnqJsLW4/2At7ad/XraoTU0oKdNdRLa5H0BII/r/j/s Pdo5q4bj00W/Z03ytcEghlte/wBB/jf8i/tZG+rz6YcAmo6irjpaqxsyQ83L A2bm3ovza3tRqHlx6a+n8XNDp6zvSLCgjVSoAH4tq/pq/wBb3UOD5jpzwQg0 hcdN0sQuQ1+Pp/if+J921CuOk7KVNKefTfPGG4/I/qLH+tr/ANfftQGfLpM8 ZbIFOm6SEniwAP8AW/8AX34uvn0wYvNhTqG1OTcBb3va4sbf1AP4968WMCrP QdVMBbgOHTZXVuMxkZkyFZS0oAv+5ONZH9RGhY3/AMPaOXetvtgTJdLQD/UO m2hCU1EDpBZHtHb9C3ix1JWZefnQ8Y+1plcC92llUvpI/wBp9hPcPcOyiVjb pUnraooOFJH7OkDle29w1DGLF01FjIeQJFjNTUszf2tco0LpP0sPYNu/cje5 wy2FovhfiJ41+X5dbZW7eC/Z0gcjXZfOfv5DI11bMhJKzVEhi08myxAogAv9 LH3Hu5btf3sxmutxkV+OkEgfZ+fTvgqQprVuuOPp0Fhp0rxwBwCBy1rDk+w1 dSSzuGbHTkcVDjj0s6GljYpxe5H+8C1/dY4y8ijy6VKlTjpf4agDTRnSeGW/ B5A54vwD7FNjBTRjA6eSLII6CzeMv8U3JPChvDjFFHEF5USBtVQ9h+TKSL/0 HsUWyHVXoi3GXXI4A7eH8+uNHQxqFNr/ANLqQOP96t7Elp2x5xnpCseOnqOn AA1cDj06SAP9j9PZkpBGB1sRZBJHWUIA/BAA/oD9RwD9fz7t09/g6lQyBZUA JLAg/wCFv8ePr7cX4KeVevefSrjyseOopppmKwFqdZSCDoLSKqtx9Bc8+1+3 2xmkQA5JHRrt76ZYxXt1D/D0M21sgCYgGvqIAN+DdQb/AOtY+1t7FJExjA6H MB+LodsVMCo5+o/rxcfm/wBfacI8YUv8XSxSOHSlhIY/6305/P8AT/efb5Io R8urAUx5dBZ8g+fj58gP8Oiu5Qf8P+Mbbn97Hl14fGKfLr//1tsfoZ1/0DdE c/8ANEOofwf+fdba/wAPZ2iLoT7B/g6A87Hx5/8ATt/hPQrgg/Tn3sxjy6bD ep65e2yKGnVwaivXLyP9NR97KECp6sJTwr13rvbUWNvpb/H35VJ4dbMnDUT1 z1px+s/7E/X/AFrkW9+qV8urh045668vN7H/AG//ABr3XHTYahqK9ZFmX+1x /vP+9e906cEg8+uXlT+v+8e/U+fVvEX59ZNX+B/23uv5dX1n5/s6yxugvrv/ AIfUf7xx791sMtM9ZBKoHBb/AAsAR/hyebe/deqDnrkKhgbjgf6wv/vN/fur 56yLUNybhSOBe1zf/W/A96wePXqsOHUmGrlisYn0X4bQp0sP7QItYg/7z70Q tKHq4lZcA06cEqqeS/nQRPzpkh/SfxZ4v7N/9490Ibybp8OjfEKH5dczFIy6 4tMqD6+JlaRf8Wj5YD/H36orQ9XK/wAIFOsXkAAI4b/Y2P8AsCP94926bOpa EDPWQTyWBZh/hx/Xn/G3v35Z6uJH8+si1DW4sef9b/ePeiK9PCjCvXNZ2JAP 0J5Nz/yL36gA4dW6kpIoJOoNa/BNuf8AY/090NTQEEdar1LimQobMi2J4vf+ nujKwNBU9b1ECg6yicfTyC3+v/yL3rS3oethjXPWZJVv9b8W5P8Arf6/vx9a jq9R69ZBUsn6AOfrfke9hNQrXrdR5dchVSEjUFsbi9uLfn3vRTOrr1es3nB4 8irb6cj6f0910n0PW9RHmeu/MR9JFb/bcf7z71QjiOvVJ4nrl9y54upH0sLX /wBv711bW1KV64mVvxcH+t7/APEe/da1t/EeuBmsbMwvb83/AOI97oTwHW9b evWPyL9QwuOR/r+/UPp1QnzJ6xGcj+3/ALyPe/tp1qo6wyVK/km9v1cHj/iP fgpPDh1smnUSatVUYhiTb62ueP6D8+9hGqKjqhYivTd9/wCQ2u1z9bqo/wBu b+7aGoQCKdNCWuB1Op7mzc2P9R/vvp7rQfD59XBrSvHp5jU3W5FiBcW/w+n+ t7r0+oBYDy6khQLkD/b2P+9g+/dPhVBwOo8xOgMP7VweAP0/4AcEf7z78MkA 9MsMBvPqHKtx/r8c+7UFG+XTZ+fTO6+pgebEj/Ye9sxWgXhTptuPUKRtDeNe ABcC39eTz+bn3tVDdzcetdYTIVP9L83/AKH82/oPdwoFOtjGR0ltwYKLKK1T SLFFXKt2v+3HUj6FXI/TKT9G/P59vRylDTy6uM93n0Fsr1FHLJDMjRSxnQ8b XuCPr/XV/gfoR7MFUSoCM9Ms9HI8h1JSuU2AJAP9ORf/AF78+2zEwOenqkDP Hp0gr2XSSbj+oufp/Xn+ntkpWvkethq0rx6d4Mjc8m/04HFv9v8AQe2yhGer 1xTp8grOPT9R/j9D+ePz7aK+nVw2BWtenymyBW3qNr/Q83/x/wBj+fdKDzGe nQajHDp7psjqI1AWPPB/p/rmx90ZcY8ut9PdPWKAW5Iv+Bbni5N+T9fbdM08 +tg06eaepVgCeefx9f8ADni3+t71w63UGh8+neGsVRpsTx+f9fj88/X20UJJ J62fLPU1ahOCt7/0I+h/I91CE+fW6nh59ZVnDX+g/wB9/re/FGHA16qWYdc9 RPIPHv2plxXr1R5jPWOT9P8AsfelGo0r1oMa9RXUMtyPpex/33+t7cC6K0PW 61PDj1EaJbEgHm9+T+f6e7ageAr16nkemuWMEaSLj6j8e79UYVFKdJ2rgAZg BcXN/wA3/wBgeePd1Pz6TOBUjy6YqmMgnStwBY8/7Y/T24taZNemiCOPTJVX HKj1AgHi9/8AYe3B6dIpKitOmKdSTzyLf63F/p7dT7ekrVHHpun4RvzY8fix /Ht4Cp6SuKEA8emqY82P+wA/H+v/ALH2oU0oekzAGoPTNK/qNv8AfG55+v19 rFGMcOkMmnIpnptnktYc35/3jjn/AA9qEQVBPSGU8OmqWb/YkDk/4f09rlXi Bw6RMwOqvDppll9RuTb6m34PtXGisBjHSSRvPzPTdNMOf6Af0/oP959q0XKj y6YY9Mk863I+vH+sLc/7wPZrGtDXpHI4Oc16ZqmQBQb/AO8fj6/7H2uSOpoR 0klc4p00TSx25vcgn6f7f34owOPXpI7MSa9MLVr0NZTV1O1paKqgqoiTpu1P IkqqT+blLD+t/dZoRcQTQzCqlSOmYp/prmGZT3Bh1YltHO0m5MFi8tStqWtp Ipl+gKsyr5EYA8NG4Kn/AFvcFblZyQXMsVOBNesgtqu472zgmQ9zKD/n/n0s IpFUlWN+fqf9V9L/AOx9k8iLmgPRsHowBPUhLEt9TYfQAgn/AG9vZc8fdQg6 enQTw67LaTYg/j88f7z7YZMVHV6VFa9cD+f9j7sihRjqhPWJ11KSSSRb8EW5 9vB2NB1rpsmp1JN/6Ecc3uCDe45uDb/W9mMMhQVrnpJIgrQ56Jv3L8bIdxVE u5dixU+PzTs8uRxbsYsfkmN2aoiZEcU9a30tbS35/r7k7lnnJ7Pw7fcpNUIG CAKj7fUdRXzTyKt34l1tCaZiaspJofmPQ18uiZthcjhcjUYvL0U9BX0jeOpp ZwyPG4/T6WUXDDkFSy2/PuUYdwtr1FktXBU5x1EkllPtsjR3kREvCnDI6WuI onkCpb6+om5+g/x9sy3Phk6gcdKoIxJhVp+fQkYzEvqjliLRvG6MjpcGMxks hjI+gDe0slwpRlFDUHB+fRlDbEOrrWoPRr9i7jjyVNDjsgQmRijCoTYLUaRp 8oN+ZCByvuMN621raV54hWEn9nUr7Fu63US2s5/WUY+fQtQ0xhRZJrMpva3p Jv8Aj+mofn2HdVTpXj0MEjZRqc9tOp+tI2BUC3B+uo3/AAf9h7qNRHcOnvy6 T24aoA0nPFnv9OeQOLf19ku7kqIQvEsf8nSO5lA0AnHUGixktYVnqLxU34U8 SuObWH10G319l9vamU969MIhejsaR/z6VyNFEixxqAiABFC8Af7a9/Z8saoA AOlQZQKBcDh135xf8j/YA/739PfigBqB1vWDQEUp1xLqTe/+8e66T/D/AD6o aVxw64GYsCOP9fj/AIp71g4pTr2esRZyVsQRzcEDn+gFvdJSEA7uqgMzLp65 zSBI7EDVpJ/2/wDW3PB9o2c6qA46USMQKDh0zGCeqkEdPG0krNYIqkn1fXgf QD63/HtwFBxOOkoR5DRRUnpRY7Z0yq8uRk0OReOlVgVDDlTKy8H/AFh7ubrw aKDSvS2HbjQmbj5DqRUYuaNV9KFVWylSQoAvcKDY/j2+t8grqOOnvpitO3I6 T9TA7cHgXsBYc3/x+tve1vIV7icdJZIHNTXpjqIQpuTYC97jmw/xubC/vZvo KEhukjwuSD5dMdXU08V9TMbHgIA1v6+0Eu+WkP4hXpO0JJr59JOvzrR3FNTA lf7c17Aj6cJzz7Dt9zisP+46CvzFeqGFvJf59B7lsxmKsSA1bxLY+iA+JbX/ AKjm/HsIXvNO6XrUE4VAKYUDpM0RJOomnyPQZ5CkaZ2kN5GYEXdmd9X+Fyfz 7CV1JLcNWWRiftI6b8BB5Z6YKulNOGjt/lEgCysOTBGVH7Oo862tc+0wRV9T 14RHiPI9M5g0m5UE/i/4t/gB9PdWNMRkqPl0zKpqNXU+lQG1hzwbc8kGwB/r f6e07orAkqCaenWh+HOOnAUxhdZQLJJa6gcBjxb8+y6WJyMAcelukZ6VmJQO 6gre1hcf8R7vZ2+nLDur69PxnBA9el09bFh8ZVZGXSop6eRokI/XOUMcSD6c 6yD/AK3sU2cQULQE9PNIIoJHYdwBp/k6A3HQyTEyygGWVzLLJqJZmc6mP+vq PPs+tkFaMOPQWYl6aulbFFpCiwvxzzx/sPZ3AilSPn1vURgU6zyABRYc2I/1 /wDiB9fZmoAwB1rgD03ySFP9h9fz/wAb9+6ozEBTTrjHMTMCORb8H8f7H8+3 Fpp/PqykHPl1m3NMBtDNEXUxUqMSp5sJoyD/AK4vx7EWxDVe2iH4TKOl1qSJ 4afxj/D0teod2Jk6GClmcmroVSN/z5IQxEUiH6nSBYn6n2It7sSJNUa0Feh3 bvUkjy6N/gqwPGoJ9RAK/j6j6ew7NGW0lqYx0uBxUdLqkYMef6/TkfT/ABHt kx1HEdW1H16DT5B3Px87/tYD/QT3Lex+t+tdzG/097EbjyPWwxLL9vX/19sD oeX/AIwN0SD9P9CPUPPH/Puttf059nyf2af6Uf4OgJO6ePP3fjb/AAnoUzIf 7B4t/rf737t0yXFMMOuvI3+++vv3Vw1RWuOu/I3++HH+v9ffuqCUnAHXYlI/ x/x4H/EH37q2uvEHrKJVtcsQfyLX/wBh9PfurfZ1k1r/AF5/pz/vfumTjR14 E166Lj8W/wB5968MfPq2r166D8j6f7z78YxTreodSPuD/Uf7Y+6aG9OnPEb1 6787H8j/AG3vYUj8PWjKfXrwlbjk/j8i3+PFveifLSOva2p8XWbzD/fG3+9j 3Xpzxj6fz65rID+bc2/r/wAR791dZQeJp1zEhuLMeDcC596oPTqwcE4Oes4q GvcqD/X63v8A1vf3rSOraj+fWaOpIIZHMZB+qm305ANveipPW1dlyGoenH7y OUg1IEl7fuxWWXnj6fRz70AQOHSgTA/H+0cepCxs92ppFmWxIQ3WZR/TxmwN v8D71X16vQH4DUfz6j6muQ1ww+qkaSLf1H1H+x976qCc1x1kDDgAkmwNgVsb f4j/AJH71XrYfIznrvyf4f7z73054reg6yrMyi1wt+RwCefze3upAPHq6uCK sc9ZfMx5uCeP7PvdKAU63qB4EdZRUAG+o/7b3rSp8uvVYcVr1mWq45P5tc/X /evetAHwmnWwfkR1kWrFwLggn6f74e6sh46ut1+fWfzJ/vr/APFPdO44HHq2 puveZRb/AB+nJ/4p79pfrWpuvLPGWABsb2HJ+v8AtvftL+Y63qbz4dSGkvaz EWvex4/w/N7+6gnrQanlXqPJK+oBWv6b82J/2/txQCKt1sZycDrA0rkctx9e P8Pe+xTxz146RX16jSTAcK4J5/x+n9LcfX3tanBXHXtXTXLUyazd/r9P9b3c CgoOmXkKmg6wNPyNTfWwt/X/AA92oemjKaccHqRBH5CLf7H/AHx966diANSO PSkpowqL/r8m30/2HtlqFiTw6eVamp6c1YXFj/vH4t/sLe66SBWnTykBgeub uLfW3+83tb+n0916cZwQR59R3a6aRz6nP+sCOLf6/vfp02T2gefWJgTb/D6/ 092x3A9UIr021ENxqFyCfwbEX/3vn3tWrjqh9PxdM0ykN9Tf8E8H+n+PHt1S CMdVqBknHUTVzyefxcf8Vv731UMagFePXri/NuQfqL3/AD9Pes9bBYMafD0m tw7eizEbTQkRZGND4W+iTqv+6ZR+D/qG/B9vRStH2/h6vQOA1aN0ENSs9HO9 POrRSwm0kbizKf6m1zZvwfofZjGwkoacevA4I8+u4qwD+0CD9eT+P8Oebn3Z 4qjHWzUZIz04wV1ja/44a/Nr8gn2naMqK9a1Up08U+QdSAQOfzf/AHn/ABv7 ZK8c9OAg8On6GvPHP+8m4/5F7oyj8+rA/Pp7pq48AsCP9f6f639fbRX049XD EYrUdKGmyBFgTx+T/gP8OfbWkemenv8AB0/0tav4PH1I9V/p+P8Ab+6stc0z 17p5irQfyTxfm4P+w9tspA406sG8qdOENQxt9RcXvc2/2I/2PuvD7Ot4J6cY 5jexP1P+++n49++wda/PqWJG4t/sPrb/AIp7bLGpFB1sBT59ZNbtw30/2H/E e7KADXTQ9VoBwPXYDH6C492JUcePXuuEifW31A5P++/p7oeGoDrYI4Hptlib Tcm4H0+nH+vb3ZWU4HWqH06aKqASAn6MPr/Sx/xH093rSh6bZAcgZ6T9TTvw AL/1HH0H+xHt0MCfQ9MFSKimek9UUra29Jt/jaxP1t/sPbgP7ek0iVzTPTJU U/BA4vw30tf6e7g8T59I5I+IHHphqIiLqf6m9v8AA/g+1CMBTPl0jkWuadw6 Zp0sfpf6WP5t/j/t/apCrDPSMrxPTHOpDHj/AJH9faxeA6L5QanpqqPrb6Wv cn6WP059qkp29IJgcY6Z6ji/Nv8AfE+16Dz8+i96AV8yOmaU31EG4/P1/wB4 9rIhQdJH+fTTUuQG4/1va+BNRBPSd2Cgfn0xVEjgn0/04v8Ag/1/FvZoiV4D HSFjU9NNRKWsPppuSORz/wAi9mEYpUnpHK5OKU6Z5yWPP9TyP6fgH/be7soI +fTFeNOmOtH1uBa/0P0455/2HvyKO6o8ukUqF2qRgZ6Mj8ed1FqXIbZmkvNj pmraIMf10VU1pI1FrWhnPH+v/T3GfN+3NFIt2ifptg/b5ft6k3kfdQ6vY6/1 FyB8jxHRro5SbE3JP+q+osfzb6+46lib0+3qTA+piPPpzR2CjVxx+fzf/efa B0zUjpWpoO/HXMkmxU3H5uf98faV0UV6sCeuRUgXI9tUoB1vrjpDcEX/ANv/ AMR7uho1a9e64tAT9FuOfr+P9ufd/FNaA9aK6uI699uoUBRqB/ANub3PtRrj bS3i0YdeA0igWvQbb76c212FTlq2nWkykEZ+0y9NGFqYmBLKkp4E0Wo8j8+x Bs/NF5tc1ITWM8fT/V9nQc3rljb94Ss8YFwODeY6Khm+odz7JqGFdRGrxxkK xZaiS9O0QPDTxJqMDkf1sB7ku15vs72EVIEtOHUXX/Kl7tcrH6cm3rhhw/2O nLGUCqgBUfUfQglv8eLC1h7buLyQksrY6ZhgQLRlz0pKeJqaSKeAtFLEwdGX gq68g8fi/wBfadp2njeJxUEZ6UIpgdJoqhgeh72vueHOUn29XKsVXToBLqv6 7DieMWuef1f4+wlfWMlpJqVaoeH+bqRNn3dNwi8KVgJVGf8AOOlFPOAQq2Yk AcAsTfgWAHtGOHRzJIFIUcesFbQoxpKqr9ZRWEdN9fVe4eWxtp/P+PtDdQiZ oqjCk9J5o6lHcfl1192OLm1hbi4AFuAoA/T78EWJaRr1UsT1jM7f0Fh/tj/T 88W9361U9e+4JNgB/sD/AL4e9EgCp4da1UPHPXf3J+lh/t/ei6DJPXi49eu5 KgA+kj/Dj/euB7SF85NB17UT1KpZHYOzKSfSEULdieQbD6+008ido19Pwau6 grw6UtBtuuryJqlPtICLgv65ZFP5RAbpz/X2n16vh4dLorV3OqRaAnz6XFFi aLHRlaaECRrapWs0j2tyXP0+n4+vuniEE1PRikCRjsXr06XHqIFg1gALf42H 9fdGdXBJbh1enDGemKqVSG5/x+n+8/7H2keSjfFTqrV9OkzWQ3uLG1gP9b/j ftPLI3kx/b1Qxgg46SGRgNjYH8/nkW5+v059l73UoqCaDpLLFQUC16RlfDa9 7/UgcDn/AAv/AE9ks1JdVX4Z6SlSAe3PSPrYlFyABwef9cW/1/ZTPMh7RHUd JzAwOR0jq6Dlhyv+x4+v+v8An2XF6saJTph4c0px6S1VTimDSMB55h+yDcCI f2p5PwG/CD+ntC/HPHpI0ZAJamrpI1UYuWZiXZizG3LG319tFRxLdMkcR6dM kqhWJDfU/T8kf6/59t01cBnqpAOT1iRm4Nz9b8G3H+392SFyTVMdaAXhjpQU tplMbElXuOD/ALyP6H376fVkCo69X16fcWrxTIjN6lJ9Q+hQfRj/AIAe9w2x D5XPTsNRJU/B5npt39nF8tBgYJf83BLkKwA3t5AIqRGtwOQzc/19ia1gbQez P+r59I92uozojjk+3pnxC2SJrk2Xm5/w4/2/s0hjZWJfh0VAg5HSqjGkE3ve xB/2H0+p+ns4iXA08Aeqsaceo9SzfUE8cn/YD2sB/b1VG41PTRNMBe7clrf4 WH04/r70Fb0z1Vm+Z/yU6wRSMZRbm/PFvp/xPtxATVVGerx/D8q9d7skddmb hJ/GNka/FiBJEPx/ifYg5fdDuNkit3eKuPz6X2prPBT+Mf4eg56y3HListQV Ac+IukcwHGqKQqpvcchTz7lbcbNZbZ2A7h0N7c048a06sf2xXGSKJgdQKKwv 9WQ2tzz9PcfSQnW3Z59GKt5Hh0LtFOT4zf8Arcf4/wC2/r7SFQDSnTnSC7/O r4+d/EfT/QR3If8A2G25wR/t/fvX7OrL8Q+3r//Q2tuiHv0P0ULf80R6iH1/ 791tr/D2fJ8CfYP8HQAuJB48/Z+Nv8J6FQOR/j/Tn/jXu3TCvSvbXrvyf4f7 z/xr37q3i/0eveQ/0/3m/v3WvE9FFevBifqQP9gf+K+99WWQniQP9X29ctQ/ qPeur6l/iHXeof1/3n37r2pfXrosP6j/AIn3vrRceRFOuwwuLEfX37repfXr KsnPNhx/S/8AxX3rq3XPyX/P/ED/AG3HPv3Xq9ZdfA4v9Ob/AOt7oUqSa9XD cB1yDXJ/33/Ee6FQBXq3XMH+h4/wPunXusiva12H+25/2/vXTi6BQkivWVZA TbWB/sB79Xp4OpwG67LH8Nf/AGA97631yElrG1yP97Hv3W+pKztw63U2sbEj 8G5W30I/H596p1sNQ1HHp1iyHkTx1CCZAbDyj1rxa6SrZ7j/AGq/PupXNQc9 KFmqKOKjrIq07LeCQo2u5jmsuo/jRIDpa/8ArD3rurkY62AhFVP5Hri5dP1I VN/q36f9e4BFvfvXqxxxB67DA/kf69xY/wCsfz7917rmHPFj/rcA/wC829+6 8MGvXetv98Pfur+I3r12HP5F/wDePfuveI3XMSAEEG35+h964468ZGIpQdZh Ukf0P+wPunhj1PVQxB49dNVEn9J/2Btf/efd1UKOPTgk9esfna9x/r8gH345 6t4g9eu/vJf9Uv8Ath70VBPE9N+Kx8x10a2Tj1ID/rfX/X5960fM0694xGCR 1jkrGa2pgAP6C3+HvYQD1/PrRlOeHUB6lQSA34/AuP6f7f3enTGv5Z6gSVNj cc2/4j8/63vYHVWb16yUxaZidN1Xn/W/5H78cdaXJHShokBYfggEf7x/T/Ee 22NBXpfDha06UUX6B/sf979sefSheA6ze3dQAwc9e669tliePW+uvdevdcXN hb+vvfXusMgsnPNx9Pp/xX34A1qOqkeY6aJ4g41D6n/AfUf8T7uj0weHTdOI Ix01SJf6fXm3Bvx+f9ce3umj2hhxp/LqOSTZeARcgjgm/v3VkepAPXrWKuR6 rc8/7b/bj37qwYaj6DpKbjwkGTp3mdSrISUnUfuQ34Ikty8BP4N9P1Ht6GZo mFOHV2Ne4cR0DVZT1GPm8E6+NtN0YG6Tpc6Xja3KkezVHWVSRw6qrknS4z1i jqGFub2P1B5B/P8Asfe2RW6sdNcdOUdeVH1Jtxfj/ePbAhBYAinXgPQ56dYK 9WC+ogj8X4P+sPbTx6c9b1EGh6fKfIFeb/Ufg/QX/wAfbBSvDq6vnBz0oabJ KwHJ/wBe4+n+uCPr7aZaHPHq4Yjzx0/0uQ5B1HT9LE8f64/1vbbLTp0MDjp/ psipNtfB+nNiD9SLn68D3UiuD1fp8p64NY6wFt+frzwOfrb22yeg69Xp0SsU 2s5/2/1v+bf4n231vqdHXWFgWJ/NyOf8efeiAeI69w6mJWjgknnixa4F/wA8 j6D3sADr1epAq/6Fv68Ec/48fX3pl1efXhQcR1lEuoX1fXnki/unh/0uravl 1imIKEf1/wB597CaTWvXtVcU6bZVFyeblT/UcD8f0Pu/Vfs6b5afVZgeSP6/ 7H82FyPfsefTTpXuHxdMlTTcnj88gni/+34/2Ht0Nip6YYGuRnpiqKSwa9jy AeP6/wCub+3QR0y8YI6T9TRg/wCBuef+I/x93Bz0hkjpXpgqKQjVYWI4/wBY f0/2PtQkmRTj0ikj8xTphqKY2bUtiP8AbH/Ee1kcnD06QyR4IPTHUU5sRb+o /wBj+L39rY5NJHp69F0sPEdMM8DDULf1+v8Ah/vY9r0lqBU9Fk8ZpT59Mc8J GoAWB+tvqD/iPa1JOBr0XMpz0z1EZsQf8efwTbi/syhlApXh0mdK46T9RHKb n/bAj8D/AG1/ZvHKv4T0hdSpqR0xSqxLXvzyDf8Ax/1rW9mEcgYU8x0glBDt 6V6b5Ym5+vHPBH5/1r29udMNXiD0z1KOQVA5P9fp9P8Aivv1OmiCCB1J2fnK jam6MVmY2YRRTrFXD6eSjlISdSOQwjVtV/ZXvVgL/bpoad3l9o4dLdpujtW6 Q3P4a5+zz6sdoKtaqGmqYmEkNREk0cikEOsihkZf6hr8e4RmjKO6nDAkH5eX U820okVJVyrKDX7eH7elArFkXj6D68f7b+vHspnUip+fRq1SoNcdTI0OgEHi wJ4/3319pnjqAfPpxeAHy6zqpay2Nrf09tPHUdWp8+uccJLEaWX/AGH+Nh9f x7TFacR04q8ajqYlMp4IJP8AUf8AGvfqU6vw6yCkUG1x/h6f94/2Hupda8c9 eCU4DqbHSqlrG/4tpIFv+J496SZUNB59b0/LrO9HFLE8bqrRyDTIjhXjcH8P G91b/C/tZHcyx9w49UeKOQaWAI6DDP8AUODyDPVYoNiqxvUI0UyUcrH+01Ov MT/8E4/w9ndnvdxgSk6fn0Hr3lmxmBaFAkh/Z+zoHc1sHc2F8mvGS1kXOipo v8pisnN7Czxkj6gj/D2Jrbc4JiAZNNOgffbFe2urTAXU+a56QdPDnY65ZcfT zQT07qJJJo5I0RfqUk1AAo35Hs3lls5IgssoI6DSx7lBcBreJldTxIp+316M ltrI0VRCutv9ySKn3C2BAYLy1OoJ9DE8j8ewlNGysafDXHUnbbdRSxDWR49M /wCx1Jzs0beCRCApJBA4bVYcsBYfj2kdmX4unrpqlSp6Tf3Avww/3n23rHST WfI9e86/QWJ/AB5/3m3PuviYqf8AB1rWM5z1yEwBvwCP8QT/ALD6n21JKRQD gethia0r1Kp6aurWApqSecH+0kbWt/rkD2kaXjjHT0ccr00xk9LDG7Mr52V6 5xSrfmMESTEfkfUBT/r+2JJsdGMO3uTWTA6EHHYLGYwKYYNUtv8AOzHXJcDk gn0j/be07uCBqNOjSKCOL+zTPTpwG5Yk/wBbD/ffn22JADg9P0qKU6xO4UXP 049tPIAD1YDpulcWJsBwQCT/ALawt7TeJWopjr1K9MtQyX+l2H15Fv8AXtz7 ZYnJPWiooemCssDyfze1vySfra/49p5ZgoPr010k69ls9/6G1v8AfcceyuWb VUngOqPTh0isiy2/xP8AvX0+nPPsslkCgkjj0iYVY049I+uKKtv9ib/Qf4/1 v7JHckmvTLE1NektXFIQJGUmRgTFE35H11SLwSv9PbFdR+XSeSgpUdIOvfUz NISXYEsb8j/WtwAPp7SSHv8Ay6L2NWoektVEX/B5uT/Tj/efbL0p0mf4m+3p PVDqrEk/77j36Pg3SaSTTQU49QzNY25+t7D8fm1+P6+zCNT3GvEdN+Ln4env GyFnXn8ngf4W9q7e21YHDq3i/LPS8laCmxtRlp20RY6nlqZyBy1PEoeRBz6m NrKPyTb2d2+1F0DhakdbmuAsLkmh8+iz4rNVG4a/M5up1CSvnUon4SEyMIYr f2RHCq8cWYe1qQ+HinQcM4uHLVz0L+HW8aXuBpUn/YW/3ke1KxUpnuPSqPC1 6VgHoU2sAOfp/sT7XRp4a0PW3rg06bqpgFP+sT/r/X26BmtcdN1GSBjpP1Bu bf43/wB49udVY1C4x11BcOG/2At/vj7vE1HNPMU6dTCdQt/V0VHsXPvKwQzU 8dFFc2LTzzwhEUH9RZVJ4/HsS8o2fi7gkxHwuD/Po0sY6yxN6MD/AD6Ava1V oaMknggcfUXH+9+5hlTUjCuD0MIq91OBPVhXVu4/vsRSxvKGqKTTTS83awsY Tz/ql4/1/YG3C18CdlIwcj8+lyNUfPozeGqxKsPqtf6X4t/sPZLLHmn4ungS OI6TXflv9l67/Fzz0R3Kf8B/xjbc30I/Htgx4PHpxT3L9vX/0dq7odz/AKB+ ivp/zJLqL+v/AD7vbf8Aj7EcaDw4/wDSj/B1HVx/uRP/AKdv8J6FYP8A1H+2 /wCR+76F6a671j/H/eP+K+6lPQ9er17WP8f94/4r7tppw49e69rH+P8AvH/F feipPE9e69rH+P8Avv8AY+9aD69er14MCbc+9FKCtevddkgfW/vQUnr3XYP0 I9+IINOtg8D1k1g/UH3qnTxkU8R14MB9AfewpIx1tWBB0jrvX/gf94970N1a tPLrIJbfm/8AsPdTGSKEdWBpw65rIDe/HPH1/wCKe6GMDiOthj1yDL/X/ff7 b3ootD17XSlT1z9tAE4HTh6yJIUBH9f9j733J1tWIrpPXLy3IuOPzcC/+396 qPTPVxI3nw6kRyj9IA4+nqv/AEFvdgQxyOrq9TSnWXWf8P8Aff7H3shBx6cz xB6yLKQLfW/4Iv8A7AXPA960VyOHW69T462ZBoD6k/1EtmS300i9yPbRXp1Z WGK9vp1OjnpJVIMTQOGsrKS6X/o0dyQD/hx7qa1446dDRHDLQ9cniYetUDpa 5eMlkAPHqI5Q3/B+nv1erFSANOR69YiT9S1v9j/xTj3unVNY66BJ+jfm31Pv 1Ova1PDrv1f6r/eT79Q9e1r171f6r/eT79Q9e1r17Vp4Lf72f+I9+A6qXzg9 YzOCSoIJ5H1/4173Qda1HzPWPyixOoED/fce/UHp14t6Ch6wma5ve3+w/wCN e/dVr6nqLLOD+Tx/hxfn+lve6V611Deo/oT+f8Bb3fw26qXA6jLI0siovJb+ tuP6n/Y+9kaRlc9NK+pqDh0pqKG1l/s8cAkX4/r9efbLHHSyJQSK8OlBAoUX F78G/wDwbg290OSB5dLgAKKOHTkHZBpB4H9efdKK2enBwx12ZnAvx/tve9Kj PWyadcPuWH9P9t/xs+60H4RXqurr33Lf4f7b36i+YoevauvCcubH/G3BH/E+ 9gKethvn12zkqQfoObAc/wDFfemGkjTx60xOB1i0ArcC4NwOTzY8/X3WmKjj 1UkkV8q9NUsVr3FieRp+n1/pb26GBHb1ogNTpvkjsf8AG55/2N/6/X3YGor0 y6BaFeura+CRx9Bb6j/ife8dXUBhVsnrJ4lZGiIBVzcr/Uf43/Bt9PdcipHT y+leg73DiKca4ZoDLRvfS4sJadzyWika4UKSLg+kj/H2pgkYGoPd0xVo3ox/ TPDoIsnQ1GLdQx8tPIbwzxgqki/hSb/tS2+oPs1ifxF/pefV2kWoI4Hz6alq yGI/s/gEE2/1/wDH26VwPXqgYlsfD1PiqwNJB5/wP04+p/2PuhFeI6crinTx BkCLXN7/AJ/w/wALcH2nkhHEdb+fn0801aAAVb83+vHH+HtOy0NCvV9eaU6f 6TJsGUFjyf8AYc/4cj8+2mSlcY9Orgg9KSnyF7EMv0/wuP8ADm4vb2wVp0+h FAK56eqbIWU3JJPJJHFvx/sQfdM+nVq9O8OTJ+hHNr3Fzb/YHj3UqDxHW+nm Gt1KpuCCPof9iOPdNAPDj17pwSqX/Vaf6gn/AHj/AA91KkeXXupiyxkC44/q CSL/AOw/w91631OjqIlVV1G4+nB/3v8Awv7917rL50b8sbH/AB+v++Pv3Xus ZdTcXNuQAb/T37rXWIyAGwIsOOP+N+/dV1gcTnpsmKEm35+v5Fvzbjj3cA6T Xh00zYz8R6ap0ViRb/A/4j/b+7pUDj00emiaBfV6bixst+bf6/Nz7cB6bZRm ox0x1FMjX9JvcEgHk+3FcjHl0kkiA+w9MdRSnn03/qf+JF/6+3UkIrU06QyQ 8cdMdRRKQfTyb3ufpf8AP+PtRHKQTnpFJAPMdMFVQ2Fx6r8f0P8Ahfj8+10U p1UNOi+a3xw6T89IeRobk2sB+PZjFOuM9FUtrQk6emGqpfqNLDki9uDf+v19 ro5vQ46QSw6Tw6Zp6M/lSQL/AE+ov+Qf8Pa+K58iekckIbDDh0yT429yt+T+ bf7H6H6ezSK7GM56QyWoPlnpokoGubHgKTYAfW/+3/PsyW6UqK8ekptxqIz0 3y4x/qUYk/6i3PH1PP0593FzH69MPA1QfMdNcuKDEAowYgGxBbgH6D8Wb8+2 zOQtA/b03Jbs5qyno3XRecORwUmCr2ZqzAhUpmdjqkoJTK8P+v4WGjnnn/D3 FXNFilreeLAKRSdx88+f7a9S1yZfm6sGtp2rNFgf6XgP2cOjAQQOIQZPy3At Y203F7fn2E5tBNAM9DaNGCd5PTxFF6F4J4P+H0+v59omC1pTHSgYFB1NWm9I P+wA9pXLeRz04AD5dcvAw06eDq5NvoPwebjg/wC39pSSePVwtPPqYqqCD/sC ef8AePz71Q+nVwBivHqQI/yB/sb/APG/aY8T1frIqf1H0tbn/invWnUR8ut9 Zr3FiP8AeR/xT2/4ktAPLqtBWvn1wJOoBQT/AEsOSfx/sfbwkrQah1QgenUi OnvzLqA+qoLX5+uq4v8AT25GzAk6+tN5Y6j1uKxVWpSox9JKpFrvBHq+vJ1g A8+1IuZVPbIemZIIZRSSJSPsHSQn2Dt5JxU0lLPSOp1Bqaqk0sD9QVLW08/T 2u/eV0wCmQEfMDouOy2CuJYoirj0J6lVGzcXXwpaepheIkn1K/JsAbm5NgPb UlyxC6mz9nSh9uhlUCrAjpsbrrHj/lPq2Nr3Ahsb/wDBlBFvaR71lNKin2dM fuWE1Otq9SotiYOM2cVUx/OqZgv+x0KPx7b+rc/i/l08NqtMVQn8+n6j27ha HmDHwE8eqVTK3H0sXJt7ba4djUmvSmKyt4vgjA/n08oqRrpjSONR9FRFQC39 AoHtsyn5dKQgHXNWJJIta/PIPH+9/T2mMjHJPV6Drpjc3/ryOfx/Ue2nkoRX r3XDUB9SP9v7oZR6HrfUOaQfU/QWv/xA/wBj7o78c9eOOmyaYc2/HH0/3j/b +2NenNetVp0z1NQObfgn8C5Y/j/G1vaR5m4V61mtPPpPVc/PJv8An/XP+8cD 2hlkqDU9Nk+nSUr5hZiP6G/9Of6/X6W9l00p1KqntPHqjAaTUdIiumDXA+o5 /wBb+t/aOaQGlT0g4VNOkxXSCKPyuAWsTFG31Nv7bj+n9B+fZW5AFW6YYkCt M9IXIVTO7M7Xfgk/UrxwvP0UA8D2iklZKBcVGekhYtqJPDpHV0oLWH+N+P8A fW9sB2Iyc16RP0l6uQ3/AN4t+OP975PumrU2ekjNUnpPTP6mPFh9bn+v44/J Pt5UBYADpCXLGp6b11M5/p/hz+fp/r+zeKBWIOnz69x49KzFR+pPT6iTc/U2 /Nh/Xj2eWVuS1AvWqgZPDpr7T3F/DsLHg6ebRNVU75CuRTYpSQo6QwyH66pJ 2DW/On3IWz7Sz280s6/phvs8uibdbsDRDG1Kip/b0FGzacpj4Lixmm1MDwx0 IL3P4uzE/wCx9h94m+ulSQfoCtPy4Z6RWldAbzPQ64lGWFLjgr9f9sR+fbgj VaEDoyViCorjp/Z2svA+g/3rn8+79WlJqB011TGzf0Abi1vwfoffq0qeqBjw 8umKUkkf65v/AK3H0+vvakmletE+Xp1mpr61P+II/wBf/e/aq3VWc6uFP59O Kewetegh7wzJWLb23kIDSySZerQH+xGvgpVY/nU7Ow/1vck8jWTIbiWVe3y/ nnoSbTGHILjAz0g9uSBJEFvqV/qb3+v1/N/cgsoP5joSIAtABjo23WOX+yyF PCzhYqxBGbkj9wEFD/r3/PsObvb64/GA7l/wdKIjkjo62Ar2/YIdbahccHj8 2Bvbn2EZFrmnSkfPrh3nMJPjv38QR/zIfuT/AGP/ABjbcxNvaR6d+c062nxL jz6//9Lap6HdR0R0UL/80T6j/wDfd7b9iaP+zj/0o/wdRzcEfUXH+nb/AAno Vda/1/3v3bpqo9eu9S/1HvfXqj1661r/AFHvWa8OvVHr13qB+hHvfWqjru49 +69UddBvyDf37r1fn13/ALA+9HHWxny6979nrfXvdWJAr17rmrAXv7rrPy6c Rgta9ZL/AJH+B961n06d1L69diQm/I/23/Gvdaj+HrYINaN12HIubXv/AMR7 2TWgpjqrOVNKdZA6/Umx90NfIde1ggDz6yCUX+p/1ubf7171V/4R1vWD69cx Ipvz7owZqY6cRhnrvUt7X/3v3vwxT59W1Z+XXMEj6e2urdZ45CAeC3P1Fh72 DTz6cRwoII6yrLf8G/8Aj/t/6e3AwoB04JFNOuYcEfpufr9fof8AeL8+9MTT Ip1upxjrkJSB6vr/AK/+9D3QgeXDq9fPrPFWPEQyO6EH9KNYNz+Sfpf/AFve io4+XVlkZPhJ6mLXRSf8CIQOb+SBvHLe/BZbaZeP6291p6dO+KrCjr+Y4/7P XJwr2NNIkoLH0taKcH+uk2Um39L+/Z8+tFV4owNfLgeuDPJEwEiyIQRYOulm Uc6gD9b+/ceqkEcR1xesitbWQf6WP0/1gPrf3uh6rqHXDz6uUbj88D/iR78R TrdR69YfKoJsQW5Fv8f9h9PfuvdYjOy/ReTf+h/3n8e/daqeFOok1Q/5Btb/ AHn+n1v7uF86inTTOQeGOoj1H4H9Pp/j/j7cAx5U6aeTNB1FeY2P9bcX/r/v HtwKKCnHpgsenbHQ6hraxZ/Tf+g/4j2xIfwjh0rt17Sx4k9KynW2mymwtf8A Bt/Un+ntgkHHRhChJ+XTurIAArXt+bfn/D/D3QAmpPn0r6yNMoJ9dhbji9z7 0EAAqKnrZPpw64eWL66gf8OfdR4nDqtSeujNGPoR/sLk/wC8n6e9lS1K8evf bx64mpQf0/5Ov/tr+/CMeZz16nXJKiNnUKSCT/qT/jf3rQRxHXuHl1K1IbEH +tvr9fofx7bNRg9a653DKCCL8gi4/HPveR04poDXh1HlVHsbgH8XBNySOP6W I92XUpIp1WhGB021Cqb6bEfgcmw/1yP6+3FrWpr1Rq0qOm4sF4J5/wBv/vXu /TRqpBAx1yDg/Q3ccL/iP9iPr70ccenddQdHxdcailjrIWgmH1HB/ofweD+P z70pCmqnpwoHWjDj0F2Wxxp2npKiLzwOLtE/6HFhZ43F/FIAf1D2uikrRgaN 0kCtH2NlR0FmZw70I89GXnpC12v/AJ6l/FqgLxov/bPs0ilEmHw1P29OIyHt DZP+rPSbFS6Hi39TyTb8gE39Nx/t/b/hr5t07T59T4a6wuT9foAb35+v4Pto qAada6d4awACzWPP0Njz/wAa9ssgJ62D070+RHALXI/JP04/P+v7YeFvwjz6 2CRw6fKbI8ghgfpcagPz+fxe3th4mp3DPTgYcelJT5JW/tBT/S4H+2/HHtOY z+XTuuq9PUWQ5X1L9Bbn8f4n8e6lB5jres+teniHIMbAOL/6/wBP6/7D22Vp Ujq6vXBGeniCvF/U/wCP8P8Abm/PPulMY6v06RV6cesA/wBfz/sf9b3Urnhj r3UtMhHfSWBP1H/FPpyfeinp16orQ8epS1qWsWb8cA3twPrawHuoBPXuuf3a /wBluP6kE8/0/wAPeqHphyGIpw6wGr5NyCfybf7H/b+3dA694h4YHWIzgjhr G/8AT/jXvfHBGOqUFMHPWMy3HLE2/wB9/T3ulOq9QpTdiR/tv9j/AF9769Sv TdMign8D63/1/wAWP0976aalDXh01zRhgfpz/vf+x92BqKdI2FcdNk9MGFx+ Prf62/N/6+3FIHE9NNGKA9M9RSgg2uLnj+v+xFvb6yaQM46SPCDXplnovre1 vpcD6/7zcH2rSavn0jkgB8umWooL3uin68j/AJH7VJcUI7ukElqGr256ZZca DeygfXkG1/8AYWsPa1bvIr0XtYtU9op00zYs8gL/AMlA3/3j+vtZHerjPSOS 1pWox1AfGP8AlLf7Dg/48+1Avh/H0lNs1T2dYTimuT4yL/QgfX/jXu63zDjJ 1T6U8NPWE4fV9Ywf8D/xUAe9Net/F1v6Q/wdKDZ0km2dwUWSjUrTmQQVsZv+ 7TSOAdRF+Yrkj2XbowvrN1JrKvDpdtDtt+4QyriImjfYejsU+msCTwMJqaSJ ZElQggh+U0j628YHuOnXw17vir1LqP4mlkPYR07pTsALi3+B5Jt+P8PacqSS aY6fQDqYkKr9b/0t/Qf8b9tsoYUPHp3rl4RckWI/N72H+t7SPHSlRjrWR14R Wa5+n14+nugUA1Az1up9euyTc2+lz7roj/h63VjmvXlc83sf8LgH/bfX3oxq OAp14E9SEiaTmxQf1Yfq/wBhwfp79oGK9Wr69SUjVPoLkfk/X/C3trQ4JNDx +XXtQ9esl7fX25HqGrVjrTZpTrgW+vq/rbj/AA/3oe3NY9etaTjrGLf4D/C3 ++t7qkh/EcdbK9Rzw5KiwJ9X15/px9Pfpm1ha8B1pa9ZCFtydNh+k8/71f8A p7RvpqaHHTmT556x+Rgfrf8A4p/vftsTMMHh1unXjKxt+Le/NKzUzgde661s Pz/vA9t+L9nXsdcbC9r+2tR9OvZIqBjriXC/Tm31/wAPdSa+XVgMVfA6jyVC kW5v/S30/r7bLhQKnrylQPOvUCWeykf7c/7H23JMpr3Y6ofXprmqAARe3HB/ P+2t7SGZTw61gZPHpkqJwL3/ABe1vwAL88XufbDuK0rjqhP7T0mauqW5sbD6 nnj2UvISMZ6qSB0k66sUB7H6gi35JP00j6nj+ntC8pNP83TLyDIPSSrKhYgX cguf0KPoht+px/Xj2kkk41OekTcCfLpF19TqL3bUW4J/wPN/aB2LZrjpmRwA anNOkXXzEFzcAWNj/Wxt9Prx7SuwYnpAzBRQ8T0kauTXcgsL35uRYf74e61A BFc9IZWFaVz0mqmQg8k3v+T9L/T/AGNvelNW+XSdiOPl0zSEkkc2+tr/AJ/x /wAfZjbhaMT8VekZI9evUsbFr2IP1+pP5/x+vs/tYCxSg7ajrVRQ5/4vpYUt RSYqgqspXyiCioonqJ3LWNk5VFB9XklYAJ/ifY22nb2nuVKLUf5+k088cNuz O1H6LTn8xV7gfJZmpBV8zWxwRQkkCCjjJaKFb/mKJBf/ABJ9yPusb7ftBit4 6zMK0x6dAYzvcXWtidNehH25RGOnx0QJ1fb+VgT9DKfIt/8AXQ39x2BrhBb+ 38x/h6EEekEaSdNOhexq6YkB/Cm/PIPH/Ee2qHpagIoW6cJbafr9OQb3Or6W HN/esdXl+IfZ0y1TtY3awJJH0tzfj/Y29+PA9N9MzsSQoJJufyef+I92Udbo T05USAH1WseeSAPx9TdR7UgEiKNQfFLig+XTturNMq+XRON951txb2zFZFID TUsxxtFpJKmnoj4A6Ei5Erhm/wCQvc/7HZfSbZb61o5Ar0OdvhMMQZhQnh08 YFmVkLMAQRY/4/4f63swamCOjGmQa9GA23XvAaeYOS8LKym97BSL/wC3Hsvu olkR0pgjrY7WHR4tnZUVNLTSh1KzRo4NxyWUXAB54Y+wHcR+G7KRwPSriDTq Z31lI6P4499yOwu3RvcEEag8mWTrrciADjnhv9b2WFGZ2IHbQ/4OrlwgWp7q j/D1/9Pae6HJ/wBBfRfJ/wCZKdSfn/v3e3PYmi/sov8ASj/AOo2uP9yLj/Tt /hPQse3Omeve/de69cH6Ee/de697917r3v3XuuV7Dg+9dWwB12GP9T/t/fut g9d3P9T/ALc+9db6ze9EVFOt9et7oUPl16vXPXYAWPFvdNJ9Ot9cLn8fX3sg n8OevAkGoPWRTxyeb/k+9UPoevEk8T1yP0JH9L+9de6xBmH5/wBv791vU3r1 miYm/IH0/Hv3VkPHup1nBtpP15H+H+P/ABHv3T44DrmJtXABB/2HuulR5dXB JOT1lUm31P19tvxHVx1zDEf778/191qMY68Kg16yJIQeeRb/AFv96Hu9dWOH TgkYHJx12ZQbXX6f4/8AGveqL/F1vxT/AA9dhwWUBbcjm5Pveio+LHWxKSQK dSPbfT3WJ5vEQvB/IuP0/i4Yc3493VQwJ8+m2fQadSIcpIP25D5Y2+olGv6/ kM3rB/2Pvxj4kdWW4OFIqD/q+3qR5KObgFqRxwddmi5/tMbAoD/sfbdCM9Pa omrnS38usFRBPGoeO0sdriWG0sZv9L2IdR/sPfgR59NuGGVyPUdNvle9/TYN Y6bg8f7yPagDHTGp+PlXrg9Rz9f9bk/74+9UA4L14zeQ6hyTEn6n/Y/8Sfd1 Svljplm9T1Eeewvx/rn/AIj24E7gB0naUeWT13Rk1M1j+gMOf6n+v+wt73J2 r6dWg1SNQ9LKkTTxx9T+LfX6n/ePaBjqz0bIAtOlFALah/zbPP8ArW9tN+H7 el0XE9dlrAH+v++/x926dJA64F7gi3+8+/dVdgFI8+va7fge/Y6bElPw9cdR uTf6+/dV1tUmueuJcX9R54v/AL17917xGHE9dq1iGUng3uLg/wCwPHv3V9f9 I9ZhM5IGp+f9qPvVB6DqyNq8unCFtSC5PH1JufyfbZqCQDTp0VyAeslrkf64 4/r/AIe9kZLfLrZFc16hTAmRrKf+IP8At/p9Pe0+ECvVemidCrFh9D/sLWA4 P+J92rmnn0mkJXtrXrCj2kX8W/2P49+OajqivRx6dOEUisCSORxb/fW9taSC ADx6WBiKenTdl8YtdAWQfuqpKqB+r/afyLn26jU+zrzqHWo49BXW0ksDuUtw ChVwpBH+okUjS6H+hHtckgI456SE+G2omhHQe5nbvmLVOMXTKoMk+OH4J/zj 0Z41JfnQfUPxx7MILgKdMv7f8/Xg4fKHPp/m6QrSOhZLSAqdJFraTfkMp9Sk fnj6+1pQOdQOD08oJQZ6yLWsthf88ng/7x7oYWAJ6cp+3qfT5AAj1Wsb/wBA b3/3m3uhjb0z1XV8j0+U9ep/Ivb68G9j+fp7aZa1BHVq9PlNkjxcj/bf1/I5 +vtO0QLefW/n09wZICxDA/1AAN/8PadlKn4cdW1+RHT3TZRTckgf4WP+8j+v tkoPI9OVHT1T5FXsdfFvqTx+OP8AC3ttlpgjqwamQenWHIKfq9/z9R/rX/2P uhX0PVw5NaivUxK+NuTJY/4/Q/j8e66SOmyTqLDh1KWttY+W/wCPSbn36h69 4jdS0rlsPU39b/T/AHjj3rSfTq5ZTxqCOsgrf9rP/FeP9b36nTDMNRzjria+ 39oj/XHv1K9VLgCp64GvB+rH/bH3vSeq+Kvr1wNYQeG/2Fj/AL7n3sLjj1rx F49YHqWk+rC39LW/4p78Kg1p000pIwKdYTIo+rf7zf3b8umusBYHVYj8/wDE +/eXWmyD03yHWw+nCk/X+nvYxn59MHpulCm4P5/A+lr8e1A9fPpO4Pyp1Amg Ui4sD/S31/417cV6YPDpt0p/pem56dWPKH682/31/b4lAAAbpMYVqTXqDJSg ng3/ADYnn/be3kf9vSd7avAY6wGiFvpe3+sT7cEhHTRtgRw64mjUfQN/vv8A Ye/eKfNuqNaCnWM0YH9f9so/3v37xT5Hps2dOBPXE0K35U2NySfpyP8AW/P5 978UgH1PWzaqCDTh0PPWGe10xwNQ15KSPz0jHlpKckB411G7GL6qP9Tf2Hr+ DPiD4Sf59DLaLnVH9M3xKMfZ/sdDIh4BBUg8gjkf7D2WsKHHR4ueB64sRzwb /wBdZtf/AFvbBRiSRw6d66V9PJtzxY8/7Hnj3R4601Up9vWsdeacDkhbf4W/ wH090MK+VP29eJHr1KhjlmF7KgHJLKP94/r7bMYH+wOvdTUp4UAay6xYXIHB A5I+h590ZNPXuuei/Oon/ef9ta3Huuknr3XDS30t/vv9f3SmTjPXuuLITwQf 9h/vj70y1wetg064+P8A4N/vv9h7r4Y+fW9R6xe2er9YnFjf+v8Ah/QD3smo A9OvUyT1i9pj59W66sf6e01R69e69/S/H+v/ALH36uG69Xj1jkewsObEfn/D 2y3d8utfPrCZQCDc35+pt/vPugcAcT0+ukKAf59RXlPJ+g5/31/dPEqaDptm 1dQ5JgPr+f6fke0zyAHqvTfNN+Cf6+07vWvp1UnplqKn66SLc/7Yfj/X9pml 0ceqFiTjh0wVVSApOoEm5N/8Px7SvP5k+XWqAAk9JWqqC50gXJFyBa3HNyx/ C39l0s1e1emCanpM1tUkZYhlaSxUOORHf/jmT/aH9fx7RvJQZPDpiWlfs6R9 bUeo/kluSx5PH1ufz7LZZq58+k7N8uknW1Fuefp/tuT9PacvQGpyekUp/Znp HV9RcNc83Nufx/j9PbaHXqp5dIWzk9JiqltHcfn/AHj8fj+lvem+Knz6Qsat TpP1DXJJHJP+tz/X2ojiJIx03L8NAcdQQSz2031D/YD8fX+tvZrbwVJx0jbi fTp3oqcsRxbkAE35HFgfzz7GNhallRQuTTrRIWnQYdobmGQrodmYwh6ejkin zkqG6y1lg8NCzAgk0g5cf1sPcxcrbCyIJ3HQS3rcfEfwYzjpMS0jS1GJxiBm ZCJnUi5EtSyxRk2/Vccn37mmdUmigX/ff+XpBZxMAC3GvQ2UFKiVUwRbLGUp ktz6IVCWA/FyvuPXqrkE56EcKgcP9VOlxSjQliOSv9Bfn203SgGleu6h7Lbn 8Xt7ZGC9etsahfs6Yp5NV782P5At/T/D3evDqo4jqIoUvwD9bf7fn24OA6sW J7RwPUPdWWj27tbNZWRh+xQTR03A5rKqNqenAF+W8j39iPl+xG47tFGRhQD/ AD6MLGKsooM9EjxyamDG5LfqY3uW/JJvzc+55CaIkgp8I6HIGiOFCM46EjEe MWGr6aSPwCeP682t7aKenr07kEdC3hKgDjVz6bcGxtx/t7e2JFI48OtnNDTo 23WmW8mOiiYi9NMYgPqxVzqHP+I+n+t7Bm7QabhmHnnp9G7K+nUz5CZf7no3 u6iDeil6T7aLre6+Vuu9x2BsbEhT7KjE2iRqeR/wdIZ56zRLXGof4ev/1Npr olx/oK6Msef9CvUluP8Av3m3PYmi/sov9KP8A6jW4A+puCOOtv8ACehW1t/X /eB/xT2501115LGxP5HFv+Ne/de65BgOQv8AvJ9+691y1j+h9+6917WP8f8A eP8Aivv3Xuvax/j/ALx/xX37r3XvIP8AH/eP+K+/db678g/x/wB4/wCK+9de qeuXnP8AU/7ZffuvVPXISMwJv/vA96IBp1viD1z1t/X/AHge/cOrdclYk8n8 f4e99eJp1z9668M9e91Kg1PW+uvbXW+uwSPp711sMV4HrmJX454FvwP+Ke/d b1tip65+RR+kW/r9Tx/sfe+nfEX16zxyEg2P5/oP6D/D3UqDx6ur1rp6yF2t 9f8AeB71oX06tqPr10JCfzfj+g97MQHFethvn1kD8c3/AN49tsmccOrA165a /p9f6D6f8V960EefW68Ouy1vyfdQKmlet1Pr1jY3N+f9j7dUUFOtE164agDz xb/X/wBvx7t1rrryLf6k86ubnn/Y3Pv1Ovaq8T1ySplhN4ZWj/qVuLn/ABv9 feioPEdWWVkppanWZq5ZuKuLXx/nYT45f9dh+hj/AI2960EfCer+OrAiQV+z B6issDFvBUpJ/SOYGCUE/gavRJ/tx7vRqVZSP59NERGoSQV9Dg9N84kS7MGV eQfoAWH1GqxA9uoRwrn/AD9MyAgFqHT03NLqIQXLObC54BP4vzz7fCU7j5dJ cVp69KLG0/iA/wB5+v1P+JufaKeTUfn0Z2senJ49K6JCpW/N7fm9uPp/vPtK el6ip6mrI68hiCQQf8QSR+fdOPS2OmjUePXi7G1z9P8AW9762zpT16wyTMpA DH6f4f1/2/092AxnpgkE4FB1iMsnPrIHP9P+Ke/UHp1QuPz64+aT/jr/AL17 9QenVdZ9OuvK5513/wAbD/inv1B6dXBrnrMszFhy3+xtb3ug68TQV6kB2+oP 0/wH/FPdOn4mU8BnqZDI4W+qxufwPp/tveiAePT3UqKaTyJ6vz/Rf6f63vTA FT14k8OpLqCAbfUm5/1gSP8AW59t8GqONOt/Pzx0y1QAYj8fX/k0f8V9u0zX z6ZnUAaqZ6aGbSQSeSeOP8Pe/Q9Ige6p6zxzEH/Dj8cE/Tn+l/eulaScATjp 6hlV0S/6ufoLfk/8R/X221VJp8PShT5/h6Se4cUNPnSM6JP1G3Ia4Oo/QG/t 6Jzgjj01NGCKgdBtWUbKS4VldG1qRdWDDhWFiCLf1Htarq3HPSOhQ0XpEZvF RZAySWipclb0VB9MNYR9IqgiwSQgfr9roJpIwoBPhDy9Ps6djuFoEY/qdBhV U9TSSGKoheCRP1JILah/q0N7Sof9UvHs6WZHX4qg9OoHJqTgdYVnYEW/s/Uf g3/r/T3vQGHTtadTIq8qRzZv9uB/xHtM9vVq6sdaoePTxT5UX9RI4N/99+Pp 7YaBhwFR1vPT3Dk140sF+g5Nr/mw/wAPadk69Xp3hyZH0dSBwLN/t+fbJhWv CnWwenmnyv09arx/U/T62/2PtpoSBhc9b1EdPEOTvbVpYf1Q/wDFLe0jJ5Dj 04HrxOenCPIqT9R/W35t+P8AWPv2jHTbOdRNc9OMeQHADA2AIsTf/D3ooft6 1qPljqV/ECtuQP66jz7oV89PVXdlAIOesy5Ik21Ef0seP96t71Q04Y6a8U+Y 65GvI4LC345H+9fj3tVLcOqtJjIr12taDf12/wAR/wAjHu2hum9a/wC+xXr3 34vwSf8AH+v+w9+8NutavUddmvB4I4/2Hv3ht1ouKHrj98v9P96/4r734fzH VfE+Z/Z1hNb9bX/1uPexCxpnpouanPWE1F/qCODc/wCv9Rxc29uCOnDqhYjO qnUbzAn9Sm/++/w92004k9VLKR3HHWCSoUEi1yD+P95/w+vvYjJ6aZzQgHt6 jNNz6fTf/Y3B/wBv7usdcHPTOoDh1hZrg83J/wALf7H25pIHDrRYGleHWHWP 8T+OPboGMnqpNTXrG8yJ/Un+nH+3+vuwXqjOB1iadG5s3+3HurJq8+mmKsa1 64S1CaRZuf6WBHH0/H09+EZrUnPW2lUKBXrHRZqfFVkNdSzaZ4JQ4P0BA5ZC CLaCPr79JbiaNlIwOm49w+llWRXAJNOjSYHduPzGLhrKaVFZlUSQf7thmbhx IPpbWCR/gfYalt2SUqwPQ5truOeBZYmGR+zp4FfG5tcs5P1S5JP+CD63/Htk xDPGvSkTHArnqdBFUTn1ftRn9MjEFj/QaPqDb/b+2ioBp59XqzUB6eIaaCMA keRxwXYf7zp+lr+/UHp1cKB1kMjcgX/IFlFuP+I9s6W9Or9cPIx+v1/3j/be 9FK8V69jrmJSB9bf4W/417qY1GKdeoOsomHHB/2xt7r4fy/mOvUHXZmUfW/+ wHupjPkOtU6688f+P+tY+9eG3nw69TqKbfg/19p/DX063qPXFwLckXtxz/yL 3vwRQkL17Ueo1xYn+n9D/wAa9opUA+HB6cU1FesDysoJvb/Xt/X/AFvaRo1W mOrdYWmZrWI/r+PrYfkj2xUDUKda4V6wvKpH0AP1Jvzf/W90ZqDPXuPUd5VA +vP4+v8AxPPtOzAfb1YksanqFLOTx+B9P63/ANh+PaUzGlF61XpvlqlW/Nz/ AF/N/wDW9pnb1PVC3p00VNUxJux0/Qnj/kfPtiSWnVTmuemCqqgLgG3Bvz9P p9R7RO7H8XVGOnpgnqGkuVZQgJ1GT0qLf0sDf2ilkq1K9Nl28z0ma6uAukRO n8ueHf8AqQLcRn8W+vtJK6gNpp0md24KaDpI1lSVBAJFgefqB+T+D7LzMxDa jw6SSSEYHHpMVdUxudX15+gNxb/e/wDD2mY1Br0w0jU49JSuqLkhjfSt/oPr /h/X2nBLCvSaV20YPr0kqmbWW5Nv97597AKjs4dFzyNSnTFVS2Uj8fRR/wAT +T72ASfn0zQk9Mbl2YcjV9b24HPPH+t7NrWNvxjHTEjHVpB7es8EbM4CkC45 4vc39iSytQ0byEVUGh6SM1GFeoe7N00+y8E9YzRyZWrDQYiib9clUykfcOOb U9PyWP8AgPcnctbINxMckcJ8MMCePAEE/wAui3cb0W8cgVhqKkfnQ56AnaWO qKuc1lW5kqKqd6ipqH5aSaZi88hNwWIU8n3NNssVpHMAtIaYH+DPQGiBmcPJ luhE2rT/AMS3NPX2vTUYnqVIFwKfHoBF9bX8rqB/yF7h/eZ2uL6d3aqg0X7P y+fQhtAXoTwH+ToV8RCbXcXJPkYc3DObtyPqQT7DMznWSePRvECoFMCnSoSw UG34/qfx/sfbOo0JPTnUCpkuCP8AGw/HH1IPutet9MUkh1fizE/j6f0t7dpV SfMDqpwR1zhX1q1rjksw/AAvYDm97W9vs0UdvGWH6p6ugqw6A/vncDRU+E2x EwElRIctXKhJEcUYMVJHKOfUzFnt/h7lDkfbgVO4iOktdJJrwArw4ef29H+1 QMxBIzq/ydAdjw/AsCf+K/m/+PuUGKkk07iOhe9AI9QyOlpj2KWJHq9IJv8A 0sPacimPPrZ+fHoRMTUsrAfn0kn/AH359syBePn1qpLgfh6Mr1pk1h+9VyoV Y4qn635TUhI/x1MPYZ3eJmMbAeo69K2hWA6du469B0L3zW1BAB6V7akZmNrm Tr/cUca8D6uzC3silUiN1U+R/wAHRK0360erhrH+Edf/1dpzoll/0E9Gf+IU 6k/B/wCfebb9iiJG8KL/AEo/wDqMbliLm4Ff9Eb/AI8ehTuv9f8Ae/d9DdMa z69dix596IINOt629euJIA/B/wBj72FJOeHWtbevXgb349+YaaZ68Hb165WH uvW9TevXVvfur6l9evW9+6sCDw6697691737r3WVPof9f/inv3W+snvXXqnr 1/fqdb1HrmrED37rYz13rNrcf77/AGPvXW+vayPwP99/sffqD06913r/AMP9 5/417qVBp1vr2v8Aw/339Pp71oHr16vXtf8Ah/vP/GvftHzx17rLG62NyBz+ T7qVI4dOxuACCeufkS9r/wC92/2/vWkjNOnBIh8+sqtbm1+Pey1RSnV+siuP zx/vv9b3TqwPXLWoH1H+39+p17V1xEq/kgf7G/8AxHvelvTr2odcWlF/Swtb /ffUe/aW9OvauuPk/wBqH+8e/aG9Ovah1wLAfm/+tb37S3p1Un1PWFpQDYf8 R7sKA0YZ6oXAIHWCSUn6H6/630/r7uFXjTqjSYxx6iNLydVzzySfbmkUFD0y zHzPWE180Nwj6Ym/ULaka5+jKfrf3fwUalRnqv1DJUA9v8unbF/ZVL+aeF4L cRvTfQt+WMb6gBcf2SP8PaecyoAgNeldt4Eja5Fofl/mz0tKSiDW+2cVN1vo j/zgH10mM2Jb+trn2gY/xDo4SOo7CCP9Xl04Kjp6XVkZTyrKVa9/pZrG/upI OB05oKsPTrkH4IH1ANxxx/r3966tWikV6wPKBxct/Uf7z9fdgKdNaj69YHnS /IN/9gf97tb3vrWojz64mZQLi97cfT8/7E29+62WNMnHWLzn+n+9f8U9+p1T UOuazi3quT/rDgfgcke/dWDeh6zI6FhZhc/g8fUf7x791YtUU6lq4/qAP8Ob f737oRTqyE8PLrPG1zcH+lj/AE0n6c+/dK0dTQVz1OiZfInP0P8Aj/T3o8CO nKVPTmJUC/X+v4J/2/tlwajrx8umirKO11IJsL8Hn8W5A9uIGFdXVHFVIPTF U2ubEEqb/wCt/X/C/u3l0gbBPp1HSQXIa3Frj34deVwD8unijluQv0QXF7g/ U/7f3V/hPS2NgV0huniSNKmBomNyw4X8gXBBtxxxf22pIbUenwS3QcZTHGKR 1Km4Lc/W/wCQf9j7VxvivSaaOhqB0H+Sokkvbnm3I+hH4I+lhb2YRSEKPTpE 8Xdr8+khWwQzRtSZCIzwC5jkVr1FNcctBI34H+oPHtShIIePB69FdFJNLn9P 1/wdB1l8RPjf3kY1NC/EdVGot/tMdQoIMc3PN+D+PZtbTK40k0k9P83y6X+I jUKmo6TTTaHNj67cgfXj+n9f9h7WhdSg/h6ozhGIB65x1pHIP0H9fr+P9496 aMGg60J18+p8OTCHhv6f4/X8c/X2mkttQqOPV/Ej41z08wZVh6tQ5/xt9eL2 N7e0jWzDy6uDXK8OneDLX5uNX9AR/vI/p7TmMrgjr1fXj08QZMixV/r/AEta 4P59tOitxHVqjp0hyRufWL3sfpyf8fbZhFAKY6TMSHJ6c4ckxA5HH9CFPFv9 49tmEenWvEpxbj1NSv1m2qxt+eTf8i/uvgtUYx1RpupqZDSo544+l+b/AO3s ffjC3oD00ZM5PWUZBCOSbfn8n/evyfevAavw9UaUEUVqnrItXGf7RH+Btf3v wD0341ME9c/vgoHNx+D/AIf7a3HvXgH59U8WvXZrbji3+3/4oB72ICDk9UaY cK568tYAOT+fwePe2if8NOqeL/S64mouSdRsfpa/vfhsABTqhkbPd1xafj9X H19V/wDfW970N6daMh8z1w86/wBR/sAf+Ke/UPVPE/pdYWqB9dfB+n9P9a1v bgUEDGeqF6Z6wtVKotqBJvx9ePz/AI+7hAK06b8WuAM9RTWixsAD/sfbgjJ6 aM7eg6iPXC/1AP5v7dEDGmOmTc/0h1FfIj8MCfyPpb24LcilQR0y1zUca9Rm yX0vo5HFyfr7eFpWtK/y6aa7A6hSZUAHU1vra17H/ePp7ULY1A7ekr3o/i6i R1NVXyCOjp5Khjcftox034uX/Qg/xPu7wxQDVMwVft/ydJ18S5YrEhZx/q49 CVsaHK4PIrUZKp8WPnASqpI38kpAvaQHlUkS/wCPx7I90NrOtLZayDz4dCPZ Td2Mtbh9MJ4jiejWUBpVjjmgEZR0RxKLl5FZQwLEj9PP+v7CrAnUCc9SChQK G8jw6c/u4geGAI/op/4ofbGhx5dWDj+KnWQVi2/zo/2PH/Ef4+9aW9Orah6j qSsqFhaT68/0/H9CPejUE9W1nhjrszA2AYn/AAb/AHvi3vXHj1ZW4164+T/E D/ff439+oOrah69Zy0dvob2/ofr79pX063XriDe9geP9h/sPetFeC169X59d EmxutuPrcHn3UqKHt6913qtxwP8AD2nKDia9eoOsL8XYEE3/AMeOePftSAAA 9e6iu+liR+n/AG3P5tb/AB9oZFJIoOtqaceo00o4ANvre9vZY9a5HToIxnPU Vr/n+nH+P++v7THietdYGcAGx5/33PtM+r8+t9N8tRcfk3t/gfr/AE449o5H JNAevE06gTVKqpAvqI4P+v8A7fn2kd1Tie7qhY06ZpqgKbswA5sDzz/iPz7S vMhPE9V4fb00T1Or9PIvx/jfgH/avaWSdamr5690yVUqpczE3sSEH6m55Lf0 A/3n2ieYE4PVHoOPHpL19dr4uOLhUThVHFxza/159pmYCtT0ndxnHSZnqC5b /bfn6D839lrTVPccdJmfpNV05Fwfzfkf0H+H49sF1ZiRw6TS1qOkxU1HpPqu 39B+P9a/tiVy2lVPb0kd0Wi16S1VP+oOR6gLW+oIv+P6e9ChoIzjpPK6kUBz 0mppAoa/15J4/wAP+N+3I42YvjpCxDGgPDpllYsCWPJ/2wF/+Ke1UcYB4Yr1 QkDCnrCkeo+k/i9zb8fUfjn2IrG2dyKLUdJ5CNVD1P102PpZ8jWyxw0NHE9T VSyHT44oQXkYH+pAsP6n6ex7su3SzTLA0P6bMKnovuHVEaZjRQOiq5nO1W/d ySZZw0dDBekw9K170tAjEq7k8eWpc6yf6H3Puz7XHtVoFhQElf8ACOo83O7e 5nBhYstf5efQnUdOMVgpZwAs06LS09vrrnGl2BH0CoST7T8y3K2W0Bg1JCOl NtGfIZPS22bQGkxGQqTyak0mNV7fUNIKmoX88vHCAT+L+4glnVlWQv8AFnoR WkRVXJFBgdCLQxiNQBz6QD/gfyf9v7J36NFCgVrmnUyVtKnm39P9f22wFR6d N9NM0hBPNr/7V/j9T/r+29VHI+XXumxiWY8/Um3+39q0FQAOPWhxHp06U6qi anZURFLs7HhQAbyX4sEFyf6Ae721s15ewW4Wprkf7PTkQJnAGR0RfeGdbdG7 stldRMD1BpqNSb6aOl/ZpwP9pIS4/wBf3khtFgthYRQoozk/b0O9utxAg1ih Y1/l1moYtIU3P0H9P95/1/ZjQUao8ul8rBimnhqHSkpQysOeb/1/H9f9iPbD A8T1c9LXHym4A+jWte34t7ZfiMdbWhrU9DJs+ub7uOKN3HnjZZFW3IiZWv8A 0/HsvvkUwsSMjpDdMwIp6dPHyEyZi6F7ZxkT2NX1F2hPLY3KwQ7F3Aqji/6n I/1/YYZB4dw5GNB/wHognkPjWyA5Mq/b8Q6//9baX6J/5kT0Z/4hTqT/AN95 tv2LY/7KL/Sj/AOovuafVXNT/ojf8ePQp+7ivn0yaeR66tzf3UrU1r1sNQUp 137t1Xr3vxAPHrYJHDrqx/qR7po9D1YP5Edcbn+p/wBv7p07QenUOvyuOw9J LXZWvo8dRQKXmrK+pipaeJAOWklmZUUC39ffutgeQGegA3F8sukMDPPRU26l 3NkoI/J9ltiB8oH/AAQtYmmjup+vr49tmRF4t0pis7iX4Ij0iG+XFJl4432l tSnqEcEMc/uTHYyeJ72GqiTXOy3/AKc+22uUHAHpdHst0/xFR+fXoe9O3KlW lhwPXkMVtUaNmcjKz/0XyRxFAbfn6e2/qx/AelQ2CSmZ165J8lN54ogbi2nt SZQ15JMZuyOk0RfkrHkEXW4H4Bv7sLpTxU9NvsU4qVkU9O2P+ZPVbzzQ55M5 t2KBR5MhPTJkcb5CbFFqaB5CQD+dNvbgmjPn0hk2y8jrWOo+XRgdn9l7B33A JtpbvwWeuiyNDQ5GCSrhVwCBPSlxUQt/UMoI9uVB4HpIUZMOpHS6uD+ffutV Hr1737r1R69cHJFrH+v/ABHv3Xuutf8Ah/vP/GvfuvdZPfuvdJmfeGDgmng8 lfO9NK8EzUeJyVbCk0ZtJF56amkiMkZPqANx+fdS6DBcA/b06IJmAKxMR8gT /g6xDe2CHJXNWHJtt3Nk2H1IAoSTb3oyR0P6i/tHVvp7gEVgcf7U/wCbrJTb prNy1JxGx8Jl8tlWhaaSqrsPlcdhsVApAarydXVUkV41/EceqWQ8Afn2meaN BUsOjGGyuJ3CCMr8yOHT4+0N000P3WFy+bzO4gvkrcbmMNNQ7bzRQfuUmCZI jNhJgR+y8pZXtZ/rcJVvO7uA0dGsmzp4QEbnxh68D/m6YU35jI2alymM3JiM rCzRVeMq9uZlp6WePiSMyQ0ckEigjh1Yow5B9rVdDQhxT7eiV7aeMlWiao+R 65jfGBJA05nn6f797NW/9wvb/iR8fEX9o6p4M/8Avh/95b/N06YvcOJzE1RT 0NRIaqlWN6ilqaaooqqOOXV4pTT1UcUpik0HS1rGxt72GVvhIPVGVloGUg/M U6eSwHBP+9+99a6wu4vz9Px70VB49Nvp/ET1HeQDj+v+vf3tYqmo6ZNK9vDq O1Qtr3v/AIkEf7z9fbnhkenVc+dOoMk5UamNwfov5P8Aj/vHu6LU4HTMj0+3 pvnqo40eWplipqaJTLPNM6pFFDGC0kkjuVVVReSTx7dakalj6dMRt4zaAM9E 27u/mAdUdORNQ46spcvkQxip5ZGlkjq5RqQri8bSasllZFf8xqIz/qvZVLKG OMnoTWli+ldXan+H7Oq+96fzDvkzvGbGUW09ibtwWNzlQ+PxW4q1MftPAzTy sfAtQ1S6ZWjea40eS1yQL+03GpOejVLdVAopr68OotF3P/MB23VJkJqKqyyK RJJRQbyjqp1B5OhKyT7d2YG4+oPvXb0p8FwKFKj7ehw2Z/NB7B2NX0uK7t2F nduw/t05yG5MaGo6hndVaV9w4VZMfSWPIM3p/r79ThQ9MvCuRpKnq1bp/wCQ 3W/dlBDVbTzFM1dNAKj+GTVMBneHjVNRyxt4chCSf1Rk2H1t730kaJ04jHQ3 txb6gk2s6lSf9Yng/wC39+6ZI6xFgfoxFiRax+vtxVPoD1U9e1W/Or/eLe96 a+VOtdcgb/6/9PdStCOvdc42GoMP6/7Af7H6ce9MKdbBz1LEhH5vf6AcWt9T cfW/unTlSOB6nQsdI55+t/8AXv8AUfi3vR6djYj7egA7p+Sey+mqGumyFbQG sx0AqK6WuqhTYzFRupMbV8y6pJJ3AukEatK4/oOfcZe4vunyz7c2sC7rI8+7 3GILWEappTwwv4VrjUcdbnvYrdQZP2efVVO4f5qWfz+Qml2JjOx8ziqVminy G1dlY1MHNoYqz0M2VnNXUKQOCQL+46s+b/f3foRuWz+3+12e3vlEvLh/GK+V QmAT+XTKXG4TKJIbRRGeGo0J6MB0P/Mp2r2Lko9v5Z6gZimEcVXg9wYxds7v DD/PVEFOJHx2SKj6RoyO1vTf6e9W3vpvHK+6wbN7t8ottRlYBLuFvFtTXA1H io9SeHp02b8rIsN3EY38vTqyvD7hxG5sXBm8LWRVuPrIxLFNGb2/DJIp9ccs bAhlYBlIsfeRttPBdwxXNtMslvIoZWU1VlIqCCMEEdOyeZ8upZkCueR6v8f6 D/Y+1GnA9B0z040sgsCGH54v/vPPujcfl09E1CD0pYJtVmX0tpte9+fpe1rC 4/Htkg/D0ZRuGFB1iyVCKil8y2Lx3ZrfUj8jj68+9xtTt6uy1HQaZOhNywB+ txfn6jkWNr+1aPpp6dI3XTXHb0XnuHtHr/p3bs+5t/5qnw9AgZYIiQ9ZXTqu r7ejp1/cmk08mwsB9fa5JgoqTjpBJEWbtGeiED+ZZ0DMz/YUO76qN2KSQvhg 1PULyCJEMoBFuQeD7dW7h82oR59PxpOnBOmmt+cPTWRb7jCYPexV+WopcbH+ y5H6qWUzeuL+ita3sxg3eJBokP5jz+0evTwjc5KmvWGP5gbKnAMG097OPrf+ HU4/3gz/AEPtUN2sh8TGn2dWMDlahTX7OvSfL7aEPqfaG9lUAm/8Ppx9PzxU X/2Pu372sOGr+XWvp3/hPUGT5x9eUIvPtrekdhzfHQt/t/3/APH20252JJGs 06uFdQKDqBL/ADEOnqLipxG8YRfknGRk3H4FpePbDX1kc6jXpyrUoVz0ZLqD 5G9b9z0ElbsvMtJVUoBrcRWqabKUoY2SSSmY8xOfowuL+1EXgXKkxkHrWpRj od6fLi+oSG/9Cb8X5/xPvbWhNadMPQk+lenyDLrYEsRxYEm4I/wBHF/ad7Zg K06Z8+nCPLxknS/AH9SRz9bXHtvwGA4Hppzk1HTRu/sXb2wts5jd26snFjMB gaKbI5KslayU9LTprkk/F7Af05PttkKVY8B00w1ggHPRNj/M2+NIYxjPV7KC Csq076JF/ssh8dirAg+0n1MGc9bFpNUEUp9vTzTfzIfjlVWEWfnuwFtSsrH/ AG6ce/fVQ1+I9aNjcHyFPtHSlpvn30PVgeLPN/QXfn+vN4rce9fUw/xHrX7v uTT4f29O4+cPSpTyfxxbEX5lW/P5IMfu31UHoet/u259F/b021Pz36JpATNn rafrYhuP9hHx719VB8+q/u649B+3pP1H8yH450d/LuCo9IPCqzfnm1ovfvqo Omjt92K/DT7em2P+Zt8ZZp0hk3HWU6Mf3KiSBxFEn9p3JQWVRyfexcwV+Lpt 9vu9JNAafPo8GE3Zi9yYfHZ3DViVmLytFT19FUo40TUtVCk9PKCP7LxuD7MV gLAEHB6KGlKkhjQ/b1PfIgLfUOPVcPf/AHr8e7panV029xj4uoZyg59X+2P+ 8c+1QswRSnSRrulTqGOoUmVtxqIFzYa+f9fjk+1CWYHAZ6TteHyqem6XLaTz I31vbV/vHPtTHaM2AvSNrjJNaV6bpcyuoKjlmP8AZSzyE/0CR6mY+1JtAqan FB8+m2uCwoHqepawZF4TWVjQYmg4vXZWZaGA3F9MYmtJLIVBsqgk/j2klvLC 2FC4L+gz/sdKIbO8uR+nGQvqcf8AF9OFO+JhpqKviw2895xVkuinlwG3cpPj dSsRzUCJAULD6ltPsluN78QlIiiD8q/5uhDb8vvpDyxM5+wgf5+gtz3zV6L6 /wB1nr3fcua643OrjThtx4Kpxs325OmOs1rG0T08n1D6uR7MrXlDmTc7VNys 7Frmyf8AGjBqHzBzgj0p1SXcNusJZLSWVIZV/CQVPy+2vQ57S7X697Ap/Ps3 eOC3Cv0KY/IU8tQPTq9VPq8wIH+029lF1YXVjIYru0kilrwZSv7K/wCTq4uo 5V1xSKy+oNf8HQzbW3e9DKlFWTyCkYjxOWBEbE20ufqYyP8Abeym6stQMka9 3n0a7Xu+hhBcP2+R6GWKsE0ayxsLMFAb9SlTzdTf6EEeyfQQSCOhSGDANXHW X7hrcsD/ALD/AI371jyHXtQ6mJWN6fVYgDjj+n9bH3QqKUpjpwSP5Dt6kxVh JOo8W/1V+f8Abe6lafCB1dZP4uktubfEGA8FPDFFV19SJzFTyTGIOKdI3cAq AQSJBb8e9aWOSB1cMGwOPQA5D5hbdw2TbDZPa+bWshJWo8LUyxwqp5cyTzLd D+D7TiSMy+EA2r7OnvCbTr/D01ZH5+/H7AQ1FTunN1u3aWmA89VkhTLTxsSB YSxzP5Dz9ACfb02m3jaaSVViAySeqR6nkEaIS58qV6EGh+WnUmWoKDJYbJVe Vo8nDHPQzQRJGtRFN/mpFM7R+hv6+wpufOXL+1WF7uE97qigjZ2Eal3ooqdK jLGnkMno3i2ncZWVVtTk+eOnubvvGNpNNt/IywMAyzzVlAqG/wCQsczPYe8P dw/vFfuyWRCfvzdJSH0tpspBoodLatbKe01qKVFMjoQJyJzE3+gRj7XH+ToI +5fmHjOnaLbOSzO1ajJY7cmQNDBU4ypEwpmCqxeou6qLBvp9b+8v+TuaOWuf 9g23mnk3dor/AJfvIw8U0ZBUg+Rp8LDgVOQegre21xt8skF5EUmU0IPH8vUd MeN+dPXOTp46r+D5VKdrF5PJSQ6WJ/Qqzzgu1j+PYkntTGpdmAA6SCQuBpWp r0ImE+UXXe4pUio4srE7lQgmjp2W9gfrHKwPsjlgYqSpHT4B1V0nodMTnaDO 4ykyuNnWoo62ET08im2qNiy/Tmx1KR/sPZPI+glT8XVvs6ySzC/LW/oL/wDI vaFpmJr5daJAwOPTPPUaQTcMf96ufpx+faRm0ggjPVa1wemmWpLfUgG5IU/S w/x/1vaKV9RHy69QDgemyWR5vUPTGLgyE6Y1/pd2t/T8X9o5fKvDrXSL3Pu/ A7RxVXm83lKLF4qhhkmrMrkplhghWJGeUxlyBwg4AuT+B7RAPKwjjQtIfIZJ /Z1V3AHy6qK3l/OB6EqOx26z6xTI70r4lq2yW6/tahdu0MlIGLxEqBO8khTS l1C3PsX7dyTud2qyXTCGM+uTTpC1whbSDXoKty/zINzJkYa0LV4na7pIlbU0 eLoaupo5iwEE0dNMfJNSv9G/tC/09ybyf7c8i3V3cW3OG6zwxso8JwdKavNX IDEVHA0Irx6jj3I3D3B2za7K/wDb7aI764WQi4iIBl0EdrRKzIrUPxAsD6V4 dc9vfzD8/LWVNRkopqvBzSxJjKiux1LTyPCVtLVVcVITLErMRpUXNvZXzh7Y cmRbj9Pyjus8lkqd0jZBf0SoUlQPMgZ6V+391zrf7C17z9tsVnvEkpMcKU1L DTBmAZlVya9qsaClTXpT9YfzS+gt+76r+tN1VFZsPddHkTjaGbK086YjNyNp 01GPnKvKkUpbjWFF/cT7vyHu+1xSSQKJ4fPTxp9nQskNagcR1YB/EqPIU8NZ QVUFZSVCCWGenkWWGRG5DpIl1cW/p7Ap1IWRlIf08/2dFUp7gT/qz0x1Mt3b jixsPyeeTe3t1F0gAnPTchy2M16Y5ixZmHI+lv8AjftZCpJoPPpLXSGJ9eoV mck6bC4t+fp9fwPZvb2hcrThXpLK/HqdFT3FyAFW7MzEIihRdmdzZUQD6k2A /Psb7RtbzzrGqnpHqKRF3Pl0V/tTsSLcFTJgMXVCPbWMlLZCs8ghgylTHYH1 kLqo6ZwQlzZnF/p7nXlrl1bOB5Lle8kEfs+fQM3fdJLh1htq6aZ+2vRbcf8A IXZeHrqmkbO7KpGpMxVYiWHMbgajq1ej8IapaGKKRBTzea6kE3sfZzebzDay G3EROkcRSnRvs/J1zfWqXpu0TV5HiOhMy3yc2PLtfC7iiyOGSifJDFBpMpGu OWulq5KVqyWoUlhQgQ3DWuQRx7Be+3/7ydLEGlc59KdO2uzzHcfodQqrU1eX St2P8uNh53Ibd2emU2jLJX5LIRM+Hzwq5RUfbyT/AHU8cqRhKUU9PoDXvqb2 E7/bHt4Vl1AquKdCO42WSyt1bxVYA+XHPUrcHzN2Jt/PZTBDJbQhkxeVkxE3 8W3CKOoaSFIm+6SKNJAaVxL6Te5sePbNts0t3Cs6ygA+vT1rs0lzCsomVQfI 9KWX5XbDbr6k34MjhVp6vKJiUWXLQrRJKax6M1T1IJf7LUurUFvpP09oBt8j Xn0QI11pXy6SCwkN39LqFa0r5dJLavy72RujcOKwX8V2jNLl8m2Lh/hG4BWV EbrTTVRqpopY4lWlCwFS176iPb15sk1pGZ2kBAxQdKbvZ5LSIzGVWzwFejZU 0sFVGk0DJLFIqskiOJI3U/Rg6nSQR/T2XV0ipPl0SZ1AV6Rna24/7u7Lq1ic x12bP8JotJ9WibirmUfXxpTcauPU3sdco7WtzMl0V4Z6NbG3LyA16KBRxqNN h+AosOP8fVc6vp7mdZDRQDgY6HKpRUBHAdKulIVQCDza1uLfS35tb24JDQ16 uFXUK8K9PELHUPxb63H+H/G/bZqRXyHXiQOPSmoZgPGSbc8/4fT/AG3190pX zx1oGpJ6FvYkqy5NDq9IVz9CbqAdelVGo3A/H19oL1aWz46RXhoQfPp97gqF j6l7wrJAkuTqOm+0oKKHSGjw+OHX+4VSSWNvT/EKhb2X/dYNzzYewxcj9B1H w6TX5mh/l0GJJQL23P4/EX8u4fz6/9faT6Kf/jBPRoA/5op1Jz/5TzbnsWxf 2UX+lH+AdRdc/wC5Nz/zUb/jx6FMOR9ef94936YBqK9e8n+H+8/8a9+6317y f4f7z/xr37r3XvJ/h/vP/Gvfuvde8n+H+8/8a9+691Hq6uOkppqiSyrEhck2 sAPyfp9PdSFAJp1YMxIFetRD5vfNvuLu/wCS+4ep+vTlq/G4TcrbO2jtDE+W f+J5CJ1ikqRRxERVlbVzyW8j+mJR/r+yu4mC62dqIvQo2+0ARCEBlI6PJ0R/ Kd+Y+96DG5juHtzbXUVNUU8VY23aCOfdm6qKmmVZGhq1iCY+jqQjcqJDpbg+ yB97irSGMt8zw6EibfKBWSQKPQdWZ7G/lL9OYako5N6dsd2b9aVT/wAxCm28 fK68SGGnoXndEB+gJ97F9dPQiij7OnRaRjGpift6G6j/AJa3xIoad4Jdt9gz OyWp5pOwM7LI039ZXFhHcfn376icj+162IYsdv8APpC7i/lffG3IRyRYHK9w 7RrZXtBUYnsCvqtErfTRT1qiJhc/k29tNeXiEaWBP2dbNtEcUIP29Ef7c/lI dgRCtk6i+TuSetgaQphOzsOZQ068rCczjZKh4xcWLaPdRvckTaZ4R+XHqj2I Y/pzGvz6pR7/AMd8y/gzvvFnsxKnBVFRUis2zvXbeTlrsHm/t3BEmNysRR4p V02emnUErxb2bWe4QXgLQsdQ4jzHRXd2jx9s6AqfPraA+C/yKqPkr8edi9i5 VIk3BWY9qTOrERpbKY5/taubSvCfcOuu34v7Oon1rU8eglcxiKVkFdPRxtf+ HtzpPjrkp1fXn/be/der6dd2H9PfuvVPTZlqh4MbWzKbNHTyOCAPqBx70QDg jp1fiFetdD+Zx3V2ptfG/H1Nodhbw2jTZOXtuevpduZuqxMVZUQbmokjqKkU rJ5pERiAWvYH3jh70Xt7a7ttKWt1JGhhYkKxXNR6ddev7urlrlneeR+frre9 htLu5XcYVVpokkYL4bnSC4NBX0p1V1gPlh8ktsZ7F7gwnevZcWZwlZBkqBqv dOQrabzU8gdVqaOeRoamlltpdGBDKSPcNw77vVvNHPHuc4kU1HeTkeoJz10I 3L209tt22+82y95J2xrOdCjgW8akgimGCgqRxBBqD1uJfy0/5nOy/mZtGm2R vCXHbV+Qe3Mci7h208kcFNu6npkVH3DtvyafuVntqmgF3iYni1icjuS+drbm W3W2uCI93Qdy+Tf0l/yjy644/eS+7XvHs1u8u87Mkl17fXEn6U1KtblsiGen CnBH4MPn1alXZnHYyjq8jkqqlx+Px9PNWV1dWNHT0lFS06GSeoqZ5CscUUSK SWJsPY7ZlRWd2AQCpJ4AdYswQTXM0VtbRNJcSMFVVBLMxNAABkknAHWpl/ND /m/Z7szN5Xov4s7mrtv7Bw1ZLRbv7Pws5pMtu6tppGjmxu3ayO0lNhIpFIed bNN/Z45MA89+4Ut48m1bFOUtFNHlU0LkeSnyX5+f2ddYvuu/dI2/lq2tee/d LbY7jmGVA1vZSANHbKwqHmU4aYjgpwnnU1HVJ5+Sff3ifx949plUVgLbzyxA IBFribnn3F43jdqY3Ken+nb/AD9Zwf1E5AOf6mbXX/nmi/6B62e/hPvzdG5N ldA1m483kc9lMx0HhKnI5XK1UlZX1ssO5MzHG9TUyXeV1Q2BYk2/PvLn23ml uOUdqluZWeUqakmpOfXrgh97/brDaffvnqy2qzit7FJU0pGoVFqoJoowKnOO rIy7Hkn6+x+OGOsX9bfxdYzID9Tf3vqjMSc8eo0kgIN+bf7f6/T24oOCpp1U E5z1AeRQeSBe9h/T/X9u0JHTbOPM56aa+tgpIJqqpkSKGBJJZJXYKqxxqXZ2 Ymyqqi59upVc9JJiCNNcnqlH5gfMzP7gzY6r6ncT1uVeSCldnZKI0kEpjqNx Zp0Ib+D05B8EVx52AJ4PsuvLgu3hoe0dCPZts8JFuJVrI3Aeg9T0WDYm19qb Rq33Fmqn+++/qy0uU3dn1SraOcj1QYSjlD02Oo4j6UCLqsPr7QGnr0JwoXJN W6FbM7zx+4MZVYbLuavHVsfjmgZ7CPj0TQWt4ZoTyjLYqR71RRnqxNcE1HXD rntitx2QXrrcmQ+7q4IDJs/Pzyc5vFxW/wBx1VIWAOTogQP6sv8Are6svn1s SFe0/l0MFduCmy9HNjsxR4/LY6eNoqigyVPHV08sbAhleKcOBwfqOR71RvLq xcnBUU6K5mMRneg8v/pP6Pq6+DDUtYlVuLreKrmkVAZNUmT2bKztNR1lOLsY LtG63FvdxUihHSeRFo1Fx6f5ury/iB8vcH39tWlpqyuhm3HTUMcsqTKsbV9O p8L1HjP7kFbTTDx1MV/25B/T3sLXz6LpdURoSCh9ejoiTHykakmp2NvVE3ni N+bgX1f7D3ajgccdJ6xFsgg/LI6yNRFiDBLHUKwOnxyASG3NvE3IYD6+9Amh 1GnVjGxHawI/n1FYSREqwK2J4YFGB445+p4/2Pt1aFR1U4wesgdY1LFlRFGp mYhVA+pLEmwHtsk5Fcdbp0CW+vkh1dsJYoJ9wU+4M3PV/Z023duSR5HLzTiN 5GtErCFEjjia7M4F+Pr7K9x3bbdot3u9yvY4YF4liP8ABx6cofy6LDur+ZZ1 JhXq9unbPY2O3VPAseNoMltp4Q89UWhoZSyyODSyVNrsD+m/sAye8Xt0trdX acxROkIeoANSUFSoqBnpLJf2lu+mWWjD5H/N1Tj8guwMj2d3PFtTdEe5K7Z2 CnpajNvS0dY65PM14iyGVrnWRAkzRpKtPGhNo0Tj3inyZzHylvu/Re5fPG5o Nxvr2V9MgP8Ai1rEdNtAqnhqNWYgCtBXooN/aNcwyXchpqJI0mgA+EcPPz6P l1z258Stp7ao8VW7O3o08VOkTpHt5PFHpUDSg1iwH+t7ybHvn7VUp/WmGg/o t/m6O/3/ALdXFz2/6Vv83RLvlFV9O7lyVFuzqrC7zxWax04mSsXEvS1CRC7K ElgJfyQzKrJ/Tn2COffcf2o5u2R7Fd7tri6VlKoy4YV71NfJlJB/LpDuO8bZ cQUWYtKpBA0n1yOHmOjifHH5y4rrTYG3M/2Tj9yT43ctFJR5SHHYapkkod14 ZzT1lRJSyBdAy1KglkKnSZQSPr7Dfs57lcucpX/Nvt5uW/FtlsJxJt8r1Oq2 lAIi15qY2NAPTpuHcrWMOjynwh8JIOR6cOjt7P8AnJ1XvNaTIRYXemA27VzQ Rx7n3Dhf4dhlWqcJTzGVpWlaB3IGoIQv595D7P7j8l75dvYbVv8ADJdK2krk HV6VIAr9nS9XE0euJqjo3m2N27e3RRit23m8bm6QGzVGOqY6hBc3GrSdS3A4 uB7GVVbIYH7OroSKauPQgUNQS4Un0sLfgAfn223A04joyhcZA+LpTUz/AEU2 ZSP0fUMfpcn20eNelYYE56Seboikr6LBZAXQf6kjgj/bj2/G1AOm3BNfXrWN /m8biyWX7L29tapqZ1w9DtHK1P2kcrxL56iqMUkwKsLSePgH6j26ST546ThA Dn06VPQH8i3p7s3pnrbsms7t7ix9fvTa+Pz1XRU+e/yalmrYxK0NPdbiNL2F +be2GmIZl01p8+ly2iFEJY5HUj5AfyiPjl8V+nt196dgd0/JHK7F2O2LO5ot nV65PNY/H5KujoBmTRuU1Y3GySh6l7+iO596WYs2nTQ9bNtGi6tTU6Yer/5d XxH7Z7a7K6c6/wDk33vXZbqLZOyd+743rWZ+mx/XuPxfYePgy22cRHn6meOA 5ybHVMcskTEBA4597aVlUEp+Xn1sWsZJXW1QPXozU38jjqwrE0vyV7ZVamD7 qnZt4UoWrowiua2lby6amiSNgTMmqMA3J90+p/ofz/2OrfRpT42/b1Ab+Qz1 JkIvKPkN3LUwzDXHPBuRKimnQ/pkhni1RSxt+GUkH3bxyf8AQ/59V+kQH426 Sm4f+E/3S9Nhc3k3747okkx2IyNeifx7hnpKSWdVN1JszJY+/eMajs/n1r6S P+JuqoPh3V1nV/yE2LtzCZHIvjGi3dgKs1dS9RPkoqGsaOOatkY/uzMYAb/Q fj2f7Kf8b0g4I6QMoWo9K9bFtNli0ULHklVNwfwQD/vPsZiPJpgdNsmK06eY cuRwWIH0sTc/70ePdWgBFDnphsUpx6d4csBb6Ef1N7kD/D2yYCPw46bPEV49 Ex/mCZ6WP4x9kwxS6Vqdu1cTre2qNwoZW/1x7LL+FlgkIHl1qMr4vw8OtWLY 81blcrV4B8rFisdjtu5Tc1VkpqCXKzUtFh4Vknp6ajj/AHJpJhwoH0PsEXd1 DY2s95ctS3jWrH5dHNjaT7jd21haqDcStpUHgSeH2dC/tSv2xWiCSPf2UZZF DC/XeR5DWYcD6G3sB3XuryVZ1+ovZQRx7R/n6keH2e55nBEdlBT5v0ZXatLs 20RquwcpEv1465yz2B/DaW9kk3vv7awkhtwuK/8ANP8A2ejBfZH3Ab/iNaj/ AJujoYFg6t+2F+zM15rA6P8ARnndIsPpfX9PaX/ggvbH/lPuf+cf+z1f/WP5 /P8AxHta/wDNUdBjuWk2MfN9t2LlSLHhut8wvH5/Ux5P59vxe/PtrKRpv7jP /C/9nqjeyPuAv/Ea1/5yDouO6ptm0XkeXsjLxqlwT/o2yZspIF+T7O7X3Z5H vaC3vZTX+iP8/SKb2d56hBD2UH5OOgP3/HkMDvDJ7PmyUGTpcXSYvJRZKmpJ MeMlT5nHLkKVpqV/3IXjicBkP0PuQreaO6gt7mFqwyKGU+qnIPUYXVvJaXFx bTj9aNiregIwR1t8fErcMk/QnXJnm1Mm1sJGCzEkKlBCqj/WAHuS7GzL28bU NKDqM9wm0XMig+fRhJ8/EgJMpA1aSAbLcfUgfn2YptZJFT8+i97oUpTppm3H GrFQxu3AIb1XHJsv1IPteu3IAKnpI9yfLj0446j3Bmzehx1QkbsNNVVHwQBP y4Ln1X/wuf8AD2luLiwsqiVxUeQ49Wijurg9kZofPgOlzj+uwWWTNZSaYk6m pqK8Udgb6WmceVh/rAeya435aEWduFPq2T+zh0ZRbOhIa5kr8h/n/wBjotvy h+XHU/xM26bU9Fkt51UDfwrCRSLJVAkMFqq+V9UkUWv6KPU3+A59rOXOXt/5 0vjbwyEWikGSQiiIPlTix8h0/d3G27JAJmiHiH4VGWY/5B6nog/wu+deH3/3 fXdlfIOTcu6c2MkmF6j62xQiTalLFPFPNX7jzEUoenDUCRIkZkvbWf6+x3zz 7enadgSx2GGHwwpe5uZcydtNKIPLUScL6dJuWuYEm3M3O4ly9QsUSfBmtWav GnlXq5vIfzWPh3s/cFdtXdXY1VtSqw9EKuerkwssO3jUaEafF4yrh8cOQq6d n0toXSCDz7h629rud7+zivrPaxLFI1AA410/iZfwg/M1+XUiy86cvW87W810 VdRUnSdNfQEcSP2dLDtfrz42/Lza+Pkn2Liew5O2tmvuLZvas2LmmxkFNTwF aOCXNUk9PWY+dI0BWIMBexIPtFtu7808mXcwi3KW1a1m0yQask1z2GqkeRNO nryw2TmGGMvZJMJ49SS6cUpjuFCD8utTr5T7am+GPddPt/pTt6m3JiaOkSWu fbGbkrYNobhWYmp29XVCMt6lVBtqBIAIJ95a8q3cfP8Ay/4/Mmw6JWY0EiU1 p5SJ5ivqD1Bu92P9XtyMe17jqQAV0tWjeat5dWJ/DT+Z5Sb1qMX153VUU9Hm JTDR47dDWjinmJCRJkeQv7nA8gtY/Ue4z519r5tmjl3PZNUu3CpaM5aMeo/i UftHz6Mtu3z61lgvAFufIj4W/wAx/wAPV7O099imjgiqKkVWMnWN6WdHWURo 9mDK4/VGR/iR7hK727xVEkK9/n0PNt3p7Y+BdtWLy+XQzxV0dbFHJTS2WRQY 2A1JID9GUn8N/vHshZDGWDjoXxzLMoMbYOa9OCzBQAZPUoAJtbkCx/HulAc6 D07q6lR1AtwwJ/23H+x90KmpA62DxqeiqdsZSpj7K2hTxK80cpyivErcAfbx +s/QWW3PvRDANjp2IgyAV8uipdtU8ZnrZ1jXzMJFaQAa2CgsqFiL8n6e3EUU Dae7pQfTy615vlTuneO69312BydJV4XE4mrZKPEsXUVQV7LXSsDom8g5X6ix 9xjzBuF5eXb20yFIEOF9fmfWvQu2i0t4oRcRkNK3E+ny+XVyfTNFOnXHXsbP IdO2catiTa4ivYfW1vcYyJpmloKHV0KQ3YK8COjKYncb0UYosnIfthbw1MhN oj9AkpP0X8An3zJ++n9zCPnqw3T3R9prBI+bUQyXtggCrdgCrTQKKBbgAVZR iXzGqh6F2w74IHjtLxv0ThW9Pkfl/g6Kf83t01OI2ZsOHV9zi5d0NM8CkH1e OO0kDc2JH4+h9w9/dke+XOPtvzRzpyZudxPNyTHGsktlJUGGXUyyPGGzG4p3 LgEjIrU9Ne4mwWm6WtrcxKFva0DjzHkD6j59FZ2VnKjOVFNK7FKZGH29OLgR jixcfmT+vv6B7Hf9v5msLTedou1m22Zaoymv+1b0YcCOIPUESW0lo7wTJpkU 56P51g7rPR6XZbC/DEfSMn+vtQRUEdPJ8Q6sT+MuXqMj1xQCd2Y0yVEMZJJA RK2oCgX/AAPp7Dt8oE8lemVNAT5dD1UTfm/qFhe9/wDbf4eypwKinWs+uT01 F5J7qi6iOTpvwB+WY8BR+faApIR3OetY8h011U8VNy7LUS8kJFzToR9Nb3Bm bn9I59p5dMYzx6qzaRwz0Dfbvbe1uqNkZ/f++83TYjbu3KCfIVtTUOkMSRwq WWKKIlbyyt6VUclj7LlF1dTxwW1TKxoB9v5dMmQ0JJx1qqd6/wAx3d/yqy2Y /u99/trY2Jy1XQYahZyIq3HqxSLIPGAI5qmqiHr1AhQdNvcy8v8ALVttESyy KHvSMn0+Q6QPOZSwB4cOi74DJbcwLyVMdFjqCqrWLTtRUkUdZVufUxIiQSOX b6/QexQivLKkEMbPOxwqgsx+wDPVCyIhldgqDiTgD7T1YL/Lm6Vn+UveG8t4 7oxDp0b0TtDNZHMzZaSOloN0b6rcVVjCYAeSRBMKSNXncfhkF/a3d9m3bZkt xu+3vbvMKor01Fa8Svl+fVNuvbO/kkayuRIsWCV4VPz8+ib9hHMdOdr7n2Pm 6WqqNt5epqtw7KzFOy1NNPiKypmZ6AMjMQ+OkuukXIW3t6y2Ledys57/AGzb JLi0iNHMYqVPzXjTpq63Cys7lbe8u1jlfK6jQH8+gyzGUwtVXx5+hp8fJlaN g1Pk/tYGr6V4z6fW8ZdZFP8AXkeyriWQghhggihHyIOR+fSg07SKHVwPEft6 M30L/MXrumN07Y2P2I1VX7L3DWfbVeVLl6fBNI4jirV13KAyG8qA6bci3uPu a+TLfcY5L7b4wl8BUgcH/L16RXMKsdSHu6v7w+cx+48XQ5rEVkFfjclTQ1lH V07rLDPT1CCSOSN14IZT7hbwJYnZJEIcGhB6KnqBnj1KaJm+htz9D+f9sPr7 XwW0hodPb0klKgAEdZoKYkn8W4BP0H5uQL/QexjttiZzGqRmpIFc+fSORStW Zu0dF17Z7Earkk2dtqqBpgDFn8jTObzMxKtjKeVTcxAi8jCxP6fc6cp8srbE S3UNZPU1HD5cOgfvO8SEmK3ekfnwP5V6JF2DvHKbR3915i8eKA09dNmHqYsj RR19DK1LjJDTvPSTnwzfbyHUoe4uOfc48q7dZ7pvSWN9DrtlgZgtaCoIp9vH oPSyPb2Ml9a9s2tRXjxrXB61gPl1J2v2r8geyN7ZOv3dtV8jlmx8GK2Xt+Wm wMVFjwaamqqanpFjhhnqgCz6QLnn3GnPFm/9Zt1jstseG1ibQoVSQQo+KtOL cepm5auIY9jsPHulklZdTFiAQT5U9Bw6O/u7svuHMfy39s9ZriIKavmyNNs+ pztFtinXeq4fFzLkEzRyCoK05KoKaHYtytxc+xnfWm3f611rvEfLqjeJAsJa h1CjUMlNNakD7M8egvZzuee7i3bc67eqmQDGkkjCfYK9Fs/l8T9qdV/JvZGf grdy7kpMsJtq5SDfWAaow9BjcvphkysUFaHgatpjYqxHpFzf2DuQreCbmazs tx2lri1nVkOpWGggag4xTFKH5Ho+5yudPL95PZ3ax3EVGXSQdVOKn5HpIfNZ O2e1vkl2Zu+tr93ba+4yrYajx2ycBLT4L+G4gvSUldDBSBYI6mqQFpLDk2Pt HznFGnMu6W1jtbW9pC3hqqqSDpHx8OLV6Vcr3CLsO3Nc3ay3DprYsQCC3l+X R1M92Z3FWfyzMP1n/C4oK0ZGm2TPm4dtQDeww1DMmQGb+9CfeHJTlNDG/IJF /Y6ntNtPtdFvScuKN4YCHVQ6sPpMvCtSP59BiKeX+vkls26H93BTIBjTkfDX 0H7eimfAer7Y6h+TGxd0UdVujdEdU023K6j3zt96nDUdBlgKeXKiCsV4JKyk LalJHp5N7ewbyJBBPzNY2O47S1xaXFUIZWGnFdeR5Uz8uhDzdcj9w3k1peCK 4jow0kEtT8P59bd3xn7CzO7s52Xh8m9O8eH3V9vQxUlOtLR0sEtFBI0dPTRk pDE8t20rwLm3sJ+7Gw2O0c43e37XbeHaGOM6R5FhnoHcv3Nzf7PZ3Vy+q4Zm qSONDjrF3BuQ7g3hLRwOWodvL/DYgCRGaoG9dMFBtzIdP+w9iblfb1sdsiol HIFT/wAX1IezW6lS7qNQ6RVMpFuB9PwLWP0sBx+PYpAoOhAOlBDdQOLWC/j/ AA97691Niclgv0/P+x97BI4cOqtwr59PtI7AWALMxVEVFLsS3p4UWJJa2n/H 3sgUFDnpvVpY1PHofcJGdjY41M4V905GAR0NBdZFwsM3qkrKy4s9b4reOL6I Tc39k925uDoBpbDifUjyHy9T0UblcmNGAb9Shp1g33RzydI91TzXkkk6c7Vm eaRizs77A3E8hZm+rMeSfZHfsPClAOApx+XRBbgS3Nsz5bxF/wAI6//Q2iui nb/QV0bz/wA0V6l/A/597tz/AA9i2L+yi/0o/wAA6i65/wBybn/mo3/Hj0Ki v9dR/wBbj/inu/TPXLWv9f8AeD/xT37r3Xta/wBf94P/ABT37r3Xta/1/wB4 P/FPfuvde1L/AF/3v37r3SE7OrzjNjbjrFYq8GLrZVI4sYqaWQc/jlR7q5op 6vGKuvWoZ/KmpE7N/mlz5euiWtXb0u/dzS+VRIiVUddNTw1HII1xlhY/X2Et 7crZSZ4kDqQNqX9aPGAvWzr8/Ng/Lnc3SWJ358QexxszfvV+4X39kdqMkZ/0 q4rCxmep25LUsxkjVY1a8BFpg31uAPZNtvgo1bmOqMKA+nRrdGYoBC1HBqfn 0r/5dP8AME6z+dmwqqaCnj2L35siNMf291BkZPtsni8nS/sVecwFHPplqcHV 1EbMQi3hbhuLH2ayWzQUoaxngemoZxKvo/mOrLfHCYtQtyODcf1/1vfgq6fl 070FnZ29tmdY7L3R2J2HuLG7R2Ls/HT5bcu5cvUpSUONoYVLsTI5Uy1Lgftx pd3P0B9pjG0gCxju8urFgqEsaDoKdg9ibD7v2NtXsrqXclBvXYu+aNa3a24q CQ/a5KEsVZZDMFeGeGQFXV7MrDn2T3MTLN4TJ3/5enY3Uqsg+D16p2/np7XT I/CTK5qSBWrtjb6wtas5Cu9Gk86U9SkUnOlHIsbGx9vbK5j3LQRQlSP2dM7i uq0JpwI6Dn+RDu2XOfHHLUDyF4sZu/KU8IJvpWb95rD6C7c/6/sf25ww6AO5 LSRT6jq+EAj6m/8Avv6+1PRZ12SB9T9ffuvdZQ4sOPx/vvx711ug9ekhvfPY jb+28nXZiuhoaf7do1aVrNLLJ6Y4YYxd5ppW4VFBYn8e9EgZJx06gLsFUVJP Wsf/ADYJZabG/GDzwTUj1+H7PzcNPUaBOlFlNzUctL51QsI5njS5Qm635940 +9BEu87bp8oD/hHXYn+7w12Ht/zoZRQvucf8o2/z9DV8DfgHsj5y/wAvzfRg NDtnuvZfa24jsDfPis9VrxeOmXa+4HBvUYWrkFlNtULtqH5BLOV+ULXmXlS5 pRNyjuG0P64B0t/RP8uhR72feG3v2Z99NhMsklzyXebTF9Vb1+EiWQePCPKR RxHBgKH16p8zuO7w+Ivd5x+TjzfWHcfV+dSopKiMy008M9JLeCtophpiyeEy Ua3BBaOWNrHm4EfS226cv7lRg0G4QPUHgQR5j1B/YR1lhbb1yd7q8nGSJ7fc uVdzgIINGR1YZVhxR1PEGjIwqPXqwP5dfziu+vlN01tLp+Ckh64o2xEVP2zl tv1kkdX2Hk4QIwInjCSYvC1Eah5oFJLuxBOkcizmDn7dt726DbwohXT+qVP9 of8AIp8x1AftT91jkH2x5w3Tm1Z23CfxS1kkygizQ8aVJEkgOFkIGkDhXIDP +Xf/AC8Ow/m9vWKsqlrNn9E7arof76b7eB4/4kI5FaTbm1jIqpW5OoUaXkW6 Qg3Nzx7Q8pcmXfMlyGcGPbUPe9OP9FfU/wCDoV+/f3jdh9m9kaOJkuucbhD9 NbV4V/0aamViByAcucDGesf82PrfYvSXzG3P1V1ng6PbWy9m7E2FjMRjaRQN S/3dpXnrauQDVU5CtmJklkbl3JPvXPe3Wu38wzWNlEEto4owAP8ASjJ+Z8z1 v7sXOu+83+0W08z8zbk9zvF5d3ju7f8ANdgFUeSKMKo4AU6ud+EVfT4TqL4r 7nyrrSYPL9LQ4CmyMjr4Icnjdz5BpIKzn/JknFSvjkayEi17+8ivbIqOUtrS uQG/w9cmvvlRSt7887XAFUZoj+2NePVrInSVFdHEisAVZeVYH6EEcWI9yKBU gdYnE9cWf/G3++/r7c8P59ar+3qLLIwBtb6f1/1/r+fp7uigYJ6qTgmnTZI9 ufre5Jva3+39qUA6LpWYsa9V+/PLviPq/ribEU9YaStz8NUtTNG9pafD0kZl r5RbkGU6Ir/7X7ZvH8GI/wAVel+0Wwu7gFh2DJ616NnbzrquTJbsOOzOU3Du yo+4lkpqGdlpMUp043F01Q8YVKengCiwNri/si49DpDQAqOP8h0JtPlt/Vvj Sl2tPFJK2lfv6yngVT9QZLS6lW31P9PfunO/y49Fv3R8qcrt/dOX2ljdq025 KvASfbZnLUmaghw1JWDiWjSqknRZJYDw5BIBHv3TRmKkjj0jc98pd119Gop9 h42XIUUy1+JqMfuylauo66n9UckI+61HWAVZRwQffutGYkcM9H16M+RdF3Js Sl3HpXF7kx8n8K3bg5GDz4zKQDSZDpY3hqwutWHBv730ojcSLXz6FB95efLU CGVDFjUfJTC31cDx06FTcEPra4P1t791euadJjrrsms6J7uxm5dv1BpMDuKt bNmkjZo6Wmyakfx+j0rwKbK0eo6BwZDf34GhB6SXMepGXraI2Vuqj3htjC7j x0iy0mWx9LWwuv8AqKiFZAP9ddVv9h7UAauiE1U/MdKsTODcNZh9OOf9v+Pe ylOIHXvEYkUY9OUVfUMvrYTC9tM6LIpt/wAnJx+Rz7ZYICfI9PrMxHcc/PPQ R98558F1XvKvo0eiq0wWT8UtNKxRHNHNpc6uRYm/B491Y/0q9PKVqKrT7OjQ 9YbM2NkutetsnWbK2fVV1dsLalZVVk+3cU9TUVE2HpXlmkmamMrSSSHUxJuS b+w5d7bt92zi6sYpBU/Eob/COhOkaFEqg4Dy6W1T1911WTRVVb19smqqkVI4 6qo21iZ6iJYzeNUlkpWdFjPKgHj2iHL+wqukbLa6PTwkp/x3q3hRn/Q1/YOu D9fdcyySTS9f7HlmkYF5ZdsYh5ZCBa7yNSlnIAHJP090blvl5qatisz/AM2U /wCgeteFEeMa/sHXD/Rz1v8A8+72L/X/AI9bD/T/AM5D7r/Vrlzh+4LP/nDH /wBA9a8CH/fK/sHXIdc9a35682Na9h/v1cNb/Y/5Iefe/wCrXLh/5YFn/wA4 Y/8AoHrfgwjhEv7B11J1z1vLClLJ13sWSmjYutNJtjDtAkj31yJE1LoV2/Jt c+7jl/YBSmyWlf8Amkn/AED1vw4+HhLT7B1IbYewWp4qVti7NNLTx+OGnbbe KMEKKf8ANwwmmKIv+AHu67FsiyeKuz2wl9RGgP7ade8OP+AfsHRF9+1MG2fl lU7ZwVBQYbCVXWO2qtsdiqSCgo/uzXVoeY01MkcXkZTbVa9uPYitI0jhCogC +gHRJuQCzKQo+Hoe6SYA21fT6Xv9Pb7cekkbUIz0pqWoUkG/9L/W/wDxv221 TQ16MY2rT18+nGtpxU0x1ekgF42+vq5uD+QLe21ND8unjQ9apP8ANxP2/d1E bAH+5NeCD+P8uPFr8H2qWprnphiAQaZp1sl/CbB+b4i/HmYAfu9Zbfk/SSfV SqeefZdKSJXp69GseY0r6dDR2f1ngN+9Y9l7H3Zjo8ptfdvX+7cHnqCWLVHV UNXhar0WNxrSVFZf6MAfdVZgymvA9WIFCDSnWk90N1ntDZnwT+JGR7MzO526 l7f/AJiW9MH8ntz7krsrjMdkuvtgU+T2tsLDb7z0DQ1NNtTG0uLhWASyLFrF h+Pa7u1kBTUDpD4luIQzyro1ZNcV9K9PO1ezsvszrLoLMb/3zunB7Rl6J/mM 7T6vyWcyWaSiy214tx11J1hjsJUSt5MohoQgxrktIYgCht72VarALmo68txA FjJmUCjefW0z/LFxuQyP8u74bVeTeuqMjJ0dtNq6oyLTzV0tQ0DtI9XLUMZ5 JiTyXufaOYlZHHDPSyMo0aFSCtMdHI3bt8/3R3YbLxtnOnlbfTGVP0v+fdFJ LLU+fV6AdaJPSU5Hyc2YA1mTcPYCEg88ZOqH+29izZF1XoHnTojkNNWrrYKp cgyU8AdiQIk5/P0Frnn2OytPLpgsWUaTjpwjyikW1tcf4/8AFRb3cIK8OmXB ArTqdFmG/wCOjWH+I/H+B/w9+aIHpoyHNQf2dE0+feV83xx36hflsNMLXF/U y/gD6+y3dIgtnLTjpPW4syE+R611+gMX/Gey89QBdXk6m3q5Fr3C0qe4M9wJ jb8jc0XH8Fox/YR0OeQ0EnOXLkZ87pejt9a9WeWnolSnJJhhuQv+0L+bce+X XMfNJ1yu8vmfProAsUcOAOHR0todISTxp/krWsLEpbiw/FvqfcN7tzskbsFk qetPIBU8OhXToJzDf7b8X/zYt/vRP59hf+vbl+OPt6a8YZGroN92dHTQRSMK Q/Qm6p/hx+D7EO187o7qrSU6dEpIIrXom/ZPVJhpqtXpzbSR+jm4I/JH19y9 y9zSS0bLLnreiOQUHHoivyLov4Z37vah06ft9u7HFrWt/v2ILcfX31m5Wcyc s8syE5axgP7UHXO3mUaeYN9SmBdy/wDHj1tA/DfG7szfRuwVxuKqDD/dzDha moZaWmA+ziBbXKV8i6f6X9zta3ljbWcAnmFdIwM/4OoavoJpbqURoTk/Zx9e jq4zq6rlCvn8z47frpsYp1EAj0tPLdQCOPQv+x9p7jmFRX6S3r82x/L/AD9N RbSxNZ5Megz0ImJ2ptvDeumoInnFr1NXqqpzb6WebUqXt+B7Jrjc9wuSQ8hC +i4H+c9GKWdrCoIQE+p6UwqQpAW344GkAW/A08Aey4xlviBp094gBp5dAR8i e9MN0X1dujf+ZmijGJoJmooJWt91XOrLR04/N5ZOTb+yp9r9v2iXcr6z2+0G q4mcKPlXzPyAz0xJcrGsszv+moJPWmB3Z31unuffm4N9borpa+prKuqqo4DK zRQU6uWjjp0Y2SKJAAoH4HvMvl/YbHl3a7ba7NQAoGpqZZvNmPzPUcXt1JfX L3ExNTwHko9B0fnqH4rVuxuldgfIjfHd2Foto900+bxO3uudrOs+689mFoZz itv46rNxT5ipqkXXoIMfF+SPcW79z+u47/unKu28vyNfbeyNJPLiJFqNUjDi UArx4+XQwseWmt9ss94udwRbe4VgsaZdjQ0UHgCTx9Ohm+Zey921/wAVfgD1 zuDq2ag783DmN4bexmLio4Z81lMbXZCP+A4zOV0KnyZcU8ytL5G1g3Y/X2l9 v9429ubvcncrTd1fluNYXLVIRWCnWyA8EwaUx5dX5k2+6XZeVraWzZd0YyCl O4gkaVPq2fPrYP8AgzUbm+NHTnV/xJ7Qwm4Jd/7c2dWbwym5aSjnqtiYeCrq 2mj2n/eAq9JJlqON9BiVzyOBb3AvuHcWPMu67tzbtc8X7ulnWJUJAlai08TR xCtxr1JHKkdztNnZ7FexP9UqFy1KoKmoTVwqPQda1/za+N0e3fkJ8k6+v21k Nm7Kz+WyPYfV3ZNPUQnZefyM8UlVkdtZZ2cwipYq3i0HyJJZT9feQHIvPAuu XuU4IrtJ9wjRYLmDPjIBhZFHGgxWuCM+XUb8xcvfT7lu8jxMluzM8T/gPmVJ 9TmlMg9Vt9M4zLbuz1bkqfb+Vz+39o4uTcG+Dh66LG12EwFOf38tT1k7pAks LDUiMf3PpY+5V3/crfbbeGJruOK7uH8OHWCyvIeCEDND504cegfZWb3Luyws 0Ma6n04IUcWqcVHWxn/LO+X+P7awGU6wr8tWZObak0g2nl8vdcnlNt69NNFX pxpraOMqp/qBf6e8dfcDlpuXtyt7hIlSC7XUVX4Uk/Gqn+GuV/Z0J7C6+ttp FJJeJqVOCy/hJ+fr8+rmcFu2twrCIl6ii1D9ot64h/qoW+igfX3GN7tiXPeg Ak6EW37xPZURqtD6eY+zoX8Xn6LKqJaWpaSQga0JIdOOQUNmIB+pt7DE1tNA dLpQdDO2voLpdUMlWP7R0okmdRq1DSeOHBN/ryPqOPafz6XqSMsag9FG7m3L i9tb/wABm83WLR43G0eaqqmZyCFRaWMgIP7UjnhR+Sfae6nhtbeW4ncLEoqT 0stI3muEhjFZD5dVV7t+VdTmuxKz7rHLHsOsmaipI1W9bTDyFVyMjf2tf1K/ gewLa83vLuJ1R028mg9R8/z6Fs2xiO0BElboZPp9nSv3J8btv94fwiOlxcmd 3HW0/wDEMRJjhGhjxq+p6nKVTlUgowPy12/w9yRDyxZb/b/X3kyxWSUHikVJ J/CoHxH5eXQBu9/vLKdrPb01TkZFcCnmT5dDLjd69Yde5jaHT+85qPae4p6e nweErEyMeQxNbkYgI4qOepCRmknmc2UEFSfz7S757C7t+5rnmDYma5tUUuyl Cj6RkkDNaD+XTm0e6m2vuEO0388a3RIXDAivofTpVdgY98RHNRSrokaQRsP6 qCOePrf3jTuEbWzaBhq9TVBIsqrIpwR1Wf8AM/f74fbXXuFzDmTHS7kkWCrc kyUjaYwquT+qE3/2HvF3fvu88txc4cye5/Je3C25kvbXReQxikc5WpEoUYEn 8ZA7sV4dG0u4zm1t7W4esSt2n0+X2dJbrCZbUk0TrJFJocMhBV0PIdSOPp7A /tv737t7QcxyWW4o83Ks0lLiA1rEa0MkYPBl8x5jpFumxw7vBqSi3SjtPr8j 1Yt1xVpE1FIp1FhZR/rxt9f6fT3mT7n/AHi+ReQuSLHmiw3KK+vdwVfo4Y2B ZyxAq4GUCk91fToGbfsF9d3csDxFEirrJ/yevVgvxVEknXdLoVmLNVk6bED/ AC6oNz+APcm7fd3G7bRtG6TRgTXFtHIwHAF0DED5Z6IZ4xHJJGvBWI/YejF1 LU0JJqJPI4+sEB4Jtx5Zxf6f0X23I1CdXTJKqKk56YqzJM6aBpihHAiiUqo/ 4O36pf8AY+ym5unVTp8+tMwHE9JSrqx6iTwgLH/AC5/P9APZW8zuasc9MO4Y qF61o/5wHyhfL7ooei8RURVGJxUceQ3PROS9NXV1SpWkpaiMMVngpIgWKEWL Pz9Pckci7UtJN0mTu+FP8p6RXUhFE+XVJmOykqTUOMwtHF97XzLT4+hpYkii Ej2uxRAAsUQN2J+g9yrtu3Xu77jZ7Vt0Wu+nfSo8h6s3oqjJ6L7i4t7G2mv7 qTTbRrUnz+wD1PAdNu+O28bsKSpxGGqIsnn4UaLNbgkZWWKcKRPSY0sTHTU8 DXUuOTb6+5Yv962f2zR9h5WgiuuawP8AGLtwGEbHiqD1HkowPxVPQPgsb3mw jct5keHZq/pQKSCw8i3+f9nU3pal+d/deKq8L8ctv9uZHaVXXTV1VBtOvyG3 dt5TISBklq56xnjhyk7RkrqbULG30PuKNz3Xct4umvt3vnnuzjU3kPRRwA+Q 6GNnZxWkQt9vtxHAPJf8p8z0j+05/lP0dl8Zie/9qb62tUUNQ4xVRupKiooY Z3YeWKizS/sq0hXlCdLf09qdl5g3rl65N3sm4NBKeIFCjfJlOCOmdw22z3CM QbnaiSMcK4I+w9KvavYFL2JHJBTyRY3eiQtNS6CsVJuBYk1SUtTCCI1rWUel 1/Vf3JyHZ/da1mj+lisfcCCMspXEd0o41HmT5/iX1p0FG+t5OkjfxnueWJGo Q2XhJPr6D9h6T1duamqULT0lNNLFKyy0mQp1mWCqhYh0eN1Olkdbf7D3DrpL DLLbzxlLiNirqeKspoQfsPQ1OhlSSJtUbAFW8iDwPV8v8rf5HtvnbuT6qzlW HrtsotVhUZ+ExUriJ6OMsdWmimK2H9GPuKubtkWK9W8gWiy8QP4vP9vRXeoE Ikrx9OrjRTAB3eyLGpdyzDSka/WR2JAVf8T7Ldt2qaVvBSM6z0S3ByJa9gGe i4dl9sLOKjbGzqgeoGHKZ2NjpMV9MlNjCosxYmzyk/1C+5r5Y5T8BEmvIQDW oFQfn5dA3ed5LVitmr5Hy6B3C4kO6cXLPyxLFmJOss7NYsxPuToECklQKdBZ VWbLVx0W7v7Z25s/2h1ritn7eym5cvNBuiSPF4Wjmq62SKLDytJIkEKs5WFf 1H8exVyhfWW28w/UbjdxwQG3canYKtSVxU4rjHRq9hcXW2SQ2cDyS61NFFTT 7B0gYOmvkJ44x/oZ7BbSiga9nNI1gBYlpKBnY/4k+5XbmXk5iS2+2JJ/pp/l PRYOX9/wP3Xcgf6VqdS4emvkF5Wlj6d7DZwvjf8A36U7RoP9QYPsvCp/1lv7 0eZuT9AjO/WPh+niJT9ladV/q/v9f+SVc19dLdTv9DPyEaJlbprsFUK+ox7N khYL9T+5FQpIg/1iPdV5l5NRgyb3YhvXxEB/w9ebYN/xq2q6I/0rdTIemfkN pQDpnsBlCgIW2a8rFbcXd6B3b/Ykn3puZOTGJZt6sCx8y6V/bXrX7g38Y/dd 1T/St1KXpb5BrKJH6c7B1uvjVTtCcxsBc6RAaIwXFr3C3/x9+PMvJ5Twxv1k I/TxEp+yvWjy9vwONqua/wClavU7/Qr8hGQj/Qv2AAwCsY9lyRsRcXHkix6O o/1iPdBzHyehDLvlgGHmHQH/AA9aPL/MFaHarmn+lboWvjzJm+tcp31NuTEV 2Bz2Oz1PCuIy0D0ddBXVeKp4qMSwSqrggvrAtyF94ve4z229e4Zfbp0nt9EN WU1Wg456kjlXb7q32qxhuLdo5FkNVbBALeY+zpwpg80sk88hkmnkklmkLeqS WVi8rsf+bkhLC309iJYljhWNBwHUlRrEgAiPShp1so5B/pzzfjm/u58qdKOn YMoUer6AXP1/H+9+96GPl17rPTxy1NRDTU8by1FRKkEUKKXkkkc2EaIl2Ln+ nvRIXVqOB148NXl0N+ExVJtaVGqDDW7liS8hBWXHbfYKb+NrslXlUBsWu0cJ +gL/AETjVPgYg/YW/wAw/wAPSSVlWrg1A/1U6m4cy53Imrkd2j1skZY3dwr+ uVyfVqmbnnn2ivmEIpjoH37vPcVWpUH7OhV7EoBF0R3XYEAdLdrjn/Hr3cTc f7b2FL56o+eIP+DpyyStxb14a1/wjr//0dojor/mRXRv/iFepf8A33u3PYti /sov9KP8A6i65/3Juf8Amo3/AB49Cl7v0z1737r3XvfutEgceuRFgDf6/wDE e/deqCaVz1x9+68CDWnQM/ImtOP6h3xUg6THtzNOCBzdcdPa39PdJPgPT0GZ UHz61Vv5Bsa5L5691ZST9eN6+3JOGPJU1e4nViv9OPYK5gNLWMer/wCTqRtp FZK/0D/k63NsRVqjpIrXva+q7Ky86kKElbMPqLc+w5E5AQ14dGzgV6pO/mE/ y/OxNl78pPn9/L9q5djfILYMrZ3eWysIDT47fuNpz58ipx8JWGs+8hVlmhZT rBuOfYlsb5WT6ec9vAHotuLdlfxofjHEDz+fRyvhV/Nr+Pnyh6F3b2P2TuLC dFdj9K4mef5C7D3bWxYqXbc+MhkFdndvwVjRTZHGZGaB/HCitKkh0EfQ+35b eRXCrlD1eK4R1JY0YdU4bw7G71/ny95w7S2RDn+sP5dPV+41mllm89BU9uVW PqBry2ZddAq4q5Yv2oPUsUbc3a/u8s0O3xE1BmPD/V6dM9109BURA/6vz62R tqbK2Z1fsfbPW/X+38ZtTZmzsNSYTB4LC0/2dBSQUkKxvLHGhBE1VIpeR/qz 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 HBA59j//AFtksAn9auZtu2ydhXwSwklAP8SrgdBM85NdMRsey3d7GD/aAaIz /pSePSg2D/MFwuZ39t3rbuDr/eHRW7c5WCnwE269Mm3svVujJHTQ5QWijlld gq3NiT9efbG5+3Nxb7ZPvWw7rabrtkQrIYT+pGv8TJxp60z07Y84RTXse27p YT2N7J8HiDsc+itwr1YJHuKcEqa1QQ3/AB2Qj6jm4NiGFiPcfCKMgMEUjoWa 2GNR61wvknm56z5p/IvBq5NJS7rxVfOASVnqpcDSiO9v1GGMjT/iT7HHK1lE pe7cUJFB0Q3EOu8lkzQD/J0z0kXH6f6G9uCf8f8AYexqcrk56vCSSSR0+Roq gEg/4ADgf8b916U9PmGwuRztUKSggEhVPLUzyusNHRU9+amtqGskECg8XOpj wAfemlES1J4/6sdezQgdCpiqTG7fRoMNqqso3FZuKVTFUabeqDCRmz0tI4uD K37stv7I+qch5KNL8P8AD/0F6n5eXXhTwz1AqpXZ0xFOzfcVLa63Ra8MJOvw 2X0rI/1a1vr7V1EamQjA6I7uYxxyKM8eh32TgRHFCPHYqoudA9Wq3Fr8Wt7C +4XPiyE16D4OquOhH7Yx6wdCd3toCkdKds/i3/NPNx3bnn6+wzdSlhJ6UPRl ZR0lgrx1r/hHX//S2iOiv+ZF9G/+IV6l/wDfe7c9i2L+yi/0o/wDqKLqU/U3 OP8ARG/48ehT936Y8U+nXvfuveKfTr3v3WjJXy69f/ePfuvCShJpx67uOLj/ AHn34dOCpzUDoAfk7qk6X32ig3bbWcAsf642f3SQVRvs6VW/9qn29asH/CfP ILT/ADh+QaHSJv8ARvlmiV/VeSm3Ox5HGpb/AFF+R7A/MR020Dekg6kfah3l fVOtx+HLy1lQ9XUGITzsrSCnjEEIYC1o4bkIAB+Pz7C3i62L0Ar6f4OjkoKU HSpocu8LKyHm1jfSysrfqRlIsyspsQeLe1McukE+fTRQjj1qGfzqv5b/AGvu z5NVfb3S2xtoU/TfZm1aSGvwW3quqwuY3T2LjXaqyODzdJStHBWPlxYx3HjI b+vs1HMFvZHbLW4VmkuJvDB8lxWp+XR3sXI24c0WXOm7WN1HFDsm2/Wyq1SZ UDFdCU/HiuetjT4J4rHbT+IHR+LpOsMX05kzsvHR7m2HiiJI8XmaWJYKhpao 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 Ph5qWlan9JIDNww9h1N6tnexjKMHmLDNOwqSvd9pGOlj7DOqX8gZCsAU4r3h wGqv2AgmvTcP5pO39p43pDK7O673dU5Dvfbm/wDfWx9tdgdkdc9bYmu2LsTd VbtakyNBvfeeSx2CrNxb3moGqMRhYyamSnkjMjqzqDteYkiFsy27EyqzKCyo NKmnFjQlvJetNy08rXatcrphZVYhWchmFaUUVovAtw6P1uv+Zfhdi4vonAUv Te9t3d099bfy+6NudOZrePW/VeQ2xt3bGKp8lufJ7633vrcUGxMOKF6uOmo0 hqqk5SpkUQErdgdS74kK2aLbM11OpZULKlABUlmY6R6DJqeHRJFsEkz3rG6V LWBgC4V3qWNAFVRqPqcYHHrLuj+az1hR9F/F7u7rjpvtruKT5Xdj7l6e2L1l s+Ta1Lv/AAvaW1KTMpl9m52HI5T+Cz1dPuLCSY9p6aqemCEVYcwe9Scw24tN vuoLaWX6iQoqrTUHWtVNTTiKYPz4dbj5cuDebhZ3F1HF9NGHZzXSUalGFBXg a0Ir5cerJNl7gy+5NnbT3HuDauS2Hns/tzC5nNbHzVdQ1+Z2dlcnj6esyG18 tW4x5MdV5LBVUzU08sDGF5Y2KEqR7PImaSKN3jKOyglTkgkcCfUcOiGVFjll jSQOisQGGAwB4iuaHj0qfKB/uxf9uP8Aivu5UHpvrkJfzqv/ALEe6Mq0GOtg npMZOa2Yx7K7IylvUrMCLxn6FbW49le6R1tJKDHRltjEXaHVQ9BrvOp8FDX1 srPOtHSVdY631NJHSU8lS6L5Dp1ssdhfi59hAIP4fn0KzI7Yr1SVs3+ax0T2 V8bO8fk5D1/2JhMH0bubZu1cxsLInbLb13RkOwqmkpNpSbYalrXxstJlJ5pg pldTaklPNh7JLwbbvW1XZu4n8GMgYIDhm+Eqa+vRwNtvLO/tbdJkLSKTXOmi 8a4rj/L1bT8dvlT05u34tdIfJzO7g210lsntTbsOY263a+6to7UqqWb+K5LF R4ysyNbkqbE1OUlnxTuIoZXLIQbfX3z09wuUfcPlrnw7jtUu4Sq8guLWSLxJ BpBrlVqAVIoykUNOGk9DizktZYpbZ40Lp2uKef8AmPl0eiHuXrylxOHz25Ow 9gYLH7gpZqjbucyu79s4nC7mpKbGvl6ir27lKzI09BmYKbEQtVyNTSSKlMpl JCAt7yk9q/dNee7Ftp3qEwc32iATKVKiQCo1gEDS1R3KaUPl0SXO1NZSeJBV rUnHqPkegL+RPafXGW6TxHZdL2dsWs6ylyMOQh7Ep97beqNhTUiTrTfcRbtj yb7fkiWpUxXE/Eo0fq49zFHoA11GmnHHSKUSU0BTrrwpnoMOncvt3eWGx+7t nbo29u7bGRBGPzu1szi9x4XImJykop8piqmsoZjA4s4Vyytwbe1kCagXVhT5 dNEshCOCGpmuP8PRu9vR0sjRxyU1JJZo9StTwORci+oFCbG/5/Ht7Qc0PDq+ ojjSnTFgFET5GNAgVaycKAoRVBkfgBQF+nswgWijUTw6QyOFdj8+nqa1jf8A HJ+tre1Ix5dMmWtc9MNUxJ/33+Fv979qoOA6ZIGk16TFYLO5FzyfrwODYC44 9mkOkhtXTMxIWP0I6Jz84e897/G34s9yd39d7FfsXeOwNsR5TC7YenyNRQPL UZXHYyqzOXhxI/iVThNsUVdJkayOnKyvTUrgMlywa3LcP3fZXFxDGHlVRQf5 SONBxNOk9jaJeXsFvK+iJmoT+3A8qngOqWuh/kn3D8qs3uem3v2t8a+6etcf s2j3S/YPStRkNlZDbGZeoC5LZu9+td1Zmr3VQ46kpNcseUeGCC8RSQlmsofg 3eW8aRLiaCWLTUNGCtD5qysa0+fS7dNuggWMxQTRTliNL5DDyKsBT8um/Y3d nx67J3Dj9s7Rxm9pZ9y4Tc+4eu6/JdZ7lwmE7ewuzBL/AHlruo8lWUqQ73NA sLMsUASeoSzRKym/tPDdxXcywW0UjSsCVAU9wHHT69FV5tV5aRNPPIixKwD9 47C3APnt/wAnn0UKX5k4Cf47ZnutelszSZSn7jj6wx236vb26xiVoazclRi6 XKz5s0Ef8QylDiqKT7uliWLx5h48eSsri6U3kv7va/MWkCbw9JVqnNCa0oaU NafiovHpadl/3ax7aLwEGDxCwKVwtaUrUVJFCfw1fgOjM0uf2tWdr5nb4ONO 18R8dKPves2pUbI3HjewMPiJMpVR1mTzNZW1aUFNLT0NMYZcEaZcjTVKkyNp 9PsyeCbx3SGRJVW2ExCghgleJ1fiHmlNQ8+iXSfo4pHVlla7MAYspRmpwUAV oa4eukjqH1b3J8bu5N2bT2ltKi3bTZPfOz6zfWw8lubY2e2thN24HENGM1Jt nOZOGKnyNZg3e1SsZ0Kytod9J9lK7rbv2rWtKioIr0putq3GzhllnKFEfSwD BipPCoHCvl0ZLoX+Yb0lQ7r2n1vT5DsCTG737IXqLYW9f7gbkOyt7bvirJcd XY/AbtlhTF11DiK2ExVFSGVVuGVXW7AP7lvVwElMJ7FB8/8AB0ku+WL8xSSl UBSPxGXWNSrxGpeIrxA6vKwO1KSdIaiPTZ0WQkC92a1y1vqx/J/PuP5d2umG lyadEcdoFHDoSKDbscAiCGw5JIiU8/8AIYJ9ls24OTRGzTpbHb6Svz6U0GF1 vFHHNIZJGCJHGqrqc/QG1rL7LzNNJICSSCel0dvUrQ91enPcH8LwWLrJKupm GL2/j6/N5qqQmQt/C6OWryNREtx5FpKWBlQfkj2pe90MIgfl+fS+a3B0QJn1 +bf5hw6oP6c7W/mUfKXFdQfNXpxPjVN19vze2erOsviduvbeQxu4Mj0tR7ky O0sjn9zd+VOVmXGdiVuBx1Tk44Y8caCNlWMKxbxER2TW1jeTWya/HVe564qa GgX0+da9H8Vrte33LWjLL9Qi5krjVStAlPhzSta9Hi+Snzi6g+KeazFF2D1T 3zntrbM27tndnZfZ2xeo4891j1hgN25U4fCVG5t35HIYOly1fJVLeejwqZOr pYyrTRprA9nUd1cyAESCtaUrk/6vy6VW9tLcgFJEBJIAJySPQUP7TTppqvkj ktvfP6t6Qy2T2Pi/jpR/AzPfLPM7grcBSxZKhymJ7LpcHPuGfcbXmh2tT7Jd 53pPBqLjXe/p97bcJ/C1hjq1Ben4rctbCQA+N4umn5f4a9LDof5y9DfI3c+O 2Lh9k9wddZTfPVuX7v6bqe3+qk2NjO+en9u1cEGX7A6orHrci2XxtEKiGZqW sSgrxSTxz+HxNqCW5v7xe9ZhpU6TQ1ofQ9GC2ToKuFJr5eXTd8fv5k/xh+RG +fj/ALL2dsbvPAUXyept8Q9Hdh9gdOw7X6537ufrKKun3tsfE7hbJ1s0+5ML SY6R2Zac0Ej2iSpaUMi0e43CISM1wpKUqAeFeGPn0qNrQE0FR0Xr5TfzQNv4 KXb2O+Luyt8ZN6f5sdR/E3cPee7elIsl8dtz5Gr37Bt/urYOyN7Nkomm3ntu hmZaesmpYKR5oZRTSTumkqYbq7bMsgHYWoDmlME/b04lstasBWn59Hq79+e/ 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 949HRbU+MG0c/teh3em/1FPm977+yGejpDXZihpifsYUikWF9JMlkGpq2sbi a6UsEErroAQEA6uLN9nH5dXub+CO18GEymNZA5MhBpp4Kv2+fQK9F/BLffRH YPWVHnp+nMxhPj/j9y4bbPYm1j2tX9mb0rMpTzYnGZKood2bjm2T1lNjsDUP S18OEp54cg/+oFiFyW77XPDDCYfFgqPFXXrJOPxHShANDpH59MXV7HuNtcM4 m03FCY20aFANfwjU1TkajjpebG/kyfMPsL4w786oxlb1bj0k7lXtbqTdOfrN 041Nw0cnYbb9qMZvihkxs8+HZyFpo5aFaoHl2vceyd4JBbyW7SKTr1A58zqN fSvy6e8aJtxg3BYXp4HhuO3+DQCvr+dOlH2r/L7+QPX/AG7vHtDsCfaGMqt7 /F2Tpato9n1ebyGOx2+6+uyVfkcnT11RSQTy7SR8j44jKq1bot2QH2zNPJBI 9yk+ktFpOknz4/l0RvcRW9pBYtAzLHdiUFgMqKADjhsfZ0gemPiLvqk3B8NZ Mtn9pu3xc6Q371puKno4cnBUb2l3RjMdRUNTgHlpkhghxxpZPKarRIyMukEg +0b3P71t7e2gZUu7aEgU4uo4D7QMfs6YutzijG9nw5PCvLlHHCkdCSa/bjhj ogvWm2N91W+Pi38dNoT7jy2A6O+YGS3ZR7VzfR/Ymyew9obHxmR3TnMnubs/ d+W+567/AIRg5cm9NjZcXUytlTUCRiuhEYifSVk1AZWnH+Xr9vQtm8Lwtxvp VAkntQpYSKyMxAACKKNU0qa/Dw63L+lq+TObZpJpCfPFH4ph+Vli9Dg/U8sL +wPfK8cjLq/4roDi3AaoGehySkI0hSf6m35P5P8AsPZTRz8JPHp3w2qCAOlB SU7UFM1Y/NTVBoaBSBqiQcTVr3sbD9Ef+PPtZHVVJNRXh/n6MoIREmsjvbh8 vn/m6bpcdDWU81HVwJV0tXBPR1lLOuuGqpKmJ4KqmlHGuKeCVlYfkMfaYorO GIFemRFIaGtCOqSMV/LA+Ruy4dn/ABb6++b2V2L8KcZ2LW7z23trbfX02H+T Oz9pnc8u/qrqHb3eGL3FSQ021Zcyzwx5D7NchHRyNGVZbqwntb2KadrlrY/W FKE6uwnhq00rWnzp0I0vbeScTzWNb4rQmvYTSmrTTjTy4dS/mz/KM7c+Yfan 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 Bxi+h+0VofP/AGOkKiL6iD9RviH4R/EP6XX/2Q== --1371035315-1314841719-1335932535=:1644-- From renton@renton.name Wed May 2 03:02:34 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q4282X8W016430 for ; Wed, 2 May 2012 03:02:34 -0500 X-ASG-Debug-ID: 1335945745-04cb6c24fb1140d0001-NocioJ Received: from beaver.old-horrors.ru (mail.renton.name [90.155.165.44]) by cuda.sgi.com with ESMTP id TGdr1bgOOW2cCMYy (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 02 May 2012 01:02:28 -0700 (PDT) X-Barracuda-Envelope-From: renton@renton.name X-Barracuda-Apparent-Source-IP: 90.155.165.44 Received: from beaver.old-horrors.ru (beaver.old-horrors.ru [127.0.0.1]) by beaver.old-horrors.ru (8.14.4/8.14.4) with ESMTP id q4282LuS020768; Wed, 2 May 2012 12:02:21 +0400 Received: (from renton@localhost) by beaver.old-horrors.ru (8.14.4/8.14.4/Submit) id q4282KHk020767; Wed, 2 May 2012 12:02:20 +0400 X-Authentication-Warning: beaver.old-horrors.ru: renton set sender to renton@renton.name using -f Date: Wed, 2 May 2012 12:02:20 +0400 From: Alexey Vlasov To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: Cleancache support in XFS Message-ID: <20120502080220.GA20504@beaver> X-ASG-Orig-Subj: Re: Cleancache support in XFS References: <20120430173112.GA16257@beaver> <20120430191218.GA23530@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20120430191218.GA23530@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: mail.renton.name[90.155.165.44] X-Barracuda-Start-Time: 1335945747 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.95756 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Apr 30, 2012 at 03:12:18PM -0400, Christoph Hellwig wrote: > > > > Could you please tell me if you are planning to support cleancache in > > XFS? > > As soon as someone submits a patch. In theory it should just work, but > the cleancache maintainer require a completely idiotic one liner to > actually enable it. Feel free to submit it once you actually tested it. Cleancache_init_fs () I can actually put where it it should be but I think it won't be enough. I think there some hooks needed (as for brtfs) but I can't fix it as I'm far from programming. From tinguely@sgi.com Wed May 2 08:39:06 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-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 q42Dd6L9045385 for ; Wed, 2 May 2012 08:39:06 -0500 Received: from [128.162.232.130] (eagdhcp-232-130.americas.sgi.com [128.162.232.130]) by relay2.corp.sgi.com (Postfix) with ESMTP id C7F21304051; Wed, 2 May 2012 06:39:02 -0700 (PDT) Message-ID: <4FA138F6.3010806@sgi.com> Date: Wed, 02 May 2012 08:39:02 -0500 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH 06/10] xfs: struct xfs_buf_log_format isn't variable sized. References: <1335249220-22274-1-git-send-email-david@fromorbit.com> <1335249220-22274-7-git-send-email-david@fromorbit.com> In-Reply-To: <1335249220-22274-7-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 04/24/12 01:33, Dave Chinner wrote: > From: Dave Chinner > > The struct xfs_buf_log_format wants to think the dirty bitmap is > variable sized. In fact, it is variable size on disk simply due to > the way we map it from the in-memory structure, but we still just > use a fixed size memory allocation for the in-memory structure. > > Hence it makes no sense to set the function up as a variable sized > structure when we already know it's maximum size, and we always > allocate it as such. Simplify the structure by making the dirty > bitmap a fixed sized array and just using the size of the structure > for the allocation size. > > This will make it much simpler to allocate and manipulate an array > of format structures for discontiguous buffer support. > > The previous struct xfs_buf_log_item size according to > /proc/slabinfo was 224 bytes. pahole doesn't give the same size > because of the variable size definition. With this modification, > pahole reports the same as /proc/slabinfo: > > /* size: 224, cachelines: 4, members: 6 */ > > Signed-off-by: Dave Chinner Looks good. Reviewed-by: Mark Tinguely From b.candler@pobox.com Wed May 2 13:45:18 2012 X-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_44,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 q42IjI4D070482 for ; Wed, 2 May 2012 13:45:18 -0500 X-ASG-Debug-ID: 1335984313-04cb6c24fd15bd20001-NocioJ Received: from smtp.pobox.com (b-pb-sasl-quonix.pobox.com [208.72.237.35]) by cuda.sgi.com with ESMTP id 0bsnMEFxkhmuD7cB for ; Wed, 02 May 2012 11:45:15 -0700 (PDT) X-Barracuda-Envelope-From: b.candler@pobox.com X-Barracuda-Apparent-Source-IP: 208.72.237.35 Received: from smtp.pobox.com (unknown [127.0.0.1]) by b-sasl-quonix.pobox.com (Postfix) with ESMTP id 46FDC6634 for ; Wed, 2 May 2012 14:45:13 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=date:from:to :subject:message-id:mime-version:content-type; s=sasl; bh=oBwSi4 vkJ/V1z8sHQrtZKALFy0I=; b=p2+lsFGLNaZYo58jfYBm6hgsp/TrpA7gK4Z1Vc lbYk/pNj34f4QjX1xcJv8o/XlR3FtceACn3OUHvcRXZpiwokqP4++EgPZjbevif/ AvvUsrzwmBlqTAPpI6wWOjuqYxmNXdr7Rs7dF6h3w1YUIxtppcgK0elfcByy0iuK g1C8E= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=date:from:to :subject:message-id:mime-version:content-type; q=dns; s=sasl; b= kmeifwmMcXtdj9tex0C3s4B3XLK62EgE8Z70P1jE4n5Mz37rIlL3zPTGoOCcLZ7W JzUE25dFs592u9hijOvEAS8QK9xDQIVzCFjJ9EP3hjI4jsC4QLbUzuiWuA8eFopq 3+jCgo0UrMpDGOcKE54GJ0IJuN4BS1Fa+zQWLzF2Fqg= Received: from b-pb-sasl-quonix.pobox.com (unknown [127.0.0.1]) by b-sasl-quonix.pobox.com (Postfix) with ESMTP id 3E8E16633 for ; Wed, 2 May 2012 14:45:13 -0400 (EDT) Received: from Brians-MacBook-Air.local (unknown [217.149.107.203]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by b-sasl-quonix.pobox.com (Postfix) with ESMTPSA id 39FA46630 for ; Wed, 2 May 2012 14:45:09 -0400 (EDT) Received: from brian by Brians-MacBook-Air.local with local (Exim 4.77) (envelope-from ) id M3ES2R-000210-06 for xfs@oss.sgi.com; Wed, 02 May 2012 19:44:51 +0100 Date: Wed, 2 May 2012 19:44:50 +0100 From: Brian Candler To: xfs@oss.sgi.com Subject: Storage server, hung tasks and tracebacks Message-ID: <20120502184450.GA2557@nsrc.org> X-ASG-Orig-Subj: Storage server, hung tasks and tracebacks MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-Pobox-Relay-ID: F14963B8-9486-11E1-9864-FC762E706CDE-28021239!b-pb-sasl-quonix.pobox.com X-Barracuda-Connect: b-pb-sasl-quonix.pobox.com[208.72.237.35] X-Barracuda-Start-Time: 1335984315 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.95798 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 I have a really wierd problem with storage. The one thing that I *can* see is dmesg output giving messages about hung tasks and XFS call tracebacks, so I'm posting here in the hope that someone can help me interpret them - even if only to say "this definitely means that your disks are not responding" would be very helpful. First a bit of background. there are three storage servers: they have 24 x 3TB SATA disks on LSI HBAs (1x16 port, 1x8 port), plus a boot disk directly to the motherboard, and 8GB RAM. They are running Ubuntu 11.10 server amd64, kernel 3.0.0-16-server #29-Ubuntu SMP. Apart from the boot disk, all filesystems are XFS mounted with inode64. I had been testing them as gluster fileservers, and two of them locked up in operation. This gave the appearance of a hardware or BIOS fault - in particular, a power-cycle at the front panel wouldn't bring them back to life, but powering off using the physical switch on the PSU did. So after upgrading the BIOS and iKVM firmware on the motherboards, I decided to give them a soak test, running a couple of instances on bonnie++ talking directly to the disks (so no gluster or network I/O involved). When I came back to check on them, they have all locked up in similar ways. On the two that I can still login to, I see the XFS call traces in dmesg. The three servers have their disks configured slightly differently, and the failure modes are slightly different, so I'll expand them here. storage1 -------- Configured as two RAID6 groups of 12 disks each: $ cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md127 : active raid6 sdy[11] sdx[10] sdw[9] sdv[8] sdu[7] sdt[6] sds[5] sdr[4] sdq[3] sdp[2] sdo[1] sdn[0] 29302650880 blocks super 1.2 level 6, 1024k chunk, algorithm 2 [12/12] [UUUUUUUUUUUU] md126 : active raid6 sdj[8] sdk[9] sdd[2] sde[3] sdi[7] sdm[11] sdg[5] sdc[1] sdb[0] sdl[10] sdh[6] sdf[4] 29302650880 blocks super 1.2 level 6, 1024k chunk, algorithm 2 [12/12] [UUUUUUUUUUUU] unused devices: $ df -h | grep md /dev/md126 28T 105G 28T 1% /disk/data1 /dev/md127 28T 86G 28T 1% /disk/data2 My soak test was to run four instances of bonnie++, on /disk/data1/{test,testb} and /disk/data2/{test,testb}, using variants of this command line: while [ 1 ]; do bonnie++ -d /disk/data1/test -s 16384k -n 98:800k:500k:1000; done SYMPTOM: I can happily ssh into this box, but iostat shows that no disk activity is going on. The bonnie++ processes (which I was running in screen sessions) have apparently hung, not having completed even a single cycle: brian@storage1:~$ while [ 1 ]; do bonnie++ -d /disk/data1/test -s 16384k -n 98:800k:500k:1000; done Writing a byte at a time...done Writing intelligently...done Rewriting...done Reading a byte at a time...done Reading intelligently...done start 'em...done...done...done...done...done... Create files in sequential order...done. Stat files in sequential order...done. Delete files in sequential order...done. Create files in random order... Three of the bonnie++ processes stopped at this point. The other stopped at "Delete files in sequential order..." dmesg is apparently silent until I start getting the call traces, here's how they begin: ... [48899.342127] disk 9, o:1, dev:sdw [48899.342129] disk 10, o:1, dev:sdx [48899.342131] disk 11, o:1, dev:sdy[532203.415122] INFO: task bonnie++:28294 blocked for more than 120 seconds. [532203.415489] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [532203.424964] bonnie++ D ffffffff81805120 0 28294 28242 0x00000000 [532203.424973] ffff880212129cc8 0000000000000082 ffff880212129c68 ffffffff812ed3ee [532203.424984] ffff880212129fd8 ffff880212129fd8 ffff880212129fd8 0000000000012a40 [532203.424993] ffffffff81c0b020 ffff88020f070000 ffff88021fc0de40 7fffffffffffffff [532203.425003] Call Trace: [532203.425016] [] ? radix_tree_lookup_slot+0xe/0x10 [532203.425025] [] schedule+0x3f/0x60 [532203.425031] [] schedule_timeout+0x2a5/0x320 [532203.425039] [] ? x2apic_send_IPI_mask+0x13/0x20 [532203.425046] [] ? native_smp_send_reschedule+0x48/0x60 [532203.425054] [] ? ttwu_queue+0x92/0xd0 [532203.425060] [] wait_for_common+0xdf/0x180 [532203.425068] [] ? __sync_filesystem+0x90/0x90 [532203.425074] [] ? try_to_wake_up+0x200/0x200 [532203.425080] [] ? __sync_filesystem+0x90/0x90 [532203.425087] [] wait_for_completion+0x1d/0x20 [532203.425093] [] writeback_inodes_sb_nr+0x79/0xa0 [532203.425099] [] writeback_inodes_sb+0x21/0x30 [532203.425104] [] __sync_filesystem+0x49/0x90 [532203.425110] [] sync_one_sb+0x1f/0x30 [532203.425117] [] iterate_supers+0xa5/0x100 [532203.425123] [] sys_sync+0x2b/0x60 [532203.425131] [] system_call_fastpath+0x16/0x1b [532323.396630] INFO: task bonnie++:28239 blocked for more than 120 seconds. [532323.401489] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [532323.411026] bonnie++ D ffffffff81805120 0 28239 26958 0x00000000 [532323.411033] ffff88020fd85cc8 0000000000000086 ffff88020fd85c68 ffffffff812ed3ee [532323.411038] ffff88020fd85fd8 ffff88020fd85fd8 ffff88020fd85fd8 0000000000012a40 [532323.411042] ffff880212d2dc80 ffff880207400000 ffff88021fd0de40 7fffffffffffffff [532323.411050] Call Trace: [532323.411062] [] ? radix_tree_lookup_slot+0xe/0x10 [532323.411072] [] schedule+0x3f/0x60 [532323.411079] [] schedule_timeout+0x2a5/0x320 [532323.411087] [] ? x2apic_send_IPI_mask+0x13/0x20 [532323.411094] [] ? native_smp_send_reschedule+0x48/0x60 [532323.411102] [] ? ttwu_queue+0x92/0xd0 [532323.411109] [] wait_for_common+0xdf/0x180 [532323.411117] [] ? __sync_filesystem+0x90/0x90 [532323.411123] [] ? try_to_wake_up+0x200/0x200 [532323.411129] [] ? __sync_filesystem+0x90/0x90 [532323.411136] [] wait_for_completion+0x1d/0x20 [532323.411142] [] writeback_inodes_sb_nr+0x79/0xa0 [532323.411149] [] writeback_inodes_sb+0x21/0x30 [532323.411155] [] __sync_filesystem+0x49/0x90 [532323.411166] [] sync_one_sb+0x1f/0x30 [532323.411170] [] iterate_supers+0xa5/0x100 [532323.411173] [] sys_sync+0x2b/0x60 [532323.411177] [] system_call_fastpath+0x16/0x1b [535202.773094] INFO: task kswapd0:31 blocked for more than 120 seconds. [535202.778172] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [535202.788110] kswapd0 D 0000000000000003 0 31 2 0x00000000 [535202.788116] ffff880212f03980 0000000000000046 ffff8800891939b0 000000000000001a [535202.788121] ffff880212f03fd8 ffff880212f03fd8 ffff880212f03fd8 0000000000012a40 [535202.788126] ffff880211a0ae40 ffff88020fbfae40 ffff880212f03970 ffff880208215818 [535202.788136] Call Trace: [535202.788148] [] schedule+0x3f/0x60 [535202.788178] [] _xfs_log_force_lsn+0x171/0x2e0 [xfs] [535202.788186] [] ? try_to_wake_up+0x200/0x200 [535202.788210] [] ? xfs_iunpin_wait+0x35/0xb0 [xfs] [535202.788233] [] xfs_log_force_lsn+0x18/0x40 [xfs] [535202.788252] [] xfs_iunpin_nowait+0x47/0xb0 [xfs] [535202.788261] [] xfs_iunpin_wait+0x35/0xb0 [xfs] [535202.788265] [] ? try_wait_for_completion+0x4b/0x60 [535202.788277] [] xfs_reclaim_inode+0xb2/0x2a0 [xfs] [535202.788281] [] ? radix_tree_gang_lookup_tag.part.7+0x6c/0xf0 [535202.788293] [] xfs_reclaim_inodes_ag+0x20c/0x330 [xfs] [535202.788304] [] xfs_reclaim_inode_shrink+0xa3/0xc0 [xfs] [535202.788309] [] shrink_slab+0x11d/0x190 [535202.788312] [] balance_pgdat+0x52a/0x6f0 [535202.788315] [] kswapd+0xea/0x1f0 [535202.788318] [] ? balance_pgdat+0x6f0/0x6f0 [535202.788321] [] kthread+0x8c/0xa0 [535202.788325] [] kernel_thread_helper+0x4/0x10 [535202.788328] [] ? flush_kthread_worker+0xa0/0xa0 [535202.788331] [] ? gs_change+0x13/0x13 [535202.788343] INFO: task bonnie++:28609 blocked for more than 120 seconds. [535202.793856] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [535202.805501] bonnie++ D ffffffff81805120 0 28609 28557 0x00000000 [535202.805506] ffff8800a95993d8 0000000000000086 ffff8802129c8000 0000000000000002 [535202.805510] ffff8800a9599fd8 ffff8800a9599fd8 ffff8800a9599fd8 0000000000012a40 [535202.805515] ffffffff81c0b020 ffff8802129c8000 ffff8800a95993c8 000000000000038d [535202.805519] Call Trace: [535202.805527] [] schedule+0x3f/0x60 [535202.805552] [] xlog_cil_force_lsn+0xf7/0x120 [xfs] [535202.805567] [] ? try_to_wake_up+0x200/0x200 [535202.805585] [] ? xfs_iunpin_wait+0x35/0xb0 [xfs] [535202.805602] [] _xfs_log_force_lsn+0x57/0x2e0 [xfs] [535202.805609] [] ? _raw_spin_lock+0xe/0x20 [535202.805615] [] ? add_partial+0x58/0x90 [535202.805632] [] ? xfs_iunpin_wait+0x35/0xb0 [xfs] [535202.805648] [] xfs_log_force_lsn+0x18/0x40 [xfs] [535202.805665] [] xfs_iunpin_nowait+0x47/0xb0 [xfs] [535202.805681] [] xfs_iunpin_wait+0x35/0xb0 [xfs] [535202.805687] [] ? try_wait_for_completion+0x4b/0x60 [535202.805707] [] xfs_reclaim_inode+0xb2/0x2a0 [xfs] [535202.805713] [] ? radix_tree_gang_lookup_tag.part.7+0x6c/0xf0 [535202.805732] [] xfs_reclaim_inodes_ag+0x20c/0x330 [xfs] [535202.805751] [] xfs_reclaim_inode_shrink+0xa3/0xc0 [xfs] [535202.805758] [] shrink_slab+0x11d/0x190 [535202.805763] [] do_try_to_free_pages+0x288/0x2e0 [535202.805782] [] ? xfs_buf_get+0x8f/0x1a0 [xfs] [535202.805787] [] try_to_free_pages+0xb4/0x180 [535202.805793] [] __alloc_pages_nodemask+0x4e0/0x800 [535202.805799] [] alloc_pages_current+0xa3/0x110 [535202.805805] [] allocate_slab+0xfd/0x160 [535202.805810] [] new_slab+0x30/0x160 [535202.805816] [] __slab_alloc+0x127/0x222 [535202.805822] [] ? d_alloc+0x27/0x1d0 [535202.805827] [] kmem_cache_alloc+0x112/0x120 [535202.805832] [] d_alloc+0x27/0x1d0 [535202.805838] [] d_alloc_and_lookup+0x2d/0x90 [535202.805844] [] ? d_lookup+0x35/0x60 [535202.805850] [] __lookup_hash.part.15+0x96/0xb0 [535202.805869] [] ? xfs_trans_free_item_desc+0x33/0x40 [xfs] [535202.805874] [] lookup_hash+0x80/0xe0 [535202.805878] [] do_last+0x26b/0x730 [535202.805883] [] path_openat+0xca/0x3f0 [535202.805901] [] ? xfs_free_eofblocks+0x1d0/0x240 [xfs] [535202.805919] [] ? xfs_free_eofblocks+0x1d0/0x240 [xfs] [535202.805925] [] do_filp_open+0x42/0xa0 [535202.805931] [] ? strncpy_from_user+0x31/0x40 [535202.805936] [] ? do_getname+0x10a/0x180 [535202.805942] [] ? _raw_spin_lock+0xe/0x20 [535202.805947] [] ? alloc_fd+0xf7/0x150 [535202.805953] [] do_sys_open+0xed/0x220 [535202.805958] [] ? fput+0x25/0x30 [535202.805964] [] sys_open+0x20/0x30 [535202.805970] [] system_call_fastpath+0x16/0x1b [535202.805975] INFO: task bonnie++:28664 blocked for more than 120 seconds. ... snip rest, I have more if you want it ... storage2 -------- This originally had all 24 disks in a software RAID0 array. Two of them (sdr, sdy) started giving read errors, so I built a new 22-disk RAID0 without those two. Then I ran two instances of bonnie++, on /disk/scratch/test and /disk/scratch/testb This machine has locked up in such a way that I cannot ssh to it, it just drops the connection: $ telnet storage2 22 Trying storage2... Connected to 192.168.5.71. Escape character is '^]'. Connection closed by foreign host. At the console I see a number of messages about blocked tasks (kworker, bonnie++, sshd, cron, mv, kswapd0). There is a login prompt, but if I type my username I get no password prompt. ... [520326.168622] INFO: task kswapd0:30 blocked for more than 120 seconds. [520326.177738] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [520326.197088] INFO: task kworder/3:2:4834 blocked for more than 120 seconds. [520326.207151] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. Ubuntu 11.10 storage2 tty1 storage2 login: brian << no response past this point >> storage3 -------- This has 24 disks in a software RAID0 array, and I was running two instances of bonnie++ against it. $ cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md127 : active raid0 sdn[12] sdu[18] sdx[22] sdl[9] sdy[23] sdd[2] sdt[17] sdi[7] sdj[8] sdr[19] sdg[5] sdw[21] sdf[4] sdv[20] sds[16] sdk[10] sde[3] sdh[6] sdp[14] sdo[13] sdc[1] sdb[0] sdq[15] sdm[11] 70326362112 blocks super 1.2 1024k chunks unused devices: SYMPTOM: Like storage1, I can ssh in but I find no I/O activity going on. I also see call tracebacks in dmesg, although this time the first one is kworker not bonnie++ ... [ 38.659687] eth3: no IPv6 routers present [ 41.738989] eth2: no IPv6 routers present [531843.502509] INFO: task kworker/2:1:29 blocked for more than 120 seconds. [531843.502876] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [531843.512298] kworker/2:1 D 0000000000000002 0 29 2 0x00000000 [531843.512304] ffff88020f493b80 0000000000000046 ffff880017213af8 ffff8800c93384c8 [531843.512309] ffff88020f493fd8 ffff88020f493fd8 ffff88020f493fd8 0000000000012a40 [531843.512313] ffff88020d80ae40 ffff88020f498000 0000000000000000 ffff88020e9c11e8 [531843.512318] Call Trace: [531843.512327] [] schedule+0x3f/0x60 [531843.512332] [] __mutex_lock_slowpath+0xd7/0x150 [531843.512338] [] mutex_lock+0x22/0x40 [531843.512371] [] xfs_reclaim_inodes_ag+0x28d/0x330 [xfs] [531843.512395] [] ? xfs_reclaim_inodes+0x20/0x20 [xfs] [531843.512416] [] xfs_reclaim_inodes+0x1d/0x20 [xfs] [531843.512436] [] xfs_reclaim_worker+0x22/0x40 [xfs] [531843.512443] [] process_one_work+0x11a/0x480 [531843.512449] [] worker_thread+0x165/0x370 [531843.512455] [] ? manage_workers.isra.30+0x130/0x130 [531843.512461] [] kthread+0x8c/0xa0 [531843.512468] [] kernel_thread_helper+0x4/0x10 [531843.512475] [] ? flush_kthread_worker+0xa0/0xa0 [531843.512481] [] ? gs_change+0x13/0x13 [531843.512485] INFO: task kswapd0:31 blocked for more than 120 seconds. [531843.517282] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [531843.526697] kswapd0 D ffffffff81805120 0 31 2 0x00000000 [531843.526701] ffff880212f018f0 0000000000000046 0000000000000000 0000000000000000 [531843.526706] ffff880212f01fd8 ffff880212f01fd8 ffff880212f01fd8 0000000000012a40 [531843.526710] ffff880212d2dc80 ffff88020f49ae40 ffff880212f018e0 0000000000004978 [531843.526714] Call Trace: [531843.526719] [] schedule+0x3f/0x60 [531843.526740] [] xlog_cil_force_lsn+0xf7/0x120 [xfs] [531843.526744] [] ? try_to_wake_up+0x200/0x200 [531843.526764] [] ? xfs_iunpin_wait+0x35/0xb0 [xfs] [531843.526783] [] _xfs_log_force_lsn+0x57/0x2e0 [xfs] [531843.526802] [] ? xfs_iunpin_wait+0x35/0xb0 [xfs] [531843.526819] [] xfs_log_force_lsn+0x18/0x40 [xfs] [531843.526837] [] xfs_iunpin_nowait+0x47/0xb0 [xfs] [531843.526854] [] xfs_iunpin_wait+0x35/0xb0 [xfs] [531843.526858] [] ? try_wait_for_completion+0x4b/0x60 [531843.526879] [] xfs_reclaim_inode+0xb2/0x2a0 [xfs] [531843.526884] [] ? radix_tree_gang_lookup_tag.part.7+0x6c/0xf0 [531843.526904] [] xfs_reclaim_inodes_ag+0x20c/0x330 [xfs] [531843.526910] [] ? _raw_spin_lock+0xe/0x20 [531843.526928] [] xfs_reclaim_inode_shrink+0xa3/0xc0 [xfs] [531843.526934] [] shrink_slab+0x11d/0x190 [531843.526937] [] balance_pgdat+0x52a/0x6f0 [531843.526941] [] kswapd+0xea/0x1f0 [531843.526944] [] ? balance_pgdat+0x6f0/0x6f0 [531843.526948] [] kthread+0x8c/0xa0 [531843.526951] [] kernel_thread_helper+0x4/0x10 [531843.526956] [] ? flush_kthread_worker+0xa0/0xa0 [531843.526959] [] ? gs_change+0x13/0x13 [531843.526963] INFO: task kworker/3:1:52 blocked for more than 120 seconds. [531843.532003] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [531843.541890] kworker/3:1 D 0000000000000003 0 52 2 0x00000000 [531843.541894] ffff88020f0b9450 0000000000000046 0000000000000000 0000000000000000 [531843.541899] ffff88020f0b9fd8 ffff88020f0b9fd8 ffff88020f0b9fd8 0000000000012a40 [531843.541903] ffff88020d808000 ffff88020f07ae40 ffff88020f0b9440 0000000000004978 [531843.541907] Call Trace: [531843.541912] [] schedule+0x3f/0x60 [531843.541931] [] xlog_cil_force_lsn+0xf7/0x120 [xfs] [531843.541938] [] ? try_to_wake_up+0x200/0x200 [531843.541959] [] ? xfs_iunpin_wait+0x35/0xb0 [xfs] [531843.541979] [] _xfs_log_force_lsn+0x57/0x2e0 [xfs] [531843.541999] [] ? xfs_bmapi+0x2ac/0x1150 [xfs] [531843.542019] [] ? xfs_iunpin_wait+0x35/0xb0 [xfs] [531843.542039] [] xfs_log_force_lsn+0x18/0x40 [xfs] [531843.542059] [] xfs_iunpin_nowait+0x47/0xb0 [xfs] [531843.542078] [] xfs_iunpin_wait+0x35/0xb0 [xfs] [531843.542084] [] ? try_wait_for_completion+0x4b/0x60 [531843.542107] [] xfs_reclaim_inode+0xb2/0x2a0 [xfs] [531843.542114] [] ? radix_tree_gang_lookup_tag.part.7+0x6c/0xf0 [531843.542136] [] xfs_reclaim_inodes_ag+0x20c/0x330 [xfs] [531843.542158] [] xfs_reclaim_inode_shrink+0xa3/0xc0 [xfs] [531843.542166] [] shrink_slab+0x11d/0x190 [531843.542171] [] do_try_to_free_pages+0x288/0x2e0 [531843.542178] [] try_to_free_pages+0xb4/0x180 [531843.542184] [] __alloc_pages_nodemask+0x4e0/0x800 [531843.542192] [] ? _raw_spin_lock+0xe/0x20 [531843.542199] [] alloc_pages_current+0xa3/0x110 [531843.542205] [] allocate_slab+0xfd/0x160 [531843.542211] [] new_slab+0x30/0x160 [531843.542218] [] __slab_alloc+0x127/0x222 [531843.542225] [] ? mempool_alloc_slab+0x15/0x20 [531843.542232] [] kmem_cache_alloc+0x112/0x120 [531843.542238] [] mempool_alloc_slab+0x15/0x20 [531843.542245] [] mempool_alloc+0x53/0x130 [531843.542251] [] ? add_wait_queue+0x60/0x60 [531843.542257] [] bio_alloc_bioset+0x3e/0xf0 [531843.542263] [] ? slot_store+0x2e0/0x2e0 [531843.542271] [] bio_alloc_mddev+0x27/0x50 [531843.542276] [] submit_flushes+0xa8/0x140[531843.542282] [] process_one_work+0x11a/0x480 [531843.542287] [] worker_thread+0x165/0x370 [531843.542293] [] ? manage_workers.isra.30+0x130/0x130 [531843.542299] [] kthread+0x8c/0xa0 [531843.542305] [] kernel_thread_helper+0x4/0x10 [531843.542312] [] ? flush_kthread_worker+0xa0/0xa0 [531843.542318] [] ? gs_change+0x13/0x13 [531843.542325] INFO: task xfsaild/md127:1146 blocked for more than 120 seconds. [531843.547840] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [531843.559458] xfsaild/md127 D 0000000000000003 0 1146 2 0x00000000 [531843.559461] ffff8802119bb700 0000000000000046 ffff8802119bb6f0 ffffffff81079c25 [531843.559463] ffff8802119bbfd8 ffff8802119bbfd8 ffff8802119bbfd8 0000000000012a40 [531843.559465] ffff88020f07ae40 ffff8802129d4560 ffff8802119bb6f0 ffff8802129d4560 [531843.559467] Call Trace: [531843.559469] [] ? __queue_work+0xe5/0x320 [531843.559471] [] schedule+0x3f/0x60 [531843.559473] [] md_flush_request+0x86/0x140 [531843.559475] [] ? try_to_wake_up+0x200/0x200 [531843.559481] [] raid0_make_request+0x119/0x1e0 [raid0] [531843.559484] [] ? blk_throtl_bio+0x1c0/0x510 [531843.559486] [] md_make_request+0xc6/0x200 [531843.559488] [] ? mempool_alloc_slab+0x15/0x20 [531843.559490] [] generic_make_request.part.51+0x24a/0x510 [531843.559492] [] generic_make_request+0x45/0x60 [531843.559494] [] submit_bio+0x87/0x110 [531843.559504] [] _xfs_buf_ioapply+0x162/0x1e0 [xfs] [531843.559514] [] ? xlog_bdstrat+0x2a/0x60 [xfs] [531843.559525] [] xfs_buf_iorequest+0x5e/0x100 [xfs] [531843.559535] [] xlog_bdstrat+0x2a/0x60 [xfs] [531843.559545] [] xlog_sync+0x1c9/0x3c0 [xfs] [531843.559554] [] xlog_state_release_iclog+0xa5/0xd0 [xfs] [531843.559563] [] xlog_write_copy_finish.isra.12+0x147/0x170 [xfs] [531843.559573] [] xlog_write+0x268/0x400 [xfs] [531843.559583] [] ? kmem_zone_alloc+0x67/0xe0 [xfs] [531843.559593] [] xlog_cil_push+0x20c/0x380 [xfs] [531843.559603] [] xlog_cil_force_lsn+0x10e/0x120 [xfs] [531843.559606] [] ? down_trylock+0x36/0x50 [531843.559617] [] ? xfs_buf_rele+0x51/0x130 [xfs] [531843.559627] [] ? _xfs_buf_find+0x56/0x280 [xfs] [531843.559637] [] _xfs_log_force+0x68/0x2a0 [xfs] [531843.559647] [] ? _xfs_buf_find+0x249/0x280 [xfs] [531843.559658] [] ? xfs_iunlock+0xe9/0x150 [xfs] [531843.559668] [] ? xfs_inode_item_pushbuf+0x87/0xe0 [xfs] [531843.559678] [] xfs_log_force+0x18/0x40 [xfs] [531843.559688] [] xfsaild_push+0x394/0x3a0 [xfs] [531843.559699] [] xfsaild+0x62/0xc0 [xfs] [531843.559708] [] ? xfsaild_push+0x3a0/0x3a0 [xfs] [531843.559711] [] kthread+0x8c/0xa0 [531843.559714] [] kernel_thread_helper+0x4/0x10 [531843.559717] [] ? flush_kthread_worker+0xa0/0xa0 [531843.559720] [] ? gs_change+0x13/0x13 [531843.559725] INFO: task bonnie++:15912 blocked for more than 120 seconds. ... etc Additional testing ------------------ All three machines are still stuck in this state, and I can leave them like this for the next few days if necessary if there are any tests or anything that you can suggest I do to the systems while they're like this. The only thing I could think of doing was a 'dd' to see if the underlying drives are working: root 23604 0.0 0.0 11064 1688 pts/4 D+ 19:04 0:00 dd if=/dev/md127 of=/dev/null bs=1024k count=1024 That process hung. So I tried again with smaller ones: strace dd if=/dev/md127 of=/dev/null bs=1024k count=1 #ok strace dd if=/dev/md127 of=/dev/null bs=1024k count=2 #ok strace dd if=/dev/md127 of=/dev/null bs=1024k count=3 #ok strace dd if=/dev/md127 of=/dev/null bs=1024k count=4 #ok strace dd if=/dev/md127 of=/dev/null bs=1024k count=5 #hung The strace of the last process was like this: open("/dev/md127", O_RDONLY) = 3 dup2(3, 0) = 0 close(3) = 0 lseek(0, 0, SEEK_CUR) = 0 open("/dev/null", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3 dup2(3, 1) = 1 close(3) = 0 mmap(NULL, 1060864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6d5a1c7000 read(0, "XFSB\0\0\20\0\0\0\0\4\27\361\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576) = 1048576 write(1, "XFSB\0\0\20\0\0\0\0\4\27\361\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576) = 1048576 read(0, "INA\355\2\1\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\0\0\0\0\0\0\0\0\4"..., 1048576) = 1048576 write(1, "INA\355\2\1\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\0\0\0\0\0\0\0\0\4"..., 1048576) = 1048576 read(0, "IN\201\244\2\2\0\0\0\0\3\350\0\0\3\350\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\16"..., 1048576) = 1048576 write(1, "IN\201\244\2\2\0\0\0\0\3\350\0\0\3\350\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\16"..., 1048576) = 1048576 read(0, "p1\17\343>\203)\321\272\1\357\0\0\0\272\252V\206\377~\300\203\376\351\3\366\35)Zh[\25"..., 1048576) = 1048576 write(1, "p1\17\343>\203)\321\272\1\357\0\0\0\272\252V\206\377~\300\203\376\351\3\366\35)Zh[\25"..., 1048576) = 1048576 read(0, That is, it read 4 chunks OK and hung reading the 5th. This seems suspiciously like a drive has locked up, but there are no dmesg errors for sd[a-z] to suggest disk problems, whereas when I had a real failed disk on storage2 I had messages like this (captured previously): [ 1217.995083] sd 5:0:0:0: [sdr] Unhandled sense code [ 1217.995085] sd 5:0:0:0: [sdr] Result: hostbyte=invalid driverbyte=DRIVER_SENSE [ 1217.995089] sd 5:0:0:0: [sdr] Sense Key : Medium Error [current] [ 1217.995095] sd 5:0:0:0: [sdr] Add. Sense: Unrecovered read error [ 1217.995099] sd 5:0:0:0: [sdr] CDB: Read(10): 28 00 30 00 05 80 00 00 10 00 [ 1217.995108] end_request: critical target error, dev sdr, sector 805307776 Furthermore, the following command which makes a small transfer to every disk runs fine: # for i in sd{b..y}; do echo $i; dd if=/dev/$i of=/dev/null count=1; done But this one gets stuck at sdk: # for i in sd{b..y}; do echo $i; dd if=/dev/$i of=/dev/null bs=1024k count=1; done Final point: the dd and bonnie++ processes can't be killed even with -9. So, these machines are very sick, and in roughly the same way. And the fact I can get simple dd's to lock up implies it's *not* anything to do with XFS, so my apologies if this is the wrong forum. Fortunately the problem appears fairly easy to reproduce. They are identical hardware, in terms of chassis, PSU, motherboard, BIOS version; and they are the same OS. I had already flashed the newest LSI firmware into the HBAs: $ sudo ./sas2flash -listall LSI Corporation SAS2 Flash Utility Version 13.00.00.00 (2012.02.17) Copyright (c) 2008-2012 LSI Corporation. All rights reserved Adapter Selected is a LSI SAS: SAS2116_1(B1) Num Ctlr FW Ver NVDATA x86-BIOS PCI Addr ---------------------------------------------------------------------------- 0 SAS2116_1(B1) 13.00.01.00 0c.00.00.01 07.25.00.00 00:02:00:00 1 SAS2008(B2) 13.00.01.00 0c.00.00.05 07.25.00.00 00:03:00:00 Finished Processing Commands Successfully. Exiting SAS2Flash. (Maybe "newest" wasn't a good idea - it was released Feb 17 2012) I could try ubuntu 12.04 with its newer kernel - I'd be surprised if the LSI driver in 11.10 was as broken as this appears to be, but it's not impossible. LSI themselves only seem to provide driver packages for RH4/SLES9 and RH5/SLES10 at http://www.lsi.com/channel/support/products/Pages/LSISAS9201-16i.aspx (and I guess trying CentOS 5 is another option) Any other suggestions (and of course interpretation of the kernel call tracebacks) would be much appreciated. Thanks, Brian. From sandeen@redhat.com Wed May 2 14:27:14 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q42JREfO074784 for ; Wed, 2 May 2012 14:27:14 -0500 X-ASG-Debug-ID: 1335986831-04cb6c24fd15e580001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id VIxcV9BfBSgsPaIe for ; Wed, 02 May 2012 12:27:12 -0700 (PDT) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 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 q42JRBDL030513 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 2 May 2012 15:27:12 -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 q42JRAK5011036 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO) for ; Wed, 2 May 2012 15:27:11 -0400 Message-ID: <4FA18A8E.1010800@redhat.com> Date: Wed, 02 May 2012 14:27:10 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:12.0) Gecko/20120420 Thunderbird/12.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] xfsprogs: comment & robustify blkmap_next_off() X-Enigmail-Version: 1.4.1 X-ASG-Orig-Subj: [PATCH] xfsprogs: comment & robustify blkmap_next_off() 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: 1335986832 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.95802 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- When looking at blkmap_next_off I was a little puzzled, so I started adding comments. Hopefully this helps. I also noticed that if you happen to pass in a "t" beyond the last map, it'll happily go read off the end of the array and return you something based on what it finds, seems better to catch that & return something obvious instead. Signed-off-by: Eric Sandeen --- diff --git a/repair/bmap.c b/repair/bmap.c index c43ca7f..85d66dc 100644 --- a/repair/bmap.c +++ b/repair/bmap.c @@ -206,8 +206,25 @@ blkmap_last_off( return ext->startoff + ext->blockcount; } -/* - * Return the next offset in a block map. +/** + * blkmap_next_off - Return next logical block offset in a block map. + * @blkmap: blockmap to use + * @o: current file logical block number + * @t: current extent index into blockmap (in/out) + * + * Given a logical block offset in a file, return the next mapped logical offset + * The map index "t" tracks the current extent number in the block map, and + * is updated automatically if the returned offset resides within the next + * mapped extent. + * + * If the blockmap contains no extents, or no more logical offsets are mapped, + * or the extent index exceeds the number of extents in the map, + * return NULLDFILOFF. + * + * If offset o is beyond extent index t, the first offset in the next extent + * after extent t will be returned. + * + * Intended to be called starting with offset 0, index 0, and iterated. */ xfs_dfiloff_t blkmap_next_off( @@ -223,10 +240,12 @@ blkmap_next_off( *t = 0; return blkmap->exts[0].startoff; } + if (*t >= blkmap->nexts) + return NULLDFILOFF; ext = blkmap->exts + *t; if (o < ext->startoff + ext->blockcount - 1) return o + 1; - if (*t >= blkmap->nexts - 1) + if (*t == blkmap->nexts - 1) return NULLDFILOFF; (*t)++; return ext[1].startoff; From sandeen@redhat.com Wed May 2 14:40:40 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q42JedQK076311 for ; Wed, 2 May 2012 14:40:40 -0500 X-ASG-Debug-ID: 1335987638-04bdf034ed16b6a0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id sxf63XV3AnZ9QfgH for ; Wed, 02 May 2012 12:40:38 -0700 (PDT) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q42Jeb9H000909 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 2 May 2012 15:40:38 -0400 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q42JeaW7001622 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO) for ; Wed, 2 May 2012 15:40:37 -0400 Message-ID: <4FA18DB4.6050901@redhat.com> Date: Wed, 02 May 2012 14:40:36 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:12.0) Gecko/20120420 Thunderbird/12.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] xfs_repair: fix process_leaf_node_dir2() for fragmented multiblock dirs X-Enigmail-Version: 1.4.1 X-ASG-Orig-Subj: [PATCH] xfs_repair: fix process_leaf_node_dir2() for fragmented multiblock dirs Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1335987638 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.95802 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Consider a filesystem with 4k fs blocks and 16k dir blocks, with extremely fragmented freespace so that a 2 block (32k) directory ends up with these extents, covering 2 multiblock dir blocks: index: phys len ----------------- 0 10 1 1 12 1 2 14 1 3 16 1 ----------------- 4 18 1 5 20 1 6 22 1 7 24 1 The loop in process_leaf_node_dir2() would obtain the first 4 just fine: ----------------- 0 10 1 1 12 1 2 14 1 3 16 1 ----------------- But then although it advanced ndbno (next block nr) by an amount relative to mp->m_dirfsbs, it left "t" (the starting extent number for the search) untouched. blkmap_next_off() is really designed to be iterated block by block, as far as I can tell, and if you pass in a block nr which is at an offset beyond that when extent "t" covers, it will simply return you the first logical block in extent "t". So, we advanced the requested block nr by 4, but left t untouched at 1, and at the top of the loop next time, we get this for the next 16k "dir block:" 1 12 1 2 14 1 3 16 1 ----------------- 4 18 1 This isn't properly aligned with the dir block; the magic for the next dir block is in phys block 18, not 12, so repair thinks things are corrupted and it gets worse from there. To fix this, just call blkmap_next_off() a few more times in a loop until we reach the last fs block in our dir block. Then the outer loop will find the next block after THAT, and process the next multiblock dir block properly. Signed-off-by: Eric Sandeen --- diff --git a/repair/dir2.c b/repair/dir2.c index f9562d7..7a614a8 100644 --- a/repair/dir2.c +++ b/repair/dir2.c @@ -2003,7 +2003,11 @@ process_leaf_node_dir2( ndbno = NULLDFILOFF; while ((dbno = blkmap_next_off(blkmap, ndbno, &t)) < mp->m_dirleafblk) { nex = blkmap_getn(blkmap, dbno, mp->m_dirblkfsbs, &bmp, &lbmp); - ndbno = dbno + mp->m_dirblkfsbs - 1; + /* Advance through map to last fs block in this dir block */ + ndbno = dbno; + while (ndbno < dbno + mp->m_dirblkfsbs - 1) { + ndbno = blkmap_next_off(blkmap, ndbno, &t); + } if (nex == 0) { do_warn( _("block %" PRIu64 " for directory inode %" PRIu64 " is missing\n"), From bpm@sgi.com Wed May 2 15:45:51 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-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 q42KjpjH082103 for ; Wed, 2 May 2012 15:45:51 -0500 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5297230407E; Wed, 2 May 2012 13:45:48 -0700 (PDT) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id E6AE8402073; Wed, 2 May 2012 15:49:03 -0500 (CDT) Date: Wed, 2 May 2012 15:49:03 -0500 From: Ben Myers To: Chandra Seetharaman Cc: xfs@oss.sgi.com Subject: Re: [RFC v5 PATCH 2/4] xfs: Add pquota fields where gquota is used. Message-ID: <20120502204903.GO16881@sgi.com> References: <20120314202623.17044.90045.sendpatchset@chandra-lucid.austin.ibm.com> <20120314202636.17044.11836.sendpatchset@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120314202636.17044.11836.sendpatchset@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) On Wed, Mar 14, 2012 at 03:26:36PM -0500, Chandra Seetharaman wrote: > >From 0ed09750a12c6265861415bdb431c14f8eb02437 Mon Sep 17 00:00:00 2001 > From: Chandra Seetharaman > Date: Wed, 14 Mar 2012 14:17:47 -0500 > Subject: [PATCH 2/4] Add project quota changes to all the places where group quota field > is used. > > No externally visible changed and no superblock changes, yet. Looks like this patch does a few things: * add separate project quota members into various structures * split project quota and group quotas so that instead of overriding the group quota members incore, the new project quota members are used instead * get rid of usage of the OQUOTA flag incore, in favor of separate group and project quota flags. * add a project dquot argument to various functions. > Signed-off-by: Chandra Seetharaman ... > @@ -1593,9 +1662,23 @@ xfs_qm_init_quotainos( > return XFS_ERROR(error); > } > } > + if (XFS_IS_PQUOTA_ON(mp) && pip == NULL) { > + error = xfs_qm_qino_alloc(mp, &pip, > + sbflags | XFS_SB_GQUOTINO, ^^^^ So... you're still using the group quota inode at this point. > + flags | XFS_QMOPT_PQUOTA); > + if (error) { > + if (uip) > + IRELE(uip); > + if (gip) > + IRELE(gip); > + > + return XFS_ERROR(error); > + } > + } ... > @@ -342,9 +354,12 @@ xfs_trans_apply_dquot_deltas( > > ASSERT(tp->t_dqinfo); > qa = tp->t_dqinfo->dqa_usrdquots; > - for (j = 0; j < 2; j++) { > + for (j = 0; j < 3; j++) { /* 0 - usr, 1 - grp, 2 - prj */ > if (qa[0].qt_dquot == NULL) { ^^^^^^^^^^^^^^^^^^^^^^ That really looks weird to me. Can you explain what is going on there? > - qa = tp->t_dqinfo->dqa_grpdquots; > + if (qa == tp->t_dqinfo->dqa_usrdquots) > + qa = tp->t_dqinfo->dqa_grpdquots; > + else > + qa = tp->t_dqinfo->dqa_prjdquots; > continue; From sekharan@us.ibm.com Wed May 2 17:52:03 2012 X-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_44 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 q42Mq2T1092908 for ; Wed, 2 May 2012 17:52:03 -0500 X-ASG-Debug-ID: 1335999118-04cb6c24fb169340001-NocioJ Received: from e39.co.us.ibm.com (e39.co.us.ibm.com [32.97.110.160]) by cuda.sgi.com with ESMTP id dh58UrgskNIPHcxn (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 02 May 2012 15:52:01 -0700 (PDT) X-Barracuda-Envelope-From: sekharan@us.ibm.com X-Barracuda-Apparent-Source-IP: 32.97.110.160 X-Barracuda-IPDD: Level2 [us.ibm.com/32.97.110.160] Received: from /spool/local by e39.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 2 May 2012 16:51:57 -0600 X-Barracuda-IPDD: Level2 [us.ibm.com/32.97.110.160] X-Barracuda-IPDD: Level2 [us.ibm.com/32.97.110.160] X-Barracuda-IPDD: Level2 [us.ibm.com/32.97.110.160] X-Barracuda-IPDD: Level2 [us.ibm.com/32.97.110.160] Received: from d03dlp02.boulder.ibm.com (9.17.202.178) by e39.co.us.ibm.com (192.168.1.139) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 2 May 2012 16:51:56 -0600 Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by d03dlp02.boulder.ibm.com (Postfix) with ESMTP id 6A7E93E4004C for ; Wed, 2 May 2012 16:51:55 -0600 (MDT) 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 q42MptEY177972 for ; Wed, 2 May 2012 16:51:55 -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 q42MptFY010852 for ; Wed, 2 May 2012 16:51:55 -0600 Received: from [9.53.40.164] (chandra-lucid.austin.ibm.com [9.53.40.164]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id q42MpsfC010801; Wed, 2 May 2012 16:51:55 -0600 Subject: Re: [RFC v5 PATCH 2/4] xfs: Add pquota fields where gquota is used. From: Chandra Seetharaman X-ASG-Orig-Subj: Re: [RFC v5 PATCH 2/4] xfs: Add pquota fields where gquota is used. Reply-To: sekharan@us.ibm.com To: Ben Myers Cc: xfs@oss.sgi.com In-Reply-To: <20120502204903.GO16881@sgi.com> References: <20120314202623.17044.90045.sendpatchset@chandra-lucid.austin.ibm.com> <20120314202636.17044.11836.sendpatchset@chandra-lucid.austin.ibm.com> <20120502204903.GO16881@sgi.com> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Wed, 02 May 2012 17:51:53 -0500 Message-ID: <1335999113.1118.10.camel@chandra-lucid.austin.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Content-Scanned: Fidelis XPS MAILER x-cbid: 12050222-4242-0000-0000-00000188FE5B X-Barracuda-Connect: e39.co.us.ibm.com[32.97.110.160] X-Barracuda-Start-Time: 1335999120 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com On Wed, 2012-05-02 at 15:49 -0500, Ben Myers wrote: > On Wed, Mar 14, 2012 at 03:26:36PM -0500, Chandra Seetharaman wrote: > > >From 0ed09750a12c6265861415bdb431c14f8eb02437 Mon Sep 17 00:00:00 2001 > > From: Chandra Seetharaman > > Date: Wed, 14 Mar 2012 14:17:47 -0500 > > Subject: [PATCH 2/4] Add project quota changes to all the places where group quota field > > is used. > > > > No externally visible changed and no superblock changes, yet. > > Looks like this patch does a few things: > * add separate project quota members into various structures > * split project quota and group quotas so that instead of overriding > the group quota members incore, the new project quota members are > used instead > * get rid of usage of the OQUOTA flag incore, in favor of separate group > and project quota flags. > * add a project dquot argument to various functions Yes. Nothing is external yet. I understand you want details on what changes have been made. If so, I can add them. > . > > > Signed-off-by: Chandra Seetharaman > > ... > > > @@ -1593,9 +1662,23 @@ xfs_qm_init_quotainos( > > return XFS_ERROR(error); > > } > > } > > + if (XFS_IS_PQUOTA_ON(mp) && pip == NULL) { > > + error = xfs_qm_qino_alloc(mp, &pip, > > + sbflags | XFS_SB_GQUOTINO, > ^^^^ > So... you're still using the group quota inode at this point. Yes, that is by design. There is no PQUOTINO with this patch. It is added in the next patch. Change all internal stuff in this patch so that the next patch which changes the superblock has very limited change (for easier read/review of the patch). > > > + flags | XFS_QMOPT_PQUOTA); > > + if (error) { > > + if (uip) > > + IRELE(uip); > > + if (gip) > > + IRELE(gip); > > + > > + return XFS_ERROR(error); > > + } > > + } > > ... > > > @@ -342,9 +354,12 @@ xfs_trans_apply_dquot_deltas( > > > > ASSERT(tp->t_dqinfo); > > qa = tp->t_dqinfo->dqa_usrdquots; > > - for (j = 0; j < 2; j++) { > > + for (j = 0; j < 3; j++) { /* 0 - usr, 1 - grp, 2 - prj */ > > if (qa[0].qt_dquot == NULL) { > ^^^^^^^^^^^^^^^^^^^^^^ > That really looks weird to me. Can you explain what is going on there? Just to make it clear, I didn't add it :). Per my understanding, it means is that there is no dquot structure of this type(user, group, project) in this transaction, so we just skip over it and move to the next type. > > > > - qa = tp->t_dqinfo->dqa_grpdquots; > > + if (qa == tp->t_dqinfo->dqa_usrdquots) > > + qa = tp->t_dqinfo->dqa_grpdquots; > > + else > > + qa = tp->t_dqinfo->dqa_prjdquots; > > continue; > From stan@hardwarefreak.com Thu May 3 07:50:02 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q43Co2tm164270 for ; Thu, 3 May 2012 07:50:02 -0500 X-ASG-Debug-ID: 1336049400-04cb6c24fb197bc0001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id tCrGFlgrCUktD878 for ; Thu, 03 May 2012 05:50:00 -0700 (PDT) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id F0A5F6C105 for ; Thu, 3 May 2012 07:49:59 -0500 (CDT) Message-ID: <4FA27EF8.6040002@hardwarefreak.com> Date: Thu, 03 May 2012 07:50:00 -0500 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20120428 Thunderbird/12.0.1 MIME-Version: 1.0 To: xfs@oss.sgi.com Subject: Re: Storage server, hung tasks and tracebacks References: <20120502184450.GA2557@nsrc.org> X-ASG-Orig-Subj: Re: Storage server, hung tasks and tracebacks In-Reply-To: <20120502184450.GA2557@nsrc.org> 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: 1336049400 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.95872 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 On 5/2/2012 1:44 PM, Brian Candler wrote: > I have a really wierd problem with storage. The one thing that I *can* see > is dmesg output giving messages about hung tasks and XFS call tracebacks, so > I'm posting here in the hope that someone can help me interpret them - even > if only to say "this definitely means that your disks are not responding" > would be very helpful. ... > Any other suggestions (and of course interpretation of the kernel call > tracebacks) would be much appreciated. Which mainboards are these Brian? Make/model? Make/model/count of all add in cards? Make/model of PSU? Make model of chassis? I'll sleuth around and see what I can find. Could be some obscure expansion card interaction. Could be undersized PSUs or lack of backplanes spread evenly across the 12v rails of a multi-rail PSU, etc, etc. -- Stan From bpm@sgi.com Thu May 3 12:12:53 2012 X-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 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 q43HCqfd184544 for ; Thu, 3 May 2012 12:12:52 -0500 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1C0E3AC002; Thu, 3 May 2012 10:12:49 -0700 (PDT) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 16655402073; Thu, 3 May 2012 12:16:09 -0500 (CDT) Date: Thu, 3 May 2012 12:16:09 -0500 From: Ben Myers To: Chandra Seetharaman Cc: xfs@oss.sgi.com Subject: Re: [RFC v5 PATCH 3/4] xfs: Add pquotaino to on-disk super block Message-ID: <20120503171608.GP16881@sgi.com> References: <20120314202623.17044.90045.sendpatchset@chandra-lucid.austin.ibm.com> <20120314202641.17044.32835.sendpatchset@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120314202641.17044.32835.sendpatchset@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) Chandra, On Wed, Mar 14, 2012 at 03:26:42PM -0500, Chandra Seetharaman wrote: > >From 9d32afb9cc284b2511951c45b47f6a73dfd0a7e1 Mon Sep 17 00:00:00 2001 > From: Chandra Seetharaman > Date: Wed, 14 Mar 2012 14:26:20 -0500 > Subject: [PATCH 3/4] Add a new field to the superblock to add support for seperate pquota > with a specific version. > > No change made yet to gather both project and group quota with quotactl. This note that you're going to do in the next patch is useful, but please also put a description of what you're doing in this patch. ;) > Signed-off-by: Chandra Seetharaman ... > @@ -1055,19 +1057,22 @@ xfs_qm_qino_alloc( > ASSERT((sbfields & (XFS_SB_VERSIONNUM | XFS_SB_UQUOTINO | > XFS_SB_GQUOTINO | XFS_SB_QFLAGS)) == > (XFS_SB_VERSIONNUM | XFS_SB_UQUOTINO | > - XFS_SB_GQUOTINO | XFS_SB_QFLAGS)); > + XFS_SB_GQUOTINO | XFS_SB_PQUOTINO | XFS_SB_QFLAGS)); > > xfs_sb_version_addquota(&mp->m_sb); > mp->m_sb.sb_uquotino = NULLFSINO; > mp->m_sb.sb_gquotino = NULLFSINO; > + mp->m_sb.sb_pquotino = NULLFSINO; > > /* qflags will get updated _after_ quotacheck */ > mp->m_sb.sb_qflags = 0; > } > if (flags & XFS_QMOPT_UQUOTA) > mp->m_sb.sb_uquotino = (*ip)->i_ino; > - else > + else if (flags & XFS_QMOPT_GQUOTA) > mp->m_sb.sb_gquotino = (*ip)->i_ino; > + else Maybe? { ASSERT(flags & XFS_QMOPT_PQUOTA); > + mp->m_sb.sb_pquotino = (*ip)->i_ino; } ... > @@ -439,10 +441,13 @@ xfs_qm_scall_getqstat( > out->qs_pad = 0; > out->qs_uquota.qfs_ino = mp->m_sb.sb_uquotino; > out->qs_gquota.qfs_ino = mp->m_sb.sb_gquotino; > + if (&out->qs_gquota != &out->qs_pquota) > + out->qs_pquota.qfs_ino = mp->m_sb.sb_pquotino; I was a little surprised not to get a warning for that test. ... > @@ -1317,6 +1311,15 @@ xfs_fs_fill_super( > if (error) > goto out_destroy_counters; > > + if ((mp->m_qflags & (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE)) && > + (mp->m_qflags & (XFS_PQUOTA_ACCT | XFS_PQUOTA_ACTIVE)) && > + !xfs_sb_version_has_no_oquota(&mp->m_sb)) { > + xfs_warn(mp, "Super block does not support " > + "project and group quota together"); > + error = EINVAL; > + goto out_free_sb; > + } > + You'd see this warning if you have an old superblock with the new flags. Maybe it is worth writing a test for that. ... > diff --git a/include/linux/dqblk_xfs.h b/include/linux/dqblk_xfs.h > index 8655280..f17e3bb 100644 > --- a/include/linux/dqblk_xfs.h > +++ b/include/linux/dqblk_xfs.h > @@ -155,6 +155,7 @@ typedef struct fs_quota_stat { > __s8 qs_pad; /* unused */ > fs_qfilestat_t qs_uquota; /* user quota storage information */ > fs_qfilestat_t qs_gquota; /* group quota storage information */ > +#define qs_pquota qs_gquota Cool. This #define goes away in the next patch. I've been over this and it is looking pretty good to me... I'm thinking about what basic xfstests would be good to have for this feature. Old sb_version with new flags, new sb_version with old flags, etc. I'll revisit that shortly. -Ben From tinguely@sgi.com Thu May 3 14:41:41 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-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 q43JffxZ195601 for ; Thu, 3 May 2012 14:41:41 -0500 Received: from [128.162.232.130] (eagdhcp-232-130.americas.sgi.com [128.162.232.130]) by relay2.corp.sgi.com (Postfix) with ESMTP id 35F63304064; Thu, 3 May 2012 12:41:37 -0700 (PDT) Message-ID: <4FA2DF72.10205@sgi.com> Date: Thu, 03 May 2012 14:41:38 -0500 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH 05/10] xfs: add discontiguous buffer support to transactions References: <1335249220-22274-1-git-send-email-david@fromorbit.com> <1335249220-22274-6-git-send-email-david@fromorbit.com> In-Reply-To: <1335249220-22274-6-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 04/24/12 01:33, Dave Chinner wrote: > From: Dave Chinner > > Now that the buffer cache supports discontiguous buffers, add > support to the transaction buffer interface for getting and reading > buffers. > > Note that this patch does not convert the buffer item logging to > support discontiguous buffers. That will be done as a separate > commit. > > Signed-off-by: Dave Chinner > --- Looks good. Reviewed-by: Mark Tinguely From tinguely@sgi.com Thu May 3 14:42:12 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-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 q43JgCAH195650 for ; Thu, 3 May 2012 14:42:12 -0500 Received: from [128.162.232.130] (eagdhcp-232-130.americas.sgi.com [128.162.232.130]) by relay2.corp.sgi.com (Postfix) with ESMTP id 20633304059; Thu, 3 May 2012 12:42:12 -0700 (PDT) Message-ID: <4FA2DF94.2050805@sgi.com> Date: Thu, 03 May 2012 14:42:12 -0500 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH 07/10] xfs: support discontiguous buffers in the xfs_buf_log_item References: <1335249220-22274-1-git-send-email-david@fromorbit.com> <1335249220-22274-8-git-send-email-david@fromorbit.com> In-Reply-To: <1335249220-22274-8-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 04/24/12 01:33, Dave Chinner wrote: > From: Dave Chinner > >> From the perspective of the log, we need to keep each segment of a > discontigous buffer in separate buffer format structures. This means log > recovery will recover all the changes on a per segment basis without > requiring any knowledge of the fact that it was logged from a > compound buffer. > > To do this, we need to be able to determine what buffer segment any > given offset into the compound buffer sits over. This enables us to > translate the dirty bitmap in the number of separate buffer format > structures required. > > We also need to be able to determine the number of bitmap elements > that a given buffer segment has, as this determines the size of the > buffer format structure. Hence we need to be able to determine the > both the start offset into the buffer and the length of a given > segment to be able to calculate this. > > With this information, we can preallocate, build and format the > correct log vector array for each segment in a compound buffer to > appear exactly the same as individually logged buffers in the log. > > Signed-off-by: Dave Chinner Looks good. Reviewed-by: Mark Tinguely From tinguely@sgi.com Thu May 3 14:43:24 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-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 q43JhOd1195787 for ; Thu, 3 May 2012 14:43:24 -0500 Received: from [128.162.232.130] (eagdhcp-232-130.americas.sgi.com [128.162.232.130]) by relay2.corp.sgi.com (Postfix) with ESMTP id D69B3304059; Thu, 3 May 2012 12:43:23 -0700 (PDT) Message-ID: <4FA2DFDB.2050903@sgi.com> Date: Thu, 03 May 2012 14:43:23 -0500 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH 08/10] xfs: use multiple irec xfs buf support in dabuf References: <1335249220-22274-1-git-send-email-david@fromorbit.com> <1335249220-22274-9-git-send-email-david@fromorbit.com> In-Reply-To: <1335249220-22274-9-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 04/24/12 01:33, Dave Chinner wrote: > From: Dave Chinner > > Signed-off-by: Dave Chinner > --- Nice feature. Looks good. Reviewed-by: Mark Tinguely From bpm@sgi.com Thu May 3 15:01:40 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-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 q43K1eLn196791 for ; Thu, 3 May 2012 15:01:40 -0500 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id 52ECF304064; Thu, 3 May 2012 13:01:36 -0700 (PDT) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 2FC71402071; Thu, 3 May 2012 15:04:57 -0500 (CDT) Date: Thu, 3 May 2012 15:04:57 -0500 From: Ben Myers To: Chandra Seetharaman Cc: xfs@oss.sgi.com Subject: Re: [PATCH 1/4] xfsprogs: Remove incore use of XFS_OQUOTA_ENFD and XFS_OQUOTA_CHKD Message-ID: <20120503200457.GQ16881@sgi.com> References: <20120123173243.31735.37262.sendpatchset@chandra-lucid.austin.ibm.com> <20120123173249.31735.17660.sendpatchset@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120123173249.31735.17660.sendpatchset@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) On Mon, Jan 23, 2012 at 11:32:49AM -0600, Chandra Seetharaman wrote: > >From ba28fc49821079a734f24af05671155f6b32b20c Mon Sep 17 00:00:00 2001 > From: Chandra Seetharaman > Date: Tue, 13 Dec 2011 15:55:34 -0600 > Subject: [PATCH 1/4] Remove incore use of XFS_OQUOTA_ENFD and XFS_OQUOTA_CHKD. Instead, > start using XFS_GQUOTA_.* XFS_PQUOTA_.* counterparts. > > No changes is made to the on-disk version of the superblock yet. On-disk are The > copy still uses XFS_OQUOTA_ENFD and XFS_OQUOTA_CHKD. > > Signed-off-by: Chandra Seetharaman > --- > db/check.c | 8 ++++---- > include/xfs_quota.h | 47 +++++++++++++++++++++++++++++++++-------------- > include/xfs_sb.h | 17 ++++++++++++++++- > repair/versions.c | 18 ++++-------------- > repair/xfs_repair.c | 4 ++-- > 5 files changed, 59 insertions(+), 35 deletions(-) > > diff --git a/db/check.c b/db/check.c > index e601e0a..f00fae7 100644 > --- a/db/check.c > +++ b/db/check.c > @@ -2883,11 +2883,11 @@ process_inode( > process_quota(IS_USER_QUOTA, id, blkmap); > else if (id->ino == mp->m_sb.sb_gquotino && > (mp->m_sb.sb_qflags & XFS_GQUOTA_ACCT) && > - (mp->m_sb.sb_qflags & XFS_OQUOTA_CHKD)) > + (mp->m_sb.sb_qflags & XFS_GQUOTA_CHKD)) > process_quota(IS_GROUP_QUOTA, id, blkmap); > else if (id->ino == mp->m_sb.sb_gquotino && > (mp->m_sb.sb_qflags & XFS_PQUOTA_ACCT) && > - (mp->m_sb.sb_qflags & XFS_OQUOTA_CHKD)) > + (mp->m_sb.sb_qflags & XFS_PQUOTA_CHKD)) > process_quota(IS_PROJECT_QUOTA, id, blkmap); > } > if (blkmap) > @@ -3896,11 +3896,11 @@ quota_init(void) > qgdo = mp->m_sb.sb_gquotino != 0 && > mp->m_sb.sb_gquotino != NULLFSINO && > (mp->m_sb.sb_qflags & XFS_GQUOTA_ACCT) && > - (mp->m_sb.sb_qflags & XFS_OQUOTA_CHKD); > + (mp->m_sb.sb_qflags & XFS_GQUOTA_CHKD); > qpdo = mp->m_sb.sb_gquotino != 0 && > mp->m_sb.sb_gquotino != NULLFSINO && > (mp->m_sb.sb_qflags & XFS_PQUOTA_ACCT) && > - (mp->m_sb.sb_qflags & XFS_OQUOTA_CHKD); > + (mp->m_sb.sb_qflags & XFS_PQUOTA_CHKD); > if (qudo) > qudata = xcalloc(QDATA_HASH_SIZE, sizeof(qdata_t *)); > if (qgdo) > diff --git a/include/xfs_quota.h b/include/xfs_quota.h > index 5d1f57d..aa583a3 100644 > --- a/include/xfs_quota.h > +++ b/include/xfs_quota.h > @@ -154,19 +154,42 @@ typedef struct xfs_qoff_logformat { > #define XFS_GQUOTA_ACCT 0x0040 /* group quota accounting ON */ > > /* > + * Start differentiating group quota and project quota in-core > + * using distinct flags, instead of using the combined OQUOTA flags. > + * > + * Conversion to and from the combined OQUOTA flag (if necessary) > + * is done only in xfs_sb_{to,from}_disk() > + */ > +#define XFS_GQUOTA_ENFD 0x0080 /* group quota limits enforced */ > +#define XFS_GQUOTA_CHKD 0x0100 /* quotacheck run on group quotas */ > +#define XFS_PQUOTA_ENFD 0x0200 /* project quota limits enforced */ > +#define XFS_PQUOTA_CHKD 0x0400 /* quotacheck run on project quotas */ > + > +#define XFS_VALID_QFLAGS(sbp) (xfs_sb_version_hasnooquota(sbp) ? \ > + (XFS_UQUOTA_ACCT|XFS_UQUOTA_ENFD|XFS_UQUOTA_CHKD| \ > + XFS_GQUOTA_ACCT|XFS_GQUOTA_ENFD|XFS_GQUOTA_CHKD| \ > + XFS_PQUOTA_ACCT|XFS_PQUOTA_ENFD|XFS_PQUOTA_CHKD) : \ > + (XFS_UQUOTA_ACCT|XFS_UQUOTA_ENFD|XFS_UQUOTA_CHKD| \ > + XFS_GQUOTA_ACCT|XFS_OQUOTA_ENFD|XFS_OQUOTA_CHKD| \ > + XFS_PQUOTA_ACCT)) > + > +/* > * Quota Accounting/Enforcement flags > */ > #define XFS_ALL_QUOTA_ACCT \ > (XFS_UQUOTA_ACCT | XFS_GQUOTA_ACCT | XFS_PQUOTA_ACCT) > -#define XFS_ALL_QUOTA_ENFD (XFS_UQUOTA_ENFD | XFS_OQUOTA_ENFD) > -#define XFS_ALL_QUOTA_CHKD (XFS_UQUOTA_CHKD | XFS_OQUOTA_CHKD) > +#define XFS_ALL_QUOTA_ENFD \ > + (XFS_UQUOTA_ENFD | XFS_GQUOTA_ENFD | XFS_PQUOTA_ENFD) > +#define XFS_ALL_QUOTA_CHKD \ > + (XFS_UQUOTA_CHKD | XFS_GQUOTA_CHKD | XFS_PQUOTA_CHKD) > > #define XFS_IS_QUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_ALL_QUOTA_ACCT) > #define XFS_IS_UQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_UQUOTA_ACCT) > #define XFS_IS_PQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_PQUOTA_ACCT) > #define XFS_IS_GQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_GQUOTA_ACCT) > #define XFS_IS_UQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_UQUOTA_ENFD) > -#define XFS_IS_OQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_OQUOTA_ENFD) > +#define XFS_IS_GQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_GQUOTA_ENFD) > +#define XFS_IS_PQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_PQUOTA_ENFD) > > /* > * Incore only flags for quotaoff - these bits get cleared when quota(s) > @@ -184,8 +207,6 @@ typedef struct xfs_qoff_logformat { > #define XFS_IS_QUOTA_ON(mp) ((mp)->m_qflags & (XFS_UQUOTA_ACTIVE | \ > XFS_GQUOTA_ACTIVE | \ > XFS_PQUOTA_ACTIVE)) > -#define XFS_IS_OQUOTA_ON(mp) ((mp)->m_qflags & (XFS_GQUOTA_ACTIVE | \ > - XFS_PQUOTA_ACTIVE)) > #define XFS_IS_UQUOTA_ON(mp) ((mp)->m_qflags & XFS_UQUOTA_ACTIVE) > #define XFS_IS_GQUOTA_ON(mp) ((mp)->m_qflags & XFS_GQUOTA_ACTIVE) > #define XFS_IS_PQUOTA_ON(mp) ((mp)->m_qflags & XFS_PQUOTA_ACTIVE) > @@ -260,25 +281,23 @@ typedef struct xfs_qoff_logformat { > ((XFS_IS_UQUOTA_ON(mp) && \ > (mp->m_sb.sb_qflags & XFS_UQUOTA_CHKD) == 0) || \ > (XFS_IS_GQUOTA_ON(mp) && \ > - ((mp->m_sb.sb_qflags & XFS_OQUOTA_CHKD) == 0 || \ > - (mp->m_sb.sb_qflags & XFS_PQUOTA_ACCT))) || \ > + (mp->m_sb.sb_qflags & XFS_GQUOTA_CHKD) == 0) || \ > (XFS_IS_PQUOTA_ON(mp) && \ > - ((mp->m_sb.sb_qflags & XFS_OQUOTA_CHKD) == 0 || \ > - (mp->m_sb.sb_qflags & XFS_GQUOTA_ACCT)))) > + (mp->m_sb.sb_qflags & XFS_PQUOTA_CHKD) == 0)) > > #define XFS_MOUNT_QUOTA_SET1 (XFS_UQUOTA_ACCT|XFS_UQUOTA_ENFD|\ > XFS_UQUOTA_CHKD|XFS_PQUOTA_ACCT|\ > - XFS_OQUOTA_ENFD|XFS_OQUOTA_CHKD) > + XFS_PQUOTA_ENFD|XFS_PQUOTA_CHKD) > > #define XFS_MOUNT_QUOTA_SET2 (XFS_UQUOTA_ACCT|XFS_UQUOTA_ENFD|\ > XFS_UQUOTA_CHKD|XFS_GQUOTA_ACCT|\ > - XFS_OQUOTA_ENFD|XFS_OQUOTA_CHKD) > + XFS_GQUOTA_ENFD|XFS_GQUOTA_CHKD) > > #define XFS_MOUNT_QUOTA_ALL (XFS_UQUOTA_ACCT|XFS_UQUOTA_ENFD|\ > XFS_UQUOTA_CHKD|XFS_PQUOTA_ACCT|\ > - XFS_OQUOTA_ENFD|XFS_OQUOTA_CHKD|\ > - XFS_GQUOTA_ACCT) > - > + XFS_PQUOTA_ENFD|XFS_PQUOTA_CHKD|\ > + XFS_GQUOTA_ACCT|XFS_GQUOTA_ENFD|\ > + XFS_GQUOTA_CHKD) > > /* > * The structure kept inside the xfs_trans_t keep track of dquot changes > diff --git a/include/xfs_sb.h b/include/xfs_sb.h > index 5dcc2d7..69c6822 100644 > --- a/include/xfs_sb.h > +++ b/include/xfs_sb.h > @@ -81,11 +81,13 @@ struct xfs_mount; > #define XFS_SB_VERSION2_ATTR2BIT 0x00000008 /* Inline attr rework */ > #define XFS_SB_VERSION2_PARENTBIT 0x00000010 /* parent pointers */ > #define XFS_SB_VERSION2_PROJID32BIT 0x00000080 /* 32 bit project id */ > +#define XFS_SB_VERSION2_NO_OQUOTA 0x00000100 /* sep prj quota inode */ > > #define XFS_SB_VERSION2_OKREALFBITS \ > (XFS_SB_VERSION2_LAZYSBCOUNTBIT | \ > XFS_SB_VERSION2_ATTR2BIT | \ > - XFS_SB_VERSION2_PROJID32BIT) > + XFS_SB_VERSION2_PROJID32BIT | \ > + XFS_SB_VERSION2_NO_OQUOTA) > #define XFS_SB_VERSION2_OKSASHFBITS \ > (0) > #define XFS_SB_VERSION2_OKREALBITS \ > @@ -510,6 +512,19 @@ static inline void xfs_sb_version_addprojid32bit(xfs_sb_t *sbp) > sbp->sb_bad_features2 |= XFS_SB_VERSION2_PROJID32BIT; > } > > +static inline int xfs_sb_version_hasnooquota(xfs_sb_t *sbp) IIRC, in the kernel you used xfs_sb_version_has_no_oquota. I think you should use the same name in xfsprogs. > +{ > + return xfs_sb_version_hasmorebits(sbp) && > + (sbp->sb_features2 & XFS_SB_VERSION2_NO_OQUOTA); > +} > + > +static inline void xfs_sb_version_addnooquota(xfs_sb_t *sbp) > +{ > + sbp->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT; > + sbp->sb_features2 |= XFS_SB_VERSION2_PROJID32BIT; I'm not sure about this. I don't think addnooquota necessarily implies a 32 bit project id. What say you? Else, the patch looks pretty good. -Ben From sekharan@us.ibm.com Thu May 3 15:17:59 2012 X-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 q43KHxIr197888 for ; Thu, 3 May 2012 15:17:59 -0500 X-ASG-Debug-ID: 1336076277-04cb6c24fa1b5950001-NocioJ Received: from e35.co.us.ibm.com (e35.co.us.ibm.com [32.97.110.153]) by cuda.sgi.com with ESMTP id rFPsBM4cRaFmkuz9 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 03 May 2012 13:17:58 -0700 (PDT) X-Barracuda-Envelope-From: sekharan@us.ibm.com X-Barracuda-Apparent-Source-IP: 32.97.110.153 X-Barracuda-IPDD: Level2 [us.ibm.com/32.97.110.153] Received: from /spool/local by e35.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 3 May 2012 14:17:55 -0600 X-Barracuda-IPDD: Level2 [us.ibm.com/32.97.110.153] X-Barracuda-IPDD: Level2 [us.ibm.com/32.97.110.153] X-Barracuda-IPDD: Level2 [us.ibm.com/32.97.110.153] X-Barracuda-IPDD: Level2 [us.ibm.com/32.97.110.153] Received: from d03dlp03.boulder.ibm.com (9.17.202.179) by e35.co.us.ibm.com (192.168.1.135) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Thu, 3 May 2012 14:17:02 -0600 Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by d03dlp03.boulder.ibm.com (Postfix) with ESMTP id 2218E19D804A for ; Thu, 3 May 2012 14:16:50 -0600 (MDT) 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 q43KGQ1V063162 for ; Thu, 3 May 2012 14:16:33 -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 q43KGNvc000317 for ; Thu, 3 May 2012 14:16:23 -0600 Received: from [9.53.40.164] (chandra-lucid.austin.ibm.com [9.53.40.164]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id q43KGNCf032759; Thu, 3 May 2012 14:16:23 -0600 Subject: Re: [RFC v5 PATCH 3/4] xfs: Add pquotaino to on-disk super block From: Chandra Seetharaman X-ASG-Orig-Subj: Re: [RFC v5 PATCH 3/4] xfs: Add pquotaino to on-disk super block Reply-To: sekharan@us.ibm.com To: Ben Myers Cc: xfs@oss.sgi.com In-Reply-To: <20120503171608.GP16881@sgi.com> References: <20120314202623.17044.90045.sendpatchset@chandra-lucid.austin.ibm.com> <20120314202641.17044.32835.sendpatchset@chandra-lucid.austin.ibm.com> <20120503171608.GP16881@sgi.com> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Thu, 03 May 2012 15:16:22 -0500 Message-ID: <1336076182.1118.73.camel@chandra-lucid.austin.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Content-Scanned: Fidelis XPS MAILER x-cbid: 12050320-6148-0000-0000-0000058A4B94 X-Barracuda-Connect: e35.co.us.ibm.com[32.97.110.153] X-Barracuda-Start-Time: 1336076277 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com On Thu, 2012-05-03 at 12:16 -0500, Ben Myers wrote: > Chandra, > > On Wed, Mar 14, 2012 at 03:26:42PM -0500, Chandra Seetharaman wrote: > > >From 9d32afb9cc284b2511951c45b47f6a73dfd0a7e1 Mon Sep 17 00:00:00 2001 > > From: Chandra Seetharaman > > Date: Wed, 14 Mar 2012 14:26:20 -0500 > > Subject: [PATCH 3/4] Add a new field to the superblock to add support for seperate pquota > > with a specific version. > > > > No change made yet to gather both project and group quota with quotactl. > > This note that you're going to do in the next patch is useful, but please also > put a description of what you're doing in this patch. ;) > You want more info than the line above it ? (Add a new field to the superblock to add support for seperate pquota with a specific version.) I can do it. > > Signed-off-by: Chandra Seetharaman > > ... > > > @@ -1055,19 +1057,22 @@ xfs_qm_qino_alloc( > > ASSERT((sbfields & (XFS_SB_VERSIONNUM | XFS_SB_UQUOTINO | > > XFS_SB_GQUOTINO | XFS_SB_QFLAGS)) == > > (XFS_SB_VERSIONNUM | XFS_SB_UQUOTINO | > > - XFS_SB_GQUOTINO | XFS_SB_QFLAGS)); > > + XFS_SB_GQUOTINO | XFS_SB_PQUOTINO | XFS_SB_QFLAGS)); > > > > xfs_sb_version_addquota(&mp->m_sb); > > mp->m_sb.sb_uquotino = NULLFSINO; > > mp->m_sb.sb_gquotino = NULLFSINO; > > + mp->m_sb.sb_pquotino = NULLFSINO; > > > > /* qflags will get updated _after_ quotacheck */ > > mp->m_sb.sb_qflags = 0; > > } > > if (flags & XFS_QMOPT_UQUOTA) > > mp->m_sb.sb_uquotino = (*ip)->i_ino; > > - else > > + else if (flags & XFS_QMOPT_GQUOTA) > > mp->m_sb.sb_gquotino = (*ip)->i_ino; > > + else > > Maybe? > { > ASSERT(flags & XFS_QMOPT_PQUOTA); > > + mp->m_sb.sb_pquotino = (*ip)->i_ino; will do. > } > ... > > > @@ -439,10 +441,13 @@ xfs_qm_scall_getqstat( > > out->qs_pad = 0; > > out->qs_uquota.qfs_ino = mp->m_sb.sb_uquotino; > > out->qs_gquota.qfs_ino = mp->m_sb.sb_gquotino; > > + if (&out->qs_gquota != &out->qs_pquota) > > + out->qs_pquota.qfs_ino = mp->m_sb.sb_pquotino; > > I was a little surprised not to get a warning for that test. Yeah, compiler is happy with it :) > > ... > > > @@ -1317,6 +1311,15 @@ xfs_fs_fill_super( > > if (error) > > goto out_destroy_counters; > > > > + if ((mp->m_qflags & (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE)) && > > + (mp->m_qflags & (XFS_PQUOTA_ACCT | XFS_PQUOTA_ACTIVE)) && > > + !xfs_sb_version_has_no_oquota(&mp->m_sb)) { > > + xfs_warn(mp, "Super block does not support " > > + "project and group quota together"); > > + error = EINVAL; > > + goto out_free_sb; > > + } > > + > > You'd see this warning if you have an old superblock with the new flags. Maybe > it is worth writing a test for that. You mean old superblock with this code and -opquota,gquota on mount, correct ? Then yes, I can add that. > > ... > > > diff --git a/include/linux/dqblk_xfs.h b/include/linux/dqblk_xfs.h > > index 8655280..f17e3bb 100644 > > --- a/include/linux/dqblk_xfs.h > > +++ b/include/linux/dqblk_xfs.h > > @@ -155,6 +155,7 @@ typedef struct fs_quota_stat { > > __s8 qs_pad; /* unused */ > > fs_qfilestat_t qs_uquota; /* user quota storage information */ > > fs_qfilestat_t qs_gquota; /* group quota storage information */ > > +#define qs_pquota qs_gquota > > Cool. This #define goes away in the next patch. > > I've been over this and it is looking pretty good to me... I'm thinking about > what basic xfstests would be good to have for this feature. > > Old sb_version with new flags, > new sb_version with old flags, etc. I am little confused about what you mean by flags here. From the user point of view, they can either use pquota and gquota together or not. With old version using them together would fail with one message "cannot mount with both project and group quota" with new code it will fail with a different message "Super block does not support project and group quota together" > > I'll revisit that shortly. > > -Ben > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From bfields@fieldses.org Thu May 3 15:22:58 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q43KMv77198236 for ; Thu, 3 May 2012 15:22:57 -0500 X-ASG-Debug-ID: 1336076575-04bdf034f01c5960001-NocioJ Received: from fieldses.org (fieldses.org [174.143.236.118]) by cuda.sgi.com with ESMTP id VDpRVbA5cuAyRkoy (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 03 May 2012 13:22:56 -0700 (PDT) X-Barracuda-Envelope-From: bfields@fieldses.org X-Barracuda-Apparent-Source-IP: 174.143.236.118 Received: from bfields by fieldses.org with local (Exim 4.72) (envelope-from ) id 1SQ2Y5-00055Z-RT; Thu, 03 May 2012 16:22:49 -0400 Date: Thu, 3 May 2012 16:22:49 -0400 From: "J. Bruce Fields" To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com Subject: Re: detecting case-insensitivity Message-ID: <20120503202249.GB19237@fieldses.org> X-ASG-Orig-Subj: Re: detecting case-insensitivity References: <20120407140029.GA24090@fieldses.org> <20120411200335.GD28816@infradead.org> <20120411203735.GB31706@fieldses.org> <20120430212649.GB22323@fieldses.org> <20120430230105.GL7015@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120430230105.GL7015@dastard> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: fieldses.org[174.143.236.118] X-Barracuda-Start-Time: 1336076576 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.95900 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, May 01, 2012 at 09:01:05AM +1000, Dave Chinner wrote: > On Mon, Apr 30, 2012 at 05:26:49PM -0400, J. Bruce Fields wrote: > > On Wed, Apr 11, 2012 at 04:37:35PM -0400, J. Bruce Fields wrote: > > > On Wed, Apr 11, 2012 at 04:03:35PM -0400, Christoph Hellwig wrote: > > > > Can you add a new s_feature_flags instead of s_flags which is shared > > > > with the mount user ABI? MS_I_VERSION should also move there. > > > > > > I was wondering about that. Yes, that makes a lot more sense, I'll work > > > on it. > > > > Just something like this? > > ..... > > > #define S_SYNC 1 /* Writes are synced at once */ > > @@ -268,7 +271,7 @@ struct inodes_stat_t { > > ((inode)->i_flags & (S_SYNC|S_DIRSYNC))) > > #define IS_MANDLOCK(inode) __IS_FLG(inode, MS_MANDLOCK) > > #define IS_NOATIME(inode) __IS_FLG(inode, MS_RDONLY|MS_NOATIME) > > -#define IS_I_VERSION(inode) __IS_FLG(inode, MS_I_VERSION) > > +#define IS_I_VERSION(inode) ((inode)->i_sb->s_flags & SF_I_VERSION) > > (inode)->i_sb->s_feature_flags? Whoops, thanks. > > #define IS_NOQUOTA(inode) ((inode)->i_flags & S_NOQUOTA) > > #define IS_APPEND(inode) ((inode)->i_flags & S_APPEND) > > @@ -1428,7 +1431,8 @@ struct super_block { > > const struct dquot_operations *dq_op; > > const struct quotactl_ops *s_qcop; > > const struct export_operations *s_export_op; > > - unsigned long s_flags; > > + unsigned long s_flags; /* mount flags */ > > + unsigned int s_feature_flags; > > why not an unsigned long like s_flags? OK. (Why does it matter? I figured we can always extend it later.) --b. From sekharan@us.ibm.com Thu May 3 15:26:43 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q43KQgt1198510 for ; Thu, 3 May 2012 15:26:42 -0500 X-ASG-Debug-ID: 1336076801-04cb6c24fa1b5f00001-NocioJ Received: from e32.co.us.ibm.com (e32.co.us.ibm.com [32.97.110.150]) by cuda.sgi.com with ESMTP id p5PiXR5bbXesP2MB (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 03 May 2012 13:26:42 -0700 (PDT) X-Barracuda-Envelope-From: sekharan@us.ibm.com X-Barracuda-Apparent-Source-IP: 32.97.110.150 X-Barracuda-IPDD: Level2 [us.ibm.com/32.97.110.150] Received: from /spool/local by e32.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 3 May 2012 14:26:41 -0600 X-Barracuda-IPDD: Level2 [us.ibm.com/32.97.110.150] X-Barracuda-IPDD: Level2 [us.ibm.com/32.97.110.150] X-Barracuda-IPDD: Level2 [us.ibm.com/32.97.110.150] X-Barracuda-IPDD: Level2 [us.ibm.com/32.97.110.150] Received: from d03dlp03.boulder.ibm.com (9.17.202.179) by e32.co.us.ibm.com (192.168.1.132) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Thu, 3 May 2012 14:26:39 -0600 Received: from d03relay05.boulder.ibm.com (d03relay05.boulder.ibm.com [9.17.195.107]) by d03dlp03.boulder.ibm.com (Postfix) with ESMTP id 4145619D804E for ; Thu, 3 May 2012 14:26:28 -0600 (MDT) 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 q43KQKvj205308 for ; Thu, 3 May 2012 14:26:28 -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 q43KQI7D025907 for ; Thu, 3 May 2012 14:26:18 -0600 Received: from [9.53.40.164] (chandra-lucid.austin.ibm.com [9.53.40.164]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id q43KQIAV025818; Thu, 3 May 2012 14:26:18 -0600 Subject: Re: [PATCH 1/4] xfsprogs: Remove incore use of XFS_OQUOTA_ENFD and XFS_OQUOTA_CHKD From: Chandra Seetharaman X-ASG-Orig-Subj: Re: [PATCH 1/4] xfsprogs: Remove incore use of XFS_OQUOTA_ENFD and XFS_OQUOTA_CHKD Reply-To: sekharan@us.ibm.com To: Ben Myers Cc: xfs@oss.sgi.com In-Reply-To: <20120503200457.GQ16881@sgi.com> References: <20120123173243.31735.37262.sendpatchset@chandra-lucid.austin.ibm.com> <20120123173249.31735.17660.sendpatchset@chandra-lucid.austin.ibm.com> <20120503200457.GQ16881@sgi.com> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Thu, 03 May 2012 15:26:17 -0500 Message-ID: <1336076777.1118.80.camel@chandra-lucid.austin.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-Content-Scanned: Fidelis XPS MAILER x-cbid: 12050320-3270-0000-0000-0000060C5FE3 X-Barracuda-Connect: e32.co.us.ibm.com[32.97.110.150] X-Barracuda-Start-Time: 1336076802 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com On Thu, 2012-05-03 at 15:04 -0500, Ben Myers wrote: > On Mon, Jan 23, 2012 at 11:32:49AM -0600, Chandra Seetharaman wrote: > > >From ba28fc49821079a734f24af05671155f6b32b20c Mon Sep 17 00:00:00 2001 > > From: Chandra Seetharaman > > Date: Tue, 13 Dec 2011 15:55:34 -0600 > > Subject: [PATCH 1/4] Remove incore use of XFS_OQUOTA_ENFD and XFS_OQUOTA_CHKD. Instead, > > start using XFS_GQUOTA_.* XFS_PQUOTA_.* counterparts. > > > > No changes is made to the on-disk version of the superblock yet. On-disk > are The > will fix > > copy still uses XFS_OQUOTA_ENFD and XFS_OQUOTA_CHKD. > < > > > > +static inline int xfs_sb_version_hasnooquota(xfs_sb_t *sbp) > > IIRC, in the kernel you used xfs_sb_version_has_no_oquota. I think you should > use the same name in xfsprogs. yes, will fix. > > > +{ > > + return xfs_sb_version_hasmorebits(sbp) && > > + (sbp->sb_features2 & XFS_SB_VERSION2_NO_OQUOTA); > > +} > > + > > +static inline void xfs_sb_version_addnooquota(xfs_sb_t *sbp) > > +{ > > + sbp->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT; > > + sbp->sb_features2 |= XFS_SB_VERSION2_PROJID32BIT; > > I'm not sure about this. I don't think addnooquota necessarily implies a 32 > bit project id. What say you? It is cut-n-paste issue, it should be XFS_SB_VERSION2_NO_OQUOTA will fix it. > > Else, the patch looks pretty good. > > -Ben > From b.candler@pobox.com Thu May 3 15:42:00 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DRUGS_PAIN, 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 q43Kg0tK199827 for ; Thu, 3 May 2012 15:42:00 -0500 X-ASG-Debug-ID: 1336077717-04cbb03c141e1380001-NocioJ Received: from smtp.pobox.com (b-pb-sasl-quonix.pobox.com [208.72.237.35]) by cuda.sgi.com with ESMTP id ekUE48ZybBkJdfSC for ; Thu, 03 May 2012 13:41:58 -0700 (PDT) X-Barracuda-Envelope-From: b.candler@pobox.com X-Barracuda-Apparent-Source-IP: 208.72.237.35 Received: from smtp.pobox.com (unknown [127.0.0.1]) by b-sasl-quonix.pobox.com (Postfix) with ESMTP id 6568B71D4; Thu, 3 May 2012 16:41:57 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=date:from:to :cc:subject:message-id:references:mime-version:content-type :in-reply-to:content-transfer-encoding; s=sasl; bh=OhVy+Tt31P9ba E6NdCmX/4Ydv4c=; b=eF52N0hiKtmw5khDLDnL9n7LzHRF/UHi7GhQBYpadVSiP jmltvp0ynRZ3dtYydFAsf1IEfFrkIFjC9f+J3jQd9ogaE/mH6gTHzRM304IOV6bn sUgUUNGXqfHwGlNq7UTYfs7kKfzHuI1Bz/L9d2YFtd9zpbt7QIuPwiYIY7/bws= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=date:from:to:cc :subject:message-id:references:mime-version:content-type :in-reply-to:content-transfer-encoding; q=dns; s=sasl; b=wX28g9b 8E9o+mG4J75F0K8JNFntnSnday5sl2tNzJcfZjaT21Xa5fFBpQ11HGOO4yApWxbi WEm1J0SQEs072Zh4FopFbGUMqCSiO2AGIaa4QK8AGTIBDLt8rTEnGXYYDY4FUqvh scsxgpTyZvNmcAzBA+E6iRAuJJoFl/AnRquU= Received: from b-pb-sasl-quonix.pobox.com (unknown [127.0.0.1]) by b-sasl-quonix.pobox.com (Postfix) with ESMTP id 5781571D3; Thu, 3 May 2012 16:41:57 -0400 (EDT) Received: from Brians-MacBook-Air.local (unknown [91.125.157.111]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by b-sasl-quonix.pobox.com (Postfix) with ESMTPSA id 08FDD71D2; Thu, 3 May 2012 16:41:57 -0400 (EDT) Received: from brian by Brians-MacBook-Air.local with local (Exim 4.77) (envelope-from ) id M3GS5X-0003F9-CW; Thu, 03 May 2012 21:41:57 +0100 Date: Thu, 3 May 2012 21:41:57 +0100 From: Brian Candler To: Stan Hoeppner Cc: xfs@oss.sgi.com Subject: Re: Storage server, hung tasks and tracebacks Message-ID: <20120503204157.GC4387@nsrc.org> X-ASG-Orig-Subj: Re: Storage server, hung tasks and tracebacks References: <20120502184450.GA2557@nsrc.org> <4FA27EF8.6040002@hardwarefreak.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <4FA27EF8.6040002@hardwarefreak.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Pobox-Relay-ID: 6CAC942E-9560-11E1-BA80-FC762E706CDE-28021239!b-pb-sasl-quonix.pobox.com Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: b-pb-sasl-quonix.pobox.com[208.72.237.35] X-Barracuda-Start-Time: 1336077718 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED, DRUGS_PAIN X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.95900 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 DRUGS_PAIN Refers to a pain relief drug On Thu, May 03, 2012 at 07:50:00AM -0500, Stan Hoeppner wrote: > > Any other suggestions (and of course interpretation of the kernel cal= l > > tracebacks) would be much appreciated. >=20 > Which mainboards are these Brian? Make/model? Tyan S5510, with Intel Xeon CPU E31225 @ 3.10GHz Upgraded to BIOS 1.05a and iKVM 3.00 > Make/model/count of all add in cards? 1 x LSI SAS9201=E2=80=9316i 1 x LSI SAS92118=E2=80=938i 1 x Intel X520-DA2 dual 10G NIC although the 10G link wasn't being used for the most recent tests. > Make/model of PSU? Will have to check, I think it may be this one: http://www.xcase.co.uk/XCASE-Power-Supply-p/psu-dolphin-900..htm > Make model of chassis? http://www.xcase.co.uk/24-bay-Hotswap-rackmount-chassis-norco-RPC-4224-p/= case-xcase-rm424.htm The drives are 24 x ST3000DM001 (I was hoping to get low-power Hitachi drives but they weren't available at the time) > I'll sleuth around and see what I can find. Could be some obscure > expansion card interaction. Could be undersized PSUs or lack of > backplanes spread evenly across the 12v rails of a multi-rail PSU, etc,= etc. Much appreciated. However, last night I rebooted one box (the one which wouldn't let me ssh in) then upgraded it to ubuntu 12.04. It has been running a couple of concurrent bonnie++ instances for over 24 hours without a hitch. So maybe it's the mpt2sas driver which is the difference: [dmesg from Ubuntu 11.10] mpt2sas version 08.100.00.02 [dmesg from Ubuntu 12.04] mpt2sas version 10.100.00.00 Regards, Brian. From stan@hardwarefreak.com Thu May 3 17:19:43 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DIET_1,DRUGS_PAIN 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 q43MJgcl209719 for ; Thu, 3 May 2012 17:19:43 -0500 X-ASG-Debug-ID: 1336083581-04cb6c24fc1b9a40001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id ftdnJHhtqgvgHfwm for ; Thu, 03 May 2012 15:19:41 -0700 (PDT) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 050BD6C147; Thu, 3 May 2012 17:19:40 -0500 (CDT) Message-ID: <4FA3047D.8060908@hardwarefreak.com> Date: Thu, 03 May 2012 17:19:41 -0500 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20120428 Thunderbird/12.0.1 MIME-Version: 1.0 To: Brian Candler CC: xfs@oss.sgi.com Subject: Re: Storage server, hung tasks and tracebacks References: <20120502184450.GA2557@nsrc.org> <4FA27EF8.6040002@hardwarefreak.com> <20120503204157.GC4387@nsrc.org> X-ASG-Orig-Subj: Re: Storage server, hung tasks and tracebacks In-Reply-To: <20120503204157.GC4387@nsrc.org> 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: 1336083581 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.44 X-Barracuda-Spam-Status: No, SCORE=0.44 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DIET_1, DRUGS_PAIN, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.95909 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.34 DIET_1 BODY: Lose Weight Spam 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.00 DRUGS_PAIN Refers to a pain relief drug On 5/3/2012 3:41 PM, Brian Candler wrote: > On Thu, May 03, 2012 at 07:50:00AM -0500, Stan Hoeppner wrote: >>> Any other suggestions (and of course interpretation of the kernel call >>> tracebacks) would be much appreciated. >> >> Which mainboards are these Brian? Make/model? > > Tyan S5510, with Intel Xeon CPU E31225 @ 3.10GHz > > Upgraded to BIOS 1.05a and iKVM 3.00 > >> Make/model/count of all add in cards? > > 1 x LSI SAS9201–16i > 1 x LSI SAS92118–8i > 1 x Intel X520-DA2 dual 10G NIC > > although the 10G link wasn't being used for the most recent tests. I'm not finding anything down this avenue so far. >> Make/model of PSU? > > Will have to check, I think it may be this one: > http://www.xcase.co.uk/XCASE-Power-Supply-p/psu-dolphin-900..htm > >> Make model of chassis? > > http://www.xcase.co.uk/24-bay-Hotswap-rackmount-chassis-norco-RPC-4224-p/case-xcase-rm424.htm > > The drives are 24 x ST3000DM001 (I was hoping to get low-power Hitachi > drives but they weren't available at the time) Yuk. Zero technical info available on this "house brand" PSU or chassis. That PSU is decidedly consumer oriented. It may be fine, but there seems to be no documentation available to verify its output current or rail config. No pic of the PSU sticker, no manual to be found online. Many of these "house brand" and cheap no-name Chinese PSUs don't put out anywhere near the advertised power, nor necessarily cleanly, which is why the UL sticker is so handy--it doesn't lie as the printing on the box might. No pic of the inside of that chassis, and no manual here either, so I have no way of knowing the backplane architecture. I'd have to guess it's a 6x 4 drive passive backplane setup similar to the Norco chassis. FWIW, I'd never buy a PSU with a "technical description" of: 140mm Red Fan Strong Long Cables Strong outer Casing Quality Internal Components Low Noise - Big Heat Sinks One can spend a few extra bucks (pounds) and get a SuperMicro or Sparkle unit with all the tech specs and QC test data available online, such as: http://www.supermicro.com/products/powersupply/80plus/80plus_pws-865-pq.pdf > However, last night I rebooted one box (the one which wouldn't let me ssh > in) then upgraded it to ubuntu 12.04. It has been running a couple of > concurrent bonnie++ instances for over 24 hours without a hitch. > > So maybe it's the mpt2sas driver which is the difference: > > [dmesg from Ubuntu 11.10] > mpt2sas version 08.100.00.02 > > [dmesg from Ubuntu 12.04] > mpt2sas version 10.100.00.00 Glad to hear you've got one running somewhat stable. Could be a driver problem, but it's pretty rare for a SCSI driver to hard lock a box isn't it? Keep us posted. -- Stan From peter@redcliffmicro.co.uk Fri May 4 06:09:06 2012 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, T_HK_NAME_DR 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 q44B96Sx020278 for ; Fri, 4 May 2012 06:09:06 -0500 X-ASG-Debug-ID: 1336129743-04cbb03c17209d70001-NocioJ Received: from out1.ip06ir2.opaltelecom.net (out1.ip06ir2.opaltelecom.net [62.24.128.242]) by cuda.sgi.com with ESMTP id Vq32GIlOMaI6Eiyc for ; Fri, 04 May 2012 04:09:04 -0700 (PDT) X-Barracuda-Envelope-From: peter@redcliffmicro.co.uk X-Barracuda-Apparent-Source-IP: 62.24.128.242 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AhIFAHG4o09UDdZI/2dsb2JhbABFgkYpr3KBCIIFCy0pNQMKCXIDHAEEExGFNweCKBqZP6E4kQ0EpkCCaQ X-IronPort-AV: E=Sophos;i="4.75,530,1330905600"; d="scan'208,217";a="537009408" Received: from host-84-13-214-72.opaltelecom.net (HELO Solaris.localdomain) ([84.13.214.72]) by out1.ip06ir2.opaltelecom.net with ESMTP; 04 May 2012 12:09:03 +0100 Received: from Solaris (localhost [127.0.0.1]) by Solaris.localdomain (Postfix) with ESMTP id 302E24C0422 for ; Fri, 4 May 2012 12:08:31 +0100 (BST) Subject: corrupt dinode 4345, extent total = 1, nblocks = 0. This is a bug. From: =?windows-1252?Q?Dr_Peter_A_Barlow?= X-ASG-Orig-Subj: corrupt dinode 4345, extent total = 1, nblocks = 0. This is a bug. To: =?windows-1252?Q?xfs=40oss=2Esgi=2Ecom?= Date: Fri, 4 May 2012 12:08:31 +0100 Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="=_LyXEGAuIDhIgOo4rvO7tVGqELuRPG8qxDdnmOYSFvKjtVekD" X-Priority: 3 (Normal) X-Mailer: Zarafa 7.1.0-33926 Thread-Index: Ac0p5jVMWc3na55IS1OwiXVV6hP+zA== Message-Id: X-Barracuda-Connect: out1.ip06ir2.opaltelecom.net[62.24.128.242] X-Barracuda-Start-Time: 1336129744 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.01 X-Barracuda-Spam-Status: No, SCORE=0.01 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=HTML_MESSAGE, THREAD_INDEX X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.95959 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.00 HTML_MESSAGE BODY: HTML included in message This is a multi-part message in MIME format. Your mail reader does not understand MIME message format. --=_LyXEGAuIDhIgOo4rvO7tVGqELuRPG8qxDdnmOYSFvKjtVekD Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Hello,=0D=0A=0D=0A=A0=0D=0AI=92ve received the following error..=0D=0A=0D= =0A=A0=0D=0Acorrupt dinode 4345, extent total =3D 1, nblocks =3D 0.=A0 Th= is is a bug.=0D=0A=0D=0APlease capture the filesystem metadata with xfs_m= etadump and=0D=0A=0D=0Areport it to xfs@oss.sgi.com.=0D=0A=0D=0Acache_nod= e_purge: refcount was 1, not zero (node=3D0x7f80593d8fc0)=0D=0A=0D=0A=A0=0D= =0Afatal error -- 117 - couldn't iget disconnected inode=0D=0A=0D=0A=A0=0D= =0Athe zipped metadata is 60MB so emailing it is not feasible.=0D=0A=0D=0A= =A0=0D=0APlease advise as I am=A0 desperate to recover my data.=0D=0A=0D=0A= =A0=0D=0AMany thanks,=0D=0A=0D=0A=A0=0D=0APeter.=0D=0A=0D=0A=A0=0D=0A --=_LyXEGAuIDhIgOo4rvO7tVGqELuRPG8qxDdnmOYSFvKjtVekD Content-Type: text/html; charset=windows-1252 Content-Transfer-Encoding: quoted-printable

Hello,

<= p class=3DMsoNormal> 

I’ve = received the following error..

&n= bsp;

corrupt dinode 4345, extent total =3D= 1, nblocks =3D 0.  This is a bug.

Please capture the filesystem metadata with xfs_metadump and

report it to xfs@oss.sgi.com.=

cache_node_purge: refcount was 1, n= ot zero (node=3D0x7f80593d8fc0)

 

fatal error -- 117 - co= uldn't iget disconnected inode

 

the zipped metadata is 60MB so ema= iling it is not feasible.

 <= /o:p>

Please advise as I am  desperate to re= cover my data.

 

Many thanks,

&= nbsp;

Peter.<= o:p>

 

--=_LyXEGAuIDhIgOo4rvO7tVGqELuRPG8qxDdnmOYSFvKjtVekD-- From tinguely@sgi.com Fri May 4 07:42:31 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-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 q44CgU9M030072 for ; Fri, 4 May 2012 07:42:30 -0500 Received: from [128.162.232.130] (eagdhcp-232-130.americas.sgi.com [128.162.232.130]) by relay1.corp.sgi.com (Postfix) with ESMTP id AB1198F8035; Fri, 4 May 2012 05:42:27 -0700 (PDT) Message-ID: <4FA3CEB3.9080607@sgi.com> Date: Fri, 04 May 2012 07:42:27 -0500 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH 10/10] xfs: factor buffer reading from xfs_dir2_leaf_getdents References: <1335249220-22274-1-git-send-email-david@fromorbit.com> <1335249220-22274-11-git-send-email-david@fromorbit.com> In-Reply-To: <1335249220-22274-11-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 04/24/12 01:33, Dave Chinner wrote: > From: Dave Chinner > > The buffer reading code in xfs_dir2_leaf_getdents is complex and difficult to > follow due to the readahead and all the context is carries. it is also badly > indented and so difficult to read. Factor it out into a separate function to > make it easier to understand and optimise in future patches. > > Signed-off-by: Dave Chinner > --- Looks good. Reviewed-by: Mark Tinguely From sandeen@sandeen.net Fri May 4 10:55:33 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q44FtWKT052228 for ; Fri, 4 May 2012 10:55:33 -0500 X-ASG-Debug-ID: 1336146931-04bdf034f02025e0001-NocioJ Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id CRasshnpHMZyUBLb for ; Fri, 04 May 2012 08:55:31 -0700 (PDT) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 3E0B8496332B; Fri, 4 May 2012 10:55:31 -0500 (CDT) Message-ID: <4FA3FBF2.1030508@sandeen.net> Date: Fri, 04 May 2012 10:55:30 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:12.0) Gecko/20120420 Thunderbird/12.0 MIME-Version: 1.0 To: Dr Peter A Barlow CC: "xfs@oss.sgi.com" Subject: Re: corrupt dinode 4345, extent total = 1, nblocks = 0. This is a bug. References: X-ASG-Orig-Subj: Re: corrupt dinode 4345, extent total = 1, nblocks = 0. This is a bug. In-Reply-To: X-Enigmail-Version: 1.4.1 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1336146931 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.95979 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 5/4/12 6:08 AM, Dr Peter A Barlow wrote: > Hello, > > > > I’ve received the following error.. > > > > /corrupt dinode 4345, extent total = 1, nblocks = 0. This is a bug./ > > /Please capture the filesystem metadata with xfs_metadump and/ > > /report it to xfs@oss.sgi.com./ > > /cache_node_purge: refcount was 1, not zero (node=0x7f80593d8fc0)/ > > / / > > /fatal error -- 117 - couldn't iget disconnected inode/ > First of all, are you using the latest xfsprogs? > the zipped metadata is 60MB so emailing it is not feasible. Is posting it somewhere feasible? I'll contact you offlist with another idea. -Eric > Please advise as I am desperate to recover my data. > > > > Many thanks, > > > > Peter. > > > > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From bpm@sgi.com Fri May 4 11:06:32 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-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 q44G6WpK053536 for ; Fri, 4 May 2012 11:06:32 -0500 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay3.corp.sgi.com (Postfix) with ESMTP id AE697AC004; Fri, 4 May 2012 09:06:28 -0700 (PDT) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 09BA6402073; Fri, 4 May 2012 11:09:54 -0500 (CDT) Date: Fri, 4 May 2012 11:09:53 -0500 From: Ben Myers To: Chandra Seetharaman Cc: xfs@oss.sgi.com Subject: Re: [PATCH 2/4] xfsprogs: Add new field pquotaino to on disk superblock Message-ID: <20120504160953.GR16881@sgi.com> References: <20120123173243.31735.37262.sendpatchset@chandra-lucid.austin.ibm.com> <20120123173258.31735.97984.sendpatchset@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120123173258.31735.97984.sendpatchset@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) On Mon, Jan 23, 2012 at 11:32:58AM -0600, Chandra Seetharaman wrote: > >From e0df4087facfd89e59183f4b8003196396d1a6d3 Mon Sep 17 00:00:00 2001 > From: Chandra Seetharaman > Date: Tue, 13 Dec 2011 16:06:33 -0600 > Subject: [PATCH 2/4] Add a new field sb_pquotino to the on-disk superblock data structure > and add accompanying code. > > Signed-off-by: Chandra Seetharaman Looking pretty good. Again, if you could be more specific about what the patch does in your commit header it'd be helpful. ... > @@ -174,11 +192,36 @@ xfs_sb_to_disk( > xfs_sb_field_t f; > int first; > int size; > + __be16 saved_qflags = 0; > > ASSERT(fields); > if (!fields) > return; > > + if (!xfs_sb_version_hasnooquota(from) && > + (from->sb_qflags & (XFS_PQUOTA_ENFD | XFS_PQUOTA_CHKD | > + XFS_GQUOTA_ENFD | XFS_GQUOTA_CHKD))) { > + > + if (from->sb_qflags & XFS_PQUOTA_ACCT) { > + from->sb_gquotino = from->sb_pquotino; > + from->sb_pquotino = 0; > + } > + /* > + * in-core version of qflags do not have XFS_OQUOTA.*, whereas > + * the on-disk version does. So, save the in-core sb_qflags > + * and restore it after we modify and copy it to the buffer > + * to be copied to disk. > + */ > + saved_qflags = from->sb_qflags; > + > + if (from->sb_qflags & (XFS_PQUOTA_ENFD | XFS_GQUOTA_ENFD)) > + from->sb_qflags |= XFS_OQUOTA_ENFD; > + if (from->sb_qflags & (XFS_PQUOTA_CHKD | XFS_GQUOTA_CHKD)) > + from->sb_qflags |= XFS_OQUOTA_CHKD; > + from->sb_qflags &= ~(XFS_PQUOTA_ENFD | XFS_PQUOTA_CHKD | > + XFS_GQUOTA_ENFD | XFS_GQUOTA_CHKD); > + } > + > while (fields) { > f = (xfs_sb_field_t)xfs_lowbit64((__uint64_t)fields); > first = xfs_sb_info[f].offset; > @@ -209,6 +252,14 @@ xfs_sb_to_disk( > > fields &= ~(1LL << f); > } > + /* Revert to the old saved values */ > + if (saved_qflags) { > + from->sb_qflags = saved_qflags; > + if (from->sb_qflags & XFS_PQUOTA_ACCT) { > + from->sb_pquotino = from->sb_gquotino; > + from->sb_gquotino = 0; > + } > + } > } > I'd really prefer not modifying 'from' temporarily. If possible use a temporary variable and do the conversion manually for qflags as you have done in the kernel. From bpm@sgi.com Fri May 4 11:28:40 2012 X-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_66, J_CHICKENPOX_72 autolearn=no 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 q44GSe7j055229 for ; Fri, 4 May 2012 11:28:40 -0500 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay3.corp.sgi.com (Postfix) with ESMTP id 34835AC004; Fri, 4 May 2012 09:28:40 -0700 (PDT) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id BE7A9402071; Fri, 4 May 2012 11:32:05 -0500 (CDT) Date: Fri, 4 May 2012 11:32:05 -0500 From: Ben Myers To: Chandra Seetharaman Cc: xfs@oss.sgi.com Subject: Re: [PATCH 3/4] xfsprogs: Add qs_pquota to the fs_quota Message-ID: <20120504163205.GS16881@sgi.com> References: <20120123173243.31735.37262.sendpatchset@chandra-lucid.austin.ibm.com> <20120123173304.31735.10706.sendpatchset@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120123173304.31735.10706.sendpatchset@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) On Mon, Jan 23, 2012 at 11:33:04AM -0600, Chandra Seetharaman wrote: > >From 9de21fc22372c3ba65a38e259aa023a74d1cae36 Mon Sep 17 00:00:00 2001 > From: Chandra Seetharaman > Date: Tue, 13 Dec 2011 16:08:19 -0600 > Subject: [PATCH 3/4] Add a new field qs_pquota to the data structure fs_quota_stat and also > define a new version for the same. > > Inform the kernel that the data structure is newer one and on return > from kernel check the version and act accordingly. > > Signed-off-by: Chandra Seetharaman > --- > include/xqm.h | 2 ++ > quota/state.c | 6 +++++- > 2 files changed, 7 insertions(+), 1 deletions(-) > > diff --git a/include/xqm.h b/include/xqm.h > index 47f58a0..24e1ea0 100644 > --- a/include/xqm.h > +++ b/include/xqm.h > @@ -124,6 +124,7 @@ typedef struct fs_disk_quota { > * incore. > */ > #define FS_QSTAT_VERSION 1 /* fs_quota_stat.qs_version */ > +#define FS_QSTAT_VERSION_2 2 /* new field qs_pquota */ > > /* > * Some basic information about 'quota files'. > @@ -146,6 +147,7 @@ typedef struct fs_quota_stat { > __s32 qs_rtbtimelimit;/* limit for rt blks timer */ > __u16 qs_bwarnlimit; /* limit for num warnings */ > __u16 qs_iwarnlimit; /* limit for num warnings */ > + fs_qfilestat_t qs_pquota; /* project quota storage information */ > } fs_quota_stat_t; Yep, same stuff you did for the kernel. > #endif /* __XQM_H__ */ > diff --git a/quota/state.c b/quota/state.c > index 42bffc0..678699f 100644 > --- a/quota/state.c > +++ b/quota/state.c > @@ -152,6 +152,8 @@ state_quotafile_mount( > fs_quota_stat_t s; > char *dev = mount->fs_name; > > + bzero(&s, sizeof(struct fs_quota_stat)); > + s.qs_version = FS_QSTAT_VERSION_2; > if (xfsquotactl(XFS_GETQSTAT, dev, type, 0, (void *)&s) < 0) { > if (flags & VERBOSE_FLAG) > fprintf(fp, _("%s quota are not enabled on %s\n"), > @@ -168,7 +170,9 @@ state_quotafile_mount( > s.qs_flags & XFS_QUOTA_GDQ_ACCT, > s.qs_flags & XFS_QUOTA_GDQ_ENFD); > if (type & XFS_PROJ_QUOTA) > - state_qfilestat(fp, mount, XFS_PROJ_QUOTA, &s.qs_gquota, > + state_qfilestat(fp, mount, XFS_PROJ_QUOTA, > + (s.qs_version >= FS_QSTAT_VERSION_2) ? > + &s.qs_pquota : &s.qs_gquota, > s.qs_flags & XFS_QUOTA_PDQ_ACCT, > s.qs_flags & XFS_QUOTA_PDQ_ENFD); Ah, nice. Older kernels which do not have VERSION_2 overwrite qs_version. You'll do the right thing either way. Looks good. Reviewed-by: Ben Myers From b.candler@pobox.com Fri May 4 11:32:43 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-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 q44GWhSU055698 for ; Fri, 4 May 2012 11:32:43 -0500 X-ASG-Debug-ID: 1336149161-04cb6c24fa1f09e0001-NocioJ Received: from smtp.pobox.com (b-pb-sasl-quonix.pobox.com [208.72.237.35]) by cuda.sgi.com with ESMTP id XVzdX6ArANfrGus1 for ; Fri, 04 May 2012 09:32:42 -0700 (PDT) X-Barracuda-Envelope-From: b.candler@pobox.com X-Barracuda-Apparent-Source-IP: 208.72.237.35 Received: from smtp.pobox.com (unknown [127.0.0.1]) by b-sasl-quonix.pobox.com (Postfix) with ESMTP id 7218A7017; Fri, 4 May 2012 12:32:41 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=date:from:to :cc:subject:message-id:references:mime-version:content-type :in-reply-to; s=sasl; bh=IptXVlfmL+O8n6wCA1dSKaykW+s=; b=NBTnVmu 5LlSQ25MN6RrbtuQAewvM4AtZxAEBK9aaS/5Ec+ZqiE0WTLPlfsxwKrPE24Wcvsb e2bVT2jReSYewesIqHzfL3zkYPEwKjCLyiznemxfgJHsB9MtHUmIASvNQ353UaWQ Sq6J457u1WEx6tkfFdIUooawHMlqSTudQPko= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=date:from:to:cc :subject:message-id:references:mime-version:content-type :in-reply-to; q=dns; s=sasl; b=tKgQsm0Utp1I3Cy1wMHoKDoVtD1EMeQoB Aimo5OrbvKgvrFEQEoi6qJcdHpwbyZmwzRhi9Re9Kwhrmi5PshPGjwqq6RHlP6bk 9VCVAPsfKqkJjjDHX+aeGztRgUttjonIXXrvBuJHhMx1puerQjrtgoFEn10CH5nz pe38bgAq7E= Received: from b-pb-sasl-quonix.pobox.com (unknown [127.0.0.1]) by b-sasl-quonix.pobox.com (Postfix) with ESMTP id 68E677016; Fri, 4 May 2012 12:32:41 -0400 (EDT) Received: from Brians-MacBook-Air.local (unknown [91.125.157.111]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by b-sasl-quonix.pobox.com (Postfix) with ESMTPSA id EE9077014; Fri, 4 May 2012 12:32:40 -0400 (EDT) Received: from brian by Brians-MacBook-Air.local with local (Exim 4.77) (envelope-from ) id M3IBAD-0004QY-FM; Fri, 04 May 2012 17:32:37 +0100 Date: Fri, 4 May 2012 17:32:37 +0100 From: Brian Candler To: Stan Hoeppner Cc: xfs@oss.sgi.com Subject: Re: Storage server, hung tasks and tracebacks Message-ID: <20120504163237.GA6128@nsrc.org> X-ASG-Orig-Subj: Re: Storage server, hung tasks and tracebacks References: <20120502184450.GA2557@nsrc.org> <4FA27EF8.6040002@hardwarefreak.com> <20120503204157.GC4387@nsrc.org> <4FA3047D.8060908@hardwarefreak.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4FA3047D.8060908@hardwarefreak.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Pobox-Relay-ID: C494A84C-9606-11E1-BD0C-FC762E706CDE-28021239!b-pb-sasl-quonix.pobox.com X-Barracuda-Connect: b-pb-sasl-quonix.pobox.com[208.72.237.35] X-Barracuda-Start-Time: 1336149161 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.95981 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 On Thu, May 03, 2012 at 05:19:41PM -0500, Stan Hoeppner wrote: > Glad to hear you've got one running somewhat stable. Could be a driver > problem, but it's pretty rare for a SCSI driver to hard lock a box isn't > it? Yes, that bothers me too. > Keep us posted. Last night I fired up two more instances of bonnie++ on that box, so there were four at once. Going back to the box now, I find that they have all hung :-( They are stuck at: Delete files in random order... Stat files in random order... Stat files in random order... Stat files in sequential order... respectively. iostat 5 shows no activity. There are 9 hung processes: $ uptime 17:23:35 up 1 day, 20:39, 1 user, load average: 9.04, 9.08, 8.91 $ ps auxwww | grep " D" | grep -v grep root 35 1.5 0.0 0 0 ? D May02 42:10 [kswapd0] root 1179 0.0 0.0 0 0 ? D May02 1:50 [xfsaild/md126] root 3127 0.0 0.0 25096 312 ? D 16:55 0:00 /usr/lib/postfix/master tomi 29138 1.1 0.0 378860 3708 pts/1 D+ 12:43 3:06 bonnie++ -d /disk/scratch/test -s 16384k -n 98:800k:500k:1000 tomi 29390 1.0 0.0 378860 3560 pts/3 D+ 12:52 2:53 bonnie++ -d /disk/scratch/test -s 16384k -n 98:800k:500k:1000 tomi 30356 1.1 0.0 378860 3512 pts/2 D+ 13:32 2:36 bonnie++ -d /disk/scratch/testb -s 16384k -n 98:800k:500k:1000 root 31075 0.0 0.0 0 0 ? D 14:00 0:04 [kworker/0:0] tomi 31796 0.6 0.0 378860 3864 pts/4 D+ 14:30 1:05 bonnie++ -d /disk/scratch/testb -s 16384k -n 98:800k:500k:1000 root 31922 0.0 0.0 0 0 ? D 14:35 0:00 [kworker/1:0] dmesg shows hung tasks and backtraces, starting with: [150927.599920] INFO: task kswapd0:35 blocked for more than 120 seconds. [150927.600263] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [150927.600698] kswapd0 D ffffffff81806240 0 35 2 0x00000000 [150927.600704] ffff880212389330 0000000000000046 ffff880212389320 ffffffff81082df5 [150927.600710] ffff880212389fd8 ffff880212389fd8 ffff880212389fd8 0000000000013780 [150927.600715] ffff8802121816f0 ffff88020e538000 ffff880212389320 ffff88020e538000 [150927.600719] Call Trace: [150927.600728] [] ? __queue_work+0xe5/0x320 [150927.600733] [] schedule+0x3f/0x60 [150927.600739] [] md_flush_request+0x86/0x140 [150927.600745] [] ? try_to_wake_up+0x200/0x200 [150927.600756] [] raid0_make_request+0x119/0x1c0 [raid0] ... Now, the only other thing I have found by googling is a suggestion that LSI drivers lock up when there is any smart or hddtemp activity: see end of https://bugs.launchpad.net/ubuntu/+source/linux/+bug/906873 On this system the smartmontools package is installed, but I have not configured it, and smartd is not running. I don't have hddtemp installed either. I am completely at a loss with all this... I've never seen a Unix/Linux system behave so unreliably. One of the company's directors has reminded me that we have a Windows storage server with 48 disks which has been running without incident for the last 3 or 4 years, and I don't have a good answer for that :-( Regards, Brian. From bpm@sgi.com Fri May 4 11:43:36 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-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 q44GhabO056567 for ; Fri, 4 May 2012 11:43:36 -0500 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8B924AC004; Fri, 4 May 2012 09:43:35 -0700 (PDT) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 289DA402073; Fri, 4 May 2012 11:47:01 -0500 (CDT) Date: Fri, 4 May 2012 11:47:01 -0500 From: Ben Myers To: Chandra Seetharaman Cc: xfs@oss.sgi.com Subject: Re: [PATCH 4/4] xfsprogs: Add support to mkfs to add pquotino by adding a new option. Message-ID: <20120504164701.GT16881@sgi.com> References: <20120123173243.31735.37262.sendpatchset@chandra-lucid.austin.ibm.com> <20120123173310.31735.28918.sendpatchset@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120123173310.31735.28918.sendpatchset@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) On Mon, Jan 23, 2012 at 11:33:10AM -0600, Chandra Seetharaman wrote: > >From 77152735d6bc893b3a724d7a6ff4bb747fb23aec Mon Sep 17 00:00:00 2001 > From: Chandra Seetharaman > Date: Tue, 13 Dec 2011 16:10:07 -0600 > Subject: [PATCH 4/4] Add support to mkfs to have a separate inode field for project quota. > > Signed-off-by: Chandra Seetharaman > --- > mkfs/xfs_mkfs.c | 22 +++++++++++++++++----- > mkfs/xfs_mkfs.h | 3 ++- > 2 files changed, 19 insertions(+), 6 deletions(-) > > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c > index f527f3d..872a304 100644 > --- a/mkfs/xfs_mkfs.c > +++ b/mkfs/xfs_mkfs.c > @@ -90,6 +90,8 @@ char *dopts[] = { > "projinherit", > #define D_EXTSZINHERIT 14 > "extszinherit", > +#define D_NO_OQUOTA 15 > + "seppquota", > NULL > }; > > @@ -922,6 +924,7 @@ main( > libxfs_init_t xi; > struct fs_topology ft; > int lazy_sb_counters; > + int seppquota; > > progname = basename(argv[0]); > setlocale(LC_ALL, ""); > @@ -930,6 +933,7 @@ main( > > attrversion = 2; > projid32bit = 0; > + seppquota = 1; > blflag = bsflag = slflag = ssflag = lslflag = lssflag = 0; > blocklog = blocksize = 0; > sectorlog = lsectorlog = XFS_MIN_SECTORSIZE_LOG; > @@ -1178,6 +1182,14 @@ main( > fsx.fsx_xflags |= \ > XFS_DIFLAG_EXTSZINHERIT; > break; > + case D_NO_OQUOTA: > + if (!value) > + value = "0"; I recommend that in if seppquota is passed without a value it should default to 1. A value of 0 is more apropriate if it had been named 'noseppquota'. Other than that this looks good. Reviewed-by: Ben Myers From stefanrin@gmail.com Fri May 4 11:51:00 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-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 q44Gp0Uq058084 for ; Fri, 4 May 2012 11:51:00 -0500 X-ASG-Debug-ID: 1336150259-04cb6c24fb1f1670001-NocioJ Received: from mail-yx0-f181.google.com (mail-yx0-f181.google.com [209.85.213.181]) by cuda.sgi.com with ESMTP id pgY6JsE3WJLy8NqJ (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Fri, 04 May 2012 09:50:59 -0700 (PDT) X-Barracuda-Envelope-From: stefanrin@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.213.181 Received: by yenq2 with SMTP id q2so3414091yen.26 for ; Fri, 04 May 2012 09:50:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=kQqWEXYOsQN16gJXeziJOo3A4mWlH8Y+nkdnY4v5sFQ=; b=FzokfNG2OHE+RB5Rgn2Dzu18zuSxt43cJSl7G6SSkEt4uHUTnf6QfM6rDaywD1Mr4/ VclHGCRIMWhknjxXjJ3pIBHf9O10mgjwZeG3S5lF3CDFhQ7V9acUws3lCondMTRp/D17 aL+7ofwjr0xj1X2kBZ2GerhGRP5kPqHk8gPGCGNrpIgIBlikwZXP4qm6K65OGSMjutZi hHeyRjuBg55t6hF2h2A2k+qKy1iBHWCN9pEDzWz0OY/UTkMSqqjFvmWNkYJoBbyzBq24 YMaSxRQUu/f7bC8JBpywBGQbY59aZ4358Rx+MGlMx5ppq6kd6qB54c3b3mXiqXMaTSQI vvGA== MIME-Version: 1.0 Received: by 10.236.179.40 with SMTP id g28mr8616394yhm.86.1336150259345; Fri, 04 May 2012 09:50:59 -0700 (PDT) Received: by 10.236.179.41 with HTTP; Fri, 4 May 2012 09:50:59 -0700 (PDT) In-Reply-To: <20120504163237.GA6128@nsrc.org> References: <20120502184450.GA2557@nsrc.org> <4FA27EF8.6040002@hardwarefreak.com> <20120503204157.GC4387@nsrc.org> <4FA3047D.8060908@hardwarefreak.com> <20120504163237.GA6128@nsrc.org> Date: Fri, 4 May 2012 18:50:59 +0200 Message-ID: Subject: Re: Storage server, hung tasks and tracebacks From: Stefan Ring X-ASG-Orig-Subj: Re: Storage server, hung tasks and tracebacks To: Brian Candler Cc: Linux fs XFS Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-yx0-f181.google.com[209.85.213.181] X-Barracuda-Start-Time: 1336150259 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.95983 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 > I am completely at a loss with all this... I've never seen a Unix/Linux > system behave so unreliably. Fortunately, Linux doesn't have to prove itself anymore, these days. Usually these things happen on really crappy hardware. I had a new HP Proliant Blade server a few months ago, and it would randomly lock up and produce NMIs for no apparent reason. It has inflicted a decent amount of pain on me. Finally, it was replaced with an identical model, and all problems were instantly gone. From bpm@sgi.com Fri May 4 14:49:00 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,UPPERCASE_50_75 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 q44Jn0s9080027 for ; Fri, 4 May 2012 14:49:00 -0500 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id A36F9304032; Fri, 4 May 2012 12:48:57 -0700 (PDT) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 1FCB3402071; Fri, 4 May 2012 14:52:24 -0500 (CDT) Date: Fri, 4 May 2012 14:52:24 -0500 From: Ben Myers To: Chandra Seetharaman Cc: xfs@oss.sgi.com Subject: Re: [RFC v5 PATCH 3/4] xfs: Add pquotaino to on-disk super block Message-ID: <20120504195224.GU16881@sgi.com> References: <20120314202623.17044.90045.sendpatchset@chandra-lucid.austin.ibm.com> <20120314202641.17044.32835.sendpatchset@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120314202641.17044.32835.sendpatchset@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) On Wed, Mar 14, 2012 at 03:26:42PM -0500, Chandra Seetharaman wrote: > @@ -1055,19 +1057,22 @@ xfs_qm_qino_alloc( > ASSERT((sbfields & (XFS_SB_VERSIONNUM | XFS_SB_UQUOTINO | > XFS_SB_GQUOTINO | XFS_SB_QFLAGS)) == > (XFS_SB_VERSIONNUM | XFS_SB_UQUOTINO | > - XFS_SB_GQUOTINO | XFS_SB_QFLAGS)); > + XFS_SB_GQUOTINO | XFS_SB_PQUOTINO | XFS_SB_QFLAGS)); I popped this assert in my testing. I think it should look like this: Index: xfs/fs/xfs/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/xfs_qm.c +++ xfs/fs/xfs/xfs_qm.c @@ -838,7 +838,8 @@ xfs_qm_qino_alloc( if (flags & XFS_QMOPT_SBVERSION) { ASSERT(!xfs_sb_version_hasquota(&mp->m_sb)); ASSERT((sbfields & (XFS_SB_VERSIONNUM | XFS_SB_UQUOTINO | - XFS_SB_GQUOTINO | XFS_SB_QFLAGS)) == + XFS_SB_GQUOTINO | XFS_SB_PQUOTINO | + XFS_SB_QFLAGS)) == (XFS_SB_VERSIONNUM | XFS_SB_UQUOTINO | XFS_SB_GQUOTINO | XFS_SB_PQUOTINO | XFS_SB_QFLAGS)); -Ben From tinguely@sgi.com Fri May 4 14:54:40 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-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 q44JsdBV080789 for ; Fri, 4 May 2012 14:54:39 -0500 Received: from [128.162.232.130] (eagdhcp-232-130.americas.sgi.com [128.162.232.130]) by relay2.corp.sgi.com (Postfix) with ESMTP id B9066304059; Fri, 4 May 2012 12:54:39 -0700 (PDT) Message-ID: <4FA433FF.9070405@sgi.com> Date: Fri, 04 May 2012 14:54:39 -0500 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH 09/10] xfs: remove struct xfs_dabuf and infrastructure References: <1335249220-22274-1-git-send-email-david@fromorbit.com> <1335249220-22274-10-git-send-email-david@fromorbit.com> In-Reply-To: <1335249220-22274-10-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 04/24/12 01:33, Dave Chinner wrote: > From: Dave Chinner > > The struct xfs_dabuf now only tracks a single xfs_buf and all the > information it holds can be gained directly from the xfs_buf. Hence > we can remove the struct dabuf and pass the xfs_buf around > everywhere. > > Kill the struct dabuf and the associated infrastructure. > > Signed-off-by: Dave Chinner > --- wow, that must have been fun... Reviewed-by: Mark Tinguely From bpm@sgi.com Fri May 4 14:57:05 2012 X-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_64 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 q44Jv56F081331 for ; Fri, 4 May 2012 14:57:05 -0500 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id 902BF304039; Fri, 4 May 2012 12:57:05 -0700 (PDT) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 29A19402074; Fri, 4 May 2012 15:00:32 -0500 (CDT) Date: Fri, 4 May 2012 15:00:32 -0500 From: Ben Myers To: Chandra Seetharaman Cc: xfs@oss.sgi.com Subject: Re: [RFC v5 PATCH 2/4] xfs: Add pquota fields where gquota is used. Message-ID: <20120504200032.GV16881@sgi.com> References: <20120314202623.17044.90045.sendpatchset@chandra-lucid.austin.ibm.com> <20120314202636.17044.11836.sendpatchset@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120314202636.17044.11836.sendpatchset@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) On Wed, Mar 14, 2012 at 03:26:36PM -0500, Chandra Seetharaman wrote: > diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c > index 7c01cda..8800197 100644 > --- a/fs/xfs/xfs_iops.c > +++ b/fs/xfs/xfs_iops.c > @@ -516,7 +516,7 @@ xfs_setattr_nonsize( > ASSERT(udqp == NULL); > ASSERT(gdqp == NULL); > error = xfs_qm_vop_dqalloc(ip, uid, gid, xfs_get_projid(ip), > - qflags, &udqp, &gdqp); > + qflags, &udqp, &gdqp, NULL); > if (error) > return error; > } > @@ -552,7 +552,7 @@ xfs_setattr_nonsize( > (XFS_IS_GQUOTA_ON(mp) && igid != gid))) { > ASSERT(tp); > error = xfs_qm_vop_chown_reserve(tp, ip, udqp, gdqp, > - capable(CAP_FOWNER) ? > + NULL, capable(CAP_FOWNER) ? > XFS_QMOPT_FORCE_RES : 0); > if (error) /* out of quota */ > goto out_trans_cancel; I popped an assert in xfs_setattr_nonsize in my testing. Here is my suggestion: Index: xfs/fs/xfs/xfs_iops.c =================================================================== --- xfs.orig/fs/xfs/xfs_iops.c +++ xfs/fs/xfs/xfs_iops.c @@ -594,7 +594,8 @@ xfs_setattr_nonsize( } if (igid != gid) { if (XFS_IS_QUOTA_RUNNING(mp) && XFS_IS_GQUOTA_ON(mp)) { - ASSERT(!XFS_IS_PQUOTA_ON(mp)); + ASSERT(xfs_sb_version_has_no_oquota(&mp->m_sb) + || !XFS_IS_PQUOTA_ON(mp)); ASSERT(mask & ATTR_GID); ASSERT(gdqp); olddquot2 = xfs_qm_vop_chown(tp, ip, -Ben From bpm@sgi.com Fri May 4 15:00:40 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-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 q44K0ehg081735 for ; Fri, 4 May 2012 15:00:40 -0500 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay1.corp.sgi.com (Postfix) with ESMTP id 37EA08F8035; Fri, 4 May 2012 13:00:37 -0700 (PDT) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id BE8DE402071; Fri, 4 May 2012 15:04:03 -0500 (CDT) Date: Fri, 4 May 2012 15:04:03 -0500 From: Ben Myers To: Chandra Seetharaman Cc: xfs@oss.sgi.com Subject: Re: [RFC v5 PATCH 2/4] xfs: Add pquota fields where gquota is used. Message-ID: <20120504200403.GW16881@sgi.com> References: <20120314202623.17044.90045.sendpatchset@chandra-lucid.austin.ibm.com> <20120314202636.17044.11836.sendpatchset@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120314202636.17044.11836.sendpatchset@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) On Wed, Mar 14, 2012 at 03:26:36PM -0500, Chandra Seetharaman wrote: > @@ -1517,7 +1521,7 @@ xfs_symlink( > int n; > xfs_buf_t *bp; > prid_t prid; > - struct xfs_dquot *udqp, *gdqp; > + struct xfs_dquot *udqp, *gdqp, *pdqp; > uint resblks; > > *ipp = NULL; > @@ -1547,7 +1551,7 @@ xfs_symlink( > * Make sure that we have allocated dquot(s) on disk. > */ > error = xfs_qm_vop_dqalloc(dp, current_fsuid(), current_fsgid(), prid, > - XFS_QMOPT_QUOTALL | XFS_QMOPT_INHERIT, &udqp, &gdqp); > + XFS_QMOPT_QUOTALL | XFS_QMOPT_INHERIT, &udqp, &gdqp, &pdqp); > if (error) > goto std_return; > > @@ -1588,7 +1592,8 @@ xfs_symlink( > /* > * Reserve disk quota : blocks and inode. > */ > - error = xfs_trans_reserve_quota(tp, mp, udqp, gdqp, resblks, 1, 0); > + error = xfs_trans_reserve_quota(tp, mp, udqp, gdqp, > + pdqp, resblks, 1, 0); > if (error) > goto error_return; > > @@ -1626,7 +1631,7 @@ xfs_symlink( > /* > * Also attach the dquot(s) to it, if applicable. > */ > - xfs_qm_vop_create_dqattach(tp, ip, udqp, gdqp); > + xfs_qm_vop_create_dqattach(tp, ip, udqp, gdqp, pdqp); > > if (resblks) > resblks -= XFS_IALLOC_SPACE_RES(mp); > @@ -1710,6 +1715,7 @@ xfs_symlink( > error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); > xfs_qm_dqrele(udqp); > xfs_qm_dqrele(gdqp); > + xfs_qm_dqrele(pdqp); > > *ipp = ip; > return 0; > @@ -1723,6 +1729,7 @@ xfs_symlink( > xfs_trans_cancel(tp, cancel_flags); > xfs_qm_dqrele(udqp); > xfs_qm_dqrele(gdqp); > + xfs_qm_dqrele(pdqp); ^^^^ Crashing here consistently on test 005, null ptr deref. pdqp needs to be initialized in this function: Index: xfs/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.c +++ xfs/fs/xfs/xfs_vnodeops.c @@ -1525,7 +1525,7 @@ xfs_symlink( if (pathlen >= MAXPATHLEN) /* total string too long */ return XFS_ERROR(ENAMETOOLONG); - udqp = gdqp = NULL; + udqp = gdqp = pdqp = NULL; if (dp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) prid = xfs_get_projid(dp); else -Ben > > if (unlock_dp_on_error) > xfs_iunlock(dp, XFS_ILOCK_EXCL); > @@ -2189,7 +2196,7 @@ xfs_free_file_space( > } > xfs_ilock(ip, XFS_ILOCK_EXCL); > error = xfs_trans_reserve_quota(tp, mp, > - ip->i_udquot, ip->i_gdquot, > + ip->i_udquot, ip->i_gdquot, ip->i_pdquot, > resblks, 0, XFS_QMOPT_RES_REGBLKS); > if (error) > goto error1; From bpm@sgi.com Fri May 4 15:57:46 2012 X-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 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 q44KvkWl087919 for ; Fri, 4 May 2012 15:57:46 -0500 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay1.corp.sgi.com (Postfix) with ESMTP id D15F68F8039; Fri, 4 May 2012 13:57:42 -0700 (PDT) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id AAE7C402073; Fri, 4 May 2012 16:01:09 -0500 (CDT) Date: Fri, 4 May 2012 16:01:09 -0500 From: Ben Myers To: Chandra Seetharaman Cc: xfs@oss.sgi.com Subject: Re: [PATCH 1/4] xfstests: Fix a problem where using bsize was not working as expected Message-ID: <20120504210109.GX16881@sgi.com> References: <20120221165833.23253.38042.sendpatchset@chandra-lucid.austin.ibm.com> <20120221165839.23253.45298.sendpatchset@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120221165839.23253.45298.sendpatchset@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) On Tue, Feb 21, 2012 at 10:58:39AM -0600, Chandra Seetharaman wrote: > >From d60824ddc4a60c7902a53fded6773b3385180cc6 Mon Sep 17 00:00:00 2001 > From: Chandra Seetharaman > Date: Wed, 8 Feb 2012 10:02:37 -0600 > Subject: [PATCH 1/3] Fix a problem wherein the bsize argument setting to mkfs fails to be > included since MKFS_OPTIONS already has bsize. > > Signed-off-by: Chandra Seetharaman > --- > common.rc | 5 ++++- > 1 files changed, 4 insertions(+), 1 deletions(-) > > diff --git a/common.rc b/common.rc > index cab0b64..61889b0 100644 > --- a/common.rc > +++ b/common.rc > @@ -350,7 +350,10 @@ _scratch_mkfs_sized() > > case $FSTYP in > xfs) > - _scratch_mkfs_xfs -d size=$fssize -b size=$blocksize > + # replace bsize= in MKFS_OPTIONS if already defined > + export MKFS_OPTIONS=$(echo $MKFS_OPTIONS | \ > + sed -e "s/-bsize=[0-9]*/-bsize=$blocksize/") > + _scratch_mkfs_xfs "-d size=$fssize" What if bsize wasn't specified already in MKFS_OPTIONS? It looks like you wouldn't be passing in a blocksize. -Ben > ;; > ext2|ext3|ext4|ext4dev) > /sbin/mkfs.$FSTYP $MKFS_OPTIONS -b $blocksize $SCRATCH_DEV $blocks > -- > 1.7.1 > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From bpm@sgi.com Fri May 4 16:03:49 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-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 q44L3nAg089033 for ; Fri, 4 May 2012 16:03:49 -0500 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay1.corp.sgi.com (Postfix) with ESMTP id A2A378F8033; Fri, 4 May 2012 14:03:46 -0700 (PDT) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 820F6402071; Fri, 4 May 2012 16:07:13 -0500 (CDT) Date: Fri, 4 May 2012 16:07:13 -0500 From: Ben Myers To: Chandra Seetharaman Cc: xfs@oss.sgi.com Subject: Re: [PATCH 4/4] xfstests: Add the new test to the group file Message-ID: <20120504210713.GY16881@sgi.com> References: <20120221165833.23253.38042.sendpatchset@chandra-lucid.austin.ibm.com> <20120221165857.23253.15762.sendpatchset@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120221165857.23253.15762.sendpatchset@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) On Tue, Feb 21, 2012 at 10:58:57AM -0600, Chandra Seetharaman wrote: > >From 16e62fe191e58cd45130376866b779cad2e56683 Mon Sep 17 00:00:00 2001 > From: Chandra Seetharaman > Date: Tue, 21 Feb 2012 09:33:39 -0600 > Subject: [PATCH 4/4] Add the new test 276 to the group file. > > Signed-off-by: Chandra Seetharaman > --- > group | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/group b/group > index 08d999a..f39c303 100644 > --- a/group > +++ b/group > @@ -389,3 +389,4 @@ deprecated > 273 auto rw > 274 auto rw > 275 auto rw > +276 quota auto quick I suggest you just roll this into patch 3. -Ben From bpm@sgi.com Fri May 4 16:23:03 2012 X-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_65 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 q44LN3C5091293 for ; Fri, 4 May 2012 16:23:03 -0500 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay1.corp.sgi.com (Postfix) with ESMTP id B085D8F8035; Fri, 4 May 2012 14:23:03 -0700 (PDT) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 94FF4402073; Fri, 4 May 2012 16:26:30 -0500 (CDT) Date: Fri, 4 May 2012 16:26:30 -0500 From: Ben Myers To: Chandra Seetharaman Cc: xfs@oss.sgi.com Subject: Re: [PATCH 2/4] xfstests: Add a require_seppquota function Message-ID: <20120504212630.GZ16881@sgi.com> References: <20120221165833.23253.38042.sendpatchset@chandra-lucid.austin.ibm.com> <20120221165845.23253.658.sendpatchset@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120221165845.23253.658.sendpatchset@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) On Tue, Feb 21, 2012 at 10:58:45AM -0600, Chandra Seetharaman wrote: > >From 6076480613e3034eab9758903c093a0b24048658 Mon Sep 17 00:00:00 2001 > From: Chandra Seetharaman > Date: Wed, 8 Feb 2012 10:04:49 -0600 > Subject: [PATCH 2/3] Add a require_seppquota function in preparation for testing > simultaneous use of pquota and gquota in a filesystem > > Signed-off-by: Chandra Seetharaman > --- > common.quota | 9 +++++++++ > 1 files changed, 9 insertions(+), 0 deletions(-) > > diff --git a/common.quota b/common.quota > index 9736306..16344ea 100644 > --- a/common.quota > +++ b/common.quota > @@ -87,6 +87,15 @@ _require_nobody() > [ $? -ne 0 ] && _notrun "group file does not contain nobody/nogroup." > } > > +# > +# checks to see if mkfs supports separate pquota > +# > +_require_seppquota() > +{ > + mkfs.xfs -o test 2>&1 | grep seppquota > /dev/null ^^^^^^^ I have a nit to pick about that... FWICS there is no -o option to mkfs.xfs. Here -o works fine to get usage only because we have not yet defined a mkfs option for 'o'. If we were to do that at a later date... who knows? There isn't a -h option to print usage either. It looks like the only way to print usage so you can grep for seppquota is to do something wrong! I suggest that you do this instead: mkfs.xfs 2>&1 | grep seppquota > /dev/null I think we can be fairly certain that mkfs.xfs with zero args will always be a safe way to get usage() to kick off. Other than that silly nit... this looks fine. Reviewed-by: Ben Myers -Ben From treestem@gmail.com Fri May 4 16:55:23 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-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 q44LtNaZ094652 for ; Fri, 4 May 2012 16:55:23 -0500 X-ASG-Debug-ID: 1336168522-04cbb03c1422c320001-NocioJ Received: from mail-qa0-f46.google.com (mail-qa0-f46.google.com [209.85.216.46]) by cuda.sgi.com with ESMTP id j72P5VaAZli2hqgo (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Fri, 04 May 2012 14:55:22 -0700 (PDT) X-Barracuda-Envelope-From: treestem@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.46 Received: by qadb17 with SMTP id b17so1660676qad.5 for ; Fri, 04 May 2012 14:55:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=w/Z5LWvqo0yFBYlxrxHMdNQz/PelohUl7qpcqms9qs4=; b=xsev9j2LGDF5zEGD31lv1+YVLB3phd4e3fq7ROnbuCj4Qo7DZDb7dATViQYNNmRvah nOi6yjq67PoVDknPKIlZGo0Zm5NAJUsAyCkKyMcZYlRLBMbqpBczjWXu8CLp8MPfIQIN UM35q8UlgKquLHhVAjC4jgTavMMJshpXKFLHEfKPPxO9dJqAGcuRnBnJU0MoWQIe2wRi 8sxiDJIBu9eNGJSCG1UxTlJag7UNsOTVXjy4huSRSpriqPgULdxouhzVeI7TEB6A1L2g Qx9B72cb6qqpvplxOVyvwimqn7NCekMsXASYGfi3OSQ7Mgvb0pYgHq7Mv0Rz7HxoAHh+ HHfg== MIME-Version: 1.0 Received: by 10.224.191.3 with SMTP id dk3mr12495694qab.99.1336168521844; Fri, 04 May 2012 14:55:21 -0700 (PDT) Received: by 10.229.112.148 with HTTP; Fri, 4 May 2012 14:55:21 -0700 (PDT) Date: Fri, 4 May 2012 17:55:21 -0400 Message-ID: Subject: deadlock below xfs_ialloc, when radix_tree_preload goes into reclaim? From: Peter Watkins X-ASG-Orig-Subj: deadlock below xfs_ialloc, when radix_tree_preload goes into reclaim? To: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: mail-qa0-f46.google.com[209.85.216.46] X-Barracuda-Start-Time: 1336168522 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96003 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 Greetings, Anyone seen a deadlock like the one below? It's a 17TB system with 32 bit inodes and it's doing lots of inode allocations at the same time. So you might consider it a stress test for inode alloc activity on a single AG. xfs_ialloc called xfs_dialloc and got the agi header buf, then it called xfs_iget which went into reclaim during radix_tree_preload. While trying to shrink the inode cache, xfs_iunlink_remove tries to get the same agi header buf. With 64 bit inodes you'd be less likely to hit this path, but it's still possible, no? Should this call to radix_tree_preload use GFP_NOFS? The code base is old, but the same elements of the deadlock still seem to be there in the upstream code ... though I may be missing something there. Oh, some caveats: yes, it's an ancient 2.6.27 kernel, no I don't have a handy reproducer (I could try to create one), and yes I really am trying to switch to 64b inodes. -Peter #0 [ffff88021bc030c8] schedule at ffffffff804fa2ee #1 [ffff88021bc03170] schedule_timeout at ffffffff804faddb #2 [ffff88021bc031e0] __down at ffffffff804fb9b1 #3 [ffff88021bc03230] down at ffffffff80265cab #4 [ffff88021bc03250] xfs_buf_lock at ffffffffa04cbd98 #5 [ffff88021bc03270] _xfs_buf_find at ffffffffa04cbed4 #6 [ffff88021bc032c0] xfs_buf_get_flags at ffffffffa04cd642 #7 [ffff88021bc03300] xfs_buf_read_flags at ffffffffa04cd76b #8 [ffff88021bc03320] xfs_trans_read_buf at ffffffffa04c186f #9 [ffff88021bc03370] xfs_iunlink_remove at ffffffffa04aa809 <=== wants agi buffer for lock ordering #10 [ffff88021bc03410] xfs_ifree at ffffffffa04aab27 #11 [ffff88021bc03470] xfs_inactive at ffffffffa04c5653 #12 [ffff88021bc034c0] xfs_fs_clear_inode at ffffffffa04d48c8 #13 [ffff88021bc034f0] clear_inode at ffffffff802f26f5 #14 [ffff88021bc03510] generic_delete_inode at ffffffff802f2d1f #15 [ffff88021bc03540] generic_drop_inode at ffffffff802f2e47 #16 [ffff88021bc03560] iput at ffffffff802f2f6b #18 [ffff88021bc035c0] clear_inode at ffffffff802f26f5 #19 [ffff88021bc035e0] dispose_list at ffffffff802f2780 #20 [ffff88021bc03620] shrink_icache_memory at ffffffff802f30a4 #21 [ffff88021bc03680] shrink_slab at ffffffff802adff7 #22 [ffff88021bc036d0] zone_reclaim at ffffffff802b0913 <=== uh oh, memory reclaim! #23 [ffff88021bc03770] get_page_from_freelist at ffffffff802a8944 #24 [ffff88021bc03850] __alloc_pages_internal at ffffffff802a8e3d #25 [ffff88021bc038d0] alloc_pages_current at ffffffff802cb2dd #26 [ffff88021bc03900] new_slab at ffffffff802d2190 #27 [ffff88021bc03940] __slab_alloc at ffffffff802d27e2 #28 [ffff88021bc039a0] kmem_cache_alloc at ffffffff802d2cd4 #29 [ffff88021bc039e0] radix_tree_preload at ffffffff8039c5e1 <=== should be GFP_NOFS instead of GFP_KERNEL ? #30 [ffff88021bc03a10] xfs_iget_core at ffffffffa04a7b9b #31 [ffff88021bc03a90] xfs_iget at ffffffffa04a80e0 #32 [ffff88021bc03af0] xfs_trans_iget at ffffffffa04c1f82 #33 [ffff88021bc03b40] xfs_ialloc at ffffffffa04a9132 <=== calling ialloc after dialloc, holds buf_lock for agi header ! #34 [ffff88021bc03be0] xfs_dir_ialloc at ffffffffa04c28f5 #35 [ffff88021bc03ca0] xfs_create at ffffffffa04c5bdd #36 [ffff88021bc03d70] xfs_vn_mknod at ffffffffa04d12d1 #37 [ffff88021bc03dd0] xfs_vn_create at ffffffffa04d13b0 #38 [ffff88021bc03de0] vfs_create at ffffffff802e6adb #39 [ffff88021bc03e20] do_filp_open at ffffffff802e7123 #40 [ffff88021bc03eb0] expand_files at ffffffff802f4cf1 #41 [ffff88021bc03ef0] alloc_fd at ffffffff802f52f8 #42 [ffff88021bc03f30] do_sys_open at ffffffff802db5c8 #43 [ffff88021bc03f70] compat_sys_open at ffffffff80314caa From juergh@gmail.com Sat May 5 02:44:38 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-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 q457ibkD157404 for ; Sat, 5 May 2012 02:44:37 -0500 X-ASG-Debug-ID: 1336203876-04cb6c24fa215fc0001-NocioJ Received: from mail-pb0-f53.google.com (mail-pb0-f53.google.com [209.85.160.53]) by cuda.sgi.com with ESMTP id tKY71pIE5crhFbad (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 05 May 2012 00:44:36 -0700 (PDT) X-Barracuda-Envelope-From: juergh@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.160.53 Received: by pbbrr13 with SMTP id rr13so5343650pbb.26 for ; Sat, 05 May 2012 00:44:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=nJymm17AsGe/fgfTohycqGuTqRa1G24aQF6PwAvXxI8=; b=vm5iEd3qssHZAbj5xNh8v6rZ+0j9ccYBYdGamf4Ow1oLPAE/hzSqzGLeJrWV3dY/Ya FZRANkgL4K88Mqc7pWpQCYlJf1/bqaRoPzyJn8IB/hhaNC0eez7EraYHcIjqE7esu70q G+dYNcaLLy78gaTISsgwj82YPHDuMncw+Q9/JyJBG0mVbQlcV0jCIqWV6CkQTY9AiJaX qY8zmqDQ8NcnMW/Zy5+JK9vbUaUIt06xMSBaBmjuvNdMJkjtVHMeEu9bM4FLqSKWmjzC 5nHZilKkw9jBDV4Z0m11oDHGLiSimcHHr+36EXziFewNaeJ+7W+DMXJEggQDR3DrP13X GVnw== MIME-Version: 1.0 Received: by 10.68.132.232 with SMTP id ox8mr25783216pbb.145.1336203875834; Sat, 05 May 2012 00:44:35 -0700 (PDT) Received: by 10.68.19.165 with HTTP; Sat, 5 May 2012 00:44:35 -0700 (PDT) In-Reply-To: References: <20120423235840.GQ9541@dastard> <20120424120731.GT9541@dastard> <20120425223845.GX9541@dastard> <20120426224412.GA9541@dastard> <20120426230738.GB9541@dastard> <20120427110922.GF9541@dastard> Date: Sat, 5 May 2012 09:44:35 +0200 Message-ID: Subject: Re: Still seeing hangs in xlog_grant_log_space From: Juerg Haefliger X-ASG-Orig-Subj: Re: Still seeing hangs in xlog_grant_log_space 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-pb0-f53.google.com[209.85.160.53] X-Barracuda-Start-Time: 1336203876 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96041 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 >>> >> >> > I'm assuming it is the event trace >>> >> >> > that is causing it to blow out? If so, just the 30-60s either s= ide of >>> >> >> > the hang first showing up is probaby necessary, and that should= cut >>> >> >> > the size down greatly.... >>> >> >> >>> >> >> Can I shorten the existing trace.dat? >> >> Looks like you can - the "trace-cmd split" option. >> >>> >> > >>> >> > No idea, but that's likely the problem - I don't want the binary >>> >> > trace.dat file. I want the text output of the report command >>> >> > generated from the binary trace.dat file... >>> >> >>> >> Well yes. I did RTFM :-) trace.dat is 15GB. >>> > >>> > OK, that's a lot larger than I expected for a hung filesystem.... >>> > >>> >> >> I stopped the trace >>> >> >> automatically 10 secs after the the xlog_... trace showed up in s= yslog >>> >> >> so effectively some 130+ secs after the hang occured. >>> > >>> > Can you look at the last timestamp in the report file, and trim off >>> > anything from the start that is older than, say, 180s before that? >>> >>> Cut the trace down to 180 secs which brought the filesize down to >>> 93MB: https://region-a.geo-1.objects.hpcloudsvc.com:443/v1.0/AUTH_9630e= ad2-6194-40df-afd3-7395448d4536/xfs-hang/report-2012-04-24-180secs.tgz >> >> I see the problem - the trace.dat file is hosted on an XFS >> filesystem, so all the writes to the trace.dat file are causing >> events to be logged, which causes writes to the trace.dat file.... >> >> taking out al the trace-cmd events: >> >> $ grep -v trace-cmd trace_report_180secs.txt > t.t >> $ ls -l trace_report_180secs.txt t.t >> -rw-r--r-- 1 dave dave 2136941443 Apr 27 18:52 trace_report_180secs.txt >> -rw-r--r-- 1 dave dave =A0 =A03280629 Apr 27 20:12 t.t >> >> Brings the event trace for that 180s down ifrom 2.1GB to 3.2MB, >> which is much more like I'd expect from a hung filesystem.... >> >> Ok, so it looks like there's lots of noise from other XFS >> filesystems to, and from the info.log, the xfs-hang filesystem is on >> device 252:2 (/dev/vg00/tmp): >> >> $ grep "dev 252:2" t.t >> $ >> >> And there are no events from that filesystem in the log at all. Ok, >> so what you need to do is find out if there are *any* events from >> that device in the larger log file you have..... >> >> If not, then it is time for advanced trace-cmd mojo. We can tell it >> to filter events only from the PID of the test script and all it's >> children using: >> >> # trace-cmd record -e xfs\* -P -c >> >> But better would be to use the device number of the relevant >> filesystem to filter the events. The device is 252:2, which means in >> kernel terms is it: >> >> =A0 =A0 =A0 =A0dev =3D (major << 20) | minor >> =A0 =A0 =A0 =A0 =A0 =A0=3D 0xfc00002 >> >> So you should be able to get just the xfs-hang events via: >> >> # trace-cmd record -e xfs\* -d 'dev =3D=3D 0xfc00002' >> >> and as long as you don't host log files on /xfs-hang, it'll only >> record the workload running on the xfs-hang filesystem. > > Third try: https://region-a.geo-1.objects.hpcloudsvc.com:443/v1.0/AUTH_96= 30ead2-6194-40df-afd3-7395448d4536/xfs-hang/report-2012-04-27-180secs.tgz > Filtered by device, trace events go to a different filesystem. Did anybody have a chance to look at the data? Thanks ...Juerg > >> BTW, how often do you see this sort of thing: >> >> [ =A0220.571551] ------------[ cut here ]------------ >> [ =A0220.571562] WARNING: at fs/inode.c:280 drop_nlink+0x49/0x50() >> [ =A0220.571564] Hardware name: SE2170s >> [ =A0220.571565] Modules linked in: ipmi_devintf ipmi_si ipmi_msghandler= ip6table_filter ip6_tables ipt_MASQUERADE iptable_nat nf_nat nf_conntrack_= ipv4 nf_defrag_ipv4 xt_state nf_conntrack ipt_REJECT xt_CHECKSUM iptable_ma= ngle xt_tcpudp iptable_filter ip_tables x_tables bridge 8021q garp stp core= temp ghash_clmulni_intel aesni_intel cryptd usbhid i7core_edac lp edac_core= hid aes_x86_64 parport serio_raw microcode xfs igb hpsa dca >> [ =A0220.571594] Pid: 4637, comm: copy-files Not tainted 3.4.0-rc4 #2 >> [ =A0220.571595] Call Trace: >> [ =A0220.571603] =A0[] warn_slowpath_common+0x7f/0xc0 >> [ =A0220.571605] =A0[] warn_slowpath_null+0x1a/0x20 >> [ =A0220.571607] =A0[] drop_nlink+0x49/0x50 >> [ =A0220.571628] =A0[] xfs_droplink+0x2f/0x60 [xfs] >> [ =A0220.571640] =A0[] xfs_remove+0x2e8/0x3c0 [xfs] >> [ =A0220.571645] =A0[] ? _raw_spin_lock+0xe/0x20 >> [ =A0220.571656] =A0[] xfs_vn_unlink+0x48/0x90 [xfs] >> [ =A0220.571659] =A0[] vfs_unlink+0x9f/0x100 >> [ =A0220.571662] =A0[] do_unlinkat+0x1af/0x1e0 >> [ =A0220.571668] =A0[] ? sys_futex+0x7b/0x180 >> [ =A0220.571670] =A0[] sys_unlink+0x16/0x20 >> [ =A0220.571675] =A0[] system_call_fastpath+0x16/0x1b >> >> You might want to run xfs-repair over your filesystems to find out >> how many inodes have bad link counts.... > > First time I saw it was when I started using 3.4-rc4. I repaired the > fs before I rerun the test that produced the above data. > > ...Juerg > > >> Cheers, >> >> Dave. >> -- >> Dave Chinner >> david@fromorbit.com From bernhardt.eckl@hotmail.de Sat May 5 05:39:44 2012 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 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 q45AdisD176201 for ; Sat, 5 May 2012 05:39:44 -0500 X-ASG-Debug-ID: 1336214382-04cbb03c1724cfe0001-NocioJ Received: from blu0-omc4-s28.blu0.hotmail.com (blu0-omc4-s28.blu0.hotmail.com [65.55.111.167]) by cuda.sgi.com with ESMTP id pG4DRhocW8ZrGIjw for ; Sat, 05 May 2012 03:39:42 -0700 (PDT) X-Barracuda-Envelope-From: bernhardt.eckl@hotmail.de X-Barracuda-Apparent-Source-IP: 65.55.111.167 Received: from BLU157-W7 ([65.55.111.136]) by blu0-omc4-s28.blu0.hotmail.com with Microsoft SMTPSVC(6.0.3790.4675); Sat, 5 May 2012 03:39:42 -0700 Message-ID: X-Originating-IP: [178.200.19.104] From: Berhardt Eckl To: Subject: Null in file after crash Date: Sat, 5 May 2012 12:39:42 +0200 X-ASG-Orig-Subj: Null in file after crash Importance: Normal Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginalArrivalTime: 05 May 2012 10:39:42.0375 (UTC) FILETIME=[614BE370:01CD2AAB] X-Barracuda-Connect: blu0-omc4-s28.blu0.hotmail.com[65.55.111.167] X-Barracuda-Start-Time: 1336214382 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=BSF_SC0_SA085 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96053 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 BSF_SC0_SA085 Custom Rule SA085 Hello all=2C after a XFS recovery=2C caused by a system crash=2C one of my files seems t= o be trashed. The file contains an encrypted container and can not be mount= ed since that crash. Hexedit shows some parts are filled with 0 Bytes. The crash happened some time ago in 2005=2C the filesystem was dumped and n= early untouched since then. I can not tell which kernel or XFS version was = used. Xfs_bmap shows many holes=2C so it looks like a problem mentioned here: htt= p://xfs.org/index.php/XFS_FAQ#Q:_Why_do_I_see_binary_NULLS_in_some_files_af= ter_recovery_when_I_unplugged_the_power.3F Is there any chance to revert to the state the file was before the crash? O= r maybe anything else that could help to restore the file? Some of the "missing parts" can be found via hexedit the dump=2C so at leas= t some of the missing "holes" are still on the disc. xfs_bmap output: 0: [0..7]: hole 1: [8..23]: 1016..1031 2: [24..31]: 2504..2511 3: [32..39]: hole 4: [40..79]: 200..239 5: [80..87]: 3008..3015 6: [88..3479]: hole 7: [3480..3583]: 96..199 8: [3584..3599]: 1064..1079 9: [3600..3711]: 1744..1855 10: [3712..3767]: 2032..2087 11: [3768..3815]: 2192..2239 12: [3816..3831]: 2256..2271 13: [3832..3895]: 2280..2343 14: [3896..3935]: 2416..2455 15: [3936..3975]: 2464..2503 16: [3976..4071]: 2632..2727 17: [4072..4463]: hole 18: [4464..4471]: 2512..2519 19: [4472..4487]: 1000..1015 20: [4488..4495]: hole 21: [4496..4511]: 1160..1175 22: [4512..4575]: hole 23: [4576..4583]: 2000..2007 24: [4584..4631]: 1080..1127 25: [4632..4639]: hole 26: [4640..4663]: 1136..1159 27: [4664..4679]: 2008..2023 28: [4680..298991]: hole 29: [298992..299023]: 2728..2759 30: [299024..299127]: hole 31: [299128..299143]: 2760..2775 32: [299144..356103]: hole 33: [356104..356223]: 240..359 34: [356224..390023]: hole 35: [390024..390039]: 3032..3047 36: [390040..393847]: hole 37: [393848..393887]: 2856..2895 38: [393888..396711]: hole 39: [396712..396727]: 1032..1047 40: [396728..396743]: 2896..2911 41: [396744..396959]: hole 42: [396960..396975]: 2912..2927 43: [396976..397495]: hole 44: [397496..397511]: 1392..1407 45: [397512..397855]: hole 46: [397856..397879]: 2928..2951 47: [397880..397895]: hole 48: [397896..397911]: 1968..1983 49: [397912..397935]: hole 50: [397936..397951]: 1048..1063 51: [397952..397959]: 2272..2279 52: [397960..397967]: 2456..2463 53: [397968..398071]: hole 54: [398072..398103]: 1184..1215 55: [398104..398135]: 3048..3079 56: [398136..398151]: 1984..1999 57: [398152..398167]: 3080..3095 58: [398168..399639]: hole 59: [399640..399655]: 3096..3111 60: [399656..420575]: hole 61: [420576..420591]: 3112..3127 62: [420592..486767]: hole 63: [486768..486783]: 1216..1231 64: [486784..486991]: hole 65: [486992..487007]: 1232..1247 66: [487008..488071]: hole 67: [488072..488087]: 3128..3143 68: [488088..494023]: hole 69: [494024..494039]: 2088..2103 70: [494040..494175]: hole 71: [494176..494191]: 3144..3159 72: [494192..494495]: hole 73: [494496..494511]: 1248..1263 74: [494512..494519]: 2952..2959 75: [494520..495807]: hole 76: [495808..495823]: 3160..3175 77: [495824..496103]: hole 78: [496104..496119]: 3176..3191 79: [496120..496183]: hole 80: [496184..496231]: 2960..3007 81: [496232..496239]: hole 82: [496240..496255]: 3016..3031 83: [496256..496303]: hole 84: [496304..496319]: 3192..3207 85: [496320..510471]: hole 86: [510472..510487]: 2104..2119 87: [510488..510543]: hole 88: [510544..510559]: 2176..2191 89: [510560..939639]: hole 90: [939640..939655]: 1264..1279 91: [939656..998999]: hole 92: [999000..999015]: 1280..1295 93: [999016..1045607]: hole 94: [1045608..1045623]: 2120..2135 95: [1045624..1362151]: hole 96: [1362152..1362167]: 1328..1343 97: [1362168..1513727]: hole 98: [1513728..1513743]: 1312..1327 99: [1513744..1513823]: hole 100: [1513824..1513839]: 2776..2791 101: [1513840..1546375]: hole 102: [1546376..1546391]: 2792..2807 103: [1546392..1557199]: hole 104: [1557200..1557215]: 2808..2823 105: [1557216..1563711]: hole 106: [1563712..1563727]: 2824..2839 107: [1563728..1564167]: hole 108: [1564168..1564183]: 2840..2855 109: [1564184..1682495]: hole 110: [1682496..1682503]: 2344..2351 111: [1682504..1780503]: hole 112: [1780504..1780607]: 768..871 113: [1780608..1837999]: hole 114: [1838000..1838015]: 2136..2151 115: [1838016..1865223]: hole 116: [1865224..1865239]: 2160..2175 117: [1865240..1875359]: hole 118: [1875360..1875367]: 2240..2247 119: [1875368..1878679]: hole 120: [1878680..1878687]: 2152..2159 121: [1878688..1886607]: hole 122: [1886608..1886719]: 360..471 123: [1886720..1898679]: hole 124: [1898680..1898751]: 472..543 125: [1898752..1905519]: hole 126: [1905520..1905559]: 2552..2591 127: [1905560..1906359]: hole 128: [1906360..1906375]: 2352..2367 129: [1906376..1912095]: hole 130: [1912096..1912191]: 544..639 131: [1912192..1916703]: hole 132: [1916704..1916711]: 2368..2375 133: [1916712..1929999]: hole 134: [1930000..1930039]: 1544..1583 135: [1930040..1930151]: hole 136: [1930152..1930175]: 2392..2415 137: [1930176..1953935]: hole 138: [1953936..1953959]: 2608..2631 139: [1953960..1959895]: hole 140: [1959896..1959903]: 2592..2599 141: [1959904..1960455]: hole 142: [1960456..1960479]: 2528..2551 143: [1960480..1961495]: hole 144: [1961496..1961503]: 2024..2031 145: [1961504..1961511]: 2520..2527 146: [1961512..1965975]: hole 147: [1965976..1966039]: 1856..1919 148: [1966040..2023615]: hole 149: [2023616..2023631]: 2376..2391 150: [2023632..2171271]: hole 151: [2171272..2171279]: 1352..1359 152: [2171280..2317303]: hole 153: [2317304..2317359]: 704..759 154: [2317360..2341399]: hole 155: [2341400..2341415]: 1296..1311 156: [2341416..2660815]: hole 157: [2660816..2660823]: 2248..2255 158: [2660824..2664023]: hole 159: [2664024..2664071]: 1584..1631 160: [2664072..2670455]: hole 161: [2670456..2670487]: 1360..1391 162: [2670488..2678431]: hole 163: [2678432..2678503]: 872..943 164: [2678504..2685759]: hole 165: [2685760..2685815]: 944..999 166: [2685816..2700175]: hole 167: [2700176..2700183]: 1128..1135 168: [2700184..2707711]: hole 169: [2707712..2707719]: 1176..1183 170: [2707720..2721447]: hole 171: [2721448..2721495]: 1920..1967 172: [2721496..2767527]: hole 173: [2767528..2767639]: 1632..1743 174: [2767640..2811607]: hole 175: [2811608..2811615]: 1344..1351 176: [2811616..2811623]: 2600..2607 177: [2811624..2811671]: hole 178: [2811672..2811687]: 1408..1423 179: [2811688..2852159]: hole 180: [2852160..2852223]: 640..703 181: [2852224..3041159]: hole 182: [3041160..3041167]: 1424..1431 = From tm@tao.ma Sat May 5 10:07:34 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-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 q45F7XDI210984 for ; Sat, 5 May 2012 10:07:33 -0500 X-ASG-Debug-ID: 1336230451-04cbb03c16260e00001-NocioJ Received: from oproxy5-pub.bluehost.com (oproxy5-pub.bluehost.com [67.222.38.55]) by cuda.sgi.com with SMTP id iHaVouYWaCerj3nT for ; Sat, 05 May 2012 08:07:31 -0700 (PDT) X-Barracuda-Envelope-From: tm@tao.ma X-Barracuda-Apparent-Source-IP: 67.222.38.55 Received: (qmail 26489 invoked by uid 0); 5 May 2012 15:07:30 -0000 Received: from unknown (HELO box585.bluehost.com) (66.147.242.185) by cpoproxy2.bluehost.com with SMTP; 5 May 2012 15:07:30 -0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tao.ma; s=default; h=Message-Id:Date:Subject:To:From; bh=d+cX8nn0GDKNeeP3OAZDRNXsdblRl3uS0zpJU7xzP6o=; b=heOa2kW90V6PoAX7DzakkZzYomYs4slazchPkkzVaUjYh9gEj5ZJ46xlyTJKAGZWe4gyBnO0KY6QgsoSbZM7GynL4tG+UEdieX5Fq9DH0uQNZ1eQb+0SLtmP0SnUfTX3; Received: from [221.217.53.106] (helo=tma-laptop1.taobao.ali.com) by box585.bluehost.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.76) (envelope-from ) id 1SQga1-0006WS-MW for xfs@oss.sgi.com; Sat, 05 May 2012 09:07:30 -0600 From: Tao Ma To: xfs@oss.sgi.com Subject: [PATCH] xfstests: make 275 xfs specific. Date: Sat, 5 May 2012 23:07:09 +0800 X-ASG-Orig-Subj: [PATCH] xfstests: make 275 xfs specific. Message-Id: <1336230429-2939-1-git-send-email-tm@tao.ma> X-Mailer: git-send-email 1.7.5.4 X-Identified-User: {1390:box585.bluehost.com:colyli:tao.ma} {sentby:smtp auth 221.217.53.106 authed with tm@tao.ma} X-Barracuda-Connect: oproxy5-pub.bluehost.com[67.222.38.55] X-Barracuda-Start-Time: 1336230451 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96070 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 From: Tao Ma In my test with ext4, 275 can't pass because ext4 can create a 8k file in the end not like what xfs does. So make this test case xfs only for now. Signed-off-by: Tao Ma --- 275 | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/275 b/275 index 214262e..3386a59 100755 --- a/275 +++ b/275 @@ -44,7 +44,7 @@ _cleanup() . ./common.filter # real QA test starts here -_supported_fs generic +_supported_fs xfs _supported_os IRIX Linux _require_scratch -- 1.7.1 From david@fromorbit.com Sat May 5 18:31:43 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q45NVgX8017010 for ; Sat, 5 May 2012 18:31:43 -0500 X-ASG-Debug-ID: 1336260700-04bdf034ed25acb0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id S8leQnEb9YcLPTQw for ; Sat, 05 May 2012 16:31:41 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EADS4pU95LM06/2dsb2JhbABFsnGBCIIMAQEFOhwjEAgDDgouFCUDIROIDblrE4pshT1jBJV9iVuGaIJ7 Received: from ppp121-44-205-58.lns20.syd7.internode.on.net (HELO dastard) ([121.44.205.58]) by ipmail05.adl6.internode.on.net with ESMTP; 06 May 2012 09:01:35 +0930 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1SQoRp-0005lI-8Q; Sun, 06 May 2012 09:31:33 +1000 Date: Sun, 6 May 2012 09:31:33 +1000 From: Dave Chinner To: Peter Watkins Cc: xfs@oss.sgi.com Subject: Re: deadlock below xfs_ialloc, when radix_tree_preload goes into reclaim? Message-ID: <20120505233133.GD25351@dastard> X-ASG-Orig-Subj: Re: deadlock below xfs_ialloc, when radix_tree_preload goes into reclaim? 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-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1336260700 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96104 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, May 04, 2012 at 05:55:21PM -0400, Peter Watkins wrote: > Greetings, > > Anyone seen a deadlock like the one below? It's a 17TB system with 32 > bit inodes and it's doing lots of inode allocations at the same time. > So you might consider it a stress test for inode alloc activity on a > single AG. > > xfs_ialloc called xfs_dialloc and got the agi header buf, then it > called xfs_iget which went into reclaim during radix_tree_preload. > While trying to shrink the inode cache, xfs_iunlink_remove tries to > get the same agi header buf. > > With 64 bit inodes you'd be less likely to hit this path, but it's > still possible, no? > > Should this call to radix_tree_preload use GFP_NOFS? Yes, because xfs_iget canbe called from transaction context. Can you send a patch for the current TOT kernel? Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sat May 5 18:37:53 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q45NbrOt017863 for ; Sat, 5 May 2012 18:37:53 -0500 X-ASG-Debug-ID: 1336261070-04cb6c24fb241050001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id ZDNggeAu7Ww7DzaQ for ; Sat, 05 May 2012 16:37:51 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAEe5pU95LM06/2dsb2JhbABFsnGBCIIMAQEFOhwjEAgDDgcDLhQlAyETiA25bBOKbIU9YwSVfZBDgns Received: from ppp121-44-205-58.lns20.syd7.internode.on.net (HELO dastard) ([121.44.205.58]) by ipmail05.adl6.internode.on.net with ESMTP; 06 May 2012 09:07:50 +0930 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1SQoXo-0005mF-K8; Sun, 06 May 2012 09:37:44 +1000 Date: Sun, 6 May 2012 09:37:44 +1000 From: Dave Chinner To: Tao Ma Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfstests: make 275 xfs specific. Message-ID: <20120505233744.GE25351@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: make 275 xfs specific. References: <1336230429-2939-1-git-send-email-tm@tao.ma> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1336230429-2939-1-git-send-email-tm@tao.ma> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1336261070 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96104 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, May 05, 2012 at 11:07:09PM +0800, Tao Ma wrote: > From: Tao Ma > > In my test with ext4, 275 can't pass because ext4 > can create a 8k file in the end not like what xfs > does. So make this test case xfs only for now. It's not an XFS specific test - it's a test that is supposed to test POSIX write behaviour. i.e. if the filesystem is full, and then you free 4k of space, then an 8k write should only be able to write 4k, yes? So doesn't a failure on ext4 indicate that there's something wrong with ext4 (either it's ENOSPC detection or the short write handling), not the test? Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sat May 5 18:40:32 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q45NeW6i018311 for ; Sat, 5 May 2012 18:40:32 -0500 X-ASG-Debug-ID: 1336261229-04cbb03c1427ac50001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id GMFi4hRLTWn90e0E for ; Sat, 05 May 2012 16:40:30 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAEe5pU95LM06/2dsb2JhbABFsnGBCIIMAQEFOhwjEAgDDgouFCUDIROIDblsE4pshT1jBJV9kEOCew Received: from ppp121-44-205-58.lns20.syd7.internode.on.net (HELO dastard) ([121.44.205.58]) by ipmail05.adl6.internode.on.net with ESMTP; 06 May 2012 09:10:28 +0930 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1SQoaS-0005mW-EY; Sun, 06 May 2012 09:40:28 +1000 Date: Sun, 6 May 2012 09:40:28 +1000 From: Dave Chinner To: Alexey Vlasov Cc: Christoph Hellwig , xfs@oss.sgi.com Subject: Re: Cleancache support in XFS Message-ID: <20120505234028.GF25351@dastard> X-ASG-Orig-Subj: Re: Cleancache support in XFS References: <20120430173112.GA16257@beaver> <20120430191218.GA23530@infradead.org> <20120502080220.GA20504@beaver> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120502080220.GA20504@beaver> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1336261229 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96104 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, May 02, 2012 at 12:02:20PM +0400, Alexey Vlasov wrote: > On Mon, Apr 30, 2012 at 03:12:18PM -0400, Christoph Hellwig wrote: > > > > > > Could you please tell me if you are planning to support cleancache in > > > XFS? > > > > As soon as someone submits a patch. In theory it should just work, but > > the cleancache maintainer require a completely idiotic one liner to > > actually enable it. Feel free to submit it once you actually tested it. > > Cleancache_init_fs () I can actually put where it it should be but I > think it won't be enough. I think there some hooks needed (as for brtfs) > but I can't fix it as I'm far from programming. XFS uses mpage_readpages() so doesn't need other hooks. btrfs has it's own readpage path, so needs them for that. Cheers, Dave. -- Dave Chinner david@fromorbit.com From b.candler@pobox.com Sun May 6 03:47:59 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-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 q468lxe7163841 for ; Sun, 6 May 2012 03:47:59 -0500 X-ASG-Debug-ID: 1336294078-04cb6c24fa2526a0001-NocioJ Received: from smtp.pobox.com (b-pb-sasl-quonix.pobox.com [208.72.237.35]) by cuda.sgi.com with ESMTP id nE4lHVO0JIEpqLBT for ; Sun, 06 May 2012 01:47:58 -0700 (PDT) X-Barracuda-Envelope-From: b.candler@pobox.com X-Barracuda-Apparent-Source-IP: 208.72.237.35 Received: from smtp.pobox.com (unknown [127.0.0.1]) by b-sasl-quonix.pobox.com (Postfix) with ESMTP id D3C0C5D27; Sun, 6 May 2012 04:47:57 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=date:from:to :cc:subject:message-id:references:mime-version:content-type :in-reply-to; s=sasl; bh=Q+FRUQg+wPJ30q9w+iXvnwuY98U=; b=RET3yyr KzDNJCygtk1x57Tut6RvTju/uukw41uVUGt3Zx0hvojqkdbpF1ZeoiB/ic/qSYAH Shf0DCtXGuet6ECiYsVeoWTXEla/3KxxWRBBFqG2p4qewNxfXiNnYOqmsNTyb//K uoNb9QcKZhMTLx8RswORuYIYwsFgW9as+Yyg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=date:from:to:cc :subject:message-id:references:mime-version:content-type :in-reply-to; q=dns; s=sasl; b=dM7J+g1R3ulVPpNpF9zlZO2+BUvc1bLvb QJ5AGZ5O2CAFGNN4jWjLRVoVSxBefXpdBvShHEJ2mdJ8uXsEFK/wwk5KPqjOaESn UOxjP2llrISAJPUzcNg/p8llc9jPsuNKKArg7n+DRcbEG5xq5eBK7ffrEVZ9U/46 6ZKapIQDWM= Received: from b-pb-sasl-quonix.pobox.com (unknown [127.0.0.1]) by b-sasl-quonix.pobox.com (Postfix) with ESMTP id C76365D25; Sun, 6 May 2012 04:47:57 -0400 (EDT) Received: from Brians-MacBook-Air.local (unknown [212.60.89.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by b-sasl-quonix.pobox.com (Postfix) with ESMTPSA id 621625D1E; Sun, 6 May 2012 04:47:57 -0400 (EDT) Received: from brian by Brians-MacBook-Air.local with local (Exim 4.77) (envelope-from ) id M3LF3V-0005ZJ-AC; Sun, 06 May 2012 08:47:55 +0000 Date: Sun, 6 May 2012 08:47:55 +0000 From: Brian Candler To: Stan Hoeppner Cc: xfs@oss.sgi.com Subject: Re: Storage server, hung tasks and tracebacks Message-ID: <20120506084755.GC7633@nsrc.org> X-ASG-Orig-Subj: Re: Storage server, hung tasks and tracebacks References: <20120502184450.GA2557@nsrc.org> <4FA27EF8.6040002@hardwarefreak.com> <20120503204157.GC4387@nsrc.org> <4FA3047D.8060908@hardwarefreak.com> <20120504163237.GA6128@nsrc.org> <4FA4C321.2070105@hardwarefreak.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4FA4C321.2070105@hardwarefreak.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Pobox-Relay-ID: 2D805142-9758-11E1-9C92-FC762E706CDE-28021239!b-pb-sasl-quonix.pobox.com X-Barracuda-Connect: b-pb-sasl-quonix.pobox.com[208.72.237.35] X-Barracuda-Start-Time: 1336294078 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96142 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 On Sat, May 05, 2012 at 01:05:21AM -0500, Stan Hoeppner wrote: > Did I already mention checking the AC lines feeding these 3 boxes? > Assuming they're on UPS are the boost/buck features working properly? > Is your area known for fantastic clean power or dirty power with lots of > sags? That's the first thing I'd suspect with 3 new machines all > behaving this way. We thought that too. These boxes are installed in a data centre; however we just took power to a new rack and these three machines are installed in there, so it's not impossible there's a problem with the feed to that rack. We did have some machines on the A and B PDUs in this rack, but we may also try powering one from an adjacent rack. Many thanks for your helpful suggestions, and we are working through this with the equipment supplier (who is extraordinarily helpful and knowledgeable and as keen to get to the bottom of this as we are). I'll certainly let you know when we have a resolution. Regards, Brian. From s.priebe@profihost.ag Sun May 6 04:01:06 2012 X-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_27 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 q46916SC165858 for ; Sun, 6 May 2012 04:01:06 -0500 X-ASG-Debug-ID: 1336294863-04cb6c24fb252c80001-NocioJ Received: from mail.profihost.ag (mail.profihost.ag [85.158.179.208]) by cuda.sgi.com with ESMTP id 3v7j7ZnDaAgiSrOF (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 06 May 2012 02:01:04 -0700 (PDT) X-Barracuda-Envelope-From: s.priebe@profihost.ag X-Barracuda-Apparent-Source-IP: 85.158.179.208 Received: (qmail 3894 invoked from network); 6 May 2012 11:01:03 +0200 Received: from fw-office.allied-internet.ag (HELO [10.23.66.100]) (85.158.179.66) (smtp-auth username s.priebe@profihost.ag, mechanism plain) by mail.profihost.ag (qpsmtpd/0.82) with (AES256-SHA encrypted) ESMTPSA; Sun, 06 May 2012 11:01:03 +0200 Message-ID: <4FA63DDA.9070707@profihost.ag> Date: Sun, 06 May 2012 11:01:14 +0200 From: Stefan Priebe User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20120428 Thunderbird/12.0.1 MIME-Version: 1.0 To: "xfs@oss.sgi.com" Subject: suddenly slow writes on XFS Filesystem Content-Type: text/plain; charset=ISO-8859-15; format=flowed X-ASG-Orig-Subj: suddenly slow writes on XFS Filesystem Content-Transfer-Encoding: 7bit X-User-Auth: Auth by s.priebe@profihost.ag through 85.158.179.66 X-Barracuda-Connect: mail.profihost.ag[85.158.179.208] X-Barracuda-Start-Time: 1336294864 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96142 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi, since a few days i've experienced a really slow fs on one of our backup systems. I'm not sure whether this is XFS related or related to the Controller / Disks. It is a raid 10 of 20 SATA Disks and i can only write to them with about 700kb/s while doing random i/o. I tried vanilla Kernel 3.0.30 and 3.3.4 - no difference. Writing to another partition on another xfs array works fine. Details: #~ df -h /dev/sdb1 4,6T 4,4T 207G 96% /mnt #~ df -i /dev/sdb1 4875737052 4659318044 216419008 96% /mnt #~ xfs_db -c frag -r /dev/sdb1 actual 83160469, ideal 82145389, fragmentation factor 1,22% #~ xfs_info /dev/sdb1 meta-data=/dev/sdb1 isize=256 agcount=5, agsize=268435392 blks = sectsz=512 attr=2 data = bsize=4096 blocks=1218967031, imaxpct=5 = sunit=64 swidth=1280 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=32768, version=2 = sectsz=512 sunit=64 blks, lazy-count=0 realtime =none extsz=4096 blocks=0, rtextents=0 #~ cat /proc/mounts /dev/sdb1 /mnt xfs rw,noatime,nodiratime,attr2,nobarrier,logbufs=8,logbsize=256k,sunit=512,swidth=10240,prjquota 0 0 Any ideas? Stefan From Martin@lichtvoll.de Sun May 6 05:31:54 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q46AVrNa184661 for ; Sun, 6 May 2012 05:31:53 -0500 X-ASG-Debug-ID: 1336300311-04cb6c24fb257ba0001-NocioJ Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id 8POigXoDOHXeBlxG for ; Sun, 06 May 2012 03:31:51 -0700 (PDT) X-Barracuda-Envelope-From: Martin@lichtvoll.de X-Barracuda-Apparent-Source-IP: 194.150.191.11 Received: from merkaba.localnet (ppp-93-104-134-248.dynamic.mnet-online.de [93.104.134.248]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 03E3CF3; Sun, 6 May 2012 12:31:51 +0200 (CEST) From: Martin Steigerwald To: xfs@oss.sgi.com Subject: Re: suddenly slow writes on XFS Filesystem Date: Sun, 6 May 2012 12:31:50 +0200 X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem User-Agent: KMail/1.13.7 (Linux/3.3.0-trunk-amd64; KDE/4.7.4; x86_64; ; ) References: <4FA63DDA.9070707@profihost.ag> (sfid-20120506_121127_622020_FC89E0F4) In-Reply-To: <4FA63DDA.9070707@profihost.ag> Cc: Stefan Priebe MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201205061231.50526.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1336300311 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=BSF_SC0_SA085 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96148 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 BSF_SC0_SA085 Custom Rule SA085 Am Sonntag, 6. Mai 2012 schrieb Stefan Priebe: > Hi, Hi Stefan, > since a few days i've experienced a really slow fs on one of our > backup systems. > > I'm not sure whether this is XFS related or related to the Controller > / Disks. > > It is a raid 10 of 20 SATA Disks and i can only write to them with > about 700kb/s while doing random i/o. I tried vanilla Kernel 3.0.30 > and 3.3.4 - no difference. Writing to another partition on another xfs > array works fine. How do you measure the 700 KB/s? Anything in dmesg? I and likely others here would be interested in vmstat and iostat outputs during slowness. See: http://xfs.org/index.php/XFS_FAQ#Q:_What_information_should_I_include_when_reporting_a_problem.3F Ciao, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From Martin@lichtvoll.de Sun May 6 05:34:00 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q46AY0io185190 for ; Sun, 6 May 2012 05:34:00 -0500 X-ASG-Debug-ID: 1336300439-04cbb03c14294a10001-NocioJ Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id xIAEvRyOZ2DinVpq for ; Sun, 06 May 2012 03:33:59 -0700 (PDT) X-Barracuda-Envelope-From: Martin@lichtvoll.de X-Barracuda-Apparent-Source-IP: 194.150.191.11 Received: from merkaba.localnet (ppp-93-104-134-248.dynamic.mnet-online.de [93.104.134.248]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 04926F3; Sun, 6 May 2012 12:33:59 +0200 (CEST) From: Martin Steigerwald To: xfs@oss.sgi.com Subject: Re: suddenly slow writes on XFS Filesystem Date: Sun, 6 May 2012 12:33:58 +0200 X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem User-Agent: KMail/1.13.7 (Linux/3.3.0-trunk-amd64; KDE/4.7.4; x86_64; ; ) Cc: Stefan Priebe References: <4FA63DDA.9070707@profihost.ag> (sfid-20120506_121127_622020_FC89E0F4) In-Reply-To: <4FA63DDA.9070707@profihost.ag> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201205061233.58496.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1336300439 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96148 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Am Sonntag, 6. Mai 2012 schrieb Stefan Priebe: > It is a raid 10 of 20 SATA Disks and i can only write to them with > about 700kb/s while doing random i/o. I tried vanilla Kernel 3.0.30 > and 3.3.4 - no difference. Writing to another partition on another xfs > array works fine. Additionally what RAID is this? SoftRAID or some - which one? - hardware RAID controller? And what disks are used, whats the rpm of these? -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From tm@tao.ma Sun May 6 10:03:32 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-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 q46F3WZ6247827 for ; Sun, 6 May 2012 10:03:32 -0500 X-ASG-Debug-ID: 1336316607-04cb6c24fa2625e0001-NocioJ Received: from oproxy9.bluehost.com (oproxy9.bluehost.com [69.89.24.6]) by cuda.sgi.com with SMTP id 2nr9GZ452lRV13Gp for ; Sun, 06 May 2012 08:03:28 -0700 (PDT) X-Barracuda-Envelope-From: tm@tao.ma X-Barracuda-Apparent-Source-IP: 69.89.24.6 Received: (qmail 7537 invoked by uid 0); 6 May 2012 15:03:26 -0000 Received: from unknown (HELO box585.bluehost.com) (66.147.242.185) by oproxy9.bluehost.com with SMTP; 6 May 2012 15:03:26 -0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tao.ma; s=default; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:References:Subject:CC:To:MIME-Version:From:Date:Message-ID; bh=GcFLF+0md0DHuFpWRWeq4kIICeruiq8W10BHZ2zeJrM=; b=eAqTHJtgvrW+y7RtgrmrM7B7yAujv+2JfzYCE0U2TOvUt9bPlH+7AEOSp1IXKIKHGwdQ1+oNj4rTWxzNPnwO7N5fAxBl9zwTX4zRGG7VaGGyPfgM7wKPqForxfr3SKUO; Received: from [111.193.11.7] (helo=[192.168.0.102]) by box585.bluehost.com with esmtpsa (TLSv1:CAMELLIA256-SHA:256) (Exim 4.76) (envelope-from ) id 1SR2ze-0008GU-5I; Sun, 06 May 2012 09:03:26 -0600 Message-ID: <4FA692B7.9040006@tao.ma> Date: Sun, 06 May 2012 23:03:19 +0800 From: Tao Ma User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20120329 Thunderbird/11.0.1 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH] xfstests: make 275 xfs specific. References: <1336230429-2939-1-git-send-email-tm@tao.ma> <20120505233744.GE25351@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: make 275 xfs specific. In-Reply-To: <20120505233744.GE25351@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Identified-User: {1390:box585.bluehost.com:colyli:tao.ma} {sentby:smtp auth 111.193.11.7 authed with tm@tao.ma} X-Barracuda-Connect: oproxy9.bluehost.com[69.89.24.6] X-Barracuda-Start-Time: 1336316607 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96166 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 On 05/06/2012 07:37 AM, Dave Chinner wrote: > On Sat, May 05, 2012 at 11:07:09PM +0800, Tao Ma wrote: >> From: Tao Ma >> >> In my test with ext4, 275 can't pass because ext4 >> can create a 8k file in the end not like what xfs >> does. So make this test case xfs only for now. > > It's not an XFS specific test - it's a test that is supposed to test > POSIX write behaviour. i.e. if the filesystem is full, and then you > free 4k of space, then an 8k write should only be able to write 4k, > yes? Yes, but it doesn't work as expected for ext4. > > So doesn't a failure on ext4 indicate that there's something wrong > with ext4 (either it's ENOSPC detection or the short write > handling), not the test? Actually in my test, ext4 can create the file with 8K file size, not a short write. I haven't looked into it yet. But AFAICS, if we have an ext4 volume with 8k cluster size, a 4k file can occupy a 8k cluster and the final write of 8k will succeed instead of the short write. Thanks Tao From stan@hardwarefreak.com Sun May 6 10:45:53 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q46Fjr3c256522 for ; Sun, 6 May 2012 10:45:53 -0500 X-ASG-Debug-ID: 1336319152-04bdf034f0281f50001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id 3blCj0ZJll34Ev9K for ; Sun, 06 May 2012 08:45:52 -0700 (PDT) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id B81AE6C0C4; Sun, 6 May 2012 10:45:51 -0500 (CDT) Message-ID: <4FA69CB0.8000008@hardwarefreak.com> Date: Sun, 06 May 2012 10:45:52 -0500 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20120428 Thunderbird/12.0.1 MIME-Version: 1.0 To: Martin Steigerwald CC: xfs@oss.sgi.com, Stefan Priebe Subject: Re: suddenly slow writes on XFS Filesystem References: <4FA63DDA.9070707@profihost.ag> (sfid-20120506_121127_622020_FC89E0F4) <201205061233.58496.Martin@lichtvoll.de> X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem In-Reply-To: <201205061233.58496.Martin@lichtvoll.de> 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: 1336319152 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=BSF_SC5_SA210e, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96168 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.00 BSF_SC5_SA210e Custom Rule SA210e On 5/6/2012 5:33 AM, Martin Steigerwald wrote: > Am Sonntag, 6. Mai 2012 schrieb Stefan Priebe: >> It is a raid 10 of 20 SATA Disks and i can only write to them with >> about 700kb/s while doing random i/o. I tried vanilla Kernel 3.0.30 >> and 3.3.4 - no difference. Writing to another partition on another xfs >> array works fine. > > Additionally what RAID is this? SoftRAID or some - which one? - hardware > RAID controller? And what disks are used, whats the rpm of these? I doubt much of this stuff matters. Stefan's filesystem is 96% full, w/~200GB free. This free space is likely heavily fragmented. If he's doing allocation in this fragmented free space I'd think that would fully explain his write performance dropping off a cliff due to massive head seeking. -- Stan From s.priebe@profihost.ag Sun May 6 14:25:05 2012 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,TO_NO_BRKTS_PCNT 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 q46JP41G033651 for ; Sun, 6 May 2012 14:25:05 -0500 X-ASG-Debug-ID: 1336332300-04bdf034ed28c4f0001-NocioJ Received: from mail.profihost.ag (mail.profihost.ag [85.158.179.208]) by cuda.sgi.com with ESMTP id 8iagDQ3nCEjhknBe (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 06 May 2012 12:25:02 -0700 (PDT) X-Barracuda-Envelope-From: s.priebe@profihost.ag X-Barracuda-Apparent-Source-IP: 85.158.179.208 Received: (qmail 13351 invoked from network); 6 May 2012 21:24:59 +0200 Received: from fw-office.allied-internet.ag (HELO [10.23.66.100]) (85.158.179.66) (smtp-auth username s.priebe@profihost.ag, mechanism plain) by mail.profihost.ag (qpsmtpd/0.82) with (AES256-SHA encrypted) ESMTPSA; Sun, 06 May 2012 21:24:59 +0200 Message-ID: <4FA6D016.6010702@profihost.ag> Date: Sun, 06 May 2012 21:25:10 +0200 From: Stefan Priebe User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20120428 Thunderbird/12.0.1 MIME-Version: 1.0 To: stan@hardwarefreak.com CC: Martin Steigerwald , xfs@oss.sgi.com Subject: Re: suddenly slow writes on XFS Filesystem References: <4FA63DDA.9070707@profihost.ag> (sfid-20120506_121127_622020_FC89E0F4) <201205061233.58496.Martin@lichtvoll.de> <4FA69CB0.8000008@hardwarefreak.com> X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem In-Reply-To: <4FA69CB0.8000008@hardwarefreak.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-User-Auth: Auth by s.priebe@profihost.ag through 85.158.179.66 X-Barracuda-Connect: mail.profihost.ag[85.158.179.208] X-Barracuda-Start-Time: 1336332301 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96184 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e Am 06.05.2012 17:45, schrieb Stan Hoeppner: > On 5/6/2012 5:33 AM, Martin Steigerwald wrote: >> Am Sonntag, 6. Mai 2012 schrieb Stefan Priebe: >>> It is a raid 10 of 20 SATA Disks and i can only write to them with >>> about 700kb/s while doing random i/o. I tried vanilla Kernel 3.0.30 >>> and 3.3.4 - no difference. Writing to another partition on another xfs >>> array works fine. >> >> Additionally what RAID is this? SoftRAID or some - which one? - hardware >> RAID controller? And what disks are used, whats the rpm of these? > > I doubt much of this stuff matters. Stefan's filesystem is 96% full, > w/~200GB free. This free space is likely heavily fragmented. If he's > doing allocation in this fragmented free space I'd think that would > fully explain his write performance dropping off a cliff due to massive > head seeking. > Thanks Stan that's it. After deleting 200GB-300GB it's running fine again. What is the general recommandation of free space? Greets Stefan From Martin@lichtvoll.de Sun May 6 16:43:27 2012 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,TO_NO_BRKTS_PCNT 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 q46LhRWF060586 for ; Sun, 6 May 2012 16:43:27 -0500 X-ASG-Debug-ID: 1336340605-04bdf034ee290ba0001-NocioJ Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id MkmiDENVAmBjbg1B for ; Sun, 06 May 2012 14:43:25 -0700 (PDT) X-Barracuda-Envelope-From: Martin@lichtvoll.de X-Barracuda-Apparent-Source-IP: 194.150.191.11 Received: from merkaba.localnet (ppp-88-217-102-15.dynamic.mnet-online.de [88.217.102.15]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 353E5F3; Sun, 6 May 2012 23:43:25 +0200 (CEST) From: Martin Steigerwald To: stan@hardwarefreak.com Subject: Re: suddenly slow writes on XFS Filesystem Date: Sun, 6 May 2012 23:43:21 +0200 X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem User-Agent: KMail/1.13.7 (Linux/3.3.0-trunk-amd64; KDE/4.7.4; x86_64; ; ) Cc: xfs@oss.sgi.com, Stefan Priebe References: <4FA63DDA.9070707@profihost.ag> <201205061233.58496.Martin@lichtvoll.de> <4FA69CB0.8000008@hardwarefreak.com> (sfid-20120506_233742_387085_AFEABC59) (sfid-20120506_233742_387085_AFEABC59) In-Reply-To: <4FA69CB0.8000008@hardwarefreak.com> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201205062343.21871.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1336340605 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96192 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e Am Sonntag, 6. Mai 2012 schrieb Stan Hoeppner: > On 5/6/2012 5:33 AM, Martin Steigerwald wrote: > > Am Sonntag, 6. Mai 2012 schrieb Stefan Priebe: > >> It is a raid 10 of 20 SATA Disks and i can only write to them with > >> about 700kb/s while doing random i/o. I tried vanilla Kernel 3.0.30 > >> and 3.3.4 - no difference. Writing to another partition on another > >> xfs array works fine. > > > > Additionally what RAID is this? SoftRAID or some - which one? - > > hardware RAID controller? And what disks are used, whats the rpm of > > these? > > I doubt much of this stuff matters. Stefan's filesystem is 96% full, > w/~200GB free. This free space is likely heavily fragmented. If he's > doing allocation in this fragmented free space I'd think that would > fully explain his write performance dropping off a cliff due to massive > head seeking. Hmmm, I thought about that low free space percentage, too, but then 200 GB free still sounded like quite much to me. Nonetheless, since according to Stefan freeing some space solved the slowness issue, that seems to have been it. Can free space be defragmented in XFS? xfs_fsr only tries to defragment files as far as I know. Thanks, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From david@fromorbit.com Sun May 6 20:23:10 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q471NAtY142307 for ; Sun, 6 May 2012 20:23:10 -0500 X-ASG-Debug-ID: 1336353787-04bdf034ee296bc0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id txqLFm20GT5hqpQH for ; Sun, 06 May 2012 18:23:07 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EANkip095LM06/2dsb2JhbABEsm6BCIIMAQEEATocIxAIAw4HAy4UJQMhE4gJBLl0E4pshiAElX2QQ4J7 Received: from ppp121-44-205-58.lns20.syd7.internode.on.net (HELO dastard) ([121.44.205.58]) by ipmail06.adl6.internode.on.net with ESMTP; 07 May 2012 10:53:06 +0930 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1SRCfI-0007y1-Eu; Mon, 07 May 2012 11:23:04 +1000 Date: Mon, 7 May 2012 11:23:04 +1000 From: Dave Chinner To: Tao Ma Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfstests: make 275 xfs specific. Message-ID: <20120507012304.GV5091@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: make 275 xfs specific. References: <1336230429-2939-1-git-send-email-tm@tao.ma> <20120505233744.GE25351@dastard> <4FA692B7.9040006@tao.ma> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4FA692B7.9040006@tao.ma> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1336353787 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96208 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, May 06, 2012 at 11:03:19PM +0800, Tao Ma wrote: > On 05/06/2012 07:37 AM, Dave Chinner wrote: > > On Sat, May 05, 2012 at 11:07:09PM +0800, Tao Ma wrote: > >> From: Tao Ma > >> > >> In my test with ext4, 275 can't pass because ext4 > >> can create a 8k file in the end not like what xfs > >> does. So make this test case xfs only for now. > > > > It's not an XFS specific test - it's a test that is supposed to test > > POSIX write behaviour. i.e. if the filesystem is full, and then you > > free 4k of space, then an 8k write should only be able to write 4k, > > yes? > Yes, but it doesn't work as expected for ext4. It won't work as expected for many XFS configurations, too. e.g. filesystem block size > 4k on 16/64k page machines, or if the filesystem is configured with an inheritable extent size hint on the root directory (XFS has been able to do per-file "bigalloc" for years ;) > > So doesn't a failure on ext4 indicate that there's something wrong > > with ext4 (either it's ENOSPC detection or the short write > > handling), not the test? > Actually in my test, ext4 can create the file with 8K file size, not a > short write. I haven't looked into it yet. But AFAICS, if we have an > ext4 volume with 8k cluster size, a 4k file can occupy a 8k cluster and > the final write of 8k will succeed instead of the short write. IOws, you are testing with bigalloc? Many tests make the assumption that allocation/extent size is the same as the filesystem block size, and many more make the assumption that the filesystem block size is always 4k. These tests generally fail on differently configured filesystems, and so need massaging to make work on these sorts of configs. In this case, just make the write larger than the largest possible allocation size (say 2MB), and fail the test if the write is complete rather than short... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun May 6 20:35:06 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q471Z5u0144893 for ; Sun, 6 May 2012 20:35:05 -0500 X-ASG-Debug-ID: 1336354503-04cbb03c152ba200001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id EAWo6udasvlTJdqu for ; Sun, 06 May 2012 18:35:04 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAF8mp095LM06/2dsb2JhbABEsm6BCIIMAQEEATocIwULCAMOCi4UJQMhE4gJBLl3E4psAoYeBJV9kEOCew Received: from ppp121-44-205-58.lns20.syd7.internode.on.net (HELO dastard) ([121.44.205.58]) by ipmail06.adl6.internode.on.net with ESMTP; 07 May 2012 11:04:58 +0930 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1SRCqm-0007zt-2d; Mon, 07 May 2012 11:34:56 +1000 Date: Mon, 7 May 2012 11:34:56 +1000 From: Dave Chinner To: Stefan Priebe Cc: "xfs@oss.sgi.com" Subject: Re: suddenly slow writes on XFS Filesystem Message-ID: <20120507013456.GW5091@dastard> X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem References: <4FA63DDA.9070707@profihost.ag> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4FA63DDA.9070707@profihost.ag> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1336354504 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96208 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, May 06, 2012 at 11:01:14AM +0200, Stefan Priebe wrote: > Hi, > > since a few days i've experienced a really slow fs on one of our > backup systems. > > I'm not sure whether this is XFS related or related to the > Controller / Disks. > > It is a raid 10 of 20 SATA Disks and i can only write to them with > about 700kb/s while doing random i/o. What sort of random IO? size, read, write, direct or buffered, data or metadata, etc? iostat -x -d -m 5 and vmstat 5 traces would be useful to see if it is your array that is slow..... > I tried vanilla Kernel 3.0.30 > and 3.3.4 - no difference. Writing to another partition on another > xfs array works fine. > > Details: > #~ df -h > /dev/sdb1 4,6T 4,4T 207G 96% /mnt Your filesystem is near full - the allocation algorithms definitely slow down as you approach ENOSPC, and IO efficiency goes to hell because of a lack of contiguous free space to allocate from. > #~ df -i > /dev/sdb1 4875737052 4659318044 216419008 96% /mnt You have 4.6 *billion* inodes in your filesystem? > Any ideas? None until I understand your workload.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun May 6 20:40:01 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q471e1Nn146289 for ; Sun, 6 May 2012 20:40:01 -0500 X-ASG-Debug-ID: 1336354799-04cbb03c142ba460001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id BStcYXIaSU8rCe7y for ; Sun, 06 May 2012 18:39:59 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAJgnp095LM06/2dsb2JhbABEsm6BCIIMAQEFOhwjEAgDDgouFCUDIROIDbl2E4pshiAElX2QQ4J7gUQZ Received: from ppp121-44-205-58.lns20.syd7.internode.on.net (HELO dastard) ([121.44.205.58]) by ipmail06.adl6.internode.on.net with ESMTP; 07 May 2012 11:09:42 +0930 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1SRCvM-00080Z-VB; Mon, 07 May 2012 11:39:40 +1000 Date: Mon, 7 May 2012 11:39:40 +1000 From: Dave Chinner To: Stefan Priebe Cc: stan@hardwarefreak.com, xfs@oss.sgi.com Subject: Re: suddenly slow writes on XFS Filesystem Message-ID: <20120507013940.GX5091@dastard> X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem References: <4FA63DDA.9070707@profihost.ag> <201205061233.58496.Martin@lichtvoll.de> <4FA69CB0.8000008@hardwarefreak.com> <4FA6D016.6010702@profihost.ag> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4FA6D016.6010702@profihost.ag> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1336354799 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96208 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e On Sun, May 06, 2012 at 09:25:10PM +0200, Stefan Priebe wrote: > Am 06.05.2012 17:45, schrieb Stan Hoeppner: > >On 5/6/2012 5:33 AM, Martin Steigerwald wrote: > >>Am Sonntag, 6. Mai 2012 schrieb Stefan Priebe: > >>>It is a raid 10 of 20 SATA Disks and i can only write to them with > >>>about 700kb/s while doing random i/o. I tried vanilla Kernel 3.0.30 > >>>and 3.3.4 - no difference. Writing to another partition on another xfs > >>>array works fine. > >> > >>Additionally what RAID is this? SoftRAID or some - which one? - hardware > >>RAID controller? And what disks are used, whats the rpm of these? > > > >I doubt much of this stuff matters. Stefan's filesystem is 96% full, > >w/~200GB free. This free space is likely heavily fragmented. If he's > >doing allocation in this fragmented free space I'd think that would > >fully explain his write performance dropping off a cliff due to massive > >head seeking. > > > Thanks Stan that's it. After deleting 200GB-300GB it's running fine again. > > What is the general recommandation of free space? Depends on the size of the filesystem. If you've got a 500TB filesystem, then running at 98% full (10TB of free space) is not going to be a big deal. But running at 98% full on a 5TB volume is a big deal because there is relatively little freespace per AG and it will get rapidly fragmented. So for a 5TB volume, I' say don't run sustained operations at over 90% full. Going above this temporarily won't be a problem, but staying at >95% full will definitely cause accelerated aging of the filesystem. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun May 6 20:53:26 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q471rQYx148547 for ; Sun, 6 May 2012 20:53:26 -0500 X-ASG-Debug-ID: 1336355604-04bdf034f0297950001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id oQ4fvWCYTMBCf0dD for ; Sun, 06 May 2012 18:53:24 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av4EAAsqp095LM06/2dsb2JhbABEsm6BCIIMAQEEAR4cHBQPBQsIAw4KLhQlAw0BExOICQS5dBOKbCGFfwSVfZBDgnuBRQ Received: from ppp121-44-205-58.lns20.syd7.internode.on.net (HELO dastard) ([121.44.205.58]) by ipmail06.adl6.internode.on.net with ESMTP; 07 May 2012 11:23:24 +0930 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1SRD8c-00081S-WA; Mon, 07 May 2012 11:53:23 +1000 Date: Mon, 7 May 2012 11:53:22 +1000 From: Dave Chinner To: Brian Candler Cc: Stan Hoeppner , xfs@oss.sgi.com Subject: Re: Storage server, hung tasks and tracebacks Message-ID: <20120507015322.GY5091@dastard> X-ASG-Orig-Subj: Re: Storage server, hung tasks and tracebacks References: <20120502184450.GA2557@nsrc.org> <4FA27EF8.6040002@hardwarefreak.com> <20120503204157.GC4387@nsrc.org> <4FA3047D.8060908@hardwarefreak.com> <20120504163237.GA6128@nsrc.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120504163237.GA6128@nsrc.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1336355604 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96210 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, May 04, 2012 at 05:32:37PM +0100, Brian Candler wrote: > On Thu, May 03, 2012 at 05:19:41PM -0500, Stan Hoeppner wrote: > > Glad to hear you've got one running somewhat stable. Could be a driver > > problem, but it's pretty rare for a SCSI driver to hard lock a box isn't > > it? No. The hardware does something bad to the PCI bus, or DMAs something over kernel memory, or won't de-assert and interrupt line, or .... and the system will hard hang. Hell, if it just stops and you run out of memory because IO is needed to clean and free memory, then system can hang there as well.... > > Keep us posted. > > Last night I fired up two more instances of bonnie++ on that box, so there > were four at once. Going back to the box now, I find that they have all > hung :-( > > They are stuck at: > > Delete files in random order... > Stat files in random order... > Stat files in random order... > Stat files in sequential order... > > respectively. > > iostat 5 shows no activity. There are 9 hung processes: > > $ uptime > 17:23:35 up 1 day, 20:39, 1 user, load average: 9.04, 9.08, 8.91 > $ ps auxwww | grep " D" | grep -v grep > root 35 1.5 0.0 0 0 ? D May02 42:10 [kswapd0] > root 1179 0.0 0.0 0 0 ? D May02 1:50 [xfsaild/md126] > root 3127 0.0 0.0 25096 312 ? D 16:55 0:00 /usr/lib/postfix/master > tomi 29138 1.1 0.0 378860 3708 pts/1 D+ 12:43 3:06 bonnie++ -d /disk/scratch/test -s 16384k -n 98:800k:500k:1000 > tomi 29390 1.0 0.0 378860 3560 pts/3 D+ 12:52 2:53 bonnie++ -d /disk/scratch/test -s 16384k -n 98:800k:500k:1000 > tomi 30356 1.1 0.0 378860 3512 pts/2 D+ 13:32 2:36 bonnie++ -d /disk/scratch/testb -s 16384k -n 98:800k:500k:1000 > root 31075 0.0 0.0 0 0 ? D 14:00 0:04 [kworker/0:0] > tomi 31796 0.6 0.0 378860 3864 pts/4 D+ 14:30 1:05 bonnie++ -d /disk/scratch/testb -s 16384k -n 98:800k:500k:1000 > root 31922 0.0 0.0 0 0 ? D 14:35 0:00 [kworker/1:0] > > dmesg shows hung tasks and backtraces, starting with: > > [150927.599920] INFO: task kswapd0:35 blocked for more than 120 seconds. > [150927.600263] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. > [150927.600698] kswapd0 D ffffffff81806240 0 35 2 0x00000000 > [150927.600704] ffff880212389330 0000000000000046 ffff880212389320 ffffffff81082df5 > [150927.600710] ffff880212389fd8 ffff880212389fd8 ffff880212389fd8 0000000000013780 > [150927.600715] ffff8802121816f0 ffff88020e538000 ffff880212389320 ffff88020e538000 > [150927.600719] Call Trace: > [150927.600728] [] ? __queue_work+0xe5/0x320 > [150927.600733] [] schedule+0x3f/0x60 > [150927.600739] [] md_flush_request+0x86/0x140 > [150927.600745] [] ? try_to_wake_up+0x200/0x200 > [150927.600756] [] raid0_make_request+0x119/0x1c0 [raid0] That's most likely a hardware or driver problem - the IO request queue is full which means that IO completions are not occurring or being delayed excessively. The problem is below the level of the filesystem.... > I am completely at a loss with all this... I've never seen a Unix/Linux > system behave so unreliably. If you are buying bottom of the barrel hardware, then you get the reliability that you pay for. Spend a few more dollars and buy something that is properly engineered - you've wasted more money trying to diagnose this problem that you would have saved by being cheap hardware.... > One of the company's directors has reminded me > that we have a Windows storage server with 48 disks which has been running > without incident for the last 3 or 4 years, and I don't have a good answer > for that :-( If you buy bottom of the barrel hardware for Windows servers, then you'll get similar results, only they'll be much harder to diagnose. Software can't fix busted hardware... Cheers, Dave. -- Dave Chinner david@fromorbit.com From s.priebe@profihost.ag Mon May 7 01:39:19 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q476dIQp210166 for ; Mon, 7 May 2012 01:39:18 -0500 X-ASG-Debug-ID: 1336372754-04cbb03c162c71f0001-NocioJ Received: from mail.profihost.ag (mail.profihost.ag [85.158.179.208]) by cuda.sgi.com with ESMTP id niQHLFTaKFhCAtBI (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 06 May 2012 23:39:15 -0700 (PDT) X-Barracuda-Envelope-From: s.priebe@profihost.ag X-Barracuda-Apparent-Source-IP: 85.158.179.208 Received: (qmail 10804 invoked from network); 7 May 2012 08:39:14 +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 mail.profihost.ag (qpsmtpd/0.82) with (AES256-SHA encrypted) ESMTPSA; Mon, 07 May 2012 08:39:14 +0200 Message-ID: <4FA76E11.1070708@profihost.ag> Date: Mon, 07 May 2012 08:39:13 +0200 From: Stefan Priebe - Profihost AG User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.28) Gecko/20120313 Thunderbird/3.1.20 MIME-Version: 1.0 To: Dave Chinner CC: "xfs@oss.sgi.com" , stan@hardwarefreak.com, Martin@lichtvoll.de Subject: Re: suddenly slow writes on XFS Filesystem References: <4FA63DDA.9070707@profihost.ag> <20120507013456.GW5091@dastard> X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem In-Reply-To: <20120507013456.GW5091@dastard> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-User-Auth: Auth by hostmaster@profihost.com through 85.158.179.66 X-Barracuda-Connect: mail.profihost.ag[85.158.179.208] X-Barracuda-Start-Time: 1336372755 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96228 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi, after deleting 400GB it was faster. Now there are still 300GB free but it is slow as hell again ;-( Am 07.05.2012 03:34, schrieb Dave Chinner: > On Sun, May 06, 2012 at 11:01:14AM +0200, Stefan Priebe wrote: >> Hi, >> >> since a few days i've experienced a really slow fs on one of our >> backup systems. >> >> I'm not sure whether this is XFS related or related to the >> Controller / Disks. >> >> It is a raid 10 of 20 SATA Disks and i can only write to them with >> about 700kb/s while doing random i/o. > > What sort of random IO? size, read, write, direct or buffered, data > or metadata, etc? There are 4 rsync processes running and doing backups of other severs. > iostat -x -d -m 5 and vmstat 5 traces would be > useful to see if it is your array that is slow..... ~ # iostat -x -d -m 5 Linux 2.6.40.28intel (server844-han) 05/07/2012 _x86_64_ (8 CPU) Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util sdb 0,00 0,00 254,80 25,40 1,72 0,16 13,71 0,86 3,08 2,39 67,06 sda 0,00 0,20 0,00 1,20 0,00 0,00 6,50 0,00 0,00 0,00 0,00 Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util sdb 0,00 0,00 187,40 24,20 1,26 0,19 14,05 0,75 3,56 3,33 70,50 sda 0,00 0,00 0,00 0,40 0,00 0,00 4,50 0,00 0,00 0,00 0,00 Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util sdb 0,00 11,20 242,40 92,00 1,56 0,89 15,00 4,70 14,06 1,58 52,68 sda 0,00 0,20 0,00 2,60 0,00 0,02 12,00 0,00 0,00 0,00 0,00 Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util sdb 0,00 0,00 166,20 24,00 0,99 0,17 12,51 0,57 3,02 2,40 45,56 sda 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 qDevice: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util sdb 0,00 0,00 188,00 25,40 1,22 0,16 13,23 0,44 2,04 1,78 38,02 sda 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 # vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 7 0 0 788632 48 12189652 0 0 173 395 13 45 1 16 82 1 [root@server844-han /serverbackup (master)]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 4 0 0 778148 48 12189776 0 0 173 395 13 45 1 16 82 1 [root@server844-han /serverbackup (master)]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 2 0 0 774372 48 12189876 0 0 173 395 13 45 1 16 82 1 [root@server844-han /serverbackup (master)]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 5 0 0 771240 48 12189936 0 0 173 395 13 45 1 16 82 1 [root@server844-han /serverbackup (master)]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 6 0 0 768636 48 12190000 0 0 173 395 13 45 1 16 82 1 > >> I tried vanilla Kernel 3.0.30 >> and 3.3.4 - no difference. Writing to another partition on another >> xfs array works fine. >> >> Details: >> #~ df -h >> /dev/sdb1 4,6T 4,4T 207G 96% /mnt > > Your filesystem is near full - the allocation algorithms definitely > slow down as you approach ENOSPC, and IO efficiency goes to hell > because of a lack of contiguous free space to allocate from. I've now 94% used but it is still slow. It seems it was just getting fast with more than 450GB free space. /dev/sdb1 4,6T 4,3T 310G 94% /mnt >> #~ df -i >> /dev/sdb1 4875737052 4659318044 216419008 96% /mnt > You have 4.6 *billion* inodes in your filesystem? Yes - it backups around 100 servers with a lot of files. Greet Stefan From s.priebe@profihost.ag Mon May 7 01:40:46 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q476ekwA210425 for ; Mon, 7 May 2012 01:40:46 -0500 X-ASG-Debug-ID: 1336372842-04bdf034ee2a2220001-NocioJ Received: from mail.profihost.ag (mail.profihost.ag [85.158.179.208]) by cuda.sgi.com with ESMTP id BKN5vHyrabE6dv77 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 06 May 2012 23:40:43 -0700 (PDT) X-Barracuda-Envelope-From: s.priebe@profihost.ag X-Barracuda-Apparent-Source-IP: 85.158.179.208 Received: (qmail 11042 invoked from network); 7 May 2012 08:40:42 +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 mail.profihost.ag (qpsmtpd/0.82) with (AES256-SHA encrypted) ESMTPSA; Mon, 07 May 2012 08:40:42 +0200 Message-ID: <4FA76E69.9090207@profihost.ag> Date: Mon, 07 May 2012 08:40:41 +0200 From: Stefan Priebe - Profihost AG User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.28) Gecko/20120313 Thunderbird/3.1.20 MIME-Version: 1.0 To: Martin Steigerwald CC: stan@hardwarefreak.com, xfs@oss.sgi.com Subject: Re: suddenly slow writes on XFS Filesystem References: <4FA63DDA.9070707@profihost.ag> <201205061233.58496.Martin@lichtvoll.de> <4FA69CB0.8000008@hardwarefreak.com> (sfid-20120506_233742_387085_AFEABC59) (sfid-20120506_233742_387085_AFEABC59) <201205062343.21871.Martin@lichtvoll.de> X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem In-Reply-To: <201205062343.21871.Martin@lichtvoll.de> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-User-Auth: Auth by hostmaster@profihost.com through 85.158.179.66 X-Barracuda-Connect: mail.profihost.ag[85.158.179.208] X-Barracuda-Start-Time: 1336372843 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96228 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Am 06.05.2012 23:43, schrieb Martin Steigerwald: > Am Sonntag, 6. Mai 2012 schrieb Stan Hoeppner: >> On 5/6/2012 5:33 AM, Martin Steigerwald wrote: >>> Am Sonntag, 6. Mai 2012 schrieb Stefan Priebe: >>>> It is a raid 10 of 20 SATA Disks and i can only write to them with >>>> about 700kb/s while doing random i/o. I tried vanilla Kernel 3.0.30 >>>> and 3.3.4 - no difference. Writing to another partition on another >>>> xfs array works fine. >>> >>> Additionally what RAID is this? SoftRAID or some - which one? - >>> hardware RAID controller? And what disks are used, whats the rpm of >>> these? It is a HW Adaptec 5805 Controller with 20x 7200rpm SATA Disks. > Can free space be defragmented in XFS? xfs_fsr only tries to defragment > files as far as I know. That is a good question. Stefan From david@fromorbit.com Mon May 7 02:17:26 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q477HQWc220521 for ; Mon, 7 May 2012 02:17:26 -0500 X-ASG-Debug-ID: 1336375036-04cb6c24fd284f10001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id Byu0SAnQ4KLi4SNA for ; Mon, 07 May 2012 00:17:17 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAHB1p095LaUR/2dsb2JhbABEsm+BCIIMAQEEATocIxAIAxguFCUDIROICQS5bBOKbAKGHgSVfZBDgns Received: from ppp121-45-165-17.lns20.syd6.internode.on.net (HELO dastard) ([121.45.165.17]) by ipmail05.adl6.internode.on.net with ESMTP; 07 May 2012 16:47:15 +0930 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1SRIC1-0008WV-F5; Mon, 07 May 2012 17:17:13 +1000 Date: Mon, 7 May 2012 17:17:13 +1000 From: Dave Chinner To: Stefan Priebe - Profihost AG Cc: "xfs@oss.sgi.com" , stan@hardwarefreak.com, Martin@lichtvoll.de Subject: Re: suddenly slow writes on XFS Filesystem Message-ID: <20120507071713.GZ5091@dastard> X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem References: <4FA63DDA.9070707@profihost.ag> <20120507013456.GW5091@dastard> <4FA76E11.1070708@profihost.ag> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4FA76E11.1070708@profihost.ag> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1336375037 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96232 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e On Mon, May 07, 2012 at 08:39:13AM +0200, Stefan Priebe - Profihost AG wrote: > Hi, > > after deleting 400GB it was faster. Now there are still 300GB free but > it is slow as hell again ;-( > > Am 07.05.2012 03:34, schrieb Dave Chinner: > > On Sun, May 06, 2012 at 11:01:14AM +0200, Stefan Priebe wrote: > >> Hi, > >> > >> since a few days i've experienced a really slow fs on one of our > >> backup systems. > >> > >> I'm not sure whether this is XFS related or related to the > >> Controller / Disks. > >> > >> It is a raid 10 of 20 SATA Disks and i can only write to them with > >> about 700kb/s while doing random i/o. > > > > What sort of random IO? size, read, write, direct or buffered, data > > or metadata, etc? > There are 4 rsync processes running and doing backups of other severs. > > > iostat -x -d -m 5 and vmstat 5 traces would be > > useful to see if it is your array that is slow..... > > ~ # iostat -x -d -m 5 > Linux 2.6.40.28intel (server844-han) 05/07/2012 _x86_64_ > (8 CPU) > > Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util > sdb 0,00 0,00 254,80 25,40 1,72 0,16 13,71 0,86 3,08 2,39 67,06 > sda 0,00 0,20 0,00 1,20 0,00 0,00 6,50 0,00 0,00 0,00 0,00 > > Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util > sdb 0,00 0,00 187,40 24,20 1,26 0,19 14,05 0,75 3,56 3,33 70,50 > sda 0,00 0,00 0,00 0,40 0,00 0,00 4,50 0,00 0,00 0,00 0,00 > > Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util > sdb 0,00 11,20 242,40 92,00 1,56 0,89 15,00 4,70 14,06 1,58 52,68 > sda 0,00 0,20 0,00 2,60 0,00 0,02 12,00 0,00 0,00 0,00 0,00 > > Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util > sdb 0,00 0,00 166,20 24,00 0,99 0,17 12,51 0,57 3,02 2,40 45,56 > sda 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 > > Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util > sdb 0,00 0,00 188,00 25,40 1,22 0,16 13,23 0,44 2,04 1,78 38,02 > sda 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 > # vmstat "vmstat 5", not vmstat 5 times.... :/ > >> I tried vanilla Kernel 3.0.30 > >> and 3.3.4 - no difference. Writing to another partition on another > >> xfs array works fine. > >> > >> Details: > >> #~ df -h > >> /dev/sdb1 4,6T 4,4T 207G 96% /mnt > > > > Your filesystem is near full - the allocation algorithms definitely > > slow down as you approach ENOSPC, and IO efficiency goes to hell > > because of a lack of contiguous free space to allocate from. > I've now 94% used but it is still slow. It seems it was just getting > fast with more than 450GB free space. > > /dev/sdb1 4,6T 4,3T 310G 94% /mnt Well, you've probably badly fragmented the free space you have. what does the 'xfs_db -r -c freesp ' command tell you? > >> #~ df -i > >> /dev/sdb1 4875737052 4659318044 216419008 96% /mnt > > You have 4.6 *billion* inodes in your filesystem? > Yes - it backups around 100 servers with a lot of files. So you have what - lots of symlinks? I mean, 4.6 billion inodes alone requires 1.2TB of space, but if I read the fragmentation you only have 82 million files with data extents. The only thing that would other wise use inodes are directories and symlinks.... Still, I can't see how you'd only have 82 million data inodes and 4.5 billion directory inodes - where are all the inodes being consumed? A massive symlink farm? Cheers, Dave. -- Dave Chinner david@fromorbit.com From s.priebe@profihost.ag Mon May 7 02:22:45 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q477MjvB222471 for ; Mon, 7 May 2012 02:22:45 -0500 X-ASG-Debug-ID: 1336375362-04cbb03c142c9af0001-NocioJ Received: from mail.profihost.ag (mail.profihost.ag [85.158.179.208]) by cuda.sgi.com with ESMTP id MeEcyJzH93WOSwS0 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 07 May 2012 00:22:43 -0700 (PDT) X-Barracuda-Envelope-From: s.priebe@profihost.ag X-Barracuda-Apparent-Source-IP: 85.158.179.208 Received: (qmail 16791 invoked from network); 7 May 2012 09:22:42 +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 mail.profihost.ag (qpsmtpd/0.82) with (AES256-SHA encrypted) ESMTPSA; Mon, 07 May 2012 09:22:42 +0200 Message-ID: <4FA77842.5010703@profihost.ag> Date: Mon, 07 May 2012 09:22:42 +0200 From: Stefan Priebe - Profihost AG User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.28) Gecko/20120313 Thunderbird/3.1.20 MIME-Version: 1.0 To: Dave Chinner CC: "xfs@oss.sgi.com" , stan@hardwarefreak.com, Martin@lichtvoll.de Subject: Re: suddenly slow writes on XFS Filesystem References: <4FA63DDA.9070707@profihost.ag> <20120507013456.GW5091@dastard> <4FA76E11.1070708@profihost.ag> <20120507071713.GZ5091@dastard> X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem In-Reply-To: <20120507071713.GZ5091@dastard> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-User-Auth: Auth by hostmaster@profihost.com through 85.158.179.66 X-Barracuda-Connect: mail.profihost.ag[85.158.179.208] X-Barracuda-Start-Time: 1336375363 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96232 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- >> # vmstat > "vmstat 5", not vmstat 5 times.... :/ oh sorry. Sadly the rsync processes do not run right know i've to kill them. Is the output still usable? # vmstat 5 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 1 0 5582136 48 5849956 0 0 176 394 34 54 1 16 82 1 0 1 0 5552180 48 5854280 0 0 2493 2496 3079 2172 1 4 86 9 3 2 0 5601308 48 5857672 0 0 1098 28043 5150 1913 0 10 73 17 0 2 0 5595360 48 5863180 0 0 1098 14336 3945 1897 0 8 69 22 3 2 0 5594088 48 5865280 0 0 432 15897 4209 2366 0 8 71 21 0 2 0 5591068 48 5868940 0 0 854 10989 3519 2107 0 7 70 23 1 1 0 5592004 48 5869872 0 0 180 7886 3605 2436 0 3 76 22 >> /dev/sdb1 4,6T 4,3T 310G 94% /mnt > Well, you've probably badly fragmented the free space you have. what > does the 'xfs_db -r -c freesp ' command tell you? from to extents blocks pct 1 1 942737 942737 0,87 2 3 671860 1590480 1,47 4 7 461268 2416025 2,23 8 15 1350517 18043063 16,67 16 31 111254 2547581 2,35 32 63 192032 9039799 8,35 64 127 33026 3317194 3,07 128 255 14254 2665812 2,46 256 511 12516 4631200 4,28 512 1023 6942 5031081 4,65 1024 2047 4622 6893270 6,37 2048 4095 3268 9412271 8,70 4096 8191 2135 12716435 11,75 8192 16383 338 3974884 3,67 16384 32767 311 7018658 6,49 32768 65535 105 4511372 4,17 65536 131071 29 2577756 2,38 131072 262143 8 1339796 1,24 262144 524287 10 3950416 3,65 524288 1048575 4 2580085 2,38 1048576 2097151 2 3028028 2,80 >>>> #~ df -i >>>> /dev/sdb1 4875737052 4659318044 216419008 96% /mnt >>> You have 4.6 *billion* inodes in your filesystem? >> Yes - it backups around 100 servers with a lot of files. i rechecked this and it seems i sadly copied the wrong output ;-( sorry for that. Here is the correct one: #~ df -i /dev/sdb1 975173568 95212355 879961213 10% /mnt Stefan From Martin@lichtvoll.de Mon May 7 03:21:17 2012 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,TO_NO_BRKTS_PCNT 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 q478LHqV239886 for ; Mon, 7 May 2012 03:21:17 -0500 X-ASG-Debug-ID: 1336378875-04bdf034ef2a7100001-NocioJ Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id x0eXGNTyGBZEiAtu for ; Mon, 07 May 2012 01:21:15 -0700 (PDT) X-Barracuda-Envelope-From: Martin@lichtvoll.de X-Barracuda-Apparent-Source-IP: 194.150.191.11 Received: from merkaba.localnet (blackhole.teamix.net [194.150.191.251]) by mail.lichtvoll.de (Postfix) with ESMTPSA id D8562F3; Mon, 7 May 2012 10:21:14 +0200 (CEST) From: Martin Steigerwald To: xfs@oss.sgi.com Subject: Re: suddenly slow writes on XFS Filesystem Date: Mon, 7 May 2012 10:21:14 +0200 X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem User-Agent: KMail/1.13.7 (Linux/3.3.0-trunk-amd64; KDE/4.7.4; x86_64; ; ) Cc: "Stefan Priebe - Profihost AG" , Dave Chinner , stan@hardwarefreak.com References: <4FA63DDA.9070707@profihost.ag> <20120507013456.GW5091@dastard> <4FA76E11.1070708@profihost.ag> (sfid-20120507_095413_656560_122EB192) In-Reply-To: <4FA76E11.1070708@profihost.ag> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201205071021.14478.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1336378875 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96236 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Am Montag, 7. Mai 2012 schrieb Stefan Priebe - Profihost AG: > Hi, > > after deleting 400GB it was faster. Now there are still 300GB free but > it is slow as hell again ;-( Well, before you had 200 GB free, now you have 300 GB free. Thats not that much more. You have 5 AGs, so if distributed evenly it would be 40 to 60 GB free space per AG. The 10% Dave recommended of 4,6 TB would be 460 GB. Are other volumes of similar size are similarily full but faster? Would be interesting to see whether you are able to sustain faster speeds by keeping the volume above 500 GB free or so. > >> It is a raid 10 of 20 SATA Disks and i can only write to them with > >> about 700kb/s while doing random i/o. > > > > What sort of random IO? size, read, write, direct or buffered, data > > or metadata, etc? > > There are 4 rsync processes running and doing backups of other severs. Which rsync version is involved? I strongly suggest to use rsync version 3 or above. > > Your filesystem is near full - the allocation algorithms definitely > > slow down as you approach ENOSPC, and IO efficiency goes to hell > > because of a lack of contiguous free space to allocate from. > > I've now 94% used but it is still slow. It seems it was just getting > fast with more than 450GB free space. > > /dev/sdb1 4,6T 4,3T 310G 94% /mnt Then: Will it stay fast if you keep it above 450 GB free space? And is it as fast then as it used to be before you faced performance issues? Ciao, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From Martin@lichtvoll.de Mon May 7 03:31:41 2012 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_24, TO_NO_BRKTS_PCNT 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 q478Vfpd242986 for ; Mon, 7 May 2012 03:31:41 -0500 X-ASG-Debug-ID: 1336379499-04cbb03c162cd7e0001-NocioJ Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id 3iziCgxf3Z5JPDdQ for ; Mon, 07 May 2012 01:31:39 -0700 (PDT) X-Barracuda-Envelope-From: Martin@lichtvoll.de X-Barracuda-Apparent-Source-IP: 194.150.191.11 Received: from merkaba.localnet (blackhole.teamix.net [194.150.191.251]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 1CD16F3; Mon, 7 May 2012 10:31:39 +0200 (CEST) From: Martin Steigerwald To: xfs@oss.sgi.com Subject: Re: suddenly slow writes on XFS Filesystem Date: Mon, 7 May 2012 10:31:38 +0200 X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem User-Agent: KMail/1.13.7 (Linux/3.3.0-trunk-amd64; KDE/4.7.4; x86_64; ; ) Cc: "Stefan Priebe - Profihost AG" , Dave Chinner , stan@hardwarefreak.com References: <4FA63DDA.9070707@profihost.ag> <20120507013456.GW5091@dastard> <4FA76E11.1070708@profihost.ag> (sfid-20120507_095413_656560_122EB192) In-Reply-To: <4FA76E11.1070708@profihost.ag> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201205071031.38856.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1336379499 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96236 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Am Montag, 7. Mai 2012 schrieb Stefan Priebe - Profihost AG: > > iostat -x -d -m 5 and vmstat 5 traces would be > > useful to see if it is your array that is slow..... > > ~ # iostat -x -d -m 5 > Linux 2.6.40.28intel (server844-han) 05/07/2012 _x86_64_ > (8 CPU) > > Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s > avgrq-sz avgqu-sz await svctm %util > sdb 0,00 0,00 254,80 25,40 1,72 0,16 > 13,71 0,86 3,08 2,39 67,06 > sda 0,00 0,20 0,00 1,20 0,00 0,00 > 6,50 0,00 0,00 0,00 0,00 > > Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s > avgrq-sz avgqu-sz await svctm %util > sdb 0,00 0,00 187,40 24,20 1,26 0,19 > 14,05 0,75 3,56 3,33 70,50 > sda 0,00 0,00 0,00 0,40 0,00 0,00 > 4,50 0,00 0,00 0,00 0,00 > > Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s > avgrq-sz avgqu-sz await svctm %util > sdb 0,00 11,20 242,40 92,00 1,56 0,89 > 15,00 4,70 14,06 1,58 52,68 > sda 0,00 0,20 0,00 2,60 0,00 0,02 > 12,00 0,00 0,00 0,00 0,00 > > Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s > avgrq-sz avgqu-sz await svctm %util > sdb 0,00 0,00 166,20 24,00 0,99 0,17 > 12,51 0,57 3,02 2,40 45,56 > sda 0,00 0,00 0,00 0,00 0,00 0,00 > 0,00 0,00 0,00 0,00 0,00 > > qDevice: rrqm/s wrqm/s r/s w/s rMB/s wMB/s > avgrq-sz avgqu-sz await svctm %util > sdb 0,00 0,00 188,00 25,40 1,22 0,16 > 13,23 0,44 2,04 1,78 38,02 > sda 0,00 0,00 0,00 0,00 0,00 0,00 > 0,00 0,00 0,00 0,00 0,00 Disk utilization seems to be quite high but it seems there not near to 90 to 100%. So there might be other overheads involved - like network or (unlikely) CPU. Did you verify that at the time you perceive slowness the servers you backup can deliver data fast enough? I would like to now, whether there are really processes waiting for I/O during rsync workload. Can you try vmstat 5 and while true; do ps aux | grep " D" | grep -v grep ; sleep 1; done while the backup workload is running and slow? Like this: merkaba:~> while true; do ps aux | grep " D" | grep -v grep ; sleep 1; done root 1508 0.0 0.0 0 0 ? D Mai06 0:00 [flush-253:2] root 1508 0.0 0.0 0 0 ? D Mai06 0:00 [flush-253:2] martin 28374 100 0.0 9800 652 pts/7 D+ 10:27 0:02 dd if=/dev/zero of=fhgs root 1508 0.0 0.0 0 0 ? D Mai06 0:00 [flush-253:2] (this is with an Ext4, so its using the flush daemon, with XFS you probably see xfssyncd or xfsbufd instead if I am not mistaken and if rsync processes are waiting for I/O they should appear there too) And yes, its important to have vmstat 5 output during workload is happening to see the amount of CPU time that the kernel cannot use for processing cause all processes that are runnable wait for I/O. -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From raghu.prabhu13@gmail.com Mon May 7 04:15:21 2012 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_00,FREEMAIL_FROM, HEADER_ESQ,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 q479FKvY259509 for ; Mon, 7 May 2012 04:15:21 -0500 X-ASG-Debug-ID: 1336382119-04bdf034ed2a9890001-NocioJ Received: from mail-pb0-f53.google.com (mail-pb0-f53.google.com [209.85.160.53]) by cuda.sgi.com with ESMTP id EdWguP4I6ZjvzDoI (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 07 May 2012 02:15:19 -0700 (PDT) X-Barracuda-Envelope-From: raghu.prabhu13@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.160.53 Received: by pbbrr13 with SMTP id rr13so7396381pbb.26 for ; Mon, 07 May 2012 02:15:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer; bh=us8dw+CkLQ4rDG7S9WXRgbFaX5OjJVhnh+eV1Y35mYI=; b=v1ZqsnxP9DdLp9ZjbxZ3hPiNXciza5aaHuqjH9K2k7XyhafZcrp38m8yljTrijE5dh dMq9gIfTUrRJ6RH8tIB0JDfSLSn+NDy3tmq9yuDBESyDLAd99m7SxDtZjQUF9dD2dqDS p1w5n3BOJAldvGu1rAqJF0/5SK4u+5wEFgpcN+RXpO7HnqJQUYW//ZxVk0raePwoh6Dr 9aCpkGTslk6VZ8MRc4lz3bTvE0izKUkMC1aMk3CFULhOQA7SxcPs21t238hf3esqVhfY doulg3aEZoW+bQalxEdIsvDRp8ej6mvqkm9x3EknrjACnxPQpdofMkQVUbAhE3z1YZMV iTDg== Received: by 10.68.194.9 with SMTP id hs9mr18699373pbc.36.1336382119253; Mon, 07 May 2012 02:15:19 -0700 (PDT) Received: from localhost ([122.167.119.151]) by mx.google.com with ESMTPS id b10sm17703062pbr.46.2012.05.07.02.15.16 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 07 May 2012 02:15:18 -0700 (PDT) From: raghu.prabhu13@gmail.com To: xfs@oss.sgi.com Cc: raghu.prabhu13@gmail.com, Raghavendra D Prabhu Subject: [PATCH] [PATCH] Stop periodic syncing if filesystem is already shutdown. Date: Mon, 7 May 2012 14:44:07 +0530 X-ASG-Orig-Subj: [PATCH] [PATCH] Stop periodic syncing if filesystem is already shutdown. Message-Id: X-Mailer: git-send-email 1.7.10.1 X-Barracuda-Connect: mail-pb0-f53.google.com[209.85.160.53] X-Barracuda-Start-Time: 1336382119 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96238 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 From: Raghavendra D Prabhu This is to prevent syncing from running ad-infinitum till umount if the disk has been forcefully unplugged. This is to prevent messages like these from being displayed. ========================================== [ 3816.416570] XFS (sdb3): xfs_do_force_shutdown(0x1) called from line 1031 of file fs/xfs/xfs_buf.c. Return address = 0xffffffff8127c13a [ 3816.416586] XFS (sdb3): I/O Error Detected. Shutting down filesystem [ 3816.416592] XFS (sdb3): Please umount the filesystem and rectify the problem(s) [ 3842.941953] XFS (sdb3): xfs_log_force: error 5 returned. [ 3873.009329] XFS (sdb3): xfs_log_force: error 5 returned. [ 3878.913310] XFS (sdb3): xfs_log_force: error 5 returned. [ 3878.913322] XFS (sdb3): xfs_do_force_shutdown(0x1) called from line 1031 of file fs/xfs/xfs_buf.c. Return address = 0xffffffff8127c13a [ 3878.913350] XFS (sdb3): xfs_log_force: error 5 returned. [ 3878.913362] XFS (sdb3): xfs_log_force: error 5 returned. =========================================== Note, that even after xfs_do_force_shutdown has been called, xfs_log_force doesn't stop till the filesystem has been unmounted (and it keeps printing "error 5 returned" to kernel log). To simulate it, mount an xfs filesystem located on external disk, and then pull the power to the disk (non-usb powered disk). Tested it on latest linus tree. Now, the kernel log looks, [ 2477.305280] XFS (sdc3): xfs_do_force_shutdown(0x1) called from line 1031 of file fs/xfs/xfs_buf.c. Return address = 0xffffffff8127c13a [ 2477.305295] XFS (sdc3): I/O Error Detected. Shutting down filesystem [ 2477.305300] XFS (sdc3): Please umount the filesystem and rectify the problem(s) [ 2477.305588] XFS (sdc2): xfs_do_force_shutdown(0x1) called from line 1031 of file fs/xfs/xfs_buf.c. Return address = 0xffffffff8127c13a [ 2477.305600] XFS (sdc2): I/O Error Detected. Shutting down filesystem [ 2477.305604] XFS (sdc2): Please umount the filesystem and rectify the problem(s) [ 2487.810718] XFS (sdc3): xfs_log_force: error 5 returned. [ 2487.810729] XFS (sdc3): xfs_do_force_shutdown(0x1) called from line 1031 of file fs/xfs/xfs_buf.c. Return address = 0xffffffff8127c13a [ 2487.812981] XFS (sdc2): xfs_log_force: error 5 returned. [ 2487.812991] XFS (sdc2): xfs_do_force_shutdown(0x1) called from line 1031 of file fs/xfs/xfs_buf.c. Return address = 0xffffffff8127c13a [ 2489.420042] XFS (sdc3): Filesystem not writable / already shutdown. [ 2490.955438] XFS (sdc2): Filesystem not writable / already shutdown. Signed-off-by: Raghavendra D Prabhu Tested-by: Raghavendra D Prabhu --- fs/xfs/xfs_sync.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/fs/xfs/xfs_sync.c b/fs/xfs/xfs_sync.c index 205ebcb..7ec412c 100644 --- a/fs/xfs/xfs_sync.c +++ b/fs/xfs/xfs_sync.c @@ -460,6 +460,12 @@ xfs_sync_worker( struct xfs_mount, m_sync_work); int error; + if (!xfs_fs_writable(mp)) { + xfs_err(mp, "Filesystem not writable / already shutdown."); + xfs_syncd_stop(mp); + return; + } + if (!(mp->m_flags & XFS_MOUNT_RDONLY)) { /* dgc: errors ignored here */ if (mp->m_super->s_frozen == SB_UNFROZEN && @@ -551,6 +557,12 @@ xfs_flush_worker( struct xfs_mount *mp = container_of(work, struct xfs_mount, m_flush_work); + if (!xfs_fs_writable(mp)) { + xfs_err(mp, "Filesystem not writable / already shutdown."); + xfs_syncd_stop(mp); + return; + } + xfs_sync_data(mp, SYNC_TRYLOCK); xfs_sync_data(mp, SYNC_TRYLOCK | SYNC_WAIT); } -- 1.7.10.1 From rprabhu@wnohang.net Mon May 7 04:41:35 2012 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.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_21, T_DKIM_INVALID,URI_OBFU_WWW 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 q479fZT6008557 for ; Mon, 7 May 2012 04:41:35 -0500 X-ASG-Debug-ID: 1336383693-04cb6c24fa28b650001-NocioJ Received: from mail.wnohang.net (wnohang.net [178.79.154.173]) by cuda.sgi.com with ESMTP id 7zmR4T8lNGXvz3J6 for ; Mon, 07 May 2012 02:41:34 -0700 (PDT) X-Barracuda-Envelope-From: rprabhu@wnohang.net X-Barracuda-Apparent-Source-IP: 178.79.154.173 Received: by mail.wnohang.net (Postfix, from userid 5001) id 6F639F042C; Mon, 7 May 2012 05:41:33 -0400 (EDT) X-DKIM: Sendmail DKIM Filter v2.8.3 mail.wnohang.net 6F639F042C DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wnohang.net; s=mail; t=1336383693; bh=u42vUWZNvAlyBX9Qmzn6QOzi8CAgF+b5T12fZqcXvEA=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:In-Reply-To; b=rRZm0ig9NJSKIOFkDYsSmLeVJOpPc06dRHwYMUdeydFnp6XttDLsovcNXbSuFQuLP kYgUO+6BRUd33WCa0374OKr21ny6DYRdd4ywn4VxmVON+VSXYb/GUuqEy4lnU9EIHn aM9SWWApWeiOthM2wXAhRS79mNTpd4dX2N0T78OU= Received: from localhost (unknown [122.167.119.151]) by mail.wnohang.net (Postfix) with ESMTPSA id C530EF0413 for ; Mon, 7 May 2012 05:41:31 -0400 (EDT) X-DKIM: Sendmail DKIM Filter v2.8.3 mail.wnohang.net C530EF0413 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wnohang.net; s=mail; t=1336383692; bh=u42vUWZNvAlyBX9Qmzn6QOzi8CAgF+b5T12fZqcXvEA=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:In-Reply-To; b=ZCp+Bn/YNAwpyLtL5SSm/V+857Dnj+biPoAyEic/AYBPhQRT7NW4iVvK2RUlAW4Eo j5/mMXwWru0NnQ8GNImunM815aUxLLlBgjArRmrfD4rM4M9JDLp20gNt9UhT3Ctseu U8lfJs47QSxAqUo/CuFvwYUrd7eWLQmT5T+OV4xM= Date: Mon, 7 May 2012 15:11:28 +0530 From: Raghavendra D Prabhu To: xfs@oss.sgi.com Subject: Re: [PATCH] [PATCH] Stop periodic syncing if filesystem is already shutdown. Message-ID: <20120507094128.GA13925@Xye> X-ASG-Orig-Subj: Re: [PATCH] [PATCH] Stop periodic syncing if filesystem is already shutdown. Mail-Followup-To: xfs@oss.sgi.com References: MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="OwLcNYc0lM97+oe1" Content-Disposition: inline In-Reply-To: X-Operating-System: Arch linux x86_64 3.4.0-rc6-XLE X-Editor: VIM - Vi IMproved 7.3 User-Agent: Mutt/1.5.21 (2011-07-01) X-Barracuda-Connect: wnohang.net[178.79.154.173] X-Barracuda-Start-Time: 1336383694 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96240 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 --OwLcNYc0lM97+oe1 Content-Type: multipart/mixed; boundary="5vNYLRcllDrimb99" Content-Disposition: inline --5vNYLRcllDrimb99 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi, Somehow git send-email sent with empty body, I have attached the=20 patch. * On Mon, May 07, 2012 at 02:44:07PM +0530, raghu.prabhu13@gmail.com wrote: Regards, --=20 Raghavendra Prabhu GPG Id : 0xD72BE977 Fingerprint: B93F EBCB 8E05 7039 CD3C A4B8 A616 DCA1 D72B E977 www: wnohang.net --5vNYLRcllDrimb99 Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="0001-PATCH-Stop-periodic-syncing-if-filesystem-is-already.patch" Content-Transfer-Encoding: quoted-printable =46rom a27cbce4f4b35c2a8aee1b58d88c22381fe70ccf Mon Sep 17 00:00:00 2001 Message-Id: =46rom: Raghavendra D Prabhu Date: Mon, 7 May 2012 13:33:55 +0530 Subject: [PATCH] Stop periodic syncing if filesystem is already shutdown. This is to prevent syncing from running ad-infinitum till umount if the dis= k has been forcefully unplugged. This is to prevent messages like these from being displayed. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D [ 3816.416570] XFS (sdb3): xfs_do_force_shutdown(0x1) called from line 1031= of file fs/xfs/xfs_buf.c. Return address =3D 0xffffffff8127c13a [ 3816.416586] XFS (sdb3): I/O Error Detected. Shutting down filesystem [ 3816.416592] XFS (sdb3): Please umount the filesystem and rectify the pro= blem(s) [ 3842.941953] XFS (sdb3): xfs_log_force: error 5 returned. [ 3873.009329] XFS (sdb3): xfs_log_force: error 5 returned. [ 3878.913310] XFS (sdb3): xfs_log_force: error 5 returned. [ 3878.913322] XFS (sdb3): xfs_do_force_shutdown(0x1) called from line 1031= of file fs/xfs/xfs_buf.c. Return address =3D 0xffffffff8127c13a [ 3878.913350] XFS (sdb3): xfs_log_force: error 5 returned. [ 3878.913362] XFS (sdb3): xfs_log_force: error 5 returned. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Note, that even after xfs_do_force_shutdown has been called, xfs_log_force doesn't stop till the filesystem has been unmounted (and it keeps printing "error 5 returned" to kernel log). To simulate it, mount an xfs filesystem located on external disk, and then = pull the power to the disk (non-usb powered disk). Tested it on latest linus tree.=20 Now, the kernel log looks, [ 2477.305280] XFS (sdc3): xfs_do_force_shutdown(0x1) called from line 1031= of file fs/xfs/xfs_buf.c. Return address =3D 0xffffffff8127c13a [ 2477.305295] XFS (sdc3): I/O Error Detected. Shutting down filesystem [ 2477.305300] XFS (sdc3): Please umount the filesystem and rectify the pro= blem(s) [ 2477.305588] XFS (sdc2): xfs_do_force_shutdown(0x1) called from line 1031= of file fs/xfs/xfs_buf.c. Return address =3D 0xffffffff8127c13a [ 2477.305600] XFS (sdc2): I/O Error Detected. Shutting down filesystem [ 2477.305604] XFS (sdc2): Please umount the filesystem and rectify the pro= blem(s) [ 2487.810718] XFS (sdc3): xfs_log_force: error 5 returned. [ 2487.810729] XFS (sdc3): xfs_do_force_shutdown(0x1) called from line 1031= of file fs/xfs/xfs_buf.c. Return address =3D 0xffffffff8127c13a [ 2487.812981] XFS (sdc2): xfs_log_force: error 5 returned. [ 2487.812991] XFS (sdc2): xfs_do_force_shutdown(0x1) called from line 1031= of file fs/xfs/xfs_buf.c. Return address =3D 0xffffffff8127c13a [ 2489.420042] XFS (sdc3): Filesystem not writable / already shutdown. [ 2490.955438] XFS (sdc2): Filesystem not writable / already shutdown. Signed-off-by: Raghavendra D Prabhu Tested-by: Raghavendra D Prabhu --- fs/xfs/xfs_sync.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/fs/xfs/xfs_sync.c b/fs/xfs/xfs_sync.c index 205ebcb..7ec412c 100644 --- a/fs/xfs/xfs_sync.c +++ b/fs/xfs/xfs_sync.c @@ -460,6 +460,12 @@ xfs_sync_worker( struct xfs_mount, m_sync_work); int error; =20 + if (!xfs_fs_writable(mp)) { + xfs_err(mp, "Filesystem not writable / already shutdown."); + xfs_syncd_stop(mp); + return; + } + if (!(mp->m_flags & XFS_MOUNT_RDONLY)) { /* dgc: errors ignored here */ if (mp->m_super->s_frozen =3D=3D SB_UNFROZEN && @@ -551,6 +557,12 @@ xfs_flush_worker( struct xfs_mount *mp =3D container_of(work, struct xfs_mount, m_flush_work); =20 + if (!xfs_fs_writable(mp)) { + xfs_err(mp, "Filesystem not writable / already shutdown."); + xfs_syncd_stop(mp); + return; + } + xfs_sync_data(mp, SYNC_TRYLOCK); xfs_sync_data(mp, SYNC_TRYLOCK | SYNC_WAIT); } --=20 1.7.10.1 --5vNYLRcllDrimb99-- --OwLcNYc0lM97+oe1 Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) iQEcBAEBAgAGBQJPp5jIAAoJEKYW3KHXK+l3atoIAKIBobbqk8lH6YDEiQjaWMyU 5D/Q1S3I5ZbU4fNWwUAo4klk3VVoMJboFXhiE6eX4VzR9XmjMN2LAKqW8G+GajM7 NhAeTgQaqJ3SYdvjlRGXQGnFfZp4TfpEHprKyevHPwq13dI+/ZDV+pbdg6PjFl1p i3tL8Ib0CkJ2yGKpd//gPJPydFz2h/E3gWaikOEs2D94RW2HIGExuOm/wwZ/AO7u o73/3S3S+5MRvg2DTmd4ieyNXynIPHMfUbsYjXvzSAhxGxNwmIpA4aTs9WaCYNWa sF58QotZ2YMR9FMG9YArq1+pg+JS9cElVjsRm+nFF9+ZQUxieol1e5DpNkgUAco= =8qDS -----END PGP SIGNATURE----- --OwLcNYc0lM97+oe1-- From rprabhu@wnohang.net Mon May 7 07:07:29 2012 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.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_21, T_DKIM_INVALID,URI_OBFU_WWW 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 q47C7Tvg038928 for ; Mon, 7 May 2012 07:07:29 -0500 X-ASG-Debug-ID: 1336392447-04cbb03c172dd1a0001-NocioJ Received: from mail.wnohang.net (wnohang.net [178.79.154.173]) by cuda.sgi.com with ESMTP id e25gc1VqF8GCLOXb for ; Mon, 07 May 2012 05:07:27 -0700 (PDT) X-Barracuda-Envelope-From: rprabhu@wnohang.net X-Barracuda-Apparent-Source-IP: 178.79.154.173 Received: by mail.wnohang.net (Postfix, from userid 5001) id 148FCF042C; Mon, 7 May 2012 08:07:27 -0400 (EDT) X-DKIM: Sendmail DKIM Filter v2.8.3 mail.wnohang.net 148FCF042C DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wnohang.net; s=mail; t=1336392447; bh=AcSOYKec8dNo3a1Ntu3FqdZvj3W3DVdezuGVitpt4a0=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:In-Reply-To; b=rVSDT0qamEjEbRbKf5aVapIbAkUts3KLkArJCgPDx5mh9XwgR8K7PXauBRYVWFcrY hNciifJrvEcBMbNZ3Cs589b9IiFM2pSpPm3Xvq5YTDRTkN6D4VbSjfQPZAhqmgextq lclJNuBcZIn46llr0NvQtrHIR4f7Ig4JdOcdK46k= Received: from localhost (unknown [122.167.119.151]) by mail.wnohang.net (Postfix) with ESMTPSA id 6A71FF0413 for ; Mon, 7 May 2012 08:07:22 -0400 (EDT) X-DKIM: Sendmail DKIM Filter v2.8.3 mail.wnohang.net 6A71FF0413 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wnohang.net; s=mail; t=1336392444; bh=AcSOYKec8dNo3a1Ntu3FqdZvj3W3DVdezuGVitpt4a0=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:In-Reply-To; b=T0Ju0JJzbiWMeBMYDbBrDrU/a68BcslJ5B78XEhdwaiaCfNw9MEuJWfFo5SaH6RzR evjbLBZtYsJvo6NjCRyAbItfRcPAHFYYakVNVEi+LOVN1njctbJQBFfRMgPFAYe9Ds Zi8EszH0J7HaKa0Io0xQaxZIi16U0gbpIFSLSzvs= Date: Mon, 7 May 2012 17:37:18 +0530 From: Raghavendra D Prabhu To: xfs@oss.sgi.com Subject: Re: [PATCH] [PATCH] Stop periodic syncing if filesystem is already shutdown. Message-ID: <20120507120718.GA18105@Xye> X-ASG-Orig-Subj: Re: [PATCH] [PATCH] Stop periodic syncing if filesystem is already shutdown. Mail-Followup-To: xfs@oss.sgi.com References: MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="bg08WKrSYDhXBjb5" Content-Disposition: inline In-Reply-To: X-Operating-System: Arch linux x86_64 3.4.0-rc6-XLE X-Editor: VIM - Vi IMproved 7.3 User-Agent: Mutt/1.5.21 (2011-07-01) X-Barracuda-Connect: wnohang.net[178.79.154.173] X-Barracuda-Start-Time: 1336392447 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96250 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 --bg08WKrSYDhXBjb5 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi, Apparently calling xfs_syncd_stop from xfs_sync_worker doesn't=20 work well; So I have moved it to xfs_bwrite; though with this I=20 noticed a 2-3 log force errors at flush and umount. Here is the=20 revised version.=20 From e202a7d76d8209fd3eb70158719a65034a409168 Mon Sep 17 00:00:00 2001 Message-Id: =46rom: Raghavendra D Prabhu Date: Mon, 7 May 2012 17:07:49 +0530 Subject: [PATCH] Stop periodic syncing if filesystem is already shutdown. This is to prevent xfs_log_force from running ad-infinitum (due to xfs_sync= ) till umount if the disk has been forcefully unplugged. This is to prevent messages like these from being displayed repeatedly. [ 3873.009329] XFS (sdb3): xfs_log_force: error 5 returned. Note, that even after xfs_do_force_shutdown has been called, xfs_log_force doesn't stop till the filesystem has been unmounted (and it keeps printing "error 5 returned" to kernel log). To simulate it, mount an xfs filesystem located on external disk, and then = pull the power to the disk (non-usb powered disk). Tested it on latest linus tree. Now, the kernel log looks, [ 268.307303] XFS (sdb2): xfs_do_force_shutdown(0x1) called from line 1031= of file fs/xfs/xfs_buf.c. Return address =3D 0xffffffff8127c13a [ 268.307318] XFS (sdb2): I/O Error Detected. Shutting down filesystem [ 268.307323] XFS (sdb2): Please umount the filesystem and rectify the pro= blem(s) Since, xfs_syncd_stop is already called in xfs_bwrite; the message is not printed; also added checks in xfs_sync_worker and xfs_flush_worker to retur= n in this case (if they have already been entered). Signed-off-by: Raghavendra D Prabhu Tested-by: Raghavendra D Prabhu --- --- fs/xfs/xfs_buf.c | 1 + fs/xfs/xfs_sync.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c index 6819b51..7bdf018 100644 --- a/fs/xfs/xfs_buf.c +++ b/fs/xfs/xfs_buf.c @@ -1029,6 +1029,7 @@ xfs_bwrite( if (error) { xfs_force_shutdown(bp->b_target->bt_mount, SHUTDOWN_META_IO_ERROR); + xfs_syncd_stop(bp->b_target->bt_mount); } return error; } diff --git a/fs/xfs/xfs_sync.c b/fs/xfs/xfs_sync.c index 205ebcb..79745a5 100644 --- a/fs/xfs/xfs_sync.c +++ b/fs/xfs/xfs_sync.c @@ -460,6 +460,11 @@ xfs_sync_worker( struct xfs_mount, m_sync_work); int error; =20 + if (!xfs_fs_writable(mp)) { + xfs_err(mp, "Filesystem not writable / already shutdown."); + return; + } + if (!(mp->m_flags & XFS_MOUNT_RDONLY)) { /* dgc: errors ignored here */ if (mp->m_super->s_frozen =3D=3D SB_UNFROZEN && @@ -551,6 +556,11 @@ xfs_flush_worker( struct xfs_mount *mp =3D container_of(work, struct xfs_mount, m_flush_work); =20 + if (!xfs_fs_writable(mp)) { + xfs_err(mp, "Filesystem not writable / already shutdown."); + return; + } + xfs_sync_data(mp, SYNC_TRYLOCK); xfs_sync_data(mp, SYNC_TRYLOCK | SYNC_WAIT); } --=20 1.7.10.1 * On Mon, May 07, 2012 at 02:44:07PM +0530, raghu.prabhu13@gmail.com wrote: >From: Raghavendra D Prabhu > >This is to prevent syncing from running ad-infinitum till umount if the di= sk has been forcefully unplugged. > >This is to prevent messages like these from being displayed. > >=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >[ 3816.416570] XFS (sdb3): xfs_do_force_shutdown(0x1) called from line 103= 1 of file fs/xfs/xfs_buf.c. Return address =3D 0xffffffff8127c13a >[ 3816.416586] XFS (sdb3): I/O Error Detected. Shutting down filesystem >[ 3816.416592] XFS (sdb3): Please umount the filesystem and rectify the pr= oblem(s) >[ 3842.941953] XFS (sdb3): xfs_log_force: error 5 returned. >[ 3873.009329] XFS (sdb3): xfs_log_force: error 5 returned. >[ 3878.913310] XFS (sdb3): xfs_log_force: error 5 returned. >[ 3878.913322] XFS (sdb3): xfs_do_force_shutdown(0x1) called from line 103= 1 of file fs/xfs/xfs_buf.c. Return address =3D 0xffffffff8127c13a >[ 3878.913350] XFS (sdb3): xfs_log_force: error 5 returned. >[ 3878.913362] XFS (sdb3): xfs_log_force: error 5 returned. >=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > >Note, that even after xfs_do_force_shutdown has been called, xfs_log_force >doesn't stop till the filesystem has been unmounted (and it keeps printing >"error 5 returned" to kernel log). > >To simulate it, mount an xfs filesystem located on external disk, and then= pull >the power to the disk (non-usb powered disk). > >Tested it on latest linus tree. >Now, the kernel log looks, > >[ 2477.305280] XFS (sdc3): xfs_do_force_shutdown(0x1) called from line 103= 1 of file fs/xfs/xfs_buf.c. Return address =3D 0xffffffff8127c13a >[ 2477.305295] XFS (sdc3): I/O Error Detected. Shutting down filesystem >[ 2477.305300] XFS (sdc3): Please umount the filesystem and rectify the pr= oblem(s) >[ 2477.305588] XFS (sdc2): xfs_do_force_shutdown(0x1) called from line 103= 1 of file fs/xfs/xfs_buf.c. Return address =3D 0xffffffff8127c13a >[ 2477.305600] XFS (sdc2): I/O Error Detected. Shutting down filesystem >[ 2477.305604] XFS (sdc2): Please umount the filesystem and rectify the pr= oblem(s) >[ 2487.810718] XFS (sdc3): xfs_log_force: error 5 returned. >[ 2487.810729] XFS (sdc3): xfs_do_force_shutdown(0x1) called from line 103= 1 of file fs/xfs/xfs_buf.c. Return address =3D 0xffffffff8127c13a >[ 2487.812981] XFS (sdc2): xfs_log_force: error 5 returned. >[ 2487.812991] XFS (sdc2): xfs_do_force_shutdown(0x1) called from line 103= 1 of file fs/xfs/xfs_buf.c. Return address =3D 0xffffffff8127c13a >[ 2489.420042] XFS (sdc3): Filesystem not writable / already shutdown. >[ 2490.955438] XFS (sdc2): Filesystem not writable / already shutdown. > >Signed-off-by: Raghavendra D Prabhu >Tested-by: Raghavendra D Prabhu >--- > fs/xfs/xfs_sync.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > >diff --git a/fs/xfs/xfs_sync.c b/fs/xfs/xfs_sync.c >index 205ebcb..7ec412c 100644 >--- a/fs/xfs/xfs_sync.c >+++ b/fs/xfs/xfs_sync.c >@@ -460,6 +460,12 @@ xfs_sync_worker( > struct xfs_mount, m_sync_work); > int error; > >+ if (!xfs_fs_writable(mp)) { >+ xfs_err(mp, "Filesystem not writable / already shutdown."); >+ xfs_syncd_stop(mp); >+ return; >+ } >+ > if (!(mp->m_flags & XFS_MOUNT_RDONLY)) { > /* dgc: errors ignored here */ > if (mp->m_super->s_frozen =3D=3D SB_UNFROZEN && >@@ -551,6 +557,12 @@ xfs_flush_worker( > struct xfs_mount *mp =3D container_of(work, > struct xfs_mount, m_flush_work); > >+ if (!xfs_fs_writable(mp)) { >+ xfs_err(mp, "Filesystem not writable / already shutdown."); >+ xfs_syncd_stop(mp); >+ return; >+ } >+ > xfs_sync_data(mp, SYNC_TRYLOCK); > xfs_sync_data(mp, SYNC_TRYLOCK | SYNC_WAIT); > } >--=20 >1.7.10.1 > >_______________________________________________ >xfs mailing list >xfs@oss.sgi.com >http://oss.sgi.com/mailman/listinfo/xfs Regards, --=20 Raghavendra Prabhu GPG Id : 0xD72BE977 Fingerprint: B93F EBCB 8E05 7039 CD3C A4B8 A616 DCA1 D72B E977 www: wnohang.net --bg08WKrSYDhXBjb5 Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) iQEcBAEBAgAGBQJPp7r2AAoJEKYW3KHXK+l3YEgH/jJDdTiMwGZfjyJF49PpmJms 1j+pvnZ96owjXeU1cpn7w7FCb/VRfq3b1z/1Re1vqrzEon1e7s+NVWi94RB3G+hK 0H6rNz3b4s1nZlaWKZBRzWjUzzrbZou6+4Ij6PWF0Dv+eo27KSTX5PxUnLOfweJv udGVpatJHg6fAmF4w8IoXh9KRI7hVz0pi2VXp7amJMf0664d7JBrrg+3O2vLpIWK 8o4Sxw+49KdNAo3+nmgQ5kSmjme39UwJCIVE/IDQgR2jqIbw3XiehaMIeq0gIx53 UOukDrvlRY00LJ1W/LfmwmvffdKYL/AuS+SP3AA9/XOgNi/TeAzK8wLbAaXOg9I= =wN7S -----END PGP SIGNATURE----- --bg08WKrSYDhXBjb5-- From schumi.han@gmail.com Mon May 7 07:44:19 2012 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,FREEMAIL_FROM, HTML_MESSAGE,J_CHICKENPOX_45,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 q47CiJjP044694 for ; Mon, 7 May 2012 07:44:19 -0500 X-ASG-Debug-ID: 1336394657-04cbb03c172dff00001-NocioJ Received: from mail-wi0-f169.google.com (mail-wi0-f169.google.com [209.85.212.169]) by cuda.sgi.com with ESMTP id rFt21w8lRatNkbvV (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 07 May 2012 05:44:18 -0700 (PDT) X-Barracuda-Envelope-From: schumi.han@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.212.169 Received: by wibhn14 with SMTP id hn14so846721wib.2 for ; Mon, 07 May 2012 05:44:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=F7cWlZjav0CjpkkPwKAOvMzSg7cjgwVRoFhZ1q2bzik=; b=vzo0u7IpvjzNd3fMsP4X9le25iCPjqRvD5tGRmCKAftAy3YpYB68MsJb+piXwcl1fs 4tvVNHpBYGcZx1umaUREIuiSllUo+kRkG7hirN5zfsxpboCee/0qiUiLQ7f3hJI0s4zm Fecv9Rta2of9Ui6u5Kl9r7VVGfhmpBjAqBYAdeV/B71+5FYInNttv3ph11imdE0HgX/u wSFymK63o7lcAc7AKYU8jTGaggly1nimzt9NSLcPi+yvFQEmfV4BUljCv+6NO0NqwZAw BWHvvl2pjzK9O7CNMUFmC83Ih/8WabqKqyAmW24AvksTV0ehVhPNVrQ/ktKXgZk5LkXD 3xUg== MIME-Version: 1.0 Received: by 10.180.24.7 with SMTP id q7mr34527614wif.11.1336394657363; Mon, 07 May 2012 05:44:17 -0700 (PDT) Received: by 10.216.171.143 with HTTP; Mon, 7 May 2012 05:44:17 -0700 (PDT) Date: Mon, 7 May 2012 20:44:17 +0800 Message-ID: Subject: fallocate bug? From: Zhu Han X-ASG-Orig-Subj: fallocate bug? To: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=f46d043892abd4f7ae04bf71a0a1 X-Barracuda-Connect: mail-wi0-f169.google.com[209.85.212.169] X-Barracuda-Start-Time: 1336394658 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96251 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 --f46d043892abd4f7ae04bf71a0a1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Seems like xfs of CentOS 6.X occupies much more storage space than desired if fallocate is used against the file. Here is the step to reproduce it: By the way, is it normal when the file is moved around after the preallocated region is filled with data? $ uname -r 2.6.32-220.7.1.el6.x86_64 $fallocate -n --offset 0 -l 1G file ---->Write a little more data than the preallocated size $ xfs_bmap -p -vv file file: EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS 0: [0..2097151]: 2593408088..2595505239 21 (29420144..31517295) 2097152 10000 $ dd if=3D/dev/zero of=3D/tmp/file bs=3D1M count=3D1026 conv=3Dfsync $ xfs_bmap -p -vv file file: EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS 0: [0..4194303]: 2709184016..2713378319 22 (23101408..27295711) 4194304 00000 $ du -h --apparent-size file 1.1G file $du -h file 2.0G best regards, =E9=9F=A9=E7=AB=B9(Zhu Han) --f46d043892abd4f7ae04bf71a0a1 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Seems like xfs of CentOS 6.X occupies much more storage space than desired = if fallocate is used against the file. Here is the step to reproduce it:
By the way, is it normal when the file is moved around after the preal= located region is filled with data?

$ uname -r
2.6.32-220.7.1.el6.x86_64

$fallocate -n --offset 0= -l 1G file=C2=A0=C2=A0=C2=A0 ---->Write a little more data than the pre= allocated size

$ xfs_bmap -p -vv file
file:
=C2=A0EXT: FILE-OF= FSET=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 BLOCK-RANGE=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 AG AG-OFFSET=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 TOTAL FLAGS
=C2=A0=C2=A0 0: [0..2097151]:=C2=A0=C2=A0=C2=A0 2593408088..2595505239 21 (= 29420144..31517295) 2097152 10000

$ dd if=3D/dev/zero of=3D/tmp/file= bs=3D1M count=3D1026 conv=3Dfsync

$ xfs_bmap -p -vv file
file:=C2=A0EXT: FILE-OFFSET=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 BLOCK-RANGE=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 AG AG-OFFSET=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= TOTAL FLAGS
=C2=A0=C2=A0 0: [0..4194303]:=C2=A0=C2=A0=C2=A0 2709184016..2713378319 22 (= 23101408..27295711) 4194304 00000

$ du -h --apparent-size file
1.= 1G=C2=A0=C2=A0=C2=A0 file

$du -h file
2.0G

b= est regards,
=E9=9F=A9=E7=AB=B9(Zhu Han)
--f46d043892abd4f7ae04bf71a0a1-- From s.priebe@profihost.ag Mon May 7 08:57:43 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q47DvgC6059563 for ; Mon, 7 May 2012 08:57:43 -0500 X-ASG-Debug-ID: 1336399058-04cb6c24fc29c6e0001-NocioJ Received: from mail.profihost.ag (mail.profihost.ag [85.158.179.208]) by cuda.sgi.com with ESMTP id EjtnT79cBBu9QrzJ (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 07 May 2012 06:57:40 -0700 (PDT) X-Barracuda-Envelope-From: s.priebe@profihost.ag X-Barracuda-Apparent-Source-IP: 85.158.179.208 Received: (qmail 3177 invoked from network); 7 May 2012 15:57:38 +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 mail.profihost.ag (qpsmtpd/0.82) with (AES256-SHA encrypted) ESMTPSA; Mon, 07 May 2012 15:57:38 +0200 Message-ID: <4FA7D4D1.6070609@profihost.ag> Date: Mon, 07 May 2012 15:57:37 +0200 From: Stefan Priebe - Profihost AG User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.28) Gecko/20120313 Thunderbird/3.1.20 MIME-Version: 1.0 To: Martin Steigerwald CC: xfs@oss.sgi.com, Dave Chinner , stan@hardwarefreak.com Subject: Re: suddenly slow writes on XFS Filesystem References: <4FA63DDA.9070707@profihost.ag> <20120507013456.GW5091@dastard> <4FA76E11.1070708@profihost.ag> (sfid-20120507_095413_656560_122EB192) <201205071031.38856.Martin@lichtvoll.de> X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem In-Reply-To: <201205071031.38856.Martin@lichtvoll.de> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-User-Auth: Auth by hostmaster@profihost.com through 85.158.179.66 X-Barracuda-Connect: mail.profihost.ag[85.158.179.208] X-Barracuda-Start-Time: 1336399060 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96258 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Am 07.05.2012 10:31, schrieb Martin Steigerwald: > Am Montag, 7. Mai 2012 schrieb Stefan Priebe - Profihost AG: > Did you verify that at the time you perceive slowness the servers you > backup can deliver data fast enough? Yes. It works fine to another partition. > I would like to now, whether there are really processes waiting for I/O > during rsync workload. > > Can you try vmstat 5 and > while true; do ps aux | grep " D" | grep -v grep ; sleep 1; done Here it is: # vmstat 5 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 1 0 396688 48 7728136 0 0 229 374 22 32 1 12 85 2 2 0 0 421744 48 7717348 0 0 3722 1169 9015 8389 1 2 95 2 0 1 0 405780 48 7751904 0 0 8937 207 10780 9290 2 2 88 7 0 0 0 486928 48 7733300 0 0 2526 1277 8275 7791 1 2 96 1 0 0 0 416692 48 7778164 0 0 5046 43750 8548 8141 1 2 95 2 0 0 0 444968 48 7777792 0 0 8021 1709 9315 8573 2 2 94 2 2 0 0 357924 48 7946532 0 0 48181 1031 17646 12684 10 4 87 0 1 0 0 348696 48 8137200 0 0 74366 1056 24362 16775 15 5 81 0 1 0 0 391552 48 8279000 0 0 54693 1242 19224 13957 11 4 85 0 # while true; do ps aux | grep " D" | grep -v grep ; sleep 1; done root 12493 2.0 0.2 101780 48392 ? D 15:35 0:24 rsync --daemon root 13581 3.5 0.1 76832 20828 ? D 15:50 0:10 rsync --daemon root 12493 2.0 0.2 101268 48508 ? D 15:35 0:24 rsync --daemon root 12494 3.9 0.2 128220 44328 ? D 15:35 0:47 rsync --daemon root 12493 2.0 0.2 101268 48508 ? D 15:35 0:24 rsync --daemon root 13581 3.5 0.1 76832 20828 ? D 15:50 0:10 rsync --daemon root 12493 2.0 0.2 101268 48508 ? D 15:35 0:24 rsync --daemon root 13581 3.5 0.1 76832 20828 ? D 15:50 0:10 rsync --daemon root 12493 2.0 0.2 86420 48120 ? D 15:35 0:25 rsync --daemon root 12493 2.0 0.2 86420 48120 ? D 15:35 0:25 rsync --daemon root 13581 3.5 0.1 76832 21720 ? D 15:50 0:11 rsync --daemon root 12493 2.0 0.2 86420 48120 ? D 15:35 0:25 rsync --daemon root 12493 2.0 0.2 86420 48120 ? D 15:35 0:25 rsync --daemon root 13581 3.5 0.1 76832 21720 ? D 15:50 0:11 rsync --daemon root 12493 2.0 0.2 86420 48120 ? D 15:35 0:25 rsync --daemon root 13581 3.5 0.1 76832 21980 ? D 15:50 0:11 rsync --daemon root 13582 1.7 0.0 74308 13280 ? D 15:50 0:05 rsync --daemon root 12493 2.0 0.2 87956 48212 ? D 15:35 0:25 rsync --daemon root 13581 3.5 0.1 76832 21980 ? D 15:50 0:11 rsync --daemon root 12493 2.0 0.2 86420 48156 ? D 15:35 0:25 rsync --daemon root 12493 2.0 0.2 86420 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.5 0.1 76832 22244 ? D 15:50 0:11 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.5 0.1 76832 22244 ? D 15:50 0:11 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.5 0.1 76832 22244 ? D 15:50 0:11 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.5 0.1 76832 22244 ? D 15:50 0:11 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.5 0.1 76832 22244 ? D 15:50 0:11 rsync --daemon root 13581 3.5 0.1 76832 22508 ? D 15:50 0:11 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.5 0.1 76832 22508 ? D 15:50 0:11 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.5 0.1 76832 22508 ? D 15:50 0:11 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.5 0.1 76832 22772 ? D 15:50 0:11 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.5 0.1 76832 22772 ? D 15:50 0:11 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.5 0.1 76832 22772 ? D 15:50 0:11 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.5 0.1 76832 22772 ? D 15:50 0:12 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.5 0.1 76832 22772 ? D 15:50 0:12 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.4 0.1 76832 23036 ? D 15:50 0:12 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.4 0.1 76832 23036 ? D 15:50 0:12 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.4 0.1 76832 23036 ? D 15:50 0:12 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.4 0.1 76832 23036 ? D 15:50 0:12 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.4 0.1 76832 23036 ? D 15:50 0:12 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.4 0.1 76832 23036 ? D 15:50 0:12 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.4 0.1 76832 23036 ? D 15:50 0:12 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.4 0.1 76832 23036 ? D 15:50 0:12 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.4 0.1 76832 23036 ? D 15:50 0:12 rsync --daemon root 3378 0.1 0.0 0 0 ? D 13:59 0:09 [flush-8:16] root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.4 0.1 76832 23036 ? D 15:50 0:12 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.4 0.1 76832 23036 ? D 15:50 0:12 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.4 0.1 76832 23036 ? D 15:50 0:12 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.4 0.1 76832 23036 ? D 15:50 0:12 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.4 0.1 76832 23036 ? D 15:50 0:12 rsync --daemon root 12493 2.0 0.2 86676 48180 ? D 15:35 0:25 rsync --daemon root 13581 3.4 0.1 76832 23036 ? D 15:50 0:12 rsync --daemon Stefan From Martin@lichtvoll.de Mon May 7 09:32:09 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q47EW9HV066550 for ; Mon, 7 May 2012 09:32:09 -0500 X-ASG-Debug-ID: 1336401127-04cb6c24fd29e830001-NocioJ Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id haB5b11on33MkXNB for ; Mon, 07 May 2012 07:32:07 -0700 (PDT) X-Barracuda-Envelope-From: Martin@lichtvoll.de X-Barracuda-Apparent-Source-IP: 194.150.191.11 Received: from merkaba.localnet (blackhole.teamix.net [194.150.191.251]) by mail.lichtvoll.de (Postfix) with ESMTPSA id D967EB8; Mon, 7 May 2012 16:32:06 +0200 (CEST) From: Martin Steigerwald To: "Stefan Priebe - Profihost AG" Subject: Re: suddenly slow writes on XFS Filesystem Date: Mon, 7 May 2012 16:32:03 +0200 X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem User-Agent: KMail/1.13.7 (Linux/3.3.0-trunk-amd64; KDE/4.7.4; x86_64; ; ) Cc: xfs@oss.sgi.com, Dave Chinner , stan@hardwarefreak.com References: <4FA63DDA.9070707@profihost.ag> <201205071031.38856.Martin@lichtvoll.de> <4FA7D4D1.6070609@profihost.ag> (sfid-20120507_162145_568797_0C0B5263) In-Reply-To: <4FA7D4D1.6070609@profihost.ag> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Message-Id: <201205071632.03378.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1336401127 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96260 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Am Montag, 7. Mai 2012 schrieb Stefan Priebe - Profihost AG: > Am 07.05.2012 10:31, schrieb Martin Steigerwald: > > Am Montag, 7. Mai 2012 schrieb Stefan Priebe - Profihost AG: > > Did you verify that at the time you perceive slowness the servers you > > backup can deliver data fast enough? >=20 > Yes. It works fine to another partition. With more free space I suppose? >=20 > > I would like to now, whether there are really processes waiting for > > I/O during rsync workload. > >=20 > > Can you try vmstat 5 and > > while true; do ps aux | grep " D" | grep -v grep ; sleep 1; done >=20 > Here it is: > # vmstat 5 > procs -----------memory---------- ---swap-- -----io---- -system-- > ----cpu---- > r b swpd free buff cache si so bi bo in cs us sy > id wa > 0 1 0 396688 48 7728136 0 0 229 374 22 32 1 > 12 85 2 > 2 0 0 421744 48 7717348 0 0 3722 1169 9015 8389 1=20 > 2 95 2 > 0 1 0 405780 48 7751904 0 0 8937 207 10780 9290 2 > 2 88 7 > 0 0 0 486928 48 7733300 0 0 2526 1277 8275 7791 1=20 > 2 96 1 > 0 0 0 416692 48 7778164 0 0 5046 43750 8548 8141 1=20 > 2 95 2 > 0 0 0 444968 48 7777792 0 0 8021 1709 9315 8573 2=20 > 2 94 2 > 2 0 0 357924 48 7946532 0 0 48181 1031 17646 12684 10 > 4 87 0 > 1 0 0 348696 48 8137200 0 0 74366 1056 24362 16775 15 > 5 81 0 > 1 0 0 391552 48 8279000 0 0 54693 1242 19224 13957 11 > 4 85 0 Hmm, there are some I/O wait times, but they are lower than I expected. In the last lines the throughput is higher than in the first lines. Does=20 that correlate to higher speed in rsync? It may also be excessive writes=20 due to free space fragmentation, but Dave or someone else might be able to= =20 say whether such a huge difference can be blamed to free space=20 fragmentation alone. > # while true; do ps aux | grep " D" | grep -v grep ; sleep 1; done > root 12493 2.0 0.2 101780 48392 ? D 15:35 0:24 rsync > --daemon > root 13581 3.5 0.1 76832 20828 ? D 15:50 0:10 rsync > --daemon > root 12493 2.0 0.2 101268 48508 ? D 15:35 0:24 rsync > --daemon > root 12494 3.9 0.2 128220 44328 ? D 15:35 0:47 rsync > --daemon > root 12493 2.0 0.2 101268 48508 ? D 15:35 0:24 rsync > --daemon Still these rsyncs appear to be in uninteruptible sleep quite=20 consistently. They shouldn=B4t be in that state when waiting on network=20 socket readyness. So this workloads seems to be I/O bound to me. I suggest trying to keep the volume above 500 GB free and see whether that= =20 works consistently. Thanks, =2D-=20 Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From stan@hardwarefreak.com Mon May 7 11:36:36 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q47Gaaxg093087 for ; Mon, 7 May 2012 11:36:36 -0500 X-ASG-Debug-ID: 1336408595-04cbb03c172f0c60001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id o6kZT2WbgU1mGflO for ; Mon, 07 May 2012 09:36:35 -0700 (PDT) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id D64E16C0B6; Mon, 7 May 2012 11:36:34 -0500 (CDT) Message-ID: <4FA7FA14.6080700@hardwarefreak.com> Date: Mon, 07 May 2012 11:36:36 -0500 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20120428 Thunderbird/12.0.1 MIME-Version: 1.0 To: Stefan Priebe - Profihost AG CC: Dave Chinner , "xfs@oss.sgi.com" Subject: Re: suddenly slow writes on XFS Filesystem References: <4FA63DDA.9070707@profihost.ag> <20120507013456.GW5091@dastard> <4FA76E11.1070708@profihost.ag> <20120507071713.GZ5091@dastard> <4FA77842.5010703@profihost.ag> X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem In-Reply-To: <4FA77842.5010703@profihost.ag> 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: 1336408595 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96267 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS On 5/7/2012 2:22 AM, Stefan Priebe - Profihost AG wrote: > from to extents blocks pct > 1 1 942737 942737 0,87 > 2 3 671860 1590480 1,47 > 4 7 461268 2416025 2,23 > 8 15 1350517 18043063 16,67 > 16 31 111254 2547581 2,35 > 32 63 192032 9039799 8,35 > 64 127 33026 3317194 3,07 > 128 255 14254 2665812 2,46 > 256 511 12516 4631200 4,28 > 512 1023 6942 5031081 4,65 > 1024 2047 4622 6893270 6,37 > 2048 4095 3268 9412271 8,70 > 4096 8191 2135 12716435 11,75 > 8192 16383 338 3974884 3,67 > 16384 32767 311 7018658 6,49 > 32768 65535 105 4511372 4,17 > 65536 131071 29 2577756 2,38 > 131072 262143 8 1339796 1,24 > 262144 524287 10 3950416 3,65 > 524288 1048575 4 2580085 2,38 > 1048576 2097151 2 3028028 2,80 This shows what I originally suspected. Notice how top heavy this histogram is. Over half of your free space sits on little islands of 8MB or less. 17% is in islands of 60KB or less. This is heavily fragmented free space. Contrast this with an XFS from the opposite end of the aging spectrum that is only 1/3rd full and has seen very few deletes as it has aged: from to extents blocks pct 1 1 1028 1028 0.01 2 3 1185 2864 0.02 4 7 1656 9007 0.06 8 15 5232 67674 0.41 16 31 36 775 0.00 32 63 7 292 0.00 64 127 4 350 0.00 128 255 6 1286 0.01 256 511 4 1460 0.01 512 1023 5 4278 0.03 1024 2047 5 6965 0.04 2048 4095 5 12935 0.08 4096 8191 1 8179 0.05 8192 16383 2 29570 0.18 16384 32767 2 60352 0.37 32768 65535 3 148594 0.91 65536 131071 2 195575 1.20 131072 262143 2 420917 2.57 524288 1048575 2 1499689 9.17 4194304 6103694 3 13876795 84.88 Notice how it is very bottom heavy, and that 85% of the free space is in large islands of 16GB to 24GB. Stefan, at this point in your filesystem's aging process, it may not matter how much space you keep freeing up, as your deletion of small files simply adds more heavily fragmented free space to the pool. It's the nature of your workload causing this. If you were rsyncing and deleting 500MB files the story would be much different. What I would suggest is doing an xfsdump to a filesystem on another LUN or machine, expand the size of this LUN by 50% or more (I gather this is an external RAID), format it appropriately, then xfsrestore. This will eliminate your current free space fragmentation, and the 50% size increase will delay the next occurrence of this problem. If you can't expand the LUN, simply do the xfsdump/format/xfsrestore, which will give you contiguous free space. -- Stan From stan@hardwarefreak.com Mon May 7 11:44:12 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q47GiCGp095100 for ; Mon, 7 May 2012 11:44:12 -0500 X-ASG-Debug-ID: 1336409051-04cbb03c152f1190001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id NQYt2xQLB7TOHTkJ for ; Mon, 07 May 2012 09:44:11 -0700 (PDT) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 2BD636C0B6; Mon, 7 May 2012 11:44:11 -0500 (CDT) Message-ID: <4FA7FBDC.9070308@hardwarefreak.com> Date: Mon, 07 May 2012 11:44:12 -0500 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20120428 Thunderbird/12.0.1 MIME-Version: 1.0 To: Martin Steigerwald CC: xfs@oss.sgi.com, Stefan Priebe - Profihost AG , Dave Chinner Subject: Re: suddenly slow writes on XFS Filesystem References: <4FA63DDA.9070707@profihost.ag> <20120507013456.GW5091@dastard> <4FA76E11.1070708@profihost.ag> (sfid-20120507_095413_656560_122EB192) <201205071021.14478.Martin@lichtvoll.de> X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem In-Reply-To: <201205071021.14478.Martin@lichtvoll.de> 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: 1336409051 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96267 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS On 5/7/2012 3:21 AM, Martin Steigerwald wrote: > Am Montag, 7. Mai 2012 schrieb Stefan Priebe - Profihost AG: >> after deleting 400GB it was faster. Now there are still 300GB free but >> it is slow as hell again ;-( > > Well, before you had 200 GB free, now you have 300 GB free. Thats not that > much more. You have 5 AGs, so if distributed evenly it would be 40 to 60 > GB free space per AG. > > The 10% Dave recommended of 4,6 TB would be 460 GB. As I mentioned, increasing the size of the free space pool will only help for a short duration. Most of the files Stefan is deleting are small files. Thus he's simply punching out small holes of free space, which is the problem he already has. Now if he could delete a handful of large files (10GB+) that are mostly contiguous now, that would help quite a bit, as the resulting free space wouldn't be horribly fragmented. So the takeaway is that simply deleting files to get more space isn't the right way to go. Deleting larger files that are currently contiguous is the way to go. At least for some temporary breathing room. The "permanent" solution I described in another reply. -- Stan From bpm@sgi.com Mon May 7 12:15:29 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-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 q47HFTcl101937 for ; Mon, 7 May 2012 12:15:29 -0500 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay3.corp.sgi.com (Postfix) with ESMTP id E5B02AC003; Mon, 7 May 2012 10:15:25 -0700 (PDT) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 193E8402073; Mon, 7 May 2012 12:19:08 -0500 (CDT) Date: Mon, 7 May 2012 12:19:08 -0500 From: Ben Myers To: Juerg Haefliger Cc: Dave Chinner , xfs@oss.sgi.com Subject: Re: Still seeing hangs in xlog_grant_log_space Message-ID: <20120507171908.GA16881@sgi.com> References: <20120425223845.GX9541@dastard> <20120426224412.GA9541@dastard> <20120426230738.GB9541@dastard> <20120427110922.GF9541@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) Hey Juerg, On Sat, May 05, 2012 at 09:44:35AM +0200, Juerg Haefliger wrote: > Did anybody have a chance to look at the data? https://bugs.launchpad.net/ubuntu/+source/linux/+bug/979498 Here you indicate that you have created a reproducer. Can you post it to the list? Thanks, Ben From Martin@lichtvoll.de Mon May 7 14:08:18 2012 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,TO_NO_BRKTS_PCNT 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 q47J8IcC131973 for ; Mon, 7 May 2012 14:08:18 -0500 X-ASG-Debug-ID: 1336417696-04bdf034ef2d09d0001-NocioJ Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id fFvhgtcd9rKsjcu2 for ; Mon, 07 May 2012 12:08:16 -0700 (PDT) X-Barracuda-Envelope-From: Martin@lichtvoll.de X-Barracuda-Apparent-Source-IP: 194.150.191.11 Received: from merkaba.localnet (ppp-88-217-97-121.dynamic.mnet-online.de [88.217.97.121]) by mail.lichtvoll.de (Postfix) with ESMTPSA id D92C5F3; Mon, 7 May 2012 21:08:15 +0200 (CEST) From: Martin Steigerwald To: xfs@oss.sgi.com, stan@hardwarefreak.com Subject: Re: suddenly slow writes on XFS Filesystem Date: Mon, 7 May 2012 21:08:14 +0200 X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem User-Agent: KMail/1.13.7 (Linux/3.3.0-trunk-amd64; KDE/4.7.4; x86_64; ; ) Cc: "Stefan Priebe - Profihost AG" References: <4FA63DDA.9070707@profihost.ag> <4FA77842.5010703@profihost.ag> <4FA7FA14.6080700@hardwarefreak.com> (sfid-20120507_185142_476909_3A22D91B) In-Reply-To: <4FA7FA14.6080700@hardwarefreak.com> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201205072108.15134.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1336417696 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96278 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Am Montag, 7. Mai 2012 schrieb Stan Hoeppner: > What I would suggest is doing an xfsdump to a filesystem on another LUN > or machine, expand the size of this LUN by 50% or more (I gather this > is an external RAID), format it appropriately, then xfsrestore. This > will eliminate your current free space fragmentation, and the 50% size > increase will delay the next occurrence of this problem. If you can't > expand the LUN, simply do the xfsdump/format/xfsrestore, which will > give you contiguous free space. Maybe the new dm thin provisioning could help here? But it might just move the fragmentation from the filesystem to the device mapper layer. I did not yet check the implementation details of the new thin provisioning target. -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From s.priebe@profihost.ag Mon May 7 15:05:19 2012 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,TO_NO_BRKTS_PCNT 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 q47K5IBw148423 for ; Mon, 7 May 2012 15:05:18 -0500 X-ASG-Debug-ID: 1336421116-04cbb03c162fd7a0001-NocioJ Received: from mail.profihost.ag (mail.profihost.ag [85.158.179.208]) by cuda.sgi.com with ESMTP id WGO9ypATpK4yAgBw (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 07 May 2012 13:05:17 -0700 (PDT) X-Barracuda-Envelope-From: s.priebe@profihost.ag X-Barracuda-Apparent-Source-IP: 85.158.179.208 Received: (qmail 27439 invoked from network); 7 May 2012 22:05:15 +0200 Received: from p579D6BF3.dip.t-dialin.net (HELO [192.168.178.22]) (87.157.107.243) (smtp-auth username s.priebe@profihost.ag, mechanism plain) by mail.profihost.ag (qpsmtpd/0.82) with (AES256-SHA encrypted) ESMTPSA; Mon, 07 May 2012 22:05:15 +0200 Message-ID: <4FA82B07.1020102@profihost.ag> Date: Mon, 07 May 2012 22:05:27 +0200 From: Stefan Priebe User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20120428 Thunderbird/12.0.1 MIME-Version: 1.0 To: stan@hardwarefreak.com CC: Dave Chinner , "xfs@oss.sgi.com" Subject: Re: suddenly slow writes on XFS Filesystem References: <4FA63DDA.9070707@profihost.ag> <20120507013456.GW5091@dastard> <4FA76E11.1070708@profihost.ag> <20120507071713.GZ5091@dastard> <4FA77842.5010703@profihost.ag> <4FA7FA14.6080700@hardwarefreak.com> X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem In-Reply-To: <4FA7FA14.6080700@hardwarefreak.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-User-Auth: Auth by s.priebe@profihost.ag through 87.157.107.243 X-Barracuda-Connect: mail.profihost.ag[85.158.179.208] X-Barracuda-Start-Time: 1336421116 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96282 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Am 07.05.2012 18:36, schrieb Stan Hoeppner: > This shows what I originally suspected. Notice how top heavy this > histogram is. Over half of your free space sits on little islands of > 8MB or less. 17% is in islands of 60KB or less. This is heavily > fragmented free space. Contrast this with an XFS from the opposite end > of the aging spectrum that is only 1/3rd full and has seen very few > deletes as it has aged: ... > > Notice how it is very bottom heavy, and that 85% of the free space is in > large islands of 16GB to 24GB. This totally makes sense too me. Thanks for this explanation. > Stefan, at this point in your filesystem's aging process, it may not > matter how much space you keep freeing up, as your deletion of small > files simply adds more heavily fragmented free space to the pool. It's > the nature of your workload causing this. This makes sense - do you have any idea or solution for this? Are Filesystems, Block layers or something else which suits this problem / situation? > What I would suggest is doing an xfsdump to a filesystem on another LUN > or machine, expand the size of this LUN by 50% or more (I gather this is > an external RAID), format it appropriately, then xfsrestore. This will > eliminate your current free space fragmentation, and the 50% size > increase will delay the next occurrence of this problem. If you can't > expand the LUN, simply do the xfsdump/format/xfsrestore, which will give > you contiguous free space. But this will only help for a few month or perhaps a year. Greets, Stefan From treestem@gmail.com Mon May 7 15:12:22 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-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 q47KCMZu150450 for ; Mon, 7 May 2012 15:12:22 -0500 X-ASG-Debug-ID: 1336421541-04cb6c24fc2b1cf0001-NocioJ Received: from mail-qc0-f181.google.com (mail-qc0-f181.google.com [209.85.216.181]) by cuda.sgi.com with ESMTP id vGQoa65N4RUShbOe (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 07 May 2012 13:12:21 -0700 (PDT) X-Barracuda-Envelope-From: treestem@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.181 Received: by qcsk26 with SMTP id k26so4436945qcs.26 for ; Mon, 07 May 2012 13:12:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=/kud44Sg17ialEA0Spg4HJeSh68zgpFsVjEeuV0YywM=; b=heDLzXKzf5f4WXhlzfcmHPi7pp1IX8Mg6tLIYR5HnQ3kGNtBHtfOqsuN8F2nlfElFV Z/aaaJK41DWbIendNEHqfH46PpzLYVN0bFQgh6htdR5ay6eIC0pv4pfxnkZVOvY7vprl rBHSgS27oS1b5G9dA1vRFzSYxKWW7RPAVeZVnOcP9KQcvyaVrG7yd3DPOu3uH7GKoyXH QBzzrfMITjuvsvG9n0x7vmVZ8+1LLeOSixa53s7QJV8cNyzz1SKhkj8GW7rVvL9QJPHH BkDzNkGXppZruZlYBm0zjTCw1bhzyk9gCo2a8uqGtGCe+TFEBYfBBKhqY2ITZeF+E3pu 6gVg== Received: by 10.224.215.132 with SMTP id he4mr18303902qab.96.1336421540755; Mon, 07 May 2012 13:12:20 -0700 (PDT) Received: from localhost.localdomain ([69.84.133.248]) by mx.google.com with ESMTPS id gw8sm34939266qab.7.2012.05.07.13.12.20 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 07 May 2012 13:12:20 -0700 (PDT) From: Peter Watkins To: david@fromorbit.com Cc: xfs@oss.sgi.com, Peter Watkins Subject: [PATCH] xfs: fix memory reclaim deadlock on agi buffer Date: Mon, 7 May 2012 16:11:37 -0400 X-ASG-Orig-Subj: [PATCH] xfs: fix memory reclaim deadlock on agi buffer Message-Id: <1336421497-1554-1-git-send-email-treestem@gmail.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: References: X-Barracuda-Connect: mail-qc0-f181.google.com[209.85.216.181] X-Barracuda-Start-Time: 1336421541 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96282 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 Note xfs_iget can be called while holding a locked agi buffer. If it goes into memory reclaim then inode teardown may try to lock the same buffer. Prevent the deadlock by calling radix_tree_preload with GFP_NOFS. Signed-off-by: Peter Watkins --- fs/xfs/xfs_iget.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c index bcc6c24..8c6f806 100644 --- a/fs/xfs/xfs_iget.c +++ b/fs/xfs/xfs_iget.c @@ -334,9 +334,10 @@ xfs_iget_cache_miss( /* * Preload the radix tree so we can insert safely under the * write spinlock. Note that we cannot sleep inside the preload - * region. + * region. Since we can be called from transaction context, don't + * recurse into the file system. */ - if (radix_tree_preload(GFP_KERNEL)) { + if (radix_tree_preload(GFP_NOFS)) { error = EAGAIN; goto out_destroy; } -- 1.7.0.4 From root@nfs10.americas.sgi.com Mon May 7 15:28:12 2012 X-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 nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id q47KSCpb156251 for ; Mon, 7 May 2012 15:28:12 -0500 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id A037A16A349; Mon, 7 May 2012 15:42:46 -0500 (CDT) Message-Id: <20120507204246.383062369@nfs10.americas.sgi.com> User-Agent: quilt/0.47-15.10 Date: Mon, 07 May 2012 15:42:23 -0500 From: bpm@sgi.com To: xfs-dev@sgi.com, xfs@oss.sgi.com Cc: Dave Chinner Subject: [patch 1/5] [PATCH 2/3] xfs: punch new delalloc blocks out of failed writes References: <20120507204222.921092617@nfs10.americas.sgi.com> Content-Disposition: inline; filename=xfs-punch-new-delalloc-blocks-out-of-failed-writes.patch inside EOF. From: Dave Chinner When a partial write inside EOF fails, it can leave delayed allocation blocks lying around because they don't get punched back out. This leads to assert failures like: XFS: Assertion failed: XFS_FORCED_SHUTDOWN(ip->i_mount) || ip->i_delayed_blks == 0, file: fs/xfs/xfs_super.c, line: 847 when evicting inodes from the cache. This can be trivially triggered by xfstests 083, which takes between 5 and 15 executions on a 512 byte block size filesystem to trip over this. Debugging shows a failed write due to ENOSPC calling xfs_vm_write_failed such as: [ 5012.329024] ino 0xa0026: vwf to 0x17000, sze 0x1c85ae and no action is taken on it. This leaves behind a delayed allocation extent that has no page covering it and no data in it: [ 5015.867162] ino 0xa0026: blks: 0x83 delay blocks 0x1, size 0x2538c0 [ 5015.868293] ext 0: off 0x4a, fsb 0x50306, len 0x1 [ 5015.869095] ext 1: off 0x4b, fsb 0x7899, len 0x6b [ 5015.869900] ext 2: off 0xb6, fsb 0xffffffffe0008, len 0x1 ^^^^^^^^^^^^^^^ [ 5015.871027] ext 3: off 0x36e, fsb 0x7a27, len 0xd [ 5015.872206] ext 4: off 0x4cf, fsb 0x7a1d, len 0xa So the delayed allocation extent is one block long at offset 0x16c00. Tracing shows that a bigger write: xfs_file_buffered_write: size 0x1c85ae offset 0x959d count 0x1ca3f ioflags allocates the block, and then fails with ENOSPC trying to allocate the last block on the page, leading to a failed write with stale delalloc blocks on it. Because we've had an ENOSPC when trying to allocate 0x16e00, it means that we are never goinge to call ->write_end on the page and so the allocated new buffer will not get marked dirty or have the buffer_new state cleared. In other works, what the above write is supposed to end up with is this mapping for the page: +------+------+------+------+------+------+------+------+ UMA UMA UMA UMA UMA UMA UND FAIL where: U = uptodate M = mapped N = new A = allocated D = delalloc FAIL = block we ENOSPC'd on. and the key point being the buffer_new() state for the newly allocated delayed allocation block. Except it doesn't - we're not marking buffers new correctly. That buffer_new() problem goes back to the xfs_iomap removal days, where xfs_iomap() used to return a "new" status for any map with newly allocated blocks, so that __xfs_get_blocks() could call set_buffer_new() on it. We still have the "new" variable and the check for it in the set_buffer_new() logic - except we never set it now! Hence that newly allocated delalloc block doesn't have the new flag set on it, so when the write fails we cannot tell which blocks we are supposed to punch out. WHy do we need the buffer_new flag? Well, that's because we can have this case: +------+------+------+------+------+------+------+------+ UMD UMD UMD UMD UMD UMD UND FAIL where all the UMD buffers contain valid data from a previously successful write() system call. We only want to punch the UND buffer because that's the only one that we added in this write and it was only this write that failed. That implies that even the old buffer_new() logic was wrong - because it would result in all those UMD buffers on the page having set_buffer_new() called on them even though they aren't new. Hence we shoul donly be calling set_buffer_new() for delalloc buffers that were allocated (i.e. were a hole before xfs_iomap_write_delay() was called). So, fix this set_buffer_new logic according to how we need it to work for handling failed writes correctly. Also, restore the new buffer logic handling for blocks allocated via xfs_iomap_write_direct(), because it should still set the buffer_new flag appropriately for newly allocated blocks, too. SO, now we have the buffer_new() being set appropriately in __xfs_get_blocks(), we can detect the exact delalloc ranges that we allocated in a failed write, and hence can now do a walk of the buffers on a page to find them. Except, it's not that easy. When block_write_begin() fails, it unlocks and releases the page that we just had an error on, so we can't use that page to handle errors anymore. We have to get access to the page while it is still locked to walk the buffers. Hence we have to open code block_write_begin() in xfs_vm_write_begin() to be able to insert xfs_vm_write_failed() is the right place. With that, we can pass the page and write range to xfs_vm_write_failed() and walk the buffers on the page, looking for delalloc buffers that are either new or beyond EOF and punch them out. Handling buffers beyond EOF ensures we still handle the existing case that xfs_vm_write_failed() handles. Of special note is the truncate_pagecache() handling - that only should be done for pages outside EOF - pages within EOF can still contain valid, dirty data so we must not punch them out of the cache. That just leaves the xfs_vm_write_end() failure handling. The only failure case here is that we didn't copy the entire range, and generic_write_end() handles that by zeroing the region of the page that wasn't copied, we don't have to punch out blocks within the file because they are guaranteed to contain zeros. Hence we only have to handle the existing "beyond EOF" case and don't need access to the buffers on the page. Hence it remains largely unchanged. Note that xfs_getbmap() can still trip over delalloc blocks beyond EOF that are left there by speculative delayed allocation. Hence this bug fix does not solve all known issues with bmap vs delalloc, but it does fix all the the known accidental occurances of the problem. Signed-off-by: Dave Chinner --- fs/xfs/xfs_aops.c | 173 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 127 insertions(+), 46 deletions(-) diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c index 64ed87a..ae31c31 100644 --- a/fs/xfs/xfs_aops.c +++ b/fs/xfs/xfs_aops.c @@ -1184,11 +1184,18 @@ __xfs_get_blocks( &imap, nimaps); if (error) return -error; + new = 1; } else { /* * Delalloc reservations do not require a transaction, - * we can go on without dropping the lock here. + * we can go on without dropping the lock here. If we + * are allocating a new delalloc block, make sure that + * we set the new flag so that we mark the buffer new so + * that we know that it is newly allocated if the write + * fails. */ + if (nimaps && imap.br_startblock == HOLESTARTBLOCK) + new = 1; error = xfs_iomap_write_delay(ip, offset, size, &imap); if (error) goto out_unlock; @@ -1405,52 +1412,91 @@ out_destroy_ioend: return ret; } +/* + * Punch out the delalloc blocks we have already allocated. + * + * Don't bother with xfs_setattr given that nothing can have made it to disk yet + * as the page is still locked at this point. + */ +STATIC void +xfs_vm_kill_delalloc_range( + struct inode *inode, + loff_t start, + loff_t end) +{ + struct xfs_inode *ip = XFS_I(inode); + xfs_fileoff_t start_fsb; + xfs_fileoff_t end_fsb; + int error; + + start_fsb = XFS_B_TO_FSB(ip->i_mount, start); + end_fsb = XFS_B_TO_FSB(ip->i_mount, end); + if (end_fsb <= start_fsb) + return; + + xfs_ilock(ip, XFS_ILOCK_EXCL); + error = xfs_bmap_punch_delalloc_range(ip, start_fsb, + end_fsb - start_fsb); + if (error) { + /* something screwed, just bail */ + if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) { + xfs_alert(ip->i_mount, + "xfs_vm_write_failed: unable to clean up ino %lld", + ip->i_ino); + } + } + xfs_iunlock(ip, XFS_ILOCK_EXCL); +} + STATIC void xfs_vm_write_failed( - struct address_space *mapping, - loff_t to) + struct inode *inode, + struct page *page, + loff_t pos, + unsigned len) { - struct inode *inode = mapping->host; + loff_t block_offset = pos & PAGE_MASK; + loff_t block_start; + loff_t block_end; + loff_t from = pos & (PAGE_CACHE_SIZE - 1); + loff_t to = from + len; + struct buffer_head *bh, *head; - if (to > inode->i_size) { - /* - * Punch out the delalloc blocks we have already allocated. - * - * Don't bother with xfs_setattr given that nothing can have - * made it to disk yet as the page is still locked at this - * point. - */ - struct xfs_inode *ip = XFS_I(inode); - xfs_fileoff_t start_fsb; - xfs_fileoff_t end_fsb; - int error; + ASSERT(block_offset + from == pos); - truncate_pagecache(inode, to, inode->i_size); + head = page_buffers(page); + block_start = 0; + for (bh = head; bh != head || !block_start; + bh = bh->b_this_page, block_start = block_end, + block_offset += bh->b_size) { + block_end = block_start + bh->b_size; - /* - * Check if there are any blocks that are outside of i_size - * that need to be trimmed back. - */ - start_fsb = XFS_B_TO_FSB(ip->i_mount, inode->i_size); - end_fsb = XFS_B_TO_FSB(ip->i_mount, to); - if (end_fsb <= start_fsb) - return; - - xfs_ilock(ip, XFS_ILOCK_EXCL); - error = xfs_bmap_punch_delalloc_range(ip, start_fsb, - end_fsb - start_fsb); - if (error) { - /* something screwed, just bail */ - if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) { - xfs_alert(ip->i_mount, - "xfs_vm_write_failed: unable to clean up ino %lld", - ip->i_ino); - } - } - xfs_iunlock(ip, XFS_ILOCK_EXCL); + /* skip buffers before the write */ + if (block_end <= from) + continue; + + /* if the buffer is after the write, we're done */ + if (block_start >= to) + break; + + if (!buffer_delay(bh)) + continue; + + if (!buffer_new(bh) && block_offset < i_size_read(inode)) + continue; + + xfs_vm_kill_delalloc_range(inode, block_offset, + block_offset + bh->b_size); } + } +/* + * This used to call block_write_begin(), but it unlocks and releases the page + * on error, and we need that page to be able to punch stale delalloc blocks out + * on failure. hence we copy-n-waste it here and call xfs_vm_write_failed() at + * the appropriate point. + */ STATIC int xfs_vm_write_begin( struct file *file, @@ -1461,15 +1507,40 @@ xfs_vm_write_begin( struct page **pagep, void **fsdata) { - int ret; + pgoff_t index = pos >> PAGE_CACHE_SHIFT; + struct page *page; + int status; - ret = block_write_begin(mapping, pos, len, flags | AOP_FLAG_NOFS, - pagep, xfs_get_blocks); - if (unlikely(ret)) - xfs_vm_write_failed(mapping, pos + len); - return ret; + ASSERT(len <= PAGE_CACHE_SIZE); + + page = grab_cache_page_write_begin(mapping, index, + flags | AOP_FLAG_NOFS); + if (!page) + return -ENOMEM; + + status = __block_write_begin(page, pos, len, xfs_get_blocks); + if (unlikely(status)) { + struct inode *inode = mapping->host; + + xfs_vm_write_failed(inode, page, pos, len); + unlock_page(page); + + if (pos + len > i_size_read(inode)) + truncate_pagecache(inode, pos + len, i_size_read(inode)); + + page_cache_release(page); + page = NULL; + } + + *pagep = page; + return status; } +/* + * On failure, we only need to kill delalloc blocks beyond EOF because they + * will never be written. For blocks within EOF, generic_write_end() zeros them + * so they are safe to leave alone and be written with all the other valid data. + */ STATIC int xfs_vm_write_end( struct file *file, @@ -1482,9 +1553,19 @@ xfs_vm_write_end( { int ret; + ASSERT(len <= PAGE_CACHE_SIZE); + ret = generic_write_end(file, mapping, pos, len, copied, page, fsdata); - if (unlikely(ret < len)) - xfs_vm_write_failed(mapping, pos + len); + if (unlikely(ret < len)) { + struct inode *inode = mapping->host; + size_t isize = i_size_read(inode); + loff_t to = pos + len; + + if (to > isize) { + truncate_pagecache(inode, to, isize); + xfs_vm_kill_delalloc_range(inode, isize, to); + } + } return ret; } -- 1.7.10 _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs From root@nfs10.americas.sgi.com Mon May 7 15:28:13 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id q47KSC0j156259 for ; Mon, 7 May 2012 15:28:12 -0500 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id 18F2D16A348; Mon, 7 May 2012 15:42:46 -0500 (CDT) Message-Id: <20120507204246.674137290@nfs10.americas.sgi.com> User-Agent: quilt/0.47-15.10 Date: Mon, 07 May 2012 15:42:24 -0500 From: bpm@sgi.com To: xfs-dev@sgi.com, xfs@oss.sgi.com Cc: Dave Chinner Subject: [patch 2/5] [PATCH 3/3] xfs: prevent needless mount warning causing test failures References: <20120507204222.921092617@nfs10.americas.sgi.com> Content-Disposition: inline; filename=xfs-prevent-needless-mount-warning-causing-test-failures.patch From: Dave Chinner Often mounting small filesystem with small logs will emit a warning such as: XFS (vdb): Invalid block length (0x2000) for buffer during log recovery. This causes tests to randomly fail because this output causes the clean filesystem checks on test completion to think the filesystem is inconsistent. The cause of the error is simply that log recovery is asking for a buffer size that is larger than the log when zeroing the tail. This is because the buffer size is rounded up, and if the right head and tail conditions exist then the buffer size can be larger than the log. Limit the variable size xlog_get_bp() callers to requesting buffers smaller than the log. Signed-off-by: Dave Chinner --- fs/xfs/xfs_log_recover.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c index d7abe5f..ca38690 100644 --- a/fs/xfs/xfs_log_recover.c +++ b/fs/xfs/xfs_log_recover.c @@ -441,6 +441,8 @@ xlog_find_verify_cycle( * a log sector, or we're out of luck. */ bufblks = 1 << ffs(nbblks); + while (bufblks > log->l_logBBsize) + bufblks >>= 1; while (!(bp = xlog_get_bp(log, bufblks))) { bufblks >>= 1; if (bufblks < log->l_sectBBsize) @@ -1226,6 +1228,8 @@ xlog_write_log_records( * log sector, or we're out of luck. */ bufblks = 1 << ffs(blocks); + while (bufblks > log->l_logBBsize) + bufblks >>= 1; while (!(bp = xlog_get_bp(log, bufblks))) { bufblks >>= 1; if (bufblks < sectbb) -- 1.7.10 _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs From root@nfs10.americas.sgi.com Mon May 7 15:28:13 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id q47KSDuS156270 for ; Mon, 7 May 2012 15:28:13 -0500 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id 65AE616A34A; Mon, 7 May 2012 15:42:47 -0500 (CDT) Message-Id: <20120507204247.120777169@nfs10.americas.sgi.com> User-Agent: quilt/0.47-15.10 Date: Mon, 07 May 2012 15:42:25 -0500 From: bpm@sgi.com To: xfs-dev@sgi.com, xfs@oss.sgi.com Cc: Dave Chinner Subject: [patch 3/5] [PATCH 4/3] xfs: dont assert on delalloc regions beyond EOF References: <20120507204222.921092617@nfs10.americas.sgi.com> Content-Disposition: inline; filename=xfs-don-t-assert-on-delalloc-regions-beyond-eof.patch From: Dave Chinner When we are doing speculative delayed allocation beyond EOF, conversion of the region allocated beyond EOF is dependent on the largest free space extent available. If the largest free extent is smaller than the delalloc range, then after allocation we leave a delalloc extent that starts beyond EOF. This extent cannot *ever* be converted by flushing data, and so will remain there until either the EOF moves into the extent or it is truncated away. Hence if xfs_getbmap() runs on such an inode and is asked to return extents beyond EOF, it will assert fail on this extent even though there is nothing xfs_getbmap() can do to convert it to a real extent. Hence we should simply report these delalloc extents rather than assert that there should be none. Signed-off-by: Dave Chinner --- fs/xfs/xfs_bmap.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index 26ab256..478bce9 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c @@ -5620,8 +5620,20 @@ xfs_getbmap( XFS_FSB_TO_BB(mp, map[i].br_blockcount); out[cur_ext].bmv_unused1 = 0; out[cur_ext].bmv_unused2 = 0; - ASSERT(((iflags & BMV_IF_DELALLOC) != 0) || - (map[i].br_startblock != DELAYSTARTBLOCK)); + + /* + * delayed allocation extents that start beyond EOF can + * occur due to speculative EOF allocation when the + * delalloc extent is larger than the largest freespace + * extent at conversion time. These extents cannot be + * converted by data writeback, so can exist here even + * if we are not supposed to be finding delalloc + * extents. + */ + if (map[i].br_startblock == DELAYSTARTBLOCK && + map[i].br_startoff <= XFS_B_TO_FSB(mp, XFS_ISIZE(ip))) + ASSERT((iflags & BMV_IF_DELALLOC) != 0); + if (map[i].br_startblock == HOLESTARTBLOCK && whichfork == XFS_ATTR_FORK) { /* came to the end of attribute fork */ _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs From root@nfs10.americas.sgi.com Mon May 7 15:28:13 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id q47KSDIF156286 for ; Mon, 7 May 2012 15:28:13 -0500 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id 02D5016A34C; Mon, 7 May 2012 15:42:47 -0500 (CDT) Message-Id: <20120507204247.732720098@nfs10.americas.sgi.com> User-Agent: quilt/0.47-15.10 Date: Mon, 07 May 2012 15:42:27 -0500 From: bpm@sgi.com To: xfs-dev@sgi.com, xfs@oss.sgi.com Cc: Dave Chinner Subject: [patch 5/5] [PATCH 6/3] xfs: make largest supported offset less shouty References: <20120507204222.921092617@nfs10.americas.sgi.com> Content-Disposition: inline; filename=xfs-make-largest-supported-offset-less-shouty-2.patch From: Dave Chinner XFS_MAXIOFFSET() is just a simple macro that resolves to mp->m_maxioffset. It doesn't need to exist, and it just makes the code unnecessarily loud and shouty. Make it quiet and easy to read. Signed-off-by: Dave Chinner --- fs/xfs/xfs_bmap.c | 2 +- fs/xfs/xfs_file.c | 2 +- fs/xfs/xfs_inode.c | 2 +- fs/xfs/xfs_iomap.c | 2 +- fs/xfs/xfs_mount.h | 2 -- fs/xfs/xfs_qm.c | 2 +- fs/xfs/xfs_vnodeops.c | 10 +++++----- 7 files changed, 10 insertions(+), 12 deletions(-) diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index 478bce9..919e038 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c @@ -5517,7 +5517,7 @@ xfs_getbmap( if (xfs_get_extsz_hint(ip) || ip->i_d.di_flags & (XFS_DIFLAG_PREALLOC|XFS_DIFLAG_APPEND)){ prealloced = 1; - fixlen = XFS_MAXIOFFSET(mp); + fixlen = mp->m_maxioffset; } else { prealloced = 0; fixlen = XFS_ISIZE(ip); diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index a37e43d..2d99208 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -273,7 +273,7 @@ xfs_file_aio_read( } } - n = XFS_MAXIOFFSET(mp) - iocb->ki_pos; + n = mp->m_maxioffset - iocb->ki_pos; if (n <= 0 || size == 0) return 0; diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index a59eea0..95e0d4a 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -1226,7 +1226,7 @@ xfs_itruncate_extents( * 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)); + last_block = XFS_B_TO_FSB(mp, mp->m_maxioffset); if (first_unmap_block == last_block) return 0; diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index 4a08ea3..9172d80 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c @@ -285,7 +285,7 @@ xfs_iomap_eof_want_preallocate( * do any speculative allocation. */ start_fsb = XFS_B_TO_FSBT(mp, ((xfs_ufsize_t)(offset + count - 1))); - count_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)XFS_MAXIOFFSET(mp)); + count_fsb = XFS_B_TO_FSB(mp, mp->m_maxioffset); while (count_fsb > 0) { imaps = nimaps; firstblock = NULLFSBLOCK; diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index 401ca2e..d0c6a0c 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h @@ -297,8 +297,6 @@ xfs_preferred_iosize(xfs_mount_t *mp) PAGE_CACHE_SIZE)); } -#define XFS_MAXIOFFSET(mp) ((mp)->m_maxioffset) - #define XFS_LAST_UNMOUNT_WAS_CLEAN(mp) \ ((mp)->m_flags & XFS_MOUNT_WAS_CLEAN) #define XFS_FORCED_SHUTDOWN(mp) ((mp)->m_flags & XFS_MOUNT_FS_SHUTDOWN) diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c index 249db19..58cd3bd 100644 --- a/fs/xfs/xfs_qm.c +++ b/fs/xfs/xfs_qm.c @@ -940,7 +940,7 @@ xfs_qm_dqiterate( map = kmem_alloc(XFS_DQITER_MAP_SIZE * sizeof(*map), KM_SLEEP); lblkno = 0; - maxlblkcnt = XFS_B_TO_FSB(mp, (xfs_ufsize_t)XFS_MAXIOFFSET(mp)); + maxlblkcnt = XFS_B_TO_FSB(mp, mp->m_maxioffset); do { nmaps = XFS_DQITER_MAP_SIZE; /* diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index 82b000f..e6580ea 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c @@ -174,7 +174,7 @@ xfs_free_eofblocks( * of the file. If not, then there is nothing to do. */ end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)XFS_ISIZE(ip)); - last_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)XFS_MAXIOFFSET(mp)); + last_fsb = XFS_B_TO_FSB(mp, mp->m_maxioffset); if (last_fsb <= end_fsb) return 0; map_len = last_fsb - end_fsb; @@ -2262,10 +2262,10 @@ xfs_change_file_space( llen = bf->l_len > 0 ? bf->l_len - 1 : bf->l_len; - if ( (bf->l_start < 0) - || (bf->l_start > XFS_MAXIOFFSET(mp)) - || (bf->l_start + llen < 0) - || (bf->l_start + llen > XFS_MAXIOFFSET(mp))) + if (bf->l_start < 0 || + bf->l_start > mp->m_maxioffset || + bf->l_start + llen < 0 || + bf->l_start + llen > mp->m_maxioffset) return XFS_ERROR(EINVAL); bf->l_whence = 0; _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs From root@nfs10.americas.sgi.com Mon May 7 15:28:13 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id q47KSDZ2156282 for ; Mon, 7 May 2012 15:28:13 -0500 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id AE7B016A34B; Mon, 7 May 2012 15:42:47 -0500 (CDT) Message-Id: <20120507204247.435680916@nfs10.americas.sgi.com> User-Agent: quilt/0.47-15.10 Date: Mon, 07 May 2012 15:42:26 -0500 From: bpm@sgi.com To: xfs-dev@sgi.com, xfs@oss.sgi.com Cc: Dave Chinner Subject: [patch 4/5] [PATCH 5/3] xfs: limit specualtive delalloc to maxioffset References: <20120507204222.921092617@nfs10.americas.sgi.com> Content-Disposition: inline; filename=xfs-limit-specualtive-delalloc-to-maxioffset.patch From: Dave Chinner Speculative delayed allocation beyond EOF near the maximum supported file offset can result in creating delalloc extents beyond mp->m_maxioffset (8EB). These can never be trimmed during xfs_free_eof_blocks() because they are beyond mp->m_maxioffset, and that results in assert failures in xfs_fs_destroy_inode() due to delalloc blocks still being present. xfstests 071 exposes this problem. Limit speculative delalloc to mp->m_maxioffset to avoid this problem. Signed-off-by: Dave Chinner --- fs/xfs/xfs_iomap.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index 303c03a..4a08ea3 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c @@ -412,6 +412,15 @@ retry: return error; } + /* + * Make sure preallocation does not create extents beyond the range we + * actually support in this filesystem. + */ + if (last_fsb > XFS_B_TO_FSB(mp, mp->m_maxioffset)) + last_fsb = XFS_B_TO_FSB(mp, mp->m_maxioffset); + + ASSERT(last_fsb > offset_fsb); + nimaps = XFS_WRITE_IMAPS; error = xfs_bmapi_delay(ip, offset_fsb, last_fsb - offset_fsb, imap, &nimaps, XFS_BMAPI_ENTIRE); _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs From bpm@sgi.com Mon May 7 16:57:19 2012 X-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 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 q47LvJTI195233 for ; Mon, 7 May 2012 16:57:19 -0500 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8621DAC00A; Mon, 7 May 2012 14:57:15 -0700 (PDT) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 1270F402071; Mon, 7 May 2012 17:00:59 -0500 (CDT) Date: Mon, 7 May 2012 17:00:59 -0500 From: Ben Myers To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 2/3] xfs: punch new delalloc blocks out of failed writes inside EOF. Message-ID: <20120507220059.GJ16881@sgi.com> References: <1335519922-14371-1-git-send-email-david@fromorbit.com> <1335519922-14371-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1335519922-14371-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.20 (2009-06-14) On Fri, Apr 27, 2012 at 07:45:21PM +1000, Dave Chinner wrote: > From: Dave Chinner > > When a partial write inside EOF fails, it can leave delayed > allocation blocks lying around because they don't get punched back > out. This leads to assert failures like: > > XFS: Assertion failed: XFS_FORCED_SHUTDOWN(ip->i_mount) || ip->i_delayed_blks == 0, file: fs/xfs/xfs_super.c, line: 847 > > when evicting inodes from the cache. This can be trivially triggered > by xfstests 083, which takes between 5 and 15 executions on a 512 > byte block size filesystem to trip over this. Debugging shows a > failed write due to ENOSPC calling xfs_vm_write_failed such as: > > [ 5012.329024] ino 0xa0026: vwf to 0x17000, sze 0x1c85ae > > and no action is taken on it. This leaves behind a delayed > allocation extent that has no page covering it and no data in it: > > [ 5015.867162] ino 0xa0026: blks: 0x83 delay blocks 0x1, size 0x2538c0 > [ 5015.868293] ext 0: off 0x4a, fsb 0x50306, len 0x1 > [ 5015.869095] ext 1: off 0x4b, fsb 0x7899, len 0x6b > [ 5015.869900] ext 2: off 0xb6, fsb 0xffffffffe0008, len 0x1 > ^^^^^^^^^^^^^^^ > [ 5015.871027] ext 3: off 0x36e, fsb 0x7a27, len 0xd > [ 5015.872206] ext 4: off 0x4cf, fsb 0x7a1d, len 0xa > > So the delayed allocation extent is one block long at offset > 0x16c00. Tracing shows that a bigger write: > > xfs_file_buffered_write: size 0x1c85ae offset 0x959d count 0x1ca3f ioflags > > allocates the block, and then fails with ENOSPC trying to allocate > the last block on the page, leading to a failed write with stale > delalloc blocks on it. > > Because we've had an ENOSPC when trying to allocate 0x16e00, it > means that we are never goinge to call ->write_end on the page and going > so the allocated new buffer will not get marked dirty or have the > buffer_new state cleared. In other works, what the above write is > supposed to end up with is this mapping for the page: > > +------+------+------+------+------+------+------+------+ > UMA UMA UMA UMA UMA UMA UND FAIL > > where: U = uptodate > M = mapped > N = new > A = allocated > D = delalloc > FAIL = block we ENOSPC'd on. > > and the key point being the buffer_new() state for the newly > allocated delayed allocation block. Except it doesn't - we're not > marking buffers new correctly. > > That buffer_new() problem goes back to the xfs_iomap removal days, > where xfs_iomap() used to return a "new" status for any map with > newly allocated blocks, so that __xfs_get_blocks() could call > set_buffer_new() on it. We still have the "new" variable and the > check for it in the set_buffer_new() logic - except we never set it > now! > > Hence that newly allocated delalloc block doesn't have the new flag > set on it, so when the write fails we cannot tell which blocks we > are supposed to punch out. WHy do we need the buffer_new flag? Well, Why > that's because we can have this case: > > +------+------+------+------+------+------+------+------+ > UMD UMD UMD UMD UMD UMD UND FAIL > > where all the UMD buffers contain valid data from a previously > successful write() system call. We only want to punch the UND buffer > because that's the only one that we added in this write and it was > only this write that failed. > > That implies that even the old buffer_new() logic was wrong - > because it would result in all those UMD buffers on the page having > set_buffer_new() called on them even though they aren't new. Hence > we shoul donly be calling set_buffer_new() for delalloc buffers that should only > were allocated (i.e. were a hole before xfs_iomap_write_delay() was > called). > > So, fix this set_buffer_new logic according to how we need it to > work for handling failed writes correctly. Also, restore the new > buffer logic handling for blocks allocated via > xfs_iomap_write_direct(), because it should still set the buffer_new > flag appropriately for newly allocated blocks, too. > > SO, now we have the buffer_new() being set appropriately in > __xfs_get_blocks(), we can detect the exact delalloc ranges that > we allocated in a failed write, and hence can now do a walk of the > buffers on a page to find them. > > Except, it's not that easy. When block_write_begin() fails, it > unlocks and releases the page that we just had an error on, so we > can't use that page to handle errors anymore. We have to get access > to the page while it is still locked to walk the buffers. Hence we > have to open code block_write_begin() in xfs_vm_write_begin() to be > able to insert xfs_vm_write_failed() is the right place. > > With that, we can pass the page and write range to > xfs_vm_write_failed() and walk the buffers on the page, looking for > delalloc buffers that are either new or beyond EOF and punch them > out. Handling buffers beyond EOF ensures we still handle the > existing case that xfs_vm_write_failed() handles. > > Of special note is the truncate_pagecache() handling - that only > should be done for pages outside EOF - pages within EOF can still > contain valid, dirty data so we must not punch them out of the > cache. > > That just leaves the xfs_vm_write_end() failure handling. > The only failure case here is that we didn't copy the entire range, > and generic_write_end() handles that by zeroing the region of the > page that wasn't copied, Are you referring to xfs_vm_write_end generic_write_end block_write_end page_zero_new_buffers? > we don't have to punch out blocks within > the file because they are guaranteed to contain zeros. Hence we only > have to handle the existing "beyond EOF" case and don't need access > to the buffers on the page. Hence it remains largely unchanged. > > Note that xfs_getbmap() can still trip over delalloc blocks beyond > EOF that are left there by speculative delayed allocation. Hence > this bug fix does not solve all known issues with bmap vs delalloc, > but it does fix all the the known accidental occurances of the > problem. > > Signed-off-by: Dave Chinner > --- > fs/xfs/xfs_aops.c | 173 +++++++++++++++++++++++++++++++++++++++-------------- > 1 file changed, 127 insertions(+), 46 deletions(-) > > diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c > index 64ed87a..ae31c31 100644 > --- a/fs/xfs/xfs_aops.c > +++ b/fs/xfs/xfs_aops.c > @@ -1184,11 +1184,18 @@ __xfs_get_blocks( > &imap, nimaps); > if (error) > return -error; > + new = 1; > } else { > /* > * Delalloc reservations do not require a transaction, > - * we can go on without dropping the lock here. > + * we can go on without dropping the lock here. If we > + * are allocating a new delalloc block, make sure that > + * we set the new flag so that we mark the buffer new so > + * that we know that it is newly allocated if the write > + * fails. > */ > + if (nimaps && imap.br_startblock == HOLESTARTBLOCK) > + new = 1; > error = xfs_iomap_write_delay(ip, offset, size, &imap); > if (error) > goto out_unlock; > @@ -1405,52 +1412,91 @@ out_destroy_ioend: > return ret; > } > > +/* > + * Punch out the delalloc blocks we have already allocated. This language is confusing. I suggest that delay blocks are reserved and real blocks are allocated. Tomato Tomato. > + * > + * Don't bother with xfs_setattr given that nothing can have made it to disk yet > + * as the page is still locked at this point. > + */ > +STATIC void > +xfs_vm_kill_delalloc_range( > + struct inode *inode, > + loff_t start, > + loff_t end) > +{ > + struct xfs_inode *ip = XFS_I(inode); > + xfs_fileoff_t start_fsb; > + xfs_fileoff_t end_fsb; > + int error; > + > + start_fsb = XFS_B_TO_FSB(ip->i_mount, start); > + end_fsb = XFS_B_TO_FSB(ip->i_mount, end); > + if (end_fsb <= start_fsb) > + return; > + > + xfs_ilock(ip, XFS_ILOCK_EXCL); > + error = xfs_bmap_punch_delalloc_range(ip, start_fsb, > + end_fsb - start_fsb); > + if (error) { > + /* something screwed, just bail */ > + if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) { > + xfs_alert(ip->i_mount, > + "xfs_vm_write_failed: unable to clean up ino %lld", Consider updating the function name in this error message and printing out the value of error. > + ip->i_ino); > + } > + } > + xfs_iunlock(ip, XFS_ILOCK_EXCL); > +} > + > STATIC void > xfs_vm_write_failed( > - struct address_space *mapping, > - loff_t to) > + struct inode *inode, > + struct page *page, > + loff_t pos, > + unsigned len) > { > - struct inode *inode = mapping->host; > + loff_t block_offset = pos & PAGE_MASK; > + loff_t block_start; > + loff_t block_end; > + loff_t from = pos & (PAGE_CACHE_SIZE - 1); > + loff_t to = from + len; > + struct buffer_head *bh, *head; > > - if (to > inode->i_size) { > - /* > - * Punch out the delalloc blocks we have already allocated. > - * > - * Don't bother with xfs_setattr given that nothing can have > - * made it to disk yet as the page is still locked at this > - * point. > - */ > - struct xfs_inode *ip = XFS_I(inode); > - xfs_fileoff_t start_fsb; > - xfs_fileoff_t end_fsb; > - int error; > + ASSERT(block_offset + from == pos); > > - truncate_pagecache(inode, to, inode->i_size); > + head = page_buffers(page); > + block_start = 0; > + for (bh = head; bh != head || !block_start; > + bh = bh->b_this_page, block_start = block_end, > + block_offset += bh->b_size) { > + block_end = block_start + bh->b_size; > > - /* > - * Check if there are any blocks that are outside of i_size > - * that need to be trimmed back. > - */ > - start_fsb = XFS_B_TO_FSB(ip->i_mount, inode->i_size); > - end_fsb = XFS_B_TO_FSB(ip->i_mount, to); > - if (end_fsb <= start_fsb) > - return; > - > - xfs_ilock(ip, XFS_ILOCK_EXCL); > - error = xfs_bmap_punch_delalloc_range(ip, start_fsb, > - end_fsb - start_fsb); > - if (error) { > - /* something screwed, just bail */ > - if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) { > - xfs_alert(ip->i_mount, > - "xfs_vm_write_failed: unable to clean up ino %lld", > - ip->i_ino); > - } > - } > - xfs_iunlock(ip, XFS_ILOCK_EXCL); > + /* skip buffers before the write */ > + if (block_end <= from) > + continue; > + > + /* if the buffer is after the write, we're done */ > + if (block_start >= to) *blink* I was looking pretty hard at that for an off-by-one. Mark straightened me out. Eesh. > + break; > + > + if (!buffer_delay(bh)) > + continue; > + > + if (!buffer_new(bh) && block_offset < i_size_read(inode)) > + continue; > + > + xfs_vm_kill_delalloc_range(inode, block_offset, > + block_offset + bh->b_size); > } > + > } > > +/* > + * This used to call block_write_begin(), but it unlocks and releases the page > + * on error, and we need that page to be able to punch stale delalloc blocks out > + * on failure. hence we copy-n-waste it here and call xfs_vm_write_failed() at > + * the appropriate point. > + */ > STATIC int > xfs_vm_write_begin( > struct file *file, > @@ -1461,15 +1507,40 @@ xfs_vm_write_begin( > struct page **pagep, > void **fsdata) > { > - int ret; > + pgoff_t index = pos >> PAGE_CACHE_SHIFT; > + struct page *page; > + int status; > > - ret = block_write_begin(mapping, pos, len, flags | AOP_FLAG_NOFS, > - pagep, xfs_get_blocks); > - if (unlikely(ret)) > - xfs_vm_write_failed(mapping, pos + len); > - return ret; > + ASSERT(len <= PAGE_CACHE_SIZE); > + > + page = grab_cache_page_write_begin(mapping, index, > + flags | AOP_FLAG_NOFS); > + if (!page) > + return -ENOMEM; > + > + status = __block_write_begin(page, pos, len, xfs_get_blocks); > + if (unlikely(status)) { > + struct inode *inode = mapping->host; > + > + xfs_vm_write_failed(inode, page, pos, len); > + unlock_page(page); Consistent with block_write_begin. > + > + if (pos + len > i_size_read(inode)) > + truncate_pagecache(inode, pos + len, i_size_read(inode)); > + > + page_cache_release(page); > + page = NULL; > + } > + > + *pagep = page; > + return status; > } > > +/* > + * On failure, we only need to kill delalloc blocks beyond EOF because they > + * will never be written. For blocks within EOF, generic_write_end() zeros them > + * so they are safe to leave alone and be written with all the other valid data. > + */ > STATIC int > xfs_vm_write_end( > struct file *file, > @@ -1482,9 +1553,19 @@ xfs_vm_write_end( > { > int ret; > > + ASSERT(len <= PAGE_CACHE_SIZE); > + > ret = generic_write_end(file, mapping, pos, len, copied, page, fsdata); > - if (unlikely(ret < len)) > - xfs_vm_write_failed(mapping, pos + len); > + if (unlikely(ret < len)) { > + struct inode *inode = mapping->host; > + size_t isize = i_size_read(inode); > + loff_t to = pos + len; > + > + if (to > isize) { > + truncate_pagecache(inode, to, isize); > + xfs_vm_kill_delalloc_range(inode, isize, to); > + } > + } > return ret; > } Aside from a few nits this is looking good. Reviewed-by: Ben Myers From david@fromorbit.com Mon May 7 17:59:51 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q47MxoOa209356 for ; Mon, 7 May 2012 17:59:51 -0500 X-ASG-Debug-ID: 1336431587-04bdf034ee2db4e0001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id CJ53eWCVnF3TeMzu for ; Mon, 07 May 2012 15:59:48 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtkKAKVSqE95LaUR/2dsb2JhbABEsXsCgSKBCIIMAQEFMgEjIxAIAxguFCUDIROIDQy6eQQTimyBU4NTYwSVfYlbhmiCew Received: from ppp121-45-165-17.lns20.syd6.internode.on.net (HELO dastard) ([121.45.165.17]) by ipmail07.adl2.internode.on.net with ESMTP; 08 May 2012 08:29:46 +0930 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1SRWu8-0001w5-PI; Tue, 08 May 2012 08:59:44 +1000 Date: Tue, 8 May 2012 08:59:44 +1000 From: Dave Chinner To: Juerg Haefliger Cc: xfs@oss.sgi.com Subject: Re: Still seeing hangs in xlog_grant_log_space Message-ID: <20120507225944.GA5091@dastard> X-ASG-Orig-Subj: Re: Still seeing hangs in xlog_grant_log_space References: <20120425223845.GX9541@dastard> <20120426224412.GA9541@dastard> <20120426230738.GB9541@dastard> <20120427110922.GF9541@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.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1336431587 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96294 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, May 05, 2012 at 09:44:35AM +0200, Juerg Haefliger wrote: > >> But better would be to use the device number of the relevant > >> filesystem to filter the events. The device is 252:2, which means in > >> kernel terms is it: > >> > >>        dev = (major << 20) | minor > >>            = 0xfc00002 > >> > >> So you should be able to get just the xfs-hang events via: > >> > >> # trace-cmd record -e xfs\* -d 'dev == 0xfc00002' > >> > >> and as long as you don't host log files on /xfs-hang, it'll only > >> record the workload running on the xfs-hang filesystem. > > > > Third try: https://region-a.geo-1.objects.hpcloudsvc.com:443/v1.0/AUTH_9630ead2-6194-40df-afd3-7395448d4536/xfs-hang/report-2012-04-27-180secs.tgz > > Filtered by device, trace events go to a different filesystem. > > Did anybody have a chance to look at the data? I've had a quick look, but I need to write scripts to visualise it (i.e. graph it) to determine if there's any pattern to the issue. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon May 7 18:18:43 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q47NIhYZ212428 for ; Mon, 7 May 2012 18:18:43 -0500 X-ASG-Debug-ID: 1336432720-04cbb03c17306130001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id VEjVB5g3s5O1f2Eg for ; Mon, 07 May 2012 16:18:40 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAIxXqE95LaUR/2dsb2JhbAA8CLMkgQiCDAEBBTocIxAIAw4KLhQNGAMhE4gAAwqxKQ2JUxOKBGgVhRFjBJV9i0CFA4J7 Received: from ppp121-45-165-17.lns20.syd6.internode.on.net (HELO dastard) ([121.45.165.17]) by ipmail07.adl2.internode.on.net with ESMTP; 08 May 2012 08:48:39 +0930 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1SRXCQ-0001yH-86; Tue, 08 May 2012 09:18:38 +1000 Date: Tue, 8 May 2012 09:18:38 +1000 From: Dave Chinner To: Peter Watkins Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs: fix memory reclaim deadlock on agi buffer Message-ID: <20120507231838.GB5091@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs: fix memory reclaim deadlock on agi buffer References: <1336421497-1554-1-git-send-email-treestem@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1336421497-1554-1-git-send-email-treestem@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1336432720 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96296 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, May 07, 2012 at 04:11:37PM -0400, Peter Watkins wrote: > Note xfs_iget can be called while holding a locked agi buffer. If > it goes into memory reclaim then inode teardown may try to lock the > same buffer. Prevent the deadlock by calling radix_tree_preload > with GFP_NOFS. > > Signed-off-by: Peter Watkins This might be one for the stable kernel as well. Ben, can you add a "cc: stable@vger.kernel.org" to the commit message for this one? > --- > fs/xfs/xfs_iget.c | 5 +++-- > 1 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c > index bcc6c24..8c6f806 100644 > --- a/fs/xfs/xfs_iget.c > +++ b/fs/xfs/xfs_iget.c > @@ -334,9 +334,10 @@ xfs_iget_cache_miss( > /* > * Preload the radix tree so we can insert safely under the > * write spinlock. Note that we cannot sleep inside the preload > - * region. > + * region. Since we can be called from transaction context, don't > + * recurse into the file system. > */ > - if (radix_tree_preload(GFP_KERNEL)) { > + if (radix_tree_preload(GFP_NOFS)) { > error = EAGAIN; > goto out_destroy; > } Looks good. Thanks for the quick turn-around, Peter. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon May 7 18:42:46 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q47NgkL3219512 for ; Mon, 7 May 2012 18:42:46 -0500 X-ASG-Debug-ID: 1336434164-04bdf034ee2dcf90001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id uzbRthfxjvY9tAYM for ; Mon, 07 May 2012 16:42:44 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAGldqE95LaUR/2dsb2JhbABEsyeBCIIMAQEFOhwjEAgDGC4UJQMhExuHcrsTE4pshSZjBJV9kEOCe4FEGQ Received: from ppp121-45-165-17.lns20.syd6.internode.on.net (HELO dastard) ([121.45.165.17]) by ipmail07.adl2.internode.on.net with ESMTP; 08 May 2012 09:12:43 +0930 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1SRXZi-00020S-D2; Tue, 08 May 2012 09:42:42 +1000 Date: Tue, 8 May 2012 09:42:42 +1000 From: Dave Chinner To: Stefan Priebe - Profihost AG Cc: "xfs@oss.sgi.com" , stan@hardwarefreak.com, Martin@lichtvoll.de Subject: Re: suddenly slow writes on XFS Filesystem Message-ID: <20120507234242.GC5091@dastard> X-ASG-Orig-Subj: Re: suddenly slow writes on XFS Filesystem References: <4FA63DDA.9070707@profihost.ag> <20120507013456.GW5091@dastard> <4FA76E11.1070708@profihost.ag> <20120507071713.GZ5091@dastard> <4FA77842.5010703@profihost.ag> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4FA77842.5010703@profihost.ag> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1336434164 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96296 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, May 07, 2012 at 09:22:42AM +0200, Stefan Priebe - Profihost AG wrote: > > >> # vmstat > > "vmstat 5", not vmstat 5 times.... :/ > oh sorry. Sadly the rsync processes do not run right know i've to kill > them. Is the output still usable? > # vmstat 5 > procs -----------memory---------- ---swap-- -----io---- -system-- > ----cpu---- > r b swpd free buff cache si so bi bo in cs us sy > id wa > 0 1 0 5582136 48 5849956 0 0 176 394 34 54 1 > 16 82 1 > 0 1 0 5552180 48 5854280 0 0 2493 2496 3079 2172 1 > 4 86 9 > 3 2 0 5601308 48 5857672 0 0 1098 28043 5150 1913 0 > 10 73 17 > 0 2 0 5595360 48 5863180 0 0 1098 14336 3945 1897 0 > 8 69 22 > 3 2 0 5594088 48 5865280 0 0 432 15897 4209 2366 0 > 8 71 21 > 0 2 0 5591068 48 5868940 0 0 854 10989 3519 2107 0 > 7 70 23 > 1 1 0 5592004 48 5869872 0 0 180 7886 3605 2436 0 > 3 76 22 It tells me that there is still quite an IO load on the system even when the rsyncs are not running... > >> /dev/sdb1 4,6T 4,3T 310G 94% /mnt > > Well, you've probably badly fragmented the free space you have. what > > does the 'xfs_db -r -c freesp ' command tell you? > > from to extents blocks pct > 1 1 942737 942737 0,87 > 2 3 671860 1590480 1,47 > 4 7 461268 2416025 2,23 > 8 15 1350517 18043063 16,67 > 16 31 111254 2547581 2,35 > 32 63 192032 9039799 8,35 So that's roughly 3.7 million free space extents of 256kB or less totalling about 32% of the freespace (~100GB). That's pretty badly fragmented, and given the workload, probably unrecoverable. Dump, mkfs and restore is probably the only way to unfragment the free space now, but that would only be a temporary solution if you continue to run at >90% full. Even if you do keep it at below 90% full, such a workload will age the filesystem and slowly fragment free space, but it should take a lot longer to get to this state... > >>>> /dev/sdb1 4875737052 4659318044 216419008 96% /mnt > >>> You have 4.6 *billion* inodes in your filesystem? > >> Yes - it backups around 100 servers with a lot of files. > i rechecked this and it seems i sadly copied the wrong output ;-( sorry > for that. > > Here is the correct one: > #~ df -i > /dev/sdb1 975173568 95212355 879961213 10% /mnt That makes more sense. :) Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon May 7 18:53:25 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q47NrO1k222767 for ; Mon, 7 May 2012 18:53:24 -0500 X-ASG-Debug-ID: 1336434802-04bdf034ee2dd770001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id 3gzq7kiTFqkRGAnz for ; Mon, 07 May 2012 16:53:23 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAFpfqE95LaUR/2dsb2JhbABEsyeBCIIMAQEFJxMcIxAIAxUDLhQNGAM0iAADCrE4DYlTE4oEaIJjgkNjBJV9i0CFA4J7 Received: from ppp121-45-165-17.lns20.syd6.internode.on.net (HELO dastard) ([121.45.165.17]) by ipmail07.adl2.internode.on.net with ESMTP; 08 May 2012 09:23:22 +0930 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1SRXk1-00021p-Bz; Tue, 08 May 2012 09:53:21 +1000 Date: Tue, 8 May 2012 09:53:21 +1000 From: Dave Chinner To: raghu.prabhu13@gmail.com Cc: xfs@oss.sgi.com, Raghavendra D Prabhu Subject: Re: [PATCH] [PATCH] Stop periodic syncing if filesystem is already shutdown. Message-ID: <20120507235321.GD5091@dastard> X-ASG-Orig-Subj: Re: [PATCH] [PATCH] Stop periodic syncing if filesystem is already shutdown. 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-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1336434802 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96298 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, May 07, 2012 at 02:44:07PM +0530, raghu.prabhu13@gmail.com wrote: > From: Raghavendra D Prabhu > > This is to prevent syncing from running ad-infinitum till umount if the disk has been forcefully unplugged. > > This is to prevent messages like these from being displayed. ..... > --- > fs/xfs/xfs_sync.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/fs/xfs/xfs_sync.c b/fs/xfs/xfs_sync.c > index 205ebcb..7ec412c 100644 > --- a/fs/xfs/xfs_sync.c > +++ b/fs/xfs/xfs_sync.c > @@ -460,6 +460,12 @@ xfs_sync_worker( > struct xfs_mount, m_sync_work); > int error; > > + if (!xfs_fs_writable(mp)) { > + xfs_err(mp, "Filesystem not writable / already shutdown."); > + xfs_syncd_stop(mp); > + return; > + } > + That is going to kill the xfssyncd on read only and frozen filesystems as well as shutdowns, so this is certainly not correct. The xfs_sync_worker should continue to run until the filesystem is unmounted, even if it does nothing when it runs. Indeed, all that is needed in xfs_sync_worker() is this: - if (!(mp->m_flags & XFS_MOUNT_RDONLY)) { + if (!xfs_fs_writable(mp)) { and the error message won't appear. It fixes the problem for the shutdown case, as well as handles frozen and read-only filesystems correctly. > /* dgc: errors ignored here */ > if (mp->m_super->s_frozen == SB_UNFROZEN && > @@ -551,6 +557,12 @@ xfs_flush_worker( > struct xfs_mount *mp = container_of(work, > struct xfs_mount, m_flush_work); > > + if (!xfs_fs_writable(mp)) { > + xfs_err(mp, "Filesystem not writable / already shutdown."); > + xfs_syncd_stop(mp); > + return; > + } > + > xfs_sync_data(mp, SYNC_TRYLOCK); > xfs_sync_data(mp, SYNC_TRYLOCK | SYNC_WAIT); This is not necessary, either, because xfs_sync_data() has shutdown checks and xfs_flush_worker() should never be called on a shutdown filesystem.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon May 7 19:00:00 2012 X-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_45, 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 q47NxxqQ225119 for ; Mon, 7 May 2012 19:00:00 -0500 X-ASG-Debug-ID: 1336435197-04cbb03c16307e30001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id QwmO1eC0WqBylKpg for ; Mon, 07 May 2012 16:59:57 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAOxgqE95LaUR/2dsb2JhbABEsyeBCIIMAQEEAScTHCMFCwgDDgouFCUDIROICQS7IBOKbCGFBWMEi0iKNYZjiWCCe4FF Received: from ppp121-45-165-17.lns20.syd6.internode.on.net (HELO dastard) ([121.45.165.17]) by ipmail07.adl2.internode.on.net with ESMTP; 08 May 2012 09:29:56 +0930 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1SRXqN-00022V-Og; Tue, 08 May 2012 09:59:55 +1000 Date: Tue, 8 May 2012 09:59:55 +1000 From: Dave Chinner To: Zhu Han Cc: xfs@oss.sgi.com Subject: Re: fallocate bug? Message-ID: <20120507235955.GE5091@dastard> X-ASG-Orig-Subj: Re: fallocate bug? 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-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1336435197 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96298 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, May 07, 2012 at 08:44:17PM +0800, Zhu Han wrote: > Seems like xfs of CentOS 6.X occupies much more storage space than desired > if fallocate is used against the file. Here is the step to reproduce it: You test case is not doing what you think it is doing. > By the way, is it normal when the file is moved around after the > preallocated region is filled with data? > > $ uname -r > 2.6.32-220.7.1.el6.x86_64 > > $fallocate -n --offset 0 -l 1G file ---->Write a little more data than > the preallocated size > > $ xfs_bmap -p -vv file > file: > EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET > TOTAL FLAGS > 0: [0..2097151]: 2593408088..2595505239 21 (29420144..31517295) > 2097152 10000 > > $ dd if=/dev/zero of=/tmp/file bs=1M count=1026 conv=fsync That does a truncate first, removing all the preallocated space. Use conv=notrunc to avoid this. Hence the space allocated by this new write is different to the space allocated by the above preallocation. The file has not been moved, the filesystem just did what you asked it to do. > > $ xfs_bmap -p -vv file > file: > EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET > TOTAL FLAGS > 0: [0..4194303]: 2709184016..2713378319 22 (23101408..27295711) > 4194304 00000 And so now you've triggered the speculative delayed allocation beyond EOF, which is normal behaviour. Hence there are currently unused blocks beyond EOF which will get removed either when the next close(fd) occurs on the file or the inode is removed from the cache. Cheers, Dave. -- Dave Chinner david@fromorbit.com From schumi.han@gmail.com Mon May 7 22:24:55 2012 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.7 required=5.0 tests=BAYES_05,FREEMAIL_FROM, HTML_MESSAGE,J_CHICKENPOX_45,J_CHICKENPOX_47,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 q483OtAu023288 for ; Mon, 7 May 2012 22:24:55 -0500 X-ASG-Debug-ID: 1336447492-04cbb03c16311550001-NocioJ Received: from mail-wi0-f169.google.com (mail-wi0-f169.google.com [209.85.212.169]) by cuda.sgi.com with ESMTP id jbvEfJanaN6gqTXC (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 07 May 2012 20:24:53 -0700 (PDT) X-Barracuda-Envelope-From: schumi.han@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.212.169 Received: by wibhn14 with SMTP id hn14so194837wib.2 for ; Mon, 07 May 2012 20:24:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=CdjUPx/CTHCyVb5ZEreBo4c/ful/W58OqiJQOvuWJbw=; b=qP6JuRI2LIF7jYU4thxMwdFRRI+xe1c6kAtdPI8L74CuSgvNI7ewqIp8czUyvOXBBP 3hlXpKEJg3bTRVbzkpgA4x2EkBtPEMH6ieb74tjbyfUPf9RT35pjJMbdo/TZzKa+gM1k hZys2A0zPJb636FFNA9JkP6i37ZHKKN6BUZ6BWgqRvbzbX760KrQVMvtSE4htMgIbyvH +iCx5DlVjBeT986eU/xPaWhr/D2gpYoUHTRH27YhaPRWnQAEtgaaBj8vf34aCRQDjwpQ ittOLBnqr9j6O24HowoblCpUOsOjbVt/91teIFCRI2hBAoJcNd1scuGiRqcU8SzlxY71 W/Fg== MIME-Version: 1.0 Received: by 10.216.135.105 with SMTP id t83mr10943699wei.105.1336447492611; Mon, 07 May 2012 20:24:52 -0700 (PDT) Received: by 10.216.171.143 with HTTP; Mon, 7 May 2012 20:24:52 -0700 (PDT) In-Reply-To: <20120507235955.GE5091@dastard> References: <20120507235955.GE5091@dastard> Date: Tue, 8 May 2012 11:24:52 +0800 Message-ID: Subject: Re: fallocate bug? From: Zhu Han X-ASG-Orig-Subj: Re: fallocate bug? To: Dave Chinner Cc: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=0016e6de00410ede5b04bf7dee55 X-Barracuda-Connect: mail-wi0-f169.google.com[209.85.212.169] X-Barracuda-Start-Time: 1336447493 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96311 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 --0016e6de00410ede5b04bf7dee55 Content-Type: text/plain; charset=ISO-8859-1 On Tue, May 8, 2012 at 7:59 AM, Dave Chinner wrote: > On Mon, May 07, 2012 at 08:44:17PM +0800, Zhu Han wrote: > > Seems like xfs of CentOS 6.X occupies much more storage space than > desired > > if fallocate is used against the file. Here is the step to reproduce it: > > You test case is not doing what you think it is doing. > Thanks for pointing it out. > > > By the way, is it normal when the file is moved around after the > > preallocated region is filled with data? > > > > $ uname -r > > 2.6.32-220.7.1.el6.x86_64 > > > > $fallocate -n --offset 0 -l 1G file ---->Write a little more data than > > the preallocated size > > > > $ xfs_bmap -p -vv file > > file: > > EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET > > TOTAL FLAGS > > 0: [0..2097151]: 2593408088..2595505239 21 (29420144..31517295) > > 2097152 10000 > > > > $ dd if=/dev/zero of=/tmp/file bs=1M count=1026 conv=fsync > > That does a truncate first, removing all the preallocated space. Use > conv=notrunc to avoid this. Hence the space allocated by this > new write is different to the space allocated by the above > preallocation. The file has not been moved, the filesystem just did > what you asked it to do. > > > > > $ xfs_bmap -p -vv file > > file: > > EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET > > TOTAL FLAGS > > 0: [0..4194303]: 2709184016..2713378319 22 (23101408..27295711) > > 4194304 00000 > > And so now you've triggered the speculative delayed allocation > beyond EOF, which is normal behaviour. Hence there are currently > unused blocks beyond EOF which will get removed either when the next > close(fd) occurs on the file or the inode is removed from the cache. > Close(fd) should be invoked before dd quits. But why the extra blocks beyond EOF are not freed? The only way I found to remove the extra blocks is truncate the file to its real size. > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > --0016e6de00410ede5b04bf7dee55 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
On Tue, May 8, 2012 at 7:59 AM, Dave Chinner <david@fromorbit.com> wrote:
On Mon, May 07, 2012 at 08:44:17PM +0800, Zhu Han wrote:<= br> > Seems like xfs of CentOS 6.X occupies much more storage space than des= ired
> if fallocate is used against the file. Here is the step to reproduce i= t:

You test case is not doing what you think it is doing.

Thanks for pointing it out.

=A0

> By the way, is it normal when the file is moved around after the
> preallocated region is filled with data?
>
> $ uname -r
> 2.6.32-220.7.1.el6.x86_64
>
> $fallocate -n --offset 0 -l 1G file =A0 =A0---->Write a little more= data than
> the preallocated size
>
> $ xfs_bmap -p -vv file
> file:
> =A0EXT: FILE-OFFSET =A0 =A0 =A0BLOCK-RANGE =A0 =A0 =A0 =A0 =A0 =A0AG A= G-OFFSET
> TOTAL FLAGS
> =A0 =A00: [0..2097151]: =A0 =A02593408088..2595505239 21 (29420144..31= 517295)
> 2097152 10000
>
> $ dd if=3D/dev/zero of=3D/tmp/file bs=3D1M count=3D1026 conv=3Dfsync
That does a truncate first, removing all the preallocated space. Use<= br> conv=3Dnotrunc to avoid this. Hence the space allocated by this
new write is different to the space allocated by the above
preallocation. The file has not been moved, the filesystem just did
what you asked it to do.

>
> $ xfs_bmap -p -vv file
> file:
> =A0EXT: FILE-OFFSET =A0 =A0 =A0BLOCK-RANGE =A0 =A0 =A0 =A0 =A0 =A0AG A= G-OFFSET
> TOTAL FLAGS
> =A0 =A00: [0..4194303]: =A0 =A02709184016..2713378319 22 (23101408..27= 295711)
> 4194304 00000

And so now you've triggered the speculative delayed allocation beyond EOF, which is normal behaviour. Hence there are currently
unused blocks beyond EOF which will get removed either when the next
close(fd) occurs on the file or the inode is removed from the cache.

Close(fd) should be invoked before dd quits. But why the= extra blocks beyond EOF are not freed?

The only way I found to remo= ve the extra blocks is truncate the file to its real size.
=A0

Cheers,

Dave.
--
Dave Chinner
david@fromorbit.com

--0016e6de00410ede5b04bf7dee55-- From david@fromorbit.com Mon May 7 23:40:45 2012 X-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_45, J_CHICKENPOX_47 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 q484eiFC042880 for ; Mon, 7 May 2012 23:40:45 -0500 X-ASG-Debug-ID: 1336452042-04cb6c24fc2c58b0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id dSAG5lPNRgrwVYg5 for ; Mon, 07 May 2012 21:40:42 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAFSjqE95LaUR/2dsb2JhbABEsyWBCIIMAQEEAScTHCMFCwgDDgouFCUDIROICQS7HBOKbSGFBWMEi0iKNYZjiWCCe4FF Received: from ppp121-45-165-17.lns20.syd6.internode.on.net (HELO dastard) ([121.45.165.17]) by ipmail05.adl6.internode.on.net with ESMTP; 08 May 2012 14:10:40 +0930 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1SRcE3-0002V5-37; Tue, 08 May 2012 14:40:39 +1000 Date: Tue, 8 May 2012 14:40:39 +1000 From: Dave Chinner To: Zhu Han Cc: xfs@oss.sgi.com Subject: Re: fallocate bug? Message-ID: <20120508044039.GF5091@dastard> X-ASG-Orig-Subj: Re: fallocate bug? References: <20120507235955.GE5091@dastard> 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-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1336452042 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96315 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, May 08, 2012 at 11:24:52AM +0800, Zhu Han wrote: > On Tue, May 8, 2012 at 7:59 AM, Dave Chinner wrote: > > > On Mon, May 07, 2012 at 08:44:17PM +0800, Zhu Han wrote: > > > Seems like xfs of CentOS 6.X occupies much more storage space than > > desired > > > if fallocate is used against the file. Here is the step to reproduce it: > > > > You test case is not doing what you think it is doing. > > Thanks for pointing it out. > > > > By the way, is it normal when the file is moved around after the > > > preallocated region is filled with data? > > > > > > $ uname -r > > > 2.6.32-220.7.1.el6.x86_64 > > > > > > $fallocate -n --offset 0 -l 1G file ---->Write a little more data than > > > the preallocated size > > > > > > $ xfs_bmap -p -vv file > > > file: > > > EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET > > > TOTAL FLAGS > > > 0: [0..2097151]: 2593408088..2595505239 21 (29420144..31517295) > > > 2097152 10000 > > > > > > $ dd if=/dev/zero of=/tmp/file bs=1M count=1026 conv=fsync > > > > That does a truncate first, removing all the preallocated space. Use > > conv=notrunc to avoid this. Hence the space allocated by this > > new write is different to the space allocated by the above > > preallocation. The file has not been moved, the filesystem just did > > what you asked it to do. > > > > > > > > $ xfs_bmap -p -vv file > > > file: > > > EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET > > > TOTAL FLAGS > > > 0: [0..4194303]: 2709184016..2713378319 22 (23101408..27295711) > > > 4194304 00000 > > > > And so now you've triggered the speculative delayed allocation > > beyond EOF, which is normal behaviour. Hence there are currently > > unused blocks beyond EOF which will get removed either when the next > > close(fd) occurs on the file or the inode is removed from the cache. > > > > Close(fd) should be invoked before dd quits. But why the extra blocks > beyond EOF are not freed? The removal is conditional on how many times the fd has been closed with dirty data on the inode. > The only way I found to remove the extra blocks is truncate the file to its > real size. If the close() didn't remove them, they will be removed when the inode ages out of the cache. Why do you even care about them? Cheers, Dave. -- Dave Chinner david@fromorbit.com From schumi.han@gmail.com Tue May 8 00:10:59 2012 X-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, HTML_MESSAGE,J_CHICKENPOX_45,J_CHICKENPOX_47,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 q485Aw6S056199 for ; Tue, 8 May 2012 00:10:59 -0500 X-ASG-Debug-ID: 1336453855-04bdf034ee2eb8a0001-NocioJ Received: from mail-wg0-f51.google.com (mail-wg0-f51.google.com [74.125.82.51]) by cuda.sgi.com with ESMTP id w6xm0eUA1Z9EhWtj (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 07 May 2012 22:10:56 -0700 (PDT) X-Barracuda-Envelope-From: schumi.han@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.51 Received: by wgbed3 with SMTP id ed3so549390wgb.32 for ; Mon, 07 May 2012 22:10:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=gDTZ4MwAfCOw3NWzwha22DL21CuYljSjSTKryaqDXyE=; b=0n5ragOh2ampu84R5M3/piFvm0z7vdRYl9zMIJ2erFeD/08+VW2ido9AiEIrqbAGZa zFoVn646JeY2qzE8iepEFylBaxPkTabxcZ2NMzbMoT0aSfji1bh2QArr5odZ8z0o5R+P U46s/6vXK7YcSaVMx6dIUfMiJcIYyFhkRSDnmgJqdJc8dfwGjBs7PUKZutBlDhzWq2KB XkxE3ZPVlkBUfHB9J0QnYsNJzRoc3EmQNHsGIuFmcxb0PtHhqbjAMxFF6TSZpEhj66Pz ecTD1GAYK6ewfm0l3PqW1aGySLuAOQstD8QDAvQNRKxPSDRpuzwx6MaNpiCMzt2/hZOG yjBg== MIME-Version: 1.0 Received: by 10.180.107.104 with SMTP id hb8mr18666197wib.8.1336453855649; Mon, 07 May 2012 22:10:55 -0700 (PDT) Received: by 10.216.171.143 with HTTP; Mon, 7 May 2012 22:10:55 -0700 (PDT) In-Reply-To: <20120508044039.GF5091@dastard> References: <20120507235955.GE5091@dastard> <20120508044039.GF5091@dastard> Date: Tue, 8 May 2012 13:10:55 +0800 Message-ID: Subject: Re: fallocate bug? From: Zhu Han X-ASG-Orig-Subj: Re: fallocate bug? To: Dave Chinner Cc: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=e89a8f234ce55320d004bf7f696c X-Barracuda-Connect: mail-wg0-f51.google.com[74.125.82.51] X-Barracuda-Start-Time: 1336453856 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96317 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 --e89a8f234ce55320d004bf7f696c Content-Type: text/plain; charset=ISO-8859-1 On Tue, May 8, 2012 at 12:40 PM, Dave Chinner wrote: > On Tue, May 08, 2012 at 11:24:52AM +0800, Zhu Han wrote: > > On Tue, May 8, 2012 at 7:59 AM, Dave Chinner > wrote: > > > > > On Mon, May 07, 2012 at 08:44:17PM +0800, Zhu Han wrote: > > > > Seems like xfs of CentOS 6.X occupies much more storage space than > > > desired > > > > if fallocate is used against the file. Here is the step to reproduce > it: > > > > > > You test case is not doing what you think it is doing. > > > > Thanks for pointing it out. > > > > > > By the way, is it normal when the file is moved around after the > > > > preallocated region is filled with data? > > > > > > > > $ uname -r > > > > 2.6.32-220.7.1.el6.x86_64 > > > > > > > > $fallocate -n --offset 0 -l 1G file ---->Write a little more data > than > > > > the preallocated size > > > > > > > > $ xfs_bmap -p -vv file > > > > file: > > > > EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET > > > > TOTAL FLAGS > > > > 0: [0..2097151]: 2593408088..2595505239 21 (29420144..31517295) > > > > 2097152 10000 > > > > > > > > $ dd if=/dev/zero of=/tmp/file bs=1M count=1026 conv=fsync > > > > > > That does a truncate first, removing all the preallocated space. Use > > > conv=notrunc to avoid this. Hence the space allocated by this > > > new write is different to the space allocated by the above > > > preallocation. The file has not been moved, the filesystem just did > > > what you asked it to do. > > > > > > > > > > > $ xfs_bmap -p -vv file > > > > file: > > > > EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET > > > > TOTAL FLAGS > > > > 0: [0..4194303]: 2709184016..2713378319 22 (23101408..27295711) > > > > 4194304 00000 > > > > > > And so now you've triggered the speculative delayed allocation > > > beyond EOF, which is normal behaviour. Hence there are currently > > > unused blocks beyond EOF which will get removed either when the next > > > close(fd) occurs on the file or the inode is removed from the cache. > > > > > > > Close(fd) should be invoked before dd quits. But why the extra blocks > > beyond EOF are not freed? > > The removal is conditional on how many times the fd has been closed > with dirty data on the inode. > > > The only way I found to remove the extra blocks is truncate the file to > its > > real size. > > If the close() didn't remove them, they will be removed when the > inode ages out of the cache. Why do you even care about them? > Our distributed system depends on the real length of files to account the space usage. This behavior make the account inaccurate. > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > --e89a8f234ce55320d004bf7f696c Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
On Tue, May 8, 2012 at 12:40 PM, Dave Chinne= r <david@fromorbit.com> wrote:
On Tue, May 08, 2012 at 11:24:52AM = +0800, Zhu Han wrote:
> On Tue, May 8, 2012 at 7:59 AM, Dave Chinner <david@fromorbit.com> wrote:
>
> > On Mon, May 07, 2012 at 08:44:17PM +0800, Zhu Han wrote:
> > > Seems like xfs of CentOS 6.X occupies much more storage spac= e than
> > desired
> > > if fallocate is used against the file. Here is the step to r= eproduce it:
> >
> > You test case is not doing what you think it is doing.
>
> Thanks for pointing it out.
>
> > > By the way, is it normal when the file is moved around after= the
> > > preallocated region is filled with data?
> > >
> > > $ uname -r
> > > 2.6.32-220.7.1.el6.x86_64
> > >
> > > $fallocate -n --offset 0 -l 1G file =A0 =A0---->Write a l= ittle more data than
> > > the preallocated size
> > >
> > > $ xfs_bmap -p -vv file
> > > file:
> > > =A0EXT: FILE-OFFSET =A0 =A0 =A0BLOCK-RANGE =A0 =A0 =A0 =A0 = =A0 =A0AG AG-OFFSET
> > > TOTAL FLAGS
> > > =A0 =A00: [0..2097151]: =A0 =A02593408088..2595505239 21 (29= 420144..31517295)
> > > 2097152 10000
> > >
> > > $ dd if=3D/dev/zero of=3D/tmp/file bs=3D1M count=3D1026 conv= =3Dfsync
> >
> > That does a truncate first, removing all the preallocated space. = Use
> > conv=3Dnotrunc to avoid this. Hence the space allocated by this > > new write is different to the space allocated by the above
> > preallocation. The file has not been moved, the filesystem just d= id
> > what you asked it to do.
> >
> > >
> > > $ xfs_bmap -p -vv file
> > > file:
> > > =A0EXT: FILE-OFFSET =A0 =A0 =A0BLOCK-RANGE =A0 =A0 =A0 =A0 = =A0 =A0AG AG-OFFSET
> > > TOTAL FLAGS
> > > =A0 =A00: [0..4194303]: =A0 =A02709184016..2713378319 22 (23= 101408..27295711)
> > > 4194304 00000
> >
> > And so now you've triggered the speculative delayed allocatio= n
> > beyond EOF, which is normal behaviour. Hence there are currently<= br> > > unused blocks beyond EOF which will get removed either when the n= ext
> > close(fd) occurs on the file or the inode is removed from the cac= he.
> >
>
> Close(fd) should be invoked before dd quits. But why the extra blocks<= br> > beyond EOF are not freed?

The removal is conditional on how many times the fd has been cl= osed
with dirty data on the inode.

> The only way I found to remove the extra blocks is truncate the file t= o its
> real size.

If the close() didn't remove them, they will be removed when the<= br> inode ages out of the cache. Why do you even care about them?

Our distributed system depends on the real length of files to a= ccount the space usage. This behavior make the account inaccurate.
=A0

Cheers,

Dave.
--
Dave Chinner
david@fromorbit.com

--e89a8f234ce55320d004bf7f696c-- From david@fromorbit.com Tue May 8 00:47:08 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q485l8HT066344 for ; Tue, 8 May 2012 00:47:08 -0500 X-ASG-Debug-ID: 1336456025-04bdf034f02ecf60001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id 4GLAdxu5Bp4HFkoO for ; Mon, 07 May 2012 22:47:05 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAI6yqE95LaUR/2dsb2JhbABEsyaBCIIMAQEEATocIwULCAMOChUZFCUDIROICQS7AxOKbYJXgzIEi0iKNYZjiWCCew Received: from ppp121-45-165-17.lns20.syd6.internode.on.net (HELO dastard) ([121.45.165.17]) by ipmail05.adl6.internode.on.net with ESMTP; 08 May 2012 15:17:05 +0930 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1SRdGJ-0002az-AA; Tue, 08 May 2012 15:47:03 +1000 Date: Tue, 8 May 2012 15:47:03 +1000 From: Dave Chinner To: Zhu Han Cc: xfs@oss.sgi.com Subject: Re: fallocate bug? Message-ID: <20120508054703.GG5091@dastard> X-ASG-Orig-Subj: Re: fallocate bug? References: <20120507235955.GE5091@dastard> <20120508044039.GF5091@dastard> 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-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1336456025 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96319 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, May 08, 2012 at 01:10:55PM +0800, Zhu Han wrote: > On Tue, May 8, 2012 at 12:40 PM, Dave Chinner wrote: > > On Tue, May 08, 2012 at 11:24:52AM +0800, Zhu Han wrote: > > > On Tue, May 8, 2012 at 7:59 AM, Dave Chinner > > wrote: > > > > And so now you've triggered the speculative delayed allocation > > > > beyond EOF, which is normal behaviour. Hence there are currently > > > > unused blocks beyond EOF which will get removed either when the next > > > > close(fd) occurs on the file or the inode is removed from the cache. > > > > > > > > > > Close(fd) should be invoked before dd quits. But why the extra blocks > > > beyond EOF are not freed? > > > > The removal is conditional on how many times the fd has been closed > > with dirty data on the inode. > > > > > The only way I found to remove the extra blocks is truncate the file to > > its > > > real size. > > > > If the close() didn't remove them, they will be removed when the > > inode ages out of the cache. Why do you even care about them? > > Our distributed system depends on the real length of files to account the > space usage. That's ..... naive. It's never been valid to assume that the file size is an accurate reflection of space usage, especially as it will *always* be wrong for sparse files. In the same light, you also cannot assume that it is an accurate reflection for non-sparse files because we can do both explicit and speculative allocation beyond EOF which only du will show. Not to mention that metadata is not accounted in the file length, and that can consume a significant amount of space, too. > This behavior make the account inaccurate. The block usage reported by XFS is both accurate and correct. The file size reported by XFS is both accurate and correct. You're "account inaccuracy" is assuming that they are the same. Perhaps you should be using quotas for accurate space usage accounting? Anyway, if you really want to stop speculative delayed allocation beyond EOF, then use the allocsize mount option to control it. Cheers, Dave. -- Dave Chinner david@fromorbit.com From MAILER-DAEMON@oss.sgi.com Tue May 8 02:46:35 2012 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_40,MISSING_MIME_HB_SEP, T_MIME_NO_TEXT,T_TVD_MIME_NO_HEADERS 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 q487kZwc094949 for ; Tue, 8 May 2012 02:46:35 -0500 X-ASG-Debug-ID: 1336463193-04cbb03c1531ebb0001-NocioJ Received: from oproxy1-pub.bluehost.com (oproxy1-pub.bluehost.com [66.147.249.253]) by cuda.sgi.com with SMTP id XaGRUF9T93t24JMm for ; Tue, 08 May 2012 00:46:33 -0700 (PDT) X-Barracuda-Envelope-From: X-Barracuda-Apparent-Source-IP: 66.147.249.253 Received: (qmail 11362 invoked for bounce); 8 May 2012 07:46:33 -0000 Date: 8 May 2012 07:46:33 -0000 From: MAILER-DAEMON@oproxy1-pub.bluehost.com To: xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="1336463190oproxy1-pub.bluehost.com22291523" Subject: failure notice X-Barracuda-Connect: oproxy1-pub.bluehost.com[66.147.249.253] X-Barracuda-Start-Time: 1336463193 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-ASG-Orig-Subj: failure notice X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.34 X-Barracuda-Spam-Status: No, SCORE=0.34 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=ANY_BOUNCE_MESSAGE, BOUNCE_MESSAGE, BSF_SC0_SA590, EMPTY_ENV_FROM, MISSING_MID, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96327 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.14 MISSING_MID Missing Message-Id: header 0.00 EMPTY_ENV_FROM Empty Envelope From Address 0.00 NO_REAL_NAME From: does not include a real name 0.20 BSF_SC0_SA590 Custom Rule SA590 0.00 BOUNCE_MESSAGE MTA bounce message 0.00 ANY_BOUNCE_MESSAGE Message is some kind of bounce message Message-Id: <20120508074634.D800A106C15A@cuda.sgi.com> --1336463190oproxy1-pub.bluehost.com22291523 Hi. This is the qmail-send program at oproxy1-pub.bluehost.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. : 217.22.170.202 does not like recipient. Remote host said: 550 sender IP address 66.147.249.253 is locally blacklisted. Giving up on 217.22.170.202. --- Enclosed are the original headers of the message. --1336463190oproxy1-pub.bluehost.com22291523 Content-Type: message/rfc822 Return-Path: Received: (qmail 11232 invoked by uid 0); 8 May 2012 07:46:30 -0000 Received: from unknown (HELO host183.hostmonster.com) (74.220.207.183) by oproxy1.bluehost.com with SMTP; 8 May 2012 07:46:30 -0000 Received: from [96.44.150.220] (helo=www-95d09c6f325) by host183.hostmonster.com with esmtpa (Exim 4.76) (envelope-from ) id 1SRf7t-0003mu-Dx for mihaylova.t.a@stng.rosneft.ru; Tue, 08 May 2012 01:46:29 -0600 Message-ID: <414-2201252874628238@www-95d09c6f325> Reply-To: "SGI" Errors-to: em_bbt_ru@mail.ru From: "SGI" To: mihaylova.t.a@stng.rosneft.ru Subject: A high-performance journaling filesystem Date: Tue, 8 May 2012 00:46:28 -0700 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_01BC2B74.89D1CCC0" X-Identified-User: {1770:host183.hostmonster.com:saminsid:saminsideme.com} {sentby:smtp auth 96.44.150.220 authed with 789@saminsideme.com} (Body supressed) ------=_NextPart_000_01BC2B74.89D1CCC0-- --1336463190oproxy1-pub.bluehost.com22291523-- From MAILER-DAEMON@oss.sgi.com Tue May 8 03:46:36 2012 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,MISSING_MIME_HB_SEP, T_MIME_NO_TEXT,T_TVD_MIME_NO_HEADERS 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 q488kaVl101949 for ; Tue, 8 May 2012 03:46:36 -0500 X-ASG-Debug-ID: 1336466794-04bdf034ed2f7020001-NocioJ Received: from oproxy6-pub.bluehost.com (oproxy6-pub.bluehost.com [67.222.54.6]) by cuda.sgi.com with SMTP id hBsYMzWo4m8qYZbc for ; Tue, 08 May 2012 01:46:34 -0700 (PDT) X-Barracuda-Envelope-From: X-Barracuda-Apparent-Source-IP: 67.222.54.6 Received: (qmail 21605 invoked for bounce); 8 May 2012 08:46:34 -0000 Date: 8 May 2012 08:46:34 -0000 From: MAILER-DAEMON@oproxy6-pub.bluehost.com To: xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="1336463191oproxy6-pub.bluehost.com3129733" Subject: failure notice X-Barracuda-Connect: oproxy6-pub.bluehost.com[67.222.54.6] X-Barracuda-Start-Time: 1336466794 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-ASG-Orig-Subj: failure notice X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.34 X-Barracuda-Spam-Status: No, SCORE=0.34 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=ANY_BOUNCE_MESSAGE, BOUNCE_MESSAGE, BSF_SC0_SA590, EMPTY_ENV_FROM, MISSING_MID, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96331 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.14 MISSING_MID Missing Message-Id: header 0.00 EMPTY_ENV_FROM Empty Envelope From Address 0.00 NO_REAL_NAME From: does not include a real name 0.20 BSF_SC0_SA590 Custom Rule SA590 0.00 BOUNCE_MESSAGE MTA bounce message 0.00 ANY_BOUNCE_MESSAGE Message is some kind of bounce message Message-Id: <20120508084635.BEF6EA4211E@cuda.sgi.com> --1336463191oproxy6-pub.bluehost.com3129733 Hi. This is the qmail-send program at oproxy6-pub.bluehost.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. : 217.22.162.67 does not like recipient. Remote host said: 550 Access denied - 67.222.54.6 listed by dnsbl.sorbs.net Giving up on 217.22.162.67. --- Enclosed are the original headers of the message. --1336463191oproxy6-pub.bluehost.com3129733 Content-Type: message/rfc822 Return-Path: Received: (qmail 31311 invoked by uid 0); 8 May 2012 07:46:31 -0000 Received: from unknown (HELO host183.hostmonster.com) (74.220.207.183) by cpoproxy3.bluehost.com with SMTP; 8 May 2012 07:46:31 -0000 Received: from [96.44.150.220] (helo=www-95d09c6f325) by host183.hostmonster.com with esmtpa (Exim 4.76) (envelope-from ) id 1SRf7u-0003mu-Je for reception@nordoil.ru; Tue, 08 May 2012 01:46:31 -0600 Message-ID: <416-2201252874629410@www-95d09c6f325> Reply-To: "SGI" Errors-to: em_bbt_ru@mail.ru From: "SGI" To: reception@nordoil.ru Subject: A high-performance journaling filesystem Date: Tue, 8 May 2012 00:46:29 -0700 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_01BC2B74.89D1CCC0" X-Identified-User: {1770:host183.hostmonster.com:saminsid:saminsideme.com} {sentby:smtp auth 96.44.150.220 authed with 789@saminsideme.com} (Body supressed) ------=_NextPart_000_01BC2B74.89D1CCC0-- --1336463191oproxy6-pub.bluehost.com3129733-- From dave@fromorbit.com Tue May 8 05:48:59 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q48AmxYv124820 for ; Tue, 8 May 2012 05:48:59 -0500 X-ASG-Debug-ID: 1336474135-04bdf034ef300bf0001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id D4HC2wM5lYVVSs8Y for ; Tue, 08 May 2012 03:48:56 -0700 (PDT) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvwEAFX5qE95LaUR/2dsb2JhbABEsySBCIIMAVw7GGoDNIgNmU2hYIsggkaDJgSmQIJ7gUU Received: from ppp121-45-165-17.lns20.syd6.internode.on.net (HELO dastard) ([121.45.165.17]) by ipmail07.adl2.internode.on.net with ESMTP; 08 May 2012 20:18:55 +0930 Received: from disappointment ([192.168.1.1]) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1SRhyP-00038r-L0 for xfs@oss.sgi.com; Tue, 08 May 2012 20:48:53 +1000 Received: from dave by disappointment with local (Exim 4.77) (envelope-from ) id 1SRhyP-0007Do-9G for xfs@oss.sgi.com; Tue, 08 May 2012 20:48:53 +1000 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH] xfs: fix delalloc quota accounting on failure Date: Tue, 8 May 2012 20:48:53 +1000 X-ASG-Orig-Subj: [PATCH] xfs: fix delalloc quota accounting on failure Message-Id: <1336474133-27732-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.10 X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1336474136 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96339 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner xfstest 270 was causing quota reservations way beyond what was sane (ten to hundreds of TB) for a 4GB filesystem. There's a sign problem in the error handling path of xfs_bmapi_reserve_delalloc() because xfs_trans_unreserve_quota_nblks() simple negates the value passed - which doesn't work for an unsigned variable. This causes reservations of close to 2^32 block instead of removing a reservation of a handful of blocks. Fix the same problem in the other xfs_trans_unreserve_quota_nblks() callers where unsigned integer variables are used, too. Signed-off-by: Dave Chinner --- fs/xfs/xfs_bmap.c | 2 +- fs/xfs/xfs_iomap.c | 2 +- fs/xfs/xfs_vnodeops.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index 9006656..2115146 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c @@ -4526,7 +4526,7 @@ out_unreserve_blocks: xfs_icsb_modify_counters(mp, XFS_SBS_FDBLOCKS, alen, 0); out_unreserve_quota: if (XFS_IS_QUOTA_ON(mp)) - xfs_trans_unreserve_quota_nblks(NULL, ip, alen, 0, rt ? + xfs_trans_unreserve_quota_nblks(NULL, ip, (long)alen, 0, rt ? XFS_QMOPT_RES_RTBLKS : XFS_QMOPT_RES_REGBLKS); return error; } diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index 756f093..973dff6 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c @@ -246,7 +246,7 @@ out_unlock: out_bmap_cancel: xfs_bmap_cancel(&free_list); - xfs_trans_unreserve_quota_nblks(tp, ip, qblocks, 0, quota_flag); + xfs_trans_unreserve_quota_nblks(tp, ip, (long)qblocks, 0, quota_flag); out_trans_cancel: xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT); goto out_unlock; diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index 57515e2..c22f4e0 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c @@ -1916,7 +1916,7 @@ xfs_alloc_file_space( error0: /* Cancel bmap, unlock inode, unreserve quota blocks, cancel trans */ xfs_bmap_cancel(&free_list); - xfs_trans_unreserve_quota_nblks(tp, ip, qblocks, 0, quota_flag); + xfs_trans_unreserve_quota_nblks(tp, ip, (long)qblocks, 0, quota_flag); error1: /* Just cancel transaction */ xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT); -- 1.7.10 From sandeen@sandeen.net Tue May 8 09:28:58 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q48ESwrr184182 for ; Tue, 8 May 2012 09:28:58 -0500 X-ASG-Debug-ID: 1336487335-04cbb03c1533b550001-NocioJ Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id hysNFqbUFC0mbqjC for ; Tue, 08 May 2012 07:28:56 -0700 (PDT) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id B07DA49632BB; Tue, 8 May 2012 09:28:55 -0500 (CDT) Message-ID: <4FA92DA7.4090809@sandeen.net> Date: Tue, 08 May 2012 09:28:55 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:12.0) Gecko/20120428 Thunderbird/12.0.1 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH] xfs: fix delalloc quota accounting on failure References: <1336474133-27732-1-git-send-email-david@fromorbit.com> X-ASG-Orig-Subj: Re: [PATCH] xfs: fix delalloc quota accounting on failure In-Reply-To: <1336474133-27732-1-git-send-email-david@fromorbit.com> X-Enigmail-Version: 1.4.1 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: 1336487336 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96355 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 5/8/12 5:48 AM, Dave Chinner wrote: > From: Dave Chinner > > xfstest 270 was causing quota reservations way beyond what was sane > (ten to hundreds of TB) for a 4GB filesystem. There's a sign problem > in the error handling path of xfs_bmapi_reserve_delalloc() because > xfs_trans_unreserve_quota_nblks() simple negates the value passed - > which doesn't work for an unsigned variable. This causes > reservations of close to 2^32 block instead of removing a > reservation of a handful of blocks. > > Fix the same problem in the other xfs_trans_unreserve_quota_nblks() > callers where unsigned integer variables are used, too. > > Signed-off-by: Dave Chinner Ouch! Reviewed-by: Eric Sandeen as far as it goes, but a couple thoughts: 1) Should the cast be done in the macro so new callers don't get tripped up? 2) Should we just remove the ninos argument from the macro? It's always passed as 0 (and could potentially suffer the same problem) something like: diff --git a/fs/xfs/xfs_quota.h b/fs/xfs/xfs_quota.h index b50ec5b..f771838 100644 --- a/fs/xfs/xfs_quota.h +++ b/fs/xfs/xfs_quota.h @@ -370,8 +370,8 @@ static inline int xfs_trans_reserve_quota_bydquots(struct xfs_trans *tp, #define xfs_qm_unmount_quotas(mp) #endif /* CONFIG_XFS_QUOTA */ -#define xfs_trans_unreserve_quota_nblks(tp, ip, nblks, ninos, flags) \ - xfs_trans_reserve_quota_nblks(tp, ip, -(nblks), -(ninos), flags) +#define xfs_trans_unreserve_quota_nblks(tp, ip, nblks, flags) \ + xfs_trans_reserve_quota_nblks(tp, ip, -((long)nblks), 0, flags) #define xfs_trans_reserve_quota(tp, mp, ud, gd, nb, ni, f) \ xfs_trans_reserve_quota_bydquots(tp, mp, ud, gd, nb, ni, \ f | XFS_QMOPT_RES_REGBLKS) > --- > fs/xfs/xfs_bmap.c | 2 +- > fs/xfs/xfs_iomap.c | 2 +- > fs/xfs/xfs_vnodeops.c | 2 +- > 3 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c > index 9006656..2115146 100644 > --- a/fs/xfs/xfs_bmap.c > +++ b/fs/xfs/xfs_bmap.c > @@ -4526,7 +4526,7 @@ out_unreserve_blocks: > xfs_icsb_modify_counters(mp, XFS_SBS_FDBLOCKS, alen, 0); > out_unreserve_quota: > if (XFS_IS_QUOTA_ON(mp)) > - xfs_trans_unreserve_quota_nblks(NULL, ip, alen, 0, rt ? > + xfs_trans_unreserve_quota_nblks(NULL, ip, (long)alen, 0, rt ? > XFS_QMOPT_RES_RTBLKS : XFS_QMOPT_RES_REGBLKS); > return error; > } > diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c > index 756f093..973dff6 100644 > --- a/fs/xfs/xfs_iomap.c > +++ b/fs/xfs/xfs_iomap.c > @@ -246,7 +246,7 @@ out_unlock: > > out_bmap_cancel: > xfs_bmap_cancel(&free_list); > - xfs_trans_unreserve_quota_nblks(tp, ip, qblocks, 0, quota_flag); > + xfs_trans_unreserve_quota_nblks(tp, ip, (long)qblocks, 0, quota_flag); > out_trans_cancel: > xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT); > goto out_unlock; > diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c > index 57515e2..c22f4e0 100644 > --- a/fs/xfs/xfs_vnodeops.c > +++ b/fs/xfs/xfs_vnodeops.c > @@ -1916,7 +1916,7 @@ xfs_alloc_file_space( > > error0: /* Cancel bmap, unlock inode, unreserve quota blocks, cancel trans */ > xfs_bmap_cancel(&free_list); > - xfs_trans_unreserve_quota_nblks(tp, ip, qblocks, 0, quota_flag); > + xfs_trans_unreserve_quota_nblks(tp, ip, (long)qblocks, 0, quota_flag); > > error1: /* Just cancel transaction */ > xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT); From BATV+63c54800cbd88b86864c+3180+infradead.org+hch@bombadil.srs.infradead.org Tue May 8 09:31:09 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q48EV72T184875 for ; Tue, 8 May 2012 09:31:09 -0500 X-ASG-Debug-ID: 1336487466-04cbb03c1633b6c0001-NocioJ Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id rf5hBCnbLCdNXCF3 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 08 May 2012 07:31:06 -0700 (PDT) X-Barracuda-Envelope-From: BATV+63c54800cbd88b86864c+3180+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 173.166.109.252 Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1SRlRQ-0004w4-MN; Tue, 08 May 2012 14:31:04 +0000 Date: Tue, 8 May 2012 10:31:04 -0400 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs: fix delalloc quota accounting on failure Message-ID: <20120508143104.GA15308@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs: fix delalloc quota accounting on failure References: <1336474133-27732-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1336474133-27732-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: 1336487466 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96355 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS On Tue, May 08, 2012 at 08:48:53PM +1000, Dave Chinner wrote: > From: Dave Chinner > > xfstest 270 was causing quota reservations way beyond what was sane > (ten to hundreds of TB) for a 4GB filesystem. There's a sign problem > in the error handling path of xfs_bmapi_reserve_delalloc() because > xfs_trans_unreserve_quota_nblks() simple negates the value passed - > which doesn't work for an unsigned variable. This causes > reservations of close to 2^32 block instead of removing a > reservation of a handful of blocks. > > Fix the same problem in the other xfs_trans_unreserve_quota_nblks() > callers where unsigned integer variables are used, too. eww. Wouldn't it be better to make handle that inside xfs_trans_unreserve_quota_nblks? From sandeen@sandeen.net Tue May 8 09:38:28 2012 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-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 q48EcS61186666 for ; Tue, 8 May 2012 09:38:28 -0500 X-ASG-Debug-ID: 1336487906-04bdf034f0310e20001-NocioJ Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id QcsyqEKbdo2xWD6S for ; Tue, 08 May 2012 07:38:26 -0700 (PDT) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id E1C2049632BB; Tue, 8 May 2012 09:38:25 -0500 (CDT) Message-ID: <4FA92FE1.5040706@sandeen.net> Date: Tue, 08 May 2012 09:38:25 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:12.0) Gecko/20120428 Thunderbird/12.0.1 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH] xfs: fix delalloc quota accounting on failure References: <1336474133-27732-1-git-send-email-david@fromorbit.com> <4FA92DA7.4090809@sandeen.net> X-ASG-Orig-Subj: Re: [PATCH] xfs: fix delalloc quota accounting on failure In-Reply-To: <4FA92DA7.4090809@sandeen.net> X-Enigmail-Version: 1.4.1 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: 1336487906 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96355 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 5/8/12 9:28 AM, Eric Sandeen wrote: > On 5/8/12 5:48 AM, Dave Chinner wrote: >> From: Dave Chinner >> >> xfstest 270 was causing quota reservations way beyond what was sane >> (ten to hundreds of TB) for a 4GB filesystem. There's a sign problem >> in the error handling path of xfs_bmapi_reserve_delalloc() because >> xfs_trans_unreserve_quota_nblks() simple negates the value passed - >> which doesn't work for an unsigned variable. This causes >> reservations of close to 2^32 block instead of removing a >> reservation of a handful of blocks. >> >> Fix the same problem in the other xfs_trans_unreserve_quota_nblks() >> callers where unsigned integer variables are used, too. >> >> Signed-off-by: Dave Chinner > > Ouch! > > Reviewed-by: Eric Sandeen > as far as it goes, but a couple thoughts: > > 1) Should the cast be done in the macro so new callers don't get tripped up? > 2) Should we just remove the ninos argument from the macro? It's always passed as 0 (and could potentially suffer the same problem) > > something like: > > diff --git a/fs/xfs/xfs_quota.h b/fs/xfs/xfs_quota.h > index b50ec5b..f771838 100644 > --- a/fs/xfs/xfs_quota.h > +++ b/fs/xfs/xfs_quota.h > @@ -370,8 +370,8 @@ static inline int xfs_trans_reserve_quota_bydquots(struct xfs_trans *tp, > #define xfs_qm_unmount_quotas(mp) > #endif /* CONFIG_XFS_QUOTA */ > > -#define xfs_trans_unreserve_quota_nblks(tp, ip, nblks, ninos, flags) \ > - xfs_trans_reserve_quota_nblks(tp, ip, -(nblks), -(ninos), flags) > +#define xfs_trans_unreserve_quota_nblks(tp, ip, nblks, flags) \ > + xfs_trans_reserve_quota_nblks(tp, ip, -((long)nblks), 0, flags) > #define xfs_trans_reserve_quota(tp, mp, ud, gd, nb, ni, f) \ > xfs_trans_reserve_quota_bydquots(tp, mp, ud, gd, nb, ni, \ > f | XFS_QMOPT_RES_REGBLKS) > There are also 2 other callers that "already" fixed this, sortakinda: xfs_bunmapi() /* Update realtime/data freespace, unreserve quota */ ... (void)xfs_trans_reserve_quota_nblks(NULL, ip, -((long)del.br_blockcount), 0, XFS_QMOPT_RES_REGBLKS); (void)xfs_trans_reserve_quota_nblks(NULL, ip, -((long)del.br_blockcount), 0, XFS_QMOPT_RES_REGBLKS); those could be an unreserve call instead, with the sign fix embedded in the macro. And while we're at it it seems nobody calls xfs_trans_reserve_quota_nblks() with ninos != 0 so I think that arg could be removed from that function too, not just the macro, in another patch. -Eric From schumi.han@gmail.com Tue May 8 10:25:08 2012 X-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 q48FP8LI197570 for ; Tue, 8 May 2012 10:25:08 -0500 X-ASG-Debug-ID: 1336490705-04cbb03c1733f330001-NocioJ Received: from mail-wi0-f173.google.com (mail-wi0-f173.google.com [209.85.212.173]) by cuda.sgi.com with ESMTP id dgoh2rqHUN1MprFi (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 08 May 2012 08:25:06 -0700 (PDT) X-Barracuda-Envelope-From: schumi.han@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.212.173 Received: by wibhn9 with SMTP id hn9so701157wib.14 for ; Tue, 08 May 2012 08:25:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=5nk5zZF67PAOJmsaHJV4bBM8cpFoQtASyJwZ6cZp0xM=; b=RMHTPOd6SOC/7kXeT9Uoc2L2KsGpad9+AwONRF3wX2aQNF0R7LhoL3qNH18JPLThhi gI0lsKJTnWstUQIvwyyJTrnGkQQiL4Pxcj9CiZReF47tUycnXy5Ukm4PMZt+HHu9eu2Q 3yTopxhg9aFO9EdjEFvwxzPoU5/kA+h1uZNtTboUjKwlCuUVBJ0d7OptM6xZqm0/vv8i ZqtsrTT0sTxRRZ4UL1h3PRHhqfGdETujGB84H6CUiZAFT6nyAoBuzdYWw6CTQJ2dSdcz oATkS40V0sGCBfwby/RvCweIU8Jq2+xPmQ/aUZolYC2a3HPhiQ+gocLsg0FXxflE2I+a thiQ== MIME-Version: 1.0 Received: by 10.216.145.153 with SMTP id p25mr12537296wej.112.1336490705689; Tue, 08 May 2012 08:25:05 -0700 (PDT) Received: by 10.216.171.143 with HTTP; Tue, 8 May 2012 08:25:05 -0700 (PDT) In-Reply-To: <20120508054703.GG5091@dastard> References: <20120507235955.GE5091@dastard> <20120508044039.GF5091@dastard> <20120508054703.GG5091@dastard> Date: Tue, 8 May 2012 23:25:05 +0800 Message-ID: Subject: Re: fallocate bug? From: Zhu Han X-ASG-Orig-Subj: Re: fallocate bug? To: Dave Chinner Cc: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=0016e68fa33bc21b0404bf87fdd3 X-Barracuda-Connect: mail-wi0-f173.google.com[209.85.212.173] X-Barracuda-Start-Time: 1336490706 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1.3 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.96359 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 --0016e68fa33bc21b0404bf87fdd3 Content-Type: text/plain; charset=ISO-8859-1 On Tue, May 8, 2012 at 1:47 PM, Dave Chinner wrote: > On Tue, May 08, 2012 at 01:10:55PM +0800, Zhu Han wrote: > > On Tue, May 8, 2012 at 12:40 PM, Dave Chinner > wrote: > > > On Tue, May 08, 2012 at 11:24:52AM +0800, Zhu Han wrote: > > > > On Tue, May 8, 2012 at 7:59 AM, Dave Chinner > > > wrote: > > > > > And so now you've triggered the speculative delayed allocation > > > > > beyond EOF, which is normal behaviour. Hence there are currently > > > > > unused blocks beyond EOF which will get removed either when the > next > > > > > close(fd) occurs on the file or the inode is removed from the > cache. > > > > > > > > > > > > > Close(fd) should be invoked before dd quits. But why the extra blocks > > > > beyond EOF are not freed? > > > > > > The removal is conditional on how many times the fd has been closed > > > with dirty data on the inode. > > > > > > > The only way I found to remove the extra blocks is truncate the file > to > > > its > > > > real size. > > > > > > If the close() didn't remove them, they will be removed when the > > > inode ages out of the cache. Why do you even care about them? > > > > Our distributed system depends on the real length of files to account the > > space usage. > > That's ..... naive. It's never been valid to assume that the file > size is an accurate reflection of space usage, especially as it will > *always* be wrong for sparse files. In the same light, you also > cannot assume that it is an accurate reflection for non-sparse files > because we can do both explicit and speculative allocation beyond > EOF which only du will show. Not to mention that metadata is not > accounted in the file length, and that can consume a significant > amount of space, too. > > > This behavior make the account inaccurate. > > The block usage reported by XFS is both accurate and correct. The > file size reported by XFS is both accurate and correct. You're > "account inaccuracy" is assuming that they are the same. Perhaps you > should be using quotas for accurate space usage accounting? > > Anyway, if you really want to stop speculative delayed allocation > beyond EOF, then use the allocsize mount option to control it. > Thanks for help. I can control the size of pre-allocation, so no data are written beyond the pre-allocated block range, so no speculative allocation is triggered. Besides it, our system can sync the accurate space usage of mount point periodically. Can you give any hints about the most lightweight approach to get the accurate block usage of whole file system? > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > --0016e68fa33bc21b0404bf87fdd3 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
On Tue, May 8, 2012 at 1:47 PM, Dave Chinner <david@fromorbit.com> wrote:
On Tue, May 08, 2012 at 01:10:55PM +0800, Zhu Han wrote:<= br> > On Tue, May 8, 2012 at 12:40 PM, Dave Chinner <david@fromorbit.com> wrote:
> > On Tue, May 08, 2012 at 11:24:52AM +0800, Zhu Han wrote:
> > > On Tue, May 8, 2012 at 7:59 AM, Dave Chinner <david@fromorbit.com>
> > wrote:
> > > > And so now you've triggered= the speculative delayed allocation
> > > > beyond EOF, which is normal behaviour. Hence there are = currently
> > > > unused blocks beyond EOF which will get removed either = when the next
> > > > close(fd) occurs on the file or the inode is removed fr= om the cache.
> > > >
> > >
> > > Close(fd) should be invoked before dd quits. But why the ext= ra blocks
> > > beyond EOF are not freed?
> >
> > The removal is conditional on how many times the fd has been clos= ed
> > with dirty data on the inode.
> >
> > > The only way I found to remove the extra blocks is truncate = the file to
> > its
> > > real size.
> >
> > If the close() didn't remove them, they will be removed when = the
> > inode ages out of the cache. Why do you even care about them?
>
> Our distributed system depends on the real length of files to account = the
> space usage.

That's ..... naive. It's never been valid to assume that the = file
size is an accurate reflection of space usage, especially as it will
*always* be wrong for sparse files. In the same light, you also
cannot assume that it is an accurate reflection for non-sparse files
because we can do both explicit and speculative allocation beyond
EOF which only du will show. Not to mention that metadata is not
accounted in the file length, and that can consume a significant
amount of space, too.

> This behavior make the account inaccurate.

The block usage reported by XFS is both accurate and correct. The
file size reported by XFS is both accurate and correct. You're
"account inaccuracy" is assuming that they are the same. Perhaps = you
should be using quotas for accurate space usage accounting?

Anyway, if you really want to stop speculative delayed allocation
beyond EOF, then use the allocsize mount option to control it.


Thanks for help.

I can control the size of pre-all= ocation, so no data are written beyond the pre-allocated block range, so no= speculative allocation is triggered. Besides it, our system can sync the a= ccurate space usage of mount point periodically.=A0

Can you