From bounce@client5.aanyainfotech.com Tue Jul 1 00:48:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.4 required=5.0 tests=HTML_IMAGE_RATIO_02, HTML_MESSAGE,NORMAL_HTTP_TO_IP autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id AA98E7F66 for ; Tue, 1 Jul 2014 00:48:56 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 43EAEAC003 for ; Mon, 30 Jun 2014 22:48:52 -0700 (PDT) X-ASG-Debug-ID: 1404193726-04bdf0566972fc60001-NocioJ Received: from server5.aanyainfotech.com (server5.aanyainfotech.com [65.181.118.124]) by cuda.sgi.com with ESMTP id BCBxAjiI3DHu6GP7 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 30 Jun 2014 22:48:46 -0700 (PDT) X-Barracuda-Envelope-From: bounce@client5.aanyainfotech.com X-Barracuda-Apparent-Source-IP: 65.181.118.124 Received: from client5a by server5.aanyainfotech.com with local (Exim 4.82) (envelope-from ) id 1X1qvt-0004tn-HF for xfs@oss.sgi.com; Tue, 01 Jul 2014 01:48:45 -0400 To: xfs@oss.sgi.com Subject: Best ever Jewellery accessories for you from Amazon !!! Message-ID: <25d9d539df760addb0beca3743d0a7b6@65.181.118.124> X-ASG-Orig-Subj: Best ever Jewellery accessories for you from Amazon !!! Date: Tue, 01 Jul 2014 05:15:05 +0000 From: "Mohini Sharma" Reply-To: noreply@client5.aanyainfotech.com MIME-Version: 1.0 X-Mailer-LID: 9,10 List-Unsubscribe: X-Mailer-SID: 20 X-Mailer-Sent-By: 1 Content-Type: multipart/alternative; charset="UTF-8"; boundary="b1_22d11c7f2468b4c177e9d247728e28bd" Content-Transfer-Encoding: 8bit X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - server5.aanyainfotech.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [501 501] / [47 12] X-AntiAbuse: Sender Address Domain - client5.aanyainfotech.com X-Get-Message-Sender-Via: server5.aanyainfotech.com: authenticated_id: client5a/from_h X-Source: /usr/bin/php X-Source-Args: /usr/bin/php -f /home/client5a/public_html/admin/cron/cron.php X-Source-Dir: client5.aanyainfotech.com:/public_html/admin/cron X-Barracuda-Connect: server5.aanyainfotech.com[65.181.118.124] X-Barracuda-Start-Time: 1404193726 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-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.01 X-Barracuda-Spam-Status: No, SCORE=1.01 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_IMAGE_RATIO_02, HTML_MESSAGE, NORMAL_HTTP_TO_IP, PLING_PLING X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7129 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NORMAL_HTTP_TO_IP URI: Uses a dotted-decimal IP address in URL 0.55 HTML_IMAGE_RATIO_02 BODY: HTML has a low ratio of text to image area 0.00 HTML_MESSAGE BODY: HTML included in message 0.46 PLING_PLING Subject has lots of exclamation marks --b1_22d11c7f2468b4c177e9d247728e28bd Content-Type: text/plain; format=flowed; charset="UTF-8" Content-Transfer-Encoding: 8bit Your email client cannot read this email. To view it online, please go here: http://65.181.118.124/~client5a/display.php?M=1172971&C=99812448861710c68fe65a48f37ca99b&S=20&L=9&N=3 To stop receiving these emails:http://65.181.118.124/~client5a/unsubscribe.php?M=1172971&C=99812448861710c68fe65a48f37ca99b&L=9&N=20 --b1_22d11c7f2468b4c177e9d247728e28bd Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: 8bit
To view it online, please go here: click here


To unsubscribe from list, please go here: click here
--b1_22d11c7f2468b4c177e9d247728e28bd-- From cardaniuc@gmail.com Tue Jul 1 01:44:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,HTML_MESSAGE, T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 46C3E7F6B for ; Tue, 1 Jul 2014 01:44:49 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 36C798F8039 for ; Mon, 30 Jun 2014 23:44:49 -0700 (PDT) X-ASG-Debug-ID: 1404197086-04cb6c76d03bbdd0001-NocioJ Received: from mail-we0-f172.google.com (mail-we0-f172.google.com [74.125.82.172]) by cuda.sgi.com with ESMTP id LUJpkxJWsgdnWJBj (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 30 Jun 2014 23:44:47 -0700 (PDT) X-Barracuda-Envelope-From: cardaniuc@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.172 Received: by mail-we0-f172.google.com with SMTP id u57so9197765wes.31 for ; Mon, 30 Jun 2014 23:44:45 -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:cc:content-type; bh=rBtF8cXEUQP9a4T9dtSsByh2Ao39JYScJWLA1JZQvno=; b=bi/0Xd1vWkoWkviDoYERunheaWj6m216y1gn0ZtbpsgQCstebKrx7287t9Wc6KClCd SeubZLOvsXsqxBXs7krluiX0kCGFfgET3pQg7FGsYvcB0Jz5kaoiyM6hJN8WyZkseISU ZyLrF1yuLPbygyfgKPPZ916lJn4sx965r/08u8zNNdjSNwDhl4iFfkdIm5Lhs2iK3tZQ WQs8P8nvY9KoXC7qOLWw9PH2vWGAjDxngE7Umnw52dPWjPjANWq+xWTDDkxYUNVxDJ2g 6zo9QH8P8lnkQ+5kf8DVN/L63rGskUFPCDh91yQ7g2qZzANp53btbjY5h4EOAERxEDZz KA4w== MIME-Version: 1.0 X-Received: by 10.194.1.164 with SMTP id 4mr49122261wjn.17.1404197085699; Mon, 30 Jun 2014 23:44:45 -0700 (PDT) Received: by 10.194.79.2 with HTTP; Mon, 30 Jun 2014 23:44:45 -0700 (PDT) Date: Mon, 30 Jun 2014 23:44:45 -0700 Message-ID: Subject: corruption of in-memory data detected From: Alexandru Cardaniuc X-ASG-Orig-Subj: corruption of in-memory data detected To: xfs@oss.sgi.com Cc: Alexandru Cardaniuc Content-Type: multipart/alternative; boundary=047d7b3a81767ce45804fd1c1ccd X-Barracuda-Connect: mail-we0-f172.google.com[74.125.82.172] X-Barracuda-Start-Time: 1404197087 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7130 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 --047d7b3a81767ce45804fd1c1ccd Content-Type: text/plain; charset=UTF-8 Hi All, I am having an issue with an XFS filesystem shutting down under high load with very many small files. Basically, I have around 3.5 - 4 million files on this filesystem. New files are being written to the FS all the time, until I get to 9-11 mln small files (35k on average). at some point I get the following in dmesg: [2870477.695512] Filesystem "sda5": XFS internal error xfs_trans_cancel at line 1138 of file fs/xfs/xfs_trans.c. Caller 0xffffffff8826bb7d [2870477.695558] [2870477.695559] Call Trace: [2870477.695611] [] :xfs:xfs_trans_cancel+0x5b/0xfe [2870477.695643] [] :xfs:xfs_mkdir+0x57c/0x5d7 [2870477.695673] [] :xfs:xfs_attr_get+0xbf/0xd2 [2870477.695707] [] :xfs:xfs_vn_mknod+0x1e1/0x3bb [2870477.695726] [] _spin_lock_irqsave+0x9/0x14 [2870477.695736] [] __up_read+0x19/0x7f [2870477.695764] [] :xfs:xfs_iunlock+0x57/0x79 [2870477.695776] [] _spin_lock_irqsave+0x9/0x14 [2870477.695784] [] __up_read+0x19/0x7f [2870477.695791] [] __d_lookup+0xb0/0xff [2870477.695803] [] _atomic_dec_and_lock+0x39/0x57 [2870477.695814] [] mntput_no_expire+0x19/0x89 [2870477.695829] [] _spin_lock_irqsave+0x9/0x14 [2870477.695837] [] __up_read+0x19/0x7f [2870477.695861] [] :xfs:xfs_iunlock+0x57/0x79 [2870477.695887] [] :xfs:xfs_access+0x3d/0x46 [2870477.695899] [] _spin_lock_irqsave+0x9/0x14 [2870477.695923] [] vfs_mkdir+0xe3/0x152 [2870477.695933] [] sys_mkdirat+0xa3/0xe4 [2870477.695953] [] tracesys+0x47/0xb6 [2870477.695963] [] tracesys+0xab/0xb6 [2870477.695977] [2870477.695985] xfs_force_shutdown(sda5,0x8) called from line 1139 of file fs/xfs/xfs_trans.c. Return address = 0xffffffff88262c46 [2870477.696452] Filesystem "sda5": Corruption of in-memory data detected. Shutting down filesystem: sda5 [2870477.696464] Please umount the filesystem, and rectify the problem(s) # ls -l /store ls: /store: Input/output error ?--------- 0 root root 0 Jan 1 1970 /store Filesystems is ~1T in size # df -hT /store Filesystem Type Size Used Avail Use% Mounted on /dev/sda5 xfs 910G 142G 769G 16% /store Using CentOS 5.9 with kernel 2.6.18-348.el5xen The filesystem is in a virtual machine (Xen) and on top of LVM. Filesystem was created using mkfs.xfs defaults with xfsprogs-2.9.4-1.el5.centos (that's the one that comes with CentOS 5.x by default.) These are the defaults with which the filesystem was created: # xfs_info /store meta-data=/dev/sda5 isize=256 agcount=32, agsize=7454720 blks = sectsz=512 attr=0 data = bsize=4096 blocks=238551040, imaxpct=25 = sunit=0 swidth=0 blks, unwritten=1 naming =version 2 bsize=4096 log =internal bsize=4096 blocks=32768, version=1 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=4096 blocks=0, rtextents=0 The problem is reproducible and I don't think it's hardware related. The problem was reproduced on multiple servers of the same type. So, I doubt it's a memory issue or something like that. Is that a known issue? If it is then what's the fix? I went through the kernel updates for CentOS 5.10 (newer kernel), but didn't see any xfs related fixes since CentOS 5.9 Any help will be greatly appreciated... -- Sincerely yours, Alexandru Cardaniuc --047d7b3a81767ce45804fd1c1ccd Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi All,

I am having an is= sue with an XFS filesystem shutting down under high load with very many sma= ll files.
Basically, I have around 3.5 - 4 million files on this f= ilesystem. New files are being written to the FS all the time, until I get = to 9-11 mln small files (35k on average).

at some point I get the following in dmesg:

[2870477.69551= 2] Filesystem "sda5": XFS internal error xfs_trans_cancel at line= 1138 of file fs/xfs/xfs_trans.c.=C2=A0 Caller 0xffffffff8826bb7d
[28704= 77.695558]
[2870477.695559] Call Trace:
[2870477.695611]=C2=A0 [<ffffffff88262c2= 8>] :xfs:xfs_trans_cancel+0x5b/0xfe
[2870477.695643]=C2=A0 [<fffff= fff8826bb7d>] :xfs:xfs_mkdir+0x57c/0x5d7
[2870477.695673]=C2=A0 [<= ffffffff8822f3f8>] :xfs:xfs_attr_get+0xbf/0xd2
[2870477.695707]=C2=A0 [<ffffffff88273326>] :xfs:xfs_vn_mknod+0x1e1/0= x3bb
[2870477.695726]=C2=A0 [<ffffffff80264929>] _spin_lock_irqsav= e+0x9/0x14
[2870477.695736]=C2=A0 [<ffffffff802230e6>] __up_read+0= x19/0x7f
[2870477.695764]=C2=A0 [<ffffffff8824f8f4>] :xfs:xfs_iunlock+0x57/0x7= 9
[2870477.695776]=C2=A0 [<ffffffff80264929>] _spin_lock_irqsave+0= x9/0x14
[2870477.695784]=C2=A0 [<ffffffff802230e6>] __up_read+0x19= /0x7f
[2870477.695791]=C2=A0 [<ffffffff80209f4c>] __d_lookup+0xb0/= 0xff
[2870477.695803]=C2=A0 [<ffffffff8020cd4a>] _atomic_dec_and_lock+0x39= /0x57
[2870477.695814]=C2=A0 [<ffffffff8022d6db>] mntput_no_expire= +0x19/0x89
[2870477.695829]=C2=A0 [<ffffffff80264929>] _spin_lock_= irqsave+0x9/0x14
[2870477.695837]=C2=A0 [<ffffffff802230e6>] __up_read+0x19/0x7f
[2= 870477.695861]=C2=A0 [<ffffffff8824f8f4>] :xfs:xfs_iunlock+0x57/0x79<= br>[2870477.695887]=C2=A0 [<ffffffff882680af>] :xfs:xfs_access+0x3d/0= x46
[2870477.695899]=C2=A0 [<ffffffff80264929>] _spin_lock_irqsave= +0x9/0x14
[2870477.695923]=C2=A0 [<ffffffff802df4a3>] vfs_mkdir+0xe3/0x152
[= 2870477.695933]=C2=A0 [<ffffffff802dfa79>] sys_mkdirat+0xa3/0xe4
[= 2870477.695953]=C2=A0 [<ffffffff80260295>] tracesys+0x47/0xb6
[287= 0477.695963]=C2=A0 [<ffffffff802602f9>] tracesys+0xab/0xb6
[2870477.695977]
[2870477.695985] xfs_force_shutdown(sda5,0x8) called fr= om line 1139 of file fs/xfs/xfs_trans.c.=C2=A0 Return address =3D 0xfffffff= f88262c46
[2870477.696452] Filesystem "sda5": Corruption of in= -memory data detected.=C2=A0 Shutting down filesystem: sda5
[2870477.696464] Please umount the filesystem, and rectify the problem(s)
# ls -l /store
ls: /store: Input/output error
?--------- 0 root= root 0 Jan=C2=A0 1=C2=A0 1970 /store

Filesystems is ~1T = in size
# df -hT /store
Filesystem=C2=A0=C2=A0=C2=A0 Type=C2=A0=C2=A0=C2= =A0 Size=C2=A0 Used Avail Use% Mounted on
/dev/sda5=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 xfs=C2=A0=C2=A0=C2=A0 910G=C2=A0 142G=C2=A0 769G=C2=A0 16% /store=


Using CentOS 5.9 with kernel 2.6.18-34= 8.el5xen

The filesystem is in a virtual machine (Xen) and on top of LVM.<= br>
Filesystem was created using mkfs.xfs defaults with xfspr= ogs-2.9.4-1.el5.centos (that's the one that comes with CentOS 5.x by de= fault.)

These are the defaults with which the filesystem was created= :
# xfs_info /store
meta-data=3D/dev/sda5=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 isize=3D256=C2=A0=C2=A0= =C2=A0 agcount=3D32, agsize=3D7454720 blks
=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 =3D=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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 sectsz=3D512=C2=A0=C2=A0 attr=3D0
data=C2=A0=C2=A0=C2=A0=C2=A0 =3D=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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 bsize=3D4096=C2=A0=C2=A0 blocks=3D238551040, imaxpct=3D25=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D=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=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sunit=3D0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 swidth=3D0 blks, unwritten=3D1
naming=C2=A0=C2=A0 =3Dversion 2=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 bs= ize=3D4096
log=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3Dinternal=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=C2=A0 bsize= =3D4096=C2=A0=C2=A0 blocks=3D32768, version=3D1
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D=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=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sectsz=3D512=C2=A0=C2=A0 sunit=3D0 blk= s, lazy-count=3D0
realtime =3Dnone=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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ex= tsz=3D4096=C2=A0=C2=A0 blocks=3D0, rtextents=3D0


The problem is reproducible and I don't = think it's hardware related. The problem was reproduced on multiple ser= vers of the same type. So, I doubt it's a memory issue or something lik= e that.


Is that a known issue? If it is then what's the fix?= I went through the kernel updates for CentOS 5.10 (newer kernel), but didn= 't see any xfs related fixes since CentOS 5.9

Any help will be greatly appreciated...

--
Since= rely yours,
Alexandru Cardaniuc
--047d7b3a81767ce45804fd1c1ccd-- From david@fromorbit.com Tue Jul 1 02:03:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 53D597F74 for ; Tue, 1 Jul 2014 02:03:10 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 304CE30405F for ; Tue, 1 Jul 2014 00:03:07 -0700 (PDT) X-ASG-Debug-ID: 1404198184-04bdf05669731ba0001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id nYQdmmZPGrGhrjbg for ; Tue, 01 Jul 2014 00:03:04 -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: Ah4HAMhcslN5LHZ8/2dsb2JhbABagw2DSakJAQEBAQEBBpo6AYEIF3WEAwEBBAEeHBwjBQsIAxgJJQ8FJQMhE4g6B8d0FxeFTYkjB4RDBZpglACDVCs Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail07.adl2.internode.on.net with ESMTP; 01 Jul 2014 16:32:44 +0930 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1X1s5H-0006FJ-0q; Tue, 01 Jul 2014 17:02:31 +1000 Date: Tue, 1 Jul 2014 17:02:30 +1000 From: Dave Chinner To: Alexandru Cardaniuc Cc: xfs@oss.sgi.com Subject: Re: corruption of in-memory data detected Message-ID: <20140701070230.GG4453@dastard> X-ASG-Orig-Subj: Re: corruption of in-memory data detected 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: 1404198184 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7131 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Jun 30, 2014 at 11:44:45PM -0700, Alexandru Cardaniuc wrote: > Hi All, > > I am having an issue with an XFS filesystem shutting down under high load > with very many small files. > Basically, I have around 3.5 - 4 million files on this filesystem. New > files are being written to the FS all the time, until I get to 9-11 mln > small files (35k on average). > > at some point I get the following in dmesg: > > [2870477.695512] Filesystem "sda5": XFS internal error xfs_trans_cancel at > line 1138 of file fs/xfs/xfs_trans.c. Caller 0xffffffff8826bb7d > [2870477.695558] > [2870477.695559] Call Trace: > [2870477.695611] [] :xfs:xfs_trans_cancel+0x5b/0xfe > [2870477.695643] [] :xfs:xfs_mkdir+0x57c/0x5d7 > [2870477.695673] [] :xfs:xfs_attr_get+0xbf/0xd2 > [2870477.695707] [] :xfs:xfs_vn_mknod+0x1e1/0x3bb > [2870477.695726] [] _spin_lock_irqsave+0x9/0x14 > [2870477.695736] [] __up_read+0x19/0x7f > [2870477.695764] [] :xfs:xfs_iunlock+0x57/0x79 > [2870477.695776] [] _spin_lock_irqsave+0x9/0x14 > [2870477.695784] [] __up_read+0x19/0x7f > [2870477.695791] [] __d_lookup+0xb0/0xff > [2870477.695803] [] _atomic_dec_and_lock+0x39/0x57 > [2870477.695814] [] mntput_no_expire+0x19/0x89 > [2870477.695829] [] _spin_lock_irqsave+0x9/0x14 > [2870477.695837] [] __up_read+0x19/0x7f > [2870477.695861] [] :xfs:xfs_iunlock+0x57/0x79 > [2870477.695887] [] :xfs:xfs_access+0x3d/0x46 > [2870477.695899] [] _spin_lock_irqsave+0x9/0x14 > [2870477.695923] [] vfs_mkdir+0xe3/0x152 > [2870477.695933] [] sys_mkdirat+0xa3/0xe4 > [2870477.695953] [] tracesys+0x47/0xb6 > [2870477.695963] [] tracesys+0xab/0xb6 > [2870477.695977] > [2870477.695985] xfs_force_shutdown(sda5,0x8) called from line 1139 of file > fs/xfs/xfs_trans.c. Return address = 0xffffffff88262c46 > [2870477.696452] Filesystem "sda5": Corruption of in-memory data detected. > Shutting down filesystem: sda5 > [2870477.696464] Please umount the filesystem, and rectify the problem(s) You've probably fragmented free space to the point where inodes cannot be allocated anymore, and then it's shutdown because it got enospc with a dirty inode allocation transaction. xfs_db -c "freespc -s" should tell us whether this is the case or not. > Using CentOS 5.9 with kernel 2.6.18-348.el5xen The "enospc with dirty transaction" shutdown bugs have been fixed in more recent kernels than RHEL5. > The problem is reproducible and I don't think it's hardware related. The > problem was reproduced on multiple servers of the same type. So, I doubt > it's a memory issue or something like that. Nope, it's not hardware, it's buggy software that has been fixed in the years since 2.6.18.... > Is that a known issue? Yes. > If it is then what's the fix? If you've fragmented free space, then your ony options are: - dump/mkfs/restore - remove a large number of files from the filesystem so free space defragments. If you simply want to avoid the shutdown, then upgrade to a more recent kernel (3.x of some kind) where all the known issues have been fixed. > I went through the > kernel updates for CentOS 5.10 (newer kernel), but didn't see any xfs > related fixes since CentOS 5.9 That's something you need to talk to your distro maintainers about.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From cardaniuc@gmail.com Tue Jul 1 03:29:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id A8AA57F74 for ; Tue, 1 Jul 2014 03:29:41 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id A365B30406A for ; Tue, 1 Jul 2014 01:29:41 -0700 (PDT) X-ASG-Debug-ID: 1404203377-04cb6c76d23be710001-NocioJ Received: from mail-ig0-f178.google.com (mail-ig0-f178.google.com [209.85.213.178]) by cuda.sgi.com with ESMTP id ZDoa37e2mUoHqCuL (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 01 Jul 2014 01:29:37 -0700 (PDT) X-Barracuda-Envelope-From: cardaniuc@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.213.178 X-Barracuda-IPDD: Level1 [gmail.com/209.85.213.178] Received: by mail-ig0-f178.google.com with SMTP id hn18so5187137igb.5 for ; Tue, 01 Jul 2014 01:29:37 -0700 (PDT) X-Barracuda-IPDD: Level1 [gmail.com/209.85.213.178] X-Barracuda-IPDD: Level1 [gmail.com/209.85.213.178] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=+cBtw+nWG+9UeJ0Uv+zRB9DEB3ohaH/WlYzQF/vgpYM=; b=f6CL5V/O3znqBytfFPOtg0ys81dtFHj3XBhS4pJWrDflF9FD94kz/jbHKV6b4NffBl GfVYR8EvPLXL8rfS9vejMu51EuSp5uO9aHQVzxXCPO13Qaa6PW9XfVXSiqlxWF3pN2CN HpSLyjK+JLt1vsDoWEHjKCzHI9UVzij/qmlxefkQlfi4mwJAd0kblUOTqRMJzNlexQ4U KTHlMP+0wmXC0Hsd85wrNrlCQwM59Rve8NhPE9Ov6EizyreNO/mz51USWdckf2cGnb+v TyLz9VIM9jSKRrsRz5Ot6yvG10Rtqus9aT2Cmh0TRcv3S9ckfB8zgVETuQe5pjOYEeEZ BFXQ== X-Received: by 10.42.39.199 with SMTP id i7mr8491966ice.23.1404203377042; Tue, 01 Jul 2014 01:29:37 -0700 (PDT) Received: from sonata (adsl-76-254-71-112.dsl.pltn13.sbcglobal.net. [76.254.71.112]) by mx.google.com with ESMTPSA id n10sm32312662igv.21.2014.07.01.01.29.35 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Tue, 01 Jul 2014 01:29:36 -0700 (PDT) From: Alexandru Cardaniuc To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: corruption of in-memory data detected References: <20140701070230.GG4453@dastard> X-ASG-Orig-Subj: Re: corruption of in-memory data detected Date: Tue, 01 Jul 2014 01:29:35 -0700 In-Reply-To: <20140701070230.GG4453@dastard> (Dave Chinner's message of "Tue, 1 Jul 2014 17:02:30 +1000") Message-ID: <87vbrh1nyo.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: mail-ig0-f178.google.com[209.85.213.178] X-Barracuda-Start-Time: 1404203377 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7133 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 Dave Chinner writes: > On Mon, Jun 30, 2014 at 11:44:45PM -0700, Alexandru Cardaniuc wrote: >> Hi All, >> I am having an issue with an XFS filesystem shutting down under high >> load with very many small files. Basically, I have around 3.5 - 4 >> million files on this filesystem. New files are being written to the >> FS all the time, until I get to 9-11 mln small files (35k on >> average). >> >> at some point I get the following in dmesg: >> >> [2870477.695512] Filesystem "sda5": XFS internal error >> xfs_trans_cancel at line 1138 of file fs/xfs/xfs_trans.c. Caller >> 0xffffffff8826bb7d [2870477.695558] [2870477.695559] Call Trace: >> [2870477.695611] [] >> :xfs:xfs_trans_cancel+0x5b/0xfe [2870477.695643] >> [] :xfs:xfs_mkdir+0x57c/0x5d7 [2870477.695673] >> [] :xfs:xfs_attr_get+0xbf/0xd2 [2870477.695707] >> [] :xfs:xfs_vn_mknod+0x1e1/0x3bb [2870477.695726] >> [] _spin_lock_irqsave+0x9/0x14 [2870477.695736] >> [] __up_read+0x19/0x7f [2870477.695764] >> [] :xfs:xfs_iunlock+0x57/0x79 [2870477.695776] >> [] _spin_lock_irqsave+0x9/0x14 [2870477.695784] >> [] __up_read+0x19/0x7f [2870477.695791] >> [] __d_lookup+0xb0/0xff [2870477.695803] >> [] _atomic_dec_and_lock+0x39/0x57 [2870477.695814] >> [] mntput_no_expire+0x19/0x89 [2870477.695829] >> [] _spin_lock_irqsave+0x9/0x14 [2870477.695837] >> [] __up_read+0x19/0x7f [2870477.695861] >> [] :xfs:xfs_iunlock+0x57/0x79 [2870477.695887] >> [] :xfs:xfs_access+0x3d/0x46 [2870477.695899] >> [] _spin_lock_irqsave+0x9/0x14 [2870477.695923] >> [] vfs_mkdir+0xe3/0x152 [2870477.695933] >> [] sys_mkdirat+0xa3/0xe4 [2870477.695953] >> [] tracesys+0x47/0xb6 [2870477.695963] >> [] tracesys+0xab/0xb6 [2870477.695977] >> [2870477.695985] xfs_force_shutdown(sda5,0x8) called from line 1139 >> of file fs/xfs/xfs_trans.c. Return address = 0xffffffff88262c46 >> [2870477.696452] Filesystem "sda5": Corruption of in-memory data >> detected. Shutting down filesystem: sda5 [2870477.696464] Please >> umount the filesystem, and rectify the problem(s) > > You've probably fragmented free space to the point where inodes cannot > be allocated anymore, and then it's shutdown because it got enospc > with a dirty inode allocation transaction. > xfs_db -c "freespc -s" > should tell us whether this is the case or not. This is what I have # xfs_db -c "freesp -s" /dev/sda5 from to extents blocks pct 1 1 657 657 0.00 2 3 264 607 0.00 4 7 29 124 0.00 8 15 13 143 0.00 16 31 41 752 0.00 32 63 8 293 0.00 64 127 12 1032 0.00 128 255 8 1565 0.00 256 511 10 4044 0.00 512 1023 7 5750 0.00 1024 2047 10 16061 0.01 2048 4095 5 16948 0.01 4096 8191 7 43312 0.02 8192 16383 9 115578 0.06 16384 32767 6 159576 0.08 32768 65535 3 104586 0.05 262144 524287 1 507710 0.25 4194304 7454720 28 200755934 99.51 total free extents 1118 total free blocks 201734672 average free extent size 180442 >> Using CentOS 5.9 with kernel 2.6.18-348.el5xen > > The "enospc with dirty transaction" shutdown bugs have been fixed in > more recent kernels than RHEL5. These fixes were not backported to RHEL5 kernels? >> The problem is reproducible and I don't think it's hardware related. >> The problem was reproduced on multiple servers of the same type. So, >> I doubt it's a memory issue or something like that. > Nope, it's not hardware, it's buggy software that has been fixed in > the years since 2.6.18.... I would hope these fixes would be backported to RHEL5 (CentOS 5) kernels... >> Is that a known issue? > Yes. Well at least that's a good thing :) >> If it is then what's the fix? > If you've fragmented free space, then your ony options are: > - dump/mkfs/restore - remove a large number of files from the > filesystem so free space defragments. That wouldn't be fixed automagically using xfs_repair, wouldn't it? > If you simply want to avoid the shutdown, then upgrade to a more > recent kernel (3.x of some kind) where all the known issues have been > fixed. How about 2.6.32? That's the kernel that comes with RHEL 6.x >> I went through the kernel updates for CentOS 5.10 (newer kernel), >> but didn't see any xfs related fixes since CentOS 5.9 > That's something you need to talk to your distro maintainers about.... I was worried you gonna say that :) What are my options at this point? Am I correct to assume that the issue is related to the load and if I manage to decrease the load, the issue is not going to reproduce itself? We have been using XFS on RHEL 5 kernels for years and didn't see this issue. Now, the issue happens consistently, but seems to be related to high load... We have hundreds of these servers deployed in production right now, so some way to address the current situation would be very welcomed. thanks for help :) > Cheers, > Dave. -- "Every problem that I solved became a rule which served afterwards to solve other problems." - Descartes From david@fromorbit.com Tue Jul 1 04:38:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 926957F7C for ; Tue, 1 Jul 2014 04:38:41 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 6EF2E30405F for ; Tue, 1 Jul 2014 02:38:41 -0700 (PDT) X-ASG-Debug-ID: 1404207518-04cb6c76d03c00d0001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id Fa5Gf1a6S5qZEbKa for ; Tue, 01 Jul 2014 02:38:39 -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: Ah4HAEuBslN5LHZ8/2dsb2JhbABXA4MNg0mpBgEBAQEBAQaaOgGBCBd1hAMBAQQBOhwjBQsIAxgJJQ8FJQMhE4g6B8d/FxeFTYkTEAcRhDIFmmCUAINUKw Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail07.adl2.internode.on.net with ESMTP; 01 Jul 2014 19:08:16 +0930 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1X1uVn-0006bp-3u; Tue, 01 Jul 2014 19:38:03 +1000 Date: Tue, 1 Jul 2014 19:38:03 +1000 From: Dave Chinner To: Alexandru Cardaniuc Cc: xfs@oss.sgi.com Subject: Re: corruption of in-memory data detected Message-ID: <20140701093803.GH4453@dastard> X-ASG-Orig-Subj: Re: corruption of in-memory data detected References: <20140701070230.GG4453@dastard> <87vbrh1nyo.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87vbrh1nyo.fsf@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: 1404207518 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7134 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Jul 01, 2014 at 01:29:35AM -0700, Alexandru Cardaniuc wrote: > Dave Chinner writes: > > > On Mon, Jun 30, 2014 at 11:44:45PM -0700, Alexandru Cardaniuc wrote: > >> Hi All, > > >> I am having an issue with an XFS filesystem shutting down under high > >> load with very many small files. Basically, I have around 3.5 - 4 > >> million files on this filesystem. New files are being written to the > >> FS all the time, until I get to 9-11 mln small files (35k on > >> average). .... > > You've probably fragmented free space to the point where inodes cannot > > be allocated anymore, and then it's shutdown because it got enospc > > with a dirty inode allocation transaction. > > > xfs_db -c "freespc -s" > > > should tell us whether this is the case or not. > > This is what I have > > # xfs_db -c "freesp -s" /dev/sda5 > from to extents blocks pct > 1 1 657 657 0.00 > 2 3 264 607 0.00 > 4 7 29 124 0.00 > 8 15 13 143 0.00 > 16 31 41 752 0.00 > 32 63 8 293 0.00 > 64 127 12 1032 0.00 > 128 255 8 1565 0.00 > 256 511 10 4044 0.00 > 512 1023 7 5750 0.00 > 1024 2047 10 16061 0.01 > 2048 4095 5 16948 0.01 > 4096 8191 7 43312 0.02 > 8192 16383 9 115578 0.06 > 16384 32767 6 159576 0.08 > 32768 65535 3 104586 0.05 > 262144 524287 1 507710 0.25 > 4194304 7454720 28 200755934 99.51 > total free extents 1118 > total free blocks 201734672 > average free extent size 180442 So it's not freespace fragmentation, but that was just the most likely cause. Most likely it's a transient condition where an AG is out of space but in determining that condition the AGF was modified. We've fixed several bugs in that area over the past few years.... > >> Using CentOS 5.9 with kernel 2.6.18-348.el5xen > > > > The "enospc with dirty transaction" shutdown bugs have been fixed in > > more recent kernels than RHEL5. > > These fixes were not backported to RHEL5 kernels? No. > >> The problem is reproducible and I don't think it's hardware related. > >> The problem was reproduced on multiple servers of the same type. So, > >> I doubt it's a memory issue or something like that. > > > Nope, it's not hardware, it's buggy software that has been fixed in > > the years since 2.6.18.... > > I would hope these fixes would be backported to RHEL5 (CentOS 5) kernels... TANSTAAFL. > > If you've fragmented free space, then your ony options are: > > > - dump/mkfs/restore - remove a large number of files from the > > filesystem so free space defragments. > > That wouldn't be fixed automagically using xfs_repair, wouldn't it? No. > > If you simply want to avoid the shutdown, then upgrade to a more > > recent kernel (3.x of some kind) where all the known issues have been > > fixed. > > How about 2.6.32? That's the kernel that comes with RHEL 6.x It might, but I don't know the exact root cause of your problem so I couldn't say for sure. > >> I went through the kernel updates for CentOS 5.10 (newer kernel), > >> but didn't see any xfs related fixes since CentOS 5.9 > > > That's something you need to talk to your distro maintainers about.... > > I was worried you gonna say that :) Theres only so much that upstream can do to support heavily patched, 6 year old distro kernels. > What are my options at this point? Am I correct to assume that the issue > is related to the load and if I manage to decrease the load, the issue > is not going to reproduce itself? It's more likely related to the layout of data and metadata on disk. > We have been using XFS on RHEL 5 > kernels for years and didn't see this issue. Now, the issue happens > consistently, but seems to be related to high load... There are several different potential causes - high load just iterates the problem space faster. > We have hundreds of these servers deployed in production right now, so > some way to address the current situation would be very welcomed. I'd suggest talking to Red Hat about what they can do to help you, especially as CentOS is a now RH distro.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From dave@fromorbit.com Tue Jul 1 07:55:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E7DA87F88 for ; Tue, 1 Jul 2014 07:55:05 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id DE15C8F8052 for ; Tue, 1 Jul 2014 05:55:05 -0700 (PDT) X-ASG-Debug-ID: 1404219302-04cbb065361fb4d0002-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id l1qweukYD8V5DYWC for ; Tue, 01 Jul 2014 05:55:04 -0700 (PDT) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApJPAIWuslN5LHZ8PGdsb2JhbABagw2sXQEBAQEBBptPFwQBAQEBODWEAwEBBScvIxAIGDE5AwcUGYhByEaFb4lNhC0Fsjwr Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail06.adl2.internode.on.net with ESMTP; 01 Jul 2014 22:25:01 +0930 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1X1xaN-00071i-AF; Tue, 01 Jul 2014 22:54:59 +1000 Received: from dave by disappointment with local (Exim 4.82_1-5b7a7c0-XX) (envelope-from ) id 1X1xaN-0007dm-9D; Tue, 01 Jul 2014 22:54:59 +1000 From: Dave Chinner To: xfs@oss.sgi.com Cc: arekm@maven.pl Subject: [PATCH 1/4] repair: handle directory block corruption in phase 6 Date: Tue, 1 Jul 2014 22:54:53 +1000 X-ASG-Orig-Subj: [PATCH 1/4] repair: handle directory block corruption in phase 6 Message-Id: <1404219296-29302-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 2.0.0 In-Reply-To: <1404219296-29302-1-git-send-email-david@fromorbit.com> References: <1404219296-29302-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1404219303 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7139 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner This should only occur in no-modify mode, but when we fail to find the last extent in a directory btree due to corruption we need to trash the directory if it's the first data block we find the error on. That is because there is nothing to recover from the directory, and if we try to scan it xfs_reapir segv's because nothing has been read from disk. Also catch a memory allocation failure in this code, too. Signed-off-by: Dave Chinner --- repair/phase6.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/repair/phase6.c b/repair/phase6.c index 9b10f16..47ecad4 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -2179,7 +2179,7 @@ longform_dir2_entry_check(xfs_mount_t *mp, freetab = malloc(FREETAB_SIZE(ip->i_d.di_size / mp->m_dirblksize)); if (!freetab) { do_error( - _("malloc failed in longform_dir2_entry_check (%" PRId64 " bytes)\n"), +_("malloc failed in longform_dir2_entry_check (%" PRId64 " bytes)\n"), FREETAB_SIZE(ip->i_d.di_size / mp->m_dirblksize)); exit(1); } @@ -2191,6 +2191,11 @@ longform_dir2_entry_check(xfs_mount_t *mp, } num_bps = freetab->naents; bplist = calloc(num_bps, sizeof(struct xfs_buf*)); + if (!bplist) + do_error( +_("calloc failed in longform_dir2_entry_check (%zu bytes)\n"), + num_bps * sizeof(struct xfs_buf*)); + /* is this a block, leaf, or node directory? */ libxfs_dir2_isblock(NULL, ip, &isblock); libxfs_dir2_isleaf(NULL, ip, &isleaf); @@ -2203,8 +2208,18 @@ longform_dir2_entry_check(xfs_mount_t *mp, int error; next_da_bno = da_bno + mp->m_dirblkfsbs - 1; - if (bmap_next_offset(NULL, ip, &next_da_bno, XFS_DATA_FORK)) + if (bmap_next_offset(NULL, ip, &next_da_bno, XFS_DATA_FORK)) { + /* + * if this is the first block, there isn't anything we + * can recover so we just trash it. + */ + if (da_bno == 0) { + fixit++; + goto out_fix; + } break; + } + db = xfs_dir2_da_to_db(mp, da_bno); if (db >= num_bps) { /* more data blocks than expected */ -- 2.0.0 From dave@fromorbit.com Tue Jul 1 07:55:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id EE9D87F88 for ; Tue, 1 Jul 2014 07:55:07 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id EDC7D304064 for ; Tue, 1 Jul 2014 05:55:04 -0700 (PDT) X-ASG-Debug-ID: 1404219302-04cbb065361fb4d0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id AhNcBhj2OQFGMAA1 for ; Tue, 01 Jul 2014 05:55:03 -0700 (PDT) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApJPAIWuslN5LHZ8PGdsb2JhbABagw2sXQEBAQEBBpcshCMXBAEBAQE4NYRgIxiBAgMHiG7IRoVviU2ELQWyPCs Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail06.adl2.internode.on.net with ESMTP; 01 Jul 2014 22:25:01 +0930 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1X1xaN-00071h-AF; Tue, 01 Jul 2014 22:54:59 +1000 Received: from dave by disappointment with local (Exim 4.82_1-5b7a7c0-XX) (envelope-from ) id 1X1xaN-0007dj-8e; Tue, 01 Jul 2014 22:54:59 +1000 From: Dave Chinner To: xfs@oss.sgi.com Cc: arekm@maven.pl Subject: [PATCH 0/4] repair: fixes for 3.2 Date: Tue, 1 Jul 2014 22:54:52 +1000 X-ASG-Orig-Subj: [PATCH 0/4] repair: fixes for 3.2 Message-Id: <1404219296-29302-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 2.0.0 X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1404219302 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7139 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi Arkadiusz, These are the fixes I have so far from working through the metadumps you supplied me with. The unobfuscated metadump repairs cleanly with these patches, but the obfuscated one still has a directory rebuild issue that I haven't got to the bottom of yet. That results in an error in phase 6 like: Metadata corruption detected at block 0x2af84770/0x1000 name create failed in ino 2306912354 (117), filesystem may be out of space It appears that a read verifier is on a recently created directory leaf block and that is failing. I'm not yet sure why the leaf block is corrupt, nor why the verifier is even being run on it seeing as it was only allocated and initialised during the directory rebuild. That directory rebuil dfailure is the reason for all the disconected inode that end up in lost+found, and I think it's the only remaining issue that I need to solve. Can you test the patches on you machine and see if you get the same results? Cheers, Dave. From dave@fromorbit.com Tue Jul 1 07:55:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id AD6FC7F90 for ; Tue, 1 Jul 2014 07:55:08 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 87E13304067 for ; Tue, 1 Jul 2014 05:55:08 -0700 (PDT) X-ASG-Debug-ID: 1404219302-04cbb065361fb4d0003-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id U7GCoXT625VLCx7l for ; Tue, 01 Jul 2014 05:55:05 -0700 (PDT) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApJPAIWuslN5LHZ8PGdsb2JhbABagw2sXQEBAQEBBptPFwQBAQEBODWEAwEBBScvIxAIGDE5AwcUGYhByEaFb416BbI8Kw Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail06.adl2.internode.on.net with ESMTP; 01 Jul 2014 22:25:01 +0930 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1X1xaN-00071l-Bp; Tue, 01 Jul 2014 22:54:59 +1000 Received: from dave by disappointment with local (Exim 4.82_1-5b7a7c0-XX) (envelope-from ) id 1X1xaN-0007e1-Ax; Tue, 01 Jul 2014 22:54:59 +1000 From: Dave Chinner To: xfs@oss.sgi.com Cc: arekm@maven.pl Subject: [PATCH 4/4] repair: get rid of BADFSINO Date: Tue, 1 Jul 2014 22:54:56 +1000 X-ASG-Orig-Subj: [PATCH 4/4] repair: get rid of BADFSINO Message-Id: <1404219296-29302-5-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 2.0.0 In-Reply-To: <1404219296-29302-1-git-send-email-david@fromorbit.com> References: <1404219296-29302-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1404219305 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7139 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner When we find a bad dirent, we "clear" the inode the inode number by writing BADFSINO to the inode number in the entry: #define BADFSINO ((xfs_ino_t)0xfeffffffffffffffULL) We then capture this bad inode number later in the same function either in the same pass or in a later phase and junk the entry. When we junk the entry, we write a "/" over the first character of the dirent name, which is then detected up later by the directory rebuild and ignored. The issue with this is that the directory buffer can be written to disk between the dirent being marked with BADFSINO and the directory rebuild processing in phase 6, resulting in the directory block verifier firing this error: Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT Metadata corruption detected at block 0x11fbb698/0x1000 libxfs_writebufr: write verifer failed on bno 0x11fbb698/0x1000 And so will not write the *corrupt block* to disk. The result is that we don't repair a corruption in the directory block correctly and subsequent repair runs continue to find problems with the directory. We really don't need both BADFSINO *and* overwriting the dirent name with "/" to mark an entry as junked. They both mean exactly the same thing, so get rid of BADFSINO and only use the name junking to mark dirents as bad. This prevents the directory data block verifier from triggering on bad inode numbers, and so the later reread of the block will find the junked entries correctly. Signed-off-by: Dave Chinner --- repair/dir2.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/repair/dir2.c b/repair/dir2.c index 14c1435..ef0d377 100644 --- a/repair/dir2.c +++ b/repair/dir2.c @@ -28,13 +28,6 @@ #include "progress.h" /* - * Tag bad directory entries with this. - * We can't tag them with -1 since that will look like a - * data_unused_t instead of a data_entry_t. - */ -#define BADFSINO ((xfs_ino_t)0xfeffffffffffffffULL) - -/* * Known bad inode list. These are seen when the leaf and node * block linkages are incorrect. */ @@ -1314,7 +1307,7 @@ process_dir2_data( * Conditions must either set clearino to zero or set * clearreason why it's being cleared. */ - if (!ino_discovery && ent_ino == BADFSINO) { + if (!ino_discovery && dep->name[0] == '/') { /* * Don't do a damned thing. We already found this * (or did it ourselves) during phase 3. @@ -1401,8 +1394,7 @@ _("entry at block %u offset %" PRIdPTR " in directory inode %" PRIu64 do_warn( _("\tclearing inode number in entry at offset %" PRIdPTR "...\n"), (intptr_t)ptr - (intptr_t)d); - dep->inumber = cpu_to_be64(BADFSINO); - ent_ino = BADFSINO; + dep->name[0] = '/'; *dirty = 1; } else { do_warn( @@ -1415,7 +1407,7 @@ _("\twould clear inode number in entry at offset %" PRIdPTR "...\n"), * discovery is turned on). Otherwise, we'd complain a lot * during phase 4. */ - junkit = ent_ino == BADFSINO; + junkit = dep->name[0] == '/'; nm_illegal = namecheck((char *)dep->name, dep->namelen); if (ino_discovery && nm_illegal) { do_warn( @@ -1427,11 +1419,11 @@ _("entry at block %u offset %" PRIdPTR " in directory inode %" PRIu64 " has ille /* * Now we can mark entries with BADFSINO's bad. */ - if (!no_modify && ent_ino == BADFSINO) { - dep->name[0] = '/'; + if (!no_modify && dep->name[0] == '/') { *dirty = 1; junkit = 0; } + /* * Special .. entry processing. */ -- 2.0.0 From dave@fromorbit.com Tue Jul 1 07:55:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id AE8C47F91 for ; Tue, 1 Jul 2014 07:55:08 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 8E8AF8F8052 for ; Tue, 1 Jul 2014 05:55:08 -0700 (PDT) X-ASG-Debug-ID: 1404219305-04cbb065351fb4d0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id QWiQ0bMMBSQJsBVB for ; Tue, 01 Jul 2014 05:55:06 -0700 (PDT) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ap1PAIWuslN5LHZ8PGdsb2JhbABagw2sXQEBAQEBBppFgQoXBAEBAQE4NYQDAQEFJy8jEAgYMTkDBxQZiEHIRoVviGNChFUFsjwrgTI Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail06.adl2.internode.on.net with ESMTP; 01 Jul 2014 22:25:01 +0930 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1X1xaN-00071k-BG; Tue, 01 Jul 2014 22:54:59 +1000 Received: from dave by disappointment with local (Exim 4.82_1-5b7a7c0-XX) (envelope-from ) id 1X1xaN-0007dw-AJ; Tue, 01 Jul 2014 22:54:59 +1000 From: Dave Chinner To: xfs@oss.sgi.com Cc: arekm@maven.pl Subject: [PATCH 3/4] repair: fix quota inode handling in secondary superblocks Date: Tue, 1 Jul 2014 22:54:55 +1000 X-ASG-Orig-Subj: [PATCH 3/4] repair: fix quota inode handling in secondary superblocks Message-Id: <1404219296-29302-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 2.0.0 In-Reply-To: <1404219296-29302-1-git-send-email-david@fromorbit.com> References: <1404219296-29302-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1404219305 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7139 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner Changes to support separate project quota inodes changed the way quota inodes got written to the superblock. The current code is tailored for the needs to the kernel, where the inodes should only be written if certain falgs are set saying a quota type is enabled. Unfortunately, when recovering a corrupt secondary superblock, we need to unconditionally write the quota inode fields after we unconditionally zero the quota flags field. The result of this bug is that the bad quota inode fields cannot be cleared and hence always are reported by bad by repair in subsequent runs. Fix this by directly clearing the quota inodes in the superblock buffers so that we do need to set special flags to get xfs_sb_to_disk() to do the right thing as setting flags leave bad flag values in the superblock instead of bad inode numbers.... Also, when clearing the inode numbers, write them as NULLFSINO rather than 0 as this is what the kernel will write them as if quota is turned off. Signed-off-by: Dave Chinner --- include/libxfs.h | 1 + libxfs/rdwr.c | 4 ++-- repair/agheader.c | 52 ++++++++++++++++++++++++++++++++++------------------ repair/sb.c | 2 ++ repair/scan.c | 1 + repair/xfs_repair.c | 1 + 6 files changed, 41 insertions(+), 20 deletions(-) diff --git a/include/libxfs.h b/include/libxfs.h index 7203d79..45a924f 100644 --- a/include/libxfs.h +++ b/include/libxfs.h @@ -759,6 +759,7 @@ bool xfs_dinode_verify(struct xfs_mount *mp, xfs_ino_t ino, /* xfs_sb.h */ #define libxfs_mod_sb xfs_mod_sb #define libxfs_sb_from_disk xfs_sb_from_disk +#define libxfs_sb_quota_from_disk xfs_sb_quota_from_disk #define libxfs_sb_to_disk xfs_sb_to_disk /* xfs_symlink.h */ diff --git a/libxfs/rdwr.c b/libxfs/rdwr.c index 28f8f36..88f84ac 100644 --- a/libxfs/rdwr.c +++ b/libxfs/rdwr.c @@ -907,10 +907,10 @@ libxfs_writebufr(xfs_buf_t *bp) } #ifdef IO_DEBUG - printf("%lx: %s: wrote %u bytes, blkno=%llu(%llu), %p\n", + printf("%lx: %s: wrote %u bytes, blkno=%llu(%llu), %p, error %d\n", pthread_self(), __FUNCTION__, bp->b_bcount, (long long)LIBXFS_BBTOOFF64(bp->b_bn), - (long long)bp->b_bn, bp); + (long long)bp->b_bn, bp, error); #endif if (!error) { bp->b_flags |= LIBXFS_B_UPTODATE; diff --git a/repair/agheader.c b/repair/agheader.c index fc5dac9..2b84aab 100644 --- a/repair/agheader.c +++ b/repair/agheader.c @@ -245,13 +245,17 @@ compare_sb(xfs_mount_t *mp, xfs_sb_t *sb) * superblocks, not just the secondary superblocks. */ static int -secondary_sb_wack(xfs_mount_t *mp, xfs_buf_t *sbuf, xfs_sb_t *sb, - xfs_agnumber_t i) +secondary_sb_wack( + struct xfs_mount *mp, + struct xfs_buf *sbuf, + struct xfs_sb *sb, + xfs_agnumber_t i) { - int do_bzero; - int size; - char *ip; - int rval; + struct xfs_dsb *dsb = XFS_BUF_TO_SBP(sbuf); + int do_bzero = 0; + int size; + char *ip; + int rval = 0;; rval = do_bzero = 0; @@ -334,14 +338,22 @@ secondary_sb_wack(xfs_mount_t *mp, xfs_buf_t *sbuf, xfs_sb_t *sb, } /* - * quota inodes and flags in secondary superblocks - * are never set by mkfs. However, they could be set - * in a secondary if a fs with quotas was growfs'ed since - * growfs copies the new primary into the secondaries. + * quota inodes and flags in secondary superblocks are never set by + * mkfs. However, they could be set in a secondary if a fs with quotas + * was growfs'ed since growfs copies the new primary into the + * secondaries. Also, the kernel now writes the quota inodes when unused + * as NULLFSINO rather than zero, so rewrite the inodes if they are not + * NULLFSINO and inprogress is set. + * + * Finally, the in-core inode flags now have different meaning to the + * on-disk flags, and so libxfs_sb_to_disk cannot directly write the + * sb_gquotino/sb_pquotino fields without specific sb_qflags being set. + * Hence we need to zero it directly in the sb buffer here. */ - if (sb->sb_inprogress == 1 && sb->sb_uquotino) { + + if (sb->sb_inprogress == 1 && sb->sb_uquotino != NULLFSINO) { if (!no_modify) - sb->sb_uquotino = 0; + sb->sb_uquotino = NULLFSINO; if (sb->sb_versionnum & XR_PART_SECSB_VNMASK || !do_bzero) { rval |= XR_AG_SB; do_warn( @@ -352,9 +364,11 @@ secondary_sb_wack(xfs_mount_t *mp, xfs_buf_t *sbuf, xfs_sb_t *sb, rval |= XR_AG_SB_SEC; } - if (sb->sb_inprogress == 1 && sb->sb_gquotino) { - if (!no_modify) - sb->sb_gquotino = 0; + if (sb->sb_inprogress == 1 && sb->sb_gquotino != NULLFSINO) { + if (!no_modify) { + sb->sb_gquotino = NULLFSINO; + dsb->sb_gquotino = cpu_to_be64(NULLFSINO); + } if (sb->sb_versionnum & XR_PART_SECSB_VNMASK || !do_bzero) { rval |= XR_AG_SB; do_warn( @@ -365,9 +379,11 @@ secondary_sb_wack(xfs_mount_t *mp, xfs_buf_t *sbuf, xfs_sb_t *sb, rval |= XR_AG_SB_SEC; } - if (sb->sb_inprogress == 1 && sb->sb_pquotino) { - if (!no_modify) - sb->sb_pquotino = 0; + if (sb->sb_inprogress == 1 && sb->sb_pquotino != NULLFSINO) { + if (!no_modify) { + sb->sb_pquotino = NULLFSINO; + dsb->sb_pquotino = cpu_to_be64(NULLFSINO); + } if (sb->sb_versionnum & XR_PART_SECSB_VNMASK || !do_bzero) { rval |= XR_AG_SB; do_warn( diff --git a/repair/sb.c b/repair/sb.c index 5e0b0f2..bc421cc 100644 --- a/repair/sb.c +++ b/repair/sb.c @@ -138,6 +138,7 @@ find_secondary_sb(xfs_sb_t *rsb) for (i = 0; !done && i < bsize; i += BBSIZE) { c_bufsb = (char *)sb + i; libxfs_sb_from_disk(&bufsb, (xfs_dsb_t *)c_bufsb); + libxfs_sb_quota_from_disk(&bufsb); if (verify_sb(c_bufsb, &bufsb, 0) != XR_OK) continue; @@ -538,6 +539,7 @@ get_sb(xfs_sb_t *sbp, xfs_off_t off, int size, xfs_agnumber_t agno) do_error("%s\n", strerror(error)); } libxfs_sb_from_disk(sbp, buf); + libxfs_sb_quota_from_disk(sbp); rval = verify_sb((char *)buf, sbp, agno == 0); free(buf); diff --git a/repair/scan.c b/repair/scan.c index 1b64d8b..f29ff8d 100644 --- a/repair/scan.c +++ b/repair/scan.c @@ -1496,6 +1496,7 @@ scan_ag( goto out_free_sb; } libxfs_sb_from_disk(sb, XFS_BUF_TO_SBP(sbbuf)); + libxfs_sb_quota_from_disk(sb); agfbuf = libxfs_readbuf(mp->m_dev, XFS_AG_DADDR(mp, agno, XFS_AGF_DADDR(mp)), diff --git a/repair/xfs_repair.c b/repair/xfs_repair.c index 9eb2fa4..8a3e825 100644 --- a/repair/xfs_repair.c +++ b/repair/xfs_repair.c @@ -782,6 +782,7 @@ main(int argc, char **argv) /* make sure the per-ag freespace maps are ok so we can mount the fs */ phase2(mp, phase2_threads); timestamp(PHASE_END, 2, NULL); + libxfs_bcache_flush(); if (do_prefetch) init_prefetch(mp); -- 2.0.0 From dave@fromorbit.com Tue Jul 1 07:55:09 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 7D20D7F90 for ; Tue, 1 Jul 2014 07:55:09 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7CB2D304067 for ; Tue, 1 Jul 2014 05:55:09 -0700 (PDT) X-ASG-Debug-ID: 1404219304-04cb6c76cf3c5300001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id z56iQ5VNokTuhNp8 for ; Tue, 01 Jul 2014 05:55:05 -0700 (PDT) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApJPAIWuslN5LHZ8PGdsb2JhbABagw2sXQEBAQEBBptPFwQBAQEBODWEAwEBBScvIxAIGDE5AwcUGYhByEaFb4lNhC0Fsjwr Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail06.adl2.internode.on.net with ESMTP; 01 Jul 2014 22:25:01 +0930 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1X1xaN-00071j-Ai; Tue, 01 Jul 2014 22:54:59 +1000 Received: from dave by disappointment with local (Exim 4.82_1-5b7a7c0-XX) (envelope-from ) id 1X1xaN-0007dr-9o; Tue, 01 Jul 2014 22:54:59 +1000 From: Dave Chinner To: xfs@oss.sgi.com Cc: arekm@maven.pl Subject: [PATCH 2/4] libxfs: buffers aren't stale once written Date: Tue, 1 Jul 2014 22:54:54 +1000 X-ASG-Orig-Subj: [PATCH 2/4] libxfs: buffers aren't stale once written Message-Id: <1404219296-29302-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 2.0.0 In-Reply-To: <1404219296-29302-1-git-send-email-david@fromorbit.com> References: <1404219296-29302-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1404219304 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7139 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner When rebuilding a bad directory, repair first truncates away all the blocks in the directory. This removes blocks from the bmap btree, and when those blocks are freed the bmap btree code invalidates them. This marks the buffers LIBXFS_B_STALE so that we don't try to write stale data from that buffer at a later time. However, when rebuilding the directory, the block gets reallocated and new metadata gets written into it. however, it is still marked stale and hence the new, corrected metadata is never written. Hence if we write new metadata to a stale buffer, we have to clear the LIBXFS_B_STALE flag to ensure that the new data gets written. Note that this can affect more than just bmap btree buffers - there are several different places in the libxfs code that mark buffers stale via xfs_trans_binval() during repair operations. Signed-off-by: Dave Chinner --- libxfs/rdwr.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libxfs/rdwr.c b/libxfs/rdwr.c index 981f2ba..28f8f36 100644 --- a/libxfs/rdwr.c +++ b/libxfs/rdwr.c @@ -928,6 +928,7 @@ libxfs_writebuf_int(xfs_buf_t *bp, int flags) * subsequent reads after this write from seeing stale errors. */ bp->b_error = 0; + bp->b_flags &= ~LIBXFS_B_STALE; bp->b_flags |= (LIBXFS_B_DIRTY | flags); return 0; } @@ -946,6 +947,7 @@ libxfs_writebuf(xfs_buf_t *bp, int flags) * subsequent reads after this write from seeing stale errors. */ bp->b_error = 0; + bp->b_flags &= ~LIBXFS_B_STALE; bp->b_flags |= (LIBXFS_B_DIRTY | flags); libxfs_putbuf(bp); return 0; -- 2.0.0 From arekm@maven.pl Tue Jul 1 08:41:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D02D77F93 for ; Tue, 1 Jul 2014 08:41:08 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id B29378F8033 for ; Tue, 1 Jul 2014 06:41:05 -0700 (PDT) X-ASG-Debug-ID: 1404222062-04cb6c76cf3c6c70001-NocioJ Received: from mail-we0-f169.google.com (mail-we0-f169.google.com [74.125.82.169]) by cuda.sgi.com with ESMTP id 8HHE6vklwj9SrtB2 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 01 Jul 2014 06:41:03 -0700 (PDT) X-Barracuda-Envelope-From: arekm@maven.pl X-Barracuda-Apparent-Source-IP: 74.125.82.169 Received: by mail-we0-f169.google.com with SMTP id t60so9766537wes.14 for ; Tue, 01 Jul 2014 06:41:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=maven.pl; s=maven; h=from:to:subject:date:user-agent:cc:references:in-reply-to :mime-version:content-type:content-transfer-encoding:message-id; bh=NbFhqlFJaKyN+u51IVPT7I2pN+ADxVrio6HaKZAc53c=; b=HPL6gKd3wKjJKjQ4/mO3uBzt5Rfbao/dVY5ddEe3V2b0J9q3GqdZ8t3hIJzJ+OOXsI IGTZiCbiC+VqYY/d7c0V9pybPWa2oAWJC4Gl1wlb4dnuHiNJfVYEcwHoLV88l4f8aVVf ZWIdcOebbO+PQ2DTUaT7k0dq2KjVsOCNZnqKI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:user-agent:cc:references :in-reply-to:mime-version:content-type:content-transfer-encoding :message-id; bh=NbFhqlFJaKyN+u51IVPT7I2pN+ADxVrio6HaKZAc53c=; b=Iaa87luMd3D+98EkGgRW/YoX3bE1NLdH4o7dv4KekKVIvYFfD5/UMbKnLSmxfaXHk5 QMTedcPch7mj6g0NGa+WoqFQmuIUL7qils/W9vS4uUieMUdjqSlJHBOgHRF7vwsChoyI 604IpRsiC/rVX82epyTUl46Ez+NKMvmsryz3/kYuZBUHzbVlx7Snt6QVr+me3PoIgSXJ gdq6ZxWMcmzAg+Xt371QS2U/Zcol8S5ozzBVzZpTq+grLotH//Ivc54wntMuWR3xe5vl ptVreQlwkOt6L1oTUzRFADEKdfx2LfugScVi+3c7tSqIdAgENkexCllMR0+S4C4bEAbf ZcWw== X-Gm-Message-State: ALoCoQlyrY761GgY2rgTaZht72UX4k73NPo7UiA8mRQi653IytWAYMNI3DkAGWZo+LWoiqV/EQQb X-Received: by 10.194.83.39 with SMTP id n7mr53105184wjy.58.1404222059149; Tue, 01 Jul 2014 06:40:59 -0700 (PDT) Received: from t400.localnet ([91.234.176.246]) by mx.google.com with ESMTPSA id oy4sm48256273wjb.41.2014.07.01.06.40.58 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 01 Jul 2014 06:40:58 -0700 (PDT) From: Arkadiusz =?utf-8?q?Mi=C5=9Bkiewicz?= To: Dave Chinner Subject: Re: [PATCH 0/4] repair: fixes for 3.2 Date: Tue, 1 Jul 2014 15:40:56 +0200 X-ASG-Orig-Subj: Re: [PATCH 0/4] repair: fixes for 3.2 User-Agent: KMail/1.13.7 (Linux/3.16.0-rc3-00006-g16874b2; KDE/4.13.2; x86_64; ; ) Cc: xfs@oss.sgi.com References: <1404219296-29302-1-git-send-email-david@fromorbit.com> In-Reply-To: <1404219296-29302-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <201407011540.57511.arekm@maven.pl> X-Barracuda-Connect: mail-we0-f169.google.com[74.125.82.169] X-Barracuda-Start-Time: 1404222063 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7139 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 Tuesday 01 of July 2014, Dave Chinner wrote: > Hi Arkadiusz, >=20 > These are the fixes I have so far from working through the metadumps > you supplied me with. The unobfuscated metadump repairs cleanly with > these patches, but the obfuscated one still has a directory rebuild > issue that I haven't got to the bottom of yet. That results in > an error in phase 6 like: >=20 > Metadata corruption detected at block 0x2af84770/0x1000 > name create failed in ino 2306912354 (117), filesystem may be out of space >=20 > It appears that a read verifier is on a recently created > directory leaf block and that is failing. I'm not yet sure why the > leaf block is corrupt, nor why the verifier is even being run on it > seeing as it was only allocated and initialised during the directory > rebuild. That directory rebuil dfailure is the reason for all the > disconected inode that end up in lost+found, and I think it's the > only remaining issue that I need to solve. >=20 > Can you test the patches on you machine and see if you get the same > results? Testing on non obfuscated image here. Most of issues got fixed, first xfs_repair run: http://ixion.pld-linux.org/~arekm/p2/x1/repair-3.2-dchinner1-4patches-run1.= txt=20 second xfs_repair run (reports no problems): http://ixion.pld-linux.org/~arekm/p2/x1/repair-3.2-dchinner1-4patches-run2.= txt When trying to mount "XFS (loop0): Failed to initialize disk quotas." so this issue left. Question: Phase 2 - using internal log - zero log... zero_log: head block 2 tail block 2 - scan filesystem freespace and inode maps... Metadata CRC error detected at block 0x0/0x200 Is "Metadata CRC error detected at block" expected here? I mean v4 fs, so n= o=20 CRC. Thanks a lot for the fixes. > Cheers, >=20 > Dave. =2D-=20 Arkadiusz Mi=C5=9Bkiewicz, arekm / maven.pl From arekm@maven.pl Tue Jul 1 08:44:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 1A1D27F96 for ; Tue, 1 Jul 2014 08:44:02 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id F25C230407A for ; Tue, 1 Jul 2014 06:43:58 -0700 (PDT) X-ASG-Debug-ID: 1404222236-04cbb065361fcf60001-NocioJ Received: from mail-wi0-f172.google.com (mail-wi0-f172.google.com [209.85.212.172]) by cuda.sgi.com with ESMTP id Eet8AHqTr7djaMHF (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 01 Jul 2014 06:43:57 -0700 (PDT) X-Barracuda-Envelope-From: arekm@maven.pl X-Barracuda-Apparent-Source-IP: 209.85.212.172 Received: by mail-wi0-f172.google.com with SMTP id hi2so7874469wib.5 for ; Tue, 01 Jul 2014 06:43:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=maven.pl; s=maven; h=from:to:subject:date:user-agent:cc:references:in-reply-to :mime-version:content-type:content-transfer-encoding:message-id; bh=zQC1jaS/na4Klqx3FgKdmaRS7KlsqdRWI75rb2PALpg=; b=ldPmh2M249sIKLg3XdP4AG7FNC5vzSKiootZLxCQI13LQU1PotHTwH2hvHHny5GgnL MQQBO0eQxwNfm6/25OxYQFCgETc49hNW2o/hDl+DyxskqxVfY4eLkp9BKEJa5xypkVdP RebJ1rg5YilKEI+FHUoq7NYeT33Hb6NH5HrEc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:user-agent:cc:references :in-reply-to:mime-version:content-type:content-transfer-encoding :message-id; bh=zQC1jaS/na4Klqx3FgKdmaRS7KlsqdRWI75rb2PALpg=; b=GgM1KDKXZzITUR9U4+ka7jQdmsg+fJE1GI3EkifriYLqofvuvjwABXvdHi2tFArwIS TkI4MHXGL831tG8PjFQwo+PIQLQa81vaG74H0nAUpLhep/yW2Fi7/mxuKOtIhIEpvEXV 92p0jBV7H/7Pv/EBS0Aq/Dt+15lD6MOh9iYWzLW4MJi/WyRQaBN0Ce4BqzHRyw2eikq2 ovErytsepvbT6Hith0iNXsT9VAU79hu6EVdS2JqFvpv+PFs0In7iXKRRObz+I+sdJAik 1zBSHP2pfW8qkuK18kHnbyFvaG0doGq4+ZXgrSHvFnKndTviaHrObmnA8nC3Ha7mknmE 6y5w== X-Gm-Message-State: ALoCoQmM7/KyG+qzp8adBUovcKx+ypkfomp/uU8IkXiCyG+529gs+Lwe/Y2/+zwUzxxu9I17pxwf X-Received: by 10.180.73.230 with SMTP id o6mr36099226wiv.30.1404222231452; Tue, 01 Jul 2014 06:43:51 -0700 (PDT) Received: from t400.localnet ([91.234.176.246]) by mx.google.com with ESMTPSA id wu6sm48264979wjb.46.2014.07.01.06.43.50 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 01 Jul 2014 06:43:50 -0700 (PDT) From: Arkadiusz =?utf-8?q?Mi=C5=9Bkiewicz?= To: Dave Chinner Subject: Re: [PATCH 4/4] repair: get rid of BADFSINO Date: Tue, 1 Jul 2014 15:43:49 +0200 X-ASG-Orig-Subj: Re: [PATCH 4/4] repair: get rid of BADFSINO User-Agent: KMail/1.13.7 (Linux/3.16.0-rc3-00006-g16874b2; KDE/4.13.2; x86_64; ; ) Cc: xfs@oss.sgi.com References: <1404219296-29302-1-git-send-email-david@fromorbit.com> <1404219296-29302-5-git-send-email-david@fromorbit.com> In-Reply-To: <1404219296-29302-5-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <201407011543.49828.arekm@maven.pl> X-Barracuda-Connect: mail-wi0-f172.google.com[209.85.212.172] X-Barracuda-Start-Time: 1404222237 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7140 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 Tuesday 01 of July 2014, Dave Chinner wrote: > From: Dave Chinner > so get rid of BADFSINO and only use the name junking to mark > dirents as bad. This prevents the directory data block verifier from > triggering on bad inode numbers, and so the later reread of the > block will find the junked entries correctly. >=20 > Signed-off-by: Dave Chinner > --- > repair/dir2.c | 18 +++++------------- > 1 file changed, 5 insertions(+), 13 deletions(-) > @@ -1427,11 +1419,11 @@ _("entry at block %u offset %" PRIdPTR " in > directory inode %" PRIu64 " has ille /* > * Now we can mark entries with BADFSINO's bad. > */ Comment above needs update. > - if (!no_modify && ent_ino =3D=3D BADFSINO) { > - dep->name[0] =3D '/'; > + if (!no_modify && dep->name[0] =3D=3D '/') { > *dirty =3D 1; > junkit =3D 0; > } > + > /* > * Special .. entry processing. > */ =2D-=20 Arkadiusz Mi=C5=9Bkiewicz, arekm / maven.pl From alex@zadarastorage.com Tue Jul 1 10:06:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.9 required=5.0 tests=STOX_REPLY_TYPE, STOX_REPLY_TYPE_WITHOUT_QUOTES autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 2945C7FA5 for ; Tue, 1 Jul 2014 10:06:48 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id E3BD530404E for ; Tue, 1 Jul 2014 08:06:44 -0700 (PDT) X-ASG-Debug-ID: 1404227199-04cb6c76d03ca450001-NocioJ Received: from mail-we0-f176.google.com (mail-we0-f176.google.com [74.125.82.176]) by cuda.sgi.com with ESMTP id uyxQZMJR3N4Em0BF (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 01 Jul 2014 08:06:40 -0700 (PDT) X-Barracuda-Envelope-From: alex@zadarastorage.com X-Barracuda-Apparent-Source-IP: 74.125.82.176 Received: by mail-we0-f176.google.com with SMTP id u56so9969214wes.35 for ; Tue, 01 Jul 2014 08:06:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:from:to:references:in-reply-to :subject:date:mime-version:content-type:content-transfer-encoding :importance; bh=gv/yg+7oYj3ry8LSvG6TOMYF9g3bwVozAWjrHtqAllc=; b=C8PnOOdAjScOzrpfr07Pf8mgItrqOg1+949DtMYDOMnCnre6wED29UeHybT9VDWHhr URJcZP/EyuKRSZpCvxQVYN1hzcc8hsxBrGNzVe31Dc5CskL7QdKS347O9ZJUGlACQMC/ k+u2KQcmwN+mE+nbE1Et3Gyb8gD6v/aC5wA9ksdYY2yzw+jhcpiB0D9HhchZy+CeQi1z DvpDA6c+X5pGYGZCjR+bDMJnp/ruUaDvBfTvgoaeJi88kFItZuz3EP6gw/6MVN6JI0C2 MfcjFUErYYXj3Rl7LdAR0AZABlf6bmRvXg/mjJXSMoBrejMA0dxTy6GCc7tG7wjvZKHa joaQ== X-Gm-Message-State: ALoCoQmKw/OzydBUKMEiphyS/PUYm1lsgkvu8po43kFCSMqV9eLoM34S7JFRzN6xH+GR8QXpMseK X-Received: by 10.180.188.144 with SMTP id ga16mr38002207wic.72.1404227197020; Tue, 01 Jul 2014 08:06:37 -0700 (PDT) Received: from alyakaslap ([212.143.144.103]) by mx.google.com with ESMTPSA id hc4sm48686908wjc.38.2014.07.01.08.06.35 for (version=TLSv1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 01 Jul 2014 08:06:36 -0700 (PDT) Message-ID: <4B2A412C75324EE9880358513C069476@alyakaslap> From: "Alex Lyakas" To: References: <20131219105513.GZ31386@dastard> <8155F3F9D6094F40B4DA71BD561D2DE8@alyakaslap> <20131226230018.GJ20579@dastard> <20140113030230.GF3469@dastard> <20140113204314.GJ3469@dastard> <20140115014503.GQ3469@dastard> <20140119231745.GF18112@dastard> In-Reply-To: <20140119231745.GF18112@dastard> Subject: xfs_growfs_data_private memory leak Date: Tue, 1 Jul 2014 18:06:38 +0300 X-ASG-Orig-Subj: xfs_growfs_data_private memory leak MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal Importance: Normal X-Mailer: Microsoft Windows Live Mail 15.4.3555.308 X-MimeOLE: Produced By Microsoft MimeOLE V15.4.3555.308 X-Barracuda-Connect: mail-we0-f176.google.com[74.125.82.176] X-Barracuda-Start-Time: 1404227200 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-BRTS-Status: 1 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=2.7 tests=STOX_REPLY_TYPE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7141 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 STOX_REPLY_TYPE STOX_REPLY_TYPE Greetings, It appears that if xfs_growfs_data_private fails during the "new AG headers" loop, it does not free all the per-AG structures for the new AGs. When XFS is unmounted later, they are not freed as well, because xfs_growfs_data_private did not update the "sb_agcount" field, so xfs_free_perag will not free them. This happens on 3.8.13, but looking at the latest master branch, it seems to have the same issue. Code like [1] in xfs_growfs_data, seems to fix the issue. A follow-up question: if xfs_grows_data_private fails during the loop that updates all the secondary superblocks, what is the consequence? (I am aware that in the latest master branch, the loop is not broken on first error, but attempts to initialize whatever possible). When these secondary superblocks will get updated? Is there a way to force-update them? Otherwise, what can be the consequence of leaving them not updated? Thanks, Alex. [1] /* * If we had an error, we might have allocated * PAGs, which are >=sb_agcount. We need to free * those, because they will not get freed in * xfs_free_perag(). */ if (error) { unsigned int n_pags = 0; xfs_perag_t* pags[16] = {0}; xfs_agnumber_t start_agno = mp->m_sb.sb_agcount; do { unsigned int pag_idx = 0; spin_lock(&mp->m_perag_lock); n_pags = radix_tree_gang_lookup(&mp->m_perag_tree, (void**)pags, start_agno, ARRAY_SIZE(pags)); for (pag_idx = 0; pag_idx < n_pags; ++pag_idx) { xfs_perag_t *deleted = NULL; /* for next lookup */ start_agno = pags[pag_idx]->pag_agno + 1; /* nobody should really be touching these AGs...*/ if (WARN_ON(atomic_read(&pags[pag_idx]->pag_ref) > 0)) { pags[pag_idx] = NULL; continue; } deleted = radix_tree_delete(&mp->m_perag_tree, pags[pag_idx]->pag_agno); ASSERT(deleted == pags[pag_idx]); } spin_unlock(&mp->m_perag_lock); /* now delete all those still marked for deletion */ for (pag_idx = 0; pag_idx < n_pags; ++pag_idx) { if (pags[pag_idx]) call_rcu(&pags[pag_idx]->rcu_head, xfs_free_perag_rcu_cb); } } while (n_pags > 0); } xfs_free_perag_rcu_cb is similar to __xfs_free_perag, but can be called from other files. From david@fromorbit.com Tue Jul 1 15:03:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id CBB0D7F93 for ; Tue, 1 Jul 2014 15:03:58 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id B8E118F8035 for ; Tue, 1 Jul 2014 13:03:55 -0700 (PDT) X-ASG-Debug-ID: 1404245032-04cb6c76d23d6840001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 6D6vIqrnnEli4VqS for ; Tue, 01 Jul 2014 13:03:53 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkJWAMoTs1N5LHZ8PGdsb2JhbABaFoJ3UoJ3UahJBppJAYEOFwQBAQEBODWEAwEBBAEjDwEjIwULCAMYAgIFIQICDwUlAwcaE4g6Bw6sd5tnFxeBFIREiTAHgnc2gRYFmmWBSZYPKy8B Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail06.adl2.internode.on.net with ESMTP; 02 Jul 2014 05:33:33 +0930 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1X24H5-00087q-Q4; Wed, 02 Jul 2014 06:03:31 +1000 Date: Wed, 2 Jul 2014 06:03:31 +1000 From: Dave Chinner To: Arkadiusz =?utf-8?Q?Mi=C5=9Bkiewicz?= Cc: xfs@oss.sgi.com Subject: Re: [PATCH 0/4] repair: fixes for 3.2 Message-ID: <20140701200331.GC9508@dastard> X-ASG-Orig-Subj: Re: [PATCH 0/4] repair: fixes for 3.2 References: <1404219296-29302-1-git-send-email-david@fromorbit.com> <201407011540.57511.arekm@maven.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <201407011540.57511.arekm@maven.pl> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1404245032 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7150 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Jul 01, 2014 at 03:40:56PM +0200, Arkadiusz MiΕ›kiewicz wrote: > On Tuesday 01 of July 2014, Dave Chinner wrote: > > Hi Arkadiusz, > > > > These are the fixes I have so far from working through the metadumps > > you supplied me with. The unobfuscated metadump repairs cleanly with > > these patches, but the obfuscated one still has a directory rebuild > > issue that I haven't got to the bottom of yet. That results in > > an error in phase 6 like: > > > > Metadata corruption detected at block 0x2af84770/0x1000 > > name create failed in ino 2306912354 (117), filesystem may be out of space > > > > It appears that a read verifier is on a recently created > > directory leaf block and that is failing. I'm not yet sure why the > > leaf block is corrupt, nor why the verifier is even being run on it > > seeing as it was only allocated and initialised during the directory > > rebuild. That directory rebuil dfailure is the reason for all the > > disconected inode that end up in lost+found, and I think it's the > > only remaining issue that I need to solve. > > > > Can you test the patches on you machine and see if you get the same > > results? > > Testing on non obfuscated image here. > > Most of issues got fixed, first xfs_repair run: > http://ixion.pld-linux.org/~arekm/p2/x1/repair-3.2-dchinner1-4patches-run1.txt > > second xfs_repair run (reports no problems): > http://ixion.pld-linux.org/~arekm/p2/x1/repair-3.2-dchinner1-4patches-run2.txt > > When trying to mount > "XFS (loop0): Failed to initialize disk quotas." > so this issue left. Yeah, I haven't got that far yet.... > Question: > > Phase 2 - using internal log > - zero log... > zero_log: head block 2 tail block 2 > - scan filesystem freespace and inode maps... > Metadata CRC error detected at block 0x0/0x200 > > Is "Metadata CRC error detected at block" expected here? I mean v4 fs, so no > CRC. Given that it was followed by: zeroing unused portion of primary superblock (AG #0) Then there was garbage in the superblock that made the verifier think that maybe it was missing a feature bit. It didn't come up the second time, so everything is fine.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From cardaniuc@gmail.com Tue Jul 1 15:13:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id DAD657FA3 for ; Tue, 1 Jul 2014 15:13:25 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 9AF038F8065 for ; Tue, 1 Jul 2014 13:13:25 -0700 (PDT) X-ASG-Debug-ID: 1404245602-04cbb0653820cd70001-NocioJ Received: from mail-ie0-f182.google.com (mail-ie0-f182.google.com [209.85.223.182]) by cuda.sgi.com with ESMTP id z9OjvHG4pnl7jSv6 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 01 Jul 2014 13:13:23 -0700 (PDT) X-Barracuda-Envelope-From: cardaniuc@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.223.182 X-Barracuda-IPDD: Level1 [gmail.com/209.85.223.182] Received: by mail-ie0-f182.google.com with SMTP id rp18so8761995iec.13 for ; Tue, 01 Jul 2014 13:13:22 -0700 (PDT) X-Barracuda-IPDD: Level1 [gmail.com/209.85.223.182] X-Barracuda-IPDD: Level1 [gmail.com/209.85.223.182] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:references:date:in-reply-to:message-id:user-agent :mime-version:content-type; bh=k1uC4tFRV9lyZ1GIyWmQhc1KNFOaJc/SRH254oLRouU=; b=S3rT4Y7Um85djfgaUiddX8rXtrMu8iZJEtareX5EpW9P9oaha0s+W+5/OvutW2kUi0 zZOLSygbtcB0YSY45cxVS6ERVdr0UEmAtDh2TavkmyG/FlRtzCzV5bqckmUmD9xuwqye vet9NmcbAfGXlc+AQA88QPvh6TrhAlKTL65fSfZBokcH9CoVFKeFgn+yvHRbziXlpDvO mp9o7xRdZ0XEpZAjg9kwapZyjRrWmJnDPTiCHAWFg+d0atSMjVF9gxA9RRMyi2fJ2gMK 9RICVQFOk4MjTNGjuPxVAyghHAop5bucweZKKQY9XZj2HDGRvucAEE1s0TTupHoOLwdY 8ZvA== X-Received: by 10.50.107.42 with SMTP id gz10mr43026998igb.15.1404245602740; Tue, 01 Jul 2014 13:13:22 -0700 (PDT) Received: from sonata (adsl-76-254-71-112.dsl.pltn13.sbcglobal.net. [76.254.71.112]) by mx.google.com with ESMTPSA id t1sm36893279igh.9.2014.07.01.13.13.20 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Tue, 01 Jul 2014 13:13:21 -0700 (PDT) From: Alexandru Cardaniuc To: xfs@oss.sgi.com Subject: Re: corruption of in-memory data detected References: <20140701070230.GG4453@dastard> <87vbrh1nyo.fsf@gmail.com> <20140701093803.GH4453@dastard> X-ASG-Orig-Subj: Re: corruption of in-memory data detected Date: Tue, 01 Jul 2014 13:13:19 -0700 In-Reply-To: <20140701093803.GH4453@dastard> (Dave Chinner's message of "Tue, 1 Jul 2014 19:38:03 +1000") Message-ID: <878uoc25y8.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: mail-ie0-f182.google.com[209.85.223.182] X-Barracuda-Start-Time: 1404245603 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7150 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 Dave Chinner writes: > On Tue, Jul 01, 2014 at 01:29:35AM -0700, Alexandru Cardaniuc wrote: >> Dave Chinner writes: >> >> > On Mon, Jun 30, 2014 at 11:44:45PM -0700, Alexandru Cardaniuc >> > wrote: >> >> Hi All, >> >> >> I am having an issue with an XFS filesystem shutting down under >> >> high load with very many small files. Basically, I have around >> >> 3.5 - 4 million files on this filesystem. New files are being >> >> written to the FS all the time, until I get to 9-11 mln small >> >> files (35k on average). > .... >> > You've probably fragmented free space to the point where inodes >> > cannot be allocated anymore, and then it's shutdown because it got >> > enospc with a dirty inode allocation transaction. >> >> > xfs_db -c "freespc -s" >> >> > should tell us whether this is the case or not. >> This is what I have >> >> # xfs_db -c "freesp -s" /dev/sda5 from to extents blocks pct 1 1 657 >> 657 0.00 2 3 264 607 0.00 4 7 29 124 0.00 8 15 13 143 0.00 16 31 41 >> 752 0.00 32 63 8 293 0.00 64 127 12 1032 0.00 128 255 8 1565 0.00 >> 256 511 10 4044 0.00 512 1023 7 5750 0.00 1024 2047 10 16061 0.01 >> 2048 4095 5 16948 0.01 4096 8191 7 43312 0.02 8192 16383 9 115578 >> 0.06 16384 32767 6 159576 0.08 32768 65535 3 104586 0.05 262144 >> 524287 1 507710 0.25 4194304 7454720 28 200755934 99.51 total free >> extents 1118 total free blocks 201734672 average free extent size >> 180442 > > So it's not freespace fragmentation, but that was just the most likely > cause. Most likely it's a transient condition where an AG is out of > space but in determining that condition the AGF was modified. We've > fixed several bugs in that area over the past few years.... I still have the FS available. Any other information I can assemble to help you identify the issue? >> >> Using CentOS 5.9 with kernel 2.6.18-348.el5xen >> > The "enospc with dirty transaction" shutdown bugs have been fixed >> > in more recent kernels than RHEL5. >> These fixes were not backported to RHEL5 kernels? > No. I assume I wouldn't just be able to take the source for XFS kernel module and compile it against the 2.6.18 kernel in CentOS 5.x? >> >> The problem is reproducible and I don't think it's hardware >> >> related. The problem was reproduced on multiple servers of the >> >> same type. So, I doubt it's a memory issue or something like >> >> that. >> >> > Nope, it's not hardware, it's buggy software that has been fixed >> > in the years since 2.6.18.... >> I would hope these fixes would be backported to RHEL5 (CentOS 5) >> kernels... > > TANSTAAFL. >> > If you've fragmented free space, then your ony options are: >> >> > - dump/mkfs/restore - remove a large number of files from the >> > filesystem so free space defragments. >> That wouldn't be fixed automagically using xfs_repair, wouldn't it? > No. >> > If you simply want to avoid the shutdown, then upgrade to a more >> > recent kernel (3.x of some kind) where all the known issues have >> > been fixed. >> How about 2.6.32? That's the kernel that comes with RHEL 6.x > > It might, but I don't know the exact root cause of your problem so I > couldn't say for sure. >> >> I went through the kernel updates for CentOS 5.10 (newer kernel), >> >> but didn't see any xfs related fixes since CentOS 5.9 >> >> > That's something you need to talk to your distro maintainers >> > about.... >> I was worried you gonna say that :) > > Theres only so much that upstream can do to support heavily patched, 6 > year old distro kernels. >> What are my options at this point? Am I correct to assume that the >> issue is related to the load and if I manage to decrease the load, >> the issue is not going to reproduce itself? > It's more likely related to the layout of data and metadata on disk. >> We have been using XFS on RHEL 5 kernels for years and didn't see >> this issue. Now, the issue happens consistently, but seems to be >> related to high load... > There are several different potential causes - high load just iterates > the problem space faster. >> We have hundreds of these servers deployed in production right now, >> so some way to address the current situation would be very welcomed. > I'd suggest talking to Red Hat about what they can do to help you, > especially as CentOS is a now RH distro.... I will try that. Thanks. -- "It's very well to be thrifty, but don't amass a hoard of regrets." - Charles D'Orleans From david@fromorbit.com Tue Jul 1 16:43:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 073EA7F83 for ; Tue, 1 Jul 2014 16:43:25 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 96958AC00E for ; Tue, 1 Jul 2014 14:43:21 -0700 (PDT) X-ASG-Debug-ID: 1404250998-04bdf056687531b0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id ffr1yQVj1apVshFr for ; Tue, 01 Jul 2014 14:43:18 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AiNWAMwps1N5LHZ8PGdsb2JhbABQBwODDYNJhQikEgaaSQGBDhcEAQEBATg1hAMBAQU6HCMQCAMYCSUPBSUDBxoTiEHIGBcXhViIVEwQBxGDHIEWBZpll1gr Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail06.adl2.internode.on.net with ESMTP; 02 Jul 2014 07:13:17 +0930 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1X25pb-0008OS-Me; Wed, 02 Jul 2014 07:43:15 +1000 Date: Wed, 2 Jul 2014 07:43:15 +1000 From: Dave Chinner To: Alexandru Cardaniuc Cc: xfs@oss.sgi.com Subject: Re: corruption of in-memory data detected Message-ID: <20140701214315.GD9508@dastard> X-ASG-Orig-Subj: Re: corruption of in-memory data detected References: <20140701070230.GG4453@dastard> <87vbrh1nyo.fsf@gmail.com> <20140701093803.GH4453@dastard> <878uoc25y8.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <878uoc25y8.fsf@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1404250998 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7153 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Jul 01, 2014 at 01:13:19PM -0700, Alexandru Cardaniuc wrote: > Dave Chinner writes: > > > On Tue, Jul 01, 2014 at 01:29:35AM -0700, Alexandru Cardaniuc wrote: > >> Dave Chinner writes: > >> > >> > On Mon, Jun 30, 2014 at 11:44:45PM -0700, Alexandru Cardaniuc > >> > wrote: > >> >> Hi All, > >> > >> >> I am having an issue with an XFS filesystem shutting down under > >> >> high load with very many small files. Basically, I have around > >> >> 3.5 - 4 million files on this filesystem. New files are being > >> >> written to the FS all the time, until I get to 9-11 mln small > >> >> files (35k on average). > > .... > >> > You've probably fragmented free space to the point where inodes > >> > cannot be allocated anymore, and then it's shutdown because it got > >> > enospc with a dirty inode allocation transaction. > >> > >> > xfs_db -c "freespc -s" > >> > >> > should tell us whether this is the case or not. > >> This is what I have > >> > >> # xfs_db -c "freesp -s" /dev/sda5 from to extents blocks pct 1 1 657 > >> 657 0.00 2 3 264 607 0.00 4 7 29 124 0.00 8 15 13 143 0.00 16 31 41 > >> 752 0.00 32 63 8 293 0.00 64 127 12 1032 0.00 128 255 8 1565 0.00 > >> 256 511 10 4044 0.00 512 1023 7 5750 0.00 1024 2047 10 16061 0.01 > >> 2048 4095 5 16948 0.01 4096 8191 7 43312 0.02 8192 16383 9 115578 > >> 0.06 16384 32767 6 159576 0.08 32768 65535 3 104586 0.05 262144 > >> 524287 1 507710 0.25 4194304 7454720 28 200755934 99.51 total free > >> extents 1118 total free blocks 201734672 average free extent size > >> 180442 > > > > So it's not freespace fragmentation, but that was just the most likely > > cause. Most likely it's a transient condition where an AG is out of > > space but in determining that condition the AGF was modified. We've > > fixed several bugs in that area over the past few years.... > > I still have the FS available. Any other information I can assemble to > help you identify the issue? Not really. Historically the only way to work out the exact problem causing the transaction failure is to be able to reproduce the problem on demand in a controlled environment. Unfortunately, I don't scale to doing this for everyone who has a problem because it can take days to build an equivalent environment and reproduce the problem and refine it to something that can be used to debug the issue. However, if you can reproduce the problem on a current upstream kernel with a metadump image and a script that runs on the image, then I'll definitely look at it. i.e. if you can make it 5 minutes work for me to reproduce the problem on an upstream kernel, then I should be able find and solve the problem pretty quickly. > >> >> Using CentOS 5.9 with kernel 2.6.18-348.el5xen > >> > The "enospc with dirty transaction" shutdown bugs have been fixed > >> > in more recent kernels than RHEL5. > >> These fixes were not backported to RHEL5 kernels? > > > No. > > I assume I wouldn't just be able to take the source for XFS kernel module > and compile it against the 2.6.18 kernel in CentOS 5.x? You could try, but you'd only be digging a deeper hole. Triaging and solving a bug like this bug is a walk in the park compared to the issues that typically arise(*) during large scale backports to older kernels. Cheers, Dave. (*) speaking as a RH engineer who has done multiple large (several hundred commit) XFS backports for RHEL. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Jul 1 16:56:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 1A5B97F90 for ; Tue, 1 Jul 2014 16:56:35 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id ECA17304067 for ; Tue, 1 Jul 2014 14:56:31 -0700 (PDT) X-ASG-Debug-ID: 1404251789-04cbb0653720fc70001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 4IhTUhAKQsneTFB7 for ; Tue, 01 Jul 2014 14:56:29 -0700 (PDT) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AiVWAMIts1N5LHZ8PGdsb2JhbABagw2DSYUIpBIGmkkBgQ4XBAEBAQE4NYQDAQEEAScTHCMFCwgDGAklDwUlAwcaE4g6B8cSFxeFWIkwB4MtgRYFmmWLRowSKw Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail06.adl2.internode.on.net with ESMTP; 02 Jul 2014 07:26:28 +0930 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1X262M-0008R5-V8; Wed, 02 Jul 2014 07:56:26 +1000 Date: Wed, 2 Jul 2014 07:56:26 +1000 From: Dave Chinner To: Alex Lyakas Cc: xfs@oss.sgi.com Subject: Re: xfs_growfs_data_private memory leak Message-ID: <20140701215626.GE9508@dastard> X-ASG-Orig-Subj: Re: xfs_growfs_data_private memory leak References: <20131226230018.GJ20579@dastard> <20140113030230.GF3469@dastard> <20140113204314.GJ3469@dastard> <20140115014503.GQ3469@dastard> <20140119231745.GF18112@dastard> <4B2A412C75324EE9880358513C069476@alyakaslap> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B2A412C75324EE9880358513C069476@alyakaslap> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1404251789 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7153 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Jul 01, 2014 at 06:06:38PM +0300, Alex Lyakas wrote: > Greetings, > > It appears that if xfs_growfs_data_private fails during the "new AG > headers" loop, it does not free all the per-AG structures for the > new AGs. When XFS is unmounted later, they are not freed as well, > because xfs_growfs_data_private did not update the "sb_agcount" > field, so xfs_free_perag will not free them. This happens on 3.8.13, > but looking at the latest master branch, it seems to have the same > issue. > > Code like [1] in xfs_growfs_data, seems to fix the issue. Why not just do this in the appropriate error stack, like is done inside xfs_initialize_perag() on error? for (i = oagcount; i < nagcount; i++) { pag = radix_tree_delete(&mp->m_perag_tree, index); kmem_free(pag); } (though it might need RCU freeing) When you have a fix, can you send a proper patch with a sign-off on it? > A follow-up question: if xfs_grows_data_private fails during the > loop that updates all the secondary superblocks, what is the > consequence? (I am aware that in the latest master branch, the loop > is not broken on first error, but attempts to initialize whatever > possible). When these secondary superblocks will get updated? Is > there a way to force-update them? Otherwise, what can be the > consequence of leaving them not updated? The consequence is documented in mainline tree - if we don't update them all, then repair will do the wrong thing. Repair requires a majority iof identical secondaries to determine if the primary is correct or out of date. The old behaviour of not updating after the first error meant that the majority were old superblocks and so at some time in the future repair could decide your filesystem is smaller than it really is and hence truncate away the grown section of the filesystem. i.e. trigger catastrophic, unrecoverable data loss. Hence it's far better to write every seconday we can than to leave a majority in a bad state.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From mlsemon35@gmail.com Tue Jul 1 17:27:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id EA73C7F95 for ; Tue, 1 Jul 2014 17:27:35 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id DE3EA8F8035 for ; Tue, 1 Jul 2014 15:27:32 -0700 (PDT) X-ASG-Debug-ID: 1404253650-04cbb065382107f0001-NocioJ Received: from mail-qg0-f49.google.com (mail-qg0-f49.google.com [209.85.192.49]) by cuda.sgi.com with ESMTP id VwJ7QuNDvDVbZNiB (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 01 Jul 2014 15:27:31 -0700 (PDT) X-Barracuda-Envelope-From: mlsemon35@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.192.49 X-Barracuda-IPDD: Level1 [gmail.com/209.85.192.49] Received: by mail-qg0-f49.google.com with SMTP id f51so3927729qge.36 for ; Tue, 01 Jul 2014 15:27:30 -0700 (PDT) X-Barracuda-IPDD: Level1 [gmail.com/209.85.192.49] X-Barracuda-IPDD: Level1 [gmail.com/209.85.192.49] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=gbItVU8hR4YFAg6kmE5CaskCrahA7Cmmze3cFG8mWWs=; b=TVY2u5desv18kJerBMXxHYweCZxap+PvlwZCwrpG0z7FfEz943Z7+UrLlBln2wnqcI +gWpm/khxKNfpirUNa4rUUVZqkF4K2N8VtJ2sCsrN31NmE0+Kw73MJXBs1a7F5XCRFRU hRsx/4su/BM4aHFewuS9clAPA7f3KskahNxePQZc9HV81i61uOSj75oEf4Uvy7PWU8L/ /b6nKA9Mo8CYd5UmjmwiRM7XChIcJMaUgxx2L2EQg2FG7XR6NSrIBEj/p3nJKL3RULf9 YgoLqCe9JmUUs2plYXary3ITKNNYYRRMC3BNuJQn4Me5ZbbEnUWOZTCjrhO9VdZcUtcx Nj5A== X-Received: by 10.224.79.11 with SMTP id n11mr77325077qak.40.1404253650852; Tue, 01 Jul 2014 15:27:30 -0700 (PDT) Received: from [192.168.0.129] (rrcs-97-79-21-178.se.biz.rr.com. [97.79.21.178]) by mx.google.com with ESMTPSA id q46sm10292600qga.0.2014.07.01.15.27.30 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 01 Jul 2014 15:27:30 -0700 (PDT) Message-ID: <53B335D1.2010709@gmail.com> Date: Tue, 01 Jul 2014 18:27:29 -0400 From: "Michael L. Semon" User-Agent: Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: Dave Chinner CC: Mark Tinguely , xfs@oss.sgi.com Subject: Re: Null pointer dereference while at ACL limit on v5 XFS References: <53A8A0AF.9070009@gmail.com> <53A8A578.4070005@sgi.com> <53A8A676.80305@sgi.com> <53A8F1AC.90109@gmail.com> <20140624040434.GC9508@dastard> X-ASG-Orig-Subj: Re: Null pointer dereference while at ACL limit on v5 XFS In-Reply-To: <20140624040434.GC9508@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail-qg0-f49.google.com[209.85.192.49] X-Barracuda-Start-Time: 1404253651 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7154 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 06/24/2014 12:04 AM, Dave Chinner wrote: > On Mon, Jun 23, 2014 at 11:34:04PM -0400, Michael L. Semon wrote: >> [ 1068.431391] ------------[ cut here ]------------ >> [ 1068.431566] WARNING: CPU: 0 PID: 41 at lib/list_debug.c:59 __list_del_entry+0xce/0x110() >> [ 1068.431596] list_del corruption. prev->next should be db5bf580, but was (null) > > Ok, so the current log item points to a log item that has > null pointers (i.e. not on the list). > >> [ 1068.431629] CPU: 0 PID: 41 Comm: kworker/0:1H Not tainted 3.16.0-rc1+ #3 >> [ 1068.431656] Hardware name: Dell Computer Corporation L733r /CA810E , BIOS A14 09/05/2001 >> [ 1068.431697] Workqueue: xfslogd xfs_buf_iodone_work >> [ 1068.431738] 00000000 00000000 de92fc24 c15d4e76 de92fc68 de92fc58 c103ca33 c1737648 >> [ 1068.431891] de92fc84 00000029 c173705a 0000003b c13c3e9e 0000003b c13c3e9e 0000003b >> [ 1068.432115] db5bf580 00000001 de92fc70 c103cab3 00000009 de92fc68 c1737648 de92fc84 >> [ 1068.432267] Call Trace: >> [ 1068.432329] [] dump_stack+0x48/0x60 >> [ 1068.432386] [] warn_slowpath_common+0x83/0xa0 >> [ 1068.432433] [] ? __list_del_entry+0xce/0x110 >> [ 1068.432478] [] ? __list_del_entry+0xce/0x110 >> [ 1068.432524] [] warn_slowpath_fmt+0x33/0x40 >> [ 1068.432569] [] __list_del_entry+0xce/0x110 >> [ 1068.432615] [] list_del+0xb/0x20 >> [ 1068.432674] [] xfs_ail_delete+0x1d/0x60 > .... >> [ 1068.433567] ---[ end trace 60289514948e4bd7 ]--- >> [ 1068.433603] BUG: unable to handle kernel NULL pointer dereference at 0000000c >> [ 1068.433795] IP: [] xfs_ail_check+0x58/0xc0 > > And that's trying to dereference a pointer from an item that is not > on the list.... > > So there's linked list corruption occurring here. > >> I can reproduce the oops in kernel 3.15.0, perhaps with xfs-oss/for-next >> merged, but there's no vmlinux to go with the kernel. Therefore, I'll have >> to resort to other means (rebuilt kernel with netconsole, re-attaching the >> serial cable, etc.) to get the full crash log. > > How far back can you reproduce it? If it's a recent occurrence, can > you bisect it? > > Cheers, > > Dave. I've had terrible luck with bisects this week due to PEBKAC errors. With 3 commits left to try--one slow, full build (thanks, ARM!) and hopefully 2 minor builds--this commit is staring me in the face: commit bba719b5004234e55737e7074b81b337210c511d Author: Jie Liu Date: Wed Jan 1 19:28:03 2014 +0800 xfs: fix off-by-one error in xfs_attr3_rmt_verify In particular, one kernel had this as the most recent commit and showed the current problem behavior. That is about as far back as I can go before attr3_rmt issues corrupt filesystems and cause a "Structure needs cleaning" message during the setfacl part of the test. Certianly, Jeff has improved matters with this patch. On the normal kernel git, this may correspond to kernel v3.13.0-rc7 or -rc8, certainly no earlier than -rc2. git was bouncing the version numbers around quite a bit. Before Jeff worked his wonders here, efforts to getfacl a directory with max ACLs (on a remounted, corrupt filesystem) ended like this... [ 84.819306] XFS: Assertion failed: args->op_flags & XFS_DA_OP_OKNOENT, file: fs/xfs/xfs_da_btree.c, line: 1894 [ 84.819500] ------------[ cut here ]------------ [ 84.819573] kernel BUG at fs/xfs/xfs_message.c:108! [ 84.819646] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC [ 84.819826] CPU: 0 PID: 204 Comm: getfacl Not tainted 3.12.0+ #2 [ 84.819901] Hardware name: Dell Computer Corporation L733r /CA810E , BIOS A14 09/05/2001 [ 84.820015] task: ddc7a960 ti: ddc52000 task.ti: ddc52000 [ 84.820025] EIP: 0060:[] EFLAGS: 00010296 CPU: 0 [ 84.820025] EIP is at assfail+0x2c/0x30 [ 84.820025] EAX: 00000062 EBX: 00000000 ECX: 00000007 EDX: 00000000 [ 84.820025] ESI: ddc53d4c EDI: ffffffff EBP: ddc53c88 ESP: ddc53c74 [ 84.820025] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 [ 84.820025] CR0: 8005003b CR2: b7632fd0 CR3: 1dc75000 CR4: 000007d0 [ 84.820025] Stack: [ 84.820025] 00000000 c160833c c160c854 c15fa532 00000766 ddc53cd0 c1290854 00000001 [ 84.820025] 00000002 00000008 275b19c4 ddc53d4c 00000000 ddc74010 00000001 0fe80018 [ 84.820025] 00580000 00000f90 00000000 00000000 ddc74010 ddc74014 ddc53d4c ddc53d28 [ 84.820025] Call Trace: [ 84.820025] [] xfs_da3_path_shift+0x264/0x470 [ 84.820025] [] xfs_da3_node_lookup_int+0x259/0x420 [ 84.820025] [] ? kmem_zone_alloc+0x66/0xe0 [ 84.820025] [] ? kmem_zone_zalloc+0x11/0xd0 [ 84.820025] [] xfs_attr_node_get+0x47/0x200 [ 84.820025] [] xfs_attr_get_int+0xd5/0xf0 [ 84.820025] [] xfs_attr_get+0x91/0xb0 [ 84.820025] [] xfs_get_acl+0x123/0x2c0 [ 84.820025] [] xfs_xattr_acl_get+0x1a/0x70 [ 84.820025] [] generic_getxattr+0x49/0x70 [ 84.820025] [] ? SyS_fremovexattr+0xa0/0xa0 [ 84.820025] [] vfs_getxattr+0x6a/0xa0 [ 84.820025] [] getxattr+0x83/0x1d0 [ 84.820025] [] ? complete_walk+0x94/0x260 [ 84.820025] [] ? path_lookupat+0x8c/0xba0 [ 84.820025] [] ? kmem_cache_alloc+0x4f/0x280 [ 84.820025] [] ? final_putname+0x1d/0x40 [ 84.820025] [] ? user_path_at_empty+0x4f/0x90 [ 84.820025] [] ? SyS_lstat64+0x34/0x40 [ 84.820025] [] ? user_path_at+0x1d/0x30 [ 84.820025] [] SyS_getxattr+0x58/0xa0 [ 84.820025] [] sysenter_do_call+0x12/0x36 [ 84.820025] Code: 89 e5 83 ec 14 3e 8d 74 26 00 89 44 24 08 b8 3c 83 60 c1 89 4c 24 10 89 54 24 0c 89 44 24 04 c7 04 24 00 00 00 00 e8 94 fd ff ff <0f> 0b 66 90 55 89 e5 83 ec 14 3e 8d 74 26 00 b9 01 00 00 00 89 [ 84.820025] EIP: [] assfail+0x2c/0x30 SS:ESP 0068:ddc53c74 ...and there was no real variation going back to 3.11-rc. That was about as far back as this particular glibc (built against 3.10.32) would let Linux boot. I'm happy to continue the bisect for your benefit, just running behind schedule on completing it. Thanks! Michael From robin.listas@gmail.com Wed Jul 2 04:57:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E73DB7F5D for ; Wed, 2 Jul 2014 04:57:38 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 928A0AC00D for ; Wed, 2 Jul 2014 02:57:35 -0700 (PDT) X-ASG-Debug-ID: 1404295049-04bdf05666766fe0001-NocioJ Received: from mail-wi0-f181.google.com (mail-wi0-f181.google.com [209.85.212.181]) by cuda.sgi.com with ESMTP id tB2Fbcfc4DHBTeCD (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 02 Jul 2014 02:57:30 -0700 (PDT) X-Barracuda-Envelope-From: robin.listas@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.212.181 X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.181] Received: by mail-wi0-f181.google.com with SMTP id n3so158374wiv.2 for ; Wed, 02 Jul 2014 02:57:29 -0700 (PDT) X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.181] X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.181] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:subject:message-id:user-agent:mime-version :content-type; bh=XvN1Ny83w4seD6EEnrseITmipmGvujk1Dl3P2e8MvaU=; b=CM+s+ylmp73Kt19v8xB3aMIrRYP26ng+tMeyuKfpR/A0LaU4P+EcDFzma8YJZVzd/p TnPneHc6NJTuI9TFh8pF/FiyjbZhMbKxvxLN3lrb90ElY0xB9apn3+NJpcMg7feIqGOc tQ5Fis0Dy1RrddyUIlU9jXu+l8d3jZAQZjNt4fsGnmk8dqw9vaKJnB50NcqIzlIElw8V WslJBI841cCz0ggAEaeM0yf4qg60GU5v0MplcPA3Wzu37YEEZVxHEBg9T8sjlVQla0Ga PHqsUL53ZmMHufovo2t8ZQXaUhpXwAZgNSTjKBu4Gaghp5OJPF+iawmVlzjtSOKGitxg TK2w== X-Received: by 10.181.11.232 with SMTP id el8mr3371296wid.57.1404295049029; Wed, 02 Jul 2014 02:57:29 -0700 (PDT) Received: from Telcontar.valinor (90.Red-79-150-228.dynamicIP.rima-tde.net. [79.150.228.90]) by mx.google.com with ESMTPSA id d12sm20471233wjx.0.2014.07.02.02.57.27 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Jul 2014 02:57:28 -0700 (PDT) Sender: Carlos Robinson Received: from localhost (localhost [127.0.0.1]) by Telcontar.valinor (Postfix) with ESMTP id F26746072A for ; Wed, 2 Jul 2014 11:57:25 +0200 (CEST) X-Virus-Scanned: amavisd-new at valinor Received: from Telcontar.valinor ([127.0.0.1]) by localhost (Telcontar.valinor [127.0.0.1]) (amavisd-new, port 10024) with LMTP id VbaTfcgKA3RN for ; Wed, 2 Jul 2014 11:57:25 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by Telcontar.valinor (Postfix) with ESMTP id CB562604A0 for ; Wed, 2 Jul 2014 11:57:25 +0200 (CEST) Date: Wed, 2 Jul 2014 11:57:25 +0200 (CEST) From: "Carlos E. R." X-X-Sender: cer@Telcontar.valinor To: XFS mail list Subject: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. Message-ID: X-ASG-Orig-Subj: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Barracuda-Connect: mail-wi0-f181.google.com[209.85.212.181] X-Barracuda-Start-Time: 1404295050 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7170 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 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, I got this error: <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.186436] r8169 0000:06:00.0 eth0: link up <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.615073] PM: restore of devices complete after 2735.034 msecs <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626346] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c39fe9 <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626346] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626348] CPU: 0 PID: 28875 Comm: kworker/0:2 Tainted: P O 3.11.10-11-desktop #1 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626348] Hardware name: MICRO-STAR INTERNATIONAL CO.,LTD MS-7516/MS-7516, BIOS V1.5 10/10/2008 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626388] Workqueue: xfs-eofblocks/sde5 xfs_eofblocks_worker [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626390] 0000000000000002 ffffffff815a0252 00000000002a61c2 ffffffffa0c38996 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626391] ffff8800b7025680 ffff88022eb74180 ffff880121c3fe50 0000000000000002 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626393] 0000000000000000 0000000100000000 0000000000000000 0000000000000001 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626393] Call Trace: <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626403] [] dump_trace+0x88/0x310 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626406] [] show_stack_log_lvl+0xd0/0x1d0 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626408] [] show_stack+0x1c/0x50 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626411] [] dump_stack+0x50/0x89 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626425] [] xfs_free_ag_extent+0x226/0x860 [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626468] [] xfs_free_extent+0xb9/0xf0 [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626510] [] xfs_bmap_finish+0x11e/0x170 [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626560] [] xfs_itruncate_extents+0x190/0x340 [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626623] [] xfs_free_eofblocks+0x1e3/0x260 [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626659] [] xfs_inode_free_eofblocks+0x6f/0x150 [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626688] [] xfs_inode_ag_walk.isra.10+0x1c2/0x310 [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626716] [] xfs_inode_ag_iterator_tag+0x6e/0xb0 [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626744] [] xfs_eofblocks_worker+0x12/0x20 [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626763] [] process_one_work+0x168/0x490 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626765] [] worker_thread+0x114/0x3a0 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626768] [] kthread+0xaf/0xc0 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626771] [] ret_from_fork+0x7c/0xb0 <0.5> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626776] XFS (sde5): xfs_do_force_shutdown(0x8) called from line 916 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_bmap.c. Return address = 0xffffffffa0c4c3d8 <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.706440] XFS (sde5): Corruption of in-memory data detected. Shutting down filesystem <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.706440] XFS (sde5): Please umount the filesystem and rectify the problem(s) Brief description: * It happens only on restore from hibernation. * It happens randomly, spaced a month or two. * It happens always on the same partition, the one that holds /home (I have 10 XFS partitions spread on 4 internal hard disks, and a few more external). It is a new disk, 2 TB, traditional MBR partitions. * Disk has no defects, or at least so says smartctl long test. * When it happens, recovery is impossible: xfs_repair does not seem to find anything, or maybe it does, silently; but on system reuse, it crashes again, fast. * Thus recovery procedure is to use "xfsdump" to get a backup copy, reformat the partition, and recover the files with xfsrestore. The worst issue for me is that "xfs_repair" fails to repair it. I do not have more info than what appears on the logs, but four times (two different kernels): cer@Telcontar:~> zgrep XFS_WANT_CORRUPTED_GOTO /var/log/messages*xz /var/log/messages-20140402.xz:<0.1> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111787] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1629 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c54fe9 /var/log/messages-20140402.xz:<0.1> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298345] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c54fe9 /var/log/messages-20140506.xz:<0.1> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.851374] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c54fe9 /var/log/messages-20140629.xz:<0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626346] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c39fe9 cer@Telcontar:~> The first time that this happened I used a rescue usb stick (openSUSE 13.1 xfce). xfs_repair said to mount the partition to force re-play the log. When I did, mount hung. It was unkillable. Reboot of system hung. I then used "xfs_repair -L" on that disk, which succeeded with no error report. On reuse, the system crashed soon: you can see above two entries on the same day. This last time, I simply rebooted to runlevel 3, logon as root, perform the backup, format, restore. No testing, I was in a real hurry, and even so took hours. I suppose that to diagnose this further you will want data extracted from the filesystem: you have to tell me what operations to perform to obtain that data the next time it happens, without me having to ask here for your help. It may happen tomorrow, or in two months time, so I have to be prepared for it. And as usual, it may happen at the worst time, when I have work to be done in a hurry, as this last time (or I would have asked you). The only data I have is the system logs. I don't suppose that the "xfs_dump" archive contains anything of interest? - From what I have googled, one suspect is something wrong in that partition. It was created using gparted, as the rest of the disk. This last time I used "YaST" to reformat it, not mkfs.xfs. Wait! I have a "dd" copy of the entire partition (500 GB), made on March 16th, 5 AM, so hard data could be obtained from there. I had forgotten. I'll get something for you now: Telcontar:/data/storage_d/old_backup # xfs_info xfs_copy_home meta-data=/dev/sdf2 isize=256 agcount=4, agsize=122341568 blks = sectsz=512 attr=2 data = bsize=4096 blocks=489366272, imaxpct=5 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=238948, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 Telcontar:/data/storage_d/old_backup # I could do a "xfs_metadump" on it - just tell me what options to use, and where can the result be uploaded to, if big. Current versions: Linux Telcontar 3.11.10-11-desktop #1 SMP PREEMPT Mon May 12 13:37:06 UTC 2014 (3d22b5f) x86_64 x86_64 x86_64 GNU/Linux xfs_repair version 3.1.11 CPU: Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz System: openSUSE Linux 13.1, 64 bit. - -- Cheers Carlos E. R. (from 13.1 x86_64 "Bottle" at Telcontar) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEARECAAYFAlOz14UACgkQtTMYHG2NR9XWLgCfRXInLwE/FrToinuYjpgWQyu6 dA4AnjAP0DdUvOnsdZfLVaI7wm+c7U0N =vxuS -----END PGP SIGNATURE----- From bfoster@redhat.com Wed Jul 2 07:04:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 716B67F54 for ; Wed, 2 Jul 2014 07:04:53 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 629DF304053 for ; Wed, 2 Jul 2014 05:04:50 -0700 (PDT) X-ASG-Debug-ID: 1404302688-04cb6c76d13efd80001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 4FFm6BCJ4bTJqRxg (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 02 Jul 2014 05:04:49 -0700 (PDT) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client 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 s62C4ixN025809 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 2 Jul 2014 08:04:45 -0400 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s62C4iSq008299; Wed, 2 Jul 2014 08:04:44 -0400 Received: by bfoster.bfoster (Postfix, from userid 1000) id 40C7B120188; Wed, 2 Jul 2014 08:04:43 -0400 (EDT) Date: Wed, 2 Jul 2014 08:04:43 -0400 From: Brian Foster To: "Carlos E. R." Cc: XFS mail list Subject: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. Message-ID: <20140702120441.GA51757@bfoster.bfoster> X-ASG-Orig-Subj: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) 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: 1404302688 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-BRTS-Status: 1 On Wed, Jul 02, 2014 at 11:57:25AM +0200, Carlos E. R. wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > > > Hi, > > I got this error: > > > <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.186436] r8169 0000:06:00.0 eth0: link up > <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.615073] PM: restore of devices complete after 2735.034 msecs > <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626346] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c39fe9 > <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626346] <0.4> > 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626348] CPU: 0 PID: 28875 > Comm: kworker/0:2 Tainted: P O 3.11.10-11-desktop #1 > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626348] Hardware name: MICRO-STAR INTERNATIONAL CO.,LTD MS-7516/MS-7516, BIOS V1.5 10/10/2008 > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626388] Workqueue: xfs-eofblocks/sde5 xfs_eofblocks_worker [xfs] > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626390] 0000000000000002 ffffffff815a0252 00000000002a61c2 ffffffffa0c38996 > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626391] ffff8800b7025680 ffff88022eb74180 ffff880121c3fe50 0000000000000002 > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626393] 0000000000000000 0000000100000000 0000000000000000 0000000000000001 > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626393] Call Trace: > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626403] [] dump_trace+0x88/0x310 > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626406] [] show_stack_log_lvl+0xd0/0x1d0 > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626408] [] show_stack+0x1c/0x50 > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626411] [] dump_stack+0x50/0x89 > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626425] [] xfs_free_ag_extent+0x226/0x860 [xfs] > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626468] [] xfs_free_extent+0xb9/0xf0 [xfs] > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626510] [] xfs_bmap_finish+0x11e/0x170 [xfs] > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626560] [] xfs_itruncate_extents+0x190/0x340 [xfs] > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626623] [] xfs_free_eofblocks+0x1e3/0x260 [xfs] > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626659] [] xfs_inode_free_eofblocks+0x6f/0x150 [xfs] > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626688] [] xfs_inode_ag_walk.isra.10+0x1c2/0x310 [xfs] > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626716] [] xfs_inode_ag_iterator_tag+0x6e/0xb0 [xfs] > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626744] [] xfs_eofblocks_worker+0x12/0x20 [xfs] > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626763] [] process_one_work+0x168/0x490 > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626765] [] worker_thread+0x114/0x3a0 > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626768] [] kthread+0xaf/0xc0 > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626771] [] ret_from_fork+0x7c/0xb0 > <0.5> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626776] XFS (sde5): xfs_do_force_shutdown(0x8) called from line 916 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_bmap.c. Return address = 0xffffffffa0c4c3d8 > <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.706440] XFS (sde5): Corruption of in-memory data detected. Shutting down filesystem > <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.706440] XFS (sde5): Please umount the filesystem and rectify the problem(s) > This is the background eofblocks scanner attempting to free preallocated space on a file. The scanner looks for files that have been recently grown and since been flushed to disk (i.e., no longer concurrently being written to) and trims the post-eof preallocation that comes along with growing files. The corruption errors at xfs_alloc.c:1602,1629 on v3.11 fire if the extent we are attempting to free is already accounted for in the by-block allocation btree. IOW, this is attempting to free an extent that the allocation metadata thinks is already free. > > Brief description: > > > * It happens only on restore from hibernation. Interesting, could you elaborate a bit more on the behavior this system is typically subjected to? i.e., is this a server that sees a constant workload that is also frequently hibernated/awakened? > * It happens randomly, spaced a month or two. > * It happens always on the same partition, the one that holds /home > (I have 10 XFS partitions spread on 4 internal hard disks, and a few > more external). It is a new disk, 2 TB, traditional MBR partitions. > * Disk has no defects, or at least so says smartctl long test. > * When it happens, recovery is impossible: xfs_repair does not seem to > find anything, or maybe it does, silently; but on system reuse, > it crashes again, fast. > * Thus recovery procedure is to use "xfsdump" to get a backup copy, > reformat the partition, and recover the files with xfsrestore. > > > The worst issue for me is that "xfs_repair" fails to repair it. > > I do not have more info than what appears on the logs, but four times (two > different kernels): > > cer@Telcontar:~> zgrep XFS_WANT_CORRUPTED_GOTO /var/log/messages*xz > /var/log/messages-20140402.xz:<0.1> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111787] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1629 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c54fe9 > /var/log/messages-20140402.xz:<0.1> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298345] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c54fe9 > /var/log/messages-20140506.xz:<0.1> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.851374] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c54fe9 > /var/log/messages-20140629.xz:<0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626346] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c39fe9 > cer@Telcontar:~> > > > The first time that this happened I used a rescue usb stick (openSUSE 13.1 > xfce). xfs_repair said to mount the partition to force re-play the log. When > I did, mount hung. It was unkillable. Reboot of system hung. I then used > "xfs_repair -L" on that disk, which succeeded with no error report. On > reuse, the system crashed soon: you can see above two entries on the same > day. > > This last time, I simply rebooted to runlevel 3, logon as root, perform the > backup, format, restore. No testing, I was in a real hurry, and even so took > hours. > So you have reproduced this, reformatted with mkfs, restored from backups and continued to reproduce the problem? And still only on this particular partition? This is interesting because the corruption appears to be associated with post-eof space, which is generally transient. The worst case is that this space is trimmed off files when they are evicted from cache, such as during a umount. To me, that seems to correlate with a more recent/runtime problem rather than something that might be lingering on disk, but we don't really know for sure. > > I suppose that to diagnose this further you will want data extracted from > the filesystem: you have to tell me what operations to perform to obtain > that data the next time it happens, without me having to ask here for your > help. It may happen tomorrow, or in two months time, so I have to be > prepared for it. And as usual, it may happen at the worst time, when I have > work to be done in a hurry, as this last time (or I would have asked you). > > The only data I have is the system logs. > > I don't suppose that the "xfs_dump" archive contains anything of interest? > > - From what I have googled, one suspect is something wrong in that > partition. It was created using gparted, as the rest of the disk. This last > time I used "YaST" to reformat it, not mkfs.xfs. > > > > Wait! I have a "dd" copy of the entire partition (500 GB), made on March > 16th, 5 AM, so hard data could be obtained from there. I had forgotten. I'll > get something for you now: > > > Telcontar:/data/storage_d/old_backup # xfs_info xfs_copy_home > meta-data=/dev/sdf2 isize=256 agcount=4, agsize=122341568 > blks > = sectsz=512 attr=2 > data = bsize=4096 blocks=489366272, imaxpct=5 > = sunit=0 swidth=0 blks > naming =version 2 bsize=4096 ascii-ci=0 > log =internal bsize=4096 blocks=238948, version=2 > = sectsz=512 sunit=0 blks, lazy-count=1 > realtime =none extsz=4096 blocks=0, rtextents=0 > Telcontar:/data/storage_d/old_backup # > > > I could do a "xfs_metadump" on it - just tell me what options to use, and > where can the result be uploaded to, if big. > A metadump would be helpful, though that only gives us the on-disk state. What was the state of this fs at the time the dd image was created? I'm curious if something like an 'rm -rf *' on the metadump would catch any other corruptions or if this is indeed limited to something associated with recent (pre)allocations. Run 'xfs_metadump ' to create a metadump that will obfuscate filenames by default. It should also be compressible. In the future, it's probably worth grabbing a metadump as a first step (before repair, zeroing the log, etc.) so we can look at the fs in the state most recent to the crash. Brian > > > Current versions: > > Linux Telcontar 3.11.10-11-desktop #1 SMP PREEMPT Mon May 12 13:37:06 UTC 2014 (3d22b5f) x86_64 x86_64 x86_64 GNU/Linux > > xfs_repair version 3.1.11 > > CPU: Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz > > System: openSUSE Linux 13.1, 64 bit. > > > - -- Cheers > Carlos E. R. > > (from 13.1 x86_64 "Bottle" at Telcontar) > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v2.0.22 (GNU/Linux) > > iEYEARECAAYFAlOz14UACgkQtTMYHG2NR9XWLgCfRXInLwE/FrToinuYjpgWQyu6 > dA4AnjAP0DdUvOnsdZfLVaI7wm+c7U0N > =vxuS > -----END PGP SIGNATURE----- > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From alex@zadarastorage.com Wed Jul 2 07:27:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.9 required=5.0 tests=STOX_REPLY_TYPE autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 8319C7F54 for ; Wed, 2 Jul 2014 07:27:33 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6A6378F8040 for ; Wed, 2 Jul 2014 05:27:30 -0700 (PDT) X-ASG-Debug-ID: 1404304047-04cbb06536226890001-NocioJ Received: from mail-wi0-f180.google.com (mail-wi0-f180.google.com [209.85.212.180]) by cuda.sgi.com with ESMTP id Df2aD4MCGhz3f2FT (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 02 Jul 2014 05:27:28 -0700 (PDT) X-Barracuda-Envelope-From: alex@zadarastorage.com X-Barracuda-Apparent-Source-IP: 209.85.212.180 Received: by mail-wi0-f180.google.com with SMTP id hi2so371252wib.13 for ; Wed, 02 Jul 2014 05:27:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:from:to:cc:references:in-reply-to :subject:date:mime-version:content-type:content-transfer-encoding :importance; bh=7wy1/GA7rZ4prUTTRhrGJW7K+puQXL3dYS1fsMMxgPg=; b=c3iXbReYdmO8XZppaLwJfgFgbZ667x85Vp4LTNRraIKz4bfHmv/tv5pSVhkGK2ft+a YN15lVzNCtc/kj3zT2rA8arqd1GqWyqOTq4r7TinvMX68rt3MEYcpMkI8dMaarl2iEVq bqqgiMH0GxrYQdIEX7ATEUK5uUAO+oltgiCpb45f7yO272jvByS7T+CcyqOE+z0HTAT2 d85WROCjCfBozAJzbzH0yEV0ZPpKInkvuHg3409f2DY3EdIX3XnxrnXSLoKL3F8xa6od d9AQdAKlQwnMcnBom0ps0nqdiDl7OlvhUdfoP9j6JZU9bLEvfhvd2tjJdr5HSbqq98Ox Bgyw== X-Gm-Message-State: ALoCoQmjykNHy/+l3lGnZm1R6khNsitZVdU9WK2yYnMJYhiUzU1httB/zNeFIQkwglUjxAX+6I3B X-Received: by 10.180.108.103 with SMTP id hj7mr43830425wib.82.1404304042273; Wed, 02 Jul 2014 05:27:22 -0700 (PDT) Received: from alyakaslap ([212.143.144.103]) by mx.google.com with ESMTPSA id pq9sm54787708wjc.35.2014.07.02.05.27.20 for (version=TLSv1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 02 Jul 2014 05:27:21 -0700 (PDT) Message-ID: From: "Alex Lyakas" To: "Dave Chinner" Cc: References: <20131226230018.GJ20579@dastard> <20140113030230.GF3469@dastard> <20140113204314.GJ3469@dastard> <20140115014503.GQ3469@dastard> <20140119231745.GF18112@dastard> <4B2A412C75324EE9880358513C069476@alyakaslap> <20140701215626.GE9508@dastard> In-Reply-To: <20140701215626.GE9508@dastard> Subject: Re: xfs_growfs_data_private memory leak Date: Wed, 2 Jul 2014 15:27:25 +0300 X-ASG-Orig-Subj: Re: xfs_growfs_data_private memory leak MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal Importance: Normal X-Mailer: Microsoft Windows Live Mail 15.4.3555.308 X-MimeOLE: Produced By Microsoft MimeOLE V15.4.3555.308 X-Barracuda-Connect: mail-wi0-f180.google.com[209.85.212.180] X-Barracuda-Start-Time: 1404304047 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-BRTS-Status: 1 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=2.7 tests=BSF_SC0_MISMATCH_TO, STOX_REPLY_TYPE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7173 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 STOX_REPLY_TYPE STOX_REPLY_TYPE 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header Hi Dave, Thank you for your comments. I realize that secondary superblocks are needed mostly for repairing a broken filesystem. However, I don't see that they get updated regularly, i.e., during normal operation they don't seem to get updated at all. I put a print in xfs_sb_write_verify, and it gets called only with: bp->b_bn==XFS_SB_DADDR. So do I understand correctly (also from comments in xfs_growfs_data_private), that it is safe to operate a filesystem while having broken secondary superblocks? For me, it appears to mount properly, and all the data seems to be there, but xfs_check complains like: bad sb magic # 0xc2a4baf2 in ag 6144 bad sb version # 0x4b5d in ag 6144 blocks 6144/65536..2192631388 out of range blocks 6144/65536..2192631388 claimed by block 6144/0 bad sb magic # 0xb20f3079 in ag 6145 bad sb version # 0x6505 in ag 6145 blocks 6145/65536..3530010017 out of range blocks 6145/65536..3530010017 claimed by block 6145/0 ... Also, if secondary superblocks do not get updated regularly, and there is no way to ask an operational XFS to update them, then during repair we may not find a good secondary superblock. As for the patch, I cannot post a patch against the upstream kernel, because I am running an older kernel. Unfortunately, I cannot qualify an upstream patch properly in a reasonable time. Is there a value in posting a patch against 3.8.13? Otherwise, it's fine by me if somebody else posts it and takes the credit. Thanks, Alex. -----Original Message----- From: Dave Chinner Sent: 02 July, 2014 12:56 AM To: Alex Lyakas Cc: xfs@oss.sgi.com Subject: Re: xfs_growfs_data_private memory leak On Tue, Jul 01, 2014 at 06:06:38PM +0300, Alex Lyakas wrote: > Greetings, > > It appears that if xfs_growfs_data_private fails during the "new AG > headers" loop, it does not free all the per-AG structures for the > new AGs. When XFS is unmounted later, they are not freed as well, > because xfs_growfs_data_private did not update the "sb_agcount" > field, so xfs_free_perag will not free them. This happens on 3.8.13, > but looking at the latest master branch, it seems to have the same > issue. > > Code like [1] in xfs_growfs_data, seems to fix the issue. Why not just do this in the appropriate error stack, like is done inside xfs_initialize_perag() on error? for (i = oagcount; i < nagcount; i++) { pag = radix_tree_delete(&mp->m_perag_tree, index); kmem_free(pag); } (though it might need RCU freeing) When you have a fix, can you send a proper patch with a sign-off on it? > A follow-up question: if xfs_grows_data_private fails during the > loop that updates all the secondary superblocks, what is the > consequence? (I am aware that in the latest master branch, the loop > is not broken on first error, but attempts to initialize whatever > possible). When these secondary superblocks will get updated? Is > there a way to force-update them? Otherwise, what can be the > consequence of leaving them not updated? The consequence is documented in mainline tree - if we don't update them all, then repair will do the wrong thing. Repair requires a majority iof identical secondaries to determine if the primary is correct or out of date. The old behaviour of not updating after the first error meant that the majority were old superblocks and so at some time in the future repair could decide your filesystem is smaller than it really is and hence truncate away the grown section of the filesystem. i.e. trigger catastrophic, unrecoverable data loss. Hence it's far better to write every seconday we can than to leave a majority in a bad state.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From tinguely@sgi.com Wed Jul 2 08:07:59 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 6C6BD7F54 for ; Wed, 2 Jul 2014 08:07:59 -0500 (CDT) Received: from eagdhcp-232-174.americas.sgi.com (eagdhcp-232-174.americas.sgi.com [128.162.232.174]) by relay1.corp.sgi.com (Postfix) with ESMTP id 3B6D18F8059; Wed, 2 Jul 2014 06:07:55 -0700 (PDT) Message-ID: <53B40427.6060302@sgi.com> Date: Wed, 02 Jul 2014 08:07:51 -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: Brian Foster CC: "Carlos E. R." , XFS mail list Subject: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. References: <20140702120441.GA51757@bfoster.bfoster> In-Reply-To: <20140702120441.GA51757@bfoster.bfoster> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 07/02/14 07:04, Brian Foster wrote: > On Wed, Jul 02, 2014 at 11:57:25AM +0200, Carlos E. R. wrote: >> -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA1 >> >> >> >> Hi, >> >> I got this error: >> >> >> <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.186436] r8169 0000:06:00.0 eth0: link up >> <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.615073] PM: restore of devices complete after 2735.034 msecs >> <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626346] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c39fe9 >> <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626346]<0.4> >> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626348] CPU: 0 PID: 28875 >> Comm: kworker/0:2 Tainted: P O 3.11.10-11-desktop #1 >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626348] Hardware name: MICRO-STAR INTERNATIONAL CO.,LTD MS-7516/MS-7516, BIOS V1.5 10/10/2008 >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626388] Workqueue: xfs-eofblocks/sde5 xfs_eofblocks_worker [xfs] >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626390] 0000000000000002 ffffffff815a0252 00000000002a61c2 ffffffffa0c38996 >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626391] ffff8800b7025680 ffff88022eb74180 ffff880121c3fe50 0000000000000002 >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626393] 0000000000000000 0000000100000000 0000000000000000 0000000000000001 >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626393] Call Trace: >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626403] [] dump_trace+0x88/0x310 >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626406] [] show_stack_log_lvl+0xd0/0x1d0 >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626408] [] show_stack+0x1c/0x50 >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626411] [] dump_stack+0x50/0x89 >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626425] [] xfs_free_ag_extent+0x226/0x860 [xfs] >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626468] [] xfs_free_extent+0xb9/0xf0 [xfs] >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626510] [] xfs_bmap_finish+0x11e/0x170 [xfs] >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626560] [] xfs_itruncate_extents+0x190/0x340 [xfs] >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626623] [] xfs_free_eofblocks+0x1e3/0x260 [xfs] >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626659] [] xfs_inode_free_eofblocks+0x6f/0x150 [xfs] >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626688] [] xfs_inode_ag_walk.isra.10+0x1c2/0x310 [xfs] >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626716] [] xfs_inode_ag_iterator_tag+0x6e/0xb0 [xfs] >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626744] [] xfs_eofblocks_worker+0x12/0x20 [xfs] >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626763] [] process_one_work+0x168/0x490 >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626765] [] worker_thread+0x114/0x3a0 >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626768] [] kthread+0xaf/0xc0 >> <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626771] [] ret_from_fork+0x7c/0xb0 >> <0.5> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626776] XFS (sde5): xfs_do_force_shutdown(0x8) called from line 916 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_bmap.c. Return address = 0xffffffffa0c4c3d8 >> <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.706440] XFS (sde5): Corruption of in-memory data detected. Shutting down filesystem >> <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.706440] XFS (sde5): Please umount the filesystem and rectify the problem(s) >> > > This is the background eofblocks scanner attempting to free preallocated > space on a file. The scanner looks for files that have been recently > grown and since been flushed to disk (i.e., no longer concurrently being > written to) and trims the post-eof preallocation that comes along with > growing files. > > The corruption errors at xfs_alloc.c:1602,1629 on v3.11 fire if the > extent we are attempting to free is already accounted for in the > by-block allocation btree. IOW, this is attempting to free an extent > that the allocation metadata thinks is already free. > >> >> Brief description: >> >> >> * It happens only on restore from hibernation. > > Interesting, could you elaborate a bit more on the behavior this system > is typically subjected to? i.e., is this a server that sees a constant > workload that is also frequently hibernated/awakened? > >> * It happens randomly, spaced a month or two. >> * It happens always on the same partition, the one that holds /home >> (I have 10 XFS partitions spread on 4 internal hard disks, and a few >> more external). It is a new disk, 2 TB, traditional MBR partitions. >> * Disk has no defects, or at least so says smartctl long test. >> * When it happens, recovery is impossible: xfs_repair does not seem to >> find anything, or maybe it does, silently; but on system reuse, >> it crashes again, fast. >> * Thus recovery procedure is to use "xfsdump" to get a backup copy, >> reformat the partition, and recover the files with xfsrestore. >> >> >> The worst issue for me is that "xfs_repair" fails to repair it. what version of xfs_repair? Did you try to mount to replay the log before repair? Besides Brian's good advice, is kdump configured to dump vmcore? --Mark. From sean.zhang@yiguandns.com.cn Wed Jul 2 08:13:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 5FA507F55 for ; Wed, 2 Jul 2014 08:13:52 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 4F18C304070 for ; Wed, 2 Jul 2014 06:13:48 -0700 (PDT) X-ASG-Debug-ID: 1404306823-04cbb06537227e10001-NocioJ Received: from lucky1.263.net (lucky1.263xmail.com [211.157.147.132]) by cuda.sgi.com with ESMTP id 03pOlNnleA8UmsH2 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 02 Jul 2014 06:13:44 -0700 (PDT) X-Barracuda-Envelope-From: sean.zhang@yiguandns.com.cn X-Barracuda-Apparent-Source-IP: 211.157.147.132 Received: from sean.zhang?yiguandns.com.cn (unknown [192.168.195.82]) by lucky1.263.net (Postfix) with SMTP id 218D8207AD for ; Wed, 2 Jul 2014 21:13:40 +0800 (CST) X-263anti-spam:BIG:0;KSV:0; X-MAIL-GRAY:1 X-MAIL-DELIVERY:0 X-ABS-CHECKED:1 X-KSVirus-check:0 Received: from yiguandns.com.cn (localhost.localdomain [127.0.0.1]) by smtp.263.net (Postfix) with SMTP id 5AF9E422 for ; Wed, 2 Jul 2014 21:13:39 +0800 (CST) X-RL-SENDER:sean.zhang@yiguandns.com.cn X-FST-TO:xfs@oss.sgi.com X-SENDER-IP:222.64.109.165 X-LOGIN-NAME:sean.zhang@yiguandns.com.cn X-UNIQUE-TAG: X-ATTACHMENT-NUM:0 X-SENDER:sean.zhang@yiguandns.com.cn X-DNS-TYPE:7 Received: from yiguandns.com.cn (165.109.64.222.broad.xw.sh.dynamic.163data.com.cn [222.64.109.165]) by smtp.263.net (Postfix) whith SMTP id 2095S791HC; Wed, 02 Jul 2014 21:13:39 +0800 (CST) Date: Wed, 02 Jul 2014 21:13:22 +0800 From: =?gb2312?B?U2VhbiBaaGFuZw==?= To: Subject: =?gb2312?B?eGZzIGRvbWFpbiBhbmQga2V5d29yZCBpbiBDTg==?= Mime-Version: 1.0 X-ASG-Orig-Subj: =?gb2312?B?eGZzIGRvbWFpbiBhbmQga2V5d29yZCBpbiBDTg==?= Content-Type: multipart/alternative; boundary="----=_NextPart_001_00C5_01CA2C7D.036CC4EE" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express X-MimeOLE: Produced By Microsoft MimeOLE Message-Id: <20140702131339.5AF9E422@smtp.263.net> X-Barracuda-Connect: lucky1.263xmail.com[211.157.147.132] X-Barracuda-Start-Time: 1404306824 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-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.06 X-Barracuda-Spam-Status: No, SCORE=1.06 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=FROM_EXCESS_BASE64, FROM_EXCESS_BASE64_2, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7173 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.01 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily 1.05 FROM_EXCESS_BASE64_2 From: base64 encoded unnecessarily This is a multi-part message in MIME format. ------=_NextPart_001_00C5_01CA2C7D.036CC4EE Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: base64 KFBsZWFzZSBmb3J3YXJkIHRoaXMgdG8geW91ciBDRU8sIGJlY2F1c2UgdGhpcyBpcyB1cmdlbnQu IFRoYW5rcykNCg0KV2UgYXJlIGEgTmV0d29yayBTZXJ2aWNlIENvbXBhbnkgd2hpY2ggaXMgdGhl IGRvbWFpbiBuYW1lIHJlZ2lzdHJhdGlvbiBjZW50ZXIgaW4gU2hhbmdoYWksIENoaW5hLiBPbiBK dWx5IDEsIDIwMTQsIHdlIHJlY2VpdmVkIGFuIGFwcGxpY2F0aW9uIGZyb20gSHVhZmkgSG9sZGlu Z3MgTHRkIHJlcXVlc3RlZCAieGZzIiBhcyB0aGVpciBpbnRlcm5ldCBrZXl3b3JkIGFuZCBDaGlu YSAoQ04pIGRvbWFpbiBuYW1lcy4gQnV0IGFmdGVyIGNoZWNraW5nIGl0LCB3ZSBmaW5kIHRoaXMg bmFtZSBjb25mbGljdCB3aXRoIHlvdXIgY29tcGFueSBuYW1lIG9yIHRyYWRlbWFyay4gSW4gb3Jk ZXIgdG8gZGVhbCB3aXRoIHRoaXMgbWF0dGVyIGJldHRlciwgaXQncyBuZWNlc3NhcnkgdG8gc2Vu ZCBlbWFpbCB0byB5b3UgYW5kIGNvbmZpcm0gd2hldGhlciB0aGlzIGNvbXBhbnkgaXMgeW91ciBk aXN0cmlidXRvciBvciBidXNpbmVzcyBwYXJ0bmVyIGluIENoaW5hPyANCg0KDQpLaW5kIHJlZ2Fy ZHMNCg0KU2VhbiBaaGFuZw0KR2VuZXJhbCBNYW5hZ2VyDQpTaGFuZ2hhaSBPZmZpY2UgKEhlYWRx dWFydGVycykNCkIwNiwgWXVqaW5nIEJ1aWxkaW5nLCBOby4xIEppaGUgUm9hZCwNClNoYW5naGFp IDIwMTEwNywgQ2hpbmENClRlbDogKzg2IDIxIDYxOTEgODY5Ng0KTW9iaWxlOiArODYgMTM4IDE2 NDIgODY3MQ0KRmF4OiArODYgMjEgNjE5MSA4Njk3DQpXZWI6IHd3dy55aWd1YW5kbnMuY29tLmNu ------=_NextPart_001_00C5_01CA2C7D.036CC4EE Content-Type: text/html; charset="GB2312" Content-Transfer-Encoding: base64 PEhUTUw+PEhFQUQ+PFRJVExFPnhmcyBkb21haW4gYW5kIGtleXdvcmQgaW4gQ048L1RJVExFPg0K PE1FVEEgbmFtZT1HRU5FUkFUT1IgY29udGVudD0iTVNIVE1MIDEwLjAwLjkyMDAuMTY5MjEiPjwv SEVBRD4NCjxCT0RZPg0KPERJVj4NCjxESVY+PEZPTlQgY29sb3I9ZGFya2JsdWUgc2l6ZT0yPjwv Rk9OVD4NCjxESVY+PEZPTlQgY29sb3I9ZGFya2JsdWUgc2l6ZT0yPjxGT05UIGNvbG9yPWJsYWNr PjxGT05UIHNpemU9KzA+PEZPTlQgc2l6ZT0yPjxTUEFOIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7 IEZPTlQtRkFNSUxZOiAnQXJpYWwnLCdzYW5zLXNlcmlmJzsgQ09MT1I6IGJsYWNrIj48U1BBTiBz dHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBGT05ULUZBTUlMWTogJ0FyaWFsJywnc2Fucy1zZXJpZic7 IENPTE9SOiBibGFjayI+PEZPTlQgY29sb3I9ZGFya2JsdWU+PFNQQU4gc3R5bGU9IkZPTlQtU0la RTogMTBwdDsgRk9OVC1GQU1JTFk6ICdBcmlhbCcsJ3NhbnMtc2VyaWYnOyBDT0xPUjogYmxhY2si PjxGT05UIGNvbG9yPWRhcmtibHVlPjxGT05UIGNvbG9yPWRhcmtibHVlPjwvRk9OVD48L0ZPTlQ+ PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9TUEFOPjwvRk9OVD48L0ZPTlQ+PC9GT05UPjwvRk9OVD4N CjxESVY+PEZPTlQgY29sb3I9ZGFya2JsdWUgc2l6ZT0yPjxGT05UIHNpemU9KzA+PEZPTlQgc2l6 ZT0yPjxGT05UIGNvbG9yPWRhcmtibHVlPjxGT05UIGNvbG9yPWRhcmtibHVlPjxGT05UIGNvbG9y PWRhcmtibHVlPjwvRk9OVD48L0ZPTlQ+PC9GT05UPjwvRk9OVD48L0ZPTlQ+PC9GT05UPg0KPERJ Vj48Rk9OVCBjb2xvcj1kYXJrYmx1ZSBzaXplPTI+PEZPTlQgc2l6ZT0rMD48Rk9OVCBzaXplPTI+ PEZPTlQgY29sb3I9ZGFya2JsdWU+PEZPTlQgY29sb3I9ZGFya2JsdWU+PEZPTlQgY29sb3I9ZGFy a2JsdWU+PC9GT05UPjwvRk9OVD48L0ZPTlQ+PC9GT05UPjwvRk9OVD48L0ZPTlQ+DQo8RElWPjxG T05UIGNvbG9yPWRhcmtibHVlIHNpemU9Mj48Rk9OVCBzaXplPSswPjxGT05UIHNpemU9Mj48Rk9O VCBjb2xvcj1kYXJrYmx1ZT48Rk9OVCBjb2xvcj1kYXJrYmx1ZT48Rk9OVCBjb2xvcj1kYXJrYmx1 ZT48L0ZPTlQ+PC9GT05UPjwvRk9OVD48L0ZPTlQ+PC9GT05UPjwvRk9OVD4NCjxESVY+PEZPTlQg Y29sb3I9ZGFya2JsdWUgc2l6ZT0yPjxGT05UIHNpemU9KzA+PEZPTlQgc2l6ZT0yPjxGT05UIGNv bG9yPWRhcmtibHVlPjxGT05UIGNvbG9yPWRhcmtibHVlPjxGT05UIGNvbG9yPWRhcmtibHVlPjwv Rk9OVD48L0ZPTlQ+PC9GT05UPjwvRk9OVD48L0ZPTlQ+PC9GT05UPg0KPERJVj48Rk9OVCBjb2xv cj1kYXJrYmx1ZSBzaXplPTI+PEZPTlQgc2l6ZT0rMD48Rk9OVCBzaXplPTI+PEZPTlQgY29sb3I9 ZGFya2JsdWU+PEZPTlQgY29sb3I9ZGFya2JsdWU+PEZPTlQgY29sb3I9ZGFya2JsdWU+PC9GT05U PjwvRk9OVD48L0ZPTlQ+PC9GT05UPjwvRk9OVD48L0ZPTlQ+DQo8RElWPjxGT05UIGNvbG9yPWRh cmtibHVlIHNpemU9Mj48Rk9OVCBzaXplPSswPjxGT05UIHNpemU9Mj48Rk9OVCBjb2xvcj1kYXJr Ymx1ZT48Rk9OVCBjb2xvcj1kYXJrYmx1ZT48Rk9OVCBjb2xvcj1kYXJrYmx1ZT4NCjxESVY+PEZP TlQgY29sb3I9IzAwMDAwMCBmYWNlPUFyaWFsPg0KPERJVj48Rk9OVCBjb2xvcj0jMDAwMDAwPg0K PERJVj48Rk9OVCBjb2xvcj0jMDAwMDAwIGZhY2U9QXJpYWw+DQo8RElWPjxGT05UIGNvbG9yPSMw MDQwODAgc2l6ZT0zIGZhY2U9Q2FsaWJyaT4oUGxlYXNlIGZvcndhcmQgdGhpcyB0byB5b3VyIENF TywgYmVjYXVzZSB0aGlzIGlzIHVyZ2VudC4gVGhhbmtzKTxCUj48QlI+V2UgYXJlIGEgTmV0d29y ayBTZXJ2aWNlIENvbXBhbnkgd2hpY2ggaXMgdGhlIGRvbWFpbiBuYW1lIHJlZ2lzdHJhdGlvbiBj ZW50ZXIgaW4gU2hhbmdoYWksIENoaW5hLiBPbiBKdWx5Jm5ic3A7MSwgMjAxNCwgd2UgcmVjZWl2 ZWQgYW4gYXBwbGljYXRpb24gZnJvbSBIdWFmaSBIb2xkaW5ncyBMdGQgcmVxdWVzdGVkICJ4ZnMi IGFzIHRoZWlyIGludGVybmV0IGtleXdvcmQgYW5kIENoaW5hIChDTikgZG9tYWluIG5hbWVzLiBC dXQgYWZ0ZXIgY2hlY2tpbmcgaXQsIHdlIGZpbmQgdGhpcyBuYW1lIGNvbmZsaWN0IHdpdGggeW91 ciBjb21wYW55IG5hbWUgb3IgdHJhZGVtYXJrLiBJbiBvcmRlciB0byBkZWFsIHdpdGggdGhpcyBt YXR0ZXIgYmV0dGVyLCBpdCdzIG5lY2Vzc2FyeSB0byBzZW5kIGVtYWlsIHRvIHlvdSBhbmQgY29u ZmlybSB3aGV0aGVyIHRoaXMgY29tcGFueSBpcyB5b3VyIGRpc3RyaWJ1dG9yIG9yIGJ1c2luZXNz IHBhcnRuZXIgaW4gQ2hpbmE/IDxCUj48QlI+PC9GT05UPjwvRElWPg0KPERJVj48Rk9OVCBjb2xv cj0jMDA0MDgwIHNpemU9MyBmYWNlPUNhbGlicmk+S2luZCByZWdhcmRzPEJSPjxCUj48L0ZPTlQ+ PEZPTlQgZmFjZT1DYWxpYnJpPjxGT05UIHNpemU9Mz48Rk9OVCBjb2xvcj0jMDA0MDgwPjxTVFJP Tkc+U2VhbiBaaGFuZzxCUj48L1NUUk9ORz5HZW5lcmFsIE1hbmFnZXI8QlI+PC9GT05UPjwvRk9O VD48L0ZPTlQ+PEZPTlQgZmFjZT1DYWxpYnJpPjxGT05UIHNpemU9Mz48Rk9OVCBjb2xvcj0jMDA0 MDgwPjxTVFJPTkc+U2hhbmdoYWkgT2ZmaWNlIChIZWFkcXVhcnRlcnMpPEJSPjwvU1RST05HPkIw NiwgWXVqaW5nIEJ1aWxkaW5nLCBOby4xIEppaGUgUm9hZCw8QlI+U2hhbmdoYWkgMjAxMTA3LCBD aGluYTxCUj5UZWw6ICs4NiAyMSA2MTkxIDg2OTY8QlI+TW9iaWxlOiArODYgMTM4IDE2NDIgODY3 MTxCUj5GYXg6ICs4NiAyMSA2MTkxIDg2OTc8QlI+V2ViOiA8L0ZPTlQ+PEZPTlQgY29sb3I9IzAw NDA4MD48QSBocmVmPSJodHRwOi8vd3d3LnlpZ3VhbmRucy5jb20uY24iPnd3dy55aWd1YW5kbnMu Y29tLmNuPC9BPjwvRk9OVD48L0ZPTlQ+PC9GT05UPjxGT05UIGNvbG9yPWJsYWNrPjxCUj48L0ZP TlQ+PC9ESVY+PC9GT05UPjwvRElWPjwvRk9OVD48L0RJVj48L0ZPTlQ+PC9ESVY+PC9GT05UPjwv Rk9OVD48L0ZPTlQ+PC9GT05UPjwvRk9OVD48L0ZPTlQ+PC9ESVY+PC9ESVY+PC9ESVY+PC9ESVY+ PC9ESVY+PC9ESVY+PC9ESVY+PC9ESVY+PC9ESVY+PC9CT0RZPjwvSFRNTD4= ------=_NextPart_001_00C5_01CA2C7D.036CC4EE-- From tinguely@eagdhcp-232-174.americas.sgi.com Wed Jul 2 09:52:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B6A647F55 for ; Wed, 2 Jul 2014 09:52:19 -0500 (CDT) Received: from eagdhcp-232-174.americas.sgi.com (eagdhcp-232-174.americas.sgi.com [128.162.232.174]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7D6478F8049 for ; Wed, 2 Jul 2014 07:52:19 -0700 (PDT) Received: from eagdhcp-232-174.americas.sgi.com (localhost [127.0.0.1]) by eagdhcp-232-174.americas.sgi.com (8.14.5/8.14.5) with ESMTP id s62EqFer005637 for ; Wed, 2 Jul 2014 09:52:15 -0500 (CDT) (envelope-from tinguely@eagdhcp-232-174.americas.sgi.com) Received: (from tinguely@localhost) by eagdhcp-232-174.americas.sgi.com (8.14.5/8.14.5/Submit) id s62EqFmS005636; Wed, 2 Jul 2014 09:52:15 -0500 (CDT) (envelope-from tinguely) Message-Id: <20140702144139.894251516@sgi.com> User-Agent: quilt/0.51-1 Date: Wed, 02 Jul 2014 09:32:10 -0500 From: Mark Tinguely To: xfs@oss.sgi.com Subject: [PATCH 4/5] xfs: free inodes on log recovery error References: <20140702143206.438456679@sgi.com> Content-Disposition: inline; filename=xfs-reclaim-inodes-on-recovery-fail.patch Recovery may free inodes that end up on the inode reclaim RCU. If recovery fails, we leak these inodes. The filesystem should be in forced shutdown at this point, so a call to xfs_reclaim_inode is a fast path to freeing the inodes and RCU entries. Signed-off-by: Mark Tinguely --- fs/xfs/xfs_log.c | 2 ++ fs/xfs/xfs_mount.c | 1 + 2 files changed, 3 insertions(+) Index: b/fs/xfs/xfs_log.c =================================================================== --- a/fs/xfs/xfs_log.c +++ b/fs/xfs/xfs_log.c @@ -31,6 +31,7 @@ #include "xfs_log_priv.h" #include "xfs_log_recover.h" #include "xfs_inode.h" +#include "xfs_icache.h" #include "xfs_trace.h" #include "xfs_fsops.h" #include "xfs_cksum.h" @@ -720,6 +721,7 @@ xfs_log_mount( return 0; out_destroy_ail: + xfs_reclaim_inodes(mp, SYNC_WAIT); xfs_trans_ail_destroy(mp); out_free_log: xlog_dealloc_log(mp->m_log); Index: b/fs/xfs/xfs_mount.c =================================================================== --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -980,6 +980,7 @@ xfs_mountfs( out_log_dealloc: xfs_log_unmount(mp); out_fail_wait: + xfs_reclaim_inodes(mp, SYNC_WAIT); if (mp->m_logdev_targp && mp->m_logdev_targp != mp->m_ddev_targp) xfs_wait_buftarg(mp->m_logdev_targp); xfs_wait_buftarg(mp->m_ddev_targp); From tinguely@eagdhcp-232-174.americas.sgi.com Wed Jul 2 09:52:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id C75097F56 for ; Wed, 2 Jul 2014 09:52:19 -0500 (CDT) Received: from eagdhcp-232-174.americas.sgi.com (eagdhcp-232-174.americas.sgi.com [128.162.232.174]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9B9CA304062 for ; Wed, 2 Jul 2014 07:52:19 -0700 (PDT) Received: from eagdhcp-232-174.americas.sgi.com (localhost [127.0.0.1]) by eagdhcp-232-174.americas.sgi.com (8.14.5/8.14.5) with ESMTP id s62EqFgF005641 for ; Wed, 2 Jul 2014 09:52:15 -0500 (CDT) (envelope-from tinguely@eagdhcp-232-174.americas.sgi.com) Received: (from tinguely@localhost) by eagdhcp-232-174.americas.sgi.com (8.14.5/8.14.5/Submit) id s62EqFTb005640; Wed, 2 Jul 2014 09:52:15 -0500 (CDT) (envelope-from tinguely) Message-Id: <20140702144139.978978390@sgi.com> User-Agent: quilt/0.51-1 Date: Wed, 02 Jul 2014 09:32:11 -0500 From: Mark Tinguely To: xfs@oss.sgi.com Subject: [PATCH 5/5] xfs: fix cil push sequence after log recovery References: <20140702143206.438456679@sgi.com> Content-Disposition: inline; filename=xfs-fix-cil-push-seq-after-recovery.patch The CIL pushes are marked complete with transaction tickets and should be in the the correct sequence order. The back end of the cil push code uses the ctx->commit_lsn to make sure all previous pushes are complete before adding the commit ticket for the current cil push. Because xlog_cil_init_post_recovery sets the ctx->commit_lsn, the later pushes can incorrectly think that the first sequence push is complete and allow out of order cil completion records to be written to the log. If the system crashes, the log will be replayed in the wrong order. Signed-off-by: Mark Tinguely --- fs/xfs/xfs_log_cil.c | 2 -- 1 file changed, 2 deletions(-) Index: b/fs/xfs/xfs_log_cil.c =================================================================== --- a/fs/xfs/xfs_log_cil.c +++ b/fs/xfs/xfs_log_cil.c @@ -78,8 +78,6 @@ xlog_cil_init_post_recovery( { log->l_cilp->xc_ctx->ticket = xlog_cil_ticket_alloc(log); log->l_cilp->xc_ctx->sequence = 1; - log->l_cilp->xc_ctx->commit_lsn = xlog_assign_lsn(log->l_curr_cycle, - log->l_curr_block); } /* From tinguely@eagdhcp-232-174.americas.sgi.com Wed Jul 2 09:52:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 66D737F61 for ; Wed, 2 Jul 2014 09:52:22 -0500 (CDT) Received: from eagdhcp-232-174.americas.sgi.com (eagdhcp-232-174.americas.sgi.com [128.162.232.174]) by relay1.corp.sgi.com (Postfix) with ESMTP id 3CE428F8049 for ; Wed, 2 Jul 2014 07:52:19 -0700 (PDT) Received: from eagdhcp-232-174.americas.sgi.com (localhost [127.0.0.1]) by eagdhcp-232-174.americas.sgi.com (8.14.5/8.14.5) with ESMTP id s62EqEoS005629 for ; Wed, 2 Jul 2014 09:52:14 -0500 (CDT) (envelope-from tinguely@eagdhcp-232-174.americas.sgi.com) Received: (from tinguely@localhost) by eagdhcp-232-174.americas.sgi.com (8.14.5/8.14.5/Submit) id s62EqEpf005628; Wed, 2 Jul 2014 09:52:14 -0500 (CDT) (envelope-from tinguely) Message-Id: <20140702144139.705337423@sgi.com> User-Agent: quilt/0.51-1 Date: Wed, 02 Jul 2014 09:32:08 -0500 From: Mark Tinguely To: xfs@oss.sgi.com Subject: [PATCH 2/5] xfs: free the EFI entries from AIL on forced shutdown References: <20140702143206.438456679@sgi.com> Content-Disposition: inline; filename=xfs-fix-efi-on-filesystem-errors.patch The extent free intention (EFI) entry and extent free done (EFD) log items are in separate transactions. It is possible that the EFI can be pushed to the AIL before a forced shutdown where it gets stuck on the AIL and requires a reboot in the following places: 1) xfs_bmap_finish: The EFD is not in the transaction. This can happen if the transaction in xfs_bmap_finish() fails to reserve space. The EFD will not be dirty in the transaction if the error happened while freeing the first extent in the list. 2) EFD IOP Abort processing: If xfs_trans_cancel() is called with an abort flag, or if the xfs_trans_commit() is called when the file system is in forced shutdown or if the log buffer write fails. Do not free the EFI structure immediately on forced shutdowns, but instead use the IOP calls to match the EFI/EFD entries. A small wrinkle in the mix is the EFI is not automatically placed on the AIL by the IOP routines in the cases but may have made it to the AIL before the abort. We now have to check if the EFI is on the AIL in the abort IOP cases. Remove the debug code, because the EFD could be in the log item list on a xfs_trans_cancel. Signed-off-by: Mark Tinguely --- fs/xfs/xfs_bmap_util.c | 36 ++++++++++++++++++------------------ fs/xfs/xfs_trans.c | 8 -------- 2 files changed, 18 insertions(+), 26 deletions(-) Index: b/fs/xfs/xfs_bmap_util.c =================================================================== --- a/fs/xfs/xfs_bmap_util.c +++ b/fs/xfs/xfs_bmap_util.c @@ -79,7 +79,6 @@ xfs_bmap_finish( int error; /* error return value */ xfs_bmap_free_item_t *free; /* free extent item */ struct xfs_trans_res tres; /* new log reservation */ - xfs_mount_t *mp; /* filesystem mount structure */ xfs_bmap_free_item_t *next; /* next item on free list */ xfs_trans_t *ntp; /* new transaction pointer */ @@ -115,31 +114,32 @@ xfs_bmap_finish( xfs_log_ticket_put(ntp->t_ticket); error = xfs_trans_reserve(ntp, &tres, 0, 0); - if (error) + if (error) { + /* + * EFD is not in the transaction. Manually release the EFI + * and remove it from AIL if necessary. + */ + xfs_efi_release(efi, efi->efi_format.efi_nextents); return error; + } + efd = xfs_trans_get_efd(ntp, efi, flist->xbf_count); for (free = flist->xbf_first; free != NULL; free = next) { next = free->xbfi_next; - if ((error = xfs_free_extent(ntp, free->xbfi_startblock, - free->xbfi_blockcount))) { + error = xfs_free_extent(ntp, free->xbfi_startblock, + free->xbfi_blockcount); + xfs_trans_log_efd_extent(ntp, efd, free->xbfi_startblock, + free->xbfi_blockcount); + if (error) { /* - * The bmap free list will be cleaned up at a - * higher level. The EFI will be canceled when - * this transaction is aborted. - * Need to force shutdown here to make sure it - * happens, since this transaction may not be - * dirty yet. + * Encountered an error while freeing the extent. + * The bmap free list will be cleaned up at a higher + * level. The caller will call xfs_trans_cancel on + * error, the filesystem will be shutdown and the + * EFI and EFD will be freed. */ - mp = ntp->t_mountp; - if (!XFS_FORCED_SHUTDOWN(mp)) - xfs_force_shutdown(mp, - (error == EFSCORRUPTED) ? - SHUTDOWN_CORRUPT_INCORE : - SHUTDOWN_META_IO_ERROR); return error; } - xfs_trans_log_efd_extent(ntp, efd, free->xbfi_startblock, - free->xbfi_blockcount); xfs_bmap_del_free(flist, NULL, free); } return 0; Index: b/fs/xfs/xfs_trans.c =================================================================== --- a/fs/xfs/xfs_trans.c +++ b/fs/xfs/xfs_trans.c @@ -958,14 +958,6 @@ xfs_trans_cancel( XFS_ERROR_REPORT("xfs_trans_cancel", XFS_ERRLEVEL_LOW, mp); xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_INCORE); } -#ifdef DEBUG - if (!(flags & XFS_TRANS_ABORT) && !XFS_FORCED_SHUTDOWN(mp)) { - struct xfs_log_item_desc *lidp; - - list_for_each_entry(lidp, &tp->t_items, lid_trans) - ASSERT(!(lidp->lid_item->li_type == XFS_LI_EFD)); - } -#endif xfs_trans_unreserve_and_mod_sb(tp); xfs_trans_unreserve_and_mod_dquots(tp); From tinguely@eagdhcp-232-174.americas.sgi.com Wed Jul 2 09:52:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 6E8D07F62 for ; Wed, 2 Jul 2014 09:52:22 -0500 (CDT) Received: from eagdhcp-232-174.americas.sgi.com (eagdhcp-232-174.americas.sgi.com [128.162.232.174]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2C8A78F8039 for ; Wed, 2 Jul 2014 07:52:19 -0700 (PDT) Received: from eagdhcp-232-174.americas.sgi.com (localhost [127.0.0.1]) by eagdhcp-232-174.americas.sgi.com (8.14.5/8.14.5) with ESMTP id s62EqEDo005625 for ; Wed, 2 Jul 2014 09:52:14 -0500 (CDT) (envelope-from tinguely@eagdhcp-232-174.americas.sgi.com) Received: (from tinguely@localhost) by eagdhcp-232-174.americas.sgi.com (8.14.5/8.14.5/Submit) id s62EqE1m005624; Wed, 2 Jul 2014 09:52:14 -0500 (CDT) (envelope-from tinguely) Message-Id: <20140702144139.620473576@sgi.com> User-Agent: quilt/0.51-1 Date: Wed, 02 Jul 2014 09:32:07 -0500 From: Mark Tinguely To: xfs@oss.sgi.com Subject: [PATCH 1/5] xfs: remove efi from AIL in log recovery References: <20140702143206.438456679@sgi.com> Content-Disposition: inline; filename=xfs-fix-efi-in-log-recovery-error.patch The log recovery functions xlog_recover_process_efi{s} are responsible for freeing extents that did not complete in xfs_bmap_finish before a forced shutdown or system crash. If the extent removal fails in log recovery, then the EFI will stay on the AIL and is will hang the filesystem requiring a system reboot. This patch removes the special log recovery flag, XFS_EFI_RECOVERED. That flag used to be used to decrement the EFI/EFD counter. Instead call the decrement function just like we do in the log IOP sequence. Remove all other unprocessed EFIs from the log recovery AIL when one is discovered in error. Signed-off-by: Mark Tinguely --- fs/xfs/xfs_extfree_item.c | 54 +++++++++++++++++++++++-------------- fs/xfs/xfs_extfree_item.h | 5 --- fs/xfs/xfs_log_recover.c | 67 ++++++++++++++++++++++++++-------------------- fs/xfs/xfs_trans.h | 1 4 files changed, 73 insertions(+), 54 deletions(-) Index: b/fs/xfs/xfs_extfree_item.c =================================================================== --- a/fs/xfs/xfs_extfree_item.c +++ b/fs/xfs/xfs_extfree_item.c @@ -62,9 +62,15 @@ __xfs_efi_release( if (atomic_dec_and_test(&efip->efi_refcount)) { spin_lock(&ailp->xa_lock); - /* xfs_trans_ail_delete() drops the AIL lock. */ - xfs_trans_ail_delete(ailp, &efip->efi_item, - SHUTDOWN_LOG_IO_ERROR); + /* + * The EFI may not be on the AIL on abort. + * xfs_trans_ail_delete() drops the AIL lock. + */ + if (efip->efi_item.li_flags & XFS_LI_IN_AIL) + xfs_trans_ail_delete(ailp, &efip->efi_item, + SHUTDOWN_LOG_IO_ERROR); + else + spin_unlock(&ailp->xa_lock); xfs_efi_item_free(efip); } } @@ -134,9 +140,10 @@ xfs_efi_item_pin( * remove the EFI it's because the transaction has been cancelled and by * definition that means the EFI cannot be in the AIL so remove it from the * transaction and free it. Otherwise coordinate with xfs_efi_release() - * to determine who gets to free the EFI. + * to determine who gets to free the EFI. Call from log recovery of EFI + * entries so the EFD or error handling will remove the entry. */ -STATIC void +void xfs_efi_item_unpin( struct xfs_log_item *lip, int remove) @@ -147,8 +154,6 @@ xfs_efi_item_unpin( ASSERT(!(lip->li_flags & XFS_LI_IN_AIL)); if (lip->li_desc) xfs_trans_del_item(lip); - xfs_efi_item_free(efip); - return; } __xfs_efi_release(efip); } @@ -168,12 +173,17 @@ xfs_efi_item_push( return XFS_ITEM_PINNED; } +/* + * Remove EFI entry on abort. + */ STATIC void xfs_efi_item_unlock( struct xfs_log_item *lip) { - if (lip->li_flags & XFS_LI_ABORTED) - xfs_efi_item_free(EFI_ITEM(lip)); + if (lip->li_flags & XFS_LI_ABORTED) { + ASSERT(!(lip->li_flags & XFS_LI_IN_AIL)); + __xfs_efi_release(EFI_ITEM(lip)); + } } /* @@ -313,10 +323,6 @@ xfs_efi_release(xfs_efi_log_item_t *efip { ASSERT(atomic_read(&efip->efi_next_extent) >= nextents); if (atomic_sub_and_test(nextents, &efip->efi_next_extent)) { - /* recovery needs us to drop the EFI reference, too */ - if (test_bit(XFS_EFI_RECOVERED, &efip->efi_flags)) - __xfs_efi_release(efip); - __xfs_efi_release(efip); /* efip may now have been freed, do not reference it again. */ } @@ -420,8 +426,17 @@ STATIC void xfs_efd_item_unlock( struct xfs_log_item *lip) { - if (lip->li_flags & XFS_LI_ABORTED) - xfs_efd_item_free(EFD_ITEM(lip)); + struct xfs_efd_log_item *efdp = EFD_ITEM(lip); + + if (!(lip->li_flags & XFS_LI_ABORTED)) + return; + + /* Free the EFI when aborting a commit. The EFI will be either + * added to the AIL in a CIL push before this abort or unlocked + * before the EFD unlock. + */ + xfs_efi_release(efdp->efd_efip, efdp->efd_format.efd_nextents); + xfs_efd_item_free(efdp); } /* @@ -439,12 +454,11 @@ xfs_efd_item_committed( struct xfs_efd_log_item *efdp = EFD_ITEM(lip); /* - * If we got a log I/O error, it's always the case that the LR with the - * EFI got unpinned and freed before the EFD got aborted. + * EFI and EFDs can be in different CIL pushes. Therefore the EFI could + * be on the AIL when an abort occurs, so try to release the EFI in + * all cases. */ - if (!(lip->li_flags & XFS_LI_ABORTED)) - xfs_efi_release(efdp->efd_efip, efdp->efd_format.efd_nextents); - + xfs_efi_release(efdp->efd_efip, efdp->efd_format.efd_nextents); xfs_efd_item_free(efdp); return (xfs_lsn_t)-1; } Index: b/fs/xfs/xfs_extfree_item.h =================================================================== --- a/fs/xfs/xfs_extfree_item.h +++ b/fs/xfs/xfs_extfree_item.h @@ -29,11 +29,6 @@ struct kmem_zone; #define XFS_EFI_MAX_FAST_EXTENTS 16 /* - * Define EFI flag bits. Manipulated by set/clear/test_bit operators. - */ -#define XFS_EFI_RECOVERED 1 - -/* * This is the "extent free intention" log item. It is used to log the fact * that some extents need to be free. It is used in conjunction with the * "extent free done" log item described below. Index: b/fs/xfs/xfs_log_recover.c =================================================================== --- a/fs/xfs/xfs_log_recover.c +++ b/fs/xfs/xfs_log_recover.c @@ -3093,6 +3093,12 @@ xlog_recover_efi_pass2( * xfs_trans_ail_update() drops the AIL lock. */ xfs_trans_ail_update(log->l_ailp, &efip->efi_item, lsn); + + /* + * Decrement the EFI/EFD counter so the EFI is removed after + * processing the EFD or error handling in the caller. + */ + xfs_efi_item_unpin(&efip->efi_item, 0); return 0; } @@ -3635,6 +3641,8 @@ xlog_recover_process_data( /* * Process an extent free intent item that was recovered from * the log. We need to free the extents that it describes. + * The processing of the EFD will free the EFI and remove it from the AIL. + * The caller will remove any other EFIs on the the AIL. */ STATIC int xlog_recover_process_efi( @@ -3648,8 +3656,6 @@ xlog_recover_process_efi( xfs_extent_t *extp; xfs_fsblock_t startblock_fsb; - ASSERT(!test_bit(XFS_EFI_RECOVERED, &efip->efi_flags)); - /* * First check the validity of the extents described by the * EFI. If any are bad, then assume that all are bad and @@ -3663,13 +3669,8 @@ xlog_recover_process_efi( (extp->ext_len == 0) || (startblock_fsb >= mp->m_sb.sb_dblocks) || (extp->ext_len >= mp->m_sb.sb_agblocks)) { - /* - * This will pull the EFI from the AIL and - * free the memory associated with it. - */ - set_bit(XFS_EFI_RECOVERED, &efip->efi_flags); - xfs_efi_release(efip, efip->efi_format.efi_nextents); - return XFS_ERROR(EIO); + error = XFS_ERROR(EIO); + goto return_free; } } @@ -3682,45 +3683,58 @@ xlog_recover_process_efi( for (i = 0; i < efip->efi_format.efi_nextents; i++) { extp = &(efip->efi_format.efi_extents[i]); error = xfs_free_extent(tp, extp->ext_start, extp->ext_len); - if (error) - goto abort_error; xfs_trans_log_efd_extent(tp, efdp, extp->ext_start, extp->ext_len); + if (error) { + /* The error may be the first extent or there may the + * EFD may be dirty on the transaction by another + * extent. Make the EFD dirty on the transactions + * so the xfs_trans_cancel frees EFI/EFD and removes + * EFI from AIL. + */ + xfs_trans_cancel(tp, XFS_TRANS_ABORT); + return error; + } } - set_bit(XFS_EFI_RECOVERED, &efip->efi_flags); error = xfs_trans_commit(tp, 0); - return error; + if (error) + goto return_free; + return 0; abort_error: xfs_trans_cancel(tp, XFS_TRANS_ABORT); +return_free: + xfs_efi_release(efip, efip->efi_format.efi_nextents); return error; } /* * When this is called, all of the EFIs which did not have - * corresponding EFDs should be in the AIL. What we do now - * is free the extents associated with each one. + * corresponding EFDs should be in the AIL. The initial decrement + * on the EFI/EFD sequence counter has been done when the EFI is placed + * on the AIL. What we do now is free the extents associated with each one. * * Since we process the EFIs in normal transactions, they * will be removed at some point after the commit. This prevents * us from just walking down the list processing each one. - * We'll use a flag in the EFI to skip those that we've already - * processed and use the AIL iteration mechanism's generation - * count to try to speed this up at least a bit. * * When we start, we know that the EFIs are the only things in * the AIL. As we process them, however, other items are added * to the AIL. Since everything added to the AIL must come after * everything already in the AIL, we stop processing as soon as * we see something other than an EFI in the AIL. + * + * If an error is detected while freeing extents in the EFI, discard all + * future EFI on the AIL. This is done by the xfs_efi_release() which is + * the same processing as a successful EFD completion processing. */ STATIC int xlog_recover_process_efis( struct xlog *log) { - xfs_log_item_t *lip; - xfs_efi_log_item_t *efip; + struct xfs_log_item *lip; + struct xfs_efi_log_item *efip; int error = 0; struct xfs_ail_cursor cur; struct xfs_ail *ailp; @@ -3745,19 +3759,14 @@ xlog_recover_process_efis( * Skip EFIs that we've already processed. */ efip = (xfs_efi_log_item_t *)lip; - if (test_bit(XFS_EFI_RECOVERED, &efip->efi_flags)) { - lip = xfs_trans_ail_cursor_next(ailp, &cur); - continue; - } - spin_unlock(&ailp->xa_lock); - error = xlog_recover_process_efi(log->l_mp, efip); + if (!error) + error = xlog_recover_process_efi(log->l_mp, efip); + else + xfs_efi_release(efip, efip->efi_format.efi_nextents); spin_lock(&ailp->xa_lock); - if (error) - goto out; lip = xfs_trans_ail_cursor_next(ailp, &cur); } -out: xfs_trans_ail_cursor_done(&cur); spin_unlock(&ailp->xa_lock); return error; Index: b/fs/xfs/xfs_trans.h =================================================================== --- a/fs/xfs/xfs_trans.h +++ b/fs/xfs/xfs_trans.h @@ -216,6 +216,7 @@ void xfs_trans_ijoin(struct xfs_trans * void xfs_trans_log_buf(xfs_trans_t *, struct xfs_buf *, uint, uint); void xfs_trans_log_inode(xfs_trans_t *, struct xfs_inode *, uint); struct xfs_efi_log_item *xfs_trans_get_efi(xfs_trans_t *, uint); +void xfs_efi_item_unpin(struct xfs_log_item *, int); void xfs_efi_release(struct xfs_efi_log_item *, uint); void xfs_trans_log_efi_extent(xfs_trans_t *, struct xfs_efi_log_item *, From tinguely@eagdhcp-232-174.americas.sgi.com Wed Jul 2 09:52:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 7FA557F63 for ; Wed, 2 Jul 2014 09:52:22 -0500 (CDT) Received: from eagdhcp-232-174.americas.sgi.com (eagdhcp-232-174.americas.sgi.com [128.162.232.174]) by relay2.corp.sgi.com (Postfix) with ESMTP id 4D0AA304071 for ; Wed, 2 Jul 2014 07:52:19 -0700 (PDT) Received: from eagdhcp-232-174.americas.sgi.com (localhost [127.0.0.1]) by eagdhcp-232-174.americas.sgi.com (8.14.5/8.14.5) with ESMTP id s62EqF4a005633 for ; Wed, 2 Jul 2014 09:52:15 -0500 (CDT) (envelope-from tinguely@eagdhcp-232-174.americas.sgi.com) Received: (from tinguely@localhost) by eagdhcp-232-174.americas.sgi.com (8.14.5/8.14.5/Submit) id s62EqFbE005632; Wed, 2 Jul 2014 09:52:15 -0500 (CDT) (envelope-from tinguely) Message-Id: <20140702144139.790241031@sgi.com> User-Agent: quilt/0.51-1 Date: Wed, 02 Jul 2014 09:32:09 -0500 From: Mark Tinguely To: xfs@oss.sgi.com Subject: [PATCH 3/5] xfs: free the list of recovery items on error References: <20140702143206.438456679@sgi.com> Content-Disposition: inline; filename=xfs-fix-log-recovery-leaks.patch Recovery builds a list of items on the transaction's r_itemq head. Normally these items are committed and freed. But in the event of a recovery error, these allocations are leaked. If the error occurs during item reordering, then reconstruct the r_itemq list before deleting the list to avoid leaking the entries that were on one of the temporary lists. Fix potential use-after-free of the trans structure by ensuring they are removed from the transaction recoovery-in-progress hash table before they are freed. History: My first version corrected the xlog_recover_free_trans for the error path of xlog_recover_commit_trans. Dave Chinner removed most of the XFS_ERROR(), changed messages in xlog_recover_process_data and pushed the xlog_recover_free_trans calls into the lower layers. This has all those patches plus suggestions from Christoph Hellwig. Signed-off-by: Mark Tinguely Signed-off-by: Dave Chinner Signed-off-by: Mark Tinguely --- fs/xfs/xfs_log_recover.c | 88 ++++++++++++++++++++++++----------------------- 1 file changed, 45 insertions(+), 43 deletions(-) Index: b/fs/xfs/xfs_log_recover.c =================================================================== --- a/fs/xfs/xfs_log_recover.c +++ b/fs/xfs/xfs_log_recover.c @@ -539,7 +539,7 @@ xlog_find_verify_log_record( xfs_warn(log->l_mp, "Log inconsistent (didn't find previous header)"); ASSERT(0); - error = XFS_ERROR(EIO); + error = EIO; goto out; } @@ -961,7 +961,7 @@ xlog_find_tail( xfs_warn(log->l_mp, "%s: couldn't find sync record", __func__); xlog_put_bp(bp); ASSERT(0); - return XFS_ERROR(EIO); + return EIO; } /* find blk_no of tail of log */ @@ -1551,7 +1551,7 @@ xlog_recover_add_to_trans( xfs_warn(log->l_mp, "%s: bad header magic number", __func__); ASSERT(0); - return XFS_ERROR(EIO); + return EIO; } if (len == sizeof(xfs_trans_header_t)) xlog_recover_add_item(&trans->r_itemq); @@ -1581,7 +1581,7 @@ xlog_recover_add_to_trans( in_f->ilf_size); ASSERT(0); kmem_free(ptr); - return XFS_ERROR(EIO); + return EIO; } item->ri_total = in_f->ilf_size; @@ -1702,7 +1702,7 @@ xlog_recover_reorder_trans( */ if (!list_empty(&sort_list)) list_splice_init(&sort_list, &trans->r_itemq); - error = XFS_ERROR(EIO); + error = EIO; goto out; } } @@ -3395,7 +3395,7 @@ xlog_recover_commit_pass1( xfs_warn(log->l_mp, "%s: invalid item type (%d)", __func__, ITEM_TYPE(item)); ASSERT(0); - return XFS_ERROR(EIO); + return EIO; } } @@ -3431,7 +3431,7 @@ xlog_recover_commit_pass2( xfs_warn(log->l_mp, "%s: invalid item type (%d)", __func__, ITEM_TYPE(item)); ASSERT(0); - return XFS_ERROR(EIO); + return EIO; } } @@ -3478,7 +3478,7 @@ xlog_recover_commit_trans( #define XLOG_RECOVER_COMMIT_QUEUE_MAX 100 - hlist_del(&trans->r_list); + hlist_del_init(&trans->r_list); error = xlog_recover_reorder_trans(log, trans, pass); if (error) @@ -3503,13 +3503,14 @@ xlog_recover_commit_trans( break; default: ASSERT(0); + error = ERANGE; + break; } if (error) - goto out; + break; } -out: if (!list_empty(&ra_list)) { if (!error) error = xlog_recover_items_pass2(log, trans, @@ -3520,21 +3521,10 @@ out: if (!list_empty(&done_list)) list_splice_init(&done_list, &trans->r_itemq); - xlog_recover_free_trans(trans); - error2 = xfs_buf_delwri_submit(&buffer_list); return error ? error : error2; } -STATIC int -xlog_recover_unmount_trans( - struct xlog *log) -{ - /* Do nothing now */ - xfs_warn(log->l_mp, "%s: Unmount LR", __func__); - return 0; -} - /* * There are two valid states of the r_state field. 0 indicates that the * transaction structure is in a normal state. We have either seen the @@ -3555,9 +3545,9 @@ xlog_recover_process_data( xfs_caddr_t lp; int num_logops; xlog_op_header_t *ohead; - xlog_recover_t *trans; + xlog_recover_t *trans = NULL; xlog_tid_t tid; - int error; + int error = 0; unsigned long hash; uint flags; @@ -3566,7 +3556,7 @@ xlog_recover_process_data( /* check the log format matches our own - else we can't recover */ if (xlog_header_check_recover(log->l_mp, rhead)) - return (XFS_ERROR(EIO)); + return XFS_ERROR(EIO); while ((dp < lp) && num_logops) { ASSERT(dp + sizeof(xlog_op_header_t) <= lp); @@ -3574,10 +3564,12 @@ xlog_recover_process_data( dp += sizeof(xlog_op_header_t); if (ohead->oh_clientid != XFS_TRANSACTION && ohead->oh_clientid != XFS_LOG) { - xfs_warn(log->l_mp, "%s: bad clientid 0x%x", + xfs_warn(log->l_mp, + "%s: bad bad transaction opheader clientid 0x%x", __func__, ohead->oh_clientid); ASSERT(0); - return (XFS_ERROR(EIO)); + error = EIO; + goto out_error; } tid = be32_to_cpu(ohead->oh_tid); hash = XLOG_RHASH(tid); @@ -3588,10 +3580,12 @@ xlog_recover_process_data( be64_to_cpu(rhead->h_lsn)); } else { if (dp + be32_to_cpu(ohead->oh_len) > lp) { - xfs_warn(log->l_mp, "%s: bad length 0x%x", + xfs_warn(log->l_mp, + "%s: bad bad transaction opheader length 0x%x", __func__, be32_to_cpu(ohead->oh_len)); WARN_ON(1); - return (XFS_ERROR(EIO)); + error = XFS_ERROR(EIO); + goto out_error; } flags = ohead->oh_flags & ~XLOG_END_TRANS; if (flags & XLOG_WAS_CONT_TRANS) @@ -3600,42 +3594,50 @@ xlog_recover_process_data( case XLOG_COMMIT_TRANS: error = xlog_recover_commit_trans(log, trans, pass); - break; - case XLOG_UNMOUNT_TRANS: - error = xlog_recover_unmount_trans(log); + if (error) + goto out_error; + /* + * xlog_recover_commit_trans removed the trans + * structure from the hash, so nobody else will + * ever find this structure again. Hence we + * must free it here. + */ + xlog_recover_free_trans(trans); break; case XLOG_WAS_CONT_TRANS: error = xlog_recover_add_to_cont_trans(log, trans, dp, be32_to_cpu(ohead->oh_len)); break; - case XLOG_START_TRANS: - xfs_warn(log->l_mp, "%s: bad transaction", - __func__); - ASSERT(0); - error = XFS_ERROR(EIO); - break; case 0: case XLOG_CONTINUE_TRANS: error = xlog_recover_add_to_trans(log, trans, dp, be32_to_cpu(ohead->oh_len)); break; + case XLOG_UNMOUNT_TRANS: + xfs_warn(log->l_mp, "%s: Unmount LR", __func__); + break; + case XLOG_START_TRANS: default: - xfs_warn(log->l_mp, "%s: bad flag 0x%x", + xfs_warn(log->l_mp, + "%s: bad bad transaction opheader flag 0x%x", __func__, flags); ASSERT(0); - error = XFS_ERROR(EIO); + error = EIO; break; } - if (error) { - xlog_recover_free_trans(trans); - return error; - } + if (error) + goto out_error; } dp += be32_to_cpu(ohead->oh_len); num_logops--; } return 0; + + out_error: + if (trans) + xlog_recover_free_trans(trans); + return error; } /* From tinguely@eagdhcp-232-174.americas.sgi.com Wed Jul 2 09:52:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C85F87F66 for ; Wed, 2 Jul 2014 09:52:22 -0500 (CDT) Received: from eagdhcp-232-174.americas.sgi.com (eagdhcp-232-174.americas.sgi.com [128.162.232.174]) by relay3.corp.sgi.com (Postfix) with ESMTP id 4DFB4AC001 for ; Wed, 2 Jul 2014 07:52:19 -0700 (PDT) Received: from eagdhcp-232-174.americas.sgi.com (localhost [127.0.0.1]) by eagdhcp-232-174.americas.sgi.com (8.14.5/8.14.5) with ESMTP id s62EqELX005621 for ; Wed, 2 Jul 2014 09:52:14 -0500 (CDT) (envelope-from tinguely@eagdhcp-232-174.americas.sgi.com) Received: (from tinguely@localhost) by eagdhcp-232-174.americas.sgi.com (8.14.5/8.14.5/Submit) id s62EqESu005620; Wed, 2 Jul 2014 09:52:14 -0500 (CDT) (envelope-from tinguely) Message-Id: <20140702143206.438456679@sgi.com> User-Agent: quilt/0.51-1 Date: Wed, 02 Jul 2014 09:32:06 -0500 From: Mark Tinguely To: xfs@oss.sgi.com Subject: [PATCH 0/5] Misc controversial patches Here is a repost of these patches. Patch one and two deal with EFIs getting stuck on the AIL and hanging unmount. First deals with log recovery the other xfs_bmap_finish and log write errors: xfs-fix-efi-in-log-recovery-error.patch xfs-fix-efi-on-filesystem-errors.patch Patch three and four deal with resource leaks in failed log recoveries. The first is a rewrite of Dave's rewrite of my patch with ideas from Christoph. The second is taking care of leaked inode pointers: xfs-fix-log-recovery-leaks.patch xfs-reclaim-inodes-on-recovery-fail.patch Lastly is the CIL sequence error. The setting of ctx->commit_lsn in xlog_cil_init_post_recovery allows smaller cil push sequences finish out of order: xfs-fix-cil-push-seq-after-recovery.patch --Mark. From robin.listas@gmail.com Wed Jul 2 21:54:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 9BAF97F54 for ; Wed, 2 Jul 2014 21:54:54 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 35E76AC001 for ; Wed, 2 Jul 2014 19:54:51 -0700 (PDT) X-ASG-Debug-ID: 1404356085-04bdf0566678adb0001-NocioJ Received: from mail-wi0-f178.google.com (mail-wi0-f178.google.com [209.85.212.178]) by cuda.sgi.com with ESMTP id h1Qie1APXpG4gyDw (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 02 Jul 2014 19:54:46 -0700 (PDT) X-Barracuda-Envelope-From: robin.listas@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.212.178 X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.178] Received: by mail-wi0-f178.google.com with SMTP id n15so1443606wiw.5 for ; Wed, 02 Jul 2014 19:54:45 -0700 (PDT) X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.178] X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.178] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:subject:in-reply-to:message-id:references :user-agent:mime-version:content-type; bh=rdtnp2ji2/7NY2EuI8YojyedcGchhHiwmXGP6GW6CpI=; b=N0PAi5EYSJVbOC/mLmA5AU/TzXgoGkymxLvMUmrWFwcn9rc6pu8jBD4BDTzsYEZ7tp gepLT3UzT/Oijxlf8WdBGt/9hefkFr6zMIg0QUMj8F/CVVmKFBMOqH1a9LggjWkFHzzS 0vk7kCv22u++fPFlJfoliNuvc5v8JDh0wFJnmhBOV+hK1ks3rrPPffRJ6b0CGBy5OeZ1 EDkTQR/iBI2Q9DXTX6yZefkP3CfyPBXGTeDb1dfrRrPA/nzfL1KjIEjW3JxH5fyM7NUV E9nYTXst0+wskn2ziaT5ZVM1tY8No3cyHG7xB+7UfaLYwKxKVa5jcbIwf51mq3FkqY4T /50A== X-Received: by 10.180.73.106 with SMTP id k10mr46051817wiv.11.1404356085099; Wed, 02 Jul 2014 19:54:45 -0700 (PDT) Received: from Telcontar.valinor (90.Red-79-150-228.dynamicIP.rima-tde.net. [79.150.228.90]) by mx.google.com with ESMTPSA id o2sm61839674wia.16.2014.07.02.19.54.43 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Jul 2014 19:54:44 -0700 (PDT) Sender: Carlos Robinson Received: from localhost (localhost [127.0.0.1]) by Telcontar.valinor (Postfix) with ESMTP id 67AF06072A for ; Thu, 3 Jul 2014 04:54:41 +0200 (CEST) X-Virus-Scanned: amavisd-new at valinor Received: from Telcontar.valinor ([127.0.0.1]) by localhost (Telcontar.valinor [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 1R_jLpbDTBop for ; Thu, 3 Jul 2014 04:54:38 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by Telcontar.valinor (Postfix) with ESMTP id E207D604A0 for ; Thu, 3 Jul 2014 04:54:36 +0200 (CEST) Date: Thu, 3 Jul 2014 04:54:26 +0200 (CEST) From: "Carlos E. R." X-X-Sender: cer@Telcontar.valinor To: XFS mailing list Subject: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. In-Reply-To: <53B40427.6060302@sgi.com> X-ASG-Orig-Subj: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. Message-ID: References: <20140702120441.GA51757@bfoster.bfoster> <53B40427.6060302@sgi.com> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: mail-wi0-f178.google.com[209.85.212.178] X-Barracuda-Start-Time: 1404356086 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7194 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 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Wednesday, 2014-07-02 at 08:07 -0500, Mark Tinguely wrote: > On 07/02/14 07:04, Brian Foster wrote: >>> The worst issue for me is that "xfs_repair" fails to repair it. > > what version of xfs_repair? xfs_repair version 3.1.11 which what comes with openSUSE 13.1 > Did you try to mount to replay the log before > repair? Sure. This last time, I first tried "umount" the partition, which initially failed, because despite being read only, some applications thought they had opened files on it (I was already in runlevel 1). I found them with lsof, killed them, umounted, mounted, system crash. Had to hit reset button on machine. Reboot machine, and partition is automatically mounted, so the log replayed here. umount, repair (finds nothing, as far as I can see), backup, format, restore. > Besides Brian's good advice, is kdump configured to dump vmcore? I'm not sure I understand the question :-? If you want me to run the system for a month, waiting for this to happen again, in some special kernel debug mode... I don't know if that will be feasible :-} - -- Cheers, Carlos E. R. (from 13.1 x86_64 "Bottle" at Telcontar) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEARECAAYFAlO0xewACgkQtTMYHG2NR9WYsQCfTWjvcHB8IJfyXN4jVzHTnh5Q lOEAn0TPwL03enbn8zrXbIQ9yMfknPi2 =39NE -----END PGP SIGNATURE----- From robin.listas@gmail.com Wed Jul 2 22:01:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 304DA7F58 for ; Wed, 2 Jul 2014 22:01:10 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 72F9AAC004 for ; Wed, 2 Jul 2014 20:01:06 -0700 (PDT) X-ASG-Debug-ID: 1404356458-04cb6c76cf40f4f0001-NocioJ Received: from mail-we0-f176.google.com (mail-we0-f176.google.com [74.125.82.176]) by cuda.sgi.com with ESMTP id efToCKimFq1h5bug (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 02 Jul 2014 20:00:59 -0700 (PDT) X-Barracuda-Envelope-From: robin.listas@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.176 Received: by mail-we0-f176.google.com with SMTP id u56so11919829wes.21 for ; Wed, 02 Jul 2014 20:00:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:subject:in-reply-to:message-id:references :user-agent:mime-version:content-type; bh=zBJnf1oE5ZxENNIcOrjewCSQKL5QVzH1EPsjT5wGwU4=; b=wi6qCduuQ9Kq/28PXXcxT8VPg4AO6uHMjPPLyUw9LXHriCKPY4TOLllqadD+vUMhg5 O1Vh9NSdjvlHkSNG7MBevfsfRQWzeP506OziwQrAxnbYJMYt77EDscWyFzs1svasC1Yn z6AxSWc5z+enxgmBNMUWrt3FNer11UdteeOlI2hzKoSSTFDT1Vyjt4d8NBZsuqUMnqMQ AqKGIpkdveJ0FdVopiQgjpqANeaK7IcY4HiqnZF1b5iJT8tYMBgx1hkEHVqcq6SWrlRC BQ0yu7+FVkm+VLp0jUIpISdTtPl2ruTokulUpyXdBucQlYlTfovuOBGplPaio0cNVyi6 bTgw== X-Received: by 10.194.87.134 with SMTP id ay6mr1726933wjb.84.1404356457827; Wed, 02 Jul 2014 20:00:57 -0700 (PDT) Received: from Telcontar.valinor (90.Red-79-150-228.dynamicIP.rima-tde.net. [79.150.228.90]) by mx.google.com with ESMTPSA id nb8sm61843318wic.18.2014.07.02.20.00.51 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Jul 2014 20:00:57 -0700 (PDT) Sender: Carlos Robinson Received: from localhost (localhost [127.0.0.1]) by Telcontar.valinor (Postfix) with ESMTP id 381AA6072A for ; Thu, 3 Jul 2014 05:00:50 +0200 (CEST) X-Virus-Scanned: amavisd-new at valinor Received: from Telcontar.valinor ([127.0.0.1]) by localhost (Telcontar.valinor [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 1ebquqKMT-vI for ; Thu, 3 Jul 2014 05:00:48 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by Telcontar.valinor (Postfix) with ESMTP id 5F7F1604A0 for ; Thu, 3 Jul 2014 05:00:47 +0200 (CEST) Date: Thu, 3 Jul 2014 05:00:47 +0200 (CEST) From: "Carlos E. R." X-X-Sender: cer@Telcontar.valinor To: XFS mailing list Subject: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. In-Reply-To: <20140702120441.GA51757@bfoster.bfoster> X-ASG-Orig-Subj: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. Message-ID: References: <20140702120441.GA51757@bfoster.bfoster> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Barracuda-Connect: mail-we0-f176.google.com[74.125.82.176] X-Barracuda-Start-Time: 1404356458 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-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.32 X-Barracuda-Spam-Status: No, SCORE=0.32 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, URI_HEX X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7194 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.32 URI_HEX URI: URI hostname has long hexadecimal sequence -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Wednesday, 2014-07-02 at 08:04 -0400, Brian Foster wrote: > On Wed, Jul 02, 2014 at 11:57:25AM +0200, Carlos E. R. wrote: ... > This is the background eofblocks scanner attempting to free preallocated > space on a file. The scanner looks for files that have been recently > grown and since been flushed to disk (i.e., no longer concurrently being > written to) and trims the post-eof preallocation that comes along with > growing files. > > The corruption errors at xfs_alloc.c:1602,1629 on v3.11 fire if the > extent we are attempting to free is already accounted for in the > by-block allocation btree. IOW, this is attempting to free an extent > that the allocation metadata thinks is already free. > >> >> Brief description: >> >> >> * It happens only on restore from hibernation. > > Interesting, could you elaborate a bit more on the behavior this system > is typically subjected to? i.e., is this a server that sees a constant > workload that is also frequently hibernated/awakened? It is a desktop machine I use for work at home. I typically have many applications opened on diferent workspaces in XFCE. Say one has terminals, another has Thunderbird/Pine, another Firefox, another LibreOffice; another may have gimp, another may be kbabel or lokalize, another may have vmplayer, etc, whatever. When I go out or go to sleep, I hibernate the machine, instead of powering down, because it is much faster than reboot, login, and start the wanted applications, and I want to conserve some electricity. I also use the machine for testing configurations, but these I try to do on virtual machines, instead of my work partition. The machine may be used anywhere from 4 to 16 hours a day, and hibernated at least once a day, perhaps three times if I have to go out several times. It makes no sense to me to leave the machine powered doing nothing, if hibernating is so easy and reliable - till now. If I have to leave for more than a week, I tend to do a full "halt". By the way, this started hapening when I replaced an old 500 GB hard disk (Seagate ST3500418AS) with a 2 TB new unit (Seagate ST2000DM001-1CH164). Smartctl long test says fine (and seatools from Windows, too). >> I do not have more info than what appears on the logs, but four times (two >> different kernels): >> >> cer@Telcontar:~> zgrep XFS_WANT_CORRUPTED_GOTO /var/log/messages*xz >> /var/log/messages-20140402.xz:<0.1> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111787] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1629 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c54fe9 >> /var/log/messages-20140402.xz:<0.1> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298345] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c54fe9 >> /var/log/messages-20140506.xz:<0.1> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.851374] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c54fe9 >> /var/log/messages-20140629.xz:<0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626346] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c39fe9 >> cer@Telcontar:~> > So you have reproduced this, reformatted with mkfs, restored from > backups and continued to reproduce the problem? And still only on this > particular partition? Right. Exactly that. Only that I can not reproduce the issue at will, but about once a month, randomly. AFAIK, xfsdump can not carry over a filesystem corruption, right? **** LONG DESCRIPTION and LOGS start here ******** The first time was on 2014-03-15 03:35:17, instantly after thawing: <0.7> 2014-03-15 03:35:14 Telcontar kernel - - - [37682.109726] PM: Basic memory bitmaps freed <3.6> 2014-03-15 03:35:14 Telcontar systemd 1 - - Time has been changed <3.4> 2014-03-15 03:35:14 Telcontar rtkit-daemon 4169 - - The canary thread is apparently starving. Taking action. <3.6> 2014-03-15 03:35:14 Telcontar rtkit-daemon 4169 - - Demoting known real-time threads. <3.5> 2014-03-15 03:35:14 Telcontar rtkit-daemon 4169 - - Successfully demoted thread 4175 of process 4168 (/usr/bin/pulseaudio). <3.5> 2014-03-15 03:35:14 Telcontar rtkit-daemon 4169 - - Successfully demoted thread 4174 of process 4168 (/usr/bin/pulseaudio). <3.5> 2014-03-15 03:35:14 Telcontar rtkit-daemon 4169 - - Successfully demoted thread 4168 of process 4168 (/usr/bin/pulseaudio). <3.5> 2014-03-15 03:35:14 Telcontar rtkit-daemon 4169 - - Demoted 3 threads. <3.6> 2014-03-15 03:35:16 Telcontar acpid - - - 1 client rule loaded <0.1> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111787] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1629 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_allo <0.1> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111787] <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111792] CPU: 1 PID: 5245 Comm: thunderbird-bin Tainted: P O 3.11.10-7-desktop #1 <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111793] Hardware name: MICRO-STAR INTERNATIONAL CO.,LTD MS-7516/MS-7516, BIOS V1.5 10/10/2008 <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111795] 0000000000000002 ffffffff8159ff82 000000000027610d ffffffffa0c53996 <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111799] ffff8802303533c0 ffff8802344e4300 ffff8802263a1f20 0000000000000002 <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111801] 0000000000000000 ffff8801a08bfa8c 0000000000000000 0027611300000001 <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111804] Call Trace: <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111815] [] dump_trace+0x88/0x310 <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111818] [] show_stack_log_lvl+0xd0/0x1d0 <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111821] [] show_stack+0x1c/0x50 <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111825] [] dump_stack+0x50/0x89 <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111861] [] xfs_free_ag_extent+0x226/0x860 [xfs] <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111905] [] xfs_free_extent+0xb9/0xf0 [xfs] <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111948] [] xfs_bmap_finish+0x11e/0x170 [xfs] <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111999] [] xfs_itruncate_extents+0x190/0x340 [xfs] <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.112073] [] xfs_setattr_size+0x41b/0x4a0 [xfs] <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.112107] [] xfs_vn_setattr+0x2e/0x40 [xfs] <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.112130] [] notify_change+0x1dc/0x360 <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.112135] [] do_truncate+0x5e/0x90 <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.112139] [] do_last+0x253/0xec0 <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.112142] [] path_openat+0xb6/0x670 <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.112145] [] do_filp_open+0x35/0x80 <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.112147] [] do_sys_open+0x129/0x210 <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.112151] [] system_call_fastpath+0x1a/0x1f <0.4> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.112157] [<00007f6ec359078d>] 0x7f6ec359078c <0.5> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.112976] XFS (sdd5): xfs_do_force_shutdown(0x8) called from line 916 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_b <0.1> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.163643] XFS (sdd5): Corruption of in-memory data detected. Shutting down filesystem <0.1> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.163648] XFS (sdd5): Please umount the filesystem and rectify the problem(s) <0.4> 2014-03-15 03:35:18 Telcontar kernel - - - [37686.496013] XFS (sdd5): xfs_log_force: error 5 returned. <3.5> 2014-03-15 03:35:18 Telcontar dbus 1005 - - [system] Activating service name='org.freedesktop.PackageKit' (using servicehelper) <5.4> 2014-03-15 03:35:18 Telcontar pm-utils - - - Thawing (95)... <1.5> 2014-03-15 03:35:22 Telcontar network 11556 - - redirecting to "systemctl restart network.service" I managed to halt somehow, and booted. The log says that the partition passes automatic boot tests (excerpted): <0.5> 2014-03-15 03:49:42 Telcontar kernel - - - [ 19.173599] XFS (sdd5): Mounting Filesystem <0.5> 2014-03-15 03:49:42 Telcontar kernel - - - [ 19.377918] XFS (sdd5): Starting recovery (logdev: internal) <0.5> 2014-03-15 03:49:42 Telcontar kernel - - - [ 19.747914] XFS (sdd5): Ending recovery (logdev: internal) But soon after, it oopses: <3.6> 2014-03-15 03:53:01 Telcontar systemd 4987 - - Starting Default. <3.6> 2014-03-15 03:53:01 Telcontar systemd 4987 - - Reached target Default. <3.6> 2014-03-15 03:53:01 Telcontar systemd 4987 - - Startup finished in 57ms. <3.6> 2014-03-15 03:53:01 Telcontar systemd 1 - - Started User Manager for 9. <0.1> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857523] XFS: Internal error XFS_WANT_CORRUPTED_RETURN at line 350 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_all <0.1> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857523] <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857530] CPU: 3 PID: 57 Comm: kworker/3:1 Tainted: P O 3.11.10-7-desktop #1 <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857532] Hardware name: MICRO-STAR INTERNATIONAL CO.,LTD MS-7516/MS-7516, BIOS V1.5 10/10/2008 <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857570] Workqueue: xfsalloc xfs_bmapi_allocate_worker [xfs] <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857572] 0000000000000000 ffffffff8159ff82 ffff880192c89080 ffffffffa0c50ee9 <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857576] 0000003d30691240 00000000a0c55781 ffff880234917d58 ffff880192c89080 <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857579] 000000000000003d 000000000000003d 0000000000000002 0000000000022dab <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857583] Call Trace: <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857583] Call Trace: <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857596] [] dump_trace+0x88/0x310 <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857600] [] show_stack_log_lvl+0xd0/0x1d0 <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857604] [] show_stack+0x1c/0x50 <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857609] [] dump_stack+0x50/0x89 <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857630] [] xfs_alloc_fixup_trees+0x1f9/0x340 [xfs] <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857689] [] xfs_alloc_ag_vextent_near+0x9ee/0xcd0 [xfs] <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857751] [] xfs_alloc_ag_vextent+0xbd/0x100 [xfs] <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857810] [] xfs_alloc_vextent+0x4e6/0x740 [xfs] <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857870] [] xfs_bmap_btalloc+0x2a7/0x7a0 [xfs] <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857937] [] __xfs_bmapi_allocate+0xbd/0x2d0 [xfs] <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.858002] [] xfs_bmapi_allocate_worker+0x27/0x50 [xfs] <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.858069] [] process_one_work+0x168/0x490 <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.858074] [] worker_thread+0x114/0x3a0 <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.858079] [] kthread+0xaf/0xc0 <0.4> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.858084] [] ret_from_fork+0x7c/0xb0 <0.1> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.858095] XFS (sdd5): page discard on page ffffea0005357d98, inode 0x602084fd, offset 339968. <0.1> 2014-03-15 03:54:12 Telcontar kernel - - - [ 326.896051] XFS: Internal error XFS_WANT_CORRUPTED_RETURN at line 350 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_all <0.1> 2014-03-15 03:54:12 Telcontar kernel - - - [ 326.896051] <0.4> 2014-03-15 03:54:12 Telcontar kernel - - - [ 326.896056] CPU: 2 PID: 56 Comm: kworker/2:1 Tainted: P O 3.11.10-7-desktop #1 <0.4> 2014-03-15 03:54:12 Telcontar kernel - - - [ 326.896057] Hardware name: MICRO-STAR INTERNATIONAL CO.,LTD MS-7516/MS-7516, BIOS V1.5 10/10/2008 <0.4> 2014-03-15 03:54:12 Telcontar kernel - - - [ 326.896091] Workqueue: xfsalloc xfs_bmapi_allocate_worker [xfs] <0.4> 2014-03-15 03:54:12 Telcontar kernel - - - [ 326.896093] 0000000000000000 ffffffff8159ff82 ffff880192c89150 ffffffffa0c50ee9 <0.4> 2014-03-15 03:54:12 Telcontar kernel - - - [ 326.896096] 0000003c30691240 00000000a0c55781 ffff88023490fd58 ffff880192c89150 <0.4> 2014-03-15 03:54:12 Telcontar kernel - - - [ 326.896098] 000000000000003c 000000000000003c 0000000000000002 0000000000022dab <0.4> 2014-03-15 03:54:12 Telcontar kernel - - - [ 326.896100] Call Trace: and pages and pages of log entries (which I'm unsure I saw at the time) Aparently, I logged in text mode, without reboot, and mounted home again (perhaps systemd mounted it automatically, I do not remember). It is possible that I did an xfs repair in the interval, it is not logged. <0.4> 2014-03-15 04:06:09 Telcontar kernel - - - [ 1044.485279] [] ret_from_fork+0x7c/0xb0 <0.1> 2014-03-15 04:06:09 Telcontar kernel - - - [ 1044.486104] XFS (sdd5): page discard on page ffffea00053b68e0, inode 0x602084fd, offset 749568. <3.6> 2014-03-15 04:07:39 Telcontar systemd 1 - - Starting Session 9 of user root. <4.6> 2014-03-15 04:07:39 Telcontar systemd-logind 1002 - - New session 9 of user root. <10.5> 2014-03-15 04:07:39 Telcontar login - - - ROOT LOGIN ON tty2 <3.6> 2014-03-15 04:08:01 Telcontar systemd 1 - - Starting Session 10 of user news. <0.5> 2014-03-15 04:09:55 Telcontar kernel - - - [ 1270.594691] XFS (sdd5): Mounting Filesystem <0.6> 2014-03-15 04:09:55 Telcontar kernel - - - [ 1270.681282] XFS (sdd5): Ending clean mount <3.6> 2014-03-15 04:10:02 Telcontar acpid - - - 1 client rule loaded <3.6> 2014-03-15 04:11:41 Telcontar acpid - - - 1 client rule loaded <3.6> 2014-03-15 04:11:47 Telcontar systemd 1 - - Starting Session 11 of user cer. <4.6> 2014-03-15 04:11:47 Telcontar systemd-logind 1002 - - New session 11 of user cer. <4.6> 2014-03-15 04:11:47 Telcontar systemd-logind 1002 - - Linked /tmp/.X11-unix/X0 to /run/user/1000/X11-display. <3.4> 2014-03-15 04:11:47 Telcontar kdm - - - :0 '[5904]: Cannot update authorization file in home dir /home/cer <3.3> 2014-03-15 04:11:47 Telcontar kdm - - - :0 '[5904]: Cannot chdir to cer's home /home/cer: No such file or directory But as you can see, despite it saying that it was a "clean mount", my "/home/cer/", ie, my HOME, is not visible. <0.5> 2014-03-15 04:12:03 Telcontar kernel - - - [ 1397.853848] XFS (sdd5): Mounting Filesystem <0.6> 2014-03-15 04:12:03 Telcontar kernel - - - [ 1397.932327] XFS (sdd5): Ending clean mount <3.6> 2014-03-15 04:12:25 Telcontar systemd 1 - - Starting Getty on tty3... <3.6> 2014-03-15 04:12:25 Telcontar systemd 1 - - Started Getty on tty3. <3.6> 2014-03-15 04:12:29 Telcontar systemd 1 - - Starting Session 12 of user cer. <4.6> 2014-03-15 04:12:29 Telcontar systemd-logind 1002 - - New session 12 of user cer. <10.6> 2014-03-15 04:12:29 Telcontar login - - - LOGIN ON tty3 BY cer and this time I apparently managed to log in graphical mode: <3.6> 2014-03-15 04:13:24 Telcontar systemd 1 - - Starting Session 14 of user cer. <4.6> 2014-03-15 04:13:24 Telcontar systemd-logind 1002 - - New session 14 of user cer. <4.6> 2014-03-15 04:13:24 Telcontar systemd-logind 1002 - - Linked /tmp/.X11-unix/X0 to /run/user/1000/X11-display. <23.4> 2014-03-15 04:13:24 Telcontar checkproc - - - checkproc: can not get session id for process 4131! <4.5> 2014-03-15 04:13:25 Telcontar gnome-keyring-daemon 6210 - - Gkm: using old keyring directory: /home/cer/.gnome2/keyrings <4.5> 2014-03-15 04:13:25 Telcontar gnome-keyring-daemon 6210 - - Gkm: using old keyring directory: /home/cer/.gnome2/keyrings Being late, and confident that the issue was solved (which was wrong, I maybe did not see those XFS_WANT_CORRUPTED_RETURN above), I hibernated: <5.4> 2014-03-15 04:23:41 Telcontar pm-utils - - - Hibernating (1)... <1.5> 2014-03-15 04:23:41 Telcontar network 7779 - - redirecting to "systemctl --signal=9 kill network.service" ... next morning: <5.4> 2014-03-15 13:23:41 Telcontar pm-utils - - - Thawing (95)... ... afternoon: <5.4> 2014-03-15 17:50:45 Telcontar pm-utils - - - Hibernating (1)... ... <5.4> 2014-03-15 19:47:58 Telcontar pm-utils - - - Thawing (95)... ... again once more, and crash! <5.4> 2014-03-15 20:20:56 Telcontar pm-utils - - - Hibernating (1)... ... <5.4> 2014-03-15 22:20:21 Telcontar pm-utils - - - Thawing (95)... <5.4> 2014-03-15 22:20:32 Telcontar pm-utils - - - Thawing (1)... <0.1> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298345] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_allo <0.1> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298345] <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298351] CPU: 0 PID: 28877 Comm: kworker/0:7 Tainted: P O 3.11.10-7-desktop #1 <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298353] Hardware name: MICRO-STAR INTERNATIONAL CO.,LTD MS-7516/MS-7516, BIOS V1.5 10/10/2008 <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298388] Workqueue: xfs-eofblocks/sdd5 xfs_eofblocks_worker [xfs] <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298391] 0000000000000000 ffffffff8159ff82 0000000000007121 ffffffffa0c53996 <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298395] ffff880151e21cc0 ffff880234093600 ffff88023016bbe0 0000000000000000 <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298398] 0000000000000000 0000000100000000 0000000000000000 0000000000000001 <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298402] Call Trace: <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298415] [] dump_trace+0x88/0x310 <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298419] [] show_stack_log_lvl+0xd0/0x1d0 <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298423] [] show_stack+0x1c/0x50 <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298428] [] dump_stack+0x50/0x89 <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298449] [] xfs_free_ag_extent+0x226/0x860 [xfs] <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298511] [] xfs_free_extent+0xb9/0xf0 [xfs] <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298571] [] xfs_bmap_finish+0x11e/0x170 [xfs] <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298643] [] xfs_itruncate_extents+0x190/0x340 [xfs] <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298734] [] xfs_free_eofblocks+0x1e3/0x260 [xfs] <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298786] [] xfs_inode_free_eofblocks+0x6f/0x150 [xfs] <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298828] [] xfs_inode_ag_walk.isra.10+0x1c2/0x310 [xfs] <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298868] [] xfs_inode_ag_iterator_tag+0x6e/0xb0 [xfs] <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298909] [] xfs_eofblocks_worker+0x12/0x20 [xfs] <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298937] [] process_one_work+0x168/0x490 <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298942] [] worker_thread+0x114/0x3a0 <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298946] [] kthread+0xaf/0xc0 <0.4> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298952] [] ret_from_fork+0x7c/0xb0 <0.5> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298959] XFS (sdd5): xfs_do_force_shutdown(0x8) called from line 916 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_b <0.1> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.331745] XFS (sdd5): Corruption of in-memory data detected. Shutting down filesystem <0.1> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.331748] XFS (sdd5): Please umount the filesystem and rectify the problem(s) <4.5> 2014-03-15 22:20:40 Telcontar gnome-keyring-daemon 6210 - - Gkm: couldn't stat directory: /home/cer/.gnome2/keyrings: Input/output error <4.4> 2014-03-15 22:20:40 Telcontar gnome-keyring-daemon 6210 - - GLib-GObject: invalid unclassed pointer in cast to 'GkmObject' <4.3> 2014-03-15 22:20:40 Telcontar gnome-keyring-daemon 6210 - - Gkm: gkm_object_expose_full: assertion 'GKM_IS_OBJECT (self)' failed <4.5> 2014-03-15 22:20:40 Telcontar gnome-keyring-daemon 6210 - - Gkm: couldn't stat directory: /home/cer/.gnome2/keyrings: Input/output error <4.5> 2014-03-15 22:20:40 Telcontar gnome-keyring-daemon 6210 - - Gkm: couldn't stat directory: /home/cer/.gnome2/keyrings: Input/output error <4.4> 2014-03-15 22:20:40 Telcontar gnome-keyring-daemon 6210 - - Gkm: couldn't create temporary file for: /home/cer/.gnome2/keyrings/login_1.keyring: Input/output error <4.4> 2014-03-15 22:20:40 Telcontar gnome-keyring-daemon 6210 - - couldn't create login keyring: An error occurred on the device <10.3> 2014-03-15 22:20:40 Telcontar unix2_chkpwd - - - gkr-pam: the password for the login keyring was invalid. <0.4> 2014-03-15 22:20:50 Telcontar kernel - - - [20168.032019] XFS (sdd5): xfs_log_force: error 5 returned. <5.4> 2014-03-15 22:20:57 Telcontar router - - - (Thawing 1) Logging the current IP= 83.41.119.142 <0.4> 2014-03-15 22:21:20 Telcontar kernel - - - [20198.112018] XFS (sdd5): xfs_log_force: error 5 returned. <0.4> 2014-03-15 22:21:50 Telcontar kernel - - - [20228.192016] XFS (sdd5): xfs_log_force: error 5 returned. <0.4> 2014-03-15 22:22:21 Telcontar kernel - - - [20258.272013] XFS (sdd5): xfs_log_force: error 5 returned. <10.5> 2014-03-15 22:22:31 Telcontar polkitd 4115 - - Unregistered Authentication Agent for unix-session:14 (system bus name :1.93, object path /org/gnome/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8 <3.3> 2014-03-15 22:22:37 Telcontar kdm 3931 - - X server for display :0 terminated unexpectedly <3.4> 2014-03-15 22:22:37 Telcontar kdm - - - :0[31291]: Cannot update authorization file in home dir /home/cer <0.7> 2014-03-15 22:22:37 Telcontar kernel - - - [20275.208508] nvidia 0000:01:00.0: irq 48 for MSI/MSI-X <3.6> 2014-03-15 22:22:38 Telcontar acpid - - - 1 client rule loaded <0.4> 2014-03-15 22:22:51 Telcontar kernel - - - [20288.352018] XFS (sdd5): xfs_log_force: error 5 returned. <3.6> 2014-03-15 22:23:01 Telcontar systemd 1 - - Starting Session 126 of user news. <0.4> 2014-03-15 22:23:21 Telcontar kernel - - - [20318.432014] XFS (sdd5): xfs_log_force: error 5 returned. <0.4> 2014-03-15 22:23:51 Telcontar kernel - - - [20348.512013] XFS (sdd5): xfs_log_force: error 5 returned. <0.4> 2014-03-15 22:24:21 Telcontar kernel - - - [20378.592014] XFS (sdd5): xfs_log_force: error 5 returned. <0.4> 2014-03-15 22:24:51 Telcontar kernel - - - [20408.672014] XFS (sdd5): xfs_log_force: error 5 returned. <3.6> 2014-03-15 22:25:19 Telcontar systemd 1 - - Stopping User Manager for 9... <3.6> 2014-03-15 22:25:19 Telcontar systemd 1 - - Stopping Disk Manager... <3.6> 2014-03-15 22:25:19 Telcontar systemd 1 - - Stopping Daemon for power management... <3.6> 2014-03-15 22:25:19 Telcontar systemd 1 - - Stopping Bluetooth service... I was attemtping to go to reboot, I think. <3.6> 2014-03-15 22:25:20 Telcontar systemd 1 - - Starting Rescue Shell... <3.6> 2014-03-15 22:25:20 Telcontar systemd 1 - - Started Rescue Shell. <3.6> 2014-03-15 22:20:19 Telcontar systemd 3976 - - message repeated 3 times: [ Time has been changed] <3.6> 2014-03-15 22:25:20 Telcontar systemd 3976 - - Stopping Default. <3.6> 2014-03-15 22:20:19 Telcontar systemd 4987 - - message repeated 3 times: [ Time has been changed] <3.6> 2014-03-15 22:25:20 Telcontar systemd 4987 - - Stopping Default. <3.6> 2014-03-15 22:25:20 Telcontar systemd 3976 - - Stopped target Default. <3.6> 2014-03-15 22:25:20 Telcontar systemd 4987 - - Stopped target Default. <3.6> 2014-03-15 22:25:20 Telcontar systemd 3976 - - Starting Shutdown. <3.6> 2014-03-15 22:25:20 Telcontar systemd 4987 - - Starting Shutdown. <3.6> 2014-03-15 22:25:20 Telcontar systemd 3976 - - Reached target Shutdown. <3.6> 2014-03-15 22:25:20 Telcontar systemd 4987 - - Reached target Shutdown. <3.6> 2014-03-15 22:25:20 Telcontar systemd 3976 - - Starting Exit the Session... <3.6> 2014-03-15 22:25:20 Telcontar systemd 4987 - - Starting Exit the Session... <0.5> 2014-03-15 22:25:20 Telcontar kernel - - - [20437.920075] type=1131 audit(1394918720.685:1133): pid=1 uid=0 auid=4294967295 ses=4294967295 <0.5> 2014-03-15 22:25:20 Telcontar kernel - - - [20437.920075] msg=' comm="auditd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success' <0.5> 2014-03-15 22:25:20 Telcontar kernel - - - [20437.920273] type=1131 audit(1394918720.685:1134): pid=1 uid=0 auid=4294967295 ses=4294967295 <0.5> 2014-03-15 22:25:20 Telcontar kernel - - - [20437.920273] msg=' comm="systemd-logind" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success' <0.5> 2014-03-15 22:25:20 Telcontar kernel - - - [20437.920490] type=1131 audit(1394918720.685:1135): pid=1 uid=0 auid=4294967295 ses=4294967295 <0.5> 2014-03-15 22:25:20 Telcontar kernel - - - [20437.920490] msg=' comm="smb" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success' <0.5> 2014-03-15 22:25:21 Telcontar kernel - - - [20438.525253] type=1131 audit(1394918721.290:1136): pid=1 uid=0 auid=4294967295 ses=4294967295 <0.5> 2014-03-15 22:25:21 Telcontar kernel - - - [20438.525253] msg=' comm="cron" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success' <0.5> 2014-03-15 22:25:21 Telcontar kernel - - - [20438.525643] type=1131 audit(1394918721.290:1137): pid=1 uid=0 auid=4294967295 ses=4294967295 <0.5> 2014-03-15 22:25:21 Telcontar kernel - - - [20438.525643] msg=' comm="avahi-daemon" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success' <0.5> 2014-03-15 22:25:21 Telcontar kernel - - - [20438.525937] type=1131 audit(1394918721.290:1138): pid=1 uid=0 auid=4294967295 ses=4294967295 <0.5> 2014-03-15 22:25:21 Telcontar kernel - - - [20438.525937] msg=' comm="console-kit-daemon" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success' <0.5> 2014-03-15 22:25:21 Telcontar kernel - - - [20438.526359] type=1131 audit(1394918721.291:1139): pid=1 uid=0 auid=4294967295 ses=4294967295 <0.5> 2014-03-15 22:25:21 Telcontar kernel - - - [20438.526359] msg=' comm="polkit" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success' <0.5> 2014-03-15 22:25:21 Telcontar kernel - - - [20438.526577] type=1131 audit(1394918721.291:1140): pid=1 uid=0 auid=4294967295 ses=4294967295 <0.5> 2014-03-15 22:25:21 Telcontar kernel - - - [20438.526577] msg=' comm="rtkit-daemon" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success' <0.5> 2014-03-15 22:25:21 Telcontar kernel - - - [20438.527021] type=1131 audit(1394918721.292:1141): pid=1 uid=0 auid=4294967295 ses=4294967295 <0.5> 2014-03-15 22:25:21 Telcontar kernel - - - [20438.527021] msg=' comm="bluetooth" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success' <0.4> 2014-03-15 22:25:21 Telcontar kernel - - - [20438.752008] XFS (sdd5): xfs_log_force: error 5 returned. <5.6> 2014-03-15 22:25:22 Telcontar rsyslogd - - - [origin software="rsyslogd" swVersion="7.4.7" x-pid="1067" x-info="http://www.rsyslog.com"] exiting on signal 15. 2014-03-15 22:25:23+01:00 - Halting the system now =========================================== uptime: 22:25pm up 18:36, 2 users, load average: 2.08, 1.04, 0.78 2014-03-15 22:25:31+01:00 - Booting the system now ================================================================================ Linux Telcontar 3.11.10-7-desktop #1 SMP PREEMPT Mon Feb 3 09:41:24 UTC <5.6> 2014-03-15 22:25:39 Telcontar rsyslogd - - - [origin software="rsyslogd" swVersion="7.4.7" x-pid="32300" x-info="http://www.rsyslog.com"] start <3.6> 2014-03-15 22:25:39 Telcontar systemd 1 - - Stopping Rescue Shell... This time, the system detects problems: <0.4> 2014-03-15 22:25:51 Telcontar kernel - - - [20468.832024] XFS (sdd5): xfs_log_force: error 5 returned. ... <3.6> 2014-03-15 22:26:16 Telcontar systemd 1 - - Started Console Manager. <10.5> 2014-03-15 22:26:16 Telcontar login - - - ROOT LOGIN ON tty1 <3.6> 2014-03-15 22:26:16 Telcontar systemd 878 - - Mounted /sys/fs/fuse/connections. <3.6> 2014-03-15 22:26:16 Telcontar systemd 878 - - Stopped target Sound Card. <3.6> 2014-03-15 22:26:16 Telcontar systemd 878 - - Starting Default. <3.6> 2014-03-15 22:26:16 Telcontar systemd 878 - - Reached target Default. <3.6> 2014-03-15 22:26:16 Telcontar systemd 878 - - Startup finished in 316ms. <3.6> 2014-03-15 22:26:16 Telcontar systemd 1 - - Started User Manager for 0. <0.4> 2014-03-15 22:26:21 Telcontar kernel - - - [20498.912018] XFS (sdd5): xfs_log_force: error 5 returned. <0.4> 2014-03-15 22:26:51 Telcontar kernel - - - [20528.992014] XFS (sdd5): xfs_log_force: error 5 returned. <0.4> 2014-03-15 22:27:21 Telcontar kernel - - - [20559.072014] XFS (sdd5): xfs_log_force: error 5 returned. <0.4> 2014-03-15 22:27:51 Telcontar kernel - - - [20589.152013] XFS (sdd5): xfs_log_force: error 5 returned. <3.6> 2014-03-15 22:28:01 Telcontar systemd 1 - - Starting user-9.slice. But aparently I decided to abort: 2014-03-15 22:28:03+01:00 - Halting the system now =========================================== uptime: 22:28pm up 18:39, 0 users, load average: 0.70, 1.40, 1.01 2014-03-16 14:07:21+01:00 - Booting the system now ================================================================================ Linux Telcontar 3.11.10-7-desktop #1 SMP PREEMPT Mon Feb 3 09:41:24 UTC Judging from the time of the next boot, I guess that it was here that I decided to use the live system and reformat. The cloned image I have of the filesystem is dated Mar 16 05:42, so it was made somewhere here - at late hours, you see, if I started to attempt recovery at 22:30 (I used dd, rsync, and xfsdump, so that took time). Unfortunately, I do not remember where I placed my notes on the repair procedure, so I do not know for certain at which point in my attempts to repair I took the photo. Seeing that I probably started around midnight, and the file is dated 05:42, I guess I did it too late. But that surprises me, as I'm absolutely sure I took the photo to be able to provide it for investigation. As it was evident by now that xfsrepair failed to repair the partition, which crashed soon after "repair", and as it was mountable, I decided to do an both an rsync copy and an xfsdump copy. I then reformatted the affected partition, but I don't remember if I used gparted (probably) or mkfs.xfs, and when done, I copied back the data from the backup made just an hour before, with xfsrestore. I remember I also used rsync to verify the copy, and it was correct. And the procedure succeeded: <0.5> 2014-03-16 14:07:23 Telcontar kernel - - - [ 20.239542] XFS (sdd5): Mounting Filesystem <0.5> 2014-03-16 14:07:23 Telcontar kernel - - - [ 20.280604] XFS (sdd8): Mounting Filesystem <0.6> 2014-03-16 14:07:23 Telcontar kernel - - - [ 20.450123] XFS (sdd8): Ending clean mount <0.6> 2014-03-16 14:07:23 Telcontar kernel - - - [ 20.459463] XFS (sdd5): Ending clean mount Next log entry related to "sdd5" was days later, all normal: <3.6> 2014-03-19 00:18:12 Telcontar dbus-daemon 1004 - - **** ADDING /sys/devices/pci0000:00/0000:00:1f.2/ata10/host9/target9:0:0/9:0:0:0/block/sdd/sdd5 Next crash event happened on 2014-04-17 22:47:08, after 15 sucesful hibernation cycles: <5.4> 2014-04-17 20:15:56 Telcontar pm-utils - - - Hibernating (1)... <1.5> 2014-04-17 20:15:56 Telcontar network 314 - - redirecting to "systemctl --signal=9 kill network.service" <3.5> 2014-04-17 20:15:56 Telcontar systemd 1 - - network@eth0.service: main process exited, code=killed, status=9/KILL <5.4> 2014-04-17 20:15:56 Telcontar pm-utils - - - Hibernating (95)... <0.7> 2014-04-17 20:15:59 Telcontar kernel - - - [280263.870791] PM: Marking nosave pages: [mem 0x0009f000-0x000fffff] <0.7> 2014-04-17 20:15:59 Telcontar kernel - - - [280263.870797] PM: Marking nosave pages: [mem 0xbff90000-0xffffffff] <0.7> 2014-04-17 20:15:59 Telcontar kernel - - - [280263.871414] PM: Basic memory bitmaps created <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280264.493703] Syncing filesystems ... done. <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280265.043237] Freezing user space processes ... (elapsed 0.002 seconds) done. <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280265.046032] PM: Preallocating image memory... done (allocated 1140779 pages) <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.609430] PM: Allocated 4563116 kbytes in 1.56 seconds (2925.07 MB/s) <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.609554] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done. <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.611525] Suspending console(s) (use no_console_suspend to debug) <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.612352] serial 00:05: disabled <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.812165] PM: freeze of devices complete after 200.520 msecs <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.812452] PM: late freeze of devices complete after 0.285 msecs <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.812999] PM: noirq freeze of devices complete after 0.544 msecs <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.812999] Disabling non-boot CPUs ... <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.814329] smpboot: CPU 1 is now offline <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.816455] smpboot: CPU 2 is now offline <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.818199] smpboot: CPU 3 is now offline <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.818656] PM: Creating hibernation image: <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.819191] PM: Need to copy 923283 pages <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.819191] PM: Normal pages needed: 923283 + 1024, available pages: 1173501 <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.819191] Enabling non-boot CPUs ... <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.819191] smpboot: Booting Node 0 Processor 1 APIC 0x1 <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.832336] CPU1 is up <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.832467] smpboot: Booting Node 0 Processor 2 APIC 0x2 <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.845865] CPU2 is up <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.846034] smpboot: Booting Node 0 Processor 3 APIC 0x3 <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.859609] CPU3 is up <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.887223] PM: noirq restore of devices complete after 22.590 msecs <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.887356] PM: early restore of devices complete after 0.107 msecs <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.059840] uhci_hcd 0000:00:1a.0: setting latency timer to 64 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.059859] usb usb3: root hub lost power or was reset <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.059869] uhci_hcd 0000:00:1a.1: setting latency timer to 64 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.059885] usb usb4: root hub lost power or was reset <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.059893] uhci_hcd 0000:00:1a.2: setting latency timer to 64 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.059910] usb usb5: root hub lost power or was reset <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.059919] ehci-pci 0000:00:1a.7: setting latency timer to 64 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.059937] usb usb1: root hub lost power or was reset <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.061145] uhci_hcd 0000:00:1d.0: setting latency timer to 64 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.061167] usb usb6: root hub lost power or was reset <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.061177] uhci_hcd 0000:00:1d.1: setting latency timer to 64 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.061196] usb usb7: root hub lost power or was reset <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.061205] uhci_hcd 0000:00:1d.2: setting latency timer to 64 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.061225] usb usb8: root hub lost power or was reset <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.061236] ehci-pci 0000:00:1d.7: setting latency timer to 64 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.061254] usb usb2: root hub lost power or was reset <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.062031] pci 0000:00:1e.0: setting latency timer to 64 <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.062123] ata_piix 0000:00:1f.2: setting latency timer to 64 <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.062182] ata_piix 0000:00:1f.5: setting latency timer to 64 <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.063832] ehci-pci 0000:00:1a.7: cache line size of 32 is not supported <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.065134] ehci-pci 0000:00:1d.7: cache line size of 32 is not supported <0.3> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.162023] pciehp 0000:00:1c.4:pcie04: Device 0000:06:00.0 already exists at 0000:06:00, cannot hot-add <0.3> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.162025] pciehp 0000:00:1c.4:pcie04: Cannot add device at 0000:06:00 <0.3> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.162047] pciehp 0000:00:1c.2:pcie04: Device 0000:04:00.0 already exists at 0000:04:00, cannot hot-add <0.3> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.162049] pciehp 0000:00:1c.2:pcie04: Cannot add device at 0000:04:00 <0.3> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.162051] pciehp 0000:00:1c.5:pcie04: Device 0000:07:00.0 already exists at 0000:07:00, cannot hot-add <0.3> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.162053] pciehp 0000:00:1c.5:pcie04: Cannot add device at 0000:07:00 <0.3> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.162098] pciehp 0000:00:1c.0:pcie04: Device 0000:02:00.0 already exists at 0000:02:00, cannot hot-add <0.3> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.162100] pciehp 0000:00:1c.0:pcie04: Cannot add device at 0000:02:00 <0.3> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.162123] pciehp 0000:00:1c.3:pcie04: Device 0000:05:00.0 already exists at 0000:05:00, cannot hot-add <0.3> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.162125] pciehp 0000:00:1c.3:pcie04: Cannot add device at 0000:05:00 <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.162308] pata_jmicron 0000:05:00.1: setting latency timer to 64 <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.163546] serial 00:05: activated <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.164041] pata_jmicron 0000:04:00.1: setting latency timer to 64 <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.173271] r8169 0000:06:00.0 eth0: link down <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.386975] ata11: SATA link down (SStatus 0 SControl 300) <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.467054] ata2: SATA link down (SStatus 0 SControl 300) <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.468030] ata1: SATA link down (SStatus 0 SControl 300) <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.481019] usb 1-2: reset high-speed USB device number 3 using ehci-pci <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.485262] r8169 0000:07:00.0 eth1: link down <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.538037] ata12: SATA link up 1.5 Gbps (SStatus 113 SControl 300) <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.541148] ata12.00: ACPI cmd ef/03:45:00:00:00:a0 (SET FEATURES) filtered out <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.541149] ata12.00: ACPI cmd ef/03:0c:00:00:00:a0 (SET FEATURES) filtered out <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.541151] ata12.00: ACPI cmd f5/00:00:00:00:00:00 (SECURITY FREEZE LOCK) filtered out <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.563113] ata12.00: configured for UDMA/100 <0.5> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.621020] firewire_core 0000:08:02.0: rediscovered device fw0 <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.622018] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300) <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.624027] ata4: SATA link up 3.0 Gbps (SStatus 123 SControl 300) <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.624176] ata3.00: configured for UDMA/133 <0.5> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.624207] sd 2:0:0:0: [sda] Starting disk <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.625665] ata4.00: configured for UDMA/133 <0.5> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.626090] sd 3:0:0:0: [sdb] Starting disk <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.656005] /dev/vmmon[0]: HostIFReadUptimeWork: detected settimeofday: fixed uptimeBase old 18445346595345864640 new 18445346586286024561 attempts 1 <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.833055] ata9.00: SATA link up 3.0 Gbps (SStatus 123 SControl 300) <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.833064] ata9.01: SATA link up 3.0 Gbps (SStatus 123 SControl 300) <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.836117] ata9.01: ACPI cmd ef/03:45:00:00:00:b0 (SET FEATURES) filtered out <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.836119] ata9.01: ACPI cmd ef/03:0c:00:00:00:b0 (SET FEATURES) filtered out <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.836296] ata9.01: ACPI cmd c6/00:10:00:00:00:b0 (SET MULTIPLE MODE) succeeded <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.836298] ata9.01: ACPI cmd f5/00:00:00:00:00:00 (SECURITY FREEZE LOCK) filtered out <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.842067] ata10.00: SATA link up 3.0 Gbps (SStatus 123 SControl 300) <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.842082] ata10.01: SATA link up 3.0 Gbps (SStatus 123 SControl 300) <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.842175] ata9.00: ACPI cmd ef/03:45:00:00:00:a0 (SET FEATURES) filtered out <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.842176] ata9.00: ACPI cmd ef/03:0c:00:00:00:a0 (SET FEATURES) filtered out <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.842344] ata9.00: ACPI cmd c6/00:10:00:00:00:a0 (SET MULTIPLE MODE) succeeded <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.842345] ata9.00: ACPI cmd f5/00:00:00:00:00:00 (SECURITY FREEZE LOCK) filtered out <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.845187] ata10.01: ACPI cmd ef/03:45:00:00:00:b0 (SET FEATURES) filtered out <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.845189] ata10.01: ACPI cmd ef/03:0c:00:00:00:b0 (SET FEATURES) filtered out <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.845378] ata10.01: ACPI cmd c6/00:10:00:00:00:b0 (SET MULTIPLE MODE) succeeded <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.845380] ata10.01: ACPI cmd f5/00:00:00:00:00:00 (SECURITY FREEZE LOCK) filtered out <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.847015] usb 3-1: reset low-speed USB device number 2 using uhci_hcd <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.851234] ata10.00: ACPI cmd ef/03:45:00:00:00:a0 (SET FEATURES) filtered out <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.851235] ata10.00: ACPI cmd ef/03:0c:00:00:00:a0 (SET FEATURES) filtered out <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.851359] ata9.00: configured for UDMA/133 <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.851456] ata10.00: ACPI cmd c6/00:10:00:00:00:a0 (SET MULTIPLE MODE) succeeded <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.851458] ata10.00: ACPI cmd f5/00:00:00:00:00:00 (SECURITY FREEZE LOCK) filtered out <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.857339] ata9.01: configured for UDMA/133 <0.5> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.857369] sd 8:0:0:0: [sdc] Starting disk <0.5> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.857371] sd 8:0:1:0: [sdd] Starting disk <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.879326] ata10.00: configured for UDMA/133 <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.885331] ata10.01: configured for UDMA/133 <0.5> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.885365] sd 9:0:0:0: [sde] Starting disk <0.5> 2014-04-17 22:47:08 Telcontar kernel - - - [280267.885369] sd 9:0:1:0: [sdf] Starting disk <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280268.242014] usb 2-5: reset high-speed USB device number 2 using ehci-pci <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280268.608013] usb 8-2: reset low-speed USB device number 2 using uhci_hcd <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280268.959113] usb 2-5.4: reset high-speed USB device number 4 using ehci-pci <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280269.287977] r8169 0000:06:00.0 eth0: link up <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280269.796130] PM: restore of devices complete after 2736.343 msecs <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280270.081655] Restarting kernel threads ... done. <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280270.086714] Restarting tasks ... done. <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280270.115233] PM: Basic memory bitmaps freed <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280270.191345] bridge-eth0: disabling the bridge <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280270.196021] bridge-eth0: down <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280270.196026] bridge-eth0: detached <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280270.762859] /dev/vmnet: open called by PID 3122 (vmnet-bridge) <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280270.762873] /dev/vmnet: hub 0 does not exist, allocating memory. <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280270.762888] /dev/vmnet: port on hub 0 successfully opened <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280270.762899] bridge-eth0: up <0.7> 2014-04-17 22:47:08 Telcontar kernel - - - [280270.762904] bridge-eth0: attached <0.5> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.396460] userif-2: sent link down event. <0.5> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.396463] userif-2: sent link up event. <0.1> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.851374] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c54fe9 <0.1> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.851374] <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.851709] CPU: 0 PID: 27785 Comm: kworker/0:4 Tainted: P O 3.11.10-7-desktop #1 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.851864] Hardware name: MICRO-STAR INTERNATIONAL CO.,LTD MS-7516/MS-7516, BIOS V1.5 10/10/2008 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.852074] Workqueue: xfs-eofblocks/sde5 xfs_eofblocks_worker [xfs] <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.852211] 0000000000000000 ffffffff8159ff82 0000000000216bae ffffffffa0c53996 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.852486] ffff88019907e0c0 ffff880234160740 ffff88012e9e5cb0 0000000000000000 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.852638] 0000000000000000 0000000100000000 0000000000000000 0000000000000001 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.852790] Call Trace: <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.852847] [] dump_trace+0x88/0x310 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.852947] [] show_stack_log_lvl+0xd0/0x1d0 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.853063] [] show_stack+0x1c/0x50 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.853164] [] dump_stack+0x50/0x89 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.853275] [] xfs_free_ag_extent+0x226/0x860 [xfs] <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.853439] [] xfs_free_extent+0xb9/0xf0 [xfs] <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.853594] [] xfs_bmap_finish+0x11e/0x170 [xfs] <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.853761] [] xfs_itruncate_extents+0x190/0x340 [xfs] <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.853950] [] xfs_free_eofblocks+0x1e3/0x260 [xfs] <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.854110] [] xfs_inode_free_eofblocks+0x6f/0x150 [xfs] <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.854268] [] xfs_inode_ag_walk.isra.10+0x1c2/0x310 [xfs] <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.854428] [] xfs_inode_ag_iterator_tag+0x6e/0xb0 [xfs] <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.854585] [] xfs_eofblocks_worker+0x12/0x20 [xfs] <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.854725] [] process_one_work+0x168/0x490 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.854835] [] worker_thread+0x114/0x3a0 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.854941] [] kthread+0xaf/0xc0 <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.855037] [] ret_from_fork+0x7c/0xb0 <0.5> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.855142] XFS (sde5): xfs_do_force_shutdown(0x8) called from line 916 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_bmap.c. Return address = 0xffffffffa0c673d8 <0.1> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.901296] XFS (sde5): Corruption of in-memory data detected. Shutting down filesystem <0.1> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.901447] XFS (sde5): Please umount the filesystem and rectify the problem(s) <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280272.480011] XFS (sde5): xfs_log_force: error 5 returned. <3.4> 2014-04-17 22:47:06 Telcontar rtkit-daemon 4749 - - The canary thread is apparently starving. Taking action. <3.6> 2014-04-17 22:47:06 Telcontar rtkit-daemon 4749 - - Demoting known real-time threads. <3.5> 2014-04-17 22:47:06 Telcontar rtkit-daemon 4749 - - Successfully demoted thread 31337 of process 31334 (/usr/bin/pulseaudio). <3.5> 2014-04-17 22:47:06 Telcontar rtkit-daemon 4749 - - Successfully demoted thread 31336 of process 31334 (/usr/bin/pulseaudio). <3.5> 2014-04-17 22:47:06 Telcontar rtkit-daemon 4749 - - Successfully demoted thread 31334 of process 31334 (/usr/bin/pulseaudio). <3.5> 2014-04-17 22:47:06 Telcontar rtkit-daemon 4749 - - Demoted 3 threads. <3.6> 2014-04-17 22:47:06 Telcontar vmnetBridge - - - RTM_NEWLINK: name:eth0 index:2 flags:0x00001003 <3.6> 2014-04-17 22:47:06 Telcontar vmnetBridge - - - Removing interface eth0 index:2 <3.6> 2014-04-17 22:47:06 Telcontar vmnetBridge - - - Stopped bridge eth0 to virtual network 0. <3.6> 2014-04-17 22:47:06 Telcontar vmnetBridge - - - RTM_NEWLINK: name:eth0 index:2 flags:0x00011043 <3.6> 2014-04-17 22:47:07 Telcontar vmnet-natd - - - RTM_NEWLINK: name:eth0 index:2 flags:0x00001003 <3.6> 2014-04-17 22:47:08 Telcontar systemd 1 - - Time has been changed <3.6> 2014-04-17 22:47:11 Telcontar acpid - - - 1 client rule loaded <3.5> 2014-04-17 22:47:12 Telcontar dbus 1013 - - [system] Activating service name='org.freedesktop.PackageKit' (using servicehelper) <5.4> 2014-04-17 22:47:12 Telcontar pm-utils - - - Thawing (95)... <3.5> 2014-04-17 22:47:14 Telcontar dbus 1013 - - [system] Activated service 'org.freedesktop.PackageKit' failed: Cannot launch daemon, file not found or permissions invalid <1.5> 2014-04-17 22:47:16 Telcontar network 788 - - redirecting to "systemctl restart network.service" <3.6> 2014-04-17 22:47:16 Telcontar systemd 1 - - Stopping ifup managed network interface eth1... <3.6> 2014-04-17 22:47:16 Telcontar systemd 1 - - Stopping ifup managed network interface eth0... <3.6> 2014-04-17 22:47:16 Telcontar systemd 1 - - Stopping LSB: Configure network interfaces and set up routing... Apparently, I rebooted: 2014-04-17 23:27:32+02:00 - Halting the system now =========================================== uptime: 23:27pm up 6 days 19:54, 1 user, load average: 12.51, 3.63, 1.38 2014-04-17 23:32:17+02:00 - Booting the system now ================================================================================ Linux Telcontar 3.11.10-7-desktop #1 SMP PREEMPT Mon Feb 3 09:41:24 UTC <10.5> 2014-04-17 23:33:13 Telcontar login - - - ROOT LOGIN ON tty1 <10.5> 2014-04-17 23:39:17 Telcontar login - - - ROOT LOGIN ON tty2 <10.5> 2014-04-17 23:43:14 Telcontar login - - - ROOT LOGIN ON tty3 <10.5> 2014-04-17 23:43:21 Telcontar login - - - ROOT LOGIN ON tty4 I have reason to believe, looking at my logs, that I restored my home here, using the same procedure, but using this work system, instead of the rescue live stick (oS 13.1 XFCE), using text mode tools. Thus I guess this time I used plain mkfs.xfs. Later I see dozens of hibernate cycles, till I halt normally about two weeks later, on 2014-05-02, so the procedure succeded. Next crash event was this Sunday: Hibernating and thawing sequence, complete: <3.4> 2014-06-29 04:51:49 Telcontar pm-utils - - - Hibernating the system now (04)... <3.5> 2014-06-29 04:51:49 Telcontar pm-utils - - - There appears not be any pending nntp post to be sent. I just checked :-) <1.5> 2014-06-29 04:51:50 Telcontar network 29169 - - redirecting to "systemctl --signal=9 kill network.service" <3.5> 2014-06-29 04:51:50 Telcontar systemd 1 - - network@eth0.service: main process exited, code=killed, status=9/KILL <3.4> 2014-06-29 04:51:50 Telcontar pm-utils - - - Hibernating (95)... <0.7> 2014-06-29 04:51:53 Telcontar kernel - - - [212878.926048] PM: Marking nosave pages: [mem 0x0009f000-0x000fffff] <0.7> 2014-06-29 04:51:53 Telcontar kernel - - - [212878.926052] PM: Marking nosave pages: [mem 0xbff90000-0xffffffff] <0.7> 2014-06-29 04:51:53 Telcontar kernel - - - [212878.927502] PM: Basic memory bitmaps created <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212879.561676] Syncing filesystems ... done. <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212880.077132] Freezing user space processes ... (elapsed 0.002 seconds) done. <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212880.080024] PM: Preallocating image memory... done (allocated 1140811 pages) <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.351277] PM: Allocated 4563244 kbytes in 7.27 seconds (627.68 MB/s) <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.351400] Freezing remaining freezable tasks ... (elapsed 0.080 seconds) done. <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.432284] Suspending console(s) (use no_console_suspend to debug) <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.433051] serial 00:05: disabled <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.633138] PM: freeze of devices complete after 200.734 msecs <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.633370] PM: late freeze of devices complete after 0.230 msecs <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.633913] PM: noirq freeze of devices complete after 0.541 msecs <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.633913] Disabling non-boot CPUs ... <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.635222] smpboot: CPU 1 is now offline <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.637153] smpboot: CPU 2 is now offline <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.639195] smpboot: CPU 3 is now offline <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.639658] PM: Creating hibernation image: <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.640186] PM: Need to copy 923219 pages <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.640186] PM: Normal pages needed: 923219 + 1024, available pages: 1173563 <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.640186] microcode: CPU0 sig=0x1067a, pf=0x10, revision=0xa0b <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.640186] Enabling non-boot CPUs ... <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.640186] smpboot: Booting Node 0 Processor 1 APIC 0x1 <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.653119] microcode: CPU1 sig=0x1067a, pf=0x10, revision=0xa0b <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.653307] CPU1 is up <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.653440] smpboot: Booting Node 0 Processor 2 APIC 0x2 <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.666704] microcode: CPU2 sig=0x1067a, pf=0x10, revision=0xa0b <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.666844] CPU2 is up <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.667011] smpboot: Booting Node 0 Processor 3 APIC 0x3 <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.680398] microcode: CPU3 sig=0x1067a, pf=0x10, revision=0xa0b <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.680598] CPU3 is up <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.708225] PM: noirq restore of devices complete after 22.576 msecs <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.708358] PM: early restore of devices complete after 0.109 msecs <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.880083] uhci_hcd 0000:00:1a.0: setting latency timer to 64 <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.880086] uhci_hcd 0000:00:1a.1: setting latency timer to 64 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.880107] usb usb3: root hub lost power or was reset <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.880110] usb usb4: root hub lost power or was reset <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.880120] uhci_hcd 0000:00:1a.2: setting latency timer to 64 <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.880124] ehci-pci 0000:00:1a.7: setting latency timer to 64 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.880139] usb usb5: root hub lost power or was reset <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.880188] usb usb1: root hub lost power or was reset <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.880243] uhci_hcd 0000:00:1d.0: setting latency timer to 64 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.880265] usb usb6: root hub lost power or was reset <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.880275] uhci_hcd 0000:00:1d.1: setting latency timer to 64 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.880296] usb usb7: root hub lost power or was reset <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.880306] uhci_hcd 0000:00:1d.2: setting latency timer to 64 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.880326] usb usb8: root hub lost power or was reset <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.880338] ehci-pci 0000:00:1d.7: setting latency timer to 64 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.880349] usb usb2: root hub lost power or was reset <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.881094] pci 0000:00:1e.0: setting latency timer to 64 <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.881199] ata_piix 0000:00:1f.2: setting latency timer to 64 <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.881237] ata_piix 0000:00:1f.5: setting latency timer to 64 <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.884086] ehci-pci 0000:00:1a.7: cache line size of 32 is not supported <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.884236] ehci-pci 0000:00:1d.7: cache line size of 32 is not supported <0.3> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.981023] pciehp 0000:00:1c.0:pcie04: Device 0000:02:00.0 already exists at 0000:02:00, cannot hot-add <0.3> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.981025] pciehp 0000:00:1c.2:pcie04: Device 0000:04:00.0 already exists at 0000:04:00, cannot hot-add <0.3> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.981026] pciehp 0000:00:1c.0:pcie04: Cannot add device at 0000:02:00 <0.3> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.981028] pciehp 0000:00:1c.2:pcie04: Cannot add device at 0000:04:00 <0.3> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.981032] pciehp 0000:00:1c.5:pcie04: Device 0000:07:00.0 already exists at 0000:07:00, cannot hot-add <0.3> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.981034] pciehp 0000:00:1c.5:pcie04: Cannot add device at 0000:07:00 <0.3> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.981058] pciehp 0000:00:1c.3:pcie04: Device 0000:05:00.0 already exists at 0000:05:00, cannot hot-add <0.3> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.981059] pciehp 0000:00:1c.3:pcie04: Cannot add device at 0000:05:00 <0.3> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.981089] pciehp 0000:00:1c.4:pcie04: Device 0000:06:00.0 already exists at 0000:06:00, cannot hot-add <0.3> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.981090] pciehp 0000:00:1c.4:pcie04: Cannot add device at 0000:06:00 <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.981220] pata_jmicron 0000:04:00.1: setting latency timer to 64 <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.982188] serial 00:05: activated <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.982714] pata_jmicron 0000:05:00.1: setting latency timer to 64 <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.186275] r8169 0000:06:00.0 eth0: link down <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.192270] r8169 0000:07:00.0 eth1: link down <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.206012] ata11: SATA link down (SStatus 0 SControl 300) <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.286032] ata1: SATA link down (SStatus 0 SControl 300) <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.287030] ata4: SATA link down (SStatus 0 SControl 300) <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.357035] ata12: SATA link up 1.5 Gbps (SStatus 113 SControl 300) <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.360116] ata12.00: ACPI cmd ef/03:45:00:00:00:a0 (SET FEATURES) filtered out <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.360118] ata12.00: ACPI cmd ef/03:0c:00:00:00:a0 (SET FEATURES) filtered out <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.360119] ata12.00: ACPI cmd f5/00:00:00:00:00:00 (SECURITY FREEZE LOCK) filtered out <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.366112] ata12.00: configured for UDMA/100 <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.440022] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300) <0.5> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.440024] firewire_core 0000:08:02.0: rediscovered device fw0 <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.442190] ata3.00: configured for UDMA/133 <0.5> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.442223] sd 2:0:0:0: [sdb] Starting disk <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.450017] usb 8-2: reset low-speed USB device number 2 using uhci_hcd <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.659048] ata9.00: SATA link up 3.0 Gbps (SStatus 123 SControl 300) <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.659058] ata9.01: SATA link up 3.0 Gbps (SStatus 123 SControl 300) <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.661048] ata10.00: SATA link up 3.0 Gbps (SStatus 123 SControl 300) <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.661058] ata10.01: SATA link up 3.0 Gbps (SStatus 123 SControl 300) <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.662114] ata9.01: ACPI cmd ef/03:45:00:00:00:b0 (SET FEATURES) filtered out <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.662115] ata9.01: ACPI cmd ef/03:0c:00:00:00:b0 (SET FEATURES) filtered out <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.662293] ata9.01: ACPI cmd c6/00:10:00:00:00:b0 (SET MULTIPLE MODE) succeeded <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.662295] ata9.01: ACPI cmd f5/00:00:00:00:00:00 (SECURITY FREEZE LOCK) filtered out <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.664113] ata10.01: ACPI cmd ef/03:45:00:00:00:b0 (SET FEATURES) filtered out <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.664114] ata10.01: ACPI cmd ef/03:0c:00:00:00:b0 (SET FEATURES) filtered out <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.664326] ata10.01: ACPI cmd c6/00:10:00:00:00:b0 (SET MULTIPLE MODE) succeeded <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.664327] ata10.01: ACPI cmd f5/00:00:00:00:00:00 (SECURITY FREEZE LOCK) filtered out <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.668112] ata9.00: ACPI cmd ef/03:45:00:00:00:a0 (SET FEATURES) filtered out <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.668113] ata9.00: ACPI cmd ef/03:0c:00:00:00:a0 (SET FEATURES) filtered out <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.668293] ata9.00: ACPI cmd c6/00:10:00:00:00:a0 (SET MULTIPLE MODE) succeeded <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.668294] ata9.00: ACPI cmd f5/00:00:00:00:00:00 (SECURITY FREEZE LOCK) filtered out <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.670113] ata10.00: ACPI cmd ef/03:45:00:00:00:a0 (SET FEATURES) filtered out <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.670114] ata10.00: ACPI cmd ef/03:0c:00:00:00:a0 (SET FEATURES) filtered out <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.670323] ata10.00: ACPI cmd c6/00:10:00:00:00:a0 (SET MULTIPLE MODE) succeeded <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.670324] ata10.00: ACPI cmd f5/00:00:00:00:00:00 (SECURITY FREEZE LOCK) filtered out <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.677300] ata9.00: configured for UDMA/133 <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.683286] ata9.01: configured for UDMA/133 <0.5> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.683311] sd 8:0:0:0: [sdc] Starting disk <0.5> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.683369] sd 8:0:1:0: [sdd] Starting disk <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.698321] ata10.00: configured for UDMA/133 <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.704335] ata10.01: configured for UDMA/133 <0.5> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.704361] sd 9:0:0:0: [sde] Starting disk <0.5> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.704418] sd 9:0:1:0: [sdf] Starting disk <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.829028] usb 2-5: reset high-speed USB device number 2 using ehci-pci <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.901026] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300) <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.903237] ata2.00: configured for UDMA/133 <0.5> 2014-06-29 12:32:18 Telcontar kernel - - - [212888.903279] sd 1:0:0:0: [sda] Starting disk <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212889.045020] usb 1-2: reset high-speed USB device number 3 using ehci-pci <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212889.411014] usb 3-1: reset low-speed USB device number 2 using uhci_hcd <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212889.778047] usb 2-5.4: reset high-speed USB device number 4 using ehci-pci <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.186436] r8169 0000:06:00.0 eth0: link up <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.615073] PM: restore of devices complete after 2735.034 msecs <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626346] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c39fe9 <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626346] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626348] CPU: 0 PID: 28875 Comm: kworker/0:2 Tainted: P O 3.11.10-11-desktop #1 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626348] Hardware name: MICRO-STAR INTERNATIONAL CO.,LTD MS-7516/MS-7516, BIOS V1.5 10/10/2008 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626388] Workqueue: xfs-eofblocks/sde5 xfs_eofblocks_worker [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626390] 0000000000000002 ffffffff815a0252 00000000002a61c2 ffffffffa0c38996 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626391] ffff8800b7025680 ffff88022eb74180 ffff880121c3fe50 0000000000000002 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626393] 0000000000000000 0000000100000000 0000000000000000 0000000000000001 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626393] Call Trace: <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626403] [] dump_trace+0x88/0x310 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626406] [] show_stack_log_lvl+0xd0/0x1d0 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626408] [] show_stack+0x1c/0x50 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626411] [] dump_stack+0x50/0x89 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626425] [] xfs_free_ag_extent+0x226/0x860 [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626468] [] xfs_free_extent+0xb9/0xf0 [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626510] [] xfs_bmap_finish+0x11e/0x170 [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626560] [] xfs_itruncate_extents+0x190/0x340 [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626623] [] xfs_free_eofblocks+0x1e3/0x260 [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626659] [] xfs_inode_free_eofblocks+0x6f/0x150 [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626688] [] xfs_inode_ag_walk.isra.10+0x1c2/0x310 [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626716] [] xfs_inode_ag_iterator_tag+0x6e/0xb0 [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626744] [] xfs_eofblocks_worker+0x12/0x20 [xfs] <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626763] [] process_one_work+0x168/0x490 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626765] [] worker_thread+0x114/0x3a0 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626768] [] kthread+0xaf/0xc0 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626771] [] ret_from_fork+0x7c/0xb0 <0.5> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626776] XFS (sde5): xfs_do_force_shutdown(0x8) called from line 916 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_bmap.c. Return address = 0xffffffffa0c4c3d8 <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.706440] XFS (sde5): Corruption of in-memory data detected. Shutting down filesystem <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.706440] XFS (sde5): Please umount the filesystem and rectify the problem(s) <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212891.026207] usb 1-6: USB disconnect, device number 4 <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212891.025944] Restarting kernel threads ... done. <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212891.026371] Restarting tasks ... done. <0.7> 2014-06-29 12:32:18 Telcontar kernel - - - [212891.079743] PM: Basic memory bitmaps freed <3.4> 2014-06-29 12:32:19 Telcontar rtkit-daemon 4287 - - The canary thread is apparently starving. Taking action. <3.6> 2014-06-29 12:32:20 Telcontar rtkit-daemon 4287 - - Demoting known real-time threads. <3.5> 2014-06-29 12:32:20 Telcontar rtkit-daemon 4287 - - Successfully demoted thread 4293 of process 4286 (/usr/bin/pulseaudio). <3.5> 2014-06-29 12:32:20 Telcontar rtkit-daemon 4287 - - Successfully demoted thread 4292 of process 4286 (/usr/bin/pulseaudio). <3.5> 2014-06-29 12:32:20 Telcontar rtkit-daemon 4287 - - Successfully demoted thread 4286 of process 4286 (/usr/bin/pulseaudio). <3.5> 2014-06-29 12:32:20 Telcontar rtkit-daemon 4287 - - Demoted 3 threads. <3.6> 2014-06-29 12:32:20 Telcontar systemd 1 - - Time has been changed <3.3> 2014-06-29 12:32:21 Telcontar systemd-udevd 29550 - - inotify_add_watch(7, /dev/sdg, 10) failed: No such file or directory <3.3> 2014-06-29 12:32:21 Telcontar systemd-udevd 29551 - - inotify_add_watch(7, /dev/sdh, 10) failed: No such file or directory <0.4> 2014-06-29 12:32:25 Telcontar kernel - - - [212898.656011] XFS (sde5): xfs_log_force: error 5 returned. <3.5> 2014-06-29 12:32:26 Telcontar dbus 1033 - - [system] Activating service name='org.freedesktop.PackageKit' (using servicehelper) <3.4> 2014-06-29 12:32:27 Telcontar pm-utils - - - Thawing (95)... <3.5> 2014-06-29 12:32:29 Telcontar dbus 1033 - - [system] Activated service 'org.freedesktop.PackageKit' failed: Cannot launch daemon, file not found or permissions invalid <1.5> 2014-06-29 12:32:30 Telcontar network 29606 - - redirecting to "systemctl restart network.service" <3.6> 2014-06-29 12:32:30 Telcontar systemd 1 - - Stopping ifup managed network interface eth1... <3.6> 2014-06-29 12:32:30 Telcontar systemd 1 - - Stopping ifup managed network interface eth0... <3.6> 2014-06-29 12:32:30 Telcontar systemd 1 - - Stopping LSB: Configure network interfaces and set up routing... <3.6> 2014-06-29 12:32:31 Telcontar systemd 1 - - Starting LSB: Configure network interfaces and set up routing... <3.6> 2014-06-29 12:32:32 Telcontar acpid - - - 1 client rule loaded <3.6> 2014-06-29 12:32:32 Telcontar ifdown 29624 - - eth1 device: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 02) <3.6> 2014-06-29 12:32:32 Telcontar ifdown 29625 - - eth0 device: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 02) <1.5> 2014-06-29 12:32:32 Telcontar ifdown 29624 - - eth1 device: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 02) <1.5> 2014-06-29 12:32:32 Telcontar ifdown 29625 - - eth0 device: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 02) <3.6> 2014-06-29 12:32:32 Telcontar network 29638 - - Setting up network interfaces: <3.6> 2014-06-29 12:32:34 Telcontar network 29638 - - lo <1.5> 2014-06-29 12:32:34 Telcontar ifup 30165 - - lo <1.5> 2014-06-29 12:32:34 Telcontar ifup 30165 - - lo <1.5> 2014-06-29 12:32:34 Telcontar ifup 30165 - - IP address: 127.0.0.1/8 <3.6> 2014-06-29 12:32:34 Telcontar network 29638 - - lo IP address: 127.0.0.1/8 <1.5> 2014-06-29 12:32:34 Telcontar ifup 30165 - - <0.6> 2014-06-29 12:32:49 Telcontar kernel - - - [212922.866033] Chrome_ChildThr[14100]: segfault at 0 ip 00007fd3d820d596 sp 00007fd3cbc5c410 error 6 in libmozalloc.so[7fd3d820c000+2000] <16.3> 2014-06-29 12:32:49 Telcontar dhcpcd 30417 - - eth1: dhcpcd not running <16.6> 2014-06-29 12:32:49 Telcontar dhcpcd 30417 - - eth1: exiting <3.6> 2014-06-29 12:32:49 Telcontar avahi-daemon 1020 - - Interface eth0.IPv6 no longer relevant for mDNS. <3.6> 2014-06-29 12:32:49 Telcontar avahi-daemon 1020 - - Leaving mDNS multicast group on interface eth0.IPv6 with address fc00::14. <3.6> 2014-06-29 12:32:49 Telcontar avahi-daemon 1020 - - Interface eth0.IPv4 no longer relevant for mDNS. <3.6> 2014-06-29 12:32:49 Telcontar avahi-daemon 1020 - - Leaving mDNS multicast group on interface eth0.IPv4 with address 192.168.1.14. <3.6> 2014-06-29 12:32:49 Telcontar avahi-daemon 1020 - - Withdrawing address record for fc00::14 on eth0. <3.6> 2014-06-29 12:32:49 Telcontar avahi-daemon 1020 - - Withdrawing address record for 192.168.1.14 on eth0. <3.5> 2014-06-29 12:32:49 Telcontar systemd 1 - - Unit network@eth0.service entered failed state. <3.6> 2014-06-29 12:32:49 Telcontar systemd 1 - - Starting ifup managed network interface eth0... <3.6> 2014-06-29 12:32:49 Telcontar ifup 30485 - - eth0 device: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 02) <1.5> 2014-06-29 12:32:49 Telcontar ifup 30485 - - eth0 device: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 02) <0.6> 2014-06-29 12:32:49 Telcontar kernel - - - [212923.549298] r8169 0000:06:00.0 eth0: link down <0.6> 2014-06-29 12:32:49 Telcontar kernel - - - [212923.549323] r8169 0000:06:00.0 eth0: link down <0.6> 2014-06-29 12:32:49 Telcontar kernel - - - [212923.549369] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready <3.6> 2014-06-29 12:32:49 Telcontar avahi-daemon 1020 - - Joining mDNS multicast group on interface eth0.IPv4 with address 192.168.1.14. <3.6> 2014-06-29 12:32:49 Telcontar avahi-daemon 1020 - - New relevant interface eth0.IPv4 for mDNS. <3.6> 2014-06-29 12:32:49 Telcontar avahi-daemon 1020 - - Registering new address record for 192.168.1.14 on eth0.IPv4. <3.6> 2014-06-29 12:32:50 Telcontar systemd 1 - - Starting ifup managed network interface eth1... <3.6> 2014-06-29 12:32:50 Telcontar ifplugd(eth1) 30800 - - ifplugd 0.28 initializing. <3.6> 2014-06-29 12:32:50 Telcontar ifplugd(eth1) 30800 - - Using interface eth1/00:21:85:16:2D:0C with driver (version: 2.3LK-NAPI) <0.6> 2014-06-29 12:32:50 Telcontar kernel - - - [212924.375304] r8169 0000:07:00.0 eth1: link down <0.6> 2014-06-29 12:32:50 Telcontar kernel - - - [212924.375373] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready <3.6> 2014-06-29 12:32:50 Telcontar ifplugd(eth1) 30800 - - Using detection mode: SIOCETHTOOL <3.6> 2014-06-29 12:32:50 Telcontar ifplugd(eth1) 30800 - - Initialization complete, link beat not detected. <3.6> 2014-06-29 12:32:50 Telcontar ifup 30780 - - eth1 device: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 02) <3.6> 2014-06-29 12:32:50 Telcontar ifup 30780 - - eth1 is controlled by ifplugd <1.5> 2014-06-29 12:32:50 Telcontar ifup 30780 - - eth1 device: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 02) <1.5> 2014-06-29 12:32:50 Telcontar ifup 30780 - - eth1 is controlled by ifplugd <3.6> 2014-06-29 12:32:50 Telcontar systemd 1 - - Started ifup managed network interface eth1. <0.6> 2014-06-29 12:32:52 Telcontar kernel - - - [212925.693147] r8169 0000:06:00.0 eth0: link up <0.6> 2014-06-29 12:32:52 Telcontar kernel - - - [212925.693155] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready <3.6> 2014-06-29 12:32:53 Telcontar avahi-daemon 1020 - - Joining mDNS multicast group on interface eth0.IPv6 with address fe80::221:85ff:fe16:2d0b. <3.6> 2014-06-29 12:32:53 Telcontar avahi-daemon 1020 - - New relevant interface eth0.IPv6 for mDNS. <3.6> 2014-06-29 12:32:53 Telcontar avahi-daemon 1020 - - Registering new address record for fe80::221:85ff:fe16:2d0b on eth0.*. <3.6> 2014-06-29 12:32:53 Telcontar avahi-daemon 1020 - - Leaving mDNS multicast group on interface eth0.IPv6 with address fe80::221:85ff:fe16:2d0b. <3.6> 2014-06-29 12:32:53 Telcontar avahi-daemon 1020 - - Joining mDNS multicast group on interface eth0.IPv6 with address fc00::14. <3.6> 2014-06-29 12:32:53 Telcontar avahi-daemon 1020 - - Registering new address record for fc00::14 on eth0.*. <3.6> 2014-06-29 12:32:53 Telcontar avahi-daemon 1020 - - Withdrawing address record for fe80::221:85ff:fe16:2d0b on eth0. <3.6> 2014-06-29 12:32:54 Telcontar avahi-daemon 1020 - - Withdrawing workstation service for eth1. <3.6> 2014-06-29 12:32:54 Telcontar avahi-daemon 1020 - - Withdrawing address record for 192.168.1.14 on eth0. <3.6> 2014-06-29 12:32:54 Telcontar avahi-daemon 1020 - - Withdrawing workstation service for eth0. <3.6> 2014-06-29 12:32:54 Telcontar avahi-daemon 1020 - - Withdrawing workstation service for lo. <3.4> 2014-06-29 12:32:54 Telcontar avahi-daemon 1020 - - Host name conflict, retrying with Telcontar-2 <3.6> 2014-06-29 12:32:54 Telcontar avahi-daemon 1020 - - Registering new address record for fc00::14 on eth0.*. <3.6> 2014-06-29 12:32:54 Telcontar avahi-daemon 1020 - - Registering new address record for 192.168.1.14 on eth0.IPv4. <3.6> 2014-06-29 12:32:54 Telcontar avahi-daemon 1020 - - Registering HINFO record with values 'X86_64'/'LINUX'. <0.4> 2014-06-29 12:32:55 Telcontar kernel - - - [212928.736057] XFS (sde5): xfs_log_force: error 5 returned. <3.6> 2014-06-29 12:32:55 Telcontar avahi-daemon 1020 - - Server startup complete. Host name is Telcontar-2.local. Local service cookie is 580789639. <4.6> 2014-06-29 12:32:55 Telcontar SuSEfirewall2 - - - Setting up rules from /etc/sysconfig/SuSEfirewall2 ... <4.6> 2014-06-29 12:32:55 Telcontar SuSEfirewall2 - - - using default zone 'ext' for interface eth1 <4.6> 2014-06-29 12:32:55 Telcontar SuSEfirewall2 - - - Firewall customary rules loaded from /etc/sysconfig/scripts/SuSEfirewall2-custom <3.6> 2014-06-29 12:32:56 Telcontar avahi-daemon 1020 - - Service "Telcontar-2" (/etc/avahi/services/udisks.service) successfully established. <3.6> 2014-06-29 12:32:56 Telcontar avahi-daemon 1020 - - Service "Telcontar-2" (/etc/avahi/services/ssh.service) successfully established. <3.6> 2014-06-29 12:32:56 Telcontar avahi-daemon 1020 - - Service "Telcontar-2" (/etc/avahi/services/sftp-ssh.service) successfully established. <4.6> 2014-06-29 12:32:58 Telcontar SuSEfirewall2 - - - Firewall rules successfully set <3.6> 2014-06-29 12:32:58 Telcontar avahi-autoipd(eth0) 31694 - - Found user 'avahi-autoipd' (UID 495) and group 'avahi-autoipd' (GID 491). <3.6> 2014-06-29 12:32:58 Telcontar avahi-autoipd(eth0) 31694 - - Successfully called chroot(). <3.6> 2014-06-29 12:32:58 Telcontar avahi-autoipd(eth0) 31694 - - Successfully dropped root privileges. <3.6> 2014-06-29 12:32:58 Telcontar avahi-autoipd(eth0) 31694 - - Starting with address 169.254.3.89 <3.6> 2014-06-29 12:32:58 Telcontar avahi-autoipd(eth0) 31694 - - Routable address already assigned, sleeping. <3.6> 2014-06-29 12:32:58 Telcontar systemd 1 - - Started ifup managed network interface eth0. <3.6> 2014-06-29 12:32:58 Telcontar systemd 1 - - Started ifup managed network interface eth1. <3.6> 2014-06-29 12:32:58 Telcontar network 29638 - - ..done..done..done ppp0 Startmode is 'manual' -> skipping <1.5> 2014-06-29 12:32:58 Telcontar ifup 31756 - - ppp0 Startmode is 'manual' -> skipping <3.6> 2014-06-29 12:32:58 Telcontar network 29638 - - ..skippedSetting up service network . . . . . . . . . . . . ...done <3.6> 2014-06-29 12:32:58 Telcontar systemd 1 - - Started LSB: Configure network interfaces and set up routing. <3.4> 2014-06-29 12:32:58 Telcontar pm-utils - - - Thawing the system now (04)... <3.6> 2014-06-29 12:33:01 Telcontar systemd 1 - - Starting Session 1605 of user news. <3.4> 2014-06-29 12:33:21 Telcontar router - - - (Thawing 04) Logging the current IP= 79.150.228.90 <0.4> 2014-06-29 12:33:25 Telcontar kernel - - - [212958.816015] XFS (sde5): xfs_log_force: error 5 returned. <0.4> 2014-06-29 12:33:55 Telcontar kernel - - - [212988.896014] XFS (sde5): xfs_log_force: error 5 returned. <0.4> 2014-06-29 12:34:25 Telcontar kernel - - - [213018.976015] XFS (sde5): xfs_log_force: error 5 returned. <0.4> 2014-06-29 12:34:55 Telcontar kernel - - - [213049.056014] XFS (sde5): xfs_log_force: error 5 returned. <3.6> 2014-06-29 12:35:01 Telcontar systemd 1 - - Starting Session 1606 of user news. <0.4> 2014-06-29 12:35:25 Telcontar kernel - - - [213079.136015] XFS (sde5): xfs_log_force: error 5 returned. <0.4> 2014-06-29 12:35:55 Telcontar kernel - - - [213109.216011] XFS (sde5): xfs_log_force: error 5 returned. <0.4> 2014-06-29 12:36:25 Telcontar kernel - - - [213139.296014] XFS (sde5): xfs_log_force: error 5 returned. <0.4> 2014-06-29 12:36:55 Telcontar kernel - - - [213169.376016] XFS (sde5): xfs_log_force: error 5 returned. <0.4> 2014-06-29 12:37:25 Telcontar kernel - - - [213199.456013] XFS (sde5): xfs_log_force: error 5 returned. <0.4> 2014-06-29 12:37:55 Telcontar kernel - - - [213229.536014] XFS (sde5): xfs_log_force: error 5 returned. <3.6> 2014-06-29 12:38:01 Telcontar systemd 1 - - Starting Session 1607 of user news. <0.4> 2014-06-29 12:38:25 Telcontar kernel - - - [213259.616018] XFS (sde5): xfs_log_force: error 5 returned. <0.4> 2014-06-29 12:38:56 Telcontar kernel - - - [213289.696014] XFS (sde5): xfs_log_force: error 5 returned. <0.4> 2014-06-29 12:39:26 Telcontar kernel - - - [213319.776019] XFS (sde5): xfs_log_force: error 5 returned. <0.4> 2014-06-29 12:39:56 Telcontar kernel - - - [213349.856014] XFS (sde5): xfs_log_force: error 5 returned. <3.6> 2014-06-29 12:40:01 Telcontar systemd 1 - - Starting Session 1608 of user cer. ... <5.6> 2014-06-29 12:48:34 Telcontar rsyslogd - - - [origin software="rsyslogd" swVersion="7.4.7" x-pid="1111" x-info="http://www.rsyslog.com"] exiting on signal 15. 2014-06-29 12:48:35+02:00 - Halting the system now =========================================== uptime: 12:48pm up 4 days 8:43, 33 users, load average: 1.40, 0.53, 0.67 2014-06-29 12:57:41+02:00 - Booting the system now ================================================================================ Linux Telcontar 3.11.10-11-desktop #1 SMP PREEMPT Mon May 12 13:37:06 UTC 2014 (3d22b5f) x86_64 x86_64 x86_64 GNU/Linux (it does not show in the log that I had to hit the hardware reset button, the machine refused to reboot normally, apparently) (If you ask why I took so long to notice the problem after thawing, my routine is to power up the machine, then go prepare tea. :-) When I come back with the mug, I'm dismayed to see I can not start working; and this day I was in a a hurry) So I reboot (text mode, level 3), umount home, run xfsrepair, mount again, do xfsdump, do simultanesouly an rsync (it is a file by file copy, in case of problems with dump), umount, use YaST in text mode to reformat the partition, mount, and then xfsrestore. It did not occur to me to make a 'dd' photo this time: I was tired and busy. Maybe next time I can take the photo with dd before doing anything else (it takes about 80 minutes), or simply do an "xfs_metadump", which should be faster. And I might not have then 500 GiB of free space to make a dd copy, anyway. Question. As this always happens on recovery from hibernation, and seeing the message "Corruption of in-memory data detected", could it be that thawing does a bad memory recovery from the swap? I thought that the procedure includes some checksum, but I don't know for sure. > This is interesting because the corruption appears to be associated with > post-eof space, which is generally transient. The worst case is that > this space is trimmed off files when they are evicted from cache, such > as during a umount. To me, that seems to correlate with a more > recent/runtime problem rather than something that might be lingering on > disk, but we don't really know for sure. Dunno. To me, there are two problems: 1) The corruption itself. 2) That xfs_repair fails to repair the filesystem. In fact, I believe it does not detect it! To me, #2 is the worst, and it is what makes me do the backup, format, restore cycle for recovery. An occassional kernel crash is somewhat acceptable :-} >> Wait! I have a "dd" copy of the entire partition (500 GB), made on March >> 16th, 5 AM, so hard data could be obtained from there. I had forgotten. I'll >> get something for you now: ... >> I could do a "xfs_metadump" on it - just tell me what options to use, and >> where can the result be uploaded to, if big. >> > > A metadump would be helpful, though that only gives us the on-disk > state. What was the state of this fs at the time the dd image was > created? I'm sorry, I'm not absolutely sure. I believe it is corrupted, but I can not vouch it. > I'm curious if something like an 'rm -rf *' on the metadump > would catch any other corruptions or if this is indeed limited to > something associated with recent (pre)allocations. Sorry, run 'rm -rf *' where??? > Run 'xfs_metadump ' to create a metadump that will > obfuscate filenames by default. It should also be compressible. In the > future, it's probably worth grabbing a metadump as a first step (before > repair, zeroing the log, etc.) so we can look at the fs in the state > most recent to the crash. I will take that photo next time, using a rescue system in order to impede the system from mounting the partition and replaying the log. Dunno how long that will take to happen, though... usually a month - but at least now I know how to do it. Meanwhile, I have done a xfs_metadump of the image, and compressed it with xz. It has 10834536 bytes. What do I do with it? I'm not sure I can email that, and even less to a mail list. Do you still have a bugzilla system where I can upload it? I had an account at , made on 2010. I don't know if it still runs :-? If you don't, I can try to create it a bugzilla on openSUSE instead, and tell you the number... but I don't know if it takes files that big. If it doesn't, I'll fragment the file. You need to have an account there, I think, to retrieve the attachment, and I would prefer to mark the bug private, or at least the attachment. I did the following. First I made a copy, with "dd", of the partition image, all 489G of it. On this copy I ran "xfs_check", "xfs_repair -n", and "xfs_repair", with these results: Telcontar:/data/storage_d/old_backup # xfs_check xfs_copy_home_workonit xfs_check is deprecated and scheduled for removal in June 2014. Please use xfs_repair -n instead. Telcontar:/data/storage_d/old_backup # xfs_repair -n xfs_copy_home_workonit Phase 1 - find and verify superblock... Phase 2 - using internal log - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan (but don't clear) agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 0 - agno = 1 - agno = 2 - agno = 3 No modify flag set, skipping phase 5 Phase 6 - check inode connectivity... - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify link counts... No modify flag set, skipping filesystem flush and exiting. Telcontar:/data/storage_d/old_backup # time xfs_repair xfs_copy_home_workonit Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan and clear agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 0 - agno = 1 - agno = 2 - agno = 3 Phase 5 - rebuild AG headers and trees... - reset superblock... Phase 6 - check inode connectivity... - resetting contents of realtime bitmap and summary inodes - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify and correct link counts... done real 0m28.058s user 0m1.692s sys 0m2.265s Telcontar:/data/storage_d/old_backup # Maybe the image was made after repair, or maybe xfs_repair doesn't detect anything, which as far as I remember, was the case. I recreate the copy, to try "mount" on an unaltered copy. Telcontar:/data/storage_d/old_backup # time dd if=xfs_copy_home of=xfs_copy_home_workonit && mount -v xfs_copy_home_workonit mount/ 1024000000+0 records in 1024000000+0 records out 524288000000 bytes (524 GB) copied, 4662.7 s, 112 MB/s real 77m43.697s user 3m1.420s sys 28m41.958s mount: /dev/loop0 mounted on /data/storage_d/old_backup/mount. (reverse-i-search)`mount': time dd if=xfs_copy_home Telcontar:/data/storage_d/old_backup # So it mounts... - -- Cheers, Carlos E. R. (from 13.1 x86_64 "Bottle" at Telcontar) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEARECAAYFAlO0x18ACgkQtTMYHG2NR9X6QwCcD8r5qXIHVh4ELklM/tzXASds yskAoIcwxYNC2tKsS7wE9Jp+g4MNUdpd =pIZI -----END PGP SIGNATURE----- From sandeen@redhat.com Wed Jul 2 23:54:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id E14657F57 for ; Wed, 2 Jul 2014 23:54:08 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id EC8F9304053 for ; Wed, 2 Jul 2014 21:54:08 -0700 (PDT) X-ASG-Debug-ID: 1404363247-04cb6c76d2412a70001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id LWuSzqEqEtmpE5iC (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 02 Jul 2014 21:54:07 -0700 (PDT) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s634s6Eh003015 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 3 Jul 2014 00:54:07 -0400 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s634s5PQ026955 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Thu, 3 Jul 2014 00:54:06 -0400 Message-ID: <53B4E1EE.40702@redhat.com> Date: Wed, 02 Jul 2014 23:54:06 -0500 From: Eric Sandeen MIME-Version: 1.0 To: xfs-oss Subject: [PATCH 1/2] xfs: allow inode allocations in post-growfs disk space X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH 1/2] xfs: allow inode allocations in post-growfs disk space Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.27 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1404363247 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-BRTS-Status: 1 Today, if we perform an xfs_growfs which adds allocation groups, mp->m_maxagi is not properly updated when the growfs is complete. Therefore inodes will continue to be allocated only in the AGs which existed prior to the growfs, and the new space won't be utilized. This is because of this path in xfs_growfs_data_private(): xfs_growfs_data_private xfs_initialize_perag(mp, nagcount, &nagimax); if (mp->m_flags & XFS_MOUNT_32BITINODES) index = xfs_set_inode32(mp); else index = xfs_set_inode64(mp); if (maxagi) *maxagi = index; where xfs_set_inode* iterates over the (old) agcount in mp->m_sb.sb_agblocks, which has not yet been updated in the growfs path. So "index" will be returned based on the old agcount, not the new one, and new AGs are not available for inode allocation. Fix this by explicitly passing the proper AG count (which xfs_initialize_perag() already has) down another level, so that xfs_set_inode* can make the proper decision about acceptable AGs for inode allocation in the potentially newly-added AGs. This has been broken since 3.7, when these two xfs_set_inode* functions were added in commit 2d2194f. Prior to that, we looped over "agcount" not sb_agblocks in these calculations. Signed-off-by: Eric Sandeen --- tested for regression with the -g growfs group, but this shows that we need another testcase for growfs. diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 993cb19..b291ada 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -250,9 +250,9 @@ xfs_initialize_perag( mp->m_flags &= ~XFS_MOUNT_32BITINODES; if (mp->m_flags & XFS_MOUNT_32BITINODES) - index = xfs_set_inode32(mp); + index = xfs_set_inode32(mp, agcount); else - index = xfs_set_inode64(mp); + index = xfs_set_inode64(mp, agcount); if (maxagi) *maxagi = index; diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 87e8b01..ccc564d 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -597,8 +597,13 @@ xfs_max_file_offset( return (((__uint64_t)pagefactor) << bitshift) - 1; } +/* + * xfs_set_inode32() and xfs_set_inode64() are passed an agcount + * because in the growfs case, mp->m_sb.sb_agcount is not updated + * yet to the potentially higher ag count. + */ xfs_agnumber_t -xfs_set_inode32(struct xfs_mount *mp) +xfs_set_inode32(struct xfs_mount *mp, xfs_agnumber_t agcount) { xfs_agnumber_t index = 0; xfs_agnumber_t maxagi = 0; @@ -620,10 +625,10 @@ xfs_set_inode32(struct xfs_mount *mp) do_div(icount, sbp->sb_agblocks); max_metadata = icount; } else { - max_metadata = sbp->sb_agcount; + max_metadata = agcount; } - for (index = 0; index < sbp->sb_agcount; index++) { + for (index = 0; index < agcount; index++) { ino = XFS_AGINO_TO_INO(mp, index, agino); if (ino > XFS_MAXINUMBER_32) { @@ -648,11 +653,11 @@ xfs_set_inode32(struct xfs_mount *mp) } xfs_agnumber_t -xfs_set_inode64(struct xfs_mount *mp) +xfs_set_inode64(struct xfs_mount *mp, xfs_agnumber_t agcount) { xfs_agnumber_t index = 0; - for (index = 0; index < mp->m_sb.sb_agcount; index++) { + for (index = 0; index < agcount; index++) { struct xfs_perag *pag; pag = xfs_perag_get(mp, index); @@ -1193,6 +1198,7 @@ xfs_fs_remount( char *options) { struct xfs_mount *mp = XFS_M(sb); + xfs_sb_t *sbp = &mp->m_sb; substring_t args[MAX_OPT_ARGS]; char *p; int error; @@ -1212,10 +1218,10 @@ xfs_fs_remount( mp->m_flags &= ~XFS_MOUNT_BARRIER; break; case Opt_inode64: - mp->m_maxagi = xfs_set_inode64(mp); + mp->m_maxagi = xfs_set_inode64(mp, sbp->sb_agcount); break; case Opt_inode32: - mp->m_maxagi = xfs_set_inode32(mp); + mp->m_maxagi = xfs_set_inode32(mp, sbp->sb_agcount); break; default: /* diff --git a/fs/xfs/xfs_super.h b/fs/xfs/xfs_super.h index bbe3d15..b4cfe21 100644 --- a/fs/xfs/xfs_super.h +++ b/fs/xfs/xfs_super.h @@ -76,8 +76,8 @@ extern __uint64_t xfs_max_file_offset(unsigned int); extern void xfs_flush_inodes(struct xfs_mount *mp); extern void xfs_blkdev_issue_flush(struct xfs_buftarg *); -extern xfs_agnumber_t xfs_set_inode32(struct xfs_mount *); -extern xfs_agnumber_t xfs_set_inode64(struct xfs_mount *); +extern xfs_agnumber_t xfs_set_inode32(struct xfs_mount *, xfs_agnumber_t agcount); +extern xfs_agnumber_t xfs_set_inode64(struct xfs_mount *, xfs_agnumber_t agcount); extern const struct export_operations xfs_export_operations; extern const struct xattr_handler *xfs_xattr_handlers[]; From jignesh.prajapati@cmcltd.com Wed Jul 2 23:54:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id BFEC57F5F for ; Wed, 2 Jul 2014 23:54:57 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id A75948F8033 for ; Wed, 2 Jul 2014 21:54:54 -0700 (PDT) X-ASG-Debug-ID: 1404363288-04bdf0566678e7f0001-NocioJ Received: from mx1.securemx.in (mx1.securemx.in [121.241.247.20]) by cuda.sgi.com with ESMTP id rGXbBcYAXmPEm0XF (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 02 Jul 2014 21:54:50 -0700 (PDT) X-Barracuda-Envelope-From: jignesh.prajapati@cmcltd.com X-Barracuda-Apparent-Source-IP: 121.241.247.20 DKIM-Signature: v=1; a=rsa-sha256; d=cmc.smxemail.com; s=alpha; c=relaxed/relaxed; q=dns/txt; i=@cmc.smxemail.com; t=1404363288; h=From:Sender:Reply-To:Subject:Date:Message-ID:To:CC; bh=G/jJ6GFMOKBUCHQwpMY4Mi0UmBn2WEDKmFWV5XedbW4=; b=ADsKX6ylwWZvcHA3G6c0qRNgoioLTk/TTP1XfD9odzMA6QJHaVvXl1g1pSwPG1ds Cuxs6aPzH4zFPqgybTVyRFcGqtFkHFZ5T4uT0/151Z1WJAqVwi/25SxebThvYvej +B9eTCB/ew84KG7UPnGhp7BEugHqeE3CvGEAgAz6cGqS; Received: from zmsmtp3.cmcltd.com ([115.111.228.85]) by omr.securemx.in with ESMTP id 53B4E217-AF893E25@mta4101.omr; Thu, 03 Jul 2014 04:54:48 +0000 Received: from [192.168.79.24] (unknown [192.168.79.24]) by zmsmtp3.cmcltd.com (Postfix) with ESMTPSA id 7255B17FF09; Thu, 3 Jul 2014 10:24:42 +0530 (IST) Message-ID: <53B4E20C.60602@cmcltd.com> Date: Thu, 03 Jul 2014 10:24:36 +0530 From: Jignesh User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: xfs@oss.sgi.com CC: "Gaurang.Patel@Cmcltd.Com" , "Bhavin.Joshi@Cmcltd.Com" , Ravi Subject: XFS Realtime Replication problem Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: XFS Realtime Replication problem Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mx1.securemx.in[121.241.247.20] X-Barracuda-Start-Time: 1404363289 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, RCVD_BAD_ID X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7196 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 RCVD_BAD_ID RCVD_BAD_ID -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Dear, We have SGI IS3500 Storage server and we have installed RHEL 6.2 with XVM and XFS. We have installed CA ARCserve Replication host based realtime replication software for Realtime byte level replications to other server in network for DR. Now we are facing one problem that at the time of Realtime replication if we update any file on Master (Source) server, file size becomes 0 byte in master server the same file content becomes garbage and slave side also file size becomes 0 size. Please help, we are struggling from last one month. With warm Regards, Jignesh Prajapati Sr. IT Manager-CS CMC Limited (A TATA Enterprise) 6th Floor, Premier House-1, Bodakdev, S G Highway, Ahmedabad-380054 Direct Line: +91 79 66090924 | Email: jignesh.prajapati@cmcltd.com www.cmcltd.com ---------------------------------------------------------------------------------------------------------- System Engineering | Integration | Solution & Sales ---------------------------------------------------------------------------------------------------------- ______________________________________________________________________________ DISCLAIMER The information contained in this e-mail message and/or attachments to it may contain confidential or privileged information. If you are not the intended recipient, any dissemination, use, review, distribution, printing or copying of the information contained in this e-mail message and/or attachments to it are strictly prohibited. If you have received this communication in error, please notify us by reply e-mail or directly to netsupport@cmcltd.com or telephone and immediately and permanently delete the message and any attachments. Thank you. ______________________________________________________________________________ This email has been scrubbed for your protection by SecureMX. For more information visit http://securemx.in _____________________________________________________________________________ From sandeen@sandeen.net Wed Jul 2 23:57:43 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 8BF6D7F5E for ; Wed, 2 Jul 2014 23:57:43 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 899B4304064 for ; Wed, 2 Jul 2014 21:57:43 -0700 (PDT) X-ASG-Debug-ID: 1404363461-04cbb06536248650001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id KqwqqP4Rfk8kAdHf for ; Wed, 02 Jul 2014 21:57:41 -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-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 1F81D63C6058; Wed, 2 Jul 2014 23:57:41 -0500 (CDT) Message-ID: <53B4E2C5.1000303@sandeen.net> Date: Wed, 02 Jul 2014 23:57:41 -0500 From: Eric Sandeen MIME-Version: 1.0 To: Eric Sandeen , xfs-oss Subject: [PATCH 2/2] xfs: tidy up xfs_set_inode32 References: <53B4E1EE.40702@redhat.com> X-ASG-Orig-Subj: [PATCH 2/2] xfs: tidy up xfs_set_inode32 In-Reply-To: <53B4E1EE.40702@redhat.com> X-Enigmail-Version: 1.6 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: 1404363461 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7196 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- xfs_set_inode32() caught my eye because it had weird spacing around the "-1's". In cleaning that up, I realized that the assignment in the declaration of "ino" is never used; it's rewritten before it gets read. Drop the ino initializer from its declaration since it's not used, and move the agino initialization into the body of the function, mostly so that we can have pretty whitespace and not exceed 80 columns. :) Signed-off-by: Eric Sandeen --- diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index e71c0f8..39c9315 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -609,8 +609,8 @@ xfs_set_inode32(struct xfs_mount *mp, xfs_agnumber_t agcount) xfs_agnumber_t maxagi = 0; xfs_sb_t *sbp = &mp->m_sb; xfs_agnumber_t max_metadata; - xfs_agino_t agino = XFS_OFFBNO_TO_AGINO(mp, sbp->sb_agblocks -1, 0); - xfs_ino_t ino = XFS_AGINO_TO_INO(mp, sbp->sb_agcount -1, agino); + xfs_agino_t agino; + xfs_ino_t ino; xfs_perag_t *pag; /* Calculate how much should be reserved for inodes to meet @@ -628,6 +628,8 @@ xfs_set_inode32(struct xfs_mount *mp, xfs_agnumber_t agcount) max_metadata = agcount; } + agino = XFS_OFFBNO_TO_AGINO(mp, sbp->sb_agblocks - 1, 0); + for (index = 0; index < agcount; index++) { ino = XFS_AGINO_TO_INO(mp, index, agino); From jignesh.prajapati@cmcltd.com Thu Jul 3 00:25:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 10EC37F61 for ; Thu, 3 Jul 2014 00:25:56 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 12E15304039 for ; Wed, 2 Jul 2014 22:25:52 -0700 (PDT) X-ASG-Debug-ID: 1404365147-04cbb06536249670001-NocioJ Received: from mx1.securemx.in (mx1.securemx.in [121.241.247.20]) by cuda.sgi.com with ESMTP id x21iVHfHqwYzOLni (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 02 Jul 2014 22:25:49 -0700 (PDT) X-Barracuda-Envelope-From: jignesh.prajapati@cmcltd.com X-Barracuda-Apparent-Source-IP: 121.241.247.20 DKIM-Signature: v=1; a=rsa-sha256; d=cmc.smxemail.com; s=alpha; c=relaxed/relaxed; q=dns/txt; i=@cmc.smxemail.com; t=1404365147; h=From:Sender:Reply-To:Subject:Date:Message-ID:To:CC; bh=nfAF00RtLh2v/WXjkwZ/NZJY7wfIJwq9Bc9golWzGH8=; b=AQEiO21hSie6LxpKmo+uBADUZpikk0UT/j10Euixjym7nmwynKhzqBEazArbtU0u ZqfHVlfnhtI7/lw/GNwP7DUH19QGgWxoGixJw3op9fwHuw6/Uep57+WhiBJuZ2os az1qdRR2Vw+zk/1ipuejUFQeJ4hS7pzNrdOF+VEp9aTq; Received: from zmsmtp3.cmcltd.com ([115.111.228.85]) by omr.securemx.in with ESMTP id 53B4E95A-EBA32E8C@mta4102.omr; Thu, 03 Jul 2014 05:25:47 +0000 Received: from [192.168.79.24] (unknown [192.168.79.24]) by zmsmtp3.cmcltd.com (Postfix) with ESMTPSA id B219417FF08; Thu, 3 Jul 2014 10:55:44 +0530 (IST) Message-ID: <53B4E952.7020009@cmcltd.com> Date: Thu, 03 Jul 2014 10:55:38 +0530 From: Jignesh User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: xfs@oss.sgi.com CC: "Gaurang.Patel@Cmcltd.Com" , "Bhavin.Joshi@Cmcltd.Com" , Ravi Subject: Re: XFS Realtime Replication problem References: <53B4E20C.60602@cmcltd.com> X-ASG-Orig-Subj: Re: XFS Realtime Replication problem In-Reply-To: <53B4E20C.60602@cmcltd.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mx1.securemx.in[121.241.247.20] X-Barracuda-Start-Time: 1404365149 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, RCVD_BAD_ID X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7197 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 RCVD_BAD_ID RCVD_BAD_ID -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature One thing I want to update that the same Realtime Replication works fine with ext4 Filesystem. Regards, Jignesh P. On 03-07-2014 10:24, Jignesh wrote: > Dear, > > We have SGI IS3500 Storage server and we have installed RHEL 6.2 with > XVM and XFS. We have installed CA ARCserve Replication host based > realtime replication software for Realtime byte level replications to > other server in network for DR. > > Now we are facing one problem that at the time of Realtime replication > if we update any file on Master (Source) server, file size becomes 0 > byte in master server the same file content becomes garbage and slave > side also file size becomes 0 size. > > Please help, we are struggling from last one month. > > With warm Regards, > > > Jignesh Prajapati > Sr. IT Manager-CS > CMC Limited > (A TATA Enterprise) > 6th Floor, Premier House-1, Bodakdev, S G Highway, Ahmedabad-380054 > Direct Line: +91 79 66090924 | Email: jignesh.prajapati@cmcltd.com > www.cmcltd.com > ---------------------------------------------------------------------------------------------------------- > > System Engineering | Integration | Solution & Sales > ---------------------------------------------------------------------------------------------------------- > > -- Jignesh Prajapati Sr. IT Manager-CS CMC Limited (A TATA Enterprise) 6th Floor, Premier House-1, Bodakdev, S G Highway, Ahmedabad-380054 Direct Line: +91 79 66090924 | Email: jignesh.prajapati@cmcltd.com www.cmcltd.com ---------------------------------------------------------------------------------------------------------- System Engineering | Integration | Solution & Sales ---------------------------------------------------------------------------------------------------------- ______________________________________________________________________________ DISCLAIMER The information contained in this e-mail message and/or attachments to it may contain confidential or privileged information. If you are not the intended recipient, any dissemination, use, review, distribution, printing or copying of the information contained in this e-mail message and/or attachments to it are strictly prohibited. If you have received this communication in error, please notify us by reply e-mail or directly to netsupport@cmcltd.com or telephone and immediately and permanently delete the message and any attachments. Thank you. ______________________________________________________________________________ This email has been scrubbed for your protection by SecureMX. For more information visit http://securemx.in _____________________________________________________________________________ From david@fromorbit.com Thu Jul 3 01:15:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 32EBA7F57 for ; Thu, 3 Jul 2014 01:15:37 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2D6838F8039 for ; Wed, 2 Jul 2014 23:15:33 -0700 (PDT) X-ASG-Debug-ID: 1404368128-04cbb0653824b6b0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id USmBWZH8IeAA8dSz for ; Wed, 02 Jul 2014 23:15:28 -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: Ao5cAH30tFN5LHZ8PGdsb2JhbABagw2DSoUIpB0BAgEBAQaaVQGBBxcEAQEBATg1g38EAQEFOhwjEAgDGAklDwUlAwcaE4VJghNlx0gXGIVYiFARAQdJB4MtgRYBBJpsl2ArgTIIFw Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail04.adl6.internode.on.net with ESMTP; 03 Jul 2014 15:45:27 +0930 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1X2aIo-0004Qv-09; Thu, 03 Jul 2014 16:15:26 +1000 Date: Thu, 3 Jul 2014 16:15:25 +1000 From: Dave Chinner To: Jignesh Cc: xfs@oss.sgi.com, "Bhavin.Joshi@Cmcltd.Com" , "Gaurang.Patel@Cmcltd.Com" , Ravi Subject: Re: XFS Realtime Replication problem Message-ID: <20140703061525.GF9508@dastard> X-ASG-Orig-Subj: Re: XFS Realtime Replication problem References: <53B4E20C.60602@cmcltd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <53B4E20C.60602@cmcltd.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: 1404368128 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7197 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Jul 03, 2014 at 10:24:36AM +0530, Jignesh wrote: > Dear, > > We have SGI IS3500 Storage server and we have installed RHEL 6.2 > with XVM and XFS. We have installed CA ARCserve Replication host > based realtime replication software for Realtime byte level > replications to other server in network for DR. SGI storage product, SGI proprietary kernel modules - you probably should be sending email to your SGI support contact, not to the public upstream XFS development list.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From jignesh.prajapati@cmcltd.com Thu Jul 3 01:27:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id AA3BD7F57 for ; Thu, 3 Jul 2014 01:27:19 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 24A05AC001 for ; Wed, 2 Jul 2014 23:27:18 -0700 (PDT) X-ASG-Debug-ID: 1404368834-04cb6c76d0416270001-NocioJ Received: from mx1.securemx.in (mx1.securemx.in [121.241.247.20]) by cuda.sgi.com with ESMTP id N5m1EYU8znjA1z5k (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 02 Jul 2014 23:27:15 -0700 (PDT) X-Barracuda-Envelope-From: jignesh.prajapati@cmcltd.com X-Barracuda-Apparent-Source-IP: 121.241.247.20 DKIM-Signature: v=1; a=rsa-sha256; d=cmc.smxemail.com; s=alpha; c=relaxed/relaxed; q=dns/txt; i=@cmc.smxemail.com; t=1404368833; h=From:Sender:Reply-To:Subject:Date:Message-ID:To:CC; bh=eNd99rGcGLocfxgwieJDvT9dBPdKSzba7YCUAGTLo1s=; b=ASZTSk3n6ve0AlcM8LGWwIiFRdCENtuBkoHB6/ESpSinB+2PAo1kPoCbYB+RX5Rz aTqzoelib2P6QdgSqXR97/nZ1KQu+lvQcwa7SRP4z6yLqf5AlGbyhXaYAojWl5yY SjM7CuEfyEOrS+sQfs/+DrYbVB9l6DC+sKOSVpxqg3Ua; Received: from zmsmtp3.cmcltd.com ([115.111.228.85]) by omr.securemx.in with ESMTP id 53B4F7C1-858F163F@mta4102.omr; Thu, 03 Jul 2014 06:27:13 +0000 Received: from [192.168.79.24] (unknown [192.168.79.24]) by zmsmtp3.cmcltd.com (Postfix) with ESMTPSA id 207CD17FF08; Thu, 3 Jul 2014 11:57:09 +0530 (IST) Message-ID: <53B4F7B7.4080807@cmcltd.com> Date: Thu, 03 Jul 2014 11:57:03 +0530 From: Jignesh User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: Dave Chinner , xfs@oss.sgi.com CC: "Bhavin.Joshi@Cmcltd.Com" , "Gaurang.Patel@Cmcltd.Com" , Ravi Subject: Re: XFS Realtime Replication problem References: <53B4E20C.60602@cmcltd.com> <20140703061525.GF9508@dastard> X-ASG-Orig-Subj: Re: XFS Realtime Replication problem In-Reply-To: <20140703061525.GF9508@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mx1.securemx.in[121.241.247.20] X-Barracuda-Start-Time: 1404368835 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, RCVD_BAD_ID X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7198 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 RCVD_BAD_ID RCVD_BAD_ID -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Dear Dave, Thanks for your quick response. This is not SGI Proprietary Storage product and not using any SGI proprietary kernel module. SGI IS3500 is normal Intel Server with 36 HDDs. ( Storage Server), We have installed RHEL 6.2 on this Server and configured XVM and XFS. Regards, Jignesh P. On 03-07-2014 11:45, Dave Chinner wrote: > On Thu, Jul 03, 2014 at 10:24:36AM +0530, Jignesh wrote: >> Dear, >> >> We have SGI IS3500 Storage server and we have installed RHEL 6.2 >> with XVM and XFS. We have installed CA ARCserve Replication host >> based realtime replication software for Realtime byte level >> replications to other server in network for DR. > SGI storage product, SGI proprietary kernel modules - you probably > should be sending email to your SGI support contact, not to the > public upstream XFS development list.... > > Cheers, > > Dave. -- Jignesh Prajapati Sr. IT Manager-CS CMC Limited (A TATA Enterprise) 6th Floor, Premier House-1, Bodakdev, S G Highway, Ahmedabad-380054 Direct Line: +91 79 66090924 | Email: jignesh.prajapati@cmcltd.com www.cmcltd.com ---------------------------------------------------------------------------------------------------------- System Engineering | Integration | Solution & Sales ---------------------------------------------------------------------------------------------------------- ______________________________________________________________________________ DISCLAIMER The information contained in this e-mail message and/or attachments to it may contain confidential or privileged information. If you are not the intended recipient, any dissemination, use, review, distribution, printing or copying of the information contained in this e-mail message and/or attachments to it are strictly prohibited. If you have received this communication in error, please notify us by reply e-mail or directly to netsupport@cmcltd.com or telephone and immediately and permanently delete the message and any attachments. Thank you. ______________________________________________________________________________ This email has been scrubbed for your protection by SecureMX. For more information visit http://securemx.in _____________________________________________________________________________ From david@fromorbit.com Thu Jul 3 04:03:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 865097F54 for ; Thu, 3 Jul 2014 04:03:27 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 14126AC001 for ; Thu, 3 Jul 2014 02:03:23 -0700 (PDT) X-ASG-Debug-ID: 1404378199-04cb6c76d241a800001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id dfSOB1dWB1AMIGM6 for ; Thu, 03 Jul 2014 02:03:20 -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: Av9rACcbtVN5LHZ8PGdsb2JhbABagw1SgniLDZ4FDAECAQEBBpoCUwGBCRcEAQEBATg1hAMBAQU6HCMQCAMYCSUPBSUDBxoTiEEOyB8YhViHJ4FCSQeEQwWabJdgKy+BAw Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail04.adl6.internode.on.net with ESMTP; 03 Jul 2014 18:32:55 +0930 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1X2cus-0004pW-29; Thu, 03 Jul 2014 19:02:54 +1000 Date: Thu, 3 Jul 2014 19:02:54 +1000 From: Dave Chinner To: Jignesh Cc: xfs@oss.sgi.com, "Bhavin.Joshi@Cmcltd.Com" , "Gaurang.Patel@Cmcltd.Com" , Ravi Subject: Re: XFS Realtime Replication problem Message-ID: <20140703090253.GT4453@dastard> X-ASG-Orig-Subj: Re: XFS Realtime Replication problem References: <53B4E20C.60602@cmcltd.com> <20140703061525.GF9508@dastard> <53B4F7B7.4080807@cmcltd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <53B4F7B7.4080807@cmcltd.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: 1404378200 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7199 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Jul 03, 2014 at 11:57:03AM +0530, Jignesh wrote: > Dear Dave, > > Thanks for your quick response. > > This is not SGI Proprietary Storage product and not using any SGI > proprietary kernel module. SGI IS3500 is normal Intel Server with 36 > HDDs. ( Storage Server), We have installed RHEL 6.2 on this Server > and configured XVM and XFS. XVM is SGI proprietary software: http://www.sgi.com/products/storage/software/xvm.html As it is, if you are using RHEL, you should talk to your Red Hat support contact. They'll be able to tell you if it's a known problem w/ XFS on RHEL and which version of RHEL 6.x it is fixed in. Cheers, Dave. -- Dave Chinner david@fromorbit.com From jignesh.prajapati@cmcltd.com Thu Jul 3 04:21:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E5AA77F54 for ; Thu, 3 Jul 2014 04:21:46 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6192AAC004 for ; Thu, 3 Jul 2014 02:21:45 -0700 (PDT) X-ASG-Debug-ID: 1404379300-04cb6c76d241b000001-NocioJ Received: from mx1.securemx.in (mx1.securemx.in [121.241.247.20]) by cuda.sgi.com with ESMTP id 1imjuTzlk1sEmCC0 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 03 Jul 2014 02:21:42 -0700 (PDT) X-Barracuda-Envelope-From: jignesh.prajapati@cmcltd.com X-Barracuda-Apparent-Source-IP: 121.241.247.20 DKIM-Signature: v=1; a=rsa-sha256; d=cmc.smxemail.com; s=alpha; c=relaxed/relaxed; q=dns/txt; i=@cmc.smxemail.com; t=1404379299; h=From:Sender:Reply-To:Subject:Date:Message-ID:To:CC; bh=HFI8zkofc8Phd81TKZwqv3M1zybgKkjstu85eOFc76k=; b=AD4S2/nXK00dU35cPe10a6CxMAwl6NMgnwDXXKBX0CgHT+jRzHXxzo+DBTlQxHh3 a8b4kwE40v6iU83uwhaqFt8iEYYEPh41w64POugtiPpY3/s9B6UQV1NHy7KLiTTA W4z228uYf6pbWe4CQ0IkKxnwU5TSZZ5NipgC7prYNdg1; Received: from zmsmtp3.cmcltd.com ([115.111.228.85]) by omr.securemx.in with ESMTP id 53B520A3-98B022C2@mta4101.omr; Thu, 03 Jul 2014 09:21:39 +0000 Received: from [192.168.79.24] (unknown [192.168.79.24]) by zmsmtp3.cmcltd.com (Postfix) with ESMTPSA id 4D3A917FF08; Thu, 3 Jul 2014 14:51:34 +0530 (IST) Message-ID: <53B52098.2090104@cmcltd.com> Date: Thu, 03 Jul 2014 14:51:28 +0530 From: Jignesh User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com, "Bhavin.Joshi@Cmcltd.Com" , "Gaurang.Patel@Cmcltd.Com" , Ravi Subject: Re: XFS Realtime Replication problem References: <53B4E20C.60602@cmcltd.com> <20140703061525.GF9508@dastard> <53B4F7B7.4080807@cmcltd.com> <20140703090253.GT4453@dastard> X-ASG-Orig-Subj: Re: XFS Realtime Replication problem In-Reply-To: <20140703090253.GT4453@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mx1.securemx.in[121.241.247.20] X-Barracuda-Start-Time: 1404379301 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, RCVD_BAD_ID X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7200 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 RCVD_BAD_ID RCVD_BAD_ID -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Dear Dave, Thanks for your reply. Regards, Jignesh P. On 03-07-2014 14:32, Dave Chinner wrote: > On Thu, Jul 03, 2014 at 11:57:03AM +0530, Jignesh wrote: >> Dear Dave, >> >> Thanks for your quick response. >> >> This is not SGI Proprietary Storage product and not using any SGI >> proprietary kernel module. SGI IS3500 is normal Intel Server with 36 >> HDDs. ( Storage Server), We have installed RHEL 6.2 on this Server >> and configured XVM and XFS. > XVM is SGI proprietary software: > > http://www.sgi.com/products/storage/software/xvm.html > > As it is, if you are using RHEL, you should talk to your Red Hat > support contact. They'll be able to tell you if it's a known problem > w/ XFS on RHEL and which version of RHEL 6.x it is fixed in. > > Cheers, > > Dave. -- Jignesh Prajapati Sr. IT Manager-CS CMC Limited (A TATA Enterprise) 6th Floor, Premier House-1, Bodakdev, S G Highway, Ahmedabad-380054 Direct Line: +91 79 66090924 | Email: jignesh.prajapati@cmcltd.com www.cmcltd.com ---------------------------------------------------------------------------------------------------------- System Engineering | Integration | Solution & Sales ---------------------------------------------------------------------------------------------------------- ______________________________________________________________________________ DISCLAIMER The information contained in this e-mail message and/or attachments to it may contain confidential or privileged information. If you are not the intended recipient, any dissemination, use, review, distribution, printing or copying of the information contained in this e-mail message and/or attachments to it are strictly prohibited. If you have received this communication in error, please notify us by reply e-mail or directly to netsupport@cmcltd.com or telephone and immediately and permanently delete the message and any attachments. Thank you. ______________________________________________________________________________ This email has been scrubbed for your protection by SecureMX. For more information visit http://securemx.in _____________________________________________________________________________ From david@fromorbit.com Thu Jul 3 04:43:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E17C97F54 for ; Thu, 3 Jul 2014 04:43:53 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 538DAAC001 for ; Thu, 3 Jul 2014 02:43:53 -0700 (PDT) X-ASG-Debug-ID: 1404380630-04cb6c76d241b830001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id LQw54rvo1duQrdlC for ; Thu, 03 Jul 2014 02:43:50 -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: Ao9cAI0ktVN5LHZ8PGdsb2JhbABagw2DSoUIpBYBAgEBAQaaVQGBCRcEAQEBATg1hAMBAQQBOhwjBQsIAxgJJQ8FJQMHGhOIOgfIKBcYhViJMgeEQwWabItLikGBVCs Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail04.adl6.internode.on.net with ESMTP; 03 Jul 2014 19:13:48 +0930 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1X2dYR-0004yh-3F; Thu, 03 Jul 2014 19:43:47 +1000 Date: Thu, 3 Jul 2014 19:43:47 +1000 From: Dave Chinner To: "Carlos E. R." Cc: XFS mailing list Subject: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. Message-ID: <20140703094347.GU4453@dastard> X-ASG-Orig-Subj: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. References: <20140702120441.GA51757@bfoster.bfoster> 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: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1404380630 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7200 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header On Thu, Jul 03, 2014 at 05:00:47AM +0200, Carlos E. R. wrote: > On Wednesday, 2014-07-02 at 08:04 -0400, Brian Foster wrote: > >On Wed, Jul 02, 2014 at 11:57:25AM +0200, Carlos E. R. wrote: > > ... > > >This is the background eofblocks scanner attempting to free preallocated > >space on a file. The scanner looks for files that have been recently > >grown and since been flushed to disk (i.e., no longer concurrently being > >written to) and trims the post-eof preallocation that comes along with > >growing files. > > > >The corruption errors at xfs_alloc.c:1602,1629 on v3.11 fire if the > >extent we are attempting to free is already accounted for in the > >by-block allocation btree. IOW, this is attempting to free an extent > >that the allocation metadata thinks is already free. > > > >> > >>Brief description: > >> > >> > >> * It happens only on restore from hibernation. > > > >Interesting, could you elaborate a bit more on the behavior this system > >is typically subjected to? i.e., is this a server that sees a constant > >workload that is also frequently hibernated/awakened? .... > The machine may be used anywhere from 4 to 16 hours a day, and > hibernated at least once a day, perhaps three times if I have to go > out several times. It makes no sense to me to leave the machine > powered doing nothing, if hibernating is so easy and reliable - till > now. If I have to leave for more than a week, I tend to do a full > "halt". Hibernation has always been suspect w.r.t. flushing filesystem metadata. It does not guarantee that the filesystem is quiesced and idle, it just does a sync() and hopes that is sufficient to get the filesystem into a consistent state. The mess that this leaves is then left to filesystem developers to play whack-a-mole with when users have problems. > But soon after, it oopses: Point of note: there is no oops or crash occurring. XFS dumps the stack when a corruption occurs to tell use where it was detected and then shuts down the filesystem. Your system is still just fine apart from not being able to access that filesystem until you unmount it, rpeair it and mount it again. > 3 PID: 57 Comm: kworker/3:1 Tainted: P O 3.11.10-7-desktop What's tainting your kernel? If you remove that taint, does the problem still occur? .... > <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.819191] Enabling non-boot CPUs ... > <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.819191] smpboot: Booting Node 0 Processor 1 APIC 0x1 > <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.832336] CPU1 is up > <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.832467] smpboot: Booting Node 0 Processor 2 APIC 0x2 > <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.845865] CPU2 is up > <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.846034] smpboot: Booting Node 0 Processor 3 APIC 0x3 > <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.859609] CPU3 is up .... > <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280269.796130] PM: restore of devices complete after 2736.343 msecs > <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280270.081655] Restarting kernel threads ... done. > <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280270.086714] Restarting tasks ... done. ..... > <0.1> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.851374] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c54fe9 So the corruption occurred within 2s of the kernel restarting tasks after a hibernation. It's really looking like a hibernation issue. > <3.4> 2014-06-29 04:51:50 Telcontar pm-utils - - - Hibernating (95)... ..... > <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.640186] Enabling non-boot CPUs ... ..... > <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.615073] PM: restore of devices complete after 2735.034 msecs > <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626346] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c39fe9 ..... > <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.706440] XFS (sde5): Corruption of in-memory data detected. Shutting down filesystem > <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.706440] XFS (sde5): Please umount the filesystem and rectify the problem(s) > <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212891.026207] usb 1-6: USB disconnect, device number 4 > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212891.025944] Restarting kernel threads ... done. > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212891.026371] Restarting tasks ... done. Well, there's the smoking gun. The XFS kworker is running and reporting errors before the thawing process has restarted the frozen workqueues: void thaw_kernel_threads(void) { struct task_struct *g, *p; pm_nosig_freezing = false; printk("Restarting kernel threads ... "); thaw_workqueues(); .... Which points to the fact that we probably need WQ_FREEZABLE on some of our workqueues. Brian, do you want to have a look at this? > Question. > > As this always happens on recovery from hibernation, and seeing the message > "Corruption of in-memory data detected", could it be that thawing does a bad > memory recovery from the swap? I thought that the procedure includes some > checksum, but I don't know for sure. It's the fact that the filesystem si still running and modifying state when the snapshot is being taken that results in the snapshot image containing an inconsistent snapshot. That then gets loaded on thaw and it goes boom. > To me, there are two problems: > > 1) The corruption itself. > 2) That xfs_repair fails to repair the filesystem. In fact, I believe > it does not detect it! That's because the filesystem is likely to be consistent on disk. The issue is in-memory corruption, not on-disk corruption, like the messages are telling us: XFS (sde5): Corruption of in-memory data detected. Basically, XFS is catching a bad state in memory and preventing it from being propagated to disk. if it gets to disk, then you are likely to lose data. IOWs, XFS is behaving as designed and is actually preventing data loss in this situation. Cheers, Dave. -- Dave Chinner david@fromorbit.com From ms@citd.de Thu Jul 3 06:29:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 5A6DD7F37 for ; Thu, 3 Jul 2014 06:29:22 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id E93BDAC004 for ; Thu, 3 Jul 2014 04:29:18 -0700 (PDT) X-ASG-Debug-ID: 1404386953-04cb6c76d141e5b0001-NocioJ Received: from deltamedia.de (deltamedia.de [178.77.98.209]) by cuda.sgi.com with ESMTP id gNzasQonqrO3uPMG (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 03 Jul 2014 04:29:14 -0700 (PDT) X-Barracuda-Envelope-From: ms@citd.de X-Barracuda-Apparent-Source-IP: 178.77.98.209 X-No-Relay: not in my network Received: from citd.de (p579BD0C4.dip0.t-ipconnect.de [87.155.208.196]) by deltamedia.de (Postfix) with ESMTPSA id 8F3CDA978007 for ; Thu, 3 Jul 2014 13:29:12 +0200 (CEST) Date: Thu, 3 Jul 2014 13:29:11 +0200 From: Matthias Schniedermeyer To: xfs@oss.sgi.com Subject: Changing label of a mounted XFS filesystem Message-ID: <20140703112911.GA9806@citd.de> X-ASG-Orig-Subj: Changing label of a mounted XFS filesystem MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) X-Barracuda-Connect: deltamedia.de[178.77.98.209] X-Barracuda-Start-Time: 1404386953 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-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7202 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi Is there a particular reason that the label of a mounted XFS fileystem can't be changed? The man-page of xfs_admin gives a blanket "Devices that are mounted cannot be modified" but no explanation for why that is. In my case it's the label of the root-filesystem i want to change. So to change it i would have to boot the computer with some kind of live or rescure-system. Or i would need to temporarily connect the device to another computer, both aren't really nice hoops to jump through just to change a few characters. The only thing i can compare this to is ext2 and with ext2 (/boot partition, so it really is ext2) i can change the label to my hearts content, even the device is mounted. For my case i could live with it if i could remount the filesystem RO, change the label and then having to reboot the machine, still nicer than the other 2 options. -- Matthias From jeff.liu@oracle.com Thu Jul 3 06:53:00 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4D9417F37 for ; Thu, 3 Jul 2014 06:53:00 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 1B16A8F8052 for ; Thu, 3 Jul 2014 04:53:00 -0700 (PDT) X-ASG-Debug-ID: 1404388374-04bdf0566879aa20001-NocioJ Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) by cuda.sgi.com with ESMTP id m6apMQCgVBc0gdHT (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO); Thu, 03 Jul 2014 04:52:54 -0700 (PDT) X-Barracuda-Envelope-From: jeff.liu@oracle.com X-Barracuda-Apparent-Source-IP: 156.151.31.81 Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s63BqkSp004267 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 3 Jul 2014 11:52:46 GMT Received: from aserz7022.oracle.com (aserz7022.oracle.com [141.146.126.231]) by ucsinet22.oracle.com (8.14.5+Sun/8.14.5) with ESMTP id s63BqiRf021045 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 3 Jul 2014 11:52:45 GMT Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by aserz7022.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s63BqiJk028068; Thu, 3 Jul 2014 11:52:44 GMT Received: from [192.168.1.103] (/112.238.71.200) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 03 Jul 2014 04:52:44 -0700 Message-ID: <53B544FD.6020406@oracle.com> Date: Thu, 03 Jul 2014 19:56:45 +0800 From: Jeff Liu User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0 MIME-Version: 1.0 To: "Michael L. Semon" , Dave Chinner CC: Mark Tinguely , xfs@oss.sgi.com Subject: Re: Null pointer dereference while at ACL limit on v5 XFS References: <53A8A0AF.9070009@gmail.com> <53A8A578.4070005@sgi.com> <53A8A676.80305@sgi.com> <53A8F1AC.90109@gmail.com> <20140624040434.GC9508@dastard> <53B335D1.2010709@gmail.com> X-ASG-Orig-Subj: Re: Null pointer dereference while at ACL limit on v5 XFS In-Reply-To: <53B335D1.2010709@gmail.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-Barracuda-Connect: userp1040.oracle.com[156.151.31.81] X-Barracuda-Start-Time: 1404388374 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-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7202 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 07/02/2014 06:27 AM, Michael L. Semon wrote: > On 06/24/2014 12:04 AM, Dave Chinner wrote: >> On Mon, Jun 23, 2014 at 11:34:04PM -0400, Michael L. Semon wrote: >>> [ 1068.431391] ------------[ cut here ]------------ >>> [ 1068.431566] WARNING: CPU: 0 PID: 41 at lib/list_debug.c:59 __list_del_entry+0xce/0x110() >>> [ 1068.431596] list_del corruption. prev->next should be db5bf580, but was (null) >> >> Ok, so the current log item points to a log item that has >> null pointers (i.e. not on the list). >> >>> [ 1068.433567] ---[ end trace 60289514948e4bd7 ]--- >>> [ 1068.433603] BUG: unable to handle kernel NULL pointer dereference at 0000000c >>> [ 1068.433795] IP: [] xfs_ail_check+0x58/0xc0 >> >> And that's trying to dereference a pointer from an item that is not >> on the list.... >> >> So there's linked list corruption occurring here. >> >>> I can reproduce the oops in kernel 3.15.0, perhaps with xfs-oss/for-next >>> merged, but there's no vmlinux to go with the kernel. Therefore, I'll have >>> to resort to other means (rebuilt kernel with netconsole, re-attaching the >>> serial cable, etc.) to get the full crash log. >> >> How far back can you reproduce it? If it's a recent occurrence, can >> you bisect it? >> >> Cheers, >> >> Dave. > > I've had terrible luck with bisects this week due to PEBKAC errors. With 3 > commits left to try--one slow, full build (thanks, ARM!) and hopefully 2 > minor builds--this commit is staring me in the face: > > commit bba719b5004234e55737e7074b81b337210c511d > Author: Jie Liu > Date: Wed Jan 1 19:28:03 2014 +0800 > > xfs: fix off-by-one error in xfs_attr3_rmt_verify > > In particular, one kernel had this as the most recent commit and showed > the current problem behavior. > > That is about as far back as I can go before attr3_rmt issues corrupt > filesystems and cause a "Structure needs cleaning" message during the setfacl > part of the test. Certianly, Jeff has improved matters with this patch. > > On the normal kernel git, this may correspond to kernel v3.13.0-rc7 or -rc8, > certainly no earlier than -rc2. git was bouncing the version numbers around > quite a bit. > > Before Jeff worked his wonders here, efforts to getfacl a directory with max > ACLs (on a remounted, corrupt filesystem) ended like this... Sorry for my late response as I'm working on another thing these days. I have tried to reproduce this problem on my x86 virtualBox with xfs-next latest code via fsstress but no luck. i.e, fsstress -d $SCRATCH_MNT/test-dir -n 10000 -p 16 Maybe this issue can be triggered via the seed file you provided, however, I can not download it due to the stupid China great firewall, even if through proxy. :( Cheers, -Jeff From jeff.liu@oracle.com Thu Jul 3 07:03:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 7E6D07F37 for ; Thu, 3 Jul 2014 07:03:38 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 64566304066 for ; Thu, 3 Jul 2014 05:03:35 -0700 (PDT) X-ASG-Debug-ID: 1404389010-04cbb06538254e40001-NocioJ Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) by cuda.sgi.com with ESMTP id 1lLRugag25DTurs4 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 03 Jul 2014 05:03:31 -0700 (PDT) X-Barracuda-Envelope-From: jeff.liu@oracle.com X-Barracuda-Apparent-Source-IP: 156.151.31.81 Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s63C3Kf8016177 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 3 Jul 2014 12:03:20 GMT Received: from userz7021.oracle.com (userz7021.oracle.com [156.151.31.85]) by ucsinet22.oracle.com (8.14.5+Sun/8.14.5) with ESMTP id s63C3Jpa017354 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL); Thu, 3 Jul 2014 12:03:19 GMT Received: from abhmp0019.oracle.com (abhmp0019.oracle.com [141.146.116.25]) by userz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s63C3J0u009785; Thu, 3 Jul 2014 12:03:19 GMT Received: from [192.168.1.103] (/112.238.71.200) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 03 Jul 2014 05:03:18 -0700 Message-ID: <53B54779.40108@oracle.com> Date: Thu, 03 Jul 2014 20:07:21 +0800 From: Jeff Liu User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0 MIME-Version: 1.0 To: Matthias Schniedermeyer CC: xfs@oss.sgi.com Subject: Re: Changing label of a mounted XFS filesystem References: <20140703112911.GA9806@citd.de> X-ASG-Orig-Subj: Re: Changing label of a mounted XFS filesystem In-Reply-To: <20140703112911.GA9806@citd.de> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-Barracuda-Connect: userp1040.oracle.com[156.151.31.81] X-Barracuda-Start-Time: 1404389011 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-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7202 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi, On 07/03/2014 07:29 PM, Matthias Schniedermeyer wrote: > Hi > > > Is there a particular reason that the label of a mounted XFS fileystem > can't be changed? Maybe since we have no user request for this function? :) > The man-page of xfs_admin gives a blanket "Devices that are mounted > cannot be modified" but no explanation for why that is. > > In my case it's the label of the root-filesystem i want to change. So to > change it i would have to boot the computer with some kind of live or > rescure-system. Or i would need to temporarily connect the device to > another computer, both aren't really nice hoops to jump through just to > change a few characters. > > The only thing i can compare this to is ext2 and with ext2 (/boot > partition, so it really is ext2) i can change the label to my hearts > content, even the device is mounted. > > For my case i could live with it if i could remount the filesystem RO, > change the label and then having to reboot the machine, still nicer than > the other 2 options. Btrfs support set/change label on a mounted file system via ioctl(2), maybe we can implement it if that sounds useful to our users. Cheers, -Jeff From tdm@sgi.com Thu Jul 3 08:50:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D7ED37F37 for ; Thu, 3 Jul 2014 08:50:46 -0500 (CDT) Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id D158F8F8035 for ; Thu, 3 Jul 2014 06:50:43 -0700 (PDT) Received: from [128.162.232.11] (porter.americas.sgi.com [128.162.232.11]) by estes.americas.sgi.com (Postfix) with ESMTP id 8450F7001893 for ; Thu, 3 Jul 2014 08:50:43 -0500 (CDT) Message-ID: <53B55FB3.10804@sgi.com> Date: Thu, 03 Jul 2014 08:50:43 -0500 From: Troy McCorkell User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.5) Gecko/20091204 Thunderbird/3.0 MIME-Version: 1.0 To: xfs@oss.sgi.com Subject: Re: XFS Realtime Replication problem References: <53B4E20C.60602@cmcltd.com> <20140703061525.GF9508@dastard> <53B4F7B7.4080807@cmcltd.com> <20140703090253.GT4453@dastard> <53B52098.2090104@cmcltd.com> In-Reply-To: <53B52098.2090104@cmcltd.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 07/03/2014 04:21 AM, Jignesh wrote: > Dear Dave, > > Thanks for your reply. > > Regards, > > Jignesh P. > > On 03-07-2014 14:32, Dave Chinner wrote: >> On Thu, Jul 03, 2014 at 11:57:03AM +0530, Jignesh wrote: >>> Dear Dave, >>> >>> Thanks for your quick response. >>> >>> This is not SGI Proprietary Storage product and not using any SGI >>> proprietary kernel module. SGI IS3500 is normal Intel Server with 36 >>> HDDs. ( Storage Server), We have installed RHEL 6.2 on this Server >>> and configured XVM and XFS. >> XVM is SGI proprietary software: >> >> http://www.sgi.com/products/storage/software/xvm.html >> >> As it is, if you are using RHEL, you should talk to your Red Hat >> support contact. They'll be able to tell you if it's a known problem >> w/ XFS on RHEL and which version of RHEL 6.x it is fixed in. >> >> Cheers, >> >> Dave. Jignesh, If you have SGI XVM installed, then you most likely have the SGI supplied version of XFS installed as well. If you do have the SGI supplied version of XFS installed, Red Hat support will redirect you to SGI for support. Thanks, Troy McCorkell From ms@citd.de Thu Jul 3 09:14:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id CF7187F37 for ; Thu, 3 Jul 2014 09:14:17 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6A28DAC004 for ; Thu, 3 Jul 2014 07:14:17 -0700 (PDT) X-ASG-Debug-ID: 1404396850-04bdf056697a0180001-NocioJ Received: from deltamedia.de (deltamedia.de [178.77.98.209]) by cuda.sgi.com with ESMTP id bkq6JxmHeEbXiYEm (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 03 Jul 2014 07:14:12 -0700 (PDT) X-Barracuda-Envelope-From: ms@citd.de X-Barracuda-Apparent-Source-IP: 178.77.98.209 X-No-Relay: not in my network X-No-Relay: not in my network Received: from citd.de (p579BD0C4.dip0.t-ipconnect.de [87.155.208.196]) by deltamedia.de (Postfix) with ESMTPSA id 1EFA9A97805E; Thu, 3 Jul 2014 16:14:10 +0200 (CEST) Date: Thu, 3 Jul 2014 16:14:08 +0200 From: Matthias Schniedermeyer To: Jeff Liu Cc: xfs@oss.sgi.com Subject: Re: Changing label of a mounted XFS filesystem Message-ID: <20140703141408.GA17657@citd.de> X-ASG-Orig-Subj: Re: Changing label of a mounted XFS filesystem References: <20140703112911.GA9806@citd.de> <53B54779.40108@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <53B54779.40108@oracle.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-Barracuda-Connect: deltamedia.de[178.77.98.209] X-Barracuda-Start-Time: 1404396851 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-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7204 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 03.07.2014 20:07, Jeff Liu wrote: > Hi, > > On 07/03/2014 07:29 PM, Matthias Schniedermeyer wrote: > > Hi > > > > > > Is there a particular reason that the label of a mounted XFS fileystem > > can't be changed? > > Maybe since we have no user request for this function? :) > > > The man-page of xfs_admin gives a blanket "Devices that are mounted > > cannot be modified" but no explanation for why that is. > > > > In my case it's the label of the root-filesystem i want to change. So to > > change it i would have to boot the computer with some kind of live or > > rescure-system. Or i would need to temporarily connect the device to > > another computer, both aren't really nice hoops to jump through just to > > change a few characters. > > > > The only thing i can compare this to is ext2 and with ext2 (/boot > > partition, so it really is ext2) i can change the label to my hearts > > content, even the device is mounted. > > > > For my case i could live with it if i could remount the filesystem RO, > > change the label and then having to reboot the machine, still nicer than > > the other 2 options. > > Btrfs support set/change label on a mounted file system via ioctl(2), maybe we > can implement it if that sounds useful to our users. I would vote for that, i've run into this particular brickwall several times over the years. I more or less reguarly clone or "move" storage and/or machines around and several times i forgot to re-label filesystems "at that point in time were it was easily done" and then run into the brickwall when first booting whatever i built at that time. Same has happend to me for /etc/fstab and/or GRUB configuration. But unless GRUB doesn't boot at all it can be rectified without too much hassle. Yesterday i "fixed" it by changing the fstab to the "wrong" label. The other solution would be for me to make a checklist, so i don't forget such things. But that would be to easy. ;-) -- Matthias From bfoster@redhat.com Thu Jul 3 12:44:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 194207F37 for ; Thu, 3 Jul 2014 12:44:31 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id AF99DAC004 for ; Thu, 3 Jul 2014 10:44:30 -0700 (PDT) X-ASG-Debug-ID: 1404409468-04bdf056687a9ce0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id ORtrW1rhCgrSHtiS (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 03 Jul 2014 10:44:29 -0700 (PDT) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client 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 s63HiO1a006467 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 3 Jul 2014 13:44:25 -0400 Received: from laptop.bfoster (vpn-56-55.rdu2.redhat.com [10.10.56.55]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s63HiMuh025697 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=NO); Thu, 3 Jul 2014 13:44:24 -0400 Date: Thu, 3 Jul 2014 13:39:17 -0400 From: Brian Foster To: "Carlos E. R." Cc: XFS mailing list Subject: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. Message-ID: <20140703173916.GB3452@laptop.bfoster> X-ASG-Orig-Subj: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. References: <20140702120441.GA51757@bfoster.bfoster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) 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: 1404409469 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-BRTS-Status: 1 On Thu, Jul 03, 2014 at 05:00:47AM +0200, Carlos E. R. wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > > > On Wednesday, 2014-07-02 at 08:04 -0400, Brian Foster wrote: > >On Wed, Jul 02, 2014 at 11:57:25AM +0200, Carlos E. R. wrote: > > ... > > >This is the background eofblocks scanner attempting to free preallocated > >space on a file. The scanner looks for files that have been recently > >grown and since been flushed to disk (i.e., no longer concurrently being > >written to) and trims the post-eof preallocation that comes along with > >growing files. > > > >The corruption errors at xfs_alloc.c:1602,1629 on v3.11 fire if the > >extent we are attempting to free is already accounted for in the > >by-block allocation btree. IOW, this is attempting to free an extent > >that the allocation metadata thinks is already free. > > > >> > >>Brief description: > >> > >> > >> * It happens only on restore from hibernation. > > > >Interesting, could you elaborate a bit more on the behavior this system > >is typically subjected to? i.e., is this a server that sees a constant > >workload that is also frequently hibernated/awakened? > > It is a desktop machine I use for work at home. I typically have many > applications opened on diferent workspaces in XFCE. Say one has terminals, > another has Thunderbird/Pine, another Firefox, another LibreOffice; another > may have gimp, another may be kbabel or lokalize, another may have vmplayer, > etc, whatever. When I go out or go to sleep, I hibernate the machine, > instead of powering down, because it is much faster than reboot, login, and > start the wanted applications, and I want to conserve some electricity. > > I also use the machine for testing configurations, but these I try to do on > virtual machines, instead of my work partition. > > > The machine may be used anywhere from 4 to 16 hours a day, and hibernated at > least once a day, perhaps three times if I have to go out several times. It > makes no sense to me to leave the machine powered doing nothing, if > hibernating is so easy and reliable - till now. If I have to leave for more > than a week, I tend to do a full "halt". > > > > By the way, this started hapening when I replaced an old 500 GB hard disk > (Seagate ST3500418AS) with a 2 TB new unit (Seagate ST2000DM001-1CH164). > Smartctl long test says fine (and seatools from Windows, too). > Ok, so there's a lot going on. I was mainly curious to see what was causing lingering preallocations, but it could be anything extending a file multiple times. > > > >>I do not have more info than what appears on the logs, but four times (two > >>different kernels): > >> > >>cer@Telcontar:~> zgrep XFS_WANT_CORRUPTED_GOTO /var/log/messages*xz > >>/var/log/messages-20140402.xz:<0.1> 2014-03-15 03:35:17 Telcontar kernel - - - [37685.111787] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1629 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c54fe9 > >>/var/log/messages-20140402.xz:<0.1> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298345] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c54fe9 > >>/var/log/messages-20140506.xz:<0.1> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.851374] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c54fe9 > >>/var/log/messages-20140629.xz:<0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626346] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c39fe9 > >>cer@Telcontar:~> > > >So you have reproduced this, reformatted with mkfs, restored from > >backups and continued to reproduce the problem? And still only on this > >particular partition? > > Right. Exactly that. > > Only that I can not reproduce the issue at will, but about once a month, > randomly. > > AFAIK, xfsdump can not carry over a filesystem corruption, right? > I think that's accurate, though it might complain/fail in the act of dumping an fs that is corrupted. The behavior here suggests there might not be on disk corruption, however. > > > **** LONG DESCRIPTION and LOGS start here ******** > ... > <5.6> 2014-06-29 12:48:34 Telcontar rsyslogd - - - [origin software="rsyslogd" swVersion="7.4.7" x-pid="1111" x-info="http://www.rsyslog.com"] exiting on signal 15. > 2014-06-29 12:48:35+02:00 - Halting the system now =========================================== uptime: 12:48pm up 4 days 8:43, 33 users, load average: 1.40, 0.53, 0.67 > 2014-06-29 12:57:41+02:00 - Booting the system now ================================================================================ Linux Telcontar 3.11.10-11-desktop #1 SMP PREEMPT Mon May 12 13:37:06 UTC 2014 (3d22b5f) x86_64 x86_64 x86_64 GNU/Linux > > (it does not show in the log that I had to hit the hardware reset button, > the machine refused to reboot normally, apparently) > > > (If you ask why I took so long to notice the problem after thawing, > my routine is to power up the machine, then go prepare tea. :-) > When I come back with the mug, I'm dismayed to see I can not > start working; and this day I was in a a hurry) > > > So I reboot (text mode, level 3), umount home, run xfsrepair, mount again, > do xfsdump, do simultanesouly an rsync (it is a file by file copy, in case > of problems with dump), umount, use YaST in text mode to reformat the > partition, mount, and then xfsrestore. It did not occur to me to make a > 'dd' photo this time: I was tired and busy. > > Maybe next time I can take the photo with dd before doing anything else (it > takes about 80 minutes), or simply do an "xfs_metadump", which should be > faster. And I might not have then 500 GiB of free space to make a dd copy, > anyway. > xfs_metadump should be faster. It will grab the metadata only and obfuscate filenames so as to hide sensitive information. > > > > > > Question. > > As this always happens on recovery from hibernation, and seeing the message > "Corruption of in-memory data detected", could it be that thawing does a bad > memory recovery from the swap? I thought that the procedure includes some > checksum, but I don't know for sure. > Not sure, though if so I would think that might be a more common source of problems. > > > > > > >This is interesting because the corruption appears to be associated with > >post-eof space, which is generally transient. The worst case is that > >this space is trimmed off files when they are evicted from cache, such > >as during a umount. To me, that seems to correlate with a more > >recent/runtime problem rather than something that might be lingering on > >disk, but we don't really know for sure. > > Dunno. > > To me, there are two problems: > > 1) The corruption itself. > 2) That xfs_repair fails to repair the filesystem. In fact, I believe > it does not detect it! > > To me, #2 is the worst, and it is what makes me do the backup, format, > restore cycle for recovery. An occassional kernel crash is somewhat > acceptable :-} > Well it could be that the "corruption" is gone at the point of a remount. E.g., something becomes inconsistent in memory, the fs detects it and shuts down before going any further. That's actually a positive. ;) That also means it's probably not be necessary to do a full backup, reformat and restore sequence as part of your routine here. xfs_repair should scour through all of the allocation metadata and yell if it finds something like free blocks allocated to a file. > > > >>Wait! I have a "dd" copy of the entire partition (500 GB), made on March > >>16th, 5 AM, so hard data could be obtained from there. I had forgotten. I'll > >>get something for you now: > > ... > > >>I could do a "xfs_metadump" on it - just tell me what options to use, and > >>where can the result be uploaded to, if big. > >> > > > >A metadump would be helpful, though that only gives us the on-disk > >state. What was the state of this fs at the time the dd image was > >created? > > I'm sorry, I'm not absolutely sure. I believe it is corrupted, but I can not > vouch it. > > >I'm curious if something like an 'rm -rf *' on the metadump > >would catch any other corruptions or if this is indeed limited to > >something associated with recent (pre)allocations. > > Sorry, run 'rm -rf *' where??? > On the metadump... mainly just to see whether freeing all of the used blocks in the fs triggered any other errors (i.e., a brute force way to check for further corruptions). > > >Run 'xfs_metadump ' to create a metadump that will > >obfuscate filenames by default. It should also be compressible. In the > >future, it's probably worth grabbing a metadump as a first step (before > >repair, zeroing the log, etc.) so we can look at the fs in the state > >most recent to the crash. > > I will take that photo next time, using a rescue system in order to impede > the system from mounting the partition and replaying the log. Dunno how long > that will take to happen, though... usually a month - but at least now I > know how to do it. > > > > > Meanwhile, I have done a xfs_metadump of the image, and compressed it with > xz. It has 10834536 bytes. What do I do with it? I'm not sure I can email > that, and even less to a mail list. > > Do you still have a bugzilla system where I can upload it? I had an account > at , made on 2010. I don't know if it still > runs :-? > I think http://bugzilla.redhat.com should allow you to file a bug and attach the file. Brian > If you don't, I can try to create it a bugzilla on openSUSE instead, and > tell you the number... but I don't know if it takes files that big. If it > doesn't, I'll fragment the file. You need to have an account there, I think, > to retrieve the attachment, and I would prefer to mark the bug private, or > at least the attachment. > > > > > I did the following. > > First I made a copy, with "dd", of the partition image, all 489G of it. On > this copy I ran "xfs_check", "xfs_repair -n", and "xfs_repair", with these > results: > > > Telcontar:/data/storage_d/old_backup # xfs_check xfs_copy_home_workonit > xfs_check is deprecated and scheduled for removal in June 2014. > Please use xfs_repair -n instead. > Telcontar:/data/storage_d/old_backup # xfs_repair -n xfs_copy_home_workonit > Phase 1 - find and verify superblock... > Phase 2 - using internal log > - scan filesystem freespace and inode maps... > - found root inode chunk > Phase 3 - for each AG... > - scan (but don't clear) agi unlinked lists... > - process known inodes and perform inode discovery... > - agno = 0 > - agno = 1 > - agno = 2 > - agno = 3 > - process newly discovered inodes... > Phase 4 - check for duplicate blocks... > - setting up duplicate extent list... > - check for inodes claiming duplicate blocks... > - agno = 0 > - agno = 1 > - agno = 2 > - agno = 3 > No modify flag set, skipping phase 5 > Phase 6 - check inode connectivity... > - traversing filesystem ... > - traversal finished ... > - moving disconnected inodes to lost+found ... > Phase 7 - verify link counts... > No modify flag set, skipping filesystem flush and exiting. > Telcontar:/data/storage_d/old_backup # time xfs_repair xfs_copy_home_workonit > Phase 1 - find and verify superblock... > Phase 2 - using internal log > - zero log... > - scan filesystem freespace and inode maps... > - found root inode chunk > Phase 3 - for each AG... > - scan and clear agi unlinked lists... > - process known inodes and perform inode discovery... > - agno = 0 > - agno = 1 > - agno = 2 > - agno = 3 > - process newly discovered inodes... > Phase 4 - check for duplicate blocks... > - setting up duplicate extent list... > - check for inodes claiming duplicate blocks... > - agno = 0 > - agno = 1 > - agno = 2 > - agno = 3 > Phase 5 - rebuild AG headers and trees... > - reset superblock... > Phase 6 - check inode connectivity... > - resetting contents of realtime bitmap and summary inodes > - traversing filesystem ... > - traversal finished ... > - moving disconnected inodes to lost+found ... > Phase 7 - verify and correct link counts... > done > > real 0m28.058s > user 0m1.692s > sys 0m2.265s > Telcontar:/data/storage_d/old_backup # > > > Maybe the image was made after repair, or maybe xfs_repair doesn't detect > anything, which as far as I remember, was the case. > > > > I recreate the copy, to try "mount" on an unaltered copy. > > > Telcontar:/data/storage_d/old_backup # time dd if=xfs_copy_home > of=xfs_copy_home_workonit && mount -v xfs_copy_home_workonit mount/ > 1024000000+0 records in > 1024000000+0 records out > 524288000000 bytes (524 GB) copied, 4662.7 s, 112 MB/s > > real 77m43.697s > user 3m1.420s > sys 28m41.958s > mount: /dev/loop0 mounted on /data/storage_d/old_backup/mount. > (reverse-i-search)`mount': time dd if=xfs_copy_home > Telcontar:/data/storage_d/old_backup # > > > So it mounts... > > > > > > - -- Cheers, > Carlos E. R. > (from 13.1 x86_64 "Bottle" at Telcontar) > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v2.0.22 (GNU/Linux) > > iEYEARECAAYFAlO0x18ACgkQtTMYHG2NR9X6QwCcD8r5qXIHVh4ELklM/tzXASds > yskAoIcwxYNC2tKsS7wE9Jp+g4MNUdpd > =pIZI > -----END PGP SIGNATURE----- > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From bfoster@redhat.com Thu Jul 3 12:45:30 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 12A077F37 for ; Thu, 3 Jul 2014 12:45:30 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8590DAC004 for ; Thu, 3 Jul 2014 10:45:29 -0700 (PDT) X-ASG-Debug-ID: 1404409524-04cbb065372628f0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id vpihDzH6NhmJb4SB (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 03 Jul 2014 10:45:25 -0700 (PDT) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client 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 s63HjFa4006775 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 3 Jul 2014 13:45:15 -0400 Received: from laptop.bfoster (vpn-56-55.rdu2.redhat.com [10.10.56.55]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s63HjDni025953 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=NO); Thu, 3 Jul 2014 13:45:14 -0400 Date: Thu, 3 Jul 2014 13:40:08 -0400 From: Brian Foster To: Dave Chinner Cc: "Carlos E. R." , XFS mailing list Subject: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. Message-ID: <20140703174007.GC3452@laptop.bfoster> X-ASG-Orig-Subj: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. References: <20140702120441.GA51757@bfoster.bfoster> <20140703094347.GU4453@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140703094347.GU4453@dastard> User-Agent: Mutt/1.5.23 (2014-03-12) 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: 1404409525 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-BRTS-Status: 1 On Thu, Jul 03, 2014 at 07:43:47PM +1000, Dave Chinner wrote: > On Thu, Jul 03, 2014 at 05:00:47AM +0200, Carlos E. R. wrote: > > On Wednesday, 2014-07-02 at 08:04 -0400, Brian Foster wrote: > > >On Wed, Jul 02, 2014 at 11:57:25AM +0200, Carlos E. R. wrote: > > > > ... > > > > >This is the background eofblocks scanner attempting to free preallocated > > >space on a file. The scanner looks for files that have been recently > > >grown and since been flushed to disk (i.e., no longer concurrently being > > >written to) and trims the post-eof preallocation that comes along with > > >growing files. > > > > > >The corruption errors at xfs_alloc.c:1602,1629 on v3.11 fire if the > > >extent we are attempting to free is already accounted for in the > > >by-block allocation btree. IOW, this is attempting to free an extent > > >that the allocation metadata thinks is already free. > > > > > >> > > >>Brief description: > > >> > > >> > > >> * It happens only on restore from hibernation. > > > > > >Interesting, could you elaborate a bit more on the behavior this system > > >is typically subjected to? i.e., is this a server that sees a constant > > >workload that is also frequently hibernated/awakened? > > .... > > > The machine may be used anywhere from 4 to 16 hours a day, and > > hibernated at least once a day, perhaps three times if I have to go > > out several times. It makes no sense to me to leave the machine > > powered doing nothing, if hibernating is so easy and reliable - till > > now. If I have to leave for more than a week, I tend to do a full > > "halt". > > Hibernation has always been suspect w.r.t. flushing filesystem > metadata. It does not guarantee that the filesystem is quiesced > and idle, it just does a sync() and hopes that is sufficient to get > the filesystem into a consistent state. The mess that this leaves is > then left to filesystem developers to play whack-a-mole with when > users have problems. > > > But soon after, it oopses: > > Point of note: there is no oops or crash occurring. XFS dumps the > stack when a corruption occurs to tell use where it was detected > and then shuts down the filesystem. Your system is still just fine > apart from not being able to access that filesystem until you > unmount it, rpeair it and mount it again. > > > 3 PID: 57 Comm: kworker/3:1 Tainted: P O 3.11.10-7-desktop > > What's tainting your kernel? If you remove that taint, does the > problem still occur? > > .... > > <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.819191] Enabling non-boot CPUs ... > > <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.819191] smpboot: Booting Node 0 Processor 1 APIC 0x1 > > <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.832336] CPU1 is up > > <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.832467] smpboot: Booting Node 0 Processor 2 APIC 0x2 > > <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.845865] CPU2 is up > > <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.846034] smpboot: Booting Node 0 Processor 3 APIC 0x3 > > <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280266.859609] CPU3 is up > .... > > <0.6> 2014-04-17 22:47:08 Telcontar kernel - - - [280269.796130] PM: restore of devices complete after 2736.343 msecs > > <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280270.081655] Restarting kernel threads ... done. > > <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280270.086714] Restarting tasks ... done. > ..... > > <0.1> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.851374] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c54fe9 > > So the corruption occurred within 2s of the kernel restarting tasks > after a hibernation. It's really looking like a hibernation issue. > > > <3.4> 2014-06-29 04:51:50 Telcontar pm-utils - - - Hibernating (95)... > ..... > > <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212887.640186] Enabling non-boot CPUs ... > ..... > > <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.615073] PM: restore of devices complete after 2735.034 msecs > > <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.626346] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c39fe9 > ..... > > <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.706440] XFS (sde5): Corruption of in-memory data detected. Shutting down filesystem > > <0.1> 2014-06-29 12:32:18 Telcontar kernel - - - [212890.706440] XFS (sde5): Please umount the filesystem and rectify the problem(s) > > <0.6> 2014-06-29 12:32:18 Telcontar kernel - - - [212891.026207] usb 1-6: USB disconnect, device number 4 > > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212891.025944] Restarting kernel threads ... done. > > <0.4> 2014-06-29 12:32:18 Telcontar kernel - - - [212891.026371] Restarting tasks ... done. > > Well, there's the smoking gun. The XFS kworker is running and > reporting errors before the thawing process has restarted > the frozen workqueues: > > void thaw_kernel_threads(void) > { > struct task_struct *g, *p; > > pm_nosig_freezing = false; > printk("Restarting kernel threads ... "); > > thaw_workqueues(); > .... > > Which points to the fact that we probably need WQ_FREEZABLE on some > of our workqueues. Brian, do you want to have a look at this? > Yeah, I'll look into it. I might see if I can try to reproduce this by suspending a vm. It sounds like a preallocating workload and a reduced eofblocks scan timer test might be worth a shot. Thanks Dave. Brian > > Question. > > > > As this always happens on recovery from hibernation, and seeing the message > > "Corruption of in-memory data detected", could it be that thawing does a bad > > memory recovery from the swap? I thought that the procedure includes some > > checksum, but I don't know for sure. > > It's the fact that the filesystem si still running and modifying > state when the snapshot is being taken that results in the snapshot > image containing an inconsistent snapshot. That then gets loaded > on thaw and it goes boom. > > > To me, there are two problems: > > > > 1) The corruption itself. > > 2) That xfs_repair fails to repair the filesystem. In fact, I believe > > it does not detect it! > > That's because the filesystem is likely to be consistent on disk. > The issue is in-memory corruption, not on-disk corruption, like > the messages are telling us: > > XFS (sde5): Corruption of in-memory data detected. > > Basically, XFS is catching a bad state in memory and preventing it > from being propagated to disk. if it gets to disk, then you are > likely to lose data. IOWs, XFS is behaving as designed and is > actually preventing data loss in this situation. > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From flux@hotbox.ru Thu Jul 3 13:06:04 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 19AE37F37 for ; Thu, 3 Jul 2014 13:06:04 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 261D98F8033 for ; Thu, 3 Jul 2014 11:06:00 -0700 (PDT) X-ASG-Debug-ID: 1404410757-04cbb06536263250001-NocioJ Received: from mail3.ks.pochta.ru (mail3.ks.pochta.ru [62.141.94.173]) by cuda.sgi.com with ESMTP id BwxE8UlmFHMg5m5J (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 03 Jul 2014 11:05:58 -0700 (PDT) X-Barracuda-Envelope-From: flux@hotbox.ru X-Barracuda-Apparent-Source-IP: 62.141.94.173 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=qip.ru; s=dkim; h=Content-Transfer-Encoding:Content-Type:Subject:To:MIME-Version:From:Date:Message-ID; bh=Gce8XMlkvtfOFt5gIBxJjdUYQuf/XxER5znwqiSF7bM=; b=JXauweVs+bDwnJvxU2ppfjUValKt0JeWo/hnFLDMoj4ZZj461V+NfcFhYxSIxhiM9wL9qpvbdVMjIs4jQHu9ei4ef8iwD9feYfo686gaYaQIXXMetNGN/g3t/puazOnngTmmYG3zMVyMOVVF2QR3URGh6t6R4e4LLWgJazEUv/zQXccvcpQwKF/QmZhDD25C5QTPGrWn9hk9BpJYoNN3fOVsxXFynR/cZ1daVhBWMiqNRvK9in4aLwQxXyDw8uQDeRvZeug/iP6TOqvxlZgLzUYKSbqWRIpjfd9gXqnHlGBzdiQjnOYlEDj94og+yHmSeEgPwJRASQc3s9fmm+lrRA==; Received: from [95.79.188.197] (port=58170 helo=localhost.localdomain) by mail3.ks.pochta.ru with esmtpsa id 1X2lOO-0002Xj-9U for xfs@oss.sgi.com; Thu, 03 Jul 2014 22:05:56 +0400 Message-ID: <53B59B81.2030603@hotbox.ru> Date: Thu, 03 Jul 2014 22:05:53 +0400 From: flux@hotbox.ru User-Agent: Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: xfs@oss.sgi.com Subject: XFS syncs Content-Type: text/plain; charset=windows-1251; format=flowed X-ASG-Orig-Subj: XFS syncs Content-Transfer-Encoding: 7bit X-RSpam-Score: 148 X-RSpam-Report: This message is probably spam. X-Barracuda-Connect: mail3.ks.pochta.ru[62.141.94.173] X-Barracuda-Start-Time: 1404410758 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7212 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 Hi, I issue 'mkdir abc' on my xfs partition the cut off the power. After reboot there's no 'abc' directoy. However, when I do that on ext4 the 'abc' direcory is always created after reboots. All the settings, about mount options are default for my distro. What am I missing or how do I change the things of the jounral or whatever? From stan@hardwarefreak.com Thu Jul 3 16:34:04 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 6687C7F37 for ; Thu, 3 Jul 2014 16:34:04 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 009BEAC004 for ; Thu, 3 Jul 2014 14:34:03 -0700 (PDT) X-ASG-Debug-ID: 1404423242-04bdf056687b1240001-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 dOAhLETCzPF271QG for ; Thu, 03 Jul 2014 14:34:02 -0700 (PDT) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 X-Barracuda-User-Whitelist: xfs@oss.sgi.com Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 156D86C0C6; Thu, 3 Jul 2014 16:34:02 -0500 (CDT) Message-ID: <53B5CC3B.5030108@hardwarefreak.com> Date: Thu, 03 Jul 2014 16:33:47 -0500 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: flux@hotbox.ru, xfs@oss.sgi.com Subject: Re: XFS syncs References: <53B59B81.2030603@hotbox.ru> X-ASG-Orig-Subj: Re: XFS syncs In-Reply-To: <53B59B81.2030603@hotbox.ru> 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: 1404423242 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 7/3/2014 1:05 PM, flux@hotbox.ru wrote: > Hi, > > I issue 'mkdir abc' on my xfs partition the cut off the power. After > reboot there's no 'abc' directoy. However, when I do that on ext4 the > 'abc' direcory is always created after reboots. All the settings, about > mount options are default for my distro. What am I missing or how do I > change the things of the jounral or whatever? So, you want XFS to behave like EXT4, is this correct? Do you have an actual workload where you need to cut power immediately after issuing commands, as described above? Cheers, Stan From david@fromorbit.com Thu Jul 3 18:12:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B4BAB29DF8 for ; Thu, 3 Jul 2014 18:12:22 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id A54538F8040 for ; Thu, 3 Jul 2014 16:12:19 -0700 (PDT) X-ASG-Debug-ID: 1404429136-04bdf056677b39a0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id 7xNvBhusmQHZ0eL7 for ; Thu, 03 Jul 2014 16:12:17 -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: AghfAFjitVN5LHZ8PGdsb2JhbABagw2sbAEBAQEBAQaaVAGBChcEAQEBATg1hAMBAQQBOhwjEAgDDgoJJQ8FJQMHGhOIOgfJJxcYhViJMgeEQwWadZdhK4ExJA Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail04.adl6.internode.on.net with ESMTP; 04 Jul 2014 08:42:15 +0930 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1X2qAm-0007Fk-Ei; Fri, 04 Jul 2014 09:12:12 +1000 Date: Fri, 4 Jul 2014 09:12:12 +1000 From: Dave Chinner To: Matthias Schniedermeyer Cc: Jeff Liu , xfs@oss.sgi.com Subject: Re: Changing label of a mounted XFS filesystem Message-ID: <20140703231212.GV4453@dastard> X-ASG-Orig-Subj: Re: Changing label of a mounted XFS filesystem References: <20140703112911.GA9806@citd.de> <53B54779.40108@oracle.com> <20140703141408.GA17657@citd.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140703141408.GA17657@citd.de> 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: 1404429136 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7220 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Jul 03, 2014 at 04:14:08PM +0200, Matthias Schniedermeyer wrote: > On 03.07.2014 20:07, Jeff Liu wrote: > > Hi, > > > > On 07/03/2014 07:29 PM, Matthias Schniedermeyer wrote: > > > Hi > > > > > > > > > Is there a particular reason that the label of a mounted XFS fileystem > > > can't be changed? > > > > Maybe since we have no user request for this function? :) Most likely. It's currently done by xfs_db, which is an offline tool. > > > The man-page of xfs_admin gives a blanket "Devices that are mounted > > > cannot be modified" but no explanation for why that is. > > > > > > In my case it's the label of the root-filesystem i want to change. So to > > > change it i would have to boot the computer with some kind of live or > > > rescure-system. Or i would need to temporarily connect the device to > > > another computer, both aren't really nice hoops to jump through just to > > > change a few characters. > > > > > > The only thing i can compare this to is ext2 and with ext2 (/boot > > > partition, so it really is ext2) i can change the label to my hearts > > > content, even the device is mounted. > > > > > > For my case i could live with it if i could remount the filesystem RO, > > > change the label and then having to reboot the machine, still nicer than > > > the other 2 options. > > > > Btrfs support set/change label on a mounted file system via ioctl(2), maybe we > > can implement it if that sounds useful to our users. > > I would vote for that, i've run into this particular brickwall several > times over the years. There's a bunch of things I'd like to make online modifiable that currently can only be done offline by xfs_db and other tools. I'll add this to the list, and hopefully when I get a little time I'll do something about it... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Jul 3 18:17:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 9E18929DF8 for ; Thu, 3 Jul 2014 18:17:34 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 861658F8049 for ; Thu, 3 Jul 2014 16:17:34 -0700 (PDT) X-ASG-Debug-ID: 1404429451-04bdf056697b3cc0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id HTiv7bJ7Osy8DlBd for ; Thu, 03 Jul 2014 16:17:32 -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: AgdfAEzjtVN5LHZ8PGdsb2JhbABagw2sbAEBAQEBAQaaVAGBChcEAQEBATg1hAMBAQQBOhwjBQsIAxgJJQ8FJQMHLYguAwkHwkgPhlAXGIVYiEoaBUkHFoQtBZp1l2ErgTI Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail04.adl6.internode.on.net with ESMTP; 04 Jul 2014 08:47:31 +0930 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1X2qFu-0007GW-Al; Fri, 04 Jul 2014 09:17:30 +1000 Date: Fri, 4 Jul 2014 09:17:30 +1000 From: Dave Chinner To: flux@hotbox.ru Cc: xfs@oss.sgi.com Subject: Re: XFS syncs Message-ID: <20140703231730.GW4453@dastard> X-ASG-Orig-Subj: Re: XFS syncs References: <53B59B81.2030603@hotbox.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <53B59B81.2030603@hotbox.ru> 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: 1404429451 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7220 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header On Thu, Jul 03, 2014 at 10:05:53PM +0400, flux@hotbox.ru wrote: > Hi, > > I issue 'mkdir abc' on my xfs partition the cut off the power. After > reboot there's no 'abc' directoy. Because you didn't sync(1) the filesystem or fsync(2) the directory before you cut the power. Hence the change never hit the disk. > However, when I do that on ext4 > the 'abc' direcory is always created after reboots. That'll be pure fluke - ext4 delays journal writes on namespace operations just like XFS does. > All the > settings, about mount options are default for my distro. What am I > missing or how do I change the things of the jounral or whatever? If you want directory operations to hitthe disk immediately, then mount with the "-o wsync" option. Be aware, however, that this will kill performance unless you have expensive storage with a large amount of battery backed write cache in front of the disks. There's a good chance it will also cause excessive wear on SSDs due to the frequent journal writes. Cheers, Dave. -- Dave Chinner david@fromorbit.com From robin.listas@gmail.com Thu Jul 3 18:35:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 914BF29DF8 for ; Thu, 3 Jul 2014 18:35:06 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 0DC4FAC001 for ; Thu, 3 Jul 2014 16:35:02 -0700 (PDT) X-ASG-Debug-ID: 1404430497-04cbb0653626d650001-NocioJ Received: from mail-wg0-f50.google.com (mail-wg0-f50.google.com [74.125.82.50]) by cuda.sgi.com with ESMTP id e0GVx4mAIYOhFOqM (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 03 Jul 2014 16:34:58 -0700 (PDT) X-Barracuda-Envelope-From: robin.listas@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.50 Received: by mail-wg0-f50.google.com with SMTP id m15so907714wgh.21 for ; Thu, 03 Jul 2014 16:34:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:subject:in-reply-to:message-id:references :user-agent:mime-version:content-type; bh=01KJ39USuyJ29uSkwnA0uaCvs92Mtzf8EZDvtfcq+is=; b=aZcDeAjjv5M1Su7wsY5CeR3c4F4z/Hlo+HNwU3TeKkAkkFPzgso+qx3HSlZlGLzjiF 0ztovZb+0+Ed2IT/NHVj+IYRphgAE3SyZ09B8zOIns7ccBiGvzXvxoU1pSGnx/YYL6CO hKc48yfBpv5zEuhHbuFfcIsYOrAWh5NBA/J465in+a5XzzyZ0cNE/ZNWUNvuo+oKcORn 5GmNlsVbDBbF29a/plPIt8DJRvYkMEpyGa4C6We62A0Na8ePes3l3smyd6vgxb+Iy+kG x4ctJwLGv3LHEc5S8VPY0tmHLj7ndlJQ1IZfRkmBTibFDBZrdtPrOguATFLyvgaA/4fl IXkw== X-Received: by 10.180.81.1 with SMTP id v1mr13786468wix.10.1404430496887; Thu, 03 Jul 2014 16:34:56 -0700 (PDT) Received: from Telcontar.valinor (90.Red-79-150-228.dynamicIP.rima-tde.net. [79.150.228.90]) by mx.google.com with ESMTPSA id fn1sm72308562wib.18.2014.07.03.16.34.55 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Jul 2014 16:34:56 -0700 (PDT) Sender: Carlos Robinson Received: from localhost (localhost [127.0.0.1]) by Telcontar.valinor (Postfix) with ESMTP id 6556C60E0E for ; Fri, 4 Jul 2014 01:34:53 +0200 (CEST) X-Virus-Scanned: amavisd-new at valinor Received: from Telcontar.valinor ([127.0.0.1]) by localhost (Telcontar.valinor [127.0.0.1]) (amavisd-new, port 10024) with LMTP id JnWaJ_mD4-JW for ; Fri, 4 Jul 2014 01:34:53 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by Telcontar.valinor (Postfix) with ESMTP id 36E9060D9B for ; Fri, 4 Jul 2014 01:34:52 +0200 (CEST) Date: Fri, 4 Jul 2014 01:34:52 +0200 (CEST) From: "Carlos E. R." X-X-Sender: cer@Telcontar.valinor To: XFS mailing list Subject: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. In-Reply-To: <20140703094347.GU4453@dastard> X-ASG-Orig-Subj: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. Message-ID: References: <20140702120441.GA51757@bfoster.bfoster> <20140703094347.GU4453@dastard> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Barracuda-Connect: mail-wg0-f50.google.com[74.125.82.50] X-Barracuda-Start-Time: 1404430497 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7221 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 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Thursday, 2014-07-03 at 19:43 +1000, Dave Chinner wrote: > On Thu, Jul 03, 2014 at 05:00:47AM +0200, Carlos E. R. wrote: >> On Wednesday, 2014-07-02 at 08:04 -0400, Brian Foster wrote: >>> On Wed, Jul 02, 2014 at 11:57:25AM +0200, Carlos E. R. wrote: >> >> ... >> hibernated at least once a day, perhaps three times if I have to go >> out several times. It makes no sense to me to leave the machine >> powered doing nothing, if hibernating is so easy and reliable - till >> now. If I have to leave for more than a week, I tend to do a full >> "halt". > > Hibernation has always been suspect w.r.t. flushing filesystem > metadata. It does not guarantee that the filesystem is quiesced > and idle, it just does a sync() and hopes that is sufficient to get > the filesystem into a consistent state. The mess that this leaves is > then left to filesystem developers to play whack-a-mole with when > users have problems. Ah, but my problem would then not happen always on the same partition. It would affect others, would not? >> But soon after, it oopses: > > Point of note: there is no oops or crash occurring. XFS dumps the > stack when a corruption occurs to tell use where it was detected > and then shuts down the filesystem. Your system is still just fine > apart from not being able to access that filesystem until you > unmount it, rpeair it and mount it again. Ok, true, there is no formal "Oops". But no, the system does not remains fine, I had to hit the hardware reset or power off button to get out. >> 3 PID: 57 Comm: kworker/3:1 Tainted: P O 3.11.10-7-desktop > > What's tainting your kernel? If you remove that taint, does the > problem still occur? Sorry, I can't find that out. It is either the nvidia driver, or the vmware kernel module. I can temporarily remove it for some days, but hardly for a month. I agree that it might have unknown influence on the initial corruption, but not on doing the repair, which I do in text mode, or with another boot partition that doesn't have that driver. That is, it would not have influence on "xfs_repair", when done on a non tainted system. I don't know of a way to provoking the problem at will, in order to remove the taint for a brief period :-? >> <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280270.081655] Restarting kernel threads ... done. >> <0.4> 2014-04-17 22:47:08 Telcontar kernel - - - [280270.086714] Restarting tasks ... done. > ..... >> <0.1> 2014-04-17 22:47:08 Telcontar kernel - - - [280271.851374] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_alloc.c. Caller 0xffffffffa0c54fe9 > > So the corruption occurred within 2s of the kernel restarting tasks > after a hibernation. It's really looking like a hibernation issue. It's got to be related, of course. >> Question. >> >> As this always happens on recovery from hibernation, and seeing the message >> "Corruption of in-memory data detected", could it be that thawing does a bad >> memory recovery from the swap? I thought that the procedure includes some >> checksum, but I don't know for sure. > > It's the fact that the filesystem si still running and modifying > state when the snapshot is being taken that results in the snapshot > image containing an inconsistent snapshot. That then gets loaded > on thaw and it goes boom. But it only happens on the /home partition, not on the email partition, for instance, also in the same hard disk. Unless... there are probably more things writing on the home partition than on the mail partition any time. >> To me, there are two problems: >> >> 1) The corruption itself. >> 2) That xfs_repair fails to repair the filesystem. In fact, I believe >> it does not detect it! > > That's because the filesystem is likely to be consistent on disk. > The issue is in-memory corruption, not on-disk corruption, like > the messages are telling us: No, the on disk filesystem is not healthy. If I continue using it, after reboot and using "xfs_repair" several times, it fails again within a day. I got after booting (the first event): 0.1> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857523] XFS: Internal error XFS_WANT_CORRUPTED_RETURN at line 350 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_all And some hours later: <0.1> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298345] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_allo So, instead of using xfs_repair, I re-formatted and restored backup, which worked for a month till next event. - -- Cheers, Carlos E. R. (from 13.1 x86_64 "Bottle" at Telcontar) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEARECAAYFAlO16JwACgkQtTMYHG2NR9VmzQCdHaeuKC3UkLWWzHRewx7wTC/N zKAAn3VKi2bBYLrUA4edokFQ8RWXGm5z =F5YK -----END PGP SIGNATURE----- From david@fromorbit.com Thu Jul 3 19:06:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 3A55B29DF8 for ; Thu, 3 Jul 2014 19:06:52 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id ABE6EAC001 for ; Thu, 3 Jul 2014 17:06:48 -0700 (PDT) X-ASG-Debug-ID: 1404432405-04cbb0653826e710001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id K9jQg0sdSk7i28j9 for ; Thu, 03 Jul 2014 17:06:46 -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: AghfAD7vtVN5LHZ8PGdsb2JhbABagw2sbAEBAQEBAQaaVAGBCxcEAQEBATg1hAMBAQQBOhwjBQsIAxgJJQ8FJQMHGhOIOgfJMBcYhViIUBACAQFOB4RDBZp1i0yKQYFUKw Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail04.adl6.internode.on.net with ESMTP; 04 Jul 2014 09:34:28 +0930 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1X2qzK-0007Lw-Hi; Fri, 04 Jul 2014 10:04:26 +1000 Date: Fri, 4 Jul 2014 10:04:26 +1000 From: Dave Chinner To: "Carlos E. R." Cc: XFS mailing list Subject: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. Message-ID: <20140704000426.GX4453@dastard> X-ASG-Orig-Subj: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. References: <20140702120441.GA51757@bfoster.bfoster> <20140703094347.GU4453@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: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1404432405 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7222 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header On Fri, Jul 04, 2014 at 01:34:52AM +0200, Carlos E. R. wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > > > On Thursday, 2014-07-03 at 19:43 +1000, Dave Chinner wrote: > >On Thu, Jul 03, 2014 at 05:00:47AM +0200, Carlos E. R. wrote: > >>On Wednesday, 2014-07-02 at 08:04 -0400, Brian Foster wrote: > >>>On Wed, Jul 02, 2014 at 11:57:25AM +0200, Carlos E. R. wrote: > >> > >>... > > >>hibernated at least once a day, perhaps three times if I have to go > >>out several times. It makes no sense to me to leave the machine > >>powered doing nothing, if hibernating is so easy and reliable - till > >>now. If I have to leave for more than a week, I tend to do a full > >>"halt". > > > >Hibernation has always been suspect w.r.t. flushing filesystem > >metadata. It does not guarantee that the filesystem is quiesced > >and idle, it just does a sync() and hopes that is sufficient to get > >the filesystem into a consistent state. The mess that this leaves is > >then left to filesystem developers to play whack-a-mole with when > >users have problems. > > > Ah, but my problem would then not happen always on the same > partition. It would affect others, would not? It needs a busy/dirty filesystem. if the other filesystems are mostly idle, then they are unlikely to trip over the problem. > >>But soon after, it oopses: > > > >Point of note: there is no oops or crash occurring. XFS dumps the > >stack when a corruption occurs to tell use where it was detected > >and then shuts down the filesystem. Your system is still just fine > >apart from not being able to access that filesystem until you > >unmount it, rpeair it and mount it again. > > Ok, true, there is no formal "Oops". > > But no, the system does not remains fine, I had to hit the hardware > reset or power off button to get out. That usually only happens when the root filesystem is shut down and you can't access any of the binaries needed to run the system. Is the filesystem that is shutting down the root? > >>Question. > >> > >>As this always happens on recovery from hibernation, and seeing the message > >>"Corruption of in-memory data detected", could it be that thawing does a bad > >>memory recovery from the swap? I thought that the procedure includes some > >>checksum, but I don't know for sure. > > > >It's the fact that the filesystem si still running and modifying > >state when the snapshot is being taken that results in the snapshot > >image containing an inconsistent snapshot. That then gets loaded > >on thaw and it goes boom. > > But it only happens on the /home partition, not on the email > partition, for instance, also in the same hard disk. /home is typically where all the application have open files and are writing data to. Email partitions are unlikely to have problems because email programs are pretty good about using fsync() to ensure your email doesn't go missing and so aren't dirty at the time of a hibernation. > Unless... there are probably more things writing on the home > partition than on the mail partition any time. *nod* > >>To me, there are two problems: > >> > >> 1) The corruption itself. > >> 2) That xfs_repair fails to repair the filesystem. In fact, I believe > >> it does not detect it! > > > >That's because the filesystem is likely to be consistent on disk. > >The issue is in-memory corruption, not on-disk corruption, like > >the messages are telling us: > > No, the on disk filesystem is not healthy. If I continue using it, > after reboot and using "xfs_repair" several times, it fails again > within a day. After at least one hibernation and thaw cycle, right? FWIW, to rule out other issues with repair, you should probably upgrade to the 3.2.0 xfsprogs release... Cheers, Dave. -- Dave Chinner david@fromorbit.com From robin.listas@gmail.com Thu Jul 3 20:29:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 9A47A29DF8 for ; Thu, 3 Jul 2014 20:29:52 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9CA6E30405F for ; Thu, 3 Jul 2014 18:29:49 -0700 (PDT) X-ASG-Debug-ID: 1404437387-04cbb06536271100001-NocioJ Received: from mail-we0-f177.google.com (mail-we0-f177.google.com [74.125.82.177]) by cuda.sgi.com with ESMTP id by6nXAmenHuXleua (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 03 Jul 2014 18:29:48 -0700 (PDT) X-Barracuda-Envelope-From: robin.listas@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.177 Received: by mail-we0-f177.google.com with SMTP id u56so988887wes.22 for ; Thu, 03 Jul 2014 18:29:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:subject:in-reply-to:message-id:references :user-agent:mime-version:content-type; bh=2nBPpTF701kJS4EBKSBChx6BSu/BaKZm6T9Tqabh85c=; b=SZa3AEUpFNqRniprgCMvumxzkBZ7daMZ96ur/PlW7lW7IDgbfJwFs59lwWAyiC62rK 9bXzBFsfltt0xDpWgsJRViAhsg/HzSB/b22P1r9txA4lE7lp+6upHTd18u/K4wRBvAjk 0dnKxuwMLEaYx5e9OSBP8QqadlsqFhOVGW194bndWDMgEtfmAFdpJU9YKhQgkKTWwpwk TOHl3gTt1H0BeW7ghUyiMqc0RtX2dr2Kh+C7rDe+pBPfLmiae9Ky6RLpgbMahs+7op13 6xwj9nvCjQ9it5r2xHNW9blEhvh5cObXVR/Cdi0Fq13elyngd79mt09PmlP/qJgvfH5q GVZA== X-Received: by 10.194.92.196 with SMTP id co4mr8684073wjb.4.1404437387285; Thu, 03 Jul 2014 18:29:47 -0700 (PDT) Received: from Telcontar.valinor (90.Red-79-150-228.dynamicIP.rima-tde.net. [79.150.228.90]) by mx.google.com with ESMTPSA id i12sm65550940wjr.32.2014.07.03.18.29.45 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Jul 2014 18:29:46 -0700 (PDT) Sender: Carlos Robinson Received: from localhost (localhost [127.0.0.1]) by Telcontar.valinor (Postfix) with ESMTP id DF97960E0E for ; Fri, 4 Jul 2014 03:29:43 +0200 (CEST) X-Virus-Scanned: amavisd-new at valinor Received: from Telcontar.valinor ([127.0.0.1]) by localhost (Telcontar.valinor [127.0.0.1]) (amavisd-new, port 10024) with LMTP id Wu7YMSMDDQwK for ; Fri, 4 Jul 2014 03:29:43 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by Telcontar.valinor (Postfix) with ESMTP id B9CE860D9B for ; Fri, 4 Jul 2014 03:29:43 +0200 (CEST) Date: Fri, 4 Jul 2014 03:29:31 +0200 (CEST) From: "Carlos E. R." X-X-Sender: cer@Telcontar.valinor To: XFS mailing list Subject: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. In-Reply-To: <20140704000426.GX4453@dastard> X-ASG-Orig-Subj: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. Message-ID: References: <20140702120441.GA51757@bfoster.bfoster> <20140703094347.GU4453@dastard> <20140704000426.GX4453@dastard> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Barracuda-Connect: mail-we0-f177.google.com[74.125.82.177] X-Barracuda-Start-Time: 1404437388 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7224 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 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Friday, 2014-07-04 at 10:04 +1000, Dave Chinner wrote: > On Fri, Jul 04, 2014 at 01:34:52AM +0200, Carlos E. R. wrote: >> Ah, but my problem would then not happen always on the same >> partition. It would affect others, would not? > > It needs a busy/dirty filesystem. if the other filesystems are > mostly idle, then they are unlikely to trip over the problem. Right... >> Ok, true, there is no formal "Oops". >> >> But no, the system does not remains fine, I had to hit the hardware >> reset or power off button to get out. > > That usually only happens when the root filesystem is shut down and > you can't access any of the binaries needed to run the system. Is > the filesystem that is shutting down the root? No, it is not. Root is separate and using ext4. The problematic one is /home. What I did, as far I remember, was, when I noticed that home had failed and was read only, to switch to runlevel 1, umount /home (killing the apps that were still using it), then tried to mount it again to replay the log, prior to using xfs-repair on it. Mount hung. ctrl-alt-supr failed, or appeared to fail. So reset button... >> But it only happens on the /home partition, not on the email >> partition, for instance, also in the same hard disk. > > /home is typically where all the application have open files and are > writing data to. > > Email partitions are unlikely to have problems because email > programs are pretty good about using fsync() to ensure your email > doesn't go missing and so aren't dirty at the time of a hibernation. Ok, understood. >> No, the on disk filesystem is not healthy. If I continue using it, >> after reboot and using "xfs_repair" several times, it fails again >> within a day. > > After at least one hibernation and thaw cycle, right? Yes. 3, I think. But there were kernel errors right after boot (XFS_WANT_CORRUPTED_RETURN). > FWIW, to rule out other issues with repair, you should probably > upgrade to the 3.2.0 xfsprogs release... I may try that... I see it is available on http://download.opensuse.org/repositories/filesystems/openSUSE_13.1/, version xfsprogs-3.2.0 Ok, I'll work on it. - -- Cheers, Carlos E. R. (from 13.1 x86_64 "Bottle" at Telcontar) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEARECAAYFAlO2A4cACgkQtTMYHG2NR9UABgCfZm0bbTGbOU80+V7BKyCi9cdB yqAAn16udhFKpvx+ABdb/rplzZV7Kal+ =jaUl -----END PGP SIGNATURE----- From david@fromorbit.com Thu Jul 3 20:40:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 9FCBC29DF8 for ; Thu, 3 Jul 2014 20:40:18 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 378E6AC001 for ; Thu, 3 Jul 2014 18:40:14 -0700 (PDT) X-ASG-Debug-ID: 1404438012-04bdf056667b82b0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id dVWM7zBm8kgOlond for ; Thu, 03 Jul 2014 18:40:12 -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: AgVfAIQFtlN5LHZ8PGdsb2JhbABagw2sbQEBAQEBAQaaVAGBDBcEAQEBATg1hAMBAQU6HCMQCAMYCSUPBSUDBxoTiEHJORcYhViIZE4HhEMFmnWLTIpBgVQrgTEj Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail04.adl6.internode.on.net with ESMTP; 04 Jul 2014 11:10:09 +0930 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1X2sTw-0007YH-Ci; Fri, 04 Jul 2014 11:40:08 +1000 Date: Fri, 4 Jul 2014 11:40:08 +1000 From: Dave Chinner To: "Carlos E. R." Cc: XFS mailing list Subject: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. Message-ID: <20140704014008.GI9508@dastard> X-ASG-Orig-Subj: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. References: <20140702120441.GA51757@bfoster.bfoster> <20140703094347.GU4453@dastard> <20140704000426.GX4453@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: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1404438012 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7224 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header On Fri, Jul 04, 2014 at 03:29:31AM +0200, Carlos E. R. wrote: > On Friday, 2014-07-04 at 10:04 +1000, Dave Chinner wrote: > >On Fri, Jul 04, 2014 at 01:34:52AM +0200, Carlos E. R. wrote: > >>Ok, true, there is no formal "Oops". > >> > >>But no, the system does not remains fine, I had to hit the hardware > >>reset or power off button to get out. > > > >That usually only happens when the root filesystem is shut down and > >you can't access any of the binaries needed to run the system. Is > >the filesystem that is shutting down the root? > > No, it is not. Root is separate and using ext4. The problematic one > is /home. > > > What I did, as far I remember, was, when I noticed that home had > failed and was read only, to switch to runlevel 1, umount /home > (killing the apps that were still using it), then tried to mount it > again to replay the log, prior to using xfs-repair on it. Mount > hung. ctrl-alt-supr failed, or appeared to fail. So reset button... That's a completely different issue to having a shutdown filesystem hang your system. That's a mount problem, and likely a known issue. You need to be specific when describing a problem, otherwise we waste time going down the wrong paths. > >>No, the on disk filesystem is not healthy. If I continue using it, > >>after reboot and using "xfs_repair" several times, it fails again > >>within a day. > > > >After at least one hibernation and thaw cycle, right? > > Yes. 3, I think. Then hibernation has caused the corruption. It may take some time for the corruption to be detected, but there isn't any doubt in my mind that hibernation is the cause of your problems. So, until we have kernel fixes, you'd do best to turn off hibernation. If you can't live with leaving your machine powered up or switching it off, then use suspend-to-ram rather than suspend-to-disk to avoid the problematic snapshot/restore situation.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From robin.listas@gmail.com Thu Jul 3 21:42:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id BC9B029DF8 for ; Thu, 3 Jul 2014 21:42:51 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 99E6E304051 for ; Thu, 3 Jul 2014 19:42:51 -0700 (PDT) X-ASG-Debug-ID: 1404441768-04cbb06536273680001-NocioJ Received: from mail-wi0-f171.google.com (mail-wi0-f171.google.com [209.85.212.171]) by cuda.sgi.com with ESMTP id YBlWDVqIvd8OQnRl (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 03 Jul 2014 19:42:49 -0700 (PDT) X-Barracuda-Envelope-From: robin.listas@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.212.171 X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.171] Received: by mail-wi0-f171.google.com with SMTP id n15so12359303wiw.16 for ; Thu, 03 Jul 2014 19:42:48 -0700 (PDT) X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.171] X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.171] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:subject:in-reply-to:message-id:references :user-agent:mime-version:content-type; bh=2Mb/blo+inCy7Qw5ZpuWD+v0i6wK09RjVfJEtZ8ryxg=; b=yXEctPZbKuxYCXYRIZxttX4dHqRH4K1O1V0qmi6zybChi7DDcNiahNGX7uG952fZtC kPzU4fEwbTAOdVP85tm56DdkdAanNAp4HHAzuDUjffsj7iBUv09xUmibeefci7OQ5QRS K+nVpTQfT4IcDCZGPo3EnmjR/LtFmqCcE27t4G1P+sHCufGjGZ8cQAqX/w4BZ3EOQBt6 noOP2DIbyXXZmR6B9QTyWiJ6VjP7eyx/JN3aHiY4QwMbATp7ZdjNL101BKQhObUVLmCd K9m+Gaxz3mwjKY3KUVLH7bnY4j4toH9xzfCUfW4xQ76o1g0bcCBHGdvEG1/XDmq0W4Ew FC4w== X-Received: by 10.194.89.138 with SMTP id bo10mr8939252wjb.22.1404441768477; Thu, 03 Jul 2014 19:42:48 -0700 (PDT) Received: from Telcontar.valinor (90.Red-79-150-228.dynamicIP.rima-tde.net. [79.150.228.90]) by mx.google.com with ESMTPSA id pq9sm65859103wjc.35.2014.07.03.19.42.46 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Jul 2014 19:42:47 -0700 (PDT) Sender: Carlos Robinson Received: from localhost (localhost [127.0.0.1]) by Telcontar.valinor (Postfix) with ESMTP id 3AD0460E0E for ; Fri, 4 Jul 2014 04:42:45 +0200 (CEST) X-Virus-Scanned: amavisd-new at valinor Received: from Telcontar.valinor ([127.0.0.1]) by localhost (Telcontar.valinor [127.0.0.1]) (amavisd-new, port 10024) with LMTP id hSXoqrRhZp0X for ; Fri, 4 Jul 2014 04:42:45 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by Telcontar.valinor (Postfix) with ESMTP id 1367060D9B for ; Fri, 4 Jul 2014 04:42:44 +0200 (CEST) Date: Fri, 4 Jul 2014 04:42:44 +0200 (CEST) From: "Carlos E. R." X-X-Sender: cer@Telcontar.valinor To: XFS mailing list Subject: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. In-Reply-To: <20140704014008.GI9508@dastard> X-ASG-Orig-Subj: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. Message-ID: References: <20140702120441.GA51757@bfoster.bfoster> <20140703094347.GU4453@dastard> <20140704000426.GX4453@dastard> <20140704014008.GI9508@dastard> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Barracuda-Connect: mail-wi0-f171.google.com[209.85.212.171] X-Barracuda-Start-Time: 1404441769 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7225 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 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Friday, 2014-07-04 at 11:40 +1000, Dave Chinner wrote: > On Fri, Jul 04, 2014 at 03:29:31AM +0200, Carlos E. R. wrote: >> No, it is not. Root is separate and using ext4. The problematic one >> is /home. >> >> >> What I did, as far I remember, was, when I noticed that home had >> failed and was read only, to switch to runlevel 1, umount /home >> (killing the apps that were still using it), then tried to mount it >> again to replay the log, prior to using xfs-repair on it. Mount >> hung. ctrl-alt-supr failed, or appeared to fail. So reset button... > > That's a completely different issue to having a shutdown filesystem > hang your system. That's a mount problem, and likely a known issue. > You need to be specific when describing a problem, otherwise we > waste time going down the wrong paths. Sorry for the misunderstanding. But halt/reboot did hung, even if it was after a failed mount. I was trying to recover the system, remember, and I'm trying to remember what exactly I did do, from memory, not written records. >>>> No, the on disk filesystem is not healthy. If I continue using it, >>>> after reboot and using "xfs_repair" several times, it fails again >>>> within a day. >>> >>> After at least one hibernation and thaw cycle, right? >> >> Yes. 3, I think. > > Then hibernation has caused the corruption. It may take some time > for the corruption to be detected, but there isn't any doubt in my > mind that hibernation is the cause of your problems. Wait. The sequence was: healthy system several hibernation cycles. failure on come back from hibernation, with kernel error: XFS_WANT_CORRUPTED_GOTO. reboot - kernel error messages: XFS_WANT_CORRUPTED_RETURN, which I probably did not see. repair filesytem several hibernation cycles during some hours. failure on come back from hibernation, with kernel error: XFS_WANT_CORRUPTED_GOTO See that there were kernel error messages right after rebooting, which I think I did not see at the time, because had I seen them I would have rebooted again, and I did not. - From the log, already posted: <0.5> 2014-03-15 03:49:42 Telcontar kernel - - - [ 19.173599] XFS (sdd5): Mounting Filesystem <0.5> 2014-03-15 03:49:42 Telcontar kernel - - - [ 19.377918] XFS (sdd5): Starting recovery (logdev: internal) <0.5> 2014-03-15 03:49:42 Telcontar kernel - - - [ 19.747914] XFS (sdd5): Ending recovery (logdev: internal) <3.6> 2014-03-15 03:53:01 Telcontar systemd 4987 - - Starting Default. <3.6> 2014-03-15 03:53:01 Telcontar systemd 4987 - - Reached target Default. <3.6> 2014-03-15 03:53:01 Telcontar systemd 4987 - - Startup finished in 57ms. <3.6> 2014-03-15 03:53:01 Telcontar systemd 1 - - Started User Manager for 9. <0.1> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857523] XFS: Internal error XFS_WANT_CORRUPTED_RETURN at line 350 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_all Then I think I run xfs-repair, which did not complain, and I continued working. Within the day, after 3 hibernations, it failed again with XFS_WANT_CORRUPTED_GOTO, and I decided I had to reboot, backup, reformat, restore. > So, until we have kernel fixes, you'd do best to turn off > hibernation. If you can't live with leaving your machine powered up > or switching it off, then use suspend-to-ram rather than > suspend-to-disk to avoid the problematic snapshot/restore > situation.... Impossible... this is a desktop, not a laptop. Suspend to ram is high risk, even if it works (which I think it doesn't). If the failure is unavoidable, I'll reformat the partition as ext4 instead... which I do not like, but such is life. But before that, I'll try upgrade xfsprogs. - -- Cheers, Carlos E. R. (from 13.1 x86_64 "Bottle" at Telcontar) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEARECAAYFAlO2FKQACgkQtTMYHG2NR9USxgCeOdJeJORl2JpnsnhqtXDj2ZCL 3IIAniMFd9X+ETWr3gVPHYq7SFwIPKSt =WPe7 -----END PGP SIGNATURE----- From robin.listas@gmail.com Thu Jul 3 22:12:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 6EAD329DF8 for ; Thu, 3 Jul 2014 22:12:18 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 359198F8049 for ; Thu, 3 Jul 2014 20:12:15 -0700 (PDT) X-ASG-Debug-ID: 1404443532-04bdf056697bba40001-NocioJ Received: from mail-wg0-f42.google.com (mail-wg0-f42.google.com [74.125.82.42]) by cuda.sgi.com with ESMTP id avjWs4HLQGI9SThZ (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 03 Jul 2014 20:12:13 -0700 (PDT) X-Barracuda-Envelope-From: robin.listas@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.42 Received: by mail-wg0-f42.google.com with SMTP id z12so1037920wgg.25 for ; Thu, 03 Jul 2014 20:12:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:subject:in-reply-to:message-id:references :user-agent:mime-version:content-type; bh=qSPZS91/CGvTotqg0oi2X2wbroYyCoidUVHE9ZBBrDU=; b=aLu5veuT0qHO7VnLAOxi25rO/wg1T9Ne5RVuH7Esf5MuZWKu87uCAt6yaLu94DXaJD ZPzAumsUa9pv3INkL9oStHc0nvzubsEWtsYOpR+A154S6adOtpTsN/szyGKcOtxfTzca NKU+kYRWPil0vJyrG7O5DhpXMiWqW+SNwhbRl0Riipixno60EZUxevcPPqwoHXnXZoxz f8cP6gmMcUVpv1RAunUlzIxVTi04l5aiTFMwBVqgW6o9u8zBPwRibZrsM5yXqlyk0npR y5kamOLeF8+O3b28Xjk+jHjsa+7R82Ub/l0k/s5lEPEePjRsvP/CAAX0o9+Plp+yAks3 G/6A== X-Received: by 10.180.89.143 with SMTP id bo15mr14587101wib.78.1404443531990; Thu, 03 Jul 2014 20:12:11 -0700 (PDT) Received: from Telcontar.valinor (90.Red-79-150-228.dynamicIP.rima-tde.net. [79.150.228.90]) by mx.google.com with ESMTPSA id do5sm73954169wib.16.2014.07.03.20.12.10 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Jul 2014 20:12:11 -0700 (PDT) Sender: Carlos Robinson Received: from localhost (localhost [127.0.0.1]) by Telcontar.valinor (Postfix) with ESMTP id ED25B60E0E for ; Fri, 4 Jul 2014 05:12:08 +0200 (CEST) X-Virus-Scanned: amavisd-new at valinor Received: from Telcontar.valinor ([127.0.0.1]) by localhost (Telcontar.valinor [127.0.0.1]) (amavisd-new, port 10024) with LMTP id vxCaF4Yg-PIn for ; Fri, 4 Jul 2014 05:12:08 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by Telcontar.valinor (Postfix) with ESMTP id C72AC60D9B for ; Fri, 4 Jul 2014 05:12:08 +0200 (CEST) Date: Fri, 4 Jul 2014 05:12:00 +0200 (CEST) From: "Carlos E. R." X-X-Sender: cer@Telcontar.valinor To: XFS mailing list Subject: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. In-Reply-To: X-ASG-Orig-Subj: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. Message-ID: References: <20140702120441.GA51757@bfoster.bfoster> <20140703094347.GU4453@dastard> <20140704000426.GX4453@dastard> <20140704014008.GI9508@dastard> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: mail-wg0-f42.google.com[74.125.82.42] X-Barracuda-Start-Time: 1404443532 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7225 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 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Friday, 2014-07-04 at 04:42 +0200, Carlos E. R. wrote: > On Friday, 2014-07-04 at 11:40 +1000, Dave Chinner wrote: >> So, until we have kernel fixes, you'd do best to turn off >> hibernation. If you can't live with leaving your machine powered up >> or switching it off, then use suspend-to-ram rather than >> suspend-to-disk to avoid the problematic snapshot/restore >> situation.... Forgot to mention: I have been working the same way for years on this same machine, and with the same software versions for some months. Only when I replaced the hard disk that contains home, mail, and some other things, the problem started. The partitions not cloned; I partitioned and formatted fresh (much bigger partitions), with gparted, and copied files over with rsync. - -- Cheers, Carlos E. R. (from 13.1 x86_64 "Bottle" at Telcontar) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEARECAAYFAlO2G4gACgkQtTMYHG2NR9UtpACdFnxw8/nZKAVI/Hy7s2bVF41j /+8AoJLmY2ZuyX+kKeXNzo9/6BOVx4T0 =pZAc -----END PGP SIGNATURE----- From dave@fromorbit.com Fri Jul 4 00:57:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id B74007F37 for ; Fri, 4 Jul 2014 00:57:31 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 2DA05AC001 for ; Thu, 3 Jul 2014 22:57:31 -0700 (PDT) X-ASG-Debug-ID: 1404453448-04cb6c76cf4483e0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id zTx1Oup0nrqfVUvr for ; Thu, 03 Jul 2014 22:57:28 -0700 (PDT) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlpbAA5BtlN5LHZ8PGdsb2JhbABagw2IUqQeAgEBBppWgQ4XBAEBAQE4NYQDAQEFJy8jEAgYMTkDBxQZiEHKBYVwiGVChFUFslcrgTI Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail05.adl6.internode.on.net with ESMTP; 04 Jul 2014 15:27:18 +0930 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1X2wUn-00083B-Ds; Fri, 04 Jul 2014 15:57:17 +1000 Received: from dave by disappointment with local (Exim 4.82_1-5b7a7c0-XX) (envelope-from ) id 1X2wUn-0000cD-D8; Fri, 04 Jul 2014 15:57:17 +1000 From: Dave Chinner To: xfs@oss.sgi.com Cc: arekm@maven.pl Subject: [PATCH 5/6] repair: fix quota inode handling in secondary superblocks Date: Fri, 4 Jul 2014 15:57:14 +1000 X-ASG-Orig-Subj: [PATCH 5/6] repair: fix quota inode handling in secondary superblocks Message-Id: <1404453435-1915-6-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 2.0.0 In-Reply-To: <1404453435-1915-1-git-send-email-david@fromorbit.com> References: <1404453435-1915-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1404453448 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7228 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner Changes to support separate project quota inodes changed the way quota inodes got written to the superblock. The current code is tailored for the needs to the kernel, where the inodes should only be written if certain falgs are set saying a quota type is enabled. Unfortunately, when recovering a corrupt secondary superblock, we need to unconditionally write the quota inode fields after we unconditionally zero the quota flags field. The result of this bug is that the bad quota inode fields cannot be cleared and hence always are reported by bad by repair in subsequent runs. Fix this by directly clearing the quota inodes in the superblock buffers so that we do need to set special flags to get xfs_sb_to_disk() to do the right thing as setting flags leave bad flag values in the superblock instead of bad inode numbers.... Also, when clearing the inode numbers, write them as NULLFSINO rather than 0 as this is what the kernel will write them as if quota is turned off. Signed-off-by: Dave Chinner --- include/libxfs.h | 1 + libxfs/rdwr.c | 4 ++-- repair/agheader.c | 44 +++++++++++++++++++++++++++++--------------- repair/sb.c | 2 ++ repair/scan.c | 1 + 5 files changed, 35 insertions(+), 17 deletions(-) diff --git a/include/libxfs.h b/include/libxfs.h index 7203d79..45a924f 100644 --- a/include/libxfs.h +++ b/include/libxfs.h @@ -759,6 +759,7 @@ bool xfs_dinode_verify(struct xfs_mount *mp, xfs_ino_t ino, /* xfs_sb.h */ #define libxfs_mod_sb xfs_mod_sb #define libxfs_sb_from_disk xfs_sb_from_disk +#define libxfs_sb_quota_from_disk xfs_sb_quota_from_disk #define libxfs_sb_to_disk xfs_sb_to_disk /* xfs_symlink.h */ diff --git a/libxfs/rdwr.c b/libxfs/rdwr.c index c81c82f..e681f2a 100644 --- a/libxfs/rdwr.c +++ b/libxfs/rdwr.c @@ -913,10 +913,10 @@ libxfs_writebufr(xfs_buf_t *bp) } #ifdef IO_DEBUG - printf("%lx: %s: wrote %u bytes, blkno=%llu(%llu), %p\n", + printf("%lx: %s: wrote %u bytes, blkno=%llu(%llu), %p, error %d\n", pthread_self(), __FUNCTION__, bp->b_bcount, (long long)LIBXFS_BBTOOFF64(bp->b_bn), - (long long)bp->b_bn, bp); + (long long)bp->b_bn, bp, error); #endif if (!error) { bp->b_flags |= LIBXFS_B_UPTODATE; diff --git a/repair/agheader.c b/repair/agheader.c index fc5dac9..416dbd8 100644 --- a/repair/agheader.c +++ b/repair/agheader.c @@ -245,13 +245,17 @@ compare_sb(xfs_mount_t *mp, xfs_sb_t *sb) * superblocks, not just the secondary superblocks. */ static int -secondary_sb_wack(xfs_mount_t *mp, xfs_buf_t *sbuf, xfs_sb_t *sb, - xfs_agnumber_t i) +secondary_sb_wack( + struct xfs_mount *mp, + struct xfs_buf *sbuf, + struct xfs_sb *sb, + xfs_agnumber_t i) { - int do_bzero; - int size; - char *ip; - int rval; + struct xfs_dsb *dsb = XFS_BUF_TO_SBP(sbuf); + int do_bzero = 0; + int size; + char *ip; + int rval = 0;; rval = do_bzero = 0; @@ -334,12 +338,18 @@ secondary_sb_wack(xfs_mount_t *mp, xfs_buf_t *sbuf, xfs_sb_t *sb, } /* - * quota inodes and flags in secondary superblocks - * are never set by mkfs. However, they could be set - * in a secondary if a fs with quotas was growfs'ed since - * growfs copies the new primary into the secondaries. + * quota inodes and flags in secondary superblocks are never set by + * mkfs. However, they could be set in a secondary if a fs with quotas + * was growfs'ed since growfs copies the new primary into the + * secondaries. + * + * Also, the in-core inode flags now have different meaning to the + * on-disk flags, and so libxfs_sb_to_disk cannot directly write the + * sb_gquotino/sb_pquotino fields without specific sb_qflags being set. + * Hence we need to zero those fields directly in the sb buffer here. */ - if (sb->sb_inprogress == 1 && sb->sb_uquotino) { + + if (sb->sb_inprogress == 1 && sb->sb_uquotino != NULLFSINO) { if (!no_modify) sb->sb_uquotino = 0; if (sb->sb_versionnum & XR_PART_SECSB_VNMASK || !do_bzero) { @@ -352,9 +362,11 @@ secondary_sb_wack(xfs_mount_t *mp, xfs_buf_t *sbuf, xfs_sb_t *sb, rval |= XR_AG_SB_SEC; } - if (sb->sb_inprogress == 1 && sb->sb_gquotino) { - if (!no_modify) + if (sb->sb_inprogress == 1 && sb->sb_gquotino != NULLFSINO) { + if (!no_modify) { sb->sb_gquotino = 0; + dsb->sb_gquotino = 0; + } if (sb->sb_versionnum & XR_PART_SECSB_VNMASK || !do_bzero) { rval |= XR_AG_SB; do_warn( @@ -365,9 +377,11 @@ secondary_sb_wack(xfs_mount_t *mp, xfs_buf_t *sbuf, xfs_sb_t *sb, rval |= XR_AG_SB_SEC; } - if (sb->sb_inprogress == 1 && sb->sb_pquotino) { - if (!no_modify) + if (sb->sb_inprogress == 1 && sb->sb_pquotino != NULLFSINO) { + if (!no_modify) { sb->sb_pquotino = 0; + dsb->sb_pquotino = 0; + } if (sb->sb_versionnum & XR_PART_SECSB_VNMASK || !do_bzero) { rval |= XR_AG_SB; do_warn( diff --git a/repair/sb.c b/repair/sb.c index 5e0b0f2..bc421cc 100644 --- a/repair/sb.c +++ b/repair/sb.c @@ -138,6 +138,7 @@ find_secondary_sb(xfs_sb_t *rsb) for (i = 0; !done && i < bsize; i += BBSIZE) { c_bufsb = (char *)sb + i; libxfs_sb_from_disk(&bufsb, (xfs_dsb_t *)c_bufsb); + libxfs_sb_quota_from_disk(&bufsb); if (verify_sb(c_bufsb, &bufsb, 0) != XR_OK) continue; @@ -538,6 +539,7 @@ get_sb(xfs_sb_t *sbp, xfs_off_t off, int size, xfs_agnumber_t agno) do_error("%s\n", strerror(error)); } libxfs_sb_from_disk(sbp, buf); + libxfs_sb_quota_from_disk(sbp); rval = verify_sb((char *)buf, sbp, agno == 0); free(buf); diff --git a/repair/scan.c b/repair/scan.c index 1b64d8b..f29ff8d 100644 --- a/repair/scan.c +++ b/repair/scan.c @@ -1496,6 +1496,7 @@ scan_ag( goto out_free_sb; } libxfs_sb_from_disk(sb, XFS_BUF_TO_SBP(sbbuf)); + libxfs_sb_quota_from_disk(sb); agfbuf = libxfs_readbuf(mp->m_dev, XFS_AG_DADDR(mp, agno, XFS_AGF_DADDR(mp)), -- 2.0.0 From dave@fromorbit.com Fri Jul 4 00:57:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 0A0727F3F for ; Fri, 4 Jul 2014 00:57:33 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 872A8AC003 for ; Thu, 3 Jul 2014 22:57:32 -0700 (PDT) X-ASG-Debug-ID: 1404453448-04cb6c76cf4483e0002-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id lNGty9RIn2hDWMKE for ; Thu, 03 Jul 2014 22:57:30 -0700 (PDT) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ak1bAA5BtlN5LHZ8PGdsb2JhbABagw2IUqQeAgEBBptkFwQBAQEBODWEAwEBBVYjEAgYMTkDBxQZiEHJbheFcIhOgQGELQWmQowVK4Ex Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail05.adl6.internode.on.net with ESMTP; 04 Jul 2014 15:27:18 +0930 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1X2wUn-000838-CU; Fri, 04 Jul 2014 15:57:17 +1000 Received: from dave by disappointment with local (Exim 4.82_1-5b7a7c0-XX) (envelope-from ) id 1X2wUn-0000by-Bc; Fri, 04 Jul 2014 15:57:17 +1000 From: Dave Chinner To: xfs@oss.sgi.com Cc: arekm@maven.pl Subject: [PATCH 2/6] xfs_db: write command broken on 64 bit values Date: Fri, 4 Jul 2014 15:57:11 +1000 X-ASG-Orig-Subj: [PATCH 2/6] xfs_db: write command broken on 64 bit values Message-Id: <1404453435-1915-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 2.0.0 In-Reply-To: <1404453435-1915-1-git-send-email-david@fromorbit.com> References: <1404453435-1915-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1404453450 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7228 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner convert_args() has problesm with 64 bit fields because it tries to shift them by 64 bits. The result of doing so is undefined by the C standard, and so results in the unexpected behaviour of the result being being the original value unchanged rather than 0. Hence you can't write 64 bit fields because the code thinks that all values other than 0 are out of range. Signed-off-by: Dave Chinner --- db/write.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/write.c b/db/write.c index ca8bd0f..0157a44 100644 --- a/db/write.c +++ b/db/write.c @@ -565,7 +565,7 @@ convert_arg( return NULL; /* Does the value fit into the range of the destination bitfield? */ - if ((val >> bit_length) > 0) + if (bit_length < 64 && (val >> bit_length) > 0) return NULL; /* * If the length of the field is not a multiple of a byte, push -- 2.0.0 From dave@fromorbit.com Fri Jul 4 00:57:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id CFEA67F37 for ; Fri, 4 Jul 2014 00:57:33 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 4A8C6AC001 for ; Thu, 3 Jul 2014 22:57:33 -0700 (PDT) X-ASG-Debug-ID: 1404453448-04cb6c76cf4483e0003-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id gY9ycpOLRIOckyzA for ; Thu, 03 Jul 2014 22:57:31 -0700 (PDT) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ak5bAA5BtlN5LHZ8PGdsb2JhbABagw2IUqQeAgEBBptkFwQBAQEBODWEAwEBBScvIxAIGDE5AwcUGYhBygWFcIlPhC0Fslcr Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail05.adl6.internode.on.net with ESMTP; 04 Jul 2014 15:27:18 +0930 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1X2wUn-00083A-DX; Fri, 04 Jul 2014 15:57:17 +1000 Received: from dave by disappointment with local (Exim 4.82_1-5b7a7c0-XX) (envelope-from ) id 1X2wUn-0000c8-Cl; Fri, 04 Jul 2014 15:57:17 +1000 From: Dave Chinner To: xfs@oss.sgi.com Cc: arekm@maven.pl Subject: [PATCH 4/6] libxfs: reused invalidated buffers leak state and data Date: Fri, 4 Jul 2014 15:57:13 +1000 X-ASG-Orig-Subj: [PATCH 4/6] libxfs: reused invalidated buffers leak state and data Message-Id: <1404453435-1915-5-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 2.0.0 In-Reply-To: <1404453435-1915-1-git-send-email-david@fromorbit.com> References: <1404453435-1915-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1404453451 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7228 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner When rebuilding a bad directory, repair first truncates away all the blocks in the directory, good or bad. This removes blocks from the bmap btree, and when those blocks are freed the bmap btree code invalidates them. This marks the buffers LIBXFS_B_STALE so that we don't try to write stale data from that buffer at a later time. However, when rebuilding the directory, blocks may get reallocated and we reuse the underlying buffers. This has two problems. The first is that if the buffer was previously detected as having a verifier error (i.e. an error that is leading to the block being freed and the buffer being invalidated) then the error might still be held in b_error. Hence the libxfs code needs to ensure that b_error does not leak from one buffer usage context to another after invalidation. The second problem is that when new data is written into a buffer, it no longer has stale contents. Hence when we write the buffer, we need to clear the LIBXFS_B_STALE flag to ensure that the new data gets written. Signed-off-by: Dave Chinner --- libxfs/rdwr.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libxfs/rdwr.c b/libxfs/rdwr.c index 981f2ba..c81c82f 100644 --- a/libxfs/rdwr.c +++ b/libxfs/rdwr.c @@ -632,6 +632,12 @@ libxfs_putbuf(xfs_buf_t *bp) pthread_mutex_unlock(&bp->b_lock); } } + /* + * ensure that any errors on this use of the buffer don't carry + * over to the next user. + */ + bp->b_error = 0; + cache_node_put(libxfs_bcache, (struct cache_node *)bp); } @@ -928,6 +934,7 @@ libxfs_writebuf_int(xfs_buf_t *bp, int flags) * subsequent reads after this write from seeing stale errors. */ bp->b_error = 0; + bp->b_flags &= ~LIBXFS_B_STALE; bp->b_flags |= (LIBXFS_B_DIRTY | flags); return 0; } @@ -946,6 +953,7 @@ libxfs_writebuf(xfs_buf_t *bp, int flags) * subsequent reads after this write from seeing stale errors. */ bp->b_error = 0; + bp->b_flags &= ~LIBXFS_B_STALE; bp->b_flags |= (LIBXFS_B_DIRTY | flags); libxfs_putbuf(bp); return 0; -- 2.0.0 From dave@fromorbit.com Fri Jul 4 00:57:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 633F67F37 for ; Fri, 4 Jul 2014 00:57:34 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id EE4A1AC002 for ; Thu, 3 Jul 2014 22:57:33 -0700 (PDT) X-ASG-Debug-ID: 1404453450-04bdf056697c18f0002-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id aHAOhKTivz09wRpU for ; Thu, 03 Jul 2014 22:57:32 -0700 (PDT) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ak5bAA5BtlN5LHZ8PGdsb2JhbABagw2IUqQeAgEBBptkFwQBAQEBODWEAwEBBScvIxAIGDE5AwcUGYhBygWFcI18BbJXKw Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail05.adl6.internode.on.net with ESMTP; 04 Jul 2014 15:27:18 +0930 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1X2wUn-00083C-EG; Fri, 04 Jul 2014 15:57:17 +1000 Received: from dave by disappointment with local (Exim 4.82_1-5b7a7c0-XX) (envelope-from ) id 1X2wUn-0000cI-DW; Fri, 04 Jul 2014 15:57:17 +1000 From: Dave Chinner To: xfs@oss.sgi.com Cc: arekm@maven.pl Subject: [PATCH 6/6] repair: get rid of BADFSINO Date: Fri, 4 Jul 2014 15:57:15 +1000 X-ASG-Orig-Subj: [PATCH 6/6] repair: get rid of BADFSINO Message-Id: <1404453435-1915-7-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 2.0.0 In-Reply-To: <1404453435-1915-1-git-send-email-david@fromorbit.com> References: <1404453435-1915-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1404453451 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7228 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner When we find a bad dirent, we "clear" the inode the inode number by writing BADFSINO to the inode number in the entry: #define BADFSINO ((xfs_ino_t)0xfeffffffffffffffULL) We then capture this bad inode number later in the same function either in the same pass or in a later phase and junk the entry. When we junk the entry, we write a "/" over the first character of the dirent name, which is then detected up later by the directory rebuild and ignored. The issue with this is that the directory buffer can be written to disk between the dirent being marked with BADFSINO and the directory rebuild processing in phase 6, resulting in the directory block verifier firing this error: Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT Metadata corruption detected at block 0x11fbb698/0x1000 libxfs_writebufr: write verifer failed on bno 0x11fbb698/0x1000 And so will not write the *corrupt block* to disk. The result is that we don't repair a corruption in the directory block correctly and subsequent repair runs continue to find problems with the directory. We really don't need both BADFSINO *and* overwriting the dirent name with "/" to mark an entry as junked. They both mean exactly the same thing, so get rid of BADFSINO and only use the name junking to mark dirents as bad. This prevents the directory data block verifier from triggering on bad inode numbers, and so the later reread of the block will find the junked entries correctly. Signed-off-by: Dave Chinner --- repair/dir2.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/repair/dir2.c b/repair/dir2.c index 14c1435..f32bba7 100644 --- a/repair/dir2.c +++ b/repair/dir2.c @@ -28,13 +28,6 @@ #include "progress.h" /* - * Tag bad directory entries with this. - * We can't tag them with -1 since that will look like a - * data_unused_t instead of a data_entry_t. - */ -#define BADFSINO ((xfs_ino_t)0xfeffffffffffffffULL) - -/* * Known bad inode list. These are seen when the leaf and node * block linkages are incorrect. */ @@ -1314,7 +1307,7 @@ process_dir2_data( * Conditions must either set clearino to zero or set * clearreason why it's being cleared. */ - if (!ino_discovery && ent_ino == BADFSINO) { + if (!ino_discovery && dep->name[0] == '/') { /* * Don't do a damned thing. We already found this * (or did it ourselves) during phase 3. @@ -1401,8 +1394,7 @@ _("entry at block %u offset %" PRIdPTR " in directory inode %" PRIu64 do_warn( _("\tclearing inode number in entry at offset %" PRIdPTR "...\n"), (intptr_t)ptr - (intptr_t)d); - dep->inumber = cpu_to_be64(BADFSINO); - ent_ino = BADFSINO; + dep->name[0] = '/'; *dirty = 1; } else { do_warn( @@ -1415,7 +1407,7 @@ _("\twould clear inode number in entry at offset %" PRIdPTR "...\n"), * discovery is turned on). Otherwise, we'd complain a lot * during phase 4. */ - junkit = ent_ino == BADFSINO; + junkit = dep->name[0] == '/'; nm_illegal = namecheck((char *)dep->name, dep->namelen); if (ino_discovery && nm_illegal) { do_warn( @@ -1424,14 +1416,15 @@ _("entry at block %u offset %" PRIdPTR " in directory inode %" PRIu64 " has ille dep->namelen, dep->namelen, dep->name); junkit = 1; } + /* - * Now we can mark entries with BADFSINO's bad. + * Ensure we write back bad entries for later processing */ - if (!no_modify && ent_ino == BADFSINO) { - dep->name[0] = '/'; + if (!no_modify && dep->name[0] == '/') { *dirty = 1; junkit = 0; } + /* * Special .. entry processing. */ -- 2.0.0 From dave@fromorbit.com Fri Jul 4 00:57:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 6A5157F37 for ; Fri, 4 Jul 2014 00:57:35 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id D82E6AC001 for ; Thu, 3 Jul 2014 22:57:34 -0700 (PDT) X-ASG-Debug-ID: 1404453452-04cb6c76d24483f0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id joxSZFp4rkEf87on for ; Thu, 03 Jul 2014 22:57:32 -0700 (PDT) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ak9bAA5BtlN5LHZ8PGdsb2JhbABagw2IUqQeAgEBBptkFwQBAQEBODWEAwEBBScvIxAIGDEhGAMHFBmILgMQww8NhmmFcIcKgVCFIgWYdo94iWkrgTECHgY Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail05.adl6.internode.on.net with ESMTP; 04 Jul 2014 15:27:18 +0930 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1X2wUn-000837-Bv; Fri, 04 Jul 2014 15:57:17 +1000 Received: from dave by disappointment with local (Exim 4.82_1-5b7a7c0-XX) (envelope-from ) id 1X2wUn-0000bt-B8; Fri, 04 Jul 2014 15:57:17 +1000 From: Dave Chinner To: xfs@oss.sgi.com Cc: arekm@maven.pl Subject: [PATCH 1/6] repair: support more than 25 ACLs Date: Fri, 4 Jul 2014 15:57:10 +1000 X-ASG-Orig-Subj: [PATCH 1/6] repair: support more than 25 ACLs Message-Id: <1404453435-1915-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 2.0.0 In-Reply-To: <1404453435-1915-1-git-send-email-david@fromorbit.com> References: <1404453435-1915-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1404453452 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests=MAILTO_TO_SPAM_ADDR X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7228 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 MAILTO_TO_SPAM_ADDR URI: Includes a link to a likely spammer email From: Dave Chinner v5 superblock supports many more than 25 ACLs on an inode, but xfs_repair still thinks that the maximum is 25. This slipped through becase the reapir code does not share any of the kernel side ACL code in libxfs, and instead has all it's own internal ACL definitions. Fix the repair code to support more than 25 ACLs and update the ACL definitions to match the kernel definitions. In doing so, this tickles a off-by-one bug on remote attribute maximum sizes that is already fixed in the kernel code. So in addition to fixing the repair code, this patch pulls in parts of the following kernel commits: bba719b5 xfs: fix off-by-one error in xfs_attr3_rmt_verify 0a8aa193 xfs: increase number of ACL entries for V5 superblocks Reported-by: Michael L. Semon Tested-by: Michael L. Semon Signed-off-by: Dave Chinner --- libxfs/xfs_attr_remote.c | 2 +- repair/attr_repair.c | 73 ++++++++++++++++++++++++++++++------------------ repair/attr_repair.h | 46 +++++++++++++++++++++--------- 3 files changed, 80 insertions(+), 41 deletions(-) diff --git a/libxfs/xfs_attr_remote.c b/libxfs/xfs_attr_remote.c index 5cf5c73..08b983b 100644 --- a/libxfs/xfs_attr_remote.c +++ b/libxfs/xfs_attr_remote.c @@ -85,7 +85,7 @@ xfs_attr3_rmt_verify( if (be32_to_cpu(rmt->rm_bytes) > fsbsize - sizeof(*rmt)) return false; if (be32_to_cpu(rmt->rm_offset) + - be32_to_cpu(rmt->rm_bytes) >= XATTR_SIZE_MAX) + be32_to_cpu(rmt->rm_bytes) > XATTR_SIZE_MAX) return false; if (rmt->rm_owner == 0) return false; diff --git a/repair/attr_repair.c b/repair/attr_repair.c index 5dd7e5f..a27a3ec 100644 --- a/repair/attr_repair.c +++ b/repair/attr_repair.c @@ -25,7 +25,7 @@ #include "protos.h" #include "dir2.h" -static int xfs_acl_valid(xfs_acl_disk_t *daclp); +static int xfs_acl_valid(struct xfs_mount *mp, struct xfs_acl *daclp); static int xfs_mac_valid(xfs_mac_label_t *lp); /* @@ -734,11 +734,15 @@ verify_da_path(xfs_mount_t *mp, * If value is non-zero, then a remote attribute is being passed in */ static int -valuecheck(char *namevalue, char *value, int namelen, int valuelen) +valuecheck( + struct xfs_mount *mp, + char *namevalue, + char *value, + int namelen, + int valuelen) { /* for proper alignment issues, get the structs and memmove the values */ xfs_mac_label_t macl; - xfs_acl_t thisacl; void *valuep; int clearit = 0; @@ -746,18 +750,23 @@ valuecheck(char *namevalue, char *value, int namelen, int valuelen) (strncmp(namevalue, SGI_ACL_DEFAULT, SGI_ACL_DEFAULT_SIZE) == 0)) { if (value == NULL) { - memset(&thisacl, 0, sizeof(xfs_acl_t)); - memmove(&thisacl, namevalue+namelen, valuelen); - valuep = &thisacl; + valuep = malloc(valuelen); + if (!valuep) + do_error(_("No memory for ACL check!\n")); + memcpy(valuep, namevalue + namelen, valuelen); } else valuep = value; - if (xfs_acl_valid((xfs_acl_disk_t *)valuep) != 0) { + if (xfs_acl_valid(mp, valuep) != 0) { clearit = 1; do_warn( _("entry contains illegal value in attribute named SGI_ACL_FILE " "or SGI_ACL_DEFAULT\n")); } + + if (valuep != value) + free(valuep); + } else if (strncmp(namevalue, SGI_MAC_FILE, SGI_MAC_FILE_SIZE) == 0) { if (value == NULL) { memset(&macl, 0, sizeof(xfs_mac_label_t)); @@ -800,6 +809,7 @@ valuecheck(char *namevalue, char *value, int namelen, int valuelen) */ static int process_shortform_attr( + struct xfs_mount *mp, xfs_ino_t ino, xfs_dinode_t *dip, int *repair) @@ -904,7 +914,7 @@ process_shortform_attr( /* Only check values for root security attributes */ if (currententry->flags & XFS_ATTR_ROOT) - junkit = valuecheck((char *)¤tentry->nameval[0], + junkit = valuecheck(mp, (char *)¤tentry->nameval[0], NULL, currententry->namelen, currententry->valuelen); @@ -1039,6 +1049,7 @@ rmtval_get(xfs_mount_t *mp, xfs_ino_t ino, blkmap_t *blkmap, static int process_leaf_attr_local( + struct xfs_mount *mp, xfs_attr_leafblock_t *leaf, int i, xfs_attr_leaf_entry_t *entry, @@ -1076,7 +1087,7 @@ process_leaf_attr_local( /* Only check values for root security attributes */ if (entry->flags & XFS_ATTR_ROOT) { - if (valuecheck((char *)&local->nameval[0], NULL, + if (valuecheck(mp, (char *)&local->nameval[0], NULL, local->namelen, be16_to_cpu(local->valuelen))) { do_warn( _("bad security value for attribute entry %d in attr block %u, inode %" PRIu64 "\n"), @@ -1134,7 +1145,7 @@ process_leaf_attr_remote( i, ino); goto bad_free_out; } - if (valuecheck((char *)&remotep->name[0], value, remotep->namelen, + if (valuecheck(mp, (char *)&remotep->name[0], value, remotep->namelen, be32_to_cpu(remotep->valuelen))) { do_warn( _("remote attribute value check failed for entry %d, inode %" PRIu64 "\n"), @@ -1216,15 +1227,15 @@ process_leaf_attr_block( break; /* got an overlap */ } - if (entry->flags & XFS_ATTR_LOCAL) - thissize = process_leaf_attr_local(leaf, i, entry, + if (entry->flags & XFS_ATTR_LOCAL) + thissize = process_leaf_attr_local(mp, leaf, i, entry, last_hashval, da_bno, ino); else thissize = process_leaf_attr_remote(leaf, i, entry, last_hashval, da_bno, ino, mp, blkmap); if (thissize < 0) { - clearit = 1; + clearit = 1; break; } @@ -1608,23 +1619,27 @@ process_longform_attr( static int -xfs_acl_from_disk(struct xfs_acl **aclp, struct xfs_acl_disk *dacl) +xfs_acl_from_disk( + struct xfs_mount *mp, + struct xfs_icacl **aclp, + struct xfs_acl *dacl) { + struct xfs_icacl *acl; + struct xfs_icacl_entry *ace; + struct xfs_acl_entry *dace; int count; - xfs_acl_t *acl; - xfs_acl_entry_t *ace; - xfs_acl_entry_disk_t *dace, *end; + int i; count = be32_to_cpu(dacl->acl_cnt); - if (count > XFS_ACL_MAX_ENTRIES) { + if (count > XFS_ACL_MAX_ENTRIES(mp)) { do_warn(_("Too many ACL entries, count %d\n"), count); *aclp = NULL; return EINVAL; } - end = &dacl->acl_entry[0] + count; - acl = malloc((int)((char *)end - (char *)dacl)); + acl = malloc(sizeof(struct xfs_icacl) + + count * sizeof(struct xfs_icacl_entry)); if (!acl) { do_warn(_("cannot malloc enough for ACL attribute\n")); do_warn(_("SKIPPING this ACL\n")); @@ -1633,8 +1648,10 @@ xfs_acl_from_disk(struct xfs_acl **aclp, struct xfs_acl_disk *dacl) } acl->acl_cnt = count; - ace = &acl->acl_entry[0]; - for (dace = &dacl->acl_entry[0]; dace < end; ace++, dace++) { + for (i = 0; i < count; i++) { + ace = &acl->acl_entry[i]; + dace = &dacl->acl_entry[i]; + ace->ae_tag = be32_to_cpu(dace->ae_tag); ace->ae_id = be32_to_cpu(dace->ae_id); ace->ae_perm = be16_to_cpu(dace->ae_perm); @@ -1667,7 +1684,7 @@ process_attributes( if (aformat == XFS_DINODE_FMT_LOCAL) { ASSERT(be16_to_cpu(asf->hdr.totsize) <= XFS_DFORK_ASIZE(dip, mp)); - err = process_shortform_attr(ino, dip, repair); + err = process_shortform_attr(mp, ino, dip, repair); } else if (aformat == XFS_DINODE_FMT_EXTENTS || aformat == XFS_DINODE_FMT_BTREE) { err = process_longform_attr(mp, ino, dip, blkmap, @@ -1686,17 +1703,19 @@ process_attributes( * Validate an ACL */ static int -xfs_acl_valid(xfs_acl_disk_t *daclp) +xfs_acl_valid( + struct xfs_mount *mp, + struct xfs_acl *daclp) { - xfs_acl_t *aclp = NULL; - xfs_acl_entry_t *entry, *e; + struct xfs_icacl *aclp = NULL; + struct xfs_icacl_entry *entry, *e; int user = 0, group = 0, other = 0, mask = 0, mask_required = 0; int i, j; if (daclp == NULL) goto acl_invalid; - switch (xfs_acl_from_disk(&aclp, daclp)) { + switch (xfs_acl_from_disk(mp, &aclp, daclp)) { case ENOMEM: return 0; case EINVAL: diff --git a/repair/attr_repair.h b/repair/attr_repair.h index f42536a..0d0c62c 100644 --- a/repair/attr_repair.h +++ b/repair/attr_repair.h @@ -37,29 +37,49 @@ typedef __int32_t xfs_acl_type_t; typedef __int32_t xfs_acl_tag_t; typedef __int32_t xfs_acl_id_t; -typedef struct xfs_acl_entry { +/* + * "icacl" = in-core ACL. There is no equivalent in the XFS kernel code, + * so they are magic names just for repair. The "acl" types are what the kernel + * code uses for the on-disk format names, so use them here too for the on-disk + * ACL format definitions. + */ +struct xfs_icacl_entry { xfs_acl_tag_t ae_tag; xfs_acl_id_t ae_id; xfs_acl_perm_t ae_perm; -} xfs_acl_entry_t; +}; -#define XFS_ACL_MAX_ENTRIES 25 -typedef struct xfs_acl { - __int32_t acl_cnt; - xfs_acl_entry_t acl_entry[XFS_ACL_MAX_ENTRIES]; -} xfs_acl_t; +struct xfs_icacl { + __int32_t acl_cnt; + struct xfs_icacl_entry acl_entry[0]; +}; -typedef struct xfs_acl_entry_disk { +struct xfs_acl_entry { __be32 ae_tag; __be32 ae_id; __be16 ae_perm; -} xfs_acl_entry_disk_t; + __be16 ae_pad; +}; -typedef struct xfs_acl_disk { - __be32 acl_cnt; - xfs_acl_entry_disk_t acl_entry[XFS_ACL_MAX_ENTRIES]; -} xfs_acl_disk_t; +struct xfs_acl { + __be32 acl_cnt; + struct xfs_acl_entry acl_entry[0]; +}; +/* + * The number of ACL entries allowed is defined by the on-disk format. + * For v4 superblocks, that is limited to 25 entries. For v5 superblocks, it is + * limited only by the maximum size of the xattr that stores the information. + */ +#define XFS_ACL_MAX_ENTRIES(mp) \ + (xfs_sb_version_hascrc(&mp->m_sb) \ + ? (XATTR_SIZE_MAX - sizeof(struct xfs_acl)) / \ + sizeof(struct xfs_acl_entry) \ + : 25) + +#define XFS_ACL_MAX_SIZE(mp) \ + (sizeof(struct xfs_acl) + \ + sizeof(struct xfs_acl_entry) * XFS_ACL_MAX_ENTRIES((mp))) #define SGI_ACL_FILE "SGI_ACL_FILE" #define SGI_ACL_DEFAULT "SGI_ACL_DEFAULT" -- 2.0.0 From dave@fromorbit.com Fri Jul 4 00:57:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id F3BAF7F63 for ; Fri, 4 Jul 2014 00:57:35 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id E5D21304048 for ; Thu, 3 Jul 2014 22:57:32 -0700 (PDT) X-ASG-Debug-ID: 1404453450-04bdf056697c18f0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id qpXiuFTIsIPYPooB for ; Thu, 03 Jul 2014 22:57:31 -0700 (PDT) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkJbAA5BtlN5LHZ8PGdsb2JhbABagw2IUqQeAgEBBptkFwQBAQEBODWEYCMYgQIDB4huygWFcIlPhC0FsEWCEis Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail05.adl6.internode.on.net with ESMTP; 04 Jul 2014 15:27:18 +0930 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1X2wUn-000836-BU; Fri, 04 Jul 2014 15:57:17 +1000 Received: from dave by disappointment with local (Exim 4.82_1-5b7a7c0-XX) (envelope-from ) id 1X2wUn-0000bq-AK; Fri, 04 Jul 2014 15:57:17 +1000 From: Dave Chinner To: xfs@oss.sgi.com Cc: arekm@maven.pl Subject: [PATCH 0/6] xfsprogs: fixes for 3.2.1 Date: Fri, 4 Jul 2014 15:57:09 +1000 X-ASG-Orig-Subj: [PATCH 0/6] xfsprogs: fixes for 3.2.1 Message-Id: <1404453435-1915-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 2.0.0 X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1404453450 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7228 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi folks, This is the current list of patches I have outstanding for xfsprogs. Several of these are critical for a 3.2.1 release as they result in xfs_repair failing to repair filesystems correctly. These have been tested on several complex filesytems that broke reapir in the 3.2.0 release, as well as all the usual xfstests testing. Comments welcome. -Dave. From dave@fromorbit.com Fri Jul 4 01:02:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 02C057F3F for ; Fri, 4 Jul 2014 01:02:35 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 040168F8040 for ; Thu, 3 Jul 2014 23:02:31 -0700 (PDT) X-ASG-Debug-ID: 1404453749-04cb6c76d14486d0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id tTOxferb0dzdU5GD for ; Thu, 03 Jul 2014 23:02:30 -0700 (PDT) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ak5bAA5BtlN5LHZ8PGdsb2JhbABagw2IUqQeAgEBBptkFwQBAQEBODWEAwEBBScvIxAIGDE5AwcUGYhBygWFcIlPhC0Fslcr Received: from ppp121-44-118-124.lns20.syd6.internode.on.net (HELO dastard) ([121.44.118.124]) by ipmail05.adl6.internode.on.net with ESMTP; 04 Jul 2014 15:27:18 +0930 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1X2wUn-000839-D9; Fri, 04 Jul 2014 15:57:17 +1000 Received: from dave by disappointment with local (Exim 4.82_1-5b7a7c0-XX) (envelope-from ) id 1X2wUn-0000c3-C9; Fri, 04 Jul 2014 15:57:17 +1000 From: Dave Chinner To: xfs@oss.sgi.com Cc: arekm@maven.pl Subject: [PATCH 3/6] repair: handle directory block corruption in phase 6 Date: Fri, 4 Jul 2014 15:57:12 +1000 X-ASG-Orig-Subj: [PATCH 3/6] repair: handle directory block corruption in phase 6 Message-Id: <1404453435-1915-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 2.0.0 In-Reply-To: <1404453435-1915-1-git-send-email-david@fromorbit.com> References: <1404453435-1915-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1404453749 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7228 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner This should only occur in no-modify mode, but when we fail to find the last extent in a directory btree due to corruption we need to trash the directory if it's the first data block we find the error on. That is because there is nothing to recover from the directory, and if we try to scan it xfs_reapir segv's because nothing has been read from disk. Also catch a memory allocation failure in this code, too. Signed-off-by: Dave Chinner --- repair/phase6.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/repair/phase6.c b/repair/phase6.c index 9b10f16..47ecad4 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -2179,7 +2179,7 @@ longform_dir2_entry_check(xfs_mount_t *mp, freetab = malloc(FREETAB_SIZE(ip->i_d.di_size / mp->m_dirblksize)); if (!freetab) { do_error( - _("malloc failed in longform_dir2_entry_check (%" PRId64 " bytes)\n"), +_("malloc failed in longform_dir2_entry_check (%" PRId64 " bytes)\n"), FREETAB_SIZE(ip->i_d.di_size / mp->m_dirblksize)); exit(1); } @@ -2191,6 +2191,11 @@ longform_dir2_entry_check(xfs_mount_t *mp, } num_bps = freetab->naents; bplist = calloc(num_bps, sizeof(struct xfs_buf*)); + if (!bplist) + do_error( +_("calloc failed in longform_dir2_entry_check (%zu bytes)\n"), + num_bps * sizeof(struct xfs_buf*)); + /* is this a block, leaf, or node directory? */ libxfs_dir2_isblock(NULL, ip, &isblock); libxfs_dir2_isleaf(NULL, ip, &isleaf); @@ -2203,8 +2208,18 @@ longform_dir2_entry_check(xfs_mount_t *mp, int error; next_da_bno = da_bno + mp->m_dirblkfsbs - 1; - if (bmap_next_offset(NULL, ip, &next_da_bno, XFS_DATA_FORK)) + if (bmap_next_offset(NULL, ip, &next_da_bno, XFS_DATA_FORK)) { + /* + * if this is the first block, there isn't anything we + * can recover so we just trash it. + */ + if (da_bno == 0) { + fixit++; + goto out_fix; + } break; + } + db = xfs_dir2_da_to_db(mp, da_bno); if (db >= num_bps) { /* more data blocks than expected */ -- 2.0.0 From bounce-112652-6905444-192212-16160@emmsrv.com Fri Jul 4 01:57:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.2 required=5.0 tests=HTML_MESSAGE,MIME_HTML_ONLY, T_DKIM_INVALID,T_REMOTE_IMAGE autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 394367F3F for ; Fri, 4 Jul 2014 01:57:58 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id A59EEAC002 for ; Thu, 3 Jul 2014 23:57:54 -0700 (PDT) X-ASG-Debug-ID: 1404457069-04cb6c76d244a090001-NocioJ Received: from smtp-vip1.emmsrv.com (177-220-193-144-stc-b.idccorp.net.br [177.220.193.144]) by cuda.sgi.com with ESMTP id 2tRYNC861vSVzeY4 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 03 Jul 2014 23:57:51 -0700 (PDT) X-Barracuda-Envelope-From: bounce-112652-6905444-192212-16160@emmsrv.com X-Barracuda-Apparent-Source-IP: 177.220.193.144 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=emmsrv.com; s=default; h=Content-Type:Content-Transfer-Encoding:MIME-Version:List-Unsubscribe:Sender:Message-ID:Subject:Reply-to:From:To:Date; bh=6/wc4grfiWMC9M7DRlo8xsXXKkCshQD8EG7J+mtFBdg=; b=fOXmzQlXjE5YXyK0ciozHe5KEyrA/xZ6rQ+6y0O4KWzFtqjvjgUFNo+X2qJ+WB8GqXtbuVsYmx2wM4XmUwtgcAmuvtq499WlO5Ak9XnoBAmzyROBr6Kx98seCGf/1pRcR6sBvqyk53ps3g30V7SDkk7kbT4tvl5nx//ik+Rkuek=; Received: from [216.70.116.37] (port=47374 helo=sistema.emmilia.com.br) by smtp-vip1.emmsrv.com with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.82) (envelope-from ) id 1X2xRT-00035m-05 for xfs@oss.sgi.com; Fri, 04 Jul 2014 03:57:55 -0300 Date: Fri, 4 Jul 2014 03:57:48 -0300 To: "xfs@oss.sgi.com" From: Carlos Pedrollo Corretor Foxter Reply-To: Carlos Pedrollo Corretor Foxter Subject: =?utf-8?Q?Oportunidade_=C3=BAnica:_MedPlex_-_Complexo_M=C3=A9dico_Cyrela_?= =?utf-8?Q?Goldsztein?= Message-ID: <6bbe75fc2ed8ccd61fec29c081f6fc9a@sistema.emmilia.com.br> X-ASG-Orig-Subj: =?utf-8?Q?Oportunidade_=C3=BAnica:_MedPlex_-_Complexo_M=C3=A9dico_Cyrela_?= =?utf-8?Q?Goldsztein?= X-Priority: 3 Sender: X-Mailer: Emmilia X-Complaints-To: abuso@emmsrv.com List-Unsubscribe: X-MessageID: 174-qw2-eGZzQG9zcy5zZ2kuY29t-1hy-tz-rs X-Report-Abuse: X-SMTPAPI: {"unique_args":{"abuse-id":"174-qw2-eGZzQG9zcy5zZ2kuY29t-1hy-tz-rs"}, "category":"campaign"} MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="utf-8" X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - smtp-vip1.emmsrv.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - emmsrv.com X-Get-Message-Sender-Via: smtp-vip1.emmsrv.com: authenticated_id: contato@emmsrv.com X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Connect: 177-220-193-144-stc-b.idccorp.net.br[177.220.193.144] X-Barracuda-Start-Time: 1404457070 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-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.60 X-Barracuda-Spam-Status: No, SCORE=2.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA275b_HL, DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE, MIME_HTML_ONLY, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7229 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 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.00 HTML_MESSAGE BODY: HTML included in message 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 2.50 BSF_SC0_SA275b_HL Custom Rule SA275b_HL =0A=0A=0A= =0A=0A=0A=0A =0A
= =0A =0A =0A =
ver no navegador |
=0A =0A =0A
descadastrar=0A =
=0A = =0A = =0A = =0A = =0A
=0A = 3D"Encaminhar"= =0A =0A 3D"Facebook"=0A =0A = 3D"Twitter"=0A =
= =0A
=0A
=0A

Excelente oportunidade para investidores e profissionais da sa&uacut= e;de.

=0A

Complexo imobilia= rio da area medica, único em Porto Alegre.

=0A

Pré-l= ançamento Cyrela Goldsztein do mais revolucionário e moderno = Empreendimento de alto padr&ati= lde;o, voltado para a area medica em Porto Alegre. O= MedPlex reunirá num só local: clínicas, <= span style=3D"text-align: justify;">consultórios, salas e laborat&oa= cute;rios, oferecendo = ; recursos e serviços de Conveniência, Recepção, Segurança, Manutenção, Condom&= iacute;nio, Auditór= io, Hotelaria e Estacionamento. 

=0A

Assegure preferencia para opção de compra no lan&cce= dil;amento com Corretor Carlos da Foxter (51) 9478-8448   ou responda este e-mail com seu nome e telefone que lhe contataremos.

=0A
=0A=0A =0A
=0A = = =0A =0A =0A
xfs@oss.sgi.com
=0A =0A
=0A descadastrar | denunciar abuso=0A =
=0A
=0A=0A=0A= 3D"."=0A=0A=0A From bfoster@redhat.com Fri Jul 4 07:32:04 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 85DC97F3F for ; Fri, 4 Jul 2014 07:32:04 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 0303EAC001 for ; Fri, 4 Jul 2014 05:32:00 -0700 (PDT) X-ASG-Debug-ID: 1404477115-04cbb06535285020001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id GBChXwXPS5G35Mhj (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 04 Jul 2014 05:31:56 -0700 (PDT) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s64CVqAT003074 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 4 Jul 2014 08:31:52 -0400 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s64CVpFV013918; Fri, 4 Jul 2014 08:31:51 -0400 Received: by bfoster.bfoster (Postfix, from userid 1000) id CF9A31223EB; Fri, 4 Jul 2014 08:40:49 -0400 (EDT) Date: Fri, 4 Jul 2014 08:40:49 -0400 From: Brian Foster To: Dave Chinner Cc: "Carlos E. R." , XFS mailing list Subject: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. Message-ID: <20140704124049.GB12151@bfoster.bfoster> X-ASG-Orig-Subj: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. References: <20140702120441.GA51757@bfoster.bfoster> <20140703094347.GU4453@dastard> <20140704000426.GX4453@dastard> <20140704014008.GI9508@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140704014008.GI9508@dastard> User-Agent: Mutt/1.5.23 (2014-03-12) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1404477116 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-BRTS-Status: 1 On Fri, Jul 04, 2014 at 11:40:08AM +1000, Dave Chinner wrote: > On Fri, Jul 04, 2014 at 03:29:31AM +0200, Carlos E. R. wrote: > > On Friday, 2014-07-04 at 10:04 +1000, Dave Chinner wrote: > > >On Fri, Jul 04, 2014 at 01:34:52AM +0200, Carlos E. R. wrote: > > >>Ok, true, there is no formal "Oops". > > >> > > >>But no, the system does not remains fine, I had to hit the hardware > > >>reset or power off button to get out. > > > > > >That usually only happens when the root filesystem is shut down and > > >you can't access any of the binaries needed to run the system. Is > > >the filesystem that is shutting down the root? > > > > No, it is not. Root is separate and using ext4. The problematic one > > is /home. > > > > > > What I did, as far I remember, was, when I noticed that home had > > failed and was read only, to switch to runlevel 1, umount /home > > (killing the apps that were still using it), then tried to mount it > > again to replay the log, prior to using xfs-repair on it. Mount > > hung. ctrl-alt-supr failed, or appeared to fail. So reset button... > > That's a completely different issue to having a shutdown filesystem > hang your system. That's a mount problem, and likely a known issue. > You need to be specific when describing a problem, otherwise we > waste time going down the wrong paths. > > > >>No, the on disk filesystem is not healthy. If I continue using it, > > >>after reboot and using "xfs_repair" several times, it fails again > > >>within a day. > > > > > >After at least one hibernation and thaw cycle, right? > > > > Yes. 3, I think. > > Then hibernation has caused the corruption. It may take some time > for the corruption to be detected, but there isn't any doubt in my > mind that hibernation is the cause of your problems. > > So, until we have kernel fixes, you'd do best to turn off > hibernation. If you can't live with leaving your machine powered up > or switching it off, then use suspend-to-ram rather than > suspend-to-disk to avoid the problematic snapshot/restore > situation.... > FWIW, I ran through a bunch of hibernation tests yesterday and couldn't seem to reproduce anything interesting. I ran a preallocating workload while constantly hibernating and waking a vm. I also tried using a hack to avoid the eofblocks trim on release to make the test more effective, and another to invoke the hibernation from the eofblocks background scanner to "improve" the chances of conflict. I also ran a truncate test to stress xfs_itruncate_extents() during hibernation cycles (there's actually an instance of this in Carlos' reported output that doesn't seem to involve a workqueue, attributed to thunderbird iirc) and ran these similar tests going back to v3.11.0 as well as the latest 3.16.0-rc2. None of this really means anything outside of there isn't quite enough information to reproduce. It looks simple enough to enable freezing on the eofblocks (or other xfs) workqueues by setting a flag, so we could go and do that, but that still isn't definite. E.g., that thunderbird truncate instance of failure stands out a bit to me. Carlos, You've indicated in your previous replies that you have reproduced this repeatedly or more easily after you hit the problem and before you run a reformat and restore sequence, enough to give you the impression at least that the reformat is necessary. If you have the time, could you run some of your typical activities through some hibernation cycles in an attempt to narrow down what might contribute to this? E.g., perhaps this only occurs with thunderbird or some other particular application running, etc. If you have the ability to try a more recent kernel for a period of time, that could be interesting as well. Brian > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From robin.listas@gmail.com Fri Jul 4 08:37:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id F2DED7F3F for ; Fri, 4 Jul 2014 08:37:05 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id F3F578F8049 for ; Fri, 4 Jul 2014 06:37:02 -0700 (PDT) X-ASG-Debug-ID: 1404481020-04cb6c76d14548f0001-NocioJ Received: from mail-wi0-f175.google.com (mail-wi0-f175.google.com [209.85.212.175]) by cuda.sgi.com with ESMTP id OcXPEkAfPuHIsobJ (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Fri, 04 Jul 2014 06:37:00 -0700 (PDT) X-Barracuda-Envelope-From: robin.listas@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.212.175 X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.175] Received: by mail-wi0-f175.google.com with SMTP id r20so12950086wiv.14 for ; Fri, 04 Jul 2014 06:36:55 -0700 (PDT) X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.175] X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.175] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:message-id:date:from:user-agent:mime-version:to:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=/hIOulidPYbxgpomCblyI2+Nt0Kg2M240t0+pDRAOBY=; b=Y77VoqkdEdslzSwicuIGlQ8wYiIkh/nldigjfaBG2+sBi6m/4gUGZ9nkyaRZtdmzIb Fz8fYlaJgf+rXYthN6BlNyEnjocYt1ZrZJJJWoH8WsGbWAVDIS0XvRtkecc5k8KqrH0o JFLYKlveeOh32+pGHhdDzW7eSFJxM4pxf9cIJkMm3pngMN0YhFReDfWaYzDk5dNmKFRt wv0LPtPU1V0aMRNKz1suTh3YyIdxWmxY0CGbW1nyxsYiLBheUUbl4XwTkjFVQAvAR32c S34B6pGsZbqisl6gpYW9TZ0OEDKIakhanlq1eR/37+HtpCJwwS+9n/WbAiJlxmSODD+N c3OA== X-Received: by 10.194.219.70 with SMTP id pm6mr12256038wjc.53.1404481015307; Fri, 04 Jul 2014 06:36:55 -0700 (PDT) Received: from minas-tirith.valinor (90.Red-79-150-228.dynamicIP.rima-tde.net. [79.150.228.90]) by mx.google.com with ESMTPSA id cz4sm79307385wib.23.2014.07.04.06.36.53 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 Jul 2014 06:36:54 -0700 (PDT) Sender: Carlos Robinson Received: from minas-tirith.valinor (localhost [127.0.0.1]) by minas-tirith.valinor (Postfix) with ESMTP id 90B6D18245B for ; Fri, 4 Jul 2014 15:36:47 +0200 (CEST) Message-ID: <53B6ADEF.2000409@opensuse.org> Date: Fri, 04 Jul 2014 15:36:47 +0200 From: "Carlos E. R." User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: XFS mailing list Subject: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. References: <20140702120441.GA51757@bfoster.bfoster> <20140703094347.GU4453@dastard> <20140704000426.GX4453@dastard> <20140704014008.GI9508@dastard> <20140704124049.GB12151@bfoster.bfoster> X-ASG-Orig-Subj: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. In-Reply-To: <20140704124049.GB12151@bfoster.bfoster> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail-wi0-f175.google.com[209.85.212.175] X-Barracuda-Start-Time: 1404481020 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7236 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 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 2014-07-04 14:40, Brian Foster wrote: Thanks. Yes, that's right. Yes, certainly. I can do more hibernation cycles to try trigger it again. Thunderbird is an application that I use a lot, it is always open. I have several remote imap accounts, and one local imap account, using a local dovecot daemon on another partition (which has not been affected so far). It also pulls nntp from a local daemon (leafnode), which uses a different partition, on reiserfs. It is a complex setup, you see :-) I'll investigate if it is possible. Meanwhile, I have upgraded the xfsprogs package to version 3.2.0, and the kernel has got an update to 3.11.10 (openSUSE policy is to backport security patches, while maintaining the same kernel version through the lifetime of a release, so that this kernel has in fact additions and patches from more advanced versions). Having upgraded xfsprogs, I'm right now in the process of backup-format-restore this home partition again, to take advantage of any modification this new xfsprogs package may have. I think I will use this time rsync instead of xfsrestore, although it is much slower - - unless you ask me to use xfsrestore. - -- Cheers / Saludos, Carlos E. R. (from 13.1 x86_64 "Bottle" (Minas Tirith)) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iF4EAREIAAYFAlO2re8ACgkQja8UbcUWM1yi7QD/b0V+gASfApDWNqIaf6nceWvr IAGUb+jFwqGeZppqdEUA/1hqknkWDC7St4kpR4SiYfdt9gzuKMX4abQ3nU2SlVlA =mgSa -----END PGP SIGNATURE----- From BATV+43973f37d9d91024b5f2+3967+infradead.org+hch@bombadil.srs.infradead.org Fri Jul 4 09:08:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id BFBA87F3F for ; Fri, 4 Jul 2014 09:08:56 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id C3A89304032 for ; Fri, 4 Jul 2014 07:08:53 -0700 (PDT) X-ASG-Debug-ID: 1404482932-04cb6c76cf455d10001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id nRO2vxssoYy6NhMB (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 04 Jul 2014 07:08:52 -0700 (PDT) X-Barracuda-Envelope-From: BATV+43973f37d9d91024b5f2+3967+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1X34AW-0008Ag-0B; Fri, 04 Jul 2014 14:08:52 +0000 Date: Fri, 4 Jul 2014 07:08:51 -0700 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 2/6] xfs_db: write command broken on 64 bit values Message-ID: <20140704140851.GA29520@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 2/6] xfs_db: write command broken on 64 bit values References: <1404453435-1915-1-git-send-email-david@fromorbit.com> <1404453435-1915-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1404453435-1915-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1404482932 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-BRTS-Status: 1 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=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7236 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Fri, Jul 04, 2014 at 03:57:11PM +1000, Dave Chinner wrote: > From: Dave Chinner > > convert_args() has problesm with 64 bit fields because it tries to > shift them by 64 bits. The result of doing so is undefined by the C > standard, and so results in the unexpected behaviour of the result > being being the original value unchanged rather than 0. Hence you > can't write 64 bit fields because the code thinks that all values > other than 0 are out of range. > > Signed-off-by: Dave Chinner Looks good, Reviewed-by: Christoph Hellwig From flux@hotbox.ru Fri Jul 4 09:09:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 3648F7F3F for ; Fri, 4 Jul 2014 09:09:18 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id B87FCAC001 for ; Fri, 4 Jul 2014 07:09:14 -0700 (PDT) X-ASG-Debug-ID: 1404482951-04cbb06535287890001-NocioJ Received: from mail3.ks.pochta.ru (mail3.ks.pochta.ru [62.141.94.173]) by cuda.sgi.com with ESMTP id OHIybT8DqxuJyO6x (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 04 Jul 2014 07:09:12 -0700 (PDT) X-Barracuda-Envelope-From: flux@hotbox.ru X-Barracuda-Apparent-Source-IP: 62.141.94.173 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=qip.ru; s=dkim; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:References:Subject:CC:To:MIME-Version:From:Date:Message-ID; bh=exhN9j26+hEYuah2cAvzVbQHOgAHCOLO1Er7eqx/epI=; b=JysJMZ4yAhIN7OXtKTnRBF7UZqSunPE68W6/BZMJY0oKYlaznF+VGDn4jHmWWD5lVO78Yk4bX0vmD7sk3Px4zSkdV119q52PhZ4LB2wbleRi7jGH80QhOF6oJgiH7S/jyUszHRdFNJr1Fs4FnjJ9OlVuUHhcPovgWh6AddINdGsFhP830bpv3Rxl2wZ/suBXfHMzeJQ3dmj7f4adDmgEBW7zRU7I+WG0Q/DfBm1do8ScOUZafSu1WUL1/KACrX4b/c9iBhOffxTiVmvZx3XW8FjJAMfLkk48QlwOs0wci7Qh956X1vIx+M0pSqQB2HJN9hWnFts4H9KNcmxdXgKOzQ==; Received: from [95.79.188.197] (port=43489 helo=localhost.localdomain) by mail3.ks.pochta.ru with esmtpsa id 1X34Ao-0007ee-PO; Fri, 04 Jul 2014 18:09:11 +0400 Message-ID: <53B6B581.5070801@hotbox.ru> Date: Fri, 04 Jul 2014 18:09:05 +0400 From: flux@hotbox.ru User-Agent: Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: XFS syncs References: <53B59B81.2030603@hotbox.ru> <20140703231730.GW4453@dastard> X-ASG-Orig-Subj: Re: XFS syncs In-Reply-To: <20140703231730.GW4453@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-RSpam-Score: 165 X-RSpam-Report: This message is likely spam. X-Barracuda-Connect: mail3.ks.pochta.ru[62.141.94.173] X-Barracuda-Start-Time: 1404482952 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7236 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 Hello Dave, Thanks for the explanation and your suggestion to use wsync option. On 07/04/2014 03:17 AM, Dave Chinner wrote: > On Thu, Jul 03, 2014 at 10:05:53PM +0400, flux@hotbox.ru wrote: >> Hi, >> >> I issue 'mkdir abc' on my xfs partition the cut off the power. After >> reboot there's no 'abc' directoy. > > Because you didn't sync(1) the filesystem or fsync(2) the directory > before you cut the power. Hence the change never hit the disk. > >> However, when I do that on ext4 >> the 'abc' direcory is always created after reboots. > > That'll be pure fluke - ext4 delays journal writes on namespace > operations just like XFS does. > >> All the >> settings, about mount options are default for my distro. What am I >> missing or how do I change the things of the jounral or whatever? > > If you want directory operations to hitthe disk immediately, then > mount with the "-o wsync" option. Be aware, however, that this will > kill performance unless you have expensive storage with a large > amount of battery backed write cache in front of the disks. There's > a good chance it will also cause excessive wear on SSDs due to the > frequent journal writes. > > Cheers, > > Dave. > From BATV+43973f37d9d91024b5f2+3967+infradead.org+hch@bombadil.srs.infradead.org Fri Jul 4 09:15:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 3E2817F3F for ; Fri, 4 Jul 2014 09:15:11 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 3FEA0304032 for ; Fri, 4 Jul 2014 07:15:11 -0700 (PDT) X-ASG-Debug-ID: 1404483309-04cbb06536287c00001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id 5DZ8RVt595kL9HEJ (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 04 Jul 2014 07:15:10 -0700 (PDT) X-Barracuda-Envelope-From: BATV+43973f37d9d91024b5f2+3967+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1X34Gb-0008Mw-E4; Fri, 04 Jul 2014 14:15:09 +0000 Date: Fri, 4 Jul 2014 07:15:09 -0700 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 4/6] libxfs: reused invalidated buffers leak state and data Message-ID: <20140704141509.GB29520@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 4/6] libxfs: reused invalidated buffers leak state and data References: <1404453435-1915-1-git-send-email-david@fromorbit.com> <1404453435-1915-5-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1404453435-1915-5-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1404483310 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-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7236 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Jul 04, 2014 at 03:57:13PM +1000, Dave Chinner wrote: > @@ -632,6 +632,12 @@ libxfs_putbuf(xfs_buf_t *bp) > pthread_mutex_unlock(&bp->b_lock); > } > } > + /* > + * ensure that any errors on this use of the buffer don't carry > + * over to the next user. > + */ > + bp->b_error = 0; > + > cache_node_put(libxfs_bcache, (struct cache_node *)bp); This seems a bit fishy to me. For one I'm pretty sure it needs to be done before unlocking b_lock, second it's different behavior from the kernel where we explicitly clear it in the caller for the rare case we want to reuse a buffer that had an error (xfs_buf_iodone_callbacks seems to be the only one). Any reason to do this differently in userspace? From BATV+43973f37d9d91024b5f2+3967+infradead.org+hch@bombadil.srs.infradead.org Fri Jul 4 09:15:59 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 81F7C7F3F for ; Fri, 4 Jul 2014 09:15:59 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1E94EAC001 for ; Fri, 4 Jul 2014 07:15:59 -0700 (PDT) X-ASG-Debug-ID: 1404483357-04cbb06536287c80001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id p6xCI70j096XeZBj (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 04 Jul 2014 07:15:57 -0700 (PDT) X-Barracuda-Envelope-From: BATV+43973f37d9d91024b5f2+3967+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1X34HN-0000iA-5T; Fri, 04 Jul 2014 14:15:57 +0000 Date: Fri, 4 Jul 2014 07:15:57 -0700 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 6/6] repair: get rid of BADFSINO Message-ID: <20140704141557.GC29520@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 6/6] repair: get rid of BADFSINO References: <1404453435-1915-1-git-send-email-david@fromorbit.com> <1404453435-1915-7-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1404453435-1915-7-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1404483357 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7236 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Looks good, Reviewed-by: Christoph Hellwig From BATV+43973f37d9d91024b5f2+3967+infradead.org+hch@bombadil.srs.infradead.org Fri Jul 4 09:23:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B760D7F3F for ; Fri, 4 Jul 2014 09:23:08 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id AB1B530404E for ; Fri, 4 Jul 2014 07:23:08 -0700 (PDT) X-ASG-Debug-ID: 1404483787-04bdf056687d03b0001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id khu2UCIa24bd1ZUd (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 04 Jul 2014 07:23:07 -0700 (PDT) X-Barracuda-Envelope-From: BATV+43973f37d9d91024b5f2+3967+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1X34OI-0003NE-TJ; Fri, 04 Jul 2014 14:23:06 +0000 Date: Fri, 4 Jul 2014 07:23:06 -0700 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 1/6] repair: support more than 25 ACLs Message-ID: <20140704142306.GA4687@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 1/6] repair: support more than 25 ACLs References: <1404453435-1915-1-git-send-email-david@fromorbit.com> <1404453435-1915-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1404453435-1915-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1404483787 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-BRTS-Status: 1 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=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7237 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS Looks good, Reviewed-by: Christoph Hellwig and yes, xfs_acl.h should be shared with userspace, it's really just four kernel-only prototypes in there that can be moved easily. From BATV+43973f37d9d91024b5f2+3967+infradead.org+hch@bombadil.srs.infradead.org Fri Jul 4 09:24:24 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E1B427F3F for ; Fri, 4 Jul 2014 09:24:24 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 70016AC005 for ; Fri, 4 Jul 2014 07:24:24 -0700 (PDT) X-ASG-Debug-ID: 1404483862-04cb6c76d0456650001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id cJhdASHPUWy9WG4g (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 04 Jul 2014 07:24:22 -0700 (PDT) X-Barracuda-Envelope-From: BATV+43973f37d9d91024b5f2+3967+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1X34PW-0003wN-DZ; Fri, 04 Jul 2014 14:24:22 +0000 Date: Fri, 4 Jul 2014 07:24:22 -0700 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 3/6] repair: handle directory block corruption in phase 6 Message-ID: <20140704142422.GB4687@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 3/6] repair: handle directory block corruption in phase 6 References: <1404453435-1915-1-git-send-email-david@fromorbit.com> <1404453435-1915-4-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1404453435-1915-4-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1404483862 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-BRTS-Status: 1 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=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7237 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS > @@ -2179,7 +2179,7 @@ longform_dir2_entry_check(xfs_mount_t *mp, > freetab = malloc(FREETAB_SIZE(ip->i_d.di_size / mp->m_dirblksize)); > if (!freetab) { > do_error( > - _("malloc failed in longform_dir2_entry_check (%" PRId64 " bytes)\n"), > +_("malloc failed in longform_dir2_entry_check (%" PRId64 " bytes)\n"), Use __func__ to make this both more readable and future proof (same for the other error message). Otherwise looks good, Reviewed-by: Christoph Hellwig From BATV+43973f37d9d91024b5f2+3967+infradead.org+hch@bombadil.srs.infradead.org Fri Jul 4 09:36:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 1F99B7F3F for ; Fri, 4 Jul 2014 09:36:01 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 04EBF304039 for ; Fri, 4 Jul 2014 07:36:01 -0700 (PDT) X-ASG-Debug-ID: 1404484559-04bdf056697d0b00001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id 8gpphWv1XPZ3mFYv (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 04 Jul 2014 07:35:59 -0700 (PDT) X-Barracuda-Envelope-From: BATV+43973f37d9d91024b5f2+3967+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1X34al-0000UF-Gp; Fri, 04 Jul 2014 14:35:59 +0000 Date: Fri, 4 Jul 2014 07:35:59 -0700 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 5/6] repair: fix quota inode handling in secondary superblocks Message-ID: <20140704143559.GA29745@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 5/6] repair: fix quota inode handling in secondary superblocks References: <1404453435-1915-1-git-send-email-david@fromorbit.com> <1404453435-1915-6-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1404453435-1915-6-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1404484559 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-BRTS-Status: 1 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=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7237 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Fri, Jul 04, 2014 at 03:57:14PM +1000, Dave Chinner wrote: > From: Dave Chinner > > Changes to support separate project quota inodes changed the way > quota inodes got written to the superblock. The current code is > tailored for the needs to the kernel, where the inodes should only > be written if certain falgs are set saying a quota type is enabled. > > Unfortunately, when recovering a corrupt secondary superblock, we > need to unconditionally write the quota inode fields after we > unconditionally zero the quota flags field. The result of this bug > is that the bad quota inode fields cannot be cleared and hence > always are reported by bad by repair in subsequent runs. > > Fix this by directly clearing the quota inodes in the superblock > buffers so that we do need to set special flags to get > xfs_sb_to_disk() to do the right thing as setting flags leave bad > flag values in the superblock instead of bad inode numbers.... > > Also, when clearing the inode numbers, write them as NULLFSINO > rather than 0 as this is what the kernel will write them as if quota > is turned off. > > Signed-off-by: Dave Chinner Looks good, Reviewed-by: Christoph Hellwig From robin.listas@gmail.com Fri Jul 4 16:32:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,LOTS_OF_MONEY, T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 831677F3F for ; Fri, 4 Jul 2014 16:32:53 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id E9F44AC002 for ; Fri, 4 Jul 2014 14:32:49 -0700 (PDT) X-ASG-Debug-ID: 1404509563-04cbb065362967f0001-NocioJ Received: from mail-wg0-f50.google.com (mail-wg0-f50.google.com [74.125.82.50]) by cuda.sgi.com with ESMTP id 7yBSBqF3S5Db96sr (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Fri, 04 Jul 2014 14:32:44 -0700 (PDT) X-Barracuda-Envelope-From: robin.listas@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.50 Received: by mail-wg0-f50.google.com with SMTP id x13so1086308wgg.9 for ; Fri, 04 Jul 2014 14:32:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:subject:in-reply-to:message-id:references :user-agent:mime-version:content-type; bh=WVUZn89IjC52UfudltBbmAvypIMAs1OLRFIy1QngQjY=; b=N0ETUqeWUuEI3vnfCInAkrTNRixe4WGLcXMp3+YX7E4b2/me6N1v8FBwph49OCpevT 3vOlyTEi3xE3N+PLegfnRLPu03RXhv210XSMh8V9HHFnK87Ls/B7gQtiKGkZEILQph0H 9kMaFL9Vk8jrLYZEBuP9m+Dxkb8AZK2l/w3EdO11o76UMxfMLQRBIuHpZOxPcuyfhdQ0 fi5OIyzO1l/ptXVgHsl1UJsuH0hd5KjhJ5Qw4WfEC2WZ5mBSp4011ztAM5blshSSqIiU LI+tc0E36Z3BX9M2JhU7E10v7G0zRPnpMXWMcMn+dpO+vwcb9fy+jHWgvowWvlUY09/0 ZGjQ== X-Received: by 10.194.77.177 with SMTP id t17mr14265438wjw.55.1404509563418; Fri, 04 Jul 2014 14:32:43 -0700 (PDT) Received: from Telcontar.valinor (90.Red-79-150-228.dynamicIP.rima-tde.net. [79.150.228.90]) by mx.google.com with ESMTPSA id cz8sm71459245wjc.11.2014.07.04.14.32.41 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 Jul 2014 14:32:42 -0700 (PDT) Sender: Carlos Robinson Received: from localhost (localhost [127.0.0.1]) by Telcontar.valinor (Postfix) with ESMTP id 7AF5960EBC for ; Fri, 4 Jul 2014 23:32:38 +0200 (CEST) X-Virus-Scanned: amavisd-new at valinor Received: from Telcontar.valinor ([127.0.0.1]) by localhost (Telcontar.valinor [127.0.0.1]) (amavisd-new, port 10024) with LMTP id jyuipD-r5Ek4 for ; Fri, 4 Jul 2014 23:32:38 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by Telcontar.valinor (Postfix) with ESMTP id B2BDE60AF5 for ; Fri, 4 Jul 2014 23:32:37 +0200 (CEST) Date: Fri, 4 Jul 2014 23:32:26 +0200 (CEST) From: "Carlos E. R." X-X-Sender: cer@Telcontar.valinor To: XFS mailing list Subject: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. In-Reply-To: <20140703173916.GB3452@laptop.bfoster> X-ASG-Orig-Subj: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. Message-ID: References: <20140702120441.GA51757@bfoster.bfoster> <20140703173916.GB3452@laptop.bfoster> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Barracuda-Connect: mail-wg0-f50.google.com[74.125.82.50] X-Barracuda-Start-Time: 1404509564 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7244 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 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 [This email has been delayed, while I thought about where to upload metadata file - see near the end] On Thursday, 2014-07-03 at 13:39 -0400, Brian Foster wrote: > On Thu, Jul 03, 2014 at 05:00:47AM +0200, Carlos E. R. wrote: > Ok, so there's a lot going on. I was mainly curious to see what was > causing lingering preallocations, but it could be anything extending a > file multiple times. Right. >> AFAIK, xfsdump can not carry over a filesystem corruption, right? > > I think that's accurate, though it might complain/fail in the act of > dumping an fs that is corrupted. The behavior here suggests there might > not be on disk corruption, however. At least, not a detectable one. If I don't do that backup-format-restore, I get issues soon, and it crashes within a day - I got after booting (the first event): 0.1> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857523] XFS: Internal error XFS_WANT_CORRUPTED_RETURN at line 350 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_all And some hours later: <0.1> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298345] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_allo It was here that I decided to backup-format-restore instead. >> Maybe next time I can take the photo with dd before doing anything else (it >> takes about 80 minutes), or simply do an "xfs_metadump", which should be >> faster. And I might not have then 500 GiB of free space to make a dd copy, >> anyway. >> > > xfs_metadump should be faster. It will grab the metadata only and > obfuscate filenames so as to hide sensitive information. Ok, I have a post-it label on the monitor so that I remember - my notes are typically stored in the home partition :-) But the obfuscation is not complete, I can recognize file names: 00008DC0 .leeme.kfPTgt . ....... .2aujzfJ.%;u. . .0... 00008DF0 .pepe_after_gnome.tar.bz2.vcTJ8c.@.. . ....... 00008E20 .amyN3xYjaldFXYpeUry. 3;&.K.. .. .0... !.pepe_j 00008E50 ust_created.tar.bz2.JlyD0W .. .@....... .NGb0URO 00008E80 C0Bh9cHwp-hBh.6wMS .. .p . ... ..registro.0DPzS 00008EB0 G .. . ....... .8n-.w$.9. .. . .8... +.suse_u 00008EE0 pgrade_to_102_pkglist-bis.txt.tcFUKq. . ....... 00008F10 #B-XqcrWP4cqsw77yv8UsYbcCa-D76q..(#.. .. .8... 00008F40 '.suse_upgrade_to_102_pkglist.txt.0KTuDa 7.. .8 I just had a quick look with 'mc', the dump is to large too inspect it all. >> Question. >> >> As this always happens on recovery from hibernation, and seeing the message >> "Corruption of in-memory data detected", could it be that thawing does a bad >> memory recovery from the swap? I thought that the procedure includes some >> checksum, but I don't know for sure. >> > > Not sure, though if so I would think that might be a more common source > of problems. And it only affects my /home partition - although it may be the busiest one. >> To me, there are two problems: >> >> 1) The corruption itself. >> 2) That xfs_repair fails to repair the filesystem. In fact, I believe >> it does not detect it! >> >> To me, #2 is the worst, and it is what makes me do the backup, format, >> restore cycle for recovery. An occassional kernel crash is somewhat >> acceptable :-} >> > > Well it could be that the "corruption" is gone at the point of a > remount. E.g., something becomes inconsistent in memory, the fs detects > it and shuts down before going any further. That's actually a positive. > ;) > > That also means it's probably not be necessary to do a full backup, > reformat and restore sequence as part of your routine here. xfs_repair > should scour through all of the allocation metadata and yell if it finds > something like free blocks allocated to a file. No, if I don't backup-format-restore it happens again within a day. There is something lingering. Unless that was just chance... :-? It is true that during that day I hibernated several times more than needed to see if it happened again - and it did. >>> I'm curious if something like an 'rm -rf *' on the metadump >>> would catch any other corruptions or if this is indeed limited to >>> something associated with recent (pre)allocations. >> >> Sorry, run 'rm -rf *' where??? >> > > On the metadump... mainly just to see whether freeing all of the used > blocks in the fs triggered any other errors (i.e., a brute force way to > check for further corruptions). Sorry, but I fail to see how to do it. I maybe thick, or I lack the context. If I run: Telcontar:/data/storage_d/old_backup # ls -lh total 604G drwxr-xr-x 22 root root 4.0K Mar 8 20:30 home drwxr-xr-x 3 root root 16 Sep 25 2010 home1 drwxr-xr-x 2 root root 6 Jul 3 02:36 mount - -rw-r--r-- 1 root root 45 Jul 3 04:25 procedure - -rw-r--r-- 1 root root 388M Jul 3 02:42 tgtfile - -rw-r--r-- 1 root root 11M Jul 3 02:50 tgtfile2.xz - -rw-r--r-- 1 root users 489G Mar 16 05:42 xfs_copy_home - -rw-r--r-- 1 root root 489G Jul 3 04:40 xfs_copy_home_workonit - -rw-r--r-- 1 root users 39G Mar 16 05:49 xfsdump__home - -rw-r--r-- 1 root users 39G Mar 16 05:57 xfsdump__home1 Telcontar:/data/storage_d/old_backup # rm -rf * that would destroy my entire backup! If you mean: rm -rf tgtfile I fail to see what that would accomplish, except to remove a file that is actually on a different partition, not home. However, I can do: Telcontar:/data/storage_d/old_backup # mount -v xfs_copy_home_workonit mount/ mount: /dev/loop0 mounted on /data/storage_d/old_backup/mount. Telcontar:/data/storage_d/old_backup # cd mount Telcontar:/data/storage_d/old_backup/mount # time rm -r /data/storage_d/old_backup/mount/* Telcontar:/data/storage_d/old_backup/mount # time rm -r /data/storage_d/old_backup/mount/* real 2m45.380s user 0m0.265s sys 0m6.878s Telcontar:/data/storage_d/old_backup/mount # Telcontar:/data/storage_d/old_backup/mount # ls -la total 4 drwxr-xr-x 2 root root 6 Jul 4 01:56 . drwxr-xr-x 5 root root 4096 Jul 3 04:25 .. Telcontar:/data/storage_d/old_backup/mount # Telcontar:/data/storage_d/old_backup/mount # df -h . Filesystem Size Used Avail Use% Mounted on /dev/loop0 489G 33M 489G 1% /data/storage_d/old_backup/mount Telcontar:/data/storage_d/old_backup/mount # And I do not see anything on the log, only that it mounted cleanly. >> Meanwhile, I have done a xfs_metadump of the image, and compressed it with >> xz. It has 10834536 bytes. What do I do with it? I'm not sure I can email >> that, and even less to a mail list. >> >> Do you still have a bugzilla system where I can upload it? I had an account >> at , made on 2010. I don't know if it still >> runs :-? I have an active bugzilla account at , I'm logged in there now. I haven't checked if I can create a bug, not been sure what parameters to use (product, component, whom to assign to). I think that would be the most appropriate place. Meanwhile, I have uploaded the file to my google drive account, so I can share it with anybody on request - ie, it is not public, I need to add a gmail address to the list of people that can read the file. Alternatively, I could just email the file to people asking for it, offlist, but not in a single email, in chunks limited to 1.5 MB per email. > I think http://bugzilla.redhat.com should allow you to file a bug and > attach the file. Sorry, I don't have an account there... I do have one at openSUSE, though, and it does allow me to attach files, up to a limit. If the file is to big, it can be fragmented in pieces. But I will not use it unless you people say that you have an account there. For using a bugzilla, the most appropriate one would be at SGI, IMHO, if they are still supporting this project. - -- Cheers, Carlos E. R. (from 13.1 x86_64 "Bottle" at Telcontar) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEARECAAYFAlO3HXUACgkQtTMYHG2NR9VndgCgillZYmQCvUynytO/7YALlUyv c9gAnj8GmFfnMHGd+P9GaWm9ScVVTH81 =GEXl -----END PGP SIGNATURE----- From david@fromorbit.com Fri Jul 4 17:22:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 7C9E07F47 for ; Fri, 4 Jul 2014 17:22:19 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 692568F8049 for ; Fri, 4 Jul 2014 15:22:16 -0700 (PDT) X-ASG-Debug-ID: 1404512533-04cb6c76d0466e80001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id vBdTqH3xPWnG0ReQ for ; Fri, 04 Jul 2014 15:22:14 -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: At1rAOsnt1N5LA/TPGdsb2JhbABagw6IUqQjAQEBAQEBBppWAYEKFwQBAQEBODWEAwEBBAEnExwjBQsIAw4KCSUPBSUDBxoTiDoHykEXGIVYiTIHhEMFmnWXYis Received: from ppp121-44-15-211.lns20.syd6.internode.on.net (HELO dastard) ([121.44.15.211]) by ipmail05.adl6.internode.on.net with ESMTP; 05 Jul 2014 07:52:12 +0930 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1X3Bru-0001vR-6L; Sat, 05 Jul 2014 08:22:10 +1000 Date: Sat, 5 Jul 2014 08:22:10 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 4/6] libxfs: reused invalidated buffers leak state and data Message-ID: <20140704222210.GM9508@dastard> X-ASG-Orig-Subj: Re: [PATCH 4/6] libxfs: reused invalidated buffers leak state and data References: <1404453435-1915-1-git-send-email-david@fromorbit.com> <1404453435-1915-5-git-send-email-david@fromorbit.com> <20140704141509.GB29520@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140704141509.GB29520@infradead.org> 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: 1404512533 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7245 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Jul 04, 2014 at 07:15:09AM -0700, Christoph Hellwig wrote: > On Fri, Jul 04, 2014 at 03:57:13PM +1000, Dave Chinner wrote: > > @@ -632,6 +632,12 @@ libxfs_putbuf(xfs_buf_t *bp) > > pthread_mutex_unlock(&bp->b_lock); > > } > > } > > + /* > > + * ensure that any errors on this use of the buffer don't carry > > + * over to the next user. > > + */ > > + bp->b_error = 0; > > + > > cache_node_put(libxfs_bcache, (struct cache_node *)bp); > > This seems a bit fishy to me. For one I'm pretty sure it needs to be > done before unlocking b_lock, Fair enough. > second it's different behavior from the > kernel where we explicitly clear it in the caller for the rare case > we want to reuse a buffer that had an error (xfs_buf_iodone_callbacks > seems to be the only one). Any reason to do this differently in > userspace? The userspace code that uses the buffer cache is much less constrained than the kernel code. The userspace code is pretty nasty in places, especially when it comes to buffer error handling. We can't clear errors or zero buffer contents in libxfs_getbuf-* like we do in the kernel, because those functions are used by the libxfs_readbuf_* functions and hence need to leave the buffers unchanged on cache hits. This is actually the only way to gather a write error from a libxfs_writebuf() call - you need to get the buffer again so you can check bp->b_error field - assuming that the buffer is still in the cache when you check, that is. This is very different to the kernel code which idoes not release buffers on a write so we can wait on IO and check errors. The kernel buffer cache also guarantees a buffer of a known initial state from xfs_buf_get() even on a cache hit. Hence the userspace buffer cache is behaving quite differently to the kernel buffer cache and as a result it's leaking errors from reads, invalidations and writes through xfs_da_get_buf/libxfs_getbuf. Current no userspace outside libxfs code clears bp->b_error - very little code even checks it - so th elibxfs code is tripping on stale errors left by the usrspace code. libxfs_writebuf() already zeros bp->b_error to prevent propagation of stale errors into future reads, so this patch is really just closing the hole in the other buffer release path that the code usually takes. Doing a full audit and addition of error handling of all the userspace code is a little beyond my resources right now. The only thing I can really do quickly about the problem is clear the error when we've finished with the buffer. I'm open to other ways of fixing this, but right now we've got to fix xfs_repair because it's currently breaking filesystems worse than before xfs_repair was run... Cheers, Dave. -- Dave Chinner david@fromorbit.com From stewart@flamingspork.com Fri Jul 4 21:38:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D61887F47 for ; Fri, 4 Jul 2014 21:38:06 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id B3E8F8F8040 for ; Fri, 4 Jul 2014 19:38:03 -0700 (PDT) X-ASG-Debug-ID: 1404527882-04cbb0653829fa10001-NocioJ Received: from kaylee.flamingspork.com (kaylee.flamingspork.com [74.207.245.61]) by cuda.sgi.com with ESMTP id 1teGlxab0OsyfPfC for ; Fri, 04 Jul 2014 19:38:02 -0700 (PDT) X-Barracuda-Envelope-From: stewart@flamingspork.com X-Barracuda-Apparent-Source-IP: 74.207.245.61 Received: from willster.flamingspork.com (localhost [127.0.0.1]) by kaylee.flamingspork.com (Postfix) with ESMTPS id 231E1607B; Sat, 5 Jul 2014 02:58:15 +0000 (UTC) Received: by willster.flamingspork.com (Postfix, from userid 1000) id 1EF9E33E7E3; Sat, 5 Jul 2014 12:38:00 +1000 (EST) From: Stewart Smith To: Kiran Deen , xfs@oss.sgi.com Subject: Re: Greetings from Google! In-Reply-To: X-ASG-Orig-Subj: Re: Greetings from Google! References: User-Agent: Notmuch/0.16 (http://notmuchmail.org) Emacs/24.3.1 (x86_64-redhat-linux-gnu) Date: Sat, 05 Jul 2014 12:37:59 +1000 Message-ID: <87simgjzso.fsf@flamingspork.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha1; protocol="application/pgp-signature" X-Barracuda-Connect: kaylee.flamingspork.com[74.207.245.61] X-Barracuda-Start-Time: 1404527882 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7249 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Kiran Deen writes: > I hope your day is going well. I wanted to connect to see if you are > interested in exploring opportunities at Google. I came across your > information online and believe your skills may be aligned with some > engineering roles that I support. Let me know if you are interested and we > can schedule a time speak further. > > Thank you for your time and consideration. I look forward to hearing back > from you! Probably not at this time, I switched employers in January and probably wouldn't be open to considering switching until next year at the earliest. =2D-=20 Stewart Smith --=-=-= Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBAgAGBQJTt2UHAAoJEP08notdpDyvCQEQAIghY/Yhf2KKdns32gzOXpnb 7xPGOvghL6U3LO17cx0L3Z1zQseLtkATdE1qR0Fr8zQdFtgykoiE5NCVrpKObU7l /RjtiheFIX1vWa8/8jnQsXoWTRQF3DzwahsxPB1S2r8hmFwdj1/XogOxdkEwauS7 SXrCLEeQvbmyDitvRmWdPcs8T96Uuq5bdbtgvj6krU1Kt8qHtJwnw8ldBZO4psl2 kXZWY/lv/JLMeLAFtjGmLeSY5p0ZjzIVCZo1p/p+ujTTmYYQdJle3nmaaDPtG0Zw BA7xRbXNLOKWt6FzyzThXZ+lgHUiBj2vvGV7RNVR7+ECOweQLfCJK3+t8lQAdLaE 6Kw9Yo9DqEF9KKgiOpW80fupXhZM+K/C1OhvQkB6ogmy+tyUNvlC9/uEV4VTEL/D sBvSThs/CFvGIUNfTUHLMZIl8eTKRNJaugaCwHlsPxO9qjV3wNv+0IRh2H0ZVaoG IvOR5nCZx1BHGAx0jH5mhK9tJ72jx0WHO6m5fpwAOKeu6U7rZ9nWF30d30Yk2xWJ DM64m6risqs8y7mIZzp6AKjdyVlfyjtnAL4q+Y0Z++vBCJJwrkQp5HRCP5fBLOxt 3tF+oWLWzcAuqbSM+WpDtVoX2gXw6PRxM6lCjpy5tmtZVbNMJSPUJdLMezpzNBvp p8TBF23ActYujpLlfyEs =BgwM -----END PGP SIGNATURE----- --=-=-=-- From stewart@flamingspork.com Fri Jul 4 21:42:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 84F0E7F51 for ; Fri, 4 Jul 2014 21:42:35 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6FA588F8040 for ; Fri, 4 Jul 2014 19:42:35 -0700 (PDT) X-ASG-Debug-ID: 1404528154-04cbb0653829fd00001-NocioJ Received: from kaylee.flamingspork.com (kaylee.flamingspork.com [74.207.245.61]) by cuda.sgi.com with ESMTP id 9cgEMQdr0KGuu2v3 for ; Fri, 04 Jul 2014 19:42:34 -0700 (PDT) X-Barracuda-Envelope-From: stewart@flamingspork.com X-Barracuda-Apparent-Source-IP: 74.207.245.61 Received: from willster.flamingspork.com (localhost [127.0.0.1]) by kaylee.flamingspork.com (Postfix) with ESMTPS id B7647607B; Sat, 5 Jul 2014 03:02:47 +0000 (UTC) Received: by willster.flamingspork.com (Postfix, from userid 1000) id CBA2533E7E3; Sat, 5 Jul 2014 12:42:30 +1000 (EST) From: Stewart Smith To: Kiran Deen , xfs@oss.sgi.com Subject: Re: Greetings from Google! In-Reply-To: <87simgjzso.fsf@flamingspork.com> X-ASG-Orig-Subj: Re: Greetings from Google! References: <87simgjzso.fsf@flamingspork.com> User-Agent: Notmuch/0.16 (http://notmuchmail.org) Emacs/24.3.1 (x86_64-redhat-linux-gnu) Date: Sat, 05 Jul 2014 12:42:30 +1000 Message-ID: <87mwcojzl5.fsf@flamingspork.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha1; protocol="application/pgp-signature" X-Barracuda-Connect: kaylee.flamingspork.com[74.207.245.61] X-Barracuda-Start-Time: 1404528154 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7249 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Stewart Smith writes: > Kiran Deen writes: >> I hope your day is going well. I wanted to connect to see if you are >> interested in exploring opportunities at Google. I came across your >> information online and believe your skills may be aligned with some >> engineering roles that I support. Let me know if you are interested and = we >> can schedule a time speak further. >> >> Thank you for your time and consideration. I look forward to hearing back >> from you! > > Probably not at this time, I switched employers in January and probably > wouldn't be open to considering switching until next year at the earliest. Also, this is a mailing list and I'm an idiot who hasn't had enough coffee this morning. =2D-=20 Stewart Smith --=-=-= Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBAgAGBQJTt2YWAAoJEP08notdpDyv7Q8P/39OE4bc+IQ/Mk0OldMn7Reu ce/09UGcL2oy93vrHRrHC64NjYKrsdHBrIIrHw/8wHGEqRFMJmO+OIYgpLr4kExL BDss/jDZIb81rS/ngefkrvx+6YJIad8pKYmO+ykm2OukympWtwfb1suZMjPgB9Pt Q3+1TNIwjnbiVZIVqO6nM081o5g2bg6jK1yJzgHAMF+2z3iWgqFs7NJVPA7uzXWe cVo0AW0NhD6ruqOjyBKKpJlOBtwiAVNO8o8fRSCWG53VcaXWPvTJGJLsyF6HewBF cInCA2UtbCpLCfUxFgDnD2UKTzN4mk/i6NIu9M7bGE8nm0aCORH7Oz+dTKXYAJkH VnbteRsj6QN2E2lbfe9gwOj1sHBy6SkRCjX9rBaRRGBCiucogtQKB/oLu2Qhxw1L hJe0TUKy64GfZPAysYECjMi2yqzIuKemrlCvqqh9UjGreGj6kvx2HZoy9wXiJcdL fb6e/TnAJi1RtavuV1tN9F7BshfPjCxIm1+IvpKLwZ4hthdqjnWD+5Ryn1MEq89R BirCyZ7ZU1E7y92RPXOkYO/fV/Do1j5zUpXNkG7X8lDwiBkCyqTJfZqvriomKArn ijTKbw4Tyemq3r4xKxXlzjyYe+O6jz8E3xkYLEotQSOsT9ZDqW9rSRZMkE39r7Rm BT1KZuV3/tFOzWlAPnAQ =ZguK -----END PGP SIGNATURE----- --=-=-=-- From BATV+00255a4e16ff2f3a6bda+3968+infradead.org+hch@bombadil.srs.infradead.org Sat Jul 5 04:48:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id F20087F54 for ; Sat, 5 Jul 2014 04:48:09 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id D52EF8F8040 for ; Sat, 5 Jul 2014 02:48:09 -0700 (PDT) X-ASG-Debug-ID: 1404553687-04bdf056677f2ee0001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id KLjaf88doFhbd45f (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sat, 05 Jul 2014 02:48:08 -0700 (PDT) X-Barracuda-Envelope-From: BATV+00255a4e16ff2f3a6bda+3968+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1X3MZj-000777-EN; Sat, 05 Jul 2014 09:48:07 +0000 Date: Sat, 5 Jul 2014 02:48:07 -0700 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 4/6] libxfs: reused invalidated buffers leak state and data Message-ID: <20140705094807.GB18130@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 4/6] libxfs: reused invalidated buffers leak state and data References: <1404453435-1915-1-git-send-email-david@fromorbit.com> <1404453435-1915-5-git-send-email-david@fromorbit.com> <20140704141509.GB29520@infradead.org> <20140704222210.GM9508@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140704222210.GM9508@dastard> User-Agent: Mutt/1.5.23 (2014-03-12) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1404553688 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-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7256 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Jul 05, 2014 at 08:22:10AM +1000, Dave Chinner wrote: > I'm open to other ways of fixing this, but right now we've got to > fix xfs_repair because it's currently breaking filesystems worse > than before xfs_repair was run... Ok, so clearly mark this as difference from kernel code in a long comment explaining the situation similar to wrote you above. It's pretty obvious that the buffer cache in userspace will eventually need a major overhaul sooner or later. I wonder how feasible porting the kernel one would be.. From bfoster@redhat.com Sat Jul 5 07:28:43 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=LOTS_OF_MONEY autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C2F8B7F56 for ; Sat, 5 Jul 2014 07:28:43 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 9A3958F8040 for ; Sat, 5 Jul 2014 05:28:40 -0700 (PDT) X-ASG-Debug-ID: 1404563318-04bdf056667f7200001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id G8WaPFzhZCsZdctL (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sat, 05 Jul 2014 05:28:38 -0700 (PDT) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s65CSZNr007313 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 5 Jul 2014 08:28:35 -0400 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s65CSYg2017284; Sat, 5 Jul 2014 08:28:35 -0400 Received: by bfoster.bfoster (Postfix, from userid 1000) id D37AF124935; Sat, 5 Jul 2014 08:28:33 -0400 (EDT) Date: Sat, 5 Jul 2014 08:28:33 -0400 From: Brian Foster To: "Carlos E. R." Cc: XFS mailing list Subject: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. Message-ID: <20140705122833.GA3573@bfoster.bfoster> X-ASG-Orig-Subj: Re: Got "Internal error XFS_WANT_CORRUPTED_GOTO". Filesystem needs reformatting to correct issue. References: <20140702120441.GA51757@bfoster.bfoster> <20140703173916.GB3452@laptop.bfoster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.26 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1404563318 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-BRTS-Status: 1 On Fri, Jul 04, 2014 at 11:32:26PM +0200, Carlos E. R. wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > > > [This email has been delayed, while I thought about where to upload metadata > file - see near the end] > > > On Thursday, 2014-07-03 at 13:39 -0400, Brian Foster wrote: > >On Thu, Jul 03, 2014 at 05:00:47AM +0200, Carlos E. R. wrote: > > > >Ok, so there's a lot going on. I was mainly curious to see what was > >causing lingering preallocations, but it could be anything extending a > >file multiple times. > > Right. > > > >>AFAIK, xfsdump can not carry over a filesystem corruption, right? > > > >I think that's accurate, though it might complain/fail in the act of > >dumping an fs that is corrupted. The behavior here suggests there might > >not be on disk corruption, however. > > At least, not a detectable one. > > If I don't do that backup-format-restore, I get issues soon, and it crashes > within a day - I got after booting (the first event): > I echo Dave's previous question... within a day of doing what? Just using the system or doing more hibernation cycles? > 0.1> 2014-03-15 03:53:47 Telcontar kernel - - - [ 301.857523] XFS: Internal error XFS_WANT_CORRUPTED_RETURN at line 350 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_all > > And some hours later: > > <0.1> 2014-03-15 22:20:34 Telcontar kernel - - - [20151.298345] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /home/abuild/rpmbuild/BUILD/kernel-desktop-3.11.10/linux-3.11/fs/xfs/xfs_allo > > > It was here that I decided to backup-format-restore instead. > > > >>Maybe next time I can take the photo with dd before doing anything else (it > >>takes about 80 minutes), or simply do an "xfs_metadump", which should be > >>faster. And I might not have then 500 GiB of free space to make a dd copy, > >>anyway. > >> > > > >xfs_metadump should be faster. It will grab the metadata only and > >obfuscate filenames so as to hide sensitive information. > > > Ok, I have a post-it label on the monitor so that I remember - my notes are > typically stored in the home partition :-) > > > But the obfuscation is not complete, I can recognize file names: > > > 00008DC0 .leeme.kfPTgt . ....... .2aujzfJ.%;u. . .0... > 00008DF0 .pepe_after_gnome.tar.bz2.vcTJ8c.@.. . ....... > 00008E20 .amyN3xYjaldFXYpeUry. 3;&.K.. .. .0... !.pepe_j > 00008E50 ust_created.tar.bz2.JlyD0W .. .@....... .NGb0URO > 00008E80 C0Bh9cHwp-hBh.6wMS .. .p . ... ..registro.0DPzS > 00008EB0 G .. . ....... .8n-.w$.9. .. . .8... +.suse_u > 00008EE0 pgrade_to_102_pkglist-bis.txt.tcFUKq. . ....... > 00008F10 #B-XqcrWP4cqsw77yv8UsYbcCa-D76q..(#.. .. .8... > 00008F40 '.suse_upgrade_to_102_pkglist.txt.0KTuDa 7.. .8 > > > I just had a quick look with 'mc', the dump is to large too inspect it all. > > > >>Question. > >> > >>As this always happens on recovery from hibernation, and seeing the message > >>"Corruption of in-memory data detected", could it be that thawing does a bad > >>memory recovery from the swap? I thought that the procedure includes some > >>checksum, but I don't know for sure. > >> > > > >Not sure, though if so I would think that might be a more common source > >of problems. > > And it only affects my /home partition - although it may be the busiest one. > > > >>To me, there are two problems: > >> > >> 1) The corruption itself. > >> 2) That xfs_repair fails to repair the filesystem. In fact, I believe > >> it does not detect it! > >> > >>To me, #2 is the worst, and it is what makes me do the backup, format, > >>restore cycle for recovery. An occassional kernel crash is somewhat > >>acceptable :-} > >> > > > >Well it could be that the "corruption" is gone at the point of a > >remount. E.g., something becomes inconsistent in memory, the fs detects > >it and shuts down before going any further. That's actually a positive. > >;) > > > >That also means it's probably not be necessary to do a full backup, > >reformat and restore sequence as part of your routine here. xfs_repair > >should scour through all of the allocation metadata and yell if it finds > >something like free blocks allocated to a file. > > No, if I don't backup-format-restore it happens again within a day. There is > something lingering. Unless that was just chance... :-? > > It is true that during that day I hibernated several times more than needed > to see if it happened again - and it did. > This depends on what causes this to happen, not how frequent it happens. Does it continue to happen along with hibernation, or do you start seeing these kind of errors during normal use? If the latter, that could suggest something broken on disk. If the former, that could simply suggest the fs (perhaps on-disk) has made it into some kind of state that makes this easier to reproduce, for whatever reason. It could be timing, location of metadata, fragmentation, or anything really for that matter, but it doesn't necessarily mean corruption (even though it doesn't rule it out). Perhaps the clean regeneration of everything by a from-scratch recovery simply makes this more difficult to reproduce until the fs naturally becomes more aged/fragmented, for example. This probably makes a pristine, pre-repair metadump of the reproducing fs more interesting. I could try some of my previous tests against a restore of that metadump. > > > >>>I'm curious if something like an 'rm -rf *' on the metadump > >>>would catch any other corruptions or if this is indeed limited to > >>>something associated with recent (pre)allocations. > >> > >>Sorry, run 'rm -rf *' where??? > >> > > > >On the metadump... mainly just to see whether freeing all of the used > >blocks in the fs triggered any other errors (i.e., a brute force way to > >check for further corruptions). > > Sorry, but I fail to see how to do it. I maybe thick, or I lack the context. > > If I run: > > Telcontar:/data/storage_d/old_backup # ls -lh > total 604G > drwxr-xr-x 22 root root 4.0K Mar 8 20:30 home > drwxr-xr-x 3 root root 16 Sep 25 2010 home1 > drwxr-xr-x 2 root root 6 Jul 3 02:36 mount > - -rw-r--r-- 1 root root 45 Jul 3 04:25 procedure > - -rw-r--r-- 1 root root 388M Jul 3 02:42 tgtfile > - -rw-r--r-- 1 root root 11M Jul 3 02:50 tgtfile2.xz > - -rw-r--r-- 1 root users 489G Mar 16 05:42 xfs_copy_home > - -rw-r--r-- 1 root root 489G Jul 3 04:40 xfs_copy_home_workonit > - -rw-r--r-- 1 root users 39G Mar 16 05:49 xfsdump__home > - -rw-r--r-- 1 root users 39G Mar 16 05:57 xfsdump__home1 > Telcontar:/data/storage_d/old_backup # rm -rf * > > > that would destroy my entire backup! > I was somewhat thinking out loud originally discussing this topic. I was suggesting to run this against a restored metadump, not the primary dataset or a backup. The metadump creates an image of the metadata of the source fs in a file (no data is copied). This metadump image can be restored at will via 'xfs_mdrestore.' This allows restoring to a file, mounting the file loopback, and performing experiments or investigation on the fs generally as it existed when the shutdown was reproducible. So basically: - xfs_mdrestore - mount /mnt - rm -rf /mnt/* ... was what I was suggesting. can be recreated from the metadump image afterwards to get back to square one. > > If you mean: > > rm -rf tgtfile > > I fail to see what that would accomplish, except to remove a file that is actually on a different partition, not home. > > However, I can do: > > Telcontar:/data/storage_d/old_backup # mount -v xfs_copy_home_workonit mount/ > mount: /dev/loop0 mounted on /data/storage_d/old_backup/mount. > Telcontar:/data/storage_d/old_backup # cd mount > Telcontar:/data/storage_d/old_backup/mount # time rm -r /data/storage_d/old_backup/mount/* > Telcontar:/data/storage_d/old_backup/mount # time rm -r /data/storage_d/old_backup/mount/* > > real 2m45.380s > user 0m0.265s > sys 0m6.878s > Telcontar:/data/storage_d/old_backup/mount # > Telcontar:/data/storage_d/old_backup/mount # ls -la > total 4 > drwxr-xr-x 2 root root 6 Jul 4 01:56 . > drwxr-xr-x 5 root root 4096 Jul 3 04:25 .. > Telcontar:/data/storage_d/old_backup/mount # > Telcontar:/data/storage_d/old_backup/mount # df -h . > Filesystem Size Used Avail Use% Mounted on > /dev/loop0 489G 33M 489G 1% /data/storage_d/old_backup/mount > Telcontar:/data/storage_d/old_backup/mount # > > > And I do not see anything on the log, only that it mounted cleanly. > > > > >>Meanwhile, I have done a xfs_metadump of the image, and compressed it with > >>xz. It has 10834536 bytes. What do I do with it? I'm not sure I can email > >>that, and even less to a mail list. > >> > >>Do you still have a bugzilla system where I can upload it? I had an account > >>at , made on 2010. I don't know if it still > >>runs :-? > > > I have an active bugzilla account at , I'm > logged in there now. I haven't checked if I can create a bug, not been sure > what parameters to use (product, component, whom to assign to). I think that > would be the most appropriate place. > > Meanwhile, I have uploaded the file to my google drive account, so I can > share it with anybody on request - ie, it is not public, I need to add a > gmail address to the list of people that can read the file. > > Alternatively, I could just email the file to people asking for it, offlist, > but not in a single email, in chunks limited to 1.5 MB per email. > Either of the bugzilla or google drive options works Ok for me. Brian > > >I think http://bugzilla.redhat.com should allow you to file a bug and > >attach the file. > > Sorry, I don't have an account there... > > I do have one at openSUSE, though, and it does allow me to attach files, up > to a limit. If the file is to big, it can be fragmented in pieces. But I > will not use it unless you people say that you have an account there. > > For using a bugzilla, the most appropriate one would be at SGI, IMHO, if > they are still supporting this project. > > - -- Cheers, > Carlos E. R. > (from 13.1 x86_64 "Bottle" at Telcontar) > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v2.0.22 (GNU/Linux) > > iEYEARECAAYFAlO3HXUACgkQtTMYHG2NR9VndgCgillZYmQCvUynytO/7YALlUyv > c9gAnj8GmFfnMHGd+P9GaWm9ScVVTH81 > =GEXl > -----END PGP SIGNATURE----- > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From robin.listas@gmail.com Sat Jul 5 07:35:32 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 1F5137F58 for ; Sat, 5 Jul 2014 07:35:32 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8E23DAC001 for ; Sat, 5 Jul 2014 05:35:28 -0700 (PDT) X-ASG-Debug-ID: 1404563725-04cb6c76d0481340001-NocioJ Received: from mail-we0-f180.google.com (mail-we0-f180.google.com [74.125.82.180]) by cuda.sgi.com with ESMTP id oJ6UpWAnm7tY4qyv (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 05 Jul 2014 05:35:26 -0700 (PDT) X-Barracuda-Envelope-From: robin.listas@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.180 Received: by mail-we0-f180.google.com with SMTP id x48so2558751wes.25 for ; Sat, 05 Jul 2014 05:35:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:message-id:date:from:user-agent:mime-version:to:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=gvPyW7L0VVFO9TBqLp1W9gCqWnEDnndomuvC7w5uZ24=; b=o5Vbw7Tq2VdezPCQKw2wyZFMQQ54n+R9cFbVL+vvaoCvWMF+B4O027HrsyULRrPnpV eNyoUzUrukI2BXoV2F2ATkkqUq5HsS1DxPVgU5hwUnslld77NTVQMscDgD9Njm9d2Z2B gDFNRd9I4EcaOSFBD3IX+Ew/vFlTECu2eqpP57Bm8MlYjAXtc7isucMG/0YFCuo7N3Dl HUqaUEdtIKzIpfTfBVkGEmRKNvllVbVhJ8mYCCwhZgkBlxpJ5XmsqLLmJUBZz9jUTgNO IXbDeFJVSkvDzLF1gqFaRVzQSk8GxfrjqmxKCtKSf0iquIAUKpC2N8OXSY7UHsAQSsI3 ut3Q== X-Received: by 10.194.71.81 with SMTP id s17mr18463898wju.18.1404563725055; Sat, 05 Jul 2014 05:35:25 -0700 (PDT) Received: from Telcontar.valinor (90.Red-79-150-228.dynamicIP.rima-tde.net. [79.150.228.90]) by mx.google.com with ESMTPSA id o9sm43984417wib.22.2014.07.05.05.35.24 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 05 Jul 2014 05:35:24 -0700 (PDT) Sender: Carlos Robinson Received: from localhost (localhost [127.0.0.1]) by Telcontar.valinor (Postfix) with ESMTP id 5F2F460D9C for ; Sat, 5 Jul 2014 14:35:22 +0200 (CEST) X-Virus-Scanned: amavisd-new at valinor Received: from Telcontar.valinor ([127.0.0.1]) by localhost (Telcontar.valinor [127.0.0.1]) (amavisd-new, port 10024) with LMTP id caL9yOv1SlGx for ; Sat, 5 Jul 2014 14:35:22 +0200 (CEST) Received: from [127.0.0.1] (localhost [127.0.0.1]) by Telcontar.valinor (Postfix) with ESMTP id 133AB60675 for ; Sat, 5 Jul 2014 14:35:21 +0200 (CEST) Message-ID: <53B7F109.9000702@opensuse.org> Date: Sat, 05 Jul 2014 14:35:21 +0200 From: "Carlos E. R." User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: XFS mail list Subject: Re: Greetings from Google! References: <87simgjzso.fsf@flamingspork.com> <87mwcojzl5.fsf@flamingspork.com> X-ASG-Orig-Subj: Re: Greetings from Google! In-Reply-To: <87mwcojzl5.fsf@flamingspork.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail-we0-f180.google.com[74.125.82.180] X-Barracuda-Start-Time: 1404563726 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7259 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 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 2014-07-05 04:42, Stewart Smith wrote: > Also, this is a mailing list and I'm an idiot who hasn't had > enough coffee this morning. LOL :-) This mail list has an astonishing amount of spam, true. I thought that one of the reasons might be this: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com Apparently an obsolete SpamAssassin version... but mine is about as old, "SpamAssassin 3.3.2 (2011-06-06)" and it catches most that escapes this mail list filter, probably because my bayesian filter is better trained. (I retrieved the 2013 and 2014 archives, and my spamassassin weeded out 1372 spam emails, some weighting 5MB. Nearly two hundred escaped my filters - with about 13000 good emails) - -- Cheers / Saludos, Carlos E. R. (from 13.1 x86_64 "Bottle" at Telcontar) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iEYEARECAAYFAlO38QkACgkQtTMYHG2NR9VCOQCdF18H36vtbF+OsRVAOCUWjUpx DUkAnA5LQ5X8GXt7eQtEBNi7wm2JZtdN =EqHL -----END PGP SIGNATURE----- From jan.de.kruyf@gmail.com Sat Jul 5 07:41:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,HTML_MESSAGE, T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id F24E27F5A for ; Sat, 5 Jul 2014 07:41:10 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id CB1BB8F8040 for ; Sat, 5 Jul 2014 05:41:10 -0700 (PDT) X-ASG-Debug-ID: 1404564067-04bdf056667f7700001-NocioJ Received: from mail-qc0-f171.google.com (mail-qc0-f171.google.com [209.85.216.171]) by cuda.sgi.com with ESMTP id mDvlGZIF52X3qHEf (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 05 Jul 2014 05:41:08 -0700 (PDT) X-Barracuda-Envelope-From: jan.de.kruyf@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.171 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.171] Received: by mail-qc0-f171.google.com with SMTP id w7so2240406qcr.16 for ; Sat, 05 Jul 2014 05:41:07 -0700 (PDT) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.171] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.171] 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=EHgo8d/NinFvqx0H6EphLbAcYaxtXCWfYcYiFlqZ24w=; b=NVmIi/lRnGU+7Rv3/ITj6yYcGHwJrU9Q4/obm9r3m50l/tvKubgey2E41ZAu3qa8E+ DAPV1zIHbdthl0Ak4/pj+ODbDfONAd+qvLvt5wFUKJlqMkY82MjnY1UZSN7nhVwNX9Ql LX1HpzzvM3bT7SNU1R2wBbr7g+xm4Kv7vrbYLHIYH5eijJvwv/Ndy0KGcNUAei0J7n7i 78QmXl5zUyCy7x5TtOOwyUm1fKQhhzqkTTebh9IrMJ2KkedYXDVmcpie2mQKFN+3MXlz mncfSSP6AqJCUE/bJZbFzbXlNXlzeQNsx0P+OZB/R2QEvRq17qB0VEFBTU5iNvg5Oc3a P2Mw== MIME-Version: 1.0 X-Received: by 10.140.101.245 with SMTP id u108mr2431452qge.48.1404564067089; Sat, 05 Jul 2014 05:41:07 -0700 (PDT) Received: by 10.96.221.42 with HTTP; Sat, 5 Jul 2014 05:41:06 -0700 (PDT) Date: Sat, 5 Jul 2014 14:41:06 +0200 Message-ID: Subject: Data loss XFS with RT kernel on Debian. From: Jan de Kruyf X-ASG-Orig-Subj: Data loss XFS with RT kernel on Debian. To: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=001a11c1747648813a04fd718e56 X-Barracuda-Connect: mail-qc0-f171.google.com[209.85.216.171] X-Barracuda-Start-Time: 1404564067 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-BRTS-Status: 1 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=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7259 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 --001a11c1747648813a04fd718e56 Content-Type: text/plain; charset=UTF-8 Hallo, While doing a reasonably high density job like rsynching a subdirectory from one place to another, or tarring it to a pipe and untarring it at the other end, I note that the cpu usage goes practically to 100% and when I after 5 minutes or so I reset the computer the writing has not finished at all. However on the stock Debian kernel it works without a problem. Could I still use this combination in an industrial environment reading and writing reasonably short text files? So far I did not experience this problem with normal day to day use. It stuck up its head during installation of gnat-gpl-2014-x86_64-linux-bin from the http://libre.adacore.com/download/ page. The offending code is in the Makefile in the top directory page. The Xterm will give you the place where it gets stuck. Regards, Jan de Kruijf. Her are the details of the installation: root@jan:~# xfs_info -V xfs_info version 3.1.7 root@jan:~# xfs_info /usr meta-data=/dev/sda3 isize=256 agcount=4, agsize=732416 blks = sectsz=512 attr=2 data = bsize=4096 blocks=2929664, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 This combination does not work: root@jan:~# uname -a Linux jan 3.14-0.bpo.1-rt-amd64 #1 SMP PREEMPT RT Debian 3.14.7-1~bpo70+1 (2014-06-21) x86_64 GNU/Linux Also kernel 3.10-0.bpo.3-rt-amd64 does not work But this combination works: root@jan:~# uname -a Linux jan 3.2.0-4-amd64 #1 SMP Debian 3.2.57-3+deb7u2 x86_64 GNU/Linux --001a11c1747648813a04fd718e56 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hallo,

While doing a rea= sonably high density job like rsynching a subdirectory from one place to an= other, or tarring it to a pipe and untarring it at the other end, I note th= at the cpu usage goes practically to 100% and when I after 5 minutes or so = I reset the computer the writing has not finished at all.
However on the stock Debian kernel it works without a problem.

Could I still use this combination in an industrial envir= onment reading and writing reasonably short text files? So far I did not ex= perience this problem with normal day to day use. It stuck up its head duri= ng installation of=C2=A0 =C2=A0gnat-gpl-2014-x86_64-linux-bin from the http://libre.adacore.com/download= / page. The offending code is in the Makefile in the top directory page= . The Xterm will give you the place where it gets stuck.

Regards,

Jan de Kruijf.
<= div>

Her are the details of the installation:<= /div>

root@jan:~# xfs_info -V
xfs_info version 3.1.7<= /div>

root@jan:~# xfs_info /usr
meta-data=3D/dev/sda3 = isize=3D256 agcount=3D4, agsize=3D732416 blks
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =3D sectsz= =3D512 attr=3D2
=C2=A0 =C2=A0 =C2=A0 =C2=A0data =3D = bsize=3D4096 blocks=3D2929664, imaxpct=3D25
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=3D = sunit=3D0 swidth=3D0 blks
naming =3Dversion 2 = bsize=3D4096 ascii-ci=3D0
log =3Dinternal bs= ize=3D4096 blocks=3D2560, version=3D2
=C2=A0 =C2=A0 =C2=A0 =C2= =A0=3D sectsz=3D512 sunit=3D0 blks, lazy-count=3D1<= br> realtime =3Dnone extsz=3D4096 blocks=3D0, rtextents=3D0=

This combination does not work:
root@ja= n:~# uname -a
Linux jan 3.14-0.bpo.1-rt-amd64 #1 SMP PREEMPT RT Debian 3= .14.7-1~bpo70+1 (2014-06-21) x86_64 GNU/Linux

Also kernel 3.10-0.bpo.3-rt-amd64 does not work

But this combination works:
=C2=A0root@jan:~# u= name -a
Linux jan 3.2.0-4-amd64 #1 SMP Debian 3.2.57-3+deb7u2 x86_64 GNU= /Linux
--001a11c1747648813a04fd718e56-- From sandeen@sandeen.net Sat Jul 5 15:06:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 908737F5D for ; Sat, 5 Jul 2014 15:06:17 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 72ECC304048 for ; Sat, 5 Jul 2014 13:06:14 -0700 (PDT) X-ASG-Debug-ID: 1404590769-04cb6c76d148e920001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id chHCKU7xaDFAL34C for ; Sat, 05 Jul 2014 13:06:09 -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-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id EC1B363C6058; Sat, 5 Jul 2014 15:06:08 -0500 (CDT) Message-ID: <53B85AB0.30800@sandeen.net> Date: Sat, 05 Jul 2014 15:06:08 -0500 From: Eric Sandeen MIME-Version: 1.0 To: Jan de Kruyf , xfs@oss.sgi.com Subject: Re: Data loss XFS with RT kernel on Debian. References: X-ASG-Orig-Subj: Re: Data loss XFS with RT kernel on Debian. In-Reply-To: X-Enigmail-Version: 1.6 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: 1404590769 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7266 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 7/5/14, 7:41 AM, Jan de Kruyf wrote: > Hallo, > > While doing a reasonably high density job like rsynching a subdirectory from one place to another, or tarring it to a pipe and untarring it at the other end, I note that the cpu usage goes practically to 100% and when I after 5 minutes or so I reset the computer the writing has not finished at all. > However on the stock Debian kernel it works without a problem. > > Could I still use this combination in an industrial environment reading and writing reasonably short text files? So far I did not experience this problem with normal day to day use. It stuck up its head during installation of gnat-gpl-2014-x86_64-linux-bin from the http://libre.adacore.com/download/ page. The offending code is in the Makefile in the top directory page. The Xterm will give you the place where it gets stuck. http://lwn.net/Articles/457667/ -Eric > Regards, > > Jan de Kruijf. > > > Her are the details of the installation: > > root@jan:~# xfs_info -V > xfs_info version 3.1.7 > > root@jan:~# xfs_info /usr > meta-data=/dev/sda3 isize=256 agcount=4, agsize=732416 blks > = sectsz=512 attr=2 > data = bsize=4096 blocks=2929664, imaxpct=25 > = sunit=0 swidth=0 blks > naming =version 2 bsize=4096 ascii-ci=0 > log =internal bsize=4096 blocks=2560, version=2 > = sectsz=512 sunit=0 blks, lazy-count=1 > realtime =none extsz=4096 blocks=0, rtextents=0 > > This combination does not work: > root@jan:~# uname -a > Linux jan 3.14-0.bpo.1-rt-amd64 #1 SMP PREEMPT RT Debian 3.14.7-1~bpo70+1 (2014-06-21) x86_64 GNU/Linux > > Also kernel 3.10-0.bpo.3-rt-amd64 does not work > > But this combination works: > root@jan:~# uname -a > Linux jan 3.2.0-4-amd64 #1 SMP Debian 3.2.57-3+deb7u2 x86_64 GNU/Linux > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From tglx@linutronix.de Sat Jul 5 15:36:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 25F677F5E for ; Sat, 5 Jul 2014 15:36:18 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 12E7D30404E for ; Sat, 5 Jul 2014 13:36:17 -0700 (PDT) X-ASG-Debug-ID: 1404592574-04cbb065352c08b0001-NocioJ Received: from Galois.linutronix.de (www.linutronix.de [62.245.132.108]) by cuda.sgi.com with ESMTP id A72tw4V6dEmiMwMN (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Sat, 05 Jul 2014 13:36:16 -0700 (PDT) X-Barracuda-Envelope-From: tglx@linutronix.de X-Barracuda-Apparent-Source-IP: 62.245.132.108 Received: from localhost ([127.0.0.1]) by Galois.linutronix.de with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.80) (envelope-from ) id 1X3Wgt-00036l-B1; Sat, 05 Jul 2014 22:36:11 +0200 Date: Sat, 5 Jul 2014 22:36:10 +0200 (CEST) From: Thomas Gleixner To: John Blackwood cc: Richard Weinberger , Austin Schuh , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, linux-rt-users@vger.kernel.org Subject: Re: Filesystem lockup with CONFIG_PREEMPT_RT In-Reply-To: <537CFECF.9070701@ccur.com> X-ASG-Orig-Subj: Re: Filesystem lockup with CONFIG_PREEMPT_RT Message-ID: References: <537CFECF.9070701@ccur.com> User-Agent: Alpine 2.10 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 X-Barracuda-Connect: www.linutronix.de[62.245.132.108] X-Barracuda-Start-Time: 1404592575 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7267 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, 21 May 2014, John Blackwood wrote: > I'm not 100% sure that the patch below will fix your problem, but we > saw something that sounds pretty familiar to your issue involving the > nvidia driver and the preempt-rt patch. The nvidia driver uses the > completion support to create their own driver's notion of an internally > used semaphore. And why should we care about that? If they abuse the completion code then it's their problem. And it has nothing to do at all with the problem Austin is observing. > Some tasks were failing to ever wakeup from wait_for_completion() calls > due to a race in the underlying do_wait_for_common() routine. Why are you not fixing the nvidia crap instead of hacking utter shite into the core kernel? Thanks, tglx From sandeen@sandeen.net Sat Jul 5 17:08:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E7F7F7F47 for ; Sat, 5 Jul 2014 17:08:24 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 81F3EAC001 for ; Sat, 5 Jul 2014 15:08:23 -0700 (PDT) X-ASG-Debug-ID: 1404598098-04bdf05669807350001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id sOQOobJgtcuujkiI for ; Sat, 05 Jul 2014 15:08:18 -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-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 5329263C6058; Sat, 5 Jul 2014 17:08:18 -0500 (CDT) Message-ID: <53B87752.9000008@sandeen.net> Date: Sat, 05 Jul 2014 17:08:18 -0500 From: Eric Sandeen MIME-Version: 1.0 To: Jan de Kruyf , xfs@oss.sgi.com Subject: Re: Data loss XFS with RT kernel on Debian. References: <53B85AB0.30800@sandeen.net> X-ASG-Orig-Subj: Re: Data loss XFS with RT kernel on Debian. In-Reply-To: <53B85AB0.30800@sandeen.net> X-Enigmail-Version: 1.6 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: 1404598098 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7268 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 7/5/14, 3:06 PM, Eric Sandeen wrote: > On 7/5/14, 7:41 AM, Jan de Kruyf wrote: >> Hallo, >> >> While doing a reasonably high density job like rsynching a >> subdirectory from one place to another, or tarring it to a pipe and >> untarring it at the other end, I note that the cpu usage goes >> practically to 100% and when I after 5 minutes or so I reset the >> computer the writing has not finished at all. However on the stock >> Debian kernel it works without a problem. >> >> Could I still use this combination in an industrial environment >> reading and writing reasonably short text files? So far I did not >> experience this problem with normal day to day use. It stuck up its >> head during installation of gnat-gpl-2014-x86_64-linux-bin from the >> http://libre.adacore.com/download/ page. The offending code is in >> the Makefile in the top directory page. The Xterm will give you the >> place where it gets stuck. > http://lwn.net/Articles/457667/ Ok, sorry - that was a little short ;) If you have some 100% cpu livelock or whatever, that does sound like a potential bug. Perhaps some tracing or profiling can help figure out what has gone wrong there. Maybe sysrq-t & see where the active threads are, or even top? But if you are surprised that you lost data when you did a hard reset, the URL above is informative. -Eric From david@fromorbit.com Sun Jul 6 18:54:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D73287F3F for ; Sun, 6 Jul 2014 18:54:55 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id B35C88F8033 for ; Sun, 6 Jul 2014 16:54:52 -0700 (PDT) X-ASG-Debug-ID: 1404690890-04cbb065362e7e80001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id RblbTyadBcoLLwNk for ; Sun, 06 Jul 2014 16:54:50 -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: As1HALvguVN5LA/TPGdsb2JhbABagw6DSqkxAQaaVgGBCxcEAQEBATg1hAMBAQQBOhwjBQsIAw4KCSUPBSUDBxoTiDoHyTgXGIVYiTIHhEMFmnWXYis Received: from ppp121-44-15-211.lns20.syd6.internode.on.net (HELO dastard) ([121.44.15.211]) by ipmail05.adl6.internode.on.net with ESMTP; 07 Jul 2014 09:24:45 +0930 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1X3wGa-0007Sz-4e; Mon, 07 Jul 2014 09:54:44 +1000 Date: Mon, 7 Jul 2014 09:54:44 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 4/6] libxfs: reused invalidated buffers leak state and data Message-ID: <20140706235444.GP9508@dastard> X-ASG-Orig-Subj: Re: [PATCH 4/6] libxfs: reused invalidated buffers leak state and data References: <1404453435-1915-1-git-send-email-david@fromorbit.com> <1404453435-1915-5-git-send-email-david@fromorbit.com> <20140704141509.GB29520@infradead.org> <20140704222210.GM9508@dastard> <20140705094807.GB18130@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140705094807.GB18130@infradead.org> 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: 1404690890 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7299 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Jul 05, 2014 at 02:48:07AM -0700, Christoph Hellwig wrote: > On Sat, Jul 05, 2014 at 08:22:10AM +1000, Dave Chinner wrote: > > I'm open to other ways of fixing this, but right now we've got to > > fix xfs_repair because it's currently breaking filesystems worse > > than before xfs_repair was run... > > Ok, so clearly mark this as difference from kernel code in a long > comment explaining the situation similar to wrote you above. Will do. > It's > pretty obvious that the buffer cache in userspace will eventually need > a major overhaul sooner or later. I wonder how feasible porting the > kernel one would be.. It's not so much the porting that's the issue - it's cleaning up all the applications that use it that is the headache. And, realistically, I don't think there's much of the kernel code that can be used - we have to rewrite all the allocation, freeing, locking and IO parts of it, so we'd pretty much be re-implementing most of it, anyway.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Jul 6 18:57:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id DDD2B7F4E for ; Sun, 6 Jul 2014 18:57:34 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id B898E8F8033 for ; Sun, 6 Jul 2014 16:57:34 -0700 (PDT) X-ASG-Debug-ID: 1404691052-04cbb065382e7f60001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id bU3WbVO2cDB7Fzhb for ; Sun, 06 Jul 2014 16:57:33 -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: AslHAB7iuVN5LA/TPGdsb2JhbABagw6DSqkxAQaaVgGBCxcEAQEBATg1hAMBAQU6HCMQCAMYCSUPBSUDBxoTiEHJOxcYhViJMgeEQwEEmnWXYis Received: from ppp121-44-15-211.lns20.syd6.internode.on.net (HELO dastard) ([121.44.15.211]) by ipmail05.adl6.internode.on.net with ESMTP; 07 Jul 2014 09:27:02 +0930 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1X3wIn-0007TW-PP; Mon, 07 Jul 2014 09:57:01 +1000 Date: Mon, 7 Jul 2014 09:57:01 +1000 From: Dave Chinner To: Jan de Kruyf Cc: xfs@oss.sgi.com Subject: Re: Data loss XFS with RT kernel on Debian. Message-ID: <20140706235701.GQ9508@dastard> X-ASG-Orig-Subj: Re: Data loss XFS with RT kernel on Debian. 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: 1404691052 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7299 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Jul 05, 2014 at 02:41:06PM +0200, Jan de Kruyf wrote: > Hallo, > > While doing a reasonably high density job like rsynching a subdirectory > from one place to another, or tarring it to a pipe and untarring it at the > other end, I note that the cpu usage goes practically to 100% and when I > after 5 minutes or so I reset the computer the writing has not finished at > all. > However on the stock Debian kernel it works without a problem. Which says that it's a RT kernel problem, not an XFS issue. There have been other recent reports of issues with RT kernels, and they have proven to be core RT kernel bugs, not filesystem issues. I'd suggest that you are likely to be seeing the same RT issues.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Jul 6 19:09:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 3BD0F29DF8 for ; Sun, 6 Jul 2014 19:09:37 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id C723EAC002 for ; Sun, 6 Jul 2014 17:09:36 -0700 (PDT) X-ASG-Debug-ID: 1404691770-04cb6c76d14b6dc0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id 3XO8VCYgDyc1is0e for ; Sun, 06 Jul 2014 17:09:31 -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: As5HAHHkuVN5LA/TPGdsb2JhbABagw6DSqkxAQaaVgGBCxcEAQEBATg1hAMBAQUnExwjEAgDDgQGCSUPBSUDBwYUE4hByToXGIVYiTIHhEMFmnWXYis Received: from ppp121-44-15-211.lns20.syd6.internode.on.net (HELO dastard) ([121.44.15.211]) by ipmail05.adl6.internode.on.net with ESMTP; 07 Jul 2014 09:39:30 +0930 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1X3wUr-0007VQ-94; Mon, 07 Jul 2014 10:09:29 +1000 Date: Mon, 7 Jul 2014 10:09:29 +1000 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 4/6] libxfs: reused invalidated buffers leak state and data Message-ID: <20140707000929.GR9508@dastard> X-ASG-Orig-Subj: Re: [PATCH 4/6] libxfs: reused invalidated buffers leak state and data References: <1404453435-1915-1-git-send-email-david@fromorbit.com> <1404453435-1915-5-git-send-email-david@fromorbit.com> <20140704141509.GB29520@infradead.org> <20140704222210.GM9508@dastard> <20140705094807.GB18130@infradead.org> <20140706235444.GP9508@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140706235444.GP9508@dastard> 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: 1404691770 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 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=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.7298 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Jul 07, 2014 at 09:54:44AM +1000, Dave Chinner wrote: > On Sat, Jul 05, 2014 at 02:48:07AM -0700, Christoph Hellwig wrote: > > On Sat, Jul 05, 2014 at 08:22:10AM +1000, Dave Chinner wrote: > > > I'm open to other ways of fixing this, but right now we've got to > > > fix xfs_repair because it's currently breaking filesystems worse > > > than before xfs_repair was run... > > > > Ok, so clearly mark this as difference from kernel code in a long > > comment explaining the situation similar to wrote you above. > > Will do. Ok, I added this to the top of the libxfs/rdwr.c file: /* * Important design/architecture note: * * The userspace code that uses the buffer cache is much less constrained than * the kernel code. The userspace code is pretty nasty in places, especially * when it comes to buffer error handling. Very little of the userspace code * outside libxfs clears bp->b_error - very little code even checks it - so the * libxfs code is tripping on stale errors left by the userspace code. * * We can't clear errors or zero buffer contents in libxfs_getbuf-* like we do * in the kernel, because those functions are used by the libxfs_readbuf_* * functions and hence need to leave the buffers unchanged on cache hits. This * is actually the only way to gather a write error from a libxfs_writebuf() * call - you need to get the buffer again so you can check bp->b_error field - * assuming that the buffer is still in the cache when you check, that is. * * This is very different to the kernel code which does not release buffers on a * write so we can wait on IO and check errors. The kernel buffer cache also * guarantees a buffer of a known initial state from xfs_buf_get() even on a * cache hit. * * IOWs, userspace is behaving quite differently to the kernel and as a result * it leaks errors from reads, invalidations and writes through * libxfs_getbuf/libxfs_readbuf. * * The result of this is that until the userspace code outside libxfs is cleaned * up, functions that release buffers from userspace control (i.e * libxfs_writebuf/libxfs_putbuf) need to zero bp->b_error to prevent * propagation of stale errors into future buffer operations. */ Is that sufficient for the moment? -Dave. -- Dave Chinner david@fromorbit.com From kondik.c@iol.cz Mon Jul 7 02:52:07 2014 Return-Path: X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 733137F3F for ; Mon, 7 Jul 2014 02:52:06 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 4F38FAC001 for ; Mon, 7 Jul 2014 00:52:05 -0700 (PDT) X-ASG-Debug-ID: 1404719517-04cbb065362f2320001-NocioJ Received: from smtp-out3.iol.cz (smtp-out3.iol.cz [194.228.2.91]) by cuda.sgi.com with ESMTP id mU8CO70xIbk7CD9g; Mon, 07 Jul 2014 00:51:57 -0700 (PDT) X-Barracuda-Envelope-From: kondik.c@iol.cz X-Barracuda-Apparent-Source-IP: 194.228.2.91 Received: from antivir5.iol.cz (unknown [192.168.30.212]) by smtp-out3.iol.cz (Postfix) with ESMTP id 103E1C00040; Mon, 7 Jul 2014 09:21:21 +0200 (CEST) Received: from localhost (antivir5.iol.cz [127.0.0.1]) by antivir5.iol.cz (Postfix) with ESMTP id 6C9A2510048; Mon, 7 Jul 2014 09:21:20 +0200 (CEST) X-Virus-Scanned: amavisd-new at iol.cz Received: from antivir5.iol.cz ([127.0.0.1]) by localhost (antivir5.iol.cz [127.0.0.1]) (amavisd-new, port 10224) with LMTP id b+GrTw8jCC-i; Mon, 7 Jul 2014 09:21:19 +0200 (CEST) Received: from port7.iol.cz (unknown [192.168.30.97]) by antivir5.iol.cz (Postfix) with ESMTP id 9C7EC510043; Mon, 7 Jul 2014 09:21:14 +0200 (CEST) Message-Id: X-SBRS: None X-SBRS-none: None X-RECVLIST: MTA-OUT-IOL X-IronPort-AV: E=Sophos;i="5.01,616,1400018400"; d="pdf'?jpg'145?scan'145,208,217,145";a="107669701" Received: from digitalpound.net (HELO User) ([37.0.125.92]) by smtp.iol.cz with ESMTP; 07 Jul 2014 09:19:29 +0200 Reply-To: From: "Google UK Ltd" Subject: Date: Mon, 7 Jul 2014 11:20:52 +0400 X-ASG-Orig-Subj: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_00A9_01C2A9A6.210A6442" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 To: undisclosed-recipients:; X-Barracuda-Connect: smtp-out3.iol.cz[194.228.2.91] X-Barracuda-Start-Time: 1404719517 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: -1001.00 X-Barracuda-Spam-Status: No, SCORE=-1001.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 This is a multi-part message in MIME format. ------=_NextPart_000_00A9_01C2A9A6.210A6442 Content-Type: multipart/related; boundary="----=_NextPart_001_00AA_01C2A9A6.210A6442" ------=_NextPart_001_00AA_01C2A9A6.210A6442 Content-Type: text/html; charset="Windows-1251" Content-Transfer-Encoding: 7bit
Google UK Ltd
Belgrave House
76 Buckingham Palace Road
London SW1W 9TQ
United Kingdom.
Ref No: GUK/ 8900/88/2014
Batch: GUK/ 955/GPKLI/UK
RE: OFFICIAL NOTIFICATION LETTER.
 
It is obvious that this notification will come to you as a surprise but please find time to read it carefully as we congratulate you over your success in the following official publication of results of the E-mail Electronic Online Sweepstakes Organized by Google, in conjunction with the foundation for the Promotion of Software Products (F.P.S.). Google earns its profit mainly from advertising using their very own Google search engine, Gmail, Gala, Sify, e-mail service Google Maps, Google Apps, Orkut social networking and You Tube video sharing, which are all offered to the public for free.
 
We wish to congratulate you once again, for being among the Twelve (12) selected winners in the ongoing E-mail Electronic Online Sweepstakes; we do believe with your prize, you will continue to be active in your patronage to Google and its Products. A Bank Cheque have been issued in your favor, hence you have won for yourself the sum of £950.000.00 (Nine Hundred and Fifty Thousand Great British Pounds Sterling), One Google Nexus 10 Tablet and also you have been enlisted as one of the Google Ambassadors for 2014.
 
To claim your reward, please contact our Foreign Payment Bureau officer below by neatly filling the verification and funds release form below, as your payment will be released and arranged by our United Kingdom Office.
 
MANDATORY FOREIGN PAYMENT RELEASE FORM.
(1) Your Contact Address:
(2) Your Contact Telephone/Mobile Number:
(3) Your Nationality/Country:
(4)Your Full Names:
(5) Occupation:
(6) Age/Gender:
(7) Marital Status:
(8) Private Email Address:
(9) Ever Won An Online Lottery?
(10) How Do You Feel As A Winner?
(11) Your preferred mode of prize remittance stated below:
         * Courier Delivery of your certified winning cheque in your name and other Winning documents safely to your home address.
 
 
…………………………………………………………………………………………………
 
Contact our Foreign Payment Bureau officer below:
David C. Drummond
Senior Vice President, Corporate Development and Chief Legal Officer with the E-mail account as follows:
Email: claimsunit115@gmail.com
……………………………………………………………………………………………
 
Note: You can either fill your claims verification form by printing and manually filling out the requested details or you can fill directly on e-mail, or provide the details on Microsoft Word.
 
NOTE: For security reasons, you are advised to keep your winning information confidential till your claims are processed and your money remitted to you. This is part of our precautionary measure to avoid double claiming and unwarranted abuse of this program by some unscrupulous elements. Please be WARNED!!!!
 
Congratulations from the Staffs & Members of Google Board Commission.
 
MD Matt Brittin,
Chairman of the Board and Managing Director,
Google United Kingdom
©2014 Google Corporation.
------=_NextPart_001_00AA_01C2A9A6.210A6442 Content-Type: image/jpeg; name="img1.jpg" Content-Transfer-Encoding: base64 Content-ID: <00CF558EFF2D$0029E55C$0100007f@ltzhodpbwosoxox> /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQE BQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/ 2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAA7ANoDASIAAhEBAxEB/8QA HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEB AQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAEC AxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9QCMZ4x9f xpSMZ4/zzQRjOR/nmuQ+IXxa8H/CvTpLzxTr1rpMajIjkbdK3XGEAJOe1a06 VStJQpxbb6LUic4wXNN2R1xGM8Y+v40pGM8f55r5/X9qi88TN/xR3w/1PUbd vuXut3KadG47Mse15SD2Oyrg+IPxpvVL2vg3wrEMZCPdXsp/E+Sn8q6Xg6kd Jyiv+3l+jdvmZKtF/Cm/k/1PcyMZ4x9fxpSMZ4/zzXzpqvxn+NvhlGlvvhRp OrwJ97+ytVlSTH+7LEP51yQ/4KNeE/D1/wDYvHHg/wAQ+ErkEIwdFmwT/snY x/AGuqnlOKrxcqPLO2rtKLf3Xv8AgZSxlKDtUur90/ztY+tyMZ4x9fxpSMZ4 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 AAA6CgD/2Q== ------=_NextPart_001_00AA_01C2A9A6.210A6442-- ------=_NextPart_000_00A9_01C2A9A6.210A6442 Content-Type: application/octet-stream; name="Google PROMO.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Google PROMO.pdf" JVBERi0xLjUNJeLjz9MNCjIzIDAgb2JqDTw8L0xpbmVhcml6ZWQgMS9MIDIz MjQzMy9PIDI1L0UgMTgyNzczL04gMi9UIDIzMjEwMS9IIFsgNDk2IDE5OV0+ Pg1lbmRvYmoNICAgICAgICAgICAgICAgDQo0MCAwIG9iag08PC9EZWNvZGVQ YXJtczw8L0NvbHVtbnMgNS9QcmVkaWN0b3IgMTI+Pi9GaWx0ZXIvRmxhdGVE ZWNvZGUvSURbPDQ0RjREMTcwOEQ0MjFGNDc5MDAyM0VGQTBFOTFBRDIxPjww MjQ3RTFBNUYyNjU3QTQzQTEzOTFFNkQ5RTI2NDY2RT5dL0luZGV4WzIzIDMz XS9JbmZvIDIyIDAgUi9MZW5ndGggOTAvUHJldiAyMzIxMDIvUm9vdCAyNCAw IFIvU2l6ZSA1Ni9UeXBlL1hSZWYvV1sxIDMgMV0+PnN0cmVhbQ0KaN5iYmRg EGBgYmBgWg4iGb3AZCOIZOYHkSzMYJIHTMqByTKwbAqYPRXM5gOTd4Ako9FB ELvDHsSumg5iByQDyX8RQBJo1zKQCNAGqpH/GRivfQYIMAD+kg01DQplbmRz dHJlYW0NZW5kb2JqDXN0YXJ0eHJlZg0KMA0KJSVFT0YNCiAgICAgICAgICAN CjU1IDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9JIDExOC9MZW5ndGgg MTE4L1MgNTg+PnN0cmVhbQ0KaN5iYGBgY2BgsmJgYWDY2M8gxIAAQgzMQFEW Bo4JrZEODAxTGBjkVx/g6GDuaADzgYCdgbm6GUjzA7EASIBRhUGQQa+h6kD0 A70G8QucHiwNTIUMXxny1IxXJG4+PdPij2MD1HQuBubO+yAtQHwMIMAAPpkY rQ0KZW5kc3RyZWFtDWVuZG9iag0yNCAwIG9iag08PC9MYW5nKGVuLVVTKS9N ZXRhZGF0YSA4IDAgUi9QYWdlcyAyMSAwIFIvVHlwZS9DYXRhbG9nPj4NZW5k b2JqDTI1IDAgb2JqDTw8L0NvbnRlbnRzWzI3IDAgUiAyOCAwIFIgMjkgMCBS IDMwIDAgUiAzMSAwIFIgMzIgMCBSIDMzIDAgUiAzNCAwIFJdL0Nyb3BCb3hb MCAwIDYxMiA3OTJdL0dyb3VwPDwvQ1MvRGV2aWNlUkdCL1MvVHJhbnNwYXJl bmN5L1R5cGUvR3JvdXA+Pi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vUGFyZW50 IDIxIDAgUi9SZXNvdXJjZXM8PC9FeHRHU3RhdGU8PC9HUzQgNDEgMCBSL0dT OCA0MiAwIFI+Pi9Gb250PDwvRjEgNDUgMCBSL0YyIDQ4IDAgUi9GMyA1MSAw IFIvRjQgNTQgMCBSPj4vUHJvY1NldFsvUERGL1RleHQvSW1hZ2VCL0ltYWdl Qy9JbWFnZUldL1hPYmplY3Q8PC9JbWFnZTE1IDM5IDAgUj4+Pj4vUm90YXRl IDAvVGFicy9TL1R5cGUvUGFnZT4+DWVuZG9iag0yNiAwIG9iag08PC9GaWx0 ZXIvRmxhdGVEZWNvZGUvRmlyc3QgMTAxL0xlbmd0aCA2ODYvTiAxNC9UeXBl L09ialN0bT4+c3RyZWFtDQpo3qxV207bQBD9lZH62MLOXm1LKFISkrYS8ACo VEI8LMEKloyDHNPSv+/MOk6cEIKTVquJd+eycz0bIwHBKDD0qyEyYAyohM6W PhEYRwyiCFxMzBikRAsmAamcAosgLcZgJcgoScAqkInTYDUohfSlu5RGODkR g3NxMSuffC6u/zynYvRafb2qfJWKiQc8tkh2vd4HejJo9OeTtKggsij6v6Y3 2UP1SI6lGPrnb2k2faxFp2mtdqToMM79dA5aifGsqAaD2evtkaXwWEaJUOpk cReE4yxPFWhLRbkMjAv/lIr+YHg6Gn0e+jy7L7PAv6ldGUTxvSL+pF9M8xRQ nPvXOiYZGS2uqvTpB4VXZ8OGHFiZPVezUvxcxEth9Hq3Srk7LoCfp6y36XRU TGYPWTEVN1nRL+bZ8jzOynk1fPRlk+DKA7eUEznzK42Q0FiKq5f7imO6Ll/S ENwyQhHin/MkkHG75ol2q5prp9o1V3Gr5nJrzSWNEMtAIiJbrNXcba15v8x8 /knhhS/L2e/dpT9LPVeEZrLVBXK66AIF36ULMcXRLEuDj6AiHYg5LA9n/hIZ 6zpRo1/fy5xYq3B/IEJcIN6jBKfjcK4tmMsWLtaBG6QMyYVWY9Xso8gsY2+v ZTwS1+Jq9twfJpbzl/29yYNyZ/nSjvbsN9y5oP+92M/q5NBsw8nGoBwGF7cO F+mSBV5UF7xEB+MF4214UdIE2Xa8RB3w8qUGyC7YHCXH0RI5SrWQQ+73Rc46 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 KWjc90nGYV0jHzSq/LNky1HsedcdcWv/Jy6UtN6Cjf+4YzjXdK0un4onc3Su WZfMQ3Ub9dA0k8g9axJ4vRX1LrqqbpixYS3g6Aa1nJ2SDASYMTTQrzzIXgZI nt1alGZ3t5GE9QrKow8whNRbWkdao0XqNF7KjeWPELBOjIuRNyFYTBzb1Jp4 h5g7trrUa43w3csZz/defBk4u6yKd3prUCBdl3IJolbWBLmt6oAQali8+m16 gAavFCcbzpiB4BKb5wkbI8JecOzR5oFyPVDBRWv1DEN2jHP/i30z0kgWcSGa eIGidPSeINaZfgaZCTyOfMDA+OLAjTS1qyV+3Z9qN45rcjr7QcVNrjK3za0X 1qNDV+sQgXMuQGTX+5nWrXrIcfMMCHhhM4XefoqJJTrtnuLAPLVQMSCKnLDH l85O9thSzj3ycMXVed8Y7nmEZD840qCIu2n1Q+F8h713zTsHEdQF1xpfrTjc C9w3fK3x8MTo87Ihzz8BBgANzZB4DQplbmRzdHJlYW0NZW5kb2JqDTI5IDAg b2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggOTg0Pj5zdHJlYW0N CkiJXFWxjlw3DOwX2H94ZZKClkRSotoAtgG32S5IZcBO48r/D3hmdD7vGQfc QnoSOZwZUjePbqOuaN1mXO5pvV++02JdPso2NmubX5/vt//vty9/3W+e3QpX +rAR1zds+La9rxhhPXSrYeXTml/ep40rYtkejOF9mXNjW0t8LYu4Ipt15Ovb cmIFSFuH3W04Dk99RpDWserm8/LZbJ40Q+gIS5HT8BWHNkMFf9wH9mKGuf+M i2pjpjnieijSnBZdFCzknMti6jDSTmxkWuJwAiOzIAJWq1tg5d1W6fBqxB4O cChvbgKPgTugYhZrDvCDPEIcBhQAw6/RlMbLnCRO20tpXlCgTufnkEAsssT4 QhpAawjUodqJ69Kjo15+HbZxszuRvRXvSdRy5mXCJU3XsEoR2HFrDnJOBpFW MQBuJasTRZvKB+4EEkIukoLiF+tiRNB5Dg7RM0UBS66tg0XitwVWoHQcehCH Za1la6mMxOcKqkwZOuDtRiQ8DDskNuBVOndCfq7AOFcu9DVtzp+HJxCiZjDj uURJdZUKMhl5FWvR4TxmWbLSghfphqU8DDlk0H30r6SYNCEqc4ANriATV08U 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 UC71RK6rZ3RSraQaDRAFyguGAfpeUDnl4PS0REukkwiNrD4owbraEmdtYL/W XIzFGba19DwbhKoXuNI2ND2ScxytNrrRrtL4KDgQrMEoabsw9FPXCIdjzsee b1mTztU8aXNiJqcS6Oev/PA0aDioTTDbofzAC1QdjNIlz6eExecBcy2m7NgD 51asbcnif+yx3p6nYKtoRPlkoaJgyHKsKfipzzb3sVdNwfJH1VFhneUuUVyr XAqFXf3GG10PmI5Lgs8nSoWBHToWj/X7gdYNb214W6a7Qi5Gkoi8SCVXttyy MI6V77CXjmZO9qq+96onbmuMDOM6gx8ysinxJYIlesqjV9cE4ag3XUxGQoM5 7y6VPohvlTrtdLZzTvcvrs2dvehuPA621hdqoyGVc9yeRKN+l0mtwheG3MUz 7Eyxa0zbOs/pZo9oFgaeCpOhZrf0jXza8n/YIFXJosV+Rx5523ibHQtjuNgg c8lfbnW9RunNwd4S0/XmM9Wc9aayzlEddd0B7Qztflvl5fS6UVOHee0k7DUN LgS6H1T6ve5ypfnylJNxxZGrfSU8X85isZJ8l3C9e2NmJrftK6Z8S27rtoM1 +Ipi940rnM7O7uXy1lHuUbyhtR+qhdP6fgybqniAhT8CDACzPdbkDQplbmRz dHJlYW0NZW5kb2JqDTMyIDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9M ZW5ndGggODQ3Pj5zdHJlYW0NCkiJjFXBbtswDL0H6D/waAGNYNmOE2OndWg7 7NAVaG7tDo5jN0LduLOVZtnv7EdHUpITdzU6FFUkmSKfHh+pyX0wFT9g+e1s crk8m1zgv4IQ/xQslFykCSRRIrMMls9nk/vgWcRBLqZxoGuRBHAppklQl4Wh rbbZ0lIXMOJQJQs5H/r7LhbBlg7XGv3xrKQB7sjVXqjIrnl4oaEzeIQhPPFm 92kkWpQoGc2G4caQRUkiQzW0PQaHNWJreLbCWdnj5dmrtdlrsjcbMZ0FcGjw 645JgZdWj0SNZ5lcxMOov9nbOdCIXlLrBb0T3zUUDIN5MhgwxKkzsSgMLt8g hZwgFUYj0DQAzYcHCEfgzSMZRph/paTy8DgFzL6hdLv5Izr28XEk2HDtZ421 IM5KwHVub5AGaz6hTYcJhVvKd9us6YdhFXQ700k2+kzbgHYXYhqhh9RS8ARf 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 LYsyX+gWIruyqrSTsgIOLJF783voZfT3aPq/52tpJtceNE9cVsCcGOl9mF8z Mwh0Mx14rjl2f5wNOBhfxnbkVSahZot1+sVhSM4RiUHQDdV2895AgaqKuG8A BFwg+Vd7h2GWwBQ5M3QOgDBkKrV1W0wbJtAaWpybvNTHQ5ymcdGnsck3MIM3 zBUyS5nkl8HrcpBJJuMLB3AasvhV3UffG4QsNB8gbZxAY8MfiBLupRRGme9N r0gFLuGGUuhW4o2V6EfUV2QOjoff1rNlzhVcQeSX75H/AgwAa+CG2Q0KZW5k c3RyZWFtDWVuZG9iag0zNSAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUv TGVuZ3RoIDc4NDQyL0xlbmd0aDEgMTczNDcyPj5zdHJlYW0NCnic7H0HfFRV 2v45904vmZkkkzZJ5oZJQiCkkFASQBhIo7cwmIBCelFKTKEJiqKgARTXrqjo 2rFMBtTYG/ZeVnftrK6rq9hWXUUg/+fed04IrPrf/b7dz/X75pw893nOe8o9 5z1lDj8zkXHGmBsPHZtdWjmlYvu5W8qZ1L2HsaS3yiaVzssb6riZsR3zGOOP l02aXnJZS7mdsSvTGZPyK0rLyv/86NeQG19lTP6sYvasymlDx0iMXZPM+Pbu isrApHPGTH2ESeNvZGzysFmVeQXfv/U7F9r6Pd5aU7+0tm1MSC1fYEIje+pX dCrBy/e8zFjtd4zpk5vampd+++0MG2MjnmXMnNRc29HGkpkP749FfWfzktVN pVFd7zPWjLR1VEtjbcPnLulqtH8c8ke1wGC/1SYjfQHS6S1LO1eN/tz4Bt5V xFjeiyc2ti/jg/hGxrZtR37CkuX1tUm3JDzMWPt0xlJnLq1d1ZZWmP4c6vci X1lWu7Qx5ZaTTkP53YzZx7ct7+js8zDUv+JrNb+tvbHtxNulQ4wd8xFe52Sq b/VvDWkbnJuy2DHuG5aIYSLc+8naZ1V+3r5o3w/7D242f2oahaSZSYwC6hnY Icb3WHb8sH//DvOnWksDgukR1eLIZLOYno2DlpiT5bFGxlzbtPdyJuuy+Tbk mvSX6gvRZCqx/CLbKDETkxx6SZJ0sqR7j0l9fnZLH72XsRmVisL8jKUUUx+M V0qZCuNXqXnyXfoodaRoPepwb/gL7P98MLzObvml+/C/Jega2dW/dB/+mWAw /Hv6K+/7dfnh3xF0I1jNL92HSPjvB+lpdukv3YdfQ5D+xCb/V+rxb9mSf3Vf IiESIiESIuG/HqTLueUn82rYvv/JvvxagjySbf6l+xAJkRAJkRAJv66gW8rO +aX7EAmREAmREAmREAmREAmREAmREAn/e0Lk35mREAmREAmREAmREAmREAmR 8CsOchjJ4W8brEEKSmpiOrYI6WjmhEX9joKdDWIzWANrZztSivv6tNJ2phxh 433fMNb3N3YnT+qr/2RTuM2oI98oT5UvZgb+qZb68uhvOWjfa6DvREjs5wMf 0N6/I5T+M4V50s/kbfnvduV/OMj/0tb+rSvJX9GweNHxxy1cUF0VmFc5d87s WTNnTJ82dcrkivKy0pJJE/0Txh8zbuyY4qLRo0bm5eYMy8rMSPcN8ibEupwO u9ViNhkNep0scTaszFdeowQza4K6TN/kyTlq2lcLQ+0AQ01Qgan8yDJBpUYr phxZ0o+STUeV9FNJf39J7lTGsXE5w5QynxJ8rtSn9PIFc6qgt5b6qpXgPk3P 0LQuU0vYkUhLQw2lLKGlVAnyGqUsWL6ipbusphTt9VgtJb6SRkvOMNZjsUJa oYJZvrYenjWea0LKKhvTIzGTXX1tUM4oq20Izp5TVVbqSUur1mysRGsraCgJ GrW2lFa1z2yz0jPsoe4tvU5WV5Nta/A11B5XFZRrUalbLuvu3hR0ZQeH+EqD Q9Z8kIAhNwaH+UrLgtk+NDZtbv8LeFCf4fQp3d8wdN6379MjLbVhiyHD+Q1T pTrEfjchX2iGvqGHGF9amtqXzb1+VodEcP2cKkorrM4TYv687OqgVKPmPCRy 3AE1Z73I6a9e40tTp6qsJvyzoiUhuL5OyRkG72s/GfhBvhKUM2vq6ltUrm3s 9pWWkt/mVQX9pRD+2vBYy3ry81C+tgaDaFXdMKcqmOdrC8b6JlEBGBR1Dlor q7Qq4WrB2JIgq6kP1wrmlZWq/VLKumtKqYNqW745VXezwr73ekYonl2FbASr VvsRjCvBpGSWdVc1NAW9NZ4GrM8mpcqTFvRXw33VvqrGanWWfM7gkPfwujTt jVotjO2o0qKwOnJjhkmpkjxytTpbMCjlePgmjUOGE9OlJdUZnTROqeIeJorh LeESqjqiHSTkjJLJapasVi2Z7EmrTqPwM13yhPukzwiaBrTlhKG/T/Sen+wa lVY7NEQpaywd0MEjGtWHOxhu7cf7Kam+CL8YNUzqdE4WWXIGdi5sEprRTOos JihBNlup8jX6qn1YQ/7ZVerYVF9r8zut0jdtzoIqbbbDq2TeESnKL6JUkKUh WySkEqzB8myPmFYtXaGl+5OTj8qeIrKVbpNvWmW32rgv3CBTsIMwaEPmlNrN RdEjsDXLcbr5ymt9ilMp767t7Vtf193j93e3ldW0jFHb8E1p6PZVVo3zaH2d W7XOs0Z9VTSbxqfNm5QzDGfPpB4fP2tOj5+fVbmg6m4nY8pZ86pCEpdKaiZV 96Qjr+puhTG/ZpVUq2pUE4qaUFuai4RJK++528/Yei1Xpxm0dH0vZ5rNJGyc 1fdKZHMKmwSbjmx+zaYGTFJCC1yM47ZMaVCnZ211S3dNtbq5WBymEj88yH3j WVDyje/hksEWtPgaJwWtvkmqfYJqn0B2g2o3YmHwOA7nqGdSd40P5xQWVBXz cFqKstqk0tvXN68q7TnPvuo0LLXjgAVVQXM2zn59xlSUq1BRA3NFcH19rdoP FqhS6xozptRXY9mKBlFkStCMFszhFlCiXKujLkdUqsfcYAK1+uuRCK6vDlZn qy+taq3WlrMzyCb7xmDaqU19pvqivOruaF+BtjexFSwZm1Qyo2+ssoosHiTx smpyktGGntf7kFVfo8DbOlZfiaVOZ6nFQ5ZGHIm6zEYNFk84k6nDkjOsdkvQ nIsG8aNqa666JfUZxupq6ryW2hQugHc7g1b0KHOAK8MV4B1kTVH7gp9N6Kpa 9GG1mTm9bK5vFU4WtdNaS0ZkB+0ZU2px+FN9Kyy+IlHZpJ4R1nAbe8hqVEdu g9/ljHm9fTf4VqcNCDnDfOqHg7owmeduLGxW3X20IbgwO2eY6WirXTN3d5vs P16B/GWy97NqVMrwqcFYyCwrvdIZu80JfCrEBiFOF+I0IdYLcaoQpwixToi1 QpwsxBohVguxSoiVQqwQokuITiE6hDhJiDYhlguxTIilQiwR4kQhThCiVYgW IZqFaBKiUYgGIeqFqBOiVogaIRYLsUiI44U4ToiFQiwQolqIKiGOFWK+EAEh 5glRKcRcIeYIMVuIWULMFGKGENOFmCbEVCGmCDFZiAohyoUoE6JUiBIhJgkx UQi/EBOEGC/EMUKME2KsEGOEKBaiSIjRQowSYqQQI4QoFKJAiOFC5AuRJ0Su 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 gEnARMAPTADGA8cA44CxwBigGCgCRgOjgJHACKAQKACGA/lAHpAL5ADDgGxg KDAEyAIGA5lABpAO+IBBQBqgAF4gFUgBkgEPkAQkAglAPBAHuIFYIAaIBlyA E3AAUYAdsAFWwAKYARNgBAyAHtBN7MNTBiSAA4w1cNj4IeAgcAD4AdgPfA98 B/wN+Bb4Bvga+CvwFfAl8AXwOfAZsA/4FPgE+AvwMfAR8GfgQ+BPwAfA+8Af gb3Ae8C7wDvA28BbwJvAG8AfgN8DrwOvAb8DXgVeAV4GXgJeBF4AngeeA54F ngGeBp4CngSeAB4HHgP2AI8CjwAPAw8BDwIPAPcD9wH3AvcAdwO9wF3AncAd wG5gFxACeoAgcDtwG3ArcAuwE7gZuAm4EbgBuB64DrgW+C1wDXA1sAO4CrgS uALYDlwOXAZcClwCXAxcBFwIXACcD/wGOA/YBpwLnANsBbYAm4Fu4GzgLGAT sBE4kzVMXM+x/zn2P8f+59j/HPufY/9z7H+O/c+x/zn2P8f+59j/HPufY/9z 7H+O/c+x/zn2P28HcAZwnAEcZwDHGcBxBnCcARxnAMcZwHEGcJwBHGcAxxnA cQZwnAEcZwDHGcBxBnCcARxnAMcZwHEGcJwBHGcAxxnAcQZwnAEcZwDHGcBx BnCcARxnAMcZwLH/OfY/x/7n2Psce59j73PsfY69z7H3OfY+x97n2Psce/+X Pod/5aH6l+7ArzwkLF7EmPFKxg6df8RvUc9mJ7AOth5xI9vKzmcPsjdZHdsA dSnbwa5nN7Ege5g9xV7/V/5K+KHV+qXMJt/FDCyGsb79ffsOXQ/06qMGWM5H KkanHLb0Ofs+O8r22aHz+5yHeg3RzKLVtUsvw/pXfrBvPz5fke4bpaalTdAO rcaXxisP3X7ohqN8MIctYAvZcex4VsNqMf4G1sJa4ZkT2RK2lC3TUsuQ14xn E1KLUQpniaYPl1rO2oB21sm62ArENuiOcErNO0lLd7GViKvYaraGnczWsnXh 50rNshY5a7T0KuAUdipm5jR2uqYEk2UDO4OdiVnbxM5iZ/9s6ux+1c02sy2Y 53PYuT+ptx6R2oZ4HvsN1sMF7EJ2EbsE6+Jytv0o68Wa/TJ2JbsKa0bNuxCW qzSl5t7HHmd3sNvY7exOzZf18Bp5RPilSfNhG3ywFiPcMKDH5L+V/d46BWNX x9YdHukq2E8fUGNF2I9qyQ0oSa3QPKitrDvKE9swBtKHR0SpC7XxH7YO9MrP WYU/tg/wzOVaSlVHW39KX8SuwA68Gk/Vq6q6BprUVZoeaL+yv+wOLf1bdi27 DnNxg6YEk+V66BvYjdjbN7Od7BbEw3qgIr6N3arNXJD1sBDbxXZjJu9kd7Fe zf5zeT9m3xW2h/otd7N72L1YIQ+wh3DSPIIoLPfD9mDYukezUfoR9ijSailK Pc6ewAn1NHuGPcteYI8h9bz2fBKpF9nL7BX2OrdDvcQ+xvMge1H/AYtiExnT 3wM/b2eLEPU4lTrkl3GKyMzIitkMNpMtvI/Z8XEfx8bwO+5wl5aacowP4KNc YgouAybGeYnfoZPsdyUlTfDdNdKwVXZN6eU5uycYt+KaO+HgOwefzzv4zr7o 4rx9PO/tve/sdX75vKs4r3Dvq3uH53NXmktDbJRkNMYafINypZGDM0cVFhaM l0aOyPQNipI024hRo8fLhQWpkhwrLOMlNc3llw8skGcdNEin+CbML9SnJjli 7Qa9lJwQnTMuw1m5MGNcbopRNhpkvcmYNXrSoGlLyga9YXSluONSok2m6JQ4 d4rLePBNfdT+r/RRP5TolvxwgWwYe9yEdPkSi0nSGQy9qQmJQ8emTZnviHHq rDFOV5zJGO2yZZUed3CjO1ltI9ntprYOzmCc3dK335AND45jt/idNePbxkv2 /Pz4vDxLbkJCUm/fR7ucfAb4i12OMNs1/naXTeOPdllVllz+1PThNpslAcUt Tof6QEGLBaUsCShiuQf/BmF9D/kTkWDpo+ZYE+LteQnDcw3erDneQHRAH2AT EKLji12FE3jeq9l7tY/AAlehs1+5io/JKyx0FQ7PPz5DONbl41GyqgZzn6vf OEKdk1QpnhdyTIQq3YZsU6w3MT4txiQdKpSt7pRYd2qsVTpUwU2xSmKCEmMc 5mlR8tMTzHylnm+0JnkzE5c6PDG2JJPNqNcbbSZd8w8XGC1GWWe0GOD4S/vt 1w9NtyVleQ4cK1+fOjTRao5JcWPBXc2YfACfe9HMywbdx2Lwj0TGkqRYv9mc 8H1Ug+d7fTObsG8C1hktLrXzvkGZWufT0GPjiFwYXOrakg9M6X5y6w+x6emx 3NX98IbSYFZg05LztjVtrB4mebc8u3FiSpp8bVpK2RkPnjJ3S/OYA58Nb7xY /bbd1X379Y3oQxGr2D3MnTM4oZf3+c2D7HmWnJxBIyxqysUGjWzIibPKKZkN KS3OFn2LmAh1GvYWRMPp0cXFzr0FruLi4fkDHW8w/H8dH+fWNxpjlPhEJdoo Hdqs82VhEZrlQ5dKxmglMdEbbcxMWOIdlgavD9HxAlti2pDkpsT0eKPVqNPh Ia88cIbNJhvMBnntgbP7rU8MUlSPHxwhPZk6NMmqDFL93bdf3o6xFjI/O+Zu ZpHcu4c7s10j1F8QyBzr6oXnHcnZrg/Hjo0v/lZpiA+PVNvrxZiEglf3Ypyv 7T08xsGDc2XfkYNTJ8atbv9UOT4+Lk4eMEfbTe6MZE+a2yLPd6TnTxzRrK2r tFgTJi2p5syF+Skjpw/35GSkOastxk/d+dP8F54zfmZBYowRg5PNUdavhpbm JR2a1T/IZ9JSMsubJ46YX1bgtKbl+7M+TkqU3vGNy048dFtinl/9tmVN3z55 O+5lmTj9Nvu9E8Zyq6dY3XnF6s4rdjrVB3ZjsboHi+/Fv9IZy+t7T93EeeHN nRfe3BrbwnarypLFb4lJK7cWD/boooaq/5kjYeqIXq7bFTVDPx2uw9qlVUIb 9NXwPi0euD1H0hqh8y8u3hU+B91ypnZaumNTJdV5o+XtRldyrHpAVVy6sH7L sVkFdectnrXBb4z1JmDtmK8vWVc6oWp0onvE/Ilpx/jLBydi98FNNtPKGfNn bOip67z3jIqyEslqtKub0m48WFZ57Li6tf7S0xuPiR5aMlzdDZfihnmD/DRW SP3utpE80xE+xxzhIYO/2O1w8umO8EHn6OXf+aOZPwZnlt+FhwIjS8K+yfCb s6dmOtzKFLfqCiwcdSPvwfg1L6g+4GEfqOM0DlhEYQ+4tU8Ig3SDZDCbTPEp 6e7E/JFjfKZoOowM0cnxcSlOY8bEMcUp9rT0FJtO5nJdXKrLbDabYnOnjz4Y NFlNOh0e8hkmqxlLyGraMKp0sEM2WSzmKI+6PiZLj0lrDC6WzkaygpA5ceS9 +CcyYzn8bL/T5V2aaJazgnEnFVxu65Q7wjNarM0oNn6xeiYZ/vFZHDVaWpOY 5opzGPJqx01aWJykTFw8YfjcLKMjKTY2yWk4K6siK32E12FLLchMn5IrfWCz 67CvJ+YNz5vVOq68Y1Z2ZibP1Zt0sqwz6Q9V5uYqI0p86eUj07JHqrO3RHqG v6T3sByWuWtQEsPcHOu3JVn2DD5pkMOd2ubuODwPX+6JLg6fqD8yAaPUY4nc r+MvSTqj3mR1uF2OZMUXp3dSZxN9vviEoZm+mKi0OKOO6152JUQZ9Qa9NSEr 5dCN6LZO7buUYEOo8GbFm3QmQ1Q8k7il71v+ln4Rc7MhLOoOfYZnhrMcHXv7 +cP9GSlnhv0Xc/T14H6j+vGcHG10cZPbl+zxuU1R5sQsr3dIAj41hni9WYlm 3mWyqfNuM8n32KJteoPNZfuhOC3bY7V6stPSchKt1sQczP2+vn38dt1irSfK fSxOamAKc0vFd1qdQ9GvVoZOOfcM/PRRjzx5xE/17UKjw+OO8zgN3GWISU/2 DMLBZY5LT0nOjDeb4zOTU9LjzHyk+gEp4yH12ZwWvd7qsB1QUgYnWK0Jg1NS shItlsQs9G2z3CRdpu8SXvJkVjgr4KXnCgZ6Kfxi41GWOLe0weCMj45OcBji LbFp8ThjzfzQpiNs+ZnyRuEm/oJQh4YfaXM6+/rYOdIL8rv6jySD6SGmrrNw mo1lRT05ieqvCPjyLSox38he6cw7cuOtcmqWqlI7XB36joEfl/sKnPsGjsEl hy8nsi/m7z4jYwpjxOVEftfoTHTHeKKMH3OzI87hjIsy87c4NzoTYHUYU2PK 45VEp+Ep+RVjtDsxeqolxmaW3tfjCMQhqJf8B++TcY2UdQYd9KP99teS3GjC dfAryR6d5DDobS679q/nq/8zIp/5q4jb/j1RMvwTcf0vHeX4/wNx239g/Pan o25KJEbi/5J4zhHxrf+cqB8UiZEYiT8Rh0ZiJEZiJEZiJEbiPxQvj8RIjMRI jMRIjMRIjMRIjMRI/PVF7b8nq3/rOxZPzgxacgtP6vtA/UUTaRATf5u8QXvK WukoLaVqiUXJOib+qn26HB3WugFl9CxBHhXWhgF2I1shzwxrExuq/a1xVZuZ Iu8Ja4u0o7+8lc2XPwhrGxuqGxPWdukSnSgTxZYYDvT/hfsCY0tYc2Y0XhbW EjOa/iL+lj2LNom/iK8bUEbPbGY5rA0D7EY21uwIaxNzG5eHtZk5zVPD2sJn 95e3smzzgrC2Mbf5zLC28+nmy/r/xvooy4fq/wVAZw77mTT5mTT5mTT5mbRu QBnyM2nDADv5mTT5mTT5mTT5mTT5mTT5mTT5mTT5+SamsAKWz4azQu2vyau/ Zd7OlrMOoIl1wlai/XY+/Y5+LSytUMtYLnImsiWICpsLWzNrQV6HlmoEN6L0 CjwbULIE9ZagTB1srSjRqpWrBZairQat7DKkOmBbpuVR/Vb0QAFqUa4VLaxG aiVUJ96laN8JqINegrKK1ucu1G7QvnPQrLWyPNxqJ0osDb9TLaFgjMu1dzZq 3y1QxzJFG2sTLLXa77y3a6NQNK7VRqm+l8ZRj5xhWstLNcsSrcVa+Ijs4i1L 0c4SzWNt4V4ug2Wp9lZqUx1n54AeqG9s08YivhNB3qa+q29aDg8o2rcBmjUv tGq//69+r6JTS6kj7uyfD/IZvUXR+r4sPK7lmm/rtJKHezxwRKrXVmn1aNQn Ip2rrYeBszlYa22p1sJqzQ9d4Zkf6G91xmj8jVr/1fHTvLRrq0FleqM61wra aOsfDfWxOVymA6k14dY7MQqaoRX9s1SrrZFaWJceMS6xmuvRk1rt/fXh9+dq K7ZZmys15+/3wJi/G/X88MppDa+xkWiliI36mZXeqb2zQVuJ6ltO7J8D4Zsf 23vN4XXd1l9aXbk048tQvlFbO9NRop5laT4dgjINWnsVWt3lWvudiG0YRx7i Si3manvqyPflhlvPg16trcBmrddtaGE1rKrHmrQRqyv1yFaFvUn7JlC7tl5E e9XaGGiVrNZmt0PrYae2jju0fUe1FW0M6h5o1GawVXtHozaHdVpd4a0yFsC4 J4brtg/Iof3ToPnk8J5YGf4GTctPvJfSatl6zGCX5sOG/jXWoOW3aStk9YB1 1aaNdFl4ZVFbjdpT3SlHj1vNpx2ZhVrqTKmroa7/TT/Wq2V/1/I/7qPDrYtT UQmfa51av+uPOF/+fuziNDm6X2MHeEAdCY2FTlnxOdHef2I3aGfWMu3sqv3J kZKfa4/wKe345eEnjYp0l7byurSaDdr+V0fT2N+OWnKJtmt+bob+Vfvi8J7I 03qj7gE6+XO1uWpjq25SCvKHFyozWuvbl3csb+pUSpa3ty1vr+1sXb4sV5m4 ZIkyt7W5pbNDmdvY0di+orEht6R2SWtde6vS2qHUKkuXNzS2L1M6apd1KMhv bVKa/h9zZwPeVHn//fskaZImaaHlrQWUBBB5syCgIMiLCgoFSwVxiJumtAUC bSltCi0IVIqIyhQVEV+myBwydejo5uZ0WQWGUF5EbGuljEIhtMbT0rImzZB5 ns85SUtBdv3Z/7qe53p6X5+T83Lfd+7f93u/nThnSqYro8C+zOVeYM/Nm+vO SLfnLM7LSnNlzc+1LyarOz2Tkllp9tTFOVnpObkJ9ilu+7z0FHdeTnquPSc9 JcPucvMdqbmD7bmZKbQgNSWbc7VIZl6G25VNlVl5mek55MxNd2sV5NqzcxbT brXZ1J6RsXiZfQENt7sys1NS3XZXlt2txkHLKGLPcGXxXYvn2ee65msVh77I nZ7vprBrUXqCPRzmzbn2zJSsAntqHsGH2u1ewPenL7PnpBBLjouwKZiSac/L Vr+GGudzJ9e1nOzuxQS0VA0pxb4sJScz9F2qzKkLUnJoWHpOwoz0+XkZKTlt Doxu/eqHEIdw7LcljLr9CtHdOSlp6ZkpOYvUCNTWXHZvPlpnq7dTFxN4lis9 N2FaXmr/lNwB9rR0+305ixe7F7jd2aOHDFm2bFlCZmu5BLIPcRdkL56fk5K9 oGBIqnve4ix3bjirej4vha9fpOZ7eHEekhTY83LT+XIapD62p+BAek6my+1O T7PPLdCaNWnWtLt4mqNd4E9aXsiJZQtcqQvaleXTlZWakZdGURRLc+VmZ/AF qlbZOS4ypJIrPcudYG/97sVZGNnfNcCenjlXLXS5qqzWzNdskZZd7YrYkuvO caWG+kvbt6vdpLWuMVoD+rv4FrqsOiZy1I6dtnhZVsbilPZfSptTQi3FeMJF Y/Ukz52d50b2pa7UdDXPgvSM7KsCuh4vNCeGpKXPS6HzJ6TkZue3vTcJJU6s E9f6k8jBzlt0EiZFER3C//Ut3sCk/nwOFqLtPebafxP1r9hsEnmkB683f1SU lr/wevN36KDl/+B683fsqOWvvN78MTFqfp3hevN36kT+idp/fczMu4+aXy0b of6Xw6TuvFVtEN31ieImcgzj/uir8o5rl7cLefuQN4Ecd6q1X5V3Tbu83cjb j7zDyHEX9xOvynuoXd548g4g723kmMT9pCvzav/Vsta8Pcg7mLx3kCOR+zOv ypvZLu8N5B1C3rHkmM79h9X+YjZLZsuePb/h79VXzRGS2WQ256/nL9+ol4yG U4Xqn1mSzAbtrFAU6vWSOWLr1q3mSMls/bzw88JtpE2k9aTICCmSGlqrMEjG iI9K1HKRkhQZriJUR6RaR6RFirSV8Pf2hLcnvKilDSSLUbKYDQaDe8PatWs3 uE0GyRSuptAi6SwRbfUUGgySxbiRP4tVskSVOEuc1Lr1BfsL9mdIa0lWo6T+ WzLXrMwq6aytlYVrs2q1WaMka4eSuJK4rf239t84eeNkNZwnzU+a15htJskW qeNv9L1r+Lt3tNkgmY3hCgttks5mLLyySptJrdIWLdk6nup5qmfjnUcHV2ZU ZuyfdujQ3g1fbNhj22OLMktRFj1/Y+bvUf/mj9GErDxVEvqL0umijCVtf6Kk JMIoRZkPqX/hXm8RH+s+EPrUgpwM0Xl+TvoikZSR4lb//fcbhe7u6TPtouPM GXfb1VHCXKH2eRMzRrfwlUSP6Sjiwlc6ZpUYEa/lCt3RU3+s6C66Cv2U5OTJ ou+M6ffbxdAHZ0y1q2NCy2Pgvb+T6KFd6Xnv7yx6hp9EiCjRRdwQvlJ/WehK q3qlZudmi8+0427tuF87HtGOZdrxuHY8tYjthzinHWXteEE7BrXjj+pRMmhH i3bsqC6bUlftOFA7jtOOM7TjPO24XDs+px23ZS7KXCR9rB092nGfdjyiHSu0 40nteE47NrTNNNd3lP6roxn99ZpOJs7VX1P+/7qnw9uo//VnNM6r77zqW9oa 8aLYJnaJ3eKYqBEXJLXfCa0vhpSQhfp7U2tfUv8rk0IaHfpcvy70+atguzL0 14ZtV1xLtktXXkdPvPI6ZuiV153+fOV1v55XXve/6vnAUVdej0gSkbp217fF tntuFNJ9c668nraDTwsjpL9IVn+jowzrhm6oLlms1r2j+0Zs1f9K/ytRZnAb 3hblEV8b10t6y0xLivSJ5SmrJO23dbRN0t1je8T2pq4gKi1qoe6vUaujNuj2 Ruuizbpj0S3RLbpvWa4DqjbGiqiPr5mOko5HnW2XfOF09BqpObp3W+pPGk2a SFqopS1Xp6ij0dui/9BxczhtbZfeU1OMuGayxCS3pWdiNrWlQCjF9rxGSiCN 6Pxau/ROKGlPrkqdd3Xe35aOdDlFOqemroZrpdiErrFd+3d7pl3apKXd10xH u11sTXGd47q3pYnhlHjNlKylh8KfV6bC8FHNt09LZW0pVPpkXGP8wPi0+Dfj d6jp6trjd14rhWqP/3N8TTg1X07qt8Rf1L6rUOWGaX1Gt6VpfWa0pbRwWkgq 7LOw7zDShJsSbprYZyHHhJt299t/c4WWmvvPIWUP6EcaPKBmQBBqBvw4cP+g N9U0oGbQZ4N8g3yDDYOjB3ce/BdSWcI4UnLCnCFvhJPn1sLh/YbXjXjx9hGk cSPjRs4ZmT9qVzh9NmrfqLLRA0mjRq8bc2KsUUsbx+7W0qVxt4/7IJw+HnuJ 6w/GNWpXjeN143XjPhg/eMJzEz67K2HSbNLJ+xaM3RjKzWdjKNeUcWq+KdMS eycOTRyXuGNqPy0lT12opfyp66a+wTF/ainp1LTl0wqnnbw/m7Q5yUmu5KQj SUemlnI8oZ6RapLkpIvTC7W0ffohLZ2cLsPJ6YFkw/QAz+XkOcknkmsecJNe nGEn3/bpgdCTGcunB2acndEwK/mhfbNn/yL2Fz1/0W++Yf6c+ZXzL7Z+LhhM 2pXVMat3dn72muyS7JpsOTuwxLBk2JKJS+YtyV6yfMn6JZuXfLDk4yV7lxzL yc55MWdHzoVckRubOzl3bu5nuRXuEe657jfyHspbn+fJa15qXDp46b1LP1h6 btnEZRfze+bfm+/Mz8l/I39nfmVB74KfF3xcUFlwcbltedflo5bfvTxt+fbl lSsGrpi44tEVW1a8t+LEisDjEx5f/vhnK40rJ6zMWfnRyn0rL63qvmrBqu2r 5NWjV+ev3lmY/B/mqo+vno+unG0Kl15O6jxSuPVyCs0g/2HsJV494q4cJ6Ge fs1Zp3XmaZeunDsK911O6uxQWHY5heYFdQ7t+F7cvm6bmIePj2tk1tTmYO2T +TYmmfl1S/S2jpujjrbNmeSNCfRJU8tGfRy95fLcGVKJ2XmiNv+GcvWO3taq nnpXnYu1vMfV51r+sILU+3HUWWbybZQ4rtV2lNZt5vO4li6vDr6rVoWJ7daB yyvBNrXdP5n93/vJ7G8Jz/nPaPO9Nstr9VA6eiLnW1pnQvzYEfaLuSk0/4Tm t7CPzInMgKpraW2zY6ujzHFxiYU1aonLHveZUVhTWENtaq5mniXH1/SZ8dM+ wTxY1m5GvcY8235e/emcGp6592m9KTSLTmudP9V5nTt8a6Ecv4M7M+KSbx+R dKSrIbSOaZ+sWd0udjlFr4ptXX1aV5XYnl0Nl1egUK9U1zYtt0HNQdndXWPV J+odNZd6P7Zn1NHWnhrXPbYnK2CsWl49D929vI62X0nVtmirZnjdbLdyxlLD 1evkpitWx6PhlbFza+t5fjH07er3T03ucipuIu25Qn1VNVVjnGo3Yls1Do1E Vc1QT+mTht6JqpuqEnHJnV/T/N6hetNuVI+O30msrStsWajWQjmusFAOJfUb 1M8+M1RX1LNQT1M/C+WbEvoOCxFa4foO01aldkld4UKrm7Y+/i+Ttqa2Sz/N oa207VJ4xW1LPy2hrrT/XdLW4utObSv2f0hXK6WmtnX8PyRtZb/upO02rjNd rY62R2mXfqqftndpl9R+H3L6v0s/rfl/bt31pZDO6t4lettYY2LvsZeijqu7 Hi1t1O4Y1Z2OdrUxsbe6Bwo/I7GDGqXumkJ31blfPVOTtjuare2s1D1U47hG bX/E7oiz3WM3aruTwrZdjJq2Ty9MOjG9UN3BaFfbw/uc0Pl2dkE16h11R6OW Swonbcfj1vZG5NWebleP8TvJvV3dTTFb9Es6oe278sMpWbvTT911aVfJSSfU eSn8jMTObSh7NXWHppZbp52RtH1atrafI6+2U2vbr01NHq/TFLmkavGAO6TE WKMWDy0OtXRqqVa3+k3rtLq0eq8ciT91tH0/uLkidCWMUolyXH+/8pl+luig ny1s+hylSe8RI4WOJ0e58mpnsn6WclZIHFuEjuMB/WzlKG/q7yuXxF7lkuQU naQUMUOaK+KlVOGQ0kSMtEjEkHMEOcfrM5S/CYl6zggDeW3kjSGvjbwWrT4v uRpEpPSo6MnzPjyfxfMbeN6Hum6iLgelX6c9J4WVs120N0b/OO1YqfyJ9o7W n1Fe0Z8VQ/VeMUxfKwbpv1O+0vt421VrP0rtNcLAmU4/+8cfaM0matoj8kUH kSg6wmgxQIyBNOUrkQ7zIFepFW6lWeTBUlgG+VAgbGK5ckysgMdhJayCIsqv hSdhHTwF6+FpeAaehQ3wibhb/AWCnP8IihggCZAgWYyRHoAZMBMeBJeYLu0T vYjYpX9I3Kl/RJj1j0GGWK9fLW7UPyHs+iJxo+Et5ZhhK7wNx8QAw9dQBuVQ Ad9AJXwLx6EKTsA/xICIjspXEaeUYxHfC1uEzHk9NCrHjBEi0TiAz+FigPF2 PjOUr4yZkAWLIU+pNS4FtDGijRFtjMsBbYwfijHGj+BP0CLGmAaKXqZB8JgY YHLCXFgCOVAAhfAEoJFpI7wAb8Hb4m7T+3zWQwM0QhNcgBZAQ3MqpEE65Ile kUKMiewseml99xz92qKdfYfrLaILvbaYXltMb+tHb7uL3raG3jaT3jaX3jaF 3jaB3O/QXxL0DynP6X+mLKcH3Ua/eZkanHqPsl1/hn7mFXr9Ofrgd+IRrZ+d JdcJtpmto+JRMaRd/ZOpfyn1T6L+keSeQ92bqPtPlBpO3Zup+3Xq+4z6HhLR 1HKeWs5TS0dquZlasqhlCLUMoZZB1HIzrTxJTf2pKY1ahlHDDi3SA5x9KOKo 42/U8Tfq6C89pvyFeoZQz2PUM4J6ZlLPeMmlfEldQ6Qtyp8p+Sn1GahvKS2b R52daFkRtT2rr1GaaV2pvo7R+p24Re8Lj9gYah1IrS5qHUmtk6i1LzX2p7av Kfk1I+9+opwlrOEZ5t/MJOrM8qooUmSxFp6EdfAUrIen4Rl4FjZAqRIUB+EQ HIYj8CUcha/gGHwNZVAOlfAPRREnoRpOwWmogTPKQXEWvHBBqRL/ZJw3gx8C 0AJBZrd/8fwi/ACX4N/wI21RFFkSIGmz4hn9HHrYz5Xz+kf5dCrnDccU2fA1 lEE5VMA3UAnfwnGoghPwD6hTgobvwAffgwz10ADnoRGa4AL8E5qBthh+BEU5 GBGrHDRNUIKmSZAIUyFJqTU9yOcsmMPzR+BReEyRTU6YC4t4toTPHHBzvgzy oYDrx/ks5PMJWMf5U4APpuf53MjnC/AS55vgZdgMr1D/W9zfxvk7nL/P+Yec fwp4ZMIjEx6Z8MhUpSimE4BHJjwy4ZHpFGVOQw3gkek7pcrkg++JRYZ65aip Ac7zrJG6m+ACNHONd6YAny1c45E5FdIgHb904jnRWVu59OI5+u4s+rC6ekVw 9TuuErmaQi/fq/9SDFL/v5mUgJhIz6yiZ1bRM6vomVX0zCp6ZhU9s4qeWUXP rKJnVpG7lp4WpKcF6WlBelqQnhakpwXpRTI9JkCPCdBjAvSYAN9XwvdV6X8h IvQpMJcelKqcoddU0Wuq6DVV9Joqek0VvaaKXlNFr6mi11TRa6roNVX0miqc DOBkACcDuFiFi1U4F8C1Klyrwq0ATgVwqgpXqnCjCtWDqB5E9SCqB1E9iKoy qsooGkDRAIoGULEKFQOoWIWKVahYpY3Y48KElncxks2svX9l7f2j/ihr7Ves Qqw2mr4+IvyKCE9r+j7OVRxXPdF3DTV8I2azTjpYJx2skw7WSQfrpIN10sE6 6WCddLBOOlgnHXzT7ayVfVkr+zJmyxizZYzZMsbsacasnzHrZ8z6GbN+xqyf 9TSWMetlzHoZs17GrJcxi99iKuvmCMbpacZpNeP0NOO0Wj9X9NOnQoZYyzra i3W0F+toD9ZOB2ung7XTwdrpYO10sHY6WDsdrJ0O1k4Ha6eDtdPB2ulgLHoZ i17GopexWMbY8zPmyhhzZYw5L2ucgzXOwfrmYH1zsK45GCte1jYHa1tfxoqX 9c1B/y+j/5fR/8vo/2X0/9P0/9P0fz/938/6F8v6F0v/99Lny+jzfvq8lzXQ wfrnYP1zsP451P6uXEDrC+zPnlOexIHJzOenmc/zcGIyTvyGpxvo7ZP0x9hJ lSk/6svFXM29KnIfJ1clK+Zzyiqu5lL2GGW/5u4Eyj5H2S8om0jZMso9LIzh cfQzcpaTs4ycidr+Su0z72o1pfN8PM+P8LyC52Oo6WmefkRNd1NTKTUN1fJ/ q+0TT2rHgLBIHUQvaQ5kQCYshmxYAjnghmdY6WOkEhHFt6yh9nzqOaDtjbaK bvpPxW36z/G/RvRh1Z7JLjGWlbs7u8Q++jpmhu9ogY9734vbWM9zlM8p0ZU9 ZW91Tad8hpjCCjaHPv+ImKJ/VNt9TRHRtKwHLetBy3rQsh60rAct60HLetCy HrSsBy3rQcnOlMyiZGdKZmkloygZRckoSkZRMoqSUZSMomQUJaMoGUXJfpS8 lZL9KHmrVtJGSRslbZS0UdJGSRslbZS0UdJGSVu45IhwyRFE8ogYyNlATeNi bY/QglpV6v8OHB6AGTATHhQW9m4W9m4W9m4W9m6WSPWf/RpQuBNlksM7jb2a R6dFmdRfqZEGwEAYBIPhFkiAITAUboVhMBxGwG1wO4yEUXAHjIYxcCeMhXEw HibAXXA33AMTYRLcC/fBZJgCiTAVpsH9kATT4TV4Hd6AN+Et2Apvwzb4NbwD v4Ht8C7sgN/Ce/A+fAC/g53wIXwEv4ddUAx/gD+yWyvh83PluLQb9sBe+Dvs 4/4XSrm0Hw5AKRyEQ8o56TAcgS/ZQczhbeVR5ajh7+wk9sEXsB8OQCkchENw WCk3HIEvlfKIGKUmojN0ga7QDeIgXqkxPg+vAhoY31TOGbcr543vwg74LbwH f+D+Hj7ZbRr/zvlRpdz4NfkrOQ8oNaYb4EboBXZwKOdNvaEP9IWboJ9SbroZ +ivHTQOAvmCiL5jw3TSM6+E8G6OcM93J5wzlvFmn1Jj1YIAIMIIJzBAJFrCC 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 w0pYBauhEJ6ANVAEa+FJWAfMjVbmRitzo5W50crcaGVutDI3WpkbrcyNVuZG K/OilXnRyrxoZV60Mi9amRetzItW5sXoSLCAlTlPndl9Wtv9jHEvY9zLGPei m/qe3o+nxxi7Xsaul7HrZex6Gbte2u6n7X7a7qftftrup+1+2u6n7X7a7qft ftrup+1+2u6n7X7a7qftftrup+1+2u6n7X7a7qftftrup+1+2u6n7X7a7qft ftrup+1+2u6n7X7ars5Zs5VvUfsQCn/eNmepEVWLYURUzPManrfgxiXcuIQb l8hbTV4zea2MFAuRJjBSLESbEP4NaB8OXcKhS0RZTJTFRFlMlMVEWUyUxURZ TJTFRFlMlMVEWUyUxURZTJTFRFlMlMVEWUyUxURZTJTFRFlMlMVEWUyUxURZ TJTFRFlMlMVEWUyUxURZTJTFRFksbiOSIrzZjzf7dS7RE3/2E0EqI+BfjIAA kawlkm7hX2a6qb/MEMkr6q9ZeLcf7/bj3X682493+4mqiKiKiKqIqIqIqoio ioiqiKiKiKqIqIqIqoioioiqiKiKiKqIqIqIqoioioiqiKiKiKqIqIqIqoio ioiqiKiKiKqIqIqIqoioioiqiKiKiKqIcTxbG8ejiOLL8D9zupdWv0Srdwkr 8R4m3sPEepi4uhBTF568TDyHiecw8RwmnsPEc1gYdXn4ulT5l26Zck63ln7x S6VB97L6Szt3L+rWKgEhcfyXGECOgC6fHlEAa5Vy3Tph1j1F6Q1KnW6z+u/q Kz/oXlV+sLK/tbK/td4AN0IvsIMDekMaedJhHsyHBeCChbAIMiATsmAxZMMS yIFccEMeLIVlkA8FsFz5QYvnIi09o1up1BLLWd0m5byONz0xR5dDb8+FPO7m E2UBrFaO6grhCVgDa0UX3TrlQ93z5NuonNK9AC/CS7BF+YT4PrHqlENWPRgg AoxgAjNEggWsYIMoiIYO0BFiIBY6QWfoAl2hG8RBPHSHHkoDGjagYQMaNqBh Axo2oGEDGjZYRytHrWPgThgL42A8TIC74G64BybCJLgX7oPJMAXSiCMd5sF8 WAAuWAiLIAMyIQsWQzYsgRzIBTfkwVJYBvlQAMuVT4SBnnMSFb9GxdO6zUoT fWmtcoF+0iKScSGIC0EcuIgDag87zYoTYMUJkCOAykFUDrLCBFhhAqwwAVaY ACtMgBUmgPpB1A+ifhD1g6gfRP0g6gdRP4j6QdQPon4Q9YOoH0T9IOoHUT+I +kHUD6J+EPWDqB9E/SDqB1E/iPpB1L+I+hdR/yLqX0T9i6h/EfUvov5FVrkA q1yAVS7AKhdglQuwygVY5QKscgHUDaJuEHWDqBtE3SDqBlE3iLpB1A2ibhB1 g6gbRN0g6gZRN4i6QdQNom4QdYOoG0TdIOoGUTfImFtK71bH4ko0XUXvXiui UfsMateg9nmRjcYeNPbQ0+vIuR+tz6D1Gd1yrlcq31HqAj1fpufL9HyZni/j w7/xwYMPHnxo0j2nfMEI+IYR8A0j4BtGwDeMpUPMDfvwqByPyvHIg0cePPLg kQePPHjkwSMPHnnwyINHHjzy4JEHjzx45MEjDx558MiDRx488uCRB488eOTB Iw8eefDIg0cePPLgkQePPHjkwSMPHp3BozN4dAaPzuDRGTw6g0dn8OgMI0Rm hMiMEJkRIjNCZEaIzAiRGSEyI0RmhMiMEJkRIjNCZEaIzAiRGSEyHnvw2IPH Hjz24LEHjz147MFjDx6X43E5HpfjcTkel+NxOR6X43E5HpfjcTkel+NxOR6X 43E5HpfjcTkel+NxOR6X43E5HpfjcTkelwsXDnpx0IuD/8Tv3bh4HueO49z3 ONeAcw0414BzDfhvw/9duCfjnqx7lnu/xOnnld/hYB0O1uFgHQ7W4WA9DjbR T/6Ki9W4WI2LMi7KuCjjooyLMi7KuOjFRS8uenHRi4teXPTiohcXvbjoxUUv Lnpx0YuLXlz04qIXF7246MVFLy56cdGLi15c9OKiFxe9uOjFpQZcasClBlxq wKUGXGrApQZcasClBlxqwKUGXGrApQZcasClBlxqwCUZl2RcknFJxiUZl2Rc knFJxqVqXKrGpWpcqsalalyqxqVqXKrGpWpcqsalalyqxqVqXKrGpWpcqsal alyqxqVqXKrGpWpcqsalajEUlwK4FNBGY8iFZlxowoUmHAjggPre1IS6Tajb hLpNqNuEuk2oG0DdAOoGUDeAugHUDaBuAHUDqBtA3QDqBlA3gLoB1A2gbgB1 A6gbQN0A6gZQN4C6AdQNoG4AdQOoG0CdJtRpQp0m1GlCnSbUaUKdJtRpEgOZ GS4xM1xi9Mus5xbds0SxgSi01nO+Gbaw3r/Kut2DXV1PuAFuhF5gBwf0hjTy pMM8mA8LgB0kWregdQtat6B1C1q3oHULWregdQtat6B1C1q3oHULWregdQta t6B1C1q3iAVoXYfWdbRYpsUyo8DHKPAxCnyMAp+mf+sIQPef9Hx28Dr1l43/ 3Nvr8KMOP+rwow4/6vCjDj/q8KMOP+rwow4/6vCjDj/q8KMOP+rwow4/6vCj Dj/q8KMOP+rwow4/6vCjDj/qUFBGQRkFZRSUUVBGQRkFZRSUGQ0+RoOP0eBj NPgYDT5Gg4/R4GM0+BgNPkaDj9HgYzT4GA0+RoOP0eBjNPiuYzT4cMiHQz4c 8uGQD4d8OOTDIR8O+XDIh0M+HPLhkA+HfDjkwyEfDvlwyIdDPhzy4ZAPh3w4 5NPW+Ebtn0LejlcyXsnMNjKzjRftZbRXNZbRWEZjGY1lNJbRWEZjGY1lNJbR WEZjGY1lNJbRWEZjGY1lNJbRWEZjGY1lNJbRWEZjGY1lNFZjlIlRJkaZGGVi lIlRJkaZGGVilIlRJkaZGGVilIlRJkaZGGWr2hfyYCksA/obMcrEKIuOzMX+ K8cMPe1ZbaQHmFMD/9MYYe++lD0qb6aMNhujzchoO81I68JIs4ikthklj9V4 JazivXwt3/W00kjPbiR3kLHZyOrcTKkEFA6gcHO7XVMjvbuR3t1I726kdzfS uxv/H802jfS+RnpfI72vkd7XSO9rpPc10vsa/6/uitS3lSBKfdH23tIs9OF7 QVz6QcxC21K0LcW/evyrR1v1zeY4TkSgby361mrz3/Ncb+Id4WV2Slu496pS i6616FqLrrXoWouutehai66l6FqKrqXoWoqupehaiq6l6FqKrqXoWoqupeha iq6l6FqKrqXoWoqupehaiq6l6FqKrqXoWoqupehaiq6l9Kl6+lQ9faqePlVP n6qnT9XTp+rpU/XoXovutehei+616F6L7rXo/n+Iu/Pwqspz7+MreyV7Jzs7 oog41GqtU6undajaVtty2nqsPW3taGu12vbU1gOVVhRUQKYO2tYBZ1DEoVKK WoGaoiLgiAVrAwnZwGYn0MhgSEgWJCSQAPKcz86hfe15z3W9f75/fK+118pa 63me+7mH350rbFrZvZXdW9m9ld1b2b2V3VvZvZXdW9m9ld1b2b2V3VvZvZXd W9m9ld1b2b21urTOMbgeN+BGjMW40Dpg4/4DkdAXHZpaEA1NvUJxvsovXwuT U8vCnNROOqM3TE31h/pY5ow/pHs9LcyLzwpb/vHXyt+MDo6/FeUO/E3h1lxT WGHHZnnvXLwqAl4L+dRSnv46lhlzueOboSm1QqebN9pqxzXYGlWl2kRqL427 ixLajT2hK45CS5xBJY7U/Z8WNsVnhJ3xmfgIzg674vPCxtz3Qkfuh6Eu92PI EbmfOl4TmnKjICfkxjtOcJwIGjr3c6iYudshKnNT/fwe1+S+3DTn0/GQd8wK /bknvH8e5oeduT/iGddqnS90tKZcvWsNWIW1zgto8rkZLe7rDC25ndgdWmqG hKTmMAyF7rBGd1hzgusjQl0NTV9jXjW3hJ6a28POmvvwAB4PSfTvB6xatE99 rLqWVTtZtZNV97HqZlYtsOpaVt3JqmtZdS1r7mLNbtbsZsluluxmyW5W7GfF XlbsZcVeFuxkwSILrmXBtSxYZMG1LFhgwQILFlmw8D8sWGTBThbsZMFOFiyw YJEFiyzYyYKdLLiW9TpZr5P1elmvl+U6WayXxXpZrJelelmql6U6WaqbpbpZ qpululmqm6W6WaqbpbpZqpul1h6wVJGlOlmql6V6WaqXpbqj96eeDONTC8J8 lnqRD+5lodmssi21IVzFz8ak2sIjvPubqR5Kuz98ip/9OY7D0jgd7ohz4Se8 fXU8JBwXHxv9KD4xjOb5748/HD7Dao/z/gv43Iz4U2Fi/Olw2YG/zvpb/K3w aHxJGBEPD0tKf79kVS/ISa+oEq9hWVhvxLftxwYjbjFCm7fu8MaN3rhdLJ0n lj6pI3zSjr0SGjxVipe/DsTI1ugYT6/y5Bue3GxuW8yt2hvyA/FwVsh78pXw hqfe9tSznjjUE28Z728D8aurHojhY8Xph5yfFjZ4qsUsl0bv5Vk7B55cyrNe x3Ie86anV/CqPBW52nFN2Mw7NvOOzTxjM894i2e8xSve4hU7ecVOXrGTR/Tx iD4e0ccj3uIJfTyhjydstnOb7dxOu1bK/Fujg8wnbeazjPekcZ+31oVYHvaw azN7bsndGHZ5f7f3d3t/d+4B5w+HXd7THZV7qsfMr/XExpLfU8JPyiULrOW1 UO9qU6pBHinZcENoZ7cG713rvWujS4w61d2TxdSmAW95Pkww+gRPdrHEHpbY 4w2bWCKwRM+BuOphiZ5UIcz1xlqeVJ/q4D1ZDAk/jIfajcNxBI4P18Un4MSw Lf6Aff4gPmT32D0e5uefHvjb5TPM5gyxt4l1e1i3R+xtYuEeFg4sHMTeJlaY wNKBJaayxFSWmCr+NrH2Htbew9p7WDuIv03ibxOr72H1Paw1geV7WGxC7mmZ aC4WhetySx3/ijqswDoUsd7P/ub4lndsDNfVROHPNRVhbk0aGRzn/CSMkKGm hKlicJPd3FNzf9hYMw3T8SBmhrlRNY/s5o0b7fRHZJ93ZJ93ZJ937PpHRfo7 Iv0dkf6OqH4nOtp+lPZyF9vvYPsdnkrLUV1yVJcc1WXtPdbeY+091r3DundY 9w5r3WGtO+SXLvmlS27pklu65JYu/t0lt3SZa4957pAruuSKLrmiqyxrxCk8 4H67/7Ldv9vu351aYkdfxCthWWqpqvg6loXHecHe1CrX83yrEMak1oXFqSKa 0Iz12BBuSf3NcSM2eedmxy1oxdZoCm+pTbX7vA0dPK/TMcH2cF1qB7p87sbO MFxuqpe5CzJ3QQR/U45akdrrZ/vwTliS2u8YVOEypFDKX+W8rcLntDyVDZPj ap9zYeRAPhvkeDAOwWAMCefx1gt564W89UK19eb4qHBD/B4/OxrHRt+Oj3N8 P46X807AieE78UnOT8YHnH8Qp/j8L/hQ+Kwc+X2Z5Wm7NsWuTbFrU3j7l+TL 2+Nz3PNRfCz8LP6447k4L0yKP+H4SXwqXC4qLoz/1edPh2tFxjcP/MXs0yLk hvjS6Ij4CgwPK+XXP+SGh/rcCFwT9oqSvSLkbhGyl5dM4SVTeMmU3BQ//xl+ hV/jN7gtGpq7HXdgqvvvc+1+THM+HQ94zwznDzs+EkbmHsPjmBVuzv0u3KCa Tco96fwp/AFPhwtE1QUq3CQeOIUHTqEPblblJuX+FH6WW4Bn3bfQtUXuW+zz Erzo+lLny1xf7r1/ce1N/NW1OqxAvXc1YBUa3b/WvQWs87MiZG/ePUXUXpDb EBaL3AtU0Umi90LRe0Fuk2t8MMcHc2+DH+a2oi28nOOHOX6Y6wAfzG3HDnTJ AN3Y5XNfWJLrxx6f3wGfy/E5WWFyDb+r4Xc1cVhSU+5YEcbIEmNkiTE1lc6r ZI8s+GBNLrxcU4ODfB6Eg10/BINxqOtDQkGlL6j0hZrDve8I9xyJo/AeHI33 uvdYP38fjjP++12TYWWjyTWTQr0In1JzSzS0xl7X2Osae11zK27D7X52T7hB 5E+RqS6QqS6QqS6QBabIVhfUzPCemeb9iHc+7v2znP8Os/H7cF10nCxxrSzx x4HK/OpAPX9dJmgV8VNF9uUie4GonSdq31Bze0XsSyJ2k6hsEI1/EYVLRGGj qPs3kXWFSJonYm4XMa+LmFZRcp8oaRQFL/L+3/H+L/P+l3l/6V8qnMPjV0b/ IV89YSZ/ULFWpeapUgvkhOddW4hX1bnX/GxpWCN7rlG5XpazOlWuBWpgp9m2 qV4LVK8F8tcsM39dnmoz8xVy0VKzLsg3G+WbjWbeKl/nzXy7nJ2Xs/PyyVKz f1oueFoueNos95rl10qaR/Valfu+TPvDsEAFW6CCrVLBFojNTrHZqYKtEp9P iM9O8fmE+HxCfD6hgq3K/cJzv8StuC2skdXXyOprxGanarZKNVslw6+R4deI zSdUswVi8wmx9DS/f5qfP82n29STvHqS57dtakqer7bx06X8cha/nMUvZ/HF Nr62ka9t5Gsb+VYb32rjVxv51UZ+tVQtyvOppSrcAj71hAq3SuVYwz9m8Y82 /rGRglzCD17EKxTasvA8S29WHRr4wmdk82bZvJk/vMmqLaxaz6r1fOI5mXsD yy6XqZtZdjnLLucb2/jG27Jxo2zcKBs38pF/4SO7ZdmiLFvkK+v4yRaZtU5m rZNZ6/jMatl0nSxakDkbZcQGGbGB1Tez+mbW3iwDNsiADTJggwzYIAM2sOxm Wa9B1muQ6RpktIIsVpTFirJYQRark8XqZLCCDLZOBlsnW62TrYqyU1F2KspO RdmpTnaqk53qZKd1slJRVioeyEp1slFRNirIRo12Z7nM0iyzNNul5XZoueyy QXbZIINskC2aZYtmmaFZZmiWGZrtVL2dqrdT9bLCBhmg2U7V26l6kd9sp5aL /AYR3yDiG0R8g4hvEPENIr5OtNeJ9qJoL4r2omivE+1F0d5sF+tFebMobxbl zaK8WU+8lTou6eqzwr7obFFW6rN+LKKmi6jpIupV+zxZ1PTb19n2tda+1oqW dvu6yb7Otadz7elcEdEnCvrsxWR7MVkE9NmPyTy+j5dP5+XTefl0ezGZl/fx 8j5ePp2XT+fN/ew1l53m8uZ+tprLVpvYahOv7mevTTy5n31q2aeWfWrZZxNv 7ufN/WxUy0a17DOX9/bx3uk8t9+aa63xtXA7j91tBUuc7TT33vAk39wQHWVl O51tsbI2K2uzsh1WVScPtFtZnZXVmd1Os6szuzqz22l2dWa104x2mlGbGbWZ UZvZ7DSbnWbTZjZtZlNnFqVeti061ki9RlpnpC1G2mKkrWxY6lHrjdZjtHqj 1Rut12j1Rqs3Wq/R6tmimy26jdrLFt1G7jXyFiNvMfIWtug2eq/Re42+xehb jF5v9FJ/uEWPsEG+3BlWWvVKI/cYsVkuWyjjrpVxS/3BcwMZN+2ungM9VPuB f8N0WnxJdOaA5Vr8pNlPWgbOSr3d3gE7Vhx4qttZh/ev8f4uarhA03aw8B7r zLJEhAqaNI0MjnN+EmaGHd6xYWBnGtzdpIqU5tgTneQdr/vJ8+zX7V0vuOPt v/f3A/Umkl8yqEQ2vGBVX7WaH7BjNztuYMcN7FjqrzewX7c5vGAOr5vD6+bw Olv+c9/9Hhz9rv77OPefIBZPcpzp/kdcK/XcZdacRIebX5c5dZnTNnPaduA3 ONvNvs28tpvXdvPYbh7bzWG7sbuM3WXsLuNuM+42424z3jbjbTPWduN0GWNb dIK3L7L6P1v58ndl2Tw7P22kXQNZNTvwlyK/PLCX66x+eOkvev6efax4uVEX GXWRURf9r5mnlGmOc18py5zkWMoYM937PzNG1UAV3UkH9Out0/b14nDNgb/u WGnkbw/8xeiZ5r3Bnc/ZtTp9wRrzf4mV5r0rg5QqQ4GlZtrrUt19m7VmstZM 63nJW2/1trl2sY52W8OCM1lwpp2sY8WZIqIgIgp2tM76XhIVBWvcYI0brHGD Xa2jwdbQYGvorTX/I3MU7HKdXa77R+Y4zjtOCDOt/SXr3mCX6wayx3tYvYnV mwZ+G9Eri/SH18y6k+WbzLjTjEu/w+lk7SbWbjLLTjPsZOUmVm5i5SZWbmLl JlZuYuEmI3WycBPrNrFuE+s2sW6TqOqVdfeofryHh/WGl6KUKriHUuqPYmpk mbMuZ63Rcc4SPUwffZLQJ4lKuVul3K1S7j7wO8J2mmUHHd+n4rWrdO0q3W6V bje93qfatdPofXRFQpP3qW67VbfdqttuuruP7u5T2XarbLvpjkRla6c9EpVm t0qzW3XZHVWp5f1m8pDanajZJV33tlETO/i4HXx8IKtUqfY98RCZ5EOhwwra 3NURnx0NkmH0PNEZxilE5d6z2XtKv3PtK63AinMDv0FoL93PEkPE09mhz/XS b2Xd4bmN0WHOSqvvsfoeq+8ZWPmltMIVYfW7Vt5j5T0Dq653bMAqNKEZVmdl PVbWY2U90fuMtoJ9e9l3LfuufXdnbuwOo2xh214jbDHCln90488M/MZvC9v2 su1atu39pw59rfPCwG8BBzp1tl1r9C1su/bd3XpUZuW90QlxjU9DwiPUUkIt JdRSYk7PmtOzrNVLMbVRTKXfrnWy0zbKKLED++zAU3bgKX3kYH1k6a8jS6qn jeppM69nqZs26qaNummjbtqomTZqps18nqVk2qiYxJyepSjaKIo2iqKNmmiL MmbzRyPvNGKfEXcard9obxrtzeh4P32L3VrNcZ05rnPnrgO/w/4/O3Q2ZXce v/40O8wKrWy4hw33/GOXnnGt1vlCx0WU1jLHd+/aWucF/H331runxf0bw7p/ 2sWhrNbCai2s1sJSLSzVYt5/O/A7qRYWaWGRFtZoYY0W1mhhjRbWaGGNFpZo YYkWVmhhhRZWaGGFlugo61xvjeutcb01brfGvDU2WmOjNTZSqiWva7SeRqqy napst5b1lGXJAxutpdFaGinJdutotI5G61hvDeutodEaGq2hceBfUR4ffzc6 PpoeXRkeiH6IH+G68Gg0LtwVjcdNmICJ2BSmR5uxBd3u6Q93RnuwF/vwTriz 7AOhvuyDOAWn4l/wIXwYp+F0nIEz8RGchbNxDj6Kj+HjOBfn4RP4JD6FYfhX fBqfwWdxPv4NF+BzuBCfx7/jC/givoSL8GUMjw4vezm8VPZKeK7sVbyGpXgd y8KSsuV4A3/Bm2FJ+SPhrvJH8RjqnK/ASlhr+X6EcGfFweGBisFhegWVXUFl V1DZFYfjCByJlnBXRYd7OrEj3JX+IM7B1eGB9Ej8BD/FmPBo+nqwe3pqqE/X hyVpHU/mpLAkczI+EJ7LfBBn4iPOP4FLw/TMZbgi3JmZhllocf4WNsKeZdrC o5l2bPezHue7wp2VqVBfGaMcFUiDUqykFCurkEU1cqjBQRiEg3EIBuNQfDws qTwX3/X5R46THX/vOCc8V9kb6qu8q+pQ+vjyaHBYER0K2S86DENxOE7GB/BB nIJT8QV8EV/CRfgyvoKv4mv4Or6Jb+PK8BDPfYjnPsRzJ0ajw8xoDK7HDbgR 48Ic3jyHN8/hzXN485zy34QV5bfiNtyOOzAVd+Iu3I17cC/uw/14xHOP4rEw x64/VLE2rKhoxnr8DS2uv+3Yig4/78QO194JK9JpZFCFLI7AkTgRJ4Ed0uzA O+akz3I8x/E8x8/hclyB7+J7uDo8xHMe4jkP8ZyHeM5EnjMxbb1p6+VBcyp/ WrJNdFeoj+7GPbgX9+F+zMbvMQdP4En8BW/ir6jDCqxEPRqwCo3IYzUK2BSe kROekROekRPeiHaiB73Yhd3oD/PkiXnyxDx5Yp48Ma98a6gvb0M7tqEDupPy BNuxA13oho6lvAel5/YjhHni7ZmMXJAR+xmxnhHrGXGeuSi8kfmG48W41D2X 4YowL/Nj56MxBjfgRtyEm3ELxFuGjTJslGGjDBuJp3mZ3zrOcpznuAjskGGH DDtk2EGsPSPWnhFrz4i1Z8TaG2Ltjcw2dGC7Z3tcZw9xN6/sw1F5dEhUgTQy qETpu8OzqEau9BWTOAjnRkOj83BlGM/Hx/Px8Xx8DB8fwcdH8PERfHwEHx8R jfWGcWEkPx/Jz0fy85H8fGT082hQ9Av8EjfjFvwKv8ZvcCtuw8LomOgFbArj 7Og4OzrOjt5rR+fY0Tl2dI4dnWNH50Slb5DuDxPs6gS7OsGuTrCrE8oeDKvL ZuAhPIxH8Cgew2/xOGbhd5iN32MOnsCTeAp/wNOYi3mYjz/iGdTiT2F16vRo UOqMaGjqLMdhuDCMT30+XJf6Ar7qfHiYkhoRrk79GFeHq2m2L8SXhdF02xfi 7zqODn+Jx4SGuD6qiBuiIXEj1btaV74mysabwpx4My2yJfpA/LZja+m7gRy3 RYPLR0eHlI/B9bgBN2IsxmE8bsIETMQkPBJGyhcj5YuR5auiQeWNyGM11mAt CliHIprQjPVgT94+gbdPkGvGVxwSVvP6cXLMyIptUVZ+GS+/jJdfRlbsjQ5J x+Bb6cE4FMfjg2Fk+hTHM/CRaKicMjL9UZ+vDuPlj/Hyx3j5Y7z8MUb+GCN/ jJA/RqT5Unoc+FL6gbA6/eDAv6BfnXkvjsGxeB/OwEVhjkgbJ9LGibQJmVHR oMy1mIwpuAvTXH/E8bHoGNE0IfOUzy3ufwsbwedEzr0i516RM0fkzMl0RlWZ BNvd3+Pn/E8ETcjsjgZVDgmrKw/DUByOI3AkjsJ7cDTMtdJcK8210lwrj8P7 cTxOwIn4gXddiR9igvOJmBRWV5WF1dlLwnXZSzEhXJ2dBHGTFTdZcZMVN1lx kxU32dtxB6biTlhv9m7cg3txH+7HNEzHA3gQM/AQZuJhsE/2UTyG3+JxzIoG VY/HTZiAiZgEtq1m2+qfQXxXi+9q8V0tvqvNs9o8q82z2jyrzbPaPKvNs9o8 q82z2jyrzbHaHKvNsdocq82x2hyrzbHaHHOnRoMOqkIW1aX/KSVeKVI2yUal T6XvHjk8dYNsliv9v42yWU42y8lmuaj0PxhmUY3cwDfY52SzHAVQpACKFECR AihSAEUKoEgBFCmAIgVQpACKFEBR5jtU5juUEminBNopgXZKoJ0SaKcE2imB dkqgnRJopwTaKYF2WfIqWfIqWfKq6D9DEg3HCPwYV2MkfoKf4hqMwrW4LgyX Ua+RUa+RUa+RUa+RUa+RTc+XTc+XTc+XTc+XTc+XTbOyaVY2zcqmWdk0K5tm ZdOsbJqVTbOyaVbdbVZ3m9XdZnW3Wd1tVneb1d3mqPT7jjl4Ak9iYXSkzHuk +puov4n6m6i/ifqbqL+J+puov4n6m6i/ifqbqL+J+pvI1qNk61Gy9aioVS+7 FW1oxzZ0oBMJtmMHutAdpsnss2X22TL7bJl9tsw+W1YfK6uPldXHyupjZfWx NH2Bpi/Q9AWavkDTF2j6Ak1foOkLNH2Bpi/Q9AWavkDTF2j6Ak1foOkLNH2B pi/Q9AWavkDTF2j6Ak1foOkLNH2Bpi/Q9AWavkDTF2j6Ak1foOkLNH2Bpi/Q 9AWavkDTF2j6Ak1foOkLZV+JhpZ9FV/D1/ENPBjyKlFeJcqrRHmVKK8S5VWi vEqUV4nyKlFeJcqrRHmVKK8S5VWivEqUV4nyKlFeJcqrRHmVKK8S5VWivEqU V4nyKlFeL1Grl1isl1isl1isl1isl1isl6jVS9TqJWr1ErV6idqyv0bZsjqs wMooq4rlVLGcKpZLnVv6N6qOn3W8MExSzS5SzS4aqGaXhY7UlRiuur2rqqVG hg6V7ZMq2wiV7ZMq2wi9+NT4uvB0vCi8Gr8YHRS/ovqt1M836NMbo8NVuXZV Lo7X6u//u9JVqHQnDHzHZLvr21Se0VFOlcupcjlVLqfK5VS5nCqXU+VyqlxO lcupcjlVLkdJt1PS7ZR0OyXdTkm3U9LtlHQ7Jd1OSbdT0u2UdDsl3U5Jt5dP C0n5dDyABzEDD2EmHsYj4XyV83yV83x9V62+q1bfVauKZlXRrCqaVUWzqmhW Fc2qollVNKuKZlXRrCqaVUWzdGZCZyZ0ZkJnJnRmQmcmdGZCZyZ0ZkJnJnRm QmcmdGZS3hs6yndhN/rQjz3Yi30QEyrzWJV5rMp8lcqcV5lH6f8K+r+C/q+g /yvo/wr6v4IuoahLKOoS2nUJRRX8/IrNIdEpFHUKRZX8KpX8qgpzqjAnFf18 FT2nayhW7HceQpKOUIYU4iin0ud0FEUdRVFHUdRRFFX+nMqf01kUdRbF9NHu fS+Od+1E5ydBrtVlFCmD8ymDXPp0P+eD1MGhuo4ihXA+hZDTeRR1HkWdR1Hn UdR5FHUeRcrhKsrhKsrhKsrhqrQ8mpZH0/Jo+jqMxpgwnJoYTk1cQ01cQ0Wc r58tUBJ5SiKffnjgG5mGpufjTwPfyjQ0/bpjfailMvJpe6nvLaR3R0MpjjzF kac48hRHXi9cqxeu1Qsv1gsvpkDy+uHF+uHazHlRVk9cqy9I9AWJviDRFyT6 gmYqZba+INEXJNTKKGplVOY7oSNzOa4IY/UHSeZqn8VU5if4Ka7BKO+8Ftal d2jWOyR6h0TvkFA4WQonq4dI9BBJ5jfuv3XgWwUTqiern0j0E4l+ItFPJFTQ WCooSwUdqa9IKKGxlFBWb5HoLRK9RaK3SPQWid4ioZBGUUijKKRRFNKozGbv 3oK3Iddn5HqqaRrVNI1qmk01zaaWxlJLo6il2dTSWGopq9cv6PULev2CXr+g 1y/o9Qt6/YJev6DXL+j1C3r9gl6/oNcv6PULev2CXr+g1y/o9QtUV57qylNd eaorT3Xlqa481ZWnuvJUV57qylNdeaorT3Xlqa481ZWnuvJUV57qyleeaU4f wcdDbeW5+K53/8D5lfghfuTaVY7/ieEYgZ+GdgotT6HlKbR85WTPTHX99+6d ExZXPuHzk+gNhaooGkrB5ausrerQUFt1WJTNfj1syn4D38Ql4SLK7qLsd3y+ MXRkx2I8/q70pvj8S9wS5Si+HMWXo/hyFF+O4stRfDmKL0fx5Si+HMWXo/hy FF+O4stRfDmKL0fx5Si+HMWXo/hyFF+O4stRfDmKL0fx5Si+HMWXo/hyFF+O 4sv9f1R8uX9SfIdFd4RPlF0Rfanse9HXy74f3Vj2H9G/lf0g+kTZldG3UhdG l6SGR9+MLw6fiS8Jn45fCLPjF8OX4o3hDdpwSCzDxW+Hu+KtYVncFr0nbtdv bQu7omOjO/a/Fj0VVkVLwypv/9SBb4M9x9tP9fZTvf1fy4aHXWrrFqPo5nRl F4dzjfJJo4yJF4dF8RK8uL8jfjksUOPWxq+G1+PXwh1G/4WR++ItodXo5xp9 qtFjoz9s9NeiynhFmBXXm5NOPl4VfhA3hoVx3lNrQpOquJ5OfSr82dz+7M5v q50r3D3N3ePjVfv3u/sxd39eHV3giRs88eDAdzueZrYTVPP3qt6fT31JJR8e hqd+EsWpJ+nk18J/pJaF6akN0dmpXhV5SDQoPi38Ll4c5VTp06zgj0Zaph+N 41V6zdXhT6p0hbfvt6K8Sj3+QKWOD/SksZW1xm1W1e76ttBZ9q2oPCyMKpBG BpWoQhbVyKEGB2FQWBQdjHNDU3Qefh7mR7/AL3EzbsGv8Gv8BrfiNtzBhgtD Q/RCaChLhaayGOWoQBoZVKIKWVSjBgfjEAzGoRiCwzAUh+MIHIljcCzeh+Pw fhyPE3AiTsLJ+EpYX/ZVfA1fxzcwARMxCZMxBT/Dz/EL/BI34xb8CneGdWV3 4W7cg3txH+7HtLAudXqYnzoLw/DV8Hzq16GY+k0o8vKL7UoHP9vHx+bbiQ4+ 9mU+ti/etX9rvFtE9IVM3L9/d7xnf1O8N6Tjfftb43fCsHi/6yEcWV6xf2t5 OnymPBMy5ZX7d5dX7W8qz4Z0efX+1vJcGFZe4/pB7hsdFpaPwfW4ATdiLMZh PG7CBEzEJPw2NJU/jln4HWbj95iDJ/AknsIf8DTmYh7m4494BrX4Exbg+bC+ fCFewCIsxhK8iJfwMl7Bq3gNS7EqzC9vRB6rsQZrUcA6FNGEZqwP8yv2hoXp GPw3XREWpQc7HorjcQrOwEdCU/qjjreF9en7Md25daZ/57P1pK0nbT1p60nP c20+nkEtnsNC11/AIiyGuafNPf0Xn9/EX32uwwqsxBqsDevSRT9rxTZ0oRs7 0YNe7A7rMwdhEA7GITgirMsciaPwHhyNs0JT5qMYFeZnrsVkTMFdeASPhYbM U467w/zKk8P6ylNDU+WHHU93vAhf9vnbYV3lD/z8SvwQv3Z9uusP4EHMwFPY G9ZVRWF91SGO4qtKXFUdhaNDU/YHoZgdgavxE1yD0RDvWfGeFe9Z8Z4V71nx nr0dd2Aq7oT5Zu/GPbgX9+F+TMN0PIAHMQMPYSYehjVmH8Vj+C0ex6wwv/rf Q7H6C/givoSL8GV8BV/F+PB89U2YgImYhMmYgp/h5/gFfombcQt+hV/jN7gV t+F23IGpuBN34x7ci/twP6ZhOh4Iz+dODfMPqgrPH5RFdXg+Klcr5sv87fHq 6MPy8r7ovmhcmBGNx02YgInoD0X9c1H/XNQ/F/XPRf1zon9O9M+J/jnRPyf6 50T/nOifE/1zon9O9M+J/jnRPyf650T/nOifE/1zon9O9M+J/jnRPyf650T/ nOifE/1zon9O9M+J/jnRPyf650T/nOifE/1zon9O9M+J/jnRPyf650T/nOif k9K3cJX92TyXhQ49a4eetUPP2qFn7dCHTteHTtd3Nuo7G/WdjalZYevA30f+ 918dvZXaHd5SzQqq2Ix4ZXSsetmigt2mh5uhh5uhh5uhh+vQw3Xo4Ur9U1H/ VNQ/FfVMiZ4p0TMleqZEz5TomRI90gx90Ax9ygw9yQw9xAw9RKJH6NAbJPqA Dn1AR+aUUMycOvB9nB20f0nLF+nsIm1dpIWLNHCR/k3o34T+TejfhP5N6N+E /k3o34T+TejfhP5N6N+E/k3o34T+TejfhP5N6N+EXu2gVzvo1YRG7agc492T ff596VvTQkJvJvRmR9UQ8XRJmE5jTqcpG2nKxtyEsDU3EZPC1poh4a2awzAU x+J9mOL64+GtKKWq/EFdp+PiF6KPx4uiy+OXorPil6Mj2Pe5+FVK6rXo5HhF dBFbX6Svr6AYPqW3HxznozPZ/W+UwzF0zkZXN0Wn0AsX0QsnxVujC7z31QO/ yz7VSK+Ep9x/z8CY8/1sBFWxKDrItTecrSx9L+X//V26ZcOjYf/79+mazxmi 4xNG/aJ6+Hlz+O8rZ6iWu139jGq5SLVsH/iO4m2l/43S1aOdfWrgd4qHu/dE cyj9XwRvRx9yx4edrYyGWeEQPzvGWkvf+nZJqItHR+ea/6vln6TXUq4sd/am u9UmmnC7s/XOro5qnO1xtjw6OSqPhkUVSCODSlQhi2rkUIODjHhxdFh8KY13 Ba62pkV04Mt05iuhoXx0NKx8DK7HDbgRYzEO43ETJmAiJkXD9PLD9OzD9OzD 9OjD9OjD9OTD9N/D9N7D9NvDBv7/ixrqtsdI663i7fglO1n630xeCc9St9us fTSbvGBeS9xltdZeEw0uq4+OL2uITmeZK9jhs/Gl7rosuiy+YuA75i6Lrw6v lL6VKL4+bIzvj86Jp0UfNU5ip0+kZOaWfzw6s/zc6HTWuiw6xhPHGOcsuzk6 ep+ROkvjD4xUc+D/NVkWf8fTl7v/e47fdxzNw+rDOhq5gz7uH/CfNVGlp+Io XfqfUNw91J1D3VnlzsQd26Oh0SZZlIaKttBN1xqptKfXh0a6u8OuD5JxGwbe l7eDqz3lnSVFXDE47NPD79PD79Mj79Mj79Mj79Mj79P77jPmxWFr6V88eeMp IiUz8LbVoSc6/J/G/I6c9T2MtLbRlPjK0GV2260j4XGHGbvXU68bt9q4ff/P cauNu7H0f7N422DjVnhjrzd2eGOPN1Z5W9eBVewTZxe7Wvq+wO9Q8t/DtX4y OjrSk1VmnPbkLk/u82SNuewvWc2Te0XFpuhz0WZsQT/P3oO92Id3ZIeLdS6X hNPj78gWl0ffjb/n+H3HkXqfa83n+vB4fBO/uD/6WOl/4mbxeiOeO7A3q8LM gdHyYY2YG6LL2XPAR84s9+7y/QjRyRWDo89lLsVluCI6OTMNs9Di/C1shHlm trvW47jL3Erf/7jdzPqtud/MTrHufjM7xbqPsu5Sxqi03qy1tsZro4MHvG6x J171xGZPHOWJzZ44yhMfc/fB5vz2gOetCnvNu8+Tmweeyg/8vwSXGu8ynnyF 43cdx8iKG6P3y3j/Rd13wFdVZP+fKXfmvvfuS0IIIQktdBBUQIQVRMHFiiy6 dhRFQbGAuoKISLGsiohSLOCKFEFdxcUOCgi6iooFRKRI76H3Hsj8vzPvJSYk EBJY/f3v/cy8uVPOnDv3zHfmzNx73nZgTBjImA5kLAO8m+b+Ucc+v8XIJRCz Hc/hGoSud33DWsNLFd0hVQ9hvFsPvjegxo1mm5O3lSi3FuXCoO6DMkfKYkqn zmYn3Q53B1x3PP1r8Dzbg6+b4R6EZNrcayAl69HSWeBpI/TLTaCyGeNkCyrv JZmd3ha4rWan6grXDe5euPvgHoTrCboJ8f8EWgTKi0F5seiOu3oQmL8az3EN pGgtepC7W+DwBrTRRvOj08XLg79s8JcN/rLjd2/XlJeDynJQ4aByGnhMApX9 oJIDKtbSvA8Kq+z/EYG/bPCXDf6ywV82+MsGf9ngL5tOp850Od0Odwdcb2pN j8D1gesL149ao8ZE1FgfmOWhha8EZnlo5SuBWW+hpT9ES38OOf0Wcnop5PRy 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 xTu6lm4svtbn6BZinm6pW4pF+q/6YvGbvkz/TSzXV+orxRp9tb5arNXX6mvF Ot1e3yLW6066s9ii79J3iW36Ht1LbNe9dT9xRD+qH5NcP6WfllIP1M9KpQfr EdLX/9L/ksl6pB4py+pRerRM0eP1eJmqJ+ipsrz+Ss+SdfRcvUCeqZfoXfJs vUcfkm31YW3k1X4tv5a83q/jnyZv8M/wz5Q3+Y39xvJm/xy/mbzFP9dvIW/1 W/otZSf/Ev8y2dm/3L9cdvH/5reTd/pX+dfIu/0b/BtkN7+T30Xe69/n/0N2 93v7vWVPv6/fVz7kP+o/Lnv5T/vPyEf8Z/1Bsp8/2B8sH/WH+cPkY/7L/qvy cf8t/99ygD/BnyAH+hP9ifJZf5e/Ww7y9/p75fP+Af+AHBwC8MkhIRmSclhI h8LyhVAQKi+Hh9JD6XJcqEKoshwfygxlyn+Hrwq3l2+HO4Y7yg/CncOd5Yfh O8N3yY/C94TvkZ+Eu4XvlZPC94fvl5+Ge4Z7ys/CvcO95ZRwn3B/OTX8dPhd OSP8Rfg7uS48P7xUbgsvD6+T+8IHIxkyJ1I9MsTLjAyLjPWej0yKTPdGReZE dnlvBTpI834I6gUXesuC64M7vQPBPcH9KhQ8EPRQiUHPoJdKDnoHvVW5oE/w pEoNBgTPq8xgSDBE1Q6GBS+qOsHLwRhVL3g9eF01CcYH76qmwXvBx6plMDmY qi4KPg8+V22CGcEMdXnwZfCdahv8GPyirgl+DX5VNwULgkWqQ7A4WKE6BquC HeqOYHdwQPUMDgWHVZ8gJ0qqf5RHuXo8KqNKPRH1o1H1VDQpmqoGRdOiaeqF aEa0onoxWjlaQw2P1orWUqOi/aP91ejoY9En1ZjogOhz6o3o0OgLakL0pejL amL0legr6v3oq9FX1QfR16Jj1YfRcdG31OQEnpCgpiUkJ5RXsxIqJFRScxL2 JxxSvxAPY/5OFFxQ5gqqQ5l0ig4zxawx66mB2YDwkiJz5JhXzXs4t5uBuLrC 3IgyMxHaEE/fYDbBXxW/2leovE3dZPbg/D1NF1HPbrgXi+X3EbjPC8QsRw2p tpZjHtC8kO83k41wgJH8Joriek1BHnPvpog6fzQrzTbzEyisxt1mFcfjCRw+ qL4cp77WbDEzzbr41a5CtW+GW2ZWmHnmgLmMQmi706hqvvSc4ioze/Hs9oDC 75yj/TFjiaW+Yd6gAC7vGR5VeivcOrMYNJbj0sM8qxadh1AVl/q1mW0WQH4g O9Dbi67/HfO6GYXfAXDnmzPMg6YHQvnaMffuEdpSqHSO+cZkQYK+MT+ADzwH 23oFS+Xl/bGYpiDoqUQJLvR8PGYbaP+UK5v5pSIeswd3vgttv8Tsxnw/EVGN 8RTyajeb3RPanJu7UPktZiP62LbcFrcro+53af48xfEdz7e4wNU/Clx9d2I0 cDR0+eOSZhbi+flmYTE178/XtxvSX4rJ/a75t+3R5psT5qlg+fVWOqzMFkqZ fwKlcWfmKReadHR/NredQHnIiPnY4dZy+9xKepi3HZq+jXYtfPgnRGG7meJQ 8wTloggKu05cqoooHUdY80upSr/v/IUWOU75cdYJ1L8+NpaZbMjR7hLXEBw3 tTbc310tuSPeqtgZT69SRJm6OKvgrFuAyzfjv3Ni53HKNyyyfLx1ISV7gU57 j8Uw8HOr2QkEW+n6lJXqAy7+BZdc2Xxhpptf7Yh+jPKH84WfpXTg/3XUzvaQ eNwyjA1TC2NxXpnsfOEhGHkS6VLqiPDEeNwatN7cY4+qufU7iX4F5UNAnwfi SG7jPzTvkTCTj1n+aCn0MHvqgvjn4unfmW/R/t/Hrwrj96F84YEonU5tyc6E zo/HfW4+A4X/HLP+tUXH5+CJWXw0V5q/mc6mXTz36ELlHweKvWH+Y342v+aL 5tSBnqBBCD1Pg+03M/QuJHciTcbscCpNp0ZuVaEJfUULqCn9RuuoDWUxRtez jqwjdYdG/3fqYXV56mm1eHqI38270cPQxxdRX76Er6F+fAPfQE/zTXwzDbC6 OQ3k+/h+GsSzeTY9b3VzGmx1cxoK3TxCL4gqogqNEDeJDvSK6ChupVflJDmJ rFZraJSX7CXTj+oT9Qn9pD5X02m2WqKW0s/KKEO/WJ2O5lmdjhbpK/SVtMzq dLQCOt11tNLqdLTa6nS0wep0tMnqdLTZ6nR00Op0lAOd7llG0OaGMqVf0CNY yOp0LNHqdCzJ6nSsjB6nx7OyVqdj5axOx2pBp9vFToc2Z1g7X/geu9H3/TC7 2Q/8BHarX8Yvyzr75fzyrIuf4Vdkd/uV/UzWza/u12T3++f557Pu0NpuZw9C OxvAekE7e5b1tvoXe8TqRKyP1YlY38gjkSHsMavpsOFBUpDGpgbvBu+yr4M1 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 mwqvzZldZpX5DSmFdiFKe+Sukhe8sv0nLtX51gvAu8gLbznWUzYrCq9qnqqj 6B2cYkuNN2Pd72G3Gv6ddXZ9yLyN0Kx4nlzJsj14r5mTG1+ietY6GV39+7Vd BTPL8uV4zq0H2bXyFS60FtzkR6h4+57o83Wr1quLz1fyA5KWj67ZZw7DHbJr XeZIgXzH25f6P3b8wX3+BA4z8iQKX1EEvdVUBzJY+SSoHv+oQw5bLZ46TC3y ADac8B7iyY8VR9ErwFX+vneC5T8008378f2BFDPaTHexa+zonn/0LtX8YRGw caWbP2S5uYlDMzsmmZX4nRDPtc3tt30PNxNnVsGVa4dk6ZS7Nvs1xoJZZi7c SMReZuaZH1z8r7FZhNvRvqHknBbifGOBKzeGmg/yxdxtxplu5hm7ym8eyItt jrhPbb8rvOtIds+18F7oJvMF7mXxqeupufJgxzEgWO68cBbF92fz8wBcztsb sXssxVD+6VTxWNoDrRR1v0PtfnOh1B7m6wJ5Y7/LMLqtsRJSivrmW6l38y3X TjaE8W1lvNXgm7vMbPe895MoYgyLUoNCNLehH2yN7y4JIEfurtP+WOrJj2+/ 70MX3K/MnaXYuZcbt9fi3FZo7rnCzT2L6O3ozacYu4o6jsKzeYXSDx8dE4// R9HxVJJ99BIf5o4SFoi9YzHAPOl+tzsE+Mg6hP5tJsVCLi13fub2O/GkPisF dx+aT4GYn8SvvjbvkH0/aLINwwE5gWJfAyVyZ8Hbgb4/xHEitn+WUIjmt+YT MyNOM8VexeMLoIMxJefWlUMvNb/lXeXqLqtsKFevjM3EHaLNsvIRe0ck3n92 OUTuYK5wVzPI7ubdD/cQQkPMCIx1D8Wp5Hu3BS0w1fQuBbe3mr7mddMNof+i V79uujh8eA6j0eto5xlmpLkTY+t2uwfo7myKmWjGxGqOjxoZ5r9H0cwyC6BV xnru2Xmh+LzTHIy5E58xF6C9x/X3vLeCCo5SbpzO03zdzHele+8h/xsXZxR8 Y+WPOgru4ro3mLYWz4m7o0LvX/0RR0FN1rYqZHh3cfjpns4p03RLcuSff6A3 WC1rIX6PsdOdl3PTyfNrXjN9zD/NcBeeA3kfa9+UiY9DsfniXvMx3PSTq8dR ahB7k+WkaKwx6zESuvERz3Q95DBvzh176mYH5hw7ipoBlriuUsy585X+IfZU wYvFwZ/iVyvi/SfO9Z/Tn4s6zB3mdjPNTCLurvqankDrjrEZgZlsDuBqkPmH OcdUB442Ng+Zu06irtj8MfOk+I1jUkynzXvfcGzB1FN5mPGngIaV3gUxVMf8 ttDTd+mrzS+/j8J/7gFulqDPuTVPyLDVFPM0ldhMF6nfwh3jXdU/+gC/z+fv uZhfTfkz+Tn2gd7Ww86dYm+6mu6YHf2K3hdLm+H8JeYzc6N5BqHBZmksrpR1 fXvy/Jawxj353/P6v3vkzXF3nfzblUW9634qj9jsEPPvdRj1TsGKRXHvKB+3 7AlKlHnPre1vLn1N+Y70U0LlhA7MhU565mqGngpOiqkjjnSY3Z70uvwpekrF 1bIGM9v/cU85dQdmPXtOWcsknwQfp6K//4H7EaWRRsx7VsdKxr/syF0Xme32 GWYft/C98bzvl7zeP/oozTcQhWgcczfkOGXcar1dKYppwrEVnby94PDx9GO3 tptO3UiVvF5XvhRfeZksN3b8/i1Z7prciep2Ebq45LX+qUdqaQuWfOeJ7FsN dl86T7M3U52/Ffhc7G7E/7UD8/69x/5mIl++A/97Xk7sODGELO2oXuS3UsXW 5d4g+P3bQbdjkSdZ4SIL5ea1a1UV6Ub0uT/hKDh3j6EGtKdicNbtxPwJ631m 5ymktYriK8pFfnFU133lZHfQ5xSRWhxt+x3VqtySuSG3wr8qHpNbZ3NX11F8 5bt6+neaubzY77UKcWW/ympod2lKo7WbkeZNMyXvO7B4yM4I4muac/L4aFiI 3zdLXl+B8qV4U8j84nYlvs+7du8AYb6pTnin7wS+3jtG3UV+m1xMmfVu1cqO 5A4L3NXX6HsxZAgfb37pRpREOu/Evtcsonxp3n+YZ7+3dG5f7Nr58VXz46ND /F4qFnzfCPK108x1biSVx5x0Y3w3aWWsTztZu7vknBZzH7EdtnzauuloHjJv mVHObkDeOz2mjfmwhJS//mNmzJbHY9djcoraVY7tKB4Vt7P4XZzSHu4dmTgy m12YT+zC/GiRWfw7EpktiLN7xn8x17rrjyABC0wHM9NemxnmRfONXTF3aS8U oL0sN75EHLUz3cxj5rL4lQtBAru48JtmnHkAcjASs7UpGHltjknmE/NxfNS2 q/Op1MDtOfcyXV1c7H3EUZhXv2afh7WSkPcWUIG1IHMw92v+EvH7inkbutq/ 4lezXd0jHc7Pdm1gd1/fN3vMly5D7Kv9+BsGcSk+u+S1/lnH/+Rr7MK1rMpF rNi+8591lGafCk96K+VbdcizkHAiY09Zsu/vXOXCFakxdM9MV3YdZh3r3GhS gc4y89FD7bnMLDfnoL90ocDExvW4noreGdOpysevP4zvVHDK+2Laxb97nPtw 71aY3hjn4iuQppW5Ba6NuYPKmtgYnGtDoy/chaa5ucbEv2ww35ml7m0J22M3 YUxaFddf61EdN3LWc7mOv7pRNF9jzTj4b+ddT7G6XIE3K66OB26kv9NfqJGz E1PTpeS/93DOLyaSs9+NlNPMPeYjO4aZfuYJGwLVgQWqjb0Ddk8p+O1q7sP9 3+cufIS6Otx8wo3Uc/Ess3JiX9JPdlZBcg/XsqZ7nMYJ6HhF1r2x+DyFymxx bwTYeYKTJifNX+NauuTguPMdWyqRzgX3nOYVY8eufdyO3eN0KeOsHHV21ul6 Oet0A5x1uoGsPetAQ9hd7C560dmle4k9yAbSCDaIDaeJ1jodTbHW6WiqtU5H 06x1Ovqcfcnm0AzegDek2bwxb0I/W+t0NI+fz8+nX611OprPL+VtaCF/gHen xbwXf5iW8iH8BVrOx/PxtJq/xSfSGj6JT6bN/DP+GW3l0/h02sa/5jNpJ5/F Z9Fu/hOfTXv4z3wu7ePz+Dw6wBfwBXRQBCJKh0SSSKbD1sIcGWdhjpyFOU/U EDWYdhbmfGdVLiKaiCYs6qzKJTircknOqlyysydXVrQXN7IUcbO4haXab+VY mrX6xjKs1Td2hpwsp7P21uobu81aemO3W0tv7A4vySvDungpXjq7y9p7Y/d5 S71VrKe198b6WHtvrK+198b6WXtv7FFr74095e31stnT1sYbe97aeGPDrY03 NtraeGNjrI03Nt7aeGMTrI03Nt3aeGMzrI039rPqoJ5iC611N86sdTcurXU3 7lnrblxb627cV2PUOJ5g7brxZGvXjZe1dt14RWvXjVe3dt14bTVLLeJ1rUU3 fo616MabqSy1mZ9rLbrxVtaiG29rLbrxK6xFN363tejGH7bfx/F+Pvc57+8r X/NH/Ygf4Y/7iX4Sf8JP8VP4k36an86f8iv5lfgAv6pfjT9jLa7xZ63FNT7I Wlzjg/2GfkM+1Npd48Os3TX+grW7xl/yW/qt+HBrd42/Yu2u8ZHW7hp/zdpd 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 yf7GcMtwj53Ds/kS09K/fmBgmSyNzWCL2TS2hHWwt5mJrWbL2TfYGhZj4+xj lmD/zH7LTrDfCensXwRFyGCfCpnCY4Ig8N84yfx7k8LjwjLBIuQJ3UJCKBFG hXVCo7Be+K7wZeHHwi+Fr2o+0nwkeLVurUcY1Ia0EWFIO6pdLQS072nfE0La 97XfFsLaD7TfF2LaXdrdwte1+7Q/Eca0P9X+VBjX/lz7T8J79HvMddoz2o+F 97WXtJeFb2uvaf9d2Kj9g/YPwmbtn7T/KXyPf4tO2KqbqZsp/FD3sW5K2C7p pELhrPSs9KxwV3pOKhP+JL0s1Qif8F94CJ9Kr0v1olZqkL4oStLb0nLRILVL JjFPglkQ50oeSRVfkL4urRFflsaljeJ86QNpm7iI/3JCbJV2Sb8Q35FOSafE fum0dF50SReli+KwdFm6LAak30s3xBH+fSwxLP1RuismpHvSlDiqZ/oM8T19 lv4x8QP94/qnxe/ri/Qvibv1r+nt4mH9gH6teFP/Lf23NIr+ff1GTYb+Q/0u zUz+76pqHtf/nX6/Jk9/QP8zTT7/PpCmSP/P+vOaSv0F/TVNtf7f9f+peUMu kvdoFst/THtK81vDJ4ZPtPz3cj62DaqwEv6b7bpTqSpK1aKH7aLVR9/MXn2i 3vzm3frm1adXn1t9sXFq9ZXV1+tXtewayxnLHyusPz9WMlY+VjVWO1Y31thU 3LRw9a2mdavvvmF9I7F6coyNSWPKWFbTwjc6cIXpcb3fpuv9T0zA9T6Jq/5T 4VOmwTU+nWkNnzd8nukM8w3zmYTRT9D3VJn4ofghE8SPxI+YKO4W/waj/0H8 B6aj76lK4i/FXzKZfieWJn4snmXp9A1Vhb6bmiH+VvwtM9C3UjPFP4h/wGeH f+80SyNohIf/prBOI7Fs+l1ZjiZbk81ma3I0OSyXvkc6R1OsKWZP0G/G8jW1 mlo2l34h9pRmoeY1VkC/mSmkb3Q8g1ekCFl0XrkyWwML2BpsTbZW21LbCpvJ 1mNz2ry2gC0CHbWtsa2zbaDabNtm24l1e2z7bYdsR20nbKdt52wXbVds1223 bHdtk3Zml+yKPcueY8+3F1KV2MvtVfZae5290d5sX2xf9hfLebvRbrbb7a6H i8+u2mP2VY8s4/YJ+0Y7CNa+/S+WSyjVvsu+134Aj58th+3H7CehfDljv4o9 3sC422jdsz/oFXvlXgP2ub13Vm9u79zeIrx+Ic2euqfwX7TPoHOSg0XD8rBo WRF7lulYKRY9+xwWmdVgSWO1WNLZAizTWD17g757/hbuSfxXmZnsK2wZm85W YMnCXcnEZjIrlllsgLnp95h++iVmkL5vHmW5uFu9x+aw97E8wb6DJZ/9ANf+ k+xDLE+xXVgK2E+wPM3+Hksh+wcsz7B/ZEfx/E5gKaZ/K/s5dp79Cp+WX2Mp Zb/D8gL7PZYydof9Ec/9Pvsv9iKbwjJPEAU9qxTScWesoW+Xv4I743RWS98u XyDkC0+xV4WnhafZ6/Rr0HrcK1vo957LWIPwNcHIviB0CB3sLfqmeRP99vOL gl2ws2ahT+hjbwsewctahBEhwlpxZ02wpbi3fp19RVgtjLGvCuPCOPsa/fbz /7L3NdBRHFe6PTM9wxiLsawoWMaYKArGWGCMBVEwUTAhGMRMzxhjGbMKQcp0 9/z0jEbzb8wSDCwmCkuIIJgQgjGPJYQoCiEEK0IWGLNYJkRPwUTGmCUsD7OY YK3MwzyZ5WGy937dIwkhx+TsvnPeOcmp831dqq66XT/33rpVgJhHfrZRqDA1 mZoE2bTf9JqgmFpMbwg+029MvxECpt+aWoUg9DdEPmKkELYX2guFavzdvaj9 YXuREMPf10vYJ9onCkn7JPskIYV/Z5TG3857xl5p/6bwrF22y8Lf09qeE7qg +8X8eye0YkIJYQqhlOAxUGagnFApPK2VaFO0Us2jlWnlWqXm08JaXJtPvEhb pq2gVKut0zZqW7Tt2g5tt9ak7ddatFbtqHZcO6Wd1S5oF7Uu7VrIHLKHHKHc 0JBQfmgEpdGhotCE0KTQ1JAzNDM0OzQ35A0FQpFQMrQgtDg8MLQ8tDK0JrQ+ tCm0NVQX2hlqCDWHDlA6FGoLtYdOUDodOhfqCF0KXQldD4uUssODw0P5/xe1 eq1B2iK/4ZiH377w2H+bfrsp3QEtz4aW3wkt/wy0PBda/llo+WBoeR60fAi0 /B5o+VBo+TBo+eeg5fnQ8gJo+Reg5cOh5fdBy0dAy++Hlj8gtFIqhK6Pgq6P hq6Pga4/BF0fC11/GLo+Drr+RdJ1s1AM/f4S9PsR072mYaT3rNkl0OyvQLMn 4V9PPAptngxt/iq0eQq0+Wukzd8iG3jO9BzZAP8biunQ5lJos9P0fdP3yR5Y pyX86wk3tNkDbZ5paiU9nmVqM7UJT9qfsj8llNnL7eXCU/agPcj/mjt7cfYK Wqcsmvvb8beGhOBuQhNhP6HFKGslHCUcJ5ziMvHOYEO0MVT254E65fHZwebo vuCB6MFQ5Y3gsuCh6OGQjxCOz2UE26JHQvE/D64TbI8eC56IngzN7wH/HDwd PRNaRFgW9wbPRc+HVvx5oE5tPBDsiHaG1kU7g5eil4Er0auhjYQtsYvIb49H QjviyeD1mKCJMVtodw/wc1N8gTYwlhXa/yloiS8OtcaXa9mxHGBwLE8bGhsW OqqD8zy20PEe8M9aQWx46FRsOD+BkbHC0NlPB9fTxsTGauNjxaELN0KbGCvJ yO0NbXJsSuhiD7RpsdJbQfXp9FBNinm0WbGyfjEnVs6oPpcuYGjzYpW3BCXm 07RY+CZEY3FGdUciW0vH5t8Kqi+lR2oLY4uApbFlQE1sBaP6SnoMPyMXU6O1 M7Gz2qpYrbY2tq4vqq+nx2sbYhs/DVExPREyNse2ANti27X62I4bsCu2+yY0 xppuwL7Y/lvGwViLdjjWehOOxI5qx2LHb8LJ2KkbwOO+BYS64iu187ELWmfs Yr+gd6Fr8TVhc3w96l2Odd0SrsauhYS4uS9YRthOcMQ3hWxx+60gnBvfGsqK O7qRE8/tBr8fQsiP1yE/Ir4zPDreEMqLD0F/+yBcFG/GmIbF8z8N4QnxA+FJ 8UO924eGx0fcgML46JvAbafG20Jj40VhZ7wdz5nxE/3155MQKo5PCJXEJ92E KfGpodK48yZ44jN7Izw7fjrj22/wxYavzPi48Nz4uYwPCnvjHb39SLee9FrX 7nXJzFEgfql7biPxK737xL4kOpB8Ctl+NFv3AdHBhg2zXQ2NbeR9g/U9WkAY mZ6c0efomNhx/g6/Dyfj18MLEmJ4cWJgeHkim/eX8MrEYC7nsYXXJIaG1ycK 2L+GNyVGsp8Mb02MCdclxvMeEN6ZmMi+HWMmfQ83JCZn/HO4OTEtfCAh8bjD hxKzeC7CbYk57DtZJtCemBc+kVDCpxNa+FwiGu5IpMOXEgvDVxJLsUfyHsR7 As/hddonjf2sSoxezsxz1cBEQVV2ooZl4N3gxKqqoYm12Hsye22vNeqWyTD2 lMxewH3ivbGqILGB+1Y1MrG5e525Pq0drz32ZdrzeGxVYxLbuKxqPO3hzTp4 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 7YTz5SecrzjhfMcJ57uOP69a5HdZ5oXqeSecVz/evnqNE85PbL/qhPPGJ5w3 OX4VL7nK0/nItA/GSqdgItW6nf9P/E4dI0GqcOoU7kJFJJ3byC3ObegWuQVu odekg53BTm+3J9ij7yaDfWKCg8FBsa6eqyehu8xd5u/Xmg/GXm51vYwpYop6 jX4ry+l4bCHfs6I/L+bfUfX07/kWy0Y5EuT5MWT5UeXlNhOT2zC3uWej3Os8 dXaFfQ3Xd5yV/DvCWm6rWFPYj+lnjovdNn8s6s+3c1zsVonxZ2s8F7u1np/4 uWqGlpBSbqMf6wLf+j3HxW6TPy705z9wXPw7y82J5Y+J5ZbE8qfE8u/jvZrx Nma81zDev7c0oeVaWpr+vsUtYYSfM8KljPDvLctpWUHLSlqMRMb/57fZSUbf yRc2hX1Ui/qo2twrcq/0UV/gFkjaj2mhj5QVfU0RWJ4f+v/L+f5D/ayG+tOT g5NlcFAiOFOG8O+FDgtaBa3l/qBr0E2G82+EjgzuCnrLQ8HIYKQ8FowLnpZR wd5grzweHAoOyRPBb8FvMkZTQ8aatEnLkybX5MpT5hRziowzxUwxedqcYc6Q 8eYcc45MMOVNeZloKpmmMsn0Nn1kvuln+skCX/0HyAfmr2aQLDTDzDBZZB40 D8pHZowZI4vNU+Yp+dhMM6vlE1vIZ81RW81Wk4ytbxtIgW1kGwXGTrKTAhv2 Dp8NwlT7VPugSqpjqmNQNXVb6ragWur21O3BRaleqV5B9VSfVJ/g4lS/VL+g Ruqr9PDgkpzrctoGu3MePCkIMrmFcy83d+fenDvZvFKoQ6EuZn+hwYUeNkec cVk2y53tzrYnu3PcObawK+PK2FPcue5cW8SVd+Xtqe48d57Ncxe4C2xRd6G7 0BZzlV1le5qr5qrZ4q66q25PdzVcDVvC1XQ17RmulqtlS7rarrY909V1de1Z rr6rb//kGrgGNt81dA3t2a6Na2NLuQ6ugz3HdXKdbGnX2XW2ZVw3182WdXe6 O+257i53ly3n+rg+trzr5/rZCu5ud7c9zw12g+357l53r73A3e/utxXdcDfc XuhGupG2knvEPWIru8fcY7aKe9w9bqu6MW6MreaedE/ai9w4N85Wd+PdeHux m+gm2hpusptsL3FT3BRb0011U+2lbpqbZmu56W66/bOb4WbY2m6mm2nruFlu lq3rXnYv23ruNfeare/ecG/Yy9yb7k3bwL3l3rKXu7fd2/YK9657117p5rv5 tqH7wH1gG7kP3Yf2KveR+8he7T52H9vG7lP3qb3GfeY+s03cF+4Le61b5pbZ pu5L96Vt5r5yX9nm7mv3tb3OrXarbQv3jfvGXu/WuXX2Bved+87e6Ha6nbal 2+P22JvcPrfPtnIH3AF7szvkfrGtffK2pX4JlSsIjgRHfBUrCAp89UgZ//6D fZZin6XZZ5EpYUpIlillSkm2KWfKSY5t6KvbSal2qXaSm+qQ6iCFUp1SncSl Oqc6y8mpnqmeUjjVO9VbTkn1TfWVIi7f5cuprpQr5fd4aVdairqyrqwUc+Vc OTnNVXAVpLg7350vp7uKrqKUcJVcJf4dgKpS0l3kLpIz3cXuYjnLXeIukT+5 S92lku/+7P4sZ7s6ro6vVlp/z6H+lnZXuiuljLvF3SJlXXvXXs51HV1HKedu c7dJedfVdZUKrrvrLue5Hq6HnO96u95ygevr+kpF19/1lwvdIDdIKrkhbohU dsPcMKniHnQPSlU3wo2Qau5h97Bc5B51j0p1N9qNlovdE+4JqeHGurFyiXvK PSU13dPuabnUTXATfL2e5CbJn90z7hmp7Z51z0od95x7Tuq6593zUs+94F6Q +u5F96Jc5l5yL0kDN9vNlsvdq+5VucK97l6XK90cN0caur+5v0kjN9fNlavc O+4dudrNc/OkMfXvGupfE187F8m1vnYulqbuE189m7klvto2d5/7anudW+qr bQu33FfZ690KX2VvcCt9lb3RrfL3jJZujb9n3OTW+ntGK7fBbZCb+Q3+1m63 2y23uL1ur7Rx+91++Ys76A7Krcm7NH3lU41aW97nViq4JbjFqzsGHSUI3wrf EpM+lj4mNqt2Vm1fh/8z2edr4H+z77/Zl2RfCbKvgr7aCm5Pr/tvjv03x/5D ORakuvjX84WDUqaavSJsKSWlJn+/0b9jtJMu/vX7AP/KcqQ8LuNlqsyU1+Ud WShLZIWslU2yTfb5V/YSpIPc7P5is3tl986+m2Of7AEc+2bfw7Ff9l/9sbeX BnHsnT2YY5/sIRz7Zt/LsV/2ff7Yx9sN49g7+36OfbIf4Ng3+0GO/bJH+GNf bzeSY+/shzj2yX6YY9/sRzj2y37MH/t5u1Ece2eP5tgn+3GOfbOf4Ngve6AY 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 hYWLjZ1dXF1DI74DwBPaj46f22TQAx9zd3QxMNjeKYOtKwZVA6C/CBCYAxA4 pf2/BIDQl6EnQyfuKwLXqR2cRbVIIDC4FgT6iQCCtSCw5V+DwD85d8KP8E59 eYidTneXCRezDj8tb3qhXWdl9os+t2J6bU0qphbvShyQPSd3MXdgXN7M1513 pDWpUN2+k/mut42mSepU/abJJUWnNx4btKOJffsxNtqB9UWVqqrDExlzvzSq t/3oLLOVWp9M1yW88Y8emL3SZtK15wtybg1b9jLGuLBjWPbr5F/1xnmf6ryh Xfmr5vMGt7nyKPmBYU7mgAEaDcuphS+1ZTv6dyva93jjsOXnwk/53m1Z+tav sir39k5Kt1lvi5s/eS5dM6eV2mN4wz7ylV6DH7wfldRqd91Tj9pfXHO3d8v3 w488iArvd/JixqSfU23Ejy9dz4SbrW/T31fouLep8HJLWtMVHqX15iqXT40C 2UbvArxbVo13bKhLfWOi1tS/h7m+BD1Yjbn1p817Yx+B6xjIoOHVdUTD73Zq fPOL2kFsVI0LNr/hQrfYWAAHcFR0VHR4aEKkRevhCQNi46MTkgiYgQBzUTs7 q5u4OAOYOddsOkub/02c/WcItiG+Z0gdMWKvWUY/C4s2ixIDBrU0uRR78sTr JwO/LDTQun2racJE461OOc7Pqm7ub+NnfTEelTTuzk47vsbC592rAYWdO6bm 707qODSzA3Otst6trOFTi1cNazfu8oSSt7vfuC07FtL++tqiFrcbDlhovCI/ fljQa8P5pZWN58fnXErsaz6i/cTJHgZnhvWiocuk5m+IdrpWh/syN8H2bqJT 4A09sWfZudSwyhPH+nqpu2xvoFvaSiyOt9VqaHXE3a9FjnOLOadyPRSTQ/yC Uhra0c5bO172D394ziHsdfsWDwuV6INXbvbZXjPrBzwatcr3jVexe3OP7E0j QvINs1NPaM8Oar6vUKOv7PxXBOsDLRIsakrIoCs93JgWZVDUQq8fIokEVmaa cjn0wCmijkKjJjTRx3KanBjk77d9lHSWyrNqv/P1p6fdSe/XrEAdu7z5risO Yp1vH9Kj5Lw5iwLQcAhn2qLW32GZUJjSr1VQg4X36+l+trvDBqT1LF0mdqnG Mh+xg9g+p21O6ymefx3Lvh2Oh64tQRBBscBaKOYtAijXQjGPf0XISQOmbfVZ /4hfFEY9m7QcV99r7dPYVuudN8c8FZyGFPh8fNp3+PNOzRwuty3ivpx47KBe an0yuUv6eMvehS2cOu3IKwhafC9u57ZNZUmbfeI/tnzSetzxO7xh9In8xRYO n7guB4NOOdzzPbcr7mGBKk+WH3R72/SO3d+ktVn8+u3LF/em1HVtvi0o41WA 9WS7ZSmm8+7OZ8ze3PUrm5l7/JFu/i9+R03OzY5Psxs6ONO4zPRVwKX+J62q QsxO5c3c3WBDUnhQu7yup8ofL+0RdCOTat/Oqe+7a2supDgP+bwsTbf0afTD lXn2e4420hIiZy0qeZ/3Sae+RqTH/Nej6vruPHsn6NGZkQuMQo41Nuh7Y56Z zyyHPUWu7UxfaOkbo943GveyPJ1+ROPFZGGm/2BB169Fsq334vizbwcd3/cs bmn3ud3HzE/NMfGWBX8sXtqfTch3e+7gZHj0Qby7zrvY9c37p5R325DqYhBp Lky/oXUz4l3saa8L5w0fJx2UbzpfYX+r7vTsQrZCt0GrotLyOyvHee1k+nWI 7NfKb12bZ37PNyYmXWFdNQabjlfXvSsE3rifW3G/g1ZRRHpVFwPH5L205ai7 aa0bRB+YNzvtWOqVTMs1qpDFr/LWTBkwkY9x2Jk4EJktKHpjMPqDwUSb7VOL Ywo6qJ0yrt8b2uIyGhvW4ezpqce2GX0S4lP3LW2xlmoVUxWdueCuVoHWJvcu yksHWogpCgbw++VX/DYY4Erw2/S/gd+iu+gqAmI3dhElMeqsJpsQasPmfy/c /2fovSR30PpbJd5z7ZIHOta5s/vuvUOLulp3KTp9w8jPRvPF2RVnOxUliBba T5mLgWn6PvNN2sxdkx4i1r+GBj4avfvZNEbzoyBPfzXtZN0TLjY/Z71519/U /vPoh1PNnjz0W5q7zzrgeOqn9sUaZ/qsPbOujTyvfPmgef0vN7zuFbBuypn7 Db0cGxRO8f+pG18qs6+ImTNHHPLz255i1qexlxZufGS5cGzZOd23yq0Bg7tt aj9niTfy7RCl3cA2qmBh6XnFBN+88kkrtDvoaaQsmfT8p5FfcIZZF+VkpCV6 Pd9609pr50GHwCVrzUe2Vo84mXmr2cR5uaHUZjPV+s8fMzfg01YdA6vK6QP7 Lbiv6L0aWmTFP0LvHwbC36G3Vm30ll5cLk5IrwbfCXPECak/ht/c8GWhf3v3 TNFKKjLI9c3JL+o0rMc7Rtcx8v8Z1P9LoTu0tdbC6QdCZO3cbjzeVDSi5HRS 1854vWPC0F6Ded3Vp/eMnr3N8YJO3szBYdu6Uyf8LHS7LLoxqtXd7jvX9sgw vWOGpxTuHPlmxplnzfCLu3tms/TRVO+7rwL0b/ivnlv6MDXm4vh9D+a/UThN lj3+xc7GKq7iw+fSkYscVR+Zu3G7jPyyZg1k49O25TZZ3N/hUFfhSViIp0H6 DAvPu4yxc/lJtW+iukWjeO7ok7gWVZNZ3Vv72dBZry5vM3zqN2PcocaN+izd +3TXGK7N6AsB8ZYvxOM7R0aG9MKGrJ5w7ppe+vvm26N6bHRwelg+ecrJrkGP suLmDyps0unCh6S9q4xGhdm+zMu0dVWMMA471sJ8cN2UV9wR+53FbTfeL382 ZvO9ZQUJjbf5HRpqrVM/kWvebebQYK+2ers2blzXuf/RJW2qxidZjs/WF6Me tdHpY3w028ryTNvHjR7vfOd90v7CFefxnerbedv0DX4S9HL5zUVZx5vG7p7Q IEGh/SLRcm9myr4GgVvWx7SYlpsYumlIru7yvas6vNKJrZzuPGjDl1tdj860 Pha1O8vsZ50IqoXD2p6zt5Va3t+87nj4ppGB9IXWjl0K56/LH7l6Y86C4cZX 5/6sO9zKyblAOSSn18x6e3NeTjpueempuf+xjBc+tz/iyNhp3Jij0UcfDHmy YuFptW2VcKhXyJXOJrlXPjllezr+ZDDwmO7SSnWKHIawfAWFsQjD7b+nl388 bfLbJHLOhIOSXKvpvxoyNV97hhou4LctTi2ItY/qS2Lw6z/K1QBKCxanzZqu GDvbq4V1M8OxvInhzc1xYkStf+HVQWJgjt34hqgzikbhKB7FkknuKJSALFAg SkJxsNUf9odCbQBKyq0/3uZPB2tCUlxs//jQuAFJFr8jFXkKRqG7ZL79/Irc M1d/LnHv9qLgl5lb3095UvzI3/PMJePk9+NLLsbMHn+8cwfPVy7FJZX+8/o7 7o5zS6mKP9ypZMHD7LvN6aFZOnNOqdqc3NgrOH3nle3KTvMOzl74ZuO5foqD q08XbR+ZP+Gq7r2zTaYcPKrjWfy88/TCGU4bVOleO5U60XxMRZZwcIRG6SCX 0LxJB6fW6WnQ4OHrlSfsNZrovO88L+oFvleOg4yTFqwvXctaFZYPHFVquGig d1bvoz5NRtXT7GRq9O5Twiq3AxsNuu27v/rkfZ+24rCpe5943rNM0/HZHBNW dOT+1YeeCZd+KYy4vv/NzTt67KJc3mNBx87n57YMf/ko4Lyr0+bcFKqhmELZ /OYjhTqF0odd2qRXzvqvqYD/NewzEkhpMtZAAjlJciNmVhiBlsNlWA35wYNu 5oYWhmbGRiaGURgp0s7J8ennsH5nU9Ftfq8uvl3nP1MiBq28BqWVhfEnVj2O uejbeX+avqY665wMZsdVi9lMHDac+Ne+r/cDt81CXze983uc1Doe8E0sKlNq zV/X/Tz3sJPjc7enktp+qfP++3AZFR6XWLrwXewhZqVbFksjOfRcGmMWGCWG LJKp4e+QreP8djAsSODdyshd2b95lnWz1P1Zece2d+cqubYIrjM2Ukwb/2WH ZG6qXRMyi9vs9AIbjYWnoq9MLf0pdrFM2HBtudpWlTPmlWxyXdkv/lz6oy1k yth4YW6VrMv/CpcFE0w/B0r6TLSVuiZnWB57ZGeG8nor4ZZN+nEHJO9Xb7jC eOHSB8a45ZpJGueOrz2mn7nkQuyaFu0Xi92P5avofr1e8JrzpAMDAJgMvw8N CmVuZHN0cmVhbQ1lbmRvYmoNMzYgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVj b2RlL0xlbmd0aCAzNDUzNi9MZW5ndGgxIDEwMDAyND4+c3RyZWFtDQp4nOx9 CXxU1fX/uW+Z92bL7FuGZCYZEsgeErYAkoEsLCFsYUmUQAIJBASJAkoUFBQE gwqtWBW1YG2VWpUJuARcQGttXRBa61atIm51iVIXsNVkft/7JozY+rPx85Hf /8+nOTP3e88999z7zr3vvHPvnSQTYkTkBEgULq0aNyblQ8+7xM5tIPJPmzCt auzou96dQKQ2EQk3T6rKK1jy4KoQEfsDWs2YVjVuxonCoWOIDqN4c8OM0srq GaOa24iMEpFt67wl9c23bJyLtueE0WbbvAuXB8+7bdzFRIs+wgXnzm9esKR5 2KqXiWa9hvL+BfXLmslPeqJDx9ChdcHilvl7f7MqmWjpZKLxpU0NS1bOK59y I1EfpJE7mxrrG566/zYX+oaNNLgJggS9/BzK61Du27Rk+UrrVPfjsD1IpBt7 buMF50kTxF1Ejz4BWfXipfPq/7bpq78Q7d1KJOcvqV/ZrJug5+13on3wvPol jc+GJpUQPdaHKGF389Jly6OZ9DPYxwccbL6gsdn62th3iOpvIdJPJD6Xwux2 161Z98yxjPiC/Cpxuj3Q/gjPD7w2sqFrU+fVSlSNoGjU9DkhV1Z1TcQ8n9u1 qWuDEo3XnKRruES4gSaRqJUFslIenUUkNuC6Wh/CO2wLalV5m1yI8nWxXDDS fMGuyoJRpxMEQRRwZ4QNuFK862mVJUEKU1C8VH6+awozK3VsF6Zr+xsvad0+ T9nd+cm0VZhGE041TqqjcZpRedQoaFZ1D+t5uhblQchv5m3FO6gE6T6kPKRS JEe3bARSJdJoXu7Wv/bUa0A+RreTaqS6aBeut0p6mCYjXQp+vSTQNbKfalFe i3Y7um1ahTYr5YtoNeSrUT8dssuRT+B64CegXWY3r+oGkKe7nUzfQ+hzGNK5 4lgahXwIL+OafByFSIvZCp6iEdQ3g2/C9c/jcqRB3flQzMli1A9EuxSUF4J3 wQ4BuQnJj5TyfTb8vybY7PwuufQCokgv9VIv9dK/kXADA9n4ysaIIWP/QryC JTKzCbw5mbzMZ2bMwBITzf4kSuruJclmTbb5+rGkpKTkJGazJTPmZMk+d7K1 h2awU7CXeilGIomaD8qiyAS4olf+yHiAvlSj2CgZop3Yk3I0kBFoJBPQRGag WcMESgBayBr9GvsyjjayRb8iO9nBO8gBdAK/Ihc5gW5yAT3Af5KXPEAfeYGJ 5AP6NexDidF/wO394JOBX1KAkiAJUjIwhYKQpGoYopToCepLqeDTgCconULA ftQX2J/SgBnUL3qcMqk/+CzKBJ9NWeBzgMcpl7KjX2A/mQM+H/g5DaBcSAoo D1hI+cCBVAD5ICoEDqaBwCHAz2goDQIW0WDgMBoC+XDgpzSChkJyFg0DP1LD YhoODNOI6N9pFJ0FfjTw71RCI4GlVAwso1HRY1ROo4FjqBQ4lkqA46g8+gmN pzHAChoLyQTgJ1RJ46If00QaD36SJplMEyCZQpXAqTQx2kFVGk6jScDpNBk4 g6YAZwI/omqaCqyhKuDZNC36IZ1D08HPopnAWo2fTdWQz6EZ0Q+ojmrA19Ms 8HOpFjiP5gAbwL9PjVQHnE+zgQtoLrAJ+DdaSPOAi6gBeK4mX0zzo+/REloA yXnUBFwKfI+aaSHwfPDv0gUav4wWg19Oi4Ar6FzghZC8TRdRc/QdWknnAVto KfBiugDyS4Dv0CpaBn41XQi8lC6KvkWXafwa8G/TWroYksvpEuAVtCp6lNZp uB6So3Slhhs0yUZaHX2TrqLLgK20BrhJw6tpLfAauhx4LV0RPUKbNdxC66Jv 0E+AR+indCXwOmqFZCttBF5PVwF/Rpuir9MNdDVqb6RrgDfRtZBvo83Am2kL 8Bb6CfBW4Ov0c7oO/Hbg69jdb43+lW4Dvk6/oOuBt9MNwF8C/0q/opuAd2h4 J20D7gS+Rr+mW4B30a3A32h4N/0ceA/wVbqXbgPuAv6FIvQL8G0a7qZfQbKH 7gDeR3cC76edwAc0fJB+HX2F2uku4F66G7iP7om+TA9p+DDdC3xEw0dpF3A/ RaIv0QFqA/8Y7Qb/OO0B/pbuAz5B90dfpN/RA8AnNfw9PQj8g4ZPUXv0BXqa HgI+o+Gz9DDwID0KfI72Aw/RgeifcRR/DPhH4PP0J3oc/PP0W+Cf6QlIXqAn gbhC9E/0Ev0e/MvAP9Er9AfgX+gp4Kv0dPSP9Bo9A/wrPQt8nQ4C39DwCB0C vqnhUTocPUxv0R+jh+ht4GF6h/4E/l16HvgevQD8G70UfY7ep5fBf0CvgP+Q /gL8iF4Fdmj4Mb0WPUifaHiMXgf+nd4AfkpHgJ/Rm9Fn6XMNv6Cj0WfoOL0F /gS9DfwS+Az9g94F/pPeA36l4df0fvRp6tSwiz6AJAp8+gfEdMsZE9OPnxLT j/cwpg+A5L8ppldpMX3GKTGd8/8a0z9ETD8HOE+L7Cdj+mxITsb0Oi2mc1xI 9cBFWnz/Jqa/j5jeCDwPPI/pHJu1KP/tmL4IEh7T3zslpr+LmH4ecKWGJ2N6 M3ge09+Nx/TlkF9KK4A8pr8Tj+krwV9OLcArtPi+TsP1WpS/UsNvYvpbWkx/ S4vpR0+J6Ue1mH5Ui+lvajH9qBbT39Ri+pvxmL4R/FYNeUw/osX0Iz9STP9r b0zvjem9Mf0H79P/b2L6qO6Y/skPiuljtJg+9n+J6RO6Y/rHiOmVWkyfqMX0 Sd0xvQMxfbIW06d0x/SP4jF9OqJzb0zvjem9Mf2HxfTDP2pMf/ZHjumEiEvC LUa9SCIIZR3xjBfkOGkVsl6nU3Q8CaSTVUXR4Y2SiiYx0nQFvAVZULV2KOlU ne57f9ZzCsX0lB//g6deOnPJZNB8k//MS/lffdOgKNwjVVUkRdarKi/BR/Vx Z+r1zV768clsPMU3JWSiJIq6OMUCqhG+qfIE39RpvslLp/gmnFCnE/hvDsA3 eTtJRukH+GYsAKv/QauX/qvIYor7phr3TSVOmm8qJkXVwyUNWP9Vxag3gINA McZ9M6bL1XWikfOSTkSE1ck99c1YR/rTMMBeOmPJapbgkiL3Ib3mmxLoG9+U tIBq1nPSfFPPfRMvvaLXm+LOpPBQKqrwTQW+qaqqxD1Vjw56aEZMz3AaBthL ZyzZErhvSjHf5GFOkiVJjZPmm2qCXm+AOxqxN9WrZoMRHCR6c9w31Zhvqtw3 zbydrMBTf4BvxlbzXt/spVPIYdV8k+/3DHHf1MdJ80291WAwGg0GE/am8Eij CZxBbzRa4r6p52u8iLeoilqQlVURERYe20MzYh0ZT8MAe+mMJZdN5qds7ptG HGlwYsYm0RAnbcNosBmNJpPRaDZJZDRYTGZwkBitZOruBVEVugYD3FpK4O10 ehleDIftoRmxiGk+DQPspTOWvE7NN/naaya+BMuKLBvjpPmm0Wk2JySYTRas /2ajLcFitqCUYHbEnQlR1WjUGY2SZJCsvJ1ikI16Czy2h2bEIqblNAywl85Y 8rt1CJc6vvZaNN/kn7Kb4sQjKZncFovVakmwWXU419utNosNJavFFXcmRFXo mkxwa9nO2ylGHeIqnLSHZsQCsPXHH18vnbmU5FX4J0DcN6040mhHbsUcJ+0w Y/ZarTa4o8Omw7neaXNYHSjZrO64M5l5GFUSzLJskhBkzQmqSUGEhcf20IxY ALb/+OPrpTOXgn7NN/m+0E58e8hP15Y4ab5p8dvtDofd6nQoZLe4HU67EyWH 3Rd3JguWeQua6XRmnZu305sVi9kBL+2hGbEA7DgNA+ylM5ZS/CrCpcr3hTHf VPWq+o1vqtpiD990Ou02l1OFb3qcLrsLJac98RTfTIAu980EnUfzzQTVkuBM SEjooRkx3/zOvyLspf9WSgtovsn3hU4ct+GbBlW1xUnzTVvA6XS7nQ6vWyWn zef2Or0ouZ1JcWeyYQtqQzOEXMXH2xksqs3CI2gPzbBp6D4NA+ylM5YyQwa4 pIHvCz3Ejy4Go8HgiBP3VnKEPB6fz+Py+wzkcST5/B4/Sj5PSuxPy7mGwwZd hwNurSbxdkabwWHjXtpDM2Krue80DLCXzljKTdd8k+8LfcS3hwazweCKk+ab rnSfzw93TPIbyOcK+JN8SSj5fX3jzuRyOaDrcqmqQw3wdmaHweXww0l7aIZL wz6nYYC9dMZSQaYR4dLI114/8e2hMcFo9MRJ+xDIk+n3Jyf7fcFkI/k9qclB fxClZH8/NImRx+OCrsej17v0qbxdgsvocSXDSXtoRiwAJ5+GAfbSGUuDc0xk MpmsxD2Dbw9NFpPJFycTX+x9OcnJQbhjatBEyb60YGpyKkrB5My4M/l8buj6 fAaD25DG21ncJp876Hb3dAcZC8D/X3/jSy/9X9OwfDOWcjPfFwbJaiUyW83m xDhpHwIl5geDqanBpLRUMwUT+6emBdNQSg3moEmMEhO90E1MNBq9xv68ndVr TvSmer3eHpqRqGHoRx9eL53BVDLUgnBp4QfuNLLbiSx2iyUQJ+2gHRialta/ f1pqVn8LzvW5/bPSslDqnzYQTWIUCPihGwiYTH5TLm9n91sC/v5+v/97Ln0q BTTsfxoG2EtnLFWMtBGO03ztzSAnXNTmtNlS46QdtFNHZmRkZ2ek52fbKCO1 MDs/Ix+l7IxhaBKj1NQAdFNTExICCYW8nTNgSw1kw0l7aEaqhjmnYYC9dMZS VZmDcJzma28OjjREDo/DkR4n7aCdXpaTM2BATuagAQ7KSS8aMChnEEoDcsJx Z0pPT4VuerrFkmop4u08qY701AFw0h6aka5hwWkYYC+dsTSr0kU4TvO1twBH GiKXz+XKjJN20M6sLCgYPLggd/hgF871xYOHFwxHaXDBmLgzZWamQzcz02ZL txXzdr50V2b6YDhpD83I1HDoaRhgL52x1FDlQbj08K8AHEJ8e+jxezy5ceKR lHKrhgwZPnxIQXi4h4bklg4PDwmjNHxIJZrEKDc3A7q5uXZ7hr2Ut/NneHIz hmdkZHzPpU+lXA1HnIYB9tKZTEL3t0k6SeQcw5mZ6b75ikkmaDrfJsb/6C32 hxz8d40sVpvd4XS5PV5for9PEv9oKTXUNy29X/+MzKxsys3LH1BQOHDQ4CFD i4bFPbC0rHzM2HHjKyZUTpw0ecrUqmnTZ8ysrjn7nFm1PbV8vYab/pOa2NP+ vk0SrSH+8wArOjBhR5yO7fVwGkczqYYuph10O/2a7hEvjUaJf8aRjpNcNhVT BWrrT62NvvUvr3nRo3jN+3rHf/oWz/DwEcOHFQ0dMrCwYEB+Xm5OdlZmRv9+ 6Wl9Q6kpwUByUh9/os/rcbucDjv/pUUz/2sEVdHJkigwyi4LldcFI+l1ESk9 NHZsDi+H6iGoP0VQFwlCVP5tnUiwTlMLflszDM35/6IZjmmG45rMGhxBI3Ky g2WhYORgaSjYzs6eUg3+mtJQTTDSofGVGi+lawUzCikpaBEs8zaVBiOsLlgW Kb+wqbWsrhT9tRkNJaGSRkNONrUZjGCN4CLloeY2Vj6SaYxQXjasTSDVDKsi 40OlZZFxoVJuQkRMK6tviEyeUl1W6k9JqcnJjrCSeaG5EQqNjliyNBUq0S4T 0ZVEFO0ywYV8OLQp2JZ9oPXqdivNrcsyNYQa6mdVR8T6Gn4NW1ZkTKg0Mubi t7052e3sjmnVEX1JO6Np1XtpfHRN27g1paU1/Gr2kuoNp6r7xdYy78IgL7a2 bghGdkypPrU2hWNNDTrNya6YWp0Cq0NlVwf5MKZWayNAp8ybByO5jA8zNuDG UBmX1C0KRvSh0aGm1kV1uFmJrRGa2pKyO3F8eG/0CI0vC7ZOqw6lRIr9oZr6 0j5tTmqd2rJnXDg47ts1OdltVltsptsSLN2MyXwq0xiv0zhNnXOw+uRUM25R aBxcJBKcF4Ql1aGIkDaUQ+NQap03FGqgGoYZXYj5q2u1DuM3Qk6zhoKtXxAc IdTx0bcl9d0SXZr1C+Isd5e4y6H+JB/JyopkZnJPUUpwa2HZSK08KCf7wkhF qNkajFRgymhyNRrVDMvDlKek8Lu8qT1Mc1GIrJlSHSsHaa5/N4XzsmoiQh2v OXCyxjWd16w5WRNvXheCO9+nPdyuiJoef1usbkdZ07AIc39PdWOsHo9PWbBN ktNaJ1en17du8qfXtV5dg1tTjkextbU8FCxvrWutb4+umRsKWkOtbRUVrc1l dSeH1B49sMkfCV9d08QwqZHC2GxEHCXVol+oiXGCX6zpeX/70F/51TURa53W ZUVVqGLK2dXBsta67vvdLRkaK/l+582hsHFpAXv1ocmBJbdMDuwTglSn0u7A U3XtPJtTNypD5R+CBYVcTEYeO5+2I+1C2o/0BtInSFEkBevN+WRFmoN0GdLm bk2dVjOpu60o9AnnnxgcyD8RPjH5RPOJNSe2nNhx4sAJ1QrB0hOHT0h0wnoi H3VrTsh664m6E0LRpFHXCEbagrQDKYJ0AOkIkg6W8X9xUCckoj6R/8sCYDHS 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 yAndaMNm6Ha+unc5veqM8YXhqOiSYgbwdEc8KuZMAd2Afc3W4CxXzoOtd2VN wRE1qzPCd0PLMVrOz+ejsNFG/zRr9hB4dKDRn8Q7s9Gl8XzWOzvRe9Wy1U9a P+9ofgLjJ1swt7Xaun7txPV3HJ9z8F//uf/m0aNufjxR1DB48aS/n8ZX/ydO 7Dtk7fn6iPWHTcW3PgH8GYsPWB9DyP+z9VH+lbTdnsb8naANPtjXT8x+Q5V9 LtITor3hdFZrikfTFEkKeAL+Kq/X49GyI1RHkM/ndGrAAzN8zp1aG3hsb0Z9 CV/Bz+FX8CziI7zJ18Bmt+HPAX9GfCm9OZ/GnxVpu825TGNSGZIu55TSnU7O Z/sn2leBi1FxigBmBbMYMRQD+idmLMNZDAxhIbCMElAuG/RJT5O7lWkUnmJ2 Pr/P744yxaQIU+1KJSRyVhLvrpbp+3YOiQ4f+OHbrYnqqoo2PH7O3UPvW2Gt 4o6NO7HsmfczehTcPMOai/scurcouYDpN/DuMbOXw0pGd3zFSoA0e+Ge5lzU G0uaZPBxpoaZLtRpdcG6zOm9+AqmKji+F22HyiGlTGkOyWdwLCfnHQf9dgjl RQU/rTzrIM0Knq/gHEeM4cK9lEXKg0qLskc5qvC8Mkz5vcL4AGcpcpH/YsAM 5V7pDJwKkEAbnn44vMTNoIu4rePkIW/ulfR42OW5Urdp3gnzKm5JkbRWX5NP 6vUF+QTeXmHFrMD+Dj92+rF/a369LppAlU6K50WI7fTiND3VgTwRQHhnTDmr Xt+K95so5fOKwd3SZCBt4rhgVz79gxIJmy0WFX1pH75MI6zUU4lEZ1dMnxJE L0Hl57pLs0i/lHXnFxM7LW+jWpxqaKH7lGbhuWj0o2rlE1M3PD5o/olnmyq+ en3NO7PZx9Tm1Q0b+vc/fHDEXXPu+Y/Gc9ZP+BO9vmHcutnXTLn6ir7TH596 8Ivb31qjNT5YX1PVp0/fPnlXHFm+7NQsrNL4VAi45q92pucucwyScIk0W5oj tUosR6pYhghI5H7HgzPlwful+AkdKJCkmJKPoBI024aYEHFPIwIcphWRQQhJ Il36rYlb5yXS6PdL/cuuqg2sm1YpKWvBh627maPWPM6xb98v/6bYG6JPP5iR GyJmTGd1TXe95DxicLoz2yj3MjER218VQnTKTQgiNW4bfUv0m5hqdKAr9g0o 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 /7rqqW89VfXQr++8Y3Tf7XeM1m8zBbjbPfWrqX+b+h9Tv9J2S/sPn/nBs3// zPdtyTpVT12i026s2Rd1S2ie290/o6RzfvbiXLmUmjH7gkzWzcy4oNTstJTb dcO6rXtvwRiyJ+vcb3PbdvpWa5EhElklzzmvO81lx7z1qfjh9L69LWTt3Omq eVbXrGwxt7ir2K1Nt6zezNRGnNOTn/3WttCcuemmuWlt4855S9Vifm1p6exo 1RZuZ4v+rbUMv+nMih9v3A5qwy7Nw4f5VRv3fn7olbvXHlzWcuOu93/yxt3b b52qN33rxvPPver3D039durls/qP/yH14A+f/P7zzz39U51vNZ1vp+h8Mx5g 3+k/5Zped2OvbgV06lZAYdbinJsudc7Slm1LplMbtdqWnVlKtUw4O1vLthHQ 9vZGwFzzWr56XCv4j2TO7DntHU35jqa2bc7svN60Z7RxOyc3a7qNA5nT3dNc 7C7Oqjf1NM+su7ryabBKZnR5qS6vUzcUUzPf0gBw26AB0A6WSIP9f+fCD666 79gTX33vX6244fjnjgxuv/GWwfcdnqp7uTPOdZe6pX9yq1u2fPJ/r0l95Uc/ ePLbL7/wPSd6o711VlkP9rfuyx/Kewv6M80ptzn/z7nH3BucZvc9/Xn7arfp Iu8R1+nPj+Wey3mrrA/FV/oXt6U8/Xa32Tc8Ulmsr6xjyzRjPkJNGveZrDQQ M2LL2gCMfIjtzXcVW9NNZqFpL9Oabq43FZvKiXpOue666RIgMoOz9u0X29Q5 G3hV9p1XnpNe8pmx9ad94aQzT987efwn+v7kiV+msvr+lrqz+rc0l9OLZ5c7 F08u+EH5u50/9X7W9tPOX3r/1PbLztLMBa47f1mpsuD0Ep+/bv6kd4N3U+nG 7tu9e0v3dN+54HPel7of9h7rfrr0vQXfW/pS6ZcLfl/sLsyvVB5x1/dXi4XO YrFQrMxPnVyoFc4qnF+4rPCBwncLPym8Uci/T3+5qvCxwr2F44XMdm1WFHrS M2+5tsvtesT9Yn/Qc0F71ljarrGxT2qeedXF+pcji/aWs66TrWRHtfTSxtHS tLGjsaCvZ3NZU7J2zdnbesS96hrnIRh39Bsn40ydbJxW3nj1DV1nH39jPHGF 2xn3bMycHunrrjC9GlpX0yNvTlqCezSWxB0aZmhWZmFF3lqavOSS+qnzrvjy ZP/f3DNw9LzWI51fvOT9p86+4e+GV377C1Pfc8+YM7b/4vWrFnYvUudcvfGj Xzrr4Ej332xYefqCzuWnr7ti813/0Whu/ol/cZ9puluXw0f62ys9fk9/z6ae sZ5rdZPigZ6cbngd6Z9fKuePthYyzj+7T3QdTjW3tJXam3PFbGu57B5x/me7 kaLqX5gttRfbdzpZ45TyRDZtdipZX+fWpuzjNqfy+q29w5Tm0KXwpjHfwCaO 7GJryR1f2WdaWu7OxTONx+8SZRpcbVU7IktngG5xPtx5Btvw/oXDw0dvv73U IXs+c3/5jEs/7elmZnZ46hMfP370/J5F5t7qhjukl+ga8oP9J/VklmZqmcOl O0tNvf2tabcwo7PTWGm6imw9rA21zhldOzsnHFtN5grN+eadZf1axdVkZMEf M92JEcyLBqbH74px6Uu1LW73WuvpcqojKSpsVRmxghWuNUbN061au9T7grjx gr23sqPzt4eXrj3ttvsuumj0S0e9W49//cHRNRe852kv1Ka0a9bUSkl9FwW3 qX/5lqajZr6HrPGLK/YXTRdIdltqe/a21L3ZdF9xVXFj8ZLiA8XHi68Xs4+c OL8/hE6QQ9OdIIdwJ0im6fVCQZclV5keu2tyqZtzD+S81ty8nJf7prvJDr27 o7/Lca/qb/XmeWNe6lrvIc/TrXXP8x7TJziu17+8YkzDTdah6rmmjGO/GM8q 41WVLTddov+k8uavFzY96rbafpPIkJ1lu/9mdb9a/scea2N1mx7/d+g1MYbk +OXO+PwEIruXTD183zcr3R0Lv3PX1DfSS45/ePjSrQe9j9p88xwn/RWdb23u SP/OTzmfaronc7vp0Sjd13K0LZcv59p6yt26ydXR17Gq49qOxzt+1HGiI3t2 60vOy00vZ36SfSH3QunFllxnupzfkj+SPpJv8tJevrW8Jr0m/6H0h/LPp5/P 518tZ7KVR04s/Hq+paT/Vvp3p522ipP2vENmKjRdbJRbWu7NZzvz+Wwp39x8 qFjSxVPJ2K73pjOd6XQmf0tav0fptG4MNesWRMY8lbYW40hRyJabi3lj6KZL Lfk2J+3rJ76paGjI9v5CZVX+obzXl3f12/fe/nxf2V2l2/te2X7r99P9ujGX SutT/7byuMGr7nW2/TSr57jpz7h85/Gdl8/qeXVnmxDmf+OMEHkkvL1XI+xr C/vKxxp9xBv/RL0al4/r8munfUAz9eOxG9OjkXKLU7+7+0ax4sa7rl/Obz8y 9Zu7b5r/Vf247j32sjdy/K4f/L235w8veVc//OaP9HMrar2frp9b2Z3fv7G1 fV57X/uq9o3tQ0317L7mS4v1lj2tT7QXs+lMLt+Sb013ZNx0UyaTby42F4op neOtrWWde15zc7G13FoqF3I6U1OumYM33/pN9wxtc2bcM/pPaX7Cdb18oVw+ 5OQ7HSef8kqlQ8WUfjqpqD8kUzauVfoNeEwHbdZCX1xp/UMmU3TyrxWOFFOv eUec0mt9+oGM6Ufy1+XXnnPca2zvyHVOm7HdjM0adY5Y34PuX+jsfrUxexuz 1Omxp/XoJsRh03mSW9ny1MrDOb1jpoDQ2xx8azGzQZg+pJ26KSd0nRCsso06 ndNF911TLz3ykcXdi+ce/erU8+7ah7/e9wtvqTv1+3V8LfvDVPH4D91ztk/t 1AmdPfXeVKjzeaYWzGV9Pat61jet79jYs71pe8e+pnrHoaYrOw433910Z/Nd Hf/a/G+tbYebP9b6QvN/aXm5tekSXTc83vN6T9rR1YW3tnR96celVFfp/NKR Uqo9l8uXyqVCOVsqlFoLh/I5rf1cVudzW3tnW1u7boi09pdyhbZy2RS/zi1d OoM/5KS0bVPoam0vZ3MlZ8I15syMUttVTrlcvqacurn8QNlrLc+z+t7U31XK 6xKpMK8wVkhdW3io4EU9P+anZeXSJaXXSymn1F/apNPzQOkf9Nesb7+Ola4t PVfK5M05XmhS8rXuium7jQggFEZxUaT/dh+z3X3OquP/WD4WYxvz1Fri5nbU y2WeivEoMQ/l8p26Ej+py/KqalJWtWgrel+ZLew7ozMrph6+/xsL5vYsfOy2 qYdXv+filadM7f1iecnSls+mlx6/e+JDVx/0LvvD0z/+xLtsDa3fh0X6ObU4 3+3fk/dyuXO8s3Mf8z6WyyzNLc5fmLukfMg7lHvGeyb3ovdi7tfer3K/936f a/FyhcIh0+Wn66JSIZfxnmg6qt+E0hOFoy2OGeRWyOSOlHW2jOn8SUf5c4nN oUzJWNzLM0eMnG1jeRM0iLNRUyVlusS8/Kg2dn7jpEJnqrX8O5uD2pDUJcsx 2z9qfDR/of/9rzY7liQZYH25UG5moXFfcLOBmD9jvrfs4rOnPuU9PbX0fbsv cI/emsplbr3i+Ps/kL9XX7/zxLHUgabnncB5tV9eOPNCf9/Mff4H/Jv8+/y/ nvnIzPzW7J7swezhbLorl+stzF3kLXZv87xlc1fc3HcHH17mar0s+3pLYXj2 Iy7rX9Tytx1fmttsPLab1MIlS+fOnd/rebWmcrnvuyu+rWuKI7p99oi3uH9+ 7+LFvU0fnv+U+vDSB+/v/U2v19rb17ux9+Lea3rv7/15b7b3UbfiVI0V/aYh 7KLP9Pi98aouKvU7bN/3tsioaTMl6huGsx5bdfyNaEQ/2DzR0DchTz5FnKI+ 78iT+fTQNzNd5YyFdqxbYGaV0CaDMYa0SRiNMj7JeBydpO2iJdFI1On+GXeN 6/26vG7DarV228fFygH/A+csWNS95fzZixd8+GB4/p7SZ/7qlBfuP/KfZh4t ffC9F16dOvm25adsf3Kwq+fk2uf6c5l5lUz+/V8Jn/nIGatu+9oFj7/ynUdn f+DwjZeNmhE86ROvpV/ST6Kk271V5/H+rqWLTlpyN7tD/Hv2OfH56qPzc+tz y29e9oib/w99O5Y+4m7ob27Z4bi9N897Ue1YYL73du3INvfumLd8x7zxZb+d tSN1Tsh3LH66fUdhfe3aq6OxqMd/F41F/d0xO62K/nr8WLQFv8i5TUu6F3cu mbOkvLi4ZGZm1rPujFz7s85cV++1lvReT7rrWacjrzezvZZn3bZmvXnLsDRD lStOW6eXXqj/yPZFMxfo5kvZ5nOgyictSc2EPtfgbZ1fo27WHfzq1Cufnvr9 1H1fded++r/e/cnP3vHsz+7R26bBnn+3/+OP/t3te2+bvatn4F07rz544dnj Tc9PrZz6z89Pffpb7pNu30/cXd/64FPfeHPqt499+amH33RbH/vK8fKi6275 b88999LVY3PP3fDZ+++6Z8gx6wdFn0t1i8J+3Fv05wWv0342eJd7R70nUvNS Q6kX0x9Nv9F0U4Zn6tlTsz/OZXJb4PNc/kThY81B8w+LG4p3F4+Vril9vyWt Px9t+Vbrg61T5fHyP7Rd2d7T/kbHGR0Pdp40Y6X+fLbx01WfmZl5uHtW9509 hZ5XZq2edd2sF2fvmn3zHD7nyJzX5t7YO7v3pnnb5j1ZWVL5zvxPL9i8cMnC z/3//Sy6NPksXvCXz18+f/n85dP4cex8Ut5WvR1wr3Uyznd1jbXoxIN6Wz3x it6u1NtObU3c4CxyUvr4In3c7Id2e9qJJ/V2pd3frs9c5Fxktzv09mSn9cRZ ettmtybOPh3Dk3prYuizMfTpGMx2pd3u0L8Kfc4rett64mS9bbPbRfpXZdOj dCizPc1uTdqq9vyqvVbVKeurVO0Vq85cu+21WxND1eH2zLX2yFl2e7bdnnvi Zb3dbPe36TRUnfNPXK63F9r9i2ycO/Q21FfZo7dlu99m9+fqc0J9FbM1Vwl1 /GZ7tj3nXH3FUMds9rfZcy60W3Onp+nYHtTbsj7nNB2b2Z9r93vtdpE9Z63d nm2PmDkST9Oxmf1tdnuh3e448S/OSpsPK22+rdRx7tHbNrs/V8e8Usd5VG9N ClfaFK7UcZpzztXxr9Rxmv0t9vhWu3+hDbVdb9c763XM22xqt9l0btf7N+ht m95eZI9fZI/vsMd32OOOw7zN06uMKCde1MW0UxXse07WORP2U87s6eNpdE6T 3t8E+xndBt0B+1lnp7MX9nNOt3MN7Oe13f8U7Jfcbc4vzMoy6ZS+VtE7ze43 2en0z7H7GXv8Iruftcf32P2c3T9o9/M6pku9j8C+63R7r8O+57SkCrCfcoLp 42l0TpPTnVoC+xmnK/Uu2M86j6W2wn7O8VMfhv28c2a6BfYL6TfTm2C/5H0p fy7sl/Uvz8F+m07/m3a/gO6x2aS/+Xd2v4iOt5j9YsbuG6fqlmKX3e/Q++3F RXa/E50/w+ZDtN+FjvfYsIHdn23OgTjnonPmof1F9vy1dv9Uu7/Z7OdQmnMo /iI6XoT0f7HCfT+obN03VNkwOjI6eeXYUGXN6PjY6PjAZH10ZEVl9fBwZXN9 777JicrmoYmh8YNDgytWj9cHhivnDYyPj16hj+49MDwwXjnNxnT+0PiEDlfh K0TVnhadFYWoT1QGKpPjA4ND+wfGL6uM7nnH61bqI5VJ/du2kfrk0GBly+TA 5JAOPDLYNzpeGdW/jFd2jx4YmRyvD02s2Dy6S59+Xn33vtHhgYnllU0D+vju +kBly8CBkUGdoO2jByr7B66sHJgY0rHqVOwZHZmsTI5WBusTY8P6Bx1xZWy8 rg/u1r8M6b8DE5WxofH99Ulz+V1X2sQM13cPjZgo9A8mjnF7dGx8dPDA7kmT 4iv26TSgK+i/9ZHdwwcGdZ5V4kSMjgxfWVlaP7kytH+XjhudPfInr25PH6yP 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 1Vq88jhWGNVYBfiu8PKtPtVaBfiu8AquPrEbXQF8V3gRV59q6wJ8V3gdV59q 7AJ8V3gpV5/Yk66AxCu8mqtP7EpXgOUVXtDVp9rZwOUVXtPVJzruKgDzCi/r 6lOtdCDzCk8h71PN9DBe3x4rjGinB368xj1WGNFQDwDOBz5WGNFSD4DOBz5W GNFUDwDPBz5WGNFWD4DPBz5WGNFYDwDQBz5WGNGLIABCH/hYYURX6QAQfeBj hRF9pQNg9IGPFUZ0lg4A0gc+VhjRWzoASh8wrDDi+M0AMH3AsMKIUy0GwOkD hhVGnGsxAFAfMKwwosdHAKQ+YFhhRBfxAFB9wLDCiD7iAbD6gGGFEce4BQDr A4YVRhzjFgCtDxhWGNE9PQBcHzCsMKJ/egC8PsATy/tEB/UAgH3AscKIHuoB EPuAY4URXdQDQPYBxwoj9lcHwOwDjhVG7LwOANoHHCuM6KUeALUPOFYY0U09 AGwfcKwwop96ANw+4FhhREf1AMB9wLHCiJ7qAZD7AE8xz4jd/QGg+wCv/cqI /f0BsPsAL/7KiB3+AcD7AK/+yogeUQHQ+wAv/8qIXf4B4PsA4XvGiH3+AfD7 AK//yohObwEA/AABfMaIHgMBEPwArwDLiI5cASD8AE81z4j+BgEw/ADPNc+I DgcBQPwATzbPiB4HAVD8AM82z4guBwFg/ABPN8+IPgcBcPwAzzfPiE7+AYD8 QGKFET0WAiD5gcQKI7odBIDyA7wOLCP6HQTA8gOJFUa09AOA+YHECqNa+kDz A0Tza9TFBgPA+QHC+TVJbSYAzw8wzyc2YgPg+QGRTwTA8AMikgiA2wdEChEA qw+I4CEAPB9gPP/nG7MHRup+vE5PgOC8+vPYNQoKQkFoXv35Xvko6OooKALz 6s/z2ijomRAU+SoTaW0AVD54B8Tw7s3r1168adO6DRXulzZtXrdl3XlbV29d v/G86GCVlzZt2rhlvTmy/rx3RweZlKU1G1ZvuvisjZs3rN5aYRW/4jccEfqY NFcplZzp/1z7MX+d2f36b2d0eHbNv362zORP+cjZH/nXkpv1Hrh+9mJ9aL7n uqzZz2ealrWkvFlNjj+QKSzLuGn3+qrnph/Y4r/XX46OzPls77VznJX2s9HZ 5Uw4o86wM+RM6n/vMh9/Poos3fngbx/ar9b8rHz7g7ed88uHJmfc9qR684Hr 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 PDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAzMTI5Ny9MZW5ndGgxIDk2 MzEyPj5zdHJlYW0NCnic7H0LeFTVufa31p49e88tM5O5ZTKQmWQkhlyBAOES yQAJCAG5h0QSknDRoCKBJASoUi8oJWiNFopgq1Q9CJ6jDIniREXQaqVWKvVS aa2CKFqrKdoi2irZ/7t2hgR72p76nz48z8+fb89+97fW+tba6/Lub621MwzE iMgNMFCkeNakiTVvbykhVvk6UWDRlNmzLl2TPO19ItVKxO+ZNitvyNJ9qx8g YgeRq2z2rEllX+SPmEj0bD3RPYvKiqeWl42t30Nk3knk3LRwaW39D5If+TXR 5SiDPbxwZWNoh3LPdKIl24lk9xX1Vy49du8LS4kqW1GBl6+sbainAJlQXg3K d1x5zeorYqffnE907WNEI4/XLVq66trnDsWI+hUSjdlZt7h20c+btuN+bArs h9chIiFLyUB4HcIX1S1tXPXzF11tqHsI9/vD1YtXXEsfnxlG9Ajqz355zbKF tXMWLv4T0c67kT5oae2qemWYugNpqD+Frq1duvjSBtdJot1Id+6oX9bQqIWm LkT9IiK9fsXi+nJ7WwpRbSX6aDyJvuTzY2rao7Oq7YWfU0AlIQ8EY/vE9cDv xlzWNenMbYqmLiBOFt1eCK7KdV2XoYyrkX5Q0fgkWkTnynxhw7fQEJL0MCcH 5RFqYZiM++pl8BOsFamqvE3OpzD9QL8u4xa6gieqMrcYjZxzMzcg83rcqafo 2VPHh1B6iB6RX+uay1zKDLYb3XXf0Tf1Yl+j7Pj17FnNZ9Nb9C8IbAfyPJqK ay17TXtY2kHNOP+Cc6FIx3Uqzqaz9tCvx7kc9jX/qExDjXbUUEOTDE/T3Tgn Q59i4DRFDtAD8XvWdNtRKcoaLzfD5mmagfRtIp+e9jRNg96MfL+Cfr+IMw6m V+P5XvhnbUKZk3GOkC6l+biW45yLe4p2ZIt41oQxOtv+JsrG/Yfr9jtoprRD Oyns0ScifwT5RBlLoK/rKf/Sf6Vn+6RP+qRP/t3CtzBdeiJYPCyieuJNNhHn oRQ9OQWpTi+AvL2ZkkQKJnJ3CjsrJCb2PumT/1uRSNKJJEsS4+BTkvyJ5QB9 qWpYzJi1M6CXQDNZgBayAq1kA9p0TKAEoJ0c2tdYOwl0klP7ihIpEbqLXEA3 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 OJL7pSSDT/aqybaWhBi7JmIxNznlQPKpfmRNjmkHIm6Mp9fj9BuSZINi48m2 +xMSkmNsXsRG/d4JBJTGGnfUzd0Y6ojpYmI3oJM4dfBV1F9/uJd3jsx73wHo RBck+nCOxPDjSSjqPPM++oSyxAOWoHeGeLiqqrKoKl/0xhimM8CoXDyGdfPD iCNVWRiaXfTV1obVM2evDdzp/dWmB56ZO/zrfSN4cv+n11Z/vqljwZIN378v +aXfHn9o862zT+1dtQP1mYrea4UHEz+F9ctI9m3W+6y7rfushq2GrfI2a8xq MIqfd7HgKYIqC25Y3UK32myiw9ySAY+WwSrJGQZZsZ1Sd3PGY+yNSLJZ8MUm cWaxGuCEZdVkJYei2EEHvibiNQX5NEzBu/l+/go/yk9yNShy8tVtCSCK4/SK 5VlrhLt2jswTWw9f3P/B81SJLsoqpJE6V9Zf//z63KSsbjekOAoLxSkeHwJ7 UgtYvpSvhC1YDrEvIl3eIP/Jmu27Ag9HRtR1jWUr26U7v67c3tXCvXzRmR+B S014zp/Fuj+NjkaGZ6gDHSPUEY4Rnjn969Q6yyp1laVFbbHeo+5WO1S7yehh qtvjeR0PuMPjdTg9PpujxR5jhyIJtiafL8XlPpXoNLAW8P/tJ4xNKbaSZAbi nIokm8wjPW67K/lYIktMNDdScih5ULI0CMn7+HewNnDzYeRk+9vs9ztifGjE ze4PUQTLqnoyTKdPxV/Nuv1GGH5j+YrOUzgcZ6qWd+brjxN4VEWCRIJMeMQE nRJHrle7vXWcTK4CxZ0C9sS5pFzsSlVSJd3dOISzyWXDVm7hl8zLL2pZsKbq psU3PsZL+3UVXL54xS1777r+yeotNeyBxLxJt0aueqf5u613W/gfd3RtvPw3 P+s6+di22heb4Gmv1z6Q2vFcJmH/MZjuicyHc0lXJ/kmZ1b45mUuzqjLWZmx Ouc2+RbLrRkbcrexbfJm2z2pmzIeSd2VtWPw/tSnsvYO/hlWch+wgJX6NeXl JaY1GeWBTYk2K6UHG+0mZsKpmg5nNx6zM/T72naPv1GKsd2PpzeSh3lEDw0R nlXvnc5TotmdoJHuY0W/6NMWiIKF8rChifqTZFRSmMfN4WyHDR3DXMLhDtc7 KIFJvQEjWzN+/P5Hfrhv8RVTik8/ctfPSuoqr5hdu65u5pi6osbmeStuq5+z 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 u20B0zO+eOmoIVNSaK1dBCq1FuKxD7psFc7g7nTd7ZsVru693Dc/eE+OWC6W e6aEb0mbkMlleUaGS3LvEetyN4sbfQ1pe7Q96SfSFNF3nCOuzPT0VvyiFae5 fPT9HdNdmWz2yngc/2nyogBTgjFuJfmWKizKlhIWDoovjifxrdhlJd1QnyNv lffLZ+Sz8nmZL5bn2N8ekKFMT5OJ3Erynk2tN1qxz0rBC2lfzIJlOAAg5a+t CtdCF0SnvXl8xG4Yzq2spz1VCNi2y3bIXqwcdOlSJU18sY487h1LaLSNatI+ at6N/dJByaXTVmJeLgWrhvPtHhjv98EaUNlHQ3zRPpyRuPW2DQd69f51Q86t E786t+5sPX4ID19TtmxDv35v75g1IBp9//f/gz/z9pkxpv/IbXeNKcifMjx1 8L6ZLZ/UnKsLa8nDlw5ZPGNyTs7s8TPvn9T64w9w+e8Dsg/YXaqd1jBeEDpE EyZcBUsqoOQIDvnipFVsI3uAbWHPslwdi0FhJUlV0irprMQS8QDTwpBVzFmG MK14ghXftaHCDwbH0ZQGpMIGLhUK9ZX4MpDnCOXPlfUdcorO5HTaab1GpGkv nkoovPxCdEE35tmE6OLfccbhwz9fgqv/Vfs37F/h6k30qjXR5HA6VyCPkGv4 WnEhv0TcxR3mjnEt/GlRdbndZbLqk2UVE1IWQD6ITJeqYiA0GcIirxSQg1AQ UQC07UpAwgWZPSNjWaYVMF7KDtwcKAnMCMwN3BvYGWgOnAicDcjnAzgQgGC0 5KAkwzLJgSCVSoXXlcMvqWyst8shiKazAIjYJLZDHsF9sFMnoUpgGrwjiPLi 6WO7L3pjv3w89uBeY+fCh2aMzt14YHvPxvfve/277kA1ltXl1zetmoEzmPSr h35qRyu/fWXc8+CXD0D7UZYRwpOtiy4kCS4RjPdzCShODPnSjLRQnpEXKjKK Qq2iLIvEYENDjaEhbr24zlgX+tD4xPwwxOtGnKmHmEl4mlhiTPaXhLhdzF5+ l7xXbTKbQmfEFqPV3xKSH3A/oO8P7otr4Y+5j2vHdbHYvGASnddV3RU2WdNn hnzLVMmnqpLh9ZZ5VJ/Ho4pmKLSMF330zbAxLnOG8rxqMiLyeiTa6wz5gKTQ wWt8CASNzzQ8Xm9CkVqtzlMZdfdoc5a5zDxrstjEhonNVjLbClhQY6qg6Ngl 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 m7Lcy9E9b6kudbmXo3uHEt7Rpd65IjqUgDNUe3Ve7KVNeL9XeLm4f+c23L8Y KK/Sy9stUbFXqmrvbMm7EPbq0S1/jXe2QB3JUgX31a1R9/scL+9SdK/dY+Ne Xv65g3j/HiWgRopBadV/OC6h84x6teLecz/vYoip8Wo6Fyky7rWhKq8+y0DD UU8D5ZAmyL/YSz0bzhmD63R/S4DegjqYoY90c/Njk7Uag7qNw3XEvONrvG/B Pe3nfZvrpT6SImZ4d9DXs3sl7i/lXm6+Kvz84rr9BS3Er3v3CvzrwW2rxDvz TC/WTz9H/xKD++ceU6bvu6+PuP6c6fWEUZRDUB6/FygDZYS9GiyGq495d6zM O6bSaze+Eiu8lLm/03WsQVNh/evFcFfKvbK4qpwNbdHvMcoaSlHufUvqNmij yRprfHXFcI7pXg41Xi2XNFJlNHSRjg/q1VV1ccP1zYA+JwFl9O9SwiuT3xP4 d9wtu9/SE9DL+O2oGhSW7Pf8X8u9+xHRT7CY10qqvXIk9Jn7NlKZf/YSr7Yq vfYxt+EqgnO76ed4v0e8mqiCc7itx6/FhJc+KHGQe6WnoHKvnwvKlqtnWG6P 6pcQnyvh1WlQJ36r8dXy+9Lh/GNwZLJH9L9HoK8JdJ1o6Pmne3kke4QYtOyg FH6KxvfGP9a/nhLvDiYaagdr4d9dQwzauqvSMp22BJ634T/UhJvCV14vffyp 3h0r93RVcsS8K/4frj2Ze0nDvfM1FTy9kvftj1eAn6+Ny3UaukfulfjX8vun VdDKSryxgXvlcU9RR1NCpNFdj8LT+vfP7LjXR1VCT+WWdnbDk9TPJ+iRjqYh 2ojIbdnRoxw5NOVsHZs46og0jsaGlJGr2xcde6w5V3872sjVvYZ/gv6Pct70 E9KHpA9Kz0+30/kxz3rM8XKK0VBzs46S27hQPCXi3beKo9bJMM/7acR76ngb rxz+afT2w6cc0TOu61DHNehPOXw4lJY1dNjwaSNGnzNuZLj7zLK5laVG9/Co oWEjPP6cccPCg/OLhoWHFQz1j/jDscw7lpGO5d6xnHSs8I4V4QkFo4aMHTps Yv7oCcOKwt0n9DEMbvR1/+TrYlJykl5OMsgpLAQpmfKSqWQySUpmesnMZDJF SmZ5yaxkMpOUzPaS2clkFimZ4yVzksls2r32hcGMZEKHlhBUwhoSSqK6fMkw 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 mxwrjGiobgK4NzlWGNFS3QRyb2IX84y43G8Cujfx3q+MuN5vArs38eavjLjg bwK8N/Hur4xoEWUCvTfx9q+MuORvAr43Eb5njLjmbwK/N/H+r4xo9GYCwDcR wGeMaDFgAsE38Q6wjGjIZQLCN7GreUa0NzCB4ZvY1zwjGhyYAPFN7GyeES0O TKD4JvY2z4gmByZgfBO7m2dEmwMTOL6J/c0zopG/CSDflFhhRIsFE0i+KbHC iGYHJqB8E+8Dy4h2ByawfFNihRFH+ibAfFNihVFH+kDzTUTzbepmgybgfBPh fFtSpwnA803M84mTWBN4vknkEyYwfJOIJEzg9iaRQpjA6k0ieDABz5sYzx97 MltTETOCfXpMBOfVsbGrnxSEgtC8OvaqvJ8030+KwLw6Nq/1kw6GpMhWmUhr TaDy5hEQw4jCUUOnjRs3bEyYG1njCocVDSsYnz9+1NgCP9LiWePGjS0a5caM KhjhRzIps4aMyR83bfjYwjH548MsbISNRjFCx0n3LFlZoYb/Urx/7t9QToH+ 286Pzhlu1OUMbtq894KRCw5kpTRLra/LETqqf2pKCmtpNG/apM9xaaknNAkZ kaYt+jRNSU+ps1JT0uuLjLONviim84qu8zuH8rx/Y0PTQ9WheKgsFA0l9P8D 3X9GN5RZeruZm39741DspPf2vdJm06CDT66bdfKqKfV17XcZdWmb9P/96tNS U1JTW494odPiXdcVDh9yYGf5yCx2r5HVUNSUJrpQtdd4hUybkN40O/XcfNbe yHa/ZGRnTopWJ6JVFeEhkcooa2e0daObZbccWlM1PVIxO1ZWFmWtdG46tkV2 0/GlkTmJKOti5LgRLbPb+RHhIdGqRGxGrDiSiMUr2IlGF/fntOwO8PP4WLk+ S6S8MlYxMzwk3+h6fJYhGDek4f137vFZzP0quFCOcs41ilBhJxSx4432/vmP mxitihXFZlb0DY+qKM5lfYxT/RN1D37wThUuCs5VFK2aHSuOVrsnrUvpjmsl pUkorS6lVUjHt0itS0kJrd762L3btocfbnHZVQ8trPn28YL9uza2emFm5LmV JZ3fX39wq1hzhXHV5Muv3TnrQ/PuVi+8sffi7+bcf3k874VbHs56tvSHslu3 PlfYb83I03988p3zp+WkLv+5/6yu9x5Yuez+Ezan/vNPows/Oe6CvYM6X/5M 1kdnvPL4roXPTZt3IctNW1qbvWpE+FVWnTWp3/aLpVjcdmnbZz4q7f/g7k/+ dvW1vV+8ptvCGc/9efKkeM0LeQ/2XHj+1tbt85Zf8eX4jS0qNh166cwPn2nW 5rbul+4ceMobXS/eu5xt2b+7e6edm9aNGLLshGn1XW/8dOqP+y7df9ma6Sk3 /Dim5Uevd5+4avH2tYtmr933bNb3n455r/6X0vq17U5bt3Dj+tQ0LfyVtTuN 2ncN2TRDK7ZJk2YpKem9jJ5Gj+C7kbKgY2kiUTmgf/94cXVl7mxd79W63nOL 4+Wedrpkp6QcTs8wmuo/qSkhI9+NOzF9gJ7ym/Wyni8wIHlxVVmj1P19rWCp DMnP1Ud5Su1ycnqm0SIoRVqGcZwb2co9V7puAU11CfX3Nulamfd2Mo4P9J2W nTm+KF8Lze7H+inxu1aRVlsbOnPWwS8n/21oZ3bV3KV9lrxQ91DKjs6jtz9y 9eSKXRmnrpy6eest2XvSC7O+GXFK/5D9yKdbbilY9nb36e0PnGF1G1vJ5u+/ xl647vPPbwsdem3CkoIeb64+pWDe2qci+d/3fnXPlvemfri+z5UDn7jriff+ Oenw84+/dPmPr2Xe/e1th/q8dVphTo59yoEzztRt+LBRl7oH2nHWF32+ffvd Uxd15E2aT102e9Hv2/H/Ssv4Y3M0bNwcJxFP2t/o55+057FO6v4WrTpmk3xs XK+RH75VOu+KjkNn1Jx/+aanlxf3PHz6kDsvbWO3PnlC9Xs1p8R+K3gmPOWt Fgfrc3p/PWFit8i7XXd++lcx65VvPlxpRa/PuSXzyaKuUy6doaY1uXrYodkF u4rmr6gN37V20ZQVGQc+Mw7u626NHtzi1V0vn7hpx4Qvas94onBl3wdT5n23 4sHr1KHlu8+/sMny02d98sKSDYe2XXBw0J5m9UO/qj274r7e3z15deteX9/w QdP6BeOWXXJmRpbRZWvru2cd+GLy2vTVg5Y+1uvzGzo8lPdJUfyst9RdT8RL uqxb0nf96XvmflU+72CH3T3/8vA3S4ueGtR38dNzHzz0duGaUxOXD97rdF1x YYfd56zvUfpuaP6Q1gvnz4ImudWofeV/2CQzG5pkqhEyhN8Y+xq9jV71Pet7 LOh+pMaYqK7uVxzxml8Hr/m5WRylBTbdQGqB8vct0L3LCy+ufL+gMCV83sdz t9QZm357ptOS524Kvfjc9u0v/3Dcu4cPjtkgphttXvoxkfP2zR9NuzOc/eil w54ft/3Pe+Yf/+cHTrllZvbwX7Y+fXt+2rY7zj6vyTV/WhX/PmdcTo/c72LX lXU/sH5rh8VfZyY2lM5576ul0xdurL7xX1cl5p20ZuXtl9z26IEbTr1oTG5N zsj89799Iis8fsec+tvqimO/NX/t6m9r1je/472DbSb0XBbhz89LfeSSBc+v ePGa7n0vfkPN/uvN1VMOPrN7dPsWJ2379M23Ze6oQe3zWl0wr8fL9834Zslr lV8N3PND1uUfvHHpytkXxTbeOXaEobo9uuLhE6bn9Xnv+gd7N7vk3Y7rplzy X3fdFz+Ud9VfjLr0troL+NnvAlqFNoauyctb1OaNgT8V7901CNdYuu4BKoO2 3TK7+5B45dyq2MzSRLhX8anuLrJWeEysuCpeHZ+RCA+JV1Xmsq5GZ//g9o1/ iVf5z+puxon+beqY/L0wHk+E82sSpfGqWGKu2z04luECDwu6B24wLhh8/Q+U 6JiP8tTnNlbuPu27gpxey2+7eKrx5YrV15087V+HFo9e+dShu1aEB1569oo7 VtxwAZ/1xuCSufsemr1l/PvffXXngs43LL9ixrqXZs2bftKOLnkftUq5+fMl m17oN2PZstKeS18f0PeFzCcm99w4fE+LgfaSvqt7Oav2jvrz4E+uaLV+WdmE yEN1l95zQb85o79Y+njJacvGdWYZPdotX73npj4dd59+e3G7CyY3iS7vYhUu PPDAN7emvpzz1gsThq27av4LA/aOv7Vg7W8PzCtPFDzccduS5r26hSbdeEHM Wn9W22Z5Ew+f98u9M1pk3P9m7cRJ3zx52tQOtXPS3//p+bXzFx96ZPufdjxw QtWUvK1//TZjZXdjXdMrt6wLz8m+chf0G6uM2vuM2hVuu0xJr11m1N42v/V5 r1d+E6u6+6SzL2/32JjrD//9nqr///ev7hga93qFxZ+33HDd97d1VF8/ndLj 3Tltvp9yAV9+d8u/D2xy06IbtgzY3e27byfd0veJ+hGbp3/z6z+2nXbauavN 8bFDPcrP2LLtwY+aXPohu+705a0rL1x/qO3YjrENv74+5JM254bHfjn9kocf 7LS5j3Vyv+ej97S9+uRWxSsPjO98sNuWHe2/L3yoYghv9lvd8f/6bGZZ1tk/ Pbe/8JXn9mwyfg2z5ou6LD71hDHvdEm9b//8j9MeP++HRz/cPGlfdNQrheOf fDytV9vDN+74NuOGy5++7aU1Vt9P5326as4ns+tDr194xsY3zas/zm+7Sl2Y c+FO9c+3O6d/umpY+uZzhV0xpnPW9KdarLj2rXfGnzF8e+cJ91fubDtg4S01 yx94s173Ci/qwcHDMDC4sOXSsRtCXda0eX9T6j0zTnk2mCR0+U91CYapxwuS WVIy6Q7gdRfPzaBLqL2/8ZAh22jjTzdaTIpUl+qhQEKfp7X3CNGTjWaF0ZLy eEVJULIWRyrZkS6T65P+4TJPMrr5l3EC/qUk6g0+3NHIOG9SEP5jT5Ll9iQZ Xk/y4rbwdX/ddXjguH3z/vZ2j5N/mv1qt8Pbe08s2HrnU3WPqbn9QptWZbxT vOWp+376YuPGHY9eu2RFs59bPVlXuOyrupefa/3Sqg37Zl1xfVHO+nE/l6Rc tbHD23WloUEXD/2xrV3wS/HZH/98+jOfWY/uKm520mkXDZIjfpi1dviPp1R3 7f73wZ26nv1k4bK3Vr6e/XKnMy5qWv7d4m5Dpw3+esOWpSXhpzfKX1cM3X3J Y136P33/Rz/cs+uObq0OTWb5E+zLH56859O958w9ec2B3v3bnGFfPHDwnx4o /fTy7qXH7z7z5k0XDy0ccc/YK6665Y4NMy/5svkvC9Iu+2npRXl9Hphx+7Zd /f6rT+oJreTI6I95bR/ev7Bzl56F8W1ae2kr61J66/ro+e/G4Wn/N7qXtk2b wwS8ve5fUtPSQuneFLXLcekd0tud/K8+Z52/uWr8Xz77qb738R1+2XiwqNbo 1JCkXWp6ZtcWoaJQjZ6uDwnlGy29gY837xhutGoYYDUx0vQf1C69bqz4k4+/ b/L0I1+2bCnfqGMDr5o+7J2MBw5Goptz0362R+a/9sR3p/z5rU9emli06olO r27bvb/+4MQnR946osdnq0/8YN7bP3WY13bn9zfm7M04f92VNz5z7eT1nbct fmvxreKHmz46vOiOqWeNGuf0HBDOGW/9etmU9re8+EHn67+NFOZ91uzrGd/M 3XvDq5OKo4s7jqqftyv61K6eaw9tbvvkyyu2vTztmsrvt+5cU1fR7INop2dW /bTgb80H376/50OxeY9u7PPAIzNOvO/hhRmzbst++hFzadcmK7PtlRseMgY+ 2+0fxv1bp7ft/PCk6z7bP6/Ns1PzMq39t2y8eVFB+rlNprzy2o7V7/3zspsu PuWXxyvuu6GpmPzo1N5tWhl1TYTuynL8bqxFZPjdfw+lh0Kh6B8Ixf+VLiPZ 9zlSSNOdLVl6bKS/KverkfhfuQ74Pe0Ivx9zSLS9dom9dsqK7zbu+uj1NYuv 25F314nXvHj+gtzzv3206sc1Dy268In3H+1+ScvNm+8766ap3bO/OPjjSXc9 8UPF7LXf7Ls375VNG86ZcsaaddWi5/3TayNz75n+Q8Wixa9XfPjK8jfvPbvN 7MizlVdH71nS4aoHzq99feiMz3ZOvHvQ1l8/mN0jd6gR+mzHZZcsbvPO5C4r Px/bcsuiD1bsKFpatrV469ILl908dfSYNp/3f+u886ZOK1xZ3e++9VcMy7q2 U/vZf894f9n9le0/H7M39tv5j8264etTz7bsa14ePqr9reNuf+SH0nv/8VHz i2Ym7p5zbZcrZ9325Z5pw7Z9vPuirDeKQ7dcwm6/vuXj2c+te33f/l3d9q2+ ILLPGnL6i/6QqC7lZl0j1/9h7pLsDPa9N2t1TdH2sftyCjo17bryzjWv3frb EXq+1W7sSem19xi1d8//t73IPYl7/xP9338Ps7HgDen4uRg4GTgssFtg02aF 1PHLhZkD7vkVZGeCRPULivJTSpNLivVBGQCU/oFp3wjcIfRH6ok6Gzga2MN7 okxtxlBzy8vLsZmbWoRpYAm2PqHFzfdTLWbHzBCJDcnLvM904vnm35cP+a7V X10fwnvLaNuPrGe8vxWlyu2WZlRtmVrXFfPJ+Ujz7NTajoDAmiaRr83F1xft iznFVHBOLUd8T5DI0s4D258sPLOwdO7EQlvpA2EMYVt/tKjdijP+fU21Km7W rWW/v3xylFoT6rbW485EC+EITs+Pnw3b5few9EULpTK/5A68sJCna+bemwdX XOAQVVXcui28U+ZidJvp0lN/V7W/WWluv905+7HCR9c9detefgzdtNBjT+q+ YJObJ1+wJbOwVeQF/PfYPfuVc1T77bVcDV8jj+o8eVof7fXUqPKdUuskHt3N AdHHDjlERKy+dPax/sGzb3Lnm1caNrFcBRabF5kYGQ0atw6ZwhGlgEcMYy9o /GQgAq9QNRgN2ZmB8QxUBKpmoVHPyWzIgzxyDnQ6gsdtyGeALCtqoIzQyGII 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 wlLEMuRPgh2KEZfBEsRyKEGsQPwUHFCKuBzKEFcweSUsk05AFZSjpBoqEJ2I J8AFDsSVyH8CNYyvhUrk3bAcsQ5WIK5CyXF83nRJH8PVUI1YD07ENVCD8rWI H8M1UIv8tbAKsQFWSx/BbxjfiPxx+C2sQcl1sBbxerhGOgY3MLwRJcfgJobr mGQ9XCt9CBvgN4hN0Ii4keEm+C3izXAd4i1wvXQUmhm2wA3SEbgV8SjcBjch 3g5NKPkdrEe8AzYg3gkbpcPwe9iErXfBzYib4RaU3w3NiPdAC+K9cCvifYiH 4Q9wO/JbEA/DVvid9AHcj3gY/gh3ID4Av0d8EPEDeAg2Iz7M8BG4G/FRxEPw GNyL+Djch/gnhk/AHxD/jPg+/AXuR9yG+E/wwB+Rb2XYBg+hZDs8jPgkPIL4 FDyK+DTDZ+Ax6T1oh8cRd8ATiDvhz9K7sIvhbvgL4rMM/wrbEPeARzoIHdCK /N+gDfnnYDvi8/Ak4gvwlPQOvAhPI77E8O/wDOI/GO6Fdult2Ae7EF9m+Ars RnwV/or4GuxB3A8d0ltwAP6G+Drim/AGPIf8m/A84lvwAkrehpcQcQTpDTgI f0f+XcQ34D34B+I/YS/i+7BPeh0OwcuIH8AriIfhVcQjDI/CfsQPGR6DA9IB +Ahel/bDccQD8DG8gfwn8CbiCXgb8VM4KL0GJ+Fd5D+D95D/F/wT8XN4H/EU wy/gkPQqnGZ4Bg4jfglHEL+Co4j/hg+lV+Asw6/hmPQynIOPkP8GjiN+i/gy fAefIH4PJxB/YPgjnJT2wXmGF+AzlEiI+y4jpwf/j8np57rl9HP9zOmjUfK/ KafnsZw+v1tOp/zFOf1fmNMXIZayzO7L6UtQ4svpxSynU3SADXE5y+9dOf0k 5nQ7YjXyNKdTdLEs3zOnL0cJzeknuuX0TzCnVyNezdCX013I05z+SWdOd6O8 AeoQaU7/uDOnX438dVCPeD3L7zcwvJFl+ZsYduX0j1hO/4jl9GPdcvoxltOP sZz+Icvpx1hO/5Dl9A87c/p65H/HkOb0oyynH/2VcvoH/pzuz+n+nH7Zz+n/ mZw+Vc7ppy8rp2eynD79Ejl9ppzTv8CcPovl9Nksp+fIOf0U5vRcltPnyDn9 886cPg+zsz+n+3O6P6dfXk4/8Kvm9Fd+5ZwOmEeBu1ej5IDj6LdJ8uc0P0vK 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 Gy0Xe9fdvkPW7MqI3rpNzjW+uHZ3Zv4SZqMrIzjkK9vnhbdHz73x6nrnU8Z2 0N25Ot1jobc5OORrnUZpJfYtk++z4k9WgvbwRt4I1L+S7VgVi6uyS9qu/gVz 77Je1rl33pjy3b269u2nM+h+f+3p16Rue0Rn4p3LxXcr31VWxp4L6MydLKL6 igRbj123y3fri+/ZTpajXHKmot6u6ryTeu34MlJfMdSf50THzzwnzkQ5zV2r sO5g945L62aydantvP6dfT47nkTpCjiHlk+i9NKa85m1S7dPZ9JV7Gm1L71c PNMZ17EnHye7s/dvffqYh2AWJguThFRhvJAkWIWrhGwhuQ+r+f146s6mUjIa tfrS8WbTFX2u8Ux2rdO2zv9QIg2n3272Sjz7XyMGIJIEfGBaesbSzJmFudPF IeWV9a6KhCFiVpqYIOYX5qaL06bmpYvps9O8Gj/RHc10R/dLdwzTHdMv3USm myjOm52VmpOWLib2r9tY1m1sV7fEfnUbx7qN6+o2tl/dxrNu47u6jetXtwms 24SubuP71S2JdUvq6jahX92SWbfkrm5J/dtYbxSMTujqmNy/jnJIjO7sOLaf oeSNj9Fjujr2L67+T3XnAR1VtQXsSaElREoAgVBCkRbKPXXuSCihSFFaQpMe QiChJDGEFhBJRKqIiqGpEII0aVIF6YoIERSkPAEBla4YOogo/De5+zI7T/3d 61/r/W89WK6YCSczc+c75+7znX32YTYszEuLpNHCbFyYlxdJ44XZwDAvMZJG DLORYU+Y6RrxQpeWUaFVu4QZBm9RN/dLRIuqtN9lc8S8IEkaSMwmiXlRkjSU mM0S88IkaTBxGybuhUnSYOI2TNwLk6LBxGGw8cKkiIOUDRP3wqRoMHEbJu6F SdFg4jZM3AuTosHEbZi4dwBStAGI2+RwLzmKRg63yeFechSNHG6Tw73kKBo5 wiZHGH/VYUSz3A4j3C1pHUbYMAkvTJoGk7BhEl6YNA0mAbcxL0yaePuzYRJe mDQNJmHDJLwwaRpMwoZJeGHSNJiEDZPwwqRpMAkbJuGFSdNgEjZMwguTpsEk bZikdxjStGFI2uRILzluGjnSJkd6yXHTyJE2OdJLjpsYAUEI5CXHTSNH2uRI LzluGjnSJkd6yXHTyJE2OdJLjptGjrTJkV5y3DRypE2O9JLjppGjbHKUlxw3 jRxlk6O85Jg0cpRNjvKSY9LIUTY5ykuOSSNH2eQoLzkmMXqG8NlLjkkjR9nk KC85Jo0cZZOjvOSYNHKUTY7ykmPSyFE2OcpLjkkjR9vkaC85Jo0cbZOjveR4 aORomxztJcdDI0fb5GgvOR4aOdomR3vJ8dDI0TY52kuOhzjzgqmXlxwPjRxt k6O95Hho5GibHO0lx0MjR9vkaC85Hho5bpsct5ccD40ct02O20sOM2jouG10 3By1pLHjttlxC9SSBo/bhsctUUsaPW6bHrdCLWn4uG183Bq1JM7dYfLuRi1p ALltgNwmakkjyG0T5PagljSETBsh00AtaQyZNkMmYojRGDJthkzEEKMxZNoM mYghRmPItBkyEUOMxpBpM2QihhiNIdNmyEQMMRpDps2QiRhiRAUEDggxxGgM mTZDJmKI0Rjy2Ax5EEOMxpDHZsiDGOI0hjw2Qx7EEKcx5LEZ8iCGOI0hj82Q BzHEaQx5bIY8iCFOY8hjM+RBDHEaQx6bIQ9iiNMY8tgMeRBDxFugB1QiYoh4 D7TuP2ATEUXEu5l1B4K2Xo448a5k3YOgLUdtqc8LWtHwssSJY4N1H4K2Xpo4 kX3rTgRtFWpLo8K6F0FbjdpSXzP4RMON2hKNogFK0TBRW6poBqtoeFBbIleO pUaamnOqp3ZENeJKELlyXDWS1Zy41sAcXY18NScubzDHWCNlzYmLFcyR1sha c+KKBXO8NUNcEdcfmOOpkajmxCUP5qhq5Ko5dQHDsdVIV3PqGgYIa4aMNaeu RoCzZkhac+q6AnfWQBBX1MUMMNcMqWtOXZYAec2QvebU1QTw1wwJbC6JXIHC Zshhc6LhZ2CxGdLYnLiswEBkM2SyOXGBgIHLZkhmc+IaAQOdzQTSAeQBGvw1 QwKbEY0ZA4XNkMNmRBfNhLO+hoIqoo5mILIZMtmMqHkZuGyGZLZJviOBz2ZI aDOiCGOgtJnAd0LqGwaykNZmRJHKQGwzZLYZ0VAzcNsMyW1TUt8w+G2GBDcj ekoGiptJTBZxiAbLzZDmNk2iq2DSWb1FaBHVCgPZzZDt5sQ5GAPfzZDwNt3U mzA4b4akNyPKawbamyHvbV0t6hMDWxIbTKL0YKC/GfLfjLg8xMCAM4XZIg61 IMEZtuBuom9hIMIZNuFu4jSSgQxn2Ia7ifNeppz0AOolAqKwCHdT1+TBhTOF iSJ2IdDhDPlwRjTpDIw4w0pcUhuDFWdIi3NBfNEgxpnG8RWx34MbZ0iOM6Id Z6DHmca3QWpbwAkpckZc0GMgyRmy5NZ4Q71YTsKJFy1JFLMMXDlDstx0UwMO 8OVM46UWokJk4MwZkuaMuHDKQJsz5M0ZcZGHgTlnSJ2bZC5BnjNsz4kJBgz0 OcP+nLj4wkCgM2zQiashDBQ6c+P7IDHSAYnOkEUX1LmZ28ldQllw1LkZiHSG TLrJiYqZgUtnSKZbjYlXGnQ6M/NF78SPGIw6MzFb1NsRSHWGrLpJDljAqzMT LwkTvTEDtc5MPDOktgW6kF33aGowDH6dmXhqSMQaDDtDil1QBy7TyY57gpc3 5YgbUta1vvBcl0L7bcAbEu+mIKbkMFDvzIN5o05xwb4zD+aNOrcGAc+QgdeS E5O9GEh4hix8bmvi2AAiniETb5IFKLh45sE3S6oRBB3PkI+3Ogr1ZQNzSMlb L5s4soCUZx48plHzZj1OWiYW88QUQsPJzESBGDE+4CDmORLzjLjwz0HM83xi ntoWUjSxmCdOGjmIeY7FPHEWxEHMcyzmiZMRDmKeYzFPXP7lIOY5FvPEaR8H Mc+xmCfeKzmIeY7FPPFWyUHMcyzmidEfZ07SLwrwib2Qg5jnWMwTp20cxDzH Yp54m+Qg5jkS84LKFYh5jsQ8NVLmIOY5EvNu4mICBzHPkZh3E4M/DmKeIzHv Ji74cBDzHIl56hDNnUxyJOapcyHuJJNzbCKI/ehJPjnK5CQu+HAnpRyJeTdx oYk7WeVIzLup/ddJLEdiXhADTu7kliMxL4g3M+6klyMxL6hJ9E6GORLzgppH 7ySZc7zZhZr1D1whMS+I9pSDl+fYyxNzoDl4eS7wfZDYj4SzVQEv+BD7Anh5 LvACNfVaAVfIy3PqZwRangu8QE29zsAV1vLUrRKg5bnAOoL8xACWwDdC4uAO Xp5LrCOobQEsrOWJCcsctDzHWp6Ys8xBy3Ok5Rkxa5VLZxsMshHEVFkOVp4j K8+ISa8crDzHVl5Q98OAlefIynOiyuRg5Tmy8pzomzhIeY6kvKBGduDkOXLy gro5Cpw8R05eUPdHgZPnyMlz4koiByXPkZLnxJVEDkaeIyPPietMXDlbrNCI RVxY4yDnOZLznLilgoOb5/ncPJFJcPM8n5unPi9wpfASNfFagZrnWM0r4rUC Nc+xmicqUA5qnmvMFZFJUPMcqXlOXAPhoOY5UvOc6Jo5qHmO1Dwnan2und17 iCvimisHM881Hq+orxm40ni8or5m4Ap5eU5lErw8R15eUGcb4OU58vKCmIrH QctzpOUFdVYHWp4jLS+oM1HQ8hxpeUGdiYKW524cuRPZAC3PsZYnJi9wt7Mx FEXuxOwUDlqeIy0viGl8HKw8R1ZeUGeTIOU5kvKCmF7Gwclz5OQFMa2Ng5Ln SMkLavQNRp4jIy+I6WUchDxHQl4Q07w4CHlu4lIHxPsR+HiOfLwgpohx8PEc +3jiIgI3nT3HeEZIfb/AFbLv5JgQ5Dv34PiK+H7BvXMPjq+oO6WBK6TeBXU2 CeKdI/EuiNlWHLQ7R9pdUOMrsO4cWXdBja9AunMk3QUxI4aDc+cevM5Dfc3A lQdX1KC+Zmc7OzYNxL3khrOjHe3rIk4mBRh3gYy7h3hfEGDcBTLuHmLWkgDj LpBx9xDHDQHGXSDj7iGmawgw7sLAGwRpn5EA4y6QcfdQN9GDcRcG3iZIvVaw rR0Zdw91RzwYd2HkW50mXmhQ7oLh1UKidxPMqY2AVgup4YoA6S6QdLfm3tTG wBay7qYi5j4I0O4CaXerMfFTBu8ukHe3GhM/ZhDvguHNy8S0CwHmXSDzbjUm QgLqXSD1bjUmlk4A9y6Qezc1MZFAgHwXSL6bbuIWAgH2XSD7brqpgwh3KnAg wkziJiAB/l0g/256qIU4QMALJOBNDzGXQICBF8jAmx4q26DgBVLwVmMi2+Dg BXLwHkmcmgqQ8AJJeKsxsWOAhRfIwlvjPbGxU+4FaXirMfFu4dR3QR7eulsQ 37NT4wWJeKsx8XN+UucF3R8VcUlaOLVekIq3GlPfMxCGXLxHUfuzU/NF4G30 xPmecOq+IBvvUcSlR+HUfkE63qOo9yqn/gvS8VZjYscAHy+Qj7caE98zCHmB hLzVmDiGgZEXyMhbjYkfFSh5ITFhxCmFkE41IUwYtQATSHkhMWHUmztYeSEx YdSqS2DlhcSEUSsvgZYXEhNGrr4EhElMGLkCExCmMGHU6BHMvFCYMGolJlDz QmHCqLEnuHmhMGHUikwg54XChBFnj0I5NaswYcTpowA9LxQmjOh+Bfh5oTBh RPkrQNALhQmj3mLB0AuFCSMuKwhQ9EJjwqj3Z3D0AheWUcRFCQGSXuDiMooa DYGlF7jAjCJO9QVoeoGLzCjiXF+Apxe40IwiTvaFdiqjYcKos30w9SJfwRlq ZACqXuCiM5q4PijA1QtceEZTwwqQ9QIXn9HE3C8Btl4gW+8hzzFA1wuk663G REjA1wvk663G1PcMhCFhbzUmQgLGXrhxqjM1GgJlL9xYVRCdrnA79fcwYcSF YAHSXrgxYdTIAKy9cGPCqDd30PbCxIRR7xjg7YWJCaOOYSDuhYkJo84xwNwL ExNGzI0QoO4FUvceNzHPQIC7FziZ3k1MNBAg7wWS91Zj6nsGwpC997ip8yrT qfKIC2dRJQv4e2Hi4lnUCQoIfIEEvtWYWmISCEMG32pM/JxB4Quk8D0mMUtR gMMXyOFbjanvGQhDEt9qTOwYYPEFtvjE/GYBFl9gi0/MbxZg8QW2+ORLDXjl T5wnsulxColi3Uos1SANp5go3nBNnIVKEPkSiXxTEoNtCSZfYpOvicmoElS+ xCpfEy+YBJcvscvX5AsGBUaNfLuBiAVYweZLbPPdxI0KEnS+xAn0xIm3BJ0v cQI9cd4tQedLnEBPnAhKsPkSJ9AT54GSOeVqcRoO8f2Cy5c4gZ4KJqh8iRPo qUVkweRLXNmGWkcWRL7ElW2opWTB40tc2YZaTRY0vsSVbYhTEgkWX+LKNtTO ABJf4so2RMMqweFLXNmGmI8qQeFLXNmGGERI7lRCRlwR4yYJAl/iyjbEvFAJ /l7iyjbEHd8S9L3ElW2IcY8Eey9xZRuivJcg7yWubEMMmSS4e4kr2xCXpSSo e4kr2xAVuARzL5G558RFKQniXiJxz4mVPCR4e4kT6ImV5aRwimyjdAni3FyC tZcCb/ih1vYGrgQOtIhcgbOXAgdaRK5A2Uuk7AXRCEgw9hIZe0GspCdB2Esk 7AVxg5N0arZLnDZIvM5O2XaJ0wapZdSBK4nTBon9yCneLnHaILEfPanfjrgi bn6VTgl3idMGqc8LXEm8m5/6GQFXEu/mp35GwBXy9IJ62I9Tzh2nz1PjYLD0 EqfPE2dZEiS9xOnzxEmWBEcvFU4bJL5fUPRS4bRB6vsFrhROGyT2feUcDYDT Bol9H/y8RH5eEAWTBD0vFd5IRn1e4ArZeUF0UxLkvERyXhDXnSS4eYncvCAu O0lQ8xKpeUFcdZJg5qXGaYPUAxyAK43TBok8g5eXyMsL6uEYoOUl0vKCej6G dk6dwGmD1OsMXGmcNki9zsCVxmmD1OsMXCElL8hnZQBXOH2emHovQchLJOQV UexI8PES+XhFFDsSdLxEOp6a2CDBxktk4xU13gAZL5GMV9R4A1y8RC5eUeMN t3OgCRKl1NgMTLxEJt5tki8WgIVMvNWYeLXAxEtk4t0m9XKBiZfIxFuNidcL TLxEJt5qTOzEYOIlMvFWY+LVBhMvkYl3e4jbQSWYeIlMvNWY+szAl5mvxgj1 owLATFxjhJi8Ik3n1BykSqkZ7RJMvMR1bCR1TgomXuI6NopY7kmCiZe4jo0i brSQYOIlMvFWYyKeYOKlB2emUmM1MPH0awRQUefqINwlEu4e6twVhLv04HGK elGAIiTcPdS5q8c5fgkt5xCXs5XhnMCEVnOIBTYU2HaF0+aJ9z8Fsl1h2U4c lhW4doVdO3FgVaDaFVbtxHFVgWlX2LQTh1UFol1h0U4cVRV4doXT5onb9BR4 doXT5olzZgWeXSHP7iGmDCjw7Irh7RjEz5c5h3shrohDuQLPrpBn9xALMCjw 7Ap5durNS4FnV8izU+9dCjy7Qp7dQ1yNVeDZFfLsHqLXUODZFfLsHqLXUODZ FfLsHuIisALPrpBn9xC3JSrw7Ap5dg9xUVOBZ1fIs3uIPkVx59w4vM2HyAZ4 doU8u4d6gjJ4doU8u4foRBR4doU8u4e4hVOBZ1fIs3uIWzgVeHaFk+SJFSwV eHaFc+SJIY0Cz67ypcgT7wvg2VW+DHnqyYDAVb4EeSIb4NlVvvx4IhvCOZIQ bx8jjhvg2RXOjiduO1Xg2RVOjiduO1Xg2VW+3HjqZwRc5UuNp35GwFW+zHjq ZwRc5UuMJ35G4NlVvrx44mcEnl3lT4sntgWu8mXFEz9f8OwqX1I88fOVzmmX OJ+U2PfBs6t8KfHEvg+eXeGMeKJbVODZFU6IJ7pFBZ5dyXyZfsS2wBVOhyfm BCjn5FScDU9M81PO4ak4GZ6YF66c81NxLjzRSyrnCFWcCk/0kso5RRVnwhO9 pHpykCpO8aOewQpc4Tx4opdUznGquEyNQQ3OnCNVcZ0agxqdOceqItNuNSai BapdIdVuNSayBa5dIdduNSbCBbJd4TLyBnG1TIFtV7iOvEEN70C3K1xI3qDG d+DbFfLtVmMiYNo5rBcfmklcMVNg3JXGhFHDQ1DuSmPCqPEhOHeFS8kb1CAP pLvCteQNapQH1l3lO4eVGuaBdlf5jmKlxnng3VW+01ipgR6Id5XvQFZqpAfm XeU/k5UICah3le9YVuIOYeV2joTGhFEDRZDvKt/hrNRIEeS7ync+K3FpVYF8 V/mOaCWurSqQ7wqf0mpQg1SQ7wof1GpQo1SQ7wqf1WpQw1SQ7wof12pQ41SQ 7wqf2GpQA1WQ7wof2mpQI1WQ7wqf22pQQ1XTOXgcE0aNVUG+K3x6q0ENVkG+ K3yAq0GNVkG+K3yGq0FcRlcg3xU+xtWgxrog3xU+ydWgBrsg3xU+zNUgrqQr MPEKn+dqEJfSFWh5hY90NahxNnh5hU91NYiJuwrEvMIHuxrUKN3jHG+PCSOG 6dpwjrjHhBHjdA1uXuMi8gYxUNcg57WBCSNG6hrsvDYwYcRQXYOe1wYmjBir a/Dz2sCEEYN1DYJeG5gwYhaBBkOvDUwYMVVag6LXBiaMmCutwdFrAxNGTJbW IOk1w4QRs6U1WHrNMGHE/ZsaNL1mmDBiqUUNnl4zTBix1qIGUa8ZJoyY8aHB 1GuGCSOmiGtQ9Zphwog54hpcvWaYMOIeNw2yXjNMGHGPmwZbrxkmjJierkHX a44JI+ana/D1GheWN4gJ6hqEveaYMGKGugZjrzkmjJiirkHZa44JI+aoa3D2 mmPCiIvdGqS95pgw4sq3BmuvOSaMmKauQdtrjgkj5qlr8PaaY8KIieoaxL0W mDBiproGc69xiXlGXO7XoO41PvuVEdf7Nbh7jQ9/ZcQFfw3yXuPTXxkxI0qD vdfI3jNGXPLXoO81Pv6VEdf8Nfh7jfw9Y8SkNw0CX+MDYBkxY0CDwdf4BFhG TOTSoPA1LjXPiPkGGhy+xrXmGTHhQIPE17jYPCNmHGiw+BpXm2fElAMNGl/j cvOMmHOgweNrXG+eEZP8NYh8LTFhxIwFDSZf42NgGTHtQIPK1xITRsw70ODy tcSEUSN9kPkanwNLPaFYg83XyOab1MMGNeh8jU+CldRpAvh8jX0+cRKrwedr omLQ4PA10Spo8PaaKBI0uHpNdAca9LzGev6fJ7MjEuIN54wfjeS8+mftajcF ypCaV/+8Km83jYCmKFn5n32t3bQZNEW5ykRbq8HK67+xBK0i27To27Fjy3ah 3AjqGNkyqmX7zhGd23Robz/o5kEdO3aIapP7SJv2rewHmZRBzdtFdOz7XIfI dhGdQ1moEWrke0RYj8ncZwkKcjl/fPL+5n51hbS1vpayHw5pZqSHNC5YpM6k 1pPuB/kU8s1MD2lgPRTm6+PDAo0iBQuEPeXnW76Ay4guGBBW0MffJ93t6+Of GWV0MuqiRypkVZpQwRWe97eDq79ruCvRNdQV60qx/muc+9eogn6Zf6kfQ0oW b7Hlx5aDr5UZUXj1JyfvPFVqbmZ66XNGut9e6796mX6+Pr6+xVvtKpdxbkbk c83vnx7WOoh9YAQ9eak+BawXlTY970X6dfEvGOzbI4KVNoJzvykcXLRb7PCU 2OSE0ObRSbGslFEy9+FCwYEtRiT3j04YGT90aCwrZv0269GA4IKd46JHpcSy ikZI7gOBwaXsB0KbxyanxA+Mj4lOiU9MYJWNirk/9gsuAz/uHD/MepboYUnx CYNCm0cYlZ4OMgTjhjTy/vR4Oojlfiu4UB7l6WFEoRfbJYo9bZS2n/+prrHJ 8VHxgxLqhrZJiKnPwoza9hNVdX6Q91ShUc5zRcUmj4yPiR2e+6TpPlXxVfEp 4PJL9ynmsh4P8E338XGtyF7/wcFDoWsDXp66avKIGxvb3zy3p9iuQdE7Fg+o cGrbg2yxcqIxtfv4108POaMXFNt15NroW6OWjk8M3zVrbdAncXeGvpO9I7Le ytaN7m4+3rtviO/C3xoMqfTB/cXzl5bf7/vDKy9Enn+q37WmFcZvDTrb5IuN 5ybv6Js6mNX3m5cWvLxV6FdseFC3eodGS5FRcl7JrWfjGnx46fyn016v89n0 KpMH7ni1e7fEEbvCP6wxuXd28dLhCyf+1HlPQMLeR5+3PbO1UIk5Vcedblzz SKXR1xayAzcvVS13eu+GVs3nl++bWenNC33u5oy7+fLK/j4z77YLPHu4atfl GYfWTBm5JueToNsX2p3MfBiXuaZUww2T92zz9bPAX5x22kj71pAFC1vEFihQ yMfHv5ZRw6jufG/4TCobl5KS9GyDBokxw5Pqj7Su+3DrutePSRyWx07FYB+f x/6FjYLWF18flxGR+1hl/2etGb/OlJl8kgHNY5KH5mvdwGYFo9I8or71r/JI rfiMf1EjwHkVfoWNp3IfLJb7XP5WDyhovULr+xL+FpkflDOedvj2Cy7aOSrC As2sx+op8W+9wi8tzdV2yIOfun/aogKbOmZe2Oxd6at8TlR44dBH07onnCtc e3Gf/dmzgi/7RwZdb1Wzgcv86MKBWe3nH6vav/T9Ju4qHZLYhJvTzckbrlyZ 43r0dZfZ7at/s6Jm+9Q1H0dH3K7z1eUDJ/uc2Rb2WuNN7286+UO3xzs3fj7+ 7tdFF9yY8yjsaMPIkBCz5v0mba0+/NhI970M/TjoatiNY9/WnlKWFyjSZ/7I Kf/ej/8jPePP3dEwcXfsRnzSBkY9+0lr/NOT5v4sNvkfu+T6jrVanzkalzqx bIuBI3qP37tlYUyNx42avzeuhFn8mS7DT46oGf9H+62hvY4GPMgMqfNLl65V or+tdPrCdjHki+tnFrtj3wiZVXRzVKVe4waqvgWmtXw0sv25qAlZaaHvr5nS K6vw/YvGg5yq7heaBXx1bl/lvSe6XE1rsilycd0PfVJvZX04Qz1aeKn34AIL Gw05v2v27kcH+z1oerlQZouf0zolLKlza/O04rV+mfldwcxJHeePbVs4yKiY XXzBkPtXu6/xX9F03vpaV2aWWRV+Pirx+aPq/U2JAypumF13W6PLY34elvqg zKUaq9denxf1cdO6GVvGfPjoWOTK2injm13zVMoaXObSi9uqx33rmtC8+OQJ Q6BLZhtpX/w/dsmiT7qkr+EyhN0Z6xp1jFqZNTKrT6r6d50xZfjwejHRed2v TF73y/0V/5ceWHA3qQfKf++BuZ/y5NFJp9pH+oT2/H7MgXRj7x9by83e8Zbr sx2HDu2789S3jx+02y36GyU+v5sScuzts33fCw1eN67lzo6HXr084elXl9Wc NSj4uYfZW+ZG+B18t1PPAtNfWZ54O6RjSPX6t+JnDK16f1t2mYxfiqbsjht1 8ud5/SfvGf7mr1NTUqutXDx37Jx192fWfqld/REhrSNO3dgUFNr5xKjMOekx 8X8U+XrajRHbirx78kGJLjXmR/Odqb4fjZ20M+uz6VXrjj6iRm5/e3ivB1sv vVA6oNrBC98ck/XbNC0dXqxfavV9SwZen/110s+NL98JGv/dkXGLR74Uv+e9 Dq0MVWVd1try/cPDTr7xYZ1CY78tu6HX2B/fX5L4KHzqaiPdv6Q1BPxmDwHF XHtc08PDp5Q40vhezLVzTfEV87dGgCSnbwcGV22emDQmOX5QXEporZjauQfQ ukPbxcckJw5PHJgS2jwxOak+q2RUsP9x6fw/SUy279VVjMr2x1TW+/PIxMSU 0IgRKXGJyfEpY3KHB4/byPUdbhgeuMG4YPDtf+EV/eOt3HfHnqRLDW+1D6m1 cM7oPsZPWStmPNP310cZLyz++NH7WaGNx3XKejdrZj8+5EizAWNyVo080PnU rZ/fm1Rh5sKJAzd8PiS1f7UTFcPPFvN5+8rsvbvqDZw/P67GvMPP1t1VdFP3 GnueuxzQ2Jxdd0Utz/JrbV5tdn5isW3zh3aJXpU+blG/eqNeuDpv44CG8ztW YIWrl1q44vJbYWUvNZobU6pf9wKxCyu6IyffX3b9Hd99IUd3dWm5YeqEXc9e 6/xO+zV/LEsdltJ+bdmDs4vUquLq9ma/ePe250sWCu/6uOfDDwYGFF76TVrX btc3N+xTJm2U/6l7O9dMyHj00aFXTiwrn9wrPHv7jcKLqxobCr52YEPoqODX zsG4sdxIW2KkZeX2Sx//tPlG2pwJxXseTroen7ygWqfxpda3e+Pxl4uS//9/ fun/wHjeqJBxJXD3jNtzyqpftvhU/3ZUidu9+vGFCwK/bFzgrSkzDzx7qcqt G91m1d2U2Wp//+u//+tgw4Y9VujO8Y+qD2ty4OCHZwuMO8NmNFpYPGnwtkcl O5SN3/374ebnS/QI7fBT/7FrPyy3P8z9TL2dsYtKTnumWMzi+50rPKhy4ETp 25GrEprzQn+kP/3rxUFDgzrd23Ez8osdl/cav4eyIlMqZtQu3+54Rd8lNyd8 77ex5511Z/Z3y4lt80Vk580b/WqVfPzmiRuFZ47fMufzle66F1IvLB91fmSm 6/DgJnu+0dO+jyi5XA0OGXxa/XCsgv+F5S399/cQZkK7CkH9Pw7Iev3o8c5N njtUocvSpNMln508a8TCZd9kWqPCZ1ZwsBYCg8GB8zrsdlVcWeLUXt9FA2t+ 4kwSKv63hgRDW/GCZG4pmcwN4K0hnmtnSEhbmj9kCDZK2NONgG7Rw+OsUCDF ep7iebcQa7JRKDJ2wLDEhAHOKwv4u1f2d2+TW0/6p7dZzahiv43y+CcDYvOC j9xopGPepCD0zyNJUO5IUjhvJPnsYOiM7eceN+6Yk/rpserP3Bv5VZXHh+p0 bZ/93sfp69WYeq69ywsfjznw8ZJ7V/fsObHu9dlZhX4rtjk9cv7P6ft2FP98 +e6cIRPfiArZ1vG3AT5T95Q5lh7najq6xd2SZvuHMZ2+/63R1ovudediClVr +FJT2erOkDXP3a05vFLVL5uVq9Rpc+T8o4sPB+8r1+SlgsNuZVRp0bfZL7sP zBsQumWP/D2rxaWx6ys22LL07J1F596tUuxRdxbRxRy/tvvlC9deHPPMyvt1 GpRoYo5u3OyVZXEXxleNe/pS27f3jm4R2WpRh4lTZ727e9DYn4o8nOT38r15 L4WHLRs49+C5ej+G+ZYvJlvH3g0vufbm5AoVa0QmHrTY81uc7lPHuh41/ioO 9/vfGF5KFiwCE/DS1vji6+fn8s+bolZ8yr+Mf6lnfg17vvf+5M6rL97LrPN0 mYd7HkSlGeWeNCnl61+0UoAryjXCmq43d0UYgXmBT9684zmj2JMAq4DhZ31B /TJvGIs5//3tAls++ikwUB5JZ42n9m95vPCyB9Gx++v7/Wa2jvh6062arx49 /3nXqOWbyn118NLNzAddN7d+p1X1iysqf5d67F6Z1JKnb78Zcq1w7w2vvbn1 9e7bKhzMOJrxjrjz1tnHU97t83ybjp4az4aGdHb//nKv0rM++67CGzeiI8Mv Fvpl4PUx12Z+1S0mNqNsm8zUc7Efn6ux5tH+kpv3ZR3c13d60u3s0yvTEwp9 F1tu6/J7kz4t0mzuzRqr4lPX7Qlb9tHAykvWTi48ZE7wlo/0vEoFFgebi3ev Mhp/UuVfxtLs/iUrrO024+LN1BKf9Akv6r45a8/bU9r79yjQ64uvT6w4+cPL b42u+XBjwpKZBUX3dX3qlChmpBcQ1lAWYg9jAdHPLfjS5e9yuWL/ZCj+V4YM 79jnkULq3NmS24qNrG9V7rdGyn/kfcDP/f7m5/8YEh1Km22u6ZV1a8+5s4dX Zsw4Ef5+5emf9Z5Uv/eNdcl3V66aMnjTqXVVxwbu37/k+bf6VA2++uButfc3 3UkYueZ6zgfhX+zd/WKvJis3DBc1lvZPix6zqP+dhCkZhxPOfLHwmw86lRgZ /UnStNhFs8tMXdY77XCLgRdPd13QNPv370ZWr9/CcF088fLYjBLHu1dcfKVD 4IEp32WdiJo3NDsme97g+W/3eaFdiSsNjvbs2adv5OLh9ZZsm9gy6PVypUd+ WfjU/KVJpa+0uxb/R+/1Q2b+UruT25y+77k2pd/pOPejO3Ef/OtskZcGpSwY 9XrF14bM+ely35YHv7/0UtCRGNessWzuG4Ebg3dsOJxz81yVnBX9onPczRt9 ZodE6T5vW1fkjT/NXbyDQc7JIStGRB3qkBPSvlzBSovfW/n1O3/8zci3IvfR av5pi4y0BRP+chRZlPLBf2P8+3Ow8Lw98WthNDOaZjbODJ/0LJr4DXN+T97M L2lIfO6jDZKSEweMiEkZ3iC3A+Tyb7HP8yaEHdBMtLkRYTR5MhP1nSTg944a Neqvfm9s8p9/YcpfzQnNk9czzHd7zS3Vu3NC/Dnf/Zc3PDz6abvVDVa+0jno FN/86+BLQQ+rlB/VeElc6saM8dN63Wq+99V3Y1+e0rHTuPRSd18d/q+snb2y fZO+qjH06e2RpZZM3f3xhUUHF414/62XGoXs7urquunXiTVO9REPTzyT2mf+ qaUP79yKKL+qy3OrW3/3lhncvUibm7fZ5Mrb/d/oWTLW72pgp8OLik6bt+Pk nuWHC5d+psqmzd2mVjjSc5Jakv3Hh5OvrXA3+bj5kPOhN1tuH7/m6s0u6xe1 3h67M0qePHClYIx/wdEJHR+33vbuT817TD69OmDC3Rc/r3vh4is9217kY3Kq vvZ20XobOvbc92nT7t1XfnPofIM9h64NW+gew9L9j1jD5iFfHx8jbdP/zOCY b4D3auzMtByj1JMbai0fVsjP+pytf5R7m4WPvogfK4rNufXSvd8FsqcM/NPS RjVvQ39m9dsatbLfOr1t2YJvBzccenx74UAfdXe/MRo1KcoGG3GZjSeEuyJc ya54V7RrqCvU1d76mmz9TXSNsr5rlifjB1j/19UVaz063Pp3ia4E63vuqu8S LveiGhOq/y3hKWOSEgclRyfFjfn3mNI/3ceVmL5dV3p921d1799bW63Xudqv hzcp0yd7zB+ZIw7U79G1/J3ulStevfhwyw9HjeWj3V+NE8NeWxibEei+lfbS jplfll+7fcvqEt/6ff32pIiwK9V2Db0dUnDroasXAuqsH71s1b7f2j86P2Ly v4LCeg2YN+3U/qXtpk5581a/M8dXjpz0KHpggBqzYeuYs6+aZ3+q9qjt1pkv xnsyZ63YOi2s6Y1VfQOWHand8Pk7AXE5SfGDds69eY3X/LVRk/o7wxp167L9 5Uo/hL0z5WBSu5dXP1ssZ/CCoKFXvjmYMiKn/xs7WJuNn65vmDq02jv1sisl zfz8YcDPe0c02LAx51jSosZnSnXIOXToYPK264PTR609WdqYtMNYlG4FR+k+ D72fW0GW7nPNeuhKLuSD/iNq8y+EatGChe0X4GuNNZkvGmUxgYHeBR4fC8An PynAiuXd9d1MMtNgwpriVMYAlvQv/nqbs/1+fC2p6lW1aemFtJdb/AUCLHDB xCEJDTo073Cv4lOnSte91Gt2/fd+bNu0puuLcjWG9khv+2PybyXrra5cr+2d gCJ3e+7c/fb+Vy5l1Z7Tb8zXwyeePXXrh7TJx7c92BSXmRS1fOjA1esHPGUO 61+u5pScjLAZNZ//vvS6hh23hse07tVvVsuNk3+Y/jAprE2HrMACnT6oscIv a2nM4iYZVXr4FtnU7/ycVw6M9Tty/L1fT6/pHdfr6VrDOkaEfFJqWKvf05sl v+dz/9iVRd809DuTk3pS1zpb6dLe332yu5yuN2be71We5XMH7FYhD49kdD3V +/sxxxd0+X7T9EOD0+YH7v5ia7t3zrIhswMq3Cve98CWvt99Ur3ihobLGp4d Gz9jwtRXDvVJXeFy/R9r8RpLDQplbmRzdHJlYW0NZW5kb2JqDTM5IDAgb2Jq DTw8L0JpdHNQZXJDb21wb25lbnQgOC9Db2xvclNwYWNlL0RldmljZVJHQi9G aWx0ZXIvRENURGVjb2RlL0hlaWdodCAxMzUvSW50ZXJwb2xhdGUgdHJ1ZS9M ZW5ndGggODUwMi9TdWJ0eXBlL0ltYWdlL1R5cGUvWE9iamVjdC9XaWR0aCA1 MDA+PnN0cmVhbQ0K/9j/4AAQSkZJRgABAQEA3ADcAAD/4QBaRXhpZgAASUkq AAgAAAAFAAEDBQABAAAASgAAAAMDAQABAAAAAAAAABBRAQABAAAAAQAAABFR BAABAAAA1SEAABJRBAABAAAA1SEAAAAAAACghgEAj7EAAP/bAEMACAYGBwYF CAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0 NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAIcB 9AMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/ xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgj QrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZX WFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmq srO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4 +fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIE BAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVi ctEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZn aGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4 ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEA AhEDEQA/APf6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiqt5qNnYJuu7mKEf7bYP5Vy2pfE7w9p+Qssk7D+4uB+ZrWn Qq1Pgi2RKpCO7OzorzJvijqV7zpHhuedT0d923+WP1qJvF3xBn5i0XTYF/22 5/V/6Vr9TmviaXzRHtovZN/I9Soryd/EPxG6iPSx7Ar/AI1C3i34iwcvZ2Mg /wBkKf5NTWFv9uP3h7b+6/uPXqK8bb4p+KrH/j+0e1CjqxhkH67sVbtfjMWx 9o0pD6mOb/EVostrtXjZ+jRP1qmt9Pkes0VwVp8WtAmIFzFdWx9SgdR+Rz+l dNpvinQ9WIWy1O3kc9ELbW/I81hUwtal8cWjSNanL4Wa9FFFc5oFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFU7434X/AEJrZT6zBj+gx/OuZ1S41W0tpJ7rU1KpztgQpWc6 nKr2MqlVwV+Vs7KivGdZ8aXVrEfJvrkN/vmuc0Pxdr+u+IIrFtcvIIMF5XR+ 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 jasdp3gf3hXsVRPbxSD5kBrjrYDD1neUdTWNacdmeR6fqWu6S+IVbb/d3Ar+ RrqLTxlqzKBJpaufVXA/rXUS6NZy9Yx+VQHw7aZ4GKiGAVNWp1JJeq/VDdbm 3SMz/hJNWkX93pUae7zr/jVC9vNbvFKyXtvbIeoiyx/pXRjQbcdzUyaNar/D mqlgYzVqk5SXa9l+FhKq18KSPOX8Ow3Eu6Xzr2T1lPy/98/45rc07ws7MpkQ Ko6KBgCu0js4IvuoPyqYADoK6KVGnRjy01ZESlKTu2U7LTorRAFUZq7UVxcR Wtu88zhI0GWJrznxJ4/uII3Nufs0PY/xt/hXbQw067tEwqVo09z0ea4htk3z ypGvq7AVh3njTw1Z5FxqtvkdQoL/AMga8SsrzUfGN9K73Tw2cbYklJ3Mx9Bm u10rwvpkW3yNNW4f/npc/vCfz4/StZ0cPSfLOTb8iYzqT1Ssjel+JXhEttSS ac+kcB/riuN8X65pWsL9o03TtRW5AwS1qdrj3x3r0C10e6VAqJHCv91ECj9K t/2HcOMPKaKWJp0Zc9OLv6/8AJ0pTVpP8D5su/NVt09tJECf40I/nVjStYvd ImE2n3TwtnJAPyn6joa+gbjwfDcoRLhweoYZBrjdb+FVu4aSzzBJ22fdP4V6 FPNIVPdrR0+855YSUdYMTw98YlTZBrloFHT7RAP5r/h+Veo6bq1jq9ot1YXM c8LdGQ5/P0NfM+saBfaLP5N5HjP3XHRqZ4Y8T3nhbXoJoZW+zyOEnizw6k+n qO1LFYClKHtaP/ACliJqXJM+qK4TxrpniHV2EdtLZwWkZyoLMWY+p4/Suq03 UVu4wc81dkgSUYYZrwKkFNcr2OurSjVjyy2PnHUfBuuSSnfPA30J/wAKdo3h zxDpN0ZrS4gjZuGzkg/UYr6DOlWjHJiB/Ck/siz/AOeQ/Ks44anHYxjg6Ufh VjhNFv8AxcrolxfaYkXc+QzN+WRXe2t15sSq7h3x8zBcA/hSDS7VekYqxHbx x/dXFaxjY3jDl6mZrGg2esWrQ3MEcqN2Zc15TrvwpMbtJp07xj+443L+fWvb qayK4wwBqZ0oT+JHXRxVah/DlY+Ybrwdr9oxAt0lA/uuB/PFRWsHifTZd9tb 3cDj+KGXafzBr6Ym0u1m+9GPyqlJ4asnP3AKweDp7o71nWJtZ2Z4vZ+KfiFG AiPdP/11ZD+rVrwav8RL3Ak1GCzU9SxQn/x0GvTf+EWss/dqWPw5Zp/DVrDp dX95hPMZy+xH/wABRxOn6PcXEiya5r+o6n626yNHD+IB5/Su708iOFYre3SC JeAiKFA/AVYi022h+7GKtKiqMAYraMIx2OSpWnU+JirnHNLRRVGQUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAcx48aePw400KM6xSK8ir128/wAi QfwrwPXtSbUicH5fSvp+aISxlGAIIwQa8s8U/C+2upXudOY2rsclVXKE/Tt+ FergMbSpRdOovmceIoSm+aJw/wAPdStLSVtOvHWLfJvjdjgEnAwT+Fe/aZBC tupQA8dRXzpe+CtdsnIECTAd0bH86t6VrXjLQcJbG8SMf8syvmJ+RziqrYWj Wlz0pq76MIVZwVpxPpGivGbX4oeKYlAn0qOY/wDXFlP6Vox/FPXX4Hhd3P8A s7/8K5pZfVXVfejRYmD7/ceq0hUEYIrzMePfF1yMW/hhI895n24/MioJ7vxz qylJ9Ss9MibqIfmbH4f4is/qvL8ckvnf8i/a32TZJ8Vr7S4bCK03xtdb/MYA jKDB6+mc15LoWgz6zqsd28TJYxOG3EY8wg9B6+9elWvgfTlm867efVLknJab hM+u3v8AiTXVWHh1pGUugRF6KBgAVvPFxhR9hS1XczjRcp+0mWfDcUgQE5xX WDpVa0s0towqirVecdIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSFQwwRmlooApzabbT/AH41 /Ks+XwxZSfwAVuUUAc0fCVvn5WIpR4VjH/LRvzrpKKAMBPDMQ6ux/GrMeg2y dRn61rUUAVorGCL7sY/KrAUDoKWigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKAP//ZDQplbmRzdHJlYW0NZW5kb2JqDTEgMCBvYmoNPDwvQ29udGVu dHMgMiAwIFIvQ3JvcEJveFswIDAgNjEyIDc5Ml0vR3JvdXA8PC9DUy9EZXZp Y2VSR0IvUy9UcmFuc3BhcmVuY3kvVHlwZS9Hcm91cD4+L01lZGlhQm94WzAg MCA2MTIgNzkyXS9QYXJlbnQgMjEgMCBSL1Jlc291cmNlczw8L0V4dEdTdGF0 ZTw8L0dTNCA0MSAwIFIvR1M4IDQyIDAgUj4+L0ZvbnQ8PC9GMSA0NSAwIFIv RjIgNDggMCBSL0YzIDUxIDAgUi9GNSAxOSAwIFIvRjYgMjAgMCBSPj4vUHJv Y1NldFsvUERGL1RleHQvSW1hZ2VCL0ltYWdlQy9JbWFnZUldPj4vUm90YXRl IDAvVGFicy9TL1R5cGUvUGFnZT4+DWVuZG9iag0yIDAgb2JqDTw8L0ZpbHRl ci9GbGF0ZURlY29kZS9MZW5ndGggNDM3MD4+c3RyZWFtDQp4nM1a224cSXJ9 F6B/qHkxSGNVU3mvXBiGd6QZAba1a+zINoyBHzi8SA2Tam13SwN+kv/S55zI qq6i2KKwflnMiOysyoyMy4kTkdn8/vXPsXu3f/7MdQP+2717/swPrveu82Pu U+3u+MD3hQ9K72vnh9h7DMZ+wLMh9UWD0l1yZtXTMfQVj93Q59T5UrUcozFi lPrqNdk5TS6+dxCIpQVr8thXyi29w9KcuaUkx37MeAAJUMfjV/Z9Lp2rtfdF o+g409Xch6AHEOuqt3X4lToHRbE5pPQla/IY+5q1T+brQXrn2idILsX0C32K moxPAxyA5zHj9SB3jK4P2Ad6J44Sp3AyRFZ5ZnSdMzs8lMEvjmhHTX1MNheb 1rHPJid0ASEI2iFWDAJ/SQFYMeJB4i8HT44eI7gKg0rRHAzeLEPQODfTYsdg 2sqMyRWByRh5+lqTK93AbSMMx8hTiaEfzGcpmn6T4KS1ckLpS9WIDotc7hGR MM76wt0Vk2iOo9o0e9Qg0yOBemmuo5W+wnKK8v2QzX3cJUgwjGjGYSeKAs5c lRIEC6LnsoIYGKXccOYQEz8KZ0OQcTkrxg4j7p+EOoyEnqKtMp3q4YEcNCCG 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 XTtyNuKHXfXfa751ydazP3V//vmWA+Mefl1m6Z35+fVPNQ319bXXedTideMa fq6lOV2D69jjRv07p79/bUpF7loqYtGIKf96Hf9brow/X46aHV+O3Ykv2lhr WPSiAf/0ogXPRSf+4yX5See67X84FZMysWLrgcP7jNu/IyMq4Hmz4I/GetrL 1e6adHZ4ndhnITv9e59yf5zpW+/Xrt2qR35f9fzlz8SQQ7d/yLFFf+A7p8y2 sKq9xw5UfV2ntckfEZIXNj471X/J+im9s0s+uqI9vlXD9mYr96/yDlbbf6br jdQWW0NzGqyxptzLXjND5Wdc7TPYNaPZkEt75u3NP9bvcctrJTJb/5LaJW55 vXvbppWr++vMC26ZkzovGvN6SQ+tytFyS4c8utFjvcvqlgs/qXt9ZoV1gZfC 4t84pZZsjR9QZfO8BruaXRv9y7CUxxWuBny84fbCsO0tG6TvGL0m/3To2teS x7W66aiaPbjC1bd21Yr53jI+uNzk8UPgkjyqpR76X16SZV5ckk6aRRNFF2MD rZ5WNzMgs9akGn93MSYnJTWMiiy8/CoUXn4Fv+L/cwW67SVdgfJfr8CCb3ny qIRzIaFW/14/jj6Spu1/trPSvN2zLPt2Hz9+8MEr3z9/3HGv6K95HniY7Ht6 9sW+H/l7bxrb5vPOxydcG//qhJV15gzybvv06I4FQc7HFnfp5Tr93VXx9307 +9ZqdC92xtAaj3YdrZD+a5nkvTEjz/6ysP/k3KQPf5+anFJzbc6CMfM3PZr5 2tsdGw33bR907s5WD//wMyMz56dFxT4r9fW0O8N3lVp89rFn14BFkfzzFKeN YyZ9nr1veo0Go06qEZ/NTur9eOfVN33cax67/M1p2ahDS5/Asv1Sah1cPvD2 vK8Tfml+7YHHuAsnx+aMeDs296NO7TRVfVP2hsr9A+uf/WBNvRJjvq+4ufeY /1myPD4/cOrHWpqLl9EEPClqAspaci3TAwOneJ5s/lvUzbyW+Iy5GC1Agnlt l/auERyfMDoxdlBMsn/dqNcKdpG1+XeMjUqMT4ofmOwfHJ+Y0IhV1fyK/mef 4s/EJxbdq6tr1Yq+poovnw+Nj0/2DxqeHBOfGJs8uqB5cNi0AvCwQfPANcYF gx//A+/oH2/lTrtzE642vRfiWzdj/qgI7efs1TNq9/09P/3NnO35S7L9m4/t kr04e2Y/PuRkqwGjb60bcST83L1fPprkNzNj4sDNB4ak9K95pkrgxbLW2dfn 7d/TcOCiRTEBC080abCnzNYeAbltr7k3t89rsLquY9XNDhNaXZpYdteioV0j 16WNzerXcOSbNxZuGdB0UWc/VrJW+YzV12bVr3i12YKo8v16uEZnVLGFTn60 8vZcp4O+p/Z0bbN56vg9TW6Gzw1Z/2xlyrDkkA0Vj80rVbe6pfuH/WJtu97w KhHY7Xmvp8sGupdc8U1qt+63tzWNqJA60uXcb5+vH5+ev/H4u2dWVk7sHXj0 szslc2pom93eO7LZf6T3e3nQbqzSUpdrqdkF16XVJXWRljp/fLleJxJuxyYu rdllXPlPOn7w/MusxP/77y/tH2K8sFVIv15674z78yuqX3dYa30/0vN+7348 Y2npL5u7zpoy80iTq9Xv3ek+p8HWzHaH+9/+47tjTZv2XK2Hx+bXGtbiyLE1 F13H/sBmNMsolzB4V75Xp4qxe/84EXzJs6d/p5/7j9mwptLh+rbaDT+PzvKa VrtsVM6jcL/H1Y+c8bkfui4umJd4lvbq71cGDfXo8tvuu6GHdl/br/3hz0pN qZL+WuWO31ZxWn53/I/OW3o92PTD4e63ojscCg3ftsW5rtfzD8/cKTlz3I75 B9baGlxOubxq5KURmZYTg1vkfqNP+zHIa5Ua7Dv4vPrptJ/L5VVtXA73FPa4 jn4e/be7Z79/6tvwFm2P+3VdkXDeq8nkOcMzVn6TabQK+4zkYAMkBoNLL+y0 11Jlree5/U5ZA+t8anYSqvynmgRNN/IFyWxSMlmQwBtNPNfNJiF1RfGUwVvz LOpuuHePTIoxUoFk43XKFd5CjM5GidDoAcPi4waY78z9797Z331Mbrzonz5m Ta160ceojJ8ZEF2YfBRkI50LOwX+f25JPApakpKFLcm+Y/4zPst73rzzrZQv Tteq/duIr6o/P16vW8jRj7anfaJGN7TsX1Xy26gj25f/diM398ym9+dll3hS dlta6KJf0g7uLndg1d5bQyZ+EOa7q/OTAdapuRVOp8VYWo5q/dDLHvI0qsuP T5rtvGLblBdVombTt1vKdg+GrG/7sE5S1RpftqpUtcu20EWnck54H6zU4m23 YffSq7fu2+rXvUcWDvDfkSv/yG59dcwnVRrvWHHxQVbe4upl83uwoK72cRt6 XLt8863Rtdc+qtfYs4V9VPNW766MuTyuRsyrV1+fvX9U69B2WZ0mTp2zeO+g MT+XejrJ+Z3fFr4dWH/lwAXH8hr+T32nymVl++iHgV4b7k72qxIQGn/MiD3n nDRrPeN8BPxVHu7839G8eLmVgg64j9G+ODk7W1wKu6hVXnGp4FK+9u/13+hz ODH84yu/ZdZ7tcLT3MdhqVqlF4eUd3IpU9XdEmYZbnTXgy1BWunCxKew39FW K/siwXLVnI2/0HVZ2IxFXfrxvuuOjT+XLi1PprHmU/u3+bbkyseR0YcbOT+x tw/6euu9OhNOXTrQLWzV1kpfHbt6N/Nxt23t57ardWV1tQspp3+rkOJ1/v6H vjdL9tn83oc73++xy+9Y+qn0ueLBrIvPpyyOeKNDZ0dAE3/fcNsf7/T2mbPv gt8HdyJDA6+U+HXg7dE3Z37VPSo6vWKHzJS86O15AevzD3ttO5h97GDf6Qn3 j55fmxZX4kJ0pZ2rfpv0RalWC+4GrItN2ZRbf+XGgdWWb5hccsh87x0b9YVV XXO87Tl712nNP63+nbbiaH8vvw3dZ1y5m+L5aURgGdvdObmzp4S49HTtfejr M6vP/vTOrFF1nm6JWz7TTfTYFFHPs6yW5iqMpsy3qBlzj2y79EuLi8Viif6T UPy3NBkv2z6HFFIv6C3ZjNzI+FEV/Kgl/1s+Bzzv/DfP/2NKdDx1nn197+x7 uXkXT6xNn3EmcEm16fv6TGrU586mxIdr100ZvPXcphpjSh8+vPyNWRE1vG88 flhzydYHcSPW3761LPDQ/r1v9W6xdnOSCFjRPzVydFb/B3FT0k/E/XAo45tl XTxHRH6aMC06a16FqSv7pJ5oPfDK+W5LWx7948KIWo1aa5YrZ94Zk+75bY8q Odc7lT4y5UL2mbCFQ49GHV04eNHsiDc7el5vfKpXr4i+oTlJDZfvmtjG4/1K PiO+LHlu0YoEn+sdb8Y+6/PJkJm/vtbFZp9+sG0Hn7mdF2x8ELPsu4ul3h6U vHTk+1XeGzL/52t92xz78erbHiejLHPGsAUflN7ivXvziVt386rfWt0v8pYt uNm+opQozTrbOCMf/Knv8rIxuHV2yOrhYcc73fINqeRWNeejtV/PffY3Ld/q gkdruqRmaalLx/9lK5KVvOw/0f79OVl4o6jj11prpbXMbJ4ZOKkJ6vgNM39P Yc8vYUhswaONExLjBwyPSk5qXHABFMS/Efu8sEPYCfVEg7UgrcWLnqjTJAG/ d+TIkX/1e6MT//wLk/+qT2g/ezvdvrj3gvJ9wuNi85wOX9v89NQXHT9uvPbd cI9zfNvvg696PK1eeWTz5TEpW9LHTet9L3j/hMXR70zp3GVsWvmHE5K+y/68 91GnhK8Chr76WWj55VP3br+cdSxr+JJZbzfz3dvN0m3r7xMDzkWIp2dqp0Qs Orfi6YN7QZXXdW37cfsLs+zePUp1uHufTa72mcsHvbyinW+U7nIiq8y0hbvP 5q46UdKndvWt27pP9TvZa5JafvTZmsk3V9tabA8ecsn/bpvPxq2/cbfrJ1nt P4v+PEyePXLdLcrFbVRc5+ftdy3+Objn5PMfu49/+NaBBpevvNvr9St89K0a 780u03Bz514Hv2jZo8fab45fapx7/OawDNtoluZyqCADdLJatdSt/zWNY7EG /iVjZ6Ze1sq/uKHWtbISzsb3bPxPBbdZ+OpLObMyWM6Nt/7yp9LsFQ0/66PV fHmgCzOu27zzjZ/k7r1z4aucI3HNnyqvXQmTIrU4dEgZ1k+LyJTjuSXIkmiJ tURahlr8LSHG34nGn3jLSOOnbpZo47+TjGfjLXHGz9zSyCIstqyA8bX+Nq6T RyfED0qMTIgZ/a+ZpEua1ZI2+kiZ7q8nrX6a0z9nbbvbiys7HclVJyZ4Vusw LNLxpPvB77Y0uXH8RoVxl6bIXiGlP/GNWJhbu4O2bfmgiYFnc/pUftRtXquB fo0ObA9Zk/1LepfL3zrFdf21brWJa5vxFj7DJiwodVjdKNHvQIxfs1HTZ01M rLTuds0mS7ZW8Ln3zP1Bn/oj1107/Ub56LzMDX1+3/Nh9xNPWi3I8P0y8Obt 161nUm87TmuOhZmHLF9t3j91+Z5vVu7Ys6j1CRUxdfynPWadWJvx+YSTU348 7Ki18PH1yy1+u3AspseqRlPveIjNqaOa9Zp6+Pj9gx81XjIhMGrx99sD7w9z e3LaeefGiMMdDw2O/WZ4v5u1U56UmTR7TVJWmpESpVmfvvy23Fia9abx0PWC 0B70bwHNv2DUMm4li96Ak9HCZL6lVcRxV/rlsI7VCLsXz7iysoX3ehuTzK4x 7uhptL0o7Lxcyn3pvmbpTdX1XPhj9707gk9O+YsQGPdLg4+du+V/u+LB+5/O 7ulZoUn/w0unvDOt9uXXelezLn06OqRBvwPnbtRZOjvro6/5uiHHtvR6ZVfI wxn5WWu2znl2Nyh8xfjc25u/yPZKT2G/78g4NnTW7mN1EnucO99xrX7ou9Ur /HJK2X3ktotPywR32N1lYPsf56QOW7d5Wr94y7ORY4MbnV5TqtmZiKaRiQFv XLBu+Oxqfne/8E15F6JrBQ6t/WNYRELmxrCA2C36gcdb8ktkNRzhcXDBwfF9 3/PYVHPfLwN/6rZgq3/1vvmT/crOGdd0ecbyuXVdMyqOsC9ov65tr6xHxyOt 3ru66QfGv93ac1e9Wmef3nruOnXGB7dHZHgd6tTLJ6qb54h9By0L/x9Ysr/X DQplbmRzdHJlYW0NZW5kb2JqDTQgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVj b2RlL0xlbmd0aCAyMjU+PnN0cmVhbQ0KeJxdkMFqwzAMhu9+Ch3bQ3Gaw04h 0HUMcug2lu0BHFvJDItsFOeQt5/shQ4msEH+/0/8lr52Tx35BPqNg+0xwejJ MS5hZYsw4ORJnStw3qa9K7edTVRa4H5bEs4djUE1Deh3EZfEGxwuLgx4VPqV HbKnCQ6f1176fo3xG2ekBJVqW3A4yqCbiS9mRtAFO3VOdJ+2kzB/jo8tItSl P/+GscHhEo1FNjShaiqpFppnqVYhuX/6Tg2j/TKc3ZdHcddV/VDc+3vm8vfu oezKLHnKDkqQHMET3tcUQ8xUPj8PgW8/DQplbmRzdHJlYW0NZW5kb2JqDTUg MCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAyMDA3NS9MZW5n dGgxIDgzMDQwPj5zdHJlYW0NCnic7H0JfBRF9v+r6p7pmUyOyTUkBJgOwx0C uSAJIJlAAsRwh0CCEDIkEzIhyYRkEg6PBQ9gIygeq7uuu6Lueq9OgmhAd8EV d71AVlfd9QBEERCjeIAKSv9fVXcunWGHz/r//T7/z39eM99+9epV1atXr15X JyEBAgDRCCKk5BUVTD+bf+8WICNOAyQ0zFxQNEMQhUcApE8B6G/nFI1Nqz++ 7hQA6cBWCxcUFSz8Jj1rOsDWLQC/rVyYN6tkYW5DG0DIZoDI2yvqHA1rfjvz AYDF+7DN4ooWj/xG/NPvALgaAHT1VQ0r6p4PuWkgwBIZDTizwtHUAAlgxP6u wv7NK2rXVt28b+pHAPVHUP9f1ZV1ax4/ub0eYMAAgMkPVTsdlS9tTWV9T0L9 8dUoCM+VsrDswfKQ6jrPmoStwkG03Yzt36t1Vzhav9lyA4AH7del1DnWNOiL DGgf+TXqy/WOOueXX99xL8DaE+iUpgZ3k0eRZ/0B7VnC6hsanQ0zFzagLY44 AMMiYL6jZR1vPLJs5LKISWcgwQCM7rd2/Jnd97534PiFZT9skRTDeyCAiesz wrt01YXZ2MdKrD8sKbQAKqE38b7pnTAIKC9TMMNYsAMILhyX9yHY6LPYq0F3 ly4dbHAbv7upCapolEFHTZKeUhpCRWy8CUfq7nrBrKkyJOLVqHvjwjwSJl1F 2tH99xx+m9Xqs8kA3v0bqjYdCyuEgfAd/F8kHKPl5+pLtxryfq6+fkwi/dEq BUh0K4z/uW0JUpCCFKRLI3onIQQI8VPtQ+5HNToQpSAF6RJIAIEw0gkCoRij cbpPTXvhW4OCh5cQ5Qc8FzIMAROiCUIRQyEMMYxjOIQjRoBZ+R7PSgwjIVI5 D1EQhXw0RCPGIJ6HWIhBtEAsYj/EcxAH/RDjIQ6xP8QjJnAcAP2V72AgJCA/ CPFbsMJAlMgwCDERZJQM5miDROUbGAKDkR+K+A0MAxvicBiCOAKGIo6E4cpZ GAUjkE+CUciPhiTkkxHPwhgYrZzBM14y8imIX0MqjEFJGoxFTIcUxAxIQ/k4 SEccDxmImYhfQRaMQ8yG8YgTIBPlExG/hEmQhZLLYALykznmwEREO0xSvoBc uAz5KYhfwFSYjJgHOYj5kKuchmkwBXE65CHOgKmIBTBN+Rwuh+mIhTADJTMR P4dZUKB8BrPhcuTncMlcmImSeTALcT7MVjqhiOMCmINYDHMRF8I8xEWIn0IJ zEcshSLExbBAOQVXQDHyS2AR4lLOl0EJypfBQuUTKIdS5B2wBPnlsBSxApYh ViJ/EpxQjlgFZYgrYDliNeIJcEEFYg1UIq7k8lqoUo5DHaxAST1UI7oRj0MD uBBXIf8xNHK+CWqR90ANYjOsRGxByUewGhqUY7AG6hHXghtxHTSi/ErEY3AV NCF/NbQgXgOrlQ/hF5xfj/xHsAHWoeRauBLxOrhKOQrXc7wBJUdhI8dNXLIZ rlY+gF/CLxBbYT3ijRy3wAbErXAt4k1wnXIEbua4Da5XDsMtiEfgVtiIeBu0 ouR22Iz4K/gl4h1wo3II7oQtWPtr2Ir4G7gJ5XfBzYi/hW2Id8MtiL9DPAS/ h9uQvwfxEGyH25X34V7EQ3Af/ArxfrgT8Q+I78Mf4TeID3B8EO5CfAjxPXgY 7kZ8BH6H+CjHx+D3iH9CfBceh3sRn0B8B7xwH/JtHNvhjyjZAQ8gPgkPIu6E hxCf4vg0PKz8GzrgEcRd8BjibviT8i94huOz8Djinzn+BZ5A3ANe5W3YC23I PwftyP8VdiA+D08i7oOdylvwAjyF+DeOf4enEV/k+BJ0KG/Cy/AM4iscX4Vn EffDXxAPwB7E12Cv8k84CM8h/gPxDXgd/or8G/A84j9hH0rehL8h4gjK6/A2 /B35fyG+Dv+GFxHfgZcQ34WXlX/Ae/AK4vvwKuIh2I94mOMReA3xA45H4aBy ED6EfyivwUeIB+EYvI78x/AG4nF4E/EEvK0cgJPwL+Q/gX8jfwreQfwU3kXs 5PgZvKfsh885noZDiF/AYcQv4QjiV/CB8ip8zfEMHFVegbPwIfLfwEeI3yK+ gu+IHyOeg+OI5zl+DyeVl+EHjhfgE5QoiC9fQk6P+H8mp5/tldPPBpjTU1Hy /1NOL+I5fWGvnM74H+f0U5jTr0Cs4Jm9K6eXoaQrp5fznM7QBQ7EGp7fe3L6 SczpTsR65FlOZ9jAs3zfnF6DEpbTj/fK6R9jTq9HXMOxK6c3IM9y+sfdOd2D 8mugGZHl9GPdOX0N8tfCWsTreH6/nuMNPMtv5NiT0z/kOf1DntOP9srpR3lO P8pz+gc8px/lOf0DntM/6M7pm5G/nSPL6Ud4Tj/yM+X094M5PZjTgzn9ks/p /zM5PVfL6Z9fUk6fznP6DD85faaW0z/DnD6L5/TZPKfP0XJ6J+b0uTynz9Ny +qfdOb0Ys3MwpwdzejCnX1pOP/iz5vRXf+acDphxgd5tMhrZF2dEv1+3+QkZ fipipO9T8tdfkIIUMIWqsanzUx2MzSD9r1FYSAgGoOgvNn3EmNG3pvSf2gUp SJdGEaGhLDb1fqp9xFiIb82+6dRfrAcpSAGTGWNTvKTYNPnWDMZmkH5migwL wwDUSX6qfcRYqG/NYGwG6Wem6IiIS4zNMN+afR/1/vJwkIIUMMWazRiAej8v 375iLNy3Zt9Hvb9YD1KQAqa46GiMTcnPy7evGDP71uz7qPcX60EKUsCUEBuL yVHy84LjKzajfGv2Taf+Yj1IQQqYBvbrhwFo8BebPvJfjG/NiD6lYGwG6b8m OT4eY9Po5+XbV4xZfGua+5T8fBE0SEEKnBL798fkaPTz8u0rNvv51ozsU/KX h4MUpIBp6MCB7Mf4/Lx8+8p/8b41+/4PMX95OEhBCphGJSayHys1+6n2kf8G +taM7VPyl4eDFKSAacyQIRibYX5evn3FmNW3Zt9HfYRvpSAFKXBKGz4ck2N4 tJ9qH8/6wb41+z7qzf+VUUEKEtL4UaPwcBgR66faR/4b6lszoU8p0rdSkIIU OE1ITsYHt9nPy7ev/DfCt2bfY6i/PBykIAVMUzMyMDlG9fdT7eMcOsa3Zt9H vb88HKQgBUyFEybgAzjGz8u3r28CpfvWHNanFPffWRWkIAEU5ebiA7if7Kfa x7M+27fmqD4lf3k4SEEKmJbMmIEP4Pghfqp9fKE9x7dm30e9vzwcpCAFTJWz Z2NyTBjupzrhpyI/v4Y1rU9J/q+MClKQVKLa76CMAYFxBJ/HRN/ziykJ5Tp9 iVX6/c+ZPpJmim/N6X1KxYHZ+z9FIvud0RAKBpy9iO96E2AWVEKjoqA0saek fNh1/fh3edpzciZfNmlCdlZmVmZGelpqytgxyaOTRo0cMXzY0CG2wYmyddDA AQn94+P6WWJjoqMizRHhYaGmEKNB0utEgRIYnW+bVi57h5V7xWG2GTOSWdnm QIGjl6DcK6NoWl8dr1zO1eS+mnbUrPqRpl3VtHdrErM8CSYlj5bzbbJ3f55N 7iCL55UgvzXPVip7Ozk/i/PiMF4Iw0JiIraQ8+Oq82QvKZfzvdNaqlvzy/Ow vzZTyFTbVGdI8mhoCzEha0LOO83W0EamTSacodPyJ7RRMIShVd7LbXn53gJb HjPBKwzNd1R6584ryc9LSEwsTR7tJVMrbMu9YJvijUjiKjCVD+PVT/VKfBjZ xaYDN8pto/e2bukww/LypNBKW6VjSYlXcJSyMSKTvNNted7p6z6KSx7dQR5Y UOI1Tu0gsKBkF1yurG8rWJ+XV8pGi5pasqm3eoLQmh/nklmxtXWT7N0+r6R3 bSLD0lLsNHl04fySRLTalr9FZtOYX8JngJ2SuLFoJJOxaaoTdtrymaS8RvYa bVNs1a015bhY/Vu9MH9tYnv/y+27lCNweb7cuqDElujNSbCVOvIGtMVA6/y1 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 4j6v4G09vL6e98Lua7vXz6VFcgPvm1lUwa1q4qP1rILM/cjsb+ajdUVHj1Vd 68o8ysqred/Vvdaa6bp5X+rYXXJ1jTyaRyq0SGv6iZ4H+3Ryr7h4ZqjmM1cl zdzTY3pFpJvvyUbuz1othp08Buq0Nl39qxmvRRvTpc2T1Xm0eOvyQRVqst5U aY9XXZpv3do8XFy/mZe61jSZl9by1v4iooqvoBrPbCaspo73pkaF2p8b91/X DlF9z2agzqf33qrkI6/Qck0tX5NqbWfIXKcW112NDzfiCp5fnb166LJHzQK1 WmTI3IMV2uxdfMVquU4D3zdqJNbzlmN+FNeu7piSsXaNtip13BYWlS3aXlQz Rm23FXW81BO3XXu0x2N9Z1ehjbGc99DMvVzZJyqdsArlXX5lUV3RPb8qLed4 NBvVVfJwm9RMoK44s13d6R4ty6j7qEmLsJ68p9bW8fVw4JPSxXdJE7fDgyOP 7hNl6uiV3FsNfH+s7Z5F19is/Wpe7+CeaNTGYLtH9aKHt++yuKv3Bh5BdTzP ddk2Bkp5RlUt7D2Wh/u0yyfqrlGj5cfW9e7fpWn2ZES17NByTVdce7oz/3Le R09GcGk7u8sKtUXftVF11flU8hX0dHundyz4moNL2+ssSmuxbaX2/JZ/4gnW Qo28Eag/kq9YHY+rSr991/8Xc+/pvbJ77dSY6np69azbT2fQ+/na166JvdaI zUSdy4+fVl27rJKfEdjM3TyiLhYJjj6r7tSe1j9+Zrt5jmrQMhWztqX7Sar2 05WRLhZDgZxkXdpJdmqAJ9mZKGe5rAXLLv4s6XviZFL/radzzzG/9JyjWGZx XvRky/4g5Uo4i72fVPc6mYcSTwDjdGUiN3Sdsbqs9N92IW/T2yMsc/rXn8Gl Lfy8HvD5u4//3Zo/PtD28kWsE63iZHGiOFUcL2aJdvEysVDMRml/lNjFXJSl XWTMBdpbyAcQ+FvItEuaVSGTklS2q0hK9wqvvGgL9bmwknsB9xZx8Givv+ga zeRZzKU9Edbxvergf31OOTtzvzIc3vbzMzYC/58ZMUAUBYSwvPxpy6bPLJ07 Qx68onZtQ3XKYLkgT06RF5TOzZen5Bbly/mz81SNn+imct3UgHTTuG5aQLrp XDddLp5dMHVOXv7C3JnF+UXy4OKklJS0lNHslotmBtJTBu8po6snOT09oGbj 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 z66QZ7eJKQMKPLsy8HYM4vcLnl0hz24Th3LF3MO9EFfEAgwKPLtCnp1681Lg 2RXy7NR7lwLPrpBnt4mrsQo8u0Ke3SZ6DQWeXSHPbhO9hgLPrpBnt4mLwAo8 u0Ke3SZuS1Tg2RXy7DZxUVOBZ1fIs9tEn6LAsyuOt/kQ2eDuuXGIK+opyODZ FfLsNtGJKPDsCnl2m7iFU4FnV8iz28QtnAo8u8JJ8sQKlgo8u8I58sSQRoFn V3lS5KlH+wFXeTLkqaf7AVd5EuSJbIBnV3ny44lsgGdXOD2emN6khHskId4+ RmQDPLvCyfHEbacKPLvKkxtP/I7As6s8qfHU7wi4ypMZT/2OgKs8ifHU7wi4 ypMXT/yOwLOrvGnxxLbAVZ6seOL3C55d5UmKJ36/4NlVnpx4Yt+X7mmXOJ2U 2PfBsyucEU90iwo8u8IJ8US3qMCzK5kn04/YFrjC6fDEnAAFnl3hbHhimp9y T07FyfDEvHDlHp6Kc+GJXlK556fiVHiil1TuEao4E57oJZV7iipOhCd6SfX4 IFWcIEPsv+5ZqrhMjUENztzzVHGdGoManblnquIi8gY1PHPPVUWq3WlMZAtc u0Ku3WlMhAtku0KynRnE1TIFtl3hOvIGNbwD3a5wIXmDGt+Bb1e4krxBDfBA uCsk3J3G1MN63dN6MWHU8BCUu9KYMGp8CM5daUwYNcgD6a5wLXmDGuWBdVe4 mLxBDfNAu6s8B7FS4zzw7irPWazUQA/Eu8pzHCs10gPzrvKcyEoN9UC9q7yH slJPdQbC8pzLSg0UTfdMaEwYNVIE+a7ynM5KXFpVIN9VngNaiWurCuS7ynNG KzVIBfmu8DGtBjVKBfmu8EmtBjVMBfmu8GGtBjVOBfmu8HmtBjVQBfmu8JGt BjVSBfmu8KmtBjVUBfmu8MGtBjVWtdyTxzFh1GAV5LvCx7ca1GgV5LvCJ7ga xGV0BfJd4UNcDWqsC/Jd4XNcDWqwC/Jd4aNcDeJKugITr/BprgZxKV2Bllf4 QFeDGmeDl1f4TFeDmLirQMwrfKyrQY3SwcwrXELeoIbptnu+PSaMGKdrwz3j HhNGDNQ1yHltYMKIkboGO68NTBgxVNeg57WBCSPG6hr8vDYwYcRgXYOg1wYm jJhFoMHQawMTRkyV1qDotYEJI+ZKa3D02sCEEZOlNUh6bWDCiNnSGiy9Zpgw 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 74jbb51+NHFuj+datbXDG4SFdjB/f6lbqemfnyz/5vXYmIjz+X/pe23klalf d46Ln1GmVeaoM/GbzoSveri7xMZdWft29ZyScmvviRUZSflPxpf9eOnd8Z8V bPLujfCVCaPWZNde8lHfpxatnlAgcVbI5o/07Ir5FoRYC3asNBp+Uul7Y/He 3iXKr+78xvkbo4p/0iOiiHljevbbE6MDX8zX7ctvjiw79uNLb42o/mB90qKp QaLLmh61ihc1MvIJZygL9Q5jhWKbf/CVJ9Dj8cT/yVD8rwwZvrHPlkLqnNmS 6cRGzkOV89BI+498Dvh5wN/8/B9Dov3pM61V3bJuZp85fWDFjDeORLz/1JTP u4+v1/36mtQ7K1ZOHLDh+JrKowvv3r3oubd6VA756f6dKu9vuJ00bNW1qwsj vty544VujVasGyLCF/dOjx05v/ftpIkzDiSd+nLetwvbFR8W+0nK5Pj5M0tP WtI9/UDTvudPdPqg8d7fTw6rWq+p4Tl/5KXRM4p/16XCgkttCu+ZeDLrSPvZ A/fG7Z09YM7bPZ5vXfxS/UNdu/boGbNgSN1FW15tFvx62VLDvipwfM7ilFKX Wl9J+KP72sSpv9RsZ1pTdjVvVeqdtu9+dLv/wu9PFxzcL+2D4a9XeC1x1uWL PZvt++HC4OCDcZ7po9m7bxZeH7J13YGrN85UurqsV+xVM+qZz70hUYbf284V efNPcxffYHD1WOKyoe33t7kaGl02qOKC91Z8884ffzPyLct5tkpg+nwj/YNx fzmKzE9b+N8Y//4cLDznnfg1NZoYjTMbZkaMb4AmfoPc35M780tJTMh5tn5K anKfoXFpQ+rndIAc/h32ee6EsA2aiUYZkUajxzNR//ECfu/w4cP/6vfGp/75 F6b91ZzQOnZthjW327slu3dISjjjv/viugeHPmv9Yf0VL3cIPs43/jrgQvCD SuWGN1zUf9T6GWMnd7sZtfOVufEvTWzbbkxGyTuvDPk+a1u3vf4pX4cPfPLT mJKLJu3YdG7+vvlD339r8DOhOzp5Om349dXw4z3EgyPVRvWYc3zxg9s3I8ut 7Nj8w5Yn37JCuhRsdeMWm/DUp4Fvdi0RH/BT4XYH5heZPHvrseylBwqUqlZp w8bOk8of7DpeLdr7x/IJV5aZjTZFJZ4Nu9Hs07GrfrrRce38lp/Gb2svj+25 FBQXGDQiqe2jllvmXo56ccKJDwuNu/PCF3XOnX+567Pn+cirlV97u0jddW27 7vqscZcuK77df7Z+9v4rg+aZI1lG4A/OsHnS38/PSN/wPzM45hngfRo7M/0P o+TjG2oNP5Y/wPmenX+Uc5uFr75gACuCzbnz1n2PCrMnDPzTUkYVX8NA5vTb 6/cLD04cMXvrtu5NZ1ept2rz2F1Nthjp41GbImyEMSzz+XHPeiI9qZ4ET6xn oCfME+38ner8SfYMdx41ybXxfZz/18qTlvsvEjxxzqNOnnjn3wxxHiV7kpzH 3FPPIzzm/PBxVf8W+LSRKcn9UmNT+o/89xAzMMPPE/LazJoNyp6YNbtBx6nD Nm9qurVV+l6/cslBFQLOHHlv7SfL/HesGRi1tePY2Cf8ptfbkqXOVX3t7i/R 445U+r3o6gczx/fbUPBWRGbjAdu3vd5vz4CyQcWHv2IMPTdr6ncHP5z75p6u /d5tPKH58qP9fl+456MOQ7tMe+12u6wxn50cFl/p3H57WNHGD6pfubKm2Zjb Tb/2zE0oMWt54fLH1lxn7X4od2ZC2Je/ljt5OmnJzE6TX7reecbrYwoEPgq4 N2Bm6WdPspgiF6Zkzbs2fdKM4CKvLPik6MKY8lf/lf/gpulm4vrM6FM7bs9v nb05tfGCNaV+aHXuoeo/pEW73ftG9PLEXWaPHox8d0SVaVWv/rzPr9SLGd/P z3BipQy/B76vMYhl+F1xnrqUw3y//4jp/Au/WiSogPcN+DtDT+YLRhkMZGHf eo+fw+Pjn+RjRXODAJNJZhlMODOepzCPJQKLLe/ccVy3+VPnNO545MvUtb13 /wUClfrfYs9sqx5+9OUe32dEbKm6cXm55gWiZp7/ZfDDI02yv3pl+azEaeEH eatlrZOCj/Vpc/3DcTvrDG7cMmVds4SIjFrZn9wJV4N+LDts2rSV/vXLnKt7 aljTUQcjrx6PmVGz9s/7E3WFR5EVw7ovuHz0tnlgVMZH1+oNWPVbpWrvtDi7 d37c0SXffH4l/FK5X68v737tk8WHF/7Sb/nM+VNVmx+PPFrvuVvw++ozf249 JuzDdoM6XU55uv7oL5LUvjevLq19pHtK0fSQgx37Jcofyz/V8q1ODZ4dezLh 95fqjdt70C9j5r9SsoLW9r5RutOKa/WOHIl6FN2oV5Wae1Y2nt3xrVrhP/Ve dPk7UXL74Tb1+vTvOvrzEKf//x8uUbsgDQplbmRzdHJlYW0NZW5kb2JqDTYg MCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0ZpcnN0IDQ2L0xlbmd0aCAz OTEvTiA3L1R5cGUvT2JqU3RtPj5zdHJlYW0NCmjelJFfS9xAFMW/yoW+KO16 Z+7kL4iQbNw2UC240i0seRjNNA5kk5CMrfvtvZOtKMKCfUom55655+QnCQRI BSGBDICSGGQISiiQEQQhSzE/EpAJRGkE5+f4Y6zNaLvmpKxN56zbn+KNaezk xv1JVvd35hTXj8PQmh3LIC4u2JNN9/6QqgizP83G1u4BVES41MM3Y5sHBzEl WJjD2IKkwFWrmwkU4arvXJ73T9uFTGjWQAohvKOaxZVtDYHiGjfz+VrvDGb5 sri8/JyNVrefSFzrcez/zvLmsDAQAkunW3ufdU1rQOB3o2vuxf3xSj8dQkre iWtndj85L97uBzPf4ZOOdnD9iL/+FaCQq26DLXEsGcttQqKquHquJ+MtRxIt y2K9n3hB2f3uQdLcgj/e9l/L4koP+PKXsdjMvd/t9+i8Zf1453w6tvoBn5Re 8+LGw+U5jsh4+aU6RiX9XyokguNUwg9Q+ZL3bX1A8RZQ/A7QIj2L34AhoV7A pB8AQ7GqngUYAP+j4dsNCmVuZHN0cmVhbQ1lbmRvYmoNNyAwIG9iag08PC9G aWx0ZXIvRmxhdGVEZWNvZGUvRmlyc3QgMTIvTGVuZ3RoIDE5OC9OIDIvVHlw ZS9PYmpTdG0+PnN0cmVhbQ0KaN6Ej80KwjAQhF8l4FFlG/GnghRarSiIB614 jk3QhbqRZEV8e5OC9uhlYZeZ+WblXCRilAgpU7FYQKG8WVtiyIvlqiz7uUPV 9EbJXjlnX7AyvjakFXEUeSGnwX2Akmqrka6w1YYY+T3cwPF54ffDQBVGApU9 EQaREePWEa8QM7LsL3VQ2EZvWTVYd6QzUk4ef/saneflTTkxSdvgWNXhg60T ctYyd6pT7NU98KddS/c01bdu6w8EzbfwYhrNWfYRYACpnGF+DQplbmRzdHJl YW0NZW5kb2JqDTggMCBvYmoNPDwvTGVuZ3RoIDMxNjEvU3VidHlwZS9YTUwv VHlwZS9NZXRhZGF0YT4+c3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIg aWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHht bG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29y ZSA1LjQtYzAwNSA3OC4xNDczMjYsIDIwMTIvMDgvMjMtMTM6MDM6MDMgICAg ICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5v cmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVz Y3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0i aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1s bnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIgogICAgICAg ICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4w L21tLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9k Yy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIw MTQtMDctMDdUMDc6MDU6Mjc8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8 eG1wOkNyZWF0b3JUb29sPmNvbnZlcnRvbmxpbmVmcmVlLmNvbTwveG1wOkNy ZWF0b3JUb29sPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNC0wNy0w N1QwODowNTo1NSswMTowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4 bXA6TWV0YWRhdGFEYXRlPjIwMTQtMDctMDdUMDg6MDU6NTUrMDE6MDA8L3ht cDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDxwZGY6UHJvZHVjZXI+Y29udmVy dG9ubGluZWZyZWUuY29tPC9wZGY6UHJvZHVjZXI+CiAgICAgICAgIDx4bXBN TTpEb2N1bWVudElEPnV1aWQ6MTRlMDJkOGQtYWFlYi00YjY1LTgwMjUtYmJj NjM3NWI4ZjNiPC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06 SW5zdGFuY2VJRD51dWlkOmE5ZDdlNDcxLTM3NmEtNGJhZi1iMDlkLTZmMTM2 NjkxZjU5YjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPGRjOmZvcm1h dD5hcHBsaWNhdGlvbi9wZGY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVz Y3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAg 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 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pg0KZW5kc3RyZWFt DWVuZG9iag05IDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9GaXJzdCA1 L0xlbmd0aCA1NC9OIDEvVHlwZS9PYmpTdG0+PnN0cmVhbQ0KaN4yMlQwULCx 0XfOL80rUTDS985MKY42MgUKBimApIJi9UMqC1L1AxLTU4vt7AACDAAkNQzw DQplbmRzdHJlYW0NZW5kb2JqDTEwIDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURl Y29kZS9GaXJzdCA1L0xlbmd0aCAxMDQvTiAxL1R5cGUvT2JqU3RtPj5zdHJl YW0NCmjeMjJSMFCwsdF3LkpNLMnMz3NJLEnVcLEyMjA0MTAHQ1Mj8yhNiHx+ kUZyfl5ZalFJfl5OZl5qWlFqql5yfq6mvm9+CrpOCwNTU1NtA0N1AwN1Tf2A ovyU0uRUXAbY2QEEGAALcip+DQplbmRzdHJlYW0NZW5kb2JqDTExIDAgb2Jq DTw8L0RlY29kZVBhcm1zPDwvQ29sdW1ucyA1L1ByZWRpY3RvciAxMj4+L0Zp bHRlci9GbGF0ZURlY29kZS9JRFs8NDRGNEQxNzA4RDQyMUY0NzkwMDIzRUZB MEU5MUFEMjE+PDAyNDdFMUE1RjI2NTdBNDNBMTM5MUU2RDlFMjY0NjZFPl0v SW5mbyAyMiAwIFIvTGVuZ3RoIDc2L1Jvb3QgMjQgMCBSL1NpemUgMjMvVHlw ZS9YUmVmL1dbMSAzIDFdPj5zdHJlYW0NCmjeYmIAASZGppNfGZiADBsQKRgB JBl9DUBsRjUQ6X8ALPsULKICInmXgUiGSWCRY0AT/pYlgEUYGAmTjL8QbKb/ YBEGgAADAG97CzsNCmVuZHN0cmVhbQ1lbmRvYmoNc3RhcnR4cmVmDQoxMTYN CiUlRU9GDQo= ------=_NextPart_000_00A9_01C2A9A6.210A6442 Content-Type: application/octet-stream; name="Google PROMO.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Google PROMO.pdf" JVBERi0xLjUNJeLjz9MNCjIzIDAgb2JqDTw8L0xpbmVhcml6ZWQgMS9MIDIz MjQzMy9PIDI1L0UgMTgyNzczL04gMi9UIDIzMjEwMS9IIFsgNDk2IDE5OV0+ Pg1lbmRvYmoNICAgICAgICAgICAgICAgDQo0MCAwIG9iag08PC9EZWNvZGVQ YXJtczw8L0NvbHVtbnMgNS9QcmVkaWN0b3IgMTI+Pi9GaWx0ZXIvRmxhdGVE ZWNvZGUvSURbPDQ0RjREMTcwOEQ0MjFGNDc5MDAyM0VGQTBFOTFBRDIxPjww MjQ3RTFBNUYyNjU3QTQzQTEzOTFFNkQ5RTI2NDY2RT5dL0luZGV4WzIzIDMz XS9JbmZvIDIyIDAgUi9MZW5ndGggOTAvUHJldiAyMzIxMDIvUm9vdCAyNCAw IFIvU2l6ZSA1Ni9UeXBlL1hSZWYvV1sxIDMgMV0+PnN0cmVhbQ0KaN5iYmRg EGBgYmBgWg4iGb3AZCOIZOYHkSzMYJIHTMqByTKwbAqYPRXM5gOTd4Ako9FB ELvDHsSumg5iByQDyX8RQBJo1zKQCNAGqpH/GRivfQYIMAD+kg01DQplbmRz dHJlYW0NZW5kb2JqDXN0YXJ0eHJlZg0KMA0KJSVFT0YNCiAgICAgICAgICAN CjU1IDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9JIDExOC9MZW5ndGgg MTE4L1MgNTg+PnN0cmVhbQ0KaN5iYGBgY2BgsmJgYWDY2M8gxIAAQgzMQFEW Bo4JrZEODAxTGBjkVx/g6GDuaADzgYCdgbm6GUjzA7EASIBRhUGQQa+h6kD0 A70G8QucHiwNTIUMXxny1IxXJG4+PdPij2MD1HQuBubO+yAtQHwMIMAAPpkY rQ0KZW5kc3RyZWFtDWVuZG9iag0yNCAwIG9iag08PC9MYW5nKGVuLVVTKS9N ZXRhZGF0YSA4IDAgUi9QYWdlcyAyMSAwIFIvVHlwZS9DYXRhbG9nPj4NZW5k b2JqDTI1IDAgb2JqDTw8L0NvbnRlbnRzWzI3IDAgUiAyOCAwIFIgMjkgMCBS IDMwIDAgUiAzMSAwIFIgMzIgMCBSIDMzIDAgUiAzNCAwIFJdL0Nyb3BCb3hb MCAwIDYxMiA3OTJdL0dyb3VwPDwvQ1MvRGV2aWNlUkdCL1MvVHJhbnNwYXJl bmN5L1R5cGUvR3JvdXA+Pi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vUGFyZW50 IDIxIDAgUi9SZXNvdXJjZXM8PC9FeHRHU3RhdGU8PC9HUzQgNDEgMCBSL0dT OCA0MiAwIFI+Pi9Gb250PDwvRjEgNDUgMCBSL0YyIDQ4IDAgUi9GMyA1MSAw IFIvRjQgNTQgMCBSPj4vUHJvY1NldFsvUERGL1RleHQvSW1hZ2VCL0ltYWdl Qy9JbWFnZUldL1hPYmplY3Q8PC9JbWFnZTE1IDM5IDAgUj4+Pj4vUm90YXRl IDAvVGFicy9TL1R5cGUvUGFnZT4+DWVuZG9iag0yNiAwIG9iag08PC9GaWx0 ZXIvRmxhdGVEZWNvZGUvRmlyc3QgMTAxL0xlbmd0aCA2ODYvTiAxNC9UeXBl L09ialN0bT4+c3RyZWFtDQpo3qxV207bQBD9lZH62MLOXm1LKFISkrYS8ACo VEI8LMEKloyDHNPSv+/MOk6cEIKTVquJd+eycz0bIwHBKDD0qyEyYAyohM6W PhEYRwyiCFxMzBikRAsmAamcAosgLcZgJcgoScAqkInTYDUohfSlu5RGODkR g3NxMSuffC6u/zynYvRafb2qfJWKiQc8tkh2vd4HejJo9OeTtKggsij6v6Y3 2UP1SI6lGPrnb2k2faxFp2mtdqToMM79dA5aifGsqAaD2evtkaXwWEaJUOpk cReE4yxPFWhLRbkMjAv/lIr+YHg6Gn0e+jy7L7PAv6ldGUTxvSL+pF9M8xRQ nPvXOiYZGS2uqvTpB4VXZ8OGHFiZPVezUvxcxEth9Hq3Srk7LoCfp6y36XRU TGYPWTEVN1nRL+bZ8jzOynk1fPRlk+DKA7eUEznzK42Q0FiKq5f7imO6Ll/S ENwyQhHin/MkkHG75ol2q5prp9o1V3Gr5nJrzSWNEMtAIiJbrNXcba15v8x8 /knhhS/L2e/dpT9LPVeEZrLVBXK66AIF36ULMcXRLEuDj6AiHYg5LA9n/hIZ 6zpRo1/fy5xYq3B/IEJcIN6jBKfjcK4tmMsWLtaBG6QMyYVWY9Xso8gsY2+v ZTwS1+Jq9twfJpbzl/29yYNyZ/nSjvbsN9y5oP+92M/q5NBsw8nGoBwGF7cO F+mSBV5UF7xEB+MF4214UdIE2Xa8RB3w8qUGyC7YHCXH0RI5SrWQQ+73Rc46 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 KWjc90nGYV0jHzSq/LNky1HsedcdcWv/Jy6UtN6Cjf+4YzjXdK0un4onc3Su WZfMQ3Ub9dA0k8g9axJ4vRX1LrqqbpixYS3g6Aa1nJ2SDASYMTTQrzzIXgZI nt1alGZ3t5GE9QrKow8whNRbWkdao0XqNF7KjeWPELBOjIuRNyFYTBzb1Jp4 h5g7trrUa43w3csZz/defBk4u6yKd3prUCBdl3IJolbWBLmt6oAQali8+m16 gAavFCcbzpiB4BKb5wkbI8JecOzR5oFyPVDBRWv1DEN2jHP/i30z0kgWcSGa eIGidPSeINaZfgaZCTyOfMDA+OLAjTS1qyV+3Z9qN45rcjr7QcVNrjK3za0X 1qNDV+sQgXMuQGTX+5nWrXrIcfMMCHhhM4XefoqJJTrtnuLAPLVQMSCKnLDH l85O9thSzj3ycMXVed8Y7nmEZD840qCIu2n1Q+F8h713zTsHEdQF1xpfrTjc C9w3fK3x8MTo87Ihzz8BBgANzZB4DQplbmRzdHJlYW0NZW5kb2JqDTI5IDAg b2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggOTg0Pj5zdHJlYW0N CkiJXFWxjlw3DOwX2H94ZZKClkRSotoAtgG32S5IZcBO48r/D3hmdD7vGQfc QnoSOZwZUjePbqOuaN1mXO5pvV++02JdPso2NmubX5/vt//vty9/3W+e3QpX +rAR1zds+La9rxhhPXSrYeXTml/ep40rYtkejOF9mXNjW0t8LYu4Ipt15Ovb cmIFSFuH3W04Dk99RpDWserm8/LZbJ40Q+gIS5HT8BWHNkMFf9wH9mKGuf+M i2pjpjnieijSnBZdFCzknMti6jDSTmxkWuJwAiOzIAJWq1tg5d1W6fBqxB4O cChvbgKPgTugYhZrDvCDPEIcBhQAw6/RlMbLnCRO20tpXlCgTufnkEAsssT4 QhpAawjUodqJ69Kjo15+HbZxszuRvRXvSdRy5mXCJU3XsEoR2HFrDnJOBpFW MQBuJasTRZvKB+4EEkIukoLiF+tiRNB5Dg7RM0UBS66tg0XitwVWoHQcehCH Za1la6mMxOcKqkwZOuDtRiQ8DDskNuBVOndCfq7AOFcu9DVtzp+HJxCiZjDj uURJdZUKMhl5FWvR4TxmWbLSghfphqU8DDlk0H30r6SYNCEqc4ANriATV08U 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 UC71RK6rZ3RSraQaDRAFyguGAfpeUDnl4PS0REukkwiNrD4owbraEmdtYL/W XIzFGba19DwbhKoXuNI2ND2ScxytNrrRrtL4KDgQrMEoabsw9FPXCIdjzsee b1mTztU8aXNiJqcS6Oev/PA0aDioTTDbofzAC1QdjNIlz6eExecBcy2m7NgD 51asbcnif+yx3p6nYKtoRPlkoaJgyHKsKfipzzb3sVdNwfJH1VFhneUuUVyr XAqFXf3GG10PmI5Lgs8nSoWBHToWj/X7gdYNb214W6a7Qi5Gkoi8SCVXttyy MI6V77CXjmZO9qq+96onbmuMDOM6gx8ysinxJYIlesqjV9cE4ag3XUxGQoM5 7y6VPohvlTrtdLZzTvcvrs2dvehuPA621hdqoyGVc9yeRKN+l0mtwheG3MUz 7Eyxa0zbOs/pZo9oFgaeCpOhZrf0jXza8n/YIFXJosV+Rx5523ibHQtjuNgg c8lfbnW9RunNwd4S0/XmM9Wc9aayzlEddd0B7Qztflvl5fS6UVOHee0k7DUN LgS6H1T6ve5ypfnylJNxxZGrfSU8X85isZJ8l3C9e2NmJrftK6Z8S27rtoM1 +Ipi940rnM7O7uXy1lHuUbyhtR+qhdP6fgybqniAhT8CDACzPdbkDQplbmRz dHJlYW0NZW5kb2JqDTMyIDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9M ZW5ndGggODQ3Pj5zdHJlYW0NCkiJjFXBbtswDL0H6D/waAGNYNmOE2OndWg7 7NAVaG7tDo5jN0LduLOVZtnv7EdHUpITdzU6FFUkmSKfHh+pyX0wFT9g+e1s crk8m1zgv4IQ/xQslFykCSRRIrMMls9nk/vgWcRBLqZxoGuRBHAppklQl4Wh rbbZ0lIXMOJQJQs5H/r7LhbBlg7XGv3xrKQB7sjVXqjIrnl4oaEzeIQhPPFm 92kkWpQoGc2G4caQRUkiQzW0PQaHNWJreLbCWdnj5dmrtdlrsjcbMZ0FcGjw 645JgZdWj0SNZ5lcxMOov9nbOdCIXlLrBb0T3zUUDIN5MhgwxKkzsSgMLt8g hZwgFUYj0DQAzYcHCEfgzSMZRph/paTy8DgFzL6hdLv5Izr28XEk2HDtZ421 IM5KwHVub5AGaz6hTYcJhVvKd9us6YdhFXQ700k2+kzbgHYXYhqhh9RS8ARf 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 LYsyX+gWIruyqrSTsgIOLJF783voZfT3aPq/52tpJtceNE9cVsCcGOl9mF8z Mwh0Mx14rjl2f5wNOBhfxnbkVSahZot1+sVhSM4RiUHQDdV2895AgaqKuG8A BFwg+Vd7h2GWwBQ5M3QOgDBkKrV1W0wbJtAaWpybvNTHQ5ymcdGnsck3MIM3 zBUyS5nkl8HrcpBJJuMLB3AasvhV3UffG4QsNB8gbZxAY8MfiBLupRRGme9N r0gFLuGGUuhW4o2V6EfUV2QOjoff1rNlzhVcQeSX75H/AgwAa+CG2Q0KZW5k c3RyZWFtDWVuZG9iag0zNSAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUv TGVuZ3RoIDc4NDQyL0xlbmd0aDEgMTczNDcyPj5zdHJlYW0NCnic7H0HfFRV 2v45904vmZkkkzZJ5oZJQiCkkFASQBhIo7cwmIBCelFKTKEJiqKgARTXrqjo 2rFMBtTYG/ZeVnftrK6rq9hWXUUg/+fed04IrPrf/b7dz/X75pw893nOe8o9 5z1lDj8zkXHGmBsPHZtdWjmlYvu5W8qZ1L2HsaS3yiaVzssb6riZsR3zGOOP l02aXnJZS7mdsSvTGZPyK0rLyv/86NeQG19lTP6sYvasymlDx0iMXZPM+Pbu isrApHPGTH2ESeNvZGzysFmVeQXfv/U7F9r6Pd5aU7+0tm1MSC1fYEIje+pX dCrBy/e8zFjtd4zpk5vampd+++0MG2MjnmXMnNRc29HGkpkP749FfWfzktVN pVFd7zPWjLR1VEtjbcPnLulqtH8c8ke1wGC/1SYjfQHS6S1LO1eN/tz4Bt5V xFjeiyc2ti/jg/hGxrZtR37CkuX1tUm3JDzMWPt0xlJnLq1d1ZZWmP4c6vci X1lWu7Qx5ZaTTkP53YzZx7ct7+js8zDUv+JrNb+tvbHtxNulQ4wd8xFe52Sq b/VvDWkbnJuy2DHuG5aIYSLc+8naZ1V+3r5o3w/7D242f2oahaSZSYwC6hnY Icb3WHb8sH//DvOnWksDgukR1eLIZLOYno2DlpiT5bFGxlzbtPdyJuuy+Tbk mvSX6gvRZCqx/CLbKDETkxx6SZJ0sqR7j0l9fnZLH72XsRmVisL8jKUUUx+M V0qZCuNXqXnyXfoodaRoPepwb/gL7P98MLzObvml+/C/Jega2dW/dB/+mWAw /Hv6K+/7dfnh3xF0I1jNL92HSPjvB+lpdukv3YdfQ5D+xCb/V+rxb9mSf3Vf IiESIiESIuG/HqTLueUn82rYvv/JvvxagjySbf6l+xAJkRAJkRAJv66gW8rO +aX7EAmREAmREAmREAmREAmREAmREAn/e0Lk35mREAmREAmREAmREAmREAmR 8CsOchjJ4W8brEEKSmpiOrYI6WjmhEX9joKdDWIzWANrZztSivv6tNJ2phxh 433fMNb3N3YnT+qr/2RTuM2oI98oT5UvZgb+qZb68uhvOWjfa6DvREjs5wMf 0N6/I5T+M4V50s/kbfnvduV/OMj/0tb+rSvJX9GweNHxxy1cUF0VmFc5d87s WTNnTJ82dcrkivKy0pJJE/0Txh8zbuyY4qLRo0bm5eYMy8rMSPcN8ibEupwO u9ViNhkNep0scTaszFdeowQza4K6TN/kyTlq2lcLQ+0AQ01Qgan8yDJBpUYr phxZ0o+STUeV9FNJf39J7lTGsXE5w5QynxJ8rtSn9PIFc6qgt5b6qpXgPk3P 0LQuU0vYkUhLQw2lLKGlVAnyGqUsWL6ipbusphTt9VgtJb6SRkvOMNZjsUJa oYJZvrYenjWea0LKKhvTIzGTXX1tUM4oq20Izp5TVVbqSUur1mysRGsraCgJ GrW2lFa1z2yz0jPsoe4tvU5WV5Nta/A11B5XFZRrUalbLuvu3hR0ZQeH+EqD Q9Z8kIAhNwaH+UrLgtk+NDZtbv8LeFCf4fQp3d8wdN6379MjLbVhiyHD+Q1T pTrEfjchX2iGvqGHGF9amtqXzb1+VodEcP2cKkorrM4TYv687OqgVKPmPCRy 3AE1Z73I6a9e40tTp6qsJvyzoiUhuL5OyRkG72s/GfhBvhKUM2vq6ltUrm3s 9pWWkt/mVQX9pRD+2vBYy3ry81C+tgaDaFXdMKcqmOdrC8b6JlEBGBR1Dlor q7Qq4WrB2JIgq6kP1wrmlZWq/VLKumtKqYNqW745VXezwr73ekYonl2FbASr VvsRjCvBpGSWdVc1NAW9NZ4GrM8mpcqTFvRXw33VvqrGanWWfM7gkPfwujTt jVotjO2o0qKwOnJjhkmpkjxytTpbMCjlePgmjUOGE9OlJdUZnTROqeIeJorh LeESqjqiHSTkjJLJapasVi2Z7EmrTqPwM13yhPukzwiaBrTlhKG/T/Sen+wa lVY7NEQpaywd0MEjGtWHOxhu7cf7Kam+CL8YNUzqdE4WWXIGdi5sEprRTOos JihBNlup8jX6qn1YQ/7ZVerYVF9r8zut0jdtzoIqbbbDq2TeESnKL6JUkKUh WySkEqzB8myPmFYtXaGl+5OTj8qeIrKVbpNvWmW32rgv3CBTsIMwaEPmlNrN RdEjsDXLcbr5ymt9ilMp767t7Vtf193j93e3ldW0jFHb8E1p6PZVVo3zaH2d W7XOs0Z9VTSbxqfNm5QzDGfPpB4fP2tOj5+fVbmg6m4nY8pZ86pCEpdKaiZV 96Qjr+puhTG/ZpVUq2pUE4qaUFuai4RJK++528/Yei1Xpxm0dH0vZ5rNJGyc 1fdKZHMKmwSbjmx+zaYGTFJCC1yM47ZMaVCnZ211S3dNtbq5WBymEj88yH3j WVDyje/hksEWtPgaJwWtvkmqfYJqn0B2g2o3YmHwOA7nqGdSd40P5xQWVBXz cFqKstqk0tvXN68q7TnPvuo0LLXjgAVVQXM2zn59xlSUq1BRA3NFcH19rdoP FqhS6xozptRXY9mKBlFkStCMFszhFlCiXKujLkdUqsfcYAK1+uuRCK6vDlZn qy+taq3WlrMzyCb7xmDaqU19pvqivOruaF+BtjexFSwZm1Qyo2+ssoosHiTx smpyktGGntf7kFVfo8DbOlZfiaVOZ6nFQ5ZGHIm6zEYNFk84k6nDkjOsdkvQ nIsG8aNqa666JfUZxupq6ryW2hQugHc7g1b0KHOAK8MV4B1kTVH7gp9N6Kpa 9GG1mTm9bK5vFU4WtdNaS0ZkB+0ZU2px+FN9Kyy+IlHZpJ4R1nAbe8hqVEdu g9/ljHm9fTf4VqcNCDnDfOqHg7owmeduLGxW3X20IbgwO2eY6WirXTN3d5vs P16B/GWy97NqVMrwqcFYyCwrvdIZu80JfCrEBiFOF+I0IdYLcaoQpwixToi1 QpwsxBohVguxSoiVQqwQokuITiE6hDhJiDYhlguxTIilQiwR4kQhThCiVYgW IZqFaBKiUYgGIeqFqBOiVogaIRYLsUiI44U4ToiFQiwQolqIKiGOFWK+EAEh 5glRKcRcIeYIMVuIWULMFGKGENOFmCbEVCGmCDFZiAohyoUoE6JUiBIhJgkx UQi/EBOEGC/EMUKME2KsEGOEKBaiSIjRQowSYqQQI4QoFKJAiOFC5AuRJ0Su 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 gEnARMAPTADGA8cA44CxwBigGCgCRgOjgJHACKAQKACGA/lAHpAL5ADDgGxg KDAEyAIGA5lABpAO+IBBQBqgAF4gFUgBkgEPkAQkAglAPBAHuIFYIAaIBlyA E3AAUYAdsAFWwAKYARNgBAyAHtBN7MNTBiSAA4w1cNj4IeAgcAD4AdgPfA98 B/wN+Bb4Bvga+CvwFfAl8AXwOfAZsA/4FPgE+AvwMfAR8GfgQ+BPwAfA+8Af gb3Ae8C7wDvA28BbwJvAG8AfgN8DrwOvAb8DXgVeAV4GXgJeBF4AngeeA54F ngGeBp4CngSeAB4HHgP2AI8CjwAPAw8BDwIPAPcD9wH3AvcAdwO9wF3AncAd wG5gFxACeoAgcDtwG3ArcAuwE7gZuAm4EbgBuB64DrgW+C1wDXA1sAO4CrgS uALYDlwOXAZcClwCXAxcBFwIXACcD/wGOA/YBpwLnANsBbYAm4Fu4GzgLGAT sBE4kzVMXM+x/zn2P8f+59j/HPufY/9z7H+O/c+x/zn2P8f+59j/HPufY/9z 7H+O/c+x/zn2P28HcAZwnAEcZwDHGcBxBnCcARxnAMcZwHEGcJwBHGcAxxnA cQZwnAEcZwDHGcBxBnCcARxnAMcZwHEGcJwBHGcAxxnAcQZwnAEcZwDHGcBx BnCcARxnAMcZwLH/OfY/x/7n2Psce59j73PsfY69z7H3OfY+x97n2Psce/+X Pod/5aH6l+7ArzwkLF7EmPFKxg6df8RvUc9mJ7AOth5xI9vKzmcPsjdZHdsA dSnbwa5nN7Ege5g9xV7/V/5K+KHV+qXMJt/FDCyGsb79ffsOXQ/06qMGWM5H KkanHLb0Ofs+O8r22aHz+5yHeg3RzKLVtUsvw/pXfrBvPz5fke4bpaalTdAO rcaXxisP3X7ohqN8MIctYAvZcex4VsNqMf4G1sJa4ZkT2RK2lC3TUsuQ14xn E1KLUQpniaYPl1rO2oB21sm62ArENuiOcErNO0lLd7GViKvYaraGnczWsnXh 50rNshY5a7T0KuAUdipm5jR2uqYEk2UDO4OdiVnbxM5iZ/9s6ux+1c02sy2Y 53PYuT+ptx6R2oZ4HvsN1sMF7EJ2EbsE6+Jytv0o68Wa/TJ2JbsKa0bNuxCW qzSl5t7HHmd3sNvY7exOzZf18Bp5RPilSfNhG3ywFiPcMKDH5L+V/d46BWNX x9YdHukq2E8fUGNF2I9qyQ0oSa3QPKitrDvKE9swBtKHR0SpC7XxH7YO9MrP WYU/tg/wzOVaSlVHW39KX8SuwA68Gk/Vq6q6BprUVZoeaL+yv+wOLf1bdi27 DnNxg6YEk+V66BvYjdjbN7Od7BbEw3qgIr6N3arNXJD1sBDbxXZjJu9kd7Fe zf5zeT9m3xW2h/otd7N72L1YIQ+wh3DSPIIoLPfD9mDYukezUfoR9ijSailK Pc6ewAn1NHuGPcteYI8h9bz2fBKpF9nL7BX2OrdDvcQ+xvMge1H/AYtiExnT 3wM/b2eLEPU4lTrkl3GKyMzIitkMNpMtvI/Z8XEfx8bwO+5wl5aacowP4KNc YgouAybGeYnfoZPsdyUlTfDdNdKwVXZN6eU5uycYt+KaO+HgOwefzzv4zr7o 4rx9PO/tve/sdX75vKs4r3Dvq3uH53NXmktDbJRkNMYafINypZGDM0cVFhaM l0aOyPQNipI024hRo8fLhQWpkhwrLOMlNc3llw8skGcdNEin+CbML9SnJjli 7Qa9lJwQnTMuw1m5MGNcbopRNhpkvcmYNXrSoGlLyga9YXSluONSok2m6JQ4 d4rLePBNfdT+r/RRP5TolvxwgWwYe9yEdPkSi0nSGQy9qQmJQ8emTZnviHHq rDFOV5zJGO2yZZUed3CjO1ltI9ntprYOzmCc3dK335AND45jt/idNePbxkv2 /Pz4vDxLbkJCUm/fR7ucfAb4i12OMNs1/naXTeOPdllVllz+1PThNpslAcUt Tof6QEGLBaUsCShiuQf/BmF9D/kTkWDpo+ZYE+LteQnDcw3erDneQHRAH2AT EKLji12FE3jeq9l7tY/AAlehs1+5io/JKyx0FQ7PPz5DONbl41GyqgZzn6vf OEKdk1QpnhdyTIQq3YZsU6w3MT4txiQdKpSt7pRYd2qsVTpUwU2xSmKCEmMc 5mlR8tMTzHylnm+0JnkzE5c6PDG2JJPNqNcbbSZd8w8XGC1GWWe0GOD4S/vt 1w9NtyVleQ4cK1+fOjTRao5JcWPBXc2YfACfe9HMywbdx2Lwj0TGkqRYv9mc 8H1Ug+d7fTObsG8C1hktLrXzvkGZWufT0GPjiFwYXOrakg9M6X5y6w+x6emx 3NX98IbSYFZg05LztjVtrB4mebc8u3FiSpp8bVpK2RkPnjJ3S/OYA58Nb7xY /bbd1X379Y3oQxGr2D3MnTM4oZf3+c2D7HmWnJxBIyxqysUGjWzIibPKKZkN KS3OFn2LmAh1GvYWRMPp0cXFzr0FruLi4fkDHW8w/H8dH+fWNxpjlPhEJdoo Hdqs82VhEZrlQ5dKxmglMdEbbcxMWOIdlgavD9HxAlti2pDkpsT0eKPVqNPh Ia88cIbNJhvMBnntgbP7rU8MUlSPHxwhPZk6NMmqDFL93bdf3o6xFjI/O+Zu ZpHcu4c7s10j1F8QyBzr6oXnHcnZrg/Hjo0v/lZpiA+PVNvrxZiEglf3Ypyv 7T08xsGDc2XfkYNTJ8atbv9UOT4+Lk4eMEfbTe6MZE+a2yLPd6TnTxzRrK2r tFgTJi2p5syF+Skjpw/35GSkOastxk/d+dP8F54zfmZBYowRg5PNUdavhpbm JR2a1T/IZ9JSMsubJ46YX1bgtKbl+7M+TkqU3vGNy048dFtinl/9tmVN3z55 O+5lmTj9Nvu9E8Zyq6dY3XnF6s4rdjrVB3ZjsboHi+/Fv9IZy+t7T93EeeHN nRfe3BrbwnarypLFb4lJK7cWD/boooaq/5kjYeqIXq7bFTVDPx2uw9qlVUIb 9NXwPi0euD1H0hqh8y8u3hU+B91ypnZaumNTJdV5o+XtRldyrHpAVVy6sH7L sVkFdectnrXBb4z1JmDtmK8vWVc6oWp0onvE/Ilpx/jLBydi98FNNtPKGfNn bOip67z3jIqyEslqtKub0m48WFZ57Li6tf7S0xuPiR5aMlzdDZfihnmD/DRW SP3utpE80xE+xxzhIYO/2O1w8umO8EHn6OXf+aOZPwZnlt+FhwIjS8K+yfCb s6dmOtzKFLfqCiwcdSPvwfg1L6g+4GEfqOM0DlhEYQ+4tU8Ig3SDZDCbTPEp 6e7E/JFjfKZoOowM0cnxcSlOY8bEMcUp9rT0FJtO5nJdXKrLbDabYnOnjz4Y NFlNOh0e8hkmqxlLyGraMKp0sEM2WSzmKI+6PiZLj0lrDC6WzkaygpA5ceS9 +CcyYzn8bL/T5V2aaJazgnEnFVxu65Q7wjNarM0oNn6xeiYZ/vFZHDVaWpOY 5opzGPJqx01aWJykTFw8YfjcLKMjKTY2yWk4K6siK32E12FLLchMn5IrfWCz 67CvJ+YNz5vVOq68Y1Z2ZibP1Zt0sqwz6Q9V5uYqI0p86eUj07JHqrO3RHqG v6T3sByWuWtQEsPcHOu3JVn2DD5pkMOd2ubuODwPX+6JLg6fqD8yAaPUY4nc r+MvSTqj3mR1uF2OZMUXp3dSZxN9vviEoZm+mKi0OKOO6152JUQZ9Qa9NSEr 5dCN6LZO7buUYEOo8GbFm3QmQ1Q8k7il71v+ln4Rc7MhLOoOfYZnhrMcHXv7 +cP9GSlnhv0Xc/T14H6j+vGcHG10cZPbl+zxuU1R5sQsr3dIAj41hni9WYlm 3mWyqfNuM8n32KJteoPNZfuhOC3bY7V6stPSchKt1sQczP2+vn38dt1irSfK fSxOamAKc0vFd1qdQ9GvVoZOOfcM/PRRjzx5xE/17UKjw+OO8zgN3GWISU/2 DMLBZY5LT0nOjDeb4zOTU9LjzHyk+gEp4yH12ZwWvd7qsB1QUgYnWK0Jg1NS shItlsQs9G2z3CRdpu8SXvJkVjgr4KXnCgZ6Kfxi41GWOLe0weCMj45OcBji LbFp8ThjzfzQpiNs+ZnyRuEm/oJQh4YfaXM6+/rYOdIL8rv6jySD6SGmrrNw mo1lRT05ieqvCPjyLSox38he6cw7cuOtcmqWqlI7XB36joEfl/sKnPsGjsEl hy8nsi/m7z4jYwpjxOVEftfoTHTHeKKMH3OzI87hjIsy87c4NzoTYHUYU2PK 45VEp+Ep+RVjtDsxeqolxmaW3tfjCMQhqJf8B++TcY2UdQYd9KP99teS3GjC dfAryR6d5DDobS679q/nq/8zIp/5q4jb/j1RMvwTcf0vHeX4/wNx239g/Pan o25KJEbi/5J4zhHxrf+cqB8UiZEYiT8Rh0ZiJEZiJEZiJEbiPxQvj8RIjMRI jMRIjMRIjMRIjMRI/PVF7b8nq3/rOxZPzgxacgtP6vtA/UUTaRATf5u8QXvK WukoLaVqiUXJOib+qn26HB3WugFl9CxBHhXWhgF2I1shzwxrExuq/a1xVZuZ Iu8Ja4u0o7+8lc2XPwhrGxuqGxPWdukSnSgTxZYYDvT/hfsCY0tYc2Y0XhbW EjOa/iL+lj2LNom/iK8bUEbPbGY5rA0D7EY21uwIaxNzG5eHtZk5zVPD2sJn 95e3smzzgrC2Mbf5zLC28+nmy/r/xvooy4fq/wVAZw77mTT5mTT5mTT5mbRu QBnyM2nDADv5mTT5mTT5mTT5mTT5mTT5mTT5mTT5+SamsAKWz4azQu2vyau/ Zd7OlrMOoIl1wlai/XY+/Y5+LSytUMtYLnImsiWICpsLWzNrQV6HlmoEN6L0 CjwbULIE9ZagTB1srSjRqpWrBZairQat7DKkOmBbpuVR/Vb0QAFqUa4VLaxG aiVUJ96laN8JqINegrKK1ucu1G7QvnPQrLWyPNxqJ0osDb9TLaFgjMu1dzZq 3y1QxzJFG2sTLLXa77y3a6NQNK7VRqm+l8ZRj5xhWstLNcsSrcVa+Ijs4i1L 0c4SzWNt4V4ug2Wp9lZqUx1n54AeqG9s08YivhNB3qa+q29aDg8o2rcBmjUv tGq//69+r6JTS6kj7uyfD/IZvUXR+r4sPK7lmm/rtJKHezxwRKrXVmn1aNQn Ip2rrYeBszlYa22p1sJqzQ9d4Zkf6G91xmj8jVr/1fHTvLRrq0FleqM61wra aOsfDfWxOVymA6k14dY7MQqaoRX9s1SrrZFaWJceMS6xmuvRk1rt/fXh9+dq K7ZZmys15+/3wJi/G/X88MppDa+xkWiliI36mZXeqb2zQVuJ6ltO7J8D4Zsf 23vN4XXd1l9aXbk048tQvlFbO9NRop5laT4dgjINWnsVWt3lWvudiG0YRx7i Si3manvqyPflhlvPg16trcBmrddtaGE1rKrHmrQRqyv1yFaFvUn7JlC7tl5E e9XaGGiVrNZmt0PrYae2jju0fUe1FW0M6h5o1GawVXtHozaHdVpd4a0yFsC4 J4brtg/Iof3ToPnk8J5YGf4GTctPvJfSatl6zGCX5sOG/jXWoOW3aStk9YB1 1aaNdFl4ZVFbjdpT3SlHj1vNpx2ZhVrqTKmroa7/TT/Wq2V/1/I/7qPDrYtT UQmfa51av+uPOF/+fuziNDm6X2MHeEAdCY2FTlnxOdHef2I3aGfWMu3sqv3J kZKfa4/wKe345eEnjYp0l7byurSaDdr+V0fT2N+OWnKJtmt+bob+Vfvi8J7I 03qj7gE6+XO1uWpjq25SCvKHFyozWuvbl3csb+pUSpa3ty1vr+1sXb4sV5m4 ZIkyt7W5pbNDmdvY0di+orEht6R2SWtde6vS2qHUKkuXNzS2L1M6apd1KMhv bVKa/h9zZwPeVHn//fskaZImaaHlrQWUBBB5syCgIMiLCgoFSwVxiJumtAUC bSltCi0IVIqIyhQVEV+myBwydejo5uZ0WQWGUF5EbGuljEIhtMbT0rImzZB5 ns85SUtBdv3Z/7qe53p6X5+T83Lfd+7f93u/nThnSqYro8C+zOVeYM/Nm+vO SLfnLM7LSnNlzc+1LyarOz2Tkllp9tTFOVnpObkJ9ilu+7z0FHdeTnquPSc9 JcPucvMdqbmD7bmZKbQgNSWbc7VIZl6G25VNlVl5mek55MxNd2sV5NqzcxbT brXZ1J6RsXiZfQENt7sys1NS3XZXlt2txkHLKGLPcGXxXYvn2ee65msVh77I nZ7vprBrUXqCPRzmzbn2zJSsAntqHsGH2u1ewPenL7PnpBBLjouwKZiSac/L Vr+GGudzJ9e1nOzuxQS0VA0pxb4sJScz9F2qzKkLUnJoWHpOwoz0+XkZKTlt Doxu/eqHEIdw7LcljLr9CtHdOSlp6ZkpOYvUCNTWXHZvPlpnq7dTFxN4lis9 N2FaXmr/lNwB9rR0+305ixe7F7jd2aOHDFm2bFlCZmu5BLIPcRdkL56fk5K9 oGBIqnve4ix3bjirej4vha9fpOZ7eHEekhTY83LT+XIapD62p+BAek6my+1O T7PPLdCaNWnWtLt4mqNd4E9aXsiJZQtcqQvaleXTlZWakZdGURRLc+VmZ/AF qlbZOS4ypJIrPcudYG/97sVZGNnfNcCenjlXLXS5qqzWzNdskZZd7YrYkuvO caWG+kvbt6vdpLWuMVoD+rv4FrqsOiZy1I6dtnhZVsbilPZfSptTQi3FeMJF Y/Ukz52d50b2pa7UdDXPgvSM7KsCuh4vNCeGpKXPS6HzJ6TkZue3vTcJJU6s E9f6k8jBzlt0EiZFER3C//Ut3sCk/nwOFqLtPebafxP1r9hsEnmkB683f1SU lr/wevN36KDl/+B683fsqOWvvN78MTFqfp3hevN36kT+idp/fczMu4+aXy0b of6Xw6TuvFVtEN31ieImcgzj/uir8o5rl7cLefuQN4Ecd6q1X5V3Tbu83cjb j7zDyHEX9xOvynuoXd548g4g723kmMT9pCvzav/Vsta8Pcg7mLx3kCOR+zOv ypvZLu8N5B1C3rHkmM79h9X+YjZLZsuePb/h79VXzRGS2WQ256/nL9+ol4yG U4Xqn1mSzAbtrFAU6vWSOWLr1q3mSMls/bzw88JtpE2k9aTICCmSGlqrMEjG iI9K1HKRkhQZriJUR6RaR6RFirSV8Pf2hLcnvKilDSSLUbKYDQaDe8PatWs3 uE0GyRSuptAi6SwRbfUUGgySxbiRP4tVskSVOEuc1Lr1BfsL9mdIa0lWo6T+ WzLXrMwq6aytlYVrs2q1WaMka4eSuJK4rf239t84eeNkNZwnzU+a15htJskW qeNv9L1r+Lt3tNkgmY3hCgttks5mLLyySptJrdIWLdk6nup5qmfjnUcHV2ZU ZuyfdujQ3g1fbNhj22OLMktRFj1/Y+bvUf/mj9GErDxVEvqL0umijCVtf6Kk JMIoRZkPqX/hXm8RH+s+EPrUgpwM0Xl+TvoikZSR4lb//fcbhe7u6TPtouPM GXfb1VHCXKH2eRMzRrfwlUSP6Sjiwlc6ZpUYEa/lCt3RU3+s6C66Cv2U5OTJ ou+M6ffbxdAHZ0y1q2NCy2Pgvb+T6KFd6Xnv7yx6hp9EiCjRRdwQvlJ/WehK q3qlZudmi8+0427tuF87HtGOZdrxuHY8tYjthzinHWXteEE7BrXjj+pRMmhH i3bsqC6bUlftOFA7jtOOM7TjPO24XDs+px23ZS7KXCR9rB092nGfdjyiHSu0 40nteE47NrTNNNd3lP6roxn99ZpOJs7VX1P+/7qnw9uo//VnNM6r77zqW9oa 8aLYJnaJ3eKYqBEXJLXfCa0vhpSQhfp7U2tfUv8rk0IaHfpcvy70+atguzL0 14ZtV1xLtktXXkdPvPI6ZuiV153+fOV1v55XXve/6vnAUVdej0gSkbp217fF tntuFNJ9c668nraDTwsjpL9IVn+jowzrhm6oLlms1r2j+0Zs1f9K/ytRZnAb 3hblEV8b10t6y0xLivSJ5SmrJO23dbRN0t1je8T2pq4gKi1qoe6vUaujNuj2 Ruuizbpj0S3RLbpvWa4DqjbGiqiPr5mOko5HnW2XfOF09BqpObp3W+pPGk2a SFqopS1Xp6ij0dui/9BxczhtbZfeU1OMuGayxCS3pWdiNrWlQCjF9rxGSiCN 6Pxau/ROKGlPrkqdd3Xe35aOdDlFOqemroZrpdiErrFd+3d7pl3apKXd10xH u11sTXGd47q3pYnhlHjNlKylh8KfV6bC8FHNt09LZW0pVPpkXGP8wPi0+Dfj d6jp6trjd14rhWqP/3N8TTg1X07qt8Rf1L6rUOWGaX1Gt6VpfWa0pbRwWkgq 7LOw7zDShJsSbprYZyHHhJt299t/c4WWmvvPIWUP6EcaPKBmQBBqBvw4cP+g N9U0oGbQZ4N8g3yDDYOjB3ce/BdSWcI4UnLCnCFvhJPn1sLh/YbXjXjx9hGk cSPjRs4ZmT9qVzh9NmrfqLLRA0mjRq8bc2KsUUsbx+7W0qVxt4/7IJw+HnuJ 6w/GNWpXjeN143XjPhg/eMJzEz67K2HSbNLJ+xaM3RjKzWdjKNeUcWq+KdMS eycOTRyXuGNqPy0lT12opfyp66a+wTF/ainp1LTl0wqnnbw/m7Q5yUmu5KQj SUemlnI8oZ6RapLkpIvTC7W0ffohLZ2cLsPJ6YFkw/QAz+XkOcknkmsecJNe nGEn3/bpgdCTGcunB2acndEwK/mhfbNn/yL2Fz1/0W++Yf6c+ZXzL7Z+LhhM 2pXVMat3dn72muyS7JpsOTuwxLBk2JKJS+YtyV6yfMn6JZuXfLDk4yV7lxzL yc55MWdHzoVckRubOzl3bu5nuRXuEe657jfyHspbn+fJa15qXDp46b1LP1h6 btnEZRfze+bfm+/Mz8l/I39nfmVB74KfF3xcUFlwcbltedflo5bfvTxt+fbl lSsGrpi44tEVW1a8t+LEisDjEx5f/vhnK40rJ6zMWfnRyn0rL63qvmrBqu2r 5NWjV+ev3lmY/B/mqo+vno+unG0Kl15O6jxSuPVyCs0g/2HsJV494q4cJ6Ge fs1Zp3XmaZeunDsK911O6uxQWHY5heYFdQ7t+F7cvm6bmIePj2tk1tTmYO2T +TYmmfl1S/S2jpujjrbNmeSNCfRJU8tGfRy95fLcGVKJ2XmiNv+GcvWO3taq nnpXnYu1vMfV51r+sILU+3HUWWbybZQ4rtV2lNZt5vO4li6vDr6rVoWJ7daB yyvBNrXdP5n93/vJ7G8Jz/nPaPO9Nstr9VA6eiLnW1pnQvzYEfaLuSk0/4Tm t7CPzInMgKpraW2zY6ujzHFxiYU1aonLHveZUVhTWENtaq5mniXH1/SZ8dM+ wTxY1m5GvcY8235e/emcGp6592m9KTSLTmudP9V5nTt8a6Ecv4M7M+KSbx+R dKSrIbSOaZ+sWd0udjlFr4ptXX1aV5XYnl0Nl1egUK9U1zYtt0HNQdndXWPV J+odNZd6P7Zn1NHWnhrXPbYnK2CsWl49D929vI62X0nVtmirZnjdbLdyxlLD 1evkpitWx6PhlbFza+t5fjH07er3T03ucipuIu25Qn1VNVVjnGo3Yls1Do1E Vc1QT+mTht6JqpuqEnHJnV/T/N6hetNuVI+O30msrStsWajWQjmusFAOJfUb 1M8+M1RX1LNQT1M/C+WbEvoOCxFa4foO01aldkld4UKrm7Y+/i+Ttqa2Sz/N oa207VJ4xW1LPy2hrrT/XdLW4utObSv2f0hXK6WmtnX8PyRtZb/upO02rjNd rY62R2mXfqqftndpl9R+H3L6v0s/rfl/bt31pZDO6t4lettYY2LvsZeijqu7 Hi1t1O4Y1Z2OdrUxsbe6Bwo/I7GDGqXumkJ31blfPVOTtjuare2s1D1U47hG bX/E7oiz3WM3aruTwrZdjJq2Ty9MOjG9UN3BaFfbw/uc0Pl2dkE16h11R6OW Swonbcfj1vZG5NWebleP8TvJvV3dTTFb9Es6oe278sMpWbvTT911aVfJSSfU eSn8jMTObSh7NXWHppZbp52RtH1atrafI6+2U2vbr01NHq/TFLmkavGAO6TE WKMWDy0OtXRqqVa3+k3rtLq0eq8ciT91tH0/uLkidCWMUolyXH+/8pl+luig ny1s+hylSe8RI4WOJ0e58mpnsn6WclZIHFuEjuMB/WzlKG/q7yuXxF7lkuQU naQUMUOaK+KlVOGQ0kSMtEjEkHMEOcfrM5S/CYl6zggDeW3kjSGvjbwWrT4v uRpEpPSo6MnzPjyfxfMbeN6Hum6iLgelX6c9J4WVs120N0b/OO1YqfyJ9o7W n1Fe0Z8VQ/VeMUxfKwbpv1O+0vt421VrP0rtNcLAmU4/+8cfaM0matoj8kUH kSg6wmgxQIyBNOUrkQ7zIFepFW6lWeTBUlgG+VAgbGK5ckysgMdhJayCIsqv hSdhHTwF6+FpeAaehQ3wibhb/AWCnP8IihggCZAgWYyRHoAZMBMeBJeYLu0T vYjYpX9I3Kl/RJj1j0GGWK9fLW7UPyHs+iJxo+Et5ZhhK7wNx8QAw9dQBuVQ Ad9AJXwLx6EKTsA/xICIjspXEaeUYxHfC1uEzHk9NCrHjBEi0TiAz+FigPF2 PjOUr4yZkAWLIU+pNS4FtDGijRFtjMsBbYwfijHGj+BP0CLGmAaKXqZB8JgY YHLCXFgCOVAAhfAEoJFpI7wAb8Hb4m7T+3zWQwM0QhNcgBZAQ3MqpEE65Ile kUKMiewseml99xz92qKdfYfrLaILvbaYXltMb+tHb7uL3raG3jaT3jaX3jaF 3jaB3O/QXxL0DynP6X+mLKcH3Ua/eZkanHqPsl1/hn7mFXr9Ofrgd+IRrZ+d JdcJtpmto+JRMaRd/ZOpfyn1T6L+keSeQ92bqPtPlBpO3Zup+3Xq+4z6HhLR 1HKeWs5TS0dquZlasqhlCLUMoZZB1HIzrTxJTf2pKY1ahlHDDi3SA5x9KOKo 42/U8Tfq6C89pvyFeoZQz2PUM4J6ZlLPeMmlfEldQ6Qtyp8p+Sn1GahvKS2b R52daFkRtT2rr1GaaV2pvo7R+p24Re8Lj9gYah1IrS5qHUmtk6i1LzX2p7av Kfk1I+9+opwlrOEZ5t/MJOrM8qooUmSxFp6EdfAUrIen4Rl4FjZAqRIUB+EQ HIYj8CUcha/gGHwNZVAOlfAPRREnoRpOwWmogTPKQXEWvHBBqRL/ZJw3gx8C 0AJBZrd/8fwi/ACX4N/wI21RFFkSIGmz4hn9HHrYz5Xz+kf5dCrnDccU2fA1 lEE5VMA3UAnfwnGoghPwD6hTgobvwAffgwz10ADnoRGa4AL8E5qBthh+BEU5 GBGrHDRNUIKmSZAIUyFJqTU9yOcsmMPzR+BReEyRTU6YC4t4toTPHHBzvgzy oYDrx/ks5PMJWMf5U4APpuf53MjnC/AS55vgZdgMr1D/W9zfxvk7nL/P+Yec fwp4ZMIjEx6Z8MhUpSimE4BHJjwy4ZHpFGVOQw3gkek7pcrkg++JRYZ65aip Ac7zrJG6m+ACNHONd6YAny1c45E5FdIgHb904jnRWVu59OI5+u4s+rC6ekVw 9TuuErmaQi/fq/9SDFL/v5mUgJhIz6yiZ1bRM6vomVX0zCp6ZhU9s4qeWUXP rKJnVpG7lp4WpKcF6WlBelqQnhakpwXpRTI9JkCPCdBjAvSYAN9XwvdV6X8h IvQpMJcelKqcoddU0Wuq6DVV9Joqek0VvaaKXlNFr6mi11TRa6roNVX0miqc DOBkACcDuFiFi1U4F8C1Klyrwq0ATgVwqgpXqnCjCtWDqB5E9SCqB1E9iKoy qsooGkDRAIoGULEKFQOoWIWKVahYpY3Y48KElncxks2svX9l7f2j/ihr7Ves Qqw2mr4+IvyKCE9r+j7OVRxXPdF3DTV8I2azTjpYJx2skw7WSQfrpIN10sE6 6WCddLBOOlgnHXzT7ayVfVkr+zJmyxizZYzZMsbsacasnzHrZ8z6GbN+xqyf 9TSWMetlzHoZs17GrJcxi99iKuvmCMbpacZpNeP0NOO0Wj9X9NOnQoZYyzra i3W0F+toD9ZOB2ung7XTwdrpYO10sHY6WDsdrJ0O1k4Ha6eDtdPB2ulgLHoZ i17GopexWMbY8zPmyhhzZYw5L2ucgzXOwfrmYH1zsK45GCte1jYHa1tfxoqX 9c1B/y+j/5fR/8vo/2X0/9P0/9P0fz/938/6F8v6F0v/99Lny+jzfvq8lzXQ wfrnYP1zsP451P6uXEDrC+zPnlOexIHJzOenmc/zcGIyTvyGpxvo7ZP0x9hJ lSk/6svFXM29KnIfJ1clK+Zzyiqu5lL2GGW/5u4Eyj5H2S8om0jZMso9LIzh cfQzcpaTs4ycidr+Su0z72o1pfN8PM+P8LyC52Oo6WmefkRNd1NTKTUN1fJ/ q+0TT2rHgLBIHUQvaQ5kQCYshmxYAjnghmdY6WOkEhHFt6yh9nzqOaDtjbaK bvpPxW36z/G/RvRh1Z7JLjGWlbs7u8Q++jpmhu9ogY9734vbWM9zlM8p0ZU9 ZW91Tad8hpjCCjaHPv+ImKJ/VNt9TRHRtKwHLetBy3rQsh60rAct60HLetCy HrSsBy3rQcnOlMyiZGdKZmkloygZRckoSkZRMoqSUZSMomQUJaMoGUXJfpS8 lZL9KHmrVtJGSRslbZS0UdJGSRslbZS0UdJGSVu45IhwyRFE8ogYyNlATeNi bY/QglpV6v8OHB6AGTATHhQW9m4W9m4W9m4W9m6WSPWf/RpQuBNlksM7jb2a R6dFmdRfqZEGwEAYBIPhFkiAITAUboVhMBxGwG1wO4yEUXAHjIYxcCeMhXEw HibAXXA33AMTYRLcC/fBZJgCiTAVpsH9kATT4TV4Hd6AN+Et2Apvwzb4NbwD v4Ht8C7sgN/Ce/A+fAC/g53wIXwEv4ddUAx/gD+yWyvh83PluLQb9sBe+Dvs 4/4XSrm0Hw5AKRyEQ8o56TAcgS/ZQczhbeVR5ajh7+wk9sEXsB8OQCkchENw WCk3HIEvlfKIGKUmojN0ga7QDeIgXqkxPg+vAhoY31TOGbcr543vwg74LbwH f+D+Hj7ZbRr/zvlRpdz4NfkrOQ8oNaYb4EboBXZwKOdNvaEP9IWboJ9SbroZ +ivHTQOAvmCiL5jw3TSM6+E8G6OcM93J5wzlvFmn1Jj1YIAIMIIJzBAJFrCC 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 w0pYBauhEJ6ANVAEa+FJWAfMjVbmRitzo5W50crcaGVutDI3WpkbrcyNVuZG K/OilXnRyrxoZV60Mi9amRetzItW5sXoSLCAlTlPndl9Wtv9jHEvY9zLGPei m/qe3o+nxxi7Xsaul7HrZex6Gbte2u6n7X7a7qftftrup+1+2u6n7X7a7qft ftrup+1+2u6n7X7a7qftftrup+1+2u6n7X7a7qftftrup+1+2u6n7X7a7qft ftrup+1+2u6n7X7ars5Zs5VvUfsQCn/eNmepEVWLYURUzPManrfgxiXcuIQb l8hbTV4zea2MFAuRJjBSLESbEP4NaB8OXcKhS0RZTJTFRFlMlMVEWUyUxURZ TJTFRFlMlMVEWUyUxURZTJTFRFlMlMVEWUyUxURZTJTFRFlMlMVEWUyUxURZ TJTFRFlMlMVEWUyUxURZTJTFRFksbiOSIrzZjzf7dS7RE3/2E0EqI+BfjIAA kawlkm7hX2a6qb/MEMkr6q9ZeLcf7/bj3X682493+4mqiKiKiKqIqIqIqoio ioiqiKiKiKqIqIqIqoioioiqiKiKiKqIqIqIqoioioiqiKiKiKqIqIqIqoio ioiqiKiKiKqIqIqIqoioioiqiKiKiKqIcTxbG8ejiOLL8D9zupdWv0Srdwkr 8R4m3sPEepi4uhBTF568TDyHiecw8RwmnsPEc1gYdXn4ulT5l26Zck63ln7x S6VB97L6Szt3L+rWKgEhcfyXGECOgC6fHlEAa5Vy3Tph1j1F6Q1KnW6z+u/q Kz/oXlV+sLK/tbK/td4AN0IvsIMDekMaedJhHsyHBeCChbAIMiATsmAxZMMS yIFccEMeLIVlkA8FsFz5QYvnIi09o1up1BLLWd0m5byONz0xR5dDb8+FPO7m E2UBrFaO6grhCVgDa0UX3TrlQ93z5NuonNK9AC/CS7BF+YT4PrHqlENWPRgg AoxgAjNEggWsYIMoiIYO0BFiIBY6QWfoAl2hG8RBPHSHHkoDGjagYQMaNqBh Axo2oGEDGjZYRytHrWPgThgL42A8TIC74G64BybCJLgX7oPJMAXSiCMd5sF8 WAAuWAiLIAMyIQsWQzYsgRzIBTfkwVJYBvlQAMuVT4SBnnMSFb9GxdO6zUoT fWmtcoF+0iKScSGIC0EcuIgDag87zYoTYMUJkCOAykFUDrLCBFhhAqwwAVaY ACtMgBUmgPpB1A+ifhD1g6gfRP0g6gdRP4j6QdQPon4Q9YOoH0T9IOoHUT+I +kHUD6J+EPWDqB9E/SDqB1E/iPpB1L+I+hdR/yLqX0T9i6h/EfUvov5FVrkA q1yAVS7AKhdglQuwygVY5QKscgHUDaJuEHWDqBtE3SDqBlE3iLpB1A2ibhB1 g6gbRN0g6gZRN4i6QdQNom4QdYOoG0TdIOoGUTfImFtK71bH4ko0XUXvXiui UfsMateg9nmRjcYeNPbQ0+vIuR+tz6D1Gd1yrlcq31HqAj1fpufL9HyZni/j w7/xwYMPHnxo0j2nfMEI+IYR8A0j4BtGwDeMpUPMDfvwqByPyvHIg0cePPLg kQePPHjkwSMPHnnwyINHHjzy4JEHjzx45MEjDx558MiDRx488uCRB488eOTB Iw8eefDIg0cePPLgkQePPHjkwSMPHp3BozN4dAaPzuDRGTw6g0dn8OgMI0Rm hMiMEJkRIjNCZEaIzAiRGSEyI0RmhMiMEJkRIjNCZEaIzAiRGSEyHnvw2IPH Hjz24LEHjz147MFjDx6X43E5HpfjcTkel+NxOR6X43E5HpfjcTkel+NxOR6X 43E5HpfjcTkel+NxOR6X43E5HpfjcTkelwsXDnpx0IuD/8Tv3bh4HueO49z3 ONeAcw0414BzDfhvw/9duCfjnqx7lnu/xOnnld/hYB0O1uFgHQ7W4WA9DjbR T/6Ki9W4WI2LMi7KuCjjooyLMi7KuOjFRS8uenHRi4teXPTiohcXvbjoxUUv Lnpx0YuLXlz04qIXF7246MVFLy56cdGLi15c9OKiFxe9uOjFpQZcasClBlxq wKUGXGrApQZcasClBlxqwKUGXGrApQZcasClBlxqwCUZl2RcknFJxiUZl2Rc knFJxqVqXKrGpWpcqsalalyqxqVqXKrGpWpcqsalalyqxqVqXKrGpWpcqsal alyqxqVqXKrGpWpcqsalajEUlwK4FNBGY8iFZlxowoUmHAjggPre1IS6Tajb hLpNqNuEuk2oG0DdAOoGUDeAugHUDaBuAHUDqBtA3QDqBlA3gLoB1A2gbgB1 A6gbQN0A6gZQN4C6AdQNoG4AdQOoG0CdJtRpQp0m1GlCnSbUaUKdJtRpEgOZ GS4xM1xi9Mus5xbds0SxgSi01nO+Gbaw3r/Kut2DXV1PuAFuhF5gBwf0hjTy pMM8mA8LgB0kWregdQtat6B1C1q3oHULWregdQtat6B1C1q3oHULWregdQta t6B1C1q3iAVoXYfWdbRYpsUyo8DHKPAxCnyMAp+mf+sIQPef9Hx28Dr1l43/ 3Nvr8KMOP+rwow4/6vCjDj/q8KMOP+rwow4/6vCjDj/q8KMOP+rwow4/6vCj Dj/q8KMOP+rwow4/6vCjDj/qUFBGQRkFZRSUUVBGQRkFZRSUGQ0+RoOP0eBj NPgYDT5Gg4/R4GM0+BgNPkaDj9HgYzT4GA0+RoOP0eBjNPiuYzT4cMiHQz4c 8uGQD4d8OOTDIR8O+XDIh0M+HPLhkA+HfDjkwyEfDvlwyIdDPhzy4ZAPh3w4 5NPW+Ebtn0LejlcyXsnMNjKzjRftZbRXNZbRWEZjGY1lNJbRWEZjGY1lNJbR WEZjGY1lNJbRWEZjGY1lNJbRWEZjGY1lNJbRWEZjGY1lNFZjlIlRJkaZGGVi lIlRJkaZGGVilIlRJkaZGGVilIlRJkaZGGWr2hfyYCksA/obMcrEKIuOzMX+ K8cMPe1ZbaQHmFMD/9MYYe++lD0qb6aMNhujzchoO81I68JIs4ikthklj9V4 JazivXwt3/W00kjPbiR3kLHZyOrcTKkEFA6gcHO7XVMjvbuR3t1I726kdzfS uxv/H802jfS+RnpfI72vkd7XSO9rpPc10vsa/6/uitS3lSBKfdH23tIs9OF7 QVz6QcxC21K0LcW/evyrR1v1zeY4TkSgby361mrz3/Ncb+Id4WV2Slu496pS i6616FqLrrXoWouutehai66l6FqKrqXoWoqupehaiq6l6FqKrqXoWoqupeha iq6l6FqKrqXoWoqupehaiq6l6FqKrqXoWoqupehaiq6l9Kl6+lQ9faqePlVP n6qnT9XTp+rpU/XoXovutehei+616F6L7rXo/n+Iu/Pwqspz7+MreyV7Jzs7 oog41GqtU6undajaVtty2nqsPW3taGu12vbU1gOVVhRUQKYO2tYBZ1DEoVKK WoGaoiLgiAVrAwnZwGYn0MhgSEgWJCSQAPKcz86hfe15z3W9f75/fK+118pa 63me+7mH350rbFrZvZXdW9m9ld1b2b2V3VvZvZXdW9m9ld1b2b2V3VvZvZXd W9m9ld1b2b21urTOMbgeN+BGjMW40Dpg4/4DkdAXHZpaEA1NvUJxvsovXwuT U8vCnNROOqM3TE31h/pY5ow/pHs9LcyLzwpb/vHXyt+MDo6/FeUO/E3h1lxT WGHHZnnvXLwqAl4L+dRSnv46lhlzueOboSm1QqebN9pqxzXYGlWl2kRqL427 ixLajT2hK45CS5xBJY7U/Z8WNsVnhJ3xmfgIzg674vPCxtz3Qkfuh6Eu92PI EbmfOl4TmnKjICfkxjtOcJwIGjr3c6iYudshKnNT/fwe1+S+3DTn0/GQd8wK /bknvH8e5oeduT/iGddqnS90tKZcvWsNWIW1zgto8rkZLe7rDC25ndgdWmqG hKTmMAyF7rBGd1hzgusjQl0NTV9jXjW3hJ6a28POmvvwAB4PSfTvB6xatE99 rLqWVTtZtZNV97HqZlYtsOpaVt3JqmtZdS1r7mLNbtbsZsluluxmyW5W7GfF XlbsZcVeFuxkwSILrmXBtSxYZMG1LFhgwQILFlmw8D8sWGTBThbsZMFOFiyw YJEFiyzYyYKdLLiW9TpZr5P1elmvl+U6WayXxXpZrJelelmql6U6WaqbpbpZ qpululmqm6W6WaqbpbpZqpul1h6wVJGlOlmql6V6WaqXpbqj96eeDONTC8J8 lnqRD+5lodmssi21IVzFz8ak2sIjvPubqR5Kuz98ip/9OY7D0jgd7ohz4Se8 fXU8JBwXHxv9KD4xjOb5748/HD7Dao/z/gv43Iz4U2Fi/Olw2YG/zvpb/K3w aHxJGBEPD0tKf79kVS/ISa+oEq9hWVhvxLftxwYjbjFCm7fu8MaN3rhdLJ0n lj6pI3zSjr0SGjxVipe/DsTI1ugYT6/y5Bue3GxuW8yt2hvyA/FwVsh78pXw hqfe9tSznjjUE28Z728D8aurHojhY8Xph5yfFjZ4qsUsl0bv5Vk7B55cyrNe x3Ie86anV/CqPBW52nFN2Mw7NvOOzTxjM894i2e8xSve4hU7ecVOXrGTR/Tx iD4e0ccj3uIJfTyhjydstnOb7dxOu1bK/Fujg8wnbeazjPekcZ+31oVYHvaw azN7bsndGHZ5f7f3d3t/d+4B5w+HXd7THZV7qsfMr/XExpLfU8JPyiULrOW1 UO9qU6pBHinZcENoZ7cG713rvWujS4w61d2TxdSmAW95Pkww+gRPdrHEHpbY 4w2bWCKwRM+BuOphiZ5UIcz1xlqeVJ/q4D1ZDAk/jIfajcNxBI4P18Un4MSw Lf6Aff4gPmT32D0e5uefHvjb5TPM5gyxt4l1e1i3R+xtYuEeFg4sHMTeJlaY wNKBJaayxFSWmCr+NrH2Htbew9p7WDuIv03ibxOr72H1Paw1geV7WGxC7mmZ aC4WhetySx3/ijqswDoUsd7P/ub4lndsDNfVROHPNRVhbk0aGRzn/CSMkKGm hKlicJPd3FNzf9hYMw3T8SBmhrlRNY/s5o0b7fRHZJ93ZJ93ZJ937PpHRfo7 Iv0dkf6OqH4nOtp+lPZyF9vvYPsdnkrLUV1yVJcc1WXtPdbeY+091r3DundY 9w5r3WGtO+SXLvmlS27pklu65JYu/t0lt3SZa4957pAruuSKLrmiqyxrxCk8 4H67/7Ldv9vu351aYkdfxCthWWqpqvg6loXHecHe1CrX83yrEMak1oXFqSKa 0Iz12BBuSf3NcSM2eedmxy1oxdZoCm+pTbX7vA0dPK/TMcH2cF1qB7p87sbO MFxuqpe5CzJ3QQR/U45akdrrZ/vwTliS2u8YVOEypFDKX+W8rcLntDyVDZPj ap9zYeRAPhvkeDAOwWAMCefx1gt564W89UK19eb4qHBD/B4/OxrHRt+Oj3N8 P46X807AieE78UnOT8YHnH8Qp/j8L/hQ+Kwc+X2Z5Wm7NsWuTbFrU3j7l+TL 2+Nz3PNRfCz8LP6447k4L0yKP+H4SXwqXC4qLoz/1edPh2tFxjcP/MXs0yLk hvjS6Ij4CgwPK+XXP+SGh/rcCFwT9oqSvSLkbhGyl5dM4SVTeMmU3BQ//xl+ hV/jN7gtGpq7HXdgqvvvc+1+THM+HQ94zwznDzs+EkbmHsPjmBVuzv0u3KCa Tco96fwp/AFPhwtE1QUq3CQeOIUHTqEPblblJuX+FH6WW4Bn3bfQtUXuW+zz Erzo+lLny1xf7r1/ce1N/NW1OqxAvXc1YBUa3b/WvQWs87MiZG/ePUXUXpDb EBaL3AtU0Umi90LRe0Fuk2t8MMcHc2+DH+a2oi28nOOHOX6Y6wAfzG3HDnTJ AN3Y5XNfWJLrxx6f3wGfy/E5WWFyDb+r4Xc1cVhSU+5YEcbIEmNkiTE1lc6r ZI8s+GBNLrxcU4ODfB6Eg10/BINxqOtDQkGlL6j0hZrDve8I9xyJo/AeHI33 uvdYP38fjjP++12TYWWjyTWTQr0In1JzSzS0xl7X2Osae11zK27D7X52T7hB 5E+RqS6QqS6QqS6QBabIVhfUzPCemeb9iHc+7v2znP8Os/H7cF10nCxxrSzx x4HK/OpAPX9dJmgV8VNF9uUie4GonSdq31Bze0XsSyJ2k6hsEI1/EYVLRGGj qPs3kXWFSJonYm4XMa+LmFZRcp8oaRQFL/L+3/H+L/P+l3l/6V8qnMPjV0b/ IV89YSZ/ULFWpeapUgvkhOddW4hX1bnX/GxpWCN7rlG5XpazOlWuBWpgp9m2 qV4LVK8F8tcsM39dnmoz8xVy0VKzLsg3G+WbjWbeKl/nzXy7nJ2Xs/PyyVKz f1oueFoueNos95rl10qaR/Valfu+TPvDsEAFW6CCrVLBFojNTrHZqYKtEp9P iM9O8fmE+HxCfD6hgq3K/cJzv8StuC2skdXXyOprxGanarZKNVslw6+R4deI zSdUswVi8wmx9DS/f5qfP82n29STvHqS57dtakqer7bx06X8cha/nMUvZ/HF Nr62ka9t5Gsb+VYb32rjVxv51UZ+tVQtyvOppSrcAj71hAq3SuVYwz9m8Y82 /rGRglzCD17EKxTasvA8S29WHRr4wmdk82bZvJk/vMmqLaxaz6r1fOI5mXsD yy6XqZtZdjnLLucb2/jG27Jxo2zcKBs38pF/4SO7ZdmiLFvkK+v4yRaZtU5m rZNZ6/jMatl0nSxakDkbZcQGGbGB1Tez+mbW3iwDNsiADTJggwzYIAM2sOxm Wa9B1muQ6RpktIIsVpTFirJYQRark8XqZLCCDLZOBlsnW62TrYqyU1F2KspO RdmpTnaqk53qZKd1slJRVioeyEp1slFRNirIRo12Z7nM0iyzNNul5XZoueyy QXbZIINskC2aZYtmmaFZZmiWGZrtVL2dqrdT9bLCBhmg2U7V26l6kd9sp5aL /AYR3yDiG0R8g4hvEPENIr5OtNeJ9qJoL4r2omivE+1F0d5sF+tFebMobxbl zaK8WU+8lTou6eqzwr7obFFW6rN+LKKmi6jpIupV+zxZ1PTb19n2tda+1oqW dvu6yb7Otadz7elcEdEnCvrsxWR7MVkE9NmPyTy+j5dP5+XTefl0ezGZl/fx 8j5ePp2XT+fN/ew1l53m8uZ+tprLVpvYahOv7mevTTy5n31q2aeWfWrZZxNv 7ufN/WxUy0a17DOX9/bx3uk8t9+aa63xtXA7j91tBUuc7TT33vAk39wQHWVl O51tsbI2K2uzsh1WVScPtFtZnZXVmd1Os6szuzqz22l2dWa104x2mlGbGbWZ UZvZ7DSbnWbTZjZtZlNnFqVeti061ki9RlpnpC1G2mKkrWxY6lHrjdZjtHqj 1Rut12j1Rqs3Wq/R6tmimy26jdrLFt1G7jXyFiNvMfIWtug2eq/Re42+xehb jF5v9FJ/uEWPsEG+3BlWWvVKI/cYsVkuWyjjrpVxS/3BcwMZN+2ungM9VPuB f8N0WnxJdOaA5Vr8pNlPWgbOSr3d3gE7Vhx4qttZh/ev8f4uarhA03aw8B7r zLJEhAqaNI0MjnN+EmaGHd6xYWBnGtzdpIqU5tgTneQdr/vJ8+zX7V0vuOPt v/f3A/Umkl8yqEQ2vGBVX7WaH7BjNztuYMcN7FjqrzewX7c5vGAOr5vD6+bw Olv+c9/9Hhz9rv77OPefIBZPcpzp/kdcK/XcZdacRIebX5c5dZnTNnPaduA3 ONvNvs28tpvXdvPYbh7bzWG7sbuM3WXsLuNuM+42424z3jbjbTPWduN0GWNb dIK3L7L6P1v58ndl2Tw7P22kXQNZNTvwlyK/PLCX66x+eOkvev6efax4uVEX GXWRURf9r5mnlGmOc18py5zkWMoYM937PzNG1UAV3UkH9Out0/b14nDNgb/u WGnkbw/8xeiZ5r3Bnc/ZtTp9wRrzf4mV5r0rg5QqQ4GlZtrrUt19m7VmstZM 63nJW2/1trl2sY52W8OCM1lwpp2sY8WZIqIgIgp2tM76XhIVBWvcYI0brHGD Xa2jwdbQYGvorTX/I3MU7HKdXa77R+Y4zjtOCDOt/SXr3mCX6wayx3tYvYnV mwZ+G9Eri/SH18y6k+WbzLjTjEu/w+lk7SbWbjLLTjPsZOUmVm5i5SZWbmLl JlZuYuEmI3WycBPrNrFuE+s2sW6TqOqVdfeofryHh/WGl6KUKriHUuqPYmpk mbMuZ63Rcc4SPUwffZLQJ4lKuVul3K1S7j7wO8J2mmUHHd+n4rWrdO0q3W6V bje93qfatdPofXRFQpP3qW67VbfdqttuuruP7u5T2XarbLvpjkRla6c9EpVm t0qzW3XZHVWp5f1m8pDanajZJV33tlETO/i4HXx8IKtUqfY98RCZ5EOhwwra 3NURnx0NkmH0PNEZxilE5d6z2XtKv3PtK63AinMDv0FoL93PEkPE09mhz/XS b2Xd4bmN0WHOSqvvsfoeq+8ZWPmltMIVYfW7Vt5j5T0Dq653bMAqNKEZVmdl PVbWY2U90fuMtoJ9e9l3LfuufXdnbuwOo2xh214jbDHCln90488M/MZvC9v2 su1atu39pw59rfPCwG8BBzp1tl1r9C1su/bd3XpUZuW90QlxjU9DwiPUUkIt JdRSYk7PmtOzrNVLMbVRTKXfrnWy0zbKKLED++zAU3bgKX3kYH1k6a8jS6qn jeppM69nqZs26qaNummjbtqomTZqps18nqVk2qiYxJyepSjaKIo2iqKNmmiL MmbzRyPvNGKfEXcard9obxrtzeh4P32L3VrNcZ05rnPnrgO/w/4/O3Q2ZXce v/40O8wKrWy4hw33/GOXnnGt1vlCx0WU1jLHd+/aWucF/H331runxf0bw7p/ 2sWhrNbCai2s1sJSLSzVYt5/O/A7qRYWaWGRFtZoYY0W1mhhjRbWaGGNFpZo YYkWVmhhhRZWaGGFlugo61xvjeutcb01brfGvDU2WmOjNTZSqiWva7SeRqqy napst5b1lGXJAxutpdFaGinJdutotI5G61hvDeutodEaGq2hceBfUR4ffzc6 PpoeXRkeiH6IH+G68Gg0LtwVjcdNmICJ2BSmR5uxBd3u6Q93RnuwF/vwTriz 7AOhvuyDOAWn4l/wIXwYp+F0nIEz8RGchbNxDj6Kj+HjOBfn4RP4JD6FYfhX fBqfwWdxPv4NF+BzuBCfx7/jC/givoSL8GUMjw4vezm8VPZKeK7sVbyGpXgd y8KSsuV4A3/Bm2FJ+SPhrvJH8RjqnK/ASlhr+X6EcGfFweGBisFhegWVXUFl V1DZFYfjCByJlnBXRYd7OrEj3JX+IM7B1eGB9Ej8BD/FmPBo+nqwe3pqqE/X hyVpHU/mpLAkczI+EJ7LfBBn4iPOP4FLw/TMZbgi3JmZhllocf4WNsKeZdrC o5l2bPezHue7wp2VqVBfGaMcFUiDUqykFCurkEU1cqjBQRiEg3EIBuNQfDws qTwX3/X5R46THX/vOCc8V9kb6qu8q+pQ+vjyaHBYER0K2S86DENxOE7GB/BB nIJT8QV8EV/CRfgyvoKv4mv4Or6Jb+PK8BDPfYjnPsRzJ0ajw8xoDK7HDbgR 48Ic3jyHN8/hzXN485zy34QV5bfiNtyOOzAVd+Iu3I17cC/uw/14xHOP4rEw x64/VLE2rKhoxnr8DS2uv+3Yig4/78QO194JK9JpZFCFLI7AkTgRJ4Ed0uzA O+akz3I8x/E8x8/hclyB7+J7uDo8xHMe4jkP8ZyHeM5EnjMxbb1p6+VBcyp/ WrJNdFeoj+7GPbgX9+F+zMbvMQdP4En8BW/ir6jDCqxEPRqwCo3IYzUK2BSe kROekROekRPeiHaiB73Yhd3oD/PkiXnyxDx5Yp48Ma98a6gvb0M7tqEDupPy BNuxA13oho6lvAel5/YjhHni7ZmMXJAR+xmxnhHrGXGeuSi8kfmG48W41D2X 4YowL/Nj56MxBjfgRtyEm3ELxFuGjTJslGGjDBuJp3mZ3zrOcpznuAjskGGH DDtk2EGsPSPWnhFrz4i1Z8TaG2Ltjcw2dGC7Z3tcZw9xN6/sw1F5dEhUgTQy qETpu8OzqEau9BWTOAjnRkOj83BlGM/Hx/Px8Xx8DB8fwcdH8PERfHwEHx8R jfWGcWEkPx/Jz0fy85H8fGT082hQ9Av8EjfjFvwKv8ZvcCtuw8LomOgFbArj 7Og4OzrOjt5rR+fY0Tl2dI4dnWNH50Slb5DuDxPs6gS7OsGuTrCrE8oeDKvL ZuAhPIxH8Cgew2/xOGbhd5iN32MOnsCTeAp/wNOYi3mYjz/iGdTiT2F16vRo UOqMaGjqLMdhuDCMT30+XJf6Ar7qfHiYkhoRrk79GFeHq2m2L8SXhdF02xfi 7zqODn+Jx4SGuD6qiBuiIXEj1btaV74mysabwpx4My2yJfpA/LZja+m7gRy3 RYPLR0eHlI/B9bgBN2IsxmE8bsIETMQkPBJGyhcj5YuR5auiQeWNyGM11mAt CliHIprQjPVgT94+gbdPkGvGVxwSVvP6cXLMyIptUVZ+GS+/jJdfRlbsjQ5J x+Bb6cE4FMfjg2Fk+hTHM/CRaKicMjL9UZ+vDuPlj/Hyx3j5Y7z8MUb+GCN/ jJA/RqT5Unoc+FL6gbA6/eDAv6BfnXkvjsGxeB/OwEVhjkgbJ9LGibQJmVHR oMy1mIwpuAvTXH/E8bHoGNE0IfOUzy3ufwsbwedEzr0i516RM0fkzMl0RlWZ BNvd3+Pn/E8ETcjsjgZVDgmrKw/DUByOI3AkjsJ7cDTMtdJcK8210lwrj8P7 cTxOwIn4gXddiR9igvOJmBRWV5WF1dlLwnXZSzEhXJ2dBHGTFTdZcZMVN1lx kxU32dtxB6biTlhv9m7cg3txH+7HNEzHA3gQM/AQZuJhsE/2UTyG3+JxzIoG VY/HTZiAiZgEtq1m2+qfQXxXi+9q8V0tvqvNs9o8q82z2jyrzbPaPKvNs9o8 q82z2jyrzbHaHKvNsdocq82x2hyrzbHaHHOnRoMOqkIW1aX/KSVeKVI2yUal T6XvHjk8dYNsliv9v42yWU42y8lmuaj0PxhmUY3cwDfY52SzHAVQpACKFECR AihSAEUKoEgBFCmAIgVQpACKFEBR5jtU5juUEminBNopgXZKoJ0SaKcE2imB dkqgnRJopwTaKYF2WfIqWfIqWfKq6D9DEg3HCPwYV2MkfoKf4hqMwrW4LgyX Ua+RUa+RUa+RUa+RUa+RTc+XTc+XTc+XTc+XTc+XTbOyaVY2zcqmWdk0K5tm ZdOsbJqVTbOyaVbdbVZ3m9XdZnW3Wd1tVneb1d3mqPT7jjl4Ak9iYXSkzHuk +puov4n6m6i/ifqbqL+J+puov4n6m6i/ifqbqL+J+pvI1qNk61Gy9aioVS+7 FW1oxzZ0oBMJtmMHutAdpsnss2X22TL7bJl9tsw+W1YfK6uPldXHyupjZfWx NH2Bpi/Q9AWavkDTF2j6Ak1foOkLNH2Bpi/Q9AWavkDTF2j6Ak1foOkLNH2B pi/Q9AWavkDTF2j6Ak1foOkLNH2Bpi/Q9AWavkDTF2j6Ak1foOkLNH2Bpi/Q 9AWavkDTF2j6Ak1foOkLZV+JhpZ9FV/D1/ENPBjyKlFeJcqrRHmVKK8S5VWi vEqUV4nyKlFeJcqrRHmVKK8S5VWivEqUV4nyKlFeJcqrRHmVKK8S5VWivEqU V4nyKlFeL1Grl1isl1isl1isl1isl1isl6jVS9TqJWr1ErV6idqyv0bZsjqs wMooq4rlVLGcKpZLnVv6N6qOn3W8MExSzS5SzS4aqGaXhY7UlRiuur2rqqVG hg6V7ZMq2wiV7ZMq2wi9+NT4uvB0vCi8Gr8YHRS/ovqt1M836NMbo8NVuXZV Lo7X6u//u9JVqHQnDHzHZLvr21Se0VFOlcupcjlVLqfK5VS5nCqXU+VyqlxO lcupcjlVLkdJt1PS7ZR0OyXdTkm3U9LtlHQ7Jd1OSbdT0u2UdDsl3U5Jt5dP C0n5dDyABzEDD2EmHsYj4XyV83yV83x9V62+q1bfVauKZlXRrCqaVUWzqmhW Fc2qollVNKuKZlXRrCqaVUWzdGZCZyZ0ZkJnJnRmQmcmdGZCZyZ0ZkJnJnRm QmcmdGZS3hs6yndhN/rQjz3Yi30QEyrzWJV5rMp8lcqcV5lH6f8K+r+C/q+g /yvo/wr6v4IuoahLKOoS2nUJRRX8/IrNIdEpFHUKRZX8KpX8qgpzqjAnFf18 FT2nayhW7HceQpKOUIYU4iin0ud0FEUdRVFHUdRRFFX+nMqf01kUdRbF9NHu fS+Od+1E5ydBrtVlFCmD8ymDXPp0P+eD1MGhuo4ihXA+hZDTeRR1HkWdR1Hn UdR5FHUeRcrhKsrhKsrhKsrhqrQ8mpZH0/Jo+jqMxpgwnJoYTk1cQ01cQ0Wc r58tUBJ5SiKffnjgG5mGpufjTwPfyjQ0/bpjfailMvJpe6nvLaR3R0MpjjzF kac48hRHXi9cqxeu1Qsv1gsvpkDy+uHF+uHazHlRVk9cqy9I9AWJviDRFyT6 gmYqZba+INEXJNTKKGplVOY7oSNzOa4IY/UHSeZqn8VU5if4Ka7BKO+8Ftal d2jWOyR6h0TvkFA4WQonq4dI9BBJ5jfuv3XgWwUTqiern0j0E4l+ItFPJFTQ WCooSwUdqa9IKKGxlFBWb5HoLRK9RaK3SPQWid4ioZBGUUijKKRRFNKozGbv 3oK3Iddn5HqqaRrVNI1qmk01zaaWxlJLo6il2dTSWGopq9cv6PULev2CXr+g 1y/o9Qt6/YJev6DXL+j1C3r9gl6/oNcv6PULev2CXr+g1y/o9QtUV57qylNd eaorT3Xlqa481ZWnuvJUV57qylNdeaorT3Xlqa481ZWnuvJUV57qyleeaU4f wcdDbeW5+K53/8D5lfghfuTaVY7/ieEYgZ+GdgotT6HlKbR85WTPTHX99+6d ExZXPuHzk+gNhaooGkrB5ausrerQUFt1WJTNfj1syn4D38Ql4SLK7qLsd3y+ MXRkx2I8/q70pvj8S9wS5Si+HMWXo/hyFF+O4stRfDmKL0fx5Si+HMWXo/hy FF+O4stRfDmKL0fx5Si+HMWXo/hyFF+O4stRfDmKL0fx5Si+HMWXo/hyFF+O 4sv9f1R8uX9SfIdFd4RPlF0Rfanse9HXy74f3Vj2H9G/lf0g+kTZldG3UhdG l6SGR9+MLw6fiS8Jn45fCLPjF8OX4o3hDdpwSCzDxW+Hu+KtYVncFr0nbtdv bQu7omOjO/a/Fj0VVkVLwypv/9SBb4M9x9tP9fZTvf1fy4aHXWrrFqPo5nRl F4dzjfJJo4yJF4dF8RK8uL8jfjksUOPWxq+G1+PXwh1G/4WR++ItodXo5xp9 qtFjoz9s9NeiynhFmBXXm5NOPl4VfhA3hoVx3lNrQpOquJ5OfSr82dz+7M5v q50r3D3N3ePjVfv3u/sxd39eHV3giRs88eDAdzueZrYTVPP3qt6fT31JJR8e hqd+EsWpJ+nk18J/pJaF6akN0dmpXhV5SDQoPi38Ll4c5VTp06zgj0Zaph+N 41V6zdXhT6p0hbfvt6K8Sj3+QKWOD/SksZW1xm1W1e76ttBZ9q2oPCyMKpBG BpWoQhbVyKEGB2FQWBQdjHNDU3Qefh7mR7/AL3EzbsGv8Gv8BrfiNtzBhgtD Q/RCaChLhaayGOWoQBoZVKIKWVSjBgfjEAzGoRiCwzAUh+MIHIljcCzeh+Pw fhyPE3AiTsLJ+EpYX/ZVfA1fxzcwARMxCZMxBT/Dz/EL/BI34xb8CneGdWV3 4W7cg3txH+7HtLAudXqYnzoLw/DV8Hzq16GY+k0o8vKL7UoHP9vHx+bbiQ4+ 9mU+ti/etX9rvFtE9IVM3L9/d7xnf1O8N6Tjfftb43fCsHi/6yEcWV6xf2t5 OnymPBMy5ZX7d5dX7W8qz4Z0efX+1vJcGFZe4/pB7hsdFpaPwfW4ATdiLMZh PG7CBEzEJPw2NJU/jln4HWbj95iDJ/AknsIf8DTmYh7m4494BrX4Exbg+bC+ fCFewCIsxhK8iJfwMl7Bq3gNS7EqzC9vRB6rsQZrUcA6FNGEZqwP8yv2hoXp GPw3XREWpQc7HorjcQrOwEdCU/qjjreF9en7Md25daZ/57P1pK0nbT1p60nP c20+nkEtnsNC11/AIiyGuafNPf0Xn9/EX32uwwqsxBqsDevSRT9rxTZ0oRs7 0YNe7A7rMwdhEA7GITgirMsciaPwHhyNs0JT5qMYFeZnrsVkTMFdeASPhYbM U467w/zKk8P6ylNDU+WHHU93vAhf9vnbYV3lD/z8SvwQv3Z9uusP4EHMwFPY G9ZVRWF91SGO4qtKXFUdhaNDU/YHoZgdgavxE1yD0RDvWfGeFe9Z8Z4V71nx nr0dd2Aq7oT5Zu/GPbgX9+F+TMN0PIAHMQMPYSYehjVmH8Vj+C0ex6wwv/rf Q7H6C/givoSL8GV8BV/F+PB89U2YgImYhMmYgp/h5/gFfombcQt+hV/jN7gV t+F23IGpuBN34x7ci/twP6ZhOh4Iz+dODfMPqgrPH5RFdXg+Klcr5sv87fHq 6MPy8r7ovmhcmBGNx02YgInoD0X9c1H/XNQ/F/XPRf1zon9O9M+J/jnRPyf6 50T/nOifE/1zon9O9M+J/jnRPyf650T/nOifE/1zon9O9M+J/jnRPyf650T/ nOifE/1zon9O9M+J/jnRPyf650T/nOifE/1zon9O9M+J/jnRPyf650T/nOif k9K3cJX92TyXhQ49a4eetUPP2qFn7dCHTteHTtd3Nuo7G/WdjalZYevA30f+ 918dvZXaHd5SzQqq2Ix4ZXSsetmigt2mh5uhh5uhh5uhh+vQw3Xo4Ur9U1H/ VNQ/FfVMiZ4p0TMleqZEz5TomRI90gx90Ax9ygw9yQw9xAw9RKJH6NAbJPqA Dn1AR+aUUMycOvB9nB20f0nLF+nsIm1dpIWLNHCR/k3o34T+TejfhP5N6N+E /k3o34T+TejfhP5N6N+E/k3o34T+TejfhP5N6N+EXu2gVzvo1YRG7agc492T ff596VvTQkJvJvRmR9UQ8XRJmE5jTqcpG2nKxtyEsDU3EZPC1poh4a2awzAU x+J9mOL64+GtKKWq/EFdp+PiF6KPx4uiy+OXorPil6Mj2Pe5+FVK6rXo5HhF dBFbX6Svr6AYPqW3HxznozPZ/W+UwzF0zkZXN0Wn0AsX0QsnxVujC7z31QO/ yz7VSK+Ep9x/z8CY8/1sBFWxKDrItTecrSx9L+X//V26ZcOjYf/79+mazxmi 4xNG/aJ6+Hlz+O8rZ6iWu139jGq5SLVsH/iO4m2l/43S1aOdfWrgd4qHu/dE cyj9XwRvRx9yx4edrYyGWeEQPzvGWkvf+nZJqItHR+ea/6vln6TXUq4sd/am u9UmmnC7s/XOro5qnO1xtjw6OSqPhkUVSCODSlQhi2rkUIODjHhxdFh8KY13 Ba62pkV04Mt05iuhoXx0NKx8DK7HDbgRYzEO43ETJmAiJkXD9PLD9OzD9OzD 9OjD9OjD9OTD9N/D9N7D9NvDBv7/ixrqtsdI663i7fglO1n630xeCc9St9us fTSbvGBeS9xltdZeEw0uq4+OL2uITmeZK9jhs/Gl7rosuiy+YuA75i6Lrw6v lL6VKL4+bIzvj86Jp0UfNU5ip0+kZOaWfzw6s/zc6HTWuiw6xhPHGOcsuzk6 ep+ROkvjD4xUc+D/NVkWf8fTl7v/e47fdxzNw+rDOhq5gz7uH/CfNVGlp+Io XfqfUNw91J1D3VnlzsQd26Oh0SZZlIaKttBN1xqptKfXh0a6u8OuD5JxGwbe l7eDqz3lnSVFXDE47NPD79PD79Mj79Mj79Mj79Mj79P77jPmxWFr6V88eeMp IiUz8LbVoSc6/J/G/I6c9T2MtLbRlPjK0GV2260j4XGHGbvXU68bt9q4ff/P cauNu7H0f7N422DjVnhjrzd2eGOPN1Z5W9eBVewTZxe7Wvq+wO9Q8t/DtX4y OjrSk1VmnPbkLk/u82SNuewvWc2Te0XFpuhz0WZsQT/P3oO92Id3ZIeLdS6X hNPj78gWl0ffjb/n+H3HkXqfa83n+vB4fBO/uD/6WOl/4mbxeiOeO7A3q8LM gdHyYY2YG6LL2XPAR84s9+7y/QjRyRWDo89lLsVluCI6OTMNs9Di/C1shHlm trvW47jL3Erf/7jdzPqtud/MTrHufjM7xbqPsu5Sxqi03qy1tsZro4MHvG6x J171xGZPHOWJzZ44yhMfc/fB5vz2gOetCnvNu8+Tmweeyg/8vwSXGu8ynnyF 43cdx8iKG6P3y3j/Rd13wFdVZP+fKXfmvvfuS0IIIQktdBBUQIQVRMHFiiy6 dhRFQbGAuoKISLGsiohSLOCKFEFdxcUOCgi6iooFRKRI76H3Hsj8vzPvJSYk EBJY/f3v/cy8uVPOnDv3zHfmzNx73nZgTBjImA5kLAO8m+b+Ucc+v8XIJRCz Hc/hGoSud33DWsNLFd0hVQ9hvFsPvjegxo1mm5O3lSi3FuXCoO6DMkfKYkqn zmYn3Q53B1x3PP1r8Dzbg6+b4R6EZNrcayAl69HSWeBpI/TLTaCyGeNkCyrv JZmd3ha4rWan6grXDe5euPvgHoTrCboJ8f8EWgTKi0F5seiOu3oQmL8az3EN pGgtepC7W+DwBrTRRvOj08XLg79s8JcN/rLjd2/XlJeDynJQ4aByGnhMApX9 oJIDKtbSvA8Kq+z/EYG/bPCXDf6ywV82+MsGf9ngL5tOp850Od0Odwdcb2pN j8D1gesL149ao8ZE1FgfmOWhha8EZnlo5SuBWW+hpT9ES38OOf0Wcnop5PRy 8Y4Zinv6ASNErRg3GLcsNxswmziHmkFGm8kWZpEcTa3lGLix1NpLosu9lfjd gt+tcDuotaoL1wSuK12uusHdC3cfnOXPB1f74nLD43LD3bOyLbjRZLnViIng +814rtR4rlTwvQ05G7kViI1mHiSja85X0AW3QvdbCV1vK3S7lbJOzjrIWtec bYjdjpjtso45D1S75iwX+9DO2Sh9GNhwxMyWntkPvfCAjJg9yDkbOS9yZb9E 6lzEzEVM2JXdJg6hvmy0yhEzHzpmjgyRQtkc5JoPXTIHOc8HLnXNWY9acqCl 7gFnW8RB/Gaj1sOQzFjJw6g1B9rpHnC8Rfr4DYOLCOJjlA7jDvZC6rpCr91P DFS2g0oOqBhQ2ODqVsRQejtK56C0QckNcR7q2nbKGQIeVqN0dZRegtL7xCH0 WMv9YcjxEUhcDuYJxhwBL6tBrTqoLQG1fTJkfnV3FcFzDigJmvImUD4Cnv5j R1HDQfEA+Fgmcoij1AHUvUxGEa5jqtocOXOQIwv12ZZajBxZoGlbaTFo7EDr HvW88PTjzwmli3k+Lq97LshbzPPAPZ7kcwCelrD9gTKnuN1xj8dob5dSZDtT gkyhkCwH/tIoLDNArQLKVMScoRLClZFWBWnVkFYD1zWRVgtptTEeSJmKGiog NRO/NfFMApmCK+gQsjzqz0ANFVCTpVUZ8VUQXxXxNRBfE/Ggg6dgc9uaK8Rz 2JosrWTwxZG6TqYipjxcGlUGf8nIuQ40K4M/Dv44Sq2TmUivClcN8TWQpybi aiFc2/4rOagsA6/2DrlMB68Z5MWp2NLLwL+9Qy6rI60G0mKlOe43Ba4cZC8V PKeBbgbupQKefkXUVcneF9KrID0T6dWQXgNxNZFeC+m1cX+4CzybcqCbitjy cGlmAXjIQeuslhXxLCvhnisjTxXkyUR6VbhqyFMdeWogTy3kqY2RzT6nwLVr GqWAD9tiB8BHCviIgI/AtW01XNdwLXgAPKSAh4h9KiTcvWfE2znGvW094e47 VmJ7nGtOiaWVCfTabWi/o+QCvf1MipZUNlCqAeljyQdSa1LZUyUjoFYfd11K OUHpOlTmZGUFVM6xd3Rq5AVP4n