From strr-debian@decisionsoft.co.uk Thu Oct 1 02:33:04 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_62 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n917X3RC077287 for ; Thu, 1 Oct 2009 02:33:03 -0500 X-ASG-Debug-ID: 1254382464-223003810000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from knox.decisionsoft.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 124F61D74E55 for ; Thu, 1 Oct 2009 00:34:24 -0700 (PDT) Received: from knox.decisionsoft.com (knox-be.decisionsoft.com [87.194.172.100]) by cuda.sgi.com with ESMTP id 7QHzSHPPhGS0k83F for ; Thu, 01 Oct 2009 00:34:24 -0700 (PDT) Received: from [82.152.70.89] (helo=[192.168.1.74]) by knox.decisionsoft.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.69) (envelope-from ) id 1MtGB8-0000rl-77 for xfs@oss.sgi.com; Thu, 01 Oct 2009 08:34:23 +0100 Message-ID: <4AC45B72.9060500@decisionsoft.co.uk> Date: Thu, 01 Oct 2009 08:34:10 +0100 From: Stuart Rowan User-Agent: Thunderbird 2.0.0.23 (Windows/20090812) MIME-Version: 1.0 To: xfs@oss.sgi.com Content-Type: multipart/mixed; boundary="------------000605070204050902000506" X-SA-Exim-Connect-IP: 82.152.70.89 X-SA-Exim-Mail-From: strr-debian@decisionsoft.co.uk X-ASG-Orig-Subj: Two XFS involving stack traces from Debian's 2.6.26-2-amd64 Subject: Two XFS involving stack traces from Debian's 2.6.26-2-amd64 X-SA-Exim-Version: 4.2.1 (built Wed, 25 Jun 2008 17:20:07 +0000) X-SA-Exim-Scanned: Yes (on knox.decisionsoft.com) X-SystemFilter-new-T: not expanding X-SystemFilter-new-S: not expanding X-SystemFilter-new-F: not expanding X-Barracuda-Connect: knox-be.decisionsoft.com[87.194.172.100] X-Barracuda-Start-Time: 1254382466 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10501 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format. --------------000605070204050902000506 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hi, I suspect the list will not be overly interested in these due to it being triggered on a non-cutting edge, vendor kernel but I'll post them anyway -- just in case there's an obvious "Debian should take patch-X" to fix this issue in the next Lenny errata kernel. At the time of oops, an lvm snapshot of the XFS home directory is mounted for use by the backup scripts: mkdir -p /tmp/$from; /sbin/lvcreate -s -L 20G -n snap-shot $from && mount -o nouuid,ro /dev/$vgroup/snap-shot /tmp/$from (previously this called xfs_freeze -f / -u too but now lvcreate -s does this itself) When the rsync has finished the following commands are run: umount /tmp/$from ; /sbin/lvremove -f /dev/$vgroup/snap-shot ; rmdir /tmp/$from The umount failed and now we have a stuck mount of the snapshot. I know a reboot will fix the issue but it's both an annoying and infrequent problem. Cheers, Stu. --------------000605070204050902000506 Content-Type: text/plain; name="gpf.txt" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="gpf.txt" [5634735.319443] general protection fault: 0000 [1] SMP [5634735.319483] CPU 5 [5634735.319508] Modules linked in: tcp_diag inet_diag xt_multiport iptable_filter ip_tables x_tables cpufreq_stats cpufreq_ondemand cpufreq_powersave cpufreq_conservative cpufreq_userspace freq_table microc [5634735.319879] Pid: 6394, comm: umount Not tainted 2.6.26-2-amd64 #1 [5634735.319913] RIP: 0010:[] [] is_bad_inode+0x2/0x11 [5634735.319972] RSP: 0018:ffff810100465d40 EFLAGS: 00010246 [5634735.320004] RAX: 0000000000000000 RBX: ffff81022e69ad80 RCX: ffff810080a92000 [5634735.320056] RDX: ffff81000106e140 RSI: 0000000000000001 RDI: 65726f6e67692067 [5634735.320107] RBP: ffff810210f8c480 R08: 0000000000000296 R09: ffff810001102180 [5634735.320159] R10: ffff810210f8c6c0 R11: ffffffffa024c1a2 R12: 0000000000076029 [5634735.320210] R13: 65726f6e67692067 R14: ffff8100a5b134a0 R15: 0000000000000001 [5634735.320263] FS: 00007f0209d7d730(0000) GS:ffff81023f12b6c0(0000) knlGS:0000000000000000 [5634735.320317] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [5634735.320349] CR2: 00007f7841144000 CR3: 00000002385c7000 CR4: 00000000000006e0 [5634735.320401] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [5634735.320452] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [5634735.320505] Process umount (pid: 6394, threadinfo ffff810100464000, task ffff8100b6b714f0) [5634735.320558] Stack: ffffffffa024337d ffff8101728dd000 ffffffffa023f902 0000000100000296 [5634735.320620] ffff81018519b100 ffff810210f8c6c0 ffff81022e69ad80 ffff810210f8c480 [5634735.320678] 0000000000076029 ffff810100465df8 ffffffffa024be60 ffff810210f8c480 [5634735.320718] Call Trace: [5634735.320789] [] ? :xfs:xfs_inactive+0x27/0x412 [5634735.322089] [] ? :xfs:xfs_finish_reclaim+0x14c/0x15a [5634735.322089] [] ? :xfs:xfs_fs_clear_inode+0xa4/0xe8 [5634735.322089] [] ? clear_inode+0xad/0x104 [5634735.322089] [] ? dispose_list+0x56/0xee [5634735.322089] [] ? invalidate_inodes+0xb2/0xe7 [5634735.322089] [] ? invalidate_inodes+0xc9/0xe7 [5634735.322089] [] ? generic_shutdown_super+0x39/0xee [5634735.322089] [] ? kill_block_super+0xd/0x1e [5634735.322089] [] ? deactivate_super+0x5f/0x78 [5634735.322089] [] ? sys_umount+0x2f9/0x353 [5634735.322089] [] ? do_page_fault+0x5d8/0x9c8 [5634735.322089] [] ? sys_newstat+0x19/0x31 [5634735.322089] [] ? __up_write+0x21/0x10e [5634735.322089] [] ? system_call_after_swapgs+0x8a/0x8f [5634735.322089] [5634735.322089] [5634735.322089] Code: c3 b8 fb ff ff ff c3 b8 fb ff ff ff c3 b8 fb ff ff ff c3 48 c7 c0 fb ff ff ff c3 48 c7 c0 fb ff ff ff c3 b8 fb ff ff ff c3 31 c0 <48> 81 bf e8 00 00 00 c0 8e 44 80 0f 94 c0 c3 53 48 89 [5634735.322089] RIP [] is_bad_inode+0x2/0x11 [5634735.322089] RSP [5634735.322089] ---[ end trace 6dd2658b5e6d5b7f ]--- --------------000605070204050902000506 Content-Type: text/plain; name="umount-oops.txt" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="umount-oops.txt" [5634735.322089] ------------[ cut here ]------------ [5634735.322089] WARNING: at kernel/exit.c:972 do_exit+0x3c/0x6a6() [5634735.322132] Modules linked in: tcp_diag inet_diag xt_multiport iptable_filter ip_tables x_tables cpufreq_stats cpufreq_ondemand cpufreq_powersave cpufreq_conservative cpufreq_userspace freq_table microc [5634735.326126] Pid: 6394, comm: umount Tainted: G D 2.6.26-2-amd64 #1 [5634735.326126] [5634735.326126] Call Trace: [5634735.326126] [] warn_on_slowpath+0x51/0x7a [5634735.326126] [] enqueue_task+0x56/0x61 [5634735.326126] [] printk+0x4e/0x56 [5634735.326126] [] do_exit+0x3c/0x6a6 [5634735.326126] [] __wake_up+0x38/0x4f [5634735.326126] [] oops_begin+0x0/0x96 [5634735.326126] [] error_exit+0x0/0x60 [5634735.326126] [] :xfs:xfs_fs_destroy_inode+0x0/0x12 [5634735.326126] [] is_bad_inode+0x2/0x11 [5634735.326126] [] :xfs:xfs_inactive+0x27/0x412 [5634735.330707] [] :xfs:xfs_finish_reclaim+0x14c/0x15a [5634735.330793] [] :xfs:xfs_fs_clear_inode+0xa4/0xe8 [5634735.330862] [] clear_inode+0xad/0x104 [5634735.330929] [] dispose_list+0x56/0xee [5634735.330999] [] invalidate_inodes+0xb2/0xe7 [5634735.331071] [] invalidate_inodes+0xc9/0xe7 [5634735.331154] [] generic_shutdown_super+0x39/0xee [5634735.332240] [] kill_block_super+0xd/0x1e [5634735.332306] [] deactivate_super+0x5f/0x78 [5634735.333339] [] sys_umount+0x2f9/0x353 [5634735.334357] [] do_page_fault+0x5d8/0x9c8 [5634735.334652] [] sys_newstat+0x19/0x31 [5634735.334652] [] __up_write+0x21/0x10e [5634735.334652] [] system_call_after_swapgs+0x8a/0x8f [5634735.334652] [5634735.334652] ---[ end trace 6dd2658b5e6d5b7f ]--- --------------000605070204050902000506-- From michael.monnerie@is.it-management.at Thu Oct 1 05:44:34 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n91AiYVF089228 for ; Thu, 1 Oct 2009 05:44:34 -0500 X-ASG-Debug-ID: 1254393955-5ddb03720000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv1.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7044D495AAD for ; Thu, 1 Oct 2009 03:45:55 -0700 (PDT) Received: from mailsrv1.zmi.at (mailsrv5.zmi.at [212.69.164.54]) by cuda.sgi.com with ESMTP id QoOX35tfybsZ8RVR for ; Thu, 01 Oct 2009 03:45:55 -0700 (PDT) Received: from mailsrv.i.zmi.at (h081217106033.dyn.cm.kabsi.at [81.217.106.33]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "mailsrv2.i.zmi.at", Issuer "power4u.zmi.at" (not verified)) by mailsrv1.zmi.at (Postfix) with ESMTP id B6FA86E1 for ; Thu, 1 Oct 2009 12:45:52 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.72.27.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv.i.zmi.at (Postfix) with ESMTPSA id 35A0E400163 for ; Thu, 1 Oct 2009 12:45:53 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Two XFS involving stack traces from Debian's 2.6.26-2-amd64 Subject: Re: Two XFS involving stack traces from Debian's 2.6.26-2-amd64 Date: Thu, 1 Oct 2009 12:44:37 +0200 User-Agent: KMail/1.10.3 (Linux/2.6.30.5-ZMI; KDE/4.1.3; x86_64; ; ) References: <4AC45B72.9060500@decisionsoft.co.uk> In-Reply-To: <4AC45B72.9060500@decisionsoft.co.uk> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200910011244.37489@zmi.at> X-Barracuda-Connect: mailsrv5.zmi.at[212.69.164.54] X-Barracuda-Start-Time: 1254393956 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10513 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Donnerstag 01 Oktober 2009 Stuart Rowan wrote: > umount /tmp/$from ; /sbin/lvremove -f /dev/$vgroup/snap-shot ; rmdir > /tmp/$from Why don't you umount /tmp/$from && /sbin/lvremove -f /dev/$vgroup/snap-shot && rmdir /tmp/$from from your script so this won't happen again? Or make a loop around umount? mfg zmi -- // Michael Monnerie, Ing.BSc ----- http://it-management.at // Tel: 0660 / 415 65 31 .network.your.ideas. // PGP Key: "curl -s http://zmi.at/zmi.asc | gpg --import" // Fingerprint: AC19 F9D5 36ED CD8A EF38 500E CE14 91F7 1C12 09B4 // Keyserver: wwwkeys.eu.pgp.net Key-ID: 1C1209B4 From strr@corefiling.com Thu Oct 1 09:13:04 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n91ED40j098655 for ; Thu, 1 Oct 2009 09:13:04 -0500 X-ASG-Debug-ID: 1254406466-5a2b014b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from knox.decisionsoft.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1FA0D496F65 for ; Thu, 1 Oct 2009 07:14:26 -0700 (PDT) Received: from knox.decisionsoft.com (knox-be.decisionsoft.com [87.194.172.100]) by cuda.sgi.com with ESMTP id DaosbWWVPlOls2D2 for ; Thu, 01 Oct 2009 07:14:26 -0700 (PDT) Received: from save.dsl.local ([10.0.0.1] helo=[10.0.0.43]) by knox.decisionsoft.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.69) (envelope-from ) id 1MtMQL-0000ML-3F; Thu, 01 Oct 2009 15:14:25 +0100 Message-ID: <4AC4B940.6010004@corefiling.com> Date: Thu, 01 Oct 2009 15:14:24 +0100 From: Stuart Rowan Reply-To: strr@corefiling.com Organization: CoreFiling Limited User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.4pre) Gecko/20090915 Thunderbird/3.0b4 MIME-Version: 1.0 To: Michael Monnerie CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Two XFS involving stack traces from Debian's 2.6.26-2-amd64 Subject: Re: Two XFS involving stack traces from Debian's 2.6.26-2-amd64 References: <4AC45B72.9060500@decisionsoft.co.uk> <200910011244.37489@zmi.at> In-Reply-To: <200910011244.37489@zmi.at> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-SA-Exim-Connect-IP: 10.0.0.1 X-SA-Exim-Mail-From: strr@corefiling.com X-SA-Exim-Scanned: No (on knox.decisionsoft.com); SAEximRunCond expanded to false X-SystemFilter-new-T: not expanding X-SystemFilter-new-S: not expanding X-SystemFilter-new-F: not expanding X-Barracuda-Connect: knox-be.decisionsoft.com[87.194.172.100] X-Barracuda-Start-Time: 1254406467 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10527 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Michael Monnerie wrote, on 01/10/09 11:44: > On Donnerstag 01 Oktober 2009 Stuart Rowan wrote: >> umount /tmp/$from ; /sbin/lvremove -f /dev/$vgroup/snap-shot ; rmdir >> /tmp/$from > > Why don't you > umount /tmp/$from&& /sbin/lvremove -f /dev/$vgroup/snap-shot&& rmdir > /tmp/$from > from your script so this won't happen again? > Or make a loop around umount? > > mfg zmi Thanks, I've changed it as you suggested. It's true a second call to umount does unmount it (well it disappears from /proc/mounts anyway). However lvremove still does not succeed because it still believes the volume to be open. Cheers, Stu. From strr-debian@decisionsoft.co.uk Thu Oct 1 09:13:23 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n91EDMuO098676 for ; Thu, 1 Oct 2009 09:13:23 -0500 X-ASG-Debug-ID: 1254406485-6c2a00ca0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from knox.decisionsoft.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D4AA114BA6AC for ; Thu, 1 Oct 2009 07:14:45 -0700 (PDT) Received: from knox.decisionsoft.com (knox-be.decisionsoft.com [87.194.172.100]) by cuda.sgi.com with ESMTP id PrMZdxQGqboBOoJz for ; Thu, 01 Oct 2009 07:14:45 -0700 (PDT) Received: from aar.dsl.local ([10.0.0.43]) by knox.decisionsoft.com with esmtp (Exim 4.69) (envelope-from ) id 1MtMQe-0000N3-FN; Thu, 01 Oct 2009 15:14:44 +0100 Message-ID: <4AC4B954.9050303@decisionsoft.co.uk> Date: Thu, 01 Oct 2009 15:14:44 +0100 From: Stuart Rowan Reply-To: strr-debian@decisionsoft.co.uk User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.4pre) Gecko/20090915 Thunderbird/3.0b4 MIME-Version: 1.0 To: Michael Monnerie CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Two XFS involving stack traces from Debian's 2.6.26-2-amd64 Subject: Re: Two XFS involving stack traces from Debian's 2.6.26-2-amd64 References: <4AC45B72.9060500@decisionsoft.co.uk> <200910011244.37489@zmi.at> In-Reply-To: <200910011244.37489@zmi.at> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-SA-Exim-Connect-IP: 10.0.0.43 X-SA-Exim-Mail-From: strr-debian@decisionsoft.co.uk X-SA-Exim-Scanned: No (on knox.decisionsoft.com); SAEximRunCond expanded to false X-SystemFilter-new-T: not expanding X-SystemFilter-new-S: not expanding X-SystemFilter-new-F: not expanding X-Barracuda-Connect: knox-be.decisionsoft.com[87.194.172.100] X-Barracuda-Start-Time: 1254406485 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10528 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Michael Monnerie wrote, on 01/10/09 11:44: > On Donnerstag 01 Oktober 2009 Stuart Rowan wrote: >> umount /tmp/$from ; /sbin/lvremove -f /dev/$vgroup/snap-shot ; rmdir >> /tmp/$from > > Why don't you > umount /tmp/$from&& /sbin/lvremove -f /dev/$vgroup/snap-shot&& rmdir > /tmp/$from > from your script so this won't happen again? > Or make a loop around umount? > > mfg zmi Thanks, I've changed it as you suggested. It's true a second call to umount does unmount it (well it disappears from /proc/mounts anyway). However lvremove still does not succeed because it still believes the volume to be open. Cheers, Stu. From sandeen@redhat.com Thu Oct 1 13:58:16 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n91IwFQk113300 for ; Thu, 1 Oct 2009 13:58:15 -0500 X-ASG-Debug-ID: 1254423576-04b100810000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0064B14BC2BC for ; Thu, 1 Oct 2009 11:59:36 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id CpnINorfZlbtGksY for ; Thu, 01 Oct 2009 11:59:36 -0700 (PDT) Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n91IxaQP008472; Thu, 1 Oct 2009 14:59:36 -0400 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id n91IxVhI032154 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 1 Oct 2009 14:59:35 -0400 Message-ID: <4AC4FC13.3050505@redhat.com> Date: Thu, 01 Oct 2009 13:59:31 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: xfs-oss CC: ext4 development X-ASG-Orig-Subj: [PATCH] xfststests 220: test for prealloc/delalloc/reserved space recapture Subject: [PATCH] xfststests 220: test for prealloc/delalloc/reserved space recapture Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1254423578 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10546 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Test writing and removing a file in a loop; filesize is 64m, filesystem size is 256m. Loop 16 times each for buffered and direct. ext4 hits enospc after a couple loops. Signed-off-by: Eric Sandeen --- (note this has the sized mkfs infra from the previous patch this week since that patch needed more work w.r.t. modifying existing tests) diff --git a/common.rc b/common.rc index 761170d..8d0cd4e 100644 --- a/common.rc +++ b/common.rc @@ -237,6 +237,27 @@ _scratch_mkfs_options() echo $SCRATCH_OPTIONS $MKFS_OPTIONS $* $SCRATCH_DEV } +# arg 1 is size in bytes, arg 2 is (optional) blocksize +_scratch_mkfs_sized() +{ + fssz=$1 + bsz=$2 + [ -z "$bsz" ] && bsz=4096 + let blocks=$fssz/$bsz + + case $FSTYP in + xfs) + _scratch_mkfs_xfs -d size=$fssz -b size=$bsz 2>&1 >>$here/$seq.full + ;; + ext2|ext3|ext4) + /sbin/mkfs -t $FSTYP -- $MKFS_OPTIONS -b $bsz $SCRATCH_DEV $blocks 2>&1>>$here/$seq.full + ;; + *) + _notrun "Filesystem $FSTYP not supported in _scratch_mkfs_sized" + ;; + esac +} + _scratch_mkfs_xfs() { # extra mkfs options can be added by tests diff --git a/220 b/220 new file mode 100755 index 0000000..55982b7 --- /dev/null +++ b/220 @@ -0,0 +1,76 @@ +#! /bin/sh +# FS QA Test No. 220 +# +# Test for prealloc space leaks by rewriting the same file in a loop +# +#----------------------------------------------------------------------- +# Copyright (c) 2009 Eric Sandeen. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +# creator +owner=sandeen@sandeen.net + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc + +# real QA test starts here +_supported_fs generic +_supported_os Linux IRIX +_require_scratch + +# real QA test starts here +rm -f $seq.full + +umount $SCRATCH_DEV 2>/dev/null +let fssize=256*1024*1024 +echo "--> mkfs 256m filesystem" +_scratch_mkfs_sized $fssize >> $seq.full 2>&1 +_scratch_mount + +loops=16 + +echo "--> $loops buffered 64m writes in a loop" +for I in `seq 1 $loops`; do + echo -n "$I " + xfs_io -F -f -c 'pwrite 0 64m' $SCRATCH_MNT/test >> $seq.full + rm -f $SCRATCH_MNT/test +done + +echo +umount $SCRATCH_DEV +_scratch_mount + +echo "--> $loops direct 64m writes in a loop" +for I in `seq 1 $loops`; do + echo -n "$I " + xfs_io -F -f -d -c 'pwrite 0 64m' $SCRATCH_MNT/test >> $seq.full + rm -f $SCRATCH_MNT/test +done + +echo +umount $SCRATCH_DEV + +status=0 +exit diff --git a/220.out b/220.out new file mode 100644 index 0000000..497a585 --- /dev/null +++ b/220.out @@ -0,0 +1,6 @@ +QA output created by 220 +--> mkfs 256m filesystem +--> 16 buffered 64m writes in a loop +1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 +--> 16 direct 64m writes in a loop +1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 diff --git a/group b/group index 7cea01d..9b8a401 100644 --- a/group +++ b/group @@ -329,3 +329,4 @@ prealloc 217 log metadata auto 218 auto fsr quick 219 auto quota quick +220 enospc auto quick From michael.monnerie@is.it-management.at Thu Oct 1 16:16:36 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=AWL,BAYES_00, MSGID_MULTIPLE_AT autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n91LGYlW123211 for ; Thu, 1 Oct 2009 16:16:36 -0500 X-ASG-Debug-ID: 1254431876-11a002630000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv1.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CD5EF1722E62 for ; Thu, 1 Oct 2009 14:17:57 -0700 (PDT) Received: from mailsrv1.zmi.at (mailsrv5.zmi.at [212.69.164.54]) by cuda.sgi.com with ESMTP id UJDjzKBfWjdmiOD0 for ; Thu, 01 Oct 2009 14:17:57 -0700 (PDT) Received: from mailsrv.i.zmi.at (h081217106033.dyn.cm.kabsi.at [81.217.106.33]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "mailsrv2.i.zmi.at", Issuer "power4u.zmi.at" (not verified)) by mailsrv1.zmi.at (Postfix) with ESMTP id 6102870A; Thu, 1 Oct 2009 23:17:53 +0200 (CEST) Received: from nbzmi (unknown [172.18.0.1]) by mailsrv.i.zmi.at (Postfix) with ESMTPA id 2E543400163; Thu, 1 Oct 2009 23:17:54 +0200 (CEST) From: "Michael Monnerie" To: Cc: References: <4AC45B72.9060500@decisionsoft.co.uk> <200910011244.37489@zmi.at> <4AC4B954.9050303@decisionsoft.co.uk> In-Reply-To: <4AC4B954.9050303@decisionsoft.co.uk> X-ASG-Orig-Subj: RE: Two XFS involving stack traces from Debian's 2.6.26-2-amd64 Subject: RE: Two XFS involving stack traces from Debian's 2.6.26-2-amd64 Date: Thu, 1 Oct 2009 23:17:56 +0200 Message-ID: <000a01ca42dc$a64c7f70$f2e57e50$@monnerie@is.it-management.at> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Mailer: Microsoft Office Outlook 12.0 Thread-Index: AcpCpLAZVvMAnUicSU2IU1ChxJraGgAN4Dyg Content-Language: de-at X-Barracuda-Connect: mailsrv5.zmi.at[212.69.164.54] X-Barracuda-Start-Time: 1254431877 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MSGID_MULTIPLE_AT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10555 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 MSGID_MULTIPLE_AT Message-ID contains multiple '@' characters X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > Thanks, I've changed it as you suggested. It's true a second call > to umount > does unmount it (well it disappears from /proc/mounts anyway). I've had the same problem with a backup script to a NAS. It takes a long = time until the buffers flush or so, a loop with up to 5 umount retries = has to be done. But that works always, at least ;-) =20 > However lvremove still does not succeed because it still believes > the volume to be open. Even after umount? Hm, that smells like a bug. Maybe make umount && sleep 5 && lvremove if that works a timing problem it is, says Yoda. mfg zmi From david@istwok.net Thu Oct 1 18:26:39 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n91NQchj128476 for ; Thu, 1 Oct 2009 18:26:39 -0500 X-ASG-Debug-ID: 1254439680-31c000b00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from cdptpa-omtalb.mail.rr.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 415B449951A for ; Thu, 1 Oct 2009 16:28:00 -0700 (PDT) Received: from cdptpa-omtalb.mail.rr.com (cdptpa-omtalb.mail.rr.com [75.180.132.120]) by cuda.sgi.com with ESMTP id cCpxAlDFsW8FFkza for ; Thu, 01 Oct 2009 16:28:00 -0700 (PDT) Received: from opus ([76.182.216.73]) by cdptpa-omta03.mail.rr.com with ESMTP id <20091001232800148.YQSX26368@cdptpa-omta03.mail.rr.com> for ; Thu, 1 Oct 2009 23:28:00 +0000 Received: from david by opus with local (Exim 4.69) (envelope-from ) id 1MtV43-0003LD-E9; Thu, 01 Oct 2009 18:27:59 -0500 Date: Thu, 1 Oct 2009 18:27:59 -0500 From: David Engel To: xfs@oss.sgi.com X-ASG-Orig-Subj: XFS/driver bug or bad drive? Subject: XFS/driver bug or bad drive? Message-ID: <20091001232759.GA12832@opus.istwok.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: cdptpa-omtalb.mail.rr.com[75.180.132.120] X-Barracuda-Start-Time: 1254439681 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10565 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi, I've been trying to diagnose a suspected disk drive problem for about a week. I now think the problem might be a known (and fixed) xfs or driver bug, but I'm not 100% sure. I'm hoping someone here can confirm the problem is or isn't an xfs bug. The drive in question is a Samsung HD753LJ. I have two of these drives and have had to do three replacements for various reasons in <10 months of use. In short, I don't have a lot of confidence in the drive, even though recent evidence seems to point elsewhere. The problem occurs when I copy several hundred gigabytes of large files (MythTV recordings, to be specific) to the troublesome drive from another drive. When using a stock 2.6.30.8 kernel and xfs, the copy eventually fails because the drive quits responding (and won't respond again until it is power cycled). The failure doesn't always occur at the same point in the copy, but it does always occur. Here is a log sample of one of the failures. Sep 29 17:59:34 tux kernel: XFS mounting filesystem sdb1 Sep 29 17:59:34 tux kernel: Ending clean XFS mount for filesystem: sdb1 Sep 29 18:32:07 tux kernel: ata2.00: exception Emask 0x0 SAct 0xffff SErr 0x0 action 0x6 frozen Sep 29 18:32:07 tux kernel: ata2.00: cmd 61/00:00:af:02:eb/04:00:17:00:00/40 tag 0 ncq 524288 out Sep 29 18:32:07 tux kernel: res 40/00:00:00:4f:c2/00:00:00:00:00/00 Emask 0x4 (timeout) Sep 29 18:32:07 tux kernel: ata2.00: status: { DRDY } Sep 29 18:32:07 tux kernel: ata2.00: cmd 61/00:08:af:06:eb/04:00:17:00:00/40 tag 1 ncq 524288 out Sep 29 18:32:07 tux kernel: res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout) Sep 29 18:32:07 tux kernel: ata2.00: status: { DRDY } Sep 29 18:32:07 tux kernel: ata2.00: cmd 61/00:10:af:0a:eb/04:00:17:00:00/40 tag 2 ncq 524288 out Sep 29 18:32:07 tux kernel: res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout) Sep 29 18:32:07 tux kernel: ata2.00: status: { DRDY } Sep 29 18:32:07 tux kernel: ata2.00: cmd 61/00:18:af:0e:eb/04:00:17:00:00/40 tag 3 ncq 524288 out Sep 29 18:32:07 tux kernel: res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout) Sep 29 18:32:07 tux kernel: ata2.00: status: { DRDY } Sep 29 18:32:07 tux kernel: ata2.00: cmd 61/00:20:af:12:eb/04:00:17:00:00/40 tag 4 ncq 524288 out Sep 29 18:32:07 tux kernel: res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout) Sep 29 18:32:07 tux kernel: ata2.00: status: { DRDY } Sep 29 18:32:07 tux kernel: ata2.00: cmd 61/00:28:af:16:eb/04:00:17:00:00/40 tag 5 ncq 524288 out Sep 29 18:32:07 tux kernel: res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout) Sep 29 18:32:07 tux kernel: ata2.00: status: { DRDY } Sep 29 18:32:07 tux kernel: ata2.00: cmd 61/00:30:af:da:ea/04:00:17:00:00/40 tag 6 ncq 524288 out Sep 29 18:32:07 tux kernel: res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout) Sep 29 18:32:07 tux kernel: ata2.00: status: { DRDY } Sep 29 18:32:07 tux kernel: ata2.00: cmd 61/00:38:af:de:ea/04:00:17:00:00/40 tag 7 ncq 524288 out Sep 29 18:32:07 tux kernel: res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout) Sep 29 18:32:07 tux kernel: ata2.00: status: { DRDY } Sep 29 18:32:07 tux kernel: ata2.00: cmd 61/00:40:af:e2:ea/04:00:17:00:00/40 tag 8 ncq 524288 out Sep 29 18:32:07 tux kernel: res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout) Sep 29 18:32:07 tux kernel: ata2.00: status: { DRDY } Sep 29 18:32:07 tux kernel: ata2.00: cmd 61/00:48:af:e6:ea/04:00:17:00:00/40 tag 9 ncq 524288 out Sep 29 18:32:07 tux kernel: res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout) Sep 29 18:32:07 tux kernel: ata2.00: status: { DRDY } Sep 29 18:32:07 tux kernel: ata2.00: cmd 61/00:50:af:ea:ea/04:00:17:00:00/40 tag 10 ncq 524288 out Sep 29 18:32:07 tux kernel: res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout) Sep 29 18:32:07 tux kernel: ata2.00: status: { DRDY } Sep 29 18:32:07 tux kernel: ata2.00: cmd 61/00:58:af:ee:ea/04:00:17:00:00/40 tag 11 ncq 524288 out Sep 29 18:32:07 tux kernel: res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout) Sep 29 18:32:07 tux kernel: ata2.00: status: { DRDY } Sep 29 18:32:07 tux kernel: ata2.00: cmd 61/00:60:af:f2:ea/04:00:17:00:00/40 tag 12 ncq 524288 out Sep 29 18:32:07 tux kernel: res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout) Sep 29 18:32:07 tux kernel: ata2.00: status: { DRDY } Sep 29 18:32:07 tux kernel: ata2.00: cmd 61/00:68:af:f6:ea/04:00:17:00:00/40 tag 13 ncq 524288 out Sep 29 18:32:07 tux kernel: res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout) Sep 29 18:32:07 tux kernel: ata2.00: status: { DRDY } Sep 29 18:32:07 tux kernel: ata2.00: cmd 61/00:70:af:fa:ea/04:00:17:00:00/40 tag 14 ncq 524288 out Sep 29 18:32:07 tux kernel: res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout) Sep 29 18:32:07 tux kernel: ata2.00: status: { DRDY } Sep 29 18:32:07 tux kernel: ata2.00: cmd 61/00:78:af:fe:ea/04:00:17:00:00/40 tag 15 ncq 524288 out Sep 29 18:32:07 tux kernel: res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout) Sep 29 18:32:07 tux kernel: ata2.00: status: { DRDY } Sep 29 18:32:07 tux kernel: ata2: hard resetting link Sep 29 18:32:17 tux kernel: ata2: softreset failed (device not ready) Sep 29 18:32:17 tux kernel: ata2: hard resetting link Sep 29 18:32:27 tux kernel: ata2: softreset failed (device not ready) Sep 29 18:32:27 tux kernel: ata2: hard resetting link Sep 29 18:32:38 tux kernel: ata2: link is slow to respond, please be patient (ready=0) Sep 29 18:33:02 tux kernel: ata2: softreset failed (device not ready) Sep 29 18:33:02 tux kernel: ata2: limiting SATA link speed to 1.5 Gbps Sep 29 18:33:02 tux kernel: ata2: hard resetting link Sep 29 18:33:07 tux kernel: ata2: softreset failed (device not ready) Sep 29 18:33:07 tux kernel: ata2: reset failed, giving up Sep 29 18:33:07 tux kernel: ata2.00: disabled Sep 29 18:33:07 tux kernel: ata2.00: device reported invalid CHS sector 0 Sep 29 18:33:07 tux last message repeated 15 times Sep 29 18:33:07 tux kernel: ata2: EH complete Sep 29 18:33:07 tux kernel: sd 1:0:0:0: [sdb] Unhandled error code Sep 29 18:33:07 tux kernel: sd 1:0:0:0: [sdb] Result: hostbyte=0x04 driverbyte=0x00 Sep 29 18:33:07 tux kernel: end_request: I/O error, dev sdb, sector 401276591 Sep 29 18:33:07 tux kernel: sd 1:0:0:0: [sdb] Unhandled error code Sep 29 18:33:07 tux kernel: sd 1:0:0:0: [sdb] Result: hostbyte=0x04 driverbyte=0x00 Sep 29 18:33:07 tux kernel: end_request: I/O error, dev sdb, sector 401275567 I finally decided to give some other filesystems a try to see if anything changed. Low and behold it did. Still using a stock 2.6.30.8 kernel, but with ext3, ext4 and jfs filesystems, the large copy succeeded everytime! I then decided to try a stock 2.6.31.1 kernel with xfs. It worked fine, too! My question, now, is -- is this problem a known xfs bug that was fixed in 2.6.31.x? I glanced through the code changes and git log and didn't see any smoking gun. If it's not an xfs bug, does anyone know if it might be a block driver bug (ata/ahci, in this case) that was only tickled by xfs? David -- David Engel david@istwok.net From sandeen@sandeen.net Thu Oct 1 19:38:36 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n920cZNw131502 for ; Thu, 1 Oct 2009 19:38:35 -0500 X-ASG-Debug-ID: 1254443996-4a0800120000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 705F714BD647 for ; Thu, 1 Oct 2009 17:39:57 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id GGz1RJwHzSulNqp8 for ; Thu, 01 Oct 2009 17:39:57 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 73103A8BB2E; Thu, 1 Oct 2009 19:39:54 -0500 (CDT) Message-ID: <4AC54BDA.20806@sandeen.net> Date: Thu, 01 Oct 2009 19:39:54 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: David Engel CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS/driver bug or bad drive? Subject: Re: XFS/driver bug or bad drive? References: <20091001232759.GA12832@opus.istwok.net> In-Reply-To: <20091001232759.GA12832@opus.istwok.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1254443998 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10570 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean David Engel wrote: > Hi, > > I've been trying to diagnose a suspected disk drive problem for about > a week. I now think the problem might be a known (and fixed) xfs or > driver bug, but I'm not 100% sure. I'm hoping someone here can > confirm the problem is or isn't an xfs bug. > > The drive in question is a Samsung HD753LJ. I have two of these > drives and have had to do three replacements for various reasons in > <10 months of use. In short, I don't have a lot of confidence in the > drive, even though recent evidence seems to point elsewhere. > > The problem occurs when I copy several hundred gigabytes of large > files (MythTV recordings, to be specific) to the troublesome drive > from another drive. When using a stock 2.6.30.8 kernel and xfs, the > copy eventually fails because the drive quits responding (and won't > respond again until it is power cycled). The failure doesn't always > occur at the same point in the copy, but it does always occur. Here > is a log sample of one of the failures. > > Sep 29 17:59:34 tux kernel: XFS mounting filesystem sdb1 > Sep 29 17:59:34 tux kernel: Ending clean XFS mount for filesystem: sdb1 > Sep 29 18:32:07 tux kernel: ata2.00: exception Emask 0x0 SAct 0xffff SErr 0x0 action 0x6 frozen > Sep 29 18:32:07 tux kernel: ata2.00: cmd 61/00:00:af:02:eb/04:00:17:00:00/40 tag 0 ncq 524288 out > Sep 29 18:32:07 tux kernel: res 40/00:00:00:4f:c2/00:00:00:00:00/00 Emask 0x4 (timeout) > Sep 29 18:32:07 tux kernel: ata2.00: status: { DRDY } ... > Sep 29 18:32:07 tux kernel: ata2: hard resetting link > Sep 29 18:32:17 tux kernel: ata2: softreset failed (device not ready) ... > Sep 29 18:33:07 tux kernel: ata2.00: disabled > Sep 29 18:33:07 tux kernel: ata2.00: device reported invalid CHS sector 0 > Sep 29 18:33:07 tux last message repeated 15 times > Sep 29 18:33:07 tux kernel: ata2: EH complete > Sep 29 18:33:07 tux kernel: sd 1:0:0:0: [sdb] Unhandled error code > Sep 29 18:33:07 tux kernel: sd 1:0:0:0: [sdb] Result: hostbyte=0x04 driverbyte=0x00 > Sep 29 18:33:07 tux kernel: end_request: I/O error, dev sdb, sector 401276591 > Sep 29 18:33:07 tux kernel: sd 1:0:0:0: [sdb] Unhandled error code > Sep 29 18:33:07 tux kernel: sd 1:0:0:0: [sdb] Result: hostbyte=0x04 driverbyte=0x00 > Sep 29 18:33:07 tux kernel: end_request: I/O error, dev sdb, sector 401275567 These are all storage errors, not xfs. I suppose it could be differing IO patterns from one fs or the other that trips it up, but nothing above is related to an xfs bug; any xfs problems are in response to the above IO errors, maybe a hardware problem or a driver problem, not sure - but most likely a hardware issue I think. You might point smartctl at the drive and see what it says. -Eric > I finally decided to give some other filesystems a try to see if > anything changed. Low and behold it did. Still using a stock > 2.6.30.8 kernel, but with ext3, ext4 and jfs filesystems, the large > copy succeeded everytime! I then decided to try a stock 2.6.31.1 > kernel with xfs. It worked fine, too! > > My question, now, is -- is this problem a known xfs bug that was fixed > in 2.6.31.x? I glanced through the code changes and git log and > didn't see any smoking gun. If it's not an xfs bug, does anyone know > if it might be a block driver bug (ata/ahci, in this case) that was > only tickled by xfs? > > David From realrichardsharpe@gmail.com Fri Oct 2 00:07:27 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n9257Rn5146722 for ; Fri, 2 Oct 2009 00:07:27 -0500 X-ASG-Debug-ID: 1254460129-51de00ff0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f216.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 931D3499FF6 for ; Thu, 1 Oct 2009 22:08:49 -0700 (PDT) Received: from mail-bw0-f216.google.com (mail-bw0-f216.google.com [209.85.218.216]) by cuda.sgi.com with ESMTP id HaHxQuIkqqYDoZPT for ; Thu, 01 Oct 2009 22:08:49 -0700 (PDT) Received: by bwz12 with SMTP id 12so701083bwz.20 for ; Thu, 01 Oct 2009 22:08:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:cc:content-type:content-transfer-encoding; bh=A+HxvF56N8znZubN3vP/f+3j2Kb/fWkd8WeWuXpsUAg=; b=ZnXzKDDi4NMg4cczwHw9yLFH2v3Q2C8mnwIl3Y2unvFhm4n1IkxPy8wSsnrNqOS4G7 IVXSc4hM/fgvu/hwlLlRo1GdiW6D6qKOM0V2vs6I5F8kocvDD/RlEv2oLy89YAbjdtVT wxObHC/5iDVKsDhl2RsbDc72ly73H5C8xjWiA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=m2xJ4XBgVIqK5fGm9qJ2vPOFnrtoU5BPOb6aT9nVK52t/ELioHRgRdzXwg5rdrzBbS qS0E74FKznpl7PXZ6Z42bLKYCE3YLQRS3WvMezsB4NMjLzMiItVFcWonn/9e4JXCxLHg V+GUlAB94sDF9CzzyRKANed80FCYNYwXF+ro4= MIME-Version: 1.0 Received: by 10.204.174.209 with SMTP id u17mr789969bkz.7.1254460128827; Thu, 01 Oct 2009 22:08:48 -0700 (PDT) Date: Thu, 1 Oct 2009 22:08:48 -0700 Message-ID: <46b8a8850910012208n789eeacfva03c0cf404201f0d@mail.gmail.com> X-ASG-Orig-Subj: Apology: Was: Re: Possible small bug in xfsprogs-dev/db/metadump.c Subject: Apology: Was: Re: Possible small bug in xfsprogs-dev/db/metadump.c From: Richard Sharpe To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-bw0-f216.google.com[209.85.218.216] X-Barracuda-Start-Time: 1254460130 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10587 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Sep 29, 2009 at 5:16 PM, Dave Chinner wrote: > On Tue, Sep 29, 2009 at 08:45:56AM -0700, Richard Sharpe wrote: >> However, now I understand what is going on. >> >> Assume a free space tree with levels =3D 3 (from the AGF). However, not >> all leaf nodes will be at depth 3 in the tree, some will be at depth 2 >> in the tree. > > No, that is not possible. By definition, a consistent filesystem > image has all leaf nodes at level zero. I got back to this today and reproduced my test case, and you are correct. [some deletia] > This sounds to me like the log has not been replayed on this > filesystem. AFAICT, when looking at a raw disk image of an XFS > filesystem, the only way to get leaf nodes at non-zero levels is to > have a dirty log. i.e. the log contains allocation/free transactions > that have resulted in a multi-level rebalance of the tree > that have not been replayed and written to disk and hence on-disk > image of the tree is unbalanced. When the log is replayed, the > on disk image will get updated and the tree will appear balanced > with all leaves at level 0. Dunno. I just umounted again ... >> However, if the user does "metadump -w" they will see warnings that >> are bogus and suggests that the author was not really aware of the >> real structure of the tree. > > I think he was aware of the structure. ;) It was, in fact, I who was confused ... I apologize for the statement I mad= e. > It seems to me that you are trying to use the wrong tool to walk > free space trees and interpret the number of extents. =A0xfs_metadump > is intended to capture the exact layout of the filesystem metadata > so that it can be reproduced exactly in a different environment. It > was not intended as a method of interpreting the potentially > inconsistent metadata that it records. > > xfs_db does what you are trying to do. It already has commands that > walk the per AG free space trees and tells you the number of > extents, gives an extent size histogram, etc.... > > Cheers, > > Dave. --=20 Regards, Richard Sharpe From grbounce-20eG2AUAAADtFDkDy0F0v4pwdWiANwQa=xfs=oss.sgi.com@googlegroups.com Fri Oct 2 02:50:27 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.6 required=5.0 tests=AWL,BAYES_50,MIME_8BIT_HEADER, MIME_BASE64_TEXT autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n927oQNn153742 for ; Fri, 2 Oct 2009 02:50:26 -0500 X-ASG-Debug-ID: 1254469909-582c01530000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-vw0-f152.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A7CD61726CEB for ; Fri, 2 Oct 2009 00:51:49 -0700 (PDT) Received: from mail-vw0-f152.google.com (mail-vw0-f152.google.com [209.85.212.152]) by cuda.sgi.com with ESMTP id Ft4EPH6J7xFMvMAC for ; Fri, 02 Oct 2009 00:51:49 -0700 (PDT) Received: by vws16 with SMTP id 16so1143194vws.4 for ; Fri, 02 Oct 2009 00:51:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=beta; h=domainkey-signature:received:from:to:subject:x-google-loop:date :mime-version:content-type:content-transfer-encoding; bh=AFIg4AGRrYVPcF21kNfQLazGqUH2VDfQv25td4emHGY=; b=SS6931HcENpg3FO2at0VCx295FhtJpDcqHl8h4ZeHKAdik0/bS+eA9cP9pjX5w8R4s /kpGxxlSJC7sL1nROnWWEdCK1NaPlRO3w8XqcIUi7ib/VB1NrT9nTixeB1NSKQ6zlyFR eefXCUSTk7VetmUIOFO5At28LTLb5wdKj681Y= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlegroups.com; s=beta; h=from:to:subject:x-google-loop:date:mime-version:content-type :content-transfer-encoding; b=0iuSwr+LYMe9Ieo8EKypW+SzhXedy3prvuQF4XiH6lE/auy/M7PyaYFXL/9vZ53415 aB8MaJMNuI1VQixJGjM2iBz0VAa1oDYXdKvx46jCnMUz/5WX4KCA1Y9iGKbSeBuUCR6v ZU+p3eXzgSFB5sSHTCeIANw3ujBcg+MghdGDY= Received: by 10.220.68.201 with SMTP id w9mr485407vci.15.1254469908880; Fri, 02 Oct 2009 00:51:48 -0700 (PDT) From: noreply@googlegroups.com To: xfs@oss.sgi.com X-ASG-Orig-Subj: =?windows-1256?B?48zj5trHyiBHb29nbGU6IOHezyDK48ogxdbH3crfIMXh7CDH4ePN48/t5Q==?= Subject: =?windows-1256?B?48zj5trHyiBHb29nbGU6IOHezyDK48ogxdbH3crfIMXh7CDH4ePN48/t5Q==?= X-Google-Loop: sub_directadd Date: Fri, 02 Oct 2009 07:51:48 +0000 Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1256 Content-Transfer-Encoding: base64 X-Barracuda-Connect: mail-vw0-f152.google.com[209.85.212.152] X-Barracuda-Start-Time: 1254469909 Message-Id: <20091002075149.A7CD61726CEB@cuda.sgi.com> X-Barracuda-Bayes: INNOCENT GLOBAL 0.0139 1.0000 -1.9306 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.41 X-Barracuda-Spam-Status: No, SCORE=-1.41 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MIME_BASE64_TEXT, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10599 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 0.52 MIME_BASE64_TEXT RAW: Message text disguised using base64 encoding X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean bW9oYW1tZWQgMjAwOSBtLnBhbC5raDIxQGdtYWlsLmNvbSDex+MvyiDIxdbH3crfIMXh7CDjzOPm 2skgx+HjzePP7eUg49og5dDlIArH4dHTx+HJOgogCiDd1uHHIubh7dMgw+PRxyIgCt7hOiDTyM3H 5CDH4eHlIObIzePP5SDTyM3H5CDH4eHlIMfh2tnt4wogw8rP0e0g48fQxyDN1eEg4d7PINLR2sog 4d8g5M7h5SDd7SDH4czkyQogw9PG4SDH4eHlIMfh2tnt4yDRyCDH4drR1CDH4drZ7eMgw+Qg7cza 4eUg3ewg4+3Sx+QgzdPkx8rfIArmIN3sIOPt0sfkIM3T5MfKIN/hIMfh49Ph4+3kIMfM49rt5CDH 4e0g7ebjIMfhz+3kCsfh4eXjIMXb3dEg4ewg5uHh48Tj5O3kIObH4ePE4+THyiDm4eHj0+Hj7eQg 5sfh49Ph48fKCsfhw83tx8Eg4+Tl4yDmx+HD4+bHygrmx+HN488g4eHlINLkySDa0dTlIObaz88g zuHe5SDm48/HzyDf4ePHyuUK5sfTytvd0SDH4eHlINrPzyDNyMfKIMfh0ePhIObe2NHHyiDH4ePY 0QogCt3t48cg7eHtIObV3SDH4ePM4+bayTogCiAKIOPM4+ba5SDH2uHH5O3lCiAKIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tIOPa4ebjx8ogzebhIOPM4+bax8ogR29vZ2xlIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KCuHezyDK4yDK2u3t5CDk5togx9TK0cff3yDF4ewgIsjR7c8gxeHfytHm5O0iIOPk IN7I4SDj1NHdIMfh48zj5trJoSDj48cg7drk7SAKw+TlINPK1eHfIOTTzskg4+Qg3+Eg0dPH4ckg yt7m4yDIxdHTx+HlxyDF4ewgx+HjzOPm2skgyOPM0c8gxdHTx+HlxwoKCiAKIN7jIMjS7cfRySDl 0OUgx+HjzOPm2skg2uHsIMfh1MjfySDIx9PKzs/H4yDl0Mcgx+HH0crIx9g6CiAKIGh0dHA6Ly9n cm91cHMuZ29vZ2xlLmNvbS9ncm91cC9hbG1obWFkP2hsPWFyCiAKIO3j3+TfIMXh28fBIMfUytHH 398g3e0g5dDlIMfh48zj5trJIMjH08rOz8fjIOXQxyDH4cfRysjH2DoKIAogaHR0cDovL2dyb3Vw cy5nb29nbGUuY29tL2dyb3VwL2FsbWhtYWQvdW5zdWI/dT1xbkxtVFF3QUFBRGRqdy1jLXQ4QTM4 MXVhREJpelB4VCZobD1hcgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLSDj2uHm48fKIM3m4SDl0OUg x+HR08fhySAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCiDF0Mcg3+TKIMrR7CDD5CDl0OUgx+HR08fh ySDl7SDkyu3MySDT5sEgx9PKzs/H46Eg7dHM7CDFzsjH0SDDzc8gx+Hax+Ph7eQg3e0gCuPM4+ba x8ogR29vZ2xlINrI0SDH4cfRysjH2CDH4crH4e0uIAogaHR0cDovL2dyb3Vwcy5nb29nbGUuY29t L2dyb3Vwcy9hYnVzZT9kaXJlY3Q9WVFBQUFOQ3dlT1NJQUFBQWE5Y2dOMjhBQUFCb1dWdmxWamFI SXFDYnIxZWllem5BdWg4U3NaUSZobD1hcgo= From michael.monnerie@is.it-management.at Fri Oct 2 03:05:44 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n9285hEf154515 for ; Fri, 2 Oct 2009 03:05:44 -0500 X-ASG-Debug-ID: 1254470824-5354029e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv1.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3367A14BE362 for ; Fri, 2 Oct 2009 01:07:04 -0700 (PDT) Received: from mailsrv1.zmi.at (mailsrv5.zmi.at [212.69.164.54]) by cuda.sgi.com with ESMTP id SxLUZu32FppXayDx for ; Fri, 02 Oct 2009 01:07:04 -0700 (PDT) Received: from mailsrv.i.zmi.at (h081217106033.dyn.cm.kabsi.at [81.217.106.33]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "mailsrv2.i.zmi.at", Issuer "power4u.zmi.at" (not verified)) by mailsrv1.zmi.at (Postfix) with ESMTP id 57628729 for ; Fri, 2 Oct 2009 10:07:00 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.72.27.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv.i.zmi.at (Postfix) with ESMTPSA id F3FA140016F for ; Fri, 2 Oct 2009 10:07:01 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS/driver bug or bad drive? Subject: Re: XFS/driver bug or bad drive? Date: Fri, 2 Oct 2009 10:05:40 +0200 User-Agent: KMail/1.10.3 (Linux/2.6.30.5-ZMI; KDE/4.1.3; x86_64; ; ) References: <20091001232759.GA12832@opus.istwok.net> In-Reply-To: <20091001232759.GA12832@opus.istwok.net> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Message-Id: <200910021005.40697@zmi.at> X-Barracuda-Connect: mailsrv5.zmi.at[212.69.164.54] X-Barracuda-Start-Time: 1254470826 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10600 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Freitag 02 Oktober 2009 David Engel wrote: > The drive in question is a Samsung HD753LJ. =A0I have two of these > drives and have had to do three replacements for various reasons in > <10 months of use. Yes, that Samsung crap. Of the very few drives we had (the 1TB version),=20 all got broken quickly, and we replaced them with Hitachis. It's a pity,=20 as they had a nice price, but when they it your data, it's priceless. mfg zmi =2D-=20 // Michael Monnerie, Ing.BSc ----- http://it-management.at // Tel: 0660 / 415 65 31 .network.your.ideas. // PGP Key: "curl -s http://zmi.at/zmi.asc | gpg --import" // Fingerprint: AC19 F9D5 36ED CD8A EF38 500E CE14 91F7 1C12 09B4 // Keyserver: wwwkeys.eu.pgp.net Key-ID: 1C1209B4 From bas@news-service.com Fri Oct 2 09:23:53 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n92ENqG3181035 for ; Fri, 2 Oct 2009 09:23:53 -0500 X-ASG-Debug-ID: 1254493512-2a2f002d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pu01.news-service.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EC50F49B82F for ; Fri, 2 Oct 2009 07:25:12 -0700 (PDT) Received: from pu01.news-service.com (ns1.news-service.com [195.114.240.3]) by cuda.sgi.com with ESMTP id 4azcRaQKwAWKdY2X for ; Fri, 02 Oct 2009 07:25:12 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by pu01.news-service.com (Postfix) with ESMTP id 9CAB1626A8; Fri, 2 Oct 2009 16:24:41 +0200 (CEST) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: Debian amavisd-new at pu01.news-service.com Received: from pu01.news-service.com ([127.0.0.1]) by localhost (pu01.nse [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TFGnIRpXkiyf; Fri, 2 Oct 2009 16:24:41 +0200 (CEST) Received: from [172.25.0.21] (amon-ra.nse [172.25.0.21]) by pu01.news-service.com (Postfix) with ESMTP id F219D626A6; Fri, 2 Oct 2009 16:24:39 +0200 (CEST) Message-ID: <4AC60D27.9060703@news-service.com> Date: Fri, 02 Oct 2009 16:24:39 +0200 From: Bas Couwenberg User-Agent: Thunderbird 2.0.0.23 (X11/20090817) MIME-Version: 1.0 To: Christoph Hellwig CC: Patrick Schreurs , Tommy van Leeuwen , XFS List X-ASG-Orig-Subj: Re: 2.6.31 xfs_fs_destroy_inode: cannot reclaim Subject: Re: 2.6.31 xfs_fs_destroy_inode: cannot reclaim In-Reply-To: <20090930124104.GA7463@infradead.org> Content-Type: multipart/mixed; boundary="------------010304030605060907030303" X-Barracuda-Connect: ns1.news-service.com[195.114.240.3] X-Barracuda-Start-Time: 1254493513 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0205 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.02 X-Barracuda-Spam-Status: No, SCORE=-1.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, BSF_RULE_7582B X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10625 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M 0.50 BSF_RULE_7582B Custom Rule 7582B X-Virus-Status: Clean This is a multi-part message in MIME format. --------------010304030605060907030303 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Dear Christoph, Yesterday two of our servers (2.6.31.1 + your patch) crashed again, this time we have a bigger console, but not the full backtrace unfortunately. I did manage to get some more calltrace info from the logs, which I have attached together with the screenshots of the crashscreens. I hope this info helps you. Kind Regards, Bas Couwenberg -- News-Service.com - European Usenet Provider Luttenbergweg 4, 1101 EC Amsterdam P.O BOX: 12026 1100 AA, Netherlands http://www.news-service.com +31(0)20 398 1111 --------------010304030605060907030303 Content-Type: image/jpeg; name="sb05-20091001.jpg" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="sb05-20091001.jpg" /9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR CAHgAoADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl 5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk 5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5/rsvFF3cXGjaStpqcb2Mel28dxbx3qf6 wdQYt2SR8vbjHtU2uXzTxXDaNqtlbeHmswsNhLIpZeRmMxYLebvy2/B9d9Jfad4bRNSEP2IW EdkHsbtLwtcyzYTAaPecZJYEbBj260AZc9zA/g2ODTZ47fa4/tG3kcCW4fPyOD/HGP7gHynk 5+9WvqupWVl4EsLXTCqfaBKJ4PtkMzLuZWUyqEyzbV4YBSmAM54q5enSrbwrr+naXc2X2KRL aW0LXoMtwRtaRmRn+VuOgVSemDgVT1ix8JW1jdtZKJovs6/ZZo5087zCFwXBmyechgIgRk4x jNIA1XUrKy8CWFrphVPtAlE8H2yGZl3MrKZVCZZtq8MApTAGc8UarqVlZeBLC10wqn2gSieD 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 --------------010304030605060907030303 Content-Type: image/jpeg; name="sb06-20091001.jpg" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="sb06-20091001.jpg" /9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR CAHgAoADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl 5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk 5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5/rsrq7uH8A6Lb6fqccflJdfbIFvUjYqX yAyFgWyN2Bg9feuNrsrq7uH8A6Lb6fqccflJdfbIFvUjYqXyAyFgWyN2Bg9fegChp1zAvhS+ gsZ47TUjk3TTOA1zB/ciY4C4P3k6t2JxtrXsNSstL+H8ktkVivZbj97GbyFnkXyymWjKZaPc T+7IJ5znvWRp1zAvhS+gsZ47TUjk3TTOA1zB/ciY4C4P3k6t2JxtrW0/UbPS/h/JLZlY76W4 PmRm8hZ5F8sployhLR7if3ZBPOc45oAWw1Ky0v4fyS2RWK9luP3sZvIWeRfLKZaMplo9xP7s gnnOe9Jp+o2el/D+SWzKx30twfMjN5CzyL5ZTLRlCWj3E/uyCec5xzRp+o2el/D+SWzKx30t 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 KAP/2Q== --------------010304030605060907030303 Content-Type: text/x-log; name="sb06-kernel.log" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="sb06-kernel.log" Oct 1 22:44:01 sb06 kernel: Oct 1 22:44:01 sb06 kernel: Call Trace: Oct 1 22:44:01 sb06 kernel: [] ? xfs_bmap_read_extents+0x274/0x30c Oct 1 22:44:01 sb06 kernel: [] ? xfs_bmapi+0x25d/0xea8 Oct 1 22:44:01 sb06 kernel: [] ? swiotlb_map_page+0x73/0xe1 Oct 1 22:44:01 sb06 kernel: [] ? find_get_page+0x1a/0x77 Oct 1 22:44:01 sb06 kernel: [] ? find_or_create_page+0x2d/0x88 Oct 1 22:44:01 sb06 kernel: [] ? xfs_iomap+0x145/0x284 Oct 1 22:44:01 sb06 kernel: [] ? __xfs_get_blocks+0x6c/0x15c Oct 1 22:44:01 sb06 kernel: [] ? xfs_get_blocks+0x0/0xe Oct 1 22:44:01 sb06 kernel: [] ? xfs_get_blocks+0x0/0xe Oct 1 22:44:01 sb06 kernel: [] ? mpage_readpages+0xbd/0xff Oct 1 22:44:01 sb06 kernel: [] ? xfs_iread+0x152/0x166 Oct 1 22:44:01 sb06 kernel: [] ? bit_waitqueue+0x10/0x8b Oct 1 22:44:01 sb06 kernel: [] ? __do_page_cache_readahead+0x125/0x1b1 Oct 1 22:44:01 sb06 kernel: [] ? ondemand_readahead+0x11f/0x1a7 Oct 1 22:44:01 sb06 kernel: [] ? do_mpage_readpage+0x163/0x486 Oct 1 22:44:01 sb06 kernel: [] ? radix_tree_insert+0xd7/0x19f Oct 1 22:44:01 sb06 kernel: [] ? add_to_page_cache_locked+0x72/0x98 Oct 1 22:44:01 sb06 kernel: [] ? xfs_get_blocks+0x0/0xe Oct 1 22:44:01 sb06 kernel: [] ? xfs_read+0x16e/0x1de Oct 1 22:44:01 sb06 kernel: [] ? do_sync_read+0xce/0x113 Oct 1 22:44:01 sb06 kernel: [] ? sys_read+0x45/0x6e Oct 1 22:44:01 sb06 kernel: BUG: unable to handle kernel NULL pointer dereference at 0000000000000001 Oct 1 22:44:01 sb06 kernel: IP: [] xfs_dir2_sf_lookup+0xe3/0x219 Oct 1 22:44:01 sb06 kernel: Oops: 0000 [#1] SMP Oct 1 22:44:01 sb06 kernel: CPU 2 Oct 1 22:44:01 sb06 kernel: Pid: 6804, comm: diablo Not tainted 2.6.31.1xfspatch #4 PowerEdge 1950 Oct 1 22:44:01 sb06 kernel: RSP: 0018:ffff88017ce8db68 EFLAGS: 00010202 Oct 1 22:44:01 sb06 kernel: RAX: 0000000000000006 RBX: 0000000000000000 RCX: 00000000e62cdb77 Oct 1 22:44:01 sb06 kernel: RDX: 00000000e62cc212 RSI: 0000000000000002 RDI: ffff88017ce8dbb8 Oct 1 22:44:01 sb06 kernel: [] ? xfs_get_blocks+0x0/0xe Oct 1 22:44:01 sb06 kernel: [] ? __alloc_pages_nodemask+0xf8/0x524 Oct 1 22:44:01 sb06 kernel: FS: 0000000001369860(0063) GS:ffff880028066000(0000) knlGS:0000000000000000 Oct 1 22:44:01 sb06 kernel: [] ? generic_file_aio_read+0x1ff/0x548 Oct 1 22:44:01 sb06 kernel: [] ? autoremove_wake_function+0x0/0x2e Oct 1 22:44:01 sb06 kernel: [] ? vfs_read+0xaa/0x146 Oct 1 22:44:01 sb06 kernel: [] ? system_call_fastpath+0x16/0x1b Oct 1 22:44:01 sb06 kernel: PGD 17ce81067 PUD 17ce82067 PMD 0 Oct 1 22:44:01 sb06 kernel: last sysfs file: /sys/devices/system/cpu/cpu3/cache/index2/shared_cpu_map Oct 1 22:44:01 sb06 kernel: Modules linked in: acpi_cpufreq cpufreq_ondemand ipmi_si ipmi_devintf ipmi_msghandler bonding serio_raw mptspi rng_core scsi_transport_spi bnx2 processor thermal 8250_pnp 8250 serial_core thermal_sys Oct 1 22:44:01 sb06 kernel: RIP: 0010:[] [] xfs_dir2_sf_lookup+0xe3/0x219 Oct 1 22:44:01 sb06 kernel: CR2: 0000000000000001 CR3: 000000017ce80000 CR4: 00000000000006a0 Oct 1 22:44:01 sb06 kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 Oct 1 22:44:01 sb06 kernel: RBP: 0000000000000000 R08: ffff880005cc3c00 R09: ffff88022d867080 Oct 1 22:44:01 sb06 kernel: R10: ffffffff813457b0 R11: ffff88017f661cd0 R12: ffff88017ce8dbb8 Oct 1 22:44:01 sb06 kernel: R13: 0000000000000000 R14: 0000000000000000 R15: ffff88017ce8dc98 Oct 1 22:44:01 sb06 kernel: Process diablo (pid: 6804, threadinfo ffff88017ce8c000, task ffff88022d867080) Oct 1 22:44:01 sb06 kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b Oct 1 22:44:01 sb06 kernel: <0> 0000000000000000 0000000000000000 ffff88017ce8dc98 ffffffff810f2754 Oct 1 22:44:01 sb06 kernel: <0> ffff8800a540b900 ffff88022d8672f8 ffff880154034e20 0000000000000006 Oct 1 22:44:01 sb06 kernel: [] ? xfs_dir_lookup+0xa5/0x147 Oct 1 22:44:01 sb06 kernel: [] ? do_lookup+0xd5/0x1b3 Oct 1 22:44:01 sb06 kernel: [] ? __link_path_walk+0x966/0xe0d Oct 1 22:44:01 sb06 kernel: [] ? get_empty_filp+0x70/0x119 Oct 1 22:44:01 sb06 kernel: [] ? path_walk+0x66/0xca Oct 1 22:44:01 sb06 kernel: [] ? alloc_fd+0x67/0x10b Oct 1 22:44:01 sb06 kernel: [] ? system_call_fastpath+0x16/0x1b Oct 1 22:44:01 sb06 kernel: RIP [] xfs_dir2_sf_lookup+0xe3/0x219 Oct 1 22:44:01 sb06 kernel: CR2: 0000000000000001 Oct 1 22:44:01 sb06 kernel: DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 Oct 1 22:44:01 sb06 kernel: Stack: Oct 1 22:44:01 sb06 kernel: 00000000000107c0 ffff880005cc3c00 0000000000000000 ffff88017ce8dbb8 Oct 1 22:44:01 sb06 kernel: Call Trace: Oct 1 22:44:01 sb06 kernel: [] ? xfs_lookup+0x47/0xa3 Oct 1 22:44:01 sb06 kernel: [] ? xfs_vn_lookup+0x3c/0x7b Oct 1 22:44:01 sb06 kernel: [] ? do_lookup+0x63/0x1b3 Oct 1 22:44:01 sb06 kernel: [] ? dput+0x23/0x13d Oct 1 22:44:01 sb06 kernel: [] ? do_path_lookup+0x20/0x41 Oct 1 22:44:01 sb06 kernel: [] ? do_filp_open+0xe3/0x92a Oct 1 22:44:01 sb06 kernel: [] ? do_sys_open+0x55/0x103 Oct 1 22:44:01 sb06 kernel: Code: 18 09 c2 0f b6 43 07 c1 e0 10 09 c2 0f b6 43 08 c1 e0 08 09 c2 48 09 d1 49 89 4c 24 28 41 c7 44 24 7c 01 00 00 00 e9 d2 00 00 00 <80> 7b 01 01 19 c0 45 31 ff 83 e0 fc 45 31 ed 83 c0 0a 48 98 48 Oct 1 22:44:01 sb06 kernel: RSP Oct 1 22:44:01 sb06 kernel: ---[ end trace 6e14835b29b5648a ]--- Oct 1 22:44:01 sb06 kernel: Filesystem "sdt": XFS internal error xfs_bmap_read_extents(1) at line 4648 of file fs/xfs/xfs_bmap.c. Caller 0xffffffff81101202 Oct 1 22:44:01 sb06 kernel: Pid: 6771, comm: diablo Not tainted 2.6.31.1xfspatch #4 Oct 1 22:44:01 sb06 kernel: [] ? xfs_iread_extents+0xac/0xc8 Oct 1 22:44:01 sb06 kernel: [] ? xfs_iread_extents+0xac/0xc8 Oct 1 22:44:01 sb06 kernel: [] ? xfs_iext_bno_to_ext+0xba/0x140 Oct 1 22:44:01 sb06 kernel: [] ? bnx2_start_xmit+0x19a/0x3db [bnx2] Oct 1 22:44:01 sb06 kernel: [] ? find_lock_page+0x15/0x50 Oct 1 22:44:01 sb06 kernel: [] ? __down_write_nested+0x15/0x9d Oct 1 22:44:01 sb06 kernel: [] ? kmem_zone_alloc+0x5e/0xa4 Oct 1 22:44:01 sb06 kernel: [] ? find_or_create_page+0x2d/0x88 Oct 1 22:44:01 sb06 kernel: Filesystem "sdt": corrupt dinode 1208050920, (btree extents). Unmount and run xfs_repair. Oct 1 22:44:01 sb06 kernel: Oct 1 22:44:01 sb06 kernel: Call Trace: Oct 1 22:44:01 sb06 kernel: [] ? xfs_bmap_read_extents+0x274/0x30c Oct 1 22:44:01 sb06 kernel: [] ? xfs_bmapi+0x25d/0xea8 Oct 1 22:44:01 sb06 kernel: [] ? swiotlb_map_page+0x73/0xe1 Oct 1 22:44:01 sb06 kernel: [] ? find_get_page+0x1a/0x77 Oct 1 22:44:01 sb06 kernel: [] ? find_or_create_page+0x2d/0x88 Oct 1 22:44:01 sb06 kernel: [] ? xfs_iomap+0x145/0x284 Oct 1 22:44:01 sb06 kernel: [] ? __xfs_get_blocks+0x6c/0x15c Oct 1 22:44:01 sb06 kernel: [] ? xfs_get_blocks+0x0/0xe Oct 1 22:44:01 sb06 kernel: [] ? xfs_get_blocks+0x0/0xe Oct 1 22:44:01 sb06 kernel: [] ? mpage_readpages+0xbd/0xff Oct 1 22:44:01 sb06 kernel: [] ? xfs_iread+0x152/0x166 Oct 1 22:44:01 sb06 kernel: [] ? bit_waitqueue+0x10/0x8b Oct 1 22:44:01 sb06 kernel: [] ? __do_page_cache_readahead+0x125/0x1b1 Oct 1 22:44:01 sb06 kernel: [] ? ondemand_readahead+0x11f/0x1a7 Oct 1 22:44:01 sb06 kernel: [] ? do_mpage_readpage+0x163/0x486 Oct 1 22:44:01 sb06 kernel: [] ? radix_tree_insert+0xd7/0x19f Oct 1 22:44:01 sb06 kernel: [] ? add_to_page_cache_locked+0x72/0x98 Oct 1 22:44:01 sb06 kernel: [] ? xfs_get_blocks+0x0/0xe Oct 1 22:44:01 sb06 kernel: [] ? xfs_read+0x16e/0x1de Oct 1 22:44:01 sb06 kernel: [] ? do_sync_read+0xce/0x113 Oct 1 22:44:01 sb06 kernel: [] ? sys_read+0x45/0x6e Oct 1 22:44:01 sb06 kernel: BUG: unable to handle kernel NULL pointer dereference at 0000000000000001 Oct 1 22:44:01 sb06 kernel: IP: [] xfs_dir2_sf_lookup+0xe3/0x219 Oct 1 22:44:01 sb06 kernel: Oops: 0000 [#1] SMP Oct 1 22:44:01 sb06 kernel: CPU 2 Oct 1 22:44:01 sb06 kernel: Pid: 6804, comm: diablo Not tainted 2.6.31.1xfspatch #4 PowerEdge 1950 Oct 1 22:44:01 sb06 kernel: RSP: 0018:ffff88017ce8db68 EFLAGS: 00010202 Oct 1 22:44:01 sb06 kernel: RAX: 0000000000000006 RBX: 0000000000000000 RCX: 00000000e62cdb77 Oct 1 22:44:01 sb06 kernel: RDX: 00000000e62cc212 RSI: 0000000000000002 RDI: ffff88017ce8dbb8 Oct 1 22:44:01 sb06 kernel: [] ? xfs_get_blocks+0x0/0xe Oct 1 22:44:01 sb06 kernel: [] ? __alloc_pages_nodemask+0xf8/0x524 Oct 1 22:44:01 sb06 kernel: FS: 0000000001369860(0063) GS:ffff880028066000(0000) knlGS:0000000000000000 Oct 1 22:44:01 sb06 kernel: [] ? generic_file_aio_read+0x1ff/0x548 Oct 1 22:44:01 sb06 kernel: [] ? autoremove_wake_function+0x0/0x2e Oct 1 22:44:01 sb06 kernel: [] ? vfs_read+0xaa/0x146 Oct 1 22:44:01 sb06 kernel: [] ? system_call_fastpath+0x16/0x1b Oct 1 22:44:01 sb06 kernel: PGD 17ce81067 PUD 17ce82067 PMD 0 Oct 1 22:44:01 sb06 kernel: last sysfs file: /sys/devices/system/cpu/cpu3/cache/index2/shared_cpu_map Oct 1 22:44:01 sb06 kernel: Modules linked in: acpi_cpufreq cpufreq_ondemand ipmi_si ipmi_devintf ipmi_msghandler bonding serio_raw mptspi rng_core scsi_transport_spi bnx2 processor thermal 8250_pnp 8250 serial_core thermal_sys Oct 1 22:44:01 sb06 kernel: RIP: 0010:[] [] xfs_dir2_sf_lookup+0xe3/0x219 Oct 1 22:44:01 sb06 kernel: CR2: 0000000000000001 CR3: 000000017ce80000 CR4: 00000000000006a0 Oct 1 22:44:01 sb06 kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 Oct 1 22:44:01 sb06 kernel: RBP: 0000000000000000 R08: ffff880005cc3c00 R09: ffff88022d867080 Oct 1 22:44:01 sb06 kernel: R10: ffffffff813457b0 R11: ffff88017f661cd0 R12: ffff88017ce8dbb8 Oct 1 22:44:01 sb06 kernel: R13: 0000000000000000 R14: 0000000000000000 R15: ffff88017ce8dc98 Oct 1 22:44:01 sb06 kernel: Process diablo (pid: 6804, threadinfo ffff88017ce8c000, task ffff88022d867080) Oct 1 22:44:01 sb06 kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b Oct 1 22:44:01 sb06 kernel: <0> 0000000000000000 0000000000000000 ffff88017ce8dc98 ffffffff810f2754 Oct 1 22:44:01 sb06 kernel: <0> ffff8800a540b900 ffff88022d8672f8 ffff880154034e20 0000000000000006 Oct 1 22:44:01 sb06 kernel: [] ? xfs_dir_lookup+0xa5/0x147 Oct 1 22:44:01 sb06 kernel: [] ? do_lookup+0xd5/0x1b3 Oct 1 22:44:01 sb06 kernel: [] ? __link_path_walk+0x966/0xe0d Oct 1 22:44:01 sb06 kernel: [] ? get_empty_filp+0x70/0x119 Oct 1 22:44:01 sb06 kernel: [] ? path_walk+0x66/0xca Oct 1 22:44:01 sb06 kernel: [] ? alloc_fd+0x67/0x10b Oct 1 22:44:01 sb06 kernel: [] ? system_call_fastpath+0x16/0x1b Oct 1 22:44:01 sb06 kernel: RIP [] xfs_dir2_sf_lookup+0xe3/0x219 Oct 1 22:44:01 sb06 kernel: CR2: 0000000000000001 Oct 1 22:44:01 sb06 kernel: DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 Oct 1 22:44:01 sb06 kernel: Stack: Oct 1 22:44:01 sb06 kernel: 00000000000107c0 ffff880005cc3c00 0000000000000000 ffff88017ce8dbb8 Oct 1 22:44:01 sb06 kernel: Call Trace: Oct 1 22:44:01 sb06 kernel: [] ? xfs_lookup+0x47/0xa3 Oct 1 22:44:01 sb06 kernel: [] ? xfs_vn_lookup+0x3c/0x7b Oct 1 22:44:01 sb06 kernel: [] ? do_lookup+0x63/0x1b3 Oct 1 22:44:01 sb06 kernel: [] ? dput+0x23/0x13d Oct 1 22:44:01 sb06 kernel: [] ? do_path_lookup+0x20/0x41 Oct 1 22:44:01 sb06 kernel: [] ? do_filp_open+0xe3/0x92a Oct 1 22:44:01 sb06 kernel: [] ? do_sys_open+0x55/0x103 Oct 1 22:44:01 sb06 kernel: Code: 18 09 c2 0f b6 43 07 c1 e0 10 09 c2 0f b6 43 08 c1 e0 08 09 c2 48 09 d1 49 89 4c 24 28 41 c7 44 24 7c 01 00 00 00 e9 d2 00 00 00 <80> 7b 01 01 19 c0 45 31 ff 83 e0 fc 45 31 ed 83 c0 0a 48 98 48 Oct 1 22:44:01 sb06 kernel: RSP Oct 1 22:44:01 sb06 kernel: ---[ end trace 6e14835b29b5648a ]--- Oct 1 22:45:04 sb06 kernel: ------------[ cut here ]------------ Oct 1 22:45:04 sb06 kernel: invalid opcode: 0000 [#2] SMP Oct 1 22:45:04 sb06 kernel: CPU 2 Oct 1 22:45:04 sb06 kernel: kernel BUG at fs/xfs/xfs_iget.c:334! Oct 1 22:45:04 sb06 kernel: last sysfs file: /sys/devices/system/cpu/cpu3/cache/index2/shared_cpu_map Oct 1 22:45:04 sb06 kernel: Modules linked in: acpi_cpufreq cpufreq_ondemand ipmi_si ipmi_devintf ipmi_msghandler bonding serio_raw mptspi rng_core scsi_transport_spi bnx2 processor thermal 8250_pnp 8250 serial_core thermal_sys Oct 1 22:45:04 sb06 kernel: RIP: 0010:[] [] xfs_iget+0x2e3/0x424 Oct 1 22:45:04 sb06 kernel: RDX: ffff880119c19080 RSI: 0000000000000296 RDI: ffff880005cc3c8c Oct 1 22:45:04 sb06 kernel: R10: 0000000000000002 R11: 0001400100014004 R12: ffff88022d0c783c Oct 1 22:45:04 sb06 kernel: FS: 0000000001369860(0063) GS:ffff880028066000(0000) knlGS:0000000000000000 Oct 1 22:45:04 sb06 kernel: CR2: 00007faaff8f2000 CR3: 00000001f54b3000 CR4: 00000000000006a0 Oct 1 22:45:04 sb06 kernel: DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 Oct 1 22:45:04 sb06 kernel: Stack: Oct 1 22:45:04 sb06 kernel: <0> 000000000000dd70 00000000000001bb ffff8800642bdb70 0000000100000004 Oct 1 22:45:04 sb06 kernel: Pid: 17264, comm: diablo Tainted: G D 2.6.31.1xfspatch #4 PowerEdge 1950 Oct 1 22:45:04 sb06 kernel: RSP: 0018:ffff8800642bdab8 EFLAGS: 00010246 Oct 1 22:45:04 sb06 kernel: RAX: 0000000000000000 RBX: 0000000000000002 RCX: ffffffff81102664 Oct 1 22:45:04 sb06 kernel: RBP: ffff880005cc3c00 R08: 0000000000000001 R09: ffff88022c415400 Oct 1 22:45:04 sb06 kernel: R13: ffff88022d0c7800 R14: 000000000000001b R15: 0000000000000001 Oct 1 22:45:04 sb06 kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 Oct 1 22:45:04 sb06 kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 Oct 1 22:45:04 sb06 kernel: Process diablo (pid: 17264, threadinfo ffff8800642bc000, task ffff88010002ad00) Oct 1 22:45:04 sb06 kernel: ffff8800022623c0 000000000000dd70 00000001015315f8 000000000000dd70 Oct 1 22:45:04 sb06 kernel: <0> 00000000000001bb ffff880001e692c0 ffff88022c415400 000001bb2d3d5400 Oct 1 22:45:04 sb06 kernel: Call Trace: Oct 1 22:45:04 sb06 kernel: [] ? xfs_trans_iget+0xa5/0xd3 Oct 1 22:45:04 sb06 kernel: [] ? xfs_ialloc+0xac/0x568 Oct 1 22:45:04 sb06 kernel: [] ? xfs_dir_ialloc+0x84/0x2a2 Oct 1 22:45:04 sb06 kernel: [] ? xfs_trans_reserve+0xda/0x1af Oct 1 22:45:04 sb06 kernel: [] ? __down_write_nested+0x15/0x9d Oct 1 22:45:04 sb06 kernel: [] ? xfs_create+0x27e/0x448 Oct 1 22:45:04 sb06 kernel: [] ? xfs_lookup+0x53/0xa3 Oct 1 22:45:04 sb06 kernel: [] ? xfs_vn_mknod+0x9c/0xf2 Oct 1 22:45:04 sb06 kernel: [] ? vfs_create+0x6e/0xb7 Oct 1 22:45:04 sb06 kernel: [] ? do_filp_open+0x2ce/0x92a Oct 1 22:45:04 sb06 kernel: [] ? do_sys_open+0x55/0x103 Oct 1 22:45:04 sb06 kernel: [] ? system_call_fastpath+0x16/0x1b Oct 1 22:45:04 sb06 kernel: Code: 00 00 bf d0 00 00 00 e8 7a 8b 03 00 85 c0 0f 85 cd 00 00 00 83 7c 24 38 00 74 14 8b 74 24 38 48 89 ef e8 ff f8 ff ff 85 c0 75 04 <0f> 0b eb fe 4c 89 e7 e8 92 28 14 00 44 88 f1 8b 74 24 5c b8 01 Oct 1 22:45:04 sb06 kernel: RIP [] xfs_iget+0x2e3/0x424 Oct 1 22:45:04 sb06 kernel: RSP Oct 1 22:45:04 sb06 kernel: ---[ end trace 6e14835b29b5648b ]--- Oct 1 22:45:04 sb06 kernel: ------------[ cut here ]------------ Oct 1 22:45:04 sb06 kernel: kernel BUG at fs/xfs/xfs_iget.c:334! Oct 1 22:45:04 sb06 kernel: invalid opcode: 0000 [#3] SMP Oct 1 22:45:04 sb06 kernel: last sysfs file: /sys/devices/system/cpu/cpu3/cache/index2/shared_cpu_map Oct 1 22:45:04 sb06 kernel: CPU 2 Oct 1 22:45:04 sb06 kernel: Modules linked in: acpi_cpufreq cpufreq_ondemand ipmi_si ipmi_devintf ipmi_msghandler bonding serio_raw mptspi rng_core scsi_transport_spi bnx2 processor thermal 8250_pnp 8250 serial_core thermal_sys Oct 1 22:45:04 sb06 kernel: Pid: 17326, comm: diablo Tainted: G D 2.6.31.1xfspatch #4 PowerEdge 1950 Oct 1 22:45:04 sb06 kernel: RIP: 0010:[] [] xfs_iget+0x2e3/0x424 Oct 1 22:45:04 sb06 kernel: RSP: 0018:ffff88000fa79ab8 EFLAGS: 00010246 Oct 1 22:45:04 sb06 kernel: RAX: 0000000000000000 RBX: 0000000000000002 RCX: ffffffff81102664 Oct 1 22:45:04 sb06 kernel: RDX: ffff880119c18780 RSI: 0000000000000296 RDI: ffff880005cc3c8c Oct 1 22:45:04 sb06 kernel: RBP: ffff880005cc3c00 R08: 0000000000000001 R09: ffff88022f21dc00 Oct 1 22:45:04 sb06 kernel: R10: 0000000000000002 R11: 0001400100014004 R12: ffff88022ebc383c Oct 1 22:45:04 sb06 kernel: R13: ffff88022ebc3800 R14: 000000000000001b R15: 0000000000000001 Oct 1 22:45:04 sb06 kernel: FS: 0000000001369860(0063) GS:ffff880028066000(0000) knlGS:0000000000000000 Oct 1 22:45:04 sb06 kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 Oct 1 22:45:04 sb06 kernel: CR2: 00007fffd3a2ce18 CR3: 0000000135a9d000 CR4: 00000000000006a0 Oct 1 22:45:04 sb06 kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 Oct 1 22:45:04 sb06 kernel: DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 Oct 1 22:45:04 sb06 kernel: Process diablo (pid: 17326, threadinfo ffff88000fa78000, task ffff8801000ccec0) Oct 1 22:45:04 sb06 kernel: Stack: Oct 1 22:45:04 sb06 kernel: ffff880101276180 000000000000dd70 0000000107e5b000 000000000000dd70 Oct 1 22:45:04 sb06 kernel: <0> 000000000000dd70 00000000000001a6 ffff88000fa79b70 0000000100000004 Oct 1 22:45:04 sb06 kernel: <0> 00000000000001a6 ffff8800c27d55e0 ffff88022f21dc00 000001a62fa9b400 Oct 1 22:45:04 sb06 kernel: Call Trace: Oct 1 22:45:04 sb06 kernel: [] ? xfs_trans_iget+0xa5/0xd3 Oct 1 22:45:04 sb06 kernel: [] ? xfs_ialloc+0xac/0x568 Oct 1 22:45:04 sb06 kernel: [] ? xfs_dir_ialloc+0x84/0x2a2 Oct 1 22:45:04 sb06 kernel: [] ? xfs_trans_reserve+0xda/0x1af Oct 1 22:45:04 sb06 kernel: [] ? __down_write_nested+0x15/0x9d Oct 1 22:45:04 sb06 kernel: [] ? xfs_create+0x27e/0x448 Oct 1 22:45:04 sb06 kernel: [] ? xfs_lookup+0x53/0xa3 Oct 1 22:45:04 sb06 kernel: [] ? xfs_vn_mknod+0x9c/0xf2 Oct 1 22:45:04 sb06 kernel: [] ? vfs_create+0x6e/0xb7 Oct 1 22:45:04 sb06 kernel: [] ? do_filp_open+0x2ce/0x92a Oct 1 22:45:04 sb06 kernel: [] ? do_sys_open+0x55/0x103 Oct 1 22:45:04 sb06 kernel: [] ? system_call_fastpath+0x16/0x1b Oct 1 22:45:04 sb06 kernel: Code: 00 00 bf d0 00 00 00 e8 7a 8b 03 00 85 c0 0f 85 cd 00 00 00 83 7c 24 38 00 74 14 8b 74 24 38 48 89 ef e8 ff f8 ff ff 85 c0 75 04 <0f> 0b eb fe 4c 89 e7 e8 92 28 14 00 44 88 f1 8b 74 24 5c b8 01 Oct 1 22:45:04 sb06 kernel: RIP [] xfs_iget+0x2e3/0x424 Oct 1 22:45:04 sb06 kernel: RSP Oct 1 22:45:04 sb06 kernel: ---[ end trace 6e14835b29b5648c ]--- --------------010304030605060907030303-- From david@istwok.net Fri Oct 2 11:55:44 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n92Gthmt192328 for ; Fri, 2 Oct 2009 11:55:44 -0500 X-ASG-Debug-ID: 1254502625-7d2000860000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from cdptpa-omtalb.mail.rr.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 42FC111966BC for ; Fri, 2 Oct 2009 09:57:05 -0700 (PDT) Received: from cdptpa-omtalb.mail.rr.com (cdptpa-omtalb.mail.rr.com [75.180.132.121]) by cuda.sgi.com with ESMTP id aTayhVeiCHHOdyuU for ; Fri, 02 Oct 2009 09:57:05 -0700 (PDT) Received: from opus ([76.182.216.73]) by cdptpa-omta02.mail.rr.com with ESMTP id <20091002165704976.GTOD6584@cdptpa-omta02.mail.rr.com>; Fri, 2 Oct 2009 16:57:04 +0000 Received: from david by opus with local (Exim 4.69) (envelope-from ) id 1MtlRI-0004aB-71; Fri, 02 Oct 2009 11:57:04 -0500 Date: Fri, 2 Oct 2009 11:57:04 -0500 From: David Engel To: xfs@oss.sgi.com, Eric Sandeen X-ASG-Orig-Subj: Re: XFS/driver bug or bad drive? Subject: Re: XFS/driver bug or bad drive? Message-ID: <20091002165704.GA17558@opus.istwok.net> References: <20091001232759.GA12832@opus.istwok.net> <4AC54BDA.20806@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4AC54BDA.20806@sandeen.net> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: cdptpa-omtalb.mail.rr.com[75.180.132.121] X-Barracuda-Start-Time: 1254502627 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10634 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Oct 01, 2009 at 07:39:54PM -0500, Eric Sandeen wrote: > These are all storage errors, not xfs. I suppose it could be > differing IO patterns from one fs or the other that trips it up, but > nothing above is related to an xfs bug; any xfs problems are in > response to the above IO errors, maybe a hardware problem or a > driver problem, not sure - but most likely a hardware issue I think. > You might point smartctl at the drive and see what it says. I agree it shouldn't be an xfs bug. I thought it was strange, though, that the problem only seemed to show up with xfs on 2.6.30.x. IO pattern sensitivity wouldn't surprise me, but I wanted to check all my bases before giving up on the drive. Michael Monnerie wrote: > Yes, that Samsung crap. Of the very few drives we had (the 1TB version), > all got broken quickly, and we replaced them with Hitachis. It's a pity, > as they had a nice price, but when they it your data, it's priceless. I've used mostly Samsung drives for several years. This particular 750GB model is the only one that I consider a lemon. David -- David Engel david@istwok.net From kumoilg@sify.com Sun Oct 4 23:04:35 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.1 required=5.0 tests=BAYES_50,SUBJ_ALL_CAPS autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n9544YrR165205 for ; Sun, 4 Oct 2009 23:04:35 -0500 X-ASG-Debug-ID: 1254715556-5ca201700000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from kpdnmail.kpdnkk.gov.my (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A2F851730B3D; Sun, 4 Oct 2009 21:05:56 -0700 (PDT) Received: from kpdnmail.kpdnkk.gov.my (kpdnkk.gov.my [119.110.110.235]) by cuda.sgi.com with ESMTP id seHYlC8x6gIw8iEu; Sun, 04 Oct 2009 21:05:56 -0700 (PDT) Received: from [124.13.51.152] ([124.13.51.152]) by kpdnmail.kpdnkk.gov.my (Kerio MailServer 6.6.0 patch 1); Mon, 5 Oct 2009 11:52:50 +0800 From: "Mohd Hafis b. Shamsuddin" Reply-To: kumoilgs@sify.com Organization: Kum Oil & Gas Corpoaration Ltd X-ASG-Orig-Subj: INTERNATIONAL EXPATRIATE ONLINE JOB OFFER Subject: INTERNATIONAL EXPATRIATE ONLINE JOB OFFER X-Mailer: Kerio MailServer 6.6.0 patch 1 WebMail Mini To: undisclosed-recipients:; Message-ID: <20091005115250.790c15c2@kpdnmail.kpdnkk.gov.my> Date: Mon, 05 Oct 2009 11:52:50 +0800 X-User-Agent: Opera/9.80 (Windows NT 5.1; U; en) Presto/2.2.15 Version/10.00 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: kpdnkk.gov.my[119.110.110.235] X-Barracuda-Start-Time: 1254715559 X-Barracuda-Bayes: INNOCENT GLOBAL 0.6585 1.0000 1.0763 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.08 X-Barracuda-Spam-Status: No, SCORE=1.08 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10864 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean FROM THE DESK OF THE DIRECTOR=20 Kum Oil & Gas Corpoaration Ltd.=20 Kumar House Level 11/13=20 Tell + (60) 173-514-654/ 037-677-300=20 Fax: + (60) 173-514-659.=20 E-mail: kumoilgs@sify.com =20 ATTN: APPLICANT=20 =20 EXPATRIATE OVERSEA OFFICIAL ONLINE JOB OFFER!!! Your name and contact have been shortlisted and Chosen among the Lucky e= xpatriates who submitted there CV to the ONLINE JOB SEEKER's, before we = will issue you the Success Letter and the Contract Document You have to = answer the International Online Job Interview (sent it back to us via em= ail)=20 =20 Full Names: Address:=20 City/State: Country: Zip code: Sex/Age: Phone/Email: Marital Status: =20 Candidate must possess at least a Professional Certificate, Diploma, Deg= ree in Engineering (Mechanical), Engineering (Civil), Engineering (Petro= leum Oil/Gas) or Construction equivalent. At least 1year(s) of working e= xperience in the related field is required for this position. Preferably= Senior Field Supervisor/Executives specializing in Engineering - Oil/Ga= s Construction Field or equivalent. Job role in Management or equivalent= . Full-Time positions available. Applicants must be fluent in English La= nguage. Only Shortlisted Candidate will be informed=20 =20 Get back to me as soon as possible. =20 Regards, Engr. Mohd H.B. Shamsuddinn Human Resource Depart Service.=20 Kum Oil & Gas Corparation Limited. =20 From pg_mh@sabi.co.UK Mon Oct 5 06:30:34 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n95BUXge197558 for ; Mon, 5 Oct 2009 06:30:34 -0500 X-ASG-Debug-ID: 1254742317-6016031d0000-ps1ADW X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ty.sabi.co.UK (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4DCA71D782CA for ; Mon, 5 Oct 2009 04:31:57 -0700 (PDT) Received: from ty.sabi.co.UK (82-69-39-138.dsl.in-addr.zen.co.uk [82.69.39.138]) by cuda.sgi.com with ESMTP id UsK1I2PfslCezgKe for ; Mon, 05 Oct 2009 04:31:57 -0700 (PDT) Received: from from [127.0.0.1] (helo=tree.ty.sabi.co.uk) by ty.sabi.co.UK with esmtp(Exim 4.63 #1) id 1Mule0-0003ay-Sl for ; Mon, 05 Oct 2009 12:22:20 +0100 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <19145.55016.313563.304290@tree.ty.sabi.co.uk> Date: Mon, 5 Oct 2009 12:22:16 +0100 X-Face: SMJE]JPYVBO-9UR%/8d'mG.F!@.,l@c[f'[%S8'BZIcbQc3/">GrXDwb#;fTRGNmHr^JFb SAptvwWc,0+z+~p~"Gdr4H$(|N(yF(wwCM2bW0~U?HPEE^fkPGx^u[*[yV.gyB!hDOli}EF[\cW*S H&spRGFL}{`bj1TaD^l/"[ msn( /TH#THs{Hpj>)]f> X-ASG-Orig-Subj: Re: XFS Question Subject: Re: XFS Question In-Reply-To: References: X-Mailer: VM 8.0.12-devo-585 under 21.5 (beta27) XEmacs Lucid (i686-redhat-linux) From: pg_xf2@xf2.for.sabi.co.UK (Peter Grandi) X-Disclaimer: This message contains only personal opinions X-Barracuda-Connect: 82-69-39-138.dsl.in-addr.zen.co.uk[82.69.39.138] X-Barracuda-Start-Time: 1254742318 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10894 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > [ ... ] XFS on my RHEL 5.1 system. [ ... ] update the system > to the latest RHEL release(5.4). [ ... ] My question is, I > will perform the system update, but what will happen to my XFS > system? Your XFS system was not part of RHEL and will continue to be so. It will continue to work. > Do I simply locate the above three RPM's for the latest kernel > I am installing and be good to go? RHEL5.1 and RHEL5.4 are just updates of the same OS, and RH sort of guarantees binary compatibility between various updates of the same OS. This actually works in practice as well as in theory, especially for the kernel (RH slip on other stuff) and its modules. RHEL5.4 kernels have an XFS kernel module included, but RH only supports XFS as an optional "layered product", that is an additional support license (like GFS, RHCS and others). If you are using RHEL because you want RH support, that is probably something you want to look into. RH presumably added XFS as a layered product precisely because so many customers like you were using it even if not supported. Otherwise consider using the new ElRepo repository, or the XFS packages from CentOS Plus or Scientific Linux (yes, they work with RHEL too, both kernel modules and userspace modules). From nesbittp@catchlifesomesound.cn Mon Oct 5 14:03:26 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.2 required=5.0 tests=BAYES_40 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n95J3Ovj232829 for ; Mon, 5 Oct 2009 14:03:25 -0500 X-ASG-Debug-ID: 1254769481-089102740000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from catchlifesomesound.cn (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id C89EB13229A6; Mon, 5 Oct 2009 12:04:43 -0700 (PDT) Received: from catchlifesomesound.cn ([188.187.246.3]) by cuda.sgi.com with SMTP id UpofoL9YvXCH2P63; Mon, 05 Oct 2009 12:04:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=catchlifesomesound.cn; s=s285149; h=DomainKey-Signature: Message-ID:Date:From:User-Agent:MIME-Version:To:Cc:Subject: Content-Type:Content-Transfer-Encoding; bh=qjCGfBAewATZPQ24g6mI7 6rCWvKElB+VcY3j84gIl+o=; b=BIPGRaH3m5w3cEEdvCqtW/TaDoJHCsO2uD8Rd gUFKciNMwaPcc+xWCqFxBDNIafhubcAZdUTh22RSHP/RoeMCQ== DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s285149; d=catchlifesomesound.cn; h=Message-ID:Date:From:User-Agent:X-Accept-Language:MIME-Version:To:Cc:Subject:Content-Type:Content-Transfer-Encoding; b=eWTTpcEiLDxLSYOgRIri08dyU5KsFGcpY8WEIQDpfbQPXmkOM4Rd8L7OW8bUjZIYJUCyDNS331Ky8TYMyXjiCA==; Message-ID: <23ED2132.9A64EB79@catchlifesomesound.cn> Date: Mon, 05 Oct 2009 18:00:26 -0100 From: "Vide" User-Agent: Opera/7.02 (Windows NT 5.1; U) X-Accept-Language: en-us MIME-Version: 1.0 To: "Kasimir" Cc: "Leone" X-ASG-Orig-Subj: =?US-ASCII?B?UiB5b3UgaGFwcHk=?= Subject: =?US-ASCII?B?UiB5b3UgaGFwcHk=?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Barracuda-Connect: UNKNOWN[188.187.246.3] X-Barracuda-Start-Time: 1254769489 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4433 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10923 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean E space that provides a great line of goods at the lovely low prices - Read more right here http://au.groups.yahoo.com/group/rickyn/message "What then?" thought push destroy hurt "For what?" said the count. From sandeen@sandeen.net Mon Oct 5 16:03:10 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n95L3A8g239365 for ; Mon, 5 Oct 2009 16:03:10 -0500 X-ASG-Debug-ID: 1254776674-3c7f01a40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A727117395A0 for ; Mon, 5 Oct 2009 14:04:34 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 86sUiUltBmaKZkEx for ; Mon, 05 Oct 2009 14:04:34 -0700 (PDT) Received: from int-mx08.intmail.prod.int.phx2.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n95L1bJI011343; Mon, 5 Oct 2009 17:01:37 -0400 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by int-mx08.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id n95L1aDE000676; Mon, 5 Oct 2009 17:01:37 -0400 Message-ID: <4ACA5EB0.4010707@sandeen.net> Date: Mon, 05 Oct 2009 16:01:36 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: xfs mailing list CC: Tejun Heo X-ASG-Orig-Subj: stack bloat after stackprotector changes Subject: stack bloat after stackprotector changes Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.21 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1254776675 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10932 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean It seems that after: commit 5d707e9c8ef2a3596ed5c975c6ff05cec890c2b4 Author: Tejun Heo Date: Mon Feb 9 22:17:39 2009 +0900 stackprotector: update make rules xfs stack usage jumped up a fair bit; before: 376 xfs_bmapi 328 xfs_bulkstat 296 _xfs_trans_commit 264 xfs_iomap_write_delay 248 xlog_do_recovery_pass 248 xfs_symlink 248 xfs_file_ioctl 232 xfs_bunmapi 224 xfs_trans_unreserve_and_mod_sb 216 xfs_file_compat_ioctl 216 xfs_cluster_write 216 xfs_bmap_del_extent 200 xfs_probe_cluster 200 xfs_page_state_convert 200 xfs_iomap_write_direct 200 xfs_getbmap ... after: 408 xfs_bmapi 344 xfs_bulkstat 312 _xfs_trans_commit 312 xfs_file_ioctl 296 xfs_file_compat_ioctl 280 xfs_iomap_write_delay 264 xlog_do_recovery_pass 264 xfs_symlink 264 xfs_bunmapi 248 xfs_bmap_del_extent 248 xfs_bmap_add_extent_delay_real 240 xfs_trans_unreserve_and_mod_sb 232 xfs_iomap_write_direct 232 xfs_cluster_write 216 xfs_probe_cluster 216 xfs_bmap_extents_to_btree ... Not a lot in each case but could be significant as it accumulates. I'm not familiar w/ the gcc stack protector feature; would this be an expected result? Thanks, -Eric From BATV+cc70368388d4924f18c6+2234+infradead.org+hch@bombadil.srs.infradead.org Mon Oct 5 16:42:27 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n95LgPH9241804 for ; Mon, 5 Oct 2009 16:42:26 -0500 X-ASG-Debug-ID: 1254779029-70fd02430000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9D997BD19C9 for ; Mon, 5 Oct 2009 14:43:49 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id JNPaUIKznhzjGJbw for ; Mon, 05 Oct 2009 14:43:49 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MuvLQ-0005XD-J2; Mon, 05 Oct 2009 21:43:48 +0000 Date: Mon, 5 Oct 2009 17:43:48 -0400 From: Christoph Hellwig To: Bas Couwenberg Cc: Christoph Hellwig , Patrick Schreurs , Tommy van Leeuwen , XFS List X-ASG-Orig-Subj: Re: 2.6.31 xfs_fs_destroy_inode: cannot reclaim Subject: Re: 2.6.31 xfs_fs_destroy_inode: cannot reclaim Message-ID: <20091005214348.GA15448@infradead.org> References: <20090930124104.GA7463@infradead.org> <4AC60D27.9060703@news-service.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4AC60D27.9060703@news-service.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1254779030 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Oct 02, 2009 at 04:24:39PM +0200, Bas Couwenberg wrote: > Dear Christoph, > > Yesterday two of our servers (2.6.31.1 + your patch) crashed again, this > time we have a bigger console, but not the full backtrace unfortunately. > > I did manage to get some more calltrace info from the logs, which I have > attached together with the screenshots of the crashscreens. > > I hope this info helps you. It helps a bit, but not so much. I suspect it could be a double free of an inode, and I have identified a possible race window that could explain it. But all the traces are really weird and I think only show later symptoms of something that happened earlier. I'll come up with a patch for the race window ASAP, but could you in the meantime turn on CONFIG_XFS_DEBUG for the test kernel to see if it triggers somehwere and additionally apply the tiny patch below for additional debugging? Subject: xfs: check for not fully initialized inodes in xfs_ireclaim From: Christoph Hellwig Add an assert for inodes not added to the inode cache in xfs_ireclaim, to make sure we're not going to introduce something like the famous nfsd inode cache bug again. Signed-off-by: Christoph Hellwig Index: linux-2.6/fs/xfs/xfs_iget.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_iget.c 2009-08-10 11:30:55.729724742 -0300 +++ linux-2.6/fs/xfs/xfs_iget.c 2009-08-10 11:40:15.271748324 -0300 @@ -535,17 +535,21 @@ xfs_ireclaim( { struct xfs_mount *mp = ip->i_mount; struct xfs_perag *pag; + xfs_agino_t agino = XFS_INO_TO_AGINO(mp, ip->i_ino); XFS_STATS_INC(xs_ig_reclaims); /* - * Remove the inode from the per-AG radix tree. It doesn't matter - * if it was never added to it because radix_tree_delete can deal - * with that case just fine. + * Remove the inode from the per-AG radix tree. + * + * Because radix_tree_delete won't complain even if the item was never + * added to the tree assert that it's been there before to catch + * problems with the inode life time early on. */ pag = xfs_get_perag(mp, ip->i_ino); write_lock(&pag->pag_ici_lock); - radix_tree_delete(&pag->pag_ici_root, XFS_INO_TO_AGINO(mp, ip->i_ino)); + ASSERT(radix_tree_lookup(&pag->pag_ici_root, agino)); + radix_tree_delete(&pag->pag_ici_root, agino); write_unlock(&pag->pag_ici_lock); xfs_put_perag(mp, pag); From tj@kernel.org Tue Oct 6 00:52:42 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n965qbZn023800 for ; Tue, 6 Oct 2009 00:52:42 -0500 X-ASG-Debug-ID: 1254808441-04e900de0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hera.kernel.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 29CD4BD5098 for ; Mon, 5 Oct 2009 22:54:01 -0700 (PDT) Received: from hera.kernel.org (hera.kernel.org [140.211.167.34]) by cuda.sgi.com with ESMTP id OC9ieUl2X6OmaZEJ for ; Mon, 05 Oct 2009 22:54:01 -0700 (PDT) Received: from htj.dyndns.org (IDENT:U2FsdGVkX1/p4cCkgefiKtFCAGPB2FLMQHVljweXMbc@localhost [127.0.0.1]) by hera.kernel.org (8.14.2/8.14.2) with ESMTP id n965rv4H011846 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Tue, 6 Oct 2009 05:53:58 GMT Received: from [192.168.0.5] (unknown [222.99.201.236]) by htj.dyndns.org (Postfix) with ESMTPSA id CAFCF425B5A9C; Tue, 6 Oct 2009 14:53:56 +0900 (KST) Message-ID: <4ACADB74.5090508@kernel.org> Date: Tue, 06 Oct 2009 14:53:56 +0900 From: Tejun Heo User-Agent: Thunderbird 2.0.0.22 (X11/20090605) MIME-Version: 1.0 To: Eric Sandeen CC: xfs mailing list X-ASG-Orig-Subj: Re: stack bloat after stackprotector changes Subject: Re: stack bloat after stackprotector changes References: <4ACA5EB0.4010707@sandeen.net> In-Reply-To: <4ACA5EB0.4010707@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: ClamAV 0.93.3/9867/Mon Oct 5 11:11:46 2009 on hera.kernel.org X-Virus-Status: Clean X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.0 (hera.kernel.org [127.0.0.1]); Tue, 06 Oct 2009 05:54:00 +0000 (UTC) X-Barracuda-Connect: hera.kernel.org[140.211.167.34] X-Barracuda-Start-Time: 1254808443 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10967 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Eric Sandeen wrote: > It seems that after: > > commit 5d707e9c8ef2a3596ed5c975c6ff05cec890c2b4 > Author: Tejun Heo > Date: Mon Feb 9 22:17:39 2009 +0900 > > stackprotector: update make rules > > xfs stack usage jumped up a fair bit; > > Not a lot in each case but could be significant as it accumulates. > > I'm not familiar w/ the gcc stack protector feature; would this be an > expected result? Yeah, it adds a bit of stack usage per each function call and around arrays which seem like they could overflow, so the behavior is expected and I can see it can be a problem with function call depth that deep. Has it caused actual stack overflow? Thanks. -- tejun From patrick@news-service.com Tue Oct 6 04:02:46 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n9692ifS042755 for ; Tue, 6 Oct 2009 04:02:46 -0500 X-ASG-Debug-ID: 1254819849-492601060000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pu01.news-service.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6A1741323A0F for ; Tue, 6 Oct 2009 02:04:09 -0700 (PDT) Received: from pu01.news-service.com (ns1.news-service.com [195.114.240.3]) by cuda.sgi.com with ESMTP id pEOrLMWCvMX763VP for ; Tue, 06 Oct 2009 02:04:09 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by pu01.news-service.com (Postfix) with ESMTP id 6682B13E39; Tue, 6 Oct 2009 11:04:08 +0200 (CEST) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: Debian amavisd-new at pu01.news-service.com Received: from pu01.news-service.com ([127.0.0.1]) by localhost (pu01.nse [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Vrlq4m89PeaF; Tue, 6 Oct 2009 11:04:03 +0200 (CEST) Received: from [172.25.0.47] (nse01.nse [172.25.0.47]) by pu01.news-service.com (Postfix) with ESMTP id 89A5C13E36; Tue, 6 Oct 2009 11:04:03 +0200 (CEST) Message-ID: <4ACB080D.3010708@news-service.com> Date: Tue, 06 Oct 2009 11:04:13 +0200 From: Patrick Schreurs User-Agent: Thunderbird 2.0.0.23 (Windows/20090812) MIME-Version: 1.0 To: Christoph Hellwig CC: Bas Couwenberg , Tommy van Leeuwen , XFS List X-ASG-Orig-Subj: Re: 2.6.31 xfs_fs_destroy_inode: cannot reclaim Subject: Re: 2.6.31 xfs_fs_destroy_inode: cannot reclaim References: <20090930124104.GA7463@infradead.org> <4AC60D27.9060703@news-service.com> <20091005214348.GA15448@infradead.org> In-Reply-To: <20091005214348.GA15448@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ns1.news-service.com[195.114.240.3] X-Barracuda-Start-Time: 1254819850 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10979 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Status: Clean Christoph Hellwig wrote: > It helps a bit, but not so much. I suspect it could be a double free > of an inode, and I have identified a possible race window that could > explain it. But all the traces are really weird and I think only show > later symptoms of something that happened earlier. I'll come up with > a patch for the race window ASAP, but could you in the meantime turn on > CONFIG_XFS_DEBUG for the test kernel to see if it triggers somehwere > and additionally apply the tiny patch below for additional debugging? Will try this. Could this by any change be releated (from 2.6.32.2)? commit 2f0ffb7ef75a9ad6140899f6d4df45e8a73a013e Author: Jan Kara Date: Mon Sep 21 17:01:06 2009 -0700 fs: make sure data stored into inode is properly seen before unlocking new inode commit 580be0837a7a59b207c3d5c661d044d8dd0a6a30 upstream. In theory it could happen that on one CPU we initialize a new inode but clearing of I_NEW | I_LOCK gets reordered before some of the initialization. Thus on another CPU we return not fully uptodate inode from iget_locked(). This seems to fix a corruption issue on ext3 mounted over NFS. Thanks, Patrick Schreurs From vst@vlnb.net Tue Oct 6 07:38:22 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=1.0 required=5.0 tests=BAYES_00, RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_BRBL,RCVD_IN_SORBS_WEB autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96CcL6L060420 for ; Tue, 6 Oct 2009 07:38:22 -0500 X-ASG-Debug-ID: 1254832785-373200e00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from moutng.kundenserver.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3EA734A5845; Tue, 6 Oct 2009 05:39:45 -0700 (PDT) Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.177]) by cuda.sgi.com with ESMTP id OCr2KeIxd4PHIHZJ; Tue, 06 Oct 2009 05:39:45 -0700 (PDT) Received: from [10.44.38.79] (nat.dinfo.ru [212.45.15.2]) by mrelayeu.kundenserver.de (node=mreu2) with ESMTP (Nemesis) id 0Lg4lz-1MWCaC3WcV-00pJ6h; Tue, 06 Oct 2009 14:39:45 +0200 Message-ID: <4ACB3AC5.4010603@vlnb.net> Date: Tue, 06 Oct 2009 16:40:37 +0400 From: Vladislav Bolkhovitin User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: xfs-masters@oss.sgi.com CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Inconsistent {RECLAIM_FS-ON-R} -> {IN-RECLAIM_FS-W} usage in XFS Subject: Inconsistent {RECLAIM_FS-ON-R} -> {IN-RECLAIM_FS-W} usage in XFS Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V01U2FsdGVkX18tiGZlM+rLNiyRUaOxg+vhbd/jmoj4CTLdITR oCPOG8CWiUeFzqI3Bx9CM07l+mYcYUaXmfVpZhCbpVuCMm3v2O 648GTChraJM52Rbyy21Lg== X-Barracuda-Connect: moutng.kundenserver.de[212.227.126.177] X-Barracuda-Start-Time: 1254832787 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.10994 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hello, After upgrading to 2.6.31 with SCST testings I started seeing the following lockdep messages. I have not seen them in 2.6.29. Looks like it's something recently introduced. During the tests there was only one file used on XFS. It's a 5GB virtual device image. No SCST patches touch any I/O or memory management code. Vlad [ 4030.120972] ================================= [ 4030.121815] [ INFO: inconsistent lock state ] [ 4030.121815] 2.6.31-scst-dbg #3 [ 4030.121815] --------------------------------- [ 4030.121815] inconsistent {RECLAIM_FS-ON-R} -> {IN-RECLAIM_FS-W} usage. [ 4030.121815] kswapd0/292 [HC0[0]:SC0[0]:HE1:SE1] takes: [ 4030.121815] (&(&ip->i_iolock)->mr_lock){++++-+}, at: [] xfs_ilock+0x98/0x9f [xfs] [ 4030.121815] {RECLAIM_FS-ON-R} state was registered at: [ 4030.121815] [<781707fb>] mark_held_locks+0x6a/0x9a [ 4030.121815] [<781708f5>] lockdep_trace_alloc+0xca/0xda [ 4030.121815] [<781c779e>] __alloc_pages_nodemask+0x8c/0x5db [ 4030.121815] [<781ca8db>] __do_page_cache_readahead+0xf8/0x1df [ 4030.121815] [<781ca9f7>] ra_submit+0x35/0x53 [ 4030.121815] [<781cabcd>] ondemand_readahead+0x99/0x209 [ 4030.121815] [<781cae50>] page_cache_sync_readahead+0x43/0x5c [ 4030.121815] [<781c2285>] generic_file_aio_read+0x3ed/0x67a [ 4030.121815] [] xfs_read+0x13b/0x2b9 [xfs] [ 4030.121815] [] xfs_file_aio_read+0x74/0xa0 [xfs] [ 4030.121815] [] do_sync_readv_writev+0xe8/0x153 [scst_vdisk] [ 4030.121815] [] vdisk_do_job+0xd3e/0x1acf [scst_vdisk] [ 4030.121815] [] scst_do_real_exec+0xfe/0x62c [scst] [ 4030.121815] [] scst_send_for_exec+0x1f2/0x710 [scst] [ 4030.121815] [] scst_process_active_cmd+0x35d/0x1907 [scst] [ 4030.121815] [] scst_do_job_active+0x8a/0x15d [scst] [ 4030.121815] [] scst_cmd_thread+0xe8/0x29d [scst] [ 4030.121815] [<7815ac79>] kthread+0x84/0x8d [ 4030.121815] [<78103f57>] kernel_thread_helper+0x7/0x10 [ 4030.121815] [] 0xffffffff [ 4030.121815] irq event stamp: 534933 [ 4030.121815] hardirqs last enabled at (534933): [<7849b83d>] _spin_unlock_irqrestore+0x73/0x90 [ 4030.121815] hardirqs last disabled at (534932): [<781927c8>] call_rcu+0x2c/0x7d [ 4030.121815] softirqs last enabled at (534926): [<78147b28>] __do_softirq+0x1cf/0x20c [ 4030.121815] softirqs last disabled at (534921): [<78105c5c>] do_softirq+0xaa/0xee [ 4030.121815] [ 4030.121815] other info that might help us debug this: [ 4030.121815] 2 locks held by kswapd0/292: [ 4030.121815] #0: (shrinker_rwsem){++++..}, at: [<781cd42e>] shrink_slab+0x31/0x1b8 [ 4030.121815] #1: (iprune_mutex){+.+.-.}, at: [<7820a351>] shrink_icache_memory+0x7a/0x274 [ 4030.121815] [ 4030.121815] stack backtrace: [ 4030.121815] Pid: 292, comm: kswapd0 Not tainted 2.6.31-scst-dbg #3 [ 4030.121815] Call Trace: [ 4030.121815] [<78497768>] ? printk+0x28/0x40 [ 4030.121815] [<7816f8b9>] print_usage_bug+0x169/0x16e [ 4030.121815] [<781705d4>] mark_lock+0x1f6/0x3b3 [ 4030.121815] [<7816fcbb>] ? check_usage_forwards+0x0/0xb0 [ 4030.121815] [<78171876>] __lock_acquire+0x37d/0x102d [ 4030.121815] [<781707fb>] ? mark_held_locks+0x6a/0x9a [ 4030.121815] [<781033a7>] ? restore_all_notrace+0x0/0x18 [ 4030.121815] [] ? xfs_ilock+0x98/0x9f [xfs] [ 4030.121815] [<7849b83d>] ? _spin_unlock_irqrestore+0x73/0x90 [ 4030.121815] [<78170af9>] ? trace_hardirqs_on_caller+0x13a/0x188 [ 4030.121815] [] ? xfs_ilock+0x98/0x9f [xfs] [ 4030.121815] [<7817260e>] lock_acquire+0xe8/0x127 [ 4030.121815] [] ? xfs_ilock+0x98/0x9f [xfs] [ 4030.121815] [<7815fd01>] down_write_nested+0x58/0xa5 [ 4030.121815] [] ? xfs_ilock+0x98/0x9f [xfs] [ 4030.121815] [] xfs_ilock+0x98/0x9f [xfs] [ 4030.121815] [] xfs_ireclaim+0xa2/0xd5 [xfs] [ 4030.121815] [] xfs_reclaim_inode+0xe6/0x150 [xfs] [ 4030.121815] [] xfs_reclaim+0xb2/0xb9 [xfs] [ 4030.121815] [] xfs_fs_destroy_inode+0x3e/0x76 [xfs] [ 4030.121815] [<7820a100>] ? __destroy_inode+0x2b/0xa5 [ 4030.121815] [<7820a1ae>] destroy_inode+0x34/0x5a [ 4030.121815] [<7820a26b>] dispose_list+0x97/0x103 [ 4030.121815] [<7820a4ef>] shrink_icache_memory+0x218/0x274 [ 4030.121815] [<781cd543>] shrink_slab+0x146/0x1b8 [ 4030.121815] [<781cf248>] kswapd+0x501/0x625 [ 4030.121815] [<781cc7ed>] ? isolate_pages_global+0x0/0x1fa [ 4030.121815] [<7815b03d>] ? autoremove_wake_function+0x0/0x5b [ 4030.121815] [<781ced47>] ? kswapd+0x0/0x625 [ 4030.121815] [<7815ac79>] kthread+0x84/0x8d [ 4030.121815] [<7815abf5>] ? kthread+0x0/0x8d [ 4030.121815] [<78103f57>] kernel_thread_helper+0x7/0x10 From BATV+16c26fc59ad82b7e8ea7+2235+infradead.org+hch@bombadil.srs.infradead.org Tue Oct 6 08:08:57 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=unavailable version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96D8t6e062822 for ; Tue, 6 Oct 2009 08:08:57 -0500 X-ASG-Debug-ID: 1254834621-251001c70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 99A0C173E6CD; Tue, 6 Oct 2009 06:10:21 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id COHChjc64X2oFX9K; Tue, 06 Oct 2009 06:10:21 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1Mv9o4-0003n7-K0; Tue, 06 Oct 2009 13:10:20 +0000 Date: Tue, 6 Oct 2009 09:10:20 -0400 From: Christoph Hellwig To: Vladislav Bolkhovitin Cc: xfs-masters@oss.sgi.com, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Inconsistent {RECLAIM_FS-ON-R} -> {IN-RECLAIM_FS-W} usage in XFS Subject: Re: Inconsistent {RECLAIM_FS-ON-R} -> {IN-RECLAIM_FS-W} usage in XFS Message-ID: <20091006131020.GA12343@infradead.org> References: <4ACB3AC5.4010603@vlnb.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4ACB3AC5.4010603@vlnb.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1254834621 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Oct 06, 2009 at 04:40:37PM +0400, Vladislav Bolkhovitin wrote: > Hello, > > After upgrading to 2.6.31 with SCST testings I started seeing the > following lockdep messages. I have not seen them in 2.6.29. Looks like > it's something recently introduced. The lockdep code to track this has been recently introduced. I've sent some patches to fix it ages ago, but so far no one has bothered to review them. From sandeen@sandeen.net Tue Oct 6 09:13:02 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96ED2QX068084 for ; Tue, 6 Oct 2009 09:13:02 -0500 X-ASG-Debug-ID: 1254838467-2ac402840000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A1D561742E76 for ; Tue, 6 Oct 2009 07:14:27 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id fZONXZHu7iACbX3F for ; Tue, 06 Oct 2009 07:14:27 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 22141A9BF23; Tue, 6 Oct 2009 09:14:26 -0500 (CDT) Message-ID: <4ACB50C1.80702@sandeen.net> Date: Tue, 06 Oct 2009 09:14:25 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Tejun Heo CC: xfs mailing list X-ASG-Orig-Subj: Re: stack bloat after stackprotector changes Subject: Re: stack bloat after stackprotector changes References: <4ACA5EB0.4010707@sandeen.net> <4ACADB74.5090508@kernel.org> In-Reply-To: <4ACADB74.5090508@kernel.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1254838467 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.11000 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Tejun Heo wrote: > Eric Sandeen wrote: >> It seems that after: >> >> commit 5d707e9c8ef2a3596ed5c975c6ff05cec890c2b4 >> Author: Tejun Heo >> Date: Mon Feb 9 22:17:39 2009 +0900 >> >> stackprotector: update make rules >> >> xfs stack usage jumped up a fair bit; >> >> Not a lot in each case but could be significant as it accumulates. >> >> I'm not familiar w/ the gcc stack protector feature; would this be an >> expected result? > > Yeah, it adds a bit of stack usage per each function call and around > arrays which seem like they could overflow, so the behavior is > expected and I can see it can be a problem with function call depth > that deep. Has it caused actual stack overflow? > > Thanks. > It's hard to point at one thing and say "that caused it" but I did overflow (or come very close to it - this one was within 8 bytes). Add 20 byte or so to each of 65 calls and it starts to matter I guess. Granted, xfs is being piggy too (as are some of the more common functions in the callchain - do_sync_write and write_cache_pages at 320 bytes each...) -Eric Depth Size Location (65 entries) ----- ---- -------- 0) 7280 80 check_object+0x6c/0x1d3 1) 7200 112 __slab_alloc+0x332/0x3f0 2) 7088 16 kmem_cache_alloc+0xcb/0x18a 3) 7072 112 mempool_alloc_slab+0x28/0x3e 4) 6960 128 mempool_alloc+0x71/0x13c 5) 6832 32 scsi_sg_alloc+0x5d/0x73 6) 6800 128 __sg_alloc_table+0x6f/0x134 7) 6672 64 scsi_alloc_sgtable+0x3b/0x74 8) 6608 48 scsi_init_sgtable+0x34/0x8c 9) 6560 80 scsi_init_io+0x3e/0x177 10) 6480 48 scsi_setup_fs_cmnd+0x9c/0xb9 11) 6432 160 sd_prep_fn+0x69/0x8bd 12) 6272 64 blk_peek_request+0xf0/0x1c8 13) 6208 112 scsi_request_fn+0x92/0x4c4 14) 6096 48 __blk_run_queue+0x54/0x9a 15) 6048 80 elv_insert+0xbd/0x1e0 16) 5968 64 __elv_add_request+0xa7/0xc2 17) 5904 64 blk_insert_cloned_request+0x90/0xc8 18) 5840 48 dm_dispatch_request+0x4f/0x8b 19) 5792 96 dm_request_fn+0x141/0x1ca 20) 5696 48 __blk_run_queue+0x54/0x9a 21) 5648 80 cfq_insert_request+0x39d/0x3d4 22) 5568 80 elv_insert+0x120/0x1e0 23) 5488 64 __elv_add_request+0xa7/0xc2 24) 5424 96 __make_request+0x35e/0x3f1 25) 5328 64 dm_request+0x55/0x234 26) 5264 128 generic_make_request+0x29e/0x2fc 27) 5136 80 submit_bio+0xe3/0x100 28) 5056 112 _xfs_buf_ioapply+0x21d/0x25c [xfs] 29) 4944 48 xfs_buf_iorequest+0x58/0x9f [xfs] 30) 4896 48 _xfs_buf_read+0x45/0x74 [xfs] 31) 4848 48 xfs_buf_read_flags+0x67/0xb5 [xfs] 32) 4800 112 xfs_trans_read_buf+0x1be/0x2c2 [xfs] 33) 4688 112 xfs_btree_read_buf_block+0x64/0xbc [xfs] 34) 4576 96 xfs_btree_lookup_get_block+0x9c/0xd8 [xfs] 35) 4480 192 xfs_btree_lookup+0x14a/0x408 [xfs] 36) 4288 32 xfs_alloc_lookup_eq+0x2c/0x42 [xfs] 37) 4256 112 xfs_alloc_fixup_trees+0x85/0x2b4 [xfs] 38) 4144 176 xfs_alloc_ag_vextent_near+0x339/0x8e8 [xfs] 39) 3968 48 xfs_alloc_ag_vextent+0x44/0x126 [xfs] 40) 3920 128 xfs_alloc_vextent+0x2b1/0x403 [xfs] 41) 3792 272 xfs_bmap_btalloc+0x4fc/0x6d4 [xfs] 42) 3520 32 xfs_bmap_alloc+0x21/0x37 [xfs] 43) 3488 464 xfs_bmapi+0x70b/0xde1 [xfs] 44) 3024 256 xfs_iomap_write_allocate+0x21d/0x35d [xfs] 45) 2768 192 xfs_iomap+0x208/0x28a [xfs] 46) 2576 48 xfs_map_blocks+0x3d/0x5a [xfs] 47) 2528 256 xfs_page_state_convert+0x2b8/0x589 [xfs] 48) 2272 96 xfs_vm_writepage+0xbf/0x10e [xfs] 49) 2176 48 __writepage+0x29/0x5f 50) 2128 320 write_cache_pages+0x27b/0x415 51) 1808 32 generic_writepages+0x38/0x4e 52) 1776 80 xfs_vm_writepages+0x60/0x7f [xfs] 53) 1696 48 do_writepages+0x3d/0x63 54) 1648 144 writeback_single_inode+0x169/0x29d 55) 1504 112 generic_sync_sb_inodes+0x21d/0x37f 56) 1392 64 writeback_inodes+0xb6/0x125 57) 1328 192 balance_dirty_pages_ratelimited_nr+0x172/0x2b0 58) 1136 240 generic_file_buffered_write+0x240/0x33c 59) 896 256 xfs_write+0x4d4/0x723 [xfs] 60) 640 32 xfs_file_aio_write+0x79/0x8f [xfs] 61) 608 320 do_sync_write+0xfa/0x14b 62) 288 80 vfs_write+0xbd/0x12e 63) 208 80 sys_write+0x59/0x91 64) 128 128 system_call_fastpath+0x16/0x1b From BATV+16c26fc59ad82b7e8ea7+2235+infradead.org+hch@bombadil.srs.infradead.org Tue Oct 6 10:09:39 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96F9bf2073145 for ; Tue, 6 Oct 2009 10:09:39 -0500 X-ASG-Debug-ID: 1254841863-1a1903340000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 900C64A6999 for ; Tue, 6 Oct 2009 08:11:03 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id uvdqxJXIdj1G91x9 for ; Tue, 06 Oct 2009 08:11:03 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MvBgs-0000DM-SS for xfs@oss.sgi.com; Tue, 06 Oct 2009 15:11:02 +0000 Date: Tue, 6 Oct 2009 11:11:02 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfsprogs: add missing CHANGES entry Subject: [PATCH] xfsprogs: add missing CHANGES entry Message-ID: <20091006151102.GA30964@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1254841863 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The 3.0.4 release for debian actually had a few more changes than documented. Add the missing entries so that they appear in the right spot for future releases. Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/doc/CHANGES =================================================================== --- xfsprogs-dev.orig/doc/CHANGES 2009-10-06 10:51:31.609004058 -0300 +++ xfsprogs-dev/doc/CHANGES 2009-10-06 10:54:13.695006442 -0300 @@ -1,4 +1,10 @@ xfsprogs-3.0.4 (17 September 2009) + - Fix a memory leak in xfsprogs. + - Increase hash chain length in xfsprogs when running out of memory. + - Fix dmsetup invocation in libdisk to avoid warnings during mkfs + on multipath devices. + - Fix the -V option to various installed tools. + - Small internal fixes to please the clang semantical analysis tool. - Debian packaging updates. - Rework Makepkgs and Makefiles to improve deb generation. From BATV+16c26fc59ad82b7e8ea7+2235+infradead.org+hch@bombadil.srs.infradead.org Tue Oct 6 10:13:34 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.1 required=5.0 tests=AWL,BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96FDXP9073378 for ; Tue, 6 Oct 2009 10:13:33 -0500 X-ASG-Debug-ID: 1254842098-088700c50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6D9141324E4C for ; Tue, 6 Oct 2009 08:14:59 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id BENC5AKLqieOxNMR for ; Tue, 06 Oct 2009 08:14:59 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MvBkg-0000gA-L4 for xfs@oss.sgi.com; Tue, 06 Oct 2009 15:14:58 +0000 Date: Tue, 6 Oct 2009 11:14:58 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfsprogs: update configure defaults Subject: [PATCH] xfsprogs: update configure defaults Message-ID: <20091006151458.GA2560@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1254842099 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Currenly xfsprogs has two different sets for configurating it, those in the configure.in template, and those passed to configure by the toplevel Makefile when just running make. Those in the makefile make a lot more sense as they install xfsprogs into the / vs /usr split used by most distributions, and enable multi-libs when detected. This patch changes the build system to also use the same defaults when running ./configure. To do this we get rid of some of the hacky autoconf abuse we had in the past in xfsprogs and just use the normal default sbindir and libdir variables for /usr/sbin an /usr/lib respecticly and define new root_sbindir and root_libdir variables for those few binaries installed into /. The installation to / is disabled if the user chooses a non-default exex prefix. Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/configure.in =================================================================== --- xfsprogs-dev.orig/configure.in 2009-10-06 11:13:33.125253958 -0300 +++ xfsprogs-dev/configure.in 2009-10-06 11:30:00.584019764 -0300 @@ -36,10 +36,26 @@ AC_ARG_ENABLE(termcap, AC_SUBST(libtermcap) AC_ARG_ENABLE(lib64, -[ --enable-lib64=[yes/no] Enable lib64 support [default=no]],, - enable_lib64=no) +[ --enable-lib64=[yes/no] Enable lib64 support [default=yes]],, + enable_lib64=yes) AC_SUBST(enable_lib64) +# +# Some important tools should be installed into the root partitions. +# +# Check whether exec_prefix=/usr: and install them to /sbin in that +# case. If the user choses a different prefix assume he just wants +# a local install for testing and not a system install. +# +case $exec_prefix:$prefix in +NONE:NONE | NONE:/usr | /usr:*) + root_sbindir='/sbin' + AC_SUBST([root_sbindir]) + + root_libdir='/lib' + AC_SUBST([root_libdir]) +esac + # Find localized files LOCALIZED_FILES="" for lfile in `find ${srcdir} -name '*.c' -type f || exit 1`; do Index: xfsprogs-dev/debian/Makefile =================================================================== --- xfsprogs-dev.orig/debian/Makefile 2009-10-06 11:10:21.868004369 -0300 +++ xfsprogs-dev/debian/Makefile 2009-10-06 11:18:59.844256510 -0300 @@ -29,6 +29,6 @@ endif install-d-i: default ifeq ($(PKG_DISTRIBUTION), debian) - $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) - $(INSTALL) -m 755 $(BOOT_MKFS_BIN) $(PKG_SBIN_DIR)/mkfs.xfs + $(INSTALL) -m 755 -d $(PKG_ROOT_SBIN_DIR) + $(INSTALL) -m 755 $(BOOT_MKFS_BIN) $(PKG_ROOT_SBIN_DIR)/mkfs.xfs endif Index: xfsprogs-dev/fsck/Makefile =================================================================== --- xfsprogs-dev.orig/fsck/Makefile 2009-10-06 11:10:06.796004144 -0300 +++ xfsprogs-dev/fsck/Makefile 2009-10-06 11:10:18.407035758 -0300 @@ -12,6 +12,6 @@ default: $(LTCOMMAND) include $(BUILDRULES) install: default - $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) - $(INSTALL) -m 755 xfs_fsck.sh $(PKG_SBIN_DIR)/fsck.xfs + $(INSTALL) -m 755 -d $(PKG_ROOT_SBIN_DIR) + $(INSTALL) -m 755 xfs_fsck.sh $(PKG_ROOT_SBIN_DIR)/fsck.xfs install-dev: Index: xfsprogs-dev/include/builddefs.in =================================================================== --- xfsprogs-dev.orig/include/builddefs.in 2009-10-06 11:10:40.430253897 -0300 +++ xfsprogs-dev/include/builddefs.in 2009-10-06 11:25:53.891032787 -0300 @@ -37,13 +37,6 @@ LIBXLOG = $(TOPDIR)/libxlog/libxlog.la LIBDISK = $(TOPDIR)/libdisk/libdisk.la LIBHANDLE = $(TOPDIR)/libhandle/libhandle.la -DK_INC_DIR = @includedir@/disk - -prefix = @prefix@ -exec_prefix = @exec_prefix@ -top_builddir = @top_builddir@ -datarootdir = @datarootdir@ - PKG_NAME = @pkg_name@ PKG_USER = @pkg_user@ PKG_GROUP = @pkg_group@ @@ -51,11 +44,18 @@ PKG_RELEASE = @pkg_release@ PKG_VERSION = @pkg_version@ PKG_PLATFORM = @pkg_platform@ PKG_DISTRIBUTION= @pkg_distribution@ -PKG_BIN_DIR = @bindir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ +top_builddir = @top_builddir@ + PKG_SBIN_DIR = @sbindir@ +PKG_ROOT_SBIN_DIR = @root_sbindir@ +PKG_ROOT_LIB_DIR= @root_libdir@@libdirsuffix@ PKG_LIB_DIR = @libdir@@libdirsuffix@ -PKG_DEVLIB_DIR = @libexecdir@@libdirsuffix@ PKG_INC_DIR = @includedir@/xfs +DK_INC_DIR = @includedir@/disk PKG_MAN_DIR = @mandir@ PKG_DOC_DIR = @datadir@/doc/@pkg_name@ PKG_LOCALE_DIR = @datadir@/locale Index: xfsprogs-dev/include/buildmacros =================================================================== --- xfsprogs-dev.orig/include/buildmacros 2009-10-06 11:11:09.263261965 -0300 +++ xfsprogs-dev/include/buildmacros 2009-10-06 11:18:25.261006281 -0300 @@ -51,16 +51,16 @@ LTINSTALL = $(LIBTOOL) --mode=install $( LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CCF) ifeq ($(ENABLE_SHARED),yes) -LTLDFLAGS += -rpath $(PKG_LIB_DIR) +LTLDFLAGS += -rpath $(PKG_ROOT_LIB_DIR) LTLDFLAGS += -version-info $(LTVERSION) endif ifeq ($(ENABLE_SHARED),yes) INSTALL_LTLIB = \ cd $(TOPDIR)/$(LIBNAME)/.libs; \ - ../$(INSTALL) -m 755 -d $(PKG_LIB_DIR); \ - ../$(INSTALL) -m 644 -T so_dot_version $(LIBNAME).lai $(PKG_LIB_DIR); \ - ../$(INSTALL) -T so_dot_current $(LIBNAME).lai $(PKG_LIB_DIR) + ../$(INSTALL) -m 755 -d $(PKG_ROOT_LIB_DIR); \ + ../$(INSTALL) -m 644 -T so_dot_version $(LIBNAME).lai $(PKG_ROOT_LIB_DIR); \ + ../$(INSTALL) -T so_dot_current $(LIBNAME).lai $(PKG_ROOT_LIB_DIR) endif # Libtool thinks the static and shared libs should be in the same dir, so @@ -72,15 +72,15 @@ endif ifeq ($(ENABLE_SHARED),yes) INSTALL_LTLIB_DEV = \ cd $(TOPDIR)/$(LIBNAME)/.libs; \ - ../$(INSTALL) -m 755 -d $(PKG_DEVLIB_DIR); \ - ../$(INSTALL) -m 644 -T old_lib $(LIBNAME).lai $(PKG_DEVLIB_DIR); \ - ../$(INSTALL) -m 644 $(LIBNAME).lai $(PKG_DEVLIB_DIR)/$(LIBNAME).la ; \ ../$(INSTALL) -m 755 -d $(PKG_LIB_DIR); \ - ../$(INSTALL) -T so_base $(LIBNAME).lai $(PKG_LIB_DIR); \ - if test "x$(PKG_DEVLIB_DIR)" != "x$(PKG_LIB_DIR)" ; then \ - ../$(INSTALL) -S $(PKG_DEVLIB_DIR)/$(LIBNAME).a $(PKG_LIB_DIR)/$(LIBNAME).a; \ - ../$(INSTALL) -S $(PKG_DEVLIB_DIR)/$(LIBNAME).la $(PKG_LIB_DIR)/$(LIBNAME).la; \ - ../$(INSTALL) -S $(PKG_LIB_DIR)/$(LIBNAME).so $(PKG_DEVLIB_DIR)/$(LIBNAME).so; \ + ../$(INSTALL) -m 644 -T old_lib $(LIBNAME).lai $(PKG_LIB_DIR); \ + ../$(INSTALL) -m 644 $(LIBNAME).lai $(PKG_LIB_DIR)/$(LIBNAME).la ; \ + ../$(INSTALL) -m 755 -d $(PKG_ROOT_LIB_DIR); \ + ../$(INSTALL) -T so_base $(LIBNAME).lai $(PKG_ROOT_LIB_DIR); \ + if test "x$(PKG_LIB_DIR)" != "x$(PKG_ROOT_LIB_DIR)" ; then \ + ../$(INSTALL) -S $(PKG_LIB_DIR)/$(LIBNAME).a $(PKG_ROOT_LIB_DIR)/$(LIBNAME).a; \ + ../$(INSTALL) -S $(PKG_LIB_DIR)/$(LIBNAME).la $(PKG_ROOT_LIB_DIR)/$(LIBNAME).la; \ + ../$(INSTALL) -S $(PKG_ROOT_LIB_DIR)/$(LIBNAME).so $(PKG_LIB_DIR)/$(LIBNAME).so; \ fi else INSTALL_LTLIB_DEV = $(INSTALL_LTLIB_STATIC) @@ -88,8 +88,8 @@ endif INSTALL_LTLIB_STATIC = \ cd $(TOPDIR)/$(LIBNAME)/.libs; \ - ../$(INSTALL) -m 755 -d $(PKG_DEVLIB_DIR); \ - ../$(INSTALL) -m 644 -T old_lib $(LIBNAME).lai $(PKG_DEVLIB_DIR) + ../$(INSTALL) -m 755 -d $(PKG_LIB_DIR); \ + ../$(INSTALL) -m 644 -T old_lib $(LIBNAME).lai $(PKG_LIB_DIR) INSTALL_MAN = \ @for d in $(MAN_PAGES); do \ Index: xfsprogs-dev/mkfs/Makefile =================================================================== --- xfsprogs-dev.orig/mkfs/Makefile 2009-10-06 11:09:48.814275021 -0300 +++ xfsprogs-dev/mkfs/Makefile 2009-10-06 11:09:58.301006150 -0300 @@ -26,6 +26,6 @@ $(FSTYP): $(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LIBDISK) $(PLDLIBS) install: default - $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) - $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) + $(INSTALL) -m 755 -d $(PKG_ROOT_SBIN_DIR) + $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_ROOT_SBIN_DIR) install-dev: Index: xfsprogs-dev/repair/Makefile =================================================================== --- xfsprogs-dev.orig/repair/Makefile 2009-10-06 11:09:35.796022404 -0300 +++ xfsprogs-dev/repair/Makefile 2009-10-06 11:09:44.599256296 -0300 @@ -47,6 +47,6 @@ include $(BUILDRULES) #CFLAGS += ... install: default - $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) - $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) + $(INSTALL) -m 755 -d $(PKG_ROOT_SBIN_DIR) + $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_ROOT_SBIN_DIR) install-dev: Index: xfsprogs-dev/copy/Makefile =================================================================== --- xfsprogs-dev.orig/copy/Makefile 2009-10-06 11:18:41.963277125 -0300 +++ xfsprogs-dev/copy/Makefile 2009-10-06 11:19:50.867035885 -0300 @@ -18,6 +18,6 @@ default: $(LTCOMMAND) include $(BUILDRULES) install: default - $(INSTALL) -m 755 -d $(PKG_BIN_DIR) - $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) + $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) + $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) install-dev: Index: xfsprogs-dev/db/Makefile =================================================================== --- xfsprogs-dev.orig/db/Makefile 2009-10-06 11:18:41.975279071 -0300 +++ xfsprogs-dev/db/Makefile 2009-10-06 11:18:57.142259890 -0300 @@ -35,10 +35,10 @@ default: $(LTCOMMAND) include $(BUILDRULES) install: default - $(INSTALL) -m 755 -d $(PKG_BIN_DIR) - $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) - $(INSTALL) -m 755 xfs_admin.sh $(PKG_BIN_DIR)/xfs_admin - $(INSTALL) -m 755 xfs_check.sh $(PKG_BIN_DIR)/xfs_check - $(INSTALL) -m 755 xfs_ncheck.sh $(PKG_BIN_DIR)/xfs_ncheck - $(INSTALL) -m 755 xfs_metadump.sh $(PKG_BIN_DIR)/xfs_metadump + $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) + $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) + $(INSTALL) -m 755 xfs_admin.sh $(PKG_SBIN_DIR)/xfs_admin + $(INSTALL) -m 755 xfs_check.sh $(PKG_SBIN_DIR)/xfs_check + $(INSTALL) -m 755 xfs_ncheck.sh $(PKG_SBIN_DIR)/xfs_ncheck + $(INSTALL) -m 755 xfs_metadump.sh $(PKG_SBIN_DIR)/xfs_metadump install-dev: Index: xfsprogs-dev/estimate/Makefile =================================================================== --- xfsprogs-dev.orig/estimate/Makefile 2009-10-06 11:18:42.004254198 -0300 +++ xfsprogs-dev/estimate/Makefile 2009-10-06 11:19:05.620271216 -0300 @@ -13,6 +13,6 @@ default: $(LTCOMMAND) include $(BUILDRULES) install: default - $(INSTALL) -m 755 -d $(PKG_BIN_DIR) - $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) + $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) + $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) install-dev: Index: xfsprogs-dev/fsr/Makefile =================================================================== --- xfsprogs-dev.orig/fsr/Makefile 2009-10-06 11:18:42.013254645 -0300 +++ xfsprogs-dev/fsr/Makefile 2009-10-06 11:19:10.676256037 -0300 @@ -14,6 +14,6 @@ default: $(LTCOMMAND) include $(BUILDRULES) install: default - $(INSTALL) -m 755 -d $(PKG_BIN_DIR) - $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) + $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) + $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) install-dev: Index: xfsprogs-dev/growfs/Makefile =================================================================== --- xfsprogs-dev.orig/growfs/Makefile 2009-10-06 11:18:42.022254115 -0300 +++ xfsprogs-dev/growfs/Makefile 2009-10-06 11:19:13.116283780 -0300 @@ -27,7 +27,7 @@ default: $(LTCOMMAND) include $(BUILDRULES) install: default - $(INSTALL) -m 755 -d $(PKG_BIN_DIR) - $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) - $(INSTALL) -m 755 xfs_info.sh $(PKG_BIN_DIR)/xfs_info + $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) + $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) + $(INSTALL) -m 755 xfs_info.sh $(PKG_SBIN_DIR)/xfs_info install-dev: Index: xfsprogs-dev/io/Makefile =================================================================== --- xfsprogs-dev.orig/io/Makefile 2009-10-06 11:18:42.064278528 -0300 +++ xfsprogs-dev/io/Makefile 2009-10-06 11:19:18.300256635 -0300 @@ -68,9 +68,9 @@ default: $(LTCOMMAND) include $(BUILDRULES) install: default - $(INSTALL) -m 755 -d $(PKG_BIN_DIR) - $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) - $(LTINSTALL) -m 755 xfs_bmap.sh $(PKG_BIN_DIR)/xfs_bmap - $(LTINSTALL) -m 755 xfs_freeze.sh $(PKG_BIN_DIR)/xfs_freeze - $(LTINSTALL) -m 755 xfs_mkfile.sh $(PKG_BIN_DIR)/xfs_mkfile + $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) + $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) + $(LTINSTALL) -m 755 xfs_bmap.sh $(PKG_SBIN_DIR)/xfs_bmap + $(LTINSTALL) -m 755 xfs_freeze.sh $(PKG_SBIN_DIR)/xfs_freeze + $(LTINSTALL) -m 755 xfs_mkfile.sh $(PKG_SBIN_DIR)/xfs_mkfile install-dev: Index: xfsprogs-dev/logprint/Makefile =================================================================== --- xfsprogs-dev.orig/logprint/Makefile 2009-10-06 11:18:42.137253739 -0300 +++ xfsprogs-dev/logprint/Makefile 2009-10-06 11:19:28.176016011 -0300 @@ -21,6 +21,6 @@ default: $(LTCOMMAND) include $(BUILDRULES) install: default - $(INSTALL) -m 755 -d $(PKG_BIN_DIR) - $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) + $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) + $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) install-dev: Index: xfsprogs-dev/mdrestore/Makefile =================================================================== --- xfsprogs-dev.orig/mdrestore/Makefile 2009-10-06 11:18:42.180023289 -0300 +++ xfsprogs-dev/mdrestore/Makefile 2009-10-06 11:19:34.450255427 -0300 @@ -17,6 +17,6 @@ default: $(LTCOMMAND) include $(BUILDRULES) install: - $(INSTALL) -m 755 -d $(PKG_BIN_DIR) - $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) + $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) + $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) install-dev: Index: xfsprogs-dev/quota/Makefile =================================================================== --- xfsprogs-dev.orig/quota/Makefile 2009-10-06 11:18:42.207004098 -0300 +++ xfsprogs-dev/quota/Makefile 2009-10-06 11:19:41.557287423 -0300 @@ -33,6 +33,6 @@ default: $(LTCOMMAND) include $(BUILDRULES) install: default - $(INSTALL) -m 755 -d $(PKG_BIN_DIR) - $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) + $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) + $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) install-dev: Index: xfsprogs-dev/rtcp/Makefile =================================================================== --- xfsprogs-dev.orig/rtcp/Makefile 2009-10-06 11:18:42.222027729 -0300 +++ xfsprogs-dev/rtcp/Makefile 2009-10-06 11:19:45.904034779 -0300 @@ -14,6 +14,6 @@ default: $(LTCOMMAND) include $(BUILDRULES) install: default - $(INSTALL) -m 755 -d $(PKG_BIN_DIR) - $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) + $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) + $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) install-dev: Index: xfsprogs-dev/Makefile =================================================================== --- xfsprogs-dev.orig/Makefile 2009-10-06 11:22:23.406003743 -0300 +++ xfsprogs-dev/Makefile 2009-10-06 11:28:55.138031519 -0300 @@ -58,18 +58,7 @@ configure: autoconf include/builddefs: configure - ./configure \ - --prefix=/ \ - --exec-prefix=/ \ - --sbindir=/sbin \ - --bindir=/usr/sbin \ - --libdir=/lib \ - --libexecdir=/usr/lib \ - --enable-lib64=yes \ - --includedir=/usr/include \ - --mandir=/usr/share/man \ - --datadir=/usr/share \ - $$LOCAL_CONFIGURE_OPTIONS + ./configure $$LOCAL_CONFIGURE_OPTIONS touch .census include/platform_defs.h: include/builddefs From BATV+16c26fc59ad82b7e8ea7+2235+infradead.org+hch@bombadil.srs.infradead.org Tue Oct 6 10:41:28 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96FfSaC075037 for ; Tue, 6 Oct 2009 10:41:28 -0500 X-ASG-Debug-ID: 1254843774-12cd02980000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9061D1743B11 for ; Tue, 6 Oct 2009 08:42:54 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id LupRs0QKTY311nco for ; Tue, 06 Oct 2009 08:42:54 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MvCBd-0004oQ-J8; Tue, 06 Oct 2009 15:42:49 +0000 Date: Tue, 6 Oct 2009 11:42:49 -0400 From: Christoph Hellwig To: vapier@gentoo.org, nathans@debian.org, sandeen@sandeen.net, xfs@oss.sgi.com X-ASG-Orig-Subj: moving libhandle to /usr Subject: moving libhandle to /usr Message-ID: <20091006154249.GA1411@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1254843774 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Currently we install the versioned libhandle into /lib by default, and all other libraries into /usr. Given that no program in / actually uses libhandle this seems rather awkward to me. From Mike's comments in the past I think Gentoo already installs it into /usr anyway. Is there anything speaking against moving all libraries to /usr and switching Debian/Fedora to that aswell? From sandeen@sandeen.net Tue Oct 6 10:45:55 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96Fjsi3075289 for ; Tue, 6 Oct 2009 10:45:54 -0500 X-ASG-Debug-ID: 1254844039-0884017f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EF0731324C12 for ; Tue, 6 Oct 2009 08:47:19 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id yqmeHGZZm87n9Qc1 for ; Tue, 06 Oct 2009 08:47:19 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id E4781AAE38D; Tue, 6 Oct 2009 10:47:18 -0500 (CDT) Message-ID: <4ACB6686.9080205@sandeen.net> Date: Tue, 06 Oct 2009 10:47:18 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Christoph Hellwig CC: vapier@gentoo.org, nathans@debian.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: moving libhandle to /usr Subject: Re: moving libhandle to /usr References: <20091006154249.GA1411@infradead.org> In-Reply-To: <20091006154249.GA1411@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1254844039 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.11007 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Currently we install the versioned libhandle into /lib by default, > and all other libraries into /usr. Given that no program in / actually > uses libhandle this seems rather awkward to me. From Mike's comments > in the past I think Gentoo already installs it into /usr anyway. > > Is there anything speaking against moving all libraries to /usr and > switching Debian/Fedora to that aswell? > Seems fine to me; /sbin/fsck.xfs: not a dynamic executable /sbin/mkfs.xfs: libuuid.so.1 => /lib64/libuuid.so.1 (0x0000003327e00000) librt.so.1 => /lib64/librt.so.1 (0x0000003df3e00000) libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003df2e00000) libc.so.6 => /lib64/libc.so.6 (0x0000003df2200000) /lib64/ld-linux-x86-64.so.2 (0x0000003df1e00000) /sbin/xfs_repair: libuuid.so.1 => /lib64/libuuid.so.1 (0x0000003327e00000) librt.so.1 => /lib64/librt.so.1 (0x0000003df3e00000) libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003df2e00000) libc.so.6 => /lib64/libc.so.6 (0x0000003df2200000) /lib64/ld-linux-x86-64.so.2 (0x0000003df1e00000) As you say, nothing in /sbin needs it AFAICT. -Eric From nscott@aconex.com Tue Oct 6 13:43:56 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96Ihund084604 for ; Tue, 6 Oct 2009 13:43:56 -0500 X-ASG-Debug-ID: 1254854720-121803720000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from postoffice2.aconex.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EF09EBD61D0 for ; Tue, 6 Oct 2009 11:45:20 -0700 (PDT) Received: from postoffice2.aconex.com (mail.aconex.com [203.89.202.182]) by cuda.sgi.com with ESMTP id HMWuEh8qM8VzZahs for ; Tue, 06 Oct 2009 11:45:20 -0700 (PDT) Received: from postoffice.aconex.com (localhost [127.0.0.1]) by postoffice2.aconex.com (Spam & Virus Firewall) with ESMTP id 9B94D4CB540; Wed, 7 Oct 2009 05:45:17 +1100 (EST) Received: from postoffice.aconex.com (postoffice.yarra.acx [192.168.102.1]) by postoffice2.aconex.com with ESMTP id VdH7B2KAcnDFdJw9; Wed, 07 Oct 2009 05:45:17 +1100 (EST) Received: from gatekeeper.aconex.com (gatekeeper.yarra.acx [192.168.102.10]) by postoffice.aconex.com (Postfix) with ESMTP id 84E91A50133; Wed, 7 Oct 2009 05:43:58 +1100 (EST) Received: from localhost (localhost.localdomain [127.0.0.1]) by gatekeeper.aconex.com (Postfix) with ESMTP id 8C6C0C7A83; Wed, 7 Oct 2009 05:45:17 +1100 (EST) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: amavisd-new at gatekeeper.yarra.acx Received: from gatekeeper.aconex.com ([127.0.0.1]) by localhost (gatekeeper.aconex.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XSbmvdVTXF1r; Wed, 7 Oct 2009 05:45:12 +1100 (EST) Received: from mail-au.aconex.com (mail-au.aconex.com [192.168.102.12]) by gatekeeper.aconex.com (Postfix) with ESMTP id 460DBC7A6F; Wed, 7 Oct 2009 05:45:11 +1100 (EST) Date: Wed, 7 Oct 2009 05:45:11 +1100 (EST) From: Nathan Scott To: Eric Sandeen Cc: vapier@gentoo.org, xfs@oss.sgi.com, Christoph Hellwig Message-ID: <1964191006.21461254854711239.JavaMail.root@mail-au.aconex.com> In-Reply-To: <4ACB6686.9080205@sandeen.net> X-ASG-Orig-Subj: Re: moving libhandle to /usr Subject: Re: moving libhandle to /usr MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [211.28.150.226] X-Mailer: Zimbra 5.0.18_GA_3011.RHEL5_64 (ZimbraWebClient - SAF3 (Mac)/5.0.18_GA_3011.RHEL5_64) X-Barracuda-Connect: mail.aconex.com[203.89.202.182] X-Barracuda-Start-Time: 1254854721 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.11017 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Status: Clean ----- "Eric Sandeen" wrote: > Christoph Hellwig wrote: > > Currently we install the versioned libhandle into /lib by default, > > and all other libraries into /usr. Given that no program in / > actually > > uses libhandle this seems rather awkward to me. From Mike's > comments > > in the past I think Gentoo already installs it into /usr anyway. > > > > Is there anything speaking against moving all libraries to /usr and > > switching Debian/Fedora to that aswell? > > > > Seems fine to me; *nod* - looks ok to me too. -- Nathan From BATV+16c26fc59ad82b7e8ea7+2235+infradead.org+hch@bombadil.srs.infradead.org Tue Oct 6 13:46:33 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_26, J_CHICKENPOX_52 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96IkX39084762 for ; Tue, 6 Oct 2009 13:46:33 -0500 X-ASG-Debug-ID: 1254854878-074701510000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 789D14A7B94 for ; Tue, 6 Oct 2009 11:47:58 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id wO6gi9GD51f4fpy0 for ; Tue, 06 Oct 2009 11:47:58 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MvF4o-0001jd-Km for xfs@oss.sgi.com; Tue, 06 Oct 2009 18:47:58 +0000 Date: Tue, 6 Oct 2009 14:47:58 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] mkfs: add discard support Subject: [PATCH] mkfs: add discard support Message-ID: <20091006184758.GA4780@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1254854879 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Call the BLKDISCARD ioctl to mark the whole disk as unused before creating a new filesystem. This will allow SSDs, Arrays with thin provisioning support and virtual machines to make smarter allocation decisions. Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/mkfs/xfs_mkfs.c =================================================================== --- xfsprogs-dev.orig/mkfs/xfs_mkfs.c 2009-10-06 18:02:34.000000000 +0000 +++ xfsprogs-dev/mkfs/xfs_mkfs.c 2009-10-06 18:03:55.000000000 +0000 @@ -605,6 +605,29 @@ done: free(buf); } +#ifdef __linux__ + +#ifndef BLKDISCARD +#define BLKDISCARD _IO(0x12,119) +#endif + +static void +discard_blocks(dev_t dev, __uint64_t nsectors) +{ + int fd = libxfs_device_to_fd(dev); + __uint64_t range[2] = { 0, nsectors << 9 }; + + /* + * We intentionally ignore errors from the discard ioctl. It is + * not nessecary for the mkfs functionality but just an optimization. + */ + if (fd > 0) + ioctl(fd, BLKDISCARD, &range); +} +#else +#define discard_blocks(dev, nsectors) +#endif + int main( int argc, @@ -1645,6 +1668,12 @@ main( } } + discard_blocks(xi.ddev, xi.dsize); + if (xi.rtdev) + discard_blocks(xi.rtdev, xi.rtsize); + if (xi.logdev && xi.logdev != xi.ddev) + discard_blocks(xi.logdev, xi.logBBsize); + if (!liflag && !ldflag) loginternal = xi.logdev == 0; if (xi.logname) From BATV+16c26fc59ad82b7e8ea7+2235+infradead.org+hch@bombadil.srs.infradead.org Tue Oct 6 13:51:27 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-3.9 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_26, J_CHICKENPOX_27,J_CHICKENPOX_66,J_CHICKENPOX_84,LOCAL_GNU_PATCH autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96IpQhq085062 for ; Tue, 6 Oct 2009 13:51:26 -0500 X-ASG-Debug-ID: 1254855172-59eb01fb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DF224174778F for ; Tue, 6 Oct 2009 11:52:52 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id miRZSjChQCrN2Pp2 for ; Tue, 06 Oct 2009 11:52:52 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MvF9Y-0002kH-9h; Tue, 06 Oct 2009 18:52:52 +0000 Date: Tue, 6 Oct 2009 14:52:52 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: util-linux-ng@vger.kernel.org X-ASG-Orig-Subj: [PATCH] xfsprogs: allow using libblkid instead of libdisk Subject: [PATCH] xfsprogs: allow using libblkid instead of libdisk Message-ID: <20091006185252.GA10250@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1254855172 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Add a new --enable-blkid switch to use libblkid from util-linux to detect the device geometry and check for existing partitions or filesystem on a device. Note that this requires the latest blkid from util-linux-ng git for the topology calls, odler ones won't work. If I had a little more autoconf fu we might be able to detect a too early one, but right now it just fails if it's too old and --enable-blkid is specified. We also stop building libdisk in the blkid case as it's an internal static library not otherwise used. For the actual checks I tried to stay as close as possible to the old code, so we still don't check topology for external log devices. I hope to add this at a later stage. As a small addition we also print a warning if trying to create a filesystem on a partition that is not properly aligned. Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/mkfs/Makefile =================================================================== --- xfsprogs-dev.orig/mkfs/Makefile 2009-10-06 18:31:03.000000000 +0000 +++ xfsprogs-dev/mkfs/Makefile 2009-10-06 18:31:05.000000000 +0000 @@ -11,14 +11,27 @@ FSTYP = fstyp HFILES = xfs_mkfs.h CFILES = maxtrres.c proto.c xfs_mkfs.c -LLDLIBS = $(LIBXFS) $(LIBUUID) $(LIBDISK) $(LIBRT) $(LIBPTHREAD) -LTDEPENDENCIES = $(LIBXFS) $(LIBDISK) +LLDLIBS = $(LIBXFS) $(LIBUUID) $(LIBRT) $(LIBPTHREAD) +LTDEPENDENCIES = $(LIBXFS) LLDFLAGS = -static +ifeq ($(ENABLE_BLKID),yes) +LLDLIBS += $(LIBBLKID) +CFLAGS += -DENABLE_BLKID +else +LLDLIBS += $(LIBDISK) +LTDEPENDENCIES += $(LIBDISK) +endif + + LSRCFILES = $(FSTYP).c LDIRT = $(FSTYP) -default: $(FSTYP) $(LTCOMMAND) +default: $(LTCOMMAND) + +ifneq ($(ENABLE_BLKID),yes) +default: $(FSTYP) +endif include $(BUILDRULES) Index: xfsprogs-dev/mkfs/xfs_mkfs.c =================================================================== --- xfsprogs-dev.orig/mkfs/xfs_mkfs.c 2009-10-06 18:31:03.000000000 +0000 +++ xfsprogs-dev/mkfs/xfs_mkfs.c 2009-10-06 18:45:58.000000000 +0000 @@ -17,12 +17,26 @@ */ #include +#include +#ifdef ENABLE_BLKID +#include +#else #include #include -#include +#endif #include "xfs_mkfs.h" /* + * Device topology information. + */ +struct fs_topology { + int dsunit; /* stripe unit - data subvolume */ + int dswidth; /* stripe width - data subvolume */ + int rtswidth; /* stripe width - rt subvolume */ + int sectoralign; +}; + +/* * Prototypes for internal functions. */ static void conflict(char opt, char *tab[], int oldidx, int newidx); @@ -267,6 +281,105 @@ calc_stripe_factors( } } +#ifdef ENABLE_BLKID +static int +check_overwrite( + char *device) +{ + const char *type; + blkid_probe pr; + int ret = 0; + + if (!device || !*device) + return 0; + + pr = blkid_new_probe_from_filename(device); + if (!pr) + return -1; + + if (blkid_probe_enable_partitions(pr, 1)) + goto out_free_probe; + + if (blkid_do_fullprobe(pr)) + goto out_free_probe; + + if (!blkid_probe_lookup_value(pr, "TYPE", &type, NULL)) { + fprintf(stderr, + _("%s: %s appears to contain an existing " + "filesystem (%s).\n"), progname, device, type); + ret = 1; + } else if (!blkid_probe_lookup_value(pr, "PTTYPE", &type, NULL)) { + fprintf(stderr, + _("%s: %s appears to contain a partition " + "table (%s).\n"), progname, device, type); + ret = 1; + } + +out_free_probe: + blkid_free_probe(pr); + return ret; +} + +static void blkid_get_topology(const char *device, int *sunit, int *swidth) +{ + blkid_topology tp; + blkid_probe pr; + unsigned long val; + + pr = blkid_new_probe_from_filename(device); + if (!pr) + return; + + tp = blkid_probe_get_topology(pr); + if (!tp) + goto out_free_probe; + + /* + * Blkid reports the information in terms of bytes, but we want it in + * terms of 512 bytes blocks (just to convert it to bytes later..) + * + * If the reported values are just the normal 512 byte block size + * do not bother to report anything. It will just causes warnings + * if people specifier larger stripe units or widths manually. + */ + val = blkid_topology_get_minimum_io_size(tp) >> 9; + if (val > 1) + *sunit = val; + val = blkid_topology_get_optimal_io_size(tp) >> 9; + if (val > 1) + *swidth = val; + + if (blkid_topology_get_alignment_offset(tp) != 0) { + fprintf(stderr, + _("warning: device is not properly aligned %s\n"), + device); + } + + blkid_free_probe(pr); + return; + +out_free_probe: + blkid_free_probe(pr); + fprintf(stderr, + _("warning: unable to probe device toplology for device %s\n"), + device); +} + +static void get_topology(libxfs_init_t *xi, struct fs_topology *ft) +{ + if (!xi->disfile) { + const char *dfile = xi->volname ? xi->volname : xi->dname; + + blkid_get_topology(dfile, &ft->dsunit, &ft->dswidth); + } + + if (xi->rtname && !xi->risfile) { + int dummy; + + blkid_get_topology(xi->rtname, &dummy, &ft->rtswidth); + } +} +#else /* ENABLE_BLKID */ static int check_overwrite( char *device) @@ -290,6 +403,24 @@ check_overwrite( return 0; } +static void get_topology(libxfs_init_t *xi, struct fs_topology *ft) +{ + char *dfile = xi->volname ? xi->volname : xi->dname; + + if (!xi->disfile) { + get_subvol_stripe_wrapper(dfile, SVTYPE_DATA, + &ft->dsunit, &ft->dswidth, &ft->sectoralign); + } + + if (xi->rtname && !xi->risfile) { + int dummy1; + + get_subvol_stripe_wrapper(dfile, SVTYPE_RT, &dummy1, + &ft->rtswidth, &dummy1); + } +} +#endif /* ENABLE_BLKID */ + static void fixup_log_stripe_unit( int lsflag, @@ -715,7 +846,6 @@ main( char *rtfile; char *rtsize; xfs_sb_t *sbp; - int sectoralign; int sectorlog; unsigned int sectorsize; __uint64_t sector_mask; @@ -725,8 +855,7 @@ main( uuid_t uuid; int worst_freelist; libxfs_init_t xi; - int xlv_dsunit; - int xlv_dswidth; + struct fs_topology ft; int lazy_sb_counters; progname = basename(argv[0]); @@ -1416,12 +1545,10 @@ main( usage(); } - sectoralign = 0; - xlv_dsunit = xlv_dswidth = 0; - if (!xi.disfile) - get_subvol_stripe_wrapper(dfile, SVTYPE_DATA, - &xlv_dsunit, &xlv_dswidth, §oralign); - if (sectoralign) { + memset(&ft, 0, sizeof(ft)); + get_topology(&xi, &ft); + + if (ft.sectoralign) { sectorsize = blocksize; sectorlog = libxfs_highbit32(sectorsize); if (loginternal) { @@ -1569,14 +1696,15 @@ main( * and the underlying volume is striped, then set rtextblocks * to the stripe width. */ - int dummy1, rswidth; + int rswidth; __uint64_t rtextbytes; - dummy1 = rswidth = 0; + rswidth = 0; if (!norsflag && !xi.risfile && !(!rtsize && xi.disfile)) - get_subvol_stripe_wrapper(dfile, SVTYPE_RT, &dummy1, - &rswidth, &dummy1); + rswidth = ft.rtswidth; + else + rswidth = 0; /* check that rswidth is a multiple of fs blocksize */ if (!norsflag && rswidth && !(BBTOB(rswidth) % blocksize)) { @@ -1823,27 +1951,27 @@ _("size %s specified for log subvolume i agsize = dblocks / agcount + (dblocks % agcount != 0); else calc_default_ag_geometry(blocklog, dblocks, - xlv_dsunit | xlv_dswidth, &agsize, &agcount); + ft.dsunit | ft.dswidth, &agsize, &agcount); if (!nodsflag) { if (dsunit) { - if (xlv_dsunit && xlv_dsunit != dsunit) { + if (ft.dsunit && ft.dsunit != dsunit) { fprintf(stderr, _("%s: Specified data stripe unit %d " "is not the same as the volume stripe " "unit %d\n"), - progname, dsunit, xlv_dsunit); + progname, dsunit, ft.dsunit); } - if (xlv_dswidth && xlv_dswidth != dswidth) { + if (ft.dswidth && ft.dswidth != dswidth) { fprintf(stderr, _("%s: Specified data stripe width %d " "is not the same as the volume stripe " "width %d\n"), - progname, dswidth, xlv_dswidth); + progname, dswidth, ft.dswidth); } } else { - dsunit = xlv_dsunit; - dswidth = xlv_dswidth; + dsunit = ft.dsunit; + dswidth = ft.dswidth; nodsflag = 1; } } /* else dsunit & dswidth can't be set if nodsflag is set */ Index: xfsprogs-dev/Makefile =================================================================== --- xfsprogs-dev.orig/Makefile 2009-10-06 18:31:03.000000000 +0000 +++ xfsprogs-dev/Makefile 2009-10-06 18:31:05.000000000 +0000 @@ -16,10 +16,14 @@ LDIRT = config.log .dep config.status co Logs/* built .census install.* install-dev.* *.gz autom4te.cache/* \ libtool include/builddefs include/platform_defs.h -LIB_SUBDIRS = libxfs libxlog libxcmd libhandle libdisk +LIB_SUBDIRS = libxfs libxlog libxcmd libhandle $(LDISK) TOOL_SUBDIRS = copy db estimate fsck fsr growfs io logprint mkfs quota \ mdrestore repair rtcp m4 man doc po debian build +ifneq ($(ENABLE_BLKID), yes) +LIB_SUBDIRS += libdisk +endif + SUBDIRS = include $(LIB_SUBDIRS) $(TOOL_SUBDIRS) default: include/builddefs include/platform_defs.h @@ -36,10 +40,14 @@ db logprint: libxfs libxlog fsr: libhandle growfs: libxfs libxcmd io: libxcmd libhandle -mkfs: libxfs libdisk +mkfs: libxfs quota: libxcmd repair: libxfs libxlog +ifneq ($(ENABLE_BLKID), yes) +mkfs: libdisk +endif + ifeq ($(HAVE_BUILDDEFS), yes) include $(BUILDRULES) else Index: xfsprogs-dev/configure.in =================================================================== --- xfsprogs-dev.orig/configure.in 2009-10-06 18:31:03.000000000 +0000 +++ xfsprogs-dev/configure.in 2009-10-06 18:31:05.000000000 +0000 @@ -35,6 +35,12 @@ AC_ARG_ENABLE(termcap, test $enable_termcap = yes && libtermcap="-ltermcap",) AC_SUBST(libtermcap) +AC_ARG_ENABLE(blkid, +[ --enable-blkid=[yes/no] Enable block device id library [default=no]], + test $enable_blkid = yes && libblkid="-lblkid",) +AC_SUBST(libblkid) +AC_SUBST(enable_blkid) + AC_ARG_ENABLE(lib64, [ --enable-lib64=[yes/no] Enable lib64 support [default=yes]],, enable_lib64=yes) Index: xfsprogs-dev/include/builddefs.in =================================================================== --- xfsprogs-dev.orig/include/builddefs.in 2009-10-06 18:31:03.000000000 +0000 +++ xfsprogs-dev/include/builddefs.in 2009-10-06 18:31:05.000000000 +0000 @@ -31,6 +31,7 @@ LIBPTHREAD = @libpthread@ LIBTERMCAP = @libtermcap@ LIBEDITLINE = @libeditline@ LIBREADLINE = @libreadline@ +LIBBLKID = @libblkid@ LIBXFS = $(TOPDIR)/libxfs/libxfs.la LIBXCMD = $(TOPDIR)/libxcmd/libxcmd.la LIBXLOG = $(TOPDIR)/libxlog/libxlog.la @@ -85,6 +86,7 @@ ENABLE_SHARED = @enable_shared@ ENABLE_GETTEXT = @enable_gettext@ ENABLE_EDITLINE = @enable_editline@ ENABLE_READLINE = @enable_readline@ +ENABLE_BLKID = @enable_blkid@ HAVE_ZIPPED_MANPAGES = @have_zipped_manpages@ From nscott@aconex.com Tue Oct 6 14:23:15 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96JNFnB086894 for ; Tue, 6 Oct 2009 14:23:15 -0500 X-ASG-Debug-ID: 1254857079-59f502770000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from postoffice2.aconex.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BE6581747B64 for ; Tue, 6 Oct 2009 12:24:40 -0700 (PDT) Received: from postoffice2.aconex.com (mail.aconex.com [203.89.202.182]) by cuda.sgi.com with ESMTP id h7Tr0MwM5iIjdTl9 for ; Tue, 06 Oct 2009 12:24:40 -0700 (PDT) Received: from postoffice.aconex.com (localhost [127.0.0.1]) by postoffice2.aconex.com (Spam & Virus Firewall) with ESMTP id B52C34CBB89; Wed, 7 Oct 2009 06:24:38 +1100 (EST) Received: from postoffice.aconex.com (postoffice.yarra.acx [192.168.102.1]) by postoffice2.aconex.com with ESMTP id kToyGqLMqCsU93jw; Wed, 07 Oct 2009 06:24:38 +1100 (EST) Received: from gatekeeper.aconex.com (gatekeeper.yarra.acx [192.168.102.10]) by postoffice.aconex.com (Postfix) with ESMTP id 85D31A50133; Wed, 7 Oct 2009 06:23:19 +1100 (EST) Received: from localhost (localhost.localdomain [127.0.0.1]) by gatekeeper.aconex.com (Postfix) with ESMTP id 8F03DC7A83; Wed, 7 Oct 2009 06:24:38 +1100 (EST) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: amavisd-new at gatekeeper.yarra.acx Received: from gatekeeper.aconex.com ([127.0.0.1]) by localhost (gatekeeper.aconex.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7oq8dZmCMfw2; Wed, 7 Oct 2009 06:24:33 +1100 (EST) Received: from mail-au.aconex.com (mail-au.aconex.com [192.168.102.12]) by gatekeeper.aconex.com (Postfix) with ESMTP id CDBC8C7A6F; Wed, 7 Oct 2009 06:24:33 +1100 (EST) Date: Wed, 7 Oct 2009 06:24:33 +1100 (EST) From: Nathan Scott To: Christoph Hellwig Cc: xfs@oss.sgi.com Message-ID: <837780486.21741254857073773.JavaMail.root@mail-au.aconex.com> In-Reply-To: <1235789111.21721254856913943.JavaMail.root@mail-au.aconex.com> X-ASG-Orig-Subj: Re: [PATCH] mkfs: add discard support Subject: Re: [PATCH] mkfs: add discard support MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [211.28.150.226] X-Mailer: Zimbra 5.0.18_GA_3011.RHEL5_64 (ZimbraWebClient - SAF3 (Mac)/5.0.18_GA_3011.RHEL5_64) X-Barracuda-Connect: mail.aconex.com[203.89.202.182] X-Barracuda-Start-Time: 1254857080 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.11020 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Status: Clean ----- "Christoph Hellwig" wrote: > Index: xfsprogs-dev/mkfs/xfs_mkfs.c > =================================================================== > --- xfsprogs-dev.orig/mkfs/xfs_mkfs.c 2009-10-06 18:02:34.000000000 > +0000 > +++ xfsprogs-dev/mkfs/xfs_mkfs.c 2009-10-06 18:03:55.000000000 +0000 > @@ -605,6 +605,29 @@ done: > free(buf); > } > > +#ifdef __linux__ > + > +#ifndef BLKDISCARD > +#define BLKDISCARD _IO(0x12,119) > +#endif It might be a bit cleaner to add this in with the existing platform- specific code in libxfs/linux.c (or perhaps include/platform_defs.h) with wrappers for the other platforms, rather than putting it directly in mkfs like this? repair may want to use this someday too, I guess. cheers. -- Nathan From BATV+16c26fc59ad82b7e8ea7+2235+infradead.org+hch@bombadil.srs.infradead.org Tue Oct 6 14:25:21 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96JPKti087035 for ; Tue, 6 Oct 2009 14:25:21 -0500 X-ASG-Debug-ID: 1254857206-074601f50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 173A84A7C61 for ; Tue, 6 Oct 2009 12:26:46 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id xiui415TF7LawXYY for ; Tue, 06 Oct 2009 12:26:46 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MvFgM-0007qY-D4; Tue, 06 Oct 2009 19:26:46 +0000 Date: Tue, 6 Oct 2009 15:26:46 -0400 From: Christoph Hellwig To: Nathan Scott Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] mkfs: add discard support Subject: Re: [PATCH] mkfs: add discard support Message-ID: <20091006192646.GA30105@infradead.org> References: <1235789111.21721254856913943.JavaMail.root@mail-au.aconex.com> <837780486.21741254857073773.JavaMail.root@mail-au.aconex.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <837780486.21741254857073773.JavaMail.root@mail-au.aconex.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1254857207 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Oct 07, 2009 at 06:24:33AM +1100, Nathan Scott wrote: > It might be a bit cleaner to add this in with the existing platform- > specific code in libxfs/linux.c (or perhaps include/platform_defs.h) > with wrappers for the other platforms, rather than putting it directly > in mkfs like this? repair may want to use this someday too, I guess. Yeah, that might be better. From vapier@gentoo.org Tue Oct 6 14:32:28 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96JWRB6087520 for ; Tue, 6 Oct 2009 14:32:28 -0500 X-ASG-Debug-ID: 1254857633-335902b90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp.gentoo.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AB0B3121D350 for ; Tue, 6 Oct 2009 12:33:53 -0700 (PDT) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by cuda.sgi.com with ESMTP id 5VFTi4SHL6SuDfrp for ; Tue, 06 Oct 2009 12:33:53 -0700 (PDT) Received: from vapier.localnet (localhost [127.0.0.1]) by smtp.gentoo.org (Postfix) with ESMTP id 8A87567D27; Tue, 6 Oct 2009 19:33:52 +0000 (UTC) From: Mike Frysinger Organization: wh0rd.org To: Christoph Hellwig X-ASG-Orig-Subj: Re: moving libhandle to /usr Subject: Re: moving libhandle to /usr Date: Tue, 6 Oct 2009 15:33:46 -0400 User-Agent: KMail/1.12.1 (Linux/2.6.31; KDE/4.3.1; x86_64; ; ) Cc: nathans@debian.org, sandeen@sandeen.net, xfs@oss.sgi.com References: <20091006154249.GA1411@infradead.org> In-Reply-To: <20091006154249.GA1411@infradead.org> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart2603824.SWRfn6bpEd"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200910061533.51365.vapier@gentoo.org> X-Barracuda-Connect: smtp.gentoo.org[140.211.166.183] X-Barracuda-Start-Time: 1254857633 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.11019 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --nextPart2603824.SWRfn6bpEd Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable On Tuesday 06 October 2009 11:42:49 Christoph Hellwig wrote: > Currently we install the versioned libhandle into /lib by default, > and all other libraries into /usr. Given that no program in / actually > uses libhandle this seems rather awkward to me. From Mike's comments > in the past I think Gentoo already installs it into /usr anyway. >=20 > Is there anything speaking against moving all libraries to /usr and > switching Debian/Fedora to that aswell? xfsdump uses it and xfsdump is installed into / by default right ? so=20 libhandle needs to be in /lib so long as xfsdump is in /sbin. =2Dmike --nextPart2603824.SWRfn6bpEd Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.11 (GNU/Linux) iQIcBAABAgAGBQJKy5ufAAoJEEFjO5/oN/WBfckP/iWhB90mqzpx2lxcJPteJkLb f7tuCMAbvEh3JR2VQGNbxZXG4KDn7f9eekiAK/8/fitfdliuLDo9iBhf+ADBmCIF iNZh9K/MrDpgg80cbIMDqNHYld6CrP0YI5KfoA0Toc3ATqB3fkLiPcU74srJI2IJ X9nZSdMryRL79/SySHTUNYqSxVcAndglN4jKP97SjZQsihyylnS/2Ydbna4R5tto +WK6OrlEBC7uGbMC0EcotXKFw1l5xwBGNcyzCrs9yYKNJk/C4asfzTj29v+4GuAh 6gLooEQSPXxmkBgfr/ffeUG9IDorx/qw05vGxUTbIuA/5yF27CVY5WrslW6zBXBy akPq4dZA/IBHU5gKMSF2BgYj6Sh/dv0irrwpOYarzf3iND2Qu4Rof4nrXGy/VCeN yyusJSd6AM9WaTTPCUstZOeMy2oxqK5aOsc2pjdW1849BA+7t27gC5ctwS+qcXY3 vB6BTcgsGSFFgGbbApjpNN2SE3wDZPpfqs0g481SXEExlvo8q3eEIfZ0TNOWpbVo m7rtqxOy3XA+8rG19uNFSFYvds7XrzDzqkr+MErlHRs5PQmidBMD6/u0qW0hTtkd ne/6mboLrziV2e9ELFuNhExxSINIp1X3JZHvrZNC37j1gcvdkimAy0CXG2Ul3JwO rlDWuT8TxJeT1vPqhJcq =5w0q -----END PGP SIGNATURE----- --nextPart2603824.SWRfn6bpEd-- From BATV+16c26fc59ad82b7e8ea7+2235+infradead.org+hch@bombadil.srs.infradead.org Tue Oct 6 15:35:19 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_52 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96KZI5x091119 for ; Tue, 6 Oct 2009 15:35:18 -0500 X-ASG-Debug-ID: 1254861404-2d8b00800000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 59BD51748144; Tue, 6 Oct 2009 13:36:44 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id n1hjsrLuJClJcBce; Tue, 06 Oct 2009 13:36:44 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MvGm2-0003V5-C2; Tue, 06 Oct 2009 20:36:42 +0000 Message-Id: <20091006202925.459164320@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Tue, 06 Oct 2009 16:29:25 -0400 From: Christoph Hellwig To: aelder@sgi.com, xfs@oss.sgi.com, akpm@linux-foundation.org, sfr@canb.auug.org.au Cc: linux-fsdevel@vger.kernel.org X-ASG-Orig-Subj: [PATCH 0/5] XFS fixes for 2.6.32 Subject: [PATCH 0/5] XFS fixes for 2.6.32 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1254861404 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is my queue of reviewed patches from before or the very early merge indow that I still haven't managed to get maintainer responses for. Thery're all pretty crictical sync / metadata fixes that should not miss 2.6.32. Andrew, Stephen can you carry them in -mm/linux-next at least until the Alex reappears? There's also a tarball of the quilt series at: http://verein.lst.de/~hch/xfs/patches.xfs.tgz I have another series of potentioal deadlock fixes that still needs a positive review still but could also enjoy some more testing in -mm/linux-next which I'll send out later today or tomorrow. From BATV+16c26fc59ad82b7e8ea7+2235+infradead.org+hch@bombadil.srs.infradead.org Tue Oct 6 15:35:19 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96KZIXq091118 for ; Tue, 6 Oct 2009 15:35:18 -0500 X-ASG-Debug-ID: 1254861404-0745034e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4B6254A82DB; Tue, 6 Oct 2009 13:36:44 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id ih4m0i6Bw2HKqDyd; Tue, 06 Oct 2009 13:36:44 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MvGm3-0003Wj-90; Tue, 06 Oct 2009 20:36:43 +0000 Message-Id: <20091006203643.145590876@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Tue, 06 Oct 2009 16:29:28 -0400 From: Christoph Hellwig To: aelder@sgi.com, xfs@oss.sgi.com, akpm@linux-foundation.org, sfr@canb.auug.org.au Cc: linux-fsdevel@vger.kernel.org X-ASG-Orig-Subj: [PATCH 3/5] [PATCH 2/5] xfs: cleanup ->sync_fs Subject: [PATCH 3/5] [PATCH 2/5] xfs: cleanup ->sync_fs References: <20091006202925.459164320@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-cleanup-sync_fs X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1254861404 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Sort out ->sync_fs to not perform a superblock writeback for the wait = 0 case as that is just an optional first pass and the superblock will be written back properly in the next call with wait = 1. Instead perform an opportunistic quota writeback to have less work later. Also remove the freeze special case as we do a proper wait = 1 call in the freeze code anyway. Also rename the function to xfs_fs_sync_fs to match the normal naming convention, update comments and avoid calling into the laptop_mode logic on an error. Signed-off-by: Christoph Hellwig Index: linux-2.6/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_super.c 2009-08-26 20:13:54.609362865 -0300 +++ linux-2.6/fs/xfs/linux-2.6/xfs_super.c 2009-08-26 20:18:36.065357266 -0300 @@ -1144,7 +1144,7 @@ xfs_fs_put_super( } STATIC int -xfs_fs_sync_super( +xfs_fs_sync_fs( struct super_block *sb, int wait) { @@ -1152,23 +1152,23 @@ xfs_fs_sync_super( int error; /* - * Treat a sync operation like a freeze. This is to work - * around a race in sync_inodes() which works in two phases - * - an asynchronous flush, which can write out an inode - * without waiting for file size updates to complete, and a - * synchronous flush, which wont do anything because the - * async flush removed the inode's dirty flag. Also - * sync_inodes() will not see any files that just have - * outstanding transactions to be flushed because we don't - * dirty the Linux inode until after the transaction I/O - * completes. + * Not much we can do for the first async pass. Writing out the + * superblock would be counter-productive as we are going to redirty + * when writing out other data and metadata (and writing out a single + * block is quite fast anyway). + * + * Try to asynchronously kick off quota syncing at least. */ - if (wait || unlikely(sb->s_frozen == SB_FREEZE_WRITE)) - error = xfs_quiesce_data(mp); - else - error = xfs_sync_fsdata(mp, 0); + if (!wait) { + xfs_qm_sync(mp, SYNC_TRYLOCK); + return 0; + } + + error = xfs_quiesce_data(mp); + if (error) + return -error; - if (unlikely(laptop_mode)) { + if (laptop_mode) { int prev_sync_seq = mp->m_sync_seq; /* @@ -1187,7 +1187,7 @@ xfs_fs_sync_super( mp->m_sync_seq != prev_sync_seq); } - return -error; + return 0; } STATIC int @@ -1561,7 +1561,7 @@ static struct super_operations xfs_super .write_inode = xfs_fs_write_inode, .clear_inode = xfs_fs_clear_inode, .put_super = xfs_fs_put_super, - .sync_fs = xfs_fs_sync_super, + .sync_fs = xfs_fs_sync_fs, .freeze_fs = xfs_fs_freeze, .statfs = xfs_fs_statfs, .remount_fs = xfs_fs_remount, From BATV+16c26fc59ad82b7e8ea7+2235+infradead.org+hch@bombadil.srs.infradead.org Tue Oct 6 15:35:19 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_66 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96KZIdg091126 for ; Tue, 6 Oct 2009 15:35:19 -0500 X-ASG-Debug-ID: 1254861404-4ada037b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CD68C132582A; Tue, 6 Oct 2009 13:36:44 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 3p3vkDJPpxmWJURe; Tue, 06 Oct 2009 13:36:44 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MvGm2-0003Vj-MX; Tue, 06 Oct 2009 20:36:42 +0000 Message-Id: <20091006203642.496121199@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Tue, 06 Oct 2009 16:29:26 -0400 From: Christoph Hellwig To: aelder@sgi.com, xfs@oss.sgi.com, akpm@linux-foundation.org, sfr@canb.auug.org.au Cc: linux-fsdevel@vger.kernel.org X-ASG-Orig-Subj: [PATCH 1/5] xfs: implement ->dirty_inode to fix timestamp handling Subject: [PATCH 1/5] xfs: implement ->dirty_inode to fix timestamp handling References: <20091006202925.459164320@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-add-dirty-inode X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1254861404 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is picking up on Felix's repost of Dave's patch to implement a .dirty_inode method. We really need this notification because the VFS keeps writing directly into the inode structure instead of going through methods to update this state. In addition to the long-known atime issue we now also have a caller in VM code that updates c/mtime that way for shared writeable mmaps. And I found another one that no one has noticed in practice in the FIFO code. So implement ->dirty_inode to set i_update_core whenever the inode gets externally dirties, and switch the c/mtime handling to the same scheme we already use for atime (always picking up the value from the Linux inode). Note that this patch also removes the xfs_synchronize_atime call in xfs_reclaim it was superflous as we already synchronize the time when writing the inode via the log (xfs_inode_item_format) or the normal buffers (xfs_iflush_int). In addition also remove the I_CLEAR check before copying the Linux timestamps - now that we always have the Linux inode available we can always use the timestampts in it. Also switch to just using file_update_time for regular reads/writes - that will get us all optimization done to it for free and make sure we notice early when it breaks. Signed-off-by: Christoph Hellwig Reviewed-by: Felix Blyakher Index: xfs/fs/xfs/linux-2.6/xfs_iops.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_iops.c 2009-09-22 08:48:10.887003499 -0300 +++ xfs/fs/xfs/linux-2.6/xfs_iops.c 2009-09-22 19:52:52.755254281 -0300 @@ -57,19 +57,22 @@ #include /* - * Bring the atime in the XFS inode uptodate. - * Used before logging the inode to disk or when the Linux inode goes away. + * Bring the timestamps in the XFS inode uptodate. + * + * Used before writing the inode to disk. */ void -xfs_synchronize_atime( +xfs_synchronize_times( xfs_inode_t *ip) { struct inode *inode = VFS_I(ip); - if (!(inode->i_state & I_CLEAR)) { - ip->i_d.di_atime.t_sec = (__int32_t)inode->i_atime.tv_sec; - ip->i_d.di_atime.t_nsec = (__int32_t)inode->i_atime.tv_nsec; - } + ip->i_d.di_atime.t_sec = (__int32_t)inode->i_atime.tv_sec; + ip->i_d.di_atime.t_nsec = (__int32_t)inode->i_atime.tv_nsec; + ip->i_d.di_ctime.t_sec = (__int32_t)inode->i_ctime.tv_sec; + ip->i_d.di_ctime.t_nsec = (__int32_t)inode->i_ctime.tv_nsec; + ip->i_d.di_mtime.t_sec = (__int32_t)inode->i_mtime.tv_sec; + ip->i_d.di_mtime.t_nsec = (__int32_t)inode->i_mtime.tv_nsec; } /* @@ -106,32 +109,20 @@ xfs_ichgtime( if ((flags & XFS_ICHGTIME_MOD) && !timespec_equal(&inode->i_mtime, &tv)) { inode->i_mtime = tv; - ip->i_d.di_mtime.t_sec = (__int32_t)tv.tv_sec; - ip->i_d.di_mtime.t_nsec = (__int32_t)tv.tv_nsec; sync_it = 1; } if ((flags & XFS_ICHGTIME_CHG) && !timespec_equal(&inode->i_ctime, &tv)) { inode->i_ctime = tv; - ip->i_d.di_ctime.t_sec = (__int32_t)tv.tv_sec; - ip->i_d.di_ctime.t_nsec = (__int32_t)tv.tv_nsec; sync_it = 1; } /* - * We update the i_update_core field _after_ changing - * the timestamps in order to coordinate properly with - * xfs_iflush() so that we don't lose timestamp updates. - * This keeps us from having to hold the inode lock - * while doing this. We use the SYNCHRONIZE macro to - * ensure that the compiler does not reorder the update - * of i_update_core above the timestamp updates above. + * Update complete - now make sure everyone knows that the inode + * is dirty. */ - if (sync_it) { - SYNCHRONIZE(); - ip->i_update_core = 1; + if (sync_it) xfs_mark_inode_dirty_sync(ip); - } } /* @@ -514,10 +505,8 @@ xfs_vn_getattr( stat->gid = ip->i_d.di_gid; stat->ino = ip->i_ino; stat->atime = inode->i_atime; - stat->mtime.tv_sec = ip->i_d.di_mtime.t_sec; - stat->mtime.tv_nsec = ip->i_d.di_mtime.t_nsec; - stat->ctime.tv_sec = ip->i_d.di_ctime.t_sec; - stat->ctime.tv_nsec = ip->i_d.di_ctime.t_nsec; + stat->mtime = inode->i_mtime; + stat->ctime = inode->i_ctime; stat->blocks = XFS_FSB_TO_BB(mp, ip->i_d.di_nblocks + ip->i_delayed_blks); Index: xfs/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_super.c 2009-09-22 08:48:10.893009991 -0300 +++ xfs/fs/xfs/linux-2.6/xfs_super.c 2009-09-22 19:52:52.756254128 -0300 @@ -977,6 +977,28 @@ xfs_fs_inode_init_once( } /* + * Dirty the XFS inode when mark_inode_dirty_sync() is called so that + * we catch unlogged VFS level updates to the inode. Care must be taken + * here - the transaction code calls mark_inode_dirty_sync() to mark the + * VFS inode dirty in a transaction and clears the i_update_core field; + * it must clear the field after calling mark_inode_dirty_sync() to + * correctly indicate that the dirty state has been propagated into the + * inode log item. + * + * We need the barrier() to maintain correct ordering between unlogged + * updates and the transaction commit code that clears the i_update_core + * field. This requires all updates to be completed before marking the + * inode dirty. + */ +STATIC void +xfs_fs_dirty_inode( + struct inode *inode) +{ + barrier(); + XFS_I(inode)->i_update_core = 1; +} + +/* * Attempt to flush the inode, this will actually fail * if the inode is pinned, but we dirty the inode again * at the point when it is unpinned after a log write, @@ -1539,6 +1561,7 @@ xfs_fs_get_sb( static struct super_operations xfs_super_operations = { .alloc_inode = xfs_fs_alloc_inode, .destroy_inode = xfs_fs_destroy_inode, + .dirty_inode = xfs_fs_dirty_inode, .write_inode = xfs_fs_write_inode, .clear_inode = xfs_fs_clear_inode, .put_super = xfs_fs_put_super, Index: xfs/fs/xfs/xfs_inode_item.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode_item.c 2009-09-22 08:48:10.911012564 -0300 +++ xfs/fs/xfs/xfs_inode_item.c 2009-09-22 19:52:52.758254104 -0300 @@ -232,6 +232,15 @@ xfs_inode_item_format( nvecs = 1; /* + * Make sure the linux inode is dirty. We do this before + * clearing i_update_core as the VFS will call back into + * XFS here and set i_update_core, so we need to dirty the + * inode first so that the ordering of i_update_core and + * unlogged modifications still works as described below. + */ + xfs_mark_inode_dirty_sync(ip); + + /* * Clear i_update_core if the timestamps (or any other * non-transactional modification) need flushing/logging * and we're about to log them with the rest of the core. @@ -263,14 +272,9 @@ xfs_inode_item_format( } /* - * Make sure to get the latest atime from the Linux inode. + * Make sure to get the latest timestamps from the Linux inode. */ - xfs_synchronize_atime(ip); - - /* - * make sure the linux inode is dirty - */ - xfs_mark_inode_dirty_sync(ip); + xfs_synchronize_times(ip); vecp->i_addr = (xfs_caddr_t)&ip->i_d; vecp->i_len = sizeof(struct xfs_icdinode); Index: xfs/fs/xfs/linux-2.6/xfs_aops.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_aops.c 2009-09-22 08:48:10.898003853 -0300 +++ xfs/fs/xfs/linux-2.6/xfs_aops.c 2009-09-22 19:52:52.763276812 -0300 @@ -215,7 +215,6 @@ xfs_setfilesize( if (ip->i_d.di_size < isize) { ip->i_d.di_size = isize; - ip->i_update_core = 1; xfs_mark_inode_dirty_sync(ip); } Index: xfs/fs/xfs/xfs_dfrag.c =================================================================== --- xfs.orig/fs/xfs/xfs_dfrag.c 2009-09-22 08:48:10.921004479 -0300 +++ xfs/fs/xfs/xfs_dfrag.c 2009-09-22 19:52:52.766277264 -0300 @@ -206,10 +206,10 @@ xfs_swap_extents( * process that the file was not changed out from * under it. */ - if ((sbp->bs_ctime.tv_sec != ip->i_d.di_ctime.t_sec) || - (sbp->bs_ctime.tv_nsec != ip->i_d.di_ctime.t_nsec) || - (sbp->bs_mtime.tv_sec != ip->i_d.di_mtime.t_sec) || - (sbp->bs_mtime.tv_nsec != ip->i_d.di_mtime.t_nsec)) { + if ((sbp->bs_ctime.tv_sec != VFS_I(ip)->i_ctime.tv_sec) || + (sbp->bs_ctime.tv_nsec != VFS_I(ip)->i_ctime.tv_nsec) || + (sbp->bs_mtime.tv_sec != VFS_I(ip)->i_mtime.tv_sec) || + (sbp->bs_mtime.tv_nsec != VFS_I(ip)->i_mtime.tv_nsec)) { error = XFS_ERROR(EBUSY); goto out_unlock; } Index: xfs/fs/xfs/xfs_itable.c =================================================================== --- xfs.orig/fs/xfs/xfs_itable.c 2009-09-22 08:48:10.933025843 -0300 +++ xfs/fs/xfs/xfs_itable.c 2009-09-22 19:52:52.772267552 -0300 @@ -59,6 +59,7 @@ xfs_bulkstat_one_iget( { xfs_icdinode_t *dic; /* dinode core info pointer */ xfs_inode_t *ip; /* incore inode pointer */ + struct inode *inode; int error; error = xfs_iget(mp, NULL, ino, @@ -72,6 +73,7 @@ xfs_bulkstat_one_iget( ASSERT(ip->i_imap.im_blkno != 0); dic = &ip->i_d; + inode = VFS_I(ip); /* xfs_iget returns the following without needing * further change. @@ -83,16 +85,19 @@ xfs_bulkstat_one_iget( buf->bs_uid = dic->di_uid; buf->bs_gid = dic->di_gid; buf->bs_size = dic->di_size; + /* - * We are reading the atime from the Linux inode because the - * dinode might not be uptodate. + * We need to read the timestamps from the Linux inode because + * the VFS keeps writing directly into the inode structure instead + * of telling us about the updates. */ - buf->bs_atime.tv_sec = VFS_I(ip)->i_atime.tv_sec; - buf->bs_atime.tv_nsec = VFS_I(ip)->i_atime.tv_nsec; - buf->bs_mtime.tv_sec = dic->di_mtime.t_sec; - buf->bs_mtime.tv_nsec = dic->di_mtime.t_nsec; - buf->bs_ctime.tv_sec = dic->di_ctime.t_sec; - buf->bs_ctime.tv_nsec = dic->di_ctime.t_nsec; + buf->bs_atime.tv_sec = inode->i_atime.tv_sec; + buf->bs_atime.tv_nsec = inode->i_atime.tv_nsec; + buf->bs_mtime.tv_sec = inode->i_mtime.tv_sec; + buf->bs_mtime.tv_nsec = inode->i_mtime.tv_nsec; + buf->bs_ctime.tv_sec = inode->i_ctime.tv_sec; + buf->bs_ctime.tv_nsec = inode->i_ctime.tv_nsec; + buf->bs_xflags = xfs_ip2xflags(ip); buf->bs_extsize = dic->di_extsize << mp->m_sb.sb_blocklog; buf->bs_extents = dic->di_nextents; Index: xfs/fs/xfs/linux-2.6/xfs_lrw.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_lrw.c 2009-09-22 08:48:10.904004129 -0300 +++ xfs/fs/xfs/linux-2.6/xfs_lrw.c 2009-09-22 19:52:52.780033486 -0300 @@ -667,7 +667,7 @@ start: xip->i_new_size = new_size; if (likely(!(ioflags & IO_INVIS))) - xfs_ichgtime(xip, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG); + file_update_time(file); /* * If the offset is beyond the size of the file, we have a couple Index: xfs/fs/xfs/xfs_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode.c 2009-09-22 08:48:10.941020717 -0300 +++ xfs/fs/xfs/xfs_inode.c 2009-09-22 19:52:52.792033200 -0300 @@ -3068,9 +3068,9 @@ xfs_iflush_int( SYNCHRONIZE(); /* - * Make sure to get the latest atime from the Linux inode. + * Make sure to get the latest timestamps from the Linux inode. */ - xfs_synchronize_atime(ip); + xfs_synchronize_times(ip); if (XFS_TEST_ERROR(be16_to_cpu(dip->di_magic) != XFS_DINODE_MAGIC, mp, XFS_ERRTAG_IFLUSH_1, XFS_RANDOM_IFLUSH_1)) { Index: xfs/fs/xfs/xfs_inode.h =================================================================== --- xfs.orig/fs/xfs/xfs_inode.h 2009-09-22 08:48:10.956024374 -0300 +++ xfs/fs/xfs/xfs_inode.h 2009-09-22 19:52:52.800020321 -0300 @@ -504,7 +504,7 @@ void xfs_ichgtime(xfs_inode_t *, int); void xfs_lock_inodes(xfs_inode_t **, int, uint); void xfs_lock_two_inodes(xfs_inode_t *, xfs_inode_t *, uint); -void xfs_synchronize_atime(xfs_inode_t *); +void xfs_synchronize_times(xfs_inode_t *); void xfs_mark_inode_dirty_sync(xfs_inode_t *); #if defined(XFS_INODE_TRACE) Index: xfs/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.c 2009-09-22 08:48:10.968004392 -0300 +++ xfs/fs/xfs/xfs_vnodeops.c 2009-09-22 19:52:52.805256045 -0300 @@ -2476,12 +2476,6 @@ xfs_reclaim( ASSERT(XFS_FORCED_SHUTDOWN(ip->i_mount) || ip->i_delayed_blks == 0); /* - * Make sure the atime in the XFS inode is correct before freeing the - * Linux inode. - */ - xfs_synchronize_atime(ip); - - /* * If we have nothing to flush with this inode then complete the * teardown now, otherwise break the link between the xfs inode and the * linux inode and clean up the xfs inode later. This avoids flushing From BATV+16c26fc59ad82b7e8ea7+2235+infradead.org+hch@bombadil.srs.infradead.org Tue Oct 6 15:35:19 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_35 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96KZIpG091127 for ; Tue, 6 Oct 2009 15:35:19 -0500 X-ASG-Debug-ID: 1254861404-419800c30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 04FD4132582B; Tue, 6 Oct 2009 13:36:44 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id weIiwx4F696Njni9; Tue, 06 Oct 2009 13:36:44 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MvGm3-0003XE-Ea; Tue, 06 Oct 2009 20:36:43 +0000 Message-Id: <20091006203643.373897212@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Tue, 06 Oct 2009 16:29:29 -0400 From: Christoph Hellwig To: aelder@sgi.com, xfs@oss.sgi.com, akpm@linux-foundation.org, sfr@canb.auug.org.au Cc: linux-fsdevel@vger.kernel.org, Dave Chinner X-ASG-Orig-Subj: [PATCH 4/5] xfs: mark inodes dirty before issuing I/O Subject: [PATCH 4/5] xfs: mark inodes dirty before issuing I/O References: <20091006202925.459164320@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-mark-inode-dirty-early X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1254861405 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner To make sure they get properly waited on in sync when I/O is in flight and we latter need to update the inode size. Requires a new helper to check if an ioend structure is beyond the current EOF. Signed-off-by: Dave Chinner Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_aops.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_aops.c 2009-09-16 10:04:29.799026911 -0300 +++ xfs/fs/xfs/linux-2.6/xfs_aops.c 2009-09-16 10:04:32.153003970 -0300 @@ -186,19 +186,37 @@ xfs_destroy_ioend( } /* + * If the end of the current ioend is beyond the current EOF, + * return the new EOF value, otherwise zero. + */ +STATIC xfs_fsize_t +xfs_ioend_new_eof( + xfs_ioend_t *ioend) +{ + xfs_inode_t *ip = XFS_I(ioend->io_inode); + xfs_fsize_t isize; + xfs_fsize_t bsize; + + bsize = ioend->io_offset + ioend->io_size; + isize = MAX(ip->i_size, ip->i_new_size); + isize = MIN(isize, bsize); + return isize > ip->i_d.di_size ? isize : 0; +} + +/* * Update on-disk file size now that data has been written to disk. * The current in-memory file size is i_size. If a write is beyond * eof i_new_size will be the intended file size until i_size is * updated. If this write does not extend all the way to the valid * file size then restrict this update to the end of the write. */ + STATIC void xfs_setfilesize( xfs_ioend_t *ioend) { xfs_inode_t *ip = XFS_I(ioend->io_inode); xfs_fsize_t isize; - xfs_fsize_t bsize; ASSERT((ip->i_d.di_mode & S_IFMT) == S_IFREG); ASSERT(ioend->io_type != IOMAP_READ); @@ -206,14 +224,9 @@ xfs_setfilesize( if (unlikely(ioend->io_error)) return; - bsize = ioend->io_offset + ioend->io_size; - xfs_ilock(ip, XFS_ILOCK_EXCL); - - isize = MAX(ip->i_size, ip->i_new_size); - isize = MIN(isize, bsize); - - if (ip->i_d.di_size < isize) { + isize = xfs_ioend_new_eof(ioend); + if (isize) { ip->i_d.di_size = isize; xfs_mark_inode_dirty_sync(ip); } @@ -403,10 +416,16 @@ xfs_submit_ioend_bio( struct bio *bio) { atomic_inc(&ioend->io_remaining); - bio->bi_private = ioend; bio->bi_end_io = xfs_end_bio; + /* + * If the I/O is beyond EOF we mark the inode dirty immediately + * but don't update the inode size until I/O completion. + */ + if (xfs_ioend_new_eof(ioend)) + xfs_mark_inode_dirty_sync(XFS_I(ioend->io_inode)); + submit_bio(WRITE, bio); ASSERT(!bio_flagged(bio, BIO_EOPNOTSUPP)); bio_put(bio); From BATV+16c26fc59ad82b7e8ea7+2235+infradead.org+hch@bombadil.srs.infradead.org Tue Oct 6 15:35:19 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.1 required=5.0 tests=AWL,BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96KZIrx091122 for ; Tue, 6 Oct 2009 15:35:18 -0500 X-ASG-Debug-ID: 1254861404-0745034f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C20944A82DB; Tue, 6 Oct 2009 13:36:44 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 1rVxbSwx0ZbI8lDp; Tue, 06 Oct 2009 13:36:44 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MvGm3-0003Xj-Jp; Tue, 06 Oct 2009 20:36:43 +0000 Message-Id: <20091006203643.508411288@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Tue, 06 Oct 2009 16:29:30 -0400 From: Christoph Hellwig To: aelder@sgi.com, xfs@oss.sgi.com, akpm@linux-foundation.org, sfr@canb.auug.org.au Cc: linux-fsdevel@vger.kernel.org, Dave Chinner X-ASG-Orig-Subj: [PATCH 5/5] xfs: make sure xfs_sync_fsdata covers the log Subject: [PATCH 5/5] xfs: make sure xfs_sync_fsdata covers the log References: <20091006202925.459164320@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-fix-xfs_sync_fsdata X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1254861404 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner We want to always cover the log after writing out the superblock, and in case of a synchronous writeout make sure we actually wait for the log to be covered. That way a filesystem that has been sync()ed can be considered clean by log recovery. Signed-off-by: Dave Chinner Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen Index: xfs/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-09-16 10:04:30.869278510 -0300 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2009-09-16 10:04:41.193004640 -0300 @@ -309,11 +309,15 @@ xfs_sync_attr( STATIC int xfs_commit_dummy_trans( struct xfs_mount *mp, - uint log_flags) + uint flags) { struct xfs_inode *ip = mp->m_rootip; struct xfs_trans *tp; int error; + int log_flags = XFS_LOG_FORCE; + + if (flags & SYNC_WAIT) + log_flags |= XFS_LOG_SYNC; /* * Put a dummy transaction in the log to tell recovery @@ -331,16 +335,15 @@ xfs_commit_dummy_trans( xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); xfs_trans_ihold(tp, ip); xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); - /* XXX(hch): ignoring the error here.. */ error = xfs_trans_commit(tp, 0); - xfs_iunlock(ip, XFS_ILOCK_EXCL); + /* the log force ensures this transaction is pushed to disk */ xfs_log_force(mp, 0, log_flags); - return 0; + return error; } -int +int xfs_sync_fsdata( struct xfs_mount *mp, int flags) @@ -385,7 +388,20 @@ xfs_sync_fsdata( else XFS_BUF_ASYNC(bp); - return xfs_bwrite(mp, bp); + error = xfs_bwrite(mp, bp); + if (error) + return error; + + /* + * If this is a data integrity sync make sure all pending buffers + * are flushed out for the log coverage check below. + */ + if (flags & SYNC_WAIT) + xfs_flush_buftarg(mp->m_ddev_targp, 1); + + if (xfs_log_need_covered(mp)) + error = xfs_commit_dummy_trans(mp, flags); + return error; out_brelse: xfs_buf_relse(bp); @@ -572,8 +588,6 @@ xfs_sync_worker( /* dgc: errors ignored here */ error = xfs_qm_sync(mp, SYNC_TRYLOCK); error = xfs_sync_fsdata(mp, SYNC_TRYLOCK); - if (xfs_log_need_covered(mp)) - error = xfs_commit_dummy_trans(mp, XFS_LOG_FORCE); } mp->m_sync_seq++; wake_up(&mp->m_wait_single_sync_task); From BATV+16c26fc59ad82b7e8ea7+2235+infradead.org+hch@bombadil.srs.infradead.org Tue Oct 6 15:35:19 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96KZIvV091123 for ; Tue, 6 Oct 2009 15:35:18 -0500 X-ASG-Debug-ID: 1254861404-2d90008e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BE9A71748144; Tue, 6 Oct 2009 13:36:44 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id b7e2eEec46EyCeIK; Tue, 06 Oct 2009 13:36:44 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MvGm3-0003WE-13; Tue, 06 Oct 2009 20:36:43 +0000 Message-Id: <20091006203642.877846388@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Tue, 06 Oct 2009 16:29:27 -0400 From: Christoph Hellwig To: aelder@sgi.com, xfs@oss.sgi.com, akpm@linux-foundation.org, sfr@canb.auug.org.au Cc: linux-fsdevel@vger.kernel.org, Dave Chinner X-ASG-Orig-Subj: [PATCH 2/5] [PATCH 5/5] xfs: fix xfs_quiesce_data Subject: [PATCH 2/5] [PATCH 5/5] xfs: fix xfs_quiesce_data References: <20091006202925.459164320@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-fix-xfs_quiesce_data X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1254861404 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner We need to do a synchronous xfs_sync_fsdata to make sure the superblock actually is on disk when we return. Also remove SYNC_BDFLUSH flag to xfs_sync_inodes because that particular flag is never checked. Move xfs_filestream_flush call later to only release inodes after they have been written out. Signed-off-by: Dave Chinner Signed-off-by: Christoph Hellwig Index: linux-2.6/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-08-27 20:06:39.889355294 -0300 +++ linux-2.6/fs/xfs/linux-2.6/xfs_sync.c 2009-08-27 20:08:01.169357854 -0300 @@ -426,14 +426,16 @@ xfs_quiesce_data( /* push non-blocking */ xfs_sync_data(mp, 0); xfs_qm_sync(mp, SYNC_TRYLOCK); - xfs_filestream_flush(mp); - /* push and block */ + /* push and block till complete */ xfs_sync_data(mp, SYNC_WAIT); xfs_qm_sync(mp, SYNC_WAIT); + /* drop inode references pinned by filestreams */ + xfs_filestream_flush(mp); + /* write superblock and hoover up shutdown errors */ - error = xfs_sync_fsdata(mp, 0); + error = xfs_sync_fsdata(mp, SYNC_WAIT); /* flush data-only devices */ if (mp->m_rtdev_targp) From BATV+16c26fc59ad82b7e8ea7+2235+infradead.org+hch@bombadil.srs.infradead.org Tue Oct 6 18:43:06 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n96Nh36M127697 for ; Tue, 6 Oct 2009 18:43:05 -0500 X-ASG-Debug-ID: 1254872669-6ace007b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2D5181AE3769 for ; Tue, 6 Oct 2009 16:44:30 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id LxdnBn7hGUtcc9jt for ; Tue, 06 Oct 2009 16:44:30 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MvJhh-0005ac-Fu; Tue, 06 Oct 2009 23:44:25 +0000 Date: Tue, 6 Oct 2009 19:44:25 -0400 From: Christoph Hellwig To: Mike Frysinger Cc: Christoph Hellwig , nathans@debian.org, sandeen@sandeen.net, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: moving libhandle to /usr Subject: Re: moving libhandle to /usr Message-ID: <20091006234425.GA20561@infradead.org> References: <20091006154249.GA1411@infradead.org> <200910061533.51365.vapier@gentoo.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200910061533.51365.vapier@gentoo.org> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1254872670 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Oct 06, 2009 at 03:33:46PM -0400, Mike Frysinger wrote: > On Tuesday 06 October 2009 11:42:49 Christoph Hellwig wrote: > > Currently we install the versioned libhandle into /lib by default, > > and all other libraries into /usr. Given that no program in / actually > > uses libhandle this seems rather awkward to me. From Mike's comments > > in the past I think Gentoo already installs it into /usr anyway. > > > > Is there anything speaking against moving all libraries to /usr and > > switching Debian/Fedora to that aswell? > > xfsdump uses it and xfsdump is installed into / by default right ? so > libhandle needs to be in /lib so long as xfsdump is in /sbin. Indeed, the makefile configuration currently builds it into /, while the configure default uses /usr. Yikes.. From sandeen@sandeen.net Tue Oct 6 19:51:56 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n970ptkV147027 for ; Tue, 6 Oct 2009 19:51:55 -0500 X-ASG-Debug-ID: 1254876799-6db702c70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8B0F2121E26D for ; Tue, 6 Oct 2009 17:53:19 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id Khwt3wjUOCcFFC75 for ; Tue, 06 Oct 2009 17:53:19 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 9D04AA9B0AC; Tue, 6 Oct 2009 19:53:18 -0500 (CDT) Message-ID: <4ACBE67E.8010502@sandeen.net> Date: Tue, 06 Oct 2009 19:53:18 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Christoph Hellwig CC: Mike Frysinger , nathans@debian.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: moving libhandle to /usr Subject: Re: moving libhandle to /usr References: <20091006154249.GA1411@infradead.org> <200910061533.51365.vapier@gentoo.org> <20091006234425.GA20561@infradead.org> In-Reply-To: <20091006234425.GA20561@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1254876801 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.11041 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Tue, Oct 06, 2009 at 03:33:46PM -0400, Mike Frysinger wrote: >> On Tuesday 06 October 2009 11:42:49 Christoph Hellwig wrote: >>> Currently we install the versioned libhandle into /lib by default, >>> and all other libraries into /usr. Given that no program in / actually >>> uses libhandle this seems rather awkward to me. From Mike's comments >>> in the past I think Gentoo already installs it into /usr anyway. >>> >>> Is there anything speaking against moving all libraries to /usr and >>> switching Debian/Fedora to that aswell? >> xfsdump uses it and xfsdump is installed into / by default right ? so >> libhandle needs to be in /lib so long as xfsdump is in /sbin. > > Indeed, the makefile configuration currently builds it into /, while > the configure default uses /usr. Yikes.. argh I did rpm -ql xfsprogs xfsdump | grep bin ... on a box that didn't have xfsdump installed. Argh. Thanks for the catch Mike ;) -Eric From BATV+3623046434c5969eddca+2236+infradead.org+hch@bombadil.srs.infradead.org Tue Oct 6 20:17:26 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_26, J_CHICKENPOX_63,J_CHICKENPOX_64 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n971HPae148806 for ; Tue, 6 Oct 2009 20:17:26 -0500 X-ASG-Debug-ID: 1254878331-46e7008a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C45A0121E44F for ; Tue, 6 Oct 2009 18:18:51 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 8mKEgdAT4De6NKzd for ; Tue, 06 Oct 2009 18:18:51 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MvLB4-0008QL-Tr; Wed, 07 Oct 2009 01:18:50 +0000 Date: Tue, 6 Oct 2009 21:18:50 -0400 From: Christoph Hellwig To: Nathan Scott Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] mkfs: add discard support Subject: Re: [PATCH] mkfs: add discard support Message-ID: <20091007011850.GA32032@infradead.org> References: <1235789111.21721254856913943.JavaMail.root@mail-au.aconex.com> <837780486.21741254857073773.JavaMail.root@mail-au.aconex.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <837780486.21741254857073773.JavaMail.root@mail-au.aconex.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1254878331 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > It might be a bit cleaner to add this in with the existing platform- > specific code in libxfs/linux.c (or perhaps include/platform_defs.h) > with wrappers for the other platforms, rather than putting it directly > in mkfs like this? repair may want to use this someday too, I guess. How about this one? -- Subject: [PATCH] mkfs: add discard support From: Christoph Hellwig Cal the BLKDISCARD ioctl to mark the whole disk as unused before creating a new filesystem. This will allow SSDs, Arrays with thin provisioning support and virtual machines to make smarter allocation decisions. Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/mkfs/xfs_mkfs.c =================================================================== --- xfsprogs-dev.orig/mkfs/xfs_mkfs.c 2009-10-06 18:46:06.000000000 +0000 +++ xfsprogs-dev/mkfs/xfs_mkfs.c 2009-10-07 01:09:49.000000000 +0000 @@ -605,6 +605,20 @@ done: free(buf); } +static void +discard_blocks(dev_t dev, __uint64_t nsectors) +{ + int fd; + + /* + * We intentionally ignore errors from the discard ioctl. It is + * not nessecary for the mkfs functionality but just an optimization. + */ + fd = libxfs_device_to_fd(dev); + if (fd > 0) + platform_discard_blocks(fd, 0, nsectors << 9); +} + int main( int argc, @@ -1645,6 +1659,12 @@ main( } } + discard_blocks(xi.ddev, xi.dsize); + if (xi.rtdev) + discard_blocks(xi.rtdev, xi.rtsize); + if (xi.logdev && xi.logdev != xi.ddev) + discard_blocks(xi.logdev, xi.logBBsize); + if (!liflag && !ldflag) loginternal = xi.logdev == 0; if (xi.logname) Index: xfsprogs-dev/include/linux.h =================================================================== --- xfsprogs-dev.orig/include/linux.h 2009-10-07 01:06:00.000000000 +0000 +++ xfsprogs-dev/include/linux.h 2009-10-07 01:13:12.000000000 +0000 @@ -93,6 +93,20 @@ static __inline__ void platform_uuid_cop uuid_copy(*dst, *src); } +#ifndef BLKDISCARD +#define BLKDISCARD _IO(0x12,119) +#endif + +static __inline__ int +platform_discard_blocks(int fd, off64_t start, off64_t end) +{ + __uint64_t range[2] = { start, end }; + + if (ioctl(fd, BLKDISCARD, &range) < 0) + return errno; + return 0; +} + #if (__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ <= 1)) # define constpp const char * const * #else Index: xfsprogs-dev/include/darwin.h =================================================================== --- xfsprogs-dev.orig/include/darwin.h 2009-10-07 01:15:38.000000000 +0000 +++ xfsprogs-dev/include/darwin.h 2009-10-07 01:16:19.000000000 +0000 @@ -154,4 +154,10 @@ typedef unsigned char uchar_t; #define HAVE_FID 1 +static __inline__ int +platform_discard_blocks(int fd, off64_t start, off64_t end) +{ + return 0; +} + #endif /* __XFS_DARWIN_H__ */ Index: xfsprogs-dev/include/freebsd.h =================================================================== --- xfsprogs-dev.orig/include/freebsd.h 2009-10-07 01:15:38.000000000 +0000 +++ xfsprogs-dev/include/freebsd.h 2009-10-07 01:16:06.000000000 +0000 @@ -139,4 +139,10 @@ static __inline__ void platform_uuid_cop memcpy(dst, src, sizeof(uuid_t)); } +static __inline__ int +platform_discard_blocks(int fd, off64_t start, off64_t end) +{ + return 0; +} + #endif /* __XFS_FREEBSD_H__ */ Index: xfsprogs-dev/include/irix.h =================================================================== --- xfsprogs-dev.orig/include/irix.h 2009-10-07 01:15:38.000000000 +0000 +++ xfsprogs-dev/include/irix.h 2009-10-07 01:16:29.000000000 +0000 @@ -337,6 +337,12 @@ static __inline__ void platform_uuid_cop memcpy(dst, src, sizeof(uuid_t)); } +static __inline__ int +platform_discard_blocks(int fd, off64_t start, off64_t end) +{ + return 0; +} + static __inline__ char * strsep(char **s, const char *ct) { char *sbegin = *s, *end; From BATV+3623046434c5969eddca+2236+infradead.org+hch@bombadil.srs.infradead.org Tue Oct 6 20:18:01 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n971I1Xn148849 for ; Tue, 6 Oct 2009 20:18:01 -0500 X-ASG-Debug-ID: 1254878366-265201fe0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A6E544A8DE1 for ; Tue, 6 Oct 2009 18:19:27 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 7lcqmU7v8UPAxrfe for ; Tue, 06 Oct 2009 18:19:27 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MvLBe-0008SZ-8K; Wed, 07 Oct 2009 01:19:26 +0000 Date: Tue, 6 Oct 2009 21:19:26 -0400 From: Christoph Hellwig To: Patrick Schreurs Cc: Christoph Hellwig , Tommy van Leeuwen , Bas Couwenberg , XFS List X-ASG-Orig-Subj: Re: 2.6.31 xfs_fs_destroy_inode: cannot reclaim Subject: Re: 2.6.31 xfs_fs_destroy_inode: cannot reclaim Message-ID: <20091007011926.GB32032@infradead.org> References: <20090930124104.GA7463@infradead.org> <4AC60D27.9060703@news-service.com> <20091005214348.GA15448@infradead.org> <4ACB080D.3010708@news-service.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4ACB080D.3010708@news-service.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1254878367 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Oct 06, 2009 at 11:04:13AM +0200, Patrick Schreurs wrote: > Christoph Hellwig wrote: >> It helps a bit, but not so much. I suspect it could be a double free >> of an inode, and I have identified a possible race window that could >> explain it. But all the traces are really weird and I think only show >> later symptoms of something that happened earlier. I'll come up with >> a patch for the race window ASAP, but could you in the meantime turn on >> CONFIG_XFS_DEBUG for the test kernel to see if it triggers somehwere >> and additionally apply the tiny patch below for additional debugging? > > Will try this. > > Could this by any change be releated (from 2.6.32.2)? I doubt it, but it's losely in the same area. From nscott@aconex.com Tue Oct 6 20:19:13 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n971JDN6148925 for ; Tue, 6 Oct 2009 20:19:13 -0500 X-ASG-Debug-ID: 1254878437-557400390000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from postoffice2.aconex.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 544DF1B982B0 for ; Tue, 6 Oct 2009 18:20:38 -0700 (PDT) Received: from postoffice2.aconex.com (mail.aconex.com [203.89.202.182]) by cuda.sgi.com with ESMTP id IS8qviOS9JyMAU77 for ; Tue, 06 Oct 2009 18:20:38 -0700 (PDT) Received: from postoffice.aconex.com (localhost [127.0.0.1]) by postoffice2.aconex.com (Spam & Virus Firewall) with ESMTP id C8AC375DF0F; Wed, 7 Oct 2009 12:20:36 +1100 (EST) Received: from postoffice.aconex.com (postoffice.yarra.acx [192.168.102.1]) by postoffice2.aconex.com with ESMTP id fXISfgZVcXdvaIKp; Wed, 07 Oct 2009 12:20:36 +1100 (EST) Received: from gatekeeper.aconex.com (gatekeeper.yarra.acx [192.168.102.10]) by postoffice.aconex.com (Postfix) with ESMTP id 8235AA5023B; Wed, 7 Oct 2009 12:19:17 +1100 (EST) Received: from localhost (localhost.localdomain [127.0.0.1]) by gatekeeper.aconex.com (Postfix) with ESMTP id B06254FD82; Wed, 7 Oct 2009 12:20:36 +1100 (EST) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: amavisd-new at gatekeeper.yarra.acx Received: from gatekeeper.aconex.com ([127.0.0.1]) by localhost (gatekeeper.aconex.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id b9ou-jbW6FqI; Wed, 7 Oct 2009 12:20:31 +1100 (EST) Received: from mail-au.aconex.com (mail-au.aconex.com [192.168.102.12]) by gatekeeper.aconex.com (Postfix) with ESMTP id CB1DF4FD85; Wed, 7 Oct 2009 12:20:31 +1100 (EST) Date: Wed, 7 Oct 2009 12:20:31 +1100 (EST) From: Nathan Scott To: Christoph Hellwig Cc: xfs@oss.sgi.com Message-ID: <1157959921.9631254878431584.JavaMail.root@mail-au.aconex.com> In-Reply-To: <20091007011850.GA32032@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] mkfs: add discard support Subject: Re: [PATCH] mkfs: add discard support MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [203.89.192.141] X-Mailer: Zimbra 5.0.18_GA_3011.RHEL5_64 (ZimbraWebClient - [unknown] (Linux)/5.0.18_GA_3011.RHEL5_64) X-Barracuda-Connect: mail.aconex.com[203.89.202.182] X-Barracuda-Start-Time: 1254878439 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.11044 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Status: Clean ----- "Christoph Hellwig" wrote: > > It might be a bit cleaner to add this in with the existing > platform- > > specific code in libxfs/linux.c (or perhaps > include/platform_defs.h) > > with wrappers for the other platforms, rather than putting it > directly > > in mkfs like this? repair may want to use this someday too, I > guess. > > How about this one? > Looks good to me. cheers. -- Nathan From tj@kernel.org Tue Oct 6 20:31:37 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n971VZe4149490 for ; Tue, 6 Oct 2009 20:31:36 -0500 X-ASG-Debug-ID: 1254879180-6ad802550000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hera.kernel.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B0E3E1B9835D for ; Tue, 6 Oct 2009 18:33:01 -0700 (PDT) Received: from hera.kernel.org (hera.kernel.org [140.211.167.34]) by cuda.sgi.com with ESMTP id IHtf0iyMGrKUugvC for ; Tue, 06 Oct 2009 18:33:01 -0700 (PDT) Received: from htj.dyndns.org (IDENT:U2FsdGVkX18qbg62xETeEmtYpPyf6W8/qdJXfDvdXK8@localhost [127.0.0.1]) by hera.kernel.org (8.14.2/8.14.2) with ESMTP id n971Wwat017585 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Wed, 7 Oct 2009 01:32:59 GMT Received: from [127.0.0.2] (htj.dyndns.org [127.0.0.2]) by htj.dyndns.org (Postfix) with ESMTPSA id DFE7A4433B700; Wed, 7 Oct 2009 10:32:57 +0900 (KST) Message-ID: <4ACBEFC9.3020707@kernel.org> Date: Wed, 07 Oct 2009 10:32:57 +0900 From: Tejun Heo User-Agent: Thunderbird 2.0.0.23 (X11/20090817) MIME-Version: 1.0 To: Eric Sandeen CC: xfs mailing list X-ASG-Orig-Subj: Re: stack bloat after stackprotector changes Subject: Re: stack bloat after stackprotector changes References: <4ACA5EB0.4010707@sandeen.net> <4ACADB74.5090508@kernel.org> <4ACB50C1.80702@sandeen.net> In-Reply-To: <4ACB50C1.80702@sandeen.net> X-Enigmail-Version: 0.95.7 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: ClamAV 0.93.3/9867/Mon Oct 5 11:11:46 2009 on hera.kernel.org X-Virus-Status: Clean X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.0 (hera.kernel.org [127.0.0.1]); Wed, 07 Oct 2009 01:33:00 +0000 (UTC) X-Barracuda-Connect: hera.kernel.org[140.211.167.34] X-Barracuda-Start-Time: 1254879181 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.11044 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hello, Eric Sandeen wrote: > Tejun Heo wrote: >> Eric Sandeen wrote: >>> It seems that after: >>> >>> commit 5d707e9c8ef2a3596ed5c975c6ff05cec890c2b4 >>> Author: Tejun Heo >>> Date: Mon Feb 9 22:17:39 2009 +0900 >>> >>> stackprotector: update make rules >>> >>> xfs stack usage jumped up a fair bit; >>> >>> Not a lot in each case but could be significant as it accumulates. >>> >>> I'm not familiar w/ the gcc stack protector feature; would this be an >>> expected result? >> >> Yeah, it adds a bit of stack usage per each function call and around >> arrays which seem like they could overflow, so the behavior is >> expected and I can see it can be a problem with function call depth >> that deep. Has it caused actual stack overflow? >> >> Thanks. >> > > It's hard to point at one thing and say "that caused it" but I did > overflow (or come very close to it - this one was within 8 bytes). > > Add 20 byte or so to each of 65 calls and it starts to matter I guess. > > Granted, xfs is being piggy too (as are some of the more common > functions in the callchain - do_sync_write and write_cache_pages at 320 > bytes each...) > > -Eric > > Depth Size Location (65 entries) > ----- ---- -------- > 0) 7280 80 check_object+0x6c/0x1d3 Yeap, that's pretty darn close. But the thing is that stackprotector is a feature which consumes certain amount of stack space, so there I'm afraid really isn't a way around that other than trying to diet the piggies or enlarging the stack. :-( Thanks. -- tejun From sandeen@sandeen.net Tue Oct 6 22:54:25 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n973sOR5157694 for ; Tue, 6 Oct 2009 22:54:25 -0500 X-ASG-Debug-ID: 1254887749-2ca5010f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D1D09121E7ED for ; Tue, 6 Oct 2009 20:55:49 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 9JAZHsqSbEwNVeWM for ; Tue, 06 Oct 2009 20:55:49 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 08075AA60D2; Tue, 6 Oct 2009 22:55:49 -0500 (CDT) Message-ID: <4ACC1144.5090504@sandeen.net> Date: Tue, 06 Oct 2009 22:55:48 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Nathan Scott CC: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] mkfs: add discard support Subject: Re: [PATCH] mkfs: add discard support References: <1157959921.9631254878431584.JavaMail.root@mail-au.aconex.com> In-Reply-To: <1157959921.9631254878431584.JavaMail.root@mail-au.aconex.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1254887750 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.11053 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Nathan Scott wrote: > ----- "Christoph Hellwig" wrote: > >>> It might be a bit cleaner to add this in with the existing >> platform- >>> specific code in libxfs/linux.c (or perhaps >> include/platform_defs.h) >>> with wrappers for the other platforms, rather than putting it >> directly >>> in mkfs like this? repair may want to use this someday too, I >> guess. >> >> How about this one? >> > > Looks good to me. > > cheers. > looks good to me too, thanks. need to get that vertex flashed w/ trim support some day... -eric From SRS0+eCYC+34+fromorbit.com=david@internode.on.net Tue Oct 6 23:40:55 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n974esn6160969 for ; Tue, 6 Oct 2009 23:40:55 -0500 X-ASG-Debug-ID: 1254890538-609802ef0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1FD464A9319 for ; Tue, 6 Oct 2009 21:42:19 -0700 (PDT) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id 1Yee9rBYa7urPu34 for ; Tue, 06 Oct 2009 21:42:19 -0700 (PDT) Received: from discord (unverified [121.44.10.87]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 6380966-1927428 for multiple; Wed, 07 Oct 2009 15:12:17 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1MvOLw-0002Pn-4V; Wed, 07 Oct 2009 15:42:16 +1100 Date: Wed, 7 Oct 2009 15:42:16 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] mkfs: add discard support Subject: Re: [PATCH] mkfs: add discard support Message-ID: <20091007044215.GK9464@discord.disaster> References: <20091006184758.GA4780@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20091006184758.GA4780@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1254890541 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.11056 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Oct 06, 2009 at 02:47:58PM -0400, Christoph Hellwig wrote: > Call the BLKDISCARD ioctl to mark the whole disk as unused before creating > a new filesystem. This will allow SSDs, Arrays with thin provisioning support > and virtual machines to make smarter allocation decisions. Good idea, but perhaps the discard should be optional rather than unconditional. My immediate thought was the SOP for setting up encrypted devices - fill the empty disk with random data before setting up the encrypted device. If you then send it a discard.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From joe@perches.com Tue Oct 6 23:44:22 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=unavailable version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n974iLq8161245 for ; Tue, 6 Oct 2009 23:44:21 -0500 X-ASG-Debug-ID: 1254890747-2c8d02580000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.perches.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 74B29121F0D0; Tue, 6 Oct 2009 21:45:47 -0700 (PDT) Received: from mail.perches.com (mail.perches.com [173.55.12.10]) by cuda.sgi.com with ESMTP id qmYZ22EWGb9DW49V; Tue, 06 Oct 2009 21:45:47 -0700 (PDT) Received: from localhost.localdomain (new-host.home [192.168.1.152]) by mail.perches.com (Postfix) with ESMTP id 455AF24370; Tue, 6 Oct 2009 21:45:37 -0700 (PDT) From: Joe Perches To: linux-kernel@vger.kernel.org, Andrew Morton Cc: Alex Elder , xfs-masters@oss.sgi.com, xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 8/8] fs/xfs/xfs_log_recover.c: Use %pU to print UUIDs Subject: [PATCH 8/8] fs/xfs/xfs_log_recover.c: Use %pU to print UUIDs Date: Tue, 6 Oct 2009 21:45:41 -0700 Message-Id: X-Mailer: git-send-email 1.6.5.rc2.17.gdbc1b.dirty In-Reply-To: <1254890742-28245-1-git-send-email-joe@perches.com> References: <1254890742-28245-1-git-send-email-joe@perches.com> In-Reply-To: References: X-Barracuda-Connect: mail.perches.com[173.55.12.10] X-Barracuda-Start-Time: 1254890747 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.11057 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Joe Perches --- fs/xfs/xfs_log_recover.c | 14 ++++---------- 1 files changed, 4 insertions(+), 10 deletions(-) diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c index 1099395..3b8e3df 100644 --- a/fs/xfs/xfs_log_recover.c +++ b/fs/xfs/xfs_log_recover.c @@ -225,16 +225,10 @@ xlog_header_check_dump( xfs_mount_t *mp, xlog_rec_header_t *head) { - int b; - - cmn_err(CE_DEBUG, "%s: SB : uuid = ", __func__); - for (b = 0; b < 16; b++) - cmn_err(CE_DEBUG, "%02x", ((__uint8_t *)&mp->m_sb.sb_uuid)[b]); - cmn_err(CE_DEBUG, ", fmt = %d\n", XLOG_FMT); - cmn_err(CE_DEBUG, " log : uuid = "); - for (b = 0; b < 16; b++) - cmn_err(CE_DEBUG, "%02x", ((__uint8_t *)&head->h_fs_uuid)[b]); - cmn_err(CE_DEBUG, ", fmt = %d\n", be32_to_cpu(head->h_fmt)); + cmn_err(CE_DEBUG, "%s: SB : uuid = %pU, fmt = %d\n", + __func__, &mp->m_sb.sb_uuid, XLOG_FMT); + cmn_err(CE_DEBUG, " log : uuid = %pU, fmt = %d\n", + &head->h_fs_uuid, be32_to_cpu(head->h_fmt)); } #else #define xlog_header_check_dump(mp, head) -- 1.6.3.1.10.g659a0.dirty From joe@perches.com Tue Oct 6 23:44:19 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=unavailable version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n974iI2H161233 for ; Tue, 6 Oct 2009 23:44:19 -0500 X-ASG-Debug-ID: 1254890743-2c91025e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.perches.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 28178121F0BF; Tue, 6 Oct 2009 21:45:43 -0700 (PDT) Received: from mail.perches.com (mail.perches.com [173.55.12.10]) by cuda.sgi.com with ESMTP id yJ4c5qNXFrJANKdl; Tue, 06 Oct 2009 21:45:43 -0700 (PDT) Received: from localhost.localdomain (new-host.home [192.168.1.152]) by mail.perches.com (Postfix) with ESMTP id 73B0624368; Tue, 6 Oct 2009 21:45:33 -0700 (PDT) From: Joe Perches To: linux-kernel@vger.kernel.org, Andrew Morton Cc: Matt Mackall , Neil Brown , Laurent Pinchart , Mauro Carvalho Chehab , Steven Whitehouse , Artem Bityutskiy