From owner-xfs@oss.sgi.com Mon Oct 1 00:24:02 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 00:24:07 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=AWL,BAYES_00,WEIRD_PORT autolearn=no version=3.3.0-r574664 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with SMTP id l917NuWJ029549 for ; Mon, 1 Oct 2007 00:24:00 -0700 Received: from chook.melbourne.sgi.com (chook.melbourne.sgi.com [134.14.54.237]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA20859; Mon, 1 Oct 2007 17:23:51 +1000 Received: by chook.melbourne.sgi.com (Postfix, from userid 1116) id DF61C58C4C0A; Mon, 1 Oct 2007 17:23:50 +1000 (EST) Date: Mon, 01 Oct 2007 17:23:50 +1000 To: torvalds@linux-foundation.org Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, akpm@linux-foundation.org Subject: [GIT PULL] XFS update for 2.6.23 - revert a commit User-Agent: nail 11.25 7/29/05 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-Id: <20071001072350.DF61C58C4C0A@chook.melbourne.sgi.com> From: tes@sgi.com (Tim Shimmin) X-Virus-Scanned: ClamAV 0.91.2/4443/Sun Sep 30 15:16:01 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13190 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Hi Linus, A problem has been found for the XFS commit b394e43e995d08821588a22561c6a71a63b4ff27 and it needs to be reverted. It has the potential for worse corruption than what it is meant to fix. Please pull from the for-linus branch: git pull git://oss.sgi.com:8090/xfs/xfs-2.6.git for-linus Lachlan's description: This fix is for a problem that has been in XFS since day one. [XFS] Avoid replaying inode buffer initialisation log items if on-disk version is newer. It tries to fix an issue where log replay is replaying an inode cluster initialisation transaction that should not be replayed because the inode cluster on disk is more up to date. Since we don't log file sizes (we rely on inode flushing to get them to disk) then we can't just replay all the transations in the log and expect the inode to be completely restored. We lose file size updates. Unfortunately this fix is causing more (serious) problems than it is fixing so please don't push this one back just yet. This will update the following files: fs/xfs/xfs_buf_item.h | 5 ---- fs/xfs/xfs_log_recover.c | 51 ++------------------------------------------- fs/xfs/xfs_trans_buf.c | 1 - 3 files changed, 3 insertions(+), 54 deletions(-) through these commits: commit 053c59a0a7234bac669992f5b8b933b7d7fc189d Author: Tim Shimmin Date: Mon Oct 1 16:39:37 2007 +1000 Revert "[XFS] Avoid replaying inode buffer initialisation log items if on-disk version is newer." This reverts commit b394e43e995d08821588a22561c6a71a63b4ff27. SGI-PV: 969656 SGI-Modid: xfs-linux-melb:xfs-kern:29804a Signed-off-by: Lachlan McIlroy Signed-off-by: Tim Shimmin --Tim From owner-xfs@oss.sgi.com Mon Oct 1 00:49:44 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 00:49:50 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-r574664 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with SMTP id l917nd9b000545 for ; Mon, 1 Oct 2007 00:49:43 -0700 Received: from cxfsmac10.melbourne.sgi.com (cxfsmac10.melbourne.sgi.com [134.14.55.100]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA21432; Mon, 1 Oct 2007 17:49:31 +1000 Message-ID: <4700A68A.8070609@sgi.com> Date: Mon, 01 Oct 2007 17:49:30 +1000 From: Donald Douwsma User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: Eric Sandeen CC: Christoph Hellwig , xfs-oss Subject: Re: [PATCH V2] refactor xfs_mountfs for clarity & stack savings References: <46D37A82.2080608@sandeen.net> <20070828195221.GA7237@infradead.org> <46D48BDE.5000903@sandeen.net> In-Reply-To: <46D48BDE.5000903@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/4443/Sun Sep 30 15:16:01 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13191 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: donaldd@sgi.com Precedence: bulk X-list: xfs Eric Sandeen wrote: > Refactoring xfs_mountfs() to call sub-functions for logical > chunks can help save a bit of stack, and can make it easier to > read this long function. Finally got around to reviewing this one, sorry for the delay. I think we've lost something in the refactoring. > Index: linux-2.6-xfs/fs/xfs/xfs_mount.c ... > - /* > - * XFS uses the uuid from the superblock as the unique > - * identifier for fsid. We can not use the uuid from the volume > - * since a single partition filesystem is identical to a single > - * partition volume/filesystem. > - */ > - if ((mfsi_flags & XFS_MFSI_SECOND) == 0 && > - (mp->m_flags & XFS_MOUNT_NOUUID) == 0) { > - if (xfs_uuid_mount(mp)) { > - error = XFS_ERROR(EINVAL); > - goto error1; > - } > - uuid_mounted=1; The patch removes uuid_mounted=1, but doesn't put it back in anywhere. I think we need that bit for error handling :) Don From owner-xfs@oss.sgi.com Mon Oct 1 02:43:13 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 02:43:17 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_55, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.0-r574664 Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with ESMTP id l919hCHV014146 for ; Mon, 1 Oct 2007 02:43:13 -0700 Received: from Relay1.suse.de (mail2.suse.de [195.135.221.8]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id 58CF122DDD; Mon, 1 Oct 2007 11:30:01 +0200 (CEST) To: Timothy Shimmin Cc: Martin Steigerwald , xfs@oss.sgi.com Subject: Re: Creation time in XFS References: <200709302124.38164.Martin@lichtvoll.de> <470042DC.2040009@sgi.com> From: Andi Kleen Date: 01 Oct 2007 11:30:01 +0200 In-Reply-To: <470042DC.2040009@sgi.com> Message-ID: Lines: 26 User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Virus-Scanned: ClamAV 0.91.2/4444/Mon Oct 1 00:57:17 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13192 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: andi@firstfloor.org Precedence: bulk X-list: xfs Timothy Shimmin writes: > No XFS does not support creation time. It just has the regular > atime,mtime and ctime. > There are no plans that I've heard to support it. > Not much involved to support it AFAICT but it would either involve > changing the ondisk format of the inode or storing it in an EA. If you ever change the on disk format adding a file type similar to ext3 to directories could also greatly speed up find in many cases. > I wonder how this creation time is being exported currently? I don't think it is at all currently: % gid i_crtime fs/udf/udf_i.h:21:#define UDF_I_CRTIME(X) ( UDF_I(X)->i_crtime ) include/linux/ext4_fs.h:344: __le32 i_crtime; /* File Creation time */ include/linux/ext4_fs_i.h:160: struct timespec i_crtime; include/linux/udf_fs_i.h:20: struct timespec i_crtime; fs/ext4/ialloc.c:566: inode->i_mtime = inode->i_atime = inode->i_ctime = ei->i_crtime = fs/ext4/inode.c:2705: EXT4_EINODE_GET_XTIME(i_crtime, ei, raw_inode); fs/ext4/inode.c:2792: EXT4_EINODE_SET_XTIME(i_crtime, ei, raw_inode); -Andi From owner-xfs@oss.sgi.com Mon Oct 1 05:39:50 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 05:39:53 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS autolearn=ham version=3.3.0-r574664 Received: from sandeen.net (sandeen.net [209.173.210.139]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with ESMTP id l91Cdmfu016554 for ; Mon, 1 Oct 2007 05:39:50 -0700 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 sandeen.net (Postfix) with ESMTP id 1AB911807A967; Mon, 1 Oct 2007 07:39:47 -0500 (CDT) Message-ID: <4700EA92.1030004@sandeen.net> Date: Mon, 01 Oct 2007 07:39:46 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: Donald Douwsma CC: Christoph Hellwig , xfs-oss Subject: Re: [PATCH V2] refactor xfs_mountfs for clarity & stack savings References: <46D37A82.2080608@sandeen.net> <20070828195221.GA7237@infradead.org> <46D48BDE.5000903@sandeen.net> <4700A68A.8070609@sgi.com> In-Reply-To: <4700A68A.8070609@sgi.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/4445/Mon Oct 1 01:32:46 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13193 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Donald Douwsma wrote: > Eric Sandeen wrote: >> Refactoring xfs_mountfs() to call sub-functions for logical >> chunks can help save a bit of stack, and can make it easier to >> read this long function. > > Finally got around to reviewing this one, sorry for the delay. > > I think we've lost something in the refactoring. > >> Index: linux-2.6-xfs/fs/xfs/xfs_mount.c > ... >> - /* >> - * XFS uses the uuid from the superblock as the unique >> - * identifier for fsid. We can not use the uuid from the volume >> - * since a single partition filesystem is identical to a single >> - * partition volume/filesystem. >> - */ >> - if ((mfsi_flags & XFS_MFSI_SECOND) == 0 && >> - (mp->m_flags & XFS_MOUNT_NOUUID) == 0) { >> - if (xfs_uuid_mount(mp)) { >> - error = XFS_ERROR(EINVAL); >> - goto error1; >> - } >> - uuid_mounted=1; > > The patch removes uuid_mounted=1, but doesn't put it back in anywhere. > I think we need that bit for error handling :) Hm, no idea how I lost that... maybe in bouncing from cvs to kernel.org version. Sorry, will look this evening & fix it up. -Eric From owner-xfs@oss.sgi.com Mon Oct 1 05:55:07 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 05:55:11 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS autolearn=ham version=3.3.0-r574664 Received: from sandeen.net (sandeen.net [209.173.210.139]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with ESMTP id l91Ct6M3018659 for ; Mon, 1 Oct 2007 05:55:07 -0700 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 sandeen.net (Postfix) with ESMTP id B414A1807A968; Mon, 1 Oct 2007 07:55:06 -0500 (CDT) Message-ID: <4700EE2A.1020304@sandeen.net> Date: Mon, 01 Oct 2007 07:55:06 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: Tim Shimmin CC: xfs@oss.sgi.com Subject: Re: [GIT PULL] XFS update for 2.6.23 - revert a commit References: <20071001072350.DF61C58C4C0A@chook.melbourne.sgi.com> In-Reply-To: <20071001072350.DF61C58C4C0A@chook.melbourne.sgi.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/4445/Mon Oct 1 01:32:46 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13194 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Tim Shimmin wrote: > Hi Linus, > > A problem has been found for the XFS commit b394e43e995d08821588a22561c6a71a63b4ff27 > and it needs to be reverted. > It has the potential for worse corruption than what it is meant to fix. Whoops... that's what I get for picking it up too soon for fedora I guess! Any background on the newly-found problem, for those of us in the peanut gallery? Thanks, -Eric From owner-xfs@oss.sgi.com Mon Oct 1 06:05:34 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 06:05:38 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS autolearn=ham version=3.3.0-r574664 Received: from sandeen.net (sandeen.net [209.173.210.139]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with ESMTP id l91D5WUC020140 for ; Mon, 1 Oct 2007 06:05:34 -0700 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 sandeen.net (Postfix) with ESMTP id A66A418015182; Mon, 1 Oct 2007 08:05:32 -0500 (CDT) Message-ID: <4700F09C.5080903@sandeen.net> Date: Mon, 01 Oct 2007 08:05:32 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: Tim Shimmin CC: xfs@oss.sgi.com Subject: Re: [GIT PULL] XFS update for 2.6.23 - revert a commit References: <20071001072350.DF61C58C4C0A@chook.melbourne.sgi.com> <4700EE2A.1020304@sandeen.net> In-Reply-To: <4700EE2A.1020304@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/4445/Mon Oct 1 01:32:46 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13195 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Eric Sandeen wrote: > Tim Shimmin wrote: >> Hi Linus, >> >> A problem has been found for the XFS commit b394e43e995d08821588a22561c6a71a63b4ff27 >> and it needs to be reverted. >> It has the potential for worse corruption than what it is meant to fix. > > > Whoops... that's what I get for picking it up too soon for fedora I guess! > > Any background on the newly-found problem, for those of us in the peanut > gallery? Oh, I'm sorry, the problem description is already there. I thought that was the original commit description when I first saw it. -Eric From owner-xfs@oss.sgi.com Mon Oct 1 06:12:20 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 06:12:22 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS autolearn=ham version=3.3.0-r574664 Received: from sandeen.net (sandeen.net [209.173.210.139]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with ESMTP id l91DCFsO021244 for ; Mon, 1 Oct 2007 06:12:20 -0700 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 sandeen.net (Postfix) with ESMTP id 65CC01807A96A; Mon, 1 Oct 2007 08:12:15 -0500 (CDT) Message-ID: <4700F22F.3070307@sandeen.net> Date: Mon, 01 Oct 2007 08:12:15 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: Tim Shimmin CC: xfs@oss.sgi.com Subject: Re: [GIT PULL] XFS update for 2.6.23 - revert a commit References: <20071001072350.DF61C58C4C0A@chook.melbourne.sgi.com> <4700EE2A.1020304@sandeen.net> <4700F09C.5080903@sandeen.net> In-Reply-To: <4700F09C.5080903@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/4445/Mon Oct 1 01:32:46 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13196 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Eric Sandeen wrote: > Eric Sandeen wrote: >> Tim Shimmin wrote: >>> Hi Linus, >>> >>> A problem has been found for the XFS commit b394e43e995d08821588a22561c6a71a63b4ff27 >>> and it needs to be reverted. >>> It has the potential for worse corruption than what it is meant to fix. >> >> Whoops... that's what I get for picking it up too soon for fedora I guess! >> >> Any background on the newly-found problem, for those of us in the peanut >> gallery? > > Oh, I'm sorry, the problem description is already there. I thought that > was the original commit description when I first saw it. *sigh* or maybe not. ok, no more email 'til I've had my coffee. -Eric From owner-xfs@oss.sgi.com Mon Oct 1 08:18:18 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 08:18:22 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.5 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-r574664 Received: from smtp2.linux-foundation.org (smtp2.linux-foundation.org [207.189.120.14]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with ESMTP id l91FIIa0009551 for ; Mon, 1 Oct 2007 08:18:18 -0700 Received: from imap1.linux-foundation.org (imap1.linux-foundation.org [207.189.120.55]) by smtp2.linux-foundation.org (8.13.5.20060308/8.13.5/Debian-3ubuntu1.1) with ESMTP id l91F2cmm023462 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 1 Oct 2007 08:02:39 -0700 Received: from localhost (localhost [127.0.0.1]) by imap1.linux-foundation.org (8.13.5.20060308/8.13.5/Debian-3ubuntu1.1) with ESMTP id l91F2bLE021934; Mon, 1 Oct 2007 08:02:37 -0700 Date: Mon, 1 Oct 2007 08:02:37 -0700 (PDT) From: Linus Torvalds To: Tim Shimmin cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, akpm@linux-foundation.org Subject: Re: [GIT PULL] XFS update for 2.6.23 - revert a commit In-Reply-To: <20071001072350.DF61C58C4C0A@chook.melbourne.sgi.com> Message-ID: References: <20071001072350.DF61C58C4C0A@chook.melbourne.sgi.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=us-ascii X-MIMEDefang-Filter: lf$Revision: 1.185 $ X-Scanned-By: MIMEDefang 2.53 on 207.189.120.14 X-Virus-Scanned: ClamAV 0.91.2/4445/Mon Oct 1 01:32:46 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13197 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: torvalds@linux-foundation.org Precedence: bulk X-list: xfs On Mon, 1 Oct 2007, Tim Shimmin wrote: > > Lachlan's description: > This fix is for a problem that has been in XFS since day one. > [XFS] Avoid replaying inode buffer initialisation log items if on-disk version is newer. ... Why wasn't this in the commit logs? Now it just says it was reverted, with no actual reasoning *why*. And it apparently wasn't so obvious that no such reasoning is needed. Gah. I ended up amending the commit and updating it with the comment. Linus From owner-xfs@oss.sgi.com Mon Oct 1 17:14:01 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 17:14:04 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-r574664 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with SMTP id l920DtFV029313 for ; Mon, 1 Oct 2007 17:14:00 -0700 Received: from timothy-shimmins-power-mac-g5.local (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id KAA14481; Tue, 2 Oct 2007 10:13:48 +1000 Message-ID: <47018D3C.9070409@sgi.com> Date: Tue, 02 Oct 2007 10:13:48 +1000 From: Timothy Shimmin User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: Linus Torvalds CC: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, akpm@linux-foundation.org Subject: Re: [GIT PULL] XFS update for 2.6.23 - revert a commit References: <20071001072350.DF61C58C4C0A@chook.melbourne.sgi.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/4447/Mon Oct 1 15:02:09 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13198 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Linus Torvalds wrote: > > On Mon, 1 Oct 2007, Tim Shimmin wrote: >> Lachlan's description: >> This fix is for a problem that has been in XFS since day one. >> [XFS] Avoid replaying inode buffer initialisation log items if on-disk version is newer. > ... > > Why wasn't this in the commit logs? Now it just says it was reverted, with > no actual reasoning *why*. And it apparently wasn't so obvious that no > such reasoning is needed. > > Gah. I ended up amending the commit and updating it with the comment. > > Linus Yeah, sorry about that. It occurred to me later on. I initially converted the sgi-mod (undo mod) to a git commit and then discovered git-revert and thought, hey I'll use that instead but then forgot to add all the text into it. D'oh. Thanks for the fixup. --Tim From owner-xfs@oss.sgi.com Mon Oct 1 18:41:45 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 18:41:49 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-r574664 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with SMTP id l921fghu012306 for ; Mon, 1 Oct 2007 18:41:44 -0700 Received: from timothy-shimmins-power-mac-g5.local (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id LAA16027; Tue, 2 Oct 2007 11:41:37 +1000 Message-ID: <4701A1D0.5010709@sgi.com> Date: Tue, 02 Oct 2007 11:41:36 +1000 From: Timothy Shimmin User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: Eric Sandeen CC: xfs@oss.sgi.com Subject: Re: [GIT PULL] XFS update for 2.6.23 - revert a commit References: <20071001072350.DF61C58C4C0A@chook.melbourne.sgi.com> <4700EE2A.1020304@sandeen.net> In-Reply-To: <4700EE2A.1020304@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/4447/Mon Oct 1 15:02:09 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13199 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Eric Sandeen wrote: > Tim Shimmin wrote: >> Hi Linus, >> >> A problem has been found for the XFS commit b394e43e995d08821588a22561c6a71a63b4ff27 >> and it needs to be reverted. >> It has the potential for worse corruption than what it is meant to fix. > > > Whoops... that's what I get for picking it up too soon for fedora I guess! > > Any background on the newly-found problem, for those of us in the peanut > gallery? > > Thanks, > > -Eric Hi Eric, Lachlan worked this problem so he can probably provide more details. My understanding is that we were having a problem with the log replay replaying newly allocated inodes (inodes from buffer items) over the top of buffers which were actually more up-to-date than what was logged. The code used a heuristic to determine if the buffer had been written to for the inode (by checking on magic#, mode and gen# - not going to comment on this). Anyway, it comes down to either copying over the inode buf data or not copying it over (doing or not doing the log replay). The change could cause the buffer to be not overwritten in replay where previously it would be. We want this to not happen as part of the fix and doing the right thing and not by mistake and failing to replay when we need it to be replayed. I presume the latter is what is happening. The symptoms of this is what Lachlan has discovered in QA on a debug kernel and he can provide the details. I believe this started from not logging the inode size changes (as is consistent with the logging model) for performance reasons, and so we can't rely on inode log items coming up on log replay to fix things up. BTW, we currently have 3 ways of logging an inode: 1. in an item buffer and marked as an inode 2. in an item buffer and not marked as an inode 3. in an inode item and 3 places where they get replayed: 1. xlog_recover_do_inode_buffer - for di_next_unlinked pointer recovery 2. xlog_recover_do_reg_buffer - for newly allocated inode recovery 3. xlog_recover_do_inode_trans - for general inode recovery The fix was in #2. Ughh. --Tim From owner-xfs@oss.sgi.com Mon Oct 1 20:10:20 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 20:10:25 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) 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-r574664 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with SMTP id l923AETH031126 for ; Mon, 1 Oct 2007 20:10:18 -0700 Received: from chook.melbourne.sgi.com (chook.melbourne.sgi.com [134.14.54.237]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id NAA18531; Tue, 2 Oct 2007 13:10:09 +1000 Received: by chook.melbourne.sgi.com (Postfix, from userid 44625) id 5372F58C38F1; Tue, 2 Oct 2007 13:10:09 +1000 (EST) To: sgi.bugs.xfs@engr.sgi.com, xfs@oss.sgi.com Subject: PARTIAL TAKE 971186 - cleanup vnode useage in xfs_ioctl.c Message-Id: <20071002031009.5372F58C38F1@chook.melbourne.sgi.com> Date: Tue, 2 Oct 2007 13:10:09 +1000 (EST) From: lachlan@sgi.com (Lachlan McIlroy) X-Virus-Scanned: ClamAV 0.91.2/4448/Mon Oct 1 18:32:14 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13200 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: lachlan@sgi.com Precedence: bulk X-list: xfs cleanup vnode useage in xfs_ioctl.c xfs_ioctl.c passes around vnode pointers quite a lot, but all places already have the Linux inode which is identical to the vnode these days. Clean the code up to always use the Linux inode. Signed-off-by: Christoph Hellwig Date: Sun Sep 30 23:26:24 PDT 2007 Workarea: redback.melbourne.sgi.com:/home/lachlan/isms/2.6.x-log Inspected by: Christoph Hellwig Author: lachlan.longdrop.melbourne.sgi.com The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/linux/2.6.x-xfs-melb Modid: xfs-linux-melb:xfs-kern:29807a fs/xfs/linux-2.6/xfs_ioctl.c - 1.156 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/linux-2.6/xfs_ioctl.c.diff?r1=text&tr1=1.156&r2=text&tr2=1.155&f=h - cleanup vnode useage in xfs_ioctl.c From owner-xfs@oss.sgi.com Mon Oct 1 20:11:57 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 20:12:02 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) 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-r574664 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with SMTP id l923BqhT031559 for ; Mon, 1 Oct 2007 20:11:56 -0700 Received: from chook.melbourne.sgi.com (chook.melbourne.sgi.com [134.14.54.237]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id NAA18565; Tue, 2 Oct 2007 13:11:48 +1000 Received: by chook.melbourne.sgi.com (Postfix, from userid 44625) id A310158C38F1; Tue, 2 Oct 2007 13:11:48 +1000 (EST) To: sgi.bugs.xfs@engr.sgi.com, xfs@oss.sgi.com Subject: PARTIAL TAKE 971186 - cleanup vnode useage in xfs_iget.c Message-Id: <20071002031148.A310158C38F1@chook.melbourne.sgi.com> Date: Tue, 2 Oct 2007 13:11:48 +1000 (EST) From: lachlan@sgi.com (Lachlan McIlroy) X-Virus-Scanned: ClamAV 0.91.2/4448/Mon Oct 1 18:32:14 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13201 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: lachlan@sgi.com Precedence: bulk X-list: xfs cleanup vnode useage in xfs_iget.c Get rid of vnode useage in xfs_iget.c and pass Linux inode / xfs_inode where apropinquate. And kill some useless helpers while we're at it. Signed-off-by: Christoph Hellwig Date: Mon Oct 1 16:47:33 AEST 2007 Workarea: redback.melbourne.sgi.com:/home/lachlan/isms/2.6.x-log Inspected by: Christoph Hellwig Author: lachlan The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/linux/2.6.x-xfs-melb Modid: xfs-linux-melb:xfs-kern:29808a fs/xfs/xfs_iget.c - 1.236 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_iget.c.diff?r1=text&tr1=1.236&r2=text&tr2=1.235&f=h fs/xfs/xfs_inode.h - 1.236 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_inode.h.diff?r1=text&tr1=1.236&r2=text&tr2=1.235&f=h fs/xfs/linux-2.6/xfs_vnode.c - 1.153 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/linux-2.6/xfs_vnode.c.diff?r1=text&tr1=1.153&r2=text&tr2=1.152&f=h fs/xfs/linux-2.6/xfs_vnode.h - 1.143 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/linux-2.6/xfs_vnode.h.diff?r1=text&tr1=1.143&r2=text&tr2=1.142&f=h fs/xfs/linux-2.6/xfs_ksyms.c - 1.75 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/linux-2.6/xfs_ksyms.c.diff?r1=text&tr1=1.75&r2=text&tr2=1.74&f=h - cleanup vnode useage in xfs_iget.c From owner-xfs@oss.sgi.com Mon Oct 1 20:23:34 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 20:23:37 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-r574664 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with SMTP id l923NS9e005662 for ; Mon, 1 Oct 2007 20:23:32 -0700 Received: from linuxbuild.melbourne.sgi.com (linuxbuild.melbourne.sgi.com [134.14.54.115]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id NAA18827; Tue, 2 Oct 2007 13:23:24 +1000 From: donaldd@sgi.com Received: by linuxbuild.melbourne.sgi.com (Postfix, from userid 16365) id D90EC30B55CE; Tue, 2 Oct 2007 13:23:23 +1000 (EST) To: xfs@oss.sgi.com, sgi.bugs.xfs@engr.sgi.com Subject: PARTIAL TAKE 971186 - kill xfs_freeze Message-Id: <20071002032323.D90EC30B55CE@linuxbuild.melbourne.sgi.com> Date: Tue, 2 Oct 2007 13:23:23 +1000 (EST) X-Virus-Scanned: ClamAV 0.91.2/4448/Mon Oct 1 18:32:14 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13202 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: donaldd@sgi.com Precedence: bulk X-list: xfs kill xfs_freeze. No need to have a wrapper just two call two more functions. Signed-off-by: Christoph Hellwig Date: Tue Oct 2 13:22:40 AEST 2007 Workarea: linuxbuild.melbourne.sgi.com:/home/donaldd/isms/2.6.x-xfs Inspected by: hch@lst.de The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/linux/2.6.x-xfs-melb Modid: xfs-linux-melb:xfs-kern:29816a fs/xfs/xfs_vfsops.c - 1.545 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_vfsops.c.diff?r1=text&tr1=1.545&r2=text&tr2=1.544&f=h - kill xfs_freeze. fs/xfs/linux-2.6/xfs_super.c - 1.400 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/linux-2.6/xfs_super.c.diff?r1=text&tr1=1.400&r2=text&tr2=1.399&f=h - kill xfs_freeze. fs/xfs/xfs_vfsops.h - 1.5 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_vfsops.h.diff?r1=text&tr1=1.5&r2=text&tr2=1.4&f=h - kill xfs_freeze. From owner-xfs@oss.sgi.com Mon Oct 1 20:26:49 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 20:26:53 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-r574664 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with SMTP id l923Qis7006699 for ; Mon, 1 Oct 2007 20:26:48 -0700 Received: from linuxbuild.melbourne.sgi.com (linuxbuild.melbourne.sgi.com [134.14.54.115]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id NAA18920; Tue, 2 Oct 2007 13:26:40 +1000 From: donaldd@sgi.com Received: by linuxbuild.melbourne.sgi.com (Postfix, from userid 16365) id 577F230CD1E8; Tue, 2 Oct 2007 13:26:40 +1000 (EST) To: xfs@oss.sgi.com, sgi.bugs.xfs@engr.sgi.com Subject: PARTIAL TAKE 971186 - kill probe_* sysctl leftovers Message-Id: <20071002032640.577F230CD1E8@linuxbuild.melbourne.sgi.com> Date: Tue, 2 Oct 2007 13:26:40 +1000 (EST) X-Virus-Scanned: ClamAV 0.91.2/4448/Mon Oct 1 18:32:14 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13203 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: donaldd@sgi.com Precedence: bulk X-list: xfs kill probe_* sysctl leftovers After my recent changes the probe_* sysctls are unused because we do a proper request_module now if we actually know that we need the quota or dmapi module. Kill the leftovers that have no function anymore. Signed-off-by: Christoph Hellwig Date: Tue Oct 2 13:26:11 AEST 2007 Workarea: linuxbuild.melbourne.sgi.com:/home/donaldd/isms/2.6.x-xfs Inspected by: hch@lst.de The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/linux/2.6.x-xfs-melb Modid: xfs-linux-melb:xfs-kern:29817a fs/xfs/linux-2.6/xfs_globals.c - 1.73 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/linux-2.6/xfs_globals.c.diff?r1=text&tr1=1.73&r2=text&tr2=1.72&f=h - kill probe_* sysctl leftovers. fs/xfs/linux-2.6/xfs_linux.h - 1.161 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/linux-2.6/xfs_linux.h.diff?r1=text&tr1=1.161&r2=text&tr2=1.160&f=h - kill probe_* sysctl leftovers. fs/xfs/linux-2.6/xfs_sysctl.c - 1.43 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/linux-2.6/xfs_sysctl.c.diff?r1=text&tr1=1.43&r2=text&tr2=1.42&f=h - kill probe_* sysctl leftovers. fs/xfs/linux-2.6/xfs_sysctl.h - 1.28 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/linux-2.6/xfs_sysctl.h.diff?r1=text&tr1=1.28&r2=text&tr2=1.27&f=h - kill probe_* sysctl leftovers. From owner-xfs@oss.sgi.com Mon Oct 1 21:51:21 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 21:51:26 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) 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-r574664 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with SMTP id l924pG8Z021053 for ; Mon, 1 Oct 2007 21:51:19 -0700 Received: from chook.melbourne.sgi.com (chook.melbourne.sgi.com [134.14.54.237]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA20981; Tue, 2 Oct 2007 14:51:12 +1000 Received: by chook.melbourne.sgi.com (Postfix, from userid 44625) id 494EE58C38F1; Tue, 2 Oct 2007 14:51:12 +1000 (EST) To: sgi.bugs.xfs@engr.sgi.com, xfs@oss.sgi.com Subject: TAKE 971186 - clean up some xfs_log_priv.h macros Message-Id: <20071002045112.494EE58C38F1@chook.melbourne.sgi.com> Date: Tue, 2 Oct 2007 14:51:12 +1000 (EST) From: lachlan@sgi.com (Lachlan McIlroy) X-Virus-Scanned: ClamAV 0.91.2/4451/Mon Oct 1 21:12:51 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13205 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: lachlan@sgi.com Precedence: bulk X-list: xfs clean up some xfs_log_priv.h macros - the various assign lsn macros are replaced by a single inline, xlog_assign_lsn, which is equivalent to ASSIGN_ANY_LSN_HOST except for a more sane calling convention. ASSIGN_LSN_DISK is replaced by xlog_assign_lsn and a manual bytespap, and ASSIGN_LSN by the same, except we pass the cycle and block arguments explicitly instead of a log paramter. The latter two variants only had 2, respectively one user anyway. - the GET_CYCLE is replaced by a xlog_get_cycle inline with exactly the same calling conventions. - GET_CLIENT_ID is replaced by xlog_get_client_id which leaves away the unused arch argument. Instead of conditional defintions depending on host endianess we now do an unconditional swap and shift then, which generates equal code. - the unused XLOG_SET macro is removed. Signed-off-by: Christoph Hellwig Date: Tue Oct 2 14:47:44 AEST 2007 Workarea: redback.melbourne.sgi.com:/home/lachlan/isms/2.6.x-oss Inspected by: Christoph Hellwig Author: lachlan The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/linux/2.6.x-xfs-melb Modid: xfs-linux-melb:xfs-kern:29820a fs/xfs/xfs_log.c - 1.341 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_log.c.diff?r1=text&tr1=1.341&r2=text&tr2=1.340&f=h fs/xfs/xfs_log_priv.h - 1.124 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_log_priv.h.diff?r1=text&tr1=1.124&r2=text&tr2=1.123&f=h fs/xfs/xfs_log_recover.c - 1.328 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_log_recover.c.diff?r1=text&tr1=1.328&r2=text&tr2=1.327&f=h - clean up some xfs_log_priv.h macros From owner-xfs@oss.sgi.com Mon Oct 1 21:50:36 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 21:50:42 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) 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-r574664 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with SMTP id l924oVCo020930 for ; Mon, 1 Oct 2007 21:50:34 -0700 Received: from chook.melbourne.sgi.com (chook.melbourne.sgi.com [134.14.54.237]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA20978; Tue, 2 Oct 2007 14:50:26 +1000 Received: by chook.melbourne.sgi.com (Postfix, from userid 44625) id A77AF58C38F1; Tue, 2 Oct 2007 14:50:26 +1000 (EST) To: sgi.bugs.xfs@engr.sgi.com, xfs@oss.sgi.com Subject: TAKE 971186 - clean up some xfs_log_priv.h macros Message-Id: <20071002045026.A77AF58C38F1@chook.melbourne.sgi.com> Date: Tue, 2 Oct 2007 14:50:26 +1000 (EST) From: lachlan@sgi.com (Lachlan McIlroy) X-Virus-Scanned: ClamAV 0.91.2/4451/Mon Oct 1 21:12:51 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13204 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: lachlan@sgi.com Precedence: bulk X-list: xfs clean up some xfs_log_priv.h macros - the various assign lsn macros are replaced by a single inline, xlog_assign_lsn, which is equivalent to ASSIGN_ANY_LSN_HOST except for a more sane calling convention. ASSIGN_LSN_DISK is replaced by xlog_assign_lsn and a manual bytespap, and ASSIGN_LSN by the same, except we pass the cycle and block arguments explicitly instead of a log paramter. The latter two variants only had 2, respectively one user anyway. - the GET_CYCLE is replaced by a xlog_get_cycle inline with exactly the same calling conventions. - GET_CLIENT_ID is replaced by xlog_get_client_id which leaves away the unused arch argument. Instead of conditional defintions depending on host endianess we now do an unconditional swap and shift then, which generates equal code. - the unused XLOG_SET macro is removed. Signed-off-by: Christoph Hellwig Date: Tue Oct 2 14:34:49 AEST 2007 Workarea: redback.melbourne.sgi.com:/home/lachlan/isms/2.6.x-oss Inspected by: Christoph Hellwig Author: lachlan The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/linux/2.6.x-xfs-melb Modid: xfs-linux-melb:xfs-kern:29819a fs/xfs/xfs_log.c - 1.340 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_log.c.diff?r1=text&tr1=1.340&r2=text&tr2=1.339&f=h fs/xfs/xfs_log_priv.h - 1.123 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_log_priv.h.diff?r1=text&tr1=1.123&r2=text&tr2=1.122&f=h fs/xfs/xfs_log_recover.c - 1.327 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_log_recover.c.diff?r1=text&tr1=1.327&r2=text&tr2=1.326&f=h - clean up some xfs_log_priv.h macros From owner-xfs@oss.sgi.com Mon Oct 1 22:20:04 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 22:20:08 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) 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-r574664 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with SMTP id l925Jxdw024520 for ; Mon, 1 Oct 2007 22:20:02 -0700 Received: from chook.melbourne.sgi.com (chook.melbourne.sgi.com [134.14.54.237]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id PAA21697; Tue, 2 Oct 2007 15:19:55 +1000 Received: by chook.melbourne.sgi.com (Postfix, from userid 44625) id 03B9E58C38F1; Tue, 2 Oct 2007 15:19:54 +1000 (EST) To: sgi.bugs.xfs@engr.sgi.com, xfs@oss.sgi.com Subject: PARTIAL TAKE 971186 - xlog_rec_header/xlog_rec_ext_header endianess annotations Message-Id: <20071002051955.03B9E58C38F1@chook.melbourne.sgi.com> Date: Tue, 2 Oct 2007 15:19:54 +1000 (EST) From: lachlan@sgi.com (Lachlan McIlroy) X-Virus-Scanned: ClamAV 0.91.2/4451/Mon Oct 1 21:12:51 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13206 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: lachlan@sgi.com Precedence: bulk X-list: xfs xlog_rec_header/xlog_rec_ext_header endianess annotations Mostly trivial conversion with one exceptions: h_num_logops was kept in native endian previously and only converted to big endian in xlog_sync, but we always keep it big endian now. With todays cpus fast byteswap instructions that's not an issue but the new variant keeps the code clean and maintainable. Signed-off-by: Christoph Hellwig Date: Tue Oct 2 15:19:07 AEST 2007 Workarea: redback.melbourne.sgi.com:/home/lachlan/isms/2.6.x-oss Inspected by: Signed-off-by: Christoph Hellwig Author: lachlan The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/linux/2.6.x-xfs-melb Modid: xfs-linux-melb:xfs-kern:29821a fs/xfs/xfsidbg.c - 1.338 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfsidbg.c.diff?r1=text&tr1=1.338&r2=text&tr2=1.337&f=h fs/xfs/xfs_log.h - 1.80 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_log.h.diff?r1=text&tr1=1.80&r2=text&tr2=1.79&f=h fs/xfs/xfs_log.c - 1.342 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_log.c.diff?r1=text&tr1=1.342&r2=text&tr2=1.341&f=h fs/xfs/xfs_log_priv.h - 1.125 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_log_priv.h.diff?r1=text&tr1=1.125&r2=text&tr2=1.124&f=h fs/xfs/xfs_log_recover.c - 1.329 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_log_recover.c.diff?r1=text&tr1=1.329&r2=text&tr2=1.328&f=h - xlog_rec_header/xlog_rec_ext_header endianess annotations From owner-xfs@oss.sgi.com Mon Oct 1 22:26:30 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 22:26:34 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) 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-r574664 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with SMTP id l925QPFR025693 for ; Mon, 1 Oct 2007 22:26:28 -0700 Received: from chook.melbourne.sgi.com (chook.melbourne.sgi.com [134.14.54.237]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id PAA21822; Tue, 2 Oct 2007 15:26:21 +1000 Received: by chook.melbourne.sgi.com (Postfix, from userid 44625) id B4D1058C38F1; Tue, 2 Oct 2007 15:26:21 +1000 (EST) To: sgi.bugs.xfs@engr.sgi.com, xfs@oss.sgi.com Subject: TAKE 970852 - kill xfs_iocore_t Message-Id: <20071002052621.B4D1058C38F1@chook.melbourne.sgi.com> Date: Tue, 2 Oct 2007 15:26:21 +1000 (EST) From: lachlan@sgi.com (Lachlan McIlroy) X-Virus-Scanned: ClamAV 0.91.2/4451/Mon Oct 1 21:12:51 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13207 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: lachlan@sgi.com Precedence: bulk X-list: xfs kill xfs_iocore_t xfs_iocore_t is a structure embedded in xfs_inode. Except for one field it just duplicates fields already in xfs_inode, and there is nothing this abstraction buys us on XFS/Linux. This patch removes it and shrinks source and binary size of xfs aswell as shrinking the size of xfs_inode by 60/44 bytes in debug/non-debug builds. Signed-off-by: Christoph Hellwig Date: Fri Sep 21 17:16:44 AEST 2007 Workarea: redback.melbourne.sgi.com:/home/lachlan/isms/2.6.x-hch Inspected by: Christoph Hellwig Author: lachlan The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/linux/2.6.x-xfs-melb Modid: xfs-linux-melb:xfs-kern:29754a fs/xfs/xfsidbg.c - 1.334 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfsidbg.c.diff?r1=text&tr1=1.334&r2=text&tr2=1.333&f=h fs/xfs/xfs_rw.h - 1.85 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_rw.h.diff?r1=text&tr1=1.85&r2=text&tr2=1.84&f=h fs/xfs/xfs_vnodeops.c - 1.723 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_vnodeops.c.diff?r1=text&tr1=1.723&r2=text&tr2=1.722&f=h fs/xfs/xfs_iocore.c - 1.55 - deleted http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_iocore.c.diff?r1=text&tr1=1.55&r2=text&tr2=1.54&f=h fs/xfs/xfs_dfrag.c - 1.62 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_dfrag.c.diff?r1=text&tr1=1.62&r2=text&tr2=1.61&f=h fs/xfs/xfs_iget.c - 1.235 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_iget.c.diff?r1=text&tr1=1.235&r2=text&tr2=1.234&f=h fs/xfs/xfs_mount.h - 1.255 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_mount.h.diff?r1=text&tr1=1.255&r2=text&tr2=1.254&f=h fs/xfs/xfs_inode.c - 1.482 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_inode.c.diff?r1=text&tr1=1.482&r2=text&tr2=1.481&f=h fs/xfs/xfs_inode.h - 1.235 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_inode.h.diff?r1=text&tr1=1.235&r2=text&tr2=1.234&f=h fs/xfs/Makefile-linux-2.6 - 1.214 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/Makefile-linux-2.6.diff?r1=text&tr1=1.214&r2=text&tr2=1.213&f=h fs/xfs/xfs_iomap.c - 1.59 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_iomap.c.diff?r1=text&tr1=1.59&r2=text&tr2=1.58&f=h fs/xfs/linux-2.6/xfs_lrw.h - 1.62 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/linux-2.6/xfs_lrw.h.diff?r1=text&tr1=1.62&r2=text&tr2=1.61&f=h fs/xfs/linux-2.6/xfs_lrw.c - 1.270 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/linux-2.6/xfs_lrw.c.diff?r1=text&tr1=1.270&r2=text&tr2=1.269&f=h fs/xfs/linux-2.6/xfs_aops.c - 1.157 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/linux-2.6/xfs_aops.c.diff?r1=text&tr1=1.157&r2=text&tr2=1.156&f=h fs/xfs/linux-2.6/xfs_ksyms.c - 1.74 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/linux-2.6/xfs_ksyms.c.diff?r1=text&tr1=1.74&r2=text&tr2=1.73&f=h fs/xfs/dmapi/xfs_dm.c - 1.55 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/dmapi/xfs_dm.c.diff?r1=text&tr1=1.55&r2=text&tr2=1.54&f=h - kill xfs_iocore_t From owner-xfs@oss.sgi.com Mon Oct 1 22:27:39 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 22:27:43 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) 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-r574664 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with SMTP id l925RYkh025863 for ; Mon, 1 Oct 2007 22:27:37 -0700 Received: from chook.melbourne.sgi.com (chook.melbourne.sgi.com [134.14.54.237]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id PAA21836; Tue, 2 Oct 2007 15:27:29 +1000 Received: by chook.melbourne.sgi.com (Postfix, from userid 44625) id E0DD358C38F1; Tue, 2 Oct 2007 15:27:29 +1000 (EST) To: sgi.bugs.xfs@engr.sgi.com, xfs@oss.sgi.com Subject: TAKE 970980 - simplify xfs_vn_getattr Message-Id: <20071002052729.E0DD358C38F1@chook.melbourne.sgi.com> Date: Tue, 2 Oct 2007 15:27:29 +1000 (EST) From: lachlan@sgi.com (Lachlan McIlroy) X-Virus-Scanned: ClamAV 0.91.2/4451/Mon Oct 1 21:12:51 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13208 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: lachlan@sgi.com Precedence: bulk X-list: xfs simplify xfs_vn_getattr Just fill in struct kstat directly from the xfs_inode instead of doing a detour through a bhv_vattr_t and xfs_getattr. Signed-off-by: Christoph Hellwig Date: Tue Sep 25 14:51:00 AEST 2007 Workarea: redback.melbourne.sgi.com:/home/lachlan/isms/2.6.x-hch Inspected by: Christoph Hellwig Author: lachlan The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/linux/2.6.x-xfs-melb Modid: xfs-linux-melb:xfs-kern:29770a fs/xfs/linux-2.6/xfs_iops.c - 1.265 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/linux-2.6/xfs_iops.c.diff?r1=text&tr1=1.265&r2=text&tr2=1.264&f=h - simplify xfs_vn_getattr From owner-xfs@oss.sgi.com Mon Oct 1 22:55:22 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 22:55:26 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_55 autolearn=no version=3.3.0-r574664 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with SMTP id l925tIxJ028639 for ; Mon, 1 Oct 2007 22:55:20 -0700 Received: from timothy-shimmins-power-mac-g5.local (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id PAA22610; Tue, 2 Oct 2007 15:55:11 +1000 Message-ID: <4701DD3F.1000104@sgi.com> Date: Tue, 02 Oct 2007 15:55:11 +1000 From: Timothy Shimmin User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: Andi Kleen CC: Martin Steigerwald , xfs@oss.sgi.com Subject: Re: Creation time in XFS References: <200709302124.38164.Martin@lichtvoll.de> <470042DC.2040009@sgi.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/4451/Mon Oct 1 21:12:51 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13209 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Andi Kleen wrote: > Timothy Shimmin writes: > >> No XFS does not support creation time. It just has the regular >> atime,mtime and ctime. >> There are no plans that I've heard to support it. >> Not much involved to support it AFAICT but it would either involve >> changing the ondisk format of the inode or storing it in an EA. > > If you ever change the on disk format adding a file type similar to ext3 > to directories could also greatly speed up find in many cases. > Sounds a good idea. In that case a new ondisk directory format (at v2 at the moment). I think Dave (dgc) might have been mentioning something about that recently. --Tim From owner-xfs@oss.sgi.com Mon Oct 1 23:59:52 2007 Received: with ECARTIS (v1.0.0; list xfs); Mon, 01 Oct 2007 23:59:57 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) 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-r574664 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with SMTP id l926xlHN003067 for ; Mon, 1 Oct 2007 23:59:51 -0700 Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA23791; Tue, 2 Oct 2007 16:59:36 +1000 Message-ID: <4701ED51.8050706@sgi.com> Date: Tue, 02 Oct 2007 17:03:45 +1000 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.4 (X11/20070604) MIME-Version: 1.0 To: Timothy Shimmin CC: Eric Sandeen , xfs@oss.sgi.com Subject: Re: [GIT PULL] XFS update for 2.6.23 - revert a commit References: <20071001072350.DF61C58C4C0A@chook.melbourne.sgi.com> <4700EE2A.1020304@sandeen.net> <4701A1D0.5010709@sgi.com> In-Reply-To: <4701A1D0.5010709@sgi.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/4452/Mon Oct 1 22:03:17 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13210 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: lachlan@sgi.com Precedence: bulk X-list: xfs Timothy Shimmin wrote: > Eric Sandeen wrote: >> Tim Shimmin wrote: >>> Hi Linus, >>> >>> A problem has been found for the XFS commit >>> b394e43e995d08821588a22561c6a71a63b4ff27 >>> and it needs to be reverted. >>> It has the potential for worse corruption than what it is meant to fix. >> >> >> Whoops... that's what I get for picking it up too soon for fedora I >> guess! >> >> Any background on the newly-found problem, for those of us in the peanut >> gallery? >> >> Thanks, >> >> -Eric > > Hi Eric, > > Lachlan worked this problem so he can probably provide more details. > My understanding is that we were having a problem with the log replay > replaying newly allocated inodes (inodes from buffer items) over the top > of buffers which were actually more up-to-date than what was logged. > The code used a heuristic to determine if the buffer had been written > to for the inode (by checking on magic#, mode and gen# - not going to > comment on this). > Anyway, it comes down to either copying over the inode buf data or not > copying it over (doing or not doing the log replay). > The change could cause the buffer to be not overwritten in replay > where previously it would be. > We want this to not happen as part of the fix and doing the right thing > and not by mistake and failing to replay when we need it to be replayed. > I presume the latter is what is happening. > The symptoms of this is what Lachlan has discovered in QA on a debug > kernel and he can provide the details. > > I believe this started from not logging the inode size changes > (as is consistent with the logging model) for performance reasons, > and so we can't rely on inode log items coming up on log replay > to fix things up. > > BTW, we currently have 3 ways of logging an inode: > 1. in an item buffer and marked as an inode > 2. in an item buffer and not marked as an inode > 3. in an inode item > > and 3 places where they get replayed: > 1. xlog_recover_do_inode_buffer - for di_next_unlinked pointer recovery > 2. xlog_recover_do_reg_buffer - for newly allocated inode recovery > 3. xlog_recover_do_inode_trans - for general inode recovery > > The fix was in #2. > > > Ughh. Yeah that about sums it up. In an attempt to prevent log replay of inodes in cases when we shouldn't replay we also prevented log replay of inodes in cases when we should replay. We end up with directories that refer to inodes that were not replayed and we read existing data off disk. That existing data is usually previous instances of inodes. We had cases of regular files turning into directories and inode version mismatches. Lachlan From owner-xfs@oss.sgi.com Tue Oct 2 00:08:24 2007 Received: with ECARTIS (v1.0.0; list xfs); Tue, 02 Oct 2007 00:08:28 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-r574664 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with SMTP id l9278IUp006241 for ; Tue, 2 Oct 2007 00:08:20 -0700 Received: from pc-bnaujok.melbourne.sgi.com (pc-bnaujok.melbourne.sgi.com [134.14.55.58]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA24017; Tue, 2 Oct 2007 17:08:17 +1000 Date: Tue, 02 Oct 2007 17:08:59 +1000 To: "xfs@oss.sgi.com" , xfs-dev Subject: REVIEW: xfs_reno From: "Barry Naujok" Organization: SGI Content-Type: multipart/mixed; boundary=----------CjDhNP1TBpgHu0GSrkBaa0 MIME-Version: 1.0 Message-ID: User-Agent: Opera Mail/9.10 (Win32) X-Virus-Scanned: ClamAV 0.91.2/4452/Mon Oct 1 22:03:17 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13211 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: bnaujok@sgi.com Precedence: bulk X-list: xfs ------------CjDhNP1TBpgHu0GSrkBaa0 Content-Type: text/plain; format=flowed; delsp=yes; charset=iso-8859-15 Content-Transfer-Encoding: 7bit The attached tool allows an inode64 filesystem to be converted to inode32. For this to work, the filesystem has to be mounted inode32 before it's run. I'm not sure if there is any packaging changes required. Barry. ------------CjDhNP1TBpgHu0GSrkBaa0 Content-Disposition: attachment; filename=xfs_reno.patch Content-Type: application/octet-stream; name=xfs_reno.patch Content-Transfer-Encoding: Base64 Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQp4ZnNkdW1wL01ha2Vm aWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKLS0tIGEveGZz ZHVtcC9NYWtlZmlsZQkyMDA3LTEwLTAyIDE3OjA2OjI0LjAwMDAwMDAwMCAr MTAwMAorKysgYi94ZnNkdW1wL01ha2VmaWxlCTIwMDctMDktMTQgMTc6MzE6 MzEuOTE2NDM3MTQwICsxMDAwCkBAIC0xNiw3ICsxNiw3IEBACiAJTG9ncy8q IGJ1aWx0IC5jZW5zdXMgaW5zdGFsbC4qIGluc3RhbGwtZGV2LiogKi5negog CiBTVUJESVJTID0gaW5jbHVkZSBsaWJybXQgXAotCWNvbW1vbiBlc3RpbWF0 ZSBmc3IgaW52ZW50b3J5IGludnV0aWwgZHVtcCByZXN0b3JlIFwKKwljb21t b24gZXN0aW1hdGUgZnNyIGludmVudG9yeSBpbnZ1dGlsIGR1bXAgcmVubyBy ZXN0b3JlIFwKIAltNCBtYW4gZG9jIHBvIGRlYmlhbiBidWlsZAogCiBkZWZh dWx0OiAkKENPTkZJR1VSRSkKCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQp4ZnNkdW1wL3Jlbm8vTWFrZWZpbGUKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CgotLS0gYS94ZnNkdW1wL3Jlbm8vTWFrZWZpbGUJMjAw Ni0wNi0xNyAwMDo1ODoyNC4wMDAwMDAwMDAgKzEwMDAKKysrIGIveGZzZHVt cC9yZW5vL01ha2VmaWxlCTIwMDctMTAtMDIgMTc6MDY6MTguNjU4MzIwNzM4 ICsxMDAwCkBAIC0wLDAgKzEsMTkgQEAKKyMKKyMgQ29weXJpZ2h0IChjKSAy MDA3IFNpbGljb24gR3JhcGhpY3MsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2 ZWQuCisjCisKK1RPUERJUiA9IC4uCitpbmNsdWRlICQoVE9QRElSKS9pbmNs dWRlL2J1aWxkZGVmcworCitMVENPTU1BTkQgPSB4ZnNfcmVubworQ0ZJTEVT ID0geGZzX3Jlbm8uYworTExETElCUyA9ICQoTElCQVRUUikKKworZGVmYXVs dDogJChMVENPTU1BTkQpCisKK2luY2x1ZGUgJChCVUlMRFJVTEVTKQorCitp bnN0YWxsOiBkZWZhdWx0CisJJChJTlNUQUxMKSAtbSA3NTUgLWQgJChQS0df QklOX0RJUikKKwkkKExUSU5TVEFMTCkgLW0gNzU1ICQoTFRDT01NQU5EKSAk KFBLR19CSU5fRElSKQoraW5zdGFsbC1kZXY6Cgo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KeGZzZHVtcC9yZW5vL3hmc19yZW5vLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CgotLS0gYS94ZnNkdW1wL3Jlbm8v eGZzX3Jlbm8uYwkyMDA2LTA2LTE3IDAwOjU4OjI0LjAwMDAwMDAwMCArMTAw MAorKysgYi94ZnNkdW1wL3Jlbm8veGZzX3Jlbm8uYwkyMDA3LTEwLTAyIDE3 OjA1OjM4LjQwMzU1NjI2MCArMTAwMApAQCAtMCwwICsxLDE4NDEgQEAKKy8q CisgKiBDb3B5cmlnaHQgKGMpIDIwMDcgU2lsaWNvbiBHcmFwaGljcywgSW5j LgorICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd291 bGQgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgKiBJbmMuLCAgNTEgRnJh bmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAx ICBVU0EKKyAqLworCisvKgorICogeGZzX3Jlbm8gLSByZW51bWJlciA2NC1i aXQgaW5vZGVzCisgKgorICogeGZzX3Jlbm8gWy1mXSBbLW5dIFstcF0gWy1x XSBbLXZdIFstUCBzZWNvbmRzXSBwYXRoIC4uLgorICogeGZzX3Jlbm8gWy1y XSBwYXRoIC4uLgorICoKKyAqIFJlbnVtYmVycyBhbGwgaW5vZGVzID4gMzIg Yml0cyBpbnRvIDMyIGJpdCBzcGFjZS4gUmVxdWlyZXMgdGhlIGZpbGVzeXRl bQorICogdG8gYmUgbW91bnRlZCB3aXRoIGlub2RlMzIuCisgKgorICoJLWYJ CWZvcmNlIGNvbnZlcnNpb24gb24gYWxsIGlub2RlcyByYXRoZXIgdGhhbiBq dXN0CisgKgkJCXRob3NlIHdpdGggYSA2NGJpdCBpbm9kZSBudW1iZXIuCisg KgktbgkJbm90aGluZywgZG8gbm90IHJlbnVtYmVyIGlub2RlcworICoJLXAJ CXNob3cgcHJvZ3Jlc3Mgc3RhdHVzLgorICoJLXEJCXF1aWV0LCBkbyBub3Qg cmVwb3J0IHByb2dyZXNzLCBvbmx5IGVycm9ycy4KKyAqCS12CQl2ZXJib3Nl LCBtb3JlIC12J3MgbW9yZSB2ZXJib3NlLgorICoJLVAgc2Vjb25kcwlzZXQg dGhlIGludGVydmFsIGZvciB0aGUgcHJvZ3Jlc3Mgc3RhdHVzIGluIHNlY29u ZHMuCisgKgktcgkJcmVjb3ZlciBmcm9tIGFuIGludGVycnVwdGVkIHJ1bi4K KyAqLworCisjaW5jbHVkZSA8eGZzL3hmcy5oPgorCisjaW5jbHVkZSA8ZGly ZW50Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5o PgorI2luY2x1ZGUgPGZ0dy5oPgorI2luY2x1ZGUgPGxpYmdlbi5oPgorI2lu Y2x1ZGUgPG1hbGxvYy5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1 ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1 ZGUgPGF0dHIvYXR0cmlidXRlcy5oPgorI2luY2x1ZGUgPHhmcy94ZnNfZGZy YWcuaD4KKyNpbmNsdWRlIDx4ZnMveGZzX2ludW0uaD4KKworI2RlZmluZSBB VFRSQlVGU0laRQkxMDI0CisKKyNkZWZpbmUgU0NBTl9QSEFTRQkweDAwCisj ZGVmaW5lIERJUl9QSEFTRQkweDEwCS8qIG5vdGhpbmcgZG9uZSBvciBhbGwg ZG9uZSAqLworI2RlZmluZSBESVJfUEhBU0VfMQkweDExCS8qIHRhcmdldCBk aXIgY3JlYXRlZCAqLworI2RlZmluZSBESVJfUEhBU0VfMgkweDEyCS8qIHRl bXAgZGlyIGNyZWF0ZWQgKi8KKyNkZWZpbmUgRElSX1BIQVNFXzMJMHgxMwkv KiBhdHRyaWJ1dGVzIGJhY2tlZCB1cCB0byB0ZW1wICovCisjZGVmaW5lIERJ Ul9QSEFTRV80CTB4MTQJLyogZGlyZW50cyBtb3ZlZCB0byB0YXJnZXQgZGly ICovCisjZGVmaW5lIERJUl9QSEFTRV81CTB4MTUJLyogYXR0cmlidXRlcyBh cHBsaWVkIHRvIHRhcmdldCBkaXIgKi8KKyNkZWZpbmUgRElSX1BIQVNFXzYJ MHgxNgkvKiBzcmMgZGlyIHJlbW92ZWQgKi8KKyNkZWZpbmUgRElSX1BIQVNF XzcJMHgxNwkvKiB0ZW1wIGRpciByZW1vdmVkICovCisjZGVmaW5lIERJUl9Q SEFTRV9NQVgJMHgxNworI2RlZmluZSBGSUxFX1BIQVNFCTB4MjAJLyogbm90 aGluZyBkb25lIG9yIGFsbCBkb25lICovCisjZGVmaW5lIEZJTEVfUEhBU0Vf MQkweDIxCS8qIHRlbXAgZmlsZSBjcmVhdGVkICovCisjZGVmaW5lIEZJTEVf UEhBU0VfMgkweDIyCS8qIHN3YXBwZWQgZXh0ZW50cyAqLworI2RlZmluZSBG SUxFX1BIQVNFXzMJMHgyMwkvKiB1bmxpbmtlZCBzb3VyY2UgKi8KKyNkZWZp bmUgRklMRV9QSEFTRV80CTB4MjQJLyogcmVuYW1lZCB0ZW1wIHRvIHNvdXJj ZSBuYW1lICovCisjZGVmaW5lIEZJTEVfUEhBU0VfTUFYCTB4MjQKKworc3Rh dGljIHZvaWQgdXBkYXRlX3JlY292ZXJmaWxlKHZvaWQpOworI2RlZmluZSBT RVRfUEhBU0UoeCkJKGN1cl9waGFzZSA9IHgsIHVwZGF0ZV9yZWNvdmVyZmls ZSgpKQorCisjZGVmaW5lIExPR19FUlIJCTAKKyNkZWZpbmUgTE9HX05PUk1B TAkxCisjZGVmaW5lIExPR19JTkZPCTIKKyNkZWZpbmUgTE9HX0RFQlVHCTMK KyNkZWZpbmUgTE9HX05JVFRZCTQKKworI2RlZmluZSBOSF9CVUNLRVRTCTY1 NTM2CisjZGVmaW5lIE5IX0hBU0goaW5vKQkobm9kZWhhc2ggKyAoKGlubykg JSBOSF9CVUNLRVRTKSkKKwordHlwZWRlZiBzdHJ1Y3QgeworCXhmc19pbm9f dAlpbm87CisJaW50CQlmdHdfZmxhZ3M7CisJbmxpbmtfdAkJbnVtcGF0aHM7 CisJY2hhcgkJKipwYXRoczsKK30gYmlnbm9kZV90OworCit0eXBlZGVmIHN0 cnVjdCB7CisJYmlnbm9kZV90CSpub2RlczsKKwl1aW50NjRfdAlsaXN0bGVu OworCXVpbnQ2NF90CWxhc3Rub2RlOworfSBub2RlbGlzdF90OworCitzdGF0 aWMgY29uc3QgY2hhcgkqY21kX3ByZWZpeCA9ICJ4ZnNfcmVub18iOworCitz dGF0aWMgY2hhcgkJKnByb2duYW1lOworc3RhdGljIGludAkJbG9nX2xldmVs ID0gTE9HX05PUk1BTDsKK3N0YXRpYyBpbnQJCWZvcmNlX2FsbDsKK3N0YXRp YyBub2RlbGlzdF90CSpub2RlaGFzaDsKK3N0YXRpYyBpbnQJCXJlYWx1aWQ7 CitzdGF0aWMgdWludDY0X3QJCW51bWRpcm5vZGVzOworc3RhdGljIHVpbnQ2 NF90CQludW1maWxlbm9kZXM7CitzdGF0aWMgdWludDY0X3QJCW51bWRpcnNk b25lOworc3RhdGljIHVpbnQ2NF90CQludW1maWxlc2RvbmU7CitzdGF0aWMg aW50CQlwb2xsX2ludGVydmFsOworc3RhdGljIHRpbWVfdAkJc3RhcnR0aW1l Oworc3RhdGljIGJpZ25vZGVfdAkqY3VyX25vZGU7CitzdGF0aWMgY2hhcgkJ KmN1cl90YXJnZXQ7CitzdGF0aWMgY2hhcgkJKmN1cl90ZW1wOworc3RhdGlj IGludAkJY3VyX3BoYXNlOworc3RhdGljIGludAkJaGlnaGVzdF9udW1wYXRo czsKK3N0YXRpYyBjaGFyCQkqcmVjb3Zlcl9maWxlOworc3RhdGljIGludAkJ cmVjb3Zlcl9mZDsKK3N0YXRpYyB2b2xhdGlsZSBpbnQJcG9sbF9vdXRwdXQ7 CitzdGF0aWMgaW50CQlnbG9iYWxfcnZhbDsKKworLyoKKyAqIG1lc3NhZ2Ug aGFuZGxpbmcKKyAqLworc3RhdGljIHZvaWQKK2xvZ19tZXNzYWdlKAorCWlu dAkJbGV2ZWwsCisJY2hhcgkJKmZtdCwgLi4uKQoreworCWNoYXIJCWJ1Zlsx MDI0XTsKKwl2YV9saXN0CQlhcDsKKworCWlmIChsb2dfbGV2ZWwgPCBsZXZl bCkKKwkJcmV0dXJuOworCisJdmFfc3RhcnQoYXAsIGZtdCk7CisJdnNucHJp bnRmKGJ1ZiwgMTAyNCwgZm10LCBhcCk7CisJdmFfZW5kKGFwKTsKKworCXBy aW50ZigiJWMlczogJXNcbiIsIHBvbGxfb3V0cHV0ID8gJ1xuJyA6ICdccics IHByb2duYW1lLCBidWYpOworCXBvbGxfb3V0cHV0ID0gMDsKK30KKworc3Rh dGljIHZvaWQKK2Vycl9tZXNzYWdlKAorCWNoYXIJCSpmbXQsIC4uLikKK3sK KwljaGFyCQlidWZbMTAyNF07CisJdmFfbGlzdAkJYXA7CisKKwl2YV9zdGFy dChhcCwgZm10KTsKKwl2c25wcmludGYoYnVmLCAxMDI0LCBmbXQsIGFwKTsK Kwl2YV9lbmQoYXApOworCisJZnByaW50ZihzdGRlcnIsICIlYyVzOiAlc1xu IiwgcG9sbF9vdXRwdXQgPyAnXG4nIDogJ1xyJywgcHJvZ25hbWUsIGJ1Zik7 CisJcG9sbF9vdXRwdXQgPSAwOworfQorCitzdGF0aWMgdm9pZAorZXJyX25v bWVtKHZvaWQpCit7CisJZXJyX21lc3NhZ2UoXygiT3V0IG9mIG1lbW9yeSIp KTsKK30KKworc3RhdGljIHZvaWQKK2Vycl9vcGVuKAorCWNvbnN0IGNoYXIJ KnMpCit7CisJZXJyX21lc3NhZ2UoXygiQ2Fubm90IG9wZW4gJXM6ICVzIiks IHMsIHN0cmVycm9yKGVycm5vKSk7Cit9CisKK3N0YXRpYyB2b2lkCitlcnJf bm90X3hmcygKKwljb25zdCBjaGFyIAkqcykKK3sKKwllcnJfbWVzc2FnZShf KCIlcyBpcyBub3Qgb24gYW4gWEZTIGZpbGVzeXN0ZW0iKSwgcyk7Cit9CisK K3N0YXRpYyB2b2lkCitlcnJfc3RhdCgKKwljb25zdCBjaGFyCSpzKQorewor CWVycl9tZXNzYWdlKF8oIkNhbm5vdCBzdGF0ICVzOiAlc1xuIiksIHMsIHN0 cmVycm9yKGVycm5vKSk7Cit9CisKKy8qCisgKiB1c2FnZSBtZXNzYWdlCisg Ki8KK3N0YXRpYyB2b2lkCit1c2FnZSh2b2lkKQoreworCWZwcmludGYoc3Rk ZXJyLCBfKCIlcyBbLWZucHF2XSBbLVAgPGludGVydmFsPl0gWy1yXSA8cGF0 aD5cbiIpLAorCQkJcHJvZ25hbWUpOworCWV4aXQoMSk7Cit9CisKKworLyoK KyAqIFhGUyBpbnRlcmZhY2UgZnVuY3Rpb25zCisgKi8KKworc3RhdGljIGlu dAoreGZzX2J1bGtzdGF0X3NpbmdsZShpbnQgZmQsIHhmc19pbm9fdCAqbGFz dGlwLCB4ZnNfYnN0YXRfdCAqdWJ1ZmZlcikKK3sKKwl4ZnNfZnNvcF9idWxr cmVxX3QgIGJ1bGtyZXE7CisKKwlidWxrcmVxLmxhc3RpcCA9IChfX3U2NCAq KWxhc3RpcDsKKwlidWxrcmVxLmljb3VudCA9IDE7CisJYnVsa3JlcS51YnVm ZmVyID0gdWJ1ZmZlcjsKKwlidWxrcmVxLm9jb3VudCA9IE5VTEw7CisJcmV0 dXJuIGlvY3RsKGZkLCBYRlNfSU9DX0ZTQlVMS1NUQVRfU0lOR0xFLCAmYnVs a3JlcSk7Cit9CisKK3N0YXRpYyBpbnQKK3hmc19zd2FwZXh0KGludCBmZCwg eGZzX3N3YXBleHRfdCAqc3gpCit7CisJcmV0dXJuIGlvY3RsKGZkLCBYRlNf SU9DX1NXQVBFWFQsIHN4KTsKK30KKworc3RhdGljIGludAoreGZzX2dldHhh dHRyKGludCBmZCwgc3RydWN0IGZzeGF0dHIgKmF0dHIpCit7CisJcmV0dXJu IGlvY3RsKGZkLCBYRlNfSU9DX0ZTR0VUWEFUVFIsIGF0dHIpOworfQorCitz dGF0aWMgaW50Cit4ZnNfc2V0eGF0dHIoaW50IGZkLCBzdHJ1Y3QgZnN4YXR0 ciAqYXR0cikKK3sKKwlyZXR1cm4gaW9jdGwoZmQsIFhGU19JT0NfRlNTRVRY QVRUUiwgYXR0cik7Cit9CisKKy8qCisgKiBBIGhhc2ggdGFibGUgb2YgaW5v ZGUgbnVtYmVycyBhbmQgYXNzb2NpYXRlZCBwYXRocy4KKyAqLworc3RhdGlj IG5vZGVsaXN0X3QgKgoraW5pdF9ub2RlaGFzaCh2b2lkKQoreworCWludAkJ aTsKKworCW5vZGVoYXNoID0gY2FsbG9jKE5IX0JVQ0tFVFMsIHNpemVvZihu b2RlbGlzdF90KSk7CisJaWYgKG5vZGVoYXNoID09IE5VTEwpIHsKKwkJZXJy X25vbWVtKCk7CisJCXJldHVybiBOVUxMOworCX0KKworCWZvciAoaSA9IDA7 IGkgPCBOSF9CVUNLRVRTOyBpKyspIHsKKwkJbm9kZWhhc2hbaV0ubm9kZXMg PSBOVUxMOworCQlub2RlaGFzaFtpXS5sYXN0bm9kZSA9IDA7CisJCW5vZGVo YXNoW2ldLmxpc3RsZW4gPSAwOworCX0KKworCXJldHVybiBub2RlaGFzaDsK K30KKworc3RhdGljIHZvaWQKK2ZyZWVfbm9kZWhhc2godm9pZCkKK3sKKwlp bnQJCWksIGosIGs7CisKKwlmb3IgKGkgPSAwOyBpIDwgTkhfQlVDS0VUUzsg aSsrKSB7CisJCWJpZ25vZGVfdCAqbm9kZXMgPSBub2RlaGFzaFtpXS5ub2Rl czsKKworCQlmb3IgKGogPSAwOyBqIDwgbm9kZWhhc2hbaV0ubGFzdG5vZGU7 IGorKykgeworCQkJZm9yIChrID0gMDsgayA8IG5vZGVzW2pdLm51bXBhdGhz OyBrKyspIHsKKwkJCQlmcmVlKG5vZGVzW2pdLnBhdGhzW2tdKTsKKwkJCX0K KwkJCWZyZWUobm9kZXNbal0ucGF0aHMpOworCQl9CisKKwkJZnJlZShub2Rl cyk7CisJfQorCWZyZWUobm9kZWhhc2gpOworfQorCitzdGF0aWMgbmxpbmtf dAorYWRkX3BhdGgoCisJYmlnbm9kZV90CSpub2RlLAorCWNvbnN0IGNoYXIJ KnBhdGgpCit7CisJbm9kZS0+cGF0aHMgPSByZWFsbG9jKG5vZGUtPnBhdGhz LAorCQkJICAgICAgc2l6ZW9mKGNoYXIgKikgKiAobm9kZS0+bnVtcGF0aHMg KyAxKSk7CisJaWYgKG5vZGUtPnBhdGhzID09IE5VTEwpIHsKKwkJZXJyX25v bWVtKCk7CisJCWV4aXQoMSk7CisJfQorCisJbm9kZS0+cGF0aHNbbm9kZS0+ bnVtcGF0aHNdID0gc3RyZHVwKHBhdGgpOworCWlmIChub2RlLT5wYXRoc1tu b2RlLT5udW1wYXRoc10gPT0gTlVMTCkgeworCQllcnJfbm9tZW0oKTsKKwkJ ZXhpdCgxKTsKKwl9CisKKwlub2RlLT5udW1wYXRocysrOworCWlmIChub2Rl LT5udW1wYXRocyA+IGhpZ2hlc3RfbnVtcGF0aHMpCisJCWhpZ2hlc3RfbnVt cGF0aHMgPSBub2RlLT5udW1wYXRoczsKKworCXJldHVybiBub2RlLT5udW1w YXRoczsKK30KKworc3RhdGljIGJpZ25vZGVfdCAqCithZGRfbm9kZSgKKwlu b2RlbGlzdF90CSpsaXN0LAorCXhmc19pbm9fdAlpbm8sCisJaW50CQlmdHdf ZmxhZ3MsCisJY29uc3QgY2hhcgkqcGF0aCkKK3sKKwliaWdub2RlX3QJKm5v ZGU7CisKKwlpZiAobGlzdC0+bGFzdG5vZGUgPj0gbGlzdC0+bGlzdGxlbikg eworCQlsaXN0LT5saXN0bGVuICs9IDUwMDsKKwkJbGlzdC0+bm9kZXMgPSBy ZWFsbG9jKGxpc3QtPm5vZGVzLAorCQkJCQlzaXplb2YoYmlnbm9kZV90KSAq IGxpc3QtPmxpc3RsZW4pOworCQlpZiAobGlzdC0+bm9kZXMgPT0gTlVMTCkg eworCQkJZXJyX25vbWVtKCk7CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCX0K KworCW5vZGUgPSBsaXN0LT5ub2RlcyArIGxpc3QtPmxhc3Rub2RlOworCisJ bm9kZS0+aW5vID0gaW5vOworCW5vZGUtPmZ0d19mbGFncyA9IGZ0d19mbGFn czsKKwlub2RlLT5wYXRocyA9IE5VTEw7CisJbm9kZS0+bnVtcGF0aHMgPSAw OworCWFkZF9wYXRoKG5vZGUsIHBhdGgpOworCisJbGlzdC0+bGFzdG5vZGUr KzsKKworCXJldHVybiBub2RlOworfQorCitzdGF0aWMgYmlnbm9kZV90ICoK K2ZpbmRfbm9kZSgKKwl4ZnNfaW5vX3QJaW5vKQoreworCWludAkJaTsKKwlu b2RlbGlzdF90CSpub2RlbGlzdDsKKwliaWdub2RlX3QJKm5vZGVzOworCisJ bm9kZWxpc3QgPSBOSF9IQVNIKGlubyk7CisJbm9kZXMgPSBub2RlbGlzdC0+ bm9kZXM7CisKKwlmb3IoaSA9IDA7IGkgPCBub2RlbGlzdC0+bGFzdG5vZGU7 IGkrKykgeworCQlpZiAobm9kZXNbaV0uaW5vID09IGlubykgeworCQkJcmV0 dXJuICZub2Rlc1tpXTsKKwkJfQorCX0KKworCXJldHVybiBOVUxMOworfQor CitzdGF0aWMgYmlnbm9kZV90ICoKK2FkZF9ub2RlX3BhdGgoCisJeGZzX2lu b190CWlubywKKwlpbnQJCWZ0d19mbGFncywKKwljb25zdCBjaGFyCSpwYXRo KQoreworCW5vZGVsaXN0X3QJKm5vZGVsaXN0OworCWJpZ25vZGVfdAkqbm9k ZTsKKworCWxvZ19tZXNzYWdlKExPR19OSVRUWSwgImFkZF9ub2RlX3BhdGg6 IGlubyAlbGx1LCBwYXRoICVzIiwgaW5vLCBwYXRoKTsKKworCW5vZGUgPSBm aW5kX25vZGUoaW5vKTsKKwlpZiAobm9kZSA9PSBOVUxMKSB7CisJCW5vZGVs aXN0ID0gTkhfSEFTSChpbm8pOworCQlyZXR1cm4gYWRkX25vZGUobm9kZWxp c3QsIGlubywgZnR3X2ZsYWdzLCBwYXRoKTsKKwl9CisKKwlhZGRfcGF0aChu b2RlLCBwYXRoKTsKKwlyZXR1cm4gbm9kZTsKK30KKworc3RhdGljIHZvaWQK K2R1bXBfbm9kZSgKKwljaGFyCQkqbXNnLAorCWJpZ25vZGVfdAkqbm9kZSkK K3sKKwlpbnQJCWs7CisKKwlpZiAobG9nX2xldmVsIDwgTE9HX0RFQlVHKQor CQlyZXR1cm47CisKKwlsb2dfbWVzc2FnZShMT0dfREVCVUcsICIlczogJWxs dSAlbGx1ICVzIiwgbXNnLCBub2RlLT5pbm8sCisJCQlub2RlLT5udW1wYXRo cywgbm9kZS0+cGF0aHNbMF0pOworCisJZm9yIChrID0gMTsgayA8IG5vZGUt Pm51bXBhdGhzOyBrKyspCisJCWxvZ19tZXNzYWdlKExPR19ERUJVRywgIlx0 JXMiLCBub2RlLT5wYXRoc1trXSk7Cit9CisKK3N0YXRpYyB2b2lkCitkdW1w X25vZGVoYXNoKHZvaWQpCit7CisJaW50CQlpLCBqOworCisJaWYgKGxvZ19s ZXZlbCA8IExPR19OSVRUWSkKKwkJcmV0dXJuOworCisJZm9yIChpID0gMDsg aSA8IE5IX0JVQ0tFVFM7IGkrKykgeworCQliaWdub2RlX3QJKm5vZGVzID0g bm9kZWhhc2hbaV0ubm9kZXM7CisJCWZvciAoaiA9IDA7IGogPCBub2RlaGFz aFtpXS5sYXN0bm9kZTsgaisrLCBub2RlcysrKQorCQkJZHVtcF9ub2RlKCJu b2RlaGFzaCIsIG5vZGVzKTsKKwl9Cit9CisKK3N0YXRpYyBpbnQKK2Zvcl9h bGxfbm9kZXMoCisJaW50CQkoKmZuKShiaWdub2RlX3QgKm5vZGUpLAorCWlu dAkJZnR3X2ZsYWdzLAorCWludAkJcXVpdF9vbl9lcnJvcikKK3sKKwlpbnQJ CWk7CisJaW50CQlqOworCWludAkJcnZhbCA9IDA7CisKKwlmb3IgKGkgPSAw OyBpIDwgTkhfQlVDS0VUUzsgaSsrKSB7CisJCWJpZ25vZGVfdAkqbm9kZXMg PSBub2RlaGFzaFtpXS5ub2RlczsKKworCQlmb3IgKGogPSAwOyBqIDwgbm9k ZWhhc2hbaV0ubGFzdG5vZGU7IGorKywgbm9kZXMrKykgeworCQkJaWYgKG5v ZGVzLT5mdHdfZmxhZ3MgPT0gZnR3X2ZsYWdzKSB7CisJCQkJcnZhbCA9IGZu KG5vZGVzKTsKKwkJCQlpZiAocnZhbCAmJiBxdWl0X29uX2Vycm9yKQorCQkJ CQlnb3RvIHF1aXQ7CisJCQl9CisJCX0KKwl9CisKK3F1aXQ6CisJcmV0dXJu IHJ2YWw7Cit9CisKKy8qCisgKiBBZGRzIGFwcHJvcHJpYXRlIGZpbGVzIHRv IHRoZSBpbm9kZSBoYXNoIHRhYmxlCisgKi8KK3N0YXRpYyBpbnQKK25mdHdf YWRkbm9kZXMoCisJY29uc3QgY2hhcgkqcGF0aCwKKwljb25zdCBzdHJ1Y3Qg c3RhdDY0ICpzdCwKKwlpbnQJCWZsYWdzLAorCXN0cnVjdCBGVFcJKnNudGZ3 KQoreworCWlmIChzdC0+c3RfaW5vIDw9IFhGU19NQVhJTlVNQkVSXzMyICYm ICFmb3JjZV9hbGwpCisJCXJldHVybiAwOworCisJaWYgKGZsYWdzID09IEZU V19GKQorCQludW1maWxlbm9kZXMrKzsKKwllbHNlIGlmIChmbGFncyA9PSBG VFdfRCkKKwkJbnVtZGlybm9kZXMrKzsKKwllbHNlCisJCXJldHVybiAwOwor CisJYWRkX25vZGVfcGF0aChzdC0+c3RfaW5vLCBmbGFncywgcGF0aCk7CisK KwlyZXR1cm4gMDsKK30KKworLyoKKyAqIEF0dHJpYnV0ZSBjbG9uaW5nIGNv ZGUgLSBtb3N0IG9mIHRoaXMgaXMgaGVyZSBiZWNhdXNlIGF0dHJfY29weSBk b2VzIG5vdAorICogbGV0IHVzIHBpY2sgYW5kIGNob29zZSB3aGljaCBhdHRy aWJ1dGVzIHdlIHdhbnQgdG8gY29weS4KKyAqLworCithdHRyX211bHRpb3Bf dAlhdHRyX29wc1tBVFRSX01BWF9NVUxUSU9QU107CisKKy8qCisgKiBHcmFi IGF0dHJpYnV0ZXMgc3BlY2lmaWVkIGluIGF0dHJfb3BzIGZyb20gc291cmNl IGZpbGUgYW5kIHdyaXRlIHRoZW0KKyAqIG91dCBvbiB0aGUgZGVzdGluYXRp b24gZmlsZS4KKyAqLworCitzdGF0aWMgaW50CithdHRyX3JlcGxpY2F0ZShp bnQgc3JjX2ZkLCBpbnQgZHN0X2ZkLCBpbnQgY291bnQpCit7CisJaW50CWos IGs7CisKKwlpZiAoYXR0cl9tdWx0aWYoc3JjX2ZkLCBhdHRyX29wcywgY291 bnQsIDApIDwgMCkKKwkJcmV0dXJuIC0xOworCisJZm9yIChrID0gMDsgayA8 IGNvdW50OyBrKyspIHsKKwkJaWYgKGF0dHJfb3BzW2tdLmFtX2Vycm9yKSB7 CisJCQllcnJfbWVzc2FnZShfKCJFcnJvciAlZCBnZXR0aW5nIGF0dHJpYnV0 ZSIpLAorCQkJCQlhdHRyX29wc1trXS5hbV9lcnJvcik7CisJCQlicmVhazsK KwkJfQorCQlhdHRyX29wc1trXS5hbV9vcGNvZGUgPSBBVFRSX09QX1NFVDsK Kwl9CisJaWYgKGF0dHJfbXVsdGlmKGRzdF9mZCwgYXR0cl9vcHMsIGssIDAp IDwgMCkKKwkJZXJyX21lc3NhZ2UoIm9uIGF0dHJfbXVsdGlmIHNldCIpOwor CWZvciAoaiA9IDA7IGogPCBrOyBqKyspIHsKKwkJaWYgKGF0dHJfb3BzW2pd LmFtX2Vycm9yKSB7CisJCQllcnJfbWVzc2FnZShfKCJFcnJvciAlZCBzZXR0 aW5nIGF0dHJpYnV0ZSIpLAorCQkJCQlhdHRyX29wc1tqXS5hbV9lcnJvcik7 CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisKKwlyZXR1cm4gMDsKK30KKwor LyoKKyAqIENvcHkgYWxsIHRoZSBhdHRyaWJ1dGVzIHNwZWNpZmllZCBmcm9t IHNyYyB0byBkc3QuCisgKi8KKworc3RhdGljIGludAorYXR0cl9jbG9uZV9j b3B5KAorCWludAkJc3JjX2ZkLAorCWludAkJZHN0X2ZkLAorCWNoYXIJCSps aXN0X2J1ZiwKKwljaGFyCQkqYXR0cl9idWYsCisJaW50CQlidWZfbGVuLAor CWludAkJZmxhZ3MpCit7CisgICAgICAgIGF0dHJsaXN0X3QgCSphbGlzdDsK KyAgICAgICAgYXR0cmxpc3RfZW50X3QJKmF0dHI7CisgICAgICAgIGF0dHJs aXN0X2N1cnNvcl90IGN1cnNvcjsKKyAgICAgICAgaW50CQlzcGFjZSwgaSwg ajsKKwljaGFyCQkqcHRyOworCisgICAgICAgIGJ6ZXJvKChjaGFyICopJmN1 cnNvciwgc2l6ZW9mKGN1cnNvcikpOworICAgICAgICBkbyB7CisgICAgICAg ICAgICAgICAgaWYgKGF0dHJfbGlzdGYoc3JjX2ZkLCBsaXN0X2J1ZiwgQVRU UkJVRlNJWkUsIGZsYWdzLAorICAgICAgICAgICAgICAgIAkJJmN1cnNvcikg PCAwKSB7CisJCQllcnJfbWVzc2FnZSgib24gYXR0cl9saXN0ZiIpOworICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisJCX0KKworICAgICAg ICAgICAgICAgIGFsaXN0ID0gKGF0dHJsaXN0X3QgKilsaXN0X2J1ZjsKKwor CQlzcGFjZSA9IGJ1Zl9sZW47CisJCXB0ciA9IGF0dHJfYnVmOworICAgICAg ICAgICAgICAgIGZvciAoaiA9IDAsIGkgPSAwOyBpIDwgYWxpc3QtPmFsX2Nv dW50OyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIgPSBB VFRSX0VOVFJZKGxpc3RfYnVmLCBpKTsKKwkJCWlmIChzcGFjZSA8IGF0dHIt PmFfdmFsdWVsZW4pIHsKKwkJCQlhdHRyX3JlcGxpY2F0ZShzcmNfZmQsIGRz dF9mZCwgaik7CisJCQkJaiA9IDA7CisJCQkJc3BhY2UgPSBidWZfbGVuOwor CQkJCXB0ciA9IGF0dHJfYnVmOworCQkJfQorCQkJYXR0cl9vcHNbal0uYW1f b3Bjb2RlID0gQVRUUl9PUF9HRVQ7CisJCQlhdHRyX29wc1tqXS5hbV9hdHRy bmFtZSA9IGF0dHItPmFfbmFtZTsKKwkJCWF0dHJfb3BzW2pdLmFtX2F0dHJ2 YWx1ZSA9IHB0cjsKKwkJCWF0dHJfb3BzW2pdLmFtX2xlbmd0aCA9IChpbnQp IGF0dHItPmFfdmFsdWVsZW47CisJCQlhdHRyX29wc1tqXS5hbV9mbGFncyA9 IGZsYWdzOworCQkJYXR0cl9vcHNbal0uYW1fZXJyb3IgPSAwOworCQkJaisr OworCQkJcHRyICs9IGF0dHItPmFfdmFsdWVsZW47CisJCQlzcGFjZSAtPSBh dHRyLT5hX3ZhbHVlbGVuOworICAgICAgICAgICAgICAgIH0KKworCQlsb2df bWVzc2FnZShMT0dfTklUVFksICJjb3B5aW5nIGF0dHJpYnV0ZSAlZCIsIGkp OworCisJCWlmIChqKQorCQkJYXR0cl9yZXBsaWNhdGUoc3JjX2ZkLCBkc3Rf ZmQsIGopOworCisgICAgICAgIH0gd2hpbGUgKGFsaXN0LT5hbF9tb3JlKTsK KworICAgICAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY2xvbmVf YXR0cmlicyhpbnQgaW5fZmQsIGludCBvdXRfZmQpCit7CisJY2hhcglsaXN0 X2J1ZltBVFRSQlVGU0laRV07CisJY2hhcgkqYXR0cl9idWY7CisKKwlhdHRy X2J1ZiA9IG1hbGxvYyhBVFRSX01BWF9WQUxVRUxFTiAqIDIpOworCWF0dHJf Y2xvbmVfY29weShpbl9mZCwgb3V0X2ZkLCBsaXN0X2J1ZiwKKwkJCWF0dHJf YnVmLCBBVFRSX01BWF9WQUxVRUxFTiAqIDIsIDApOworCWF0dHJfY2xvbmVf Y29weShpbl9mZCwgb3V0X2ZkLCBsaXN0X2J1ZiwKKwkJCWF0dHJfYnVmLCBB VFRSX01BWF9WQUxVRUxFTiAqIDIsIEFUVFJfUk9PVCk7CisJYXR0cl9jbG9u ZV9jb3B5KGluX2ZkLCBvdXRfZmQsIGxpc3RfYnVmLAorCQkJYXR0cl9idWYs IEFUVFJfTUFYX1ZBTFVFTEVOICogMiwgQVRUUl9TRUNVUkUpOworCWZyZWUo YXR0cl9idWYpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50CitkdXBf YXR0cmlidXRlcygKKwljaGFyCQkqc291cmNlLAorCWludAkJc2ZkLAorCWNo YXIJCSp0YXJnZXQsCisJaW50CQl0ZmQpCit7CisJc3RydWN0IHN0YXQ2NAlz dDsKKwlzdHJ1Y3QgdGltZXZhbAl0dlsyXTsKKwlzdHJ1Y3QgZnN4YXR0cglm c3g7CisKKwlpZiAobHN0YXQ2NChzb3VyY2UsICZzdCkgPCAwKSB7CisJCWVy cl9zdGF0KHNvdXJjZSk7CisJCXJldHVybiAxOworCX0KKworCWlmICh4ZnNf Z2V0eGF0dHIoc2ZkLCAmZnN4KSA8IDApIHsKKwkJZXJyX3N0YXQoc291cmNl KTsKKwkJcmV0dXJuIDE7CisJfQorCisJdHZbMF0udHZfc2VjID0gc3Quc3Rf YXRpbS50dl9zZWM7CisJdHZbMF0udHZfdXNlYyA9IHN0LnN0X2F0aW0udHZf bnNlYyAvIDEwMDA7CisJdHZbMV0udHZfc2VjID0gc3Quc3RfbXRpbS50dl9z ZWM7CisJdHZbMV0udHZfdXNlYyA9IHN0LnN0X210aW0udHZfbnNlYyAvIDEw MDA7CisKKwlpZiAodXRpbWVzKHRhcmdldCwgdHYpIDwgMCkKKwkJZXJyX21l c3NhZ2UoXygiJXM6IENhbm5vdCB1cGRhdGUgdGFyZ2V0IHRpbWVzIiksIHRh cmdldCk7CisKKwlpZiAoY2hvd24odGFyZ2V0LCBzdC5zdF91aWQsIHN0LnN0 X2dpZCkgPCAwKSB7CisJCWVycl9tZXNzYWdlKF8oIiVzOiBDYW5ub3QgY2hh bmdlIHRhcmdldCBvd25lcnNoaXAgdG8gIgorCQkJInVpZCglZCkgZ2lkKCVk KSIpLCB0YXJnZXQsIHN0LnN0X3VpZCwgc3Quc3RfZ2lkKTsKKworCQlpZiAo Y2htb2QodGFyZ2V0LCBzdC5zdF9tb2RlICYgfihTX0lTVUlEIHwgU19JU0dJ RCkpIDwgMCkKKwkJCWVycl9tZXNzYWdlKF8oIiVzOiBDYW5ub3QgY2hhbmdl IHRhcmdldCBtb2RlICIKKwkJCQkJInRvICglbykiKSwgdGFyZ2V0LCBzdC5z dF9tb2RlKTsKKwl9IGVsc2UgaWYgKGNobW9kKHRhcmdldCwgc3Quc3RfbW9k ZSkgPCAwKQorCQllcnJfbWVzc2FnZShfKCIlczogQ2Fubm90IGNoYW5nZSB0 YXJnZXQgbW9kZSB0byAoJW8pIiksCisJCQkJdGFyZ2V0LCBzdC5zdF9tb2Rl KTsKKworCWlmICh4ZnNfc2V0eGF0dHIodGZkLCAmZnN4KSA8IDApCisJCWVy cl9tZXNzYWdlKF8oIiVzOiBDYW5uZXQgc2V0IHRhcmdldCBleHRlbmRlZCBh dHRyaWJ1dGVzIiksCisJCQkJdGFyZ2V0KTsKKworCXJldHVybiBjbG9uZV9h dHRyaWJzKHNmZCwgdGZkKTsKK30KKworc3RhdGljIGludAorbW92ZV9kaXJl bnRzKAorCWNoYXIJCSpzcmNwYXRoLAorCWNoYXIJCSp0YXJnZXRwYXRoLAor CWludAkJKm1vdmVfY291bnQpCit7CisJaW50CQlydmFsID0gMDsKKwlESVIJ CSpzcmNkOworCXN0cnVjdCBkaXJlbnQ2NAkqZHA7CisJY2hhcgkJc3JjbmFt ZVtQQVRIX01BWF07CisJY2hhcgkJdGFyZ2V0bmFtZVtQQVRIX01BWF07CisK KwkqbW92ZV9jb3VudCA9IDA7CisKKwlzcmNkID0gb3BlbmRpcihzcmNwYXRo KTsKKwlpZiAoc3JjZCA9PSBOVUxMKSB7CisJCWVycl9vcGVuKHNyY3BhdGgp OworCQlyZXR1cm4gMTsKKwl9CisKKwl3aGlsZSAoKGRwID0gcmVhZGRpcjY0 KHNyY2QpKSAhPSBOVUxMKSB7CisJCWlmIChkcC0+ZF9pbm8gPT0gMCB8fCAh c3RyY21wKGRwLT5kX25hbWUsICIuIikgfHwKKwkJCQkhc3RyY21wKGRwLT5k X25hbWUsICIuLiIpKQorCQkJY29udGludWU7CisKKwkJaWYgKHN0cmxlbihz cmNwYXRoKSArIDEgKyBzdHJsZW4oZHAtPmRfbmFtZSkgPj0KKwkJCQlzaXpl b2Yoc3JjbmFtZSkgLSAxKSB7CisKKwkJCWVycl9tZXNzYWdlKF8oIiVzLyVz OiBOYW1lIHRvbyBsb25nIiksIHNyY3BhdGgsCisJCQkJCWRwLT5kX25hbWUp OworCQkJcnZhbCA9IDE7CisJCQlnb3RvIHF1aXQ7CisJCX0KKworCQlzcHJp bnRmKHNyY25hbWUsICIlcy8lcyIsIHNyY3BhdGgsIGRwLT5kX25hbWUpOwor CQlzcHJpbnRmKHRhcmdldG5hbWUsICIlcy8lcyIsIHRhcmdldHBhdGgsIGRw LT5kX25hbWUpOworCisJCXJ2YWwgPSByZW5hbWUoc3JjbmFtZSwgdGFyZ2V0 bmFtZSk7CisJCWlmIChydmFsICE9IDApIHsKKwkJCWVycl9tZXNzYWdlKF8o ImZhaWxlZCB0byByZW5hbWU6IFwnJXNcJyB0byBcJyVzXCciKSwKKwkJCQkJ c3JjbmFtZSwgdGFyZ2V0bmFtZSk7CisJCQlnb3RvIHF1aXQ7CisJCX0KKwor CQlsb2dfbWVzc2FnZShMT0dfREVCVUcsICJyZW5hbWUgJXMgLT4gJXMiLCBz cmNuYW1lLCB0YXJnZXRuYW1lKTsKKworCQkoKm1vdmVfY291bnQpKys7CisJ fQorCitxdWl0OgorCWNsb3NlZGlyKHNyY2QpOworCXJldHVybiBydmFsOwor fQorCitzdGF0aWMgaW50Citwcm9jZXNzX2RpcigKKwliaWdub2RlX3QJKm5v ZGUpCit7CisJaW50CQlzZmQgPSAtMTsKKwlpbnQJCXRmZCA9IC0xOworCWlu dAkJdGFyZ2V0ZmQgPSAtMTsKKwlpbnQJCXJ2YWwgPSAwOworCWludAkJbW92 ZV9jb3VudCA9IDA7CisJY2hhcgkJKnNyY25hbWUgPSBOVUxMOworCWNoYXIJ CSpwbmFtZSA9IE5VTEw7CisJc3RydWN0IHN0YXQ2NAlzMTsKKwlzdHJ1Y3Qg ZnN4YXR0ciAgZnN4OworCWNoYXIJCXRhcmdldFtQQVRIX01BWF0gPSAiIjsK KworCVNFVF9QSEFTRShESVJfUEhBU0UpOworCisJZHVtcF9ub2RlKCJkaXJl Y3RvcnkiLCBub2RlKTsKKworCWN1cl9ub2RlID0gbm9kZTsKKwlzcmNuYW1l ID0gbm9kZS0+cGF0aHNbMF07CisKKwlpZiAoc3RhdDY0KHNyY25hbWUsICZz MSkgPCAwKSB7CisJCWlmIChlcnJubyAhPSBFTk9FTlQpIHsKKwkJCWVycl9z dGF0KHNyY25hbWUpOworCQkJZ2xvYmFsX3J2YWwgfD0gMjsKKwkJfQorCQln b3RvIHF1aXQ7CisJfQorCWlmIChzMS5zdF9pbm8gPD0gWEZTX01BWElOVU1C RVJfMzIgJiYgIWZvcmNlX2FsbCkgeworCQkvKgorCQkgKiBUaGlzIGRpcmVj dG9yeSBoYXMgYWxyZWFkeSBjaGFuZ2VkIGlubydzLCBwcm9iYWJseSBkdWUK KwkJICogdG8gYmVpbmcgbW92ZWQgZHVyaW5nIHByb2Nlc3Npbmcgb2YgYSBw YXJlbnQgZGlyZWN0b3J5LgorCQkgKi8KKwkJbG9nX21lc3NhZ2UoTE9HX0RF QlVHLCAicHJvY2Vzc19kaXI6IHNraXBwaW5nICVzIiwgc3JjbmFtZSk7CisJ CWdvdG8gcXVpdDsKKwl9CisKKwlydmFsID0gMTsKKworCXNmZCA9IG9wZW4o c3JjbmFtZSwgT19SRE9OTFkpOworCWlmIChzZmQgPCAwKSB7CisJCWVycl9v cGVuKHNyY25hbWUpOworCQlnb3RvIHF1aXQ7CisJfQorCisJaWYgKCFwbGF0 Zm9ybV90ZXN0X3hmc19mZChzZmQpKSB7CisJCWVycl9ub3RfeGZzKHNyY25h bWUpOworCQlnb3RvIHF1aXQ7CisJfQorCisJaWYgKHhmc19nZXR4YXR0cihz ZmQsICZmc3gpIDwgMCkgeworCQllcnJfbWVzc2FnZShfKCJmYWlsZWQgdG8g Z2V0IGlub2RlIGF0dHJzOiAlcyIpLCBzcmNuYW1lKTsKKwkJZ290byBxdWl0 OworCX0KKwlpZiAoZnN4LmZzeF94ZmxhZ3MgJiAoWEZTX1hGTEFHX0lNTVVU QUJMRSB8IFhGU19YRkxBR19BUFBFTkQpKSB7CisJCWVycl9tZXNzYWdlKF8o IiVzOiBpbW11dGFibGUvYXBwZW5kLCBpZ25vcmluZyIpLCBzcmNuYW1lKTsK KwkJZ2xvYmFsX3J2YWwgfD0gMjsKKwkJcnZhbCA9IDA7CisJCWdvdG8gcXVp dDsKKwl9CisKKwkvKiBta2RpciBwYXJlbnQvdGFyZ2V0ICovCisJcG5hbWUg PSBzdHJkdXAoc3JjbmFtZSk7CisJaWYgKHBuYW1lID09IE5VTEwpIHsKKwkJ ZXJyX25vbWVtKCk7CisJCWdvdG8gcXVpdDsKKwl9CisJZGlybmFtZShwbmFt ZSk7CisJc3ByaW50Zih0YXJnZXQsICIlcy8lc1hYWFhYWCIsIHBuYW1lLCBj bWRfcHJlZml4KTsKKwlpZiAobWtkdGVtcCh0YXJnZXQpID09IE5VTEwpIHsK KwkJZXJyX21lc3NhZ2UoXygiVW5hYmxlIHRvIGNyZWF0ZSBkaXJlY3Rvcnkg Y29weTogJXMiKSwgc3JjbmFtZSk7CisJCWdvdG8gcXVpdDsKKwl9CisJU0VU X1BIQVNFKERJUl9QSEFTRV8xKTsKKworCWN1cl90YXJnZXQgPSBzdHJkdXAo dGFyZ2V0KTsKKwlpZiAoIWN1cl90YXJnZXQpIHsKKwkJZXJyX25vbWVtKCk7 CisJCWdvdG8gcXVpdDsKKwl9CisKKwlzcHJpbnRmKHRhcmdldCwgIiVzLyVz WFhYWFhYIiwgcG5hbWUsIGNtZF9wcmVmaXgpOworCWlmIChta2R0ZW1wKHRh cmdldCkgPT0gTlVMTCkgeworCQllcnJfbWVzc2FnZShfKCJ1bmFibGUgdG8g Y3JlYXRlIHRtcCBkaXJlY3RvcnkgY29weSIpKTsKKwkJZ290byBxdWl0Owor CX0KKwlTRVRfUEhBU0UoRElSX1BIQVNFXzIpOworCisJY3VyX3RlbXAgPSBz dHJkdXAodGFyZ2V0KTsKKwlpZiAoIWN1cl90ZW1wKSB7CisJCWVycl9ub21l bSgpOworCQlnb3RvIHF1aXQ7CisJfQorCisJdGZkID0gb3BlbihjdXJfdGVt cCwgT19SRE9OTFkpOworCWlmICh0ZmQgPCAwKSB7CisJCWVycl9vcGVuKGN1 cl90ZW1wKTsKKwkJZ290byBxdWl0OworCX0KKworCXRhcmdldGZkID0gb3Bl bihjdXJfdGFyZ2V0LCBPX1JET05MWSk7CisJaWYgKHRmZCA8IDApIHsKKwkJ ZXJyX29wZW4oY3VyX3RhcmdldCk7CisJCWdvdG8gcXVpdDsKKwl9CisKKwor CS8qIGNvcHkgdGltZXN0YW1wcywgYXR0cmlicyBhbmQgRUFzLCB0byBjdXJf dGVtcCAqLworCXJ2YWwgPSBkdXBfYXR0cmlidXRlcyhzcmNuYW1lLCBzZmQs IGN1cl90ZW1wLCB0ZmQpOworCWlmIChydmFsICE9IDApIHsKKwkJZXJyX21l c3NhZ2UoXygidW5hYmxlIHRvIGR1cGxpY2F0ZSBkaXJlY3RvcnkgYXR0cmli dXRlczogJXMiKSwKKwkJCSAgICBzcmNuYW1lKTsKKwkJZ290byBxdWl0X3Vu bGluazsKKwl9CisKKwlTRVRfUEhBU0UoRElSX1BIQVNFXzMpOworCisJLyog bW92ZSBzcmMgZGlyZW50cyB0byBjdXJfdGFyZ2V0ICh0aGlzIGNoYW5nZXMg dGltZXN0YW1wcyBvbiBzcmMpICovCisJcnZhbCA9IG1vdmVfZGlyZW50cyhz cmNuYW1lLCBjdXJfdGFyZ2V0LCAmbW92ZV9jb3VudCk7CisJaWYgKHJ2YWwg IT0gMCkgeworCQllcnJfbWVzc2FnZShfKCJ1bmFibGUgdG8gbW92ZSBkaXJl Y3RvcnkgY29udGVudHM6ICVzIHRvICVzIiksCisJCQkJc3JjbmFtZSwgY3Vy X3RhcmdldCk7CisJCS8qIHVoIG9oLCBtb3ZlIGV2ZXJ5dGhpbmcgYmFjay4u LiAqLworCQlpZiAobW92ZV9jb3VudCA+IDApCisJCQlnb3RvIHF1aXRfdW5k bzsKKwl9CisKKwlTRVRfUEhBU0UoRElSX1BIQVNFXzQpOworCisJLyogY29w eSB0aW1lc3RhbXBzLCBhdHRyaWJzIGFuZCBFQXMgZnJvbSBjdXJfdGVtcCB0 byBjdXJfdGFyZ2V0ICovCisJcnZhbCA9IGR1cF9hdHRyaWJ1dGVzKGN1cl90 ZW1wLCB0ZmQsIGN1cl90YXJnZXQsIHRhcmdldGZkKTsKKwlpZiAocnZhbCAh PSAwKSB7CisJCWVycl9tZXNzYWdlKF8oInVuYWJsZSB0byBkdXBsaWNhdGUg ZGlyZWN0b3J5IGF0dHJpYnV0ZXM6ICVzIiksCisJCQkJY3VyX3RlbXApOwor CQlnb3RvIHF1aXRfdW5saW5rOworCX0KKworCVNFVF9QSEFTRShESVJfUEhB U0VfNSk7CisKKwkvKiBybWRpciBzcmMgKi8KKwlydmFsID0gcm1kaXIoc3Jj bmFtZSk7CisJaWYgKHJ2YWwgIT0gMCkgeworCQllcnJfbWVzc2FnZShfKCJ1 bmFibGUgdG8gcmVtb3ZlIGRpcmVjdG9yeTogJXMiKSwgc3JjbmFtZSk7CisJ CWdvdG8gcXVpdF91bmRvOworCX0KKworCVNFVF9QSEFTRShESVJfUEhBU0Vf Nik7CisKKwlydmFsID0gcm1kaXIoY3VyX3RlbXApOworCWlmIChydmFsICE9 IDApCisJCWVycl9tZXNzYWdlKF8oInVuYWJsZSB0byByZW1vdmUgdG1wIGRp cmVjdG9yeTogJXMiKSwgY3VyX3RlbXApOworCisJU0VUX1BIQVNFKERJUl9Q SEFTRV83KTsKKworCS8qIHJlbmFtZSBjdXJfdGFyZ2V0IHNyYyAqLworCXJ2 YWwgPSByZW5hbWUoY3VyX3RhcmdldCwgc3JjbmFtZSk7CisJaWYgKHJ2YWwg IT0gMCkgeworCQkvKgorCQkgKiB3ZSBjYW4ndCBhYm9ydCBzaW5jZSB0aGUg c3JjIGRpciBpcyBub3cgZ29uZS4KKwkJICogbGV0IHRoZSBhZG1pbiBjbGVh biB0aGlzIG9uZSB1cAorCQkgKi8KKwkJZXJyX21lc3NhZ2UoXygidW5hYmxl IHRvIHJlbmFtZSBkaXJlY3Rvcnk6ICVzIHRvICVzIiksCisJCQkJY3VyX3Rh cmdldCwgc3JjbmFtZSk7CisJfQorCWdvdG8gcXVpdDsKKworIHF1aXRfdW5k bzoKKwlpZiAobW92ZV9kaXJlbnRzKGN1cl90YXJnZXQsIHNyY25hbWUsICZt b3ZlX2NvdW50KSAhPSAwKSB7CisJCS8qIG9oLCBkZWFyIGxvcmQuLi4gbGV0 IHRoZSBhZG1pbiBjbGVhbiB0aGlzIG9uZSB1cCAqLworCQllcnJfbWVzc2Fn ZShfKCJ1bmFibGUgdG8gbW92ZSBkaXJlY3RvcnkgY29udGVudHMgYmFjazog JXMgdG8gJXMiKSwKKwkJCQljdXJfdGFyZ2V0LCBzcmNuYW1lKTsKKwkJZ290 byBxdWl0OworCX0KKwlTRVRfUEhBU0UoRElSX1BIQVNFXzMpOworCisgcXVp dF91bmxpbms6CisJcm1kaXIoY3VyX3RhcmdldCk7CisJcm1kaXIoY3VyX3Rl bXApOworCisgcXVpdDoKKworCVNFVF9QSEFTRShESVJfUEhBU0UpOworCisJ aWYgKHNmZCA+PSAwKQorCQljbG9zZShzZmQpOworCWlmICh0ZmQgPj0gMCkK KwkJY2xvc2UodGZkKTsKKwlpZiAodGFyZ2V0ZmQgPj0gMCkKKwkJY2xvc2Uo dGFyZ2V0ZmQpOworCisJZnJlZShwbmFtZSk7CisJZnJlZShjdXJfdGFyZ2V0 KTsKKwlmcmVlKGN1cl90ZW1wKTsKKworCWN1cl90YXJnZXQgPSBOVUxMOwor CWN1cl90ZW1wID0gTlVMTDsKKwljdXJfbm9kZSA9IE5VTEw7CisJbnVtZGly c2RvbmUrKzsKKwlyZXR1cm4gcnZhbDsKK30KKworaW50Citwcm9jZXNzX2Zp bGUoYmlnbm9kZV90ICpub2RlKQoreworCWludAkJc2ZkID0gLTE7CisJaW50 CQl0ZmQgPSAtMTsKKwlpbnQJCWkgPSAwOworCWludAkJcnZhbCA9IDA7CisJ c3RydWN0IHN0YXQ2NAlzMTsKKwljaGFyCQkqc3JjbmFtZSA9IE5VTEw7CisJ Y2hhcgkJKnBuYW1lID0gTlVMTDsKKwl4ZnNfc3dhcGV4dF90CXN4OworCXhm c19ic3RhdF90CWJzdGF0YnVmOworCXN0cnVjdCBmc3hhdHRyICBmc3g7CisJ Y2hhcgkJdGFyZ2V0W1BBVEhfTUFYXSA9ICIiOworCisJU0VUX1BIQVNFKEZJ TEVfUEhBU0UpOworCisJZHVtcF9ub2RlKCJmaWxlIiwgbm9kZSk7CisKKwlj dXJfbm9kZSA9IG5vZGU7CisJc3JjbmFtZSA9IG5vZGUtPnBhdGhzWzBdOwor CisJYnplcm8oJnMxLCBzaXplb2YoczEpKTsKKwliemVybygmYnN0YXRidWYs IHNpemVvZihic3RhdGJ1ZikpOworCWJ6ZXJvKCZzeCwgc2l6ZW9mKHN4KSk7 CisKKwlpZiAoc3RhdDY0KHNyY25hbWUsICZzMSkgPCAwKSB7CisJCWlmIChl cnJubyAhPSBFTk9FTlQpIHsKKwkJCWVycl9zdGF0KHNyY25hbWUpOworCQkJ Z2xvYmFsX3J2YWwgfD0gMjsKKwkJfQorCQlnb3RvIHF1aXQ7CisJfQorCWlm IChzMS5zdF9pbm8gPD0gWEZTX01BWElOVU1CRVJfMzIgJiYgIWZvcmNlX2Fs bCkKKwkJLyogdGhpcyBmaWxlIGhhcyBjaGFuZ2VkLCBhbmQgbm8gbG9uZ2Vy IG5lZWRzIHByb2Nlc3NpbmcgKi8KKwkJZ290byBxdWl0OworCisJLyogb3Bl biBhbmQgc3luYyBzb3VyY2UgKi8KKwlzZmQgPSBvcGVuKHNyY25hbWUsIE9f UkRXUiB8IE9fRElSRUNUKTsKKwlpZiAoc2ZkIDwgMCkgeworCQllcnJfb3Bl bihzcmNuYW1lKTsKKwkJcnZhbCA9IDE7CisJCWdvdG8gcXVpdDsKKwl9CisJ aWYgKCFwbGF0Zm9ybV90ZXN0X3hmc19mZChzZmQpKSB7CisJCWVycl9ub3Rf eGZzKHNyY25hbWUpOworCQlydmFsID0gMTsKKwkJZ290byBxdWl0OworCX0K KwlpZiAoZnN5bmMoc2ZkKSA8IDApIHsKKwkJZXJyX21lc3NhZ2UoXygic3lu YyBmYWlsZWQ6ICVzOiAlcyIpLAorCQkJCXNyY25hbWUsIHN0cmVycm9yKGVy cm5vKSk7CisJCXJ2YWwgPSAxOworCQlnb3RvIHF1aXQ7CisJfQorCisKKwkv KgorCSAqIENoZWNrIGlmIGEgbWFuZGF0b3J5IGxvY2sgaXMgc2V0IG9uIHRo ZSBmaWxlIHRvIHRyeSBhbmQKKwkgKiBhdm9pZCBibG9ja2luZyBpbmRlZmlu aXRlbHkgb24gdGhlIHJlYWRzIGxhdGVyLiBOb3RlIHRoYXQKKwkgKiBzb21l b25lIGNvdWxkIHN0aWxsIHNldCBhIG1hbmRhdG9yeSBsb2NrIGFmdGVyIHRo aXMgY2hlY2sKKwkgKiBidXQgYmVmb3JlIGFsbCByZWFkcyBoYXZlIGNvbXBs ZXRlZCB0byBibG9jayB4ZnNfcmVubyByZWFkcy4KKwkgKiBUaGlzIGNoYW5n ZSBqdXN0IGNsb3NlcyB0aGUgd2luZG93IGEgYml0LgorCSAqLworCWlmICgo czEuc3RfbW9kZSAmIFNfSVNHSUQpICYmICEoczEuc3RfbW9kZSAmIFNfSVhH UlApKSB7CisJCXN0cnVjdCBmbG9jayBmbDsKKworCQlmbC5sX3R5cGUgPSBG X1JETENLOworCQlmbC5sX3doZW5jZSA9IFNFRUtfU0VUOworCQlmbC5sX3N0 YXJ0ID0gKG9mZl90KTA7CisJCWZsLmxfbGVuID0gMDsKKwkJaWYgKGZjbnRs KHNmZCwgRl9HRVRMSywgJmZsKSA8IDAgKSB7CisJCQlpZiAobG9nX2xldmVs ID49IExPR19ERUJVRykKKwkJCQllcnJfbWVzc2FnZSgibG9ja2luZyBjaGVj ayBmYWlsZWQ6ICVzIiwKKwkJCQkJCXNyY25hbWUpOworCQkJZ2xvYmFsX3J2 YWwgfD0gMjsKKwkJCWdvdG8gcXVpdDsKKwkJfQorCQlpZiAoZmwubF90eXBl ICE9IEZfVU5MQ0spIHsKKwkJCWlmIChsb2dfbGV2ZWwgPj0gTE9HX0RFQlVH KQorCQkJCWVycl9tZXNzYWdlKCJtYW5kYXRvcnkgbG9jazogJXM6IGlnbm9y aW5nIiwKKwkJCQkJCXNyY25hbWUpOworCQkJZ2xvYmFsX3J2YWwgfD0gMjsK KwkJCWdvdG8gcXVpdDsKKwkJfQorCX0KKworCWlmICh4ZnNfZ2V0eGF0dHIo c2ZkLCAmZnN4KSA8IDApIHsKKwkJZXJyX21lc3NhZ2UoXygiZmFpbGVkIHRv IGdldCBpbm9kZSBhdHRyczogJXMiKSwgc3JjbmFtZSk7CisJCXJ2YWwgPSAx OworCQlnb3RvIHF1aXQ7CisJfQorCWlmIChmc3guZnN4X3hmbGFncyAmIChY RlNfWEZMQUdfSU1NVVRBQkxFIHwgWEZTX1hGTEFHX0FQUEVORCkpIHsKKwkJ ZXJyX21lc3NhZ2UoXygiJXM6IGltbXV0YWJsZS9hcHBlbmQsIGlnbm9yaW5n IiksIHNyY25hbWUpOworCQlnbG9iYWxfcnZhbCB8PSAyOworCQlnb3RvIHF1 aXQ7CisJfQorCisJcnZhbCA9IDE7CisKKwlpZiAocmVhbHVpZCAhPSAwICYm IHJlYWx1aWQgIT0gczEuc3RfdWlkKSB7CisJCWVycm5vID0gRUFDQ0VTOwor CQllcnJfb3BlbihzcmNuYW1lKTsKKwkJZ290byBxdWl0OworCX0KKworCS8q IGNyZWF0IHRhcmdldCAqLworCXBuYW1lID0gc3RyZHVwKHNyY25hbWUpOwor CWlmIChwbmFtZSA9PSBOVUxMKSB7CisJCWVycl9ub21lbSgpOworCQlnb3Rv IHF1aXQ7CisJfQorCWRpcm5hbWUocG5hbWUpOworCXNwcmludGYodGFyZ2V0 LCAiJXMvJXNYWFhYWFgiLCBwbmFtZSwgY21kX3ByZWZpeCk7CisJdGZkID0g bWtzdGVtcCh0YXJnZXQpOworCWlmICh0ZmQgPCAwKSB7CisJCWVycl9tZXNz YWdlKCJ1bmFibGUgdG8gY3JlYXRlIGZpbGUgY29weSIpOworCQlnb3RvIHF1 aXQ7CisJfQorCWN1cl90YXJnZXQgPSBzdHJkdXAodGFyZ2V0KTsKKwlpZiAo Y3VyX3RhcmdldCA9PSBOVUxMKSB7CisJCWVycl9ub21lbSgpOworCQlnb3Rv IHF1aXQ7CisJfQorCisJU0VUX1BIQVNFKEZJTEVfUEhBU0VfMSk7CisKKwkv KiBTZXR1cCBkaXJlY3QgSS9PICovCisJaWYgKGZjbnRsKHRmZCwgRl9TRVRG TCwgT19ESVJFQ1QpIDwgMCApIHsKKwkJZXJyX21lc3NhZ2UoXygiY291bGQg bm90IHNldCBPX0RJUkVDVCBmb3IgJXMgb24gdG1wOiAlcyIpLAorCQkJCXNy Y25hbWUsIHRhcmdldCk7CisJCXVubGluayh0YXJnZXQpOworCQlnb3RvIHF1 aXQ7CisJfQorCisJLyogY29weSBhdHRyaWJzICYgRUFzIHRvIHRhcmdldCAq LworCWlmIChkdXBfYXR0cmlidXRlcyhzcmNuYW1lLCBzZmQsIHRhcmdldCwg dGZkKSAhPSAwKSB7CisJCWVycl9tZXNzYWdlKF8oInVuYWJsZSB0byBkdXBs aWNhdGUgZmlsZSBhdHRyaWJ1dGVzOiAlcyIpLAorCQkJCXNyY25hbWUpOwor CQl1bmxpbmsodGFyZ2V0KTsKKwkJZ290byBxdWl0OworCX0KKworCWlmICh4 ZnNfYnVsa3N0YXRfc2luZ2xlKHNmZCwgJnMxLnN0X2lubywgJmJzdGF0YnVm KSA8IDApIHsKKwkJZXJyX21lc3NhZ2UoXygidW5hYmxlIHRvIGJ1bGtzdGF0 IHNvdXJjZSBmaWxlOiAlcyIpLAorCQkJCXNyY25hbWUpOworCQl1bmxpbmso dGFyZ2V0KTsKKwkJZ290byBxdWl0OworCX0KKworCWlmIChic3RhdGJ1Zi5i c19pbm8gIT0gczEuc3RfaW5vKSB7CisJCWVycl9tZXNzYWdlKF8oImJ1bGtz dGF0IG9mIHNvdXJjZSBmaWxlIHJldHVybmVkIHdyb25nIGlub2RlOiAlcyIp LAorCQkJCXNyY25hbWUpOworCQl1bmxpbmsodGFyZ2V0KTsKKwkJZ290byBx dWl0OworCX0KKworCWZ0cnVuY2F0ZTY0KHRmZCwgYnN0YXRidWYuYnNfc2l6 ZSk7CisKKwkvKiBzd2FwZXh0ZW50cyBzcmMgdGFyZ2V0ICovCisJc3guc3hf c3RhdCAgICAgPSBic3RhdGJ1ZjsgLyogc3RydWN0IGNvcHkgKi8KKwlzeC5z eF92ZXJzaW9uICA9IFhGU19TWF9WRVJTSU9OOworCXN4LnN4X2ZkdGFyZ2V0 ID0gc2ZkOworCXN4LnN4X2ZkdG1wICAgID0gdGZkOworCXN4LnN4X29mZnNl dCAgID0gMDsKKwlzeC5zeF9sZW5ndGggICA9IGJzdGF0YnVmLmJzX3NpemU7 CisKKwkvKiBTd2FwIHRoZSBleHRlbnRzICovCisJcnZhbCA9IHhmc19zd2Fw ZXh0KHNmZCwgJnN4KTsKKwlpZiAocnZhbCA8IDApIHsKKwkJaWYgKGxvZ19s ZXZlbCA+PSBMT0dfREVCVUcpIHsKKwkJCXN3aXRjaCAoZXJybm8pIHsKKwkJ CWNhc2UgRU5PVFNVUDoKKwkJCQllcnJfbWVzc2FnZSgiJXM6IGZpbGUgdHlw ZSBub3Qgc3VwcG9ydGVkIiwKKwkJCQkJc3JjbmFtZSk7CisJCQkJYnJlYWs7 CisJCQljYXNlIEVGQVVMVDoKKwkJCQkvKiBUaGUgZmlsZSBoYXMgY2hhbmdl ZCBzaW5jZSB3ZSBzdGFydGVkIHRoZSBjb3B5ICovCisJCQkJZXJyX21lc3Nh Z2UoIiVzOiBmaWxlIG1vZGlmaWVkLCAiCisJCQkJCSAiaW5vZGUgcmVudW1i ZXIgYWJvcnRlZDogJWxkIiwKKwkJCQkJIHNyY25hbWUsIGJzdGF0YnVmLmJz X3NpemUpOworCQkJCWJyZWFrOworCQkJY2FzZSBFQlVTWToKKwkJCQkvKiBU aW1lc3RhbXAgaGFzIGNoYW5nZWQgb3IgbW1hcCdlZCBmaWxlICovCisJCQkJ ZXJyX21lc3NhZ2UoIiVzOiBmaWxlIGJ1c3kiLCBzcmNuYW1lKTsKKwkJCQli cmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZXJyX21lc3NhZ2UoXygiU3dhcCBl eHRlbnRzIGZhaWxlZDogJXM6ICVzIiksCisJCQkJCXNyY25hbWUsIHN0cmVy cm9yKGVycm5vKSk7CisJCQkJYnJlYWs7CisJCQl9CisJCX0gZWxzZQorCQkJ ZXJyX21lc3NhZ2UoXygiU3dhcCBleHRlbnRzIGZhaWxlZDogJXM6ICVzIiks CisJCQkJCXNyY25hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCWdvdG8gcXVp dDsKKwl9CisKKwlpZiAoYnN0YXRidWYuYnNfZG1ldm1hc2sgfCBic3RhdGJ1 Zi5ic19kbXN0YXRlKSB7CisJCXN0cnVjdCBmc2RtaWRhdGEgZnNzZXRkbTsK KworCQkvKiBTZXQgdGhlIERNQVBJIEZpZWxkcy4gKi8KKwkJZnNzZXRkbS5m c2RfZG1ldm1hc2sgPSBic3RhdGJ1Zi5ic19kbWV2bWFzazsKKwkJZnNzZXRk bS5mc2RfcGFkZGluZyA9IDA7CisJCWZzc2V0ZG0uZnNkX2Rtc3RhdGUgPSBi c3RhdGJ1Zi5ic19kbXN0YXRlOworCisJCWlmIChpb2N0bCh0ZmQsIFhGU19J T0NfRlNTRVRETSwgKHZvaWQgKikmZnNzZXRkbSApIDwgMCkKKwkJCWVycl9t ZXNzYWdlKF8oImF0dGVtcHQgdG8gc2V0IERNSSBhdHRyaWJ1dGVzICIKKwkJ CQkJIm9mICVzIGZhaWxlZCIpLCB0YXJnZXQpOworCX0KKworCVNFVF9QSEFT RShGSUxFX1BIQVNFXzIpOworCisJLyogdW5saW5rIHNyYyAqLworCXJ2YWwg PSB1bmxpbmsoc3JjbmFtZSk7CisJaWYgKHJ2YWwgIT0gMCkgeworCQllcnJf bWVzc2FnZShfKCJ1bmFibGUgdG8gcmVtb3ZlIGZpbGU6ICVzIiksIHNyY25h bWUpOworCQlnb3RvIHF1aXQ7CisJfQorCisJU0VUX1BIQVNFKEZJTEVfUEhB U0VfMyk7CisKKwkvKiByZW5hbWUgdGFyZ2V0IHNyYyAqLworCXJ2YWwgPSBy ZW5hbWUodGFyZ2V0LCBzcmNuYW1lKTsKKwlpZiAocnZhbCAhPSAwKSB7CisJ CS8qCisJCSAqIHdlIGNhbid0IGFib3J0IHNpbmNlIHRoZSBzcmMgZmlsZSBp cyBub3cgZ29uZS4KKwkJICogbGV0IHRoZSBhZG1pbiBjbGVhbiB0aGlzIG9u ZSB1cAorCQkgKi8KKwkJZXJyX21lc3NhZ2UoXygidW5hYmxlIHRvIHJlbmFt ZSBmaWxlOiAlcyB0byAlcyIpLAorCQkJCXRhcmdldCwgc3JjbmFtZSk7CisJ CWdvdG8gcXVpdDsKKwl9CisKKwlTRVRfUEhBU0UoRklMRV9QSEFTRV80KTsK KworCS8qIGZvciBlYWNoIGhhcmRsaW5rLCB1bmxpbmsgYW5kIGNyZWF0IHBv aW50aW5nIHRvIHRhcmdldCAqLworCWZvciAoaSA9IDE7IGkgPCBub2RlLT5u dW1wYXRoczsgaSsrKSB7CisJCS8qIHVubGluayBzcmMgKi8KKwkJcnZhbCA9 IHVubGluayhub2RlLT5wYXRoc1tpXSk7CisJCWlmIChydmFsICE9IDApIHsK KwkJCWVycl9tZXNzYWdlKF8oInVuYWJsZSB0byByZW1vdmUgZmlsZTogJXMi KSwKKwkJCQkgICAgICAgbm9kZS0+cGF0aHNbaV0pOworCQkJZ290byBxdWl0 OworCQl9CisKKwkJcnZhbCA9IGxpbmsoc3JjbmFtZSwgbm9kZS0+cGF0aHNb aV0pOworCQlpZiAocnZhbCAhPSAwKSB7CisJCQllcnJfbWVzc2FnZSgidW5h YmxlIHRvIGxpbmsgdG8gZmlsZTogJXMiLCBzcmNuYW1lKTsKKwkJCWdvdG8g cXVpdDsKKwkJfQorCQludW1maWxlc2RvbmUrKzsKKwl9CisKKyBxdWl0Ogor CWN1cl9ub2RlID0gTlVMTDsKKworCVNFVF9QSEFTRShGSUxFX1BIQVNFKTsK KworCWlmIChzZmQgPj0gMCkKKwkJY2xvc2Uoc2ZkKTsKKwlpZiAodGZkID49 IDApCisJCWNsb3NlKHRmZCk7CisKKwlmcmVlKHBuYW1lKTsKKwlmcmVlKGN1 cl90YXJnZXQpOworCisJY3VyX3RhcmdldCA9IE5VTEw7CisKKwludW1maWxl c2RvbmUrKzsKKwlyZXR1cm4gcnZhbDsKK30KKworc3RhdGljIGludAorb3Bl bl9yZWNvdmVyZmlsZSh2b2lkKQoreworCXJlY292ZXJfZmQgPSBvcGVuKHJl Y292ZXJfZmlsZSwgT19SRFdSIHwgT19TWU5DIHwgT19DUkVBVCB8IE9fRVhD TCwKKwkJCTA2MDApOworCWlmIChyZWNvdmVyX2ZkIDwgMCkgeworCQlpZiAo ZXJybm8gPT0gRUVYSVNUKQorCQkJZXJyX21lc3NhZ2UoXygiUmVjb3Zlcnkg ZmlsZSBhbHJlYWR5IGV4aXN0cywgZWl0aGVyICIKKwkJCQkicnVuICclcyAt ciAlcycgb3IgcmVtb3ZlIHRoZSBmaWxlLiIpLAorCQkJCXByb2duYW1lLCBy ZWNvdmVyX2ZpbGUpOworCQllbHNlCisJCQllcnJfb3BlbihyZWNvdmVyX2Zp bGUpOworCQlyZXR1cm4gMTsKKwl9CisKKwlpZiAoIXBsYXRmb3JtX3Rlc3Rf eGZzX2ZkKHJlY292ZXJfZmQpKSB7CisJCWVycl9ub3RfeGZzKHJlY292ZXJf ZmlsZSk7CisJCWNsb3NlKHJlY292ZXJfZmQpOworCQlyZXR1cm4gMTsKKwl9 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3VwZGF0ZV9yZWNv dmVyZmlsZSh2b2lkKQoreworCXN0YXRpYyBjb25zdCBjaGFyIG51bGxfZmls ZVtdID0gIjBcbjBcbjBcblxudGFyZ2V0OiBcbnRlbXA6IFxuZW5kXG4iOwor CXN0YXRpYyBzaXplX3QJYnVmX3NpemUgPSAwOworCXN0YXRpYyBjaGFyCSpi dWYgPSBOVUxMOworCWludCAJCWksIGxlbjsKKworCWlmIChyZWNvdmVyX2Zk IDw9IDApCisJCXJldHVybjsKKworCWlmIChjdXJfbm9kZSA9PSBOVUxMIHx8 IGN1cl9waGFzZSA9PSAwKSB7CisJCS8qIGluYmV0d2VlbiBwcm9jZXNzaW5n IG9yIHN0aWxsIHNjYW5uaW5nICovCisJCWxzZWVrKHJlY292ZXJfZmQsIDAs IFNFRUtfU0VUKTsKKwkJd3JpdGUocmVjb3Zlcl9mZCwgbnVsbF9maWxlLCBz aXplb2YobnVsbF9maWxlKSk7CisJCXJldHVybjsKKwl9CisKKwlBU1NFUlQo aGlnaGVzdF9udW1wYXRocyA+IDApOworCWlmIChidWYgPT0gTlVMTCkgewor CQlidWZfc2l6ZSA9IChoaWdoZXN0X251bXBhdGhzICsgMykgKiBQQVRIX01B WDsKKwkJYnVmID0gbWFsbG9jKGJ1Zl9zaXplKTsKKwkJaWYgKGJ1ZiA9PSBO VUxMKSB7CisJCQllcnJfbm9tZW0oKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9 CisKKwlsZW4gPSBzcHJpbnRmKGJ1ZiwgIiVkXG4lbGx1XG4lZFxuIiwgY3Vy X3BoYXNlLAorCQkJKGxvbmcgbG9uZyljdXJfbm9kZS0+aW5vLCBjdXJfbm9k ZS0+ZnR3X2ZsYWdzKTsKKworCWZvciAoaSA9IDA7IGkgPCBjdXJfbm9kZS0+ bnVtcGF0aHM7IGkrKykKKwkJbGVuICs9IHNwcmludGYoYnVmICsgbGVuLCAi JXNcbiIsIGN1cl9ub2RlLT5wYXRoc1tpXSk7CisKKwlsZW4gKz0gc3ByaW50 ZihidWYgKyBsZW4sICJ0YXJnZXQ6ICVzXG50ZW1wOiAlc1xuZW5kXG4iLAor CQkJY3VyX3RhcmdldCwgY3VyX3RlbXApOworCisJQVNTRVJUKGxlbiA8IGJ1 Zl9zaXplKTsKKworCWxzZWVrKHJlY292ZXJfZmQsIDAsIFNFRUtfU0VUKTsK KwlmdHJ1bmNhdGUocmVjb3Zlcl9mZCwgMCk7CisJd3JpdGUocmVjb3Zlcl9m ZCwgYnVmLCBsZW4pOworfQorCitzdGF0aWMgdm9pZAorY2xlYW51cCh2b2lk KQoreworCWxvZ19tZXNzYWdlKExPR19OT1JNQUwsIF8oIkludGVycnVwdGVk IC0tIGNsZWFuaW5nIHVwLi4uIikpOworCisJZnJlZV9ub2RlaGFzaCgpOwor CisJbG9nX21lc3NhZ2UoTE9HX05PUk1BTCwgXygiRG9uZS4iKSk7Cit9CisK K3N0YXRpYyB2b2lkCitzaWdoYW5kbGVyKGludCBzaWcpCit7CisJc3RhdGlj IGNoYXIJY3ljbGVbNF0gPSAiLVxcfC8iOworCXN0YXRpYyB1aW50NjRfdAlj dXJfY3ljbGUgPSAwOworCWRvdWJsZQkJcGVyY2VudDsKKworCWFsYXJtKDAp OworCisJaWYgKHNpZyAhPSBTSUdBTFJNKSB7CisJCWNsZWFudXAoKTsKKwkJ ZXhpdCgxKTsKKwl9CisKKwlpZiAoY3VyX3BoYXNlID09IFNDQU5fUEhBU0Up IHsKKwkJaWYgKGxvZ19sZXZlbCA+PSBMT0dfSU5GTykKKwkJCWZwcmludGYo c3RkZXJyLCBfKCJcciVsbHUgZmlsZXMgYW5kICVsbHUgZGlycyAiCisJCQkJ InRvIHJlbnVtYmVyIGZvdW5kLi4uICVjIiksCisJCQkJKGxvbmcgbG9uZylu dW1maWxlbm9kZXMsCisJCQkJKGxvbmcgbG9uZyludW1kaXJub2RlcywKKwkJ CQljeWNsZVtjdXJfY3ljbGUgJSA0XSk7CisJCWVsc2UKKwkJCWZwcmludGYo c3RkZXJyLCAiXHIlYyIsCisJCQkJY3ljbGVbY3VyX2N5Y2xlICUgNF0pOwor CQljdXJfY3ljbGUrKzsKKwl9IGVsc2UgaWYgKGN1cl9waGFzZSA+PSBESVJf UEhBU0UgJiYgY3VyX3BoYXNlIDw9IERJUl9QSEFTRV9NQVgpIHsKKwkJcGVy Y2VudCA9IChkb3VibGUpbnVtZGlyc2RvbmUgLyAoZG91YmxlKW51bWRpcm5v ZGVzOworCQlwZXJjZW50ICo9IDEwMC4wOworCQlpZiAocGVyY2VudCA+IDEw MC4wKQorCQkJcGVyY2VudCA9IDEwMC4wOworCQlpZiAobG9nX2xldmVsID49 IExPR19JTkZPKQorCQkJZnByaW50ZihzdGRlcnIsIF8oIlxyJS4xZiUlLCAl bGx1IG9mICVsbHUgIgorCQkJCSJkaXJzLCAldSBzZWNvbmRzIGVsYXBzZWQi KSwgcGVyY2VudCwKKwkJCQkobG9uZyBsb25nKW51bWRpcnNkb25lLAorCQkJ CShsb25nIGxvbmcpbnVtZGlybm9kZXMsCisJCQkJKGludCkodGltZSgwKSAt IHN0YXJ0dGltZSkpOworCQllbHNlCisJCQlmcHJpbnRmKHN0ZGVyciwgIlxy JS4xZiUlIiwgcGVyY2VudCk7CisJfSBlbHNlIGlmIChjdXJfcGhhc2UgPj0g RklMRV9QSEFTRSAmJiBjdXJfcGhhc2UgPD0gRklMRV9QSEFTRV9NQVgpIHsK KwkJcGVyY2VudCA9IChkb3VibGUpbnVtZmlsZXNkb25lIC8gKGRvdWJsZSlu dW1maWxlbm9kZXM7CisJCXBlcmNlbnQgKj0gMTAwLjA7CisJCWlmIChwZXJj ZW50ID4gMTAwLjApCisJCQlwZXJjZW50ID0gMTAwLjA7CisJCWlmIChsb2df bGV2ZWwgPj0gTE9HX0lORk8pCisJCQlmcHJpbnRmKHN0ZGVyciwgXygiXHIl LjFmJSUsICVsbHUgb2YgJWxsdSAiCisJCQkJImZpbGVzLCAldSBzZWNvbmRz IGVsYXBzZWQiKSwKKwkJCQlwZXJjZW50LCAobG9uZyBsb25nKW51bWZpbGVz ZG9uZSwKKwkJCQkobG9uZyBsb25nKW51bWZpbGVub2RlcywKKwkJCQkoaW50 KSh0aW1lKDApIC0gc3RhcnR0aW1lKSk7CisJCWVsc2UKKwkJCWZwcmludGYo c3RkZXJyLCAiXHIlLjFmJSUiLCBwZXJjZW50KTsKKwl9CisJcG9sbF9vdXRw dXQgPSAxOworCXNpZ25hbChTSUdBTFJNLCBzaWdoYW5kbGVyKTsKKworCWlm IChwb2xsX2ludGVydmFsKQorCQlhbGFybShwb2xsX2ludGVydmFsKTsKK30K Kworc3RhdGljIGludAorcmVhZF9yZWNvdmVyX2ZpbGUoCisJY2hhcgkJKnJl Y292ZXJfZmlsZSwKKwliaWdub2RlX3QJKipub2RlLAorCWNoYXIJCSoqdGFy Z2V0LAorCWNoYXIJCSoqdGVtcCwKKwlpbnQJCSpwaGFzZSkKK3sKKwlGSUxF CQkqZmlsZTsKKwlpbnQJCXJ2YWwgPSAxOworCWlub190CQlpbm87CisJaW50 CQlmdHdfZmxhZ3M7CisJY2hhcgkJYnVmW1BBVEhfTUFYICsgMTBdOyAvKiBw YXRoICsgInRhcmdldDogIiAqLworCXN0cnVjdCBzdGF0NjQJczsKKwlpbnQJ CWZpcnN0X3BhdGg7CisKKwkvKgorCisJQSByZWNvdmVyeSBmaWxlIHNob3Vs ZCBsb29rIGxpa2U6CisKKwk8cGhhc2U+CisJPGlubyBudW1iZXI+CisJPGZ0 dyBmbGFncz4KKwk8Zmlyc3QgcGF0aCB0byBpbm9kZT4KKwk8aGFyZGxpbmtz IHRvIGlub2RlPgorCXRhcmdldDogPHBhdGggdG8gdGFyZ2V0IGRpciBvciBm aWxlPgorCXRlbXA6IDxwYXRoIHRvIHRlbXAgZGlyIGlmIGRpciBwaGFzZT4K KwllbmQKKwkqLworCisJZmlsZSA9IGZvcGVuKHJlY292ZXJfZmlsZSwgInIi KTsKKwlpZiAoZmlsZSA9PSBOVUxMKSB7CisJCWVycl9vcGVuKHJlY292ZXJf ZmlsZSk7CisJCXJldHVybiAxOworCX0KKworCS8qIHJlYWQgcGhhc2UgKi8K KwkqcGhhc2UgPSAwOworCWlmIChmZ2V0cyhidWYsIFBBVEhfTUFYICsgMTAs IGZpbGUpID09IE5VTEwpIHsKKwkJZXJyX21lc3NhZ2UoIlJlY292ZXJ5IGZh aWxlZDogdW5hYmxlIHRvIHJlYWQgcGhhc2UiKTsKKwkJZ290byBxdWl0Owor CX0KKwlidWZbc3RybGVuKGJ1ZikgLSAxXSA9ICdcMCc7CisJKnBoYXNlID0g YXRvaShidWYpOworCWlmICgqcGhhc2UgPT0gU0NBTl9QSEFTRSkgeworCQlm Y2xvc2UoZmlsZSk7CisJCXJldHVybiAwOworCX0KKwlpZiAoKCpwaGFzZSA8 IERJUl9QSEFTRSB8fCAqcGhhc2UgPiBESVJfUEhBU0VfTUFYKSAmJgorCQkJ KCpwaGFzZSA8IEZJTEVfUEhBU0UgfHwgKnBoYXNlID4gRklMRV9QSEFTRV9N QVgpKSB7CisJCWVycl9tZXNzYWdlKCJSZWNvdmVyeSBmYWlsZWQ6IGZhaWxl ZCB0byByZWFkIHZhbGlkIHJlY292ZXJ5IHBoYXNlIik7CisJCWdvdG8gcXVp dDsKKwl9CisKKwkvKiByZWFkIGlub2RlIG51bWJlciAqLworCWlmIChmZ2V0 cyhidWYsIFBBVEhfTUFYICsgMTAsIGZpbGUpID09IE5VTEwpIHsKKwkJZXJy X21lc3NhZ2UoIlJlY292ZXJ5IGZhaWxlZDogdW5hYmxlIHRvIHJlYWQgaW5v ZGUgbnVtYmVyIik7CisJCWdvdG8gcXVpdDsKKwl9CisJYnVmW3N0cmxlbihi dWYpIC0gMV0gPSAnXDAnOworCWlubyA9IHN0cnRvdWxsKGJ1ZiwgTlVMTCwg MTApOworCWlmIChpbm8gPT0gMCkgeworCQllcnJfbWVzc2FnZSgiUmVjb3Zl cnkgZmFpbGVkOiB1bmFibGUgdG8gcmVhZCBpbm9kZSBudW1iZXIiKTsKKwkJ Z290byBxdWl0OworCX0KKworCS8qIHJlYWQgZnR3X2ZsYWdzICovCisJaWYg KGZnZXRzKGJ1ZiwgUEFUSF9NQVggKyAxMCwgZmlsZSkgPT0gTlVMTCkgewor CQllcnJfbWVzc2FnZSgiUmVjb3ZlcnkgZmFpbGVkOiB1bmFibGUgdG8gcmVh ZCBmbGFncyIpOworCQlnb3RvIHF1aXQ7CisJfQorCWJ1ZltzdHJsZW4oYnVm KSAtIDFdID0gJ1wwJzsKKwlpZiAoYnVmWzFdICE9ICdcMCcgfHwgKGJ1Zlsw XSAhPSAnMCcgJiYgYnVmWzBdICE9ICcxJykpIHsKKwkJZXJyX21lc3NhZ2Uo IlJlY292ZXJ5IGZhaWxlZDogdW5hYmxlIHRvIHJlYWQgZmxhZ3M6ICclcyci LCBidWYpOworCQlnb3RvIHF1aXQ7CisJfQorCWZ0d19mbGFncyA9IGF0b2ko YnVmKTsKKworCS8qIHJlYWQgcGF0aHMgYW5kIHRhcmdldCBwYXRoICovCisJ Km5vZGUgPSBOVUxMOworCSp0YXJnZXQgPSBOVUxMOworCWZpcnN0X3BhdGgg PSAxOworCXdoaWxlIChmZ2V0cyhidWYsIFBBVEhfTUFYICsgMTAsIGZpbGUp ICE9IE5VTEwpIHsKKwkJYnVmW3N0cmxlbihidWYpIC0gMV0gPSAnXDAnOwor CisJCWxvZ19tZXNzYWdlKExPR19ERUJVRywgInBhdGg6ICclcyciLCBidWYp OworCisJCWlmIChidWZbMF0gPT0gJy8nKSB7CisJCQlpZiAoc3RhdDY0KGJ1 ZiwgJnMpIDwgMCkgeworCQkJCWVycl9tZXNzYWdlKF8oIlJlY292ZXJ5IGZh aWxlZDogY2Fubm90ICIKKwkJCQkJCSJzdGF0ICclcyciKSwgYnVmKTsKKwkJ CQlnb3RvIHF1aXQ7CisJCQl9CisJCQlpZiAocy5zdF9pbm8gIT0gaW5vKSB7 CisJCQkJZXJyX21lc3NhZ2UoXygiUmVjb3ZlcnkgZmFpbGVkOiBpbm9kZSAi CisJCQkJCQkibnVtYmVyIGZvciAnJXMnIGRvZXMgbm90ICIKKwkJCQkJCSJt YXRjaCByZWNvcmRlZCBudW1iZXIiKSwgYnVmKTsKKwkJCQlnb3RvIHF1aXQ7 CisJCQl9CisKKwkJCWlmIChmaXJzdF9wYXRoKSB7CisJCQkJZmlyc3RfcGF0 aCA9IDA7CisJCQkJKm5vZGUgPSBhZGRfbm9kZV9wYXRoKGlubywgZnR3X2Zs YWdzLCBidWYpOworCQkJfQorCQkJZWxzZSB7CisJCQkJYWRkX3BhdGgoKm5v ZGUsIGJ1Zik7CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoc3RybmNtcChidWYs ICJ0YXJnZXQ6ICIsIDgpID09IDApIHsKKwkJCSp0YXJnZXQgPSBzdHJkdXAo YnVmICsgOCk7CisJCQlpZiAoKnRhcmdldCA9PSBOVUxMKSB7CisJCQkJZXJy X25vbWVtKCk7CisJCQkJZ290byBxdWl0OworCQkJfQorCQkJaWYgKHN0YXQ2 NCgqdGFyZ2V0LCAmcykgPCAwKSB7CisJCQkJZXJyX21lc3NhZ2UoXygiUmVj b3ZlcnkgZmFpbGVkOiBjYW5ub3QgIgorCQkJCQkJInN0YXQgJyVzJyIpLCAq dGFyZ2V0KTsKKwkJCQlnb3RvIHF1aXQ7CisJCQl9CisJCX0KKwkJZWxzZSBp ZiAoc3RybmNtcChidWYsICJ0ZW1wOiAiLCA2KSA9PSAwKSB7CisJCQkqdGVt cCA9IHN0cmR1cChidWYgKyA2KTsKKwkJCWlmICgqdGVtcCA9PSBOVUxMKSB7 CisJCQkJZXJyX25vbWVtKCk7CisJCQkJZ290byBxdWl0OworCQkJfQorCQl9 CisJCWVsc2UgaWYgKHN0cmNtcChidWYsICJlbmQiKSA9PSAwKSB7CisJCQly dmFsID0gMDsKKwkJCWdvdG8gcXVpdDsKKwkgCX0KKwkgCWVsc2UgeworCQkJ ZXJyX21lc3NhZ2UoXygiUmVjb3ZlcnkgZmFpbGVkOiB1bnJlY29nbmlzZWQg IgorCQkJCQkic3RyaW5nOiAnJXMnIiksIGJ1Zik7CisJCQlnb3RvIHF1aXQ7 CisJCX0KKwl9CisKKwllcnJfbWVzc2FnZShfKCJSZWNvdmVyeSBmYWlsZWQ6 IGVuZCBvZiByZWNvdmVyeSBmaWxlIG5vdCBmb3VuZCIpKTsKKworIHF1aXQ6 CisJaWYgKCpub2RlID09IE5VTEwpIHsKKwkJZXJyX21lc3NhZ2UoXygiUmVj b3ZlcnkgZmFpbGVkOiBubyB2YWxpZCBpbm9kZSBvciBwYXRocyAiCisJCQkJ InNwZWNpZmllZCIpKTsKKwkJcnZhbCA9IDE7CisJfQorCisJaWYgKCp0YXJn ZXQgPT0gTlVMTCkgeworCQllcnJfbWVzc2FnZShfKCJSZWNvdmVyeSBmYWls ZWQ6IG5vIGlub2RlIHRhcmdldCBzcGVjaWZpZWQiKSk7CisJCXJ2YWwgPSAx OworCX0KKworCWZjbG9zZShmaWxlKTsKKworCXJldHVybiBydmFsOworfQor CitpbnQKK3JlY292ZXIoCisJYmlnbm9kZV90CSpub2RlLAorCWNoYXIJCSp0 YXJnZXQsCisJY2hhcgkJKnRuYW1lLAorCWludAkJcGhhc2UpCit7CisJaW50 CQl0ZmQgPSAtMTsKKwlpbnQJCXRhcmdldGZkID0gLTE7CisJY2hhcgkJKnNy Y25hbWUgPSBOVUxMOworCWludAkJcnZhbCA9IDA7CisJaW50CQlpOworCWlu dAkJbW92ZV9jb3VudCA9IDA7CisKKwlkdW1wX25vZGUoInJlY292ZXIiLCBu b2RlKTsKKwlsb2dfbWVzc2FnZShMT0dfREVCVUcsICJ0YXJnZXQ6ICVzLCBw aGFzZTogJXgiLCB0YXJnZXQsIHBoYXNlKTsKKworCWlmIChub2RlKQorCQlz cmNuYW1lID0gbm9kZS0+cGF0aHNbMF07CisKKwlzd2l0Y2ggKHBoYXNlKSB7 CisKKwljYXNlIERJUl9QSEFTRV8yOgorcm10ZW1wczoKKwkJbG9nX21lc3Nh Z2UoTE9HX05PUk1BTCwgXygiUmVtb3ZpbmcgdGVtcG9yYXJ5IGRpcmVjdG9y eTogJyVzJyIpLAorCQkJCXRuYW1lKTsKKwkJaWYgKHJtZGlyKHRuYW1lKSA8 IDAgJiYgZXJybm8gIT0gRU5PRU5UKSB7CisJCQllcnJfbWVzc2FnZShfKCJ1 bmFibGUgdG8gcmVtb3ZlIGRpcmVjdG9yeTogJXMiKSwgdG5hbWUpOworCQkJ cnZhbCA9IDE7CisJCX0KKwkJLyogRkFMTCBUSFJVICovCisJY2FzZSBESVJf UEhBU0VfMToKKwkJbG9nX21lc3NhZ2UoTE9HX05PUk1BTCwgXygiUmVtb3Zp bmcgdGFyZ2V0IGRpcmVjdG9yeTogJyVzJyIpLAorCQkJCXRhcmdldCk7CisJ CWlmIChybWRpcih0YXJnZXQpIDwgMCAmJiBlcnJubyAhPSBFTk9FTlQpIHsK KwkJCWVycl9tZXNzYWdlKF8oInVuYWJsZSB0byByZW1vdmUgZGlyZWN0b3J5 OiAlcyIpLAorCQkJCQl0YXJnZXQpOworCQkJcnZhbCA9IDE7CisJCX0KKwkJ YnJlYWs7CisKKwljYXNlIERJUl9QSEFTRV8zOgorCQlsb2dfbWVzc2FnZShM T0dfTk9STUFMLCBfKCJDb21wbGV0aW5nIG1vdmluZyBkaXJlY3RvcnkgIgor CQkJCSJjb250ZW50czogJyVzJyB0byAnJXMnIiksIHNyY25hbWUsIHRhcmdl dCk7CisJCWlmIChtb3ZlX2RpcmVudHMoc3JjbmFtZSwgdGFyZ2V0LCAmbW92 ZV9jb3VudCkgIT0gMCkgeworCQkJZXJyX21lc3NhZ2UoXygidW5hYmxlIHRv IG1vdmUgZGlyZWN0b3J5IGNvbnRlbnRzOiAiCisJCQkJCSIlcyB0byAlcyIp LCBzcmNuYW1lLCB0YXJnZXQpOworCQkJLyogdWggb2gsIG1vdmUgZXZlcnl0 aGluZyBiYWNrLi4uICovCisJCQlpZiAobW92ZV9jb3VudCA+IDApIHsKKwkJ CQlpZiAobW92ZV9kaXJlbnRzKHRhcmdldCwgc3JjbmFtZSwKKwkJCQkJCSZt b3ZlX2NvdW50KSAhPSAwKSB7CisJCQkJCS8qIG9oLCBkZWFyIGxvcmQuLi4g bGV0IHRoZSBhZG1pbgorCQkJCQkgKiBjbGVhbiB0aGlzIG9uZSB1cCAqLwor CQkJCQllcnJfbWVzc2FnZShfKCJ1bmFibGUgdG8gbW92ZSBkaXJlY3Rvcnkg IgorCQkJCQkJImNvbnRlbnRzIGJhY2s6ICVzIHRvICVzIiksCisJCQkJCQl0 YXJnZXQsIHNyY25hbWUpOworCQkJCQlleGl0KDEpOworCQkJCX0KKwkJCX0K KwkJCWdvdG8gcm10ZW1wczsKKwkJfQorCQkvKiBGQUxMIFRIUlUgKi8KKwlj YXNlIERJUl9QSEFTRV80OgorCQlsb2dfbWVzc2FnZShMT0dfTk9STUFMLCBf KCJTZXR0aW5nIGF0dHJpYnV0ZXMgZm9yIHRhcmdldCAiCisJCQkJImRpcmVj dG9yeTogXCclc1wnIiksIHRhcmdldCk7CisJCXRmZCA9IG9wZW4odG5hbWUs IE9fUkRPTkxZKTsKKwkJaWYgKHRmZCA8IDApIHsKKwkJCWVycl9vcGVuKHRu YW1lKTsKKwkJCXJ2YWwgPSAxOworCQkJYnJlYWs7CisJCX0KKwkJdGFyZ2V0 ZmQgPSBvcGVuKHRhcmdldCwgT19SRE9OTFkpOworCQlpZiAodGFyZ2V0ZmQg PCAwKSB7CisJCQllcnJfb3Blbih0YXJnZXQpOworCQkJcnZhbCA9IDE7CisJ CQlicmVhazsKKwkJfQorCQlydmFsID0gZHVwX2F0dHJpYnV0ZXModG5hbWUs IHRmZCwgdGFyZ2V0LCB0YXJnZXRmZCk7CisJCWlmIChydmFsICE9IDApIHsK KwkJCWVycl9tZXNzYWdlKF8oInVuYWJsZSB0byBkdXBsaWNhdGUgZGlyZWN0 b3J5ICIKKwkJCQkJImF0dHJpYnV0ZXM6ICVzIiksIHRuYW1lKTsKKwkJCWJy ZWFrOworCQl9CisJCWNsb3NlKHRmZCk7CisJCWNsb3NlKHRhcmdldGZkKTsK KwkJLyogRkFMTCBUSFJVICovCisJY2FzZSBESVJfUEhBU0VfNjoKKwkJbG9n X21lc3NhZ2UoTE9HX05PUk1BTCwgXygiUmVtb3ZpbmcgdGVtcG9yYXJ5IGRp cmVjdG9yeTogXCclc1wnIiksCisJCQkJdG5hbWUpOworCQlpZiAocm1kaXIo dG5hbWUpIDwgMCAmJiBlcnJubyAhPSBFTk9FTlQpIHsKKwkJCWVycl9tZXNz YWdlKF8oInVuYWJsZSB0byByZW1vdmUgZGlyZWN0b3J5OiAlcyIpLAorCQkJ CQl0bmFtZSk7CisJCQlydmFsID0gMTsKKwkJCWJyZWFrOworCQl9CisJCS8q IEZBTEwgVEhSVSAqLworCWNhc2UgRElSX1BIQVNFXzU6CisJCWxvZ19tZXNz YWdlKExPR19OT1JNQUwsIF8oIlJlbW92aW5nIG9sZCBkaXJlY3Rvcnk6IFwn JXNcJyIpLAorCQkJCXNyY25hbWUpOworCQlpZiAocm1kaXIoc3JjbmFtZSkg PCAwICYmIGVycm5vICE9IEVOT0VOVCkgeworCQkJZXJyX21lc3NhZ2UoXygi dW5hYmxlIHRvIHJlbW92ZSBkaXJlY3Rvcnk6ICVzIiksCisJCQkJCXNyY25h bWUpOworCQkJcnZhbCA9IDE7CisJCQlicmVhazsKKwkJfQorCQkvKiBGQUxM IFRIUlUgKi8KKwljYXNlIERJUl9QSEFTRV83OgorCQlsb2dfbWVzc2FnZShM T0dfTk9STUFMLCBfKCJSZW5hbWluZyBuZXcgZGlyZWN0b3J5IHRvIG9sZCAi CisJCQkiZGlyZWN0b3J5OiBcJyVzXCcgLT4gXCclc1wnIiksIHRhcmdldCwg c3JjbmFtZSk7CisJCXJ2YWwgPSByZW5hbWUodGFyZ2V0LCBzcmNuYW1lKTsK KwkJaWYgKHJ2YWwgIT0gMCkgeworCQkJLyogd2UgY2FuJ3QgYWJvcnQgc2lu Y2UgdGhlIHNyYyBkaXIgaXMgbm93IGdvbmUuCisJCQkgKiBsZXQgdGhlIGFk bWluIGNsZWFuIHRoaXMgb25lIHVwCisJCQkgKi8KKwkJCWVycl9tZXNzYWdl KF8oInVuYWJsZSB0byByZW5hbWUgZGlyZWN0b3J5OiAlcyB0byAlcyIpLAor CQkJCQl0YXJnZXQsIHNyY25hbWUpOworCQkJYnJlYWs7CisJCX0KKwkJYnJl YWs7CisKKworCWNhc2UgRklMRV9QSEFTRV8xOgorCQlsb2dfbWVzc2FnZShM T0dfTk9STUFMLCBfKCJVbmxpbmtpbmcgdGVtcG9yYXJ5IGZpbGU6IFwnJXNc JyIpLCB0YXJnZXQpOworCQl1bmxpbmsodGFyZ2V0KTsKKwkJYnJlYWs7CisK KwljYXNlIEZJTEVfUEhBU0VfMjoKKwkJbG9nX21lc3NhZ2UoTE9HX05PUk1B TCwgXygiVW5saW5raW5nIG9sZCBmaWxlOiBcJyVzXCciKSwgc3JjbmFtZSk7 CisJCXJ2YWwgPSB1bmxpbmsoc3JjbmFtZSk7CisJCWlmIChydmFsICE9IDAp IHsKKwkJCWVycl9tZXNzYWdlKF8oInVuYWJsZSB0byByZW1vdmUgZmlsZTog JXMiKSwgc3JjbmFtZSk7CisJCQlicmVhazsKKwkJfQorCQkvKiBGQUxMIFRI UlUgKi8KKwljYXNlIEZJTEVfUEhBU0VfMzoKKwkJbG9nX21lc3NhZ2UoTE9H X05PUk1BTCwgXygiUmVuYW1pbmcgbmV3IGZpbGUgdG8gb2xkIGZpbGU6ICIK KwkJCQkiXCclc1wnIC0+IFwnJXNcJyIpLCB0YXJnZXQsIHNyY25hbWUpOwor CQlydmFsID0gcmVuYW1lKHRhcmdldCwgc3JjbmFtZSk7CisJCWlmIChydmFs ICE9IDApIHsKKwkJCS8qIHdlIGNhbid0IGFib3J0IHNpbmNlIHRoZSBzcmMg ZmlsZSBpcyBub3cgZ29uZS4KKwkJCSAqIGxldCB0aGUgYWRtaW4gY2xlYW4g dGhpcyBvbmUgdXAKKwkJCSAqLworCQkJZXJyX21lc3NhZ2UoXygidW5hYmxl IHRvIHJlbmFtZSBmaWxlOiAlcyB0byAlcyIpLAorCQkJCQl0YXJnZXQsIHNy Y25hbWUpOworCQkJYnJlYWs7CisJCX0KKwkJLyogRkFMTCBUSFJVICovCisJ Y2FzZSBGSUxFX1BIQVNFXzQ6CisJCS8qIGZvciBlYWNoIGhhcmRsaW5rLCB1 bmxpbmsgYW5kIGNyZWF0IHBvaW50aW5nIHRvIHRhcmdldCAqLworCQlmb3Ig KGkgPSAxOyBpIDwgbm9kZS0+bnVtcGF0aHM7IGkrKykgeworCQkJaWYgKGkg PT0gMSkKKwkJCQlsb2dfbWVzc2FnZShMT0dfTk9STUFMLCBfKCJSZXNldHRp bmcgaGFyZGxpbmtzIHRvICIKKwkJCQkJCSJuZXcgZmlsZSIpKTsKKworCQkJ cnZhbCA9IHVubGluayhub2RlLT5wYXRoc1tpXSk7CisJCQlpZiAocnZhbCAh PSAwKSB7CisJCQkJZXJyX21lc3NhZ2UoXygidW5hYmxlIHRvIHJlbW92ZSBm aWxlOiAlcyIpLAorCQkJCQkJbm9kZS0+cGF0aHNbaV0pOworCQkJCWJyZWFr OworCQkJfQorCQkJcnZhbCA9IGxpbmsoc3JjbmFtZSwgbm9kZS0+cGF0aHNb aV0pOworCQkJaWYgKHJ2YWwgIT0gMCkgeworCQkJCWVycl9tZXNzYWdlKF8o InVuYWJsZSB0byBsaW5rIHRvIGZpbGU6ICVzIiksCisJCQkJCQlzcmNuYW1l KTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlicmVhazsKKwl9CisKKwlp ZiAocnZhbCA9PSAwKSB7CisJCWxvZ19tZXNzYWdlKExPR19OT1JNQUwsIF8o IlJlbW92aW5nIHJlY292ZXIgZmlsZTogXCclc1wnIiksCisJCQkJcmVjb3Zl cl9maWxlKTsKKwkJdW5saW5rKHJlY292ZXJfZmlsZSk7CisJCWxvZ19tZXNz YWdlKExPR19OT1JNQUwsIF8oIlJlY292ZXJ5IGRvbmUuIikpOworCX0KKwll bHNlIHsKKwkJbG9nX21lc3NhZ2UoTE9HX05PUk1BTCwgXygiTGVhdmluZyBy ZWNvdmVyIGZpbGU6IFwnJXNcJyIpLAorCQkJCXJlY292ZXJfZmlsZSk7CisJ CWxvZ19tZXNzYWdlKExPR19OT1JNQUwsIF8oIlJlY292ZXJ5IGZhaWxlZC4i KSk7CisJfQorCisJcmV0dXJuIHJ2YWw7Cit9CisKK2ludAorbWFpbigKKwlp bnQJCWFyZ2MsCisJY2hhcgkJKmFyZ3ZbXSkKK3sKKwlpbnQJCWMgPSAwOwor CWludAkJcnZhbCA9IDA7CisJaW50CQlxX29wdCA9IDA7CisJaW50CQl2X29w dCA9IDA7CisJaW50CQlwX29wdCA9IDA7CisJaW50CQluX29wdCA9IDA7CisJ Y2hhcgkJcGF0aG5hbWVbUEFUSF9NQVhdOworCXN0cnVjdCBzdGF0NjQJc3Q7 CisKKwlwcm9nbmFtZSA9IGJhc2VuYW1lKGFyZ3ZbMF0pOworCisJc2V0bG9j YWxlKExDX0FMTCwgIiIpOworCWJpbmR0ZXh0ZG9tYWluKFBBQ0tBR0UsIExP Q0FMRURJUik7CisJdGV4dGRvbWFpbihQQUNLQUdFKTsKKworCXdoaWxlICgo YyA9IGdldG9wdChhcmdjLCBhcmd2LCAiZm5wcXZQOnI6IikpICE9IC0xKSB7 CisJCXN3aXRjaCAoYykgeworCQljYXNlICdmJzoKKwkJCWZvcmNlX2FsbCA9 IDE7CisJCQlicmVhazsKKwkJY2FzZSAnbic6CisJCQluX29wdCsrOworCQkJ YnJlYWs7CisJCWNhc2UgJ3AnOgorCQkJcF9vcHQrKzsKKwkJCWJyZWFrOwor CQljYXNlICdxJzoKKwkJCWlmICh2X29wdCkKKwkJCQllcnJfbWVzc2FnZShf KCIncScgb3B0aW9uIGluY29tcGF0aWJsZSAiCisJCQkJCQkid2l0aCAndicg b3B0aW9uIikpOworCQkJcV9vcHQrKzsKKwkJCWxvZ19sZXZlbD0wOworCQkJ YnJlYWs7CisJCWNhc2UgJ3YnOgorCQkJaWYgKHFfb3B0KQorCQkJCWVycl9t ZXNzYWdlKF8oIid2JyBvcHRpb24gaW5jb21wYXRpYmxlICIKKwkJCQkJCSJ3 aXRoICdxJyBvcHRpb24iKSk7CisJCQl2X29wdCsrOworCQkJbG9nX2xldmVs Kys7CisJCQlicmVhazsKKwkJY2FzZSAnUCc6CisJCQlwb2xsX2ludGVydmFs ID0gYXRvaShvcHRhcmcpOworCQkJYnJlYWs7CisJCWNhc2UgJ3InOgorCQkJ cmVjb3Zlcl9maWxlID0gb3B0YXJnOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6 CisJCQllcnJfbWVzc2FnZShfKCIlczogaWxsZWdhbCBvcHRpb24gLS0gJWNc biIpLCBjKTsKKwkJCXVzYWdlKCk7CisJCQkvKiBOT1RSRUFDSEVEICovCisJ CQlicmVhazsKKwkJfQorCX0KKworCWlmIChvcHRpbmQgIT0gYXJnYyAtIDEg JiYgcmVjb3Zlcl9maWxlID09IE5VTEwpIHsKKwkJdXNhZ2UoKTsKKwkJZXhp dCgxKTsKKwl9CisKKwlyZWFsdWlkID0gZ2V0dWlkKCk7CisJc3RhcnR0aW1l ID0gdGltZSgwKTsKKworCWluaXRfbm9kZWhhc2goKTsKKworCXNpZ25hbChT SUdBTFJNLCBzaWdoYW5kbGVyKTsKKwlzaWduYWwoU0lHQUJSVCwgc2lnaGFu ZGxlcik7CisJc2lnbmFsKFNJR0hVUCwgc2lnaGFuZGxlcik7CisJc2lnbmFs KFNJR0lOVCwgc2lnaGFuZGxlcik7CisJc2lnbmFsKFNJR1FVSVQsIHNpZ2hh bmRsZXIpOworCXNpZ25hbChTSUdURVJNLCBzaWdoYW5kbGVyKTsKKworCWlm IChwX29wdCAmJiBwb2xsX2ludGVydmFsID09IDApIHsKKwkJcG9sbF9pbnRl cnZhbCA9IDE7CisJfQorCWlmIChwb2xsX2ludGVydmFsKQorCQlhbGFybShw b2xsX2ludGVydmFsKTsKKworCWlmIChyZWNvdmVyX2ZpbGUpIHsKKwkJYmln bm9kZV90CSpub2RlID0gTlVMTDsKKwkJY2hhcgkJKnRhcmdldCA9IE5VTEw7 CisJCWNoYXIJCSp0bmFtZSA9IE5VTEw7CisJCWludAkJcGhhc2UgPSAwOwor CisJCWlmIChuX29wdCkKKwkJCWdvdG8gcXVpdDsKKworCQkvKiByZWFkIG5v ZGUgaW5mbyBmcm9tIHJlY292ZXJ5IGZpbGUgKi8KKwkJaWYgKHJlYWRfcmVj b3Zlcl9maWxlKHJlY292ZXJfZmlsZSwgJm5vZGUsICZ0YXJnZXQsCisJCQkJ JnRuYW1lLCAmcGhhc2UpICE9IDApCisJCQlleGl0KDEpOworCisJCXJ2YWwg PSByZWNvdmVyKG5vZGUsIHRhcmdldCwgdG5hbWUsIHBoYXNlKTsKKworCQlm cmVlKHRhcmdldCk7CisJCWZyZWUodG5hbWUpOworCisJCXJldHVybiBydmFs OworCX0KKworCXJlY292ZXJfZmlsZSA9IG1hbGxvYyhQQVRIX01BWCk7CisJ aWYgKHJlY292ZXJfZmlsZSA9PSBOVUxMKSB7CisJCWVycl9ub21lbSgpOwor CQlleGl0KDEpOworCX0KKwlyZWNvdmVyX2ZpbGVbMF0gPSAnXDAnOworCisJ c3RyY3B5KHBhdGhuYW1lLCBhcmd2W29wdGluZF0pOworCWlmIChwYXRobmFt ZVswXSAhPSAnLycpIHsKKwkJZXJyX21lc3NhZ2UoXygicGF0aG5hbWUgbXVz dCBiZWdpbiB3aXRoIGEgc2xhc2ggKCcvJykiKSk7CisJCWV4aXQoMSk7CisJ fQorCisJaWYgKHN0YXQ2NChwYXRobmFtZSwgJnN0KSA8IDApIHsKKwkJZXJy X3N0YXQocGF0aG5hbWUpOworCQlleGl0KDEpOworCX0KKwlpZiAoU19JU1JF RyhzdC5zdF9tb2RlKSkgeworCQkvKiBzaW5nbGUgZmlsZSBzcGVjaWZpZWQg Ki8KKwkJaWYgKHN0LnN0X25saW5rID4gMSkgeworCQkJZXJyX21lc3NhZ2Uo XygiY2Fubm90IHByb2Nlc3Mgc2luZ2xlIGZpbGUgd2l0aCBhICIKKwkJCQkJ ImxpbmsgY291bnQgZ3JlYXRlciB0aGFuIDEiKSk7CisJCQlleGl0KDEpOwor CQl9CisKKwkJc3RyY3B5KHJlY292ZXJfZmlsZSwgcGF0aG5hbWUpOworCQlk aXJuYW1lKHJlY292ZXJfZmlsZSk7CisKKwkJc3RyY3B5KHJlY292ZXJfZmls ZSArIHN0cmxlbihyZWNvdmVyX2ZpbGUpLCAiL3hmc19yZW5vLnJlY292ZXIi KTsKKwkJaWYgKCFuX29wdCkgeworCQkJaWYgKG9wZW5fcmVjb3ZlcmZpbGUo KSAhPSAwKQorCQkJCWV4aXQoMSk7CisJCX0KKwkJYWRkX25vZGVfcGF0aChz dC5zdF9pbm8sIEZUV19GLCBwYXRobmFtZSk7CisJfQorCWVsc2UgaWYgKFNf SVNESVIoc3Quc3RfbW9kZSkpIHsKKwkJLyogZGlyZWN0b3J5IHRyZWUgc3Bl Y2lmaWVkICovCisJCXN0cmNweShyZWNvdmVyX2ZpbGUsIHBhdGhuYW1lKTsK KworCQlzdHJjcHkocmVjb3Zlcl9maWxlICsgc3RybGVuKHJlY292ZXJfZmls ZSksICIveGZzX3Jlbm8ucmVjb3ZlciIpOworCQlpZiAoIW5fb3B0KSB7CisJ CQlpZiAob3Blbl9yZWNvdmVyZmlsZSgpICE9IDApCisJCQkJZXhpdCgxKTsK KwkJfQorCisJCS8qIGRpcmVjdG9yeSBzY2FuICovCisJCWxvZ19tZXNzYWdl KExPR19JTkZPLCBfKCJcclNjYW5uaW5nIGRpcmVjdG9yeSB0cmVlLi4uIikp OworCQlTRVRfUEhBU0UoU0NBTl9QSEFTRSk7CisJCW5mdHc2NChwYXRobmFt ZSwgbmZ0d19hZGRub2RlcywgMTAwLCBGVFdfUEhZUyB8IEZUV19NT1VOVCk7 CisJfQorCWVsc2UgeworCQllcnJfbWVzc2FnZShfKCJwYXRobmFtZSBtdXN0 IGJlIGVpdGhlciBhIHJlZ3VsYXIgZmlsZSAiCisJCQkJIm9yIGRpcmVjdG9y eSIpKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlkdW1wX25vZGVoYXNoKCk7CisK KwlpZiAobl9vcHQpIHsKKwkJLyogbiBmbGFnIHNldCwgZG9uJ3QgZG8gYW55 dGhpbmcgKi8KKwkJaWYgKG51bWRpcm5vZGVzKQorCQkJbG9nX21lc3NhZ2Uo TE9HX05PUk1BTCwgIlxyV291bGQgcHJvY2VzcyAlZCAlcyIsCisJCQkJCW51 bWRpcm5vZGVzLCBudW1kaXJub2RlcyA9PSAxID8KKwkJCQkJCSJkaXJlY3Rv cnkiIDogImRpcmVjdG9yaWVzIik7CisJCWVsc2UKKwkJCWxvZ19tZXNzYWdl KExPR19OT1JNQUwsICJcck5vIGRpcmVjdG9yaWVzIHRvIHByb2Nlc3MiKTsK KworCQlpZiAobnVtZmlsZW5vZGVzKQorCQkJLyogcHJvY2VzcyBmaWxlcyAq LworCQkJbG9nX21lc3NhZ2UoTE9HX05PUk1BTCwgIlxyV291bGQgcHJvY2Vz cyAlZCAlcyIsCisJCQkJCW51bWZpbGVub2RlcywgbnVtZmlsZW5vZGVzID09 IDEgPworCQkJCQkJImZpbGUiIDogImZpbGVzIik7CisJCWVsc2UKKwkJCWxv Z19tZXNzYWdlKExPR19OT1JNQUwsICJcck5vIGZpbGVzIHRvIHByb2Nlc3Mi KTsKKwl9IGVsc2UgeworCQkvKiBwcm9jZXNzIGRpcmVjdG9yaWVzICovCisJ CWlmIChudW1kaXJub2RlcykgeworCQkJbG9nX21lc3NhZ2UoTE9HX0lORk8s IF8oIlxyUHJvY2Vzc2luZyAlZCAlcy4uLiIpLAorCQkJCQludW1kaXJub2Rl cywgbnVtZGlybm9kZXMgPT0gMSA/CisJCQkJCSAgICBfKCJkaXJlY3Rvcnki KSA6IF8oImRpcmVjdG9yaWVzIikpOworCQkJY3VyX3BoYXNlID0gRElSX1BI QVNFOworCQkJcnZhbCA9IGZvcl9hbGxfbm9kZXMocHJvY2Vzc19kaXIsIEZU V19ELCAxKTsKKwkJCWlmIChydmFsICE9IDApCisJCQkJZ290byBxdWl0Owor CQl9CisJCWVsc2UKKwkJCWxvZ19tZXNzYWdlKExPR19JTkZPLCBfKCJcck5v IGRpcmVjdG9yaWVzIHRvIHByb2Nlc3MuLi4iKSk7CisKKwkJaWYgKG51bWZp bGVub2RlcykgeworCQkJLyogcHJvY2VzcyBmaWxlcyAqLworCQkJbG9nX21l c3NhZ2UoTE9HX0lORk8sIF8oIlxyUHJvY2Vzc2luZyAlZCAlcy4uLiIpLAor CQkJCQludW1maWxlbm9kZXMsIG51bWZpbGVub2RlcyA9PSAxID8KKwkJCQkJ CV8oImZpbGUiKSA6IF8oImZpbGVzIikpOworCQkJY3VyX3BoYXNlID0gRklM RV9QSEFTRTsKKwkJCWZvcl9hbGxfbm9kZXMocHJvY2Vzc19maWxlLCBGVFdf RiwgMCk7CisJCX0KKwkJZWxzZQorCQkJbG9nX21lc3NhZ2UoTE9HX0lORk8s IF8oIlxyTm8gZmlsZXMgdG8gcHJvY2Vzcy4uLiIpKTsKKwl9CitxdWl0Ogor CWZyZWVfbm9kZWhhc2goKTsKKworCWNsb3NlKHJlY292ZXJfZmQpOworCisJ aWYgKHJ2YWwgPT0gMCkKKwkJdW5saW5rKHJlY292ZXJfZmlsZSk7CisKKwls b2dfbWVzc2FnZShMT0dfREVCVUcsICJcciV1IHNlY29uZHMgZWxhcHNlZCIs IHRpbWUoMCkgLSBzdGFydHRpbWUpOworCWxvZ19tZXNzYWdlKExPR19JTkZP LCBfKCJcckRvbmUuIikpOworCisJcmV0dXJuIHJ2YWwgfCBnbG9iYWxfcnZh bDsKK30K ------------CjDhNP1TBpgHu0GSrkBaa0-- From owner-xfs@oss.sgi.com Tue Oct 2 00:17:36 2007 Received: with ECARTIS (v1.0.0; list xfs); Tue, 02 Oct 2007 00:17:40 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-r574664 Received: from postoffice.aconex.com (mail.app.aconex.com [203.89.192.138]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with ESMTP id l927HYgi007751 for ; Tue, 2 Oct 2007 00:17:36 -0700 Received: from edge.yarra.acx (unknown [203.89.192.141]) by postoffice.aconex.com (Postfix) with ESMTP id 3FC1392CCDD; Tue, 2 Oct 2007 17:17:33 +1000 (EST) Subject: Re: REVIEW: xfs_reno From: Nathan Scott Reply-To: nscott@aconex.com To: Barry Naujok Cc: "xfs@oss.sgi.com" , xfs-dev In-Reply-To: References: Content-Type: text/plain Organization: Aconex Date: Tue, 02 Oct 2007 17:20:01 +1000 Message-Id: <1191309601.15908.217.camel@edge.yarra.acx> Mime-Version: 1.0 X-Mailer: Evolution 2.6.3 Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/4452/Mon Oct 1 22:03:17 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13212 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: nscott@aconex.com Precedence: bulk X-list: xfs On Tue, 2007-10-02 at 17:08 +1000, Barry Naujok wrote: > The attached tool allows an inode64 filesystem to be converted to inode32. > For this to work, the filesystem has to be mounted inode32 before it's run. > > I'm not sure if there is any packaging changes required. I expect not, the Makefile handles that. Is there a man page? cheers. -- Nathan From owner-xfs@oss.sgi.com Tue Oct 2 01:11:04 2007 Received: with ECARTIS (v1.0.0; list xfs); Tue, 02 Oct 2007 01:11:10 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-6.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_32, J_CHICKENPOX_66,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.0-r574664 Received: from mx2.suse.de (ns2.suse.de [195.135.220.15]) by oss.sgi.com (8.12.11.20060308/8.12.10/SuSE Linux 0.7) with ESMTP id l928B1qT016937 for ; Tue, 2 Oct 2007 01:11:04 -0700 Received: from Relay2.suse.de (mail2.suse.de [195.135.221.8]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id C3C8522EBE for ; Tue, 2 Oct 2007 10:11:01 +0200 (CEST) From: Andi Kleen Organization: SUSE Linux Products GmbH, Nuernberg, GF: Markus Rex, HRB 16746 (AG Nuernberg) To: xfs@oss.sgi.com Subject: [PATCH] Replace XFS bit functions with Linux functions Date: Tue, 2 Oct 2007 10:10:58 +0200 User-Agent: KMail/1.9.6 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200710021010.58284.ak@suse.de> X-Virus-Scanned: ClamAV 0.91.2/4452/Mon Oct 1 22:03:17 2007 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 13213 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: ak@suse.de Precedence: bulk X-list: xfs XFS had some own functions to find high and low bits. This patch replaces them with a call to the respective Linux functions. The semantics of the Linux functions differ a little, but i checked all call sites that they can deal with that. I think all callers are ok; but i added a few more asserts for the 0 case (where Linux and old XFS differ) just to make it easy to detect mistakes. The resulting xfs.ko is about 500 bytes smaller on x86-64 This is similar to the patch Eric sent some days ago, but does it more efficiently imho. It replaces his patch. I wasn't able to do a full XFS QA run over this unfortunately; but did careful review. Signed-off-by: Andi Kleen Index: linux-2.6.23-rc8-misc/fs/xfs/xfs_bit.c =================================================================== --- linux-2.6.23-rc8-misc.orig/fs/xfs/xfs_bit.c +++ linux-2.6.23-rc8-misc/fs/xfs/xfs_bit.c @@ -22,112 +22,9 @@ #include "xfs_buf_item.h" /* - * XFS bit manipulation routines, used in non-realtime code. + * XFS bit manipulation routines */ -#ifndef HAVE_ARCH_HIGHBIT -/* - * Index of high bit number in byte, -1 for none set, 0..7 otherwise. - */ -static const char xfs_highbit[256] = { - -1, 0, 1, 1, 2, 2, 2, 2, /* 00 .. 07 */ - 3, 3, 3, 3, 3, 3, 3, 3, /* 08 .. 0f */ - 4, 4, 4, 4, 4, 4, 4, 4, /* 10 .. 17 */ - 4, 4, 4, 4, 4, 4, 4, 4, /* 18 .. 1f */ - 5, 5, 5, 5, 5, 5, 5, 5, /* 20 .. 27 */ - 5, 5, 5, 5, 5, 5, 5, 5, /* 28 .. 2f */ - 5, 5, 5, 5, 5, 5, 5, 5, /* 30 .. 37 */ - 5, 5, 5, 5, 5, 5, 5, 5, /* 38 .. 3f */ - 6, 6, 6, 6, 6, 6, 6, 6, /* 40 .. 47 */ - 6, 6, 6, 6, 6, 6, 6, 6, /* 48 .. 4f */ - 6, 6, 6, 6, 6, 6, 6, 6, /* 50 .. 57 */ - 6, 6, 6, 6, 6, 6, 6, 6, /* 58 .. 5f */ - 6, 6, 6, 6, 6, 6, 6, 6, /* 60 .. 67 */ - 6, 6, 6, 6, 6, 6, 6, 6, /* 68 .. 6f */ - 6, 6, 6, 6, 6, 6, 6, 6, /* 70 .. 77 */ - 6, 6, 6, 6, 6, 6, 6, 6, /* 78 .. 7f */ - 7, 7, 7, 7, 7, 7, 7, 7, /* 80 .. 87 */ - 7, 7, 7, 7, 7, 7, 7, 7, /* 88 .. 8f */ - 7, 7, 7, 7, 7, 7, 7, 7, /* 90 .. 97 */ - 7, 7, 7, 7, 7, 7, 7, 7, /* 98 .. 9f */ - 7, 7, 7, 7, 7, 7, 7, 7, /* a0 .. a7 */ - 7, 7, 7, 7, 7, 7, 7, 7, /* a8 .. af */ - 7, 7, 7, 7, 7, 7, 7, 7, /* b0 .. b7 */ - 7, 7, 7, 7, 7, 7, 7, 7, /* b8 .. bf */ - 7, 7, 7, 7, 7, 7, 7, 7, /* c0 .. c7 */ - 7, 7, 7, 7, 7, 7, 7, 7, /* c8 .. cf */ - 7, 7, 7, 7, 7, 7, 7, 7, /* d0 .. d7 */ - 7, 7, 7, 7, 7, 7, 7, 7, /* d8 .. df */ - 7, 7, 7, 7, 7, 7, 7, 7, /* e0 .. e7 */ - 7, 7, 7, 7, 7, 7, 7, 7, /* e8 .. ef */ - 7, 7, 7, 7, 7, 7, 7, 7, /* f0 .. f7 */ - 7, 7, 7, 7, 7, 7, 7, 7, /* f8 .. ff */ -}; -#endif - -/* - * xfs_highbit32: get high bit set out of 32-bit argument, -1 if none set. - */ -inline int -xfs_highbit32( - __uint32_t v) -{ -#ifdef HAVE_ARCH_HIGHBIT - return highbit32(v); -#else - int i; - - if (v & 0xffff0000) - if (v & 0xff000000) - i = 24; - else - i = 16; - else if (v & 0x0000ffff) - if (v & 0x0000ff00) - i = 8; - else - i = 0; - else - return -1; - return i + xfs_highbit[(v >> i) & 0xff]; -#endif -} - -/* - * xfs_lowbit64: get low bit set out of 64-bit argument, -1 if none set. - */ -int -xfs_lowbit64( - __uint64_t v) -{ - __uint32_t w = (__uint32_t)v; - int n = 0; - - if (w) { /* lower bits */ - n = ffs(w); - } else { /* upper bits */ - w = (__uint32_t)(v >> 32); - if (w && (n = ffs(w))) - n += 32; - } - return n - 1; -} - -/* - * xfs_highbit64: get high bit set out of 64-bit argument, -1 if none set. - */ -int -xfs_highbit64( - __uint64_t v) -{ - __uint32_t h = (__uint32_t)(v >> 32); - - if (h) - return xfs_highbit32(h) + 32; - return xfs_highbit32((__uint32_t)v); -} - - /* * Return whether bitmap is empty. * Size is number of words in the bitmap, which is padded to word boundary Index: linux-2.6.23-rc8-misc/fs/xfs/xfs_bit.h =================================================================== --- linux-2.6.23-rc8-misc.orig/fs/xfs/xfs_bit.h +++ linux-2.6.23-rc8-misc/fs/xfs/xfs_bit.h @@ -46,15 +46,6 @@ static inline __uint64_t xfs_mask64lo(in return ((__uint64_t)1 << (n)) - 1; } -/* Get high bit set out of 32-bit argument, -1 if none set */ -extern int xfs_highbit32(__uint32_t v); - -/* Get low bit set out of 64-bit argument, -1 if none set */ -extern int xfs_lowbit64(__uint64_t v); - -/* Get high bit set out of 64-bit argument, -1 if none set */ -extern int xfs_highbit64(__uint64_t); - /* Return whether bitmap is empty (1 == empty) */ extern int xfs_bitmap_empty(uint *map, uint size); Index: linux-2.6.23-rc8-misc/fs/xfs/xfs_iget.c =================================================================== --- linux-2.6.23-rc8-misc.orig/fs/xfs/xfs_iget.c +++ linux-2.6.23-rc8-misc/fs/xfs/xfs_iget.c @@ -55,8 +55,7 @@ xfs_ihash_init(xfs_mount_t *mp) if (!mp->m_ihsize) { icount = mp->m_maxicount ? mp->m_maxicount : (mp->m_sb.sb_dblocks << mp->m_sb.sb_inopblog); - mp->m_ihsize = 1 << max_t(uint, 8, - (xfs_highbit64(icount) + 1) / 2); + mp->m_ihsize = 1 << max_t(uint, 8, fls64(icount) / 2); mp->m_ihsize = min_t(uint, mp->m_ihsize, (64 * NBPP) / sizeof(xfs_ihash_t)); } Index: linux-2.6.23-rc8-misc/fs/xfs/xfs_mount.c =================================================================== --- linux-2.6.23-rc8-misc.orig/fs/xfs/xfs_mount.c +++ linux-2.6.23-rc8-misc/fs/xfs/xfs_mount.c @@ -439,7 +439,7 @@ xfs_xlatesb( mem_ptr = (xfs_caddr_t)sb; while (fields) { - f = (xfs_sb_field_t)xfs_lowbit64((__uint64_t)fields); + f = (xfs_sb_field_t)find_first_bit((unsigned long *)&fields,64); first = xfs_sb_info[f].offset; size = xfs_sb_info[f + 1].offset - first; @@ -589,7 +589,7 @@ xfs_mount_common(xfs_mount_t *mp, xfs_sb mp->m_blkbit_log = sbp->sb_blocklog + XFS_NBBYLOG; mp->m_blkbb_log = sbp->sb_blocklog - BBSHIFT; mp->m_sectbb_log = sbp->sb_sectlog - BBSHIFT; - mp->m_agno_log = xfs_highbit32(sbp->sb_agcount - 1) + 1; + mp->m_agno_log = fls(sbp->sb_agcount - 1); mp->m_agino_log = sbp->sb_inopblog + sbp->sb_agblklog; mp->m_litino = sbp->sb_inodesize - ((uint)sizeof(xfs_dinode_core_t) + (uint)sizeof(xfs_agino_t)); @@ -1428,11 +1428,11 @@ xfs_mod_sb(xfs_trans_t *tp, __int64_t fi /* find modified range */ - f = (xfs_sb_field_t)xfs_lowbit64((__uint64_t)fields); + f = (xfs_sb_field_t)find_first_bit((unsigned long *)&fields, 64); ASSERT((1LL << f) & XFS_SB_MOD_BITS); first = xfs_sb_info[f].offset; - f = (xfs_sb_field_t)xfs_highbit64((__uint64_t)fields); + f = (xfs_sb_field_t)fls64((__uint64_t)fields) - 1; ASSERT((1LL << f) & XFS_SB_MOD_BITS); last = xfs_sb_info[f + 1].offset - 1; Index: linux-2.6.23-rc8-misc/fs/xfs/xfs_rtalloc.h =================================================================== --- linux-2.6.23-rc8-misc.orig/fs/xfs/xfs_rtalloc.h +++ linux-2.6.23-rc8-misc/fs/xfs/xfs_rtalloc.h @@ -60,13 +60,19 @@ struct xfs_trans; #define XFS_RTMIN(a,b) ((a) < (b) ? (a) : (b)) #define XFS_RTMAX(a,b) ((a) > (b) ? (a) : (b)) -#define XFS_RTLOBIT(w) xfs_lowbit32(w) -#define XFS_RTHIBIT(w) xfs_highbit32(w) +/* All callers check for 0 arguments already; so no -1 handling */ +static inline int xfs_rtlobit(unsigned long v) +{ + return find_first_bit(&v, 32); +} + +#define XFS_RTLOBIT(w) xfs_rtlobit(w) +#define XFS_RTHIBIT(w) (fls(w) - 1) #if XFS_BIG_BLKNOS -#define XFS_RTBLOCKLOG(b) xfs_highbit64(b) +#define XFS_RTBLOCKLOG(b) (fls64(b) - 1) #else -#define XFS_RTBLOCKLOG(b) xfs_highbit32(b) +#define XFS_RTBLOCKLOG(b) (fls(b) - 1) #endif Index: linux-2.6.23-rc8-misc/fs/xfs/xfs_rtalloc.c =================================================================== --- linux-2.6.23-rc8-misc.orig/fs/xfs/xfs_rtalloc.c +++ linux-2.6.23-rc8-misc/fs/xfs/xfs_rtalloc.c @@ -73,18 +73,6 @@ STATIC int xfs_rtmodify_summary(xfs_moun */ /* - * xfs_lowbit32: get low bit set out of 32-bit argument, -1 if none set. - */ -STATIC int -xfs_lowbit32( - __uint32_t v) -{ - if (v) - return ffs(v) - 1; - return -1; -} - -/* * Allocate space to the bitmap or summary file, and zero it, for growfs. */ STATIC int /* error */ @@ -444,7 +432,8 @@ xfs_rtallocate_extent_near( } bbno = XFS_BITTOBLOCK(mp, bno); i = 0; - log2len = xfs_highbit32(minlen); + ASSERT(minlen != 0); + log2len = fls(minlen) - 1; /* * Loop over all bitmap blocks (bbno + i is current block). */ @@ -607,11 +596,13 @@ xfs_rtallocate_extent_size( int error; /* error value */ int i; /* bitmap block number */ int l; /* level number (loop control) */ + int end; xfs_rtblock_t n; /* next block to be tried */ xfs_rtblock_t r; /* result block number */ xfs_suminfo_t sum; /* summary information for extents */ ASSERT(minlen % prod == 0 && maxlen % prod == 0); + ASSERT(maxlen != 0); /* * Loop over all the levels starting with maxlen. * At each level, look at all the bitmap blocks, to see if there @@ -619,7 +610,7 @@ xfs_rtallocate_extent_size( * Note, only on the initial level can the allocation fail if * the summary says there's an extent. */ - for (l = xfs_highbit32(maxlen); l < mp->m_rsumlevels; l++) { + for (l = fls(maxlen) - 1; l < mp->m_rsumlevels; l++) { /* * Loop over all the bitmap blocks. */ @@ -669,12 +660,15 @@ xfs_rtallocate_extent_size( *rtblock = NUL